@aranova/tracking-browser 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,602 +1,2 @@
1
- "use strict";
2
- var AranovaTracking = (() => {
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
-
21
- // src/index.ts
22
- var src_exports = {};
23
- __export(src_exports, {
24
- default: () => src_default,
25
- init: () => init
26
- });
27
-
28
- // ../tracking-core/src/consent.ts
29
- var CONSENT_STATE_KEY = "consent_state";
30
- var CONSENT_TIMESTAMP_KEY = "consent_timestamp";
31
- function buildConsentPayload(state) {
32
- return {
33
- ad_storage: state,
34
- ad_user_data: state,
35
- ad_personalization: state,
36
- analytics_storage: state
37
- };
38
- }
39
- function getConsentState() {
40
- if (typeof window === "undefined")
41
- return "pending";
42
- const storedState = window.localStorage.getItem(CONSENT_STATE_KEY);
43
- if (storedState === "granted" || storedState === "denied")
44
- return storedState;
45
- return "pending";
46
- }
47
- function setConsentState(state) {
48
- if (typeof window === "undefined")
49
- return;
50
- window.localStorage.setItem(CONSENT_STATE_KEY, state);
51
- window.localStorage.setItem(CONSENT_TIMESTAMP_KEY, (/* @__PURE__ */ new Date()).toISOString());
52
- if (typeof window.gtag === "function")
53
- window.gtag("consent", "update", buildConsentPayload(state));
54
- }
55
- function restoreStoredConsent() {
56
- const consentState = getConsentState();
57
- if (consentState === "granted" || consentState === "denied")
58
- setConsentState(consentState);
59
- return consentState;
60
- }
61
-
62
- // ../tracking-core/src/gtag.ts
63
- var GTAG_SCRIPT_HOST = "https://www.googletagmanager.com/gtag/js";
64
- var TRACKING_SCRIPT_ATTRIBUTE = "data-aranova-tracking";
65
- function getScriptMarker(id) {
66
- return `aranova-${id}`;
67
- }
68
- function ensureGtagFunction() {
69
- window.dataLayer = window.dataLayer || [];
70
- if (typeof window.gtag === "function")
71
- return window.gtag;
72
- window.gtag = (...args) => {
73
- window.dataLayer?.push(args);
74
- };
75
- return window.gtag;
76
- }
77
- function applyDefaultConsentState() {
78
- const gtag = ensureGtagFunction();
79
- gtag("consent", "default", {
80
- ad_storage: "denied",
81
- ad_user_data: "denied",
82
- ad_personalization: "denied",
83
- analytics_storage: "denied",
84
- wait_for_update: 500
85
- });
86
- }
87
- function loadGtagScript(gtagId) {
88
- if (typeof document === "undefined")
89
- return;
90
- const marker = getScriptMarker("gtag-loader");
91
- const existingScript = document.querySelector(`script[${TRACKING_SCRIPT_ATTRIBUTE}="${marker}"]`);
92
- if (existingScript)
93
- return;
94
- const script = document.createElement("script");
95
- script.async = true;
96
- script.src = `${GTAG_SCRIPT_HOST}?id=${encodeURIComponent(gtagId)}`;
97
- script.setAttribute(TRACKING_SCRIPT_ATTRIBUTE, marker);
98
- document.head.appendChild(script);
99
- }
100
- function initializeGtag(gtagId) {
101
- const gtag = ensureGtagFunction();
102
- gtag("js", /* @__PURE__ */ new Date());
103
- gtag("config", gtagId);
104
- }
105
- function bootstrapGoogleAdsTracking(gtagId) {
106
- if (typeof window === "undefined" || typeof document === "undefined")
107
- return;
108
- applyDefaultConsentState();
109
- loadGtagScript(gtagId);
110
- initializeGtag(gtagId);
111
- restoreStoredConsent();
112
- }
113
-
114
- // ../tracking-core/src/tracking.ts
115
- var TRACKING_COOKIE_MAX_AGE_SECONDS = 7776e3;
116
- var TRACKING_PARAM_KEYS = [
117
- "gclid",
118
- "fbclid",
119
- "utm_source",
120
- "utm_medium",
121
- "utm_campaign",
122
- "utm_term",
123
- "utm_content"
124
- ];
125
- function createEmptyTrackingParams() {
126
- return {
127
- gclid: null,
128
- fbclid: null,
129
- utm_source: null,
130
- utm_medium: null,
131
- utm_campaign: null,
132
- utm_term: null,
133
- utm_content: null
134
- };
135
- }
136
- function normalizeTrackingCookieValue(value) {
137
- return typeof value === "string" && value.length > 0 ? value : null;
138
- }
139
- function getTrackingParamsFromCookieReader(readCookie) {
140
- return TRACKING_PARAM_KEYS.reduce((params, key) => {
141
- params[key] = normalizeTrackingCookieValue(readCookie(key));
142
- return params;
143
- }, createEmptyTrackingParams());
144
- }
145
- function getTrackingQueryValues(searchParams) {
146
- return TRACKING_PARAM_KEYS.reduce((params, key) => {
147
- const value = searchParams.get(key);
148
- if (typeof value === "string" && value.trim().length > 0) {
149
- params[key] = value;
150
- }
151
- return params;
152
- }, {});
153
- }
154
- function getCookieValueFromDocument(key) {
155
- if (typeof document === "undefined")
156
- return null;
157
- const cookies = document.cookie ? document.cookie.split("; ") : [];
158
- const match = cookies.find((cookie) => cookie.startsWith(`${key}=`));
159
- if (!match)
160
- return null;
161
- const [, rawValue = ""] = match.split("=");
162
- return normalizeTrackingCookieValue(decodeURIComponent(rawValue));
163
- }
164
- function setTrackingCookie(key, value, maxAgeSeconds = TRACKING_COOKIE_MAX_AGE_SECONDS) {
165
- if (typeof document === "undefined")
166
- return;
167
- const encodedValue = encodeURIComponent(value);
168
- document.cookie = `${key}=${encodedValue}; Max-Age=${maxAgeSeconds}; Path=/; SameSite=Lax`;
169
- }
170
- function persistTrackingParamsFromSearchParams(searchParams, maxAgeSeconds = TRACKING_COOKIE_MAX_AGE_SECONDS) {
171
- const trackingValues = getTrackingQueryValues(searchParams);
172
- Object.entries(trackingValues).forEach(([key, value]) => {
173
- setTrackingCookie(key, value, maxAgeSeconds);
174
- });
175
- return trackingValues;
176
- }
177
- function captureTrackingParamsFromLocation(url = typeof window === "undefined" ? "" : window.location.href, maxAgeSeconds = TRACKING_COOKIE_MAX_AGE_SECONDS) {
178
- const resolvedUrl = typeof window === "undefined" ? new URL(url || "https://example.invalid") : new URL(url, window.location.origin);
179
- persistTrackingParamsFromSearchParams(resolvedUrl.searchParams, maxAgeSeconds);
180
- return getTrackingParamsFromCookieReader(getCookieValueFromDocument);
181
- }
182
-
183
- // ../tracking-core/src/session.ts
184
- var VISITOR_STORAGE_KEY = "aranova_tracking_visitor";
185
- var SESSION_STORAGE_KEY = "aranova_tracking_session";
186
- var SESSION_IDLE_MS = 30 * 60 * 1e3;
187
- function safeUuid() {
188
- if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function")
189
- return crypto.randomUUID();
190
- return `${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}-${Math.random().toString(16).slice(2)}`;
191
- }
192
- function readLocalStorage(key) {
193
- try {
194
- return window.localStorage.getItem(key);
195
- } catch {
196
- return null;
197
- }
198
- }
199
- function writeLocalStorage(key, value) {
200
- try {
201
- window.localStorage.setItem(key, value);
202
- } catch {
203
- }
204
- }
205
- function getVisitorId() {
206
- if (typeof window === "undefined")
207
- return safeUuid();
208
- const existing = readLocalStorage(VISITOR_STORAGE_KEY);
209
- if (existing && existing.length > 0)
210
- return existing;
211
- const fresh = safeUuid();
212
- writeLocalStorage(VISITOR_STORAGE_KEY, fresh);
213
- return fresh;
214
- }
215
- function getOrRotateSessionId(now = Date.now()) {
216
- if (typeof window === "undefined")
217
- return safeUuid();
218
- const raw = readLocalStorage(SESSION_STORAGE_KEY);
219
- if (raw) {
220
- try {
221
- const parsed = JSON.parse(raw);
222
- if (typeof parsed.id === "string" && typeof parsed.last_event_at === "number") {
223
- if (now - parsed.last_event_at <= SESSION_IDLE_MS) {
224
- const refreshed = { id: parsed.id, last_event_at: now };
225
- writeLocalStorage(SESSION_STORAGE_KEY, JSON.stringify(refreshed));
226
- return parsed.id;
227
- }
228
- }
229
- } catch {
230
- }
231
- }
232
- const fresh = { id: safeUuid(), last_event_at: now };
233
- writeLocalStorage(SESSION_STORAGE_KEY, JSON.stringify(fresh));
234
- return fresh.id;
235
- }
236
-
237
- // ../tracking-core/src/ingest.ts
238
- var DEFAULT_FLUSH_INTERVAL_MS = 2e3;
239
- var DEFAULT_MAX_QUEUE_SIZE = 10;
240
- var HARD_MAX_BATCH = 50;
241
- var API_KEY_HEADER = "X-Aranova-Api-Key";
242
- function buildContext(surface, sdkVersion, packageName) {
243
- return {
244
- surface,
245
- sdk_version: sdkVersion,
246
- package_name: packageName,
247
- site_origin: typeof window === "undefined" ? null : window.location.origin,
248
- page_title: typeof document === "undefined" ? null : document.title || null,
249
- referrer: typeof document === "undefined" ? null : document.referrer || null
250
- };
251
- }
252
- function readTrackingParams() {
253
- if (typeof window === "undefined")
254
- return createEmptyTrackingParams();
255
- try {
256
- captureTrackingParamsFromLocation();
257
- } catch {
258
- }
259
- return getTrackingParamsFromCookieReader(getCookieValueFromDocument);
260
- }
261
- function consentSnapshot() {
262
- try {
263
- return { state: getConsentState() };
264
- } catch {
265
- return null;
266
- }
267
- }
268
- async function postWithFetch(url, body, apiKey, keepalive) {
269
- if (typeof fetch !== "function")
270
- return;
271
- try {
272
- await fetch(url, {
273
- method: "POST",
274
- headers: {
275
- "Content-Type": "application/json",
276
- [API_KEY_HEADER]: apiKey
277
- },
278
- body,
279
- keepalive,
280
- // CORS is open on the tracking endpoint; never send cookies.
281
- credentials: "omit",
282
- mode: "cors"
283
- });
284
- } catch {
285
- }
286
- }
287
- function createTrackingClient(config) {
288
- const flushIntervalMs = config.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS;
289
- const maxQueueSize = Math.min(config.maxQueueSize ?? DEFAULT_MAX_QUEUE_SIZE, HARD_MAX_BATCH);
290
- const sdkVersion = config.sdkVersion ?? null;
291
- const packageName = config.packageName ?? null;
292
- const endpointBase = config.endpoint.replace(/\/$/, "");
293
- const eventsUrl = `${endpointBase}/events`;
294
- let queue = [];
295
- let flushTimer = null;
296
- let firstPage = null;
297
- let destroyed = false;
298
- const visitorId = getVisitorId();
299
- let sessionId = getOrRotateSessionId();
300
- if (typeof window !== "undefined")
301
- firstPage = window.location.href;
302
- function buildSessionPayload() {
303
- sessionId = getOrRotateSessionId();
304
- const params = readTrackingParams();
305
- const context = buildContext(config.surface, sdkVersion, packageName);
306
- return {
307
- session_id: sessionId,
308
- visitor_id: visitorId,
309
- gclid: params.gclid,
310
- fbclid: params.fbclid,
311
- utm_source: params.utm_source,
312
- utm_medium: params.utm_medium,
313
- utm_campaign: params.utm_campaign,
314
- utm_term: params.utm_term,
315
- utm_content: params.utm_content,
316
- first_page: firstPage,
317
- consent_state: consentSnapshot(),
318
- context
319
- };
320
- }
321
- function scheduleFlush() {
322
- if (flushTimer !== null || destroyed)
323
- return;
324
- flushTimer = setTimeout(() => {
325
- flushTimer = null;
326
- void flush();
327
- }, flushIntervalMs);
328
- }
329
- function clearScheduledFlush() {
330
- if (flushTimer !== null) {
331
- clearTimeout(flushTimer);
332
- flushTimer = null;
333
- }
334
- }
335
- async function flush() {
336
- if (queue.length === 0)
337
- return;
338
- const events = queue.slice(0, HARD_MAX_BATCH);
339
- queue = queue.slice(events.length);
340
- clearScheduledFlush();
341
- const body = {
342
- session: buildSessionPayload(),
343
- events
344
- };
345
- const serialized = JSON.stringify(body);
346
- await postWithFetch(eventsUrl, serialized, config.apiKey, false);
347
- }
348
- function trackEvent2(input) {
349
- if (destroyed)
350
- return;
351
- if (!input || typeof input.eventType !== "string" || input.eventType.length === 0)
352
- return;
353
- const occurredAt = input.occurredAt instanceof Date ? input.occurredAt.toISOString() : typeof input.occurredAt === "string" ? input.occurredAt : (/* @__PURE__ */ new Date()).toISOString();
354
- queue.push({
355
- event_type: input.eventType,
356
- page_url: input.pageUrl ?? (typeof window === "undefined" ? null : window.location.href),
357
- metadata: input.metadata ?? null,
358
- occurred_at: occurredAt
359
- });
360
- if (queue.length >= maxQueueSize) {
361
- void flush();
362
- } else {
363
- scheduleFlush();
364
- }
365
- }
366
- function flushOnUnload() {
367
- if (queue.length === 0)
368
- return;
369
- const events = queue.slice(0, HARD_MAX_BATCH);
370
- queue = queue.slice(events.length);
371
- clearScheduledFlush();
372
- const body = {
373
- session: buildSessionPayload(),
374
- events
375
- };
376
- const serialized = JSON.stringify(body);
377
- void postWithFetch(eventsUrl, serialized, config.apiKey, true);
378
- }
379
- if (typeof window !== "undefined") {
380
- window.addEventListener("pagehide", flushOnUnload);
381
- window.addEventListener("visibilitychange", () => {
382
- if (document.visibilityState === "hidden") flushOnUnload();
383
- });
384
- }
385
- return {
386
- trackEvent: trackEvent2,
387
- flush,
388
- getSessionId: () => sessionId,
389
- getVisitorId: () => visitorId,
390
- destroy: () => {
391
- destroyed = true;
392
- clearScheduledFlush();
393
- queue = [];
394
- if (typeof window !== "undefined") {
395
- window.removeEventListener("pagehide", flushOnUnload);
396
- }
397
- }
398
- };
399
- }
400
-
401
- // ../tracking-core/src/page-view.ts
402
- function buildPageViewMetadata() {
403
- if (typeof window === "undefined" || typeof document === "undefined")
404
- return null;
405
- return {
406
- page: {
407
- title: document.title || null,
408
- path: window.location.pathname,
409
- search: window.location.search,
410
- hash: window.location.hash
411
- },
412
- referrer: document.referrer || null,
413
- viewport: { w: window.innerWidth, h: window.innerHeight }
414
- };
415
- }
416
- function fireManualPageView(client) {
417
- const metadata = buildPageViewMetadata();
418
- client.trackEvent({
419
- eventType: "page_view",
420
- pageUrl: typeof window === "undefined" ? null : window.location.href,
421
- metadata
422
- });
423
- }
424
- function attachAutoPageView(client, options = {}) {
425
- if (typeof window === "undefined" || typeof history === "undefined") {
426
- return () => {
427
- };
428
- }
429
- let lastPath = window.location.pathname + window.location.search;
430
- function maybeFire() {
431
- const current = window.location.pathname + window.location.search;
432
- if (current === lastPath)
433
- return;
434
- lastPath = current;
435
- fireManualPageView(client);
436
- }
437
- const originalPushState = history.pushState.bind(history);
438
- const originalReplaceState = history.replaceState.bind(history);
439
- function patchedPushState(...args) {
440
- originalPushState(...args);
441
- setTimeout(maybeFire, 0);
442
- }
443
- function patchedReplaceState(...args) {
444
- originalReplaceState(...args);
445
- setTimeout(maybeFire, 0);
446
- }
447
- history.pushState = patchedPushState;
448
- history.replaceState = patchedReplaceState;
449
- window.addEventListener("popstate", maybeFire);
450
- if (!options.skipInitial)
451
- fireManualPageView(client);
452
- return () => {
453
- history.pushState = originalPushState;
454
- history.replaceState = originalReplaceState;
455
- window.removeEventListener("popstate", maybeFire);
456
- };
457
- }
458
-
459
- // src/index.ts
460
- var BANNER_ID = "aranova-tracking-consent-banner";
461
- function getTrackingParams() {
462
- return getTrackingParamsFromCookieReader(getCookieValueFromDocument);
463
- }
464
- function removeConsentBanner() {
465
- document.getElementById(BANNER_ID)?.remove();
466
- }
467
- function createConsentButton(label, onClick, style) {
468
- const button = document.createElement("button");
469
- button.type = "button";
470
- button.textContent = label;
471
- Object.assign(button.style, {
472
- borderRadius: "6px",
473
- padding: "10px 16px",
474
- fontSize: "14px",
475
- fontWeight: "600",
476
- cursor: "pointer",
477
- border: "1px solid #d1d5db",
478
- background: "#ffffff",
479
- color: "#374151"
480
- }, style);
481
- button.addEventListener("click", onClick);
482
- return button;
483
- }
484
- function mountConsentBanner() {
485
- if (typeof document === "undefined" || getConsentState() !== "pending" || document.getElementById(BANNER_ID))
486
- return;
487
- const banner = document.createElement("div");
488
- banner.id = BANNER_ID;
489
- Object.assign(banner.style, {
490
- position: "fixed",
491
- left: "0",
492
- right: "0",
493
- bottom: "0",
494
- zIndex: "2147483647",
495
- background: "#ffffff",
496
- borderTop: "1px solid #e5e7eb",
497
- boxShadow: "0 -4px 20px rgba(0, 0, 0, 0.12)",
498
- padding: "16px",
499
- fontFamily: "Inter, system-ui, sans-serif"
500
- });
501
- const container = document.createElement("div");
502
- Object.assign(container.style, {
503
- maxWidth: "960px",
504
- margin: "0 auto",
505
- display: "flex",
506
- flexDirection: "column",
507
- gap: "12px"
508
- });
509
- const message = document.createElement("p");
510
- message.textContent = "We use cookies to understand ad performance and improve how our marketing works across visits. You can accept or decline this tracking.";
511
- Object.assign(message.style, {
512
- margin: "0",
513
- color: "#374151",
514
- fontSize: "14px",
515
- lineHeight: "1.5"
516
- });
517
- const actions = document.createElement("div");
518
- Object.assign(actions.style, {
519
- display: "flex",
520
- gap: "8px",
521
- flexWrap: "wrap"
522
- });
523
- const declineButton = createConsentButton("Decline", () => {
524
- setConsentState("denied");
525
- removeConsentBanner();
526
- }, {});
527
- const acceptButton = createConsentButton("Accept", () => {
528
- setConsentState("granted");
529
- removeConsentBanner();
530
- }, {
531
- background: "#111827",
532
- color: "#ffffff",
533
- border: "1px solid #111827"
534
- });
535
- actions.appendChild(declineButton);
536
- actions.appendChild(acceptButton);
537
- container.appendChild(message);
538
- container.appendChild(actions);
539
- banner.appendChild(container);
540
- document.body.appendChild(banner);
541
- }
542
- var activeClient = null;
543
- var detachAutoPageView = null;
544
- function init(config = {}) {
545
- if (typeof window === "undefined")
546
- return;
547
- window.AranovaTracking = trackingScriptApi;
548
- const {
549
- apiKey,
550
- endpoint,
551
- autoCaptureTrackingParams = true,
552
- cookieMaxAgeSeconds = TRACKING_COOKIE_MAX_AGE_SECONDS,
553
- gtagId,
554
- renderConsentBanner = true
555
- } = config;
556
- if (autoCaptureTrackingParams)
557
- captureTrackingParamsFromLocation(window.location.href, cookieMaxAgeSeconds);
558
- if (gtagId)
559
- bootstrapGoogleAdsTracking(gtagId);
560
- if (renderConsentBanner)
561
- mountConsentBanner();
562
- if (activeClient !== null) {
563
- detachAutoPageView?.();
564
- activeClient.destroy();
565
- activeClient = null;
566
- detachAutoPageView = null;
567
- }
568
- if (apiKey && endpoint) {
569
- activeClient = createTrackingClient({
570
- apiKey,
571
- endpoint,
572
- surface: "script",
573
- packageName: "@aranova/tracking-browser"
574
- });
575
- detachAutoPageView = attachAutoPageView(activeClient);
576
- } else if (apiKey || endpoint) {
577
- console.warn(
578
- "[AranovaTracking] init() requires both `apiKey` and `endpoint` to enable first-party event ingest. Page-view events will not be sent."
579
- );
580
- }
581
- }
582
- function trackEvent(input) {
583
- if (activeClient === null) {
584
- console.warn("[AranovaTracking] trackEvent called before init({ apiKey, endpoint })");
585
- return;
586
- }
587
- activeClient.trackEvent(input);
588
- }
589
- var trackingScriptApi = {
590
- init,
591
- captureTrackingParams: () => captureTrackingParamsFromLocation(),
592
- getTrackingParams,
593
- getConsentState,
594
- setConsentState,
595
- trackEvent
596
- };
597
- if (typeof window !== "undefined")
598
- window.AranovaTracking = trackingScriptApi;
599
- var src_default = trackingScriptApi;
600
- return __toCommonJS(src_exports);
601
- })();
1
+ "use strict";var AranovaTracking=(()=>{var Ue=Object.defineProperty;var nn=Object.getOwnPropertyDescriptor;var rn=Object.getOwnPropertyNames;var an=Object.prototype.hasOwnProperty;var gt=(t,e)=>{for(var n in e)Ue(t,n,{get:e[n],enumerable:!0})},sn=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of rn(e))!an.call(t,a)&&a!==n&&Ue(t,a,{get:()=>e[a],enumerable:!(r=nn(e,a))||r.enumerable});return t};var on=t=>sn(Ue({},"__esModule",{value:!0}),t);var Pr={};gt(Pr,{default:()=>Or,init:()=>Qt});var Ze="consent_state",ht="consent_timestamp";function Ke(t){return{ad_storage:t,ad_user_data:t,ad_personalization:t,analytics_storage:t}}function D(){if(typeof window>"u")return"pending";let t=window.localStorage.getItem(Ze);return t==="granted"||t==="denied"?t:"pending"}function ue(t){typeof window>"u"||(window.localStorage.setItem(Ze,t),window.localStorage.setItem(ht,new Date().toISOString()),typeof window.gtag=="function"&&window.gtag("consent","update",Ke(t)))}function Fe(){let t=D();return(t==="granted"||t==="denied")&&ue(t),t}var yt="https://www.googletagmanager.com/gtag/js",Ge="data-aranova-tracking";function cn(t){return`aranova-${t}`}function Be(){return window.dataLayer=window.dataLayer||[],typeof window.gtag=="function"||(window.gtag=(...t)=>{window.dataLayer?.push(t)}),window.gtag}function _t(){Be()("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",wait_for_update:500})}function vt(t){if(typeof document>"u")return;let e=cn("gtag-loader");if(document.querySelector(`script[${Ge}="${e}"]`))return;let r=document.createElement("script");r.async=!0,r.src=`${yt}?id=${encodeURIComponent(t)}`,r.setAttribute(Ge,e),document.head.appendChild(r)}function xt(t){let e=Be();e("js",new Date),e("config",t)}function He(t){typeof window>"u"||typeof document>"u"||(_t(),vt(t),xt(t),Fe())}var We=["gclid","fbclid","utm_source","utm_medium","utm_campaign","utm_term","utm_content"];function Ee(){return{gclid:null,fbclid:null,utm_source:null,utm_medium:null,utm_campaign:null,utm_term:null,utm_content:null}}function Ye(t){return typeof t=="string"&&t.length>0?t:null}function le(t){return We.reduce((e,n)=>(e[n]=Ye(t(n)),e),Ee())}function kt(t){return We.reduce((e,n)=>{let r=t.get(n);return typeof r=="string"&&r.trim().length>0&&(e[n]=r),e},{})}function fe(t){if(typeof document>"u")return null;let n=(document.cookie?document.cookie.split("; "):[]).find(a=>a.startsWith(`${t}=`));if(!n)return null;let[,r=""]=n.split("=");return Ye(decodeURIComponent(r))}function wt(t,e,n=7776e3){if(typeof document>"u")return;let r=encodeURIComponent(e);document.cookie=`${t}=${r}; Max-Age=${n}; Path=/; SameSite=Lax`}function Tt(t,e=7776e3){let n=kt(t);return Object.entries(n).forEach(([r,a])=>{wt(r,a,e)}),n}function pe(t=typeof window>"u"?"":window.location.href,e=7776e3){let n=typeof window>"u"?new URL(t||"https://example.invalid"):new URL(t,window.location.origin);return Tt(n.searchParams,e),le(fe)}var qe="aranova_tracking_visitor",Ae="aranova_tracking_session";function Re(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`${Date.now().toString(16)}-${Math.random().toString(16).slice(2)}-${Math.random().toString(16).slice(2)}`}function St(t){try{return window.localStorage.getItem(t)}catch{return null}}function Je(t,e){try{window.localStorage.setItem(t,e)}catch{}}function Xe(){if(typeof window>"u")return Re();let t=St(qe);if(t&&t.length>0)return t;let e=Re();return Je(qe,e),e}function Ie(t=Date.now()){if(typeof window>"u")return Re();let e=St(Ae);if(e)try{let r=JSON.parse(e);if(typeof r.id=="string"&&typeof r.last_event_at=="number"&&t-r.last_event_at<=18e5){let a={id:r.id,last_event_at:t};return Je(Ae,JSON.stringify(a)),r.id}}catch{}let n={id:Re(),last_event_at:t};return Je(Ae,JSON.stringify(n)),n.id}var y={};gt(y,{BRAND:()=>Mn,DIRTY:()=>G,EMPTY_PATH:()=>fn,INVALID:()=>m,NEVER:()=>_r,OK:()=>S,ParseStatus:()=>T,Schema:()=>v,ZodAny:()=>Z,ZodArray:()=>$,ZodBigInt:()=>H,ZodBoolean:()=>W,ZodBranded:()=>Te,ZodCatch:()=>ie,ZodDate:()=>Y,ZodDefault:()=>ae,ZodDiscriminatedUnion:()=>Ne,ZodEffects:()=>R,ZodEnum:()=>ne,ZodError:()=>b,ZodFirstPartyTypeKind:()=>g,ZodFunction:()=>Ve,ZodIntersection:()=>Q,ZodIssueCode:()=>c,ZodLazy:()=>ee,ZodLiteral:()=>te,ZodMap:()=>ve,ZodNaN:()=>ke,ZodNativeEnum:()=>re,ZodNever:()=>I,ZodNull:()=>J,ZodNullable:()=>N,ZodNumber:()=>B,ZodObject:()=>C,ZodOptional:()=>E,ZodParsedType:()=>f,ZodPipeline:()=>Se,ZodPromise:()=>K,ZodReadonly:()=>se,ZodRecord:()=>Me,ZodSchema:()=>v,ZodSet:()=>xe,ZodString:()=>U,ZodSymbol:()=>ye,ZodTransformer:()=>R,ZodTuple:()=>P,ZodType:()=>v,ZodUndefined:()=>q,ZodUnion:()=>X,ZodUnknown:()=>L,ZodVoid:()=>_e,addIssueToContext:()=>l,any:()=>Kn,array:()=>Hn,bigint:()=>$n,boolean:()=>Vt,coerce:()=>yr,custom:()=>Pt,date:()=>Dn,datetimeRegex:()=>It,defaultErrorMap:()=>V,discriminatedUnion:()=>Jn,effect:()=>dr,enum:()=>sr,function:()=>rr,getErrorMap:()=>me,getParsedType:()=>O,instanceof:()=>jn,intersection:()=>Xn,isAborted:()=>Oe,isAsync:()=>ge,isDirty:()=>Pe,isValid:()=>z,late:()=>Vn,lazy:()=>ar,literal:()=>ir,makeIssue:()=>we,map:()=>tr,nan:()=>Ln,nativeEnum:()=>or,never:()=>Gn,null:()=>Zn,nullable:()=>lr,number:()=>Mt,object:()=>Wn,objectUtil:()=>Qe,oboolean:()=>hr,onumber:()=>gr,optional:()=>ur,ostring:()=>mr,pipeline:()=>pr,preprocess:()=>fr,promise:()=>cr,quotelessJson:()=>dn,record:()=>er,set:()=>nr,setErrorMap:()=>ln,strictObject:()=>Yn,string:()=>Nt,symbol:()=>zn,transformer:()=>dr,tuple:()=>Qn,undefined:()=>Un,union:()=>qn,unknown:()=>Fn,util:()=>x,void:()=>Bn});var x;(function(t){t.assertEqual=a=>{};function e(a){}t.assertIs=e;function n(a){throw new Error}t.assertNever=n,t.arrayToEnum=a=>{let i={};for(let o of a)i[o]=o;return i},t.getValidEnumValues=a=>{let i=t.objectKeys(a).filter(s=>typeof a[a[s]]!="number"),o={};for(let s of i)o[s]=a[s];return t.objectValues(o)},t.objectValues=a=>t.objectKeys(a).map(function(i){return a[i]}),t.objectKeys=typeof Object.keys=="function"?a=>Object.keys(a):a=>{let i=[];for(let o in a)Object.prototype.hasOwnProperty.call(a,o)&&i.push(o);return i},t.find=(a,i)=>{for(let o of a)if(i(o))return o},t.isInteger=typeof Number.isInteger=="function"?a=>Number.isInteger(a):a=>typeof a=="number"&&Number.isFinite(a)&&Math.floor(a)===a;function r(a,i=" | "){return a.map(o=>typeof o=="string"?`'${o}'`:o).join(i)}t.joinValues=r,t.jsonStringifyReplacer=(a,i)=>typeof i=="bigint"?i.toString():i})(x||(x={}));var Qe;(function(t){t.mergeShapes=(e,n)=>({...e,...n})})(Qe||(Qe={}));var f=x.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),O=t=>{switch(typeof t){case"undefined":return f.undefined;case"string":return f.string;case"number":return Number.isNaN(t)?f.nan:f.number;case"boolean":return f.boolean;case"function":return f.function;case"bigint":return f.bigint;case"symbol":return f.symbol;case"object":return Array.isArray(t)?f.array:t===null?f.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?f.promise:typeof Map<"u"&&t instanceof Map?f.map:typeof Set<"u"&&t instanceof Set?f.set:typeof Date<"u"&&t instanceof Date?f.date:f.object;default:return f.unknown}};var c=x.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),dn=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),b=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};let n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}format(e){let n=e||function(i){return i.message},r={_errors:[]},a=i=>{for(let o of i.issues)if(o.code==="invalid_union")o.unionErrors.map(a);else if(o.code==="invalid_return_type")a(o.returnTypeError);else if(o.code==="invalid_arguments")a(o.argumentsError);else if(o.path.length===0)r._errors.push(n(o));else{let s=r,u=0;for(;u<o.path.length;){let d=o.path[u];u===o.path.length-1?(s[d]=s[d]||{_errors:[]},s[d]._errors.push(n(o))):s[d]=s[d]||{_errors:[]},s=s[d],u++}}};return a(this),r}static assert(e){if(!(e instanceof t))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,x.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=n=>n.message){let n={},r=[];for(let a of this.issues)if(a.path.length>0){let i=a.path[0];n[i]=n[i]||[],n[i].push(e(a))}else r.push(e(a));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}};b.create=t=>new b(t);var un=(t,e)=>{let n;switch(t.code){case c.invalid_type:t.received===f.undefined?n="Required":n=`Expected ${t.expected}, received ${t.received}`;break;case c.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,x.jsonStringifyReplacer)}`;break;case c.unrecognized_keys:n=`Unrecognized key(s) in object: ${x.joinValues(t.keys,", ")}`;break;case c.invalid_union:n="Invalid input";break;case c.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${x.joinValues(t.options)}`;break;case c.invalid_enum_value:n=`Invalid enum value. Expected ${x.joinValues(t.options)}, received '${t.received}'`;break;case c.invalid_arguments:n="Invalid function arguments";break;case c.invalid_return_type:n="Invalid function return type";break;case c.invalid_date:n="Invalid date";break;case c.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:x.assertNever(t.validation):t.validation!=="regex"?n=`Invalid ${t.validation}`:n="Invalid";break;case c.too_small:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:n="Invalid input";break;case c.too_big:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?n=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:n="Invalid input";break;case c.custom:n="Invalid input";break;case c.invalid_intersection_types:n="Intersection results could not be merged";break;case c.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case c.not_finite:n="Number must be finite";break;default:n=e.defaultError,x.assertNever(t)}return{message:n}},V=un;var bt=V;function ln(t){bt=t}function me(){return bt}var we=t=>{let{data:e,path:n,errorMaps:r,issueData:a}=t,i=[...n,...a.path||[]],o={...a,path:i};if(a.message!==void 0)return{...a,path:i,message:a.message};let s="",u=r.filter(d=>!!d).slice().reverse();for(let d of u)s=d(o,{data:e,defaultError:s}).message;return{...a,path:i,message:s}},fn=[];function l(t,e){let n=me(),r=we({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,n,n===V?void 0:V].filter(a=>!!a)});t.common.issues.push(r)}var T=class t{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,n){let r=[];for(let a of n){if(a.status==="aborted")return m;a.status==="dirty"&&e.dirty(),r.push(a.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,n){let r=[];for(let a of n){let i=await a.key,o=await a.value;r.push({key:i,value:o})}return t.mergeObjectSync(e,r)}static mergeObjectSync(e,n){let r={};for(let a of n){let{key:i,value:o}=a;if(i.status==="aborted"||o.status==="aborted")return m;i.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),i.value!=="__proto__"&&(typeof o.value<"u"||a.alwaysSet)&&(r[i.value]=o.value)}return{status:e.value,value:r}}},m=Object.freeze({status:"aborted"}),G=t=>({status:"dirty",value:t}),S=t=>({status:"valid",value:t}),Oe=t=>t.status==="aborted",Pe=t=>t.status==="dirty",z=t=>t.status==="valid",ge=t=>typeof Promise<"u"&&t instanceof Promise;var p;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e?.message})(p||(p={}));var A=class{constructor(e,n,r,a){this._cachedPath=[],this.parent=e,this.data=n,this._path=r,this._key=a}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ct=(t,e)=>{if(z(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let n=new b(t.common.issues);return this._error=n,this._error}}};function _(t){if(!t)return{};let{errorMap:e,invalid_type_error:n,required_error:r,description:a}=t;if(e&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:a}:{errorMap:(o,s)=>{let{message:u}=t;return o.code==="invalid_enum_value"?{message:u??s.defaultError}:typeof s.data>"u"?{message:u??r??s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:u??n??s.defaultError}},description:a}}var v=class{get description(){return this._def.description}_getType(e){return O(e.data)}_getOrReturnCtx(e,n){return n||{common:e.parent.common,data:e.data,parsedType:O(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new T,ctx:{common:e.parent.common,data:e.data,parsedType:O(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let n=this._parse(e);if(ge(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(e){let n=this._parse(e);return Promise.resolve(n)}parse(e,n){let r=this.safeParse(e,n);if(r.success)return r.data;throw r.error}safeParse(e,n){let r={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:O(e)},a=this._parseSync({data:e,path:r.path,parent:r});return Ct(r,a)}"~validate"(e){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:O(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:n});return z(r)?{value:r.value}:{issues:n.common.issues}}catch(r){r?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:n}).then(r=>z(r)?{value:r.value}:{issues:n.common.issues})}async parseAsync(e,n){let r=await this.safeParseAsync(e,n);if(r.success)return r.data;throw r.error}async safeParseAsync(e,n){let r={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:O(e)},a=this._parse({data:e,path:r.path,parent:r}),i=await(ge(a)?a:Promise.resolve(a));return Ct(r,i)}refine(e,n){let r=a=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(a):n;return this._refinement((a,i)=>{let o=e(a),s=()=>i.addIssue({code:c.custom,...r(a)});return typeof Promise<"u"&&o instanceof Promise?o.then(u=>u?!0:(s(),!1)):o?!0:(s(),!1)})}refinement(e,n){return this._refinement((r,a)=>e(r)?!0:(a.addIssue(typeof n=="function"?n(r,a):n),!1))}_refinement(e){return new R({schema:this,typeName:g.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return E.create(this,this._def)}nullable(){return N.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return $.create(this)}promise(){return K.create(this,this._def)}or(e){return X.create([this,e],this._def)}and(e){return Q.create(this,e,this._def)}transform(e){return new R({..._(this._def),schema:this,typeName:g.ZodEffects,effect:{type:"transform",transform:e}})}default(e){let n=typeof e=="function"?e:()=>e;return new ae({..._(this._def),innerType:this,defaultValue:n,typeName:g.ZodDefault})}brand(){return new Te({typeName:g.ZodBranded,type:this,..._(this._def)})}catch(e){let n=typeof e=="function"?e:()=>e;return new ie({..._(this._def),innerType:this,catchValue:n,typeName:g.ZodCatch})}describe(e){let n=this.constructor;return new n({...this._def,description:e})}pipe(e){return Se.create(this,e)}readonly(){return se.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},pn=/^c[^\s-]{8,}$/i,mn=/^[0-9a-z]+$/,gn=/^[0-9A-HJKMNP-TV-Z]{26}$/i,hn=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,yn=/^[a-z0-9_-]{21}$/i,_n=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,vn=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,xn=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,kn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",et,wn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Tn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Sn=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,bn=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Cn=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,En=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,At="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",An=new RegExp(`^${At}$`);function Rt(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);let n=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${n}`}function Rn(t){return new RegExp(`^${Rt(t)}$`)}function It(t){let e=`${At}T${Rt(t)}`,n=[];return n.push(t.local?"Z?":"Z"),t.offset&&n.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${n.join("|")})`,new RegExp(`^${e}$`)}function In(t,e){return!!((e==="v4"||!e)&&wn.test(t)||(e==="v6"||!e)&&Sn.test(t))}function On(t,e){if(!_n.test(t))return!1;try{let[n]=t.split(".");if(!n)return!1;let r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),a=JSON.parse(atob(r));return!(typeof a!="object"||a===null||"typ"in a&&a?.typ!=="JWT"||!a.alg||e&&a.alg!==e)}catch{return!1}}function Pn(t,e){return!!((e==="v4"||!e)&&Tn.test(t)||(e==="v6"||!e)&&bn.test(t))}var U=class t extends v{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==f.string){let i=this._getOrReturnCtx(e);return l(i,{code:c.invalid_type,expected:f.string,received:i.parsedType}),m}let r=new T,a;for(let i of this._def.checks)if(i.kind==="min")e.data.length<i.value&&(a=this._getOrReturnCtx(e,a),l(a,{code:c.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),r.dirty());else if(i.kind==="max")e.data.length>i.value&&(a=this._getOrReturnCtx(e,a),l(a,{code:c.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),r.dirty());else if(i.kind==="length"){let o=e.data.length>i.value,s=e.data.length<i.value;(o||s)&&(a=this._getOrReturnCtx(e,a),o?l(a,{code:c.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}):s&&l(a,{code:c.too_small,minimum:i.value,type:"string",inclusive:!0,exact:!0,message:i.message}),r.dirty())}else if(i.kind==="email")xn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"email",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="emoji")et||(et=new RegExp(kn,"u")),et.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"emoji",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="uuid")hn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"uuid",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="nanoid")yn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"nanoid",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="cuid")pn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"cuid",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="cuid2")mn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"cuid2",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="ulid")gn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"ulid",code:c.invalid_string,message:i.message}),r.dirty());else if(i.kind==="url")try{new URL(e.data)}catch{a=this._getOrReturnCtx(e,a),l(a,{validation:"url",code:c.invalid_string,message:i.message}),r.dirty()}else i.kind==="regex"?(i.regex.lastIndex=0,i.regex.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"regex",code:c.invalid_string,message:i.message}),r.dirty())):i.kind==="trim"?e.data=e.data.trim():i.kind==="includes"?e.data.includes(i.value,i.position)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:{includes:i.value,position:i.position},message:i.message}),r.dirty()):i.kind==="toLowerCase"?e.data=e.data.toLowerCase():i.kind==="toUpperCase"?e.data=e.data.toUpperCase():i.kind==="startsWith"?e.data.startsWith(i.value)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:{startsWith:i.value},message:i.message}),r.dirty()):i.kind==="endsWith"?e.data.endsWith(i.value)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:{endsWith:i.value},message:i.message}),r.dirty()):i.kind==="datetime"?It(i).test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:"datetime",message:i.message}),r.dirty()):i.kind==="date"?An.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:"date",message:i.message}),r.dirty()):i.kind==="time"?Rn(i).test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{code:c.invalid_string,validation:"time",message:i.message}),r.dirty()):i.kind==="duration"?vn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"duration",code:c.invalid_string,message:i.message}),r.dirty()):i.kind==="ip"?In(e.data,i.version)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"ip",code:c.invalid_string,message:i.message}),r.dirty()):i.kind==="jwt"?On(e.data,i.alg)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"jwt",code:c.invalid_string,message:i.message}),r.dirty()):i.kind==="cidr"?Pn(e.data,i.version)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"cidr",code:c.invalid_string,message:i.message}),r.dirty()):i.kind==="base64"?Cn.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"base64",code:c.invalid_string,message:i.message}),r.dirty()):i.kind==="base64url"?En.test(e.data)||(a=this._getOrReturnCtx(e,a),l(a,{validation:"base64url",code:c.invalid_string,message:i.message}),r.dirty()):x.assertNever(i);return{status:r.value,value:e.data}}_regex(e,n,r){return this.refinement(a=>e.test(a),{validation:n,code:c.invalid_string,...p.errToObj(r)})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...p.errToObj(e)})}url(e){return this._addCheck({kind:"url",...p.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...p.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...p.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...p.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...p.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...p.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...p.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...p.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...p.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...p.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...p.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...p.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof e?.precision>"u"?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...p.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof e?.precision>"u"?null:e?.precision,...p.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...p.errToObj(e)})}regex(e,n){return this._addCheck({kind:"regex",regex:e,...p.errToObj(n)})}includes(e,n){return this._addCheck({kind:"includes",value:e,position:n?.position,...p.errToObj(n?.message)})}startsWith(e,n){return this._addCheck({kind:"startsWith",value:e,...p.errToObj(n)})}endsWith(e,n){return this._addCheck({kind:"endsWith",value:e,...p.errToObj(n)})}min(e,n){return this._addCheck({kind:"min",value:e,...p.errToObj(n)})}max(e,n){return this._addCheck({kind:"max",value:e,...p.errToObj(n)})}length(e,n){return this._addCheck({kind:"length",value:e,...p.errToObj(n)})}nonempty(e){return this.min(1,p.errToObj(e))}trim(){return new t({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new t({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(let n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxLength(){let e=null;for(let n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}};U.create=t=>new U({checks:[],typeName:g.ZodString,coerce:t?.coerce??!1,..._(t)});function Nn(t,e){let n=(t.toString().split(".")[1]||"").length,r=(e.toString().split(".")[1]||"").length,a=n>r?n:r,i=Number.parseInt(t.toFixed(a).replace(".","")),o=Number.parseInt(e.toFixed(a).replace(".",""));return i%o/10**a}var B=class t extends v{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==f.number){let i=this._getOrReturnCtx(e);return l(i,{code:c.invalid_type,expected:f.number,received:i.parsedType}),m}let r,a=new T;for(let i of this._def.checks)i.kind==="int"?x.isInteger(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{code:c.invalid_type,expected:"integer",received:"float",message:i.message}),a.dirty()):i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),a.dirty()):i.kind==="multipleOf"?Nn(e.data,i.value)!==0&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):i.kind==="finite"?Number.isFinite(e.data)||(r=this._getOrReturnCtx(e,r),l(r,{code:c.not_finite,message:i.message}),a.dirty()):x.assertNever(i);return{status:a.value,value:e.data}}gte(e,n){return this.setLimit("min",e,!0,p.toString(n))}gt(e,n){return this.setLimit("min",e,!1,p.toString(n))}lte(e,n){return this.setLimit("max",e,!0,p.toString(n))}lt(e,n){return this.setLimit("max",e,!1,p.toString(n))}setLimit(e,n,r,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:r,message:p.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:p.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:p.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:p.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:p.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:p.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:p.toString(n)})}finite(e){return this._addCheck({kind:"finite",message:p.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:p.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:p.toString(e)})}get minValue(){let e=null;for(let n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(let n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&x.isInteger(e.value))}get isFinite(){let e=null,n=null;for(let r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(e===null||r.value<e)&&(e=r.value)}return Number.isFinite(n)&&Number.isFinite(e)}};B.create=t=>new B({checks:[],typeName:g.ZodNumber,coerce:t?.coerce||!1,..._(t)});var H=class t extends v{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==f.bigint)return this._getInvalidInput(e);let r,a=new T;for(let i of this._def.checks)i.kind==="min"?(i.inclusive?e.data<i.value:e.data<=i.value)&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="max"?(i.inclusive?e.data>i.value:e.data>=i.value)&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),a.dirty()):i.kind==="multipleOf"?e.data%i.value!==BigInt(0)&&(r=this._getOrReturnCtx(e,r),l(r,{code:c.not_multiple_of,multipleOf:i.value,message:i.message}),a.dirty()):x.assertNever(i);return{status:a.value,value:e.data}}_getInvalidInput(e){let n=this._getOrReturnCtx(e);return l(n,{code:c.invalid_type,expected:f.bigint,received:n.parsedType}),m}gte(e,n){return this.setLimit("min",e,!0,p.toString(n))}gt(e,n){return this.setLimit("min",e,!1,p.toString(n))}lte(e,n){return this.setLimit("max",e,!0,p.toString(n))}lt(e,n){return this.setLimit("max",e,!1,p.toString(n))}setLimit(e,n,r,a){return new t({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:r,message:p.toString(a)}]})}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:p.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:p.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:p.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:p.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:p.toString(n)})}get minValue(){let e=null;for(let n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(let n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}};H.create=t=>new H({checks:[],typeName:g.ZodBigInt,coerce:t?.coerce??!1,..._(t)});var W=class extends v{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==f.boolean){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.boolean,received:r.parsedType}),m}return S(e.data)}};W.create=t=>new W({typeName:g.ZodBoolean,coerce:t?.coerce||!1,..._(t)});var Y=class t extends v{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==f.date){let i=this._getOrReturnCtx(e);return l(i,{code:c.invalid_type,expected:f.date,received:i.parsedType}),m}if(Number.isNaN(e.data.getTime())){let i=this._getOrReturnCtx(e);return l(i,{code:c.invalid_date}),m}let r=new T,a;for(let i of this._def.checks)i.kind==="min"?e.data.getTime()<i.value&&(a=this._getOrReturnCtx(e,a),l(a,{code:c.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),r.dirty()):i.kind==="max"?e.data.getTime()>i.value&&(a=this._getOrReturnCtx(e,a),l(a,{code:c.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):x.assertNever(i);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new t({...this._def,checks:[...this._def.checks,e]})}min(e,n){return this._addCheck({kind:"min",value:e.getTime(),message:p.toString(n)})}max(e,n){return this._addCheck({kind:"max",value:e.getTime(),message:p.toString(n)})}get minDate(){let e=null;for(let n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(let n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e!=null?new Date(e):null}};Y.create=t=>new Y({checks:[],coerce:t?.coerce||!1,typeName:g.ZodDate,..._(t)});var ye=class extends v{_parse(e){if(this._getType(e)!==f.symbol){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.symbol,received:r.parsedType}),m}return S(e.data)}};ye.create=t=>new ye({typeName:g.ZodSymbol,..._(t)});var q=class extends v{_parse(e){if(this._getType(e)!==f.undefined){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.undefined,received:r.parsedType}),m}return S(e.data)}};q.create=t=>new q({typeName:g.ZodUndefined,..._(t)});var J=class extends v{_parse(e){if(this._getType(e)!==f.null){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.null,received:r.parsedType}),m}return S(e.data)}};J.create=t=>new J({typeName:g.ZodNull,..._(t)});var Z=class extends v{constructor(){super(...arguments),this._any=!0}_parse(e){return S(e.data)}};Z.create=t=>new Z({typeName:g.ZodAny,..._(t)});var L=class extends v{constructor(){super(...arguments),this._unknown=!0}_parse(e){return S(e.data)}};L.create=t=>new L({typeName:g.ZodUnknown,..._(t)});var I=class extends v{_parse(e){let n=this._getOrReturnCtx(e);return l(n,{code:c.invalid_type,expected:f.never,received:n.parsedType}),m}};I.create=t=>new I({typeName:g.ZodNever,..._(t)});var _e=class extends v{_parse(e){if(this._getType(e)!==f.undefined){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.void,received:r.parsedType}),m}return S(e.data)}};_e.create=t=>new _e({typeName:g.ZodVoid,..._(t)});var $=class t extends v{_parse(e){let{ctx:n,status:r}=this._processInputParams(e),a=this._def;if(n.parsedType!==f.array)return l(n,{code:c.invalid_type,expected:f.array,received:n.parsedType}),m;if(a.exactLength!==null){let o=n.data.length>a.exactLength.value,s=n.data.length<a.exactLength.value;(o||s)&&(l(n,{code:o?c.too_big:c.too_small,minimum:s?a.exactLength.value:void 0,maximum:o?a.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:a.exactLength.message}),r.dirty())}if(a.minLength!==null&&n.data.length<a.minLength.value&&(l(n,{code:c.too_small,minimum:a.minLength.value,type:"array",inclusive:!0,exact:!1,message:a.minLength.message}),r.dirty()),a.maxLength!==null&&n.data.length>a.maxLength.value&&(l(n,{code:c.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((o,s)=>a.type._parseAsync(new A(n,o,n.path,s)))).then(o=>T.mergeArray(r,o));let i=[...n.data].map((o,s)=>a.type._parseSync(new A(n,o,n.path,s)));return T.mergeArray(r,i)}get element(){return this._def.type}min(e,n){return new t({...this._def,minLength:{value:e,message:p.toString(n)}})}max(e,n){return new t({...this._def,maxLength:{value:e,message:p.toString(n)}})}length(e,n){return new t({...this._def,exactLength:{value:e,message:p.toString(n)}})}nonempty(e){return this.min(1,e)}};$.create=(t,e)=>new $({type:t,minLength:null,maxLength:null,exactLength:null,typeName:g.ZodArray,..._(e)});function he(t){if(t instanceof C){let e={};for(let n in t.shape){let r=t.shape[n];e[n]=E.create(he(r))}return new C({...t._def,shape:()=>e})}else return t instanceof $?new $({...t._def,type:he(t.element)}):t instanceof E?E.create(he(t.unwrap())):t instanceof N?N.create(he(t.unwrap())):t instanceof P?P.create(t.items.map(e=>he(e))):t}var C=class t extends v{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),n=x.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==f.object){let d=this._getOrReturnCtx(e);return l(d,{code:c.invalid_type,expected:f.object,received:d.parsedType}),m}let{status:r,ctx:a}=this._processInputParams(e),{shape:i,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof I&&this._def.unknownKeys==="strip"))for(let d in a.data)o.includes(d)||s.push(d);let u=[];for(let d of o){let h=i[d],w=a.data[d];u.push({key:{status:"valid",value:d},value:h._parse(new A(a,w,a.path,d)),alwaysSet:d in a.data})}if(this._def.catchall instanceof I){let d=this._def.unknownKeys;if(d==="passthrough")for(let h of s)u.push({key:{status:"valid",value:h},value:{status:"valid",value:a.data[h]}});else if(d==="strict")s.length>0&&(l(a,{code:c.unrecognized_keys,keys:s}),r.dirty());else if(d!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let d=this._def.catchall;for(let h of s){let w=a.data[h];u.push({key:{status:"valid",value:h},value:d._parse(new A(a,w,a.path,h)),alwaysSet:h in a.data})}}return a.common.async?Promise.resolve().then(async()=>{let d=[];for(let h of u){let w=await h.key,ce=await h.value;d.push({key:w,value:ce,alwaysSet:h.alwaysSet})}return d}).then(d=>T.mergeObjectSync(r,d)):T.mergeObjectSync(r,u)}get shape(){return this._def.shape()}strict(e){return p.errToObj,new t({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(n,r)=>{let a=this._def.errorMap?.(n,r).message??r.defaultError;return n.code==="unrecognized_keys"?{message:p.errToObj(e).message??a}:{message:a}}}:{}})}strip(){return new t({...this._def,unknownKeys:"strip"})}passthrough(){return new t({...this._def,unknownKeys:"passthrough"})}extend(e){return new t({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new t({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:g.ZodObject})}setKey(e,n){return this.augment({[e]:n})}catchall(e){return new t({...this._def,catchall:e})}pick(e){let n={};for(let r of x.objectKeys(e))e[r]&&this.shape[r]&&(n[r]=this.shape[r]);return new t({...this._def,shape:()=>n})}omit(e){let n={};for(let r of x.objectKeys(this.shape))e[r]||(n[r]=this.shape[r]);return new t({...this._def,shape:()=>n})}deepPartial(){return he(this)}partial(e){let n={};for(let r of x.objectKeys(this.shape)){let a=this.shape[r];e&&!e[r]?n[r]=a:n[r]=a.optional()}return new t({...this._def,shape:()=>n})}required(e){let n={};for(let r of x.objectKeys(this.shape))if(e&&!e[r])n[r]=this.shape[r];else{let i=this.shape[r];for(;i instanceof E;)i=i._def.innerType;n[r]=i}return new t({...this._def,shape:()=>n})}keyof(){return Ot(x.objectKeys(this.shape))}};C.create=(t,e)=>new C({shape:()=>t,unknownKeys:"strip",catchall:I.create(),typeName:g.ZodObject,..._(e)});C.strictCreate=(t,e)=>new C({shape:()=>t,unknownKeys:"strict",catchall:I.create(),typeName:g.ZodObject,..._(e)});C.lazycreate=(t,e)=>new C({shape:t,unknownKeys:"strip",catchall:I.create(),typeName:g.ZodObject,..._(e)});var X=class extends v{_parse(e){let{ctx:n}=this._processInputParams(e),r=this._def.options;function a(i){for(let s of i)if(s.result.status==="valid")return s.result;for(let s of i)if(s.result.status==="dirty")return n.common.issues.push(...s.ctx.common.issues),s.result;let o=i.map(s=>new b(s.ctx.common.issues));return l(n,{code:c.invalid_union,unionErrors:o}),m}if(n.common.async)return Promise.all(r.map(async i=>{let o={...n,common:{...n.common,issues:[]},parent:null};return{result:await i._parseAsync({data:n.data,path:n.path,parent:o}),ctx:o}})).then(a);{let i,o=[];for(let u of r){let d={...n,common:{...n.common,issues:[]},parent:null},h=u._parseSync({data:n.data,path:n.path,parent:d});if(h.status==="valid")return h;h.status==="dirty"&&!i&&(i={result:h,ctx:d}),d.common.issues.length&&o.push(d.common.issues)}if(i)return n.common.issues.push(...i.ctx.common.issues),i.result;let s=o.map(u=>new b(u));return l(n,{code:c.invalid_union,unionErrors:s}),m}}get options(){return this._def.options}};X.create=(t,e)=>new X({options:t,typeName:g.ZodUnion,..._(e)});var j=t=>t instanceof ee?j(t.schema):t instanceof R?j(t.innerType()):t instanceof te?[t.value]:t instanceof ne?t.options:t instanceof re?x.objectValues(t.enum):t instanceof ae?j(t._def.innerType):t instanceof q?[void 0]:t instanceof J?[null]:t instanceof E?[void 0,...j(t.unwrap())]:t instanceof N?[null,...j(t.unwrap())]:t instanceof Te||t instanceof se?j(t.unwrap()):t instanceof ie?j(t._def.innerType):[],Ne=class t extends v{_parse(e){let{ctx:n}=this._processInputParams(e);if(n.parsedType!==f.object)return l(n,{code:c.invalid_type,expected:f.object,received:n.parsedType}),m;let r=this.discriminator,a=n.data[r],i=this.optionsMap.get(a);return i?n.common.async?i._parseAsync({data:n.data,path:n.path,parent:n}):i._parseSync({data:n.data,path:n.path,parent:n}):(l(n,{code:c.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),m)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,n,r){let a=new Map;for(let i of n){let o=j(i.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let s of o){if(a.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);a.set(s,i)}}return new t({typeName:g.ZodDiscriminatedUnion,discriminator:e,options:n,optionsMap:a,..._(r)})}};function tt(t,e){let n=O(t),r=O(e);if(t===e)return{valid:!0,data:t};if(n===f.object&&r===f.object){let a=x.objectKeys(e),i=x.objectKeys(t).filter(s=>a.indexOf(s)!==-1),o={...t,...e};for(let s of i){let u=tt(t[s],e[s]);if(!u.valid)return{valid:!1};o[s]=u.data}return{valid:!0,data:o}}else if(n===f.array&&r===f.array){if(t.length!==e.length)return{valid:!1};let a=[];for(let i=0;i<t.length;i++){let o=t[i],s=e[i],u=tt(o,s);if(!u.valid)return{valid:!1};a.push(u.data)}return{valid:!0,data:a}}else return n===f.date&&r===f.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}var Q=class extends v{_parse(e){let{status:n,ctx:r}=this._processInputParams(e),a=(i,o)=>{if(Oe(i)||Oe(o))return m;let s=tt(i.value,o.value);return s.valid?((Pe(i)||Pe(o))&&n.dirty(),{status:n.value,value:s.data}):(l(r,{code:c.invalid_intersection_types}),m)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([i,o])=>a(i,o)):a(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};Q.create=(t,e,n)=>new Q({left:t,right:e,typeName:g.ZodIntersection,..._(n)});var P=class t extends v{_parse(e){let{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==f.array)return l(r,{code:c.invalid_type,expected:f.array,received:r.parsedType}),m;if(r.data.length<this._def.items.length)return l(r,{code:c.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),m;!this._def.rest&&r.data.length>this._def.items.length&&(l(r,{code:c.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());let i=[...r.data].map((o,s)=>{let u=this._def.items[s]||this._def.rest;return u?u._parse(new A(r,o,r.path,s)):null}).filter(o=>!!o);return r.common.async?Promise.all(i).then(o=>T.mergeArray(n,o)):T.mergeArray(n,i)}get items(){return this._def.items}rest(e){return new t({...this._def,rest:e})}};P.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new P({items:t,typeName:g.ZodTuple,rest:null,..._(e)})};var Me=class t extends v{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==f.object)return l(r,{code:c.invalid_type,expected:f.object,received:r.parsedType}),m;let a=[],i=this._def.keyType,o=this._def.valueType;for(let s in r.data)a.push({key:i._parse(new A(r,s,r.path,s)),value:o._parse(new A(r,r.data[s],r.path,s)),alwaysSet:s in r.data});return r.common.async?T.mergeObjectAsync(n,a):T.mergeObjectSync(n,a)}get element(){return this._def.valueType}static create(e,n,r){return n instanceof v?new t({keyType:e,valueType:n,typeName:g.ZodRecord,..._(r)}):new t({keyType:U.create(),valueType:e,typeName:g.ZodRecord,..._(n)})}},ve=class extends v{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==f.map)return l(r,{code:c.invalid_type,expected:f.map,received:r.parsedType}),m;let a=this._def.keyType,i=this._def.valueType,o=[...r.data.entries()].map(([s,u],d)=>({key:a._parse(new A(r,s,r.path,[d,"key"])),value:i._parse(new A(r,u,r.path,[d,"value"]))}));if(r.common.async){let s=new Map;return Promise.resolve().then(async()=>{for(let u of o){let d=await u.key,h=await u.value;if(d.status==="aborted"||h.status==="aborted")return m;(d.status==="dirty"||h.status==="dirty")&&n.dirty(),s.set(d.value,h.value)}return{status:n.value,value:s}})}else{let s=new Map;for(let u of o){let d=u.key,h=u.value;if(d.status==="aborted"||h.status==="aborted")return m;(d.status==="dirty"||h.status==="dirty")&&n.dirty(),s.set(d.value,h.value)}return{status:n.value,value:s}}}};ve.create=(t,e,n)=>new ve({valueType:e,keyType:t,typeName:g.ZodMap,..._(n)});var xe=class t extends v{_parse(e){let{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==f.set)return l(r,{code:c.invalid_type,expected:f.set,received:r.parsedType}),m;let a=this._def;a.minSize!==null&&r.data.size<a.minSize.value&&(l(r,{code:c.too_small,minimum:a.minSize.value,type:"set",inclusive:!0,exact:!1,message:a.minSize.message}),n.dirty()),a.maxSize!==null&&r.data.size>a.maxSize.value&&(l(r,{code:c.too_big,maximum:a.maxSize.value,type:"set",inclusive:!0,exact:!1,message:a.maxSize.message}),n.dirty());let i=this._def.valueType;function o(u){let d=new Set;for(let h of u){if(h.status==="aborted")return m;h.status==="dirty"&&n.dirty(),d.add(h.value)}return{status:n.value,value:d}}let s=[...r.data.values()].map((u,d)=>i._parse(new A(r,u,r.path,d)));return r.common.async?Promise.all(s).then(u=>o(u)):o(s)}min(e,n){return new t({...this._def,minSize:{value:e,message:p.toString(n)}})}max(e,n){return new t({...this._def,maxSize:{value:e,message:p.toString(n)}})}size(e,n){return this.min(e,n).max(e,n)}nonempty(e){return this.min(1,e)}};xe.create=(t,e)=>new xe({valueType:t,minSize:null,maxSize:null,typeName:g.ZodSet,..._(e)});var Ve=class t extends v{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:n}=this._processInputParams(e);if(n.parsedType!==f.function)return l(n,{code:c.invalid_type,expected:f.function,received:n.parsedType}),m;function r(s,u){return we({data:s,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,me(),V].filter(d=>!!d),issueData:{code:c.invalid_arguments,argumentsError:u}})}function a(s,u){return we({data:s,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,me(),V].filter(d=>!!d),issueData:{code:c.invalid_return_type,returnTypeError:u}})}let i={errorMap:n.common.contextualErrorMap},o=n.data;if(this._def.returns instanceof K){let s=this;return S(async function(...u){let d=new b([]),h=await s._def.args.parseAsync(u,i).catch(de=>{throw d.addIssue(r(u,de)),d}),w=await Reflect.apply(o,this,h);return await s._def.returns._def.type.parseAsync(w,i).catch(de=>{throw d.addIssue(a(w,de)),d})})}else{let s=this;return S(function(...u){let d=s._def.args.safeParse(u,i);if(!d.success)throw new b([r(u,d.error)]);let h=Reflect.apply(o,this,d.data),w=s._def.returns.safeParse(h,i);if(!w.success)throw new b([a(h,w.error)]);return w.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new t({...this._def,args:P.create(e).rest(L.create())})}returns(e){return new t({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,n,r){return new t({args:e||P.create([]).rest(L.create()),returns:n||L.create(),typeName:g.ZodFunction,..._(r)})}},ee=class extends v{get schema(){return this._def.getter()}_parse(e){let{ctx:n}=this._processInputParams(e);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};ee.create=(t,e)=>new ee({getter:t,typeName:g.ZodLazy,..._(e)});var te=class extends v{_parse(e){if(e.data!==this._def.value){let n=this._getOrReturnCtx(e);return l(n,{received:n.data,code:c.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:e.data}}get value(){return this._def.value}};te.create=(t,e)=>new te({value:t,typeName:g.ZodLiteral,..._(e)});function Ot(t,e){return new ne({values:t,typeName:g.ZodEnum,..._(e)})}var ne=class t extends v{_parse(e){if(typeof e.data!="string"){let n=this._getOrReturnCtx(e),r=this._def.values;return l(n,{expected:x.joinValues(r),received:n.parsedType,code:c.invalid_type}),m}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let n=this._getOrReturnCtx(e),r=this._def.values;return l(n,{received:n.data,code:c.invalid_enum_value,options:r}),m}return S(e.data)}get options(){return this._def.values}get enum(){let e={};for(let n of this._def.values)e[n]=n;return e}get Values(){let e={};for(let n of this._def.values)e[n]=n;return e}get Enum(){let e={};for(let n of this._def.values)e[n]=n;return e}extract(e,n=this._def){return t.create(e,{...this._def,...n})}exclude(e,n=this._def){return t.create(this.options.filter(r=>!e.includes(r)),{...this._def,...n})}};ne.create=Ot;var re=class extends v{_parse(e){let n=x.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==f.string&&r.parsedType!==f.number){let a=x.objectValues(n);return l(r,{expected:x.joinValues(a),received:r.parsedType,code:c.invalid_type}),m}if(this._cache||(this._cache=new Set(x.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let a=x.objectValues(n);return l(r,{received:r.data,code:c.invalid_enum_value,options:a}),m}return S(e.data)}get enum(){return this._def.values}};re.create=(t,e)=>new re({values:t,typeName:g.ZodNativeEnum,..._(e)});var K=class extends v{unwrap(){return this._def.type}_parse(e){let{ctx:n}=this._processInputParams(e);if(n.parsedType!==f.promise&&n.common.async===!1)return l(n,{code:c.invalid_type,expected:f.promise,received:n.parsedType}),m;let r=n.parsedType===f.promise?n.data:Promise.resolve(n.data);return S(r.then(a=>this._def.type.parseAsync(a,{path:n.path,errorMap:n.common.contextualErrorMap})))}};K.create=(t,e)=>new K({type:t,typeName:g.ZodPromise,..._(e)});var R=class extends v{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===g.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:n,ctx:r}=this._processInputParams(e),a=this._def.effect||null,i={addIssue:o=>{l(r,o),o.fatal?n.abort():n.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),a.type==="preprocess"){let o=a.transform(r.data,i);if(r.common.async)return Promise.resolve(o).then(async s=>{if(n.value==="aborted")return m;let u=await this._def.schema._parseAsync({data:s,path:r.path,parent:r});return u.status==="aborted"?m:u.status==="dirty"?G(u.value):n.value==="dirty"?G(u.value):u});{if(n.value==="aborted")return m;let s=this._def.schema._parseSync({data:o,path:r.path,parent:r});return s.status==="aborted"?m:s.status==="dirty"?G(s.value):n.value==="dirty"?G(s.value):s}}if(a.type==="refinement"){let o=s=>{let u=a.refinement(s,i);if(r.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return s};if(r.common.async===!1){let s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return s.status==="aborted"?m:(s.status==="dirty"&&n.dirty(),o(s.value),{status:n.value,value:s.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(s=>s.status==="aborted"?m:(s.status==="dirty"&&n.dirty(),o(s.value).then(()=>({status:n.value,value:s.value}))))}if(a.type==="transform")if(r.common.async===!1){let o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!z(o))return m;let s=a.transform(o.value,i);if(s instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:s}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(o=>z(o)?Promise.resolve(a.transform(o.value,i)).then(s=>({status:n.value,value:s})):m);x.assertNever(a)}};R.create=(t,e,n)=>new R({schema:t,typeName:g.ZodEffects,effect:e,..._(n)});R.createWithPreprocess=(t,e,n)=>new R({schema:e,effect:{type:"preprocess",transform:t},typeName:g.ZodEffects,..._(n)});var E=class extends v{_parse(e){return this._getType(e)===f.undefined?S(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};E.create=(t,e)=>new E({innerType:t,typeName:g.ZodOptional,..._(e)});var N=class extends v{_parse(e){return this._getType(e)===f.null?S(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};N.create=(t,e)=>new N({innerType:t,typeName:g.ZodNullable,..._(e)});var ae=class extends v{_parse(e){let{ctx:n}=this._processInputParams(e),r=n.data;return n.parsedType===f.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};ae.create=(t,e)=>new ae({innerType:t,typeName:g.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,..._(e)});var ie=class extends v{_parse(e){let{ctx:n}=this._processInputParams(e),r={...n,common:{...n.common,issues:[]}},a=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return ge(a)?a.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new b(r.common.issues)},input:r.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new b(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};ie.create=(t,e)=>new ie({innerType:t,typeName:g.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,..._(e)});var ke=class extends v{_parse(e){if(this._getType(e)!==f.nan){let r=this._getOrReturnCtx(e);return l(r,{code:c.invalid_type,expected:f.nan,received:r.parsedType}),m}return{status:"valid",value:e.data}}};ke.create=t=>new ke({typeName:g.ZodNaN,..._(t)});var Mn=Symbol("zod_brand"),Te=class extends v{_parse(e){let{ctx:n}=this._processInputParams(e),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}},Se=class t extends v{_parse(e){let{status:n,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let i=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?m:i.status==="dirty"?(n.dirty(),G(i.value)):this._def.out._parseAsync({data:i.value,path:r.path,parent:r})})();{let a=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?m:a.status==="dirty"?(n.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:r.path,parent:r})}}static create(e,n){return new t({in:e,out:n,typeName:g.ZodPipeline})}},se=class extends v{_parse(e){let n=this._def.innerType._parse(e),r=a=>(z(a)&&(a.value=Object.freeze(a.value)),a);return ge(n)?n.then(a=>r(a)):r(n)}unwrap(){return this._def.innerType}};se.create=(t,e)=>new se({innerType:t,typeName:g.ZodReadonly,..._(e)});function Et(t,e){let n=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof n=="string"?{message:n}:n}function Pt(t,e={},n){return t?Z.create().superRefine((r,a)=>{let i=t(r);if(i instanceof Promise)return i.then(o=>{if(!o){let s=Et(e,r),u=s.fatal??n??!0;a.addIssue({code:"custom",...s,fatal:u})}});if(!i){let o=Et(e,r),s=o.fatal??n??!0;a.addIssue({code:"custom",...o,fatal:s})}}):Z.create()}var Vn={object:C.lazycreate},g;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(g||(g={}));var jn=(t,e={message:`Input not instance of ${t.name}`})=>Pt(n=>n instanceof t,e),Nt=U.create,Mt=B.create,Ln=ke.create,$n=H.create,Vt=W.create,Dn=Y.create,zn=ye.create,Un=q.create,Zn=J.create,Kn=Z.create,Fn=L.create,Gn=I.create,Bn=_e.create,Hn=$.create,Wn=C.create,Yn=C.strictCreate,qn=X.create,Jn=Ne.create,Xn=Q.create,Qn=P.create,er=Me.create,tr=ve.create,nr=xe.create,rr=Ve.create,ar=ee.create,ir=te.create,sr=ne.create,or=re.create,cr=K.create,dr=R.create,ur=E.create,lr=N.create,fr=R.createWithPreprocess,pr=Se.create,mr=()=>Nt().optional(),gr=()=>Mt().optional(),hr=()=>Vt().optional(),yr={string:(t=>U.create({...t,coerce:!0})),number:(t=>B.create({...t,coerce:!0})),boolean:(t=>W.create({...t,coerce:!0})),bigint:(t=>H.create({...t,coerce:!0})),date:(t=>Y.create({...t,coerce:!0}))};var _r=m;var je=y.object({page:y.object({title:y.string().nullable(),path:y.string(),search:y.string(),hash:y.string()}),referrer:y.string().nullable(),viewport:y.object({w:y.number(),h:y.number()}).nullable().optional()}).strict(),jt=y.object({}).strict();var at="aranova_tracking_last_fired_url",nt=null,rt=!1;function vr(t){try{return typeof window>"u"?null:window.sessionStorage.getItem(t)}catch{return null}}function xr(t,e){try{if(typeof window>"u")return;window.sessionStorage.setItem(t,e)}catch{}}function kr(){if(!rt){rt=!0;let t=vr(at);t!==null&&(nt=t)}return nt}function wr(t){nt=t,rt=!0,xr(at,t)}function Lt(t){return typeof window>"u"||typeof document>"u"?null:je.parse({page:{title:document.title||null,path:window.location.pathname,search:window.location.search,hash:window.location.hash},referrer:t!==void 0?t:document.referrer||null,viewport:{w:window.innerWidth,h:window.innerHeight}})}function be(t){if(typeof window>"u")return;let e=window.location.href,n=kr(),r=n!==null&&n!==e?n:null,a=typeof document<"u"&&document.referrer||null,o=Lt(r??a);t.trackEvent({eventType:"page_view",pageUrl:e,metadata:o}),e!==n&&wr(e)}function it(t){if(typeof window>"u")return()=>{};function e(n){n.persisted&&be(t)}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}}function st(t,e={}){if(typeof window>"u"||typeof history>"u")return()=>{};let n=window.location.pathname+window.location.search;function r(){let d=window.location.pathname+window.location.search;d!==n&&(n=d,be(t))}let a=history.pushState.bind(history),i=history.replaceState.bind(history);function o(...d){a(...d),setTimeout(r,0)}function s(...d){i(...d),setTimeout(r,0)}function u(d){d.persisted&&be(t)}return history.pushState=o,history.replaceState=s,window.addEventListener("popstate",r),window.addEventListener("pageshow",u),e.skipInitial||be(t),()=>{history.pushState=a,history.replaceState=i,window.removeEventListener("popstate",r),window.removeEventListener("pageshow",u)}}var Dt=2e3,zt=10,Le=50,Ut="X-Aranova-Api-Key";function Sr(t,e,n){return{surface:t,sdk_version:e,package_name:n,site_origin:typeof window>"u"?null:window.location.origin,page_title:typeof document>"u"?null:document.title||null,referrer:typeof document>"u"?null:document.referrer||null}}function br(){if(typeof window>"u")return Ee();try{pe()}catch{}return le(fe)}function Cr(){try{return{state:D()}}catch{return null}}async function $t(t,e,n,r){if(typeof fetch=="function")try{await fetch(t,{method:"POST",headers:{"Content-Type":"application/json",[Ut]:n},body:e,keepalive:r,credentials:"omit",mode:"cors"})}catch{}}function ot(t){let e=t.flushIntervalMs??Dt,n=Math.min(t.maxQueueSize??zt,Le),r=t.sdkVersion??null,a=t.packageName??null,o=`${t.endpoint.replace(/\/$/,"")}/events`,s=[],u=null,d=null,h=!1,w=Xe(),ce=Ie();typeof window<"u"&&(d=window.location.href);function de(){ce=Ie();let k=br(),F=Sr(t.surface,r,a);return{session_id:ce,visitor_id:w,gclid:k.gclid,fbclid:k.fbclid,utm_source:k.utm_source,utm_medium:k.utm_medium,utm_campaign:k.utm_campaign,utm_term:k.utm_term,utm_content:k.utm_content,first_page:d,consent_state:Cr(),context:F}}function en(){u!==null||h||(u=setTimeout(()=>{u=null,De()},e))}function $e(){u!==null&&(clearTimeout(u),u=null)}async function De(){if(s.length===0)return;let k=s.slice(0,Le);s=s.slice(k.length),$e();let F={session:de(),events:k},ze=JSON.stringify(F);await $t(o,ze,t.apiKey,!1)}function tn(k){if(h||!k||typeof k.eventType!="string"||k.eventType.length===0)return;let F=k.occurredAt instanceof Date?k.occurredAt.toISOString():typeof k.occurredAt=="string"?k.occurredAt:new Date().toISOString();s.push({event_type:k.eventType,page_url:k.pageUrl??(typeof window>"u"?null:window.location.href),metadata:k.metadata??null,occurred_at:F}),s.length>=n?De():en()}function Ce(){if(s.length===0)return;let k=s.slice(0,Le);s=s.slice(k.length),$e();let F={session:de(),events:k},ze=JSON.stringify(F);$t(o,ze,t.apiKey,!0)}return typeof window<"u"&&(window.addEventListener("pagehide",Ce),window.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ce()})),{trackEvent:tn,flush:De,getSessionId:()=>ce,getVisitorId:()=>w,destroy:()=>{h=!0,s.length>0&&Ce(),$e(),s=[],typeof window<"u"&&window.removeEventListener("pagehide",Ce)}}}var Zt=y.object({page:y.object({path:y.string()})}).strict(),Kt=y.object({pathPattern:y.custom(t=>t instanceof RegExp,{message:"pathPattern must be a RegExp"})}).strict();var Ft=y.object({form:y.object({id:y.string(),action:y.string().nullable()}),page:y.object({path:y.string()})}).strict(),Gt=y.object({}).strict();var Bt=y.object({element:y.object({tag:y.string(),text:y.string().nullable(),href:y.string()}),page:y.object({path:y.string()})}).strict(),Ht=y.object({}).strict();var Wt=y.object({duration_ms:y.number().int().nonnegative(),page:y.object({path:y.string()})}).strict(),Yt=y.object({thresholdSeconds:y.number().int().positive()}).strict();var ct={page_view:{kind:"automatic",metadataSchema:je,configSchema:jt},time_on_site:{kind:"automatic",metadataSchema:Wt,configSchema:Yt},contact_page_visit:{kind:"automatic",metadataSchema:Zt,configSchema:Kt},form_submit:{kind:"manual",metadataSchema:Ft,configSchema:Gt},phone_click:{kind:"manual",metadataSchema:Bt,configSchema:Ht}},Ma=Object.entries(ct).filter(([,t])=>t.kind==="automatic").map(([t])=>t),Va=Object.entries(ct).filter(([,t])=>t.kind==="manual").map(([t])=>t);function dt(t){return ct[t]}function ut(t,e){if(typeof window>"u"||typeof document>"u")return()=>{};let n=e.thresholdSeconds*1e3,r=0,a=document.visibilityState==="visible"?Date.now():null,i=null,o=!1;function s(){o||(o=!0,t.trackEvent({eventType:"time_on_site",metadata:{duration_ms:n,page:{path:window.location.pathname}},pageUrl:window.location.href,occurredAt:null}))}function u(){if(o||a===null)return;let w=n-r;if(w<=0){s();return}i=setTimeout(s,w)}function d(){i!==null&&(clearTimeout(i),i=null)}function h(){o||(document.visibilityState==="hidden"?(a!==null&&(r+=Date.now()-a,a=null),d()):(a=Date.now(),u()))}return document.addEventListener("visibilitychange",h),u(),()=>{d(),document.removeEventListener("visibilitychange",h)}}function lt(t,e){if(typeof window>"u"||typeof history>"u")return()=>{};let{pathPattern:n}=e,r=null;function a(){let d=window.location.pathname;n.test(d)&&r!==d&&(r=d,t.trackEvent({eventType:"contact_page_visit",metadata:{page:{path:d}},pageUrl:window.location.href,occurredAt:null}))}let i=history.pushState.bind(history),o=history.replaceState.bind(history);function s(...d){i(...d),setTimeout(a,0)}function u(...d){o(...d),setTimeout(a,0)}return history.pushState=s,history.replaceState=u,window.addEventListener("popstate",a),a(),()=>{history.pushState=i,history.replaceState=o,window.removeEventListener("popstate",a)}}var ft="aranova-tracking-consent-banner";function Er(){return le(fe)}function Jt(){document.getElementById(ft)?.remove()}function Xt(t,e,n){let r=document.createElement("button");return r.type="button",r.textContent=t,Object.assign(r.style,{borderRadius:"6px",padding:"10px 16px",fontSize:"14px",fontWeight:"600",cursor:"pointer",border:"1px solid #d1d5db",background:"#ffffff",color:"#374151"},n),r.addEventListener("click",e),r}function Ar(){if(typeof document>"u"||D()!=="pending"||document.getElementById(ft))return;let t=document.createElement("div");t.id=ft,Object.assign(t.style,{position:"fixed",left:"0",right:"0",bottom:"0",zIndex:"2147483647",background:"#ffffff",borderTop:"1px solid #e5e7eb",boxShadow:"0 -4px 20px rgba(0, 0, 0, 0.12)",padding:"16px",fontFamily:"Inter, system-ui, sans-serif"});let e=document.createElement("div");Object.assign(e.style,{maxWidth:"960px",margin:"0 auto",display:"flex",flexDirection:"column",gap:"12px"});let n=document.createElement("p");n.textContent="We use cookies to understand ad performance and improve how our marketing works across visits. You can accept or decline this tracking.",Object.assign(n.style,{margin:"0",color:"#374151",fontSize:"14px",lineHeight:"1.5"});let r=document.createElement("div");Object.assign(r.style,{display:"flex",gap:"8px",flexWrap:"wrap"});let a=Xt("Decline",()=>{ue("denied"),Jt()},{}),i=Xt("Accept",()=>{ue("granted"),Jt()},{background:"#111827",color:"#ffffff",border:"1px solid #111827"});r.appendChild(a),r.appendChild(i),e.appendChild(n),e.appendChild(r),t.appendChild(e),document.body.appendChild(t)}var M=null,pt=null,oe=[];function Rr(){for(let t=oe.length-1;t>=0;t--)oe[t]();oe=[],M!==null&&(M.destroy(),M=null),pt=null}function Qt(t={}){if(typeof window>"u")return;window.AranovaTracking=mt;let{apiKey:e,endpoint:n,autoCaptureTrackingParams:r=!0,cookieMaxAgeSeconds:a=7776e3,gtagId:i,renderConsentBanner:o=!0,triggers:s}=t;if(r&&pe(window.location.href,a),i&&He(i),o&&Ar(),Rr(),!e||!n){(e||n)&&console.warn("[AranovaTracking] init() requires both `apiKey` and `endpoint` to enable first-party event ingest. Page-view events will not be sent.");return}let u=s??{automatic:{page_view:{}},manual:{}};pt=u,M=ot({apiKey:e,endpoint:n,surface:"script",packageName:"@aranova/tracking-browser"}),oe.push(st(M)),oe.push(it(M));let d=u.automatic.time_on_site;d&&oe.push(ut(M,d));let h=u.automatic.contact_page_visit;h&&oe.push(lt(M,h))}function Ir(t,e){if(M===null){console.warn("[AranovaTracking] trackEvent called before init({ apiKey, endpoint })");return}let n=pt;if(n===null){console.warn("[AranovaTracking] trackEvent called but no trigger registry was passed to init()");return}let r=n.manual??{};if(!(t in r)){console.warn(`[AranovaTracking] trackEvent: event "${t}" is not registered as a manual trigger. Register it under \`triggers.manual\` in init().`);return}try{dt(t).metadataSchema.parse(e)}catch(a){console.warn(`[AranovaTracking] trackEvent: metadata for "${t}" failed schema validation`,a);return}M.trackEvent({eventType:t,metadata:e,pageUrl:null,occurredAt:null})}var mt={init:Qt,captureTrackingParams:()=>pe(),getTrackingParams:Er,getConsentState:D,setConsentState:ue,trackEvent:Ir};typeof window<"u"&&(window.AranovaTracking=mt);var Or=mt;return on(Pr);})();
602
2
  //# sourceMappingURL=aranova-tracking.global.js.map