{"version":3,"file":"static/js/270.c709422a.chunk.js","sources":["assets/images/food.svg","webpack://landing_page/./src/components/Modals/RatePlanModal/RatePlanModal.module.css?fc39","components/Modals/RatePlanModal/RatePlanModal.jsx","utils/useOldPriceCalculator.js","components/CircleLoader/CircleLoader.js","webpack://landing_page/./src/components/CancellationPolicy/CancellationPolicy.module.css?7cd0","components/CancellationPolicy/CancellationPolicy.js","assets/images/calendar.svg","assets/images/user.svg","utils/usePriceCalculator.js"],"sourceRoot":"","sourcesContent":["var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFood(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.50948 6.96483L6.90066 7.59556C7.03111 7.82985 7.37007 7.97403 7.7092 7.97403C7.81346 7.97403 7.94391 7.95605 8.04834 7.91998C8.49174 7.79378 8.70043 7.43343 8.51775 7.12711L8.12657 6.49638C7.89186 6.11791 7.99612 5.68555 8.36128 5.36114C9.14383 4.69447 9.3525 3.79351 8.88291 3.00067L8.49173 2.36994C8.30906 2.06363 7.78743 1.91946 7.34401 2.04566C6.90059 2.17186 6.69192 2.53221 6.8746 2.83853L7.26578 3.46927C7.50049 3.84773 7.39623 4.28009 7.03107 4.6045C6.22253 5.27105 6.03989 6.17199 6.50948 6.96483Z\",\n fill: \"#504D56\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.106 6.96483L11.4981 7.59556C11.6288 7.82985 11.9686 7.97403 12.3085 7.97403C12.413 7.97403 12.5437 7.95605 12.6484 7.91998C13.0928 7.79378 13.302 7.43343 13.1189 7.12711L12.7268 6.49638C12.4916 6.11791 12.5961 5.68555 12.9621 5.36114C13.7464 4.69447 13.9555 3.79351 13.4849 3.00067L13.0928 2.36994C12.9097 2.06363 12.3869 1.91946 11.9425 2.04566C11.498 2.17186 11.2889 2.53221 11.472 2.83853L11.864 3.46927C12.0993 3.84773 11.9948 4.28009 11.6288 4.6045C10.8446 5.27105 10.6355 6.17199 11.106 6.96483Z\",\n fill: \"#504D56\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.7249 6.96176L16.1146 7.59441C16.2445 7.82941 16.5821 7.97403 16.9199 7.97403C17.0237 7.97403 17.1537 7.956 17.2577 7.91982C17.6993 7.79324 17.9072 7.43179 17.7253 7.12453L17.3356 6.49188C17.1018 6.11226 17.2057 5.67859 17.5694 5.35319C18.3489 4.68449 18.5567 3.7808 18.089 2.98555L17.6995 2.37107C17.5176 2.06383 16.998 1.91922 16.5563 2.0458C16.1147 2.17238 15.9068 2.53383 16.0888 2.84108L16.4784 3.47373C16.7122 3.85335 16.6084 4.28703 16.2446 4.61242C15.4391 5.26282 15.2314 6.16652 15.7249 6.9618L15.7249 6.96176Z\",\n fill: \"#504D56\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2646 15.4392H19.6739V15.2098C19.6739 13.948 18.9449 12.8469 17.8403 12.3651C17.4205 11.1952 16.3158 10.3694 15.0787 10.3694C14.7252 10.3694 14.3939 10.4382 14.0846 10.5529C13.5323 10.0023 12.8032 9.68115 12.0301 9.68115C11.3672 9.68115 10.7487 9.91062 10.2406 10.3235C9.90929 10.1859 9.53357 10.1171 9.18021 10.1171C7.85459 10.1171 6.70589 11.0346 6.35238 12.3194C5.18147 12.7322 4.38614 13.8793 4.38614 15.2098V15.4393H2.7511C2.33131 15.4393 2 15.7833 2 16.2192C2 16.6551 2.33132 16.9992 2.7511 16.9992H3.54643L4.29754 19.8896C4.60683 21.1283 5.6894 22.0001 6.92658 22.0001H17.0891C18.3263 22.0001 19.4089 21.1283 19.7182 19.8896L20.4693 16.9992H21.2646C21.6844 16.9992 22.0157 16.6551 22.0157 16.2192C22.0157 15.7835 21.6622 15.4393 21.2646 15.4393V15.4392ZM5.82196 15.1869C5.82196 14.4299 6.33005 13.8104 7.0591 13.6959C7.39042 13.6499 7.65563 13.3518 7.67769 13.0076C7.76599 12.2277 8.38473 11.6542 9.13583 11.6542C9.42308 11.6542 9.68814 11.7459 9.93116 11.9065C10.2404 12.113 10.6602 12.0441 10.9033 11.7689C11.1905 11.4249 11.5881 11.2413 12.0079 11.2413C12.516 11.2413 12.98 11.5166 13.245 11.9524C13.3555 12.136 13.5101 12.2507 13.7091 12.2965C13.9078 12.3424 14.1066 12.2965 14.2614 12.1817C14.5044 12.0211 14.7695 11.9294 15.0567 11.9294C15.7415 11.9294 16.3601 12.4341 16.4926 13.1452C16.5589 13.4435 16.7577 13.6728 17.0449 13.7416C17.7078 13.9023 18.1716 14.5216 18.1716 15.2098C18.1716 15.3015 18.1716 15.3705 18.1496 15.4393H5.84407C5.84407 15.3476 5.82188 15.2788 5.82188 15.1869L5.82196 15.1869ZM18.2821 19.4767C18.1274 20.0502 17.6415 20.4402 17.0892 20.4402H6.92666C6.37435 20.4402 5.86626 20.0503 5.73375 19.4767L5.09314 16.9763H18.923L18.2821 19.4767Z\",\n fill: \"#504D56\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFood);\nexport default __webpack_public_path__ + \"static/media/food.99ed9d3c5035b00057f1a9516b318d28.svg\";\nexport { ForwardRef as ReactComponent };","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"RatePlanModal_overlay__XRRLV\",\"popup\":\"RatePlanModal_popup__dAm0Y\",\"closeButton\":\"RatePlanModal_closeButton__C2k-R\",\"title\":\"RatePlanModal_title__cSh-1\",\"subtitle\":\"RatePlanModal_subtitle__q97WX\",\"divider\":\"RatePlanModal_divider__qJRRx\",\"description\":\"RatePlanModal_description__tjPrd\",\"benefits\":\"RatePlanModal_benefits__ubmoB\",\"benefitItem\":\"RatePlanModal_benefitItem__Ln2yl\",\"checkmark\":\"RatePlanModal_checkmark__CH-ab\"};","import React, { useEffect } from 'react';\nimport styles from './RatePlanModal.module.css';\n\nconst RatePlanModal = ({ onClose, rpObject, room }) => {\n // Prevent body scrolling when modal is open\n useEffect(() => {\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = 'auto';\n };\n }, []);\n\n // Close on escape key press\n useEffect(() => {\n const handleEsc = (event) => {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n window.addEventListener('keydown', handleEsc);\n return () => {\n window.removeEventListener('keydown', handleEsc);\n };\n }, [onClose]);\n\n // Close when clicking outside the popup\n const handleOverlayClick = (e) => {\n if (e.target === e.currentTarget) {\n onClose();\n }\n };\n\n return (\n
\n
\n \n \n

{room?.roomName}

\n \n

{rpObject?.name}

\n \n
\n \n
\n

\n {rpObject?.description}\n

\n
\n \n
\n
\n );\n};\n\nexport default RatePlanModal;","import { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n arrangePromos,\n calculatePromotion,\n getApplicablePromotion,\n} from \"./usePriceCalculator\";\nimport { getCalculatedTax } from \"./utils\";\n\nconst useOldPriceCalculator = () => {\n const [totalPrice, setTotalPrice] = useState(0);\n const [taxObj, setTaxObj] = useState({});\n const [totalTax, setTotalTax] = useState(0);\n const [totalGuests, setTotalGuests] = useState(0);\n const [totalAdults, setTotalAdults] = useState(0);\n const [totalInfants, setTotalInfants] = useState(0);\n const [totalChild, setTotalChild] = useState(0);\n const [roomObjects, setRoomObjects] = useState([]);\n const [totalRoomPrice, setTotalRoomPrice] = useState(0);\n const [totalFoodPrice, setTotalFoodPrice] = useState(0);\n const [totalAddonPrice, setTotalAddonPrice] = useState(0);\n const [arrangedPromos, setArrangedPromos] = useState([]);\n const [appliedDiscount, setAppliedDiscount] = useState({ discount: 0 });\n const [bulkDiscount, setBulkDiscount] = useState({});\n const [priceWODiscount, setPriceWODiscount] = useState(0);\n const [roomPriceNoDisc, setRoomPriceNoDisc] = useState(0);\n const [taxObjects, setTaxObjects] = useState({});\n const [couponValue, setCouponValue] = useState(0);\n\n const {\n selectedRooms,\n selectedHotelAddons,\n hotelData,\n promotions = [],\n selectedAddons,\n dateCount,\n totalAdult,\n roomSlots,\n taxes,\n couponCode = {},\n isHourlyRoom,\n } = useSelector((state) => state.hotelInfo);\n // console.log(\"sel\", selectedRooms, totalAdult);\n useEffect(() => {\n const arrange = () => {\n let arr = [...promotions];\n let ar = arrangePromos(arr);\n setArrangedPromos(ar);\n };\n arrange();\n }, [\n promotions,\n selectedAddons,\n selectedHotelAddons,\n selectedRooms,\n totalAdult,\n ]);\n\n const checkForApplicableBulk = () => {\n if (!priceWODiscount) {\n return;\n }\n if (promotions?.length === 0 || !promotions) {\n return;\n }\n\n let filterArrays =\n promotions?.filter(\n (pr) => pr?.discountType === null && pr?.type === \"bulk\"\n ) || [];\n\n if (filterArrays?.length === 0 || !filterArrays) {\n return;\n }\n\n let sortedPromotions = [...filterArrays].sort((b, a) => {\n return Number(a?.discount) - Number(b?.discount);\n });\n\n for (let i = 0; i < sortedPromotions.length; i++) {\n let pr = sortedPromotions[i];\n if (Number(priceWODiscount) >= Number(pr?.cutoffAmount)) {\n let discount = priceWODiscount - (priceWODiscount * pr?.discount) / 100;\n if (discount < totalPrice + Math.abs(totalTax)) {\n let rms = [];\n let btax = 0;\n let rSum = 0,\n reduced = 0;\n let arr = [];\n [...roomObjects].forEach((rm) => {\n let sum = rm?.roomNoDisc;\n rSum += sum;\n\n reduced += (sum * pr?.discount) / 100;\n let afterDisc = sum - (sum * pr?.discount) / 100;\n\n const taxObj = getCalculatedTax({\n taxes: taxes,\n rooms: [{ id: rm?.id, amount: afterDisc }],\n isInclusive: hotelData?.isTaxIncluded,\n noOfNights: 1,\n });\n const taxAmnt = taxObj.totalRoomTax;\n btax += taxAmnt;\n arr.push({\n ...rm,\n sum: sum - reduced + taxAmnt,\n tax: btax,\n priceReduced: reduced,\n roomNoDisc: rm?.roomNoDisc,\n });\n });\n setRoomObjects(arr);\n setTotalTax(btax);\n setTotalRoomPrice(rSum - reduced);\n setAppliedDiscount({ discount: priceWODiscount - discount });\n setTotalPrice(discount + btax);\n setBulkDiscount(pr);\n return;\n } else if (discount === totalPrice + totalTax) {\n return;\n } else {\n setBulkDiscount({});\n return;\n }\n } else {\n setBulkDiscount({});\n return;\n }\n }\n\n if (selectedRooms?.length === 0) {\n setBulkDiscount({});\n }\n };\n\n useEffect(() => {\n checkForApplicableBulk();\n }, [promotions, priceWODiscount, taxObj, selectedRooms]);\n\n const calculatePrice = () => {\n let adults = 0,\n child = 0,\n infant = 0,\n price = 0,\n tax = 0,\n adnCost = 0,\n foodCost = 0,\n noDiscPrice = 0,\n couponDiscValue = 0,\n tempDisc = 0,\n rmArr = [];\n\n selectedRooms.forEach((room) => {\n const {\n pricing = [],\n priceConfig = {},\n chosenPriceConfig = \"\",\n priceConfigDifference = {},\n } = room;\n adults += room?.sAdult;\n child += room?.sChild;\n infant += room?.sInfant;\n let tempAdult = room?.sAdult,\n tempChild = room?.sChild,\n tempInfant = room?.sInfant,\n tempPrice = 0,\n priceReduced = 0,\n tempTax = 0,\n roomNoDisc = 0,\n promosApplied = [];\n\n pricing.forEach((pr, idx) => {\n let sum = 0;\n let couponPromo = {};\n let isDiffConfig = chosenPriceConfig === \"priceConfigDifference\";\n if (isDiffConfig && priceConfigDifference) {\n sum +=\n Number(pr?.price) + parseFloat(priceConfigDifference[tempAdult]);\n roomNoDisc +=\n Number(pr?.price) + parseFloat(priceConfigDifference[tempAdult]);\n } else {\n sum += Number(pr?.price) * parseFloat(priceConfig[tempAdult]);\n roomNoDisc += Number(pr?.price) * parseFloat(priceConfig[tempAdult]);\n }\n\n if (tempInfant && tempInfant > 0) {\n sum += room?.extraInfantPrice * tempInfant;\n }\n\n if (tempChild && tempChild > 0) {\n sum += room?.extraChildPrice * tempChild;\n }\n\n const promo = getApplicablePromotion({\n arrangedPromos,\n rp: { roomId: room?.id },\n tempPrice: sum,\n checkInDate: pr?.date,\n });\n\n let { finalValue, reducedPrice } = calculatePromotion({\n price: sum,\n promo,\n idx,\n dateCount,\n });\n\n if (couponCode?.id) {\n couponPromo = getApplicablePromotion({\n arrangedPromos: [couponCode],\n rp: { roomId: room?.id },\n tempPrice: couponPromo?.isStack ? finalValue : sum,\n checkInDate: pr?.date,\n });\n let couponCalc = calculatePromotion({\n price: couponPromo?.isStack ? finalValue : sum,\n promo: couponPromo,\n idx,\n dateCount,\n });\n couponDiscValue += couponCalc.reducedPrice;\n finalValue = couponCalc.finalValue;\n if (couponPromo?.isStack) {\n reducedPrice += couponCalc.reducedPrice;\n } else {\n reducedPrice = couponCalc.reducedPrice;\n }\n }\n\n if ((promo || couponPromo?.id) && !isHourlyRoom) {\n let arr = [];\n\n if (promo) {\n arr.push(promo);\n }\n\n if (couponPromo?.id) {\n if (couponPromo?.isStack) {\n arr.push(couponPromo);\n } else {\n arr = [couponPromo];\n }\n }\n\n promosApplied.push({\n promo: arr,\n checkInDate: pr?.date,\n reducedPrice,\n });\n }\n\n const taxObj = getCalculatedTax({\n taxes: taxes,\n rooms: [{ id: room?.id, amount: finalValue }],\n isInclusive: hotelData?.isTaxIncluded,\n noOfNights: 1,\n });\n\n const taxAmnt = taxObj.totalRoomTax;\n\n priceReduced += reducedPrice;\n\n tempPrice += finalValue + (!hotelData?.isTaxIncluded ? 0 : taxAmnt);\n tempTax += taxAmnt;\n\n if (isHourlyRoom) {\n let slotObj = roomSlots[room?.id];\n let defaultPrice = 0;\n if (isDiffConfig && priceConfigDifference) {\n defaultPrice =\n Number(pr?.price) +\n parseFloat(priceConfigDifference[room?.defaultGuestCount]);\n } else {\n defaultPrice =\n Number(pr?.price) *\n parseFloat(priceConfig[room?.defaultGuestCount]);\n }\n\n if (tempAdult <= room?.defaultGuestCount) {\n tempPrice = defaultPrice * slotObj?.percentage;\n } else {\n if (isDiffConfig && priceConfigDifference) {\n tempPrice =\n defaultPrice * slotObj?.percentage +\n priceConfigDifference[room?.sAdult];\n } else {\n tempPrice =\n defaultPrice * slotObj?.percentage +\n (priceConfig[room?.sAdult] * defaultPrice - defaultPrice);\n }\n }\n priceReduced = 0;\n roomNoDisc = tempPrice;\n tempTax = 0;\n }\n });\n noDiscPrice += roomNoDisc;\n\n let rmObj = {\n ...room,\n sum: tempPrice,\n tax: tempTax,\n priceReduced,\n roomNoDisc,\n promosApplied: [...new Set(promosApplied)],\n };\n rmArr.push(rmObj);\n price += tempPrice;\n tax += tempTax;\n tempDisc += priceReduced;\n });\n\n // if (hotelData?.currency !== \"INR\") {\n // price += tax;\n // tax = 0;\n // }\n\n setAppliedDiscount({ discount: tempDisc });\n setTotalGuests(adults + child + infant);\n setTotalAdults(adults);\n setTotalChild(child);\n setTotalInfants(infant);\n setCouponValue(couponDiscValue);\n setTotalRoomPrice(price);\n setTotalTax(tax);\n setRoomObjects(rmArr);\n setRoomPriceNoDisc(noDiscPrice);\n\n selectedAddons?.forEach((addon) => {\n foodCost = foodCost + parseFloat(addon?.price) * dateCount;\n });\n\n setTotalFoodPrice(foodCost);\n\n selectedHotelAddons?.forEach((adn) => {\n if (adn.Addon.multiplier === \"per_day\") {\n adnCost += parseFloat(adn.price) * dateCount;\n } else {\n adnCost += parseFloat(adn.price);\n }\n });\n\n setTotalAddonPrice(adnCost);\n\n price = price + adnCost + foodCost;\n\n setTotalPrice(price);\n setPriceWODiscount(noDiscPrice + adnCost + foodCost);\n };\n\n useEffect(() => {\n calculatePrice();\n }, [\n selectedRooms,\n selectedAddons,\n roomSlots,\n selectedHotelAddons,\n arrangedPromos,\n isHourlyRoom,\n couponCode,\n promotions,\n ]);\n\n useEffect(() => {\n const calculateTax = () => {\n let arr = [...roomObjects];\n let newArr = arr.map((ro) => ({ id: ro?.id, amount: ro?.sum + ro?.tax }));\n\n let txObj = getCalculatedTax({\n rooms: newArr,\n taxes: taxes,\n isInclusive: hotelData?.isTaxIncluded,\n noOfNights: dateCount,\n });\n // setTotalTax(txObj.totalRoomTax);\n setTaxObj(txObj);\n };\n roomObjects.length > 0 && calculateTax();\n }, [roomObjects, taxes]);\n\n return {\n totalPrice,\n totalGuests,\n roomObjects,\n totalRoomPrice,\n totalTax,\n totalAddonPrice,\n totalFoodPrice,\n totalAdults,\n totalChild,\n appliedDiscount,\n totalInfants,\n roomPriceNoDisc,\n couponValue,\n bulkDiscount,\n taxObj,\n };\n};\n\nexport default useOldPriceCalculator;\n","import React from \"react\";\nimport \"./CircleLoader.css\";\n\nconst CircleLoader = () => {\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default CircleLoader;\n","// extracted by mini-css-extract-plugin\nexport default {\"policyLabel\":\"CancellationPolicy_policyLabel__A7+ah\",\"progressBar\":\"CancellationPolicy_progressBar__RbAZX\",\"circle\":\"CancellationPolicy_circle__rWBWp\",\"wrapper\":\"CancellationPolicy_wrapper__PWQy-\",\"landingPage__cancellationPolicyContainer\":\"CancellationPolicy_landingPage__cancellationPolicyContainer__aRhvz\",\"mini\":\"CancellationPolicy_mini__Hmpxy\"};","import React, { useState } from \"react\";\nimport dayjs from \"dayjs\";\nimport { useTranslation } from \"react-i18next\";\nimport { fireGtmEvent } from \"../../utils/googleAnalytics\";\nimport isSameOrAfter from \"dayjs/plugin/isSameOrAfter\";\nimport { available } from \"../../redux/actions/hotelInfoAction\";\nimport styles from \"./CancellationPolicy.module.css\";\nimport RatePlanModal from \"../Modals/RatePlanModal/RatePlanModal\";\ndayjs.extend(isSameOrAfter);\nconst CancellationPolicy = ({\n cancellationPolicy,\n dateRange,\n // checkInTime,\n noMargin,\n isMiniVersion = false,\n rpObject={},\n room={},\n showCancellation\n}) => {\n // const [showCancellation, setShowCancellation] = useState(false);\n // console.log(\"daterange\", dateRange, cancellationPolicy);\n\n // const handleToggleCancellation = () => {\n // setShowCancellation(!showCancellation);\n // showCancellation\n // ? fireGtmEvent(\"cancelClosedLandingPage\")\n // : fireGtmEvent(\"cancelViewedLandingPage\");\n // };\n\n const { t } = useTranslation();\n const currentDate = dayjs();\n const checkInDate = dayjs(dateRange?.startDate);\n\n const [showRatePlanModal, setShowRatePlanModal] = useState(false);\n\n // Default fallback policy when no applicable policies are found\n\n const closestPolicy = cancellationPolicy\n ?.map((pol) => {\n const daysBeforeArrival = parseInt(\n pol?.variables?.daysBeforeArrival\n ? pol?.variables?.daysBeforeArrival\n : pol?.Days_Before,\n 10\n );\n\n const policyDate =\n daysBeforeArrival == 999\n ? null\n : dayjs(dateRange?.startDate).subtract(daysBeforeArrival, \"day\");\n\n const penaltyText =\n daysBeforeArrival == 999\n ? \"Non refundable\"\n : policyDate?.isSame(dateRange?.startDate, \"day\")\n ? \"On\"\n : \"From\";\n\n return {\n policyDate,\n penalty: pol?.variables?.chargedPercentage ?? pol?.Penalty_Value,\n penaltyType: pol?.penalty_type ?? \"%\",\n penaltyText,\n daysBeforeArrival,\n };\n })\n .filter(\n (pol) =>\n pol.policyDate !== null &&\n (!pol.policyDate || pol.policyDate.isBefore(currentDate, \"day\"))\n )\n .sort((a, b) => a.daysBeforeArrival - b.daysBeforeArrival)[0];\n\n const defaultPolicy = {\n daysBeforeArrival: closestPolicy?.daysBeforeArrival ?? 0,\n chargedPercentage: +closestPolicy?.penalty || 0,\n policyDate: dateRange,\n penalty: closestPolicy?.penalty || 0,\n penaltyType: closestPolicy?.penaltyType || \"%\",\n penaltyText: closestPolicy?.penaltyText || t(\"before\"),\n };\n\n // const applicablePolicies = cancellationPolicy\n // ?.map((pol) => {\n // const daysBeforeArrival = parseInt(\n // pol?.variables?.daysBeforeArrival\n // ? pol?.variables?.daysBeforeArrival\n // : pol?.Days_Before,\n // 10\n // );\n\n // const policyDate =\n // daysBeforeArrival == 999\n // ? null\n // : dayjs(dateRange?.startDate).subtract(daysBeforeArrival, \"day\");\n\n // const penaltyText =\n // daysBeforeArrival == 999\n // ? \"Non refundable\"\n // : policyDate?.isSame(dateRange?.startDate, \"day\")\n // ? \"On\"\n // : \"From\";\n\n // // return {\n // // policyDate: policyDate,\n // // penalty: pol?.variables?.chargedPercentage\n // // ? pol?.variables?.chargedPercentage\n // // : pol?.Penalty_Value,\n // // penaltyType: pol?.penalty_type ? pol?.penalty_type : \"%\",\n // // penaltyText: penaltyText,\n // // daysBeforeArrival: daysBeforeArrival,\n // // };\n // return {\n // policyDate,\n // penalty: pol?.variables?.chargedPercentage ?? pol?.Penalty_Value,\n // penaltyType: pol?.penalty_type ?? \"%\",\n // penaltyText,\n // daysBeforeArrival,\n // };\n // })\n // .filter(\n // (pol) =>\n // !pol.policyDate || pol.policyDate.isSameOrAfter(currentDate, \"day\")\n // );\n\n // console.log(\"cancellationPolicy the begin\", cancellationPolicy);\n\n const applicablePolicies = cancellationPolicy\n ?.map((pol) => {\n const daysBeforeArrival = parseInt(\n pol?.variables?.daysBeforeArrival\n ? pol?.variables?.daysBeforeArrival\n : pol?.Days_Before,\n 10\n );\n\n const policyDate =\n daysBeforeArrival == 999\n ? dayjs()\n : dayjs(dateRange?.startDate).subtract(daysBeforeArrival, \"day\");\n\n const penaltyText =\n daysBeforeArrival == 999\n ? \"Non refundable\"\n : policyDate?.isSame(dateRange?.startDate, \"day\")\n ? \"On\"\n : \"From\";\n\n return {\n policyDate,\n penalty: pol?.variables?.chargedPercentage ?? pol?.Penalty_Value,\n penaltyType: pol?.penalty_type ?? \"%\",\n penaltyText,\n daysBeforeArrival,\n };\n })\n .filter(\n (pol) =>\n pol.policyDate !== null &&\n (!pol.policyDate || pol.policyDate.isSameOrAfter(currentDate, \"day\"))\n ); // if no valid policies, fallback to empty array // fallback to array with default policy if empty\n\n if (applicablePolicies?.length === 0) {\n applicablePolicies.push({\n policyDate: dayjs(dateRange?.startDate),\n penaltyType: \"%\",\n penaltyText: \"Before\",\n penalty: defaultPolicy?.chargedPercentage,\n daysBeforeArrival: defaultPolicy.daysBeforeArrival,\n });\n }\n\n // const freeCancellationPolicy = applicablePolicies.find(\n // (pol) =>\n // pol.penalty === 0 ||\n // pol.daysBeforeArrival >= defaultPolicy.daysBeforeArrival\n // ) || {\n // ...defaultPolicy,\n // policyDate: dayjs(dateRange?.startDate).subtract(\n // defaultPolicy.daysBeforeArrival,\n // \"day\"\n // ),\n // penaltyText: t(\"free_cancellation_till\"),\n // };\n\n const freeCancellationPolicyProbar = {\n penalty: 0,\n penaltyType: \"%\",\n ...defaultPolicy,\n policyDate: dayjs(dateRange?.startDate).subtract(\n Math.max(\n ...(applicablePolicies && applicablePolicies.length > 0\n ? applicablePolicies.map((p) => p.daysBeforeArrival || 0)\n : [0])\n ),\n \"day\"\n ),\n penaltyText: t(\"before\"),\n };\n\n const freeCancellationPolicy = dayjs(dateRange?.startDate).isSameOrAfter(\n currentDate,\n \"day\"\n )\n ? applicablePolicies?.find(\n (pol) =>\n pol.penalty == 0 &&\n pol.daysBeforeArrival >= defaultPolicy.daysBeforeArrival\n ) ||\n (!freeCancellationPolicyProbar?.penalty &&\n !freeCancellationPolicyProbar?.policyDate?.isBefore(\n dayjs(dateRange?.startDate).subtract(998, \"day\")\n )\n ? freeCancellationPolicyProbar\n : null)\n : null; // Do not display if no applicable policies\n\n // console.log(\"freeCancellation\", freeCancellationPolicy?.policyDate);\n // console.log(\n // \"freeCancellationPolicybar\",\n // freeCancellationPolicyProbar?.policyDate\n // );\n\n if (\n applicablePolicies?.length > 0 &&\n applicablePolicies.every((pol) => pol.penalty !== 0) &&\n dayjs(dateRange?.startDate).isAfter(currentDate, \"day\") &&\n freeCancellationPolicyProbar?.policyDate?.isSameOrAfter?.(currentDate)\n ) {\n applicablePolicies.unshift(freeCancellationPolicyProbar);\n }\n\n // add one more variable to for end date of policy\n applicablePolicies?.sort((p1, p2) => p2.penalty - p1.penalty);\n // applicablePolicies[0].endDate = dayjs(dateRange?.startDate);\n if (applicablePolicies && applicablePolicies.length > 0) {\n applicablePolicies[0].endDate = dayjs(dateRange?.startDate);\n }\n\n for (let i = 1; i < applicablePolicies?.length; i++) {\n applicablePolicies[i].endDate = applicablePolicies[i - 1].policyDate;\n }\n\n // console.log(\"Default policy\", defaultPolicy);\n // console.log(\"Available policy\", applicablePolicies);\n // console.log(\"Free cancellation policy\", freeCancellationPolicy);\n // console.log(\"Free cancellation probar\", freeCancellationPolicyProbar);\n\n const noRefundPolicy = applicablePolicies\n ?.sort((a, b) => b.daysBeforeArrival - a.daysBeforeArrival)\n ?.find(\n (pol) => pol.penalty == 100\n // || pol.daysBeforeArrival >= defaultPolicy.daysBeforeArrival\n ) || {\n ...defaultPolicy,\n policyDate: dayjs(dateRange?.startDate).subtract(\n defaultPolicy.chargedPercentage == 100\n ? defaultPolicy.daysBeforeArrival\n : 0,\n \"day\"\n ),\n penaltyText: t(\"no_refund_if_cancelled_after\"),\n };\n\n if (\n noRefundPolicy?.policyDate &&\n dayjs(noRefundPolicy?.policyDate).isBefore(currentDate)\n ) {\n noRefundPolicy.policyDate = freeCancellationPolicy?.policyDate || dayjs();\n }\n\n return (\n <>\n \n {/*
\n {\n rpObject?.inclusions?.length > 2 && (\n

setShowRatePlanModal(true)}>See all inclusions

\n )\n }\n \n

