{"version":3,"sources":["../../src/bookings-v2-booking-bookings.schemas.ts"],"sourcesContent":["import * as z from 'zod';\n\nexport const ConfirmOrDeclineBookingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to confirm or decline.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      paymentStatus: z\n        .enum([\n          'UNDEFINED',\n          'NOT_PAID',\n          'PAID',\n          'PARTIALLY_PAID',\n          'REFUNDED',\n          'EXEMPT',\n        ])\n        .optional(),\n    })\n    .optional(),\n});\nexport const ConfirmOrDeclineBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Updated booking.')\n    .optional(),\n});\nexport const BulkConfirmOrDeclineBookingRequest = z.object({\n  details: z\n    .array(\n      z.object({\n        bookingId: z\n          .string()\n          .describe('ID of the booking to confirm or decline.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          ),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(300),\n  options: z\n    .object({\n      returnEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the confirmed or declined booking objects.'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkConfirmOrDeclineBookingResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe(\n            'Information about the booking that was created or updated.\\nIncluding its ID, index in the bulk request and whether it was\\nsuccessfully created or updated.'\n          )\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z.never().optional(),\n                    }),\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .describe(\n                                    'Information about how the customer has selected the resource for this resource type.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                )\n                .optional(),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .describe(\n                  \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                )\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .describe(\n                  \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                )\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .describe(\n                  \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                )\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Created or updated booking. Available only if you requested\\nto return the booking entity.'\n          )\n          .optional(),\n      })\n    )\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe(\n      'Total successes and failures of the Bulk Confirm Or Decline call.'\n    )\n    .optional(),\n});\nexport const CancelBookingAnonymouslyRequest = z.object({\n  token: z.string().describe('Anonymous token for the booking.').max(2048),\n  revision: z\n    .string()\n    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n    .describe(\n      'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be passed when canceling the booking.'\n    ),\n});\nexport const CancelBookingAnonymouslyResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Canceled booking.')\n    .optional(),\n});\nexport const RescheduleBookingAnonymouslyRequest = z.object({\n  token: z.string().describe('Anonymous token for the booking.').max(2048),\n  slot: z\n    .object({\n      sessionId: z\n        .string()\n        .describe(\n          'Identifier for the underlying session when the session is a single session or generated from a recurring session.'\n        )\n        .optional()\n        .nullable(),\n      serviceId: z\n        .string()\n        .describe('Service identifier. Required.')\n        .optional(),\n      scheduleId: z\n        .string()\n        .describe('Schedule identifier. Required.')\n        .optional(),\n      startDate: z\n        .string()\n        .describe(\n          'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n        )\n        .optional()\n        .nullable(),\n      endDate: z\n        .string()\n        .describe(\n          'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n        )\n        .optional()\n        .nullable(),\n      timezone: z\n        .string()\n        .describe(\n          'The timezone according to which the slot is calculated and presented.'\n        )\n        .optional()\n        .nullable(),\n      resource: z\n        .object({\n          _id: z\n            .string()\n            .describe('Resource ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Resource name.')\n            .max(1200)\n            .optional()\n            .nullable(),\n          transparency: z.enum(['OPAQUE', 'TRANSPARENT']).optional(),\n        })\n        .describe(\n          'The resource required for this slot.\\nWhen populated, the specified resource will be assigned to the slot upon confirmation according to its availability.\\nWhen empty, if `skip_availability_validation` is `false`, a random available resource will be assigned to the slot upon confirmation.\\nOtherwise, one of the service resources will be assigned to the slot randomly upon confirmation.'\n        )\n        .optional(),\n      location: z\n        .object({\n          _id: z\n            .string()\n            .describe(\n              'Business Location ID. Present if the location is a business location.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          name: z.string().describe('Location name.').optional().nullable(),\n          formattedAddress: z\n            .string()\n            .describe('A string containing the full address of this location.')\n            .optional()\n            .nullable(),\n          locationType: z\n            .enum(['UNDEFINED', 'OWNER_BUSINESS', 'OWNER_CUSTOM', 'CUSTOM'])\n            .optional(),\n        })\n        .describe('Geographic location of the slot.')\n        .optional(),\n      eventId: z\n        .string()\n        .describe(\n          'Calendar event ID - not supported.\\nIf not empty, on all write flows (create/update), it takes priority over `sessionId`.\\nSo if both `sessionId` and `eventId` are provided, the `sessionId` will be based on the `eventId`.\\nOtherwise, if `eventId` is empty on write flow,'\n        )\n        .min(36)\n        .max(250)\n        .optional()\n        .nullable(),\n      resourceSelections: z\n        .array(\n          z.object({\n            resourceTypeId: z\n              .string()\n              .describe(\n                'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            selectionMethod: z\n              .enum(['SPECIFIC_RESOURCE', 'ANY_RESOURCE', 'NO_SELECTION'])\n              .optional(),\n          })\n        )\n        .max(3)\n        .optional(),\n    })\n    .describe('New slot to reschedule the booking to.'),\n  options: z.object({\n    revision: z\n      .string()\n      .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n      .describe(\n        'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be passed when rescheduling the booking.'\n      ),\n  }),\n});\nexport const RescheduleBookingAnonymouslyResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Rescheduled booking.')\n    .optional(),\n});\nexport const GetBookingAnonymouslyRequest = z.object({\n  token: z.string().describe('Anonymous token for the booking.').max(2048),\n  options: z\n    .object({\n      fields: z\n        .array(z.enum(['BOOKING_FEES']))\n        .max(1)\n        .optional(),\n    })\n    .optional(),\n});\nexport const GetBookingAnonymouslyResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Retrieved booking.')\n    .optional(),\n  allowedAnonymousActions: z\n    .object({\n      cancel: z\n        .boolean()\n        .describe('Whether the booking can be canceled anonymously.')\n        .optional(),\n      reschedule: z\n        .boolean()\n        .describe('Whether the booking can be rescheduled anonymously.')\n        .optional(),\n    })\n    .describe('Allowed anonymous actions for this booking.')\n    .optional(),\n  bookingFee: z\n    .object({\n      _id: z\n        .string()\n        .describe('Booking fee ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookingId: z\n        .string()\n        .describe('ID of the booking associated with the fee.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      cancellationFee: z\n        .object({\n          price: z\n            .object({\n              value: z\n                .string()\n                .describe(\n                  'Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). Optionally, a single (-), to indicate that the amount is negative.'\n                )\n                .optional(),\n              currency: z\n                .string()\n                .describe(\n                  'Currency code. Must be valid ISO 4217 currency code (e.g., USD).'\n                )\n                .optional(),\n              formattedValue: z\n                .string()\n                .describe(\n                  'Monetary amount. Decimal string in local format (e.g., 1 000,30). Optionally, a single (-), to indicate that the amount is negative.'\n                )\n                .max(50)\n                .optional()\n                .nullable(),\n            })\n            .describe('Price the customer must pay.')\n            .optional(),\n          status: z\n            .enum([\n              'UNKNOWN_STATUS',\n              'PREVIEW',\n              'NOT_YET_APPLIED_TO_ORDER',\n              'APPLIED_TO_ORDER',\n            ])\n            .describe('Status of the booking fee.')\n            .optional(),\n          trigger: z\n            .enum(['UNKNOWN_TRIGGER', 'NOT_ATTENDED', 'BOOKING_CANCELED'])\n            .describe(\n              'Information about what triggered the creation of the booking fee.'\n            )\n            .optional(),\n        })\n        .describe('Cancellation fee details.')\n        .optional(),\n      policyDetails: z\n        .object({\n          _id: z\n            .string()\n            .describe('ID of the booking policy.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          description: z\n            .string()\n            .describe('Description of the booking policy.')\n            .max(2500)\n            .optional()\n            .nullable(),\n          descriptionTranslated: z\n            .string()\n            .describe(\n              'Translated description of the booking policy according to the buyer language of the eCommerce order.'\n            )\n            .max(2500)\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Information about the [booking policy snapshot](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policy-snapshots/introduction)\\naccording to which the fee was created.'\n        )\n        .optional(),\n    })\n    .describe(\n      'Booking fee details.\\n\\nReturned only when `BOOKING_FEES` is passed in `fields`.'\n    )\n    .optional(),\n});\nexport const GetServiceAnonymouslyRequest = z.object({\n  token: z.string().describe('Anonymous token for the booking.').max(2048),\n  options: z\n    .object({\n      fields: z\n        .array(\n          z.enum([\n            'STAFF_MEMBER_DETAILS',\n            'RESOURCE_TYPE_DETAILS',\n            'DISCOUNT_INFO_DETAILS',\n          ])\n        )\n        .max(5)\n        .optional(),\n    })\n    .optional(),\n});\nexport const GetServiceAnonymouslyResponse = z.object({\n  service: z\n    .object({\n      _id: z\n        .string()\n        .describe('Service ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      appId: z\n        .string()\n        .describe(\n          'ID of the app associated with the service. You can\\'t update `appId`.\\nServices are displayed in Wix Bookings only if they are associated with the Wix Bookings appId or have no associated app ID.\\nDefault: `13d21c63-b5ec-5912-8397-c3a5ddb27a97` (Wix Bookings app ID)\\nFor services from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n        )\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      createdByAppId: z\n        .string()\n        .describe(\n          \"ID of the app that created the service. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during service creation by checking these sources in order:\\n1. The caller's App ID from the request identity context.\\n2. The service's `appId` field.\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n        )\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      type: z\n        .enum(['APPOINTMENT', 'CLASS', 'COURSE'])\n        .describe(\n          'Service type.\\nLearn more about [service types](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-types).'\n        )\n        .optional(),\n      sortOrder: z\n        .number()\n        .int()\n        .describe(\n          'Order of the service within a [category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v1/category-object).'\n        )\n        .optional()\n        .nullable(),\n      name: z\n        .string()\n        .describe('Service name.')\n        .max(400)\n        .min(1)\n        .optional()\n        .nullable(),\n      description: z\n        .string()\n        .describe(\n          'Service description. For example, `High-class hair styling, cuts, straightening and color`.'\n        )\n        .max(7000)\n        .optional()\n        .nullable(),\n      tagLine: z\n        .string()\n        .describe('Short service description, such as `Hair styling`.')\n        .max(6000)\n        .optional()\n        .nullable(),\n      defaultCapacity: z\n        .number()\n        .int()\n        .describe(\n          'Default maximum number of customers that can book the service. The service cannot be booked beyond this capacity.'\n        )\n        .min(1)\n        .max(1000)\n        .optional()\n        .nullable(),\n      media: z\n        .object({\n          items: z\n            .array(\n              z.intersection(\n                z.object({}),\n                z.xor([\n                  z.object({ image: z.never().optional() }),\n                  z.object({\n                    image: z\n                      .string()\n                      .describe(\n                        'Details of the image associated with the service, such as URL and size.'\n                      ),\n                  }),\n                ])\n              )\n            )\n            .max(100)\n            .optional(),\n          mainMedia: z\n            .intersection(\n              z.object({}),\n              z.xor([\n                z.object({ image: z.never().optional() }),\n                z.object({\n                  image: z\n                    .string()\n                    .describe(\n                      'Details of the image associated with the service, such as URL and size.'\n                    ),\n                }),\n              ])\n            )\n            .describe('Primary media associated with the service.')\n            .optional(),\n          coverMedia: z\n            .intersection(\n              z.object({}),\n              z.xor([\n                z.object({ image: z.never().optional() }),\n                z.object({\n                  image: z\n                    .string()\n                    .describe(\n                      'Details of the image associated with the service, such as URL and size.'\n                    ),\n                }),\n              ])\n            )\n            .describe('Cover media associated with the service.')\n            .optional(),\n        })\n        .describe('Media associated with the service.')\n        .optional(),\n      hidden: z\n        .boolean()\n        .describe(\n          'Whether the service is hidden from Wix Bookings pages and widgets.'\n        )\n        .optional()\n        .nullable(),\n      category: z\n        .object({\n          _id: z\n            .string()\n            .describe('Category ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional(),\n          name: z\n            .string()\n            .describe('Category name.')\n            .max(500)\n            .optional()\n            .nullable(),\n          sortOrder: z\n            .number()\n            .int()\n            .describe('Order of a category within a category list.')\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          \"[Category](https://dev.wix.com/docs/rest/business-solutions/bookings/services/categories-v2/introduction)\\nthe service is associated with. Services aren't automatically assigned to a category.\\nWithout an associated category, the service isn't visible on the live site.\"\n        )\n        .optional(),\n      form: z\n        .object({\n          _id: z\n            .string()\n            .describe(\n              'ID of the form associated with the service.\\nThe form information that you submit when booking includes contact details, participants, and other form fields set up for the service.\\nYou can manage the service booking form fields using the Bookings Forms API.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional(),\n        })\n        .describe('Form the customer filled out when booking the service.')\n        .optional(),\n      payment: z\n        .intersection(\n          z.object({\n            rateType: z\n              .enum(['FIXED', 'CUSTOM', 'VARIED', 'NO_FEE'])\n              .describe(\n                'The rate the customer is expected to pay for the service.'\n              )\n              .optional(),\n            options: z\n              .object({\n                online: z\n                  .boolean()\n                  .describe(\n                    'Customers can pay for the service online.\\nWhen `true`:\\n+ `rateType` must be `FIXED` or `VARIED`.\\n+ `fixed.price` or `varied.defaultPrice` must be specified respectively.\\nRead more about [getting paid online](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online).'\n                  )\n                  .optional()\n                  .nullable(),\n                inPerson: z\n                  .boolean()\n                  .describe('Customers can pay for the service in person.')\n                  .optional()\n                  .nullable(),\n                deposit: z\n                  .boolean()\n                  .describe(\n                    'This service requires a deposit to be made online in order to book it.\\nWhen `true`:\\n+ `rateType` must be `VARIED` or `FIXED`.\\n+ A `deposit` must be specified.'\n                  )\n                  .optional()\n                  .nullable(),\n                pricingPlan: z\n                  .boolean()\n                  .describe(\n                    'Whether customers can pay for the service using a pricing plan.\\nRead more about [service payment options](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/about-service-payments).'\n                  )\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'The payment options a customer can use to pay for the service.'\n              )\n              .optional(),\n            pricingPlanIds: z.array(z.string()).max(75).optional(),\n            addOnOption: z\n              .enum(['ONLINE', 'IN_PERSON'])\n              .describe(\n                'How customers can pay for add-ons when paying for the related booking with a [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction).\\nIf customers pay for the booking using any method other than a pricing plan, the value of this field is ignored.'\n              )\n              .optional(),\n          }),\n          z.xor([\n            z.object({\n              fixed: z.never().optional(),\n              custom: z.never().optional(),\n              varied: z.never().optional(),\n            }),\n            z.object({\n              custom: z.never().optional(),\n              varied: z.never().optional(),\n              fixed: z\n                .object({\n                  price: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The fixed price required to book the service.\\n\\nRequired when: `rateType` is `FIXED`'\n                    )\n                    .optional(),\n                  deposit: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The deposit price required to book the service.\\n\\nRequired when: `rateType` is `FIXED` and `paymentOptions.deposit` is `true`'\n                    )\n                    .optional(),\n                  fullUpfrontPaymentAllowed: z\n                    .boolean()\n                    .describe(\n                      'Whether customers can choose to pay the full service price upfront instead of only the deposit.\\n\\nUsed only when a `deposit` amount is set.\\n\\nDefault: `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'The details for the fixed price of the service.\\n\\nRequired when: `rateType` is `FIXED`'\n                ),\n            }),\n            z.object({\n              fixed: z.never().optional(),\n              varied: z.never().optional(),\n              custom: z\n                .object({\n                  description: z\n                    .string()\n                    .describe(\n                      'A custom description explaining to the customer how to pay for the service.'\n                    )\n                    .max(50)\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'The details for the custom price of the service.\\n\\nRequired when: `rateType` is `CUSTOM`'\n                ),\n            }),\n            z.object({\n              fixed: z.never().optional(),\n              custom: z.never().optional(),\n              varied: z\n                .object({\n                  defaultPrice: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The default price for the service without any variants. It will also be used as the default price for any new variant.'\n                    )\n                    .optional(),\n                  deposit: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The deposit price required to book the service.\\n\\nRequired when: `rateType` is `VARIED` and `paymentOptions.deposit` is `true`'\n                    )\n                    .optional(),\n                  minPrice: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The minimal price a customer may pay for this service, based on its variants.'\n                    )\n                    .optional(),\n                  maxPrice: z\n                    .object({\n                      value: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                        )\n                        .optional(),\n                      currency: z\n                        .string()\n                        .describe(\n                          'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                        )\n                        .optional(),\n                      formattedValue: z\n                        .string()\n                        .describe(\n                          'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                        )\n                        .max(50)\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'The maximum price a customer may pay for this service, based on its variants.'\n                    )\n                    .optional(),\n                  fullUpfrontPaymentAllowed: z\n                    .boolean()\n                    .describe(\n                      'Whether customers can choose to pay the full service price upfront instead of only the deposit.\\n\\nUsed only when a `deposit` amount is set.\\n\\nDefault: `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'The details for the varied pricing of the service.\\nRead more about [varied price options](https://support.wix.com/en/article/wix-bookings-about-getting-paid-online#offering-varied-price-options).\\n\\nRequired when: `rateType` is `VARIED`'\n                ),\n            }),\n          ])\n        )\n        .describe(\n          'Payment options for booking the service.\\nLearn more about [service payments](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-payments).'\n        )\n        .optional(),\n      onlineBooking: z\n        .object({\n          enabled: z\n            .boolean()\n            .describe(\n              'Whether the service can be booked online.\\nWhen set to `true`, customers can book the service online. Configure the payment options via the `service.payment` property.\\nWhen set to `false`, customers cannot book the service online, and the service can only be paid for in person.'\n            )\n            .optional()\n            .nullable(),\n          requireManualApproval: z\n            .boolean()\n            .describe('Booking the service requires approval by the Wix user.')\n            .optional()\n            .nullable(),\n          allowMultipleRequests: z\n            .boolean()\n            .describe(\n              'Multiple customers can request to book the same time slot. This is relevant when `requireManualApproval` is `true`.'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe('Online booking settings.')\n        .optional(),\n      conferencing: z\n        .object({\n          enabled: z\n            .boolean()\n            .describe(\n              \"Whether a conference link is generated for the service's sessions.\"\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe('Conferencing options for the service.')\n        .optional(),\n      locations: z\n        .array(\n          z.intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Location ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              type: z\n                .enum(['CUSTOM', 'BUSINESS', 'CUSTOMER'])\n                .describe('Location type.\\n\\nDefault: `CUSTOM`')\n                .optional(),\n              calculatedAddress: z\n                .object({\n                  city: z.string().optional().nullable(),\n                  subdivision: z.string().optional().nullable(),\n                  country: z.string().optional().nullable(),\n                  postalCode: z.string().optional().nullable(),\n                  addressLine1: z.string().optional().nullable(),\n                })\n                .describe('Location address. Empty for `{\"type\": \"CUSTOMER\"}`.')\n                .optional(),\n            }),\n            z.xor([\n              z.object({\n                business: z.never().optional(),\n                custom: z.never().optional(),\n              }),\n              z.object({\n                custom: z.never().optional(),\n                business: z\n                  .object({\n                    _id: z\n                      .string()\n                      .describe(\n                        'ID of the business [location](https://dev.wix.com/docs/api-reference/business-management/locations/introduction).\\nWhen setting a business location, specify only the location ID. Other location details are overwritten.'\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    name: z\n                      .string()\n                      .describe('Business location name.')\n                      .max(150)\n                      .optional(),\n                    default: z\n                      .boolean()\n                      .describe(\n                        'Whether this is the default location. There can only be a single default location per site.'\n                      )\n                      .optional()\n                      .nullable(),\n                    address: z\n                      .object({\n                        city: z.string().optional().nullable(),\n                        subdivision: z.string().optional().nullable(),\n                        country: z.string().optional().nullable(),\n                        postalCode: z.string().optional().nullable(),\n                        addressLine1: z.string().optional().nullable(),\n                      })\n                      .describe('Business location address.')\n                      .optional(),\n                    email: z\n                      .string()\n                      .describe('Business location email.')\n                      .email()\n                      .optional()\n                      .nullable(),\n                    phone: z\n                      .string()\n                      .describe('Business location phone.')\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe('Information about business locations.'),\n              }),\n              z.object({\n                business: z.never().optional(),\n                custom: z\n                  .object({\n                    _id: z\n                      .string()\n                      .describe('ID of the custom location.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    address: z\n                      .object({\n                        city: z.string().optional().nullable(),\n                        subdivision: z.string().optional().nullable(),\n                        country: z.string().optional().nullable(),\n                        postalCode: z.string().optional().nullable(),\n                        addressLine1: z.string().optional().nullable(),\n                      })\n                      .describe('Address of the custom location.')\n                      .optional(),\n                  })\n                  .describe('Information about custom locations.'),\n              }),\n            ])\n          )\n        )\n        .max(500)\n        .optional(),\n      bookingPolicy: z\n        .object({\n          _id: z\n            .string()\n            .describe('The ID to the policy for the booking.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional(),\n          _createdDate: z\n            .date()\n            .describe('Date and time the policy was created.')\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe('Date and time the policy was updated.')\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Name of the policy.')\n            .max(400)\n            .optional()\n            .nullable(),\n          customPolicyDescription: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether the description should be displayed. If `true`, the description is displayed.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              description: z\n                .string()\n                .describe(\n                  'The description to display.\\n\\nDefault: Empty\\nMax length: 2500 characters'\n                )\n                .max(2500)\n                .optional(),\n            })\n            .describe(\n              'Custom description for the policy. This policy is displayed to the participant.'\n            )\n            .optional(),\n          default: z\n            .boolean()\n            .describe('Whether the policy is the default for the meta site.')\n            .optional()\n            .nullable(),\n          limitEarlyBookingPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether there is a limit on how early a customer\\ncan book. When `false`, there is no limit on the earliest\\nbooking time and customers can book in advance, as early as they like.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              earliestBookingInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'Maximum number of minutes before the start of the session that a booking can be made. This value must be greater\\nthan `latest_booking_in_minutes` in the `LimitLateBookingPolicy` policy.\\n\\nDefault: 10080 minutes (7 days)\\nMin: 1 minute'\n                )\n                .min(1)\n                .optional(),\n            })\n            .describe('Policy for limiting early bookings.')\n            .optional(),\n          limitLateBookingPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether there is a limit on how late a customer\\ncan book. When `false`, there is no limit on the latest\\nbooking time and customers can book up to the last minute.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              latestBookingInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'Minimum number of minutes before the start of the session that a booking can be made.\\nFor a schedule, this is relative to the start time of the next booked session, excluding past-booked sessions.\\nThis value must be less than `earliest_booking_in_minutes` in the `LimitEarlyBookingPolicy` policy.\\n\\nDefault: 1440 minutes (1 day)\\nMin: 1 minute'\n                )\n                .min(1)\n                .optional(),\n            })\n            .describe('Policy for limiting late bookings.')\n            .optional(),\n          bookAfterStartPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether booking is allowed after the start of the schedule. When `true`,\\ncustomers can book after the start of the schedule.\\n\\nDefault: `false`'\n                )\n                .optional(),\n            })\n            .describe(\n              'Policy on booking an entity after the start of the schedule.'\n            )\n            .optional(),\n          cancellationPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether canceling a booking is allowed. When `true`, customers\\ncan cancel the booking.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              limitLatestCancellation: z\n                .boolean()\n                .describe(\n                  'Whether there is a limit on the latest cancellation time. When `true`,\\na time limit is enforced.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              latestCancellationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'Minimum number of minutes before the start of the booked session that the booking can be canceled.\\n\\nDefault: 1440 minutes (1 day)\\nMin: 1 minute'\n                )\n                .min(1)\n                .optional(),\n              allowAnonymous: z\n                .boolean()\n                .describe(\n                  \"Whether this cancellation policy allows anonymous cancellations.\\n\\n**Important**: This flag only applies when `enabled` is `true`. If the cancellation\\npolicy itself is disabled (`enabled` = `false`), anonymous users cannot cancel\\nregardless of this flag's value.\\n\\nWhen not set (null), defaults to disabled.\\n\\nDefault: `null` (treated as disabled)\"\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe('Policy for canceling a booked entity.')\n            .optional(),\n          reschedulePolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether rescheduling a booking is allowed. When `true`, customers\\ncan reschedule the booking.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              limitLatestReschedule: z\n                .boolean()\n                .describe(\n                  'Whether there is a limit on the latest reschedule time. When `true`,\\na time limit is enforced.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              latestRescheduleInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'Minimum number of minutes before the start of the booked session that the booking can be rescheduled.\\n\\nDefault: 1440 minutes (1 day)\\nMin: 1 minute'\n                )\n                .min(1)\n                .optional(),\n              allowAnonymous: z\n                .boolean()\n                .describe(\n                  \"Whether this reschedule policy allows anonymous rescheduling.\\n\\n**Important**: This flag only applies when `enabled` is `true`. If the reschedule\\npolicy itself is disabled (`enabled` = `false`), anonymous users cannot reschedule\\nregardless of this flag's value.\\n\\nWhen not set (null), defaults to disabled.\\n\\nDefault: `null` (treated as disabled)\"\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe('Policy for rescheduling a booked entity.')\n            .optional(),\n          waitlistPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether the session has a waitlist. If `true`, there is a waitlist.\\n\\nDefault: `false`'\n                )\n                .optional(),\n              capacity: z\n                .number()\n                .int()\n                .describe(\n                  'Number of spots available in the waitlist.\\n\\nDefault: 10 spots\\nMin: 1 spot'\n                )\n                .min(1)\n                .optional(),\n              reservationTimeInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'Amount of time a participant is given to book, once notified that a spot is available.\\n\\nDefault: 10 minutes\\nMin: 1 spot'\n                )\n                .min(1)\n                .optional(),\n            })\n            .describe('Waitlist policy for the service.')\n            .optional(),\n          participantsPolicy: z\n            .object({\n              maxParticipantsPerBooking: z\n                .number()\n                .int()\n                .describe(\n                  'Maximum number of participants allowed.\\n\\nDefault: 1 participant\\nMin: 1 participant'\n                )\n                .min(1)\n                .optional(),\n            })\n            .describe('Policy regarding the participants per booking.')\n            .optional(),\n          resourcesPolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  '`true` if this policy is enabled, `false` otherwise.\\nWhen `false` then the client must always select a resource when booking an appointment.'\n                )\n                .optional(),\n              autoAssignAllowed: z\n                .boolean()\n                .describe(\n                  '`true`, if it is allowed to automatically assign a resource when booking an appointment,\\n`false`, if the client must always select a resource.\\n\\nDefault: `false`'\n                )\n                .optional(),\n            })\n            .describe('Policy for allocating resources.')\n            .optional(),\n          cancellationFeePolicy: z\n            .object({\n              enabled: z\n                .boolean()\n                .describe(\n                  'Whether canceling a booking will result in a cancellation fee\\n\\nDefault: `false`'\n                )\n                .optional(),\n              cancellationWindows: z\n                .array(\n                  z.intersection(\n                    z.object({\n                      startInMinutes: z\n                        .number()\n                        .int()\n                        .describe(\n                          'The fee will be applied if the booked session starts within this start time in minutes.'\n                        )\n                        .min(1)\n                        .optional()\n                        .nullable(),\n                    }),\n                    z.xor([\n                      z.object({\n                        amount: z.never().optional(),\n                        percentage: z.never().optional(),\n                      }),\n                      z.object({\n                        percentage: z.never().optional(),\n                        amount: z\n                          .object({\n                            value: z\n                              .string()\n                              .describe(\n                                'Monetary amount. Decimal string with a period as a decimal separator. For example `25.05`.'\n                              )\n                              .optional(),\n                            currency: z\n                              .string()\n                              .describe(\n                                'Currency code in [ISO 4217 format](https://en.wikipedia.org/wiki/ISO_4217). For example, `USD`.'\n                              )\n                              .optional(),\n                            formattedValue: z\n                              .string()\n                              .describe(\n                                'Monetary amount. Decimal string in local format. For example, `1 000,30`.'\n                              )\n                              .max(50)\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe(\n                            'Amount to be charged as a cancellation fee.'\n                          ),\n                      }),\n                      z.object({\n                        amount: z.never().optional(),\n                        percentage: z\n                          .string()\n                          .describe(\n                            'Percentage of the original price to be charged as a cancellation fee.'\n                          ),\n                      }),\n                    ])\n                  )\n                )\n                .max(2)\n                .optional(),\n              autoCollectFeeEnabled: z\n                .boolean()\n                .describe(\n                  'Whether the cancellation fee should not be automatically collected when customer cancels the booking.\\n\\nDefault: `true`'\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe('Rules for cancellation fees.')\n            .optional(),\n          saveCreditCardPolicy: z\n            .object({\n              enabled: z.boolean().describe('Default: `false`').optional(),\n            })\n            .describe('Rule for saving credit card.')\n            .optional(),\n        })\n        .describe(\n          '[Policy](https://dev.wix.com/docs/rest/business-solutions/bookings/policies/booking-policies/introduction)\\ndetermining under what conditions this service can be booked. For example, whether the service can only be booked up to 30 minutes before it begins.'\n        )\n        .optional(),\n      schedule: z\n        .object({\n          _id: z\n            .string()\n            .describe(\n              \"ID of the [schedule](https://dev.wix.com/docs/api-reference/business-management/calendar/schedules-v3/introduction)\\nto which the service's events belong.\"\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          firstSessionStart: z\n            .date()\n            .describe(\n              'Start time of the first session in the schedule. For courses only.'\n            )\n            .optional()\n            .nullable(),\n          lastSessionEnd: z\n            .date()\n            .describe(\n              'End time of the last session in the schedule. For courses only.'\n            )\n            .optional()\n            .nullable(),\n          availabilityConstraints: z\n            .object({\n              durations: z\n                .array(\n                  z.object({\n                    minutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The duration of the service in minutes.\\n\\nMin: `1` minute\\nMax: `44639` minutes (30 days, 23 hours, and 59 minutes)'\n                      )\n                      .min(1)\n                      .max(44639)\n                      .optional(),\n                  })\n                )\n                .max(50)\n                .optional(),\n              sessionDurations: z.array(z.number().int()).max(50).optional(),\n              timeBetweenSessions: z\n                .number()\n                .int()\n                .describe(\n                  'The number of minutes between the end of a session and the start of the next.\\n\\n\\nMin: `0` minutes\\nMax: `720` minutes'\n                )\n                .min(0)\n                .max(720)\n                .optional(),\n            })\n            .describe('Limitations affecting the service availability.')\n            .optional(),\n        })\n        .describe(\n          \"The service's [schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction),\\nwhich can be used to manage the service's [events](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\"\n        )\n        .optional(),\n      staffMemberIds: z.array(z.string()).max(220).optional(),\n      serviceResources: z\n        .array(\n          z.object({\n            resourceType: z\n              .object({\n                _id: z\n                  .string()\n                  .describe('The type of the resource.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('The name of the resource type.')\n                  .max(40)\n                  .min(1)\n                  .optional()\n                  .nullable(),\n              })\n              .describe(\n                'Details about the required [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n              )\n              .optional(),\n          })\n        )\n        .max(3)\n        .optional(),\n      supportedSlugs: z\n        .array(\n          z.object({\n            name: z\n              .string()\n              .describe(\n                \"The unique part of service's URL that identifies the service's information page. For example, `service-1` in `https:/example.com/services/service-1`.\"\n              )\n              .max(500)\n              .optional(),\n            custom: z\n              .boolean()\n              .describe(\n                'Whether the slug was generated or customized. If `true`, the slug was customized manually by the business owner. Otherwise, the slug was automatically generated from the service name.'\n              )\n              .optional()\n              .nullable(),\n            _createdDate: z\n              .date()\n              .describe(\n                'Date and time the slug was created. This is a system field.'\n              )\n              .optional()\n              .nullable(),\n          })\n        )\n        .max(100)\n        .optional(),\n      mainSlug: z\n        .object({\n          name: z\n            .string()\n            .describe(\n              \"The unique part of service's URL that identifies the service's information page. For example, `service-1` in `https:/example.com/services/service-1`.\"\n            )\n            .max(500)\n            .optional(),\n          custom: z\n            .boolean()\n            .describe(\n              'Whether the slug was generated or customized. If `true`, the slug was customized manually by the business owner. Otherwise, the slug was automatically generated from the service name.'\n            )\n            .optional()\n            .nullable(),\n          _createdDate: z\n            .date()\n            .describe(\n              'Date and time the slug was created. This is a system field.'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Active slug for the service.\\nLearn more about [service slugs](https://dev.wix.com/docs/rest/business-solutions/bookings/services/services-v2/about-service-slugs).'\n        )\n        .optional(),\n      urls: z\n        .object({\n          servicePage: z\n            .string()\n            .describe('The URL for the service page.')\n            .optional(),\n          bookingPage: z\n            .string()\n            .describe(\n              'The URL for the booking entry point. It can be either to the calendar or to the service page.'\n            )\n            .optional(),\n          calendarPage: z\n            .string()\n            .describe(\n              'The URL for the calendar. Can be empty if no calendar exists.'\n            )\n            .optional(),\n        })\n        .describe(\n          'URLs to various service-related pages, such as the calendar page and the booking page.'\n        )\n        .optional(),\n      extendedFields: z\n        .object({\n          namespaces: z\n            .record(z.string(), z.record(z.string(), z.any()))\n            .describe(\n              'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n            )\n            .optional(),\n        })\n        .describe(\n          'Extensions enabling users to save custom data related to the service.'\n        )\n        .optional(),\n      seoData: z\n        .object({\n          tags: z\n            .array(\n              z.object({\n                type: z\n                  .string()\n                  .describe(\n                    'SEO tag type.\\n\\n\\nSupported values: `title`, `meta`, `script`, `link`.'\n                  )\n                  .optional(),\n                props: z\n                  .record(z.string(), z.any())\n                  .describe(\n                    'A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\\nFor example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.'\n                  )\n                  .optional()\n                  .nullable(),\n                meta: z\n                  .record(z.string(), z.any())\n                  .describe(\n                    'SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`.'\n                  )\n                  .optional()\n                  .nullable(),\n                children: z\n                  .string()\n                  .describe(\n                    'SEO tag inner content. For example, `<title> inner content </title>`.'\n                  )\n                  .optional(),\n                custom: z\n                  .boolean()\n                  .describe(\n                    'Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages).'\n                  )\n                  .optional(),\n                disabled: z\n                  .boolean()\n                  .describe(\n                    \"Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines.\"\n                  )\n                  .optional(),\n              })\n            )\n            .optional(),\n          settings: z\n            .object({\n              preventAutoRedirect: z\n                .boolean()\n                .describe(\n                  'Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\\n\\n\\nDefault: `false` (automatical redirect is enabled).'\n                )\n                .optional(),\n              keywords: z\n                .array(\n                  z.object({\n                    term: z.string().describe('Keyword value.').optional(),\n                    isMain: z\n                      .boolean()\n                      .describe(\n                        'Whether the keyword is the main focus keyword.'\n                      )\n                      .optional(),\n                    origin: z\n                      .string()\n                      .describe(\n                        'The source that added the keyword terms to the SEO settings.'\n                      )\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(5)\n                .optional(),\n            })\n            .describe('SEO general settings.')\n            .optional(),\n        })\n        .describe('Custom SEO data for the service.')\n        .optional(),\n      _createdDate: z\n        .date()\n        .describe(\n          'Date and time the service was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n        )\n        .optional()\n        .nullable(),\n      _updatedDate: z\n        .date()\n        .describe(\n          'Date and time the service was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n        )\n        .optional()\n        .nullable(),\n      revision: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .describe(\n          'Revision number, which increments by 1 each time the service is updated. To\\nprevent conflicting changes, the existing revision must be used when updating\\na service.'\n        )\n        .optional()\n        .nullable(),\n      addOnGroups: z\n        .array(\n          z.object({\n            _id: z\n              .string()\n              .describe(\n                'ID of the add-on group.\\nWix Bookings automatically populates this field when creating or updating an add-on group.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            name: z\n              .string()\n              .describe('Name of the add-on group.')\n              .max(100)\n              .optional()\n              .nullable(),\n            maxNumberOfAddOns: z\n              .number()\n              .int()\n              .describe(\n                \"Maximum number of different [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) from the group customers can add when booking the service.\\nWhen empty, there's no upper limit.\"\n              )\n              .optional()\n              .nullable(),\n            addOnIds: z.array(z.string()).max(7).optional(),\n            prompt: z\n              .string()\n              .describe(\n                \"Description or instructional prompt of the add-on group that's displayed to customers when booking the service.\"\n              )\n              .max(200)\n              .optional()\n              .nullable(),\n          })\n        )\n        .max(3)\n        .optional(),\n      addOnDetails: z\n        .array(\n          z.object({\n            addOnId: z\n              .string()\n              .describe('ID of the add-on.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            durationInMinutes: z\n              .number()\n              .int()\n              .describe(\n                'Duration in minutes for add-ons that extend service time.\\nEmpty for [quantity-based add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction#terminology).'\n              )\n              .optional()\n              .nullable(),\n          })\n        )\n        .max(50)\n        .optional(),\n      taxableAddress: z\n        .object({\n          taxableAddressType: z\n            .enum(['BUSINESS', 'BILLING'])\n            .describe('Taxable address type.')\n            .optional(),\n        })\n        .describe('Taxable address used to calculate tax')\n        .optional(),\n    })\n    .describe('Retrieved service.')\n    .optional(),\n});\nexport const GetAnonymousActionTokenRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('Booking ID.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n});\nexport const GetAnonymousActionTokenResponse = z.object({\n  token: z\n    .string()\n    .describe(\n      'Encrypted, URL-safe token for anonymous access to the booking.\\nPass this token to the other methods in this API to retrieve, cancel, or reschedule the booking without authentication.'\n    )\n    .min(32)\n    .max(2048)\n    .optional()\n    .nullable(),\n});\nexport const CreateMultiServiceBookingRequest = z.object({\n  bookings: z\n    .array(\n      z.intersection(\n        z.object({\n          _id: z\n            .string()\n            .describe('Booking ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          bookedEntity: z\n            .intersection(\n              z.object({\n                title: z\n                  .string()\n                  .describe(\n                    'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                  )\n                  .max(6000)\n                  .optional()\n                  .nullable(),\n                tags: z.array(z.string()).optional(),\n              }),\n              z.xor([\n                z.object({\n                  schedule: z.never().optional(),\n                  slot: z\n                    .object({\n                      sessionId: z\n                        .string()\n                        .describe(\n                          'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                        )\n                        .optional()\n                        .nullable(),\n                      serviceId: z.string().describe('Service ID.').optional(),\n                      scheduleId: z\n                        .string()\n                        .describe('Schedule ID.')\n                        .optional(),\n                      eventId: z\n                        .string()\n                        .describe(\n                          'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                        )\n                        .min(36)\n                        .max(250)\n                        .optional()\n                        .nullable(),\n                      startDate: z\n                        .string()\n                        .describe(\n                          'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                        )\n                        .optional()\n                        .nullable(),\n                      endDate: z\n                        .string()\n                        .describe(\n                          'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                        )\n                        .optional()\n                        .nullable(),\n                      timezone: z\n                        .string()\n                        .describe(\n                          'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                        )\n                        .optional()\n                        .nullable(),\n                      resource: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe(\"ID of the booking's primary resource.\")\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe(\"Resource's name at the time of booking.\")\n                            .max(40)\n                            .optional()\n                            .nullable(),\n                          email: z\n                            .string()\n                            .describe(\n                              \"Resource's email at the time of booking.\"\n                            )\n                            .max(500)\n                            .optional()\n                            .nullable(),\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              \"ID of the schedule belonging to the booking's primary resource.\"\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                        )\n                        .optional(),\n                      location: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Location name.')\n                            .optional()\n                            .nullable(),\n                          formattedAddress: z\n                            .string()\n                            .describe('The full address of this location.')\n                            .optional()\n                            .nullable(),\n                          formattedAddressTranslated: z\n                            .string()\n                            .describe(\n                              'The full translated address of this location.'\n                            )\n                            .max(512)\n                            .optional()\n                            .nullable(),\n                          locationType: z\n                            .enum([\n                              'UNDEFINED',\n                              'OWNER_BUSINESS',\n                              'OWNER_CUSTOM',\n                              'CUSTOM',\n                            ])\n                            .optional(),\n                        })\n                        .describe('Location where the session takes place.')\n                        .optional(),\n                      resourceSelections: z\n                        .array(\n                          z.object({\n                            resourceTypeId: z\n                              .string()\n                              .describe(\n                                'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional()\n                              .nullable(),\n                            selectionMethod: z\n                              .enum([\n                                'SPECIFIC_RESOURCE',\n                                'ANY_RESOURCE',\n                                'NO_SELECTION',\n                              ])\n                              .optional(),\n                          })\n                        )\n                        .max(3)\n                        .optional(),\n                    })\n                    .describe(\n                      '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                    ),\n                }),\n                z.object({\n                  slot: z.never().optional(),\n                  schedule: z\n                    .object({\n                      scheduleId: z\n                        .string()\n                        .describe(\n                          '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                        )\n                        .optional(),\n                      serviceId: z\n                        .string()\n                        .describe('Booked service ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      location: z\n                        .object({\n                          _id: z\n                            .string()\n                            .describe(\n                              'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          name: z\n                            .string()\n                            .describe('Location name.')\n                            .optional()\n                            .nullable(),\n                          formattedAddress: z\n                            .string()\n                            .describe('The full address of this location.')\n                            .optional()\n                            .nullable(),\n                          formattedAddressTranslated: z\n                            .string()\n                            .describe(\n                              'The full translated address of this location.'\n                            )\n                            .max(512)\n                            .optional()\n                            .nullable(),\n                          locationType: z\n                            .enum([\n                              'UNDEFINED',\n                              'OWNER_BUSINESS',\n                              'OWNER_CUSTOM',\n                              'CUSTOM',\n                            ])\n                            .optional(),\n                        })\n                        .describe(\n                          \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                        )\n                        .optional(),\n                      timezone: z\n                        .string()\n                        .describe(\n                          'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstSessionStart: z\n                        .string()\n                        .describe(\n                          'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                        )\n                        .optional()\n                        .nullable(),\n                      lastSessionEnd: z\n                        .string()\n                        .describe(\n                          'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                    ),\n                }),\n              ])\n            )\n            .describe(\n              'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n            ),\n          contactDetails: z\n            .object({\n              contactId: z\n                .string()\n                .describe('Contact ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              firstName: z\n                .string()\n                .describe(\n                  \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                )\n                .optional()\n                .nullable(),\n              lastName: z\n                .string()\n                .describe(\"Contact's last name.\")\n                .optional()\n                .nullable(),\n              email: z\n                .string()\n                .describe(\n                  \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                )\n                .email()\n                .optional()\n                .nullable(),\n              phone: z\n                .string()\n                .describe(\"Contact's phone number.\")\n                .optional()\n                .nullable(),\n              fullAddress: z\n                .intersection(\n                  z.object({\n                    country: z\n                      .string()\n                      .describe('Country code.')\n                      .optional()\n                      .nullable(),\n                    subdivision: z\n                      .string()\n                      .describe(\n                        'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                      )\n                      .optional()\n                      .nullable(),\n                    city: z\n                      .string()\n                      .describe('City name.')\n                      .optional()\n                      .nullable(),\n                    postalCode: z\n                      .string()\n                      .describe('Zip/postal code.')\n                      .optional()\n                      .nullable(),\n                    addressLine2: z\n                      .string()\n                      .describe(\n                        'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                      )\n                      .optional()\n                      .nullable(),\n                    formattedAddress: z\n                      .string()\n                      .describe(\n                        'A string containing the full address of this location.'\n                      )\n                      .optional()\n                      .nullable(),\n                    hint: z\n                      .string()\n                      .describe('Free text to help find the address.')\n                      .optional()\n                      .nullable(),\n                    geocode: z\n                      .object({\n                        latitude: z\n                          .number()\n                          .describe('Address latitude.')\n                          .optional()\n                          .nullable(),\n                        longitude: z\n                          .number()\n                          .describe('Address longitude.')\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe('Coordinates of the physical address.')\n                      .optional(),\n                    countryFullname: z\n                      .string()\n                      .describe('Country full name.')\n                      .optional()\n                      .nullable(),\n                    subdivisions: z\n                      .array(\n                        z.object({\n                          code: z\n                            .string()\n                            .describe(\n                              'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                            )\n                            .optional(),\n                          name: z\n                            .string()\n                            .describe('Subdivision full name.')\n                            .optional(),\n                        })\n                      )\n                      .optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      streetAddress: z.never().optional(),\n                      addressLine: z.never().optional(),\n                    }),\n                    z.object({\n                      addressLine: z.never().optional(),\n                      streetAddress: z\n                        .object({\n                          number: z\n                            .string()\n                            .describe('Street number.')\n                            .optional(),\n                          name: z.string().describe('Street name.').optional(),\n                          apt: z\n                            .string()\n                            .describe('Apartment number.')\n                            .optional(),\n                        })\n                        .describe('Street name, number and apartment number.'),\n                    }),\n                    z.object({\n                      streetAddress: z.never().optional(),\n                      addressLine: z\n                        .string()\n                        .describe(\n                          'Main address line, usually street and number, as free text.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\"Contact's full address.\")\n                .optional(),\n              timeZone: z\n                .string()\n                .describe(\"Contact's time zone.\")\n                .optional()\n                .nullable(),\n              countryCode: z\n                .string()\n                .describe(\n                  \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                )\n                .optional()\n                .nullable(),\n            })\n            .describe(\n              'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n            )\n            .optional(),\n          additionalFields: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('ID of the form field as defined in the form.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n                value: z\n                  .string()\n                  .describe('Value that was submitted for this field.')\n                  .optional()\n                  .nullable(),\n                label: z\n                  .string()\n                  .describe(\"Form field's label at the time of submission.\")\n                  .optional()\n                  .nullable(),\n                valueType: z\n                  .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                  .optional(),\n              })\n            )\n            .optional(),\n          status: z\n            .enum([\n              'CREATED',\n              'CONFIRMED',\n              'CANCELED',\n              'PENDING',\n              'DECLINED',\n              'WAITING_LIST',\n            ])\n            .optional(),\n          paymentStatus: z\n            .enum([\n              'UNDEFINED',\n              'NOT_PAID',\n              'PAID',\n              'PARTIALLY_PAID',\n              'REFUNDED',\n              'EXEMPT',\n            ])\n            .optional(),\n          selectedPaymentOption: z\n            .enum([\n              'UNDEFINED',\n              'OFFLINE',\n              'ONLINE',\n              'MEMBERSHIP',\n              'MEMBERSHIP_OFFLINE',\n            ])\n            .optional(),\n          _createdDate: z\n            .date()\n            .describe(\n              'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n            )\n            .optional()\n            .nullable(),\n          externalUserId: z\n            .string()\n            .describe('External user ID that you can provide.')\n            .optional()\n            .nullable(),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n            )\n            .optional()\n            .nullable(),\n          createdBy: z\n            .intersection(\n              z.object({\n                contactId: z\n                  .string()\n                  .describe(\n                    \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n              }),\n              z.xor([\n                z.object({\n                  anonymousVisitorId: z.never().optional(),\n                  memberId: z.never().optional(),\n                  wixUserId: z.never().optional(),\n                  appId: z.never().optional(),\n                }),\n                z.object({\n                  memberId: z.never().optional(),\n                  wixUserId: z.never().optional(),\n                  appId: z.never().optional(),\n                  anonymousVisitorId: z\n                    .string()\n                    .describe(\n                      'ID of a site visitor that has not logged in to the site.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    ),\n                }),\n                z.object({\n                  anonymousVisitorId: z.never().optional(),\n                  wixUserId: z.never().optional(),\n                  appId: z.never().optional(),\n                  memberId: z\n                    .string()\n                    .describe(\n                      'ID of a site visitor that has logged in to the site.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    ),\n                }),\n                z.object({\n                  anonymousVisitorId: z.never().optional(),\n                  memberId: z.never().optional(),\n                  appId: z.never().optional(),\n                  wixUserId: z\n                    .string()\n                    .describe(\n                      'ID of a Wix user (site owner, contributor, etc.).'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    ),\n                }),\n                z.object({\n                  anonymousVisitorId: z.never().optional(),\n                  memberId: z.never().optional(),\n                  wixUserId: z.never().optional(),\n                  appId: z\n                    .string()\n                    .describe('ID of an app.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    ),\n                }),\n              ])\n            )\n            .describe(\n              'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n            )\n            .optional(),\n          startDate: z\n            .date()\n            .describe(\n              'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n            )\n            .optional()\n            .nullable(),\n          endDate: z\n            .date()\n            .describe(\n              'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n            )\n            .optional()\n            .nullable(),\n          _updatedDate: z\n            .date()\n            .describe(\n              'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n            )\n            .optional()\n            .nullable(),\n          extendedFields: z\n            .object({\n              namespaces: z\n                .record(z.string(), z.record(z.string(), z.any()))\n                .describe(\n                  'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                )\n                .optional(),\n            })\n            .describe(\n              'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n            )\n            .optional(),\n          doubleBooked: z\n            .boolean()\n            .describe(\n              'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n            )\n            .optional()\n            .nullable(),\n          formSubmissionId: z\n            .string()\n            .describe(\n              'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          formId: z\n            .string()\n            .describe(\n              \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          bookedAddOns: z\n            .array(\n              z.object({\n                _id: z\n                  .string()\n                  .describe('The ID of the add-on.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional(),\n                groupId: z\n                  .string()\n                  .describe('The ID of the add-on group.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional(),\n                durationInMinutes: z\n                  .number()\n                  .int()\n                  .describe(\n                    'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                  )\n                  .min(1)\n                  .max(1440)\n                  .optional()\n                  .nullable(),\n                quantity: z\n                  .number()\n                  .int()\n                  .describe(\n                    'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                  )\n                  .min(1)\n                  .max(1000)\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Add-on `name` at the time of booking.')\n                  .max(100)\n                  .optional()\n                  .nullable(),\n                nameTranslated: z\n                  .string()\n                  .describe(\n                    'Add-on name translated to the language the customer used during booking.'\n                  )\n                  .max(100)\n                  .optional()\n                  .nullable(),\n              })\n            )\n            .max(21)\n            .optional(),\n          appId: z\n            .string()\n            .describe(\n              'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          createdByAppId: z\n            .string()\n            .describe(\n              \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          depositSelected: z\n            .boolean()\n            .describe(\n              'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n            )\n            .optional()\n            .nullable(),\n        }),\n        z.xor([\n          z.object({\n            totalParticipants: z.never().optional(),\n            participantsChoices: z.never().optional(),\n          }),\n          z.object({\n            participantsChoices: z.never().optional(),\n            totalParticipants: z\n              .number()\n              .int()\n              .describe(\n                \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n              )\n              .min(1),\n          }),\n          z.object({\n            totalParticipants: z.never().optional(),\n            participantsChoices: z\n              .object({\n                serviceChoices: z\n                  .array(\n                    z.object({\n                      numberOfParticipants: z\n                        .number()\n                        .int()\n                        .describe(\n                          'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                        )\n                        .min(1)\n                        .optional()\n                        .nullable(),\n                      choices: z\n                        .array(\n                          z.intersection(\n                            z.object({\n                              optionId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                            }),\n                            z.xor([\n                              z.object({\n                                custom: z.never().optional(),\n                                duration: z.never().optional(),\n                              }),\n                              z.object({\n                                duration: z.never().optional(),\n                                custom: z\n                                  .string()\n                                  .describe(\n                                    'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                  ),\n                              }),\n                              z.object({\n                                custom: z.never().optional(),\n                                duration: z.object({\n                                  minutes: z\n                                    .number()\n                                    .int()\n                                    .describe(\n                                      'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                    )\n                                    .min(1)\n                                    .max(44639)\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                    )\n                                    .max(255)\n                                    .optional()\n                                    .nullable(),\n                                }),\n                              }),\n                            ])\n                          )\n                        )\n                        .max(5)\n                        .optional(),\n                    })\n                  )\n                  .min(1)\n                  .max(20)\n                  .optional(),\n              })\n              .describe(\n                'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n              ),\n          }),\n        ])\n      )\n    )\n    .min(2)\n    .max(8),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the session starts.\\nWix Bookings takes the phone number from `contactDetails.phone`.\\n\\nDefault: `true`'\n        )\n        .optional()\n        .nullable(),\n      flowControlSettings: z\n        .object({\n          skipAvailabilityValidation: z\n            .boolean()\n            .describe(\n              \"Whether the availability is checked before creating the booking.\\n\\n- `false`: A booking is only created when the slot or schedule is available.\\n- `true`: The booking is created regardless of availability conflicts. Make sure the call's [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) has the required permissions.\\n\\n*Use cases for `true`:**\\n- Emergency or priority bookings that must be accommodated.\\n- Administrative bookings that override normal availability rules.\\n- Testing or demonstration purposes.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipBusinessConfirmation: z\n            .boolean()\n            .describe(\n              \"Whether `PENDING` bookings are automatically set to `CONFIRMED` for\\nservices that normally require the owner's manual confirmation.\\n\\nYour app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` permission\\nwhen passing `true`.\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipSelectedPaymentOptionValidation: z\n            .boolean()\n            .describe(\n              \"Whether customers can pay using a payment method that isn't supported\\nfor the service, but that's supported for other services.\\n\\nYour app must have the `BOOKINGS.MANAGE_PAYMENTS` permission when passing\\n`true`.\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipAddOnValidation: z\n            .boolean()\n            .describe(\n              \"Whether Wix Bookings validates [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) when creating a booking.\\nThe calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`.\\nThis allows customers to choose an add-on that's not associated with the service or choose more than the maximum number of add-ons from a group.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n        })\n        .describe(\n          'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to skip checking availability before updating the status.'\n        )\n        .optional(),\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the created single-service bookings.')\n        .optional(),\n      multiServiceBookingType: z\n        .enum(['SEQUENTIAL_BOOKINGS', 'SEPARATE_BOOKINGS', 'PARALLEL_BOOKINGS'])\n        .optional(),\n    })\n    .optional(),\n});\nexport const CreateMultiServiceBookingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe(\n      'Created multi-service booking.\\nContains the single-service bookings in the same order as specified in the request.'\n    )\n    .optional(),\n});\nexport const RescheduleMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking to reschedule.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  rescheduleBookingsInfo: z.array(\n    z.intersection(\n      z.object({\n        bookingId: z\n          .string()\n          .describe('ID of the booking to reschedule.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          ),\n        slot: z\n          .object({\n            sessionId: z\n              .string()\n              .describe(\n                'Identifier for the underlying session when the session is a single session or generated from a recurring session.'\n              )\n              .optional()\n              .nullable(),\n            serviceId: z\n              .string()\n              .describe('Service identifier. Required.')\n              .optional(),\n            scheduleId: z\n              .string()\n              .describe('Schedule identifier. Required.')\n              .optional(),\n            startDate: z\n              .string()\n              .describe(\n                'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n              )\n              .optional()\n              .nullable(),\n            endDate: z\n              .string()\n              .describe(\n                'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n              )\n              .optional()\n              .nullable(),\n            timezone: z\n              .string()\n              .describe(\n                'The timezone according to which the slot is calculated and presented.'\n              )\n              .optional()\n              .nullable(),\n            resource: z\n              .object({\n                _id: z\n                  .string()\n                  .describe('Resource ID.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Resource name.')\n                  .max(1200)\n                  .optional()\n                  .nullable(),\n                transparency: z.enum(['OPAQUE', 'TRANSPARENT']).optional(),\n              })\n              .describe(\n                'The resource required for this slot.\\nWhen populated, the specified resource will be assigned to the slot upon confirmation according to its availability.\\nWhen empty, if `skip_availability_validation` is `false`, a random available resource will be assigned to the slot upon confirmation.\\nOtherwise, one of the service resources will be assigned to the slot randomly upon confirmation.'\n              )\n              .optional(),\n            location: z\n              .object({\n                _id: z\n                  .string()\n                  .describe(\n                    'Business Location ID. Present if the location is a business location.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  )\n                  .optional()\n                  .nullable(),\n                name: z\n                  .string()\n                  .describe('Location name.')\n                  .optional()\n                  .nullable(),\n                formattedAddress: z\n                  .string()\n                  .describe(\n                    'A string containing the full address of this location.'\n                  )\n                  .optional()\n                  .nullable(),\n                locationType: z\n                  .enum([\n                    'UNDEFINED',\n                    'OWNER_BUSINESS',\n                    'OWNER_CUSTOM',\n                    'CUSTOM',\n                  ])\n                  .optional(),\n              })\n              .describe('Geographic location of the slot.')\n              .optional(),\n            eventId: z\n              .string()\n              .describe(\n                'Calendar event ID - not supported.\\nIf not empty, on all write flows (create/update), it takes priority over `sessionId`.\\nSo if both `sessionId` and `eventId` are provided, the `sessionId` will be based on the `eventId`.\\nOtherwise, if `eventId` is empty on write flow,'\n              )\n              .min(36)\n              .max(250)\n              .optional()\n              .nullable(),\n            resourceSelections: z\n              .array(\n                z.object({\n                  resourceTypeId: z\n                    .string()\n                    .describe(\n                      'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  selectionMethod: z\n                    .enum(['SPECIFIC_RESOURCE', 'ANY_RESOURCE', 'NO_SELECTION'])\n                    .optional(),\n                })\n              )\n              .max(3)\n              .optional(),\n          })\n          .describe('Information about the new slot.'),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n          ),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              'Total number of participants. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\nSpecify when all participants book the same variant.'\n            ),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the service choices to book. Available only for services with [variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\nSpecify when not all participants book the same variant.'\n            ),\n        }),\n      ])\n    )\n  ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      flowControlSettings: z\n        .object({\n          ignoreReschedulePolicy: z\n            .boolean()\n            .describe(\n              'Whether the rescheduling policy applies when rescheduling the booking.\\n\\nWhen passing `false`, you can only reschedule a booking if the rescheduling\\npolicy allows it.\\nWhen passing `true`, the rescheduling policy is ignored and external\\nvalidation providers are also skipped.\\nDefault: `false`.'\n            )\n            .optional(),\n          skipAvailabilityValidation: z\n            .boolean()\n            .describe(\n              'Whether the availability is checked before rescheduling the booking.\\n\\nWhen passing `false`, a booking is only created when the slot or\\nschedule is available.\\nDefault: `false`.'\n            )\n            .optional(),\n          skipBusinessConfirmation: z\n            .boolean()\n            .describe(\n              \"Whether the rescheduled booking's status is automatically set to\\n`CONFIRMED` for services that normally require the owner's manual\\nconfirmation.\\nDefault: `false`.\"\n            )\n            .optional(),\n          allowAddOnChanges: z\n            .boolean()\n            .describe(\n              'Whether you can update the list of add-ons associated with the booking when rescheduling.\\nThe calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`.\\n\\nDefault: `false`.'\n            )\n            .optional(),\n        })\n        .describe(\n          \"Information about whether specific procedures of the standard Wix Bookings rescheduling flow are changed.\\nFor example, whether the availability of the new slot is checked before rescheduling the booking or if the customer can reschedule the booking even though the service's rescheduling policy doesn't allow it.\"\n        )\n        .optional(),\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the rescheduled bookings entities.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const RescheduleMultiServiceBookingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe('Rescheduled multi-service booking.')\n    .optional(),\n});\nexport const GetMultiServiceBookingAvailabilityRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking to retrieve.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n});\nexport const GetMultiServiceBookingAvailabilityResponse = z.object({\n  bookable: z\n    .boolean()\n    .describe('Whether all contained single-service bookings are bookable.')\n    .optional(),\n  totalCapacity: z\n    .number()\n    .int()\n    .describe('Total number of spots.')\n    .optional()\n    .nullable(),\n  remainingCapacity: z\n    .number()\n    .int()\n    .describe('Number of open spots.')\n    .optional()\n    .nullable(),\n  policyViolations: z\n    .object({\n      tooEarlyToBook: z\n        .boolean()\n        .describe('Booking policy violation: Too early to book this slot.')\n        .optional()\n        .nullable(),\n      tooLateToBook: z\n        .boolean()\n        .describe('Booking policy violation: Too late to book this slot.')\n        .optional()\n        .nullable(),\n      bookOnlineDisabled: z\n        .boolean()\n        .describe(\n          'Booking policy violation: Online booking is disabled for this slot.'\n        )\n        .optional()\n        .nullable(),\n    })\n    .describe('Indicators for policy violations of the multi-service booking.')\n    .optional(),\n  policySettings: z\n    .object({\n      maxParticipantsPerBooking: z\n        .number()\n        .int()\n        .describe('Booking policy settings for a given slot or schedule.')\n        .optional()\n        .nullable(),\n    })\n    .describe('Multi-service booking policy settings.')\n    .optional(),\n  multiServiceBookingInfo: z\n    .array(\n      z.object({\n        bookingId: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n      })\n    )\n    .optional(),\n});\nexport const CancelMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking to cancel.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      flowControlSettings: z\n        .object({\n          ignoreCancellationPolicy: z\n            .boolean()\n            .describe(\n              'Whether the cancellation policy applies when canceling the booking.\\n\\nWhen passing `false`, you can only cancel a booking if the cancellation policy allows it.\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n          withRefund: z\n            .boolean()\n            .describe(\n              'Whether to issue a refund when canceling the booking.\\n\\nThe refund will be issued only if the booking is refundable.\\nCurrently, a booking is considered refundable when it was paid by membership.\\nIf you specify `true`, the booking flow control settings is set to include a refund.\\nIf `false` is specified or the field remains empty,\\nthe booking flow control settings are set without refund.\\n\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n          waiveCancellationFee: z\n            .boolean()\n            .describe(\n              \"Whether to waive the cancellation fee when canceling the booking.\\n\\n- `true`: The customer doesn't have to pay a cancellation fee.\\n- `false`: The customer must pay the cancellation fee that's defined in the service's [policy](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction).\\n\\nDefault: `false`.\"\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          \"Information about whether specific procedures of the standard Wix Bookings cancellation flow are changed.\\nFor example, whether the customer can cancel the booking even though the service's cancellation policy doesn't allow it or whether to issue a refund upon cancellation.\"\n        )\n        .optional(),\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the canceled single-service bookings.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const CancelMultiServiceBookingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe('Canceled multi-service booking.')\n    .optional(),\n});\nexport const MarkMultiServiceBookingAsPendingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking to mark as `PENDING`.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      markAsPendingBookingsInfo: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe('ID of the single-service booking.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            revision: z\n              .string()\n              .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n              .describe(\n                'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n              )\n              .optional()\n              .nullable(),\n            paymentStatus: z\n              .enum([\n                'UNDEFINED',\n                'NOT_PAID',\n                'PAID',\n                'PARTIALLY_PAID',\n                'REFUNDED',\n                'EXEMPT',\n              ])\n              .optional(),\n          })\n        )\n        .optional(),\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the session starts.\\nWix Bookings takes the phone number from `contactDetails.phone`.\\n\\nDefault: `true`'\n        )\n        .optional()\n        .nullable(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      returnFullEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the single-service bookings that were marked as `PENDING`.\\n\\nDefault: `false`'\n        )\n        .optional(),\n      flowControlSettings: z\n        .object({\n          checkAvailabilityValidation: z\n            .boolean()\n            .describe(\n              'Whether to check for double booking conflicts when updating the status.\\n\\n- `true`: Checks for availability conflicts and sets `doubleBooked` to `true`\\nif conflicts exist.\\nThe booking is still marked as `PENDING` for the business to resolve manually.\\n- `false`: No availability checking is performed.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          skipPendingApprovalServiceValidation: z\n            .boolean()\n            .describe(\n              \"Whether to allow marking any booking as pending, even if the service doesn't require manual approval.\\n\\n- `true`: Bypasses the validation that checks if the service has `service.onlineBooking.requireManualApproval` set to `true`.\\n- `false`: Only services that require manual approval can have their bookings marked as pending.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether specific procedures of the standard Wix Bookings creation flow are changed.\\nFor example, whether Wix Bookings checks availability before updating the booking.'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const MarkMultiServiceBookingAsPendingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe('Updated multi-service booking.')\n    .optional(),\n});\nexport const ConfirmMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe(\n      'ID of the multi-service booking to confirm its related bookings.'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      confirmBookingsInfo: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe('ID of the single-service booking.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            revision: z\n              .string()\n              .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n              .describe(\n                'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n              )\n              .optional()\n              .nullable(),\n            paymentStatus: z\n              .enum([\n                'UNDEFINED',\n                'NOT_PAID',\n                'PAID',\n                'PARTIALLY_PAID',\n                'REFUNDED',\n                'EXEMPT',\n              ])\n              .optional(),\n          })\n        )\n        .optional(),\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the session starts.\\nWix Bookings takes the phone number from `contactDetails.phone`.\\n\\nDefault: `true`'\n        )\n        .optional()\n        .nullable(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the confirmed single-service bookings.')\n        .optional(),\n      flowControlSettings: z\n        .object({\n          checkAvailabilityValidation: z\n            .boolean()\n            .describe(\n              'Whether the availability is checked before confirming the booking.\\n\\nWhen specifying `false`, a booking is only updated with status `CONFIRMED`.\\nDefault: `false`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether specific procedures of the standard Wix Bookings confirmation flow are changed.\\nFor example, whether Wix Bookings checks availability before confirming the booking.'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const ConfirmMultiServiceBookingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe('Confirmed multi-service booking.')\n    .optional(),\n});\nexport const DeclineMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking to decline.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      declineBookingsInfo: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe('ID of the single-service booking.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            revision: z\n              .string()\n              .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n              .describe(\n                'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n              )\n              .optional()\n              .nullable(),\n            paymentStatus: z\n              .enum([\n                'UNDEFINED',\n                'NOT_PAID',\n                'PAID',\n                'PARTIALLY_PAID',\n                'REFUNDED',\n                'EXEMPT',\n              ])\n              .optional(),\n          })\n        )\n        .optional(),\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and the message to send.'\n        )\n        .optional(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the declined single-service bookings.')\n        .optional(),\n      flowControlSettings: z\n        .object({\n          withRefund: z\n            .boolean()\n            .describe(\n              'Whether to issue a refund when declining the booking.\\n\\nThe refund will be issued only if the booking is refundable.\\nCurrently, a booking is considered refundable when it was paid by membership.\\nIf specifying `true`, the booking flow control settings will be set with a refund.\\nIf you specify `false` or an empty field,\\nthe booking flow control settings are set without refund.\\n\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Information about whether specific procedures of the standard Wix Bookings declining flow are changed.\\nFor example, whether to issue a refund upon cancellation.'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const DeclineMultiServiceBookingResponse = z.object({\n  multiServiceBooking: z\n    .object({\n      _id: z\n        .string()\n        .describe('Multi-service booking ID.')\n        .regex(\n          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n          'Must be a valid GUID'\n        )\n        .optional()\n        .nullable(),\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe(\n                'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            booking: z\n              .intersection(\n                z.object({\n                  _id: z\n                    .string()\n                    .describe('Booking ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedEntity: z\n                    .intersection(\n                      z.object({\n                        title: z\n                          .string()\n                          .describe(\n                            'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                          )\n                          .max(6000)\n                          .optional()\n                          .nullable(),\n                        tags: z.array(z.string()).optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z.never().optional(),\n                        }),\n                        z.object({\n                          schedule: z.never().optional(),\n                          slot: z\n                            .object({\n                              sessionId: z\n                                .string()\n                                .describe(\n                                  'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                                )\n                                .optional()\n                                .nullable(),\n                              serviceId: z\n                                .string()\n                                .describe('Service ID.')\n                                .optional(),\n                              scheduleId: z\n                                .string()\n                                .describe('Schedule ID.')\n                                .optional(),\n                              eventId: z\n                                .string()\n                                .describe(\n                                  'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                                )\n                                .min(36)\n                                .max(250)\n                                .optional()\n                                .nullable(),\n                              startDate: z\n                                .string()\n                                .describe(\n                                  'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              endDate: z\n                                .string()\n                                .describe(\n                                  'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              resource: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's name at the time of booking.\"\n                                    )\n                                    .max(40)\n                                    .optional()\n                                    .nullable(),\n                                  email: z\n                                    .string()\n                                    .describe(\n                                      \"Resource's email at the time of booking.\"\n                                    )\n                                    .max(500)\n                                    .optional()\n                                    .nullable(),\n                                  scheduleId: z\n                                    .string()\n                                    .describe(\n                                      \"ID of the schedule belonging to the booking's primary resource.\"\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                })\n                                .describe(\n                                  '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                                )\n                                .optional(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Location where the session takes place.'\n                                )\n                                .optional(),\n                              resourceSelections: z\n                                .array(\n                                  z.object({\n                                    resourceTypeId: z\n                                      .string()\n                                      .describe(\n                                        'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                      )\n                                      .regex(\n                                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                        'Must be a valid GUID'\n                                      )\n                                      .optional()\n                                      .nullable(),\n                                    selectionMethod: z\n                                      .enum([\n                                        'SPECIFIC_RESOURCE',\n                                        'ANY_RESOURCE',\n                                        'NO_SELECTION',\n                                      ])\n                                      .describe(\n                                        'Information about how the customer has selected the resource for this resource type.'\n                                      )\n                                      .optional(),\n                                  })\n                                )\n                                .max(3)\n                                .optional(),\n                            })\n                            .describe(\n                              '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                            ),\n                        }),\n                        z.object({\n                          slot: z.never().optional(),\n                          schedule: z\n                            .object({\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                                )\n                                .optional(),\n                              serviceId: z\n                                .string()\n                                .describe('Booked service ID.')\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              location: z\n                                .object({\n                                  _id: z\n                                    .string()\n                                    .describe(\n                                      'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  name: z\n                                    .string()\n                                    .describe('Location name.')\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddress: z\n                                    .string()\n                                    .describe(\n                                      'The full address of this location.'\n                                    )\n                                    .optional()\n                                    .nullable(),\n                                  formattedAddressTranslated: z\n                                    .string()\n                                    .describe(\n                                      'The full translated address of this location.'\n                                    )\n                                    .max(512)\n                                    .optional()\n                                    .nullable(),\n                                  locationType: z\n                                    .enum([\n                                      'UNDEFINED',\n                                      'OWNER_BUSINESS',\n                                      'OWNER_CUSTOM',\n                                      'CUSTOM',\n                                    ])\n                                    .describe('Location type.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                                )\n                                .optional(),\n                              timezone: z\n                                .string()\n                                .describe(\n                                  'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                                )\n                                .optional()\n                                .nullable(),\n                              firstSessionStart: z\n                                .string()\n                                .describe(\n                                  'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                              lastSessionEnd: z\n                                .string()\n                                .describe(\n                                  'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                    )\n                    .optional(),\n                  contactDetails: z\n                    .object({\n                      contactId: z\n                        .string()\n                        .describe('Contact ID.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        )\n                        .optional()\n                        .nullable(),\n                      firstName: z\n                        .string()\n                        .describe(\n                          \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                        )\n                        .optional()\n                        .nullable(),\n                      lastName: z\n                        .string()\n                        .describe(\"Contact's last name.\")\n                        .optional()\n                        .nullable(),\n                      email: z\n                        .string()\n                        .describe(\n                          \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                        )\n                        .email()\n                        .optional()\n                        .nullable(),\n                      phone: z\n                        .string()\n                        .describe(\"Contact's phone number.\")\n                        .optional()\n                        .nullable(),\n                      fullAddress: z\n                        .intersection(\n                          z.object({\n                            country: z\n                              .string()\n                              .describe('Country code.')\n                              .optional()\n                              .nullable(),\n                            subdivision: z\n                              .string()\n                              .describe(\n                                'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                              )\n                              .optional()\n                              .nullable(),\n                            city: z\n                              .string()\n                              .describe('City name.')\n                              .optional()\n                              .nullable(),\n                            postalCode: z\n                              .string()\n                              .describe('Zip/postal code.')\n                              .optional()\n                              .nullable(),\n                            addressLine2: z\n                              .string()\n                              .describe(\n                                'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                              )\n                              .optional()\n                              .nullable(),\n                            formattedAddress: z\n                              .string()\n                              .describe(\n                                'A string containing the full address of this location.'\n                              )\n                              .optional()\n                              .nullable(),\n                            hint: z\n                              .string()\n                              .describe('Free text to help find the address.')\n                              .optional()\n                              .nullable(),\n                            geocode: z\n                              .object({\n                                latitude: z\n                                  .number()\n                                  .describe('Address latitude.')\n                                  .optional()\n                                  .nullable(),\n                                longitude: z\n                                  .number()\n                                  .describe('Address longitude.')\n                                  .optional()\n                                  .nullable(),\n                              })\n                              .describe('Coordinates of the physical address.')\n                              .optional(),\n                            countryFullname: z\n                              .string()\n                              .describe('Country full name.')\n                              .optional()\n                              .nullable(),\n                            subdivisions: z\n                              .array(\n                                z.object({\n                                  code: z\n                                    .string()\n                                    .describe(\n                                      'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                    )\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Subdivision full name.')\n                                    .optional(),\n                                })\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z.never().optional(),\n                            }),\n                            z.object({\n                              addressLine: z.never().optional(),\n                              streetAddress: z\n                                .object({\n                                  number: z\n                                    .string()\n                                    .describe('Street number.')\n                                    .optional(),\n                                  name: z\n                                    .string()\n                                    .describe('Street name.')\n                                    .optional(),\n                                  apt: z\n                                    .string()\n                                    .describe('Apartment number.')\n                                    .optional(),\n                                })\n                                .describe(\n                                  'Street name, number and apartment number.'\n                                ),\n                            }),\n                            z.object({\n                              streetAddress: z.never().optional(),\n                              addressLine: z\n                                .string()\n                                .describe(\n                                  'Main address line, usually street and number, as free text.'\n                                ),\n                            }),\n                          ])\n                        )\n                        .describe(\"Contact's full address.\")\n                        .optional(),\n                      timeZone: z\n                        .string()\n                        .describe(\"Contact's time zone.\")\n                        .optional()\n                        .nullable(),\n                      countryCode: z\n                        .string()\n                        .describe(\n                          \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                        )\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe(\n                      'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                    )\n                    .optional(),\n                  additionalFields: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'ID of the form field as defined in the form.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        value: z\n                          .string()\n                          .describe('Value that was submitted for this field.')\n                          .optional()\n                          .nullable(),\n                        label: z\n                          .string()\n                          .describe(\n                            \"Form field's label at the time of submission.\"\n                          )\n                          .optional()\n                          .nullable(),\n                        valueType: z\n                          .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                  status: z\n                    .enum([\n                      'CREATED',\n                      'CONFIRMED',\n                      'CANCELED',\n                      'PENDING',\n                      'DECLINED',\n                      'WAITING_LIST',\n                    ])\n                    .describe(\n                      \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                    )\n                    .optional(),\n                  paymentStatus: z\n                    .enum([\n                      'UNDEFINED',\n                      'NOT_PAID',\n                      'PAID',\n                      'PARTIALLY_PAID',\n                      'REFUNDED',\n                      'EXEMPT',\n                    ])\n                    .describe(\n                      \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                    )\n                    .optional(),\n                  selectedPaymentOption: z\n                    .enum([\n                      'UNDEFINED',\n                      'OFFLINE',\n                      'ONLINE',\n                      'MEMBERSHIP',\n                      'MEMBERSHIP_OFFLINE',\n                    ])\n                    .describe(\n                      \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                    )\n                    .optional(),\n                  _createdDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  externalUserId: z\n                    .string()\n                    .describe('External user ID that you can provide.')\n                    .optional()\n                    .nullable(),\n                  revision: z\n                    .string()\n                    .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                    .describe(\n                      'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdBy: z\n                    .intersection(\n                      z.object({\n                        contactId: z\n                          .string()\n                          .describe(\n                            \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      }),\n                      z.xor([\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                        }),\n                        z.object({\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          anonymousVisitorId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has not logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z.never().optional(),\n                          memberId: z\n                            .string()\n                            .describe(\n                              'ID of a site visitor that has logged in to the site.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          appId: z.never().optional(),\n                          wixUserId: z\n                            .string()\n                            .describe(\n                              'ID of a Wix user (site owner, contributor, etc.).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                        z.object({\n                          anonymousVisitorId: z.never().optional(),\n                          memberId: z.never().optional(),\n                          wixUserId: z.never().optional(),\n                          appId: z\n                            .string()\n                            .describe('ID of an app.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\n                      'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                    )\n                    .optional(),\n                  startDate: z\n                    .date()\n                    .describe(\n                      'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  endDate: z\n                    .date()\n                    .describe(\n                      'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                    )\n                    .optional()\n                    .nullable(),\n                  _updatedDate: z\n                    .date()\n                    .describe(\n                      'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                    )\n                    .optional()\n                    .nullable(),\n                  extendedFields: z\n                    .object({\n                      namespaces: z\n                        .record(z.string(), z.record(z.string(), z.any()))\n                        .describe(\n                          'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                        )\n                        .optional(),\n                    })\n                    .describe(\n                      'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                    )\n                    .optional(),\n                  doubleBooked: z\n                    .boolean()\n                    .describe(\n                      'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formSubmissionId: z\n                    .string()\n                    .describe(\n                      'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  formId: z\n                    .string()\n                    .describe(\n                      \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  bookedAddOns: z\n                    .array(\n                      z.object({\n                        _id: z\n                          .string()\n                          .describe('The ID of the add-on.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        groupId: z\n                          .string()\n                          .describe('The ID of the add-on group.')\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        durationInMinutes: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                          )\n                          .min(1)\n                          .max(1440)\n                          .optional()\n                          .nullable(),\n                        quantity: z\n                          .number()\n                          .int()\n                          .describe(\n                            'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                          )\n                          .min(1)\n                          .max(1000)\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Add-on `name` at the time of booking.')\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                        nameTranslated: z\n                          .string()\n                          .describe(\n                            'Add-on name translated to the language the customer used during booking.'\n                          )\n                          .max(100)\n                          .optional()\n                          .nullable(),\n                      })\n                    )\n                    .max(21)\n                    .optional(),\n                  appId: z\n                    .string()\n                    .describe(\n                      'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  createdByAppId: z\n                    .string()\n                    .describe(\n                      \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                    )\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  depositSelected: z\n                    .boolean()\n                    .describe(\n                      'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                    )\n                    .optional()\n                    .nullable(),\n                }),\n                z.xor([\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z.never().optional(),\n                  }),\n                  z.object({\n                    participantsChoices: z.never().optional(),\n                    totalParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                      )\n                      .min(1),\n                  }),\n                  z.object({\n                    totalParticipants: z.never().optional(),\n                    participantsChoices: z\n                      .object({\n                        serviceChoices: z\n                          .array(\n                            z.object({\n                              numberOfParticipants: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                                )\n                                .min(1)\n                                .optional()\n                                .nullable(),\n                              choices: z\n                                .array(\n                                  z.intersection(\n                                    z.object({\n                                      optionId: z\n                                        .string()\n                                        .describe(\n                                          'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                        )\n                                        .regex(\n                                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                          'Must be a valid GUID'\n                                        )\n                                        .optional(),\n                                    }),\n                                    z.xor([\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.never().optional(),\n                                      }),\n                                      z.object({\n                                        duration: z.never().optional(),\n                                        custom: z\n                                          .string()\n                                          .describe(\n                                            'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                          ),\n                                      }),\n                                      z.object({\n                                        custom: z.never().optional(),\n                                        duration: z.object({\n                                          minutes: z\n                                            .number()\n                                            .int()\n                                            .describe(\n                                              'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                            )\n                                            .min(1)\n                                            .max(44639)\n                                            .optional(),\n                                          name: z\n                                            .string()\n                                            .describe(\n                                              'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                            )\n                                            .max(255)\n                                            .optional()\n                                            .nullable(),\n                                        }),\n                                      }),\n                                    ])\n                                  )\n                                )\n                                .max(5)\n                                .optional(),\n                            })\n                          )\n                          .min(1)\n                          .max(20)\n                          .optional(),\n                      })\n                      .describe(\n                        'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\n                'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n              )\n              .optional(),\n          })\n        )\n        .optional(),\n    })\n    .describe('Declined multi-service booking.')\n    .optional(),\n});\nexport const BulkGetMultiServiceBookingAllowedActionsRequest = z.object({\n  multiServiceBookingIds: z.array(z.string()).min(1).max(50),\n});\nexport const BulkGetMultiServiceBookingAllowedActionsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe(\n            'Metadata for the booking. Including ID, index in the provided sequence, success status, and error.'\n          )\n          .optional(),\n        item: z\n          .object({\n            cancel: z\n              .boolean()\n              .describe('Whether canceling the booking is allowed.')\n              .optional(),\n            reschedule: z\n              .boolean()\n              .describe('Whether rescheduling the booking is allowed.')\n              .optional(),\n          })\n          .describe('Booking entity.')\n          .optional(),\n      })\n    )\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe(\n      'Total number of successes and failures for Bulk Get Multi Service Booking Allowed Actions.'\n    )\n    .optional(),\n});\nexport const GetMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n});\nexport const GetMultiServiceBookingResponse = z.object({\n  _id: z\n    .string()\n    .describe('Multi-service booking ID.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    )\n    .optional()\n    .nullable(),\n  bookings: z\n    .array(\n      z.object({\n        bookingId: z\n          .string()\n          .describe(\n            'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        booking: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z.never().optional(),\n                    }),\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .describe(\n                                    'Information about how the customer has selected the resource for this resource type.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                )\n                .optional(),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .describe(\n                  \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                )\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .describe(\n                  \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                )\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .describe(\n                  \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                )\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n          )\n          .optional(),\n      })\n    )\n    .optional(),\n});\nexport const AddBookingsToMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z.object({\n    bookings: z\n      .array(\n        z.object({\n          bookingId: z\n            .string()\n            .describe('ID of the single-service booking.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            ),\n          revision: z\n            .string()\n            .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n            .describe(\n              'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n            ),\n        })\n      )\n      .max(8),\n    returnFullEntity: z\n      .boolean()\n      .describe(\n        'Whether to return the single-service bookings that were added to the multi-service booking.\\n\\nDefault: `false`'\n      )\n      .optional(),\n  }),\n});\nexport const AddBookingsToMultiServiceBookingResponse = z.object({\n  bookings: z\n    .array(\n      z.object({\n        bookingId: z\n          .string()\n          .describe(\n            'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        booking: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z.never().optional(),\n                    }),\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .describe(\n                                    'Information about how the customer has selected the resource for this resource type.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                )\n                .optional(),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .describe(\n                  \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                )\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .describe(\n                  \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                )\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .describe(\n                  \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                )\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n          )\n          .optional(),\n      })\n    )\n    .optional(),\n});\nexport const RemoveBookingsFromMultiServiceBookingRequest = z.object({\n  multiServiceBookingId: z\n    .string()\n    .describe('ID of the multi-service booking.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      bookings: z\n        .array(\n          z.object({\n            bookingId: z\n              .string()\n              .describe('ID of the single-service booking.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            revision: z\n              .string()\n              .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n              .describe(\n                'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be specified when managing the booking.'\n              )\n              .optional()\n              .nullable(),\n          })\n        )\n        .max(8)\n        .optional(),\n      returnFullEntity: z\n        .boolean()\n        .describe(\n          'Whether to return the single-service bookings.\\n\\nDefault: `false`'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const RemoveBookingsFromMultiServiceBookingResponse = z.object({\n  bookings: z\n    .array(\n      z.object({\n        bookingId: z\n          .string()\n          .describe(\n            'Single-service booking ID. Always present.\\nThis value is identical to `booking.id`, which is only returned when `returnFullEntity` is `true`.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        booking: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z.never().optional(),\n                    }),\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .describe(\n                                    'Information about how the customer has selected the resource for this resource type.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                )\n                .optional(),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .describe(\n                  \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                )\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .describe(\n                  \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                )\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .describe(\n                  \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                )\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Single-service booking entity. Only returned when `returnFullEntity` is `true`.'\n          )\n          .optional(),\n      })\n    )\n    .optional(),\n});\nexport const CreateBookingRequest = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          ),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                ),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('The booking to create.'),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and\\nthe message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the\\nsession starts. The phone number is taken from `contactDetails.phone`.\\nDefault: `true`.'\n        )\n        .optional()\n        .nullable(),\n      flowControlSettings: z\n        .object({\n          skipAvailabilityValidation: z\n            .boolean()\n            .describe(\n              \"Whether the availability is checked before creating the booking.\\n\\n- `false`: A booking is only created when the slot or schedule is available.\\n- `true`: The booking is created regardless of availability conflicts. Make sure the call's [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) has the required permissions.\\n\\n*Use cases for `true`:**\\n- Emergency or priority bookings that must be accommodated.\\n- Administrative bookings that override normal availability rules.\\n- Testing or demonstration purposes.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipBusinessConfirmation: z\n            .boolean()\n            .describe(\n              \"Whether `PENDING` bookings are automatically set to `CONFIRMED` for\\nservices that normally require the owner's manual confirmation.\\n\\nYour app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` permission\\nwhen passing `true`.\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipSelectedPaymentOptionValidation: z\n            .boolean()\n            .describe(\n              \"Whether customers can pay using a payment method that isn't supported\\nfor the service, but that's supported for other services.\\n\\nYour app must have the `BOOKINGS.MANAGE_PAYMENTS` permission when passing\\n`true`.\\nDefault: `false`.\"\n            )\n            .optional(),\n          skipAddOnValidation: z\n            .boolean()\n            .describe(\n              \"Whether Wix Bookings validates [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) when creating a booking.\\nThe calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`.\\nThis allows customers to choose an add-on that's not associated with the service or choose more than the maximum number of add-ons from a group.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n        })\n        .describe(\n          'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to check availability when creating a booking.'\n        )\n        .optional(),\n      formSubmission: z\n        .record(z.string(), z.any())\n        .describe(\n          \"Booking form data submitted by the customer during the booking process.\\nEach key represents the name of the form submission field while the value is the data submitted by the customer for that field.\\n\\nWix Bookings stores this form data in different locations depending on the field type:\\n- __Contact details fields__: Input values for standard contact fields such as name, email, phone, and address are saved in the booking object's `contactDetails`.\\n- __Custom and additional fields__: All other form field values are stored separately in the [form submissions object](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction).\\n\\nFor comprehensive details about integrating custom forms with bookings, see [Wix Forms Integration](https://dev.wix.com/docs/rest/business-solutions/bookings/wix-forms-integration).\"\n        )\n        .optional()\n        .nullable(),\n    })\n    .optional(),\n});\nexport const CreateBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Created booking.')\n    .optional(),\n});\nexport const BulkCreateBookingRequest = z.object({\n  createBookingsInfo: z\n    .array(\n      z.object({\n        booking: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                ),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      ),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe('Booking to create.'),\n        participantNotification: z\n          .object({\n            notifyParticipants: z\n              .boolean()\n              .describe(\n                'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n              )\n              .optional(),\n            message: z\n              .string()\n              .describe(\n                'Custom message to send to the participants about the changes to the booking.'\n              )\n              .optional()\n              .nullable(),\n            metadata: z\n              .record(z.string(), z.string())\n              .describe(\n                'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Information about whether to notify the customer and\\nthe message to send.'\n          )\n          .optional(),\n        sendSmsReminder: z\n          .boolean()\n          .describe(\n            'Whether to send an SMS reminder to the customer 24 hours before the\\nsession starts. The phone number is taken from `contactDetails.phone`.\\nDefault: `true`.'\n          )\n          .optional()\n          .nullable(),\n        flowControlSettings: z\n          .object({\n            skipAvailabilityValidation: z\n              .boolean()\n              .describe(\n                \"Whether the availability is checked before creating the booking.\\n\\n- `false`: A booking is only created when the slot or schedule is available.\\n- `true`: The booking is created regardless of availability conflicts. Make sure the call's [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) has the required permissions.\\n\\n*Use cases for `true`:**\\n- Emergency or priority bookings that must be accommodated.\\n- Administrative bookings that override normal availability rules.\\n- Testing or demonstration purposes.\\n\\nDefault: `false`.\"\n              )\n              .optional(),\n            skipBusinessConfirmation: z\n              .boolean()\n              .describe(\n                \"Whether `PENDING` bookings are automatically set to `CONFIRMED` for\\nservices that normally require the owner's manual confirmation.\\n\\nYour app must have the `BOOKINGS.OVERRIDE_AVAILABILITY` permission\\nwhen passing `true`.\\nDefault: `false`.\"\n              )\n              .optional(),\n            skipSelectedPaymentOptionValidation: z\n              .boolean()\n              .describe(\n                \"Whether customers can pay using a payment method that isn't supported\\nfor the service, but that's supported for other services.\\n\\nYour app must have the `BOOKINGS.MANAGE_PAYMENTS` permission when passing\\n`true`.\\nDefault: `false`.\"\n              )\n              .optional(),\n            skipAddOnValidation: z\n              .boolean()\n              .describe(\n                \"Whether Wix Bookings validates [add-ons](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/add-ons/introduction) when creating a booking.\\nThe calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`.\\nThis allows customers to choose an add-on that's not associated with the service or choose more than the maximum number of add-ons from a group.\\n\\nDefault: `false`.\"\n              )\n              .optional(),\n          })\n          .describe(\n            'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to check availability when creating a booking.'\n          )\n          .optional(),\n      })\n    )\n    .min(1)\n    .max(12),\n  options: z\n    .object({\n      returnFullEntity: z\n        .boolean()\n        .describe('Whether to return the created bookings.')\n        .optional(),\n    })\n    .optional(),\n});\nexport const BulkCreateBookingResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe(\n            'Information about the booking that was created or updated.\\nIncluding its ID, index in the bulk request and whether it was\\nsuccessfully created or updated.'\n          )\n          .optional(),\n        item: z\n          .intersection(\n            z.object({\n              _id: z\n                .string()\n                .describe('Booking ID.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedEntity: z\n                .intersection(\n                  z.object({\n                    title: z\n                      .string()\n                      .describe(\n                        'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                      )\n                      .max(6000)\n                      .optional()\n                      .nullable(),\n                    tags: z.array(z.string()).optional(),\n                  }),\n                  z.xor([\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z.never().optional(),\n                    }),\n                    z.object({\n                      schedule: z.never().optional(),\n                      slot: z\n                        .object({\n                          sessionId: z\n                            .string()\n                            .describe(\n                              'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                            )\n                            .optional()\n                            .nullable(),\n                          serviceId: z\n                            .string()\n                            .describe('Service ID.')\n                            .optional(),\n                          scheduleId: z\n                            .string()\n                            .describe('Schedule ID.')\n                            .optional(),\n                          eventId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                            )\n                            .min(36)\n                            .max(250)\n                            .optional()\n                            .nullable(),\n                          startDate: z\n                            .string()\n                            .describe(\n                              'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          endDate: z\n                            .string()\n                            .describe(\n                              'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          resource: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  \"ID of the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  \"Resource's name at the time of booking.\"\n                                )\n                                .max(40)\n                                .optional()\n                                .nullable(),\n                              email: z\n                                .string()\n                                .describe(\n                                  \"Resource's email at the time of booking.\"\n                                )\n                                .max(500)\n                                .optional()\n                                .nullable(),\n                              scheduleId: z\n                                .string()\n                                .describe(\n                                  \"ID of the schedule belonging to the booking's primary resource.\"\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                            })\n                            .describe(\n                              '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                            )\n                            .optional(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe('Location where the session takes place.')\n                            .optional(),\n                          resourceSelections: z\n                            .array(\n                              z.object({\n                                resourceTypeId: z\n                                  .string()\n                                  .describe(\n                                    'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                                  )\n                                  .regex(\n                                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                    'Must be a valid GUID'\n                                  )\n                                  .optional()\n                                  .nullable(),\n                                selectionMethod: z\n                                  .enum([\n                                    'SPECIFIC_RESOURCE',\n                                    'ANY_RESOURCE',\n                                    'NO_SELECTION',\n                                  ])\n                                  .describe(\n                                    'Information about how the customer has selected the resource for this resource type.'\n                                  )\n                                  .optional(),\n                              })\n                            )\n                            .max(3)\n                            .optional(),\n                        })\n                        .describe(\n                          '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                        ),\n                    }),\n                    z.object({\n                      slot: z.never().optional(),\n                      schedule: z\n                        .object({\n                          scheduleId: z\n                            .string()\n                            .describe(\n                              '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                            )\n                            .optional(),\n                          serviceId: z\n                            .string()\n                            .describe('Booked service ID.')\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          location: z\n                            .object({\n                              _id: z\n                                .string()\n                                .describe(\n                                  'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                                )\n                                .regex(\n                                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                  'Must be a valid GUID'\n                                )\n                                .optional()\n                                .nullable(),\n                              name: z\n                                .string()\n                                .describe('Location name.')\n                                .optional()\n                                .nullable(),\n                              formattedAddress: z\n                                .string()\n                                .describe('The full address of this location.')\n                                .optional()\n                                .nullable(),\n                              formattedAddressTranslated: z\n                                .string()\n                                .describe(\n                                  'The full translated address of this location.'\n                                )\n                                .max(512)\n                                .optional()\n                                .nullable(),\n                              locationType: z\n                                .enum([\n                                  'UNDEFINED',\n                                  'OWNER_BUSINESS',\n                                  'OWNER_CUSTOM',\n                                  'CUSTOM',\n                                ])\n                                .describe('Location type.')\n                                .optional(),\n                            })\n                            .describe(\n                              \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                            )\n                            .optional(),\n                          timezone: z\n                            .string()\n                            .describe(\n                              'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                            )\n                            .optional()\n                            .nullable(),\n                          firstSessionStart: z\n                            .string()\n                            .describe(\n                              'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                          lastSessionEnd: z\n                            .string()\n                            .describe(\n                              'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                            )\n                            .optional()\n                            .nullable(),\n                        })\n                        .describe(\n                          '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n                )\n                .optional(),\n              contactDetails: z\n                .object({\n                  contactId: z\n                    .string()\n                    .describe('Contact ID.')\n                    .regex(\n                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                      'Must be a valid GUID'\n                    )\n                    .optional()\n                    .nullable(),\n                  firstName: z\n                    .string()\n                    .describe(\n                      \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n                    )\n                    .optional()\n                    .nullable(),\n                  lastName: z\n                    .string()\n                    .describe(\"Contact's last name.\")\n                    .optional()\n                    .nullable(),\n                  email: z\n                    .string()\n                    .describe(\n                      \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n                    )\n                    .email()\n                    .optional()\n                    .nullable(),\n                  phone: z\n                    .string()\n                    .describe(\"Contact's phone number.\")\n                    .optional()\n                    .nullable(),\n                  fullAddress: z\n                    .intersection(\n                      z.object({\n                        country: z\n                          .string()\n                          .describe('Country code.')\n                          .optional()\n                          .nullable(),\n                        subdivision: z\n                          .string()\n                          .describe(\n                            'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional()\n                          .nullable(),\n                        city: z\n                          .string()\n                          .describe('City name.')\n                          .optional()\n                          .nullable(),\n                        postalCode: z\n                          .string()\n                          .describe('Zip/postal code.')\n                          .optional()\n                          .nullable(),\n                        addressLine2: z\n                          .string()\n                          .describe(\n                            'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                          )\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe(\n                            'A string containing the full address of this location.'\n                          )\n                          .optional()\n                          .nullable(),\n                        hint: z\n                          .string()\n                          .describe('Free text to help find the address.')\n                          .optional()\n                          .nullable(),\n                        geocode: z\n                          .object({\n                            latitude: z\n                              .number()\n                              .describe('Address latitude.')\n                              .optional()\n                              .nullable(),\n                            longitude: z\n                              .number()\n                              .describe('Address longitude.')\n                              .optional()\n                              .nullable(),\n                          })\n                          .describe('Coordinates of the physical address.')\n                          .optional(),\n                        countryFullname: z\n                          .string()\n                          .describe('Country full name.')\n                          .optional()\n                          .nullable(),\n                        subdivisions: z\n                          .array(\n                            z.object({\n                              code: z\n                                .string()\n                                .describe(\n                                  'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                                )\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Subdivision full name.')\n                                .optional(),\n                            })\n                          )\n                          .optional(),\n                      }),\n                      z.xor([\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z.never().optional(),\n                        }),\n                        z.object({\n                          addressLine: z.never().optional(),\n                          streetAddress: z\n                            .object({\n                              number: z\n                                .string()\n                                .describe('Street number.')\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe('Street name.')\n                                .optional(),\n                              apt: z\n                                .string()\n                                .describe('Apartment number.')\n                                .optional(),\n                            })\n                            .describe(\n                              'Street name, number and apartment number.'\n                            ),\n                        }),\n                        z.object({\n                          streetAddress: z.never().optional(),\n                          addressLine: z\n                            .string()\n                            .describe(\n                              'Main address line, usually street and number, as free text.'\n                            ),\n                        }),\n                      ])\n                    )\n                    .describe(\"Contact's full address.\")\n                    .optional(),\n                  timeZone: z\n                    .string()\n                    .describe(\"Contact's time zone.\")\n                    .optional()\n                    .nullable(),\n                  countryCode: z\n                    .string()\n                    .describe(\n                      \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n                    )\n                    .optional()\n                    .nullable(),\n                })\n                .describe(\n                  'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n                )\n                .optional(),\n              additionalFields: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('ID of the form field as defined in the form.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    value: z\n                      .string()\n                      .describe('Value that was submitted for this field.')\n                      .optional()\n                      .nullable(),\n                    label: z\n                      .string()\n                      .describe(\"Form field's label at the time of submission.\")\n                      .optional()\n                      .nullable(),\n                    valueType: z\n                      .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                      .optional(),\n                  })\n                )\n                .optional(),\n              status: z\n                .enum([\n                  'CREATED',\n                  'CONFIRMED',\n                  'CANCELED',\n                  'PENDING',\n                  'DECLINED',\n                  'WAITING_LIST',\n                ])\n                .describe(\n                  \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n                )\n                .optional(),\n              paymentStatus: z\n                .enum([\n                  'UNDEFINED',\n                  'NOT_PAID',\n                  'PAID',\n                  'PARTIALLY_PAID',\n                  'REFUNDED',\n                  'EXEMPT',\n                ])\n                .describe(\n                  \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n                )\n                .optional(),\n              selectedPaymentOption: z\n                .enum([\n                  'UNDEFINED',\n                  'OFFLINE',\n                  'ONLINE',\n                  'MEMBERSHIP',\n                  'MEMBERSHIP_OFFLINE',\n                ])\n                .describe(\n                  \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n                )\n                .optional(),\n              _createdDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              externalUserId: z\n                .string()\n                .describe('External user ID that you can provide.')\n                .optional()\n                .nullable(),\n              revision: z\n                .string()\n                .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n                .describe(\n                  'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n                )\n                .optional()\n                .nullable(),\n              createdBy: z\n                .intersection(\n                  z.object({\n                    contactId: z\n                      .string()\n                      .describe(\n                        \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                      )\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                  }),\n                  z.xor([\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                    }),\n                    z.object({\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      anonymousVisitorId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has not logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z.never().optional(),\n                      memberId: z\n                        .string()\n                        .describe(\n                          'ID of a site visitor that has logged in to the site.'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      appId: z.never().optional(),\n                      wixUserId: z\n                        .string()\n                        .describe(\n                          'ID of a Wix user (site owner, contributor, etc.).'\n                        )\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                    z.object({\n                      anonymousVisitorId: z.never().optional(),\n                      memberId: z.never().optional(),\n                      wixUserId: z.never().optional(),\n                      appId: z\n                        .string()\n                        .describe('ID of an app.')\n                        .regex(\n                          /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                          'Must be a valid GUID'\n                        ),\n                    }),\n                  ])\n                )\n                .describe(\n                  'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n                )\n                .optional(),\n              startDate: z\n                .date()\n                .describe(\n                  'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n                )\n                .optional()\n                .nullable(),\n              endDate: z\n                .date()\n                .describe(\n                  'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n                )\n                .optional()\n                .nullable(),\n              _updatedDate: z\n                .date()\n                .describe(\n                  'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n                )\n                .optional()\n                .nullable(),\n              extendedFields: z\n                .object({\n                  namespaces: z\n                    .record(z.string(), z.record(z.string(), z.any()))\n                    .describe(\n                      'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n                    )\n                    .optional(),\n                })\n                .describe(\n                  'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n                )\n                .optional(),\n              doubleBooked: z\n                .boolean()\n                .describe(\n                  'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n                )\n                .optional()\n                .nullable(),\n              formSubmissionId: z\n                .string()\n                .describe(\n                  'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              formId: z\n                .string()\n                .describe(\n                  \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              bookedAddOns: z\n                .array(\n                  z.object({\n                    _id: z\n                      .string()\n                      .describe('The ID of the add-on.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    groupId: z\n                      .string()\n                      .describe('The ID of the add-on group.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional(),\n                    durationInMinutes: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                      )\n                      .min(1)\n                      .max(1440)\n                      .optional()\n                      .nullable(),\n                    quantity: z\n                      .number()\n                      .int()\n                      .describe(\n                        'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                      )\n                      .min(1)\n                      .max(1000)\n                      .optional()\n                      .nullable(),\n                    name: z\n                      .string()\n                      .describe('Add-on `name` at the time of booking.')\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                    nameTranslated: z\n                      .string()\n                      .describe(\n                        'Add-on name translated to the language the customer used during booking.'\n                      )\n                      .max(100)\n                      .optional()\n                      .nullable(),\n                  })\n                )\n                .max(21)\n                .optional(),\n              appId: z\n                .string()\n                .describe(\n                  'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              createdByAppId: z\n                .string()\n                .describe(\n                  \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n              depositSelected: z\n                .boolean()\n                .describe(\n                  'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z.never().optional(),\n              }),\n              z.object({\n                participantsChoices: z.never().optional(),\n                totalParticipants: z\n                  .number()\n                  .int()\n                  .describe(\n                    \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n                  )\n                  .min(1),\n              }),\n              z.object({\n                totalParticipants: z.never().optional(),\n                participantsChoices: z\n                  .object({\n                    serviceChoices: z\n                      .array(\n                        z.object({\n                          numberOfParticipants: z\n                            .number()\n                            .int()\n                            .describe(\n                              'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                            )\n                            .min(1)\n                            .optional()\n                            .nullable(),\n                          choices: z\n                            .array(\n                              z.intersection(\n                                z.object({\n                                  optionId: z\n                                    .string()\n                                    .describe(\n                                      'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                                    )\n                                    .regex(\n                                      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                      'Must be a valid GUID'\n                                    )\n                                    .optional(),\n                                }),\n                                z.xor([\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.never().optional(),\n                                  }),\n                                  z.object({\n                                    duration: z.never().optional(),\n                                    custom: z\n                                      .string()\n                                      .describe(\n                                        'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                      ),\n                                  }),\n                                  z.object({\n                                    custom: z.never().optional(),\n                                    duration: z.object({\n                                      minutes: z\n                                        .number()\n                                        .int()\n                                        .describe(\n                                          'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                        )\n                                        .min(1)\n                                        .max(44639)\n                                        .optional(),\n                                      name: z\n                                        .string()\n                                        .describe(\n                                          'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                        )\n                                        .max(255)\n                                        .optional()\n                                        .nullable(),\n                                    }),\n                                  }),\n                                ])\n                              )\n                            )\n                            .max(5)\n                            .optional(),\n                        })\n                      )\n                      .min(1)\n                      .max(20)\n                      .optional(),\n                  })\n                  .describe(\n                    'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'Created or updated booking. Available only if you requested\\nto return the booking entity.'\n          )\n          .optional(),\n      })\n    )\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe(\n      'Total number of successes and failures for Bulk Create Bookings.'\n    )\n    .optional(),\n});\nexport const RescheduleBookingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to reschedule.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  slot: z\n    .object({\n      sessionId: z\n        .string()\n        .describe(\n          'Identifier for the underlying session when the session is a single session or generated from a recurring session.'\n        )\n        .optional()\n        .nullable(),\n      serviceId: z\n        .string()\n        .describe('Service identifier. Required.')\n        .optional(),\n      scheduleId: z\n        .string()\n        .describe('Schedule identifier. Required.')\n        .optional(),\n      startDate: z\n        .string()\n        .describe(\n          'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n        )\n        .optional()\n        .nullable(),\n      endDate: z\n        .string()\n        .describe(\n          'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n        )\n        .optional()\n        .nullable(),\n      timezone: z\n        .string()\n        .describe(\n          'The timezone according to which the slot is calculated and presented.'\n        )\n        .optional()\n        .nullable(),\n      resource: z\n        .object({\n          _id: z\n            .string()\n            .describe('Resource ID.')\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          name: z\n            .string()\n            .describe('Resource name.')\n            .max(1200)\n            .optional()\n            .nullable(),\n          transparency: z.enum(['OPAQUE', 'TRANSPARENT']).optional(),\n        })\n        .describe(\n          'The resource required for this slot.\\nWhen populated, the specified resource will be assigned to the slot upon confirmation according to its availability.\\nWhen empty, if `skip_availability_validation` is `false`, a random available resource will be assigned to the slot upon confirmation.\\nOtherwise, one of the service resources will be assigned to the slot randomly upon confirmation.'\n        )\n        .optional(),\n      location: z\n        .object({\n          _id: z\n            .string()\n            .describe(\n              'Business Location ID. Present if the location is a business location.'\n            )\n            .regex(\n              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n              'Must be a valid GUID'\n            )\n            .optional()\n            .nullable(),\n          name: z.string().describe('Location name.').optional().nullable(),\n          formattedAddress: z\n            .string()\n            .describe('A string containing the full address of this location.')\n            .optional()\n            .nullable(),\n          locationType: z\n            .enum(['UNDEFINED', 'OWNER_BUSINESS', 'OWNER_CUSTOM', 'CUSTOM'])\n            .optional(),\n        })\n        .describe('Geographic location of the slot.')\n        .optional(),\n      eventId: z\n        .string()\n        .describe(\n          'Calendar event ID - not supported.\\nIf not empty, on all write flows (create/update), it takes priority over `sessionId`.\\nSo if both `sessionId` and `eventId` are provided, the `sessionId` will be based on the `eventId`.\\nOtherwise, if `eventId` is empty on write flow,'\n        )\n        .min(36)\n        .max(250)\n        .optional()\n        .nullable(),\n      resourceSelections: z\n        .array(\n          z.object({\n            resourceTypeId: z\n              .string()\n              .describe(\n                'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n              )\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            selectionMethod: z\n              .enum(['SPECIFIC_RESOURCE', 'ANY_RESOURCE', 'NO_SELECTION'])\n              .optional(),\n          })\n        )\n        .max(3)\n        .optional(),\n    })\n    .describe('New slot of the booking.'),\n  options: z\n    .intersection(\n      z.object({\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number, which increments by 1 each time the booking is rescheduled.\\nTo prevent conflicting changes, the current revision must be passed when\\nrescheduling the booking.'\n          ),\n        participantNotification: z\n          .object({\n            notifyParticipants: z\n              .boolean()\n              .describe(\n                'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n              )\n              .optional(),\n            message: z\n              .string()\n              .describe(\n                'Custom message to send to the participants about the changes to the booking.'\n              )\n              .optional()\n              .nullable(),\n            metadata: z\n              .record(z.string(), z.string())\n              .describe(\n                'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Information about whether to notify the customer about the rescheduling and\\nthe message to send.'\n          )\n          .optional(),\n        flowControlSettings: z\n          .object({\n            ignoreReschedulePolicy: z\n              .boolean()\n              .describe(\n                'Whether the rescheduling policy applies when rescheduling the booking.\\n\\nWhen passing `false`, you can only reschedule a booking if the rescheduling\\npolicy allows it.\\nWhen passing `true`, the rescheduling policy is ignored and external\\nvalidation providers are also skipped.\\nDefault: `false`.'\n              )\n              .optional(),\n            skipAvailabilityValidation: z\n              .boolean()\n              .describe(\n                'Whether the availability is checked before rescheduling the booking.\\n\\nWhen passing `false`, a booking is only created when the slot or\\nschedule is available.\\nDefault: `false`.'\n              )\n              .optional(),\n            skipBusinessConfirmation: z\n              .boolean()\n              .describe(\n                \"Whether the rescheduled booking's status is automatically set to\\n`CONFIRMED` for services that normally require the owner's manual\\nconfirmation.\\nDefault: `false`.\"\n              )\n              .optional(),\n            allowAddOnChanges: z\n              .boolean()\n              .describe(\n                'Whether you can update the list of add-ons associated with the booking when rescheduling.\\nThe calling [identity](https://dev.wix.com/docs/build-apps/develop-your-app/access/about-identities) must have `BOOKINGS.MANAGE_ADDONS` permissions to specify `true`.\\n\\nDefault: `false`.'\n              )\n              .optional(),\n          })\n          .describe(\n            'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to check availability when rescheduling a booking.'\n          )\n          .optional(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              'Total number of participants. Specify when all participants have booked the\\nsame service variant.'\n            ),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the service choices to book. Specify when not all\\nparticipants have booked the same service variant.'\n            ),\n        }),\n      ])\n    )\n    .describe(\n      'An object representing the available options for rescheduling a booking. '\n    ),\n});\nexport const RescheduleBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Rescheduled booking.')\n    .optional(),\n});\nexport const ConfirmBookingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to confirm.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  revision: z\n    .object({\n      value: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .optional(),\n    })\n    .describe(\n      'Revision number, which increments by 1 each time the booking is updated.\\nTo prevent conflicting changes, the current revision must be passed when\\nupdating the booking.'\n    ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer about the confirmation and\\nthe message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the\\nsession starts. The phone number is taken from `contactDetails.phone`.'\n        )\n        .optional()\n        .nullable(),\n      paymentStatus: z\n        .enum([\n          'UNDEFINED',\n          'NOT_PAID',\n          'PAID',\n          'PARTIALLY_PAID',\n          'REFUNDED',\n          'EXEMPT',\n        ])\n        .optional(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      flowControlSettings: z\n        .object({\n          checkAvailabilityValidation: z\n            .boolean()\n            .describe(\n              'Whether the availability is checked before confirming the booking.\\n\\nWhen specifying `false`, a booking is only updated with status `CONFIRMED`.\\nDefault: `false`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to check availability when confirming a booking.'\n        )\n        .optional(),\n    })\n    .describe(\n      'An object representing the available options for canceling a booking.'\n    )\n    .optional(),\n});\nexport const ConfirmBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Confirmed booking.')\n    .optional(),\n});\nexport const SetBookingSubmissionIdRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to set `formSubmissionId` for.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  submissionId: z\n    .string()\n    .describe(\n      'ID of the [Wix Forms submission](https://dev.wix.com/docs/api-reference/crm/forms/form-submissions/introduction) to associate with the booking.'\n    )\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n});\nexport const SetBookingSubmissionIdResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Updated booking.')\n    .optional(),\n});\nexport const UpdateExtendedFieldsRequest = z.object({\n  _id: z\n    .string()\n    .describe('ID of the booking for which to update extended fields.'),\n  namespace: z\n    .string()\n    .describe(\n      '[Namespace](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-reading-and-writing-schema-plugin-fields#namespaces) of the app for which to update extended fields.'\n    ),\n  options: z\n    .object({\n      namespaceData: z\n        .record(z.string(), z.any())\n        .describe(\n          'Data to update. Structured according to the [schema](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields#json-schema-for-extended-fields) defined when the extended fields were configured.'\n        ),\n    })\n    .describe(\"Options for updating the booking's extended fields.\"),\n});\nexport const UpdateExtendedFieldsResponse = z.object({\n  namespace: z.string().describe('Updated namespace.').max(164).optional(),\n  namespaceData: z\n    .record(z.string(), z.any())\n    .describe('Updated data.')\n    .optional()\n    .nullable(),\n});\nexport const DeclineBookingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to decline.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  revision: z\n    .object({\n      value: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .optional(),\n    })\n    .describe(\n      'Revision number, which increments by 1 each time the booking is updated.\\n\\nTo prevent conflicting changes, the current revision must be specified when\\ndeclining the booking.'\n    ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and\\nthe message to send.'\n        )\n        .optional(),\n      paymentStatus: z\n        .enum([\n          'UNDEFINED',\n          'NOT_PAID',\n          'PAID',\n          'PARTIALLY_PAID',\n          'REFUNDED',\n          'EXEMPT',\n        ])\n        .optional(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      flowControlSettings: z\n        .object({\n          withRefund: z\n            .boolean()\n            .describe(\n              'Whether to issue a refund when declining the booking.\\n\\nThe refund will be issued only if the booking is refundable.\\nCurrently, a booking is considered refundable when it was paid by membership.\\nIf specifying `true`, the booking flow control settings will be set with a refund.\\nIf you specify `false` or an empty field,\\nthe booking flow control settings are set without refund.\\n\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to refund a declined booking.'\n        )\n        .optional(),\n    })\n    .describe(\n      'An object representing the available options for declining a booking.'\n    )\n    .optional(),\n});\nexport const DeclineBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Declined booking.')\n    .optional(),\n});\nexport const CancelBookingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to cancel.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer about the cancellation and\\nthe message to send.'\n        )\n        .optional(),\n      flowControlSettings: z\n        .object({\n          ignoreCancellationPolicy: z\n            .boolean()\n            .describe(\n              'Whether the cancellation policy applies when canceling the booking.\\n\\nWhen passing `false`, you can only cancel a booking if the cancellation policy allows it.\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n          withRefund: z\n            .boolean()\n            .describe(\n              'Whether to issue a refund when canceling the booking.\\n\\nThe refund will be issued only if the booking is refundable.\\nCurrently, a booking is considered refundable when it was paid by membership.\\nIf you specify `true`, the booking flow control settings is set to include a refund.\\nIf `false` is specified or the field remains empty,\\nthe booking flow control settings are set without refund.\\n\\nDefault: `false`.'\n            )\n            .optional()\n            .nullable(),\n          waiveCancellationFee: z\n            .boolean()\n            .describe(\n              \"Whether to waive the cancellation fee when canceling the booking.\\n\\n- `true`: The customer doesn't have to pay a cancellation fee.\\n- `false`: The customer must pay the cancellation fee that's defined in the service's [policy](https://dev.wix.com/docs/api-reference/business-solutions/bookings/policies/booking-policies/introduction).\\n\\nDefault: `false`.\"\n            )\n            .optional()\n            .nullable(),\n        })\n        .describe(\n          \"Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to allow a cancellation even though the service's\\npolicy doesn't allow it.\"\n        )\n        .optional(),\n      revision: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .describe(\n          'Revision number, which increments by 1 each time the booking is updated.\\n\\nTo prevent conflicting changes, the current revision must be specified when\\nmanaging the booking.'\n        ),\n    })\n    .describe(\n      'An object representing the available options for canceling a booking.'\n    ),\n});\nexport const CancelBookingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Canceled booking.')\n    .optional(),\n});\nexport const UpdateNumberOfParticipantsRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to update the number of participants for.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  options: z.intersection(\n    z.object({\n      revision: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .describe(\n          'Revision number, which increments by 1 each time the booking is updated.\\n\\nTo prevent conflicting changes, the current revision must be specified\\nwhen updating the booking.'\n        ),\n    }),\n    z.xor([\n      z.object({\n        totalParticipants: z.never().optional(),\n        participantsChoices: z.never().optional(),\n      }),\n      z.object({\n        participantsChoices: z.never().optional(),\n        totalParticipants: z\n          .number()\n          .int()\n          .describe(\n            'Total number of participants. Specify when all participants have booked the\\nsame service variant.'\n          ),\n      }),\n      z.object({\n        totalParticipants: z.never().optional(),\n        participantsChoices: z\n          .object({\n            serviceChoices: z\n              .array(\n                z.object({\n                  numberOfParticipants: z\n                    .number()\n                    .int()\n                    .describe(\n                      'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                    )\n                    .min(1)\n                    .optional()\n                    .nullable(),\n                  choices: z\n                    .array(\n                      z.intersection(\n                        z.object({\n                          optionId: z\n                            .string()\n                            .describe(\n                              'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional(),\n                        }),\n                        z.xor([\n                          z.object({\n                            custom: z.never().optional(),\n                            duration: z.never().optional(),\n                          }),\n                          z.object({\n                            duration: z.never().optional(),\n                            custom: z\n                              .string()\n                              .describe(\n                                'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                              ),\n                          }),\n                          z.object({\n                            custom: z.never().optional(),\n                            duration: z.object({\n                              minutes: z\n                                .number()\n                                .int()\n                                .describe(\n                                  'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                )\n                                .min(1)\n                                .max(44639)\n                                .optional(),\n                              name: z\n                                .string()\n                                .describe(\n                                  'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                )\n                                .max(255)\n                                .optional()\n                                .nullable(),\n                            }),\n                          }),\n                        ])\n                      )\n                    )\n                    .max(5)\n                    .optional(),\n                })\n              )\n              .min(1)\n              .max(20)\n              .optional(),\n          })\n          .describe(\n            'Information about the service choices the participants have booked. Specify\\nwhen not all participants have booked the same service variant.'\n          ),\n      }),\n    ])\n  ),\n});\nexport const UpdateNumberOfParticipantsResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Updated booking.')\n    .optional(),\n});\nexport const BulkCalculateAllowedActionsRequest = z.object({\n  bookingIds: z.array(z.string()).min(1),\n});\nexport const BulkCalculateAllowedActionsResponse = z.object({\n  results: z\n    .array(\n      z.object({\n        itemMetadata: z\n          .object({\n            _id: z\n              .string()\n              .describe(\n                \"Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\"\n              )\n              .optional()\n              .nullable(),\n            originalIndex: z\n              .number()\n              .int()\n              .describe(\n                'Index of the item within the request array. Allows for correlation between request and response items.'\n              )\n              .optional(),\n            success: z\n              .boolean()\n              .describe(\n                'Whether the requested action was successful for this item. When `false`, the `error` field is populated.'\n              )\n              .optional(),\n            error: z\n              .object({\n                code: z.string().describe('Error code.').optional(),\n                description: z\n                  .string()\n                  .describe('Description of the error.')\n                  .optional(),\n                data: z\n                  .record(z.string(), z.any())\n                  .describe('Data related to the error.')\n                  .optional()\n                  .nullable(),\n              })\n              .describe('Details about the error in case of failure.')\n              .optional(),\n          })\n          .describe(\n            'Metadata for the booking. Including ID, index in the provided sequence, success status, and error.'\n          )\n          .optional(),\n        item: z\n          .object({\n            cancel: z\n              .boolean()\n              .describe('Whether canceling the booking is allowed.')\n              .optional(),\n            reschedule: z\n              .boolean()\n              .describe('Whether rescheduling the booking is allowed.')\n              .optional(),\n          })\n          .describe('Booking entity.')\n          .optional(),\n      })\n    )\n    .optional(),\n  bulkActionMetadata: z\n    .object({\n      totalSuccesses: z\n        .number()\n        .int()\n        .describe('Number of items that were successfully processed.')\n        .optional(),\n      totalFailures: z\n        .number()\n        .int()\n        .describe(\"Number of items that couldn't be processed.\")\n        .optional(),\n      undetailedFailures: z\n        .number()\n        .int()\n        .describe(\n          'Number of failures without details because detailed failure threshold was exceeded.'\n        )\n        .optional(),\n    })\n    .describe('Summary of successful and failed operations.')\n    .optional(),\n});\nexport const MarkBookingAsPendingRequest = z.object({\n  bookingId: z\n    .string()\n    .describe('ID of the booking to mark as `PENDING`.')\n    .regex(\n      /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n      'Must be a valid GUID'\n    ),\n  revision: z\n    .object({\n      value: z\n        .string()\n        .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n        .optional(),\n    })\n    .describe(\n      'Revision number, which increments by 1 each time the booking is updated.\\n\\nTo prevent conflicting changes, the current revision must be specified when\\nmanaging the booking.'\n    ),\n  options: z\n    .object({\n      participantNotification: z\n        .object({\n          notifyParticipants: z\n            .boolean()\n            .describe(\n              'Whether to send a message about the changes to the customer.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          message: z\n            .string()\n            .describe(\n              'Custom message to send to the participants about the changes to the booking.'\n            )\n            .optional()\n            .nullable(),\n          metadata: z\n            .record(z.string(), z.string())\n            .describe(\n              'Information about the delivery channels used to send the notification.\\nFor example, `{\"channels\": \"SMS\" }`, `{\"channels\": \"EMAIL\" }`, or `{\"channels\": \"EMAIL, SMS\" }`.'\n            )\n            .optional(),\n        })\n        .describe(\n          'Information about whether to notify the customer and\\nthe message to send.'\n        )\n        .optional(),\n      sendSmsReminder: z\n        .boolean()\n        .describe(\n          'Whether to send an SMS reminder to the customer 24 hours before the\\nsession starts. The phone number is taken from `contactDetails.phone`.'\n        )\n        .optional()\n        .nullable(),\n      paymentStatus: z\n        .enum([\n          'UNDEFINED',\n          'NOT_PAID',\n          'PAID',\n          'PARTIALLY_PAID',\n          'REFUNDED',\n          'EXEMPT',\n        ])\n        .optional(),\n      doubleBooked: z\n        .boolean()\n        .describe(\n          'Whether this booking has a conflict with at least 1 other confirmed booking.'\n        )\n        .optional()\n        .nullable(),\n      flowControlSettings: z\n        .object({\n          checkAvailabilityValidation: z\n            .boolean()\n            .describe(\n              'Whether to check for double booking conflicts when updating the status.\\n\\n- `true`: Checks for availability conflicts and sets `doubleBooked` to `true`\\nif conflicts exist.\\nThe booking is still marked as `PENDING` for the business to resolve manually.\\n- `false`: No availability checking is performed.\\n\\nDefault: `false`'\n            )\n            .optional(),\n          skipPendingApprovalServiceValidation: z\n            .boolean()\n            .describe(\n              \"Whether to allow marking any booking as pending, even if the service doesn't require manual approval.\\n\\n- `true`: Bypasses the validation that checks if the service has `service.onlineBooking.requireManualApproval` set to `true`.\\n- `false`: Only services that require manual approval can have their bookings marked as pending.\\n\\nDefault: `false`.\"\n            )\n            .optional(),\n        })\n        .describe(\n          'Whether to ignore specific standard procedures of the Wix Bookings flow.\\nFor example, whether to check availability before updating the status.'\n        )\n        .optional(),\n    })\n    .optional(),\n});\nexport const MarkBookingAsPendingResponse = z.object({\n  booking: z\n    .intersection(\n      z.object({\n        _id: z\n          .string()\n          .describe('Booking ID.')\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedEntity: z\n          .intersection(\n            z.object({\n              title: z\n                .string()\n                .describe(\n                  'Session title at the time of booking. If there is no pre-existing session,\\nfor example for appointment-based services, Wix Bookings sets `title` to the service name.'\n                )\n                .max(6000)\n                .optional()\n                .nullable(),\n              tags: z.array(z.string()).optional(),\n            }),\n            z.xor([\n              z.object({\n                slot: z.never().optional(),\n                schedule: z.never().optional(),\n              }),\n              z.object({\n                schedule: z.never().optional(),\n                slot: z\n                  .object({\n                    sessionId: z\n                      .string()\n                      .describe(\n                        'Session ID. For class bookings, this is the ID of the existing session.\\nFor appointment bookings, this field is typically empty during booking creation and gets populated when the booking is confirmed.\\n\\n__Migration Guidance__: Replace usage of this field with `eventId` from the [Time Slots V2 API](https://dev.wix.com/docs/api-reference/business-solutions/bookings/time-slots/time-slots-v2/introduction).\\nYou can follow [these sample flows](https://dev.wix.com/docs/api-reference/business-solutions/bookings/end-to-end-booking-flows) for step-by-step guidance about determining availability and creating bookings.'\n                      )\n                      .optional()\n                      .nullable(),\n                    serviceId: z.string().describe('Service ID.').optional(),\n                    scheduleId: z.string().describe('Schedule ID.').optional(),\n                    eventId: z\n                      .string()\n                      .describe(\n                        'ID of the corresponding [event](https://dev.wix.com/docs/rest/business-management/calendar/events-v3/introduction).\\nAvailable for both appointment and class bookings, not available for course bookings.\\nFor appointment-based services, Wix Bookings automatically populates `eventId` when the booking `status` changes to `CONFIRMED`.\\nFor class bookings, Wix Bookings automatically populates `eventId` upon booking creation.'\n                      )\n                      .min(36)\n                      .max(250)\n                      .optional()\n                      .nullable(),\n                    startDate: z\n                      .string()\n                      .describe(\n                        'The start time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    endDate: z\n                      .string()\n                      .describe(\n                        'The end time of this slot in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the slot was shown to the customer at the time of booking. Wix Bookings ensures that the slot is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    resource: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\"ID of the booking's primary resource.\")\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe(\"Resource's name at the time of booking.\")\n                          .max(40)\n                          .optional()\n                          .nullable(),\n                        email: z\n                          .string()\n                          .describe(\"Resource's email at the time of booking.\")\n                          .max(500)\n                          .optional()\n                          .nullable(),\n                        scheduleId: z\n                          .string()\n                          .describe(\n                            \"ID of the schedule belonging to the booking's primary resource.\"\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                      })\n                      .describe(\n                        '[Primary resource](https://dev.wix.com/docs/rest/business-solutions/bookings/resources/resources-v2/introduction) for the booking.\\nFor example, the [staff member](https://dev.wix.com/docs/rest/business-solutions/bookings/staff-members/introduction) providing the service.'\n                      )\n                      .optional(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe('Location where the session takes place.')\n                      .optional(),\n                    resourceSelections: z\n                      .array(\n                        z.object({\n                          resourceTypeId: z\n                            .string()\n                            .describe(\n                              'ID of the [resource type](https://dev.wix.com/docs/api-reference/business-solutions/bookings/resources/resource-types-v2/introduction).'\n                            )\n                            .regex(\n                              /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                              'Must be a valid GUID'\n                            )\n                            .optional()\n                            .nullable(),\n                          selectionMethod: z\n                            .enum([\n                              'SPECIFIC_RESOURCE',\n                              'ANY_RESOURCE',\n                              'NO_SELECTION',\n                            ])\n                            .describe(\n                              'Information about how the customer has selected the resource for this resource type.'\n                            )\n                            .optional(),\n                        })\n                      )\n                      .max(3)\n                      .optional(),\n                  })\n                  .describe(\n                    '[Booked slot](https://dev.wix.com/docs/rest/business-solutions/bookings/bookings-and-time-slots/time-slots/availability-calendar/query-availability).\\n\\nSpecify `slot` when creating bookings for:\\n- __Appointment-based services__: Individual sessions with service providers (consultations, treatments).\\nWix Bookings creates a new session when the booking is confirmed.\\n- __Class services__: Group sessions at specific times (fitness classes, workshops).\\nWix Bookings links the booking to an existing scheduled session.\\n\\nFor course services, specify `schedule` instead of `slot`.'\n                  ),\n              }),\n              z.object({\n                slot: z.never().optional(),\n                schedule: z\n                  .object({\n                    scheduleId: z\n                      .string()\n                      .describe(\n                        '[Schedule ID](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).'\n                      )\n                      .optional(),\n                    serviceId: z\n                      .string()\n                      .describe('Booked service ID.')\n                      .regex(\n                        /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                        'Must be a valid GUID'\n                      )\n                      .optional()\n                      .nullable(),\n                    location: z\n                      .object({\n                        _id: z\n                          .string()\n                          .describe(\n                            'Business location ID. Available only for locations that are business locations,\\nmeaning the `location_type` is `\"OWNER_BUSINESS\"`.'\n                          )\n                          .regex(\n                            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                            'Must be a valid GUID'\n                          )\n                          .optional()\n                          .nullable(),\n                        name: z\n                          .string()\n                          .describe('Location name.')\n                          .optional()\n                          .nullable(),\n                        formattedAddress: z\n                          .string()\n                          .describe('The full address of this location.')\n                          .optional()\n                          .nullable(),\n                        formattedAddressTranslated: z\n                          .string()\n                          .describe(\n                            'The full translated address of this location.'\n                          )\n                          .max(512)\n                          .optional()\n                          .nullable(),\n                        locationType: z\n                          .enum([\n                            'UNDEFINED',\n                            'OWNER_BUSINESS',\n                            'OWNER_CUSTOM',\n                            'CUSTOM',\n                          ])\n                          .describe('Location type.')\n                          .optional(),\n                      })\n                      .describe(\n                        \"[Location](https://dev.wix.com/docs/rest/business-management/locations/introduction) where the schedule's sessions take place.\"\n                      )\n                      .optional(),\n                    timezone: z\n                      .string()\n                      .describe(\n                        'Time zone in [IANA tz database format](https://en.wikipedia.org/wiki/Tz_database).\\nFor example, `America/New_York` or `UTC`. This is the time zone in which the schedule was shown to the customer at the time of booking. Wix Bookings ensures that the schedule is always displayed in this same time zone to the customer, including when they view or edit their booking in the future.'\n                      )\n                      .optional()\n                      .nullable(),\n                    firstSessionStart: z\n                      .string()\n                      .describe(\n                        'Start time of the first session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                    lastSessionEnd: z\n                      .string()\n                      .describe(\n                        'End time of the last session related to the booking in `YYYY-MM-DDThh:mm:ss`, `YYYY-MM-DDThh:mm:ss:SSS`, or `YYYY-MM-DDThh:mm:ss:SSSZZ` [ISO-8601 format](https://en.wikipedia.org/wiki/ISO_8601). For example, `2026-01-30T13:30:00`, `2026-01-30T13:30:00:000`, or `2026-01-30T13:30:00:000-05:00`.'\n                      )\n                      .optional()\n                      .nullable(),\n                  })\n                  .describe(\n                    '[Booked schedule](https://dev.wix.com/docs/rest/business-management/calendar/schedules-v3/introduction).\\n\\nSpecify `schedule` when creating bookings for:\\n- __Course services__: Multi-session offerings spanning weeks or months (educational courses, training programs).\\nWix Bookings enrolls participants in all sessions defined by the course schedule.'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'An object describing the bookable entity - either a specific time slot or a recurring schedule.\\n\\nThe structure depends on the type of service being booked:\\n\\n__For appointment services__: Use `slot` to book a specific time slot with a\\nservice provider. Appointments are typically one-time sessions at a specific date and time.\\n\\n__For class services__: Use `slot` to book a specific class session. Classes\\nare individual sessions that can have multiple participants.\\n\\n__For course services__: Use `schedule` to book an entire course consisting of\\nmultiple sessions over time. Courses are recurring, multi-session offerings.\\n\\nChoose the appropriate field based on your service type and booking requirements.'\n          )\n          .optional(),\n        contactDetails: z\n          .object({\n            contactId: z\n              .string()\n              .describe('Contact ID.')\n              .regex(\n                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                'Must be a valid GUID'\n              )\n              .optional()\n              .nullable(),\n            firstName: z\n              .string()\n              .describe(\n                \"Contact's first name. When populated from a standard booking form, this\\nproperty corresponds to the `name` field.\"\n              )\n              .optional()\n              .nullable(),\n            lastName: z\n              .string()\n              .describe(\"Contact's last name.\")\n              .optional()\n              .nullable(),\n            email: z\n              .string()\n              .describe(\n                \"Contact's email. If no [contact](https://dev.wix.com/docs/rest/crm/members-contacts/contacts/contacts/contact-v4/contact-object)\\nwith this email exist, a new contact is created.\\nUsed to validate coupon usage limitations per contact. If not specified,\\nthe coupon usage limitation will not be enforced. (Coupon usage limitation\\nvalidation is not supported yet).\"\n              )\n              .email()\n              .optional()\n              .nullable(),\n            phone: z\n              .string()\n              .describe(\"Contact's phone number.\")\n              .optional()\n              .nullable(),\n            fullAddress: z\n              .intersection(\n                z.object({\n                  country: z\n                    .string()\n                    .describe('Country code.')\n                    .optional()\n                    .nullable(),\n                  subdivision: z\n                    .string()\n                    .describe(\n                      'Subdivision. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                    )\n                    .optional()\n                    .nullable(),\n                  city: z.string().describe('City name.').optional().nullable(),\n                  postalCode: z\n                    .string()\n                    .describe('Zip/postal code.')\n                    .optional()\n                    .nullable(),\n                  addressLine2: z\n                    .string()\n                    .describe(\n                      'Free text providing more detailed address info. Usually contains Apt, Suite, and Floor.'\n                    )\n                    .optional()\n                    .nullable(),\n                  formattedAddress: z\n                    .string()\n                    .describe(\n                      'A string containing the full address of this location.'\n                    )\n                    .optional()\n                    .nullable(),\n                  hint: z\n                    .string()\n                    .describe('Free text to help find the address.')\n                    .optional()\n                    .nullable(),\n                  geocode: z\n                    .object({\n                      latitude: z\n                        .number()\n                        .describe('Address latitude.')\n                        .optional()\n                        .nullable(),\n                      longitude: z\n                        .number()\n                        .describe('Address longitude.')\n                        .optional()\n                        .nullable(),\n                    })\n                    .describe('Coordinates of the physical address.')\n                    .optional(),\n                  countryFullname: z\n                    .string()\n                    .describe('Country full name.')\n                    .optional()\n                    .nullable(),\n                  subdivisions: z\n                    .array(\n                      z.object({\n                        code: z\n                          .string()\n                          .describe(\n                            'Subdivision code. Usually state, region, prefecture or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).'\n                          )\n                          .optional(),\n                        name: z\n                          .string()\n                          .describe('Subdivision full name.')\n                          .optional(),\n                      })\n                    )\n                    .optional(),\n                }),\n                z.xor([\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z.never().optional(),\n                  }),\n                  z.object({\n                    addressLine: z.never().optional(),\n                    streetAddress: z\n                      .object({\n                        number: z\n                          .string()\n                          .describe('Street number.')\n                          .optional(),\n                        name: z.string().describe('Street name.').optional(),\n                        apt: z\n                          .string()\n                          .describe('Apartment number.')\n                          .optional(),\n                      })\n                      .describe('Street name, number and apartment number.'),\n                  }),\n                  z.object({\n                    streetAddress: z.never().optional(),\n                    addressLine: z\n                      .string()\n                      .describe(\n                        'Main address line, usually street and number, as free text.'\n                      ),\n                  }),\n                ])\n              )\n              .describe(\"Contact's full address.\")\n              .optional(),\n            timeZone: z\n              .string()\n              .describe(\"Contact's time zone.\")\n              .optional()\n              .nullable(),\n            countryCode: z\n              .string()\n              .describe(\n                \"Contact's country in [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\\nformat.\"\n              )\n              .optional()\n              .nullable(),\n          })\n          .describe(\n            'Contact details of the site visitor or [member](https://dev.wix.com/docs/api-reference/crm/members-contacts/members/members/introduction)\\nmaking the booking.'\n          )\n          .optional(),\n        additionalFields: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('ID of the form field as defined in the form.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              value: z\n                .string()\n                .describe('Value that was submitted for this field.')\n                .optional()\n                .nullable(),\n              label: z\n                .string()\n                .describe(\"Form field's label at the time of submission.\")\n                .optional()\n                .nullable(),\n              valueType: z\n                .enum(['SHORT_TEXT', 'LONG_TEXT', 'CHECK_BOX'])\n                .optional(),\n            })\n          )\n          .optional(),\n        status: z\n          .enum([\n            'CREATED',\n            'CONFIRMED',\n            'CANCELED',\n            'PENDING',\n            'DECLINED',\n            'WAITING_LIST',\n          ])\n          .describe(\n            \"Booking status. A booking is automatically confirmed if the service allows it\\nand an eCommerce order is created. It is automatically declined if there is a\\ndouble booking and the customer hasn't paid or is eligible for an automatic\\nrefund. Currently, only payments with pricing plans are automatically refundable.\"\n          )\n          .optional(),\n        paymentStatus: z\n          .enum([\n            'UNDEFINED',\n            'NOT_PAID',\n            'PAID',\n            'PARTIALLY_PAID',\n            'REFUNDED',\n            'EXEMPT',\n          ])\n          .describe(\n            \"The payment status of the booking. This field automatically syncs with the\\n`paymentStatus` of the corresponding [eCommerce order](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/introduction)\\nwhen customers use Wix eCommerce checkout.\\n\\n### Integration patterns\\n\\n__When using Wix eCommerce checkout__: Wix Bookings automatically syncs the payment status based on the eCommerce order's payment status.\\nDo not manually update this field.\\n\\n__When using custom payment flows__: You can manually update the payment status with [Confirm Booking or Decline Booking](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings/bookings-writer-v2/confirm-or-decline-booking) to reflect the customer's payment state.\\n\\n__For membership/pricing plan payments__: Wix Bookings automatically manages the payment status when customers pay with an active [pricing plan](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/pricing-plans/introduction) subscription.\\n\\nAll payment statuses are supported for every booking `status`.\"\n          )\n          .optional(),\n        selectedPaymentOption: z\n          .enum([\n            'UNDEFINED',\n            'OFFLINE',\n            'ONLINE',\n            'MEMBERSHIP',\n            'MEMBERSHIP_OFFLINE',\n          ])\n          .describe(\n            \"Payment option selected by the customer. If the customer hasn't completed their checkout, they may still change the payment method. Must be one of the payment options offered by the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction), unless `skipSelectedPaymentOptionValidation` is `true`.\\n\\nWhen the customer pays with a [Wix eCommerce checkout](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/checkout/introduction), this field is required.\\nOtherwise, the Create Booking call fails.\\nFor custom checkouts, you don't have to specify this field.\"\n          )\n          .optional(),\n        _createdDate: z\n          .date()\n          .describe(\n            'Date and time the booking was created in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        externalUserId: z\n          .string()\n          .describe('External user ID that you can provide.')\n          .optional()\n          .nullable(),\n        revision: z\n          .string()\n          .regex(/^-?\\d+$/, 'Must be a valid Int64 string')\n          .describe(\n            'Revision number to be used when updating, rescheduling, or cancelling the booking.\\nIncrements by 1 each time the booking is updated, rescheduled, or canceled. To prevent conflicting changes, the current revision must be specified when updating the booking.'\n          )\n          .optional()\n          .nullable(),\n        createdBy: z\n          .intersection(\n            z.object({\n              contactId: z\n                .string()\n                .describe(\n                  \"ID of of a contact in the site's [CRM by Ascend](https://www.wix.com/ascend/crm) system.\"\n                )\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional()\n                .nullable(),\n            }),\n            z.xor([\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n              }),\n              z.object({\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                anonymousVisitorId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has not logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z.never().optional(),\n                memberId: z\n                  .string()\n                  .describe(\n                    'ID of a site visitor that has logged in to the site.'\n                  )\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                appId: z.never().optional(),\n                wixUserId: z\n                  .string()\n                  .describe('ID of a Wix user (site owner, contributor, etc.).')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n              z.object({\n                anonymousVisitorId: z.never().optional(),\n                memberId: z.never().optional(),\n                wixUserId: z.never().optional(),\n                appId: z\n                  .string()\n                  .describe('ID of an app.')\n                  .regex(\n                    /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                    'Must be a valid GUID'\n                  ),\n              }),\n            ])\n          )\n          .describe(\n            'ID of the creator of the booking.\\nIf `appId` and another ID are present, the other ID takes precedence.'\n          )\n          .optional(),\n        startDate: z\n          .date()\n          .describe(\n            'The start date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the start date of the slot. For a schedule, this is the start date of the first session.'\n          )\n          .optional()\n          .nullable(),\n        endDate: z\n          .date()\n          .describe(\n            'The end date of the booking in `YYYY-MM-DDThh:mm:ss.sssZ` format.\\nFor a slot, this is the end date of the slot. For a schedule, this is the end date of the last session.'\n          )\n          .optional()\n          .nullable(),\n        _updatedDate: z\n          .date()\n          .describe(\n            'Date and time the booking was updated in `YYYY-MM-DDThh:mm:ss.sssZ` format.'\n          )\n          .optional()\n          .nullable(),\n        extendedFields: z\n          .object({\n            namespaces: z\n              .record(z.string(), z.record(z.string(), z.any()))\n              .describe(\n                'Extended field data. Each key corresponds to the namespace of the app that created the extended fields.\\nThe value of each key is structured according to the schema defined when the extended fields were configured.\\n\\nYou can only access fields for which you have the appropriate permissions.\\n\\nLearn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields).'\n              )\n              .optional(),\n          })\n          .describe(\n            'Custom field data for this object.\\nExtended fields must be configured in the app dashboard before they can be accessed with API calls.'\n          )\n          .optional(),\n        doubleBooked: z\n          .boolean()\n          .describe(\n            'Whether this booking overlaps with another confirmed booking. Returned\\nonly if set to `true`.'\n          )\n          .optional()\n          .nullable(),\n        formSubmissionId: z\n          .string()\n          .describe(\n            'ID of the [form submission](https://dev.wix.com/docs/rest/crm/forms/form-submissions/introduction)\\nassociated with this booking.'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        formId: z\n          .string()\n          .describe(\n            \"ID of the [form](https://dev.wix.com/docs/rest/crm/forms/form-schemas/form-object)\\nassociated with this booking. The value depends on how the\\nbooking was created:\\n- For bookings created with Create Booking or Bulk Create Booking, `formId`\\nis identical to ID of the booking form that's associated with the relevant\\nservice.\\n- For bookings created via Create Multi Service Booking, `formId` is set to\\n`00000000-0000-0000-0000-000000000000` (the default booking form ID).\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        bookedAddOns: z\n          .array(\n            z.object({\n              _id: z\n                .string()\n                .describe('The ID of the add-on.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              groupId: z\n                .string()\n                .describe('The ID of the add-on group.')\n                .regex(\n                  /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                  'Must be a valid GUID'\n                )\n                .optional(),\n              durationInMinutes: z\n                .number()\n                .int()\n                .describe(\n                  'The add-on duration in minutes at the time of booking.\\nPopulated for duration-based add-ons.'\n                )\n                .min(1)\n                .max(1440)\n                .optional()\n                .nullable(),\n              quantity: z\n                .number()\n                .int()\n                .describe(\n                  'The quantity of booked add-ons.\\nFor duration-based add-ons, `quantity` is not applicable.\\nIf `quantity` is provided as `1` for a duration-based add-on, it will be accepted but the value will be cleared.\\nIf any other value is provided, an `INVALID_ARGUMENT` error will be returned with the message: \"Invalid AddOn details: either duration or quantity must be set correctly\".'\n                )\n                .min(1)\n                .max(1000)\n                .optional()\n                .nullable(),\n              name: z\n                .string()\n                .describe('Add-on `name` at the time of booking.')\n                .max(100)\n                .optional()\n                .nullable(),\n              nameTranslated: z\n                .string()\n                .describe(\n                  'Add-on name translated to the language the customer used during booking.'\n                )\n                .max(100)\n                .optional()\n                .nullable(),\n            })\n          )\n          .max(21)\n          .optional(),\n        appId: z\n          .string()\n          .describe(\n            'ID of the app that\\'s associated with the booking.\\nInherited from the `appId` of the service associated with the booking.\\nBookings are displayed in Wix Bookings only if they are associated with the Wix Bookings app ID or have no associated app ID.\\nFor bookings from Wix apps, the following values apply:\\n- Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\\n- Wix Services: `\"cc552162-24a4-45e0-9695-230c4931ef40\"`\\n- Wix Meetings: `\"6646a75c-2027-4f49-976c-58f3d713ed0f\"`\\n[Full list of apps created by Wix](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/platform/about-apps-created-by-wix).\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->'\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        createdByAppId: z\n          .string()\n          .describe(\n            \"ID of the app that created the booking. This field is used for analytics, auditing, and tracking creation sources.\\nThis read-only field is automatically populated during booking creation by checking these sources in order:\\n1. The caller's App ID from the request identity context (external app or server identity).\\n2. The booking's `appId` field (inherited from the service's `appId`).\\n3. The Wix Bookings App ID (`13d21c63-b5ec-5912-8397-c3a5ddb27a97`) as the final fallback.\\n<!-- TODO: Uncomment when Platform docs are published - Learn more about [app identity in the Bookings Platform](https://dev.wix.com/docs/api-reference/business-solutions/bookings/bookings-platform/app-identity-in-the-bookings-platform). -->\"\n          )\n          .regex(\n            /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n            'Must be a valid GUID'\n          )\n          .optional()\n          .nullable(),\n        depositSelected: z\n          .boolean()\n          .describe(\n            'Whether the customer chooses to pay only the deposit amount upfront.\\n\\n- `true`: The customer pays only the deposit amount upfront.\\n- `false`: The customer pays the full price upfront.\\n\\nUsed only when `selectedPaymentOption` is `ONLINE` and the [service](https://dev.wix.com/docs/api-reference/business-solutions/bookings/services/services-v2/introduction) has a deposit amount set.\\n\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `false`, this field must be `true`.\\nWhen the service supports deposit payments and `fullUpfrontPaymentAllowed` is `true`, this field can be `true` or `false`.'\n          )\n          .optional()\n          .nullable(),\n      }),\n      z.xor([\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z.never().optional(),\n        }),\n        z.object({\n          participantsChoices: z.never().optional(),\n          totalParticipants: z\n            .number()\n            .int()\n            .describe(\n              \"Total number of participants.\\nWhen creating a booking, use this field only if the relevant service has fixed pricing and doesn't offer [variants and options](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\"\n            )\n            .min(1),\n        }),\n        z.object({\n          totalParticipants: z.never().optional(),\n          participantsChoices: z\n            .object({\n              serviceChoices: z\n                .array(\n                  z.object({\n                    numberOfParticipants: z\n                      .number()\n                      .int()\n                      .describe(\n                        'Number of participants for this [variant](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).'\n                      )\n                      .min(1)\n                      .optional()\n                      .nullable(),\n                    choices: z\n                      .array(\n                        z.intersection(\n                          z.object({\n                            optionId: z\n                              .string()\n                              .describe(\n                                'ID of the corresponding option for the choice. For example, the choice `child`\\ncould correspond to the option `ageGroup`. In this case, `optionId` is the ID\\nfor the `ageGroup` option.'\n                              )\n                              .regex(\n                                /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,\n                                'Must be a valid GUID'\n                              )\n                              .optional(),\n                          }),\n                          z.xor([\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.never().optional(),\n                            }),\n                            z.object({\n                              duration: z.never().optional(),\n                              custom: z\n                                .string()\n                                .describe(\n                                  'Value for one of the choices in the [`CustomServiceOption.choices`](https://example.com) list.\\nChoices are specific values for an option the customer can choose to book. For example,\\nthe option `ageGroup` may have these choices: `child`, `student`, `adult`, and `senior`.\\nEach choice may have a different price.'\n                                ),\n                            }),\n                            z.object({\n                              custom: z.never().optional(),\n                              duration: z.object({\n                                minutes: z\n                                  .number()\n                                  .int()\n                                  .describe(\n                                    'Duration of the service in minutes.\\nMin: 1 minute, Max: 30 days, 23 hours, and 59 minutes'\n                                  )\n                                  .min(1)\n                                  .max(44639)\n                                  .optional(),\n                                name: z\n                                  .string()\n                                  .describe(\n                                    'Name of the duration option.\\nDefaults to the formatted duration e.g. \"1 hour, 30 minutes\".'\n                                  )\n                                  .max(255)\n                                  .optional()\n                                  .nullable(),\n                              }),\n                            }),\n                          ])\n                        )\n                      )\n                      .max(5)\n                      .optional(),\n                  })\n                )\n                .min(1)\n                .max(20)\n                .optional(),\n            })\n            .describe(\n              'Information about the booked service choices and participant count for each choice.\\nWhen creating a booking, use this field only if the booking includes multiple [service variants](https://dev.wix.com/docs/rest/business-solutions/bookings/services/service-options-and-variants/introduction).\\n\\nFor example, use this for a spa package booking that includes different service levels:\\n- 2 participants chose \"Standard Package\".\\n- 1 participant chose \"VIP Package\".'\n            ),\n        }),\n      ])\n    )\n    .describe('Updated booking.')\n    .optional(),\n});\n"],"mappings":";AAAA,YAAY,OAAO;AAEZ,IAAM,iCAAmC,SAAO;AAAA,EACrD,WACG,SAAO,EACP,SAAS,0CAA0C,EACnD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,eACG,OAAK;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,kCAAoC,SAAO;AAAA,EACtD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,kBAAkB,EAC3B,SAAS;AACd,CAAC;AACM,IAAM,qCAAuC,SAAO;AAAA,EACzD,SACG;AAAA,IACG,SAAO;AAAA,MACP,WACG,SAAO,EACP,SAAS,0CAA0C,EACnD;AAAA,QACC;AAAA,QACA;AAAA,MACF;AAAA,MACF,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,IAAI,CAAC,EACL,IAAI,GAAG;AAAA,EACV,SACG,SAAO;AAAA,IACN,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,sCAAwC,SAAO;AAAA,EAC1D,SACG;AAAA,IACG,SAAO;AAAA,MACP,cACG,SAAO;AAAA,QACN,KACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,OACG,SAAO;AAAA,UACN,MAAQ,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,UAClD,aACG,SAAO,EACP,SAAS,2BAA2B,EACpC,SAAS;AAAA,UACZ,MACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B,SAAS,4BAA4B,EACrC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA,SAAS,6CAA6C,EACtD,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,MACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,cAC/B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,oBACG,SAAO;AAAA,IACN,gBACG,SAAO,EACP,IAAI,EACJ,SAAS,mDAAmD,EAC5D,SAAS;AAAA,IACZ,eACG,SAAO,EACP,IAAI,EACJ,SAAS,6CAA6C,EACtD,SAAS;AAAA,IACZ,oBACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,kCAAoC,SAAO;AAAA,EACtD,OAAS,SAAO,EAAE,SAAS,kCAAkC,EAAE,IAAI,IAAI;AAAA,EACvE,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,IACC;AAAA,EACF;AACJ,CAAC;AACM,IAAM,mCAAqC,SAAO;AAAA,EACvD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,mBAAmB,EAC5B,SAAS;AACd,CAAC;AACM,IAAM,sCAAwC,SAAO;AAAA,EAC1D,OAAS,SAAO,EAAE,SAAS,kCAAkC,EAAE,IAAI,IAAI;AAAA,EACvE,MACG,SAAO;AAAA,IACN,WACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,WACG,SAAO,EACP,SAAS,+BAA+B,EACxC,SAAS;AAAA,IACZ,YACG,SAAO,EACP,SAAS,gCAAgC,EACzC,SAAS;AAAA,IACZ,WACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,SACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP,SAAS,cAAc,EACvB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,MACZ,cAAgB,OAAK,CAAC,UAAU,aAAa,CAAC,EAAE,SAAS;AAAA,IAC3D,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,MAAQ,SAAO,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,SAAS;AAAA,MAChE,kBACG,SAAO,EACP,SAAS,wDAAwD,EACjE,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,CAAC,aAAa,kBAAkB,gBAAgB,QAAQ,CAAC,EAC9D,SAAS;AAAA,IACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,IACZ,SACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,IACZ,oBACG;AAAA,MACG,SAAO;AAAA,QACP,gBACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,iBACG,OAAK,CAAC,qBAAqB,gBAAgB,cAAc,CAAC,EAC1D,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,EACd,CAAC,EACA,SAAS,wCAAwC;AAAA,EACpD,SAAW,SAAO;AAAA,IAChB,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC;AACH,CAAC;AACM,IAAM,uCAAyC,SAAO;AAAA,EAC3D,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,sBAAsB,EAC/B,SAAS;AACd,CAAC;AACM,IAAM,+BAAiC,SAAO;AAAA,EACnD,OAAS,SAAO,EAAE,SAAS,kCAAkC,EAAE,IAAI,IAAI;AAAA,EACvE,SACG,SAAO;AAAA,IACN,QACG,QAAQ,OAAK,CAAC,cAAc,CAAC,CAAC,EAC9B,IAAI,CAAC,EACL,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,gCAAkC,SAAO;AAAA,EACpD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,oBAAoB,EAC7B,SAAS;AAAA,EACZ,yBACG,SAAO;AAAA,IACN,QACG,UAAQ,EACR,SAAS,kDAAkD,EAC3D,SAAS;AAAA,IACZ,YACG,UAAQ,EACR,SAAS,qDAAqD,EAC9D,SAAS;AAAA,EACd,CAAC,EACA,SAAS,6CAA6C,EACtD,SAAS;AAAA,EACZ,YACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,iBAAiB,EAC1B;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,WACG,SAAO,EACP,SAAS,4CAA4C,EACrD;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,iBACG,SAAO;AAAA,MACN,OACG,SAAO;AAAA,QACN,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,UACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,gBACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA,SAAS,8BAA8B,EACvC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA,SAAS,4BAA4B,EACrC,SAAS;AAAA,MACZ,SACG,OAAK,CAAC,mBAAmB,gBAAgB,kBAAkB,CAAC,EAC5D;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA,SAAS,2BAA2B,EACpC,SAAS;AAAA,IACZ,eACG,SAAO;AAAA,MACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,aACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,MACZ,uBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,+BAAiC,SAAO;AAAA,EACnD,OAAS,SAAO,EAAE,SAAS,kCAAkC,EAAE,IAAI,IAAI;AAAA,EACvE,SACG,SAAO;AAAA,IACN,QACG;AAAA,MACG,OAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,gCAAkC,SAAO;AAAA,EACpD,SACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,OACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,gBACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,MACG,OAAK,CAAC,eAAe,SAAS,QAAQ,CAAC,EACvC;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,WACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,MACG,SAAO,EACP,SAAS,eAAe,EACxB,IAAI,GAAG,EACP,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,IACZ,aACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,IACZ,SACG,SAAO,EACP,SAAS,oDAAoD,EAC7D,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,IACZ,iBACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,IACZ,OACG,SAAO;AAAA,MACN,OACG;AAAA,QACG;AAAA,UACE,SAAO,CAAC,CAAC;AAAA,UACT,MAAI;AAAA,YACF,SAAO,EAAE,OAAS,QAAM,EAAE,SAAS,EAAE,CAAC;AAAA,YACtC,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF,EACC,IAAI,GAAG,EACP,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO,CAAC,CAAC;AAAA,QACT,MAAI;AAAA,UACF,SAAO,EAAE,OAAS,QAAM,EAAE,SAAS,EAAE,CAAC;AAAA,UACtC,SAAO;AAAA,YACP,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC,SAAS,4CAA4C,EACrD,SAAS;AAAA,MACZ,YACG;AAAA,QACG,SAAO,CAAC,CAAC;AAAA,QACT,MAAI;AAAA,UACF,SAAO,EAAE,OAAS,QAAM,EAAE,SAAS,EAAE,CAAC;AAAA,UACtC,SAAO;AAAA,YACP,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC,SAAS,0CAA0C,EACnD,SAAS;AAAA,IACd,CAAC,EACA,SAAS,oCAAoC,EAC7C,SAAS;AAAA,IACZ,QACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP,SAAS,cAAc,EACvB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS;AAAA,MACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,MACZ,WACG,SAAO,EACP,IAAI,EACJ,SAAS,6CAA6C,EACtD,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,MACG,SAAO;AAAA,MACN,KACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA,SAAS,wDAAwD,EACjE,SAAS;AAAA,IACZ,SACG;AAAA,MACG,SAAO;AAAA,QACP,UACG,OAAK,CAAC,SAAS,UAAU,UAAU,QAAQ,CAAC,EAC5C;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,SAAO;AAAA,UACN,QACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,UACG,UAAQ,EACR,SAAS,8CAA8C,EACvD,SAAS,EACT,SAAS;AAAA,UACZ,SACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,aACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,gBAAkB,QAAQ,SAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,QACrD,aACG,OAAK,CAAC,UAAU,WAAW,CAAC,EAC5B;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,MACC,MAAI;AAAA,QACF,SAAO;AAAA,UACP,OAAS,QAAM,EAAE,SAAS;AAAA,UAC1B,QAAU,QAAM,EAAE,SAAS;AAAA,UAC3B,QAAU,QAAM,EAAE,SAAS;AAAA,QAC7B,CAAC;AAAA,QACC,SAAO;AAAA,UACP,QAAU,QAAM,EAAE,SAAS;AAAA,UAC3B,QAAU,QAAM,EAAE,SAAS;AAAA,UAC3B,OACG,SAAO;AAAA,YACN,OACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,2BACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,QACC,SAAO;AAAA,UACP,OAAS,QAAM,EAAE,SAAS;AAAA,UAC1B,QAAU,QAAM,EAAE,SAAS;AAAA,UAC3B,QACG,SAAO;AAAA,YACN,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,QACC,SAAO;AAAA,UACP,OAAS,QAAM,EAAE,SAAS;AAAA,UAC1B,QAAU,QAAM,EAAE,SAAS;AAAA,UAC3B,QACG,SAAO;AAAA,YACN,cACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,UACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,UACG,SAAO;AAAA,cACN,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,2BACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,MACH,CAAC;AAAA,IACH,EACC;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,eACG,SAAO;AAAA,MACN,SACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,uBACG,UAAQ,EACR,SAAS,wDAAwD,EACjE,SAAS,EACT,SAAS;AAAA,MACZ,uBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA,SAAS,0BAA0B,EACnC,SAAS;AAAA,IACZ,cACG,SAAO;AAAA,MACN,SACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA,SAAS,uCAAuC,EAChD,SAAS;AAAA,IACZ,WACG;AAAA,MACG;AAAA,QACE,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,cAAc,EACvB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,MACG,OAAK,CAAC,UAAU,YAAY,UAAU,CAAC,EACvC,SAAS,qCAAqC,EAC9C,SAAS;AAAA,UACZ,mBACG,SAAO;AAAA,YACN,MAAQ,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,YACrC,aAAe,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5C,SAAW,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,YACxC,YAAc,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,YAC3C,cAAgB,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,UAC/C,CAAC,EACA,SAAS,qDAAqD,EAC9D,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,QAAU,QAAM,EAAE,SAAS;AAAA,UAC7B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,QAAU,QAAM,EAAE,SAAS;AAAA,YAC3B,UACG,SAAO;AAAA,cACN,KACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,yBAAyB,EAClC,IAAI,GAAG,EACP,SAAS;AAAA,cACZ,SACG,UAAQ,EACR;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO;AAAA,gBACN,MAAQ,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBACrC,aAAe,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBAC5C,SAAW,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBACxC,YAAc,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBAC3C,cAAgB,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,cAC/C,CAAC,EACA,SAAS,4BAA4B,EACrC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0BAA0B,EACnC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0BAA0B,EACnC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,uCAAuC;AAAA,UACrD,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,QACG,SAAO;AAAA,cACN,KACG,SAAO,EACP,SAAS,4BAA4B,EACrC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO;AAAA,gBACN,MAAQ,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBACrC,aAAe,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBAC5C,SAAW,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBACxC,YAAc,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,gBAC3C,cAAgB,SAAO,EAAE,SAAS,EAAE,SAAS;AAAA,cAC/C,CAAC,EACA,SAAS,iCAAiC,EAC1C,SAAS;AAAA,YACd,CAAC,EACA,SAAS,qCAAqC;AAAA,UACnD,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF,EACC,IAAI,GAAG,EACP,SAAS;AAAA,IACZ,eACG,SAAO;AAAA,MACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL,SAAS,uCAAuC,EAChD,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL,SAAS,uCAAuC,EAChD,SAAS,EACT,SAAS;AAAA,MACZ,MACG,SAAO,EACP,SAAS,qBAAqB,EAC9B,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,MACZ,yBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,IAAI,IAAI,EACR,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,UAAQ,EACR,SAAS,sDAAsD,EAC/D,SAAS,EACT,SAAS;AAAA,MACZ,yBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,0BACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,MACd,CAAC,EACA,SAAS,qCAAqC,EAC9C,SAAS;AAAA,MACZ,wBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,wBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,MACd,CAAC,EACA,SAAS,oCAAoC,EAC7C,SAAS;AAAA,MACZ,sBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,oBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,yBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,6BACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,QACZ,gBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA,SAAS,uCAAuC,EAChD,SAAS;AAAA,MACZ,kBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,uBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,2BACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,QACZ,gBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA,SAAS,0CAA0C,EACnD,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,QACZ,0BACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,MACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,MACZ,oBACG,SAAO;AAAA,QACN,2BACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,MACd,CAAC,EACA,SAAS,gDAAgD,EACzD,SAAS;AAAA,MACZ,iBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,mBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,MACZ,uBACG,SAAO;AAAA,QACN,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,qBACG;AAAA,UACG;AAAA,YACE,SAAO;AAAA,cACP,gBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,QAAU,QAAM,EAAE,SAAS;AAAA,gBAC3B,YAAc,QAAM,EAAE,SAAS;AAAA,cACjC,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,YAAc,QAAM,EAAE,SAAS;AAAA,gBAC/B,QACG,SAAO;AAAA,kBACN,OACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,QAAU,QAAM,EAAE,SAAS;AAAA,gBAC3B,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AAAA,QACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,QACZ,uBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA,SAAS,8BAA8B,EACvC,SAAS;AAAA,MACZ,sBACG,SAAO;AAAA,QACN,SAAW,UAAQ,EAAE,SAAS,kBAAkB,EAAE,SAAS;AAAA,MAC7D,CAAC,EACA,SAAS,8BAA8B,EACvC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,mBACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,yBACG,SAAO;AAAA,QACN,WACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,UACd,CAAC;AAAA,QACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,QACZ,kBAAoB,QAAQ,SAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,QAC7D,qBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC,EACL,IAAI,GAAG,EACP,SAAS;AAAA,MACd,CAAC,EACA,SAAS,iDAAiD,EAC1D,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,gBAAkB,QAAQ,SAAO,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,IACtD,kBACG;AAAA,MACG,SAAO;AAAA,QACP,cACG,SAAO;AAAA,UACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,gCAAgC,EACzC,IAAI,EAAE,EACN,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,IACZ,gBACG;AAAA,MACG,SAAO;AAAA,QACP,MACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,IAAI,GAAG,EACP,SAAS;AAAA,QACZ,QACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,cACG,OAAK,EACL;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,GAAG,EACP,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,MACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,IAAI,GAAG,EACP,SAAS;AAAA,MACZ,QACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,MACG,SAAO;AAAA,MACN,aACG,SAAO,EACP,SAAS,+BAA+B,EACxC,SAAS;AAAA,MACZ,aACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,gBACG,SAAO;AAAA,MACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,SACG,SAAO;AAAA,MACN,MACG;AAAA,QACG,SAAO;AAAA,UACP,MACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,QACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,UACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,UACG,SAAO;AAAA,QACN,qBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,UACG;AAAA,UACG,SAAO;AAAA,YACP,MAAQ,SAAO,EAAE,SAAS,gBAAgB,EAAE,SAAS;AAAA,YACrD,QACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,QACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,MACd,CAAC,EACA,SAAS,uBAAuB,EAChC,SAAS;AAAA,IACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,IACZ,cACG,OAAK,EACL;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,cACG,OAAK,EACL;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,aACG;AAAA,MACG,SAAO;AAAA,QACP,KACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,MACG,SAAO,EACP,SAAS,2BAA2B,EACpC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UAAY,QAAQ,SAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QAC9C,QACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,IACZ,cACG;AAAA,MACG,SAAO;AAAA,QACP,SACG,SAAO,EACP,SAAS,mBAAmB,EAC5B;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,IACZ,gBACG,SAAO;AAAA,MACN,oBACG,OAAK,CAAC,YAAY,SAAS,CAAC,EAC5B,SAAS,uBAAuB,EAChC,SAAS;AAAA,IACd,CAAC,EACA,SAAS,uCAAuC,EAChD,SAAS;AAAA,EACd,CAAC,EACA,SAAS,oBAAoB,EAC7B,SAAS;AACd,CAAC;AACM,IAAM,iCAAmC,SAAO;AAAA,EACrD,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,IACC;AAAA,IACA;AAAA,EACF;AACJ,CAAC;AACM,IAAM,kCAAoC,SAAO;AAAA,EACtD,OACG,SAAO,EACP;AAAA,IACC;AAAA,EACF,EACC,IAAI,EAAE,EACN,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AACd,CAAC;AACM,IAAM,mCAAqC,SAAO;AAAA,EACvD,UACG;AAAA,IACG;AAAA,MACE,SAAO;AAAA,QACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,cACG;AAAA,UACG,SAAO;AAAA,YACP,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,UACrC,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,UAAY,QAAM,EAAE,SAAS;AAAA,cAC7B,MACG,SAAO;AAAA,gBACN,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,gBACvD,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,gBACZ,SACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO;AAAA,kBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,kBACZ,OACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,UACG,SAAO;AAAA,kBACN,KACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,kBACZ,4BACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,gBACZ,oBACG;AAAA,kBACG,SAAO;AAAA,oBACP,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,iBACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,YACC,SAAO;AAAA,cACP,MAAQ,QAAM,EAAE,SAAS;AAAA,cACzB,UACG,SAAO;AAAA,gBACN,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO;AAAA,kBACN,KACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,kBACZ,4BACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF;AAAA,QACF,gBACG,SAAO;AAAA,UACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,UACZ,aACG;AAAA,YACG,SAAO;AAAA,cACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,cACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,cACZ,cACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,kBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO;AAAA,gBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,cACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,cACZ,cACG;AAAA,gBACG,SAAO;AAAA,kBACP,MACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,gBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,cAClC,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,aAAe,QAAM,EAAE,SAAS;AAAA,gBAChC,eACG,SAAO;AAAA,kBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,kBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,2CAA2C;AAAA,cACzD,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,gBAClC,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,UACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,UACZ,aACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,kBACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,YACF,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,YACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,UACd,CAAC;AAAA,QACH,EACC,SAAS;AAAA,QACZ,QACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,QACZ,eACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,QACZ,uBACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,QACZ,cACG,OAAK,EACL;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG;AAAA,UACG,SAAO;AAAA,YACP,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,cACvC,UAAY,QAAM,EAAE,SAAS;AAAA,cAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,cAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC5B,CAAC;AAAA,YACC,SAAO;AAAA,cACP,UAAY,QAAM,EAAE,SAAS;AAAA,cAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,cAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC1B,oBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,YACC,SAAO;AAAA,cACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,cACvC,WAAa,QAAM,EAAE,SAAS;AAAA,cAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC1B,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,YACC,SAAO;AAAA,cACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,cACvC,UAAY,QAAM,EAAE,SAAS;AAAA,cAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC1B,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,YACC,SAAO;AAAA,cACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,cACvC,UAAY,QAAM,EAAE,SAAS;AAAA,cAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,cAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,WACG,OAAK,EACL;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG,OAAK,EACL;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,cACG,OAAK,EACL;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,gBACG,SAAO;AAAA,UACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,cACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,kBACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,QACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,cACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS;AAAA,YACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS;AAAA,YACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,QACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,gBACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,iBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC;AAAA,MACC,MAAI;AAAA,QACF,SAAO;AAAA,UACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,UACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,QAC1C,CAAC;AAAA,QACC,SAAO;AAAA,UACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,UACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC;AAAA,QACV,CAAC;AAAA,QACC,SAAO;AAAA,UACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,UACtC,qBACG,SAAO;AAAA,YACN,gBACG;AAAA,cACG,SAAO;AAAA,gBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,gBACZ,SACG;AAAA,kBACG;AAAA,oBACE,SAAO;AAAA,sBACP,UACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,oBACC,MAAI;AAAA,sBACF,SAAO;AAAA,wBACP,QAAU,QAAM,EAAE,SAAS;AAAA,wBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC/B,CAAC;AAAA,sBACC,SAAO;AAAA,wBACP,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC7B,QACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF;AAAA,sBACJ,CAAC;AAAA,sBACC,SAAO;AAAA,wBACP,QAAU,QAAM,EAAE,SAAS;AAAA,wBAC3B,UAAY,SAAO;AAAA,0BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,4BACC;AAAA,0BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,0BACZ,MACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,wBACd,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH;AAAA,gBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF,EACC,IAAI,CAAC,EACL,IAAI,CAAC;AAAA,EACR,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,4BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,0BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,qCACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,qBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR,SAAS,wDAAwD,EACjE,SAAS;AAAA,IACZ,yBACG,OAAK,CAAC,uBAAuB,qBAAqB,mBAAmB,CAAC,EACtE,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,oCAAsC,SAAO;AAAA,EACxD,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,uCAAyC,SAAO;AAAA,EAC3D,uBACG,SAAO,EACP,SAAS,gDAAgD,EACzD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,wBAA0B;AAAA,IACtB;AAAA,MACE,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,kCAAkC,EAC3C;AAAA,UACC;AAAA,UACA;AAAA,QACF;AAAA,QACF,MACG,SAAO;AAAA,UACN,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG,SAAO,EACP,SAAS,+BAA+B,EACxC,SAAS;AAAA,UACZ,YACG,SAAO,EACP,SAAS,gCAAgC,EACzC,SAAS;AAAA,UACZ,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO;AAAA,YACN,KACG,SAAO,EACP,SAAS,cAAc,EACvB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,cAAgB,OAAK,CAAC,UAAU,aAAa,CAAC,EAAE,SAAS;AAAA,UAC3D,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,UACG,SAAO;AAAA,YACN,KACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA,SAAS;AAAA,UACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,UACZ,SACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,oBACG;AAAA,YACG,SAAO;AAAA,cACP,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,iBACG,OAAK,CAAC,qBAAqB,gBAAgB,cAAc,CAAC,EAC1D,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,QACd,CAAC,EACA,SAAS,iCAAiC;AAAA,QAC7C,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF;AAAA,QACF,cACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS;AAAA,YACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS;AAAA,YACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,QACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACd,CAAC;AAAA,MACC,MAAI;AAAA,QACF,SAAO;AAAA,UACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,UACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,QAC1C,CAAC;AAAA,QACC,SAAO;AAAA,UACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,UACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,QACC,SAAO;AAAA,UACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,UACtC,qBACG,SAAO;AAAA,YACN,gBACG;AAAA,cACG,SAAO;AAAA,gBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,gBACZ,SACG;AAAA,kBACG;AAAA,oBACE,SAAO;AAAA,sBACP,UACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,oBACC,MAAI;AAAA,sBACF,SAAO;AAAA,wBACP,QAAU,QAAM,EAAE,SAAS;AAAA,wBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC/B,CAAC;AAAA,sBACC,SAAO;AAAA,wBACP,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC7B,QACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF;AAAA,sBACJ,CAAC;AAAA,sBACC,SAAO;AAAA,wBACP,QAAU,QAAM,EAAE,SAAS;AAAA,wBAC3B,UAAY,SAAO;AAAA,0BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,4BACC;AAAA,0BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,0BACZ,MACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,wBACd,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH;AAAA,gBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF;AAAA,QACJ,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,wBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,4BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,0BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,mBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR,SAAS,sDAAsD,EAC/D,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,wCAA0C,SAAO;AAAA,EAC5D,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,oCAAoC,EAC7C,SAAS;AACd,CAAC;AACM,IAAM,4CAA8C,SAAO;AAAA,EAChE,uBACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AACJ,CAAC;AACM,IAAM,6CAA+C,SAAO;AAAA,EACjE,UACG,UAAQ,EACR,SAAS,6DAA6D,EACtE,SAAS;AAAA,EACZ,eACG,SAAO,EACP,IAAI,EACJ,SAAS,wBAAwB,EACjC,SAAS,EACT,SAAS;AAAA,EACZ,mBACG,SAAO,EACP,IAAI,EACJ,SAAS,uBAAuB,EAChC,SAAS,EACT,SAAS;AAAA,EACZ,kBACG,SAAO;AAAA,IACN,gBACG,UAAQ,EACR,SAAS,wDAAwD,EACjE,SAAS,EACT,SAAS;AAAA,IACZ,eACG,UAAQ,EACR,SAAS,uDAAuD,EAChE,SAAS,EACT,SAAS;AAAA,IACZ,oBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,EACd,CAAC,EACA,SAAS,gEAAgE,EACzE,SAAS;AAAA,EACZ,gBACG,SAAO;AAAA,IACN,2BACG,SAAO,EACP,IAAI,EACJ,SAAS,uDAAuD,EAChE,SAAS,EACT,SAAS;AAAA,EACd,CAAC,EACA,SAAS,wCAAwC,EACjD,SAAS;AAAA,EACZ,yBACG;AAAA,IACG,SAAO;AAAA,MACP,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AACM,IAAM,mCAAqC,SAAO;AAAA,EACvD,uBACG,SAAO,EACP,SAAS,4CAA4C,EACrD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,0BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,YACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,sBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR,SAAS,yDAAyD,EAClE,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,oCAAsC,SAAO;AAAA,EACxD,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,iCAAiC,EAC1C,SAAS;AACd,CAAC;AACM,IAAM,0CAA4C,SAAO;AAAA,EAC9D,uBACG,SAAO,EACP,SAAS,uDAAuD,EAChE;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,2BACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,mCAAmC,EAC5C;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,IACZ,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,6BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,sCACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,2CAA6C,SAAO;AAAA,EAC/D,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,gCAAgC,EACzC,SAAS;AACd,CAAC;AACM,IAAM,oCAAsC,SAAO;AAAA,EACxD,uBACG,SAAO,EACP;AAAA,IACC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,qBACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,mCAAmC,EAC5C;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,IACZ,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR,SAAS,0DAA0D,EACnE,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,6BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,qCAAuC,SAAO;AAAA,EACzD,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AACd,CAAC;AACM,IAAM,oCAAsC,SAAO;AAAA,EACxD,uBACG,SAAO,EACP,SAAS,6CAA6C,EACtD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,qBACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,mCAAmC,EAC5C;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,OAAK;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,EACA,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,IACZ,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR,SAAS,yDAAyD,EAClE,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,YACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,qCAAuC,SAAO;AAAA,EACzD,qBACG,SAAO;AAAA,IACN,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,MACC;AAAA,MACA;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,SACG;AAAA,UACG,SAAO;AAAA,YACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,cACrC,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC/B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,MACG,SAAO;AAAA,oBACN,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,oBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,SACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,sBACZ,OACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,YACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,oBACG;AAAA,sBACG,SAAO;AAAA,wBACP,gBACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS,EACT,SAAS;AAAA,wBACZ,iBACG,OAAK;AAAA,0BACJ;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC,EACA;AAAA,0BACC;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,kBACzB,UACG,SAAO;AAAA,oBACN,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,UACG,SAAO;AAAA,sBACN,KACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,sBACZ,kBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,4BACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACZ,cACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,mBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,gBACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,cACZ,aACG;AAAA,gBACG,SAAO;AAAA,kBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,kBACZ,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,kBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO;AAAA,oBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,oBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,kBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,kBACZ,cACG;AAAA,oBACG,SAAO;AAAA,sBACP,MACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,gBACC,MAAI;AAAA,kBACF,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,kBAClC,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,aAAe,QAAM,EAAE,SAAS;AAAA,oBAChC,eACG,SAAO;AAAA,sBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,sBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,sBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,oBACd,CAAC,EACA;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,kBACC,SAAO;AAAA,oBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,oBAClC,aACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF;AAAA,kBACJ,CAAC;AAAA,gBACH,CAAC;AAAA,cACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,cACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,cACZ,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,kBACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,YACZ,QACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,eACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,uBACG,OAAK;AAAA,cACJ;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG;AAAA,cACG,SAAO;AAAA,gBACP,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC5B,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,oBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,kBAC1B,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,kBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,kBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,kBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,WACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,SACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG,OAAK,EACL;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO;AAAA,cACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,YACZ,cACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,QACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,gBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,gBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,iBACG,UAAQ,EACR;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,YAC1C,CAAC;AAAA,YACC,SAAO;AAAA,cACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,cACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC;AAAA,YACV,CAAC;AAAA,YACC,SAAO;AAAA,cACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,cACtC,qBACG,SAAO;AAAA,gBACN,gBACG;AAAA,kBACG,SAAO;AAAA,oBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,oBACZ,SACG;AAAA,sBACG;AAAA,wBACE,SAAO;AAAA,0BACP,UACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF,EACC;AAAA,4BACC;AAAA,4BACA;AAAA,0BACF,EACC,SAAS;AAAA,wBACd,CAAC;AAAA,wBACC,MAAI;AAAA,0BACF,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC/B,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,UAAY,QAAM,EAAE,SAAS;AAAA,4BAC7B,QACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF;AAAA,0BACJ,CAAC;AAAA,0BACC,SAAO;AAAA,4BACP,QAAU,QAAM,EAAE,SAAS;AAAA,4BAC3B,UAAY,SAAO;AAAA,8BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,8BACZ,MACG,SAAO,EACP;AAAA,gCACC;AAAA,8BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,4BACd,CAAC;AAAA,0BACH,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH;AAAA,oBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,iCAAiC,EAC1C,SAAS;AACd,CAAC;AACM,IAAM,kDAAoD,SAAO;AAAA,EACtE,wBAA0B,QAAQ,SAAO,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAC3D,CAAC;AACM,IAAM,mDAAqD,SAAO;AAAA,EACvE,SACG;AAAA,IACG,SAAO;AAAA,MACP,cACG,SAAO;AAAA,QACN,KACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,OACG,SAAO;AAAA,UACN,MAAQ,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,UAClD,aACG,SAAO,EACP,SAAS,2BAA2B,EACpC,SAAS;AAAA,UACZ,MACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B,SAAS,4BAA4B,EACrC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA,SAAS,6CAA6C,EACtD,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,MACG,SAAO;AAAA,QACN,QACG,UAAQ,EACR,SAAS,2CAA2C,EACpD,SAAS;AAAA,QACZ,YACG,UAAQ,EACR,SAAS,8CAA8C,EACvD,SAAS;AAAA,MACd,CAAC,EACA,SAAS,iBAAiB,EAC1B,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,oBACG,SAAO;AAAA,IACN,gBACG,SAAO,EACP,IAAI,EACJ,SAAS,mDAAmD,EAC5D,SAAS;AAAA,IACZ,eACG,SAAO,EACP,IAAI,EACJ,SAAS,6CAA6C,EACtD,SAAS;AAAA,IACZ,oBACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,gCAAkC,SAAO;AAAA,EACpD,uBACG,SAAO,EACP,SAAS,kCAAkC,EAC3C;AAAA,IACC;AAAA,IACA;AAAA,EACF;AACJ,CAAC;AACM,IAAM,iCAAmC,SAAO;AAAA,EACrD,KACG,SAAO,EACP,SAAS,2BAA2B,EACpC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,SAAS,EACT,SAAS;AAAA,EACZ,UACG;AAAA,IACG,SAAO;AAAA,MACP,WACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,cAC/B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AACM,IAAM,0CAA4C,SAAO;AAAA,EAC9D,uBACG,SAAO,EACP,SAAS,kCAAkC,EAC3C;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SAAW,SAAO;AAAA,IAChB,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,mCAAmC,EAC5C;AAAA,UACC;AAAA,UACA;AAAA,QACF;AAAA,QACF,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,EACC,IAAI,CAAC;AAAA,IACR,kBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC;AACH,CAAC;AACM,IAAM,2CAA6C,SAAO;AAAA,EAC/D,UACG;AAAA,IACG,SAAO;AAAA,MACP,WACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,cAC/B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AACM,IAAM,+CAAiD,SAAO;AAAA,EACnE,uBACG,SAAO,EACP,SAAS,kCAAkC,EAC3C;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,UACG;AAAA,MACG,SAAO;AAAA,QACP,WACG,SAAO,EACP,SAAS,mCAAmC,EAC5C;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,IACZ,kBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,gDAAkD,SAAO;AAAA,EACpE,UACG;AAAA,IACG,SAAO;AAAA,MACP,WACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,cAC/B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;AACM,IAAM,uBAAyB,SAAO;AAAA,EAC3C,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF;AAAA,MACF,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF;AAAA,UACF,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,wBAAwB;AAAA,EACpC,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,4BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,0BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,qCACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,qBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,gBACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,wBAA0B,SAAO;AAAA,EAC5C,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,kBAAkB,EAC3B,SAAS;AACd,CAAC;AACM,IAAM,2BAA6B,SAAO;AAAA,EAC/C,oBACG;AAAA,IACG,SAAO;AAAA,MACP,SACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF;AAAA,UACF,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF;AAAA,cACF,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC,SAAS,oBAAoB;AAAA,MAChC,yBACG,SAAO;AAAA,QACN,oBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,qBACG,SAAO;AAAA,QACN,4BACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,0BACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,qCACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,qBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE;AAAA,EACT,SACG,SAAO;AAAA,IACN,kBACG,UAAQ,EACR,SAAS,yCAAyC,EAClD,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,4BAA8B,SAAO;AAAA,EAChD,SACG;AAAA,IACG,SAAO;AAAA,MACP,cACG,SAAO;AAAA,QACN,KACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,OACG,SAAO;AAAA,UACN,MAAQ,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,UAClD,aACG,SAAO,EACP,SAAS,2BAA2B,EACpC,SAAS;AAAA,UACZ,MACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B,SAAS,4BAA4B,EACrC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA,SAAS,6CAA6C,EACtD,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,MACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,OACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,YACrC,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UAAY,QAAM,EAAE,SAAS;AAAA,cAC/B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,MACG,SAAO;AAAA,kBACN,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,aAAa,EACtB,SAAS;AAAA,kBACZ,YACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,SACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,oBACZ,OACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,YACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,kBACZ,oBACG;AAAA,oBACG,SAAO;AAAA,sBACP,gBACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF,EACC;AAAA,wBACC;AAAA,wBACA;AAAA,sBACF,EACC,SAAS,EACT,SAAS;AAAA,sBACZ,iBACG,OAAK;AAAA,wBACJ;AAAA,wBACA;AAAA,wBACA;AAAA,sBACF,CAAC,EACA;AAAA,wBACC;AAAA,sBACF,EACC,SAAS;AAAA,oBACd,CAAC;AAAA,kBACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,MAAQ,QAAM,EAAE,SAAS;AAAA,gBACzB,UACG,SAAO;AAAA,kBACN,YACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,UACG,SAAO;AAAA,oBACN,KACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS,EACT,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,oBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,oBACZ,4BACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,oBACZ,cACG,OAAK;AAAA,sBACJ;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA;AAAA,oBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,kBACZ,UACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,mBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA;AAAA,kBACC;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,cACC;AAAA,cACA;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,WACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,YACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,YACZ,aACG;AAAA,cACG,SAAO;AAAA,gBACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,gBACZ,aACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,YAAY,EACrB,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,gBACZ,SACG,SAAO;AAAA,kBACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,kBACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,gBACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,gBACZ,cACG;AAAA,kBACG,SAAO;AAAA,oBACP,MACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,kBACd,CAAC;AAAA,gBACH,EACC,SAAS;AAAA,cACd,CAAC;AAAA,cACC,MAAI;AAAA,gBACF,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aAAe,QAAM,EAAE,SAAS;AAAA,gBAClC,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,aAAe,QAAM,EAAE,SAAS;AAAA,kBAChC,eACG,SAAO;AAAA,oBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,oBACZ,MACG,SAAO,EACP,SAAS,cAAc,EACvB,SAAS;AAAA,oBACZ,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,kBACd,CAAC,EACA;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,gBACC,SAAO;AAAA,kBACP,eAAiB,QAAM,EAAE,SAAS;AAAA,kBAClC,aACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF;AAAA,gBACJ,CAAC;AAAA,cACH,CAAC;AAAA,YACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,YACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,kBACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,cACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,cACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,SAAS;AAAA,UACZ,QACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,eACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,uBACG,OAAK;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,WACG;AAAA,YACG,SAAO;AAAA,cACP,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,YACC,MAAI;AAAA,cACF,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,cAC5B,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,oBACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,UACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,gBAC1B,WACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,cACC,SAAO;AAAA,gBACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,gBACvC,UAAY,QAAM,EAAE,SAAS;AAAA,gBAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,gBAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF;AAAA,cACJ,CAAC;AAAA,YACH,CAAC;AAAA,UACH,EACC;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,WACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,SACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG,OAAK,EACL;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO;AAAA,YACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,cACC;AAAA,YACF,EACC,SAAS;AAAA,UACd,CAAC,EACA;AAAA,YACC;AAAA,UACF,EACC,SAAS;AAAA,UACZ,cACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,kBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,QACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,cACG;AAAA,YACG,SAAO;AAAA,cACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS;AAAA,cACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,cACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,UACZ,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,UACZ,iBACG,UAAQ,EACR;AAAA,YACC;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,UAC1C,CAAC;AAAA,UACC,SAAO;AAAA,YACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,YACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,cACC;AAAA,YACF,EACC,IAAI,CAAC;AAAA,UACV,CAAC;AAAA,UACC,SAAO;AAAA,YACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,YACtC,qBACG,SAAO;AAAA,cACN,gBACG;AAAA,gBACG,SAAO;AAAA,kBACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,oBACC;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,kBACZ,SACG;AAAA,oBACG;AAAA,sBACE,SAAO;AAAA,wBACP,UACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC;AAAA,0BACC;AAAA,0BACA;AAAA,wBACF,EACC,SAAS;AAAA,sBACd,CAAC;AAAA,sBACC,MAAI;AAAA,wBACF,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,wBAC/B,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,UAAY,QAAM,EAAE,SAAS;AAAA,0BAC7B,QACG,SAAO,EACP;AAAA,4BACC;AAAA,0BACF;AAAA,wBACJ,CAAC;AAAA,wBACC,SAAO;AAAA,0BACP,QAAU,QAAM,EAAE,SAAS;AAAA,0BAC3B,UAAY,SAAO;AAAA,4BACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,4BACZ,MACG,SAAO,EACP;AAAA,8BACC;AAAA,4BACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,0BACd,CAAC;AAAA,wBACH,CAAC;AAAA,sBACH,CAAC;AAAA,oBACH;AAAA,kBACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,oBACG,SAAO;AAAA,IACN,gBACG,SAAO,EACP,IAAI,EACJ,SAAS,mDAAmD,EAC5D,SAAS;AAAA,IACZ,eACG,SAAO,EACP,IAAI,EACJ,SAAS,6CAA6C,EACtD,SAAS;AAAA,IACZ,oBACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,2BAA6B,SAAO;AAAA,EAC/C,WACG,SAAO,EACP,SAAS,kCAAkC,EAC3C;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,MACG,SAAO;AAAA,IACN,WACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,WACG,SAAO,EACP,SAAS,+BAA+B,EACxC,SAAS;AAAA,IACZ,YACG,SAAO,EACP,SAAS,gCAAgC,EACzC,SAAS;AAAA,IACZ,WACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,SACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP,SAAS,cAAc,EACvB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,MACZ,cAAgB,OAAK,CAAC,UAAU,aAAa,CAAC,EAAE,SAAS;AAAA,IAC3D,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,UACG,SAAO;AAAA,MACN,KACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,MAAQ,SAAO,EAAE,SAAS,gBAAgB,EAAE,SAAS,EAAE,SAAS;AAAA,MAChE,kBACG,SAAO,EACP,SAAS,wDAAwD,EACjE,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,CAAC,aAAa,kBAAkB,gBAAgB,QAAQ,CAAC,EAC9D,SAAS;AAAA,IACd,CAAC,EACA,SAAS,kCAAkC,EAC3C,SAAS;AAAA,IACZ,SACG,SAAO,EACP;AAAA,MACC;AAAA,IACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,IACZ,oBACG;AAAA,MACG,SAAO;AAAA,QACP,gBACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,iBACG,OAAK,CAAC,qBAAqB,gBAAgB,cAAc,CAAC,EAC1D,SAAS;AAAA,MACd,CAAC;AAAA,IACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,EACd,CAAC,EACA,SAAS,0BAA0B;AAAA,EACtC,SACG;AAAA,IACG,SAAO;AAAA,MACP,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF;AAAA,MACF,yBACG,SAAO;AAAA,QACN,oBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,qBACG,SAAO;AAAA,QACN,wBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,4BACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,0BACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,mBACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC;AAAA,IACC;AAAA,EACF;AACJ,CAAC;AACM,IAAM,4BAA8B,SAAO;AAAA,EAChD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,sBAAsB,EAC/B,SAAS;AACd,CAAC;AACM,IAAM,wBAA0B,SAAO;AAAA,EAC5C,WACG,SAAO,EACP,SAAS,+BAA+B,EACxC;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,UACG,SAAO;AAAA,IACN,OACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,eACG,OAAK;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,6BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,yBAA2B,SAAO;AAAA,EAC7C,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,oBAAoB,EAC7B,SAAS;AACd,CAAC;AACM,IAAM,gCAAkC,SAAO;AAAA,EACpD,WACG,SAAO,EACP,SAAS,kDAAkD,EAC3D;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,cACG,SAAO,EACP;AAAA,IACC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF;AACJ,CAAC;AACM,IAAM,iCAAmC,SAAO;AAAA,EACrD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,kBAAkB,EAC3B,SAAS;AACd,CAAC;AACM,IAAM,8BAAgC,SAAO;AAAA,EAClD,KACG,SAAO,EACP,SAAS,wDAAwD;AAAA,EACpE,WACG,SAAO,EACP;AAAA,IACC;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,eACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC,EACA,SAAS,qDAAqD;AACnE,CAAC;AACM,IAAM,+BAAiC,SAAO;AAAA,EACnD,WAAa,SAAO,EAAE,SAAS,oBAAoB,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACvE,eACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AACd,CAAC;AACM,IAAM,wBAA0B,SAAO;AAAA,EAC5C,WACG,SAAO,EACP,SAAS,+BAA+B,EACxC;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,UACG,SAAO;AAAA,IACN,OACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,eACG,OAAK;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,YACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF,EACC,SAAS;AACd,CAAC;AACM,IAAM,yBAA2B,SAAO;AAAA,EAC7C,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,mBAAmB,EAC5B,SAAS;AACd,CAAC;AACM,IAAM,uBAAyB,SAAO;AAAA,EAC3C,WACG,SAAO,EACP,SAAS,8BAA8B,EACvC;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,0BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,YACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,sBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC,EACA;AAAA,IACC;AAAA,EACF;AACJ,CAAC;AACM,IAAM,wBAA0B,SAAO;AAAA,EAC5C,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,mBAAmB,EAC5B,SAAS;AACd,CAAC;AACM,IAAM,oCAAsC,SAAO;AAAA,EACxD,WACG,SAAO,EACP,SAAS,6DAA6D,EACtE;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,SAAW;AAAA,IACP,SAAO;AAAA,MACP,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF;AAAA,IACJ,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;AACM,IAAM,qCAAuC,SAAO;AAAA,EACzD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,kBAAkB,EAC3B,SAAS;AACd,CAAC;AACM,IAAM,qCAAuC,SAAO;AAAA,EACzD,YAAc,QAAQ,SAAO,CAAC,EAAE,IAAI,CAAC;AACvC,CAAC;AACM,IAAM,sCAAwC,SAAO;AAAA,EAC1D,SACG;AAAA,IACG,SAAO;AAAA,MACP,cACG,SAAO;AAAA,QACN,KACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,eACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,SACG,UAAQ,EACR;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,QACZ,OACG,SAAO;AAAA,UACN,MAAQ,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,UAClD,aACG,SAAO,EACP,SAAS,2BAA2B,EACpC,SAAS;AAAA,UACZ,MACG,SAAS,SAAO,GAAK,MAAI,CAAC,EAC1B,SAAS,4BAA4B,EACrC,SAAS,EACT,SAAS;AAAA,QACd,CAAC,EACA,SAAS,6CAA6C,EACtD,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,MACG,SAAO;AAAA,QACN,QACG,UAAQ,EACR,SAAS,2CAA2C,EACpD,SAAS;AAAA,QACZ,YACG,UAAQ,EACR,SAAS,8CAA8C,EACvD,SAAS;AAAA,MACd,CAAC,EACA,SAAS,iBAAiB,EAC1B,SAAS;AAAA,IACd,CAAC;AAAA,EACH,EACC,SAAS;AAAA,EACZ,oBACG,SAAO;AAAA,IACN,gBACG,SAAO,EACP,IAAI,EACJ,SAAS,mDAAmD,EAC5D,SAAS;AAAA,IACZ,eACG,SAAO,EACP,IAAI,EACJ,SAAS,6CAA6C,EACtD,SAAS;AAAA,IACZ,oBACG,SAAO,EACP,IAAI,EACJ;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS,8CAA8C,EACvD,SAAS;AACd,CAAC;AACM,IAAM,8BAAgC,SAAO;AAAA,EAClD,WACG,SAAO,EACP,SAAS,yCAAyC,EAClD;AAAA,IACC;AAAA,IACA;AAAA,EACF;AAAA,EACF,UACG,SAAO;AAAA,IACN,OACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C,SAAS;AAAA,EACd,CAAC,EACA;AAAA,IACC;AAAA,EACF;AAAA,EACF,SACG,SAAO;AAAA,IACN,yBACG,SAAO;AAAA,MACN,oBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,SACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAS,SAAO,GAAK,SAAO,CAAC,EAC7B;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,IACZ,iBACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,eACG,OAAK;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,EACA,SAAS;AAAA,IACZ,cACG,UAAQ,EACR;AAAA,MACC;AAAA,IACF,EACC,SAAS,EACT,SAAS;AAAA,IACZ,qBACG,SAAO;AAAA,MACN,6BACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,sCACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,IACd,CAAC,EACA;AAAA,MACC;AAAA,IACF,EACC,SAAS;AAAA,EACd,CAAC,EACA,SAAS;AACd,CAAC;AACM,IAAM,+BAAiC,SAAO;AAAA,EACnD,SACG;AAAA,IACG,SAAO;AAAA,MACP,KACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,OACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MAAQ,QAAQ,SAAO,CAAC,EAAE,SAAS;AAAA,QACrC,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UAAY,QAAM,EAAE,SAAS;AAAA,UAC/B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,MACG,SAAO;AAAA,cACN,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,WAAa,SAAO,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,cACvD,YAAc,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,cACzD,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,SACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP,SAAS,uCAAuC,EAChD;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,yCAAyC,EAClD,IAAI,EAAE,EACN,SAAS,EACT,SAAS;AAAA,gBACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,YACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA,SAAS,yCAAyC,EAClD,SAAS;AAAA,cACZ,oBACG;AAAA,gBACG,SAAO;AAAA,kBACP,gBACG,SAAO,EACP;AAAA,oBACC;AAAA,kBACF,EACC;AAAA,oBACC;AAAA,oBACA;AAAA,kBACF,EACC,SAAS,EACT,SAAS;AAAA,kBACZ,iBACG,OAAK;AAAA,oBACJ;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,CAAC,EACA;AAAA,oBACC;AAAA,kBACF,EACC,SAAS;AAAA,gBACd,CAAC;AAAA,cACH,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,MAAQ,QAAM,EAAE,SAAS;AAAA,YACzB,UACG,SAAO;AAAA,cACN,YACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B;AAAA,gBACC;AAAA,gBACA;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,UACG,SAAO;AAAA,gBACN,KACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC;AAAA,kBACC;AAAA,kBACA;AAAA,gBACF,EACC,SAAS,EACT,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS,EACT,SAAS;AAAA,gBACZ,kBACG,SAAO,EACP,SAAS,oCAAoC,EAC7C,SAAS,EACT,SAAS;AAAA,gBACZ,4BACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,gBACZ,cACG,OAAK;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC,EACA,SAAS,gBAAgB,EACzB,SAAS;AAAA,cACd,CAAC,EACA;AAAA,gBACC;AAAA,cACF,EACC,SAAS;AAAA,cACZ,UACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,mBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,cACZ,gBACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF,EACC,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA;AAAA,cACC;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,WACG,SAAO,EACP,SAAS,aAAa,EACtB;AAAA,UACC;AAAA,UACA;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,WACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,MAAM,EACN,SAAS,EACT,SAAS;AAAA,QACZ,OACG,SAAO,EACP,SAAS,yBAAyB,EAClC,SAAS,EACT,SAAS;AAAA,QACZ,aACG;AAAA,UACG,SAAO;AAAA,YACP,SACG,SAAO,EACP,SAAS,eAAe,EACxB,SAAS,EACT,SAAS;AAAA,YACZ,aACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MAAQ,SAAO,EAAE,SAAS,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,YAC5D,YACG,SAAO,EACP,SAAS,kBAAkB,EAC3B,SAAS,EACT,SAAS;AAAA,YACZ,cACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,kBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC,SAAS,EACT,SAAS;AAAA,YACZ,MACG,SAAO,EACP,SAAS,qCAAqC,EAC9C,SAAS,EACT,SAAS;AAAA,YACZ,SACG,SAAO;AAAA,cACN,UACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS,EACT,SAAS;AAAA,cACZ,WACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACd,CAAC,EACA,SAAS,sCAAsC,EAC/C,SAAS;AAAA,YACZ,iBACG,SAAO,EACP,SAAS,oBAAoB,EAC7B,SAAS,EACT,SAAS;AAAA,YACZ,cACG;AAAA,cACG,SAAO;AAAA,gBACP,MACG,SAAO,EACP;AAAA,kBACC;AAAA,gBACF,EACC,SAAS;AAAA,gBACZ,MACG,SAAO,EACP,SAAS,wBAAwB,EACjC,SAAS;AAAA,cACd,CAAC;AAAA,YACH,EACC,SAAS;AAAA,UACd,CAAC;AAAA,UACC,MAAI;AAAA,YACF,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aAAe,QAAM,EAAE,SAAS;AAAA,YAClC,CAAC;AAAA,YACC,SAAO;AAAA,cACP,aAAe,QAAM,EAAE,SAAS;AAAA,cAChC,eACG,SAAO;AAAA,gBACN,QACG,SAAO,EACP,SAAS,gBAAgB,EACzB,SAAS;AAAA,gBACZ,MAAQ,SAAO,EAAE,SAAS,cAAc,EAAE,SAAS;AAAA,gBACnD,KACG,SAAO,EACP,SAAS,mBAAmB,EAC5B,SAAS;AAAA,cACd,CAAC,EACA,SAAS,2CAA2C;AAAA,YACzD,CAAC;AAAA,YACC,SAAO;AAAA,cACP,eAAiB,QAAM,EAAE,SAAS;AAAA,cAClC,aACG,SAAO,EACP;AAAA,gBACC;AAAA,cACF;AAAA,YACJ,CAAC;AAAA,UACH,CAAC;AAAA,QACH,EACC,SAAS,yBAAyB,EAClC,SAAS;AAAA,QACZ,UACG,SAAO,EACP,SAAS,sBAAsB,EAC/B,SAAS,EACT,SAAS;AAAA,QACZ,aACG,SAAO,EACP;AAAA,UACC;AAAA,QACF,EACC,SAAS,EACT,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,kBACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,8CAA8C,EACvD;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,0CAA0C,EACnD,SAAS,EACT,SAAS;AAAA,UACZ,OACG,SAAO,EACP,SAAS,+CAA+C,EACxD,SAAS,EACT,SAAS;AAAA,UACZ,WACG,OAAK,CAAC,cAAc,aAAa,WAAW,CAAC,EAC7C,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,SAAS;AAAA,MACZ,QACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,eACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,uBACG,OAAK;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP,SAAS,wCAAwC,EACjD,SAAS,EACT,SAAS;AAAA,MACZ,UACG,SAAO,EACP,MAAM,WAAW,8BAA8B,EAC/C;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,WACG;AAAA,QACG,SAAO;AAAA,UACP,WACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,QACC,MAAI;AAAA,UACF,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,UAC5B,CAAC;AAAA,UACC,SAAO;AAAA,YACP,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,oBACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,UACG,SAAO,EACP;AAAA,cACC;AAAA,YACF,EACC;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,OAAS,QAAM,EAAE,SAAS;AAAA,YAC1B,WACG,SAAO,EACP,SAAS,mDAAmD,EAC5D;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,UACC,SAAO;AAAA,YACP,oBAAsB,QAAM,EAAE,SAAS;AAAA,YACvC,UAAY,QAAM,EAAE,SAAS;AAAA,YAC7B,WAAa,QAAM,EAAE,SAAS;AAAA,YAC9B,OACG,SAAO,EACP,SAAS,eAAe,EACxB;AAAA,cACC;AAAA,cACA;AAAA,YACF;AAAA,UACJ,CAAC;AAAA,QACH,CAAC;AAAA,MACH,EACC;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,WACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,SACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG,OAAK,EACL;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO;AAAA,QACN,YACG,SAAS,SAAO,GAAK,SAAS,SAAO,GAAK,MAAI,CAAC,CAAC,EAChD;AAAA,UACC;AAAA,QACF,EACC,SAAS;AAAA,MACd,CAAC,EACA;AAAA,QACC;AAAA,MACF,EACC,SAAS;AAAA,MACZ,cACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,kBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,QACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,cACG;AAAA,QACG,SAAO;AAAA,UACP,KACG,SAAO,EACP,SAAS,uBAAuB,EAChC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,SACG,SAAO,EACP,SAAS,6BAA6B,EACtC;AAAA,YACC;AAAA,YACA;AAAA,UACF,EACC,SAAS;AAAA,UACZ,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,IAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,UACG,SAAO,EACP,IAAI,EACJ;AAAA,YACC;AAAA,UACF,EACC,IAAI,CAAC,EACL,IAAI,GAAI,EACR,SAAS,EACT,SAAS;AAAA,UACZ,MACG,SAAO,EACP,SAAS,uCAAuC,EAChD,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,UACZ,gBACG,SAAO,EACP;AAAA,YACC;AAAA,UACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,QACd,CAAC;AAAA,MACH,EACC,IAAI,EAAE,EACN,SAAS;AAAA,MACZ,OACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,gBACG,SAAO,EACP;AAAA,QACC;AAAA,MACF,EACC;AAAA,QACC;AAAA,QACA;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,MACZ,iBACG,UAAQ,EACR;AAAA,QACC;AAAA,MACF,EACC,SAAS,EACT,SAAS;AAAA,IACd,CAAC;AAAA,IACC,MAAI;AAAA,MACF,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBAAuB,QAAM,EAAE,SAAS;AAAA,MAC1C,CAAC;AAAA,MACC,SAAO;AAAA,QACP,qBAAuB,QAAM,EAAE,SAAS;AAAA,QACxC,mBACG,SAAO,EACP,IAAI,EACJ;AAAA,UACC;AAAA,QACF,EACC,IAAI,CAAC;AAAA,MACV,CAAC;AAAA,MACC,SAAO;AAAA,QACP,mBAAqB,QAAM,EAAE,SAAS;AAAA,QACtC,qBACG,SAAO;AAAA,UACN,gBACG;AAAA,YACG,SAAO;AAAA,cACP,sBACG,SAAO,EACP,IAAI,EACJ;AAAA,gBACC;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS,EACT,SAAS;AAAA,cACZ,SACG;AAAA,gBACG;AAAA,kBACE,SAAO;AAAA,oBACP,UACG,SAAO,EACP;AAAA,sBACC;AAAA,oBACF,EACC;AAAA,sBACC;AAAA,sBACA;AAAA,oBACF,EACC,SAAS;AAAA,kBACd,CAAC;AAAA,kBACC,MAAI;AAAA,oBACF,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,QAAM,EAAE,SAAS;AAAA,oBAC/B,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,UAAY,QAAM,EAAE,SAAS;AAAA,sBAC7B,QACG,SAAO,EACP;AAAA,wBACC;AAAA,sBACF;AAAA,oBACJ,CAAC;AAAA,oBACC,SAAO;AAAA,sBACP,QAAU,QAAM,EAAE,SAAS;AAAA,sBAC3B,UAAY,SAAO;AAAA,wBACjB,SACG,SAAO,EACP,IAAI,EACJ;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,CAAC,EACL,IAAI,KAAK,EACT,SAAS;AAAA,wBACZ,MACG,SAAO,EACP;AAAA,0BACC;AAAA,wBACF,EACC,IAAI,GAAG,EACP,SAAS,EACT,SAAS;AAAA,sBACd,CAAC;AAAA,oBACH,CAAC;AAAA,kBACH,CAAC;AAAA,gBACH;AAAA,cACF,EACC,IAAI,CAAC,EACL,SAAS;AAAA,YACd,CAAC;AAAA,UACH,EACC,IAAI,CAAC,EACL,IAAI,EAAE,EACN,SAAS;AAAA,QACd,CAAC,EACA;AAAA,UACC;AAAA,QACF;AAAA,MACJ,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,SAAS,kBAAkB,EAC3B,SAAS;AACd,CAAC;","names":[]}