\n {t(\"cancellation_refund_policy\")}\n

\n
*/}\n\n {showCancellation && (\n \n )}\n \n {\n showRatePlanModal && (\n setShowRatePlanModal(false)} rpObject={rpObject} room={room}/>\n )\n }\n \n );\n};\n\nexport default CancellationPolicy;\n\n","var _rect, _line, _line2, _line3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCalendar(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"feather feather-calendar\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 4,\n width: 18,\n height: 18,\n rx: 2,\n ry: 2\n })), _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n x1: 16,\n y1: 2,\n x2: 16,\n y2: 6\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 8,\n y1: 2,\n x2: 8,\n y2: 6\n })), _line3 || (_line3 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 3,\n y1: 10,\n x2: 21,\n y2: 10\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendar);\nexport default __webpack_public_path__ + \"static/media/calendar.0aa970cf2052f800fc7aecd31246f748.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUser(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6667 18.5218V17.1305C17.6667 16.3925 17.3857 15.6847 16.8856 15.1629C16.3855 14.6411 15.7072 14.3479 15 14.3479H9.66667C8.95942 14.3479 8.28115 14.6411 7.78105 15.1629C7.28095 15.6847 7 16.3925 7 17.1305V18.5218\",\n stroke: \"#504D56\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3334 11.5652C13.8062 11.5652 15.0001 10.3194 15.0001 8.78261C15.0001 7.24582 13.8062 6 12.3334 6C10.8607 6 9.66675 7.24582 9.66675 8.78261C9.66675 10.3194 10.8607 11.5652 12.3334 11.5652Z\",\n stroke: \"#504D56\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUser);\nexport default __webpack_public_path__ + \"static/media/user.6fbb00a6ade5bab69e1936ac1e480bc0.svg\";\nexport { ForwardRef as ReactComponent };","import dayjs from \"dayjs\";\nimport { useState, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport storageService from \"../Services/storageService\";\nimport { getApplicableTax, getCalculatedTax } from \"./utils\";\n\nexport const arrangePromos = (promotions) => {\n let percentagePromotion =\n promotions?.filter((pr) => pr?.discountType === \"percentage\") || [];\n\n let cashbackPromotion =\n promotions?.filter((pr) => pr?.discountType === \"fixed_amount\") || [];\n let freeNightPromotion =\n promotions?.filter((pr) => pr?.discountType === \"nights\") || [];\n\n let sortedPercentagePromotions = percentagePromotion?.sort(\n (a, b) => b?.discount - a?.discount\n );\n\n let sortedPromotions = [\n ...freeNightPromotion,\n ...sortedPercentagePromotions,\n ...cashbackPromotion,\n ];\n return sortedPromotions;\n};\n\nexport const calculatePromotion = ({ price, promo, idx, dateCount }) => {\n let finalValue = 0,\n reducedPrice = 0;\n switch (promo?.discountType) {\n case \"percentage\":\n reducedPrice = (price * promo?.discount) / 100;\n finalValue = price - reducedPrice;\n break;\n case \"fixed_amount\":\n reducedPrice = promo?.discount;\n finalValue = price - reducedPrice;\n break;\n case \"nights\":\n if (idx >= dateCount - promo?.discount) {\n reducedPrice = price;\n finalValue = 0;\n } else {\n reducedPrice = 0;\n finalValue = price;\n }\n break;\n case null:\n reducedPrice = (price * promo?.discount) / 100;\n finalValue = price - reducedPrice;\n break;\n default:\n reducedPrice = 0;\n finalValue = price;\n }\n return { reducedPrice: Number(reducedPrice), finalValue: Number(finalValue) };\n};\n\nexport function getPromotionValue(promotion, roomPrice) {\n if (promotion.discountType === \"fixed_amount\") {\n return parseFloat(promotion.discount);\n } else if (\n promotion.discountType === \"percentage\" ||\n promotion.discountType === null\n ) {\n return (parseFloat(promotion.discount) / 100) * roomPrice;\n } else if (promotion.discountType === \"nights\") {\n return roomPrice;\n }\n return 0;\n}\n\nexport const getApplicablePromotion = ({\n arrangedPromos,\n tempPrice,\n rp,\n checkInDate,\n}) => {\n if (arrangedPromos?.length < 1) {\n return null;\n }\n\n let sortedPromotions = [...arrangedPromos].sort((a, b) => {\n const aValue = getPromotionValue(a, tempPrice);\n const bValue = getPromotionValue(b, tempPrice);\n return bValue - aValue;\n });\n\n let appliedPromo = null;\n for (let i = 0; i < sortedPromotions?.length; i++) {\n if (!appliedPromo) {\n let promo = sortedPromotions[i];\n let customArray = promo?.PromotionsExtraConfigs || [];\n\n if (\n !isCheckInDateValid(\n promo?.stayStartDate,\n promo?.stayEndDate,\n checkInDate\n )\n ) {\n continue;\n }\n\n if (!isCheckInDateValid(promo?.startDate, promo?.endDate, new Date())) {\n continue;\n }\n\n switch (promo?.type) {\n case \"bulk\":\n if (promo?.discountType === null) {\n appliedPromo = null;\n } else if (tempPrice >= promo?.cutoffAmount) {\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n } else {\n appliedPromo = null;\n }\n break;\n\n case \"custom\":\n appliedPromo = promo;\n\n if (\n (promo?.cutoffAmount && tempPrice >= promo?.cutoffAmount) ||\n promo?.cutoffAmount === null\n ) {\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n } else {\n appliedPromo = null;\n }\n break;\n case \"coupon\":\n appliedPromo = promo;\n if (\n tempPrice >= promo?.cutoffAmount ||\n promo?.cutoffAmount === null\n ) {\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n } else {\n appliedPromo = null;\n }\n break;\n\n case \"day\":\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n case \"basic\":\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n default:\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n }\n }\n }\n\n return appliedPromo;\n};\n\nexport function isCheckInDateValid(startDate, endDate, checkInDate) {\n // Convert input dates to Date objects\n let start = startDate ? new Date(startDate) : null;\n let end = endDate ? new Date(endDate) : null;\n let checkIn = new Date(checkInDate);\n\n // Check if check-in date is between start and end dates\n if (start && end) {\n return checkIn >= start && checkIn <= end;\n } else if (start) {\n return checkIn >= start;\n } else if (end) {\n return checkIn <= end;\n } else {\n return true; // If both startDate and endDate are null, any checkInDate is valid\n }\n}\n\nexport const getApplicablePromotionRoom = ({\n arrangedPromos,\n tempPrice,\n rp,\n checkInDate,\n}) => {\n if (arrangedPromos?.length < 1) {\n return null;\n }\n\n let sortedPromotions = [...arrangedPromos].sort((a, b) => {\n const aValue = getPromotionValue(a, tempPrice);\n const bValue = getPromotionValue(b, tempPrice);\n return bValue - aValue;\n });\n\n let appliedPromo = null;\n for (let i = 0; i < sortedPromotions?.length; i++) {\n if (!appliedPromo) {\n let promo = sortedPromotions[i];\n let customArray = promo?.PromotionsExtraConfigs || [];\n if (\n !isCheckInDateValid(\n promo?.stayStartDate,\n promo?.stayEndDate,\n checkInDate\n )\n ) {\n continue;\n }\n\n if (!isCheckInDateValid(promo?.startDate, promo?.endDate, new Date())) {\n continue;\n }\n\n switch (promo?.type) {\n case \"bulk\":\n if (\n promo?.discountType === null &&\n tempPrice >= promo?.cutoffAmount\n ) {\n appliedPromo = promo;\n } else if (tempPrice >= promo?.cutoffAmount) {\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n } else {\n appliedPromo = null;\n }\n break;\n\n case \"custom\":\n appliedPromo = promo;\n\n if (\n tempPrice >= promo?.cutoffAmount ||\n promo?.cutoffAmount === null\n ) {\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n } else {\n appliedPromo = null;\n }\n break;\n case \"day\":\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n case \"basic\":\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n default:\n appliedPromo = promo;\n if (customArray?.length > 0) {\n appliedPromo = checkIfApplicable({\n tempPrice,\n rp,\n checkInDate,\n customArray,\n promo,\n });\n }\n break;\n }\n }\n }\n return appliedPromo;\n};\n\nexport const checkIfApplicable = ({ rp, checkInDate, customArray, promo }) => {\n let pro = promo;\n\n const hasRateplanCheck = !!customArray.find(\n (custom) => custom?.type === \"rateplan_id\"\n );\n for (let j = 0; j < customArray?.length; j++) {\n switch (customArray[j]?.type) {\n case \"blackout_date\":\n if (customArray[j]?.value?.includes(checkInDate)) {\n return null;\n } else {\n pro = promo;\n }\n break;\n case \"day_of_week\":\n if (\n customArray[j]?.value?.includes(\n dayjs(checkInDate).format(\"dddd\").toLowerCase()\n )\n ) {\n pro = promo;\n } else {\n return null;\n }\n break;\n case \"room_id\":\n if (!customArray[j]?.value?.includes(String(rp?.roomId))) {\n if (!hasRateplanCheck) {\n return null;\n }\n } else {\n pro = promo;\n return pro;\n }\n break;\n case \"rateplan_id\":\n if (customArray[j]?.value?.includes(String(rp?.rpObject?.id))) {\n pro = promo;\n } else {\n return null;\n }\n break;\n }\n }\n\n return pro;\n};\n\nconst usePriceCalculator = () => {\n const {\n selectedRatePlans = [],\n hotelData = {},\n dateRange,\n dateCount,\n selectedHotelAddons = [],\n promotions = [],\n taxes = [],\n couponCode = {},\n } = useSelector((state) => state.hotelInfo);\n\n const { HotelRooms = [] } = hotelData;\n\n const [rpPrice, setRPPrice] = useState(0);\n const [selectedRooms, setSelectedRooms] = useState([]);\n const [rpTotalGuest, setRPTotalGuest] = useState(0);\n const [adultCount, setAdultCount] = useState(0);\n const [childCount, setChildCount] = useState(0);\n const [infantCount, setInfantCount] = useState(0);\n const [rpTax, setRPTax] = useState(0);\n const [totalRoomCost, setTotalRoomCost] = useState(0);\n const [totalAddonCost, setTotalAddonCost] = useState(0);\n const [appliedDiscount, setAppliedDiscount] = useState({ discount: 0 });\n const [priceAfterDiscount, setPriceAfterDiscount] = useState(0);\n const [arrangedPromos, setArrangedPromos] = useState([]);\n const [rpPriceWODiscount, setRPPriceWODiscount] = useState(0);\n const [bulkDiscount, setBulkDiscount] = useState({});\n const [taxObj, setTaxObj] = useState({});\n const [couponValue, setCouponValue] = useState(0);\n\n useEffect(() => {\n const arrange = () => {\n let ar = arrangePromos(promotions);\n setArrangedPromos(ar);\n };\n promotions?.length > 0 && arrange();\n }, [promotions]);\n\n const getLowestPrice = (\n adultCount,\n childCount,\n infantCount,\n minorObj,\n pricing\n ) => {\n let totalGuest = adultCount + childCount + infantCount;\n\n let adultPricing =\n pricing?.filter((pr) => pr?.adultCount === adultCount)?.[0]\n ?.priceForPax || [];\n\n let childPricing = minorObj?.children;\n let infantPricng = minorObj?.infants;\n\n let dates = adultPricing?.map((date) => date?.checkInDate) || [];\n\n let rpArr = [];\n\n dates.forEach((date) => {\n let sum = 0,\n tax = 0;\n\n // calculate adult price\n sum += adultPricing?.filter((dt) => dt?.checkInDate === date)?.[0]\n ?.priceBeforeTax;\n\n if (childCount > 0) {\n let datePrice = childPricing?.filter(\n (dt) => dt?.checkInDate === date\n )[0]?.priceBeforeTax;\n let childPrice = 0;\n for (let i = 0; i < childCount; i++) {\n childPrice += datePrice;\n }\n\n if (pricing?.some((pr) => pr?.adultCount === adultCount + childCount)) {\n let extraAdultComparePrice =\n pricing?.filter(\n (pr) => pr?.adultCount === adultCount + childCount\n )?.[0]?.priceForPax || [];\n let priceForThis = extraAdultComparePrice?.filter(\n (pr) => pr?.checkInDate === date\n )?.[0]?.priceBeforeTax;\n sum = Math.min(priceForThis, sum + childPrice);\n } else {\n sum += childPrice;\n }\n }\n if (infantCount > 0) {\n // compare the price with child and swap it with infant;\n let childDatePrice = childPricing?.filter(\n (dt) => dt?.checkInDate === date\n )[0]?.priceBeforeTax;\n\n let infantDatePrice = infantPricng?.filter(\n (dt) => dt?.checkInDate === date\n )[0]?.priceBeforeTax;\n\n let infantPrice = Math.min(childDatePrice, infantDatePrice);\n let price = 0;\n for (let i = 0; i < infantCount; i++) {\n price += infantPrice;\n }\n\n if (\n pricing?.some(\n (pr) => pr?.adultCount === adultCount + infantCount + childCount\n )\n ) {\n let extraAdultComparePrice =\n pricing?.filter(\n (pr) => pr?.adultCount === adultCount + infantCount + childCount\n )?.[0]?.priceForPax || [];\n let priceForThis = extraAdultComparePrice?.filter(\n (pr) => pr?.checkInDate === date\n )?.[0]?.priceBeforeTax;\n sum = Math.min(priceForThis, sum + price);\n } else {\n sum += price;\n }\n }\n let obj = {\n checkInDate: date,\n priceBeforeTax: sum,\n };\n rpArr.push(obj);\n });\n\n return rpArr;\n };\n\n const checkForApplicableBulk = () => {\n if (!rpPriceWODiscount) {\n return;\n }\n if (promotions?.length === 0 || !promotions) {\n return;\n }\n\n let filterArrays =\n promotions?.filter(\n (pr) => pr?.discountType === null && pr?.type === \"bulk\"\n ) || [];\n\n if (filterArrays?.length === 0 || !filterArrays) {\n return;\n }\n\n let sortedPromotions = [...filterArrays].sort((a, b) => {\n const aValue = getPromotionValue(a, rpPriceWODiscount);\n const bValue = getPromotionValue(b, rpPriceWODiscount);\n return bValue - aValue;\n });\n\n for (let i = 0; i < sortedPromotions.length; i++) {\n let pr = sortedPromotions[i];\n if (rpPriceWODiscount >= Number(pr?.cutoffAmount)) {\n let discount =\n rpPriceWODiscount - (rpPriceWODiscount * pr?.discount) / 100;\n if (discount < rpPrice + rpTax) {\n let rms = [];\n let tax = 0;\n let rSum = 0,\n reduced = 0;\n let arr = [];\n selectedRooms.forEach((rm) => {\n let objArr = [];\n rm?.onedayObj?.forEach((od) => {\n let sum = od?.noDiscPrice;\n rSum += sum;\n let reds = (sum * pr?.discount) / 100;\n reduced += reds;\n objArr.push({\n ...od,\n finalValue: sum - reds,\n reducedPrice: reds,\n });\n });\n arr.push({ ...rm, onedayObj: objArr });\n setBulkDiscount(pr);\n });\n setSelectedRooms(arr);\n setRPTax(tax);\n setTotalRoomCost(rSum - reduced);\n setAppliedDiscount({ discount: rpPriceWODiscount - discount });\n setPriceAfterDiscount(discount);\n return null;\n } else if (discount === rpPrice) {\n return null;\n } else {\n setBulkDiscount({});\n return null;\n }\n }\n }\n };\n useEffect(() => {\n checkForApplicableBulk();\n }, [rpPrice, rpPriceWODiscount, appliedDiscount.discount, promotions]);\n\n useEffect(() => {\n const calculatePrice = () => {\n if (!selectedRatePlans) {\n return;\n }\n\n let totalSum = 0;\n let noDiscPrice = 0;\n let guestCount = 0;\n let totalPriceReduced = 0;\n let arr = [];\n let totalTax = 0;\n let roomCost = 0;\n let adnCost = 0;\n let temAdult = 0,\n temChild = 0,\n couponDiscValue = 0,\n temInfant = 0;\n\n for (let rp of selectedRatePlans) {\n let sum = 0;\n let tax = 0;\n let priceReduced = 0;\n let promosApplied = [];\n let sumObj = [];\n let onedayObj = [];\n\n const room = HotelRooms?.filter((rm) => rm?.id === rp?.roomId)?.[0];\n\n temAdult += rp?.sAdult;\n temChild += rp?.sChild;\n temInfant += rp?.sInfant;\n\n const {\n pricing = [],\n pricingAdditionalGuests = {},\n ratePlans = {},\n } = room;\n\n guestCount += rp?.sAdult + rp?.sChild + rp?.sInfant;\n\n // Child and Infant Price Calculation\n const minorObj = pricingAdditionalGuests[rp?.code];\n\n let allGuestsObj =\n pricing?.filter(\n (r) =>\n r?.ratePlanCode === rp?.code &&\n r?.adultCount === rp?.sAdult &&\n r?.childCount === rp?.sChild &&\n r?.infantCount === rp?.sInfant\n ) || [];\n\n sumObj = getLowestPrice(\n rp?.sAdult,\n rp?.sChild,\n rp?.sInfant,\n minorObj,\n pricing?.filter((r) => r?.ratePlanCode === rp?.code)\n );\n\n if (allGuestsObj?.length > 0) {\n sumObj = allGuestsObj?.flatMap((p) => p?.priceForPax);\n }\n\n sumObj.forEach((obj, idx) => {\n let tempPrice = obj?.priceBeforeTax;\n let checkInDate = obj?.checkInDate;\n let couponPromo = {};\n let parr = [];\n\n let promo = getApplicablePromotion({\n arrangedPromos,\n rp,\n tempPrice,\n checkInDate,\n });\n\n noDiscPrice += tempPrice;\n\n let { finalValue, reducedPrice } = calculatePromotion({\n price: tempPrice,\n promo,\n idx,\n dateCount,\n });\n\n if (couponCode?.id) {\n couponPromo = getApplicablePromotion({\n arrangedPromos: [couponCode],\n rp,\n tempPrice: couponPromo?.isStack ? finalValue : tempPrice,\n checkInDate,\n });\n if (couponPromo) {\n let couponCalc = calculatePromotion({\n price: couponPromo?.isStack ? finalValue : tempPrice,\n promo: couponPromo,\n idx,\n dateCount,\n });\n couponDiscValue += couponCalc.reducedPrice;\n finalValue = couponCalc.finalValue || finalValue;\n if (couponPromo?.isStack) {\n reducedPrice += couponCalc.reducedPrice;\n } else {\n reducedPrice = couponCalc.reducedPrice;\n }\n }\n }\n\n if (promo || couponPromo?.id) {\n if (promo) {\n parr.push(promo);\n }\n if (couponPromo && couponPromo?.id) {\n if (couponPromo?.isStack) {\n parr.push(couponPromo);\n } else {\n parr = [couponPromo];\n }\n }\n promosApplied.push({ promo: parr, checkInDate, reducedPrice });\n }\n\n priceReduced += reducedPrice;\n\n const taxObj = getCalculatedTax({\n taxes: taxes,\n rooms: [{ id: room?.id, amount: finalValue }],\n isInclusive: hotelData?.isTaxIncluded,\n noOfNights: 1,\n });\n\n sum += finalValue;\n tax += taxObj.totalRoomTax;\n\n let oneobj = {\n noDiscPrice: obj?.priceBeforeTax,\n checkInDate: obj?.checkInDate,\n finalValue,\n reducedPrice,\n tax: taxObj.totalRoomTax,\n roomId: room?.id,\n };\n onedayObj.push(oneobj);\n });\n\n let rmObj = {\n ...rp,\n sum,\n tax,\n priceReduced,\n promosApplied: [...new Set(promosApplied)],\n room,\n onedayObj,\n };\n arr.push(rmObj);\n totalSum += rmObj?.sum;\n totalTax += rmObj?.tax;\n totalPriceReduced += rmObj?.priceReduced;\n }\n setAdultCount(temAdult);\n setChildCount(temChild);\n setInfantCount(temInfant);\n\n selectedHotelAddons?.forEach((adn) => {\n if (adn.Addon.multiplier === \"per_day\") {\n adnCost += parseFloat(adn.price) * dateCount;\n } else {\n adnCost += parseFloat(adn.price);\n }\n });\n\n // if (hotelData?.currency !== \"INR\") {\n // totalSum += totalTax;\n // totalTax = 0;\n // }\n\n storageService.set(\"totalPrice\", totalSum + adnCost);\n setRPPrice(totalSum + adnCost);\n setRPPriceWODiscount(noDiscPrice + adnCost);\n setRPTax(totalTax);\n setTotalRoomCost(totalSum);\n setCouponValue(couponDiscValue);\n setTotalAddonCost(adnCost);\n setRPTotalGuest(guestCount);\n setAppliedDiscount({ discount: totalPriceReduced });\n setPriceAfterDiscount(totalSum);\n setSelectedRooms(arr);\n };\n calculatePrice();\n }, [selectedRatePlans, selectedHotelAddons, arrangedPromos, couponCode]);\n\n useEffect(() => {\n const calculateTax = () => {\n let arr = [...selectedRooms];\n let newArr = [];\n arr.forEach((rm) => {\n newArr = [\n ...newArr,\n ...rm?.onedayObj?.map((rm) => ({\n id: rm?.roomId,\n amount: rm?.finalValue,\n })),\n ];\n });\n let txObj = getCalculatedTax({\n rooms: newArr,\n taxes: taxes,\n isInclusive: hotelData?.isTaxIncluded,\n noOfNights: dateCount,\n });\n\n setTaxObj(txObj);\n };\n\n selectedRooms.length > 0 && calculateTax();\n }, [selectedRooms, taxes, bulkDiscount]);\n\n return {\n rpPrice,\n selectedRooms,\n couponValue,\n rpTotalGuest,\n rpTax,\n totalRoomCost,\n priceAfterDiscount,\n taxObj,\n bulkDiscount,\n totalAddonCost,\n appliedDiscount,\n adultCount,\n childCount,\n infantCount,\n };\n};\n\nexport default usePriceCalculator;\n"],"names":["_ref","_rpObject$inclusions","onClose","rpObject","room","useEffect","document","body","style","overflow","handleEsc","event","key","window","addEventListener","removeEventListener","_jsx","className","styles","onClick","e","target","currentTarget","children","_jsxs","role","width","height","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeLinecap","strokeLinejoin","id","roomName","name","description","inclusions","map","inc","inclusionName","useOldPriceCalculator","totalPrice","setTotalPrice","useState","taxObj","setTaxObj","totalTax","setTotalTax","totalGuests","setTotalGuests","totalAdults","setTotalAdults","totalInfants","setTotalInfants","totalChild","setTotalChild","roomObjects","setRoomObjects","totalRoomPrice","setTotalRoomPrice","totalFoodPrice","setTotalFoodPrice","totalAddonPrice","setTotalAddonPrice","arrangedPromos","setArrangedPromos","appliedDiscount","setAppliedDiscount","discount","bulkDiscount","setBulkDiscount","priceWODiscount","setPriceWODiscount","roomPriceNoDisc","setRoomPriceNoDisc","taxObjects","setTaxObjects","couponValue","setCouponValue","selectedRooms","selectedHotelAddons","hotelData","promotions","selectedAddons","dateCount","totalAdult","roomSlots","taxes","couponCode","isHourlyRoom","useSelector","state","hotelInfo","arrange","arr","ar","arrangePromos","checkForApplicableBulk","length","filterArrays","filter","pr","discountType","type","sortedPromotions","sort","b","a","Number","i","cutoffAmount","Math","abs","btax","rSum","reduced","forEach","rm","sum","roomNoDisc","afterDisc","taxAmnt","getCalculatedTax","rooms","amount","isInclusive","isTaxIncluded","noOfNights","totalRoomTax","push","tax","priceReduced","calculatePrice","adults","child","infant","price","adnCost","foodCost","noDiscPrice","couponDiscValue","tempDisc","rmArr","pricing","priceConfig","chosenPriceConfig","priceConfigDifference","sAdult","sChild","sInfant","tempAdult","tempChild","tempInfant","tempPrice","tempTax","promosApplied","idx","_couponPromo4","couponPromo","isDiffConfig","parseFloat","extraInfantPrice","extraChildPrice","promo","getApplicablePromotion","rp","roomId","checkInDate","date","finalValue","reducedPrice","calculatePromotion","_couponPromo","_couponPromo2","_couponPromo3","isStack","couponCalc","_couponPromo5","_couponPromo6","slotObj","defaultPrice","defaultGuestCount","percentage","rmObj","Set","addon","adn","Addon","multiplier","calculateTax","newArr","ro","txObj","CircleLoader","dayjs","isSameOrAfter","_closestPolicy$daysBe","_freeCancellationPoli","_freeCancellationPoli2","_freeCancellationPoli3","_applicablePolicies$s","_freeCancellationPoli4","_freeCancellationPoli5","_dayjs$subtract","cancellationPolicy","dateRange","noMargin","isMiniVersion","showCancellation","t","useTranslation","currentDate","showRatePlanModal","setShowRatePlanModal","startDate","closestPolicy","pol","_pol$variables","_pol$variables2","_pol$variables$charge","_pol$variables3","_pol$penalty_type","daysBeforeArrival","parseInt","variables","Days_Before","policyDate","subtract","penaltyText","isSame","penalty","chargedPercentage","Penalty_Value","penaltyType","penalty_type","isBefore","defaultPolicy","applicablePolicies","_pol$variables4","_pol$variables5","_pol$variables$charge2","_pol$variables6","_pol$penalty_type2","freeCancellationPolicyProbar","max","p","freeCancellationPolicy","find","every","isAfter","call","unshift","p1","p2","endDate","noRefundPolicy","_Fragment","color","marginTop","display","alignItems","marginBottom","gap","fontSize","format","padding","flexShrink","borderRadius","border","background","boxShadow","position","margin","maxWidth","maxHeight","backgroundColor","top","left","transform","zIndex","Object","values","reduce","acc","refundPercentage","fullRefund","partialRefund","noRefund","policy","_policy$endDate","refundText","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","fontStyle","fontWeight","bottom","right","lineHeight","borderCollapse","textAlign","textTransform","_pol$policyDate","RatePlanModal","percentagePromotion","cashbackPromotion","getPromotionValue","promotion","roomPrice","_ref2","aValue","appliedPromo","customArray","PromotionsExtraConfigs","isCheckInDateValid","stayStartDate","stayEndDate","Date","checkIfApplicable","start","end","checkIn","getApplicablePromotionRoom","_ref3","_ref4","_customArray$j2","_customArray$j2$value","_customArray$j3","_customArray$j3$value","_customArray$j4","_customArray$j4$value","_customArray$j5","_customArray$j5$value","_rp$rpObject","pro","hasRateplanCheck","custom","j","_customArray$j","value","includes","toLowerCase","String","usePriceCalculator","selectedRatePlans","HotelRooms","rpPrice","setRPPrice","setSelectedRooms","rpTotalGuest","setRPTotalGuest","adultCount","setAdultCount","childCount","setChildCount","infantCount","setInfantCount","rpTax","setRPTax","totalRoomCost","setTotalRoomCost","totalAddonCost","setTotalAddonCost","priceAfterDiscount","setPriceAfterDiscount","rpPriceWODiscount","setRPPriceWODiscount","getLowestPrice","minorObj","_pricing$filter","_pricing$filter$","adultPricing","priceForPax","childPricing","infantPricng","infants","dates","rpArr","_adultPricing$filter","_adultPricing$filter$","dt","priceBeforeTax","_childPricing$filter$","datePrice","childPrice","some","_pricing$filter2","_pricing$filter2$","_extraAdultComparePri","_extraAdultComparePri2","extraAdultComparePrice","priceForThis","min","_childPricing$filter$2","_infantPricng$filter$","childDatePrice","infantDatePrice","infantPrice","_pricing$filter3","_pricing$filter3$","_extraAdultComparePri3","_extraAdultComparePri4","obj","_rm$onedayObj","objArr","onedayObj","od","reds","totalSum","guestCount","totalPriceReduced","temAdult","temChild","temInfant","_HotelRooms$filter","sumObj","pricingAdditionalGuests","ratePlans","code","allGuestsObj","r","ratePlanCode","flatMap","parr","oneobj","storageService","set","_rm$onedayObj2"],"mappings":";;sHAiCA,MACA,EAAe,IAA0B,wD,4DCjCzC,QAA0B,+BAA1B,EAAiE,6BAAjE,EAA4G,mCAA5G,EAAuJ,6BAAvJ,EAA+L,gCAA/L,EAAyO,+BAAzO,EAAsR,mCAAtR,EAAoU,gCAApU,EAAkX,mCAAlX,EAAia,iC,aCEja,MAoEA,EApEsBA,IAAkC,IAADC,EAAA,IAAhC,QAAEC,EAAO,SAAEC,EAAQ,KAAEC,GAAMJ,GAEhDK,EAAAA,EAAAA,YAAU,KACRC,SAASC,KAAKC,MAAMC,SAAW,SACxB,KACLH,SAASC,KAAKC,MAAMC,SAAW,MAAM,IAEtC,KAGHJ,EAAAA,EAAAA,YAAU,KACR,MAAMK,EAAaC,IACC,WAAdA,EAAMC,KACRV,GACF,EAGF,OADAW,OAAOC,iBAAiB,UAAWJ,GAC5B,KACLG,OAAOE,oBAAoB,UAAWL,EAAU,CACjD,GACA,CAACR,IASJ,OACEc,EAAAA,EAAAA,KAAA,OAAKC,UAAWC,EAAgBC,QAPNC,IACtBA,EAAEC,SAAWD,EAAEE,eACjBpB,GACF,EAI4DqB,UAC1DC,EAAAA,EAAAA,MAAA,OAAKP,UAAWC,EAAcO,KAAK,SAAS,aAAW,OAAO,kBAAgB,cAAaF,SAAA,EACzFP,EAAAA,EAAAA,KAAA,UACEC,UAAWC,EACXC,QAASjB,EACT,aAAW,eAAcqB,UAEzBC,EAAAA,EAAAA,MAAA,OAAKE,MAAM,KAAKC,OAAO,KAAKC,QAAQ,YAAYC,KAAK,OAAOC,MAAM,6BAA4BP,SAAA,EAC5FP,EAAAA,EAAAA,KAAA,QAAMe,EAAE,aAAaC,OAAO,eAAeC,YAAY,IAAIC,cAAc,QAAQC,eAAe,WAChGnB,EAAAA,EAAAA,KAAA,QAAMe,EAAE,aAAaC,OAAO,eAAeC,YAAY,IAAIC,cAAc,QAAQC,eAAe,gBAIpGnB,EAAAA,EAAAA,KAAA,MAAIoB,GAAG,cAAcnB,UAAWC,EAAaK,SAAM,OAAJnB,QAAI,IAAJA,OAAI,EAAJA,EAAMiC,YAErDrB,EAAAA,EAAAA,KAAA,MAAIC,UAAWC,EAAgBK,SAAU,OAARpB,QAAQ,IAARA,OAAQ,EAARA,EAAUmC,QAE3CtB,EAAAA,EAAAA,KAAA,OAAKC,UAAWC,KAEhBF,EAAAA,EAAAA,KAAA,OAAKC,UAAWC,EAAmBK,UACjCP,EAAAA,EAAAA,KAAA,KAAAO,SACW,OAARpB,QAAQ,IAARA,OAAQ,EAARA,EAAUoC,iBAGfvB,EAAAA,EAAAA,KAAA,MAAIC,UAAWC,EAAgBK,SAEnB,OAARpB,QAAQ,IAARA,GAAoB,QAAZF,EAARE,EAAUqC,kBAAU,IAAAvC,OAAZ,EAARA,EAAsBwC,KAAKC,IACvBlB,EAAAA,EAAAA,MAAA,MAAIP,UAAWC,EAAmBK,SAAA,EAChCP,EAAAA,EAAAA,KAAA,QAAMC,UAAWC,EAAiBK,SAAC,WAAQ,IAAK,OAAHmB,QAAG,IAAHA,OAAG,EAAHA,EAAKC,gBADT,OAAHD,QAAG,IAAHA,OAAG,EAAHA,EAAKN,YAOnD,C,0FC1DV,MAuYA,EAvY8BQ,KAC5B,MAAOC,EAAYC,IAAiBC,EAAAA,EAAAA,UAAS,IACtCC,EAAQC,IAAaF,EAAAA,EAAAA,UAAS,CAAC,IAC/BG,EAAUC,IAAeJ,EAAAA,EAAAA,UAAS,IAClCK,EAAaC,IAAkBN,EAAAA,EAAAA,UAAS,IACxCO,EAAaC,IAAkBR,EAAAA,EAAAA,UAAS,IACxCS,EAAcC,IAAmBV,EAAAA,EAAAA,UAAS,IAC1CW,EAAYC,IAAiBZ,EAAAA,EAAAA,UAAS,IACtCa,EAAaC,IAAkBd,EAAAA,EAAAA,UAAS,KACxCe,EAAgBC,IAAqBhB,EAAAA,EAAAA,UAAS,IAC9CiB,EAAgBC,IAAqBlB,EAAAA,EAAAA,UAAS,IAC9CmB,EAAiBC,IAAsBpB,EAAAA,EAAAA,UAAS,IAChDqB,EAAgBC,IAAqBtB,EAAAA,EAAAA,UAAS,KAC9CuB,EAAiBC,IAAsBxB,EAAAA,EAAAA,UAAS,CAAEyB,SAAU,KAC5DC,EAAcC,IAAmB3B,EAAAA,EAAAA,UAAS,CAAC,IAC3C4B,EAAiBC,IAAsB7B,EAAAA,EAAAA,UAAS,IAChD8B,EAAiBC,IAAsB/B,EAAAA,EAAAA,UAAS,IAChDgC,EAAYC,IAAiBjC,EAAAA,EAAAA,UAAS,CAAC,IACvCkC,EAAaC,IAAkBnC,EAAAA,EAAAA,UAAS,IAEzC,cACJoC,EAAa,oBACbC,EAAmB,UACnBC,EAAS,WACTC,EAAa,GAAE,eACfC,EAAc,UACdC,EAAS,WACTC,EAAU,UACVC,EAAS,MACTC,EAAK,WACLC,EAAa,CAAC,EAAC,aACfC,IACEC,EAAAA,EAAAA,KAAaC,GAAUA,EAAMC,aAEjC3F,EAAAA,EAAAA,YAAU,KACQ4F,MACd,IAAIC,EAAM,IAAIZ,GACVa,GAAKC,EAAAA,EAAAA,IAAcF,GACvB7B,EAAkB8B,EAAG,EAEvBF,EAAS,GACR,CACDX,EACAC,EACAH,EACAD,EACAM,KAiFFpF,EAAAA,EAAAA,YAAU,KA9EqBgG,MAC7B,IAAK1B,EACH,OAEF,GAA2B,KAAb,OAAVW,QAAU,IAAVA,OAAU,EAAVA,EAAYgB,UAAiBhB,EAC/B,OAGF,IAAIiB,GACQ,OAAVjB,QAAU,IAAVA,OAAU,EAAVA,EAAYkB,QACTC,GAA4B,QAAnB,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIC,eAAsC,UAAX,OAAFD,QAAE,IAAFA,OAAE,EAAFA,EAAIE,UACtC,GAEP,GAA6B,KAAb,OAAZJ,QAAY,IAAZA,OAAY,EAAZA,EAAcD,UAAiBC,EACjC,OAGF,IAAIK,EAAmB,IAAIL,GAAcM,MAAK,CAACC,EAAGC,IACzCC,OAAQ,OAADD,QAAC,IAADA,OAAC,EAADA,EAAGvC,UAAYwC,OAAQ,OAADF,QAAC,IAADA,OAAC,EAADA,EAAGtC,YAGzC,IAAK,IAAIyC,EAAI,EAAGA,EAAIL,EAAiBN,OAAQW,IAAK,CAChD,IAAIR,EAAKG,EAAiBK,GAC1B,GAAID,OAAOrC,IAAoBqC,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAIS,cAAe,CACvD,IAAI1C,EAAWG,EAAmBA,GAAoB,OAAF8B,QAAE,IAAFA,OAAE,EAAFA,EAAIjC,UAAY,IACpE,GAAIA,EAAW3B,EAAasE,KAAKC,IAAIlE,GAAW,CAC9C,IACImE,EAAO,EACPC,EAAO,EACTC,EAAU,EACRrB,EAAM,GA8BV,MA7BA,IAAItC,GAAa4D,SAASC,IACxB,IAAIC,EAAQ,OAAFD,QAAE,IAAFA,OAAE,EAAFA,EAAIE,WACdL,GAAQI,EAERH,GAAYG,GAAQ,OAAFjB,QAAE,IAAFA,OAAE,EAAFA,EAAIjC,UAAY,IAClC,IAAIoD,EAAYF,EAAOA,GAAQ,OAAFjB,QAAE,IAAFA,OAAE,EAAFA,EAAIjC,UAAY,IAE7C,MAMMqD,GANSC,EAAAA,EAAAA,IAAiB,CAC9BnC,MAAOA,EACPoC,MAAO,CAAC,CAAE3F,GAAM,OAAFqF,QAAE,IAAFA,OAAE,EAAFA,EAAIrF,GAAI4F,OAAQJ,IAC9BK,YAAsB,OAAT5C,QAAS,IAATA,OAAS,EAATA,EAAW6C,cACxBC,WAAY,IAESC,aACvBf,GAAQQ,EACR3B,EAAImC,KAAK,IACJZ,EACHC,IAAKA,EAAMH,EAAUM,EACrBS,IAAKjB,EACLkB,aAAchB,EACdI,WAAc,OAAFF,QAAE,IAAFA,OAAE,EAAFA,EAAIE,YAChB,IAEJ9D,EAAeqC,GACf/C,EAAYkE,GACZtD,EAAkBuD,EAAOC,GACzBhD,EAAmB,CAAEC,SAAUG,EAAkBH,IACjD1B,EAAc0B,EAAW6C,QACzB3C,EAAgB+B,EAElB,CAAO,OAAIjC,IAAa3B,EAAaK,OACnC,OAEAwB,EAAgB,CAAC,EAGrB,CAEE,YADAA,EAAgB,CAAC,EAGrB,CAE8B,KAAb,OAAbS,QAAa,IAAbA,OAAa,EAAbA,EAAemB,SACjB5B,EAAgB,CAAC,EACnB,EAIA2B,EAAwB,GACvB,CAACf,EAAYX,EAAiB3B,EAAQmC,IAmPzC,OA9BA9E,EAAAA,EAAAA,YAAU,KAnNamI,MACrB,IAAIC,EAAS,EACXC,EAAQ,EACRC,EAAS,EACTC,EAAQ,EACRN,EAAM,EACNO,EAAU,EACVC,EAAW,EACXC,EAAc,EACdC,EAAkB,EAClBC,EAAW,EACXC,EAAQ,GAEV/D,EAAcqC,SAASpH,IACrB,MAAM,QACJ+I,EAAU,GAAE,YACZC,EAAc,CAAC,EAAC,kBAChBC,EAAoB,GAAE,sBACtBC,EAAwB,CAAC,GACvBlJ,EACJqI,GAAc,OAAJrI,QAAI,IAAJA,OAAI,EAAJA,EAAMmJ,OAChBb,GAAa,OAAJtI,QAAI,IAAJA,OAAI,EAAJA,EAAMoJ,OACfb,GAAc,OAAJvI,QAAI,IAAJA,OAAI,EAAJA,EAAMqJ,QAChB,IAAIC,EAAgB,OAAJtJ,QAAI,IAAJA,OAAI,EAAJA,EAAMmJ,OACpBI,EAAgB,OAAJvJ,QAAI,IAAJA,OAAI,EAAJA,EAAMoJ,OAClBI,EAAiB,OAAJxJ,QAAI,IAAJA,OAAI,EAAJA,EAAMqJ,QACnBI,EAAY,EACZtB,EAAe,EACfuB,EAAU,EACVnC,EAAa,EACboC,EAAgB,GAElBZ,EAAQ3B,SAAQ,CAACf,EAAIuD,KAAS,IAADC,EAC3B,IAAIvC,EAAM,EACNwC,EAAc,CAAC,EACfC,EAAqC,0BAAtBd,EACfc,GAAgBb,GAClB5B,GACEV,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OAASwB,WAAWd,EAAsBI,IACvD/B,GACEX,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OAASwB,WAAWd,EAAsBI,MAEvDhC,GAAOV,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OAASwB,WAAWhB,EAAYM,IAClD/B,GAAcX,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OAASwB,WAAWhB,EAAYM,KAGvDE,GAAcA,EAAa,IAC7BlC,IAAW,OAAJtH,QAAI,IAAJA,OAAI,EAAJA,EAAMiK,kBAAmBT,GAG9BD,GAAaA,EAAY,IAC3BjC,IAAW,OAAJtH,QAAI,IAAJA,OAAI,EAAJA,EAAMkK,iBAAkBX,GAGjC,MAAMY,GAAQC,EAAAA,EAAAA,IAAuB,CACnCpG,iBACAqG,GAAI,CAAEC,OAAY,OAAJtK,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,IACpByH,UAAWnC,EACXiD,YAAe,OAAFlE,QAAE,IAAFA,OAAE,EAAFA,EAAImE,OAGnB,IAAI,WAAEC,EAAU,aAAEC,IAAiBC,EAAAA,EAAAA,IAAmB,CACpDnC,MAAOlB,EACP6C,QACAP,MACAxE,cAGF,GAAc,OAAVI,QAAU,IAAVA,GAAAA,EAAYxD,GAAI,CAAC,IAAD4I,EAAAC,EAAAC,EAClBhB,GAAcM,EAAAA,EAAAA,IAAuB,CACnCpG,eAAgB,CAACwB,GACjB6E,GAAI,CAAEC,OAAY,OAAJtK,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,IACpByH,UAAsB,QAAXmB,EAAAd,SAAW,IAAAc,GAAXA,EAAaG,QAAUN,EAAanD,EAC/CiD,YAAe,OAAFlE,QAAE,IAAFA,OAAE,EAAFA,EAAImE,OAEnB,IAAIQ,GAAaL,EAAAA,EAAAA,IAAmB,CAClCnC,MAAkB,QAAXqC,EAAAf,SAAW,IAAAe,GAAXA,EAAaE,QAAUN,EAAanD,EAC3C6C,MAAOL,EACPF,MACAxE,cAEFwD,GAAmBoC,EAAWN,aAC9BD,EAAaO,EAAWP,WACT,QAAfK,EAAIhB,SAAW,IAAAgB,GAAXA,EAAaC,QACfL,GAAgBM,EAAWN,aAE3BA,EAAeM,EAAWN,YAE9B,CAEA,IAAKP,GAAoB,QAAfN,EAAIC,SAAW,IAAAD,GAAXA,EAAa7H,MAAQyD,EAAc,CAAC,IAADwF,EAC/C,IAAInF,EAAM,GAMY,IAADoF,EAJjBf,GACFrE,EAAImC,KAAKkC,GAGI,QAAfc,EAAInB,SAAW,IAAAmB,GAAXA,EAAajJ,KACA,QAAfkJ,EAAIpB,SAAW,IAAAoB,GAAXA,EAAaH,QACfjF,EAAImC,KAAK6B,GAEThE,EAAM,CAACgE,IAIXH,EAAc1B,KAAK,CACjBkC,MAAOrE,EACPyE,YAAe,OAAFlE,QAAE,IAAFA,OAAE,EAAFA,EAAImE,KACjBE,gBAEJ,CAEA,MAOMjD,GAPSC,EAAAA,EAAAA,IAAiB,CAC9BnC,MAAOA,EACPoC,MAAO,CAAC,CAAE3F,GAAQ,OAAJhC,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,GAAI4F,OAAQ6C,IAChC5C,YAAsB,OAAT5C,QAAS,IAATA,OAAS,EAATA,EAAW6C,cACxBC,WAAY,IAGSC,aAOvB,GALAG,GAAgBuC,EAEhBjB,GAAagB,GAAwB,OAATxF,QAAS,IAATA,GAAAA,EAAW6C,cAAoBL,EAAJ,GACvDiC,GAAWjC,EAEPhC,EAAc,CAChB,IAAI0F,EAAU7F,EAAc,OAAJtF,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,IAC1BoJ,EAAe,EAEjBA,EADErB,GAAgBb,EAEhBtC,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OACXwB,WAAWd,EAA0B,OAAJlJ,QAAI,IAAJA,OAAI,EAAJA,EAAMqL,oBAGvCzE,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAImC,OACXwB,WAAWhB,EAAgB,OAAJhJ,QAAI,IAAJA,OAAI,EAAJA,EAAMqL,oBAI/B5B,EADEH,IAAiB,OAAJtJ,QAAI,IAAJA,OAAI,EAAJA,EAAMqL,mBACTD,GAAsB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASG,YAEhCvB,GAAgBb,EAEhBkC,GAAsB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASG,YACxBpC,EAA0B,OAAJlJ,QAAI,IAAJA,OAAI,EAAJA,EAAMmJ,QAG5BiC,GAAsB,OAAPD,QAAO,IAAPA,OAAO,EAAPA,EAASG,aACvBtC,EAAgB,OAAJhJ,QAAI,IAAJA,OAAI,EAAJA,EAAMmJ,QAAUiC,EAAeA,GAGlDjD,EAAe,EACfZ,EAAakC,EACbC,EAAU,CACZ,KAEFf,GAAepB,EAEf,IAAIgE,EAAQ,IACPvL,EACHsH,IAAKmC,EACLvB,IAAKwB,EACLvB,eACAZ,aACAoC,cAAe,IAAI,IAAI6B,IAAI7B,KAE7Bb,EAAMb,KAAKsD,GACX/C,GAASiB,EACTvB,GAAOwB,EACPb,GAAYV,CAAY,IAQ1BhE,EAAmB,CAAEC,SAAUyE,IAC/B5F,EAAeoF,EAASC,EAAQC,GAChCpF,EAAekF,GACf9E,EAAc+E,GACdjF,EAAgBkF,GAChBzD,EAAe8D,GACfjF,EAAkB6E,GAClBzF,EAAYmF,GACZzE,EAAeqF,GACfpE,EAAmBiE,GAEL,OAAdxD,QAAc,IAAdA,GAAAA,EAAgBiC,SAASqE,IACvB/C,GAAsBsB,WAAgB,OAALyB,QAAK,IAALA,OAAK,EAALA,EAAOjD,OAASpD,CAAS,IAG5DvB,EAAkB6E,GAEC,OAAnB1D,QAAmB,IAAnBA,GAAAA,EAAqBoC,SAASsE,IACC,YAAzBA,EAAIC,MAAMC,WACZnD,GAAWuB,WAAW0B,EAAIlD,OAASpD,EAEnCqD,GAAWuB,WAAW0B,EAAIlD,MAC5B,IAGFzE,EAAmB0E,GAEnBD,EAAQA,EAAQC,EAAUC,EAE1BhG,EAAc8F,GACdhE,EAAmBmE,EAAcF,EAAUC,EAAS,EAIpDN,EAAgB,GACf,CACDrD,EACAI,EACAG,EACAN,EACAhB,EACAyB,EACAD,EACAN,KAGFjF,EAAAA,EAAAA,YAAU,KAcRuD,EAAY0C,OAAS,GAbA2F,MACnB,IACIC,EADM,IAAItI,GACGnB,KAAK0J,IAAE,CAAQ/J,GAAM,OAAF+J,QAAE,IAAFA,OAAE,EAAFA,EAAI/J,GAAI4F,QAAU,OAAFmE,QAAE,IAAFA,OAAE,EAAFA,EAAIzE,MAAQ,OAAFyE,QAAE,IAAFA,OAAE,EAAFA,EAAI7D,SAE9D8D,GAAQtE,EAAAA,EAAAA,IAAiB,CAC3BC,MAAOmE,EACPvG,MAAOA,EACPsC,YAAsB,OAAT5C,QAAS,IAATA,OAAS,EAATA,EAAW6C,cACxBC,WAAY3C,IAGdvC,EAAUmJ,EAAM,EAEQH,EAAc,GACvC,CAACrI,EAAa+B,IAEV,CACL9C,aACAO,cACAQ,cACAE,iBACAZ,WACAgB,kBACAF,iBACAV,cACAI,aACAY,kBACAd,eACAqB,kBACAI,cACAR,eACAzB,SACD,C,uDC1YH,MAmBA,EAnBqBqJ,KAEjB7K,EAAAA,EAAAA,MAAA,OAAKP,UAAU,SAAQM,SAAA,EACrBP,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,WACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,WACfD,EAAAA,EAAAA,KAAA,OAAKC,UAAU,Y,iHChBrB,QAAoF,wCAApF,EAAqI,mCAArI,EAAkL,oCAAlL,EAAiQ,qEAAjQ,EAA6U,iC,uBCO7UqL,IAAAA,OAAaC,KACb,MAkwBA,EAlwB2BvM,IASpB,IAADwM,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IATsB,mBAC1BC,EAAkB,UAClBC,EAAS,SAETC,EAAQ,cACRC,GAAgB,EAAK,SACrBhN,EAAS,CAAC,EAAC,KACXC,EAAK,CAAC,EAAC,iBACPgN,GACDpN,EAWC,MAAM,EAAEqN,IAAMC,EAAAA,EAAAA,MACRC,EAAcjB,OAGbkB,EAAmBC,IAFNnB,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,YAEa3K,EAAAA,EAAAA,WAAS,IAIrD4K,EAAkC,OAAlBX,QAAkB,IAAlBA,OAAkB,EAAlBA,EAClBvK,KAAKmL,IAAS,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EACb,MAAMC,EAAoBC,SACrB,OAAHP,QAAG,IAAHA,GAAc,QAAXC,EAAHD,EAAKQ,iBAAS,IAAAP,GAAdA,EAAgBK,kBACT,OAAHN,QAAG,IAAHA,GAAc,QAAXE,EAAHF,EAAKQ,iBAAS,IAAAN,OAAX,EAAHA,EAAgBI,kBACb,OAAHN,QAAG,IAAHA,OAAG,EAAHA,EAAKS,YACT,IAGIC,EACiB,KAArBJ,EACI,KACA5B,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWa,SAASL,EAAmB,OAExDM,EACiB,KAArBN,EACI,iBACU,OAAVI,QAAU,IAAVA,GAAAA,EAAYG,OAAgB,OAATxB,QAAS,IAATA,OAAS,EAATA,EAAWS,UAAW,OACzC,KACA,OAEN,MAAO,CACLY,aACAI,QAA0C,QAAnCX,EAAK,OAAHH,QAAG,IAAHA,GAAc,QAAXI,EAAHJ,EAAKQ,iBAAS,IAAAJ,OAAX,EAAHA,EAAgBW,yBAAiB,IAAAZ,EAAAA,EAAO,OAAHH,QAAG,IAAHA,OAAG,EAAHA,EAAKgB,cACnDC,YAA8B,QAAnBZ,EAAK,OAAHL,QAAG,IAAHA,OAAG,EAAHA,EAAKkB,oBAAY,IAAAb,EAAAA,EAAI,IAClCO,cACAN,oBACD,IAEF1H,QACEoH,GACoB,OAAnBA,EAAIU,cACFV,EAAIU,YAAcV,EAAIU,WAAWS,SAASxB,EAAa,UAE5D1G,MAAK,CAACE,EAAGD,IAAMC,EAAEmH,kBAAoBpH,EAAEoH,oBAAmB,GAEvDc,EAAgB,CACpBd,kBAAmD,QAAlC1B,EAAe,OAAbmB,QAAa,IAAbA,OAAa,EAAbA,EAAeO,yBAAiB,IAAA1B,EAAAA,EAAI,EACvDmC,oBAAiC,OAAbhB,QAAa,IAAbA,OAAa,EAAbA,EAAee,UAAW,EAC9CJ,WAAYrB,EACZyB,SAAsB,OAAbf,QAAa,IAAbA,OAAa,EAAbA,EAAee,UAAW,EACnCG,aAA0B,OAAblB,QAAa,IAAbA,OAAa,EAAbA,EAAekB,cAAe,IAC3CL,aAA0B,OAAbb,QAAa,IAAbA,OAAa,EAAbA,EAAea,cAAenB,EAAE,WAgDzC4B,EAAuC,OAAlBjC,QAAkB,IAAlBA,OAAkB,EAAlBA,EACvBvK,KAAKmL,IAAS,IAADsB,EAAAC,EAAAC,EAAAC,EAAAC,EACb,MAAMpB,EAAoBC,SACrB,OAAHP,QAAG,IAAHA,GAAc,QAAXsB,EAAHtB,EAAKQ,iBAAS,IAAAc,GAAdA,EAAgBhB,kBACT,OAAHN,QAAG,IAAHA,GAAc,QAAXuB,EAAHvB,EAAKQ,iBAAS,IAAAe,OAAX,EAAHA,EAAgBjB,kBACb,OAAHN,QAAG,IAAHA,OAAG,EAAHA,EAAKS,YACT,IAGIC,EACiB,KAArBJ,EACI5B,MACAA,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWa,SAASL,EAAmB,OAExDM,EACiB,KAArBN,EACI,iBACU,OAAVI,QAAU,IAAVA,GAAAA,EAAYG,OAAgB,OAATxB,QAAS,IAATA,OAAS,EAATA,EAAWS,UAAW,OACzC,KACA,OAEN,MAAO,CACLY,aACAI,QAA0C,QAAnCU,EAAK,OAAHxB,QAAG,IAAHA,GAAc,QAAXyB,EAAHzB,EAAKQ,iBAAS,IAAAiB,OAAX,EAAHA,EAAgBV,yBAAiB,IAAAS,EAAAA,EAAO,OAAHxB,QAAG,IAAHA,OAAG,EAAHA,EAAKgB,cACnDC,YAA8B,QAAnBS,EAAK,OAAH1B,QAAG,IAAHA,OAAG,EAAHA,EAAKkB,oBAAY,IAAAQ,EAAAA,EAAI,IAClCd,cACAN,oBACD,IAEF1H,QACEoH,GACoB,OAAnBA,EAAIU,cACFV,EAAIU,YAAcV,EAAIU,WAAW/B,cAAcgB,EAAa,UAGjC,KAAb,OAAlB0B,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB3I,SACtB2I,EAAmB5G,KAAK,CACtBiG,WAAYhC,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAC7BmB,YAAa,IACbL,YAAa,SACbE,QAAsB,OAAbM,QAAa,IAAbA,OAAa,EAAbA,EAAeL,kBACxBT,kBAAmBc,EAAcd,oBAiBrC,MAAMqB,EAA+B,CACnCb,QAAS,EACTG,YAAa,OACVG,EACHV,WAAYhC,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWa,SACtCpH,KAAKqI,OACCP,GAAsBA,EAAmB3I,OAAS,EAClD2I,EAAmBxM,KAAKgN,GAAMA,EAAEvB,mBAAqB,IACrD,CAAC,IAEP,OAEFM,YAAanB,EAAE,WAGXqC,EAAyBpD,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWnB,cACzDgB,EACA,QAEoB,OAAlB0B,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoBU,MACjB/B,GACgB,GAAfA,EAAIc,SACJd,EAAIM,mBAAqBc,EAAcd,uBAEb,OAA5BqB,QAA4B,IAA5BA,GAAAA,EAA8Bb,SACH,OAA5Ba,QAA4B,IAA5BA,GAAwC,QAAZ9C,EAA5B8C,EAA8BjB,kBAAU,IAAA7B,GAAxCA,EAA0CsC,SACzCzC,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWa,SAAS,IAAK,QAGxC,KADAgB,GAEJ,MASgB,OAAlBN,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB3I,QAAS,GAC7B2I,EAAmBW,OAAOhC,GAAwB,IAAhBA,EAAIc,WACtCpC,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWmC,QAAQtC,EAAa,QACrB,OAA5BgC,QAA4B,IAA5BA,GAAwC,QAAZ7C,EAA5B6C,EAA8BjB,kBAAU,IAAA5B,GAAe,QAAfC,EAAxCD,EAA0CH,qBAAa,IAAAI,GAAvDA,EAAAmD,KAAApD,EAA0Da,IAE1D0B,EAAmBc,QAAQR,GAIX,OAAlBN,QAAkB,IAAlBA,GAAAA,EAAoBpI,MAAK,CAACmJ,EAAIC,IAAOA,EAAGvB,QAAUsB,EAAGtB,UAEjDO,GAAsBA,EAAmB3I,OAAS,IACpD2I,EAAmB,GAAGiB,QAAU5D,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,YAGnD,IAAK,IAAIzG,EAAI,EAAGA,GAAsB,OAAlBgI,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB3I,QAAQW,IAC9CgI,EAAmBhI,GAAGiJ,QAAUjB,EAAmBhI,EAAI,GAAGqH,WAQ5D,MAAM6B,GAAmC,OAAlBlB,QAAkB,IAAlBA,GACsC,QADpBrC,EAAlBqC,EACnBpI,MAAK,CAACE,EAAGD,IAAMA,EAAEoH,kBAAoBnH,EAAEmH,2BAAkB,IAAAtB,OADpB,EAAlBA,EAEnB+C,MACC/B,GAAuB,KAAfA,EAAIc,YAEV,IACFM,EACHV,WAAYhC,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WAAWa,SACH,KAAnCS,EAAcL,kBACVK,EAAcd,kBACd,EACJ,OAEFM,YAAanB,EAAE,iCAUjB,OANgB,OAAd8C,QAAc,IAAdA,GAAAA,EAAgB7B,YAChBhC,IAAoB,OAAd6D,QAAc,IAAdA,OAAc,EAAdA,EAAgB7B,YAAYS,SAASxB,KAE3C4C,EAAe7B,YAAmC,OAAtBoB,QAAsB,IAAtBA,OAAsB,EAAtBA,EAAwBpB,aAAchC,QAIlE9K,EAAAA,EAAAA,MAAA4O,EAAAA,SAAA,CAAA7O,SAAA,EACAP,EAAAA,EAAAA,KAAA,OACEC,UAAW,4CACTC,KACEiM,EAAgBjM,EAAc,KAMlCK,SAcC6L,IACC5L,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACEC,EAAAA,EAAAA,MAAA,OAAKhB,MAAO,CAAE6P,MAAO,QAASC,UAAW,QAAS/O,SAAA,CAE/CmO,IACClO,EAAAA,EAAAA,MAAA,OACEhB,MAAO,CACL+P,QAAS,OACTC,WAAY,SACZC,aAAc,MACdC,IAAK,OACLnP,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QAAMR,MAAO,CAAE+P,QAAS,QAAShP,UAC/BC,EAAAA,EAAAA,MAAA,OACEM,MAAM,6BACNJ,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OAAMN,SAAA,EAEXP,EAAAA,EAAAA,KAAA,KAAG,YAAU,uBAAsBO,UACjCP,EAAAA,EAAAA,KAAA,QACEe,EAAE,oKACFC,OAAO,UACP,eAAa,UACb,iBAAe,QACf,kBAAgB,aAGpBhB,EAAAA,EAAAA,KAAA,QAAAO,UACEP,EAAAA,EAAAA,KAAA,YAAUoB,GAAG,iBAAgBb,UAC3BP,EAAAA,EAAAA,KAAA,QAAMU,MAAM,KAAKC,OAAO,KAAKE,KAAK,oBAK1CL,EAAAA,EAAAA,MAAA,QAAMhB,MAAO,CAAEmQ,SAAU,QAASpP,SAAA,CAC/B8L,EAAE,2BAA4B,IACR,OAAtBqC,QAAsB,IAAtBA,GAAkC,QAAZ7C,EAAtB6C,EAAwBpB,kBAAU,IAAAzB,OAAZ,EAAtBA,EAAoC+D,OAAO,uBAKjDT,IACC3O,EAAAA,EAAAA,MAAA,OACEhB,MAAO,CACL+P,QAAS,OACTC,WAAY,SACZC,aAAc,MACdC,IAAK,OACLnP,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QAAMR,MAAO,CAAE+P,QAAS,QAAShP,UAC/BC,EAAAA,EAAAA,MAAA,OACEM,MAAM,6BACNJ,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OAAMN,SAAA,EAEXP,EAAAA,EAAAA,KAAA,KAAG,YAAU,uBAAsBO,UACjCP,EAAAA,EAAAA,KAAA,QACEe,EAAE,oKACFC,OAAO,UACP,eAAa,UACb,iBAAe,QACf,kBAAgB,aAGpBhB,EAAAA,EAAAA,KAAA,QAAAO,UACEP,EAAAA,EAAAA,KAAA,YAAUoB,GAAG,iBAAgBb,UAC3BP,EAAAA,EAAAA,KAAA,QAAMU,MAAM,KAAKC,OAAO,KAAKE,KAAK,oBAK1CL,EAAAA,EAAAA,MAAA,QAAMhB,MAAO,CAAEmQ,SAAU,QAASpP,SAAA,CAC/B8L,EAAE,gCAAiC,IACnC8C,EAAe7B,WAAWsC,OAAO,2BAK1C5P,EAAAA,EAAAA,KAAA,OACEC,UAAW,GAAGC,KAAkBiM,EAAgBjM,EAAc,KAC9DV,MAAO,CACLmB,OAAQ,QACRkP,QAAS,OACTC,WAAY,IACZL,aAAc,OACdH,UAAW,OACXS,aAAc,MACdC,OAAQ,mCACRC,WAAY,OACZC,UACE,yOACF3P,UAEFC,EAAAA,EAAAA,MAAA,OACEP,UAAW,eAAeC,KACxBiM,EAAgBjM,EAAc,KAEhCV,MAAO,CACLmB,OAAQ,OACRwP,SAAU,WACVC,OAAQ,KACR7P,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QACEC,UAAW,GAAGC,KACZiM,EAAgBjM,EAAc,KAEhCV,MAAO,CACLkB,MAAO,MACPC,OAAQ,MACR0P,SAAU,OACVC,UAAW,OACXP,aAAc,MACdQ,gBAAiB,QACjBJ,SAAU,WACVK,IAAK,MACLC,KAAM,OACNC,UAAW,wBACXC,OAAQ,GACRX,OAAQ,uBAKwB,IAA9B/B,EAAmB3I,QAEnBtF,EAAAA,EAAAA,KAAA,OACEC,UAAU,gBACVT,MAAO,CACLkB,MAAO,OACP6P,gBAAiB,UACjBlB,MAAO,WACP9O,UAEFP,EAAAA,EAAAA,KAAA,QAAMR,MAAO,CAAE6P,MAAO,WAAY9O,SAAC,qBAKlCqQ,OAAOC,OACZ5C,EAAmB6C,QACjB,CAACC,EAAKnE,KACJ,MAAMoE,EAAmB,KAAS,OAAHpE,QAAG,IAAHA,OAAG,EAAHA,EAAKc,SAoBpC,OAlBwB,KAApBsD,GAA4BD,EAAIE,WAGlCD,EAAmB,GACnBA,EAAmB,IAIG,OAAtBD,EAAIG,cACCH,EAAIG,cAAgBtE,EACpBmE,EAAIG,cACHH,EAAIG,cAAcxD,QAAUd,EAAIc,QAC5BqD,EAAIG,cACJtE,EACmB,GAApBoE,GAA0BD,EAAII,WACvCJ,EAAII,SAAWvE,GAdfmE,EAAIE,WAAarE,EAiBZmE,CAAG,GAEZ,CAAEE,WAAY,KAAMC,cAAe,KAAMC,SAAU,QAErD1P,KAAI,CAAC2P,EAAQhQ,KAAQ,IAADiQ,EACpB,IAAKD,EAAQ,OAAO,KAEpB,IAAIE,EAAYf,EAAiBlB,EACjC,MAAM2B,EAAmB,KAAY,OAANI,QAAM,IAANA,OAAM,EAANA,EAAQ1D,SAgBvC,OAdwB,KAApBsD,GACFM,EAAa,cACbf,EAAkB,UAClBlB,EAAQ,SACC2B,EAAmB,GAAKA,EAAmB,KACpDM,EAAa,iBACbf,EAAkB,UAClBlB,EAAQ,WACqB,GAApB2B,IACTM,EAAa,iBACbf,EAAkB,UAClBlB,EAAQ,YAIR7O,EAAAA,EAAAA,MAAA,OAEEP,UAAU,gBACVT,MAAO,CACLkB,MAAO,GAAS,OAAN0Q,QAAM,IAANA,OAAM,EAANA,EAAQ1Q,SAClBuP,WAAYM,EACZgB,oBAA4B,IAAPnQ,EAAW,OAAS,GACzCoQ,uBAA+B,IAAPpQ,EAAW,OAAS,GAC5CqQ,qBAA6B,IAAPrQ,EAAW,OAAS,GAC1CsQ,wBAAgC,IAAPtQ,EAAW,OAAS,IAC7Cb,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QACER,MAAO,CACL6P,QACAM,SAAU,OACVgC,UAAW,SACXC,WAAY,OACZrR,SAED+Q,KAEHtR,EAAAA,EAAAA,KAAA,QACEC,UAAU,oBACVT,MAAO,CACLqS,OAAQ,QACRxC,MAAO,uBACPM,SAAU,QACVpP,SAEK,OAAN6Q,QAAM,IAANA,GAAe,QAATC,EAAND,EAAQlC,eAAO,IAAAmC,OAAT,EAANA,EAAiBzB,OAAO,iBA7BtBxO,EA+BD,KAKZpB,EAAAA,EAAAA,KAAA,OACEC,UAAW,GAAGC,KACZiM,EAAgBjM,EAAc,KAEhCV,MAAO,CACLkB,MAAO,MACPC,OAAQ,MACR0P,SAAU,OACVC,UAAW,OACXP,aAAc,MACdQ,gBAAiB,QACjBJ,SAAU,WACVK,IAAK,MACLsB,MAAO,OACPpB,UAAW,uBACXC,OAAQ,GACRX,OAAQ,4BAKftB,IACClO,EAAAA,EAAAA,MAAA,OACEhB,MAAO,CACL+P,QAAS,OACTC,WAAY,SACZC,aAAc,MACdC,IAAK,MACLJ,UAAW,OACXD,MAAO,SACP9O,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QAAMR,MAAO,CAAE+P,QAAS,QAAShP,UAC/BC,EAAAA,EAAAA,MAAA,OACEM,MAAM,6BACNJ,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OAAMN,SAAA,EAEXP,EAAAA,EAAAA,KAAA,KAAG,YAAU,uBAAsBO,UACjCP,EAAAA,EAAAA,KAAA,QACEe,EAAE,oKACFC,OAAO,UACP,eAAa,UACb,iBAAe,QACf,kBAAgB,aAGpBhB,EAAAA,EAAAA,KAAA,QAAAO,UACEP,EAAAA,EAAAA,KAAA,YAAUoB,GAAG,iBAAgBb,UAC3BP,EAAAA,EAAAA,KAAA,QAAMU,MAAM,KAAKC,OAAO,KAAKE,KAAK,oBAK1CL,EAAAA,EAAAA,MAAA,QAAMhB,MAAO,CAAEmQ,SAAU,QAASpP,SAAA,CAC/B8L,EACC,kEACC,IACD,IAAwB,OAAtBqC,QAAsB,IAAtBA,GAAkC,QAAZ5C,EAAtB4C,EAAwBpB,kBAAU,IAAAxB,OAAZ,EAAtBA,EAAoC8D,OAAO,wBAKrD5P,EAAAA,EAAAA,KAAA,OAAKR,MAAO,CAAEiQ,aAAc,OAAQH,UAAW,QAAS/O,UACtDP,EAAAA,EAAAA,KAAA,QACER,MAAO,CACL6P,MAAO,uBACPM,SAAU,OACVgC,UAAW,SACXC,WAAY,MACZG,WAAY,UACZxR,SAED8L,EACC,8EAKN7L,EAAAA,EAAAA,MAAA,SACEhB,MAAO,CACLwQ,OAAQ,iBACRgC,eAAgB,WAChBtR,MAAO,OACP2O,MAAO,SACP9O,SAAA,EAEFP,EAAAA,EAAAA,KAAA,SAAOR,MAAO,CAAE+Q,gBAAiB,UAAWlB,MAAO,SAAU9O,UAC3DC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACEP,EAAAA,EAAAA,KAAA,MACER,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,MACTF,SAAU,OACVuC,cAAe,aACf3R,SAED8L,EAAE,WAELrM,EAAAA,EAAAA,KAAA,MACER,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,MACTF,SAAU,OACVuC,cAAe,aACf3R,SAED8L,EAAE,eAITrM,EAAAA,EAAAA,KAAA,SAAOR,MAAO,CAAE6P,MAAO,SAAU9O,UACZ,OAAlB0N,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB3I,QAAS,EAC5B2I,EAAmBxM,KAAKmL,IAAG,IAAAuF,EAAA,OACzB3R,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACEP,EAAAA,EAAAA,KAAA,MACER,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,MACTR,MAAO,uBACPM,SAAU,QACVpP,SAIwB,KAAzBqM,EAAIM,kBACDb,EAAE,aACF,GAAGO,EAAIY,eAAkB,OAAHZ,QAAG,IAAHA,GAAe,QAAZuF,EAAHvF,EAAKU,kBAAU,IAAA6E,OAAZ,EAAHA,EAAiBvC,OACrC,kBAkBR5P,EAAAA,EAAAA,KAAA,MACER,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,MACTR,MAAO,uBACPM,SAAU,QACVpP,SAKwB,KAAzBqM,EAAIM,kBACDb,EAAE,yCACF,GAAGO,EAAIc,WAAWd,EAAIiB,eAAexB,EACnC,+BAGL,KAIP7L,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACEC,EAAAA,EAAAA,MAAA,MACEhB,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,OACTtP,SAAA,CAED8L,EAAE,QAAS,IAEuC,QAFpCN,EACdT,IAAe,OAATW,QAAS,IAATA,OAAS,EAATA,EAAWS,WACfa,SAASS,EAAcd,kBAAmB,cAAM,IAAAnB,OAAA,EADlDA,EAEG6D,OAAO,aAEbpP,EAAAA,EAAAA,MAAA,MACEhB,MAAO,CACLwQ,OAAQ,oBACRiC,UAAW,OACXpC,QAAS,OACTtP,SAAA,CAEDyN,EAAcL,kBAAkB,IAAE,IAClCtB,EAAE,qCAOb7L,EAAAA,EAAAA,MAAA,OACEhB,MAAO,CACL+P,QAAS,OACTC,WAAY,SACZC,aAAc,MACdC,IAAK,MACLJ,UAAW,OACX/O,SAAA,EAEFP,EAAAA,EAAAA,KAAA,QAAMR,MAAO,CAAE+P,QAAS,QAAShP,UAC/BP,EAAAA,EAAAA,KAAA,OACEc,MAAM,6BACNJ,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OAAMN,UAEXP,EAAAA,EAAAA,KAAA,QACEe,EAAE,kMACFF,KAAK,UACLG,OAAO,UACP,eAAa,UACb,iBAAe,QACf,kBAAgB,eAItBhB,EAAAA,EAAAA,KAAA,QACER,MAAO,CACLqQ,QAAS,WACTN,QAAS,OACTF,MAAO,QACPM,SAAU,QACVpP,SAED8L,EACC,mHAQVG,IACExM,EAAAA,EAAAA,KAACoS,EAAAA,EAAa,CAAClT,QAASA,IAAIuN,GAAqB,GAAQtN,SAAUA,EAAUC,KAAMA,MAGpF,C,0CCvtBP,MACA,EAAe,IAA0B,4D,0CChBzC,MACA,EAAe,IAA0B,wD,qIC5BlC,MAAMgG,EAAiBd,IAC5B,IAAI+N,GACQ,OAAV/N,QAAU,IAAVA,OAAU,EAAVA,EAAYkB,QAAQC,GAA4B,gBAAnB,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIC,kBAAkC,GAE/D4M,GACQ,OAAVhO,QAAU,IAAVA,OAAU,EAAVA,EAAYkB,QAAQC,GAA4B,kBAAnB,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIC,kBAAoC,GAarE,MALuB,KANX,OAAVpB,QAAU,IAAVA,OAAU,EAAVA,EAAYkB,QAAQC,GAA4B,YAAnB,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIC,kBAA8B,MAEX,OAAnB2M,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBxM,MACpD,CAACE,EAAGD,KAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGtC,WAAY,OAADuC,QAAC,IAADA,OAAC,EAADA,EAAGvC,eAMxB8O,EAEkB,EAGZvI,EAAqB/K,IAAuC,IAAtC,MAAE4I,EAAK,MAAE2B,EAAK,IAAEP,EAAG,UAAExE,GAAWxF,EAC7D6K,EAAa,EACfC,EAAe,EACjB,OAAa,OAALP,QAAK,IAALA,OAAK,EAALA,EAAO7D,cACb,IAAK,aAiBL,KAAK,KACHoE,EAAgBlC,GAAa,OAAL2B,QAAK,IAALA,OAAK,EAALA,EAAO/F,UAAY,IAC3CqG,EAAajC,EAAQkC,EACrB,MAhBF,IAAK,eACHA,EAAoB,OAALP,QAAK,IAALA,OAAK,EAALA,EAAO/F,SACtBqG,EAAajC,EAAQkC,EACrB,MACF,IAAK,SACCd,GAAOxE,GAAiB,OAAL+E,QAAK,IAALA,OAAK,EAALA,EAAO/F,WAC5BsG,EAAelC,EACfiC,EAAa,IAEbC,EAAe,EACfD,EAAajC,GAEf,MAKF,QACEkC,EAAe,EACfD,EAAajC,EAEjB,MAAO,CAAEkC,aAAc9D,OAAO8D,GAAeD,WAAY7D,OAAO6D,GAAa,EAGxE,SAAS0I,EAAkBC,EAAWC,GAC3C,MAA+B,iBAA3BD,EAAU9M,aACL0D,WAAWoJ,EAAUhP,UAED,eAA3BgP,EAAU9M,cACiB,OAA3B8M,EAAU9M,aAEF0D,WAAWoJ,EAAUhP,UAAY,IAAOiP,EACZ,WAA3BD,EAAU9M,aACZ+M,EAEF,CACT,CAEO,MAAMjJ,EAAyBkJ,IAK/B,IALgC,eACrCtP,EAAc,UACdyF,EAAS,GACTY,EAAE,YACFE,GACD+I,EACC,IAAkB,OAAdtP,QAAc,IAAdA,OAAc,EAAdA,EAAgBkC,QAAS,EAC3B,OAAO,KAGT,IAAIM,EAAmB,IAAIxC,GAAgByC,MAAK,CAACE,EAAGD,KAClD,MAAM6M,EAASJ,EAAkBxM,EAAG8C,GAEpC,OADe0J,EAAkBzM,EAAG+C,GACpB8J,CAAM,IAGpBC,EAAe,KACnB,IAAK,IAAI3M,EAAI,EAAGA,GAAoB,OAAhBL,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBN,QAAQW,IAC5C,IAAK2M,EAAc,CACjB,IAAIrJ,EAAQ3D,EAAiBK,GACzB4M,GAAmB,OAALtJ,QAAK,IAALA,OAAK,EAALA,EAAOuJ,yBAA0B,GAEnD,IACGC,EACM,OAALxJ,QAAK,IAALA,OAAK,EAALA,EAAOyJ,cACF,OAALzJ,QAAK,IAALA,OAAK,EAALA,EAAO0J,YACPtJ,GAGF,SAGF,IAAKoJ,EAAwB,OAALxJ,QAAK,IAALA,OAAK,EAALA,EAAOmD,UAAgB,OAALnD,QAAK,IAALA,OAAK,EAALA,EAAO2F,QAAS,IAAIgE,MAC5D,SAGF,OAAa,OAAL3J,QAAK,IAALA,OAAK,EAALA,EAAO5D,MACb,IAAK,OACyB,QAAnB,OAAL4D,QAAK,IAALA,OAAK,EAALA,EAAO7D,cACTkN,EAAe,KACN/J,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,eAC7B0M,EAAerJ,GACA,OAAXsJ,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,YAIJqJ,EAAe,KAEjB,MAEF,IAAK,SACHA,EAAerJ,EAGP,OAALA,QAAK,IAALA,GAAAA,EAAOrD,cAAgB2C,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,eACpB,QAAnB,OAALqD,QAAK,IAALA,OAAK,EAALA,EAAOrD,eAEQ,OAAX2M,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,WAIJqJ,EAAe,KAEjB,MACF,IAAK,SACHA,EAAerJ,EAEbV,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,eACI,QAAnB,OAALqD,QAAK,IAALA,OAAK,EAALA,EAAOrD,eAEQ,OAAX2M,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,WAIJqJ,EAAe,KAEjB,MA0BF,QACEA,EAAerJ,GACA,OAAXsJ,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,WAKV,CAGF,OAAOqJ,CAAY,EAGd,SAASG,EAAmBrG,EAAWwC,EAASvF,GAErD,IAAIyJ,EAAQ1G,EAAY,IAAIwG,KAAKxG,GAAa,KAC1C2G,EAAMnE,EAAU,IAAIgE,KAAKhE,GAAW,KACpCoE,EAAU,IAAIJ,KAAKvJ,GAGvB,OAAIyJ,GAASC,EACJC,GAAWF,GAASE,GAAWD,EAC7BD,EACFE,GAAWF,GACTC,GACFC,GAAWD,CAItB,CAEO,MAAME,EAA6BC,IAKnC,IALoC,eACzCpQ,EAAc,UACdyF,EAAS,GACTY,EAAE,YACFE,GACD6J,EACC,IAAkB,OAAdpQ,QAAc,IAAdA,OAAc,EAAdA,EAAgBkC,QAAS,EAC3B,OAAO,KAGT,IAAIM,EAAmB,IAAIxC,GAAgByC,MAAK,CAACE,EAAGD,KAClD,MAAM6M,EAASJ,EAAkBxM,EAAG8C,GAEpC,OADe0J,EAAkBzM,EAAG+C,GACpB8J,CAAM,IAGpBC,EAAe,KACnB,IAAK,IAAI3M,EAAI,EAAGA,GAAoB,OAAhBL,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBN,QAAQW,IAC5C,IAAK2M,EAAc,CACjB,IAAIrJ,EAAQ3D,EAAiBK,GACzB4M,GAAmB,OAALtJ,QAAK,IAALA,OAAK,EAALA,EAAOuJ,yBAA0B,GACnD,IACGC,EACM,OAALxJ,QAAK,IAALA,OAAK,EAALA,EAAOyJ,cACF,OAALzJ,QAAK,IAALA,OAAK,EAALA,EAAO0J,YACPtJ,GAGF,SAGF,IAAKoJ,EAAwB,OAALxJ,QAAK,IAALA,OAAK,EAALA,EAAOmD,UAAgB,OAALnD,QAAK,IAALA,OAAK,EAALA,EAAO2F,QAAS,IAAIgE,MAC5D,SAGF,OAAa,OAAL3J,QAAK,IAALA,OAAK,EAALA,EAAO5D,MACb,IAAK,OAEuB,QAAnB,OAAL4D,QAAK,IAALA,OAAK,EAALA,EAAO7D,eACPmD,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,cAEpB0M,EAAerJ,EACNV,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,eAC7B0M,EAAerJ,GACA,OAAXsJ,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,YAIJqJ,EAAe,KAEjB,MAEF,IAAK,SACHA,EAAerJ,EAGbV,IAAkB,OAALU,QAAK,IAALA,OAAK,EAALA,EAAOrD,eACI,QAAnB,OAALqD,QAAK,IAALA,OAAK,EAALA,EAAOrD,eAEQ,OAAX2M,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,WAIJqJ,EAAe,KAEjB,MAyBF,QACEA,EAAerJ,GACA,OAAXsJ,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAS,IACxBsN,EAAeO,EAAkB,CAC/BtK,YACAY,KACAE,cACAkJ,cACAtJ,WAKV,CAEF,OAAOqJ,CAAY,EAGRO,EAAoBM,IAA8C,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAA5C,GAAEzK,EAAE,YAAEE,EAAW,YAAEkJ,EAAW,MAAEtJ,GAAOkK,EACnEU,EAAM5K,EAEV,MAAM6K,IAAqBvB,EAAYlE,MACpC0F,GAA4B,iBAAX,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQ1O,QAEtB,IAAK,IAAI2O,EAAI,EAAGA,GAAe,OAAXzB,QAAW,IAAXA,OAAW,EAAXA,EAAavN,QAAQgP,IAAK,CAAC,IAADC,EAC5C,OAAsB,QAAtBA,EAAQ1B,EAAYyB,UAAE,IAAAC,OAAA,EAAdA,EAAgB5O,MACtB,IAAK,gBACH,GAAkB,QAAlB+N,EAAIb,EAAYyB,UAAE,IAAAZ,GAAO,QAAPC,EAAdD,EAAgBc,aAAK,IAAAb,GAArBA,EAAuBc,SAAS9K,GAClC,OAAO,KAEPwK,EAAM5K,EAER,MACF,IAAK,cACH,GACgB,QADhBqK,EACEf,EAAYyB,UAAE,IAAAV,GAAO,QAAPC,EAAdD,EAAgBY,aAAK,IAAAX,IAArBA,EAAuBY,SACrBnJ,IAAM3B,GAAaiG,OAAO,QAAQ8E,eAKpC,OAAO,KAFPP,EAAM5K,EAIR,MACF,IAAK,UACH,GAAmB,QAAfuK,EAACjB,EAAYyB,UAAE,IAAAR,GAAO,QAAPC,EAAdD,EAAgBU,aAAK,IAAAT,GAArBA,EAAuBU,SAASE,OAAS,OAAFlL,QAAE,IAAFA,OAAE,EAAFA,EAAIC,SAM9C,OADAyK,EAAM5K,EACC4K,EALP,IAAKC,EACH,OAAO,KAMX,MACF,IAAK,cACH,GAAkB,QAAlBJ,EAAInB,EAAYyB,UAAE,IAAAN,GAAO,QAAPC,EAAdD,EAAgBQ,aAAK,IAAAP,IAArBA,EAAuBQ,SAASE,OAAS,OAAFlL,QAAE,IAAFA,GAAY,QAAVyK,EAAFzK,EAAItK,gBAAQ,IAAA+U,OAAV,EAAFA,EAAc9S,KAGvD,OAAO,KAFP+S,EAAM5K,EAMd,CAEA,OAAO4K,CAAG,EA0bZ,EAvb2BS,KACzB,MAAM,kBACJC,EAAoB,GAAE,UACtBxQ,EAAY,CAAC,EAAC,UACd4H,EAAS,UACTzH,EAAS,oBACTJ,EAAsB,GAAE,WACxBE,EAAa,GAAE,MACfK,EAAQ,GAAE,WACVC,EAAa,CAAC,IACZE,EAAAA,EAAAA,KAAaC,GAAUA,EAAMC,aAE3B,WAAE8P,EAAa,IAAOzQ,GAErB0Q,EAASC,IAAcjT,EAAAA,EAAAA,UAAS,IAChCoC,EAAe8Q,IAAoBlT,EAAAA,EAAAA,UAAS,KAC5CmT,EAAcC,IAAmBpT,EAAAA,EAAAA,UAAS,IAC1CqT,EAAYC,IAAiBtT,EAAAA,EAAAA,UAAS,IACtCuT,EAAYC,IAAiBxT,EAAAA,EAAAA,UAAS,IACtCyT,EAAaC,IAAkB1T,EAAAA,EAAAA,UAAS,IACxC2T,EAAOC,IAAY5T,EAAAA,EAAAA,UAAS,IAC5B6T,EAAeC,IAAoB9T,EAAAA,EAAAA,UAAS,IAC5C+T,EAAgBC,IAAqBhU,EAAAA,EAAAA,UAAS,IAC9CuB,EAAiBC,IAAsBxB,EAAAA,EAAAA,UAAS,CAAEyB,SAAU,KAC5DwS,EAAoBC,IAAyBlU,EAAAA,EAAAA,UAAS,IACtDqB,EAAgBC,IAAqBtB,EAAAA,EAAAA,UAAS,KAC9CmU,EAAmBC,IAAwBpU,EAAAA,EAAAA,UAAS,IACpD0B,EAAcC,IAAmB3B,EAAAA,EAAAA,UAAS,CAAC,IAC3CC,EAAQC,IAAaF,EAAAA,EAAAA,UAAS,CAAC,IAC/BkC,EAAaC,IAAkBnC,EAAAA,EAAAA,UAAS,IAE/C1C,EAAAA,EAAAA,YAAU,MAKE,OAAViF,QAAU,IAAVA,OAAU,EAAVA,EAAYgB,QAAS,GAJLL,MACd,IAAIE,EAAKC,EAAcd,GACvBjB,EAAkB8B,EAAG,EAEGF,EAAS,GAClC,CAACX,IAEJ,MAAM8R,EAAiBA,CACrBhB,EACAE,EACAE,EACAa,EACAlO,KACI,IAADmO,EAAAC,EACH,IAEIC,GACK,OAAPrO,QAAO,IAAPA,GAAsD,QAA/CmO,EAAPnO,EAAS3C,QAAQC,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAI2P,cAAeA,WAAW,IAAAkB,GAAK,QAALC,EAAtDD,EAAyD,UAAE,IAAAC,OAApD,EAAPA,EACIE,cAAe,GAEjBC,EAAuB,OAARL,QAAQ,IAARA,OAAQ,EAARA,EAAU9V,SACzBoW,EAAuB,OAARN,QAAQ,IAARA,OAAQ,EAARA,EAAUO,QAEzBC,GAAoB,OAAZL,QAAY,IAAZA,OAAY,EAAZA,EAAc/U,KAAKmI,GAAa,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMD,gBAAgB,GAE1DmN,EAAQ,GAwEZ,OAtEAD,EAAMrQ,SAASoD,IAAU,IAADmN,EAAAC,EACtB,IAAItQ,EAAM,EAOV,GAHAA,GAAmB,OAAZ8P,QAAY,IAAZA,GAAsD,QAA1CO,EAAZP,EAAchR,QAAQyR,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAItN,eAAgBC,WAAK,IAAAmN,GAAK,QAALC,EAAtDD,EAAyD,UAAE,IAAAC,OAA/C,EAAZA,EACHE,eAEA5B,EAAa,EAAG,CAAC,IAAD6B,EAClB,IAAIC,EAAwB,OAAZV,QAAY,IAAZA,GAEZ,QAFwBS,EAAZT,EAAclR,QAC3ByR,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAItN,eAAgBC,IAC5B,UAAE,IAAAuN,OAFwB,EAAZA,EAEVD,eACFG,EAAa,EACjB,IAAK,IAAIpR,EAAI,EAAGA,EAAIqP,EAAYrP,IAC9BoR,GAAcD,EAGhB,GAAW,OAAPjP,QAAO,IAAPA,GAAAA,EAASmP,MAAM7R,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAI2P,cAAeA,EAAaE,IAAa,CAAC,IAADiC,EAAAC,EAAAC,EAAAC,EACrE,IAAIC,GACK,OAAPxP,QAAO,IAAPA,GAEC,QAFMoP,EAAPpP,EAAS3C,QACNC,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAI2P,cAAeA,EAAaE,WACzC,IAAAiC,GAAK,QAALC,EAFDD,EAEI,UAAE,IAAAC,OAFC,EAAPA,EAEQf,cAAe,GACrBmB,EAAqC,OAAtBD,QAAsB,IAAtBA,GAElB,QAFwCF,EAAtBE,EAAwBnS,QACxCC,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIkE,eAAgBC,WAC7B,IAAA6N,GAAK,QAALC,EAFkBD,EAEf,UAAE,IAAAC,OAFmC,EAAtBA,EAEXR,eACRxQ,EAAMP,KAAK0R,IAAID,EAAclR,EAAM2Q,EACrC,MACE3Q,GAAO2Q,CAEX,CACA,GAAI7B,EAAc,EAAG,CAAC,IAADsC,EAAAC,EAEnB,IAAIC,EAA6B,OAAZtB,QAAY,IAAZA,GAEjB,QAF6BoB,EAAZpB,EAAclR,QAChCyR,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAItN,eAAgBC,IAC5B,UAAE,IAAAkO,OAF6B,EAAZA,EAEfZ,eAEFe,EAA8B,OAAZtB,QAAY,IAAZA,GAElB,QAF8BoB,EAAZpB,EAAcnR,QACjCyR,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAItN,eAAgBC,IAC5B,UAAE,IAAAmO,OAF8B,EAAZA,EAEhBb,eAEFgB,EAAc/R,KAAK0R,IAAIG,EAAgBC,GACvCrQ,EAAQ,EACZ,IAAK,IAAI3B,EAAI,EAAGA,EAAIuP,EAAavP,IAC/B2B,GAASsQ,EAGX,GACS,OAAP/P,QAAO,IAAPA,GAAAA,EAASmP,MACN7R,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAI2P,cAAeA,EAAaI,EAAcF,IAExD,CAAC,IAAD6C,EAAAC,EAAAC,EAAAC,EACA,IAAIX,GACK,OAAPxP,QAAO,IAAPA,GAEC,QAFMgQ,EAAPhQ,EAAS3C,QACNC,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAI2P,cAAeA,EAAaI,EAAcF,WACvD,IAAA6C,GAAK,QAALC,EAFDD,EAEI,UAAE,IAAAC,OAFC,EAAPA,EAEQ3B,cAAe,GACrBmB,EAAqC,OAAtBD,QAAsB,IAAtBA,GAElB,QAFwCU,EAAtBV,EAAwBnS,QACxCC,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIkE,eAAgBC,WAC7B,IAAAyO,GAAK,QAALC,EAFkBD,EAEf,UAAE,IAAAC,OAFmC,EAAtBA,EAEXpB,eACRxQ,EAAMP,KAAK0R,IAAID,EAAclR,EAAMkB,EACrC,MACElB,GAAOkB,CAEX,CACA,IAAI2Q,EAAM,CACR5O,YAAaC,EACbsN,eAAgBxQ,GAElBoQ,EAAMzP,KAAKkR,EAAI,IAGVzB,CAAK,EAoSd,OAhOAzX,EAAAA,EAAAA,YAAU,KAjEqBgG,MAC7B,IAAK6Q,EACH,OAEF,GAA2B,KAAb,OAAV5R,QAAU,IAAVA,OAAU,EAAVA,EAAYgB,UAAiBhB,EAC/B,OAGF,IAAIiB,GACQ,OAAVjB,QAAU,IAAVA,OAAU,EAAVA,EAAYkB,QACTC,GAA4B,QAAnB,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIC,eAAsC,UAAX,OAAFD,QAAE,IAAFA,OAAE,EAAFA,EAAIE,UACtC,GAEP,GAA6B,KAAb,OAAZJ,QAAY,IAAZA,OAAY,EAAZA,EAAcD,UAAiBC,EACjC,OAGF,IAAIK,EAAmB,IAAIL,GAAcM,MAAK,CAACE,EAAGD,KAChD,MAAM6M,EAASJ,EAAkBxM,EAAGmQ,GAEpC,OADe3D,EAAkBzM,EAAGoQ,GACpBvD,CAAM,IAGxB,IAAK,IAAI1M,EAAI,EAAGA,EAAIL,EAAiBN,OAAQW,IAAK,CAChD,IAAIR,EAAKG,EAAiBK,GAC1B,GAAIiQ,GAAqBlQ,OAAS,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAIS,cAAe,CACjD,IAAI1C,EACF0S,EAAqBA,GAAsB,OAAFzQ,QAAE,IAAFA,OAAE,EAAFA,EAAIjC,UAAY,IAC3D,GAAIA,EAAWuR,EAAUW,EAAO,CAC9B,IACIpO,EAAM,EACNhB,EAAO,EACTC,EAAU,EACRrB,EAAM,GAsBV,OArBAf,EAAcqC,SAASC,IAAQ,IAAD+R,EAC5B,IAAIC,EAAS,GACX,OAAFhS,QAAE,IAAFA,GAAa,QAAX+R,EAAF/R,EAAIiS,iBAAS,IAAAF,GAAbA,EAAehS,SAASmS,IACtB,IAAIjS,EAAQ,OAAFiS,QAAE,IAAFA,OAAE,EAAFA,EAAI5Q,YACdzB,GAAQI,EACR,IAAIkS,EAAQlS,GAAQ,OAAFjB,QAAE,IAAFA,OAAE,EAAFA,EAAIjC,UAAY,IAClC+C,GAAWqS,EACXH,EAAOpR,KAAK,IACPsR,EACH9O,WAAYnD,EAAMkS,EAClB9O,aAAc8O,GACd,IAEJ1T,EAAImC,KAAK,IAAKZ,EAAIiS,UAAWD,IAC7B/U,EAAgB+B,EAAG,IAErBwP,EAAiB/P,GACjByQ,EAASrO,GACTuO,EAAiBvP,EAAOC,GACxBhD,EAAmB,CAAEC,SAAU0S,EAAoB1S,IACnDyS,EAAsBzS,GACf,IACT,CAAO,OAAIA,IAAauR,GAGtBrR,EAAgB,CAAC,GAFV,IAKX,CACF,GAGA2B,EAAwB,GACvB,CAAC0P,EAASmB,EAAmB5S,EAAgBE,SAAUc,KAE1DjF,EAAAA,EAAAA,YAAU,KACemI,MACrB,IAAKqN,EACH,OAGF,IAAIgE,EAAW,EACX9Q,EAAc,EACd+Q,EAAa,EACbC,EAAoB,EACpB7T,EAAM,GACNhD,EAAW,EAEX2F,EAAU,EACVmR,EAAW,EACbC,EAAW,EACXjR,EAAkB,EAClBkR,EAAY,EAEd,IAAK,IAAIzP,KAAMoL,EAAmB,CAAC,IAADsE,EAChC,IAAIzS,EAAM,EACNY,EAAM,EACNC,EAAe,EACfwB,EAAgB,GAChBqQ,EAAS,GACTV,EAAY,GAEhB,MAAMtZ,EAAiB,OAAV0V,QAAU,IAAVA,GAAiD,QAAvCqE,EAAVrE,EAAYtP,QAAQiB,IAAS,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIrF,OAAS,OAAFqI,QAAE,IAAFA,OAAE,EAAFA,EAAIC,iBAAO,IAAAyP,OAAvC,EAAVA,EAAoD,GAEjEH,GAAc,OAAFvP,QAAE,IAAFA,OAAE,EAAFA,EAAIlB,OAChB0Q,GAAc,OAAFxP,QAAE,IAAFA,OAAE,EAAFA,EAAIjB,OAChB0Q,GAAe,OAAFzP,QAAE,IAAFA,OAAE,EAAFA,EAAIhB,QAEjB,MAAM,QACJN,EAAU,GAAE,wBACZkR,EAA0B,CAAC,EAAC,UAC5BC,EAAY,CAAC,GACXla,EAEJ0Z,IAAgB,OAAFrP,QAAE,IAAFA,OAAE,EAAFA,EAAIlB,SAAW,OAAFkB,QAAE,IAAFA,OAAE,EAAFA,EAAIjB,SAAW,OAAFiB,QAAE,IAAFA,OAAE,EAAFA,EAAIhB,SAG5C,MAAM4N,EAAWgD,EAA0B,OAAF5P,QAAE,IAAFA,OAAE,EAAFA,EAAI8P,MAE7C,IAAIC,GACK,OAAPrR,QAAO,IAAPA,OAAO,EAAPA,EAAS3C,QACNiU,IACE,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGC,iBAAmB,OAAFjQ,QAAE,IAAFA,OAAE,EAAFA,EAAI8P,QACvB,OAADE,QAAC,IAADA,OAAC,EAADA,EAAGrE,eAAiB,OAAF3L,QAAE,IAAFA,OAAE,EAAFA,EAAIlB,UACrB,OAADkR,QAAC,IAADA,OAAC,EAADA,EAAGnE,eAAiB,OAAF7L,QAAE,IAAFA,OAAE,EAAFA,EAAIjB,UACrB,OAADiR,QAAC,IAADA,OAAC,EAADA,EAAGjE,gBAAkB,OAAF/L,QAAE,IAAFA,OAAE,EAAFA,EAAIhB,aACtB,GAEP2Q,EAAShD,EACL,OAAF3M,QAAE,IAAFA,OAAE,EAAFA,EAAIlB,OACF,OAAFkB,QAAE,IAAFA,OAAE,EAAFA,EAAIjB,OACF,OAAFiB,QAAE,IAAFA,OAAE,EAAFA,EAAIhB,QACJ4N,EACO,OAAPlO,QAAO,IAAPA,OAAO,EAAPA,EAAS3C,QAAQiU,IAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGC,iBAAmB,OAAFjQ,QAAE,IAAFA,OAAE,EAAFA,EAAI8P,UAGjC,OAAZC,QAAY,IAAZA,OAAY,EAAZA,EAAclU,QAAS,IACzB8T,EAAqB,OAAZI,QAAY,IAAZA,OAAY,EAAZA,EAAcG,SAASlL,GAAO,OAADA,QAAC,IAADA,OAAC,EAADA,EAAGgI,eAG3C2C,EAAO5S,SAAQ,CAAC+R,EAAKvP,KAAS,IAADC,EAC3B,IAAIJ,EAAe,OAAH0P,QAAG,IAAHA,OAAG,EAAHA,EAAKrB,eACjBvN,EAAiB,OAAH4O,QAAG,IAAHA,OAAG,EAAHA,EAAK5O,YACnBT,EAAc,CAAC,EACf0Q,EAAO,GAEPrQ,EAAQC,EAAuB,CACjCpG,iBACAqG,KACAZ,YACAc,gBAGF5B,GAAec,EAEf,IAAI,WAAEgB,EAAU,aAAEC,GAAiBC,EAAmB,CACpDnC,MAAOiB,EACPU,QACAP,MACAxE,cAGmB,IAADwF,EAApB,GAAc,OAAVpF,QAAU,IAAVA,GAAAA,EAAYxD,KACd8H,EAAcM,EAAuB,CACnCpG,eAAgB,CAACwB,GACjB6E,KACAZ,UAAsB,QAAXmB,EAAAd,SAAW,IAAAc,GAAXA,EAAaG,QAAUN,EAAahB,EAC/Cc,gBAEET,GAAa,CAAC,IAADe,EAAAC,EACf,IAAIE,EAAaL,EAAmB,CAClCnC,MAAkB,QAAXqC,EAAAf,SAAW,IAAAe,GAAXA,EAAaE,QAAUN,EAAahB,EAC3CU,MAAOL,EACPF,MACAxE,cAEFwD,GAAmBoC,EAAWN,aAC9BD,EAAaO,EAAWP,YAAcA,EACvB,QAAfK,EAAIhB,SAAW,IAAAgB,GAAXA,EAAaC,QACfL,GAAgBM,EAAWN,aAE3BA,EAAeM,EAAWN,YAE9B,CAGF,GAAIP,GAAoB,QAAfN,EAAIC,SAAW,IAAAD,GAAXA,EAAa7H,GAAI,CAAC,IAADiJ,EAIQC,EAApC,GAHIf,GACFqQ,EAAKvS,KAAKkC,GAERL,GAA0B,QAAfmB,EAAInB,SAAW,IAAAmB,GAAXA,EAAajJ,GACf,QAAfkJ,EAAIpB,SAAW,IAAAoB,GAAXA,EAAaH,QACfyP,EAAKvS,KAAK6B,GAEV0Q,EAAO,CAAC1Q,GAGZH,EAAc1B,KAAK,CAAEkC,MAAOqQ,EAAMjQ,cAAaG,gBACjD,CAEAvC,GAAgBuC,EAEhB,MAAM9H,GAAS8E,EAAAA,EAAAA,IAAiB,CAC9BnC,MAAOA,EACPoC,MAAO,CAAC,CAAE3F,GAAQ,OAAJhC,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,GAAI4F,OAAQ6C,IAChC5C,YAAsB,OAAT5C,QAAS,IAATA,OAAS,EAATA,EAAW6C,cACxBC,WAAY,IAGdT,GAAOmD,EACPvC,GAAOtF,EAAOoF,aAEd,IAAIyS,EAAS,CACX9R,YAAgB,OAAHwQ,QAAG,IAAHA,OAAG,EAAHA,EAAKrB,eAClBvN,YAAgB,OAAH4O,QAAG,IAAHA,OAAG,EAAHA,EAAK5O,YAClBE,aACAC,eACAxC,IAAKtF,EAAOoF,aACZsC,OAAY,OAAJtK,QAAI,IAAJA,OAAI,EAAJA,EAAMgC,IAEhBsX,EAAUrR,KAAKwS,EAAO,IAGxB,IAAIlP,EAAQ,IACPlB,EACH/C,MACAY,MACAC,eACAwB,cAAe,IAAI,IAAI6B,IAAI7B,IAC3B3J,OACAsZ,aAEFxT,EAAImC,KAAKsD,GACTkO,GAAiB,OAALlO,QAAK,IAALA,OAAK,EAALA,EAAOjE,IACnBxE,GAAiB,OAALyI,QAAK,IAALA,OAAK,EAALA,EAAOrD,IACnByR,GAA0B,OAALpO,QAAK,IAALA,OAAK,EAALA,EAAOpD,YAC9B,CACA8N,EAAc2D,GACdzD,EAAc0D,GACdxD,EAAeyD,GAEI,OAAnB9U,QAAmB,IAAnBA,GAAAA,EAAqBoC,SAASsE,IACC,YAAzBA,EAAIC,MAAMC,WACZnD,GAAWuB,WAAW0B,EAAIlD,OAASpD,EAEnCqD,GAAWuB,WAAW0B,EAAIlD,MAC5B,IAQFkS,EAAAA,EAAeC,IAAI,aAAclB,EAAWhR,GAC5CmN,EAAW6D,EAAWhR,GACtBsO,EAAqBpO,EAAcF,GACnC8N,EAASzT,GACT2T,EAAiBgD,GACjB3U,EAAe8D,GACf+N,EAAkBlO,GAClBsN,EAAgB2D,GAChBvV,EAAmB,CAAEC,SAAUuV,IAC/B9C,EAAsB4C,GACtB5D,EAAiB/P,EAAI,EAEvBsC,EAAgB,GACf,CAACqN,EAAmBzQ,EAAqBhB,EAAgBwB,KAE5DvF,EAAAA,EAAAA,YAAU,KAuBR8E,EAAcmB,OAAS,GAtBF2F,MACnB,IAAI/F,EAAM,IAAIf,GACV+G,EAAS,GACbhG,EAAIsB,SAASC,IAAQ,IAADuT,EAClB9O,EAAS,IACJA,KACE,OAAFzE,QAAE,IAAFA,GAAa,QAAXuT,EAAFvT,EAAIiS,iBAAS,IAAAsB,OAAX,EAAFA,EAAevY,KAAKgF,IAAE,CACvBrF,GAAM,OAAFqF,QAAE,IAAFA,OAAE,EAAFA,EAAIiD,OACR1C,OAAU,OAAFP,QAAE,IAAFA,OAAE,EAAFA,EAAIoD,eAEf,IAEH,IAAIuB,GAAQtE,EAAAA,EAAAA,IAAiB,CAC3BC,MAAOmE,EACPvG,MAAOA,EACPsC,YAAsB,OAAT5C,QAAS,IAATA,OAAS,EAATA,EAAW6C,cACxBC,WAAY3C,IAGdvC,EAAUmJ,EAAM,EAGUH,EAAc,GACzC,CAAC9G,EAAeQ,EAAOlB,IAEnB,CACLsR,UACA5Q,gBACAF,cACAiR,eACAQ,QACAE,gBACAI,qBACAhU,SACAyB,eACAqS,iBACAxS,kBACA8R,aACAE,aACAE,cACD,C","debug_id":"8d1fca2a-2a7c-58f3-a4e8-643ad447bc2f"}