{"version":3,"sources":["webpack://komercnibanka/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://komercnibanka/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://komercnibanka/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://komercnibanka/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://komercnibanka/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://komercnibanka/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://komercnibanka/./node_modules/tabbable/dist/index.esm.js","webpack://komercnibanka/./node_modules/@floating-ui/react/dist/floating-ui.react.esm.js","webpack://komercnibanka/./src/js/constants/breakpoint.js","webpack://komercnibanka/./node_modules/classnames/index.js","webpack://komercnibanka/./node_modules/clsx/dist/clsx.js","webpack://komercnibanka/./node_modules/desandro-matches-selector/matches-selector.js","webpack://komercnibanka/./node_modules/ev-emitter/ev-emitter.js","webpack://komercnibanka/./node_modules/fast-deep-equal/index.js","webpack://komercnibanka/./node_modules/fizzy-ui-utils/utils.js","webpack://komercnibanka/./node_modules/get-size/get-size.js","webpack://komercnibanka/./node_modules/load-script/index.js","webpack://komercnibanka/./node_modules/lodash.debounce/index.js","webpack://komercnibanka/./node_modules/masonry-layout/masonry.js","webpack://komercnibanka/./node_modules/outlayer/item.js","webpack://komercnibanka/./node_modules/outlayer/outlayer.js","webpack://komercnibanka/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://komercnibanka/./node_modules/prop-types/index.js","webpack://komercnibanka/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://komercnibanka/./node_modules/react-datepicker/dist/react-datepicker.min.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/addLeadingZeros.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/defaultLocale.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/defaultOptions.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/format/formatters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/format/lightFormatters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/format/longFormatters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/getRoundingMethod.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/_lib/protectedTokens.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/add.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addBusinessDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addISOWeekYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addQuarters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/addYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/areIntervalsOverlapping.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/clamp.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/closestIndexTo.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/closestTo.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/compareAsc.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/compareDesc.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/constants.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/constructFrom.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/constructNow.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/daysToWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInBusinessDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarISOWeekYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarISOWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarQuarters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInCalendarYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInISOWeekYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInQuarters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/differenceInYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachDayOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachHourOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachMinuteOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachMonthOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachQuarterOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachWeekOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachWeekendOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachWeekendOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachWeekendOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/eachYearOfInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfDecade.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfHour.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfMinute.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfSecond.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfToday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfTomorrow.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/endOfYesterday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/format.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatDistance.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatDistanceStrict.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatDistanceToNow.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatDistanceToNowStrict.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatDuration.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatISO.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatISO9075.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatISODuration.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatRFC3339.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatRFC7231.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/formatRelative.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/fromUnixTime.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDate.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDayOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDaysInMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDaysInYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDecade.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getDefaultOptions.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getISODay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getISOWeeksInYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getOverlappingDaysInIntervals.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getTime.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getUnixTime.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getWeekOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getWeeksInMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/getYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/hoursToMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/hoursToMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/hoursToSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/index.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/interval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/intervalToDuration.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/intlFormat.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/intlFormatDistance.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isAfter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isBefore.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isDate.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isEqual.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isExists.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isFirstDayOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isFriday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isFuture.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isLastDayOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isLeapYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isMatch.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isMonday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isPast.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameHour.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameMinute.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameSecond.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSameYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSaturday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isSunday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisHour.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisMinute.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisSecond.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThisYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isThursday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isToday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isTomorrow.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isTuesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isValid.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isWednesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isWeekend.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isWithinInterval.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/isYesterday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfDecade.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lastDayOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/lightFormat.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/_lib/buildFormatLongFn.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/_lib/buildLocalizeFn.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/_lib/buildMatchFn.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US/_lib/formatDistance.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US/_lib/formatLong.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US/_lib/formatRelative.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US/_lib/localize.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/locale/en-US/_lib/match.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/max.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/milliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/millisecondsToHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/millisecondsToMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/millisecondsToSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/min.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/minutesToHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/minutesToMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/minutesToSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/monthsToQuarters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/monthsToYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextFriday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextMonday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextSaturday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextSunday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextThursday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextTuesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/nextWednesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parseISO.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parseJSON.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/Parser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/Setter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/constants.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/DateParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/DayParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/EraParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/MonthParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/SecondParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/parsers/YearParser.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/parse/_lib/utils.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousFriday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousMonday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousSaturday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousSunday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousThursday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousTuesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/previousWednesday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/quartersToMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/quartersToYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/roundToNearestHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/roundToNearestMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/secondsToHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/secondsToMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/secondsToMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/set.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setDate.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setDayOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setDefaultOptions.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setISODay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/setYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfDay.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfDecade.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfHour.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfISOWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfISOWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfMinute.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfMonth.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfQuarter.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfSecond.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfToday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfTomorrow.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfWeek.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfWeekYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfYear.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/startOfYesterday.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/sub.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subBusinessDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subHours.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subISOWeekYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subMilliseconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subMinutes.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subQuarters.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subSeconds.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subWeeks.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/subYears.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/toDate.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/transpose.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/weeksToDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/yearsToDays.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/yearsToMonths.js","webpack://komercnibanka/./node_modules/react-datepicker/node_modules/date-fns/yearsToQuarters.js","webpack://komercnibanka/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://komercnibanka/./node_modules/react-dom/client.js","webpack://komercnibanka/./node_modules/react-dom/index.js","webpack://komercnibanka/./node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","webpack://komercnibanka/./node_modules/react-places-autocomplete/dist/PlacesAutocomplete.js","webpack://komercnibanka/./node_modules/react-places-autocomplete/dist/helpers.js","webpack://komercnibanka/./node_modules/react-places-autocomplete/dist/index.js","webpack://komercnibanka/./node_modules/react-places-autocomplete/dist/utils.js","webpack://komercnibanka/./node_modules/react/cjs/react.production.min.js","webpack://komercnibanka/./node_modules/react/index.js","webpack://komercnibanka/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://komercnibanka/./node_modules/scheduler/index.js","webpack://komercnibanka/./node_modules/sister/src/sister.js","webpack://komercnibanka/./node_modules/sticky-js/dist/sticky.compile.js","webpack://komercnibanka/./node_modules/sticky-js/index.js","webpack://komercnibanka/./node_modules/youtube-player/dist/FunctionStateMap.js","webpack://komercnibanka/./node_modules/youtube-player/dist/YouTubePlayer.js","webpack://komercnibanka/./node_modules/youtube-player/dist/constants/PlayerStates.js","webpack://komercnibanka/./node_modules/youtube-player/dist/eventNames.js","webpack://komercnibanka/./node_modules/youtube-player/dist/functionNames.js","webpack://komercnibanka/./node_modules/youtube-player/dist/index.js","webpack://komercnibanka/./node_modules/youtube-player/dist/loadYouTubeIframeApi.js","webpack://komercnibanka/./node_modules/youtube-player/node_modules/debug/src/browser.js","webpack://komercnibanka/./node_modules/youtube-player/node_modules/debug/src/debug.js","webpack://komercnibanka/./node_modules/youtube-player/node_modules/ms/index.js","webpack://komercnibanka/webpack/bootstrap","webpack://komercnibanka/webpack/runtime/compat get default export","webpack://komercnibanka/webpack/runtime/create fake namespace object","webpack://komercnibanka/webpack/runtime/define property getters","webpack://komercnibanka/webpack/runtime/global","webpack://komercnibanka/webpack/runtime/hasOwnProperty shorthand","webpack://komercnibanka/webpack/runtime/make namespace object","webpack://komercnibanka/./src/js/utilities/errorLogger.ts","webpack://komercnibanka/./src/js/utilities/init.ts","webpack://komercnibanka/./src/js/utilities/render.tsx","webpack://komercnibanka/./src/js/constants/classnames.js","webpack://komercnibanka/./src/js/constants/index.ts","webpack://komercnibanka/./src/js/utilities/getWidgetData.ts","webpack://komercnibanka/./src/js/utilities/setDummyWidgetsData.ts","webpack://komercnibanka/./src/js/utilities/fetchJSON.ts","webpack://komercnibanka/./src/js/utilities/getLocalization.ts","webpack://komercnibanka/./src/js/utilities/scroll.ts","webpack://komercnibanka/./src/js/utilities/device.ts","webpack://komercnibanka/./node_modules/minilazyload/src/usenativelazyload.js","webpack://komercnibanka/./node_modules/minilazyload/src/minilazyload.js","webpack://komercnibanka/./node_modules/minilazyload/index.js","webpack://komercnibanka/./src/js/utilities/lazyLoad.ts","webpack://komercnibanka/./src/js/utilities/lazyLoadVideo.ts","webpack://komercnibanka/./src/js/utilities/arrays.ts","webpack://komercnibanka/./src/js/utilities/events.ts","webpack://komercnibanka/./src/js/utilities/json.ts","webpack://komercnibanka/./src/js/utilities/geocodeByAddressCZ.ts","webpack://komercnibanka/./src/js/utilities/lowerCaseFirstLetter.ts","webpack://komercnibanka/./src/js/utilities/getAllCheckboxesKeyValueFromAPI.ts","webpack://komercnibanka/./src/js/utilities/getLocalStorageCoordinates.ts","webpack://komercnibanka/./src/js/utilities/hasLocalStorageCoordinates.ts","webpack://komercnibanka/./src/js/utilities/updateURLParameters.ts","webpack://komercnibanka/./src/js/utilities/getCSRFToken.ts","webpack://komercnibanka/./src/js/utilities/scrollTo.ts","webpack://komercnibanka/./src/js/modules/accordion.ts","webpack://komercnibanka/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://komercnibanka/./src/js/modules/cookie.ts","webpack://komercnibanka/./src/js/modules/downloadableQrCode.ts","webpack://komercnibanka/./src/js/modules/horizontalScrollPanel.ts","webpack://komercnibanka/./src/js/modules/tabs.ts","webpack://komercnibanka/./node_modules/ssr-window/ssr-window.esm.js","webpack://komercnibanka/./node_modules/dom7/dom7.esm.js","webpack://komercnibanka/./node_modules/swiper/esm/utils/dom.js","webpack://komercnibanka/./node_modules/swiper/esm/utils/utils.js","webpack://komercnibanka/./node_modules/swiper/esm/utils/get-support.js","webpack://komercnibanka/./node_modules/swiper/esm/utils/get-device.js","webpack://komercnibanka/./node_modules/swiper/esm/utils/get-browser.js","webpack://komercnibanka/./node_modules/swiper/esm/modules/resize/resize.js","webpack://komercnibanka/./node_modules/swiper/esm/modules/observer/observer.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/modular.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events-emitter.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateSize.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/update/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/translate/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/transition/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/slide/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/loop/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/manipulation/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onResize.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onClick.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/onScroll.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/events/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/classes/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/images/loadImage.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/images/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/defaults.js","webpack://komercnibanka/./node_modules/swiper/esm/components/core/core-class.js","webpack://komercnibanka/./src/js/modules/comparator.ts","webpack://komercnibanka/./src/js/modules/masonry.ts","webpack://komercnibanka/./src/js/modules/search.ts","webpack://komercnibanka/./src/js/modules/cta.ts","webpack://komercnibanka/./src/js/modules/formScrollTo.ts","webpack://komercnibanka/./src/js/modules/hamburger.ts","webpack://komercnibanka/./src/js/modules/branchDetailPageTabs.ts","webpack://komercnibanka/./src/js/modules/pauseYoutubeVideo.ts","webpack://komercnibanka/./src/js/modules/megaMenu.ts","webpack://komercnibanka/./src/js/modules/collapse.ts","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/math.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/enums.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/createPopper.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/utils/within.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://komercnibanka/./node_modules/@popperjs/core/lib/popper.js","webpack://komercnibanka/./node_modules/tippy.js/dist/tippy.esm.js","webpack://komercnibanka/./src/js/modules/tooltip.ts","webpack://komercnibanka/./src/js/modules/appStore.ts","webpack://komercnibanka/./src/js/modules/appStoreRedirect.ts","webpack://komercnibanka/./node_modules/lightgallery/lightgallery.es5.js","webpack://komercnibanka/./node_modules/lightgallery/plugins/video/lg-video.es5.js","webpack://komercnibanka/./src/js/modules/gallery.ts","webpack://komercnibanka/./src/js/modules/analytics.ts","webpack://komercnibanka/./src/js/modules/analyticsView.ts","webpack://komercnibanka/./src/js/modules/analyticsPersonalizable.ts","webpack://komercnibanka/./src/js/modules/analyticsContent.ts","webpack://komercnibanka/./src/js/modules/sticky.ts","webpack://komercnibanka/./src/js/modules/marketingAlertStripe.ts","webpack://komercnibanka/./src/js/modules/marketingAlertStripeMob.ts","webpack://komercnibanka/./src/js/modules/interactiveComponent.ts","webpack://komercnibanka/./node_modules/@glidejs/glide/dist/glide.esm.js","webpack://komercnibanka/./src/js/modules/interactiveComponentMobile.ts","webpack://komercnibanka/./src/js/modules/buttonKentico.ts","webpack://komercnibanka/./src/js/components/partials/Button.tsx","webpack://komercnibanka/./src/js/components/partials/Alert.tsx","webpack://komercnibanka/./src/js/components/partials/IconOld.tsx","webpack://komercnibanka/./src/js/components/partials/Icon.tsx","webpack://komercnibanka/./src/js/components/partials/Select.tsx","webpack://komercnibanka/./src/js/components/partials/Loader.tsx","webpack://komercnibanka/./src/js/components/partials/RatesDownloads.tsx","webpack://komercnibanka/./src/js/components/partials/TooltipKentico.tsx","webpack://komercnibanka/./src/js/components/hooks/usePagination/utils/hasPaginationNextItems.ts","webpack://komercnibanka/./src/js/components/hooks/usePagination/utils/getReducerInitialState.ts","webpack://komercnibanka/./src/js/components/hooks/usePagination/store/actions.ts","webpack://komercnibanka/./src/js/components/hooks/usePagination/store/reducer.ts","webpack://komercnibanka/./src/js/components/hooks/usePagination/index.ts","webpack://komercnibanka/./src/js/components/hooks/useScrollBlock.ts","webpack://komercnibanka/./src/js/components/hooks/useResizeObserver.ts","webpack://komercnibanka/./src/js/components/hooks/useDeviceVh.ts","webpack://komercnibanka/./src/js/components/hooks/useClickOutside.ts","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountList/constants/index.ts","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountList/components/ItemsList.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountList/components/ListItem.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountList/index.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/components/ItemsList.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/components/ListItem.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/components/ItemDate.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/components/ItemInfo.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/components/ItemAmount.tsx","webpack://komercnibanka/./src/js/components/widgets/TransparentAccountDetail/index.tsx","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/constants.js","webpack://komercnibanka/./node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack://komercnibanka/./node_modules/use-callback-ref/dist/es2015/useRef.js","webpack://komercnibanka/./node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack://komercnibanka/./node_modules/tslib/tslib.es6.js","webpack://komercnibanka/./node_modules/use-sidecar/dist/es2015/medium.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/medium.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/Lock.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://komercnibanka/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://komercnibanka/./node_modules/react-clientside-effect/lib/index.es.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/is.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/correctFocus.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/firstFocus.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/solver.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/array.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/tabOrder.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/tabbables.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/tabUtils.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/DOMutils.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/all-affected.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/utils/parenting.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/focusMerge.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/setFocus.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/index.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/focusIsHidden.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/focusInside.js","webpack://komercnibanka/./node_modules/focus-lock/dist/es2015/focusables.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/util.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/Trap.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/Combination.js","webpack://komercnibanka/./node_modules/react-focus-lock/dist/es2015/index.js","webpack://komercnibanka/./node_modules/swiper/esm/components/navigation/navigation.js","webpack://komercnibanka/./node_modules/swiper/esm/react/utils.js","webpack://komercnibanka/./node_modules/swiper/esm/react/params-list.js","webpack://komercnibanka/./node_modules/swiper/esm/react/get-params.js","webpack://komercnibanka/./node_modules/swiper/esm/react/init-swiper.js","webpack://komercnibanka/./node_modules/swiper/esm/react/loop.js","webpack://komercnibanka/./node_modules/swiper/esm/react/get-changed-params.js","webpack://komercnibanka/./node_modules/swiper/esm/react/get-children.js","webpack://komercnibanka/./node_modules/swiper/esm/react/update-swiper.js","webpack://komercnibanka/./node_modules/swiper/esm/react/virtual.js","webpack://komercnibanka/./node_modules/swiper/esm/react/use-isomorphic-layout-effect.js","webpack://komercnibanka/./node_modules/swiper/esm/react/swiper.js","webpack://komercnibanka/./node_modules/swiper/esm/react/swiper-slide.js","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/constants/index.ts","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/utils/getItemData.ts","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/hooks/useLightbox.ts","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/components/IconButton.tsx","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/components/SlideItem.tsx","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/components/ImageItem.tsx","webpack://komercnibanka/./node_modules/react-youtube/dist/YouTube.mjs","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/components/VideoItem.tsx","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/components/Loader.tsx","webpack://komercnibanka/./src/js/components/widgets/GalleryLightbox/index.tsx","webpack://komercnibanka/./src/js/components/widgets/ArticleList/components/ItemList.tsx","webpack://komercnibanka/./src/js/components/widgets/ArticleList/components/CategoryFilter.tsx","webpack://komercnibanka/./src/js/components/widgets/ArticleList/components/ResultItem.tsx","webpack://komercnibanka/./src/js/components/widgets/ArticleList/index.tsx","webpack://komercnibanka/./src/js/components/widgets/Calculator/index.tsx","webpack://komercnibanka/./src/js/components/widgets/SearchList/constants/index.ts","webpack://komercnibanka/./src/js/components/widgets/SearchList/components/ItemsList.tsx","webpack://komercnibanka/./src/js/components/widgets/SearchList/components/ListItem.tsx","webpack://komercnibanka/./src/js/components/widgets/SearchList/components/PageLinks.tsx","webpack://komercnibanka/./src/js/components/widgets/SearchList/index.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/TabsBranchesAtms.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/hooks/useListenerMobile.ts","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/layout/ColumnsOffset.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/layout/RowSearchAndFilters.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/layout/RowResults.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileToggle.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileCloseHandle.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileCloseButton.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/FormControl.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/FilterCheckbox.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileFormBranches.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileFormAtms.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobileDropdown.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/mobile/FiltersMobile.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/desktop/FiltersDesktopToggleAndDropdown.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/desktop/FiltersDesktopFormBranches.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/desktop/FiltersDesktopFormAtms.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/filters/desktop/FiltersDesktop.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/AlertNoAddressFound.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/AlertShared.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/AtmsResults.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/AtmsSearch.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/BranchesResults.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/GeoLocationInfo.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/ResultsList.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/ResultsListItem.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/SearchFormBranchesAtms.tsx","webpack://komercnibanka/./node_modules/@googlemaps/js-api-loader/dist/index.esm.js","webpack://komercnibanka/./node_modules/@googlemaps/markerclustererplus/dist/index.esm.js","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/BranchesMap.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/AtmMap.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsList/components/BranchesSearch.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsDetail/BranchesResultsDetail.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsDetail/DetailMap.tsx","webpack://komercnibanka/./src/js/components/widgets/BranchesAndAtmsDetail/AtmsResultsDetail.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesList/components/RatesTabs.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesList/components/RatesTable.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesList/components/RatesKBvsECB.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesList/index.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesListSk/components/RatesTable.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesListSk/components/RatesKBvsECB.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesListSk/index.tsx","webpack://komercnibanka/./node_modules/@kurkle/color/dist/color.esm.js","webpack://komercnibanka/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://komercnibanka/./node_modules/chart.js/dist/chart.js","webpack://komercnibanka/./node_modules/chart.js/auto/auto.js","webpack://komercnibanka/./node_modules/react-chartjs-2/dist/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/_lib/formatDistance/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/_lib/formatLong/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/_lib/formatRelative/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/_lib/localize/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/_lib/match/index.js","webpack://komercnibanka/./node_modules/date-fns/esm/locale/cs/index.js","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesDetail/components/ExchangeChart.tsx","webpack://komercnibanka/./src/js/components/widgets/ExchangeRatesDetail/index.tsx","webpack://komercnibanka/./src/js/components/widgets/RateVariation/components/list.tsx","webpack://komercnibanka/./src/js/components/widgets/RateVariation/index.tsx","webpack://komercnibanka/./src/js/index.ts"],"names":["module","exports","xxs","sm","md","ACTIVE","INVISIBLE","HIDDEN","IS_OPEN"],"mappings":"4xDAAA,WAAqB,EAAM,CACzB,MAAI,GAAO,GACD,GAAK,UAAY,IAAI,cAKxB,YAET,WAAmB,EAAM,CACvB,GAAI,GACJ,MAAQ,IAAQ,MAAS,GAAsB,EAAK,gBAAkB,KAAO,OAAS,EAAoB,cAAgB,OAE5H,WAA4B,EAAM,CAChC,GAAI,GACJ,MAAQ,GAAQ,GAAO,GAAQ,EAAK,cAAgB,EAAK,WAAa,OAAO,WAAa,KAAO,OAAS,EAAK,gBAEjH,WAAgB,EAAO,CACrB,MAAO,aAAiB,OAAQ,YAAiB,GAAU,GAAO,KAEpE,WAAmB,EAAO,CACxB,MAAO,aAAiB,UAAW,YAAiB,GAAU,GAAO,QAEvE,WAAuB,EAAO,CAC5B,MAAO,aAAiB,cAAe,YAAiB,GAAU,GAAO,YAE3E,WAAsB,EAAO,CAE3B,MAAI,OAAO,aAAe,YACjB,GAEF,YAAiB,aAAc,YAAiB,GAAU,GAAO,WAE1E,WAA2B,EAAS,CAClC,KAAM,CACJ,WACA,YACA,YACA,WACE,GAAiB,GACrB,MAAO,kCAAkC,KAAK,EAAW,EAAY,IAAc,CAAC,CAAC,SAAU,YAAY,SAAS,GAEtH,YAAwB,EAAS,CAC/B,MAAO,CAAC,QAAS,KAAM,MAAM,SAAS,EAAY,IAEpD,YAA2B,EAAS,CAClC,KAAM,GAAS,KACT,EAAM,GAAiB,GAG7B,MAAO,GAAI,YAAc,QAAU,EAAI,cAAgB,QAAW,GAAI,cAAgB,EAAI,gBAAkB,SAAW,KAAU,CAAC,GAAW,GAAI,eAAiB,EAAI,iBAAmB,OAAS,KAAU,CAAC,GAAW,GAAI,OAAS,EAAI,SAAW,OAAS,KAAU,CAAC,YAAa,cAAe,UAAU,KAAK,GAAU,GAAI,YAAc,IAAI,SAAS,KAAW,CAAC,QAAS,SAAU,SAAU,WAAW,KAAK,GAAU,GAAI,SAAW,IAAI,SAAS,IAE7b,YAA4B,EAAS,CACnC,GAAI,GAAc,GAAc,GAChC,KAAO,EAAc,IAAgB,CAAC,GAAsB,IAAc,CACxE,GAAI,GAAkB,GACpB,MAAO,GAET,EAAc,GAAc,GAE9B,MAAO,MAET,aAAoB,CAClB,MAAI,OAAO,MAAQ,aAAe,CAAC,IAAI,SAAiB,GACjD,IAAI,SAAS,0BAA2B,QAEjD,YAA+B,EAAM,CACnC,MAAO,CAAC,OAAQ,OAAQ,aAAa,SAAS,EAAY,IAE5D,YAA0B,EAAS,CACjC,MAAO,GAAU,GAAS,iBAAiB,GAE7C,YAAuB,EAAS,CAC9B,MAAI,GAAU,GACL,CACL,WAAY,EAAQ,WACpB,UAAW,EAAQ,WAGhB,CACL,WAAY,EAAQ,YACpB,UAAW,EAAQ,aAGvB,YAAuB,EAAM,CAC3B,GAAI,EAAY,KAAU,OACxB,MAAO,GAET,KAAM,GAEN,EAAK,cAEL,EAAK,YAEL,EAAa,IAAS,EAAK,MAE3B,EAAmB,GACnB,MAAO,GAAa,GAAU,EAAO,KAAO,EAE9C,WAAoC,EAAM,CACxC,KAAM,GAAa,GAAc,GACjC,MAAI,IAAsB,GACjB,EAAK,cAAgB,EAAK,cAAc,KAAO,EAAK,KAEzD,EAAc,IAAe,EAAkB,GAC1C,EAEF,EAA2B,GAEpC,WAA8B,EAAM,EAAM,EAAiB,CACzD,GAAI,GACA,IAAS,QACX,GAAO,IAEL,IAAoB,QACtB,GAAkB,IAEpB,KAAM,GAAqB,EAA2B,GAChD,EAAS,IAAyB,IAAuB,EAAK,gBAAkB,KAAO,OAAS,EAAqB,MACrH,EAAM,EAAU,GACtB,MAAI,GACK,EAAK,OAAO,EAAK,EAAI,gBAAkB,GAAI,EAAkB,GAAsB,EAAqB,GAAI,EAAI,cAAgB,EAAkB,EAAqB,EAAI,cAAgB,IAE7L,EAAK,OAAO,EAAoB,EAAqB,EAAoB,GAAI,ICzHtF,YAAuB,EAAK,CAC1B,GAAI,GAAgB,EAAI,cACxB,KAAS,IAAiB,IAAkB,MAAS,GAAiB,EAAe,aAAe,KAAO,OAAS,EAAe,gBAAkB,MAAM,CACzJ,GAAI,GACJ,EAAgB,EAAc,WAAW,cAE3C,MAAO,GAET,YAAkB,EAAQ,EAAO,CAC/B,GAAI,CAAC,GAAU,CAAC,EACd,MAAO,GAET,KAAM,GAAW,EAAM,aAAe,KAAO,OAAS,EAAM,cAG5D,GAAI,EAAO,SAAS,GAClB,MAAO,GAIT,GAAI,GAAY,EAAa,GAAW,CACtC,GAAI,GAAO,EACX,KAAO,GAAM,CACX,GAAI,IAAW,EACb,MAAO,GAGT,EAAO,EAAK,YAAc,EAAK,MAKnC,MAAO,GAGT,aAAuB,CACrB,KAAM,GAAS,UAAU,cACzB,MAAI,IAAU,MAAQ,EAAO,SACpB,EAAO,SAET,UAAU,SAEnB,aAAwB,CACtB,KAAM,GAAS,UAAU,cACzB,MAAI,IAAU,MAAM,QAAQ,EAAO,QAC1B,EAAO,OAAO,IAAI,GAAQ,CAC/B,GAAI,CACF,QACA,WACE,EACJ,MAAO,GAAQ,IAAM,IACpB,KAAK,KAEH,UAAU,UAInB,YAAwB,EAAO,CAG7B,MAAI,GAAM,iBAAmB,GAAK,EAAM,UAC/B,GAEL,MAAe,EAAM,YAChB,EAAM,OAAS,SAAW,EAAM,UAAY,EAE9C,EAAM,SAAW,GAAK,CAAC,EAAM,YAEtC,YAA+B,EAAO,CACpC,MAAI,MAAkB,GACf,CAAC,MAAe,EAAM,QAAU,GAAK,EAAM,SAAW,GAAK,MAAe,EAAM,QAAU,GAAK,EAAM,SAAW,GAAK,EAAM,WAAa,GAAK,EAAM,SAAW,GAAK,EAAM,cAAgB,SAEhM,EAAM,MAAQ,GAAK,EAAM,OAAS,GAAK,EAAM,WAAa,GAAK,EAAM,SAAW,GAAK,EAAM,cAAgB,QAE7G,aAAoB,CAElB,MAAO,SAAS,KAAK,UAAU,QAEjC,aAAqB,CACnB,KAAM,GAAK,WACX,MAAO,GAAG,KAAK,OAAkB,EAAG,KAAK,MAE3C,aAAiB,CACf,MAAO,MAAc,cAAc,WAAW,QAAU,CAAC,UAAU,eAErE,aAAmB,CACjB,MAAO,MAAe,SAAS,UAEjC,YAAgC,EAAa,EAAQ,CAGnD,KAAM,GAAS,CAAC,QAAS,OACzB,MAAK,IACH,EAAO,KAAK,GAAI,QAEX,EAAO,SAAS,GAEzB,YAAsB,EAAO,CAC3B,MAAO,eAAiB,GAE1B,YAAuB,EAAS,CAC9B,MAAO,GAAQ,QAAQ,aAEzB,YAAqB,EAAM,CACzB,MAAQ,IAAQ,KAAO,OAAS,EAAK,gBAAkB,SAEzD,YAA6B,EAAO,EAAM,CACxC,GAAI,GAAQ,KACV,MAAO,GAET,GAAI,gBAAkB,GACpB,MAAO,GAAM,eAAe,SAAS,GAIvC,KAAM,GAAI,EACV,MAAO,GAAE,QAAU,MAAQ,EAAK,SAAS,EAAE,QAE7C,YAAmB,EAAO,CACxB,MAAI,gBAAkB,GACb,EAAM,eAAe,GAKvB,EAAM,OAEf,KAAM,IAAoB,uHAC1B,YAA2B,EAAS,CAClC,MAAO,GAAc,IAAY,EAAQ,QAAQ,IAEnD,YAAmB,EAAO,CACxB,EAAM,iBACN,EAAM,kBAER,YAA4B,EAAS,CACnC,MAAK,GACE,EAAQ,aAAa,UAAY,YAAc,GAAkB,GADnD,GCrIvB,KAAM,IAAQ,CAAC,MAAO,QAAS,SAAU,QACnC,GAAa,CAAC,QAAS,OACvB,GAA0B,GAAM,OAAO,CAAC,EAAK,IAAS,EAAI,OAAO,EAAM,EAAO,IAAM,GAAW,GAAI,EAAO,IAAM,GAAW,IAAK,IAChI,GAAM,KAAK,IACX,GAAM,KAAK,IACX,GAAQ,KAAK,MACb,GAAQ,KAAK,MACb,GAAe,GAAM,EACzB,EAAG,EACH,EAAG,IAEC,GAAkB,CACtB,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,UAED,GAAuB,CAC3B,MAAO,MACP,IAAK,SAEP,YAAe,EAAO,EAAO,EAAK,CAChC,MAAO,IAAI,EAAO,GAAI,EAAO,IAE/B,YAAkB,EAAO,EAAO,CAC9B,MAAO,OAAO,IAAU,WAAa,EAAM,GAAS,EAEtD,YAAiB,EAAW,CAC1B,MAAO,GAAU,MAAM,KAAK,GAE9B,YAAsB,EAAW,CAC/B,MAAO,GAAU,MAAM,KAAK,GAE9B,YAAyB,EAAM,CAC7B,MAAO,KAAS,IAAM,IAAM,IAE9B,YAAuB,EAAM,CAC3B,MAAO,KAAS,IAAM,SAAW,QAEnC,YAAqB,EAAW,CAC9B,MAAO,CAAC,MAAO,UAAU,SAAS,GAAQ,IAAc,IAAM,IAEhE,YAA0B,EAAW,CACnC,MAAO,IAAgB,GAAY,IAErC,YAA2B,EAAW,EAAO,EAAK,CAC5C,IAAQ,QACV,GAAM,IAER,KAAM,GAAY,GAAa,GACzB,EAAgB,GAAiB,GACjC,EAAS,GAAc,GAC7B,GAAI,GAAoB,IAAkB,IAAM,IAAe,GAAM,MAAQ,SAAW,QAAU,OAAS,IAAc,QAAU,SAAW,MAC9I,MAAI,GAAM,UAAU,GAAU,EAAM,SAAS,IAC3C,GAAoB,GAAqB,IAEpC,CAAC,EAAmB,GAAqB,IAElD,YAA+B,EAAW,CACxC,KAAM,GAAoB,GAAqB,GAC/C,MAAO,CAAC,GAA8B,GAAY,EAAmB,GAA8B,IAErG,YAAuC,EAAW,CAChD,MAAO,GAAU,QAAQ,aAAc,GAAa,GAAqB,IAE3E,YAAqB,EAAM,EAAS,EAAK,CACvC,KAAM,GAAK,CAAC,OAAQ,SACd,EAAK,CAAC,QAAS,QACf,EAAK,CAAC,MAAO,UACb,EAAK,CAAC,SAAU,OACtB,OAAQ,OACD,UACA,SACH,MAAI,GAAY,EAAU,EAAK,EACxB,EAAU,EAAK,MACnB,WACA,QACH,MAAO,GAAU,EAAK,UAEtB,MAAO,IAGb,YAAmC,EAAW,EAAe,EAAW,EAAK,CAC3E,KAAM,GAAY,GAAa,GAC/B,GAAI,GAAO,GAAY,GAAQ,GAAY,IAAc,QAAS,GAClE,MAAI,IACF,GAAO,EAAK,IAAI,GAAQ,EAAO,IAAM,GACjC,GACF,GAAO,EAAK,OAAO,EAAK,IAAI,OAGzB,EAET,YAA8B,EAAW,CACvC,MAAO,GAAU,QAAQ,yBAA0B,GAAQ,GAAgB,IAE7E,YAA6B,EAAS,CACpC,MAAO,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,KACH,GAGP,YAA0B,EAAS,CACjC,MAAO,OAAO,IAAY,SAAW,GAAoB,GAAW,CAClE,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,GAGV,YAA0B,EAAM,CAC9B,KAAM,CACJ,IACA,IACA,QACA,UACE,EACJ,MAAO,CACL,QACA,SACA,IAAK,EACL,KAAM,EACN,MAAO,EAAI,EACX,OAAQ,EAAI,EACZ,IACA,KClIJ,YAAoC,EAAM,EAAW,EAAK,CACxD,GAAI,CACF,YACA,YACE,EACJ,KAAM,GAAW,GAAY,GACvB,EAAgB,GAAiB,GACjC,GAAc,GAAc,GAC5B,GAAO,GAAQ,GACf,GAAa,IAAa,IAC1B,GAAU,EAAU,EAAI,EAAU,MAAQ,EAAI,EAAS,MAAQ,EAC/D,GAAU,EAAU,EAAI,EAAU,OAAS,EAAI,EAAS,OAAS,EACjE,GAAc,EAAU,IAAe,EAAI,EAAS,IAAe,EACzE,GAAI,IACJ,OAAQ,QACD,MACH,GAAS,CACP,EAAG,GACH,EAAG,EAAU,EAAI,EAAS,QAE5B,UACG,SACH,GAAS,CACP,EAAG,GACH,EAAG,EAAU,EAAI,EAAU,QAE7B,UACG,QACH,GAAS,CACP,EAAG,EAAU,EAAI,EAAU,MAC3B,EAAG,IAEL,UACG,OACH,GAAS,CACP,EAAG,EAAU,EAAI,EAAS,MAC1B,EAAG,IAEL,cAEA,GAAS,CACP,EAAG,EAAU,EACb,EAAG,EAAU,GAGnB,OAAQ,GAAa,QACd,QACH,GAAO,IAAkB,GAAe,IAAO,GAAa,GAAK,GACjE,UACG,MACH,GAAO,IAAkB,GAAe,IAAO,GAAa,GAAK,GACjE,MAEJ,MAAO,IAUT,KAAM,IAAkB,MAAO,EAAW,EAAU,IAAW,CAC7D,KAAM,CACJ,YAAY,SACZ,WAAW,WACX,aAAa,GACb,YACE,EACE,GAAkB,EAAW,OAAO,SACpC,GAAM,KAAO,GAAS,OAAS,KAAO,OAAS,EAAS,MAAM,IACpE,GAAI,IAAQ,KAAM,GAAS,gBAAgB,CACzC,YACA,WACA,aAEE,CACF,KACA,MACE,GAA2B,GAAO,EAAW,IAC7C,GAAoB,EACpB,GAAiB,GACjB,GAAa,EACjB,OAAS,IAAI,EAAG,GAAI,GAAgB,OAAQ,KAAK,CAC/C,KAAM,CACJ,QACA,OACE,GAAgB,IACd,CACJ,EAAG,GACH,EAAG,GACH,QACA,UACE,KAAM,IAAG,CACX,KACA,KACA,iBAAkB,EAClB,UAAW,GACX,WACA,kBACA,SACA,WACA,SAAU,CACR,YACA,cAGJ,GAAI,IAAwB,GAC5B,GAAI,IAAwB,GAC5B,GAAiB,IACZ,IACF,IAAO,IACH,GAAe,OACf,KAGH,IAAS,IAAc,IACzB,MACI,MAAO,KAAU,UACf,IAAM,WACR,IAAoB,GAAM,WAExB,GAAM,OACR,IAAQ,GAAM,QAAU,GAAO,KAAM,GAAS,gBAAgB,CAC5D,YACA,WACA,aACG,GAAM,OAEZ,CACC,KACA,MACE,GAA2B,GAAO,GAAmB,KAE3D,GAAI,IAGR,MAAO,CACL,KACA,KACA,UAAW,GACX,WACA,oBAYJ,kBAA8B,EAAO,EAAS,CAC5C,GAAI,GACA,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,IACA,IACA,WACA,QACA,YACA,aACE,EACE,CACJ,YAAW,oBACX,gBAAe,WACf,kBAAiB,WACjB,eAAc,GACd,WAAU,GACR,GAAS,EAAS,GAChB,GAAgB,GAAiB,IAEjC,GAAU,GAAS,GADN,KAAmB,WAAa,YAAc,WACb,IAC9C,GAAqB,GAAiB,KAAM,GAAS,gBAAgB,CACzE,QAAW,IAAwB,KAAO,GAAS,WAAa,KAAO,OAAS,EAAS,UAAU,OAAc,KAAO,EAAwB,IAAQ,GAAU,GAAQ,gBAAmB,KAAO,GAAS,oBAAsB,KAAO,OAAS,EAAS,mBAAmB,GAAS,WACxR,YACA,gBACA,eAEI,GAAO,KAAmB,WAAa,CAC3C,IACA,IACA,MAAO,EAAM,SAAS,MACtB,OAAQ,EAAM,SAAS,QACrB,EAAM,UACJ,GAAe,KAAO,GAAS,iBAAmB,KAAO,OAAS,EAAS,gBAAgB,GAAS,WACpG,GAAe,KAAO,GAAS,WAAa,KAAO,OAAS,EAAS,UAAU,KAAmB,KAAO,GAAS,UAAY,KAAO,OAAS,EAAS,SAAS,MAAmB,CACvL,EAAG,EACH,EAAG,GACD,CACF,EAAG,EACH,EAAG,GAEC,GAAoB,GAAiB,EAAS,sDAAwD,KAAM,GAAS,sDAAsD,CAC/K,YACA,QACA,gBACA,cACG,IACL,MAAO,CACL,IAAM,IAAmB,IAAM,GAAkB,IAAM,GAAc,KAAO,GAAY,EACxF,OAAS,IAAkB,OAAS,GAAmB,OAAS,GAAc,QAAU,GAAY,EACpG,KAAO,IAAmB,KAAO,GAAkB,KAAO,GAAc,MAAQ,GAAY,EAC5F,MAAQ,IAAkB,MAAQ,GAAmB,MAAQ,GAAc,OAAS,GAAY,GASpG,KAAM,IAAQ,GAAY,EACxB,KAAM,QACN,eACM,IAAG,EAAO,CACd,KAAM,CACJ,IACA,IACA,YACA,QACA,WACA,YACA,mBACE,EAEE,CACJ,WACA,WAAU,GACR,GAAS,EAAS,IAAU,GAChC,GAAI,IAAW,KACb,MAAO,GAET,KAAM,IAAgB,GAAiB,IACjC,GAAS,CACb,IACA,KAEI,GAAO,GAAiB,GACxB,GAAS,GAAc,IACvB,GAAkB,KAAM,GAAS,cAAc,IAC/C,GAAU,KAAS,IACnB,GAAU,GAAU,MAAQ,OAC5B,GAAU,GAAU,SAAW,QAC/B,GAAa,GAAU,eAAiB,cACxC,GAAU,EAAM,UAAU,IAAU,EAAM,UAAU,IAAQ,GAAO,IAAQ,EAAM,SAAS,IAC1F,GAAY,GAAO,IAAQ,EAAM,UAAU,IAC3C,GAAoB,KAAO,GAAS,iBAAmB,KAAO,OAAS,EAAS,gBAAgB,KACtG,GAAI,IAAa,GAAoB,GAAkB,IAAc,EAGjE,EAAC,IAAc,CAAE,KAAO,GAAS,WAAa,KAAO,OAAS,EAAS,UAAU,OACnF,IAAa,GAAS,SAAS,KAAe,EAAM,SAAS,KAE/D,KAAM,IAAoB,GAAU,EAAI,GAAY,EAI9C,GAAyB,GAAa,EAAI,GAAgB,IAAU,EAAI,EACxE,GAAa,GAAI,GAAc,IAAU,IACzC,GAAa,GAAI,GAAc,IAAU,IAIzC,GAAQ,GACR,GAAM,GAAa,GAAgB,IAAU,GAC7C,GAAS,GAAa,EAAI,GAAgB,IAAU,EAAI,GACxD,GAAS,GAAM,GAAO,GAAQ,IAM9B,GAAkB,CAAC,GAAe,OAAS,GAAa,IAAc,MAAQ,KAAW,IAAU,EAAM,UAAU,IAAU,EAAK,IAAS,GAAQ,GAAa,IAAc,GAAgB,IAAU,EAAI,EAC5M,GAAkB,GAAkB,GAAS,GAAQ,GAAS,GAAQ,GAAS,GAAM,EAC3F,MAAO,EACJ,IAAO,GAAO,IAAQ,GACvB,KAAM,EACH,IAAO,GACR,aAAc,GAAS,GAAS,MAC5B,IAAmB,CACrB,qBAGJ,MAAO,OAKb,YAA0B,EAAW,EAAe,EAAmB,CAErE,MAAO,GADgD,CAAC,GAAG,EAAkB,OAAO,GAAa,GAAa,KAAe,GAAY,GAAG,EAAkB,OAAO,GAAa,GAAa,KAAe,IAAc,EAAkB,OAAO,GAAa,GAAQ,KAAe,IAC/O,OAAO,GAC3C,EACK,GAAa,KAAe,GAAc,GAAgB,GAA8B,KAAe,EAAY,IAErH,IASX,KAAM,IAAgB,SAAU,EAAS,CACvC,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,gBACN,eACM,IAAG,EAAO,CACd,GAAI,GAAuB,EAAwB,EACnD,KAAM,CACJ,QACA,iBACA,aACA,YACA,aACE,EACE,CACJ,aAAY,GACZ,aACA,qBAAoB,GACpB,iBAAgB,MACb,IACD,GAAS,EAAS,GAChB,GAAe,KAAc,QAAa,KAAsB,GAAa,GAAiB,IAAa,KAAM,GAAe,IAAqB,GACrJ,GAAW,KAAM,IAAe,EAAO,IACvC,GAAiB,IAAwB,EAAe,gBAAkB,KAAO,OAAS,EAAsB,QAAU,EAC1H,GAAmB,GAAa,IACtC,GAAI,IAAoB,KACtB,MAAO,GAET,KAAM,IAAiB,GAAkB,GAAkB,EAAO,KAAO,IAAS,OAAS,KAAO,OAAS,GAAS,MAAM,GAAS,YAGnI,GAAI,KAAc,GAChB,MAAO,CACL,MAAO,CACL,UAAW,GAAa,KAI9B,KAAM,IAAmB,CAAC,GAAS,GAAQ,KAAoB,GAAS,GAAe,IAAK,GAAS,GAAe,KAC9G,GAAe,CAAC,GAAM,IAAyB,EAAe,gBAAkB,KAAO,OAAS,EAAuB,YAAc,GAAK,CAC9I,UAAW,GACX,UAAW,KAEP,GAAgB,GAAa,GAAe,GAGlD,GAAI,GACF,MAAO,CACL,KAAM,CACJ,MAAO,GAAe,EACtB,UAAW,IAEb,MAAO,CACL,UAAW,KAIjB,KAAM,IAA8B,GAAa,IAAI,IAAK,CACxD,KAAM,IAAY,GAAa,GAAE,WACjC,MAAO,CAAC,GAAE,UAAW,IAAa,GAElC,GAAE,UAAU,MAAM,EAAG,GAAG,OAAO,CAAC,GAAK,KAAM,GAAM,GAAG,GAEpD,GAAE,UAAU,GAAI,GAAE,aACjB,KAAK,CAAC,GAAG,KAAM,GAAE,GAAK,GAAE,IAKrB,GAAmB,IAAwB,GAJe,OAAO,IAAK,GAAE,GAAG,MAAM,EAGvF,GAAa,GAAE,IAAM,EAAI,GAAG,MAAM,IAAK,IAAK,IACiC,KAAO,KAAO,OAAS,EAAsB,KAAO,GAA4B,GAAG,GAChK,MAAI,MAAmB,GACd,CACL,KAAM,CACJ,MAAO,GAAe,EACtB,UAAW,IAEb,MAAO,CACL,UAAW,KAIV,MAWP,GAAO,SAAU,EAAS,CAC9B,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,OACN,eACM,IAAG,EAAO,CACd,GAAI,GAAuB,EAC3B,KAAM,CACJ,YACA,iBACA,QACA,oBACA,YACA,aACE,EACE,CACJ,SAAU,GAAgB,GAC1B,UAAW,GAAiB,GAC5B,mBAAoB,GACpB,oBAAmB,UACnB,6BAA4B,OAC5B,iBAAgB,MACb,IACD,GAAS,EAAS,GAMtB,GAAK,GAAwB,EAAe,QAAU,MAAQ,EAAsB,gBAClF,MAAO,GAET,KAAM,IAAO,GAAQ,GACf,GAAkB,GAAQ,MAAsB,GAChD,GAAM,KAAO,IAAS,OAAS,KAAO,OAAS,GAAS,MAAM,GAAS,WACvE,GAAqB,IAAgC,KAAmB,CAAC,GAAgB,CAAC,GAAqB,KAAqB,GAAsB,KAC5J,CAAC,IAA+B,KAA8B,QAChE,GAAmB,KAAK,GAAG,GAA0B,GAAkB,GAAe,GAA2B,KAEnH,KAAM,IAAa,CAAC,GAAkB,GAAG,IACnC,GAAW,KAAM,IAAe,EAAO,IACvC,GAAY,GAClB,GAAI,IAAkB,IAAuB,EAAe,OAAS,KAAO,OAAS,EAAqB,YAAc,GAIxH,GAHI,IACF,GAAU,KAAK,GAAS,KAEtB,GAAgB,CAClB,KAAM,IAAQ,GAAkB,EAAW,EAAO,IAClD,GAAU,KAAK,GAAS,GAAM,IAAK,GAAS,GAAM,KAQpD,GANA,GAAgB,CAAC,GAAG,GAAe,CACjC,YACA,eAIE,CAAC,GAAU,MAAM,IAAQ,IAAQ,GAAI,CACvC,GAAI,IAAuB,GAC3B,KAAM,IAAe,MAAwB,EAAe,OAAS,KAAO,OAAS,GAAsB,QAAU,GAAK,EACpH,GAAgB,GAAW,IACjC,GAAI,GAEF,MAAO,CACL,KAAM,CACJ,MAAO,GACP,UAAW,IAEb,MAAO,CACL,UAAW,KAOjB,GAAI,IAAkB,IAAwB,GAAc,OAAO,IAAK,GAAE,UAAU,IAAM,GAAG,KAAK,CAAC,GAAG,KAAM,GAAE,UAAU,GAAK,GAAE,UAAU,IAAI,KAAO,KAAO,OAAS,GAAsB,UAG1L,GAAI,CAAC,GACH,OAAQ,QACD,UACH,CACE,GAAI,IACJ,KAAM,IAAa,IAAwB,GAAc,IAAI,IAAK,CAAC,GAAE,UAAW,GAAE,UAAU,OAAO,IAAY,GAAW,GAAG,OAAO,CAAC,GAAK,KAAa,GAAM,GAAU,KAAK,KAAK,CAAC,GAAG,KAAM,GAAE,GAAK,GAAE,IAAI,KAAO,KAAO,OAAS,GAAsB,GACjP,IACF,IAAiB,IAEnB,UAEC,mBACH,GAAiB,GACjB,MAGN,GAAI,IAAc,GAChB,MAAO,CACL,MAAO,CACL,UAAW,KAKnB,MAAO,MAKb,YAAwB,EAAU,EAAM,CACtC,MAAO,CACL,IAAK,EAAS,IAAM,EAAK,OACzB,MAAO,EAAS,MAAQ,EAAK,MAC7B,OAAQ,EAAS,OAAS,EAAK,OAC/B,KAAM,EAAS,KAAO,EAAK,OAG/B,YAA+B,EAAU,CACvC,MAAO,IAAM,KAAK,GAAQ,EAAS,IAAS,GAO9C,KAAM,IAAO,SAAU,EAAS,CAC9B,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,OACN,eACM,IAAG,EAAO,CACd,KAAM,CACJ,SACE,EACE,CACJ,WAAW,qBACR,GACD,GAAS,EAAS,GACtB,OAAQ,OACD,kBACH,CACE,KAAM,GAAW,KAAM,IAAe,EAAO,IACxC,EACH,eAAgB,cAEZ,EAAU,GAAe,EAAU,EAAM,WAC/C,MAAO,CACL,KAAM,CACJ,uBAAwB,EACxB,gBAAiB,GAAsB,SAI1C,UACH,CACE,KAAM,GAAW,KAAM,IAAe,EAAO,IACxC,EACH,YAAa,KAET,EAAU,GAAe,EAAU,EAAM,UAC/C,MAAO,CACL,KAAM,CACJ,eAAgB,EAChB,QAAS,GAAsB,aAMnC,MAAO,OAOnB,YAAyB,EAAO,CAC9B,KAAM,GAAO,GAAI,GAAG,EAAM,IAAI,GAAQ,EAAK,OACrC,EAAO,GAAI,GAAG,EAAM,IAAI,GAAQ,EAAK,MACrC,EAAO,GAAI,GAAG,EAAM,IAAI,GAAQ,EAAK,QACrC,EAAO,GAAI,GAAG,EAAM,IAAI,GAAQ,EAAK,SAC3C,MAAO,CACL,EAAG,EACH,EAAG,EACH,MAAO,EAAO,EACd,OAAQ,EAAO,GAGnB,YAAwB,EAAO,CAC7B,KAAM,GAAc,EAAM,QAAQ,KAAK,CAAC,EAAG,IAAM,EAAE,EAAI,EAAE,GACnD,EAAS,GACf,GAAI,GAAW,KACf,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IAAK,CAC3C,KAAM,GAAO,EAAY,GACrB,CAAC,GAAY,EAAK,EAAI,EAAS,EAAI,EAAS,OAAS,EACvD,EAAO,KAAK,CAAC,IAEb,EAAO,EAAO,OAAS,GAAG,KAAK,GAEjC,EAAW,EAEb,MAAO,GAAO,IAAI,GAAQ,GAAiB,GAAgB,KAO7D,KAAM,IAAS,SAAU,EAAS,CAChC,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,SACN,eACM,IAAG,EAAO,CACd,KAAM,CACJ,YACA,WACA,QACA,WACA,YACE,EAIE,CACJ,WAAU,EACV,KACA,MACE,GAAS,EAAS,GAChB,GAAoB,MAAM,KAAM,KAAO,GAAS,gBAAkB,KAAO,OAAS,EAAS,eAAe,EAAS,aAAgB,IACnI,GAAc,GAAe,IAC7B,GAAW,GAAiB,GAAgB,KAC5C,GAAgB,GAAiB,IACvC,aAAiC,CAE/B,GAAI,GAAY,SAAW,GAAK,GAAY,GAAG,KAAO,GAAY,GAAG,OAAS,IAAK,MAAQ,IAAK,KAE9F,MAAO,IAAY,KAAK,IAAQ,GAAI,GAAK,KAAO,GAAc,MAAQ,GAAI,GAAK,MAAQ,GAAc,OAAS,GAAI,GAAK,IAAM,GAAc,KAAO,GAAI,GAAK,OAAS,GAAc,SAAW,GAI/L,GAAI,GAAY,QAAU,EAAG,CAC3B,GAAI,GAAY,KAAe,IAAK,CAClC,KAAM,IAAY,GAAY,GACxB,GAAW,GAAY,GAAY,OAAS,GAC5C,GAAQ,GAAQ,KAAe,MAC/B,GAAM,GAAU,IAChB,GAAS,GAAS,OAClB,GAAO,GAAQ,GAAU,KAAO,GAAS,KACzC,GAAQ,GAAQ,GAAU,MAAQ,GAAS,MAC3C,GAAQ,GAAQ,GAChB,GAAS,GAAS,GACxB,MAAO,CACL,OACA,UACA,QACA,SACA,SACA,UACA,EAAG,GACH,EAAG,IAGP,KAAM,IAAa,GAAQ,KAAe,OACpC,GAAW,GAAI,GAAG,GAAY,IAAI,IAAQ,GAAK,QAC/C,GAAU,GAAI,GAAG,GAAY,IAAI,IAAQ,GAAK,OAC9C,GAAe,GAAY,OAAO,IAAQ,GAAa,GAAK,OAAS,GAAU,GAAK,QAAU,IAC9F,GAAM,GAAa,GAAG,IACtB,GAAS,GAAa,GAAa,OAAS,GAAG,OAC/C,GAAO,GACP,GAAQ,GACR,GAAQ,GAAQ,GAChB,GAAS,GAAS,GACxB,MAAO,CACL,OACA,UACA,QACA,SACA,SACA,UACA,EAAG,GACH,EAAG,IAGP,MAAO,IAET,KAAM,IAAa,KAAM,GAAS,gBAAgB,CAChD,UAAW,CACT,0BAEF,SAAU,EAAS,SACnB,aAEF,MAAI,GAAM,UAAU,IAAM,GAAW,UAAU,GAAK,EAAM,UAAU,IAAM,GAAW,UAAU,GAAK,EAAM,UAAU,QAAU,GAAW,UAAU,OAAS,EAAM,UAAU,SAAW,GAAW,UAAU,OACnM,CACL,MAAO,CACL,MAAO,KAIN,MAQb,kBAAoC,EAAO,EAAS,CAClD,KAAM,CACJ,YACA,WACA,YACE,EACE,EAAM,KAAO,GAAS,OAAS,KAAO,OAAS,EAAS,MAAM,EAAS,WACvE,EAAO,GAAQ,GACf,GAAY,GAAa,GACzB,GAAa,GAAY,KAAe,IACxC,GAAgB,CAAC,OAAQ,OAAO,SAAS,GAAQ,GAAK,EACtD,GAAiB,GAAO,GAAa,GAAK,EAC1C,GAAW,GAAS,EAAS,GAGnC,GAAI,CACF,YACA,aACA,kBACE,MAAO,KAAa,SAAW,CACjC,SAAU,GACV,UAAW,EACX,cAAe,MACb,CACF,SAAU,EACV,UAAW,EACX,cAAe,QACZ,IAEL,MAAI,KAAa,MAAO,KAAkB,UACxC,IAAY,KAAc,MAAQ,GAAgB,GAAK,IAElD,GAAa,CAClB,EAAG,GAAY,GACf,EAAG,GAAW,IACZ,CACF,EAAG,GAAW,GACd,EAAG,GAAY,IAWnB,KAAM,IAAS,SAAU,EAAS,CAChC,MAAI,KAAY,QACd,GAAU,GAEL,CACL,KAAM,SACN,eACM,IAAG,EAAO,CACd,GAAI,GAAuB,EAC3B,KAAM,CACJ,IACA,IACA,YACA,mBACE,EACE,GAAa,KAAM,IAAqB,EAAO,GAIrD,MAAI,KAAgB,IAAwB,GAAe,SAAW,KAAO,OAAS,EAAsB,YAAe,GAAwB,GAAe,QAAU,MAAQ,EAAsB,gBACjM,GAEF,CACL,EAAG,EAAI,GAAW,EAClB,EAAG,EAAI,GAAW,EAClB,KAAM,IACD,GACH,iBAYJ,GAAQ,SAAU,EAAS,CAC/B,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,QACN,eACM,IAAG,EAAO,CACd,KAAM,CACJ,IACA,IACA,aACE,EACE,CACJ,SAAU,EAAgB,GAC1B,UAAW,EAAiB,GAC5B,WAAU,CACR,GAAI,IAAQ,CACV,GAAI,CACF,KACA,MACE,GACJ,MAAO,CACL,KACA,WAIH,IACD,GAAS,EAAS,GAChB,GAAS,CACb,IACA,KAEI,GAAW,KAAM,IAAe,EAAO,IACvC,GAAY,GAAY,GAAQ,IAChC,GAAW,GAAgB,IACjC,GAAI,IAAgB,GAAO,IACvB,GAAiB,GAAO,IAC5B,GAAI,EAAe,CACjB,KAAM,IAAU,KAAa,IAAM,MAAQ,OACrC,GAAU,KAAa,IAAM,SAAW,QACxC,GAAM,GAAgB,GAAS,IAC/B,GAAM,GAAgB,GAAS,IACrC,GAAgB,GAAM,GAAK,GAAe,IAE5C,GAAI,EAAgB,CAClB,KAAM,IAAU,KAAc,IAAM,MAAQ,OACtC,GAAU,KAAc,IAAM,SAAW,QACzC,GAAM,GAAiB,GAAS,IAChC,GAAM,GAAiB,GAAS,IACtC,GAAiB,GAAM,GAAK,GAAgB,IAE9C,KAAM,IAAgB,GAAQ,GAAG,IAC5B,GACF,IAAW,IACX,IAAY,KAEf,MAAO,IACF,GACH,KAAM,CACJ,EAAG,GAAc,EAAI,EACrB,EAAG,GAAc,EAAI,OASzB,GAAa,SAAU,EAAS,CACpC,MAAI,KAAY,QACd,GAAU,IAEL,CACL,UACA,GAAG,EAAO,CACR,KAAM,CACJ,IACA,IACA,YACA,QACA,kBACE,EACE,CACJ,UAAS,EACT,SAAU,GAAgB,GAC1B,UAAW,GAAiB,IAC1B,GAAS,EAAS,GAChB,GAAS,CACb,IACA,KAEI,GAAY,GAAY,GACxB,GAAW,GAAgB,IACjC,GAAI,IAAgB,GAAO,IACvB,GAAiB,GAAO,IAC5B,KAAM,IAAY,GAAS,GAAQ,GAC7B,GAAiB,MAAO,KAAc,SAAW,CACrD,SAAU,GACV,UAAW,GACT,CACF,SAAU,EACV,UAAW,KACR,IAEL,GAAI,GAAe,CACjB,KAAM,IAAM,KAAa,IAAM,SAAW,QACpC,GAAW,EAAM,UAAU,IAAY,EAAM,SAAS,IAAO,GAAe,SAC5E,GAAW,EAAM,UAAU,IAAY,EAAM,UAAU,IAAO,GAAe,SAC/E,GAAgB,GAClB,GAAgB,GACP,GAAgB,IACzB,IAAgB,IAGpB,GAAI,GAAgB,CAClB,GAAI,IAAuB,GAC3B,KAAM,IAAM,KAAa,IAAM,QAAU,SACnC,GAAe,CAAC,MAAO,QAAQ,SAAS,GAAQ,IAChD,GAAW,EAAM,UAAU,IAAa,EAAM,SAAS,IAAQ,KAAiB,KAAwB,EAAe,SAAW,KAAO,OAAS,GAAsB,MAAe,GAAU,IAAe,EAAI,GAAe,WACnO,GAAW,EAAM,UAAU,IAAa,EAAM,UAAU,IAAQ,IAAe,EAAM,KAAyB,EAAe,SAAW,KAAO,OAAS,GAAuB,MAAe,GAAM,IAAe,GAAe,UAAY,GAChP,GAAiB,GACnB,GAAiB,GACR,GAAiB,IAC1B,IAAiB,IAGrB,MAAO,EACJ,IAAW,IACX,IAAY,OAYf,GAAO,SAAU,EAAS,CAC9B,MAAI,KAAY,QACd,GAAU,IAEL,CACL,KAAM,OACN,eACM,IAAG,EAAO,CACd,KAAM,CACJ,YACA,QACA,WACA,YACE,EACE,CACJ,QAAQ,IAAM,MACX,IACD,GAAS,EAAS,GAChB,GAAW,KAAM,IAAe,EAAO,IACvC,GAAO,GAAQ,GACf,GAAY,GAAa,GACzB,GAAU,GAAY,KAAe,IACrC,CACJ,SACA,WACE,EAAM,SACV,GAAI,IACA,GACA,KAAS,OAAS,KAAS,SAC7B,IAAa,GACb,GAAY,KAAgB,MAAO,GAAS,OAAS,KAAO,OAAS,EAAS,MAAM,EAAS,WAAc,QAAU,OAAS,OAAS,SAEvI,IAAY,GACZ,GAAa,KAAc,MAAQ,MAAQ,UAE7C,KAAM,IAAwB,GAAS,GAAS,IAAM,GAAS,OACzD,GAAuB,GAAQ,GAAS,KAAO,GAAS,MACxD,GAA0B,GAAI,GAAS,GAAS,IAAa,IAC7D,GAAyB,GAAI,GAAQ,GAAS,IAAY,IAC1D,GAAU,CAAC,EAAM,eAAe,MACtC,GAAI,IAAkB,GAClB,GAAiB,GAMrB,GALI,GACF,GAAiB,IAAa,GAAU,GAAI,GAAwB,IAAwB,GAE5F,GAAkB,IAAa,GAAU,GAAI,GAAyB,IAAyB,GAE7F,IAAW,CAAC,GAAW,CACzB,KAAM,IAAO,GAAI,GAAS,KAAM,GAC1B,GAAO,GAAI,GAAS,MAAO,GAC3B,GAAO,GAAI,GAAS,IAAK,GACzB,GAAO,GAAI,GAAS,OAAQ,GAC9B,GACF,GAAiB,GAAQ,EAAK,MAAS,GAAK,KAAS,EAAI,GAAO,GAAO,GAAI,GAAS,KAAM,GAAS,QAEnG,GAAkB,GAAS,EAAK,MAAS,GAAK,KAAS,EAAI,GAAO,GAAO,GAAI,GAAS,IAAK,GAAS,SAGxG,KAAM,GAAM,IACP,EACH,kBACA,qBAEF,KAAM,IAAiB,KAAM,GAAS,cAAc,EAAS,UAC7D,MAAI,MAAU,GAAe,OAAS,KAAW,GAAe,OACvD,CACL,MAAO,CACL,MAAO,KAIN,MCt/Bb,YAA0B,EAAS,CACjC,KAAM,GAAM,GAAiB,GAG7B,GAAI,GAAQ,WAAW,EAAI,QAAU,EACjC,EAAS,WAAW,EAAI,SAAW,EACvC,KAAM,GAAY,EAAc,GAC1B,EAAc,EAAY,EAAQ,YAAc,EAChD,EAAe,EAAY,EAAQ,aAAe,EAClD,GAAiB,GAAM,KAAW,GAAe,GAAM,KAAY,EACzE,MAAI,KACF,GAAQ,EACR,EAAS,GAEJ,CACL,QACA,SACA,EAAG,IAIP,YAAuB,EAAS,CAC9B,MAAQ,GAAU,GAAoC,EAAzB,EAAQ,eAGvC,YAAkB,EAAS,CACzB,KAAM,GAAa,GAAc,GACjC,GAAI,CAAC,EAAc,GACjB,MAAO,IAAa,GAEtB,KAAM,GAAO,EAAW,wBAClB,CACJ,QACA,SACA,KACE,GAAiB,GACrB,GAAI,GAAK,GAAI,GAAM,EAAK,OAAS,EAAK,OAAS,EAC3C,GAAK,GAAI,GAAM,EAAK,QAAU,EAAK,QAAU,EAIjD,MAAI,EAAC,GAAK,CAAC,OAAO,SAAS,KACzB,GAAI,GAEF,EAAC,IAAK,CAAC,OAAO,SAAS,MACzB,IAAI,GAEC,CACL,IACA,MAIJ,KAAM,IAAyB,GAAa,GAC5C,YAA0B,EAAS,CACjC,KAAM,GAAM,EAAU,GACtB,MAAI,CAAC,MAAc,CAAC,EAAI,eACf,GAEF,CACL,EAAG,EAAI,eAAe,WACtB,EAAG,EAAI,eAAe,WAG1B,YAAgC,EAAS,EAAS,EAAsB,CAItE,MAHI,KAAY,QACd,GAAU,IAER,CAAC,GAAwB,GAAW,IAAyB,EAAU,GAClE,GAEF,EAGT,YAA+B,EAAS,EAAc,EAAiB,EAAc,CAC/E,IAAiB,QACnB,GAAe,IAEb,IAAoB,QACtB,GAAkB,IAEpB,KAAM,GAAa,EAAQ,wBACrB,EAAa,GAAc,GACjC,GAAI,GAAQ,GAAa,GACrB,GACF,CAAI,EACE,EAAU,IACZ,GAAQ,GAAS,IAGnB,EAAQ,GAAS,IAGrB,KAAM,IAAgB,GAAuB,EAAY,EAAiB,GAAgB,GAAiB,GAAc,GAAa,GACtI,GAAI,IAAK,GAAW,KAAO,GAAc,GAAK,EAAM,EAChD,GAAK,GAAW,IAAM,GAAc,GAAK,EAAM,EAC/C,GAAQ,EAAW,MAAQ,EAAM,EACjC,GAAS,EAAW,OAAS,EAAM,EACvC,GAAI,EAAY,CACd,KAAM,IAAM,EAAU,GAChB,GAAY,GAAgB,EAAU,GAAgB,EAAU,GAAgB,EACtF,GAAI,IAAa,GACb,GAAgB,GAAW,aAC/B,KAAO,IAAiB,GAAgB,KAAc,IAAY,CAChE,KAAM,IAAc,GAAS,IACvB,GAAa,GAAc,wBAC3B,GAAM,GAAiB,IACvB,GAAO,GAAW,KAAQ,IAAc,WAAa,WAAW,GAAI,cAAgB,GAAY,EAChG,GAAM,GAAW,IAAO,IAAc,UAAY,WAAW,GAAI,aAAe,GAAY,EAClG,IAAK,GAAY,EACjB,IAAK,GAAY,EACjB,IAAS,GAAY,EACrB,IAAU,GAAY,EACtB,IAAK,GACL,IAAK,GACL,GAAa,EAAU,IACvB,GAAgB,GAAW,cAG/B,MAAO,IAAiB,CACtB,SACA,UACA,KACA,OAIJ,KAAM,IAAoB,CAAC,gBAAiB,UAC5C,YAAoB,EAAS,CAC3B,MAAO,IAAkB,KAAK,GAAY,CACxC,GAAI,CACF,MAAO,GAAQ,QAAQ,QACvB,CACA,MAAO,MAKb,YAA+D,EAAM,CACnE,GAAI,CACF,WACA,OACA,eACA,YACE,EACJ,KAAM,GAAU,IAAa,QACvB,EAAkB,EAAmB,GACrC,GAAW,EAAW,GAAW,EAAS,UAAY,GAC5D,GAAI,IAAiB,GAAmB,IAAY,EAClD,MAAO,GAET,GAAI,IAAS,CACX,WAAY,EACZ,UAAW,GAET,GAAQ,GAAa,GACzB,KAAM,IAAU,GAAa,GACvB,GAA0B,EAAc,GAC9C,GAAI,KAA2B,CAAC,IAA2B,CAAC,IACtD,IAAY,KAAkB,QAAU,EAAkB,KAC5D,IAAS,GAAc,IAErB,EAAc,IAAe,CAC/B,KAAM,IAAa,GAAsB,GACzC,GAAQ,GAAS,GACjB,GAAQ,EAAI,GAAW,EAAI,EAAa,WACxC,GAAQ,EAAI,GAAW,EAAI,EAAa,UAG5C,MAAO,CACL,MAAO,EAAK,MAAQ,GAAM,EAC1B,OAAQ,EAAK,OAAS,GAAM,EAC5B,EAAG,EAAK,EAAI,GAAM,EAAI,GAAO,WAAa,GAAM,EAAI,GAAQ,EAC5D,EAAG,EAAK,EAAI,GAAM,EAAI,GAAO,UAAY,GAAM,EAAI,GAAQ,GAI/D,YAAwB,EAAS,CAC/B,MAAO,OAAM,KAAK,EAAQ,kBAG5B,YAA6B,EAAS,CAGpC,MAAO,IAAsB,EAAmB,IAAU,KAAO,GAAc,GAAS,WAK1F,YAAyB,EAAS,CAChC,KAAM,GAAO,EAAmB,GAC1B,EAAS,GAAc,GACvB,EAAO,EAAQ,cAAc,KAC7B,EAAQ,GAAI,EAAK,YAAa,EAAK,YAAa,EAAK,YAAa,EAAK,aACvE,EAAS,GAAI,EAAK,aAAc,EAAK,aAAc,EAAK,aAAc,EAAK,cACjF,GAAI,GAAI,CAAC,EAAO,WAAa,GAAoB,GACjD,KAAM,IAAI,CAAC,EAAO,UAClB,MAAI,IAAiB,GAAM,YAAc,OACvC,IAAK,GAAI,EAAK,YAAa,EAAK,aAAe,GAE1C,CACL,QACA,SACA,IACA,MAIJ,YAAyB,EAAS,EAAU,CAC1C,KAAM,GAAM,EAAU,GAChB,EAAO,EAAmB,GAC1B,EAAiB,EAAI,eAC3B,GAAI,GAAQ,EAAK,YACb,EAAS,EAAK,aACd,GAAI,EACJ,GAAI,EACR,GAAI,EAAgB,CAClB,EAAQ,EAAe,MACvB,EAAS,EAAe,OACxB,KAAM,IAAsB,KACxB,EAAC,IAAuB,IAAuB,IAAa,UAC9D,IAAI,EAAe,WACnB,GAAI,EAAe,WAGvB,MAAO,CACL,QACA,SACA,KACA,MAKJ,YAAoC,EAAS,EAAU,CACrD,KAAM,GAAa,GAAsB,EAAS,GAAM,IAAa,SAC/D,EAAM,EAAW,IAAM,EAAQ,UAC/B,EAAO,EAAW,KAAO,EAAQ,WACjC,EAAQ,EAAc,GAAW,GAAS,GAAW,GAAa,GAClE,EAAQ,EAAQ,YAAc,EAAM,EACpC,GAAS,EAAQ,aAAe,EAAM,EACtC,GAAI,EAAO,EAAM,EACjB,GAAI,EAAM,EAAM,EACtB,MAAO,CACL,QACA,UACA,KACA,MAGJ,YAA2C,EAAS,EAAkB,EAAU,CAC9E,GAAI,GACJ,GAAI,IAAqB,WACvB,EAAO,GAAgB,EAAS,WACvB,IAAqB,WAC9B,EAAO,GAAgB,EAAmB,YACjC,EAAU,GACnB,EAAO,GAA2B,EAAkB,OAC/C,CACL,KAAM,GAAgB,GAAiB,GACvC,EAAO,IACF,EACH,EAAG,EAAiB,EAAI,EAAc,EACtC,EAAG,EAAiB,EAAI,EAAc,GAG1C,MAAO,IAAiB,GAE1B,YAAkC,EAAS,EAAU,CACnD,KAAM,GAAa,GAAc,GACjC,MAAI,KAAe,GAAY,CAAC,EAAU,IAAe,GAAsB,GACtE,GAEF,GAAiB,GAAY,WAAa,SAAW,GAAyB,EAAY,GAMnG,YAAqC,EAAS,EAAO,CACnD,KAAM,GAAe,EAAM,IAAI,GAC/B,GAAI,EACF,MAAO,GAET,GAAI,GAAS,EAAqB,EAAS,GAAI,IAAO,OAAO,IAAM,EAAU,KAAO,EAAY,MAAQ,QACpG,EAAsC,KAC1C,KAAM,GAAiB,GAAiB,GAAS,WAAa,QAC9D,GAAI,GAAc,EAAiB,GAAc,GAAW,EAG5D,KAAO,EAAU,IAAgB,CAAC,GAAsB,IAAc,CACpE,KAAM,IAAgB,GAAiB,GACjC,GAA0B,GAAkB,GAC9C,CAAC,IAA2B,GAAc,WAAa,SACzD,GAAsC,MAGxC,GAD+C,CAAC,IAA2B,CAAC,EAAsC,CAAC,IAA2B,GAAc,WAAa,UAAY,CAAC,CAAC,GAAuC,CAAC,WAAY,SAAS,SAAS,EAAoC,WAAa,EAAkB,IAAgB,CAAC,IAA2B,GAAyB,EAAS,IAG5Y,EAAS,EAAO,OAAO,IAAY,KAAa,GAGhD,EAAsC,GAExC,EAAc,GAAc,GAE9B,SAAM,IAAI,EAAS,GACZ,EAKT,YAAyB,EAAM,CAC7B,GAAI,CACF,UACA,WACA,eACA,YACE,EAEJ,KAAM,GAAoB,CAAC,GADM,IAAa,oBAAsB,GAAW,GAAW,GAAK,GAA4B,EAAS,KAAK,IAAM,GAAG,OAAO,GACjG,GAClD,GAAwB,EAAkB,GAC1C,GAAe,EAAkB,OAAO,CAAC,GAAS,KAAqB,CAC3E,KAAM,IAAO,GAAkC,EAAS,GAAkB,GAC1E,UAAQ,IAAM,GAAI,GAAK,IAAK,GAAQ,KACpC,GAAQ,MAAQ,GAAI,GAAK,MAAO,GAAQ,OACxC,GAAQ,OAAS,GAAI,GAAK,OAAQ,GAAQ,QAC1C,GAAQ,KAAO,GAAI,GAAK,KAAM,GAAQ,MAC/B,IACN,GAAkC,EAAS,GAAuB,IACrE,MAAO,CACL,MAAO,GAAa,MAAQ,GAAa,KACzC,OAAQ,GAAa,OAAS,GAAa,IAC3C,EAAG,GAAa,KAChB,EAAG,GAAa,KAIpB,YAAuB,EAAS,CAC9B,KAAM,CACJ,QACA,UACE,GAAiB,GACrB,MAAO,CACL,QACA,UAIJ,YAAuC,EAAS,EAAc,EAAU,CACtE,KAAM,GAA0B,EAAc,GACxC,EAAkB,EAAmB,GACrC,EAAU,IAAa,QACvB,EAAO,GAAsB,EAAS,GAAM,EAAS,GAC3D,GAAI,IAAS,CACX,WAAY,EACZ,UAAW,GAEb,KAAM,IAAU,GAAa,GAC7B,GAAI,GAA2B,CAAC,GAA2B,CAAC,EAI1D,GAHI,GAAY,KAAkB,QAAU,EAAkB,KAC5D,IAAS,GAAc,IAErB,EAAyB,CAC3B,KAAM,IAAa,GAAsB,EAAc,GAAM,EAAS,GACtE,GAAQ,EAAI,GAAW,EAAI,EAAa,WACxC,GAAQ,EAAI,GAAW,EAAI,EAAa,cAC/B,IACT,IAAQ,EAAI,GAAoB,IAGpC,KAAM,IAAI,EAAK,KAAO,GAAO,WAAa,GAAQ,EAC5C,GAAI,EAAK,IAAM,GAAO,UAAY,GAAQ,EAChD,MAAO,CACL,KACA,KACA,MAAO,EAAK,MACZ,OAAQ,EAAK,QAIjB,YAA4B,EAAS,CACnC,MAAO,IAAiB,GAAS,WAAa,SAGhD,YAA6B,EAAS,EAAU,CAC9C,MAAI,CAAC,EAAc,IAAY,GAAiB,GAAS,WAAa,QAC7D,KAEL,EACK,EAAS,GAEX,EAAQ,aAKjB,YAAyB,EAAS,EAAU,CAC1C,KAAM,GAAM,EAAU,GACtB,GAAI,GAAW,GACb,MAAO,GAET,GAAI,CAAC,EAAc,GAAU,CAC3B,GAAI,GAAkB,GAAc,GACpC,KAAO,GAAmB,CAAC,GAAsB,IAAkB,CACjE,GAAI,EAAU,IAAoB,CAAC,GAAmB,GACpD,MAAO,GAET,EAAkB,GAAc,GAElC,MAAO,GAET,GAAI,GAAe,GAAoB,EAAS,GAChD,KAAO,GAAgB,GAAe,IAAiB,GAAmB,IACxE,EAAe,GAAoB,EAAc,GAEnD,MAAI,IAAgB,GAAsB,IAAiB,GAAmB,IAAiB,CAAC,GAAkB,GACzG,EAEF,GAAgB,GAAmB,IAAY,EAGxD,KAAM,IAAkB,eAAgB,EAAM,CAC5C,KAAM,GAAoB,KAAK,iBAAmB,GAE5C,EAAqB,KAAM,MADJ,cACoB,EAAK,UACtD,MAAO,CACL,UAAW,GAA8B,EAAK,UAAW,KAAM,GAAkB,EAAK,UAAW,EAAK,UACtG,SAAU,CACR,EAAG,EACH,EAAG,EACH,MAAO,EAAmB,MAC1B,OAAQ,EAAmB,UAKjC,YAAe,EAAS,CACtB,MAAO,IAAiB,GAAS,YAAc,MAGjD,KAAM,IAAW,CACf,yDACA,mBAAkB,EAClB,mBACA,mBACA,mBACA,kBACA,iBACA,YACA,UAAS,EACT,UAIF,YAAqB,EAAS,EAAQ,CACpC,GAAI,GAAK,KACL,EACJ,KAAM,GAAO,EAAmB,GAChC,YAAmB,CACjB,GAAI,IACJ,aAAa,GACZ,IAAM,IAAO,MAAQ,GAAI,aAC1B,EAAK,KAEP,WAAiB,GAAM,GAAW,CAC5B,KAAS,QACX,IAAO,IAEL,KAAc,QAChB,IAAY,GAEd,IACA,KAAM,CACJ,QACA,OACA,SACA,WACE,EAAQ,wBAIZ,GAHK,IACH,IAEE,CAAC,IAAS,CAAC,GACb,OAEF,KAAM,IAAW,GAAM,IACjB,GAAa,GAAM,EAAK,YAAe,IAAO,KAC9C,GAAc,GAAM,EAAK,aAAgB,IAAM,KAC/C,GAAY,GAAM,IAElB,GAAU,CACd,WAFiB,CAAC,GAAW,MAAQ,CAAC,GAAa,MAAQ,CAAC,GAAc,MAAQ,CAAC,GAAY,KAG/F,UAAW,GAAI,EAAG,GAAI,EAAG,MAAe,GAE1C,GAAI,IAAgB,GACpB,YAAuB,GAAS,CAC9B,KAAM,IAAQ,GAAQ,GAAG,kBACzB,GAAI,KAAU,GAAW,CACvB,GAAI,CAAC,GACH,MAAO,KAEJ,GAOH,EAAQ,GAAO,IAJf,EAAY,WAAW,IAAM,CAC3B,EAAQ,GAAO,OACd,KAKP,GAAgB,GAKlB,GAAI,CACF,EAAK,GAAI,sBAAqB,GAAe,IACxC,GAEH,KAAM,EAAK,qBAEb,CACA,EAAK,GAAI,sBAAqB,GAAe,IAE/C,EAAG,QAAQ,GAEb,SAAQ,IACD,EAWT,YAAoB,EAAW,EAAU,EAAQ,EAAS,CACpD,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,MAAO,iBAAmB,WAC1C,eAAc,MAAO,uBAAyB,WAC9C,kBAAiB,IACf,EACE,GAAc,GAAc,GAC5B,GAAY,GAAkB,EAAiB,CAAC,GAAI,GAAc,EAAqB,IAAe,GAAK,GAAG,EAAqB,IAAa,GACtJ,GAAU,QAAQ,IAAY,CAC5B,GAAkB,GAAS,iBAAiB,SAAU,EAAQ,CAC5D,QAAS,KAEX,GAAkB,GAAS,iBAAiB,SAAU,KAExD,KAAM,IAAY,IAAe,GAAc,GAAY,GAAa,GAAU,KAClF,GAAI,IAAiB,GACjB,GAAiB,KACjB,GACF,IAAiB,GAAI,gBAAe,IAAQ,CAC1C,GAAI,CAAC,IAAc,GACf,IAAc,GAAW,SAAW,IAAe,IAGrD,IAAe,UAAU,GACzB,qBAAqB,IACrB,GAAiB,sBAAsB,IAAM,CAC3C,GAAI,IACH,IAAkB,KAAmB,MAAQ,GAAgB,QAAQ,MAG1E,MAEE,IAAe,CAAC,IAClB,GAAe,QAAQ,IAEzB,GAAe,QAAQ,IAEzB,GAAI,IACA,GAAc,GAAiB,GAAsB,GAAa,KAClE,IACF,KAEF,aAAqB,CACnB,KAAM,IAAc,GAAsB,GACtC,IAAgB,IAAY,IAAM,GAAY,GAAK,GAAY,IAAM,GAAY,GAAK,GAAY,QAAU,GAAY,OAAS,GAAY,SAAW,GAAY,SACtK,IAEF,GAAc,GACd,GAAU,sBAAsB,IAElC,WACO,IAAM,CACX,GAAI,IACJ,GAAU,QAAQ,IAAY,CAC5B,GAAkB,GAAS,oBAAoB,SAAU,GACzD,GAAkB,GAAS,oBAAoB,SAAU,KAE3D,IAAa,MAAQ,KACpB,IAAmB,KAAmB,MAAQ,GAAiB,aAChE,GAAiB,KACb,IACF,qBAAqB,KAa3B,KAAM,IAAiB,GASjB,GAAS,GAQT,GAAgB,GAOhB,GAAQ,GAQR,GAAO,GAQP,GAAO,GAOP,GAAO,GAOP,GAAQ,GAOR,GAAS,GAKT,GAAa,GAMb,GAAkB,CAAC,EAAW,EAAU,IAAY,CAIxD,KAAM,GAAQ,GAAI,KACZ,EAAgB,CACpB,eACG,GAEC,EAAoB,IACrB,EAAc,SACjB,GAAI,GAEN,MAAO,IAAkB,EAAW,EAAU,IACzC,EACH,SAAU,K,eChsBV,GAAQ,MAAO,WAAa,YAAc,kBAAkB,YAIhE,YAAmB,EAAG,EAAG,CACvB,GAAI,IAAM,EACR,MAAO,GAET,GAAI,MAAO,IAAM,MAAO,GACtB,MAAO,GAET,GAAI,MAAO,IAAM,YAAc,EAAE,aAAe,EAAE,WAChD,MAAO,GAET,GAAI,GACA,EACA,EACJ,GAAI,GAAK,GAAK,MAAO,IAAM,SAAU,CACnC,GAAI,MAAM,QAAQ,GAAI,CAEpB,GADA,EAAS,EAAE,OACP,IAAW,EAAE,OAAQ,MAAO,GAChC,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,GAAU,EAAE,GAAI,EAAE,IACrB,MAAO,GAGX,MAAO,GAIT,GAFA,EAAO,OAAO,KAAK,GACnB,EAAS,EAAK,OACV,IAAW,OAAO,KAAK,GAAG,OAC5B,MAAO,GAET,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,GAAG,eAAe,KAAK,EAAG,EAAK,IAClC,MAAO,GAGX,IAAK,EAAI,EAAQ,MAAQ,GAAI,CAC3B,KAAM,GAAM,EAAK,GACjB,GAAI,MAAQ,UAAY,EAAE,WAGtB,CAAC,GAAU,EAAE,GAAM,EAAE,IACvB,MAAO,GAGX,MAAO,GAET,MAAO,KAAM,GAAK,IAAM,EAG1B,YAAgB,EAAS,CACvB,MAAI,OAAO,SAAW,YACb,EAGF,GADa,cAAc,aAAe,QACtC,kBAAoB,EAGjC,YAAoB,EAAS,EAAO,CAClC,KAAM,GAAM,GAAO,GACnB,MAAO,MAAK,MAAM,EAAQ,GAAO,EAGnC,YAAsB,EAAO,CAC3B,KAAM,GAAM,SAAa,GACzB,UAAM,IAAM,CACV,EAAI,QAAU,IAET,EAOT,YAAqB,EAAS,CACxB,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,YAAY,SACZ,WAAW,WACX,aAAa,GACb,WACA,SAAU,CACR,UAAW,EACX,SAAU,GACR,GACJ,aAAY,GACZ,wBACA,SACE,EACE,CAAC,GAAM,IAAW,WAAe,CACrC,EAAG,EACH,EAAG,EACH,WACA,YACA,eAAgB,GAChB,aAAc,KAEV,CAAC,GAAkB,IAAuB,WAAe,GAC1D,GAAU,GAAkB,IAC/B,GAAoB,GAEtB,KAAM,CAAC,GAAY,IAAiB,WAAe,MAC7C,CAAC,GAAW,IAAgB,WAAe,MAC3C,GAAe,cAAkB,IAAQ,CACzC,KAAS,GAAa,SACxB,IAAa,QAAU,GACvB,GAAc,MAEf,IACG,GAAc,cAAkB,IAAQ,CACxC,KAAS,GAAY,SACvB,IAAY,QAAU,GACtB,GAAa,MAEd,IACG,GAAc,GAAqB,GACnC,GAAa,GAAoB,GACjC,GAAe,SAAa,MAC5B,GAAc,SAAa,MAC3B,GAAU,SAAa,IACvB,GAA0B,IAAwB,KAClD,GAA0B,GAAa,IACvC,GAAc,GAAa,GAC3B,GAAS,cAAkB,IAAM,CACrC,GAAI,CAAC,GAAa,SAAW,CAAC,GAAY,QACxC,OAEF,KAAM,IAAS,CACb,YACA,WACA,WAAY,IAEV,GAAY,SACd,IAAO,SAAW,GAAY,SAEhC,GAAgB,GAAa,QAAS,GAAY,QAAS,IAAQ,KAAK,IAAQ,CAC9E,KAAM,IAAW,IACZ,GACH,aAAc,IAEZ,GAAa,SAAW,CAAC,GAAU,GAAQ,QAAS,KACtD,IAAQ,QAAU,GAClB,aAAmB,IAAM,CACvB,GAAQ,UAIb,CAAC,GAAkB,EAAW,EAAU,KAC3C,GAAM,IAAM,CACN,KAAS,IAAS,GAAQ,QAAQ,cACpC,IAAQ,QAAQ,aAAe,GAC/B,GAAQ,IAAS,KACZ,GACH,aAAc,QAGjB,CAAC,KACJ,KAAM,IAAe,SAAa,IAClC,GAAM,IACJ,IAAa,QAAU,GAChB,IAAM,CACX,GAAa,QAAU,KAExB,IACH,GAAM,IAAM,CAGV,GAFI,IAAa,IAAa,QAAU,IACpC,IAAY,IAAY,QAAU,IAClC,IAAe,GAAY,CAC7B,GAAI,GAAwB,QAC1B,MAAO,IAAwB,QAAQ,GAAa,GAAY,IAElE,OAED,CAAC,GAAa,GAAY,GAAQ,GAAyB,KAC9D,KAAM,IAAO,UAAc,IAAO,EAChC,UAAW,GACX,SAAU,GACV,gBACA,iBACE,CAAC,GAAc,KACb,GAAW,UAAc,IAAO,EACpC,UAAW,GACX,SAAU,KACR,CAAC,GAAa,KACZ,GAAiB,UAAc,IAAM,CACzC,KAAM,IAAgB,CACpB,SAAU,EACV,KAAM,EACN,IAAK,GAEP,GAAI,CAAC,GAAS,SACZ,MAAO,IAET,KAAM,IAAI,GAAW,GAAS,SAAU,GAAK,GACvC,GAAI,GAAW,GAAS,SAAU,GAAK,GAC7C,MAAI,IACK,IACF,GACH,UAAW,aAAe,GAAI,OAAS,GAAI,SACvC,GAAO,GAAS,WAAa,KAAO,CACtC,WAAY,cAIX,CACL,SAAU,EACV,KAAM,GACN,IAAK,KAEN,CAAC,EAAU,GAAW,GAAS,SAAU,GAAK,EAAG,GAAK,IACzD,MAAO,WAAc,IAAO,KACvB,GACH,UACA,QACA,YACA,oBACE,CAAC,GAAM,GAAQ,GAAM,GAAU,KASrC,KAAM,IAAU,GAAW,CACzB,WAAe,EAAO,CACpB,MAAO,GAAG,eAAe,KAAK,EAAO,WAEvC,MAAO,CACL,KAAM,QACN,UACA,GAAG,EAAO,CACR,KAAM,CACJ,UACA,WACE,MAAO,IAAY,WAAa,EAAQ,GAAS,EACrD,MAAI,IAAW,EAAM,GACf,EAAQ,SAAW,KACd,GAAQ,CACb,QAAS,EAAQ,QACjB,YACC,GAAG,GAED,GAEL,EACK,GAAQ,CACb,UACA,YACC,GAAG,GAED,MAYP,GAAS,CAAC,EAAS,IAAU,KAC9B,GAAS,GACZ,QAAS,CAAC,EAAS,KAQf,GAAQ,CAAC,EAAS,IAAU,KAC7B,GAAQ,GACX,QAAS,CAAC,EAAS,KAKf,GAAa,CAAC,EAAS,IAAU,KAClC,GAAa,GAChB,QAAS,CAAC,EAAS,KASf,GAAO,CAAC,EAAS,IAAU,KAC5B,GAAO,GACV,QAAS,CAAC,EAAS,KASf,GAAO,CAAC,EAAS,IAAU,KAC5B,GAAO,GACV,QAAS,CAAC,EAAS,KASf,GAAgB,CAAC,EAAS,IAAU,KACrC,GAAgB,GACnB,QAAS,CAAC,EAAS,KAQf,GAAO,CAAC,EAAS,IAAU,KAC5B,GAAO,GACV,QAAS,CAAC,EAAS,KAQf,GAAS,CAAC,EAAS,IAAU,KAC9B,GAAS,GACZ,QAAS,CAAC,EAAS,KASf,GAAQ,CAAC,EAAS,IAAU,KAC7B,GAAQ,GACX,QAAS,CAAC,EAAS,KCtWrB;AAAA;AAAA;AAAA,EASA,GAAI,IAAqB,CAAC,qBAAsB,sBAAuB,wBAAyB,uBAAwB,sBAAuB,oCAAqC,+BAAgC,+BAAgC,gEAAiE,6CAA8C,wBAC/V,GAAmC,GAAmB,KAAK,KAC3D,GAAY,MAAO,UAAY,YAC/B,GAAU,GAAY,UAAY,GAAK,QAAQ,UAAU,SAAW,QAAQ,UAAU,mBAAqB,QAAQ,UAAU,sBAC7H,GAAc,CAAC,IAAa,QAAQ,UAAU,YAAc,SAAU,EAAS,CACjF,GAAI,GACJ,MAAO,IAAY,MAAuC,GAAuB,EAAQ,eAAiB,MAAQ,IAAyB,OAA3F,OAA6G,EAAqB,KAAK,IACrL,SAAU,EAAS,CACrB,MAAO,IAAY,KAA6B,OAAS,EAAQ,eAW/D,GAAU,WAAiB,EAAM,EAAQ,CAC3C,GAAI,GACA,IAAW,QACb,GAAS,IAKX,GAAI,GAAW,GAAS,MAAoC,GAAqB,EAAK,gBAAkB,MAAQ,IAAuB,OAArF,OAAuG,EAAmB,KAAK,EAAM,SACnL,EAAQ,IAAa,IAAM,IAAa,OAOxC,EAAS,GAAS,GAAU,GAAQ,EAAQ,EAAK,YAErD,MAAO,IAQL,GAAoB,SAA2B,EAAM,CACvD,GAAI,GAIA,EAAW,GAAS,MAAoC,GAAsB,EAAK,gBAAkB,MAAQ,IAAwB,OAAvF,OAAyG,EAAoB,KAAK,EAAM,mBAC1L,MAAO,KAAa,IAAM,IAAa,QASrC,GAAgB,SAAuB,EAAI,EAAkB,EAAQ,CAGvE,GAAI,GAAQ,GACV,MAAO,GAET,GAAI,GAAa,MAAM,UAAU,MAAM,MAAM,EAAG,iBAAiB,KACjE,MAAI,IAAoB,GAAQ,KAAK,EAAI,KACvC,EAAW,QAAQ,GAErB,EAAa,EAAW,OAAO,GACxB,GAqCL,GAA2B,WAAkC,EAAU,EAAkB,EAAS,CAGpG,OAFI,GAAa,GACb,EAAkB,MAAM,KAAK,GAC1B,EAAgB,QAAQ,CAC7B,GAAI,GAAU,EAAgB,QAC9B,GAAI,IAAQ,EAAS,IAKrB,GAAI,EAAQ,UAAY,OAAQ,CAE9B,GAAI,IAAW,EAAQ,mBACnB,GAAU,GAAS,OAAS,GAAW,EAAQ,SAC/C,GAAmB,EAAyB,GAAS,GAAM,GAC3D,EAAQ,QACV,EAAW,KAAK,MAAM,EAAY,IAElC,EAAW,KAAK,CACd,YAAa,EACb,WAAY,SAGX,CAEL,GAAI,IAAiB,GAAQ,KAAK,EAAS,IACvC,IAAkB,EAAQ,OAAO,IAAa,IAAoB,CAAC,EAAS,SAAS,KACvF,EAAW,KAAK,GAIlB,GAAI,IAAa,EAAQ,YAEzB,MAAO,GAAQ,eAAkB,YAAc,EAAQ,cAAc,GAKjE,GAAkB,CAAC,GAAQ,GAAY,KAAW,EAAC,EAAQ,kBAAoB,EAAQ,iBAAiB,IAC5G,GAAI,IAAc,GAAiB,CAOjC,GAAI,IAAoB,EAAyB,KAAe,GAAO,EAAQ,SAAW,GAAW,SAAU,GAAM,GACjH,EAAQ,QACV,EAAW,KAAK,MAAM,EAAY,IAElC,EAAW,KAAK,CACd,YAAa,EACb,WAAY,SAMhB,GAAgB,QAAQ,MAAM,EAAiB,EAAQ,WAI7D,MAAO,IASL,GAAc,SAAqB,EAAM,CAC3C,MAAO,CAAC,MAAM,SAAS,EAAK,aAAa,YAAa,MASpD,GAAc,SAAqB,EAAM,CAC3C,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,oBAElB,MAAI,GAAK,SAAW,GAQb,2BAA0B,KAAK,EAAK,UAAY,GAAkB,KAAU,CAAC,GAAY,GACrF,EAGJ,EAAK,UAWV,GAAuB,SAA8B,EAAM,EAAS,CACtE,GAAI,GAAW,GAAY,GAC3B,MAAI,GAAW,GAAK,GAAW,CAAC,GAAY,GACnC,EAEF,GAEL,GAAuB,SAA8B,EAAG,EAAG,CAC7D,MAAO,GAAE,WAAa,EAAE,SAAW,EAAE,cAAgB,EAAE,cAAgB,EAAE,SAAW,EAAE,UAEpF,GAAU,SAAiB,EAAM,CACnC,MAAO,GAAK,UAAY,SAEtB,GAAgB,SAAuB,EAAM,CAC/C,MAAO,IAAQ,IAAS,EAAK,OAAS,UAEpC,GAAuB,SAA8B,EAAM,CAC7D,GAAI,GAAI,EAAK,UAAY,WAAa,MAAM,UAAU,MAAM,MAAM,EAAK,UAAU,KAAK,SAAU,EAAO,CACrG,MAAO,GAAM,UAAY,YAE3B,MAAO,IAEL,GAAkB,SAAyB,EAAO,EAAM,CAC1D,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,GAAI,EAAM,GAAG,SAAW,EAAM,GAAG,OAAS,EACxC,MAAO,GAAM,IAIf,GAAkB,SAAyB,EAAM,CACnD,GAAI,CAAC,EAAK,KACR,MAAO,GAET,GAAI,GAAa,EAAK,MAAQ,GAAY,GACtC,EAAc,SAAqB,GAAM,CAC3C,MAAO,GAAW,iBAAiB,6BAA+B,GAAO,OAEvE,EACJ,GAAI,MAAO,SAAW,aAAe,MAAO,QAAO,KAAQ,aAAe,MAAO,QAAO,IAAI,QAAW,WACrG,EAAW,EAAY,OAAO,IAAI,OAAO,EAAK,WAE9C,IAAI,CACF,EAAW,EAAY,EAAK,YACrB,EAAP,CAEA,eAAQ,MAAM,2IAA4I,EAAI,SACvJ,GAGX,GAAI,GAAU,GAAgB,EAAU,EAAK,MAC7C,MAAO,CAAC,GAAW,IAAY,GAE7B,GAAU,SAAiB,EAAM,CACnC,MAAO,IAAQ,IAAS,EAAK,OAAS,SAEpC,GAAqB,SAA4B,EAAM,CACzD,MAAO,IAAQ,IAAS,CAAC,GAAgB,IAIvC,GAAiB,SAAwB,EAAM,CACjD,GAAI,GAwBA,EAAW,GAAQ,GAAY,GAC/B,EAAgB,GAAY,KAAc,MAAQ,IAAc,OAAS,OAAS,EAAU,KAI5F,EAAW,GACf,GAAI,GAAY,IAAa,EAAM,CACjC,GAAI,GAAe,GAAuB,GAE1C,IADA,EAAW,CAAC,CAAG,IAAgB,KAAkB,MAAQ,IAAkB,QAAW,IAAwB,EAAc,iBAAmB,MAAQ,KAA0B,QAAU,GAAsB,SAAS,IAAiB,GAAS,MAA4B,IAAsB,EAAK,iBAAmB,MAAQ,KAAwB,QAAU,GAAoB,SAAS,IAC9X,CAAC,GAAY,GAAc,CAChC,GAAI,IAAY,GAAgB,GAIhC,EAAW,GAAY,GACvB,EAAgB,IAAa,KAAc,MAAQ,KAAe,OAAS,OAAS,GAAW,KAC/F,EAAW,CAAC,CAAG,KAAiB,KAAkB,MAAQ,KAAmB,QAAW,IAAwB,GAAe,iBAAmB,MAAQ,KAA0B,QAAU,GAAsB,SAAS,KAGjO,MAAO,IAEL,GAAa,SAAoB,EAAM,CACzC,GAAI,GAAwB,EAAK,wBAC/B,EAAQ,EAAsB,MAC9B,EAAS,EAAsB,OACjC,MAAO,KAAU,GAAK,IAAW,GAE/B,GAAW,SAAkB,EAAM,EAAM,CAC3C,GAAI,GAAe,EAAK,aACtB,EAAgB,EAAK,cAMvB,GAAI,iBAAiB,GAAM,aAAe,SACxC,MAAO,GAET,GAAI,GAAkB,GAAQ,KAAK,EAAM,iCACrC,EAAmB,EAAkB,EAAK,cAAgB,EAC9D,GAAI,GAAQ,KAAK,EAAkB,yBACjC,MAAO,GAET,GAAI,CAAC,GAAgB,IAAiB,QAAU,IAAiB,cAAe,CAC9E,GAAI,MAAO,IAAkB,WAAY,CAIvC,OADI,IAAe,EACZ,GAAM,CACX,GAAI,IAAgB,EAAK,cACrB,GAAW,GAAY,GAC3B,GAAI,IAAiB,CAAC,GAAc,YAAc,EAAc,MAAmB,GAIjF,MAAO,IAAW,GACT,EAAK,aAEd,EAAO,EAAK,aACH,CAAC,IAAiB,KAAa,EAAK,cAE7C,EAAO,GAAS,KAGhB,EAAO,GAGX,EAAO,GAYT,GAAI,GAAe,GAKjB,MAAO,CAAC,EAAK,iBAAiB,OAmBhC,GAAI,IAAiB,cACnB,MAAO,WAGA,IAAiB,gBAM1B,MAAO,IAAW,GAKpB,MAAO,IAML,GAAyB,SAAgC,EAAM,CACjE,GAAI,mCAAmC,KAAK,EAAK,SAG/C,OAFI,GAAa,EAAK,cAEf,GAAY,CACjB,GAAI,EAAW,UAAY,YAAc,EAAW,SAAU,CAE5D,OAAS,GAAI,EAAG,EAAI,EAAW,SAAS,OAAQ,IAAK,CACnD,GAAI,GAAQ,EAAW,SAAS,KAAK,GAErC,GAAI,EAAM,UAAY,SAGpB,MAAO,IAAQ,KAAK,EAAY,wBAA0B,GAAO,CAAC,EAAM,SAAS,GAIrF,MAAO,GAET,EAAa,EAAW,cAM5B,MAAO,IAEL,GAAkC,SAAyC,EAAS,EAAM,CAC5F,MAAI,IAAK,UAIT,GAAQ,IAAS,GAAc,IAAS,GAAS,EAAM,IAEvD,GAAqB,IAAS,GAAuB,KAKnD,GAAiC,SAAwC,EAAS,EAAM,CAC1F,MAAI,KAAmB,IAAS,GAAY,GAAQ,GAAK,CAAC,GAAgC,EAAS,KAKjG,GAA4B,SAAmC,EAAgB,CACjF,GAAI,GAAW,SAAS,EAAe,aAAa,YAAa,IACjE,MAAI,SAAM,IAAa,GAAY,IAYjC,GAAc,WAAqB,EAAY,CACjD,GAAI,GAAmB,GACnB,EAAmB,GACvB,SAAW,QAAQ,SAAU,EAAM,EAAG,CACpC,GAAI,GAAU,CAAC,CAAC,EAAK,YACjB,GAAU,EAAU,EAAK,YAAc,EACvC,GAAoB,GAAqB,GAAS,GAClD,GAAW,EAAU,EAAY,EAAK,YAAc,GACpD,KAAsB,EACxB,EAAU,EAAiB,KAAK,MAAM,EAAkB,IAAY,EAAiB,KAAK,IAE1F,EAAiB,KAAK,CACpB,cAAe,EACf,SAAU,GACV,KAAM,EACN,QAAS,EACT,QAAS,OAIR,EAAiB,KAAK,IAAsB,OAAO,SAAU,EAAK,EAAU,CACjF,SAAS,QAAU,EAAI,KAAK,MAAM,EAAK,EAAS,SAAW,EAAI,KAAK,EAAS,SACtE,GACN,IAAI,OAAO,IAEZ,GAAW,SAAkB,EAAW,EAAS,CACnD,EAAU,GAAW,GACrB,GAAI,GACJ,MAAI,GAAQ,cACV,EAAa,GAAyB,CAAC,GAAY,EAAQ,iBAAkB,CAC3E,OAAQ,GAA+B,KAAK,KAAM,GAClD,QAAS,GACT,cAAe,EAAQ,cACvB,iBAAkB,KAGpB,EAAa,GAAc,EAAW,EAAQ,iBAAkB,GAA+B,KAAK,KAAM,IAErG,GAAY,IAEjB,GAAY,SAAmB,EAAW,EAAS,CACrD,EAAU,GAAW,GACrB,GAAI,GACJ,MAAI,GAAQ,cACV,EAAa,GAAyB,CAAC,GAAY,EAAQ,iBAAkB,CAC3E,OAAQ,GAAgC,KAAK,KAAM,GACnD,QAAS,GACT,cAAe,EAAQ,gBAGzB,EAAa,GAAc,EAAW,EAAQ,iBAAkB,GAAgC,KAAK,KAAM,IAEtG,GAEL,GAAa,SAAoB,EAAM,EAAS,CAElD,GADA,EAAU,GAAW,GACjB,CAAC,EACH,KAAM,IAAI,OAAM,oBAElB,MAAI,IAAQ,KAAK,EAAM,MAAuB,GACrC,GAEF,GAA+B,EAAS,IAE7C,GAA4C,KAC5C,GAAc,SAAqB,EAAM,EAAS,CAEpD,GADA,EAAU,GAAW,GACjB,CAAC,EACH,KAAM,IAAI,OAAM,oBAElB,MAAI,IAAQ,KAAK,EAAM,MAAgC,GAC9C,GAEF,GAAgC,EAAS,ICxiBlD,YAAsB,EAAM,CAC1B,MAAO,WAAc,IACf,EAAK,MAAM,GAAO,GAAO,MACpB,KAEF,GAAS,CACd,EAAK,QAAQ,GAAO,CACd,MAAO,IAAQ,WACjB,EAAI,GACK,GAAO,MAChB,GAAI,QAAU,MAKnB,GAIL,KAAM,GAAY,IACb,GAIC,EAAyB,EADM,oBACiB,IAAM,KAC5D,YAAwB,EAAU,CAChC,KAAM,GAAM,SAAa,IAAM,IAK/B,SAAuB,IAAM,CAC3B,EAAI,QAAU,IAET,cAAkB,UAAY,CACnC,OAAS,GAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAEzB,MAAO,GAAI,SAAW,KAAO,OAAS,EAAI,QAAQ,GAAG,IACpD,IAGL,KAAM,GAAW,UACX,EAAa,YACb,GAAa,YACb,GAAc,aACpB,YAAwB,EAAO,EAAM,EAAS,CAC5C,MAAO,MAAK,MAAM,EAAQ,KAAU,EAEtC,YAA4B,EAAS,EAAO,CAC1C,MAAO,GAAQ,GAAK,GAAS,EAAQ,QAAQ,OAE/C,YAAqB,EAAS,EAAiB,CAC7C,MAAO,IAAqB,EAAS,CACnC,oBAGJ,YAAqB,EAAS,EAAiB,CAC7C,MAAO,IAAqB,EAAS,CACnC,UAAW,GACX,cAAe,EAAQ,QAAQ,OAC/B,oBAGJ,YAA8B,EAAS,EAAO,CAC5C,GAAI,CACF,gBAAgB,GAChB,YAAY,GACZ,kBACA,SAAS,GACP,IAAU,OAAS,GAAK,EAC5B,KAAM,GAAO,EAAQ,QACrB,GAAI,IAAQ,EACZ,EACE,KAAS,EAAY,CAAC,EAAS,QACxB,IAAS,GAAK,IAAS,EAAK,OAAS,GAAK,GAAW,EAAM,GAAO,IAC3E,MAAO,IAET,YAA+B,EAAa,EAAM,CAChD,GAAI,CACF,QACA,cACA,OACA,OACA,kBACA,YACA,YACA,aACA,UAAW,GAAO,IAChB,EACA,GAAY,GAChB,GAAI,EAAM,MAAQ,EAAU,CAE1B,GADA,IAAQ,GAAU,GACd,KAAc,GAChB,GAAY,WAEZ,GAAY,GAAqB,EAAa,CAC5C,cAAe,GACf,OAAQ,EACR,UAAW,GACX,oBAEE,GAAS,IAAY,EAAO,IAAY,GAAY,GAAI,CAC1D,KAAM,IAAM,GAAY,EAClB,GAAS,GAAW,EACpB,GAAS,GAAY,IAAS,IAChC,KAAW,GACb,GAAY,GAEZ,GAAY,GAAS,GAAM,GAAS,GAAS,EAI/C,GAAmB,EAAa,KAClC,IAAY,IA2BhB,GAxBI,EAAM,MAAQ,GAChB,KAAQ,GAAU,GACd,KAAc,GAChB,GAAY,GAEZ,IAAY,GAAqB,EAAa,CAC5C,cAAe,GACf,OAAQ,EACR,oBAEE,GAAQ,GAAY,EAAO,IAC7B,IAAY,GAAqB,EAAa,CAC5C,cAAe,GAAY,EAAO,EAClC,OAAQ,EACR,sBAIF,GAAmB,EAAa,KAClC,IAAY,KAKZ,IAAgB,OAAQ,CAC1B,KAAM,IAAU,GAAM,GAAY,GAC9B,EAAM,MAAQ,IAChB,KAAQ,GAAU,GACd,GAAY,IAAS,EAAO,EAC9B,IAAY,GAAqB,EAAa,CAC5C,cAAe,GACf,oBAEE,GAAQ,GAAe,GAAW,EAAM,KAC1C,IAAY,GAAqB,EAAa,CAC5C,cAAe,GAAY,GAAY,EAAO,EAC9C,sBAGK,GACT,IAAY,GAAqB,EAAa,CAC5C,cAAe,GAAY,GAAY,EAAO,EAC9C,qBAGA,GAAe,GAAW,EAAM,KAClC,IAAY,KAGZ,EAAM,MAAQ,IAChB,KAAQ,GAAU,GACd,GAAY,IAAS,EACvB,IAAY,GAAqB,EAAa,CAC5C,cAAe,GACf,UAAW,GACX,oBAEE,GAAQ,GAAe,GAAW,EAAM,KAC1C,IAAY,GAAqB,EAAa,CAC5C,cAAe,GAAa,GAAO,GAAY,GAC/C,UAAW,GACX,sBAGK,GACT,IAAY,GAAqB,EAAa,CAC5C,cAAe,GAAa,GAAO,GAAY,GAC/C,UAAW,GACX,qBAGA,GAAe,GAAW,EAAM,KAClC,IAAY,KAGhB,KAAM,IAAU,GAAM,GAAW,KAAU,GACvC,GAAmB,EAAa,KAClC,CAAI,GAAQ,GACV,GAAY,EAAM,MAAQ,GAAa,GAAW,GAAqB,EAAa,CAClF,cAAe,GAAY,GAAY,EAAO,EAC9C,oBAGF,GAAY,IAIlB,MAAO,IAIT,YAAsB,EAAO,EAAM,EAAO,CACxC,KAAM,GAAU,GAChB,GAAI,GAAa,EACjB,SAAM,QAAQ,CAAC,EAAO,IAAU,CAC9B,GAAI,CACF,SACA,WACE,EACA,GAAQ,EAKZ,GAAI,IAAa,GAIjB,IAHI,GACF,GAAa,GAER,CAAC,IAAY,CAClB,KAAM,IAAc,GACpB,OAAS,IAAI,EAAG,GAAI,GAAO,KACzB,OAAS,IAAI,EAAG,GAAI,GAAQ,KAC1B,GAAY,KAAK,EAAa,GAAI,GAAI,GAGtC,EAAa,EAAO,IAAS,GAAQ,GAAY,MAAM,IAAQ,EAAQ,KAAS,MAClF,IAAY,QAAQ,IAAQ,CAC1B,EAAQ,IAAQ,IAElB,GAAa,IAEb,OAMC,CAAC,GAAG,GAIb,YAA8B,EAAO,EAAO,EAAS,EAAM,EAAQ,CACjE,GAAI,IAAU,GAAI,MAAO,GACzB,KAAM,GAAiB,EAAQ,QAAQ,GACjC,EAAW,EAAM,GACvB,OAAQ,OACD,KACH,MAAO,OACJ,KACH,MAAK,GAGE,EAAiB,EAAS,MAAQ,EAFhC,MAGN,KACH,MAAK,GAGE,EAAkB,GAAS,OAAS,GAAK,EAFvC,MAGN,KACH,MAAO,GAAQ,YAAY,IAKjC,YAAwB,EAAS,EAAS,CACxC,MAAO,GAAQ,QAAQ,CAAC,EAAO,IAAc,EAAQ,SAAS,GAAS,CAAC,GAAa,IAEvF,YAAoB,EAAM,EAAO,EAAiB,CAChD,GAAI,EACF,MAAO,GAAgB,SAAS,GAElC,KAAM,GAAU,EAAK,GACrB,MAAO,IAAW,MAAQ,EAAQ,aAAa,aAAe,EAAQ,aAAa,mBAAqB,OAG1G,GAAI,IAAQ,EACZ,YAAsB,EAAI,EAAS,CAC7B,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,gBAAgB,GAChB,iBAAiB,GACjB,OAAO,IACL,EACJ,GAAkB,qBAAqB,IACvC,KAAM,GAAO,IAAM,GAAM,KAAO,OAAS,EAAG,MAAM,CAChD,kBAEE,EACF,IAEA,GAAQ,sBAAsB,GAIlC,GAAI,IAAQ,MAAO,WAAa,YAAc,kBAAkB,YAEhE,YAAgC,EAAG,EAAG,CACpC,KAAM,GAAW,EAAE,wBAAwB,GAC3C,MAAI,GAAW,KAAK,6BAA+B,EAAW,KAAK,+BAC1D,GAEL,EAAW,KAAK,6BAA+B,EAAW,KAAK,2BAC1D,EAEF,EAET,YAAsB,EAAM,EAAM,CAChC,GAAI,EAAK,OAAS,EAAK,KACrB,MAAO,GAET,SAAW,CAAC,EAAK,IAAU,GAAK,UAC9B,GAAI,IAAU,EAAK,IAAI,GACrB,MAAO,GAGX,MAAO,GAET,KAAM,IAAmC,gBAAoB,CAC3D,SAAU,IAAM,GAChB,WAAY,IAAM,GAClB,IAAkB,GAAI,KACtB,YAAa,CACX,QAAS,MAOb,YAAsB,EAAO,CAC3B,KAAM,CACJ,WACA,cACA,aACE,EACE,CAAC,EAAK,GAAU,WAAe,IAAM,GAAI,MACzC,EAAW,cAAkB,IAAQ,CACzC,EAAO,IAAW,GAAI,KAAI,IAAS,IAAI,GAAM,QAC5C,IACG,GAAa,cAAkB,IAAQ,CAC3C,EAAO,IAAW,CAChB,KAAM,IAAM,GAAI,KAAI,IACpB,UAAI,OAAO,IACJ,MAER,IACH,UAAM,IAAM,CACV,KAAM,IAAS,GAAI,KAAI,GAEvB,MADoB,KAAK,GAAO,QAAQ,KAAK,IACvC,QAAQ,CAAC,GAAM,KAAU,CAC7B,GAAO,IAAI,GAAM,MAEd,GAAa,EAAK,KACrB,EAAO,KAER,CAAC,IACgB,gBAAoB,GAAoB,SAAU,CACpE,MAAO,UAAc,IAAO,EAC1B,WACA,cACA,MACA,cACA,cACE,CAAC,EAAU,GAAY,EAAK,EAAa,KAC5C,GAOL,YAAqB,EAAO,CACtB,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,SACE,EACE,CACJ,WACA,aACA,MACA,cACA,aACE,aAAiB,IACf,CAAC,GAAS,IAAY,WAAe,MACrC,GAAe,SAAa,MAC5B,GAAM,cAAkB,IAAQ,CAEpC,GADA,GAAa,QAAU,GACnB,KAAY,MACd,GAAY,QAAQ,IAAW,GAC3B,GAAW,CACb,GAAI,IACJ,KAAM,IAAiB,IAAU,OACjC,EAAU,QAAQ,IAAW,GAAiB,EAAS,IAAoB,IAAQ,KAAO,OAAS,GAAK,cAAgB,KAAO,GAAoB,OAGtJ,CAAC,GAAS,EAAa,EAAW,IACrC,UAAM,IAAM,CACV,KAAM,IAAO,GAAa,QAC1B,GAAI,GACF,SAAS,IACF,IAAM,CACX,EAAW,MAGd,CAAC,EAAU,IACd,GAAM,IAAM,CACV,KAAM,IAAQ,GAAa,QAAU,EAAI,IAAI,GAAa,SAAW,KACjE,IAAS,MACX,GAAS,KAEV,CAAC,IACG,UAAc,IAAO,EAC1B,OACA,MAAO,IAAkB,KACvB,CAAC,GAAS,KAGhB,YAAmB,EAAQ,EAAe,CACxC,MAAI,OAAO,IAAW,WACb,EAAO,GAEZ,EACkB,eAAmB,EAAQ,GAE7B,gBAAoB,MAAO,GAEjD,KAAM,IAAgC,gBAAoB,CACxD,YAAa,EACb,WAAY,IAAM,KAEd,GAAiB,CAAC,GAAY,IAC9B,GAAe,CAAC,EAAU,GAC1B,GAAU,CAAC,GAAG,GAAgB,GAAG,IAWjC,GAAyB,aAAiB,SAAmB,EAAO,EAAc,CACtF,KAAM,CACJ,SACA,cAAc,OACd,OAAO,GACP,OAAO,EACP,mBACA,YAAa,GACb,WAAY,GACZ,aACA,SAAQ,MACL,IACD,EACE,CAAC,GAAqB,IAA0B,WAAe,GAC/D,GAAc,IAAoD,GAClE,GAAa,GAAe,IAA0D,IACtF,GAAc,SAAa,IAC3B,GAAqB,GAAU,MAAO,IAAW,WAAa,EAAO,MAAQ,GAC7E,GAAe,UAAc,IAAO,EACxC,eACA,gBACE,CAAC,GAAa,KACZ,GAAS,EAAO,EACtB,YAAuB,GAAO,CAC5B,GAAI,CAAC,GAAQ,SAAS,GAAM,KAAM,OAClC,GAAI,IAAY,GAChB,KAAM,IAAW,GAAY,GAAa,IACpC,GAAW,GAAY,GAAa,IAC1C,GAAI,GAAQ,CACV,KAAM,IAAQ,IAAa,MAAM,KAAK,CACpC,OAAQ,GAAY,QAAQ,QAC3B,IAAO,EACR,MAAO,EACP,OAAQ,KAIJ,GAAU,GAAa,GAAO,EAAM,IACpC,GAAe,GAAQ,UAAU,IAAS,IAAS,MAAQ,CAAC,GAAW,GAAY,QAAS,GAAO,KAEnG,GAAe,GAAQ,OAAO,CAAC,GAAY,GAAO,KAAc,IAAS,MAAQ,CAAC,GAAW,GAAY,QAAS,GAAO,IAAmB,GAAY,GAAY,IAC1K,GAAY,GAAQ,GAAsB,CACxC,QAAS,GAAQ,IAAI,IAAa,GAAY,GAAY,QAAQ,IAAa,OAC9E,CACD,SACA,cACA,OACA,OAGA,gBAAiB,GAAe,CAAC,GAAI,IAAmB,GAAY,QAAQ,IAAI,CAAC,GAAG,KAAU,GAAW,GAAY,QAAS,IAAS,GAAQ,QAAa,QAAY,IACxK,SAAU,GACV,SAAU,GACV,UAAW,GAAqB,GAAc,GAAW,GAAW,GAAa,GAAO,GAAS,EAIjG,GAAM,MAAQ,EAAa,KAAO,GAAM,MAAQ,GAAc,KAAO,SAGzE,KAAM,IAAY,CAChB,WAAY,CAAC,IACb,SAAU,CAAC,GACX,KAAM,CAAC,GAAa,IACpB,GACI,GAAc,CAClB,WAAY,CAAC,IACb,SAAU,CAAC,GACX,KAAM,CAAC,GAAY,IACnB,GACI,GAAgB,GAAS,GAAU,CACvC,WAAY,GACZ,SAAU,GACV,KAAM,IACN,GACE,KAAc,IAAe,CAAC,GAAG,GAAW,GAAG,IAAa,SAAS,GAAM,MAC7E,CAAI,GAAQ,KAAc,IAAY,GAAU,SAAS,GAAM,KAC7D,GAAY,GACH,GAAQ,KAAc,IAAY,GAAY,SAAS,GAAM,KACtE,GAAY,GAEZ,GAAY,GAAqB,GAAa,CAC5C,cAAe,GACf,UAAW,GAAY,SAAS,GAAM,KACtC,sBAIF,KAAc,IAAe,CAAC,GAAmB,GAAa,KAChE,IAAM,kBACF,GAAc,SAAS,GAAM,MAC/B,GAAM,iBAER,GAAW,IAGX,eAAe,IAAM,CACnB,GAAa,GAAY,QAAQ,QAIvC,KAAM,IAAgB,IACjB,MACA,GACH,IAAK,EACL,mBAAoB,IAAgB,OAAS,OAAY,EACzD,UAAU,GAAG,CACX,GAAS,WAAa,MAAQ,GAAS,UAAU,IACjD,GAAmB,WAAa,MAAQ,GAAmB,UAAU,IACrE,GAAc,MAGlB,MAAoB,iBAAoB,GAAiB,SAAU,CACjE,MAAO,IACO,gBAAoB,GAAc,CAChD,YAAa,IACZ,GAAU,EAAQ,QAKjB,GAA6B,aAAiB,SAAuB,EAAO,EAAc,CAC9F,KAAM,CACJ,YACG,GACD,EACE,EAAqB,GAAU,MAAO,IAAW,WAAa,EAAO,MAAQ,GAC7E,CACJ,cACA,eACE,aAAiB,IACf,CACJ,OACA,UACE,KACE,GAAY,GAAa,CAAC,GAAK,EAAc,EAAmB,MAChE,GAAW,IAAgB,GAC3B,GAAgB,IACjB,KACA,EACH,IAAK,GACL,SAAU,GAAW,EAAI,GACzB,cAAe,GAAW,GAAK,OAC/B,QAAQ,GAAG,CACT,EAAS,SAAW,MAAQ,EAAS,QAAQ,IAC7C,EAAmB,SAAW,MAAQ,EAAmB,QAAQ,IACjE,GAAW,MAGf,MAAO,IAAU,EAAQ,MAG3B,aAAoB,CAClB,UAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAU,EAAQ,CAClE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,GAAI,GAAS,UAAU,GACvB,OAAS,KAAO,GACV,OAAO,UAAU,eAAe,KAAK,EAAQ,IAC/C,GAAO,GAAO,EAAO,IAI3B,MAAO,IAEF,GAAS,MAAM,KAAM,WAG9B,GAAI,IAAwB,GACxB,GAAQ,EACZ,KAAM,IAAQ,IAEd,eAAiB,KAAK,SAAS,SAAS,IAAI,MAAM,EAAG,GAAK,KAC1D,aAAyB,CACvB,KAAM,CAAC,EAAI,GAAS,WAAe,IAAM,GAAwB,KAAU,QAC3E,UAAM,IAAM,CACN,GAAM,MACR,EAAM,OAGP,IACH,YAAgB,IAAM,CACpB,GAAwB,IACvB,IACI,EAUT,KAAM,IAAQ,EARe,OAQD,GAE5B,GAAI,IAIJ,aAAgB,CAEd,OADI,GACK,EAAO,UAAU,OAAQ,EAAW,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IACnF,EAAS,GAAQ,UAAU,GAE7B,KAAM,GAAU,gBAAkB,EAAS,KAAK,KAChD,GAAI,CAAG,IAAiB,KAAkB,MAAQ,EAAe,IAAI,IAAW,CAC9E,GAAI,GACH,GAAkB,KAAkB,MAAQ,EAAgB,IAAI,GACjE,QAAQ,KAAK,IAGjB,aAAiB,CAEf,OADI,GACK,EAAQ,UAAU,OAAQ,EAAW,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACxF,EAAS,GAAS,UAAU,GAE9B,KAAM,GAAU,gBAAkB,EAAS,KAAK,KAChD,GAAI,CAAG,IAAkB,KAAkB,MAAQ,EAAgB,IAAI,IAAW,CAChF,GAAI,GACH,GAAkB,KAAkB,MAAQ,EAAgB,IAAI,GACjE,QAAQ,MAAM,IAQlB,KAAM,IAA6B,aAAiB,SAAuB,EAAO,EAAK,CACrF,KAAM,CACJ,QAAS,CACP,YACA,SAAU,CACR,YAEF,eAAgB,CACd,UAGJ,QAAQ,GACR,UAAS,EACT,aAAY,EACZ,eAAc,EACd,gBACA,UACA,KACA,MAAO,CACL,gBACG,IACD,MACD,IACD,EAME,GAAa,KACnB,GAAI,CAAC,EACH,MAAO,MAKT,KAAM,IAAsB,GAAc,EACpC,GAAkB,GAAsB,EACxC,GAAO,EAAQ,EAAK,IAAY,GAAK,GACrC,GAAO,GAAS,EAAI,GAAY,EAChC,CAAC,GAAM,IAAa,EAAU,MAAM,KACpC,GAAQ,GAAS,MAAM,GACvB,GAAgB,CAAC,CAAC,GAClB,GAAiB,KAAS,OAAS,KAAS,SAC5C,GAAc,IAAgB,KAAc,MAAQ,SAAW,MACrE,GAAI,IAAc,IAAgB,KAAc,MAAQ,QAAU,OAC9D,IAAgB,IAClB,IAAc,KAAc,MAAQ,OAAS,SAE/C,KAAM,IAAU,IAAS,KAAO,OAAS,EAAM,IAAM,KAAO,IAAgB,EAAM,EAAI,GAChF,GAAU,IAAS,KAAO,OAAS,EAAM,IAAM,KAAO,IAAgB,EAAM,EAAI,GAChF,GAAS,IAAK,OAAU,MAAO,GAAU,MAAQ,GAAQ,IAAQ,IAAO,IAAS,KAAU,MAAO,EAAQ,EAAI,IAAM,GAAS,IAAM,GAAO,IAAO,IAAS,KAAS,KACnK,GAAW,CACf,IAAK,GAAgB,iBAAmB,GACxC,KAAM,GAAgB,gBAAkB,iBACxC,OAAQ,GAAgB,GAAK,iBAC7B,MAAO,GAAgB,iBAAmB,iBAC1C,IACF,MAAoB,iBAAoB,MAAO,GAAS,GAAI,GAAM,CAChE,cAAe,GACf,IAAK,EACL,MAAO,GAAgB,EAAQ,EAAQ,GACvC,OAAQ,EACR,QAAS,OAAS,EAAQ,IAAO,IAAS,EAAQ,GAAS,GAC3D,MAAO,CACL,SAAU,WACV,cAAe,QACd,IAAc,IACd,IAAc,IACd,IAAO,IAAkB,GAAgB,OAAS,eAAiB,GAAsB,EAAI,MAC9F,UAAW,GAAK,GAAY,KAAgC,OACzD,MAEH,GAAsB,GAAkB,gBAAoB,OAAQ,CACtE,SAAU,QAAU,GAAa,IACjC,KAAM,OACN,OAAQ,GAGR,YAAa,GAAuB,IAAI,EAAI,GAC5C,EAAG,KACY,gBAAoB,OAAQ,CAC3C,OAAQ,IAAuB,CAAC,GAAI,GAAK,KAAO,OAChD,EAAG,KACY,gBAAoB,WAAY,CAC/C,GAAI,IACU,gBAAoB,OAAQ,CAC1C,EAAG,CAAC,GACJ,EAAG,GAAmB,IAAgB,GAAK,GAC3C,MAAO,EAAQ,GACf,OAAQ,QAIZ,aAAwB,CACtB,KAAM,GAAM,GAAI,KAChB,MAAO,CACL,KAAK,EAAO,EAAM,CAChB,GAAI,GACH,GAAW,EAAI,IAAI,KAAW,MAAQ,EAAS,QAAQ,GAAW,EAAQ,KAE7E,GAAG,EAAO,EAAU,CAClB,EAAI,IAAI,EAAO,CAAC,GAAI,EAAI,IAAI,IAAU,GAAK,KAE7C,IAAI,EAAO,EAAU,CACnB,GAAI,GACJ,EAAI,IAAI,EAAS,IAAY,EAAI,IAAI,KAAW,KAAO,OAAS,EAAU,OAAO,GAAK,IAAM,KAAc,MAKhH,KAAM,IAAmC,gBAAoB,MACvD,GAAmC,gBAAoB,MAMvD,GAA0B,IAAM,CACpC,GAAI,GACJ,MAAS,IAAoB,aAAiB,MAAyB,KAAO,OAAS,EAAkB,KAAO,MAM5G,GAAkB,IAAM,aAAiB,IAM/C,YAA2B,EAAgB,CACzC,KAAM,GAAK,KACL,EAAO,KACP,EAAgB,KAChB,EAAW,GAAkB,EACnC,UAAM,IAAM,CACV,KAAM,GAAO,CACX,KACA,YAEF,UAAQ,MAAQ,EAAK,QAAQ,GACtB,IAAM,CACX,GAAQ,MAAQ,EAAK,WAAW,KAEjC,CAAC,EAAM,EAAI,IACP,EAOT,YAAsB,EAAO,CAC3B,KAAM,CACJ,WACA,MACE,EACE,EAAW,KACjB,MAAoB,iBAAoB,GAAoB,SAAU,CACpE,MAAO,UAAc,IAAO,EAC1B,KACA,aACE,CAAC,EAAI,KACR,GAaL,YAAsB,EAAO,CAC3B,KAAM,CACJ,YACE,EACE,EAAW,SAAa,IACxB,EAAU,cAAkB,GAAQ,CACxC,EAAS,QAAU,CAAC,GAAG,EAAS,QAAS,IACxC,IACG,EAAa,cAAkB,GAAQ,CAC3C,EAAS,QAAU,EAAS,QAAQ,OAAO,IAAK,KAAM,IACrD,IACG,EAAS,WAAe,IAAM,MAAgB,GACpD,MAAoB,iBAAoB,GAAoB,SAAU,CACpE,MAAO,UAAc,IAAO,EAC1B,WACA,UACA,aACA,WACE,CAAC,EAAS,EAAY,KACzB,GAGL,YAAyB,EAAM,CAC7B,MAAO,oBAAsB,EAG/B,YAAsB,EAAO,CAC3B,KAAM,GAAM,aAAO,GACnB,UAAM,IAAM,CACV,EAAI,QAAU,IAET,EAGT,KAAM,IAAqC,GAAgB,gBAC3D,YAAkB,EAAO,EAAM,EAAa,CAC1C,MAAI,IAAe,CAAC,GAAuB,GAClC,EAEL,MAAO,IAAU,SACZ,EAEF,GAAS,KAAO,OAAS,EAAM,GAOxC,YAAkB,EAAS,EAAO,CAC5B,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,eACA,UACA,SACA,SAAU,CACR,eACA,cAEA,EACE,CACJ,WAAU,GACV,SAAQ,EACR,eAAc,KACd,aAAY,GACZ,UAAS,EACT,QAAO,IACL,EACE,GAAO,KACP,GAAW,KACX,GAAiB,GAAa,IAC9B,GAAW,GAAa,IACxB,GAAiB,WACjB,GAAa,SAAa,IAC1B,GAAa,WACb,GAAiB,SAAa,IAC9B,GAAoB,SAAa,IACjC,GAAoC,SAAa,IACjD,GAAqB,SAAa,IAAM,IACxC,GAAc,cAAkB,IAAM,CAC1C,GAAI,IACJ,KAAM,IAAQ,IAAwB,EAAQ,QAAQ,YAAc,KAAO,OAAS,GAAsB,KAC1G,MAAQ,KAAQ,KAAO,OAAS,GAAK,SAAS,WAAa,KAAS,aACnE,CAAC,IAIJ,YAAgB,IAAM,CACpB,GAAI,CAAC,GACH,OAEF,YAAsB,GAAM,CAC1B,GAAI,CACF,SACE,GACC,IACH,cAAa,GAAW,SACxB,aAAa,GAAe,SAC5B,GAAkB,QAAU,IAGhC,SAAO,GAAG,aAAc,IACjB,IAAM,CACX,EAAO,IAAI,aAAc,MAE1B,CAAC,GAAS,IACb,YAAgB,IAAM,CACpB,GAAI,CAAC,IAAW,CAAC,GAAe,SAAW,CAAC,EAC1C,OAEF,YAAiB,GAAO,CAClB,MACF,EAAa,GAAO,GAAO,SAG/B,KAAM,IAAO,GAAY,IAAU,gBACnC,UAAK,iBAAiB,aAAc,IAC7B,IAAM,CACX,GAAK,oBAAoB,aAAc,MAExC,CAAC,GAAU,EAAM,EAAc,GAAS,GAAgB,KAC3D,KAAM,IAAiB,cAAkB,SAAU,GAAO,GAAe,GAAQ,CAC3E,KAAkB,QACpB,IAAgB,IAEd,KAAW,QACb,IAAS,SAEX,KAAM,IAAa,GAAS,GAAS,QAAS,QAAS,GAAe,SAClE,IAAc,CAAC,GAAW,QAC5B,cAAa,GAAW,SACxB,GAAW,QAAU,OAAO,WAAW,IAAM,EAAa,GAAO,GAAO,IAAS,KACxE,IACT,cAAa,GAAW,SACxB,EAAa,GAAO,GAAO,MAE5B,CAAC,GAAU,IACR,GAA0B,GAAe,IAAM,CACnD,GAAmB,UACnB,GAAW,QAAU,SAEjB,GAAqB,GAAe,IAAM,CAC9C,GAAI,GAAkC,QAAS,CAC7C,KAAM,IAAO,GAAY,IAAU,KACnC,GAAK,MAAM,cAAgB,GAC3B,GAAK,gBAAgB,IACrB,GAAkC,QAAU,MAOhD,mBAAgB,IAAM,CACpB,GAAI,CAAC,GACH,OAEF,aAAgC,CAC9B,MAAO,GAAQ,QAAQ,UAAY,CAAC,QAAS,aAAa,SAAS,EAAQ,QAAQ,UAAU,MAAQ,GAEvG,YAAsB,GAAO,CAG3B,GAFA,aAAa,GAAW,SACxB,GAAkB,QAAU,GACxB,IAAa,CAAC,GAAuB,GAAe,UAAY,GAAS,GAAK,CAAC,GAAS,GAAS,QAAS,QAC5G,OAEF,KAAM,IAAY,GAAS,GAAS,QAAS,OAAQ,GAAe,SAChE,GACF,GAAW,QAAU,OAAO,WAAW,IAAM,CAC3C,EAAa,GAAM,GAAO,UACzB,IAEH,EAAa,GAAM,GAAO,SAG9B,YAAsB,GAAO,CAC3B,GAAI,KAAwB,OAC5B,GAAmB,UACnB,KAAM,IAAM,GAAY,IAExB,GADA,aAAa,GAAe,SACxB,GAAe,SAAW,EAAQ,QAAQ,gBAAiB,CAExD,GACH,aAAa,GAAW,SAE1B,GAAW,QAAU,GAAe,QAAQ,IACvC,EAAQ,QAAQ,gBACnB,QACA,EAAG,GAAM,QACT,EAAG,GAAM,QACT,SAAU,CACR,KACA,KACA,GAAe,GAAO,GAAM,mBAGhC,KAAM,IAAU,GAAW,QAC3B,GAAI,iBAAiB,YAAa,IAClC,GAAmB,QAAU,IAAM,CACjC,GAAI,oBAAoB,YAAa,KAEvC,OAOE,IAD+B,UAAY,QAAU,CAAC,GAAS,GAAU,GAAM,eAAiB,KAElG,GAAe,IAOnB,YAA4B,GAAO,CAC7B,MACA,CAAC,EAAQ,QAAQ,iBACrB,GAAe,SAAW,MAAQ,GAAe,QAAQ,IACpD,EAAQ,QAAQ,gBACnB,QACA,EAAG,GAAM,QACT,EAAG,GAAM,QACT,SAAU,CACR,KACA,KACA,GAAe,OAEhB,IAEL,GAAI,EAAU,GAAe,CAC3B,KAAM,IAAM,EACZ,UAAQ,GAAI,iBAAiB,aAAc,IAC3C,IAAY,MAAQ,GAAS,iBAAiB,aAAc,IAC5D,IAAQ,GAAI,iBAAiB,YAAa,GAAc,CACtD,KAAM,KAER,GAAI,iBAAiB,aAAc,IACnC,GAAI,iBAAiB,aAAc,IAC5B,IAAM,CACX,GAAQ,GAAI,oBAAoB,aAAc,IAC9C,IAAY,MAAQ,GAAS,oBAAoB,aAAc,IAC/D,IAAQ,GAAI,oBAAoB,YAAa,IAC7C,GAAI,oBAAoB,aAAc,IACtC,GAAI,oBAAoB,aAAc,OAGzC,CAAC,EAAc,GAAU,GAAS,EAAS,GAAW,GAAQ,GAAM,GAAgB,GAAyB,GAAoB,EAAc,EAAM,GAAM,GAAU,GAAgB,IAMxL,GAAM,IAAM,CACV,GAAI,IACJ,GAAI,EAAC,IAGD,GAAS,IAAwB,GAAe,UAAY,MAAQ,GAAsB,UAAU,oBAAsB,KAAe,CAC3I,KAAM,IAAO,GAAY,IAAU,KAInC,GAHA,GAAK,aAAa,GAAuB,IACzC,GAAK,MAAM,cAAgB,OAC3B,GAAkC,QAAU,GACxC,EAAU,IAAiB,GAAU,CACvC,GAAI,IACJ,KAAM,IAAM,EACN,GAAiB,IAAQ,MAAS,IAAwB,GAAK,SAAS,QAAQ,KAAK,IAAQ,GAAK,KAAO,MAAc,MAAS,IAAwB,GAAsB,UAAY,KAAO,OAAS,GAAsB,SAAS,SAC/O,MAAI,KACF,IAAe,MAAM,cAAgB,IAEvC,GAAI,MAAM,cAAgB,OAC1B,GAAS,MAAM,cAAgB,OACxB,IAAM,CACX,GAAI,MAAM,cAAgB,GAC1B,GAAS,MAAM,cAAgB,OAIpC,CAAC,GAAS,EAAM,GAAU,GAAU,EAAc,GAAM,GAAgB,KAC3E,GAAM,IAAM,CACL,GACH,IAAe,QAAU,OACzB,KACA,OAED,CAAC,EAAM,GAAyB,KACnC,YAAgB,IACP,IAAM,CACX,KACA,aAAa,GAAW,SACxB,aAAa,GAAe,SAC5B,MAED,CAAC,GAAS,EAAc,GAAyB,KAC7C,UAAc,IAAM,CACzB,GAAI,CAAC,GACH,MAAO,GAET,YAAuB,GAAO,CAC5B,GAAe,QAAU,GAAM,YAEjC,MAAO,CACL,UAAW,CACT,cAAe,GACf,eAAgB,GAChB,YAAY,GAAO,CACjB,aAA2B,CACpB,GAAkB,SACrB,EAAa,GAAM,GAAM,YAAa,SAGtC,IAAa,CAAC,GAAuB,GAAe,UAGpD,GAAQ,KAAW,GAGvB,cAAa,GAAe,SACxB,GAAe,UAAY,QAC7B,KAEA,GAAe,QAAU,OAAO,WAAW,GAAiB,OAIlE,SAAU,CACR,cAAe,CACb,aAAa,GAAW,UAE1B,aAAa,GAAO,CAClB,GAAe,GAAM,YAAa,QAIvC,CAAC,GAAS,GAAW,EAAM,GAAQ,EAAc,KAGtD,KAAM,IAAO,IAAM,GACb,GAAyC,gBAAoB,CACjE,MAAO,EACP,aAAc,EACd,UAAW,EACX,UAAW,KACX,aAAc,GACd,SAAU,GACV,eAAgB,KAOZ,GAAuB,IAAM,aAAiB,IAMpD,YAA4B,EAAO,CACjC,KAAM,CACJ,WACA,QACA,YAAY,GACV,EACE,CAAC,EAAO,GAAY,aAAiB,CAAC,GAAM,KAAU,KACvD,MACA,KACD,CACF,QACA,YACA,aAAc,EACd,UAAW,KACX,eAAgB,KAEZ,EAAsB,SAAa,MACnC,GAAe,cAAkB,IAAa,CAClD,EAAS,CACP,gBAED,IACH,UAAM,IAAM,CACN,EAAM,UACJ,EAAoB,UAAY,KAClC,EAAoB,QAAU,EAAM,UAC1B,EAAM,gBAChB,EAAS,CACP,eAAgB,KAIhB,GAAM,gBACR,EAAS,CACP,eAAgB,KAGpB,EAAoB,QAAU,OAE/B,CAAC,EAAM,UAAW,EAAM,iBACP,gBAAoB,GAA0B,SAAU,CAC1E,MAAO,UAAc,IAAO,KACvB,EACH,WACA,kBACE,CAAC,EAAO,MACX,GAOL,YAAuB,EAAS,EAAS,CACnC,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,OACA,eACA,cACE,EACE,CACJ,GAAI,GACF,EACE,EAAK,GAA8B,EACnC,GAAe,KACf,CACJ,aACA,gBACA,gBACA,YACA,cACE,GACJ,UAAM,IAAM,CACN,CAAC,IACL,IAAS,CACP,MAAO,CACL,KAAM,EACN,MAAO,GAAS,GAAc,YAG9B,KAAc,GAChB,EAAa,MAEd,CAAC,EAAI,EAAc,GAAU,GAAW,KAC3C,GAAM,IAAM,CACV,aAAiB,CACf,EAAa,IACb,GAAS,CACP,MAAO,GACP,UAAW,OAGf,GAAI,EAAC,IACD,CAAC,GAAQ,KAAc,EAAI,CAC7B,GAAI,GAAW,CACb,KAAM,IAAU,OAAO,WAAW,GAAO,IACzC,MAAO,IAAM,CACX,aAAa,KAGjB,OAED,CAAC,EAAM,GAAU,GAAW,EAAI,EAAc,GAAc,KAC/D,GAAM,IAAM,CACN,KAAiB,IAAQ,CAAC,GAC9B,GAAa,IACZ,CAAC,EAAM,GAAc,IACjB,GAGT,YAAsB,EAAO,EAAI,CAC/B,GAAI,GACJ,GAAI,GAAe,GACf,EAAmB,GAAc,EAAM,KAAK,GAAQ,EAAK,KAAO,KAAQ,KAAO,OAAS,EAAY,SACxG,KAAO,GAAiB,CACtB,KAAM,GAAc,EAAM,KAAK,GAAQ,EAAK,KAAO,GACnD,EAAkB,GAAe,KAAO,OAAS,EAAY,SACzD,GACF,GAAe,EAAa,OAAO,IAGvC,MAAO,GAGT,YAAqB,EAAO,EAAI,CAC9B,GAAI,GAAc,EAAM,OAAO,GAAQ,CACrC,GAAI,GACJ,MAAO,GAAK,WAAa,GAAQ,IAAgB,EAAK,UAAY,KAAO,OAAS,EAAc,QAE9F,EAAkB,EACtB,KAAO,EAAgB,QACrB,EAAkB,EAAM,OAAO,GAAQ,CACrC,GAAI,GACJ,MAAQ,GAAmB,IAAoB,KAAO,OAAS,EAAiB,KAAK,GAAK,CACxF,GAAI,IACJ,MAAO,GAAK,WAAa,EAAE,IAAQ,KAAiB,EAAK,UAAY,KAAO,OAAS,GAAe,UAGxG,EAAc,EAAY,OAAO,GAEnC,MAAO,GAET,YAAwB,EAAO,EAAI,CACjC,GAAI,GACA,EAAW,GACf,WAAqB,EAAQ,EAAO,CAC9B,EAAQ,GACV,GAAgB,EAChB,EAAW,GAGb,GAD6B,EAAO,GAC3B,QAAQ,IAAS,CACxB,EAAY,GAAM,GAAI,EAAQ,KAGlC,SAAY,EAAI,GACT,EAAM,KAAK,GAAQ,EAAK,KAAO,GAKxC,GAAI,IAA0B,GAAI,SAC9B,GAAuC,GAAI,SAC3C,GAAY,GACZ,GAAY,EAChB,KAAM,GAAgB,IAAM,MAAO,cAAgB,aAAe,SAAW,aAAY,UACnF,GAAa,GAAQ,GAAS,GAAK,MAAQ,GAAW,EAAK,aAC3D,GAAkB,CAAC,EAAQ,IAAY,EAAQ,IAAI,GAAU,CACjE,GAAI,EAAO,SAAS,GAClB,MAAO,GAET,KAAM,GAAkB,GAAW,GACnC,MAAI,GAAO,SAAS,GACX,EAEF,OACN,OAAO,GAAK,GAAK,MACpB,YAAgC,EAA0B,EAAM,EAAY,EAAO,CACjF,KAAM,GAAa,yBACb,EAAmB,EAAQ,QAAU,EAAa,cAAgB,KAClE,EAAgB,GAAgB,EAAM,GACtC,GAAiB,GAAI,KACrB,GAAiB,GAAI,KAAI,GACzB,GAAiB,GAClB,GAAU,IACb,IAAU,GAAc,GAAI,UAE9B,KAAM,IAAgB,GAAU,GAChC,EAAc,QAAQ,IACtB,GAAK,GACL,GAAe,QACf,YAAc,GAAI,CACZ,CAAC,IAAM,GAAe,IAAI,KAG9B,IAAe,IAAI,IACnB,GAAG,YAAc,GAAK,GAAG,aAE3B,YAAc,GAAQ,CAChB,CAAC,IAAU,GAAe,IAAI,KAGlC,GAAG,QAAQ,KAAK,GAAO,SAAU,IAAQ,CACvC,GAAI,EAAY,MAAU,SAC1B,GAAI,GAAe,IAAI,IACrB,GAAK,QACA,CACL,KAAM,IAAO,EAAmB,GAAK,aAAa,GAAoB,KAChE,GAAgB,KAAS,MAAQ,KAAS,QAC1C,GAAgB,IAAW,IAAI,KAAS,GAAK,EAC7C,GAAe,IAAc,IAAI,KAAS,GAAK,EACrD,GAAW,IAAI,GAAM,IACrB,GAAc,IAAI,GAAM,IACxB,GAAe,KAAK,IAChB,KAAiB,GAAK,IACxB,GAAwB,IAAI,IAE1B,KAAgB,GAClB,GAAK,aAAa,EAAY,IAE5B,CAAC,IAAiB,GACpB,GAAK,aAAa,EAAkB,WAK5C,YACO,IAAM,CACX,GAAe,QAAQ,IAAW,CAChC,KAAM,IAAgB,IAAW,IAAI,KAAY,GAAK,EAChD,GAAe,IAAc,IAAI,KAAY,GAAK,EACxD,GAAW,IAAI,GAAS,IACxB,GAAc,IAAI,GAAS,IACtB,IACC,EAAC,GAAwB,IAAI,KAAY,GAC3C,GAAQ,gBAAgB,GAE1B,GAAwB,OAAO,KAE5B,IACH,GAAQ,gBAAgB,KAG5B,KACK,IACH,IAAa,GAAI,SACjB,GAAa,GAAI,SACjB,GAA0B,GAAI,SAC9B,GAAY,KAIlB,YAAoB,EAAe,EAAY,EAAO,CAChD,IAAe,QACjB,GAAa,IAEX,IAAU,QACZ,GAAQ,IAEV,KAAM,GAAO,GAAY,EAAc,IAAI,KAC3C,MAAO,IAAuB,EAAc,OAAO,MAAM,KAAK,EAAK,iBAAiB,iBAAkB,EAAM,EAAY,GAG1H,KAAM,IAAqB,IAAO,EAChC,cAAe,GACf,aAIA,MAAO,iBAAmB,YAAc,eAAe,WAAW,SAAS,iBAAmB,OAAS,SAEzG,YAAuB,EAAW,EAAW,CAC3C,KAAM,GAAc,GAAS,EAAW,MACpC,IAAc,QAChB,EAAY,UAEd,KAAM,GAAc,EAAY,QAAQ,GAAc,GAAY,KAElE,MAAO,GADkC,MAAM,EAAc,GACjC,GAE9B,aAA2B,CACzB,MAAO,IAAc,SAAS,KAAM,QAEtC,aAA+B,CAC7B,MAAO,IAAc,SAAS,KAAM,QAEtC,YAAwB,EAAO,EAAW,CACxC,KAAM,GAAmB,GAAa,EAAM,cACtC,EAAgB,EAAM,cAC5B,MAAO,CAAC,GAAiB,CAAC,GAAS,EAAkB,GAEvD,YAA4B,EAAW,CAErC,GADkC,EAAW,MAC5B,QAAQ,GAAW,CAClC,EAAQ,QAAQ,SAAW,EAAQ,aAAa,aAAe,GAC/D,EAAQ,aAAa,WAAY,QAGrC,YAA2B,EAAW,CAEpC,EAD2B,iBAAiB,mBACnC,QAAQ,GAAW,CAC1B,KAAM,GAAW,EAAQ,QAAQ,SACjC,MAAO,GAAQ,QAAQ,SACnB,EACF,EAAQ,aAAa,WAAY,GAEjC,EAAQ,gBAAgB,cAQ9B,KAAM,IAAgB,CACpB,OAAQ,EACR,KAAM,gBACN,OAAQ,MACR,OAAQ,OACR,SAAU,SACV,QAAS,EACT,SAAU,QACV,WAAY,SACZ,MAAO,MACP,IAAK,EACL,KAAM,GAER,GAAI,IACJ,YAA+B,EAAO,CAChC,EAAM,MAAQ,OAChB,GAAM,OACN,aAAa,KAGjB,KAAM,IAA0B,aAAiB,SAAoB,EAAO,EAAK,CAC/E,KAAM,CAAC,EAAM,GAAW,aACxB,GAAM,IACA,OAMF,EAAQ,UAEV,SAAS,iBAAiB,UAAW,IAC9B,IAAM,CACX,SAAS,oBAAoB,UAAW,MAEzC,IACH,KAAM,GAAY,CAChB,MACA,SAAU,EAEV,OACA,cAAe,EAAO,OAAY,IACjC,GAAgB,gBAAiB,GAClC,MAAO,IAET,MAAoB,iBAAoB,OAAQ,GAAS,GAAI,EAAO,MAGhE,GAA6B,gBAAoB,MACjD,GAAoB,GAAgB,UAK1C,YAA+B,EAAO,CAChC,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,KACA,QACE,EACE,EAAW,KACX,EAAgB,KAChB,CAAC,EAAY,GAAiB,WAAe,MAC7C,GAAgB,SAAa,MACnC,UAAM,IACG,IAAM,CACX,GAAc,MAAQ,EAAW,SAIjC,eAAe,IAAM,CACnB,GAAc,QAAU,QAG3B,CAAC,IACJ,GAAM,IAAM,CAKV,GADI,CAAC,GACD,GAAc,QAAS,OAC3B,KAAM,IAAiB,EAAK,SAAS,eAAe,GAAM,KAC1D,GAAI,CAAC,GAAgB,OACrB,KAAM,IAAU,SAAS,cAAc,OACvC,GAAQ,GAAK,EACb,GAAQ,aAAa,GAAM,IAC3B,GAAe,YAAY,IAC3B,GAAc,QAAU,GACxB,EAAc,KACb,CAAC,EAAI,IACR,GAAM,IAAM,CAEV,GADI,CAAC,GACD,GAAc,QAAS,OAC3B,GAAI,IAAY,GAAS,IAAiB,KAAO,OAAS,EAAc,YACpE,IAAa,CAAC,EAAU,KAAY,IAAY,GAAU,SAC9D,GAAY,IAAa,SAAS,KAClC,GAAI,IAAY,KACZ,GACF,IAAY,SAAS,cAAc,OACnC,GAAU,GAAK,EACf,GAAU,YAAY,KAExB,KAAM,IAAU,SAAS,cAAc,OACvC,GAAQ,GAAK,EACb,GAAQ,aAAa,GAAM,IAC3B,GAAY,IAAa,GACzB,GAAU,YAAY,IACtB,GAAc,QAAU,GACxB,EAAc,KACb,CAAC,EAAI,EAAM,EAAU,IACjB,EAUT,YAAwB,EAAO,CAC7B,KAAM,CACJ,WACA,KACA,OAAO,KACP,mBAAmB,IACjB,EACE,EAAa,GAAsB,CACvC,KACA,SAEI,CAAC,EAAmB,IAAwB,WAAe,MAC3D,GAAmB,SAAa,MAChC,GAAkB,SAAa,MAC/B,GAAkB,SAAa,MAC/B,GAAiB,SAAa,MAC9B,GAGN,CAAC,CAAC,GAEF,CAAC,EAAkB,OAEnB,EAAkB,MAAQ,GAAoB,CAAC,CAAE,IAAQ,GAGzD,mBAAgB,IAAM,CACpB,GAAI,CAAC,GAAc,CAAC,GAAoB,GAAqB,MAAQ,EAAkB,MACrF,OAMF,YAAiB,GAAO,CAClB,GAAc,GAAe,KAG/B,CAFiB,GAAM,OAAS,UACD,GAAoB,IACvC,GAKhB,SAAW,iBAAiB,UAAW,GAAS,IAChD,EAAW,iBAAiB,WAAY,GAAS,IAC1C,IAAM,CACX,EAAW,oBAAoB,UAAW,GAAS,IACnD,EAAW,oBAAoB,WAAY,GAAS,MAErD,CAAC,EAAY,EAAkB,GAAqB,KAAO,OAAS,EAAkB,QACrE,gBAAoB,GAAc,SAAU,CAC9D,MAAO,UAAc,IAAO,EAC1B,mBACA,oBACA,mBACA,mBACA,kBACA,aACA,0BACE,CAAC,EAAkB,KACtB,IAAsB,GAA2B,gBAAoB,GAAY,CAClF,YAAa,UACb,IAAK,GACL,QAAS,IAAS,CAChB,GAAI,GAAe,GAAO,GAAa,CACrC,GAAI,IACH,IAAwB,GAAgB,UAAY,MAAQ,GAAsB,YAC9E,CACL,KAAM,IAAe,MAA0B,IAAqB,KAAO,OAAS,EAAkB,KAAK,aAAa,SACxH,IAAgB,MAAQ,GAAa,YAGvC,IAAsB,GAA2B,gBAAoB,OAAQ,CAC/E,YAAa,EAAW,GACxB,MAAO,KACL,GAA2B,oBAAa,EAAU,GAAa,IAAsB,GAA2B,gBAAoB,GAAY,CAClJ,YAAa,UACb,IAAK,GACL,QAAS,IAAS,CAChB,GAAI,GAAe,GAAO,GAAa,CACrC,GAAI,IACH,IAAwB,GAAe,UAAY,MAAQ,GAAsB,YAC7E,CACL,KAAM,IAAe,MAAsB,IAAqB,KAAO,OAAS,EAAkB,KAAK,aAAa,SACpH,IAAgB,MAAQ,GAAa,QACpC,IAAqB,KAAO,OAAS,EAAkB,kBAAqB,IAAqB,MAAgB,EAAkB,aAAa,GAAO,GAAM,mBAKtK,KAAM,IAAmB,IAAM,aAAiB,IAE1C,GAAa,GACnB,GAAI,IAA4B,GAChC,YAAqC,EAAS,CAC5C,GAA4B,GAA0B,OAAO,GAAM,EAAG,aACtE,GAAI,GAAa,EACjB,GAAI,GAAC,GAAc,EAAY,KAAgB,QAC/C,IAAI,CAAC,GAAW,EAAY,MAAuB,CACjD,KAAM,GAAgB,GAAS,EAAY,MAAsB,GAC7D,GACF,GAAa,GAGjB,GAA0B,KAAK,GAC3B,GAA0B,OAAS,IACrC,IAA4B,GAA0B,MAAM,CAAC,MAGjE,aAAuC,CACrC,MAAO,IAA0B,QAAQ,UAAU,KAAK,GAAM,EAAG,aAEnE,KAAM,IAAqC,aAAiB,SAA+B,EAAO,EAAK,CACrG,MAAoB,iBAAoB,SAAU,GAAS,GAAI,EAAO,CACpE,KAAM,SACN,IAAK,EACL,SAAU,GACV,MAAO,QAOX,YAA8B,EAAO,CACnC,KAAM,CACJ,UACA,WACA,WAAW,GACX,QAAQ,CAAC,WACT,OAAQ,EAAU,GAClB,eAAe,EACf,eAAc,GACd,SAAQ,GACR,yBAAwB,GACxB,mBAAkB,IAChB,EACE,CACJ,QACA,QACA,UACA,gBACA,UACA,WACA,SAAU,CACR,gBACA,cAEA,EACE,GAAqB,MAAO,IAAiB,UAAY,EAAe,EAMxE,GAA8B,GAAmB,KAAiB,GAGlE,GAAS,IAAkB,EAAU,GACrC,GAAW,GAAa,GACxB,GAAkB,GAAa,GAC/B,GAAiB,GAAa,IAC9B,GAAO,KACP,GAAgB,KAChB,GAAwB,SAAa,MACrC,GAAsB,SAAa,MACnC,GAAwB,SAAa,IACrC,GAAmB,SAAa,IAChC,GAAiB,IAAiB,KAClC,GAAqB,cAAkB,SAAU,GAAW,CAChE,MAAI,MAAc,QAChB,IAAY,IAEP,GAAY,GAAS,GAAW,MAAwB,IAC9D,CAAC,KACE,GAAsB,cAAkB,IAAa,CACzD,KAAM,IAAU,GAAmB,IACnC,MAAO,IAAS,QAAQ,IAAI,IACtB,IAAgB,KAAS,YACpB,GAEL,IAAY,KAAS,WAChB,GAEF,IACN,OAAO,SAAS,QAClB,CAAC,GAAc,GAAU,GAAU,KACtC,YAAgB,IAAM,CACpB,GAAI,GAAY,CAAC,GAAO,OACxB,YAAmB,GAAO,CACxB,GAAI,GAAM,MAAQ,MAAO,CAEnB,GAAS,GAAU,GAAc,GAAY,OAAe,KAAqB,SAAW,GAAK,CAAC,IACpG,GAAU,IAEZ,KAAM,IAAM,KACN,GAAS,GAAU,IACrB,GAAS,QAAQ,KAAO,aAAe,KAAW,IACpD,IAAU,IACN,GAAM,SACR,GAAa,GAAI,GAAI,OAAS,IAE9B,GAAa,GAAI,KAGjB,GAAS,QAAQ,KAAO,YAAc,KAAW,IAAY,GAAM,UACrE,IAAU,IACV,GAAa,GAAI,MAIvB,KAAM,IAAM,GAAY,IACxB,UAAI,iBAAiB,UAAW,IACzB,IAAM,CACX,GAAI,oBAAoB,UAAW,MAEpC,CAAC,EAAU,GAAc,GAAU,GAAO,GAAU,GAA6B,GAAoB,KACxG,YAAgB,IAAM,CACpB,GAAI,GAAY,CAAC,GAAiB,OAGlC,aAA6B,CAC3B,GAAiB,QAAU,GAC3B,WAAW,IAAM,CACf,GAAiB,QAAU,KAG/B,YAA4B,GAAO,CACjC,KAAM,IAAgB,GAAM,cAC5B,eAAe,IAAM,CACnB,KAAM,IAAuB,CAAE,IAAS,GAAc,KAAkB,GAAS,GAAU,KAAkB,GAAS,GAAe,KAAa,GAAS,IAAiB,KAAO,OAAS,GAAc,WAAY,KAAkB,IAAiB,MAAQ,GAAc,aAAa,GAAgB,iBAAmB,IAAS,IAAY,GAAK,SAAS,QAAS,IAAQ,KAAK,IAAQ,CAC9X,GAAI,IAAe,GACnB,MAAO,IAAU,IAAgB,GAAK,UAAY,KAAO,OAAS,GAAc,SAAS,SAAU,KAAkB,GAAU,IAAiB,GAAK,UAAY,KAAO,OAAS,GAAe,SAAS,aAAc,OACnN,GAAa,GAAK,SAAS,QAAS,IAAQ,KAAK,IAAQ,CAC7D,GAAI,IAAgB,GACpB,MAAS,KAAiB,GAAK,UAAY,KAAO,OAAS,GAAe,SAAS,YAAc,IAAmB,KAAiB,GAAK,UAAY,KAAO,OAAS,GAAe,SAAS,gBAAkB,OAK9M,IAAiB,IAAwB,CAAC,GAAiB,SAE/D,KAAkB,MAChB,IAAsB,QAAU,GAChC,GAAa,GAAO,OAI1B,GAAI,IAAY,EAAc,IAC5B,UAAa,iBAAiB,WAAY,IAC1C,GAAa,iBAAiB,cAAe,IAC7C,CAAC,IAAS,GAAS,iBAAiB,WAAY,IACzC,IAAM,CACX,GAAa,oBAAoB,WAAY,IAC7C,GAAa,oBAAoB,cAAe,IAChD,CAAC,IAAS,GAAS,oBAAoB,WAAY,MAGtD,CAAC,EAAU,GAAc,GAAU,GAAO,GAAQ,GAAM,GAAe,GAAc,KACxF,YAAgB,IAAM,CACpB,GAAI,IACJ,GAAI,EAAU,OAGd,KAAM,IAAc,MAAM,KAAM,KAAiB,MAAS,IAAwB,GAAc,aAAe,KAAO,OAAS,GAAsB,iBAAiB,IAAM,GAAgB,UAAY,OAAS,IACjN,GAAI,GAAU,CACZ,KAAM,IAAiB,CAAC,GAAU,GAAG,GAAa,GAAsB,QAAS,GAAoB,QAAS,GAAS,QAAQ,SAAS,cAAgB,GAA8B,GAAe,MAAM,OAAO,IAAK,IAAK,MACtN,GAAU,IAAS,GAA8B,GAAW,GAAgB,GAAQ,CAAC,IAAU,GAAW,IAChH,MAAO,IAAM,CACX,QAGH,CAAC,EAAU,GAAc,GAAU,GAAO,GAAU,GAAe,GAA6B,KACnG,GAAM,IAAM,CACV,GAAI,GAAY,CAAC,GAAU,OAC3B,KAAM,IAAM,GAAY,IAClB,GAA2B,GAAc,IAG/C,eAAe,IAAM,CACnB,KAAM,IAAoB,GAAoB,IACxC,GAAoB,GAAgB,QACpC,GAAa,OAAO,KAAsB,SAAW,GAAkB,IAAqB,GAAkB,UAAY,GAC1H,GAA+B,GAAS,GAAU,IACpD,CAAC,IAAsB,CAAC,IAAgC,IAC1D,GAAa,GAAW,CACtB,cAAe,KAAc,QAIlC,CAAC,EAAU,GAAM,GAAU,GAAoB,GAAqB,KACvE,GAAM,IAAM,CACV,GAAI,GAAY,CAAC,GAAU,OAC3B,GAAI,IAA2B,GAC/B,KAAM,IAAM,GAAY,IAClB,GAA2B,GAAc,IAE/C,GAAI,IAAY,GADY,QACA,UAC5B,GAA4B,IAI5B,YAAsB,GAAM,CAC1B,GAAI,CACF,QACA,UACA,SACA,WACE,GAUJ,IARE,IAAY,IAEV,KAAW,cAAgB,GAAK,aAAa,SAC/C,GAA4B,GAAK,aAAa,SAE5C,KAAW,SAAW,GAAM,OAAS,cACvC,IAAsB,QAAU,IAE9B,KAAW,iBACf,CAAI,GACF,IAAsB,QAAU,GAChC,GAA2B,IAE3B,GAAsB,QAAU,CAAE,IAAe,KAAU,GAAsB,MAGrF,UAAO,GAAG,aAAc,IACjB,IAAM,CACX,GAAO,IAAI,aAAc,IACzB,KAAM,IAAW,GAAc,IACzB,GAA4B,GAAS,GAAU,KAAa,IAAQ,GAAY,GAAK,SAAS,QAAS,IAAQ,KAAK,IAAQ,CAChI,GAAI,IACJ,MAAO,IAAU,IAAiB,GAAK,UAAY,KAAO,OAAS,GAAe,SAAS,SAAU,MAGnG,KADsD,IAAa,CAAC,QAAS,aAAa,SAAS,GAAU,QACrF,GAAK,aAAa,SAC5C,GAA4B,GAAK,aAAa,SAEhD,KAAM,IAAgB,KAGtB,GAAe,SAAW,CAAC,GAAsB,SAAW,EAAc,KAI1E,MAAkB,IAAY,KAAa,GAAI,KAAO,GAA4B,KAChF,GAAa,GAAe,CAK1B,eAAgB,GAChB,cAAe,OAIpB,CAAC,EAAU,GAAU,GAAgB,GAAS,GAAM,GAAQ,GAAM,KAIrE,GAAM,IAAM,CACV,GAAI,KAAY,CAAC,IACjB,UAAc,qBAAqB,CACjC,SACA,mBACA,QACA,gBACA,UAEK,IAAM,CACX,GAAc,qBAAqB,QAEpC,CAAC,EAAU,GAAe,GAAO,GAAM,GAAc,GAAM,KAC9D,GAAM,IAAM,CACV,GAAI,GAAY,CAAC,IAAY,MAAO,mBAAqB,YAAc,GACrE,OAEF,KAAM,IAAiB,IAAM,CAC3B,KAAM,IAAW,GAAS,aAAa,YACnC,GAAS,QAAQ,SAAS,aAAe,GAAc,GAAY,OAAe,GAAK,aAAa,SAAW,KAAqB,SAAW,EAC7I,KAAa,KACf,GAAS,aAAa,WAAY,KAE3B,KAAa,MACtB,GAAS,aAAa,WAAY,OAGtC,KACA,KAAM,IAAW,GAAI,kBAAiB,IACtC,UAAS,QAAQ,GAAU,CACzB,UAAW,GACX,QAAS,GACT,WAAY,KAEP,IAAM,CACX,GAAS,eAEV,CAAC,EAAU,GAAU,GAAM,GAAU,GAAoB,KAC5D,YAA6B,GAAU,CACrC,MAAI,IAAY,CAAC,IAAyB,CAAC,GAClC,KAEW,gBAAoB,GAAuB,CAC7D,IAAK,KAAa,QAAU,GAAwB,GACpD,QAAS,IAAS,GAAa,GAAO,GAAM,cAC3C,MAAO,KAA0B,SAAW,GAAwB,WAEzE,KAAM,IAAqB,CAAC,GAAY,IAAW,KAAkB,IACrE,MAAoB,iBAAoB,WAAgB,KAAM,IAAmC,gBAAoB,GAAY,CAC/H,YAAa,SACb,IAAK,IAAiB,KAAO,OAAS,GAAc,gBACpD,QAAS,IAAS,CAChB,GAAI,GAAO,CACT,KAAM,IAAM,KACZ,GAAa,EAAM,KAAO,YAAc,GAAI,GAAK,GAAI,GAAI,OAAS,YACzD,IAAiB,MAAQ,GAAc,kBAAoB,GAAc,WAElF,GADA,GAAsB,QAAU,GAC5B,GAAe,GAAO,GAAc,YAAa,CACnD,KAAM,IAAe,MAAqB,GAC1C,IAAgB,MAAQ,GAAa,YAChC,CACL,GAAI,IACH,IAAwB,GAAc,iBAAiB,UAAY,MAAQ,GAAsB,YAItG,CAAC,IAA+B,GAAoB,SAAU,EAAU,GAAoB,OAAQ,IAAmC,gBAAoB,GAAY,CACzK,YAAa,SACb,IAAK,IAAiB,KAAO,OAAS,GAAc,eACpD,QAAS,IAAS,CAChB,GAAI,GACF,GAAa,KAAsB,YAC1B,IAAiB,MAAQ,GAAc,kBAAoB,GAAc,WAIlF,GAHI,IACF,IAAsB,QAAU,IAE9B,GAAe,GAAO,GAAc,YAAa,CACnD,KAAM,IAAe,MAAyB,GAC9C,IAAgB,MAAQ,GAAa,YAChC,CACL,GAAI,IACH,IAAwB,GAAc,gBAAgB,UAAY,MAAQ,GAAsB,aAO3G,KAAM,IAA2B,GAAI,KAO/B,GAA+B,aAAiB,SAAyB,EAAO,EAAK,CACzF,KAAM,CACJ,aAAa,MACV,GACD,EACE,EAAS,KACf,UAAM,IAAM,CACV,GAAI,CAAC,EAAY,OACjB,GAAY,IAAI,GAChB,KAAM,GAAQ,qBAAqB,KAAK,MAClC,GAAY,SAAS,KAAK,MAG1B,GAAc,KADI,MAAM,SAAS,gBAAgB,wBAAwB,MAAQ,SAAS,gBAAgB,WAC/E,cAAgB,eAC3C,GAAiB,OAAO,WAAa,SAAS,gBAAgB,YAC9D,GAAU,GAAU,KAAO,WAAW,GAAU,MAAQ,OAAO,YAC/D,GAAU,GAAU,IAAM,WAAW,GAAU,KAAO,OAAO,YAQnE,GAPA,GAAU,SAAW,SACjB,IACF,IAAU,IAAe,GAAiB,MAKxC,EAAO,CACT,GAAI,IAAuB,GAE3B,KAAM,IAAe,KAAwB,OAAO,iBAAmB,KAAO,OAAS,GAAsB,aAAe,EACtH,GAAc,KAAyB,OAAO,iBAAmB,KAAO,OAAS,GAAuB,YAAc,EAC5H,OAAO,OAAO,GAAW,CACvB,SAAU,QACV,IAAK,CAAE,IAAU,KAAK,MAAM,KAAc,KAC1C,KAAM,CAAE,IAAU,KAAK,MAAM,KAAe,KAC5C,MAAO,MAGX,MAAO,IAAM,CACX,GAAY,OAAO,GACf,GAAY,OAAS,GACvB,QAAO,OAAO,GAAW,CACvB,SAAU,IACT,IAAc,KAEb,GACF,QAAO,OAAO,GAAW,CACvB,SAAU,GACV,IAAK,GACL,KAAM,GACN,MAAO,KAET,OAAO,SAAS,GAAS,QAI9B,CAAC,EAAQ,IACQ,gBAAoB,MAAO,GAAS,CACtD,IAAK,GACJ,EAAM,CACP,MAAO,CACL,SAAU,QACV,SAAU,OACV,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,KACH,EAAK,YAKd,YAAwB,EAAO,CAC7B,MAAO,GAAc,EAAM,SAAW,EAAM,OAAO,UAAY,SAEjE,YAAwB,EAAS,CAC/B,MAAO,IAAkB,GAM3B,YAAkB,EAAS,EAAO,CAC5B,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,eACA,UACA,SAAU,CACR,iBAEA,EACE,CACJ,UAAU,GACV,MAAO,GAAc,QACrB,UAAS,GACT,eAAc,GACd,oBAAmB,IACjB,EACE,GAAiB,WACjB,GAAgB,SAAa,IACnC,MAAO,WAAc,IACd,EACE,CACL,UAAW,CACT,cAAc,GAAO,CACnB,GAAe,QAAU,GAAM,aAEjC,YAAY,GAAO,CAGb,GAAM,SAAW,GAGjB,IAAuB,GAAe,QAAS,KAAS,IAGxD,KAAgB,SAGpB,CAAI,GAAQ,IAAW,GAAQ,QAAQ,UAAY,EAAQ,QAAQ,UAAU,OAAS,YAAc,IAClG,EAAa,GAAO,GAAM,YAAa,SAGvC,IAAM,iBACN,EAAa,GAAM,GAAM,YAAa,aAG1C,QAAQ,GAAO,CACb,GAAI,KAAgB,aAAe,GAAe,QAAS,CACzD,GAAe,QAAU,OACzB,OAEE,GAAuB,GAAe,QAAS,KAAS,IAG5D,CAAI,GAAQ,IAAW,GAAQ,QAAQ,UAAY,EAAQ,QAAQ,UAAU,OAAS,QAAU,IAC9F,EAAa,GAAO,GAAM,YAAa,SAEvC,EAAa,GAAM,GAAM,YAAa,WAG1C,UAAU,GAAO,CAEf,GADe,QAAU,OACrB,KAAM,kBAAoB,CAAC,IAAoB,GAAe,MAG9D,IAAM,MAAQ,KAAO,CAAC,GAAe,IAEvC,IAAM,iBACN,GAAc,QAAU,IAEtB,GAAM,MAAQ,SAEd,EADE,KAAQ,IACU,GAAM,YAAa,WAM7C,QAAQ,GAAO,CACT,GAAM,kBAAoB,CAAC,IAAoB,GAAe,KAAU,GAAe,IAGvF,GAAM,MAAQ,KAAO,GAAc,SACrC,IAAc,QAAU,GAEtB,EADE,KAAQ,IACU,GAAM,YAAa,aAjE5B,GAyEpB,CAAC,EAAS,EAAS,GAAa,GAAa,GAAkB,EAAc,GAAQ,EAAM,IAGhG,YAA8B,EAAY,EAAM,CAC9C,GAAI,GAAU,KACV,EAAU,KACV,EAAoB,GACxB,MAAO,CACL,eAAgB,GAAc,OAC9B,uBAAwB,CACtB,GAAI,GACJ,KAAM,GAAW,IAAc,KAAO,OAAS,EAAW,0BAA4B,CACpF,MAAO,EACP,OAAQ,EACR,EAAG,EACH,EAAG,GAEC,GAAU,EAAK,OAAS,KAAO,EAAK,OAAS,OAC7C,GAAU,EAAK,OAAS,KAAO,EAAK,OAAS,OAC7C,GAA6B,CAAC,aAAc,aAAa,SAAW,IAAwB,EAAK,QAAQ,QAAQ,YAAc,KAAO,OAAS,EAAsB,OAAS,KAAO,EAAK,cAAgB,QAChN,GAAI,IAAQ,EAAQ,MAChB,GAAS,EAAQ,OACjB,GAAI,EAAQ,EACZ,GAAI,EAAQ,EAChB,MAAI,IAAW,MAAQ,EAAK,GAAK,IAC/B,GAAU,EAAQ,EAAI,EAAK,GAEzB,GAAW,MAAQ,EAAK,GAAK,IAC/B,GAAU,EAAQ,EAAI,EAAK,GAE7B,IAAK,GAAW,EAChB,IAAK,GAAW,EAChB,GAAQ,EACR,GAAS,EACL,CAAC,GAAqB,GACxB,IAAQ,EAAK,OAAS,IAAM,EAAQ,MAAQ,EAC5C,GAAS,EAAK,OAAS,IAAM,EAAQ,OAAS,EAC9C,GAAI,IAAW,EAAK,GAAK,KAAO,EAAK,EAAI,GACzC,GAAI,IAAW,EAAK,GAAK,KAAO,EAAK,EAAI,IAChC,GAAqB,CAAC,IAC/B,IAAS,EAAK,OAAS,IAAM,EAAQ,OAAS,GAC9C,GAAQ,EAAK,OAAS,IAAM,EAAQ,MAAQ,IAE9C,EAAoB,GACb,CACL,SACA,UACA,KACA,KACA,IAAK,GACL,MAAO,GAAI,GACX,OAAQ,GAAI,GACZ,KAAM,MAKd,YAA2B,EAAO,CAChC,MAAO,IAAS,MAAQ,EAAM,SAAW,KAO3C,YAAwB,EAAS,EAAO,CAClC,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,UACA,SAAU,CACR,WACA,gBAEF,QACE,EACE,CACJ,WAAU,GACV,QAAO,OACP,KAAI,KACJ,KAAI,MACF,EACE,GAAa,SAAa,IAC1B,GAAqB,SAAa,MAClC,CAAC,GAAa,IAAkB,aAChC,CAAC,GAAU,IAAe,WAAe,IACzC,GAAe,GAAe,CAAC,GAAG,KAAM,CACxC,GAAW,SAKX,EAAQ,QAAQ,WAAa,CAAC,GAAkB,EAAQ,QAAQ,YAGpE,EAAK,qBAAqB,GAAqB,EAAc,CAC3D,KACA,KACA,QACA,UACA,oBAGE,GAA6B,GAAe,IAAS,CACrD,IAAK,MAAQ,IAAK,MACtB,CAAK,EAEO,GAAmB,SAI7B,GAAY,IALZ,GAAa,GAAM,QAAS,GAAM,YAahC,GAAY,GAAuB,IAAe,EAAW,EAC7D,GAAc,cAAkB,IAAM,CAE1C,GAAI,CAAC,IAAa,CAAC,IAAW,IAAK,MAAQ,IAAK,KAAM,OACtD,KAAM,IAAM,EAAU,GACtB,YAAyB,GAAO,CAC9B,KAAM,IAAS,GAAU,IACpB,GAAS,EAAU,IAGtB,IAAI,oBAAoB,YAAa,IACrC,GAAmB,QAAU,MAH7B,GAAa,GAAM,QAAS,GAAM,SAMtC,GAAI,CAAC,EAAQ,QAAQ,WAAa,GAAkB,EAAQ,QAAQ,WAAY,CAC9E,GAAI,iBAAiB,YAAa,IAClC,KAAM,IAAU,IAAM,CACpB,GAAI,oBAAoB,YAAa,IACrC,GAAmB,QAAU,MAE/B,UAAmB,QAAU,GACtB,GAET,EAAK,qBAAqB,IACzB,CAAC,GAAW,GAAS,GAAG,GAAG,EAAU,EAAS,EAAM,EAAc,KACrE,mBAAgB,IACP,KACN,CAAC,GAAa,KACjB,YAAgB,IAAM,CAChB,IAAW,CAAC,GACd,IAAW,QAAU,KAEtB,CAAC,GAAS,IACb,YAAgB,IAAM,CAChB,CAAC,IAAW,GACd,IAAW,QAAU,KAEtB,CAAC,GAAS,IACb,GAAM,IAAM,CACN,IAAY,KAAK,MAAQ,IAAK,OAChC,IAAW,QAAU,GACrB,GAAa,GAAG,MAEjB,CAAC,GAAS,GAAG,GAAG,KACZ,UAAc,IAAM,CACzB,GAAI,CAAC,GAAS,MAAO,GACrB,YAA2B,GAAM,CAC/B,GAAI,CACF,gBACE,GACJ,GAAe,IAEjB,MAAO,CACL,UAAW,CACT,cAAe,GACf,eAAgB,GAChB,YAAa,GACb,aAAc,MAGjB,CAAC,GAAS,KAGf,KAAM,IAAoB,CACxB,YAAa,gBACb,UAAW,cACX,MAAO,WAEH,GAAqB,CACzB,YAAa,uBACb,UAAW,qBACX,MAAO,kBAEH,GAAgB,GAAgB,CACpC,GAAI,GAAuB,EAC3B,MAAO,CACL,UAAW,MAAO,IAAiB,UAAY,EAAgB,GAAwB,GAAgB,KAAO,OAAS,EAAa,YAAc,KAAO,EAAwB,GACjL,aAAc,MAAO,IAAiB,UAAY,EAAgB,GAAwB,GAAgB,KAAO,OAAS,EAAa,eAAiB,KAAO,EAAwB,KAQ3L,YAAoB,EAAS,EAAO,CAC9B,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,eACA,SAAU,CACR,YACA,eACA,YAEF,YACE,EACE,CACJ,WAAU,GACV,aAAY,GACZ,aAAc,GAAwB,GACtC,qBAAoB,cACpB,kBAAiB,GACjB,uBAAsB,cACtB,kBAAiB,GACjB,WACA,YACE,EACE,GAAO,KACP,GAAiB,GAAe,MAAO,KAA0B,WAAa,GAAwB,IAAM,IAC5G,GAAe,MAAO,KAA0B,WAAa,GAAiB,GAC9E,GAAqB,SAAa,IAClC,GAA0B,SAAa,IACvC,CACJ,UAAW,GACX,aAAc,IACZ,GAAc,IACZ,CACJ,UAAW,GACX,aAAc,IACZ,GAAc,IACZ,GAAuB,GAAe,IAAS,CACnD,GAAI,IACJ,GAAI,CAAC,GAAQ,CAAC,IAAW,CAAC,IAAa,GAAM,MAAQ,SACnD,OAEF,KAAM,IAAU,IAAwB,GAAQ,QAAQ,kBAAoB,KAAO,OAAS,GAAsB,OAC5G,GAAW,GAAO,GAAY,GAAK,SAAS,QAAS,IAAU,GACrE,GAAI,CAAC,IACH,IAAM,kBACF,GAAS,OAAS,GAAG,CACvB,GAAI,IAAgB,GAQpB,GAPA,GAAS,QAAQ,IAAS,CACxB,GAAI,IACJ,GAAK,IAAiB,GAAM,UAAY,MAAQ,GAAe,MAAQ,CAAC,GAAM,QAAQ,QAAQ,QAAQ,mBAAoB,CACxH,GAAgB,GAChB,UAGA,CAAC,GACH,OAIN,EAAa,GAAO,GAAa,IAAS,GAAM,YAAc,GAAO,gBAEjE,GAA8B,GAAe,IAAS,CAC1D,GAAI,IACJ,KAAM,IAAW,IAAM,CACrB,GAAI,IACJ,GAAqB,IACpB,IAAa,GAAU,MAAW,MAAQ,GAAW,oBAAoB,UAAW,KAEtF,IAAc,GAAU,MAAW,MAAQ,GAAY,iBAAiB,UAAW,MAEhF,GAAsB,GAAe,IAAS,CAClD,GAAI,IAGJ,KAAM,IAAkB,GAAmB,QAC3C,GAAmB,QAAU,GAM7B,KAAM,IAAuB,GAAwB,QAQrD,GAPA,GAAwB,QAAU,GAC9B,KAAsB,SAAW,IAGjC,IAGA,MAAO,KAAiB,YAAc,CAAC,GAAa,IACtD,OAEF,KAAM,IAAS,GAAU,IACnB,GAAgB,IAAM,GAAgB,SAAW,IACjD,GAAU,GAAY,GAAU,iBAAiB,IACvD,GAAI,IAAqB,EAAU,IAAU,GAAS,KACtD,KAAO,IAAsB,CAAC,GAAsB,KAAqB,CACvE,KAAM,IAAa,GAAc,IACjC,GAAI,GAAsB,KAAe,CAAC,EAAU,IAClD,MAEF,GAAqB,GAKvB,GAAI,GAAQ,QAAU,EAAU,KAAW,CAAC,GAAc,KAE1D,CAAC,GAAS,GAAQ,IAGlB,MAAM,KAAK,IAAS,MAAM,IAAU,CAAC,GAAS,GAAoB,KAChE,OAIF,GAAI,EAAc,KAAW,EAAU,CAGrC,KAAM,IAAa,GAAO,YAAc,GAAK,GAAO,YAAc,GAAO,YACnE,GAAa,GAAO,aAAe,GAAK,GAAO,aAAe,GAAO,aAC3E,GAAI,IAAQ,IAAc,GAAM,QAAU,GAAO,YAYjD,GANI,IACY,GAAiB,IAAQ,YAAc,OAEnD,IAAQ,GAAM,SAAW,GAAO,YAAc,GAAO,aAGrD,IAAS,IAAc,GAAM,QAAU,GAAO,aAChD,OAGJ,KAAM,IAAU,IAAyB,GAAQ,QAAQ,kBAAoB,KAAO,OAAS,GAAuB,OAC9G,GAAyB,IAAQ,GAAY,GAAK,SAAS,QAAS,IAAQ,KAAK,IAAQ,CAC7F,GAAI,IACJ,MAAO,IAAoB,GAAQ,IAAgB,GAAK,UAAY,KAAO,OAAS,GAAc,SAAS,YAE7G,GAAI,GAAoB,GAAO,IAAa,GAAoB,GAAO,IAAiB,GACtF,OAEF,KAAM,IAAW,GAAO,GAAY,GAAK,SAAS,QAAS,IAAU,GACrE,GAAI,GAAS,OAAS,EAAG,CACvB,GAAI,IAAgB,GAQpB,GAPA,GAAS,QAAQ,IAAS,CACxB,GAAI,IACJ,GAAK,IAAkB,GAAM,UAAY,MAAQ,GAAgB,MAAQ,CAAC,GAAM,QAAQ,QAAQ,QAAQ,sBAAuB,CAC7H,GAAgB,GAChB,UAGA,CAAC,GACH,OAGJ,EAAa,GAAO,GAAO,mBAEvB,GAA6B,GAAe,IAAS,CACzD,GAAI,IACJ,KAAM,IAAW,IAAM,CACrB,GAAI,IACJ,GAAoB,IACnB,IAAc,GAAU,MAAW,MAAQ,GAAY,oBAAoB,GAAmB,KAEhG,IAAc,GAAU,MAAW,MAAQ,GAAY,iBAAiB,GAAmB,MAE9F,mBAAgB,IAAM,CACpB,GAAI,CAAC,GAAQ,CAAC,GACZ,OAEF,GAAQ,QAAQ,mBAAqB,GACrC,GAAQ,QAAQ,sBAAwB,GACxC,YAAkB,GAAO,CACvB,EAAa,GAAO,GAAO,mBAE7B,KAAM,IAAM,GAAY,GACxB,IAAa,GAAI,iBAAiB,UAAW,GAAmB,GAA8B,GAAsB,IACpH,IAAgB,GAAI,iBAAiB,GAAmB,GAAsB,GAA6B,GAAqB,IAChI,GAAI,IAAY,GAChB,MAAI,KACE,GAAU,IACZ,IAAY,EAAqB,IAE/B,EAAU,IACZ,IAAY,GAAU,OAAO,EAAqB,KAEhD,CAAC,EAAU,IAAc,GAAa,EAAU,gBAClD,IAAY,GAAU,OAAO,EAAqB,EAAU,mBAKhE,GAAY,GAAU,OAAO,IAAY,CACvC,GAAI,IACJ,MAAO,MAAe,KAAmB,GAAI,cAAgB,KAAO,OAAS,GAAiB,kBAEhG,GAAU,QAAQ,IAAY,CAC5B,GAAS,iBAAiB,SAAU,GAAU,CAC5C,QAAS,OAGN,IAAM,CACX,IAAa,GAAI,oBAAoB,UAAW,GAAmB,GAA8B,GAAsB,IACvH,IAAgB,GAAI,oBAAoB,GAAmB,GAAsB,GAA6B,GAAqB,IACnI,GAAU,QAAQ,IAAY,CAC5B,GAAS,oBAAoB,SAAU,QAG1C,CAAC,GAAS,EAAU,EAAc,EAAW,GAAW,GAAc,GAAmB,EAAM,EAAc,GAAgB,GAAS,GAAkB,GAAqB,GAAsB,GAAkB,GAA6B,GAAqB,GAAqB,KAC/R,YAAgB,IAAM,CACpB,GAAmB,QAAU,IAC5B,CAAC,GAAc,KACX,UAAc,IACd,GAGE,CACL,UAAW,CACT,UAAW,IACV,GAAkB,KAAuB,IAAS,CAC7C,IACF,EAAa,GAAO,GAAM,YAAa,qBAI7C,SAAU,CACR,UAAW,GACX,aAAc,CACZ,GAAwB,QAAU,IAEpC,WAAY,CACV,GAAwB,QAAU,KAEnC,GAAmB,KAAqB,IAAM,CAC7C,GAAmB,QAAU,MApB1B,GAwBR,CAAC,GAAS,GAAgB,GAAmB,GAAqB,EAAc,KAGrF,YAAgC,EAAS,CACvC,KAAM,CACJ,OAAO,GACP,aAAc,EACd,SAAU,GACR,EACE,EAAa,KACb,EAAU,SAAa,IACvB,CAAC,GAAU,WAAe,IAAM,MAChC,GAAS,MAA6B,KAOtC,CAAC,GAAmB,IAAwB,WAAe,EAAa,WACxE,GAAe,GAAe,CAAC,GAAM,GAAO,KAAW,CAC3D,EAAQ,QAAQ,UAAY,GAAO,GAAQ,OAC3C,EAAO,KAAK,aAAc,CACxB,QACA,SACA,UACA,YAEF,GAAoB,MAAQ,EAAiB,GAAM,GAAO,MAEtD,GAAO,UAAc,IAAO,EAChC,0BACE,IACE,GAAW,UAAc,IAAO,EACpC,UAAW,IAAqB,EAAa,WAAa,KAC1D,SAAU,EAAa,UAAY,KACnC,aAAc,EAAa,YACzB,CAAC,GAAmB,EAAa,UAAW,EAAa,WAC7D,MAAO,WAAc,IAAO,EAC1B,UACA,OACA,gBACA,YACA,SACA,aACA,UACE,CAAC,EAAM,GAAc,GAAU,EAAQ,EAAY,KAOzD,YAAqB,EAAS,CACxB,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,UACE,EACE,EAAsB,GAAuB,IAC9C,EACH,SAAU,CACR,UAAW,KACX,SAAU,QACP,EAAQ,YAGT,EAAc,EAAQ,aAAe,EACrC,EAAmB,EAAY,SAC/B,CAAC,EAAe,GAAmB,WAAe,MAClD,CAAC,GAAmB,IAAyB,WAAe,MAE5D,GAAe,IAD0B,KAAO,OAAS,EAAiB,YACrC,EACrC,GAAkB,SAAa,MAC/B,GAAO,KACb,GAAM,IAAM,CACN,IACF,IAAgB,QAAU,KAE3B,CAAC,KACJ,KAAM,IAAW,GAAc,IAC1B,EACH,SAAU,IACL,KACC,IAAqB,CACvB,UAAW,OAIX,GAAuB,cAAkB,IAAQ,CACrD,KAAM,IAA4B,EAAU,IAAQ,CAClD,sBAAuB,IAAM,GAAK,wBAClC,eAAgB,IACd,GAGJ,GAAsB,IACtB,GAAS,KAAK,aAAa,KAC1B,CAAC,GAAS,OACP,GAAe,cAAkB,IAAQ,CACzC,GAAU,KAAS,KAAS,OAC9B,IAAgB,QAAU,GAC1B,EAAgB,KAKd,GAAU,GAAS,KAAK,UAAU,UAAY,GAAS,KAAK,UAAU,UAAY,MAItF,KAAS,MAAQ,CAAC,EAAU,MAC1B,GAAS,KAAK,aAAa,KAE5B,CAAC,GAAS,OACP,GAAO,UAAc,IAAO,KAC7B,GAAS,KACZ,gBACA,wBACA,aAAc,KACZ,CAAC,GAAS,KAAM,GAAc,KAC5B,GAAW,UAAc,IAAO,KACjC,GAAS,SACZ,aAAc,KACZ,CAAC,GAAS,SAAU,KAClB,GAAU,UAAc,IAAO,KAChC,MACA,EACH,QACA,YACA,WACE,CAAC,GAAU,GAAM,GAAU,EAAQ,IACvC,UAAM,IAAM,CACV,EAAY,QAAQ,QAAQ,gBAAkB,GAC9C,KAAM,IAAO,IAAQ,KAAO,OAAS,GAAK,SAAS,QAAQ,KAAK,IAAQ,GAAK,KAAO,GAChF,IACF,IAAK,QAAU,MAGZ,UAAc,IAAO,KACvB,GACH,WACA,QACA,cACE,CAAC,GAAU,GAAM,GAAU,KAQjC,YAAkB,EAAS,EAAO,CAC5B,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,eACA,SACA,UACA,SAAU,CACR,iBAEA,EACE,CACJ,WAAU,GACV,eAAc,IACZ,EACE,GAAgB,SAAa,IAC7B,GAAa,WACb,GAAsB,SAAa,IACzC,mBAAgB,IAAM,CACpB,GAAI,CAAC,GACH,OAEF,KAAM,IAAM,EAAU,GAKtB,aAAkB,CACZ,CAAC,GAAQ,EAAc,IAAiB,IAAiB,GAAc,GAAY,KACrF,IAAc,QAAU,IAG5B,aAAqB,CACnB,GAAoB,QAAU,GAEhC,UAAI,iBAAiB,OAAQ,IAC7B,GAAI,iBAAiB,UAAW,GAAW,IACpC,IAAM,CACX,GAAI,oBAAoB,OAAQ,IAChC,GAAI,oBAAoB,UAAW,GAAW,MAE/C,CAAC,EAAc,EAAM,KACxB,YAAgB,IAAM,CACpB,GAAI,CAAC,GACH,OAEF,YAAsB,GAAM,CAC1B,GAAI,CACF,WACE,GACA,MAAW,mBAAqB,KAAW,eAC7C,IAAc,QAAU,IAG5B,SAAO,GAAG,aAAc,IACjB,IAAM,CACX,EAAO,IAAI,aAAc,MAE1B,CAAC,EAAQ,KACZ,YAAgB,IACP,IAAM,CACX,aAAa,GAAW,UAEzB,IACI,UAAc,IACd,GAGE,CACL,UAAW,CACT,cAAc,GAAO,CACf,GAAsB,GAAM,cAChC,IAAoB,QAAU,KAEhC,cAAe,CACb,GAAc,QAAU,IAE1B,QAAQ,GAAO,CACb,GAAI,GAAc,QAAS,OAC3B,KAAM,IAAS,GAAU,GAAM,aAC/B,GAAI,IAAe,EAAU,IAC3B,GAAI,CAIF,GAAI,MAAc,KAAS,KAAM,SACjC,GAAI,CAAC,GAAO,QAAQ,kBAAmB,YACvC,CAEA,GAAI,CAAC,GAAoB,SAAW,CAAC,GAAkB,IACrD,OAIN,EAAa,GAAM,GAAM,YAAa,UAExC,OAAO,GAAO,CACZ,GAAc,QAAU,GACxB,KAAM,IAAgB,GAAM,cAItB,GAAoB,EAAU,KAAkB,GAAc,aAAa,GAAgB,iBAAmB,GAAc,aAAa,eAAiB,UAGhK,GAAW,QAAU,OAAO,WAAW,IAAM,CAC3C,GAAI,IACJ,KAAM,IAAW,GAAc,EAAe,EAAa,cAAgB,UAGvE,CAAC,IAAiB,KAAa,GAS/B,GAAU,IAAwB,EAAQ,QAAQ,kBAAoB,KAAO,OAAS,GAAsB,KAAK,SAAS,QAAS,KAAa,GAAS,EAAc,KAAa,IAGxL,EAAa,GAAO,GAAM,YAAa,cAxDtC,GA6DR,CAAC,GAAS,GAAa,EAAS,EAAc,IAGnD,KAAM,IAAa,SACb,GAAe,WACrB,YAAoB,EAAW,EAAW,EAAY,CACpD,KAAM,GAAM,GAAI,KACV,EAAS,IAAe,OAC9B,GAAI,GAAe,EACnB,GAAI,GAAU,EAAW,CACvB,KAAM,EACH,IAAa,GACb,IAAe,MACb,IACD,EACJ,EAAe,GAEjB,MAAO,IACD,IAAe,YAAc,CAC/B,SAAU,OAET,KACA,EAAU,IAAI,GAAS,CACxB,KAAM,IAAkB,EAAQ,EAAM,GAAc,KACpD,MAAI,OAAO,KAAoB,WACtB,EAAY,GAAgB,GAAa,KAE3C,KACN,OAAO,GAAW,OAAO,CAAC,EAAK,KAC3B,KAGL,OAAO,QAAQ,IAAO,QAAQ,IAAQ,CACpC,GAAI,CAAC,GAAK,IAAS,GACnB,GAAI,KAAU,CAAC,GAAY,IAAc,SAAS,KAGlD,GAAI,GAAI,QAAQ,QAAU,GAIxB,GAHK,EAAI,IAAI,KACX,EAAI,IAAI,GAAK,IAEX,MAAO,KAAU,WAAY,CAC/B,GAAI,IACH,IAAW,EAAI,IAAI,MAAS,MAAQ,GAAS,KAAK,IACnD,EAAI,IAAO,UAAY,CAErB,OADI,IACK,GAAO,UAAU,OAAQ,GAAO,GAAI,OAAM,IAAO,GAAO,EAAG,GAAO,GAAM,KAC/E,GAAK,IAAQ,UAAU,IAEzB,MAAQ,IAAY,EAAI,IAAI,MAAS,KAAO,OAAS,GAAU,IAAI,IAAM,GAAG,GAAG,KAAO,KAAK,IAAO,KAAQ,cAI9G,GAAI,IAAO,KAGR,GACN,KASP,YAAyB,EAAW,CAC9B,IAAc,QAChB,GAAY,IAId,KAAM,GAAO,EACP,EAAoB,cAAkB,GAAa,GAAW,EAAW,EAAW,aAE1F,GACM,EAAmB,cAAkB,GAAa,GAAW,EAAW,EAAW,YAEzF,GACM,EAAe,cAAkB,GAAa,GAAW,EAAW,EAAW,QAMrF,EAAU,IAAI,GAAO,GAAO,KAAO,OAAS,EAAI,OAChD,MAAO,WAAc,IAAO,EAC1B,oBACA,mBACA,iBACE,CAAC,EAAmB,EAAkB,IAG5C,GAAI,IAA2B,GAC/B,YAAkB,EAAa,EAAU,EAAY,CACnD,OAAQ,OACD,WACH,MAAO,OACJ,aACH,MAAO,WAEP,MAAO,IAAY,GAGzB,YAA8B,EAAK,EAAa,CAG9C,MAAO,IAAS,EAFC,IAAQ,GAAY,IAAQ,EAC1B,IAAQ,IAAc,IAAQ,IAGnD,YAAmC,EAAK,EAAa,EAAK,CAGxD,MAAO,IAAS,EAFC,IAAQ,EACN,EAAM,IAAQ,GAAa,IAAQ,KACA,IAAQ,SAAW,IAAQ,KAAO,IAAQ,GAElG,YAAmC,EAAK,EAAa,EAAK,CAGxD,MAAO,IAAS,EAFC,EAAM,IAAQ,GAAa,IAAQ,GACjC,IAAQ,GAG7B,YAAoC,EAAK,EAAa,EAAK,CAGzD,MAAO,IAAS,EAFC,EAAM,IAAQ,GAAc,IAAQ,GAClC,IAAQ,GAQ7B,YAA2B,EAAS,EAAO,CACzC,KAAM,CACJ,OACA,eACA,SAAU,CACR,eACA,aAEA,EACE,CACJ,UACA,eACA,WAAY,GAAsB,IAAM,GACxC,WAAU,GACV,iBAAgB,KAChB,eAAc,GACd,QAAO,GACP,UAAS,GACT,OAAM,GACN,WAAU,GACV,mBAAkB,OAClB,oBAAmB,GACnB,sBAAqB,GACrB,mBAAkB,OAClB,eAAc,WACd,QAAO,EACP,sBAAqB,GACrB,kBACA,aACA,SAAQ,IACN,EAcE,GAAW,KACX,GAAO,KACP,GAAa,GAAe,IAC5B,GAAqB,SAAa,IAClC,GAAW,SAAa,IAAwC,IAChE,GAAS,SAAa,MACtB,GAAuB,SAAa,IACpC,GAAwB,SAAa,IACrC,GAAqB,SAAa,CAAC,CAAC,GACpC,GAAiB,SAAa,IAC9B,GAAyB,SAAa,IACtC,GAAqB,GAAa,IAClC,GAAgB,GAAa,GAC7B,GAAwB,GAAa,IACrC,GAAc,GAAa,GAC3B,GAAmB,GAAa,IAChC,CAAC,GAAU,IAAe,aAC1B,CAAC,GAAW,IAAgB,aAC5B,GAAY,GAAe,SAAU,GAAS,GAAU,GAAqB,CAC7E,KAAwB,QAC1B,IAAsB,IAExB,YAAkB,GAAM,CAClB,GACF,IAAY,GAAK,IACjB,IAAQ,MAAQ,GAAK,OAAO,KAAK,eAAgB,IAC7C,IACF,IAAe,QAAU,KAG3B,GAAa,GAAM,CACjB,cAAe,GASf,KAAM,MAAW,KAAa,IAA4B,GAAe,QAAU,KAIzF,KAAM,IAAc,GAAQ,QAAQ,GAAS,SACzC,IACF,GAAS,IAEX,sBAAsB,IAAM,CAC1B,KAAM,IAAa,GAAQ,QAAQ,GAAS,UAAY,GACxD,GAAI,CAAC,GAAY,OACZ,IACH,GAAS,IAEX,KAAM,IAAwB,GAAsB,QAEhD,IADkD,IAAS,KAAuB,CAAC,GAAqB,UAI1G,IAAW,gBAAkB,MAAQ,GAAW,eAAe,MAAO,KAA0B,UAAY,CAC1G,MAAO,UACP,OAAQ,WACN,SAIV,GAAM,IAAM,CACV,SAAS,cAAc,OAAO,MAAM,IAC9B,gBAAgB,CAClB,UAA2B,GACpB,OAGV,IAIH,GAAM,IAAM,CACN,CAAC,IAGL,CAAI,GAAQ,EACN,GAAmB,SAAW,IAAiB,MAGjD,IAAuB,QAAU,GACjC,GAAS,QAAU,GACnB,GAAW,KAEJ,GAAmB,SAI5B,IAAS,QAAU,GACnB,GAAsB,QAAQ,SAE/B,CAAC,GAAS,EAAM,EAAU,GAAe,KAI5C,GAAM,IAAM,CACV,GAAI,EAAC,IAGD,GAAQ,EACV,GAAI,IAAe,KAAM,CAEvB,GADA,GAAe,QAAU,GACrB,GAAiB,SAAW,KAC9B,OAUF,GANI,GAAmB,SACrB,IAAS,QAAU,GACnB,GAAU,EAAS,KAIjB,CAAC,GAAmB,SAAW,GAAmB,SAAY,IAAO,SAAW,MAAQ,GAAmB,UAAY,IAAQ,GAAO,SAAW,MAAO,CAC1J,GAAI,IAAO,EACX,KAAM,IAAuB,IAAM,CAC7B,EAAQ,QAAQ,IAAM,KAIpB,IAAO,GAET,IADyB,sBAAwB,gBACvC,IAEZ,MAEA,IAAS,QAAU,GAAO,SAAW,MAAQ,GAA0B,GAAO,QAAS,GAAa,KAAQ,GAAS,GAAY,EAAS,GAAmB,SAAW,GAAY,EAAS,GAAmB,SAChN,GAAO,QAAU,KACjB,GAAW,GAAS,WAGxB,UAEQ,IAAmB,EAAS,KACtC,IAAS,QAAU,GACnB,GAAU,EAAS,GAAU,GAAuB,SACpD,GAAuB,QAAU,KAGpC,CAAC,GAAS,EAAM,EAAU,GAAa,GAAkB,GAAQ,EAAS,GAAa,GAAK,GAAY,GAAW,KAItH,GAAM,IAAM,CACV,GAAI,IACJ,GAAI,CAAC,IAAW,GAAY,CAAC,IAAQ,IAAW,CAAC,GAAmB,QAClE,OAEF,KAAM,IAAQ,GAAK,SAAS,QACtB,GAAU,IAAc,GAAM,KAAK,IAAQ,GAAK,KAAO,MAAc,MAAS,IAAc,GAAY,UAAY,KAAO,OAAS,GAAY,SAAS,SACzJ,GAAW,GAAc,GAAY,IACrC,GAAuB,GAAM,KAAK,IAAQ,GAAK,SAAW,GAAS,GAAK,QAAQ,SAAS,SAAU,KACrG,IAAU,CAAC,IAAwB,GAAqB,SAC1D,GAAO,MAAM,CACX,cAAe,MAGlB,CAAC,GAAS,EAAU,GAAM,GAAU,KACvC,GAAM,IAAM,CACV,GAAI,CAAC,IAAW,CAAC,IAAQ,CAAC,IAAW,GAAU,OAC/C,YAA4B,GAAM,CAChC,GAAa,GAAK,IACd,IACF,IAAe,QAAU,IAG7B,UAAK,OAAO,GAAG,eAAgB,IACxB,IAAM,CACX,GAAK,OAAO,IAAI,eAAgB,MAEjC,CAAC,GAAS,GAAM,GAAS,GAAU,KACtC,GAAM,IAAM,CACV,GAAsB,QAAU,GAChC,GAAmB,QAAU,CAAC,CAAC,IAEjC,GAAM,IAAM,CACL,GACH,IAAO,QAAU,OAElB,CAAC,IACJ,KAAM,IAAiB,IAAe,KAChC,GAAO,UAAc,IAAM,CAC/B,YAA2B,GAAe,CACxC,GAAI,CAAC,EAAM,OACX,KAAM,IAAQ,EAAQ,QAAQ,QAAQ,IAClC,KAAU,IACZ,GAAW,IA4Cf,MAzCc,CACZ,QAAQ,GAAM,CACZ,GAAI,CACF,kBACE,GACJ,GAAkB,KAEpB,QAAS,IAAS,CAChB,GAAI,CACF,kBACE,GACJ,MAAO,IAAc,MAAM,CACzB,cAAe,SAIf,IAAoB,CACtB,YAAY,GAAO,CACjB,GAAI,CACF,kBACE,GACJ,GAAkB,KAEpB,eAAe,GAAO,CACpB,GAAI,CACF,gBACE,GACA,CAAC,GAAqB,SAAW,KAAgB,SAGrD,IAAS,QAAU,GACnB,GAAU,EAAS,IACnB,GAAW,MACN,IACH,GAAa,GAAY,QAAS,CAChC,cAAe,UAOxB,CAAC,EAAM,GAAa,GAAW,GAAkB,EAAS,GAAY,KACzE,MAAO,WAAc,IAAM,CACzB,GAAI,CAAC,GACH,MAAO,GAET,KAAM,IAAkB,GAAmB,QAC3C,YAAmB,GAAO,CAOxB,GANA,GAAqB,QAAU,GAC/B,GAAe,QAAU,GAKrB,CAAC,GAAc,SAAW,GAAM,gBAAkB,GAAY,QAChE,OAEF,GAAI,IAAU,GAA2B,GAAM,IAAK,GAAa,IAAM,CACrE,GAAU,IACV,EAAa,GAAO,GAAM,YAAa,mBACnC,EAAc,IAAiB,CAAC,IAClC,EAAa,QAEf,OAEF,KAAM,IAAe,GAAS,QACxB,GAAW,GAAY,EAAS,IAChC,GAAW,GAAY,EAAS,IAatC,GAZI,GAAM,MAAQ,QAChB,IAAU,IACV,GAAS,QAAU,GACnB,GAAW,GAAS,UAElB,GAAM,MAAQ,OAChB,IAAU,IACV,GAAS,QAAU,GACnB,GAAW,GAAS,UAIlB,GAAO,EAAG,CACZ,KAAM,IAAQ,IAAa,MAAM,KAAK,CACpC,OAAQ,EAAQ,QAAQ,QACvB,IAAO,EACR,MAAO,EACP,OAAQ,KAIJ,GAAU,GAAa,GAAO,GAAM,IACpC,GAAe,GAAQ,UAAU,IAAS,IAAS,MAAQ,CAAC,GAAW,EAAQ,QAAS,GAAO,KAE/F,GAAe,GAAQ,OAAO,CAAC,GAAY,GAAO,KAAc,IAAS,MAAQ,CAAC,GAAW,EAAQ,QAAS,GAAO,IAAmB,GAAY,GAAY,IAsBtK,GArBA,GAAS,QAAU,GAAQ,GAAsB,CAC/C,QAAS,GAAQ,IAAI,IAAa,IAAa,KAAO,EAAQ,QAAQ,IAAa,OAClF,CACD,SACA,eACA,QACA,QAGA,gBAAiB,GAAe,CAAC,GAAI,IAAmB,EAAQ,QAAQ,IAAI,CAAC,GAAG,KAAU,GAAW,EAAQ,QAAS,IAAS,GAAQ,QAAa,QAAY,IAChK,SAAU,GACV,SAAU,GACV,UAAW,GAAqB,GAAS,QAAU,GAAW,GAAW,GAAS,QAAS,GAAO,GAAS,GAI3G,GAAM,MAAQ,EAAa,KAAO,GAAM,MAAQ,GAAc,KAAO,MACrE,UAAW,MAGb,GAAW,GAAS,SAChB,KAAgB,OAClB,OAGJ,GAAI,GAAqB,GAAM,IAAK,IAAc,CAIhD,GAHA,GAAU,IAGN,GAAQ,CAAC,IAAW,GAAc,GAAM,cAAc,iBAAmB,GAAM,cAAe,CAChG,GAAS,QAAU,GAA0B,GAAM,IAAK,GAAa,IAAO,GAAW,GACvF,GAAW,GAAS,SACpB,OAEE,GAA0B,GAAM,IAAK,GAAa,IAChD,GACF,GAAS,QAAU,IAAgB,GAAW,IAAe,KAAiB,EAAQ,QAAQ,OAAS,GAAK,GAAW,GAAqB,EAAS,CACnJ,cAAe,GACf,qBAGF,GAAS,QAAU,KAAK,IAAI,GAAU,GAAqB,EAAS,CAClE,cAAe,GACf,sBAIA,GACF,GAAS,QAAU,IAAgB,GAAW,IAAe,KAAiB,GAAK,EAAQ,QAAQ,OAAS,GAAW,GAAqB,EAAS,CACnJ,cAAe,GACf,UAAW,GACX,qBAGF,GAAS,QAAU,KAAK,IAAI,GAAU,GAAqB,EAAS,CAClE,cAAe,GACf,UAAW,GACX,sBAIF,GAAmB,EAAS,GAAS,SACvC,GAAW,MAEX,GAAW,GAAS,UAI1B,YAA2B,GAAO,CAC5B,KAAoB,QAAU,GAAe,GAAM,cACrD,IAAmB,QAAU,IAGjC,YAA6B,GAAO,CAElC,GAAmB,QAAU,GACzB,KAAoB,QAAU,GAAsB,GAAM,cAC5D,IAAmB,QAAU,IAGjC,KAAM,IAA2B,IAAW,GAAQ,IAAkB,CACpE,wBAAyB,IAAa,IAElC,GAAa,EAAQ,QAAQ,KAAK,IAAS,KAAQ,KAAO,OAAS,GAAK,MAAQ,IACtF,MAAO,CACL,UAAW,IACN,GACH,UAAU,GAAO,CACf,GAAqB,QAAU,GAC/B,KAAM,IAAa,GAAM,IAAI,QAAQ,WAAa,EAC5C,GAAiB,GAA0B,GAAM,IAAK,GAAa,IACnE,GAAkB,GAA2B,GAAM,IAAK,GAAa,IACrE,GAAY,GAAqB,GAAM,IAAK,IAC5C,GAAmB,IAAS,GAAiB,KAAc,GAAM,MAAQ,SAAW,GAAM,IAAI,SAAW,GAC/G,GAAI,IAAW,EAAM,CACnB,KAAM,IAAW,IAAQ,KAAO,OAAS,GAAK,SAAS,QAAQ,KAAK,IAAQ,GAAK,UAAY,MACvF,GAAc,IAAQ,GAAW,GAAe,GAAK,SAAS,QAAS,GAAS,IAAM,KAC5F,GAAI,IAAc,IAAe,GAAgB,CAC/C,KAAM,IAAc,GAAI,eAAc,UAAW,CAC/C,IAAK,GAAM,IACX,QAAS,KAEX,GAAI,IAAkB,GAAiB,CACrC,GAAI,IAAsB,GAC1B,KAAM,IAAoB,KAAuB,GAAY,UAAY,KAAO,OAAS,GAAqB,SAAS,gBAAkB,GAAM,cACzI,GAAe,IAAmB,CAAC,GAAmB,IAAwB,GAAY,UAAY,KAAO,OAAS,GAAsB,SAAS,aAAe,GAAiB,GAAa,KACpM,IACF,IAAU,IACV,GAAa,cAAc,IAC3B,GAAa,SAGjB,GAAI,IAAa,GAAY,SACvB,GAAY,QAAQ,MAAQ,GAAY,UAAY,GAAM,gBAAkB,GAAY,QAAQ,SAAS,aAAc,CACzH,GAAI,IACJ,GAAU,IACT,IAAwB,GAAY,QAAQ,SAAS,eAAiB,MAAQ,GAAsB,cAAc,IACnH,QAIN,MAAO,IAAU,IAKnB,GAAI,GAAC,GAAQ,CAAC,IAAsB,IAMpC,IAHI,IACF,IAAO,QAAU,IAAU,GAAY,KAAO,GAAM,KAElD,GAAQ,CACN,IACF,IAAU,IACN,EACF,IAAS,QAAU,GAAY,EAAS,IACxC,GAAW,GAAS,UAEpB,EAAa,GAAM,GAAM,YAAa,oBAG1C,OAEE,IACE,KAAiB,MACnB,IAAS,QAAU,IAErB,GAAU,IACN,CAAC,GAAQ,GACX,EAAa,GAAM,GAAM,YAAa,mBAEtC,GAAU,IAER,GACF,GAAW,GAAS,YAI1B,SAAU,CACJ,GAAQ,CAAC,IACX,GAAW,OAGf,cAAe,GACf,YAAa,GACb,QAAS,IAEX,SAAU,CACR,mBAAoB,KAAgB,OAAS,OAAY,MACrD,CAAC,GAAmB,IAAiB,GACzC,aACA,eAAgB,CACd,GAAqB,QAAU,KAGnC,UAED,CAAC,EAAc,GAAa,GAAU,GAAW,GAAoB,GAAe,EAAS,GAAS,GAAa,GAAK,GAAS,EAAM,GAAgB,GAAQ,GAAe,GAAoB,GAAa,GAAM,GAAM,GAAiB,GAAY,EAAc,GAAM,GAAM,GAAgB,GAAW,KAGlT,KAAM,IAA0C,GAAI,KAAI,CAAC,CAAC,SAAU,WAAY,CAAC,WAAY,WAAY,CAAC,QAAS,MAOnH,YAAiB,EAAS,EAAO,CAC/B,GAAI,GACA,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,cACE,EACE,CACJ,UAAU,GACV,OAAO,UACL,EACE,GAAY,GAAwB,GAA2B,IAAI,KAAU,KAAO,EAAwB,EAC5G,GAAc,KAEd,GAAW,MAAY,KAC7B,MAAO,WAAc,IAAM,CACzB,GAAI,CAAC,EAAS,MAAO,GACrB,KAAM,IAAgB,CACpB,GAAI,KACA,IAAY,CACd,KAAM,KAGV,MAAI,MAAa,WAAa,IAAS,QAC9B,CACL,UAAW,EACR,QAAW,KAAS,QAAU,aAAe,gBAAiB,EAAO,EAAa,QAErF,SAAU,IAGP,CACL,UAAW,CACT,gBAAiB,EAAO,OAAS,QACjC,gBAAiB,KAAa,cAAgB,SAAW,GACzD,gBAAiB,EAAO,EAAa,UACjC,KAAa,WAAa,CAC5B,KAAM,eAEJ,KAAa,QAAU,CACzB,GAAI,OAEF,KAAa,QAAU,IAAY,CACrC,KAAM,eAEJ,IAAS,UAAY,CACvB,oBAAqB,WAEnB,IAAS,YAAc,CACzB,oBAAqB,SAGzB,SAAU,IACL,MACC,KAAa,QAAU,CACzB,kBAAmB,KAGvB,KAAK,GAAM,CACT,GAAI,CACF,UACA,aACE,GACJ,KAAM,IAAc,CAClB,KAAM,YACF,IAAU,CACZ,GAAI,EAAa,YAOrB,OAAQ,OACD,SACH,MAAO,IACF,GACH,gBAAiB,IAAU,QAE1B,WAED,MAAO,IACF,MACC,IAAU,CACZ,gBAAiB,KAK3B,MAAO,MAGV,CAAC,EAAS,EAAM,GAAU,EAAM,EAAY,GAAa,KAK9D,KAAM,IAAuB,GAAO,EAAI,QAAQ,yBAA0B,CAAC,EAAG,IAAS,GAAM,IAAM,IAAM,EAAE,eAC3G,YAA8B,EAAW,EAAM,CAC7C,MAAO,OAAO,IAAc,WAAa,EAAU,GAAQ,EAE7D,YAAyB,EAAM,EAAY,CACzC,KAAM,CAAC,EAAW,GAAgB,WAAe,GACjD,MAAI,IAAQ,CAAC,GACX,EAAa,IAEf,YAAgB,IAAM,CACpB,GAAI,CAAC,GAAQ,EAAW,CACtB,KAAM,GAAU,WAAW,IAAM,EAAa,IAAQ,GACtD,MAAO,IAAM,aAAa,KAE3B,CAAC,EAAM,EAAW,IACd,EAOT,YAA6B,EAAS,EAAO,CACvC,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,OACA,SAAU,CACR,aAEA,EACE,CACJ,WAAW,KACT,EAEE,EAAiB,CADE,MAAO,IAAa,SACH,EAAW,EAAS,QAAU,EAClE,CAAC,GAAQ,IAAa,WAAe,aACrC,GAAY,GAAgB,EAAM,GACxC,MAAI,CAAC,IAAa,KAAW,SAC3B,GAAU,aAEZ,GAAM,IAAM,CACV,GAAI,EAAC,EACL,IAAI,EAAM,CACR,GAAU,WACV,KAAM,IAAQ,sBAAsB,IAAM,CACxC,GAAU,UAEZ,MAAO,IAAM,CACX,qBAAqB,KAGzB,GAAU,WACT,CAAC,EAAM,IACH,CACL,aACA,WAQJ,YAA6B,EAAS,EAAO,CACvC,IAAU,QACZ,GAAQ,IAEV,KAAM,CACJ,QAAS,EAAmB,CAC1B,QAAS,GAEX,KAAM,EACN,MAAO,EACP,OAAQ,EACR,WAAW,KACT,EACE,GAAY,EAAQ,UACpB,GAAO,GAAU,MAAM,KAAK,GAC5B,GAAS,UAAc,IAAO,EAClC,QACA,eACE,CAAC,GAAM,KACL,GAAmB,MAAO,IAAa,SACvC,GAAgB,IAAmB,EAAW,EAAS,OAAS,EAChE,GAAiB,IAAmB,EAAW,EAAS,QAAU,EAClE,CAAC,GAAQ,IAAa,WAAe,IAAO,KAC7C,GAAqB,EAAiB,OACtC,GAAqB,EAAkB,OAEtC,CACJ,aACA,WACE,GAAoB,EAAS,CAC/B,aAEI,GAAa,GAAa,GAC1B,GAAU,GAAa,GACvB,GAAW,GAAa,GACxB,GAAY,GAAa,GAC/B,UAAM,IAAM,CACV,KAAM,IAAgB,GAAqB,GAAW,QAAS,IACzD,GAAc,GAAqB,GAAS,QAAS,IACrD,GAAe,GAAqB,GAAU,QAAS,IACvD,GAAa,GAAqB,GAAQ,QAAS,KAAW,OAAO,KAAK,IAAe,OAAO,CAAC,GAAK,KAC1G,IAAI,IAAO,GACJ,IACN,IAgBH,GAfI,KAAW,WACb,GAAU,IAAW,EACnB,mBAAoB,GAAO,sBACxB,MACA,MAGH,KAAW,QACb,GAAU,CACR,mBAAoB,OAAO,KAAK,IAAY,IAAI,IAAsB,KAAK,KAC3E,mBAAoB,GAAe,QAChC,MACA,KAGH,KAAW,QAAS,CACtB,KAAM,IAAS,IAAe,GAC9B,GAAU,CACR,mBAAoB,OAAO,KAAK,IAAQ,IAAI,IAAsB,KAAK,KACvE,mBAAoB,GAAgB,QACjC,MACA,OAGN,CAAC,GAAe,GAAU,GAAY,GAAS,GAAW,GAAc,GAAQ,KAC5E,CACL,aACA,WASJ,YAAsB,EAAS,EAAO,CACpC,GAAI,GACJ,KAAM,CACJ,OACA,WACE,EACE,CACJ,UACA,cACA,QAAS,GACT,eAAgB,GAChB,WAAU,GACV,aAAY,KACZ,WAAU,IACV,cAAa,GACb,iBAAgB,MACd,EACE,GAAe,WACf,GAAY,SAAa,IACzB,GAAe,SAAc,GAAO,IAAwC,IAAgB,KAAO,EAAO,IAC1G,GAAgB,SAAa,MAC7B,GAAU,GAAe,IACzB,GAAiB,GAAe,IAChC,GAAe,GAAa,IAC5B,GAAgB,GAAa,IACnC,UAAM,IAAM,CACN,GACF,cAAa,GAAa,SAC1B,GAAc,QAAU,KACxB,GAAU,QAAU,KAErB,CAAC,IACJ,GAAM,IAAM,CAEV,GAAI,GAAQ,GAAU,UAAY,GAAI,CACpC,GAAI,IACJ,GAAa,QAAW,IAAQ,IAAwC,IAAgB,KAAO,GAAQ,KAExG,CAAC,EAAM,GAAe,IAClB,UAAc,IAAM,CACzB,GAAI,CAAC,GACH,MAAO,GAET,YAAyB,GAAO,CAC1B,GACG,EAAQ,QAAQ,QACnB,GAAQ,QAAQ,OAAS,GACzB,GAAe,KAGb,EAAQ,QAAQ,QAClB,GAAQ,QAAQ,OAAS,GACzB,GAAe,KAIrB,YAA0B,GAAM,GAAa,GAAQ,CACnD,KAAM,IAAM,GAAa,QAAU,GAAa,QAAQ,GAAa,IAAU,GAAY,KAAK,IAAS,KAAQ,KAAO,OAAS,GAAK,oBAAoB,QAAQ,GAAO,wBAA0B,GACnM,MAAO,IAAM,GAAK,QAAQ,IAAO,GAEnC,YAAmB,GAAO,CACxB,KAAM,IAAc,EAAQ,QAQ5B,GAPI,GAAU,QAAQ,OAAS,GAAK,GAAU,QAAQ,KAAO,KAC3D,CAAI,GAAiB,GAAa,GAAa,GAAU,WAAa,GACpE,GAAgB,IACP,GAAM,MAAQ,KACvB,GAAU,KAGV,IAAe,MAAQ,GAAc,QAAQ,SAAS,GAAM,MAEhE,GAAM,IAAI,SAAW,GAErB,GAAM,SAAW,GAAM,SAAW,GAAM,OACtC,OAEE,GAAQ,GAAM,MAAQ,KACxB,IAAU,IACV,GAAgB,KAYd,GAPkD,MAAM,IAAQ,CAClE,GAAI,IAAQ,GACZ,MAAO,IAAS,KAAS,GAAK,KAAO,KAAO,OAAS,GAAO,uBAA2B,KAAU,GAAK,KAAO,KAAO,OAAS,GAAQ,qBAAuB,MAKrH,GAAU,UAAY,GAAM,KACnE,IAAU,QAAU,GACpB,GAAa,QAAU,GAAc,SAEvC,GAAU,SAAW,GAAM,IAC3B,aAAa,GAAa,SAC1B,GAAa,QAAU,WAAW,IAAM,CACtC,GAAU,QAAU,GACpB,GAAa,QAAU,GAAc,QACrC,GAAgB,KACf,IACH,KAAM,IAAY,GAAa,QACzB,GAAQ,GAAiB,GAAa,CAAC,GAAG,GAAY,MAAO,KAAa,GAAK,GAAI,GAAG,GAAY,MAAM,EAAI,KAAa,GAAK,IAAK,GAAU,SAC/I,KAAU,GACZ,IAAQ,IACR,GAAc,QAAU,IACf,GAAM,MAAQ,KACvB,IAAU,QAAU,GACpB,GAAgB,KAGpB,MAAO,CACL,UAAW,CACT,cAEF,SAAU,CACR,aACA,QAAQ,GAAO,CACT,GAAM,MAAQ,KAChB,GAAgB,QAKvB,CAAC,GAAS,EAAM,EAAS,EAAS,GAAS,GAAe,GAAc,GAAS,KAGtF,YAAyC,EAAO,EAAQ,CACtD,MAAO,IACF,EACH,MAAO,IACF,EAAM,MACT,SAAU,IACL,EAAM,MAAM,SACf,YAUR,KAAM,IAAQ,GAAU,EACtB,KAAM,QACN,QAAS,OACH,IAAG,EAAO,CACd,KAAM,CACJ,UACA,cACA,mBACA,OAAQ,EAAc,EACtB,QAAQ,EACR,mBAAkB,EAClB,8BAA6B,EAC7B,gBACG,IACD,EACE,CACJ,SACA,SAAU,CACR,cAEA,EACE,GAAO,EAAQ,QAAQ,GAM7B,GAAI,CAAC,GACH,MAAO,GAET,KAAM,IAAW,IACZ,KACC,KAAM,IAAO,CAAC,GAAK,UAAY,GAAS,UAAY,GAAM,UAAU,OAAS,EAAI,GAAK,aAAe,EAAI,GAAa,GAAG,IAEzH,GAAM,KAAa,KAAO,OAAS,GAAU,UAAY,GACzD,GAAW,KAAM,IAAe,GAAgC,GAAU,GAAG,cAAe,IAC5F,GAAc,KAAM,IAAe,GAAU,IAC9C,GACH,eAAgB,cAEZ,GAAQ,KAAK,IAAI,EAAG,GAAS,KAC7B,GAAQ,GAAS,EAAI,GACrB,GAAY,KAAK,IAAI,EAAG,GAAG,aAAe,GAAQ,KAAK,IAAI,EAAG,GAAS,SAC7E,UAAG,MAAM,UAAY,GAAY,KACjC,GAAG,UAAY,GAGX,GACF,CAAI,GAAG,aAAe,GAAK,aAAe,KAAK,IAAI,GAAiB,EAAQ,QAAQ,OAAS,GAAK,GAAK,GAAY,KAAO,CAAC,IAA8B,GAAY,QAAU,CAAC,GAC9K,iBAAU,IAAM,EAAiB,KAEjC,iBAAU,IAAM,EAAiB,MAGjC,GACF,GAAY,QAAU,KAAM,IAAe,GAAgC,IACtE,GACH,EAAG,IACF,GAAG,cAAe,KAEhB,CACL,EAAG,OAST,YAAwB,EAAS,EAAO,CACtC,KAAM,CACJ,OACA,YACE,EACE,CACJ,UAAU,GACV,cACA,YACA,SAAU,IACR,EACE,GAAW,GAAe,IAC1B,GAAyB,SAAa,IACtC,GAAmB,SAAa,MAChC,GAAqB,SAAa,MACxC,mBAAgB,IAAM,CACpB,GAAI,CAAC,EACH,OAEF,YAAiB,GAAG,CAClB,GAAI,GAAE,SAAW,CAAC,IAAM,EAAY,SAAW,KAC7C,OAEF,KAAM,IAAK,GAAE,OACP,GAAU,EAAY,QAAQ,KAAO,IACrC,GAAa,EAAY,QAAQ,QAAU,IAC3C,GAAkB,GAAG,aAAe,GAAG,aACvC,GAAO,GAAK,EAAI,GAAK,EACrB,GAAS,GAAK,EAAI,MAAQ,MAC5B,GAAG,cAAgB,GAAG,cAG1B,CAAI,CAAC,IAAW,GAAK,GAAK,CAAC,IAAc,GAAK,EAC5C,IAAE,iBACF,iBAAU,IAAM,CACd,GAAS,IAAK,GAAI,KAAK,IAAQ,GAAI,GAAkB,QAE9C,WAAW,KAAK,OAGzB,IAAG,WAAa,KAGpB,KAAM,IAAM,IAAa,KAAO,OAAS,EAAU,UAAY,EAAS,SACxE,GAAI,GAAQ,GACV,UAAG,iBAAiB,QAAS,IAG7B,sBAAsB,IAAM,CAC1B,GAAiB,QAAU,GAAG,UAC1B,EAAY,SAAW,MACzB,IAAmB,QAAU,IACxB,EAAY,YAId,IAAM,CACX,GAAiB,QAAU,KAC3B,GAAmB,QAAU,KAC7B,GAAG,oBAAoB,QAAS,MAGnC,CAAC,EAAS,EAAM,EAAS,SAAU,EAAa,EAAW,KACvD,UAAc,IACd,EAGE,CACL,SAAU,CACR,WAAY,CACV,GAAuB,QAAU,IAEnC,SAAU,CACR,GAAuB,QAAU,IAEnC,eAAgB,CACd,GAAuB,QAAU,IAEnC,UAAW,CACT,KAAM,IAAM,IAAa,KAAO,OAAS,EAAU,UAAY,EAAS,SACxE,GAAI,GAAC,EAAY,SAAW,CAAC,IAAM,CAAC,GAAuB,SAG3D,IAAI,GAAiB,UAAY,KAAM,CACrC,KAAM,IAAa,GAAG,UAAY,GAAiB,QAC/C,GAAY,QAAQ,OAAS,KAAQ,GAAa,IAAM,EAAY,QAAQ,IAAM,KAAQ,GAAa,IACzG,iBAAU,IAAM,GAAS,IAAK,GAAI,KAKtC,sBAAsB,IAAM,CAC1B,GAAiB,QAAU,GAAG,gBA3B7B,GAgCR,CAAC,EAAS,EAAa,EAAS,SAAU,EAAW,KAG1D,YAA0B,EAAO,EAAS,CACxC,KAAM,CAAC,EAAG,GAAK,EACf,GAAI,GAAW,GACf,KAAM,GAAS,EAAQ,OACvB,OAAS,GAAI,EAAG,GAAI,EAAS,EAAG,EAAI,EAAQ,GAAI,IAAK,CACnD,KAAM,CAAC,GAAI,IAAM,EAAQ,IAAM,CAAC,EAAG,GAC7B,CAAC,GAAI,IAAM,EAAQ,KAAM,CAAC,EAAG,GAE/B,IADoB,GAAM,IAAM,GAAK,GAAM,IAAK,IAAO,GAAI,IAAO,IAAK,IAAM,IAE/E,GAAW,CAAC,GAGhB,MAAO,GAET,YAAkB,EAAO,EAAM,CAC7B,MAAO,GAAM,IAAM,EAAK,GAAK,EAAM,IAAM,EAAK,EAAI,EAAK,OAAS,EAAM,IAAM,EAAK,GAAK,EAAM,IAAM,EAAK,EAAI,EAAK,OAOlH,YAAqB,EAAS,CACxB,IAAY,QACd,GAAU,IAEZ,KAAM,CACJ,SAAS,GACT,qBAAqB,GACrB,gBAAgB,IACd,EACJ,GAAI,GACA,EAAY,GACZ,EAAQ,KACR,GAAQ,KACR,GAAiB,YAAY,MACjC,YAAwB,GAAG,GAAG,CAC5B,KAAM,IAAc,YAAY,MAC1B,GAAc,GAAc,GAClC,GAAI,IAAU,MAAQ,KAAU,MAAQ,KAAgB,EACtD,SAAQ,GACR,GAAQ,GACR,GAAiB,GACV,KAET,KAAM,IAAS,GAAI,EACb,GAAS,GAAI,GAEb,GAAQ,KADQ,KAAK,GAAS,GAAS,GAAS,IAC7B,GAEzB,SAAQ,GACR,GAAQ,GACR,GAAiB,GACV,GAET,KAAM,IAAK,IAAQ,CACjB,GAAI,CACF,KACA,KACA,aACA,YACA,WACA,UACA,SACE,GACJ,MAAO,UAAqB,GAAO,CACjC,aAAiB,CACf,aAAa,GACb,KAGF,GADA,aAAa,GACT,CAAC,GAAS,cAAgB,CAAC,GAAS,UAAY,IAAa,MAAQ,IAAK,MAAQ,IAAK,KACzF,OAEF,KAAM,CACJ,WACA,YACE,GACE,GAAc,CAAC,GAAS,IACxB,GAAS,GAAU,IACnB,GAAU,GAAM,OAAS,aACzB,GAAmB,GAAS,GAAS,SAAU,IAC/C,GAAoB,GAAS,GAAS,aAAc,IACpD,GAAU,GAAS,aAAa,wBAChC,GAAO,GAAS,SAAS,wBACzB,GAAO,GAAU,MAAM,KAAK,GAC5B,GAAuB,GAAI,GAAK,MAAQ,GAAK,MAAQ,EACrD,GAAwB,GAAI,GAAK,OAAS,GAAK,OAAS,EACxD,GAAsB,GAAS,GAAa,IAC5C,GAAkB,GAAK,MAAQ,GAAQ,MACvC,GAAmB,GAAK,OAAS,GAAQ,OACzC,GAAQ,IAAkB,GAAU,IAAM,KAC1C,GAAS,IAAkB,GAAU,IAAM,MAC3C,GAAO,IAAmB,GAAU,IAAM,IAC1C,GAAU,IAAmB,GAAU,IAAM,OACnD,GAAI,IACF,GAAY,GACR,CAAC,IACH,OAMJ,GAHI,IACF,GAAY,IAEV,IAAqB,CAAC,GAAS,CACjC,EAAY,GACZ,OAUF,GALI,IAAW,EAAU,GAAM,gBAAkB,GAAS,GAAS,SAAU,GAAM,gBAK/E,IAAQ,GAAY,GAAK,SAAS,QAAS,IAAQ,KAAK,IAAS,CACnE,GAAI,CACF,YACE,GACJ,MAAO,KAAW,KAAO,OAAS,GAAQ,OAE1C,OAOF,GAAI,KAAS,OAAS,IAAK,GAAQ,OAAS,GAAK,KAAS,UAAY,IAAK,GAAQ,IAAM,GAAK,KAAS,QAAU,IAAK,GAAQ,MAAQ,GAAK,KAAS,SAAW,IAAK,GAAQ,KAAO,EACjL,MAAO,MAQT,GAAI,IAAW,GACf,OAAQ,QACD,MACH,GAAW,CAAC,CAAC,GAAM,GAAQ,IAAM,GAAI,CAAC,GAAM,GAAK,OAAS,GAAI,CAAC,GAAO,GAAK,OAAS,GAAI,CAAC,GAAO,GAAQ,IAAM,IAC9G,UACG,SACH,GAAW,CAAC,CAAC,GAAM,GAAK,IAAM,GAAI,CAAC,GAAM,GAAQ,OAAS,GAAI,CAAC,GAAO,GAAQ,OAAS,GAAI,CAAC,GAAO,GAAK,IAAM,IAC9G,UACG,OACH,GAAW,CAAC,CAAC,GAAK,MAAQ,EAAG,IAAS,CAAC,GAAK,MAAQ,EAAG,IAAM,CAAC,GAAQ,KAAO,EAAG,IAAM,CAAC,GAAQ,KAAO,EAAG,KACzG,UACG,QACH,GAAW,CAAC,CAAC,GAAQ,MAAQ,EAAG,IAAS,CAAC,GAAQ,MAAQ,EAAG,IAAM,CAAC,GAAK,KAAO,EAAG,IAAM,CAAC,GAAK,KAAO,EAAG,KACzG,MAEJ,YAAoB,GAAO,CACzB,GAAI,CAAC,GAAG,IAAK,GACb,OAAQ,QACD,MACH,CACE,KAAM,IAAiB,CAAC,GAAkB,GAAI,EAAS,EAAI,GAAuB,GAAI,EAAS,EAAI,GAAI,EAAS,EAAG,GAAI,EAAS,GAC1H,GAAiB,CAAC,GAAkB,GAAI,EAAS,EAAI,GAAuB,GAAI,EAAS,EAAI,GAAI,EAAS,EAAG,GAAI,EAAS,GAC1H,GAAe,CAAC,CAAC,GAAK,KAAM,IAA8C,GAAvB,GAAK,OAAS,EAAkD,GAAK,KAAM,CAAC,GAAK,MAAO,GAAuB,GAAkB,GAAK,OAAS,EAAS,GAAK,IAAM,GAAK,OAAS,IAC1O,MAAO,CAAC,GAAgB,GAAgB,GAAG,QAE1C,SACH,CACE,KAAM,IAAiB,CAAC,GAAkB,GAAI,EAAS,EAAI,GAAuB,GAAI,EAAS,EAAI,GAAI,EAAS,EAAG,GAAI,GACjH,GAAiB,CAAC,GAAkB,GAAI,EAAS,EAAI,GAAuB,GAAI,EAAS,EAAI,GAAI,EAAS,EAAG,GAAI,GACjH,GAAe,CAAC,CAAC,GAAK,KAAM,IAA2C,GAApB,GAAK,IAAM,EAA+C,GAAK,QAAS,CAAC,GAAK,MAAO,GAAuB,GAAkB,GAAK,IAAM,EAAS,GAAK,OAAS,GAAK,IAAM,IACpO,MAAO,CAAC,GAAgB,GAAgB,GAAG,QAE1C,OACH,CACE,KAAM,IAAiB,CAAC,GAAI,EAAS,EAAG,GAAmB,GAAI,EAAS,EAAI,GAAwB,GAAI,EAAS,EAAI,GAAI,EAAS,GAC5H,GAAiB,CAAC,GAAI,EAAS,EAAG,GAAmB,GAAI,EAAS,EAAI,GAAwB,GAAI,EAAS,EAAI,GAAI,EAAS,GAElI,MAAO,CAAC,GADa,CAAC,CAAC,IAA8C,GAAtB,GAAK,MAAQ,EAAkD,GAAK,KAAM,GAAK,KAAM,CAAC,GAAwB,GAAmB,GAAK,MAAQ,EAAS,GAAK,KAAO,GAAK,MAAQ,EAAQ,GAAK,SACnN,GAAgB,QAExC,QACH,CACE,KAAM,IAAiB,CAAC,GAAI,EAAQ,GAAmB,GAAI,EAAS,EAAI,GAAwB,GAAI,EAAS,EAAI,GAAI,EAAS,GACxH,GAAiB,CAAC,GAAI,EAAQ,GAAmB,GAAI,EAAS,EAAI,GAAwB,GAAI,EAAS,EAAI,GAAI,EAAS,GACxH,GAAe,CAAC,CAAC,IAA6C,GAArB,GAAK,KAAO,EAAiD,GAAK,MAAO,GAAK,KAAM,CAAC,GAAwB,GAAmB,GAAK,KAAO,EAAS,GAAK,MAAQ,GAAK,KAAO,EAAQ,GAAK,SAC1O,MAAO,CAAC,GAAgB,GAAgB,GAAG,MAInD,GAAI,IAAiB,CAAC,GAAS,IAAU,IAGzC,IAAI,GAAa,CAAC,GAChB,MAAO,MAET,GAAI,CAAC,IAAW,EAAe,CAC7B,KAAM,IAAc,GAAe,GAAM,QAAS,GAAM,SAExD,GAAI,KAAgB,MAAQ,GADC,GAE3B,MAAO,MAGN,GAAiB,CAAC,GAAS,IAAU,GAAW,CAAC,GAAG,MAE9C,CAAC,GAAa,GACvB,GAAY,OAAO,WAAW,GAAO,KAFrC,QAMN,UAAG,UAAY,CACb,sBAEK,K,gBCn2ITA,EAAOC,QAAU,CACfC,IAAK,IACLC,GAAI,IACJC,GAAI,O,mBCJN;AAAA;AAAA;AAAA;AAAA,EAOC,WAAY,CACZ,aAEA,GAAI,GAAS,GAAG,eAEhB,YAAsB,CAGrB,OAFI,GAAU,GAEL,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAC1C,GAAI,GAAM,UAAU,GACpB,GAAI,EAAC,EAEL,IAAI,GAAU,MAAO,GAErB,GAAI,IAAY,UAAY,IAAY,SACvC,EAAQ,KAAK,WACH,MAAM,QAAQ,IACxB,GAAI,EAAI,OAAQ,CACf,GAAI,GAAQ,EAAW,MAAM,KAAM,GAC/B,GACH,EAAQ,KAAK,YAGL,IAAY,SACtB,GAAI,EAAI,WAAa,OAAO,UAAU,SACrC,OAAS,KAAO,GACX,EAAO,KAAK,EAAK,IAAQ,EAAI,IAChC,EAAQ,KAAK,OAIf,GAAQ,KAAK,EAAI,aAKpB,MAAO,GAAQ,KAAK,KAGgB,EAAO,QAC3C,GAAW,QAAU,EACrB,EAAO,QAAU,GAGjB,GAAqB,GAAI,YAAY,CACpC,MAAO,IACP,2C,iBCrDH,WAAW,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,GAAG,GAAa,MAAO,IAAjB,UAA8B,MAAO,IAAjB,SAAmB,GAAG,UAAoB,MAAO,IAAjB,SAAmB,GAAG,MAAM,QAAQ,GAAG,CAAC,GAAI,GAAE,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAK,GAAE,EAAE,EAAE,MAAO,IAAI,IAAG,KAAK,GAAG,OAAQ,KAAI,IAAK,GAAE,EAAE,IAAK,IAAI,IAAG,KAAK,GAAG,GAAG,MAAO,GAAE,YAAY,CAAC,OAAQ,GAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,OAAO,EAAE,EAAE,IAAK,GAAE,UAAU,KAAM,GAAE,EAAE,KAAM,IAAI,IAAG,KAAK,GAAG,GAAG,MAAO,GAAE,EAAO,QAAQ,EAAE,EAAO,QAAQ,KAAK,G,qBCA3Y,QAQE,UAAU,EAAQ,EAAU,CAE5B,aAIE,EAAQ,EAAO,qEAShB,OAAQ,UAAmB,CAC5B,aAEA,GAAI,GAAkB,UAAW,CAC/B,GAAI,GAAY,OAAO,QAAQ,UAE/B,GAAK,EAAU,QACb,MAAO,UAGT,GAAK,EAAU,gBACb,MAAO,kBAKT,OAFI,GAAW,CAAE,SAAU,MAAO,KAAM,KAE9B,EAAE,EAAG,EAAI,EAAS,OAAQ,IAAM,CACxC,GAAI,GAAS,EAAS,GAClB,EAAS,EAAS,kBACtB,GAAK,EAAW,GACd,MAAO,OAKb,MAAO,UAA0B,EAAM,EAAW,CAChD,MAAO,GAAM,GAAiB,O,qBCjDlC,QAQE,UAAU,EAAQ,EAAU,CAK1B,EAAQ,EAAO,qEAShB,MAAO,SAAU,YAAc,OAAS,KAAM,UAAW,CAE5D,aAEA,YAAqB,EAErB,GAAI,GAAQ,EAAU,UAEtB,SAAM,GAAK,SAAU,EAAW,EAAW,CACzC,GAAK,GAAC,GAAa,CAAC,GAIpB,IAAI,GAAS,KAAK,QAAU,KAAK,SAAW,GAExC,EAAY,EAAQ,GAAc,EAAQ,IAAe,GAE7D,MAAK,GAAU,QAAS,IAAc,IACpC,EAAU,KAAM,GAGX,OAGT,EAAM,KAAO,SAAU,EAAW,EAAW,CAC3C,GAAK,GAAC,GAAa,CAAC,GAIpB,MAAK,GAAI,EAAW,GAGpB,GAAI,GAAa,KAAK,YAAc,KAAK,aAAe,GAEpD,EAAgB,EAAY,GAAc,EAAY,IAAe,GAEzE,SAAe,GAAa,GAErB,OAGT,EAAM,IAAM,SAAU,EAAW,EAAW,CAC1C,GAAI,GAAY,KAAK,SAAW,KAAK,QAAS,GAC9C,GAAK,GAAC,GAAa,CAAC,EAAU,QAG9B,IAAI,GAAQ,EAAU,QAAS,GAC/B,MAAK,IAAS,IACZ,EAAU,OAAQ,EAAO,GAGpB,OAGT,EAAM,UAAY,SAAU,EAAW,EAAO,CAC5C,GAAI,GAAY,KAAK,SAAW,KAAK,QAAS,GAC9C,GAAK,GAAC,GAAa,CAAC,EAAU,QAI9B,GAAY,EAAU,MAAM,GAC5B,EAAO,GAAQ,GAIf,OAFI,GAAgB,KAAK,aAAe,KAAK,YAAa,GAEhD,EAAE,EAAG,EAAI,EAAU,OAAQ,IAAM,CACzC,GAAI,GAAW,EAAU,GACrB,GAAS,GAAiB,EAAe,GACxC,IAGH,MAAK,IAAK,EAAW,GAErB,MAAO,GAAe,IAGxB,EAAS,MAAO,KAAM,GAGxB,MAAO,QAGT,EAAM,OAAS,UAAW,CACxB,MAAO,MAAK,QACZ,MAAO,MAAK,aAGP,K,8BCvGP,EAAO,QAAU,WAAe,EAAG,EAAG,CACpC,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAI,GAAK,GAAK,MAAO,IAAK,UAAY,MAAO,IAAK,SAAU,CAC1D,GAAI,EAAE,cAAgB,EAAE,YAAa,MAAO,GAE5C,GAAI,GAAQ,EAAG,EACf,GAAI,MAAM,QAAQ,GAAI,CAEpB,GADA,EAAS,EAAE,OACP,GAAU,EAAE,OAAQ,MAAO,GAC/B,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,EAAM,EAAE,GAAI,EAAE,IAAK,MAAO,GACjC,MAAO,GAKT,GAAI,EAAE,cAAgB,OAAQ,MAAO,GAAE,SAAW,EAAE,QAAU,EAAE,QAAU,EAAE,MAC5E,GAAI,EAAE,UAAY,OAAO,UAAU,QAAS,MAAO,GAAE,YAAc,EAAE,UACrE,GAAI,EAAE,WAAa,OAAO,UAAU,SAAU,MAAO,GAAE,aAAe,EAAE,WAIxE,GAFA,EAAO,OAAO,KAAK,GACnB,EAAS,EAAK,OACV,IAAW,OAAO,KAAK,GAAG,OAAQ,MAAO,GAE7C,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAK,EAAG,EAAK,IAAK,MAAO,GAEhE,IAAK,EAAI,EAAQ,MAAQ,GAAI,CAC3B,GAAI,GAAM,EAAK,GAEf,GAAI,CAAC,EAAM,EAAE,GAAM,EAAE,IAAO,MAAO,GAGrC,MAAO,GAIT,MAAO,KAAI,GAAK,IAAI,I,qBC5CtB,QAOE,UAAU,EAAQ,EAAU,CAM1B,EAAQ,CACN,SACC,WAAU,EAAkB,CAC7B,MAAO,GAAS,EAAQ,IACzB,uCAeF,OAAQ,SAAkB,EAAQ,EAAkB,CAEvD,aAEA,GAAI,GAAQ,GAKZ,EAAM,OAAS,SAAU,EAAG,EAAI,CAC9B,OAAU,MAAQ,GAChB,EAAG,IAAS,EAAG,IAEjB,MAAO,IAKT,EAAM,OAAS,SAAU,EAAK,EAAM,CAClC,MAAW,GAAM,EAAQ,GAAQ,GAKnC,GAAI,GAAa,MAAM,UAAU,MAGjC,EAAM,UAAY,SAAU,EAAM,CAChC,GAAK,MAAM,QAAS,GAElB,MAAO,GAGT,GAAK,GAAQ,KACX,MAAO,GAGT,GAAI,GAAc,MAAO,IAAO,UAAY,MAAO,GAAI,QAAU,SACjE,MAAK,GAEI,EAAW,KAAM,GAInB,CAAE,IAKX,EAAM,WAAa,SAAU,EAAK,EAAM,CACtC,GAAI,IAAQ,EAAI,QAAS,GACpB,IAAS,IACZ,EAAI,OAAQ,GAAO,IAMvB,EAAM,UAAY,SAAU,EAAM,EAAW,CAC3C,KAAQ,EAAK,YAAc,GAAQ,SAAS,MAE1C,GADA,EAAO,EAAK,WACP,EAAiB,EAAM,GAC1B,MAAO,IAQb,EAAM,gBAAkB,SAAU,EAAO,CACvC,MAAK,OAAO,IAAQ,SACX,SAAS,cAAe,GAE1B,GAMT,EAAM,YAAc,SAAU,EAAQ,CACpC,GAAI,GAAS,KAAO,EAAM,KACrB,KAAM,IACT,KAAM,GAAU,IAMpB,EAAM,mBAAqB,SAAU,EAAO,EAAW,CAErD,EAAQ,EAAM,UAAW,GACzB,GAAI,IAAU,GAEd,SAAM,QAAS,SAAU,GAAO,CAE9B,GAAQ,aAAgB,aAIxB,IAAK,CAAC,EAAW,CACf,GAAQ,KAAM,IACd,OAIG,EAAiB,GAAM,IAC1B,GAAQ,KAAM,IAKhB,OAFI,IAAa,GAAK,iBAAkB,GAE9B,GAAE,EAAG,GAAI,GAAW,OAAQ,KACpC,GAAQ,KAAM,GAAW,QAItB,IAKT,EAAM,eAAiB,SAAU,EAAQ,EAAY,GAAY,CAC/D,GAAY,IAAa,IAEzB,GAAI,IAAS,EAAO,UAAW,GAC3B,GAAc,EAAa,UAE/B,EAAO,UAAW,GAAe,UAAW,CAC1C,GAAI,IAAU,KAAM,IACpB,aAAc,IAEd,GAAI,IAAO,UACP,GAAQ,KACZ,KAAM,IAAgB,WAAY,UAAW,CAC3C,GAAO,MAAO,GAAO,IACrB,MAAO,IAAO,KACb,MAMP,EAAM,SAAW,SAAU,EAAW,CACpC,GAAI,GAAa,SAAS,WACrB,GAAc,YAAc,GAAc,cAE7C,WAAY,GAEZ,SAAS,iBAAkB,mBAAoB,IAOnD,EAAM,SAAW,SAAU,EAAM,CAC/B,MAAO,GAAI,QAAS,cAAe,SAAU,EAAO,GAAI,GAAK,CAC3D,MAAO,IAAK,IAAM,KACjB,eAGL,GAAI,GAAU,EAAO,QAMrB,SAAM,SAAW,SAAU,EAAa,EAAY,CAClD,EAAM,SAAU,UAAW,CACzB,GAAI,IAAkB,EAAM,SAAU,GAClC,GAAW,QAAU,GACrB,GAAgB,SAAS,iBAAkB,IAAM,GAAW,KAC5D,GAAc,SAAS,iBAAkB,OAAS,IAClD,GAAQ,EAAM,UAAW,IAC1B,OAAQ,EAAM,UAAW,KACxB,GAAkB,GAAW,WAC7B,GAAS,EAAO,OAEpB,GAAM,QAAS,SAAU,GAAO,CAC9B,GAAI,GAAO,GAAK,aAAc,KAC5B,GAAK,aAAc,IACjB,EACJ,GAAI,CACF,EAAU,GAAQ,KAAK,MAAO,SACtB,GAAR,CAEK,GACH,EAAQ,MAAO,iBAAmB,GAAW,OAAS,GAAK,UAC3D,KAAO,IAET,OAGF,GAAI,IAAW,GAAI,GAAa,GAAM,GAEjC,IACH,GAAO,KAAM,GAAM,EAAW,SAS/B,K,qBC9OP;AAAA;AAAA;AAAA;AAAA,EASE,UAAU,EAAQ,EAAU,CAI1B,EAAQ,EAAO,qEASf,OAAQ,UAAmB,CAC/B,aAKA,WAAuB,GAAQ,CAC7B,GAAI,IAAM,WAAY,IAElB,GAAU,GAAM,QAAQ,MAAQ,IAAM,CAAC,MAAO,IAClD,MAAO,KAAW,GAGpB,YAAgB,EAEhB,GAAI,GAAW,MAAO,UAAW,YAAc,EAC7C,SAAU,GAAU,CAClB,QAAQ,MAAO,KAKf,EAAe,CACjB,cACA,eACA,aACA,gBACA,aACA,cACA,YACA,eACA,kBACA,mBACA,iBACA,qBAGE,EAAqB,EAAa,OAEtC,YAAuB,CASrB,OARI,IAAO,CACT,MAAO,EACP,OAAQ,EACR,WAAY,EACZ,YAAa,EACb,WAAY,EACZ,YAAa,GAEL,GAAE,EAAG,GAAI,EAAoB,KAAM,CAC3C,GAAI,IAAc,EAAa,IAC/B,GAAM,IAAgB,EAExB,MAAO,IAST,WAAmB,GAAO,CACxB,GAAI,IAAQ,iBAAkB,IAC9B,MAAM,KACJ,EAAU,kBAAoB,GAC5B,6FAGG,GAKT,GAAI,IAAU,GAEV,GAOJ,aAAiB,CAEf,GAAK,IAGL,IAAU,GAQV,GAAI,IAAM,SAAS,cAAc,OACjC,GAAI,MAAM,MAAQ,QAClB,GAAI,MAAM,QAAU,kBACpB,GAAI,MAAM,YAAc,QACxB,GAAI,MAAM,YAAc,kBACxB,GAAI,MAAM,UAAY,aAEtB,GAAI,IAAO,SAAS,MAAQ,SAAS,gBACrC,GAAK,YAAa,IAClB,GAAI,IAAQ,EAAU,IAEtB,GAAiB,KAAK,MAAO,EAAc,GAAM,SAAa,IAC9D,GAAQ,eAAiB,GAEzB,GAAK,YAAa,KAKpB,YAAkB,GAAO,CASvB,GARA,KAGK,MAAO,KAAQ,UAClB,IAAO,SAAS,cAAe,KAI5B,GAAC,IAAQ,MAAO,KAAQ,UAAY,CAAC,GAAK,UAI/C,IAAI,IAAQ,EAAU,IAGtB,GAAK,GAAM,SAAW,OACpB,MAAO,KAGT,GAAI,IAAO,GACX,GAAK,MAAQ,GAAK,YAClB,GAAK,OAAS,GAAK,aAKnB,OAHI,IAAc,GAAK,YAAc,GAAM,WAAa,aAG9C,EAAE,EAAG,EAAI,EAAoB,IAAM,CAC3C,GAAI,GAAc,EAAa,GAC3B,GAAQ,GAAO,GACf,GAAM,WAAY,IAEtB,GAAM,GAAiB,MAAO,IAAc,EAAN,GAGxC,GAAI,IAAe,GAAK,YAAc,GAAK,aACvC,GAAgB,GAAK,WAAa,GAAK,cACvC,GAAc,GAAK,WAAa,GAAK,YACrC,GAAe,GAAK,UAAY,GAAK,aACrC,GAAc,GAAK,gBAAkB,GAAK,iBAC1C,GAAe,GAAK,eAAiB,GAAK,kBAE1C,GAAuB,IAAe,GAGtC,GAAa,EAAc,GAAM,OAChC,KAAe,IAClB,IAAK,MAAQ,GAET,IAAuB,EAAI,GAAe,KAGhD,GAAI,IAAc,EAAc,GAAM,QACtC,MAAK,MAAgB,IACnB,IAAK,OAAS,GAEV,IAAuB,EAAI,GAAgB,KAGjD,GAAK,WAAa,GAAK,MAAU,IAAe,IAChD,GAAK,YAAc,GAAK,OAAW,IAAgB,IAEnD,GAAK,WAAa,GAAK,MAAQ,GAC/B,GAAK,YAAc,GAAK,OAAS,GAE1B,IAGT,MAAO,O,iBC3MP,EAAO,QAAU,SAAe,EAAK,EAAM,EAAI,CAC7C,GAAI,GAAO,SAAS,MAAQ,SAAS,qBAAqB,QAAQ,GAC9D,EAAS,SAAS,cAAc,UAEhC,MAAO,IAAS,YAClB,GAAK,EACL,EAAO,IAGT,EAAO,GAAQ,GACf,EAAK,GAAM,UAAW,GAEtB,EAAO,KAAO,EAAK,MAAQ,kBAC3B,EAAO,QAAU,EAAK,SAAW,OACjC,EAAO,MAAQ,SAAW,GAAO,CAAC,CAAC,EAAK,MAAQ,GAChD,EAAO,IAAM,EAET,EAAK,OACP,EAAc,EAAQ,EAAK,OAGzB,EAAK,MACP,GAAO,KAAO,GAAK,EAAK,MAG1B,GAAI,GAAQ,UAAY,GAAS,EAAW,EAC5C,EAAM,EAAQ,GAKT,EAAO,QACV,EAAS,EAAQ,GAGnB,EAAK,YAAY,IAGnB,WAAuB,EAAQ,EAAO,CACpC,OAAS,KAAQ,GACf,EAAO,aAAa,EAAM,EAAM,IAIpC,WAAmB,EAAQ,EAAI,CAC7B,EAAO,OAAS,UAAY,CAC1B,KAAK,QAAU,KAAK,OAAS,KAC7B,EAAG,KAAM,IAEX,EAAO,QAAU,UAAY,CAG3B,KAAK,QAAU,KAAK,OAAS,KAC7B,EAAG,GAAI,OAAM,kBAAoB,KAAK,KAAM,IAIhD,WAAkB,EAAQ,EAAI,CAC5B,EAAO,mBAAqB,UAAY,CAClC,KAAK,YAAc,YAAc,KAAK,YAAc,UACxD,MAAK,mBAAqB,KAC1B,EAAG,KAAM,O,qBCpDb,GAAI,GAAkB,sBAGlB,EAAM,EAAI,EAGV,EAAY,kBAGZ,EAAS,aAGT,EAAa,qBAGb,EAAa,aAGb,EAAY,cAGZ,EAAe,SAGf,EAAa,MAAO,MAAU,UAAY,KAAU,IAAO,SAAW,QAAU,IAGhF,EAAW,MAAO,OAAQ,UAAY,MAAQ,KAAK,SAAW,QAAU,KAGxE,GAAO,GAAc,GAAY,SAAS,iBAG1C,GAAc,OAAO,UAOrB,GAAiB,GAAY,SAG7B,GAAY,KAAK,IACjB,GAAY,KAAK,IAkBjB,GAAM,UAAW,CACnB,MAAO,IAAK,KAAK,OAyDnB,YAAkB,GAAM,GAAM,GAAS,CACrC,GAAI,IACA,GACA,GACA,GACA,GACA,GACA,GAAiB,EACjB,GAAU,GACV,GAAS,GACT,GAAW,GAEf,GAAI,MAAO,KAAQ,WACjB,KAAM,IAAI,WAAU,GAEtB,GAAO,GAAS,KAAS,EACrB,GAAS,KACX,IAAU,CAAC,CAAC,GAAQ,QACpB,GAAS,WAAa,IACtB,GAAU,GAAS,GAAU,GAAS,GAAQ,UAAY,EAAG,IAAQ,GACrE,GAAW,YAAc,IAAU,CAAC,CAAC,GAAQ,SAAW,IAG1D,YAAoB,GAAM,CACxB,GAAI,IAAO,GACP,GAAU,GAEd,UAAW,GAAW,OACtB,GAAiB,GACjB,GAAS,GAAK,MAAM,GAAS,IACtB,GAGT,YAAqB,GAAM,CAEzB,UAAiB,GAEjB,GAAU,WAAW,GAAc,IAE5B,GAAU,GAAW,IAAQ,GAGtC,YAAuB,GAAM,CAC3B,GAAI,IAAoB,GAAO,GAC3B,GAAsB,GAAO,GAC7B,GAAS,GAAO,GAEpB,MAAO,IAAS,GAAU,GAAQ,GAAU,IAAuB,GAGrE,YAAsB,GAAM,CAC1B,GAAI,IAAoB,GAAO,GAC3B,GAAsB,GAAO,GAKjC,MAAQ,MAAiB,QAAc,IAAqB,IACzD,GAAoB,GAAO,IAAU,IAAuB,GAGjE,aAAwB,CACtB,GAAI,IAAO,KACX,GAAI,GAAa,IACf,MAAO,IAAa,IAGtB,GAAU,WAAW,GAAc,GAAc,KAGnD,YAAsB,GAAM,CAK1B,MAJA,IAAU,OAIN,IAAY,GACP,GAAW,IAEpB,IAAW,GAAW,OACf,IAGT,aAAkB,CACZ,KAAY,QACd,aAAa,IAEf,GAAiB,EACjB,GAAW,GAAe,GAAW,GAAU,OAGjD,aAAiB,CACf,MAAO,MAAY,OAAY,GAAS,GAAa,MAGvD,aAAqB,CACnB,GAAI,IAAO,KACP,GAAa,GAAa,IAM9B,GAJA,GAAW,UACX,GAAW,KACX,GAAe,GAEX,GAAY,CACd,GAAI,KAAY,OACd,MAAO,IAAY,IAErB,GAAI,GAEF,UAAU,WAAW,GAAc,IAC5B,GAAW,IAGtB,MAAI,MAAY,QACd,IAAU,WAAW,GAAc,KAE9B,GAET,UAAU,OAAS,GACnB,GAAU,MAAQ,GACX,GA4BT,YAAkB,GAAO,CACvB,GAAI,IAAO,MAAO,IAClB,MAAO,CAAC,CAAC,IAAU,KAAQ,UAAY,IAAQ,YA2BjD,WAAsB,GAAO,CAC3B,MAAO,CAAC,CAAC,IAAS,MAAO,KAAS,SAoBpC,WAAkB,GAAO,CACvB,MAAO,OAAO,KAAS,UACpB,EAAa,KAAU,GAAe,KAAK,KAAU,EA0B1D,YAAkB,GAAO,CACvB,GAAI,MAAO,KAAS,SAClB,MAAO,IAET,GAAI,EAAS,IACX,MAAO,GAET,GAAI,GAAS,IAAQ,CACnB,GAAI,IAAQ,MAAO,IAAM,SAAW,WAAa,GAAM,UAAY,GACnE,GAAQ,GAAS,IAAU,GAAQ,GAAM,GAE3C,GAAI,MAAO,KAAS,SAClB,MAAO,MAAU,EAAI,GAAQ,CAAC,GAEhC,GAAQ,GAAM,QAAQ,EAAQ,IAC9B,GAAI,IAAW,EAAW,KAAK,IAC/B,MAAQ,KAAY,EAAU,KAAK,IAC/B,EAAa,GAAM,MAAM,GAAI,GAAW,EAAI,GAC3C,EAAW,KAAK,IAAS,EAAM,CAAC,GAGvC,EAAO,QAAU,I,qBCxXjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,UAAU,EAAQ,EAAU,CAK1B,EAAQ,CACJ,QACA,SACD,EACD,EAAO,kEAeV,OAAQ,SAAkB,EAAU,EAAU,CAEjD,aAKE,GAAI,GAAU,EAAS,OAAO,WAE9B,EAAQ,cAAc,SAAW,aAEjC,GAAI,GAAQ,EAAQ,UAEpB,SAAM,aAAe,UAAW,CAC9B,KAAK,UACL,KAAK,gBAAiB,cAAe,cACrC,KAAK,gBAAiB,SAAU,cAChC,KAAK,iBAGL,KAAK,MAAQ,GACb,OAAU,GAAE,EAAG,EAAI,KAAK,KAAM,IAC5B,KAAK,MAAM,KAAM,GAGnB,KAAK,KAAO,EACZ,KAAK,mBAAqB,GAG5B,EAAM,eAAiB,UAAW,CAGhC,GAFA,KAAK,oBAEA,CAAC,KAAK,YAAc,CACvB,GAAI,GAAY,KAAK,MAAM,GACvB,EAAgB,GAAa,EAAU,QAE3C,KAAK,YAAc,GAAiB,EAAS,GAAgB,YAE3D,KAAK,eAGT,GAAI,IAAc,KAAK,aAAe,KAAK,OAGvC,GAAiB,KAAK,eAAiB,KAAK,OAC5C,GAAO,GAAiB,GAExB,GAAS,GAAc,GAAiB,GAExC,GAAa,IAAU,GAAS,EAAI,QAAU,QAClD,GAAO,KAAM,IAAc,IAC3B,KAAK,KAAO,KAAK,IAAK,GAAM,IAG9B,EAAM,kBAAoB,UAAW,CAEnC,GAAI,GAAa,KAAK,WAAW,YAC7B,EAAY,EAAa,KAAK,QAAQ,WAAa,KAAK,QAGxD,GAAO,EAAS,GACpB,KAAK,eAAiB,IAAQ,GAAK,YAGrC,EAAM,uBAAyB,SAAU,EAAO,CAC9C,EAAK,UAEL,GAAI,GAAY,EAAK,KAAK,WAAa,KAAK,YACxC,GAAa,GAAa,EAAY,EAAI,QAAU,OAEpD,GAAU,KAAM,IAAc,EAAK,KAAK,WAAa,KAAK,aAC9D,GAAU,KAAK,IAAK,GAAS,KAAK,MAalC,OAXI,IAAe,KAAK,QAAQ,gBAC9B,4BAA8B,qBAC5B,GAAc,KAAM,IAAgB,GAAS,GAE7C,GAAW,CACb,EAAG,KAAK,YAAc,GAAY,IAClC,EAAG,GAAY,GAGb,GAAY,GAAY,EAAI,EAAK,KAAK,YACtC,GAAS,GAAU,GAAY,IACzB,GAAI,GAAY,IAAK,GAAI,GAAQ,KACzC,KAAK,MAAM,IAAK,GAGlB,MAAO,KAGT,EAAM,mBAAqB,SAAU,EAAU,CAC7C,GAAI,GAAW,KAAK,gBAAiB,GAEjC,GAAW,KAAK,IAAI,MAAO,KAAM,GAErC,MAAO,CACL,IAAK,EAAS,QAAS,IACvB,EAAG,KAQP,EAAM,gBAAkB,SAAU,EAAU,CAC1C,GAAK,EAAU,EAEb,MAAO,MAAK,MAOd,OAJI,GAAW,GAEX,GAAa,KAAK,KAAO,EAAI,EAEvB,GAAI,EAAG,GAAI,GAAY,KAC/B,EAAS,IAAK,KAAK,cAAe,GAAG,GAEvC,MAAO,IAGT,EAAM,cAAgB,SAAU,EAAK,EAAU,CAC7C,GAAK,EAAU,EACb,MAAO,MAAK,MAAO,GAGrB,GAAI,IAAa,KAAK,MAAM,MAAO,EAAK,EAAM,GAE9C,MAAO,MAAK,IAAI,MAAO,KAAM,KAI/B,EAAM,0BAA4B,SAAU,EAAS,EAAO,CAC1D,GAAI,IAAM,KAAK,mBAAqB,KAAK,KACrC,GAAS,EAAU,GAAK,GAAM,EAAU,KAAK,KAEjD,GAAM,GAAS,EAAI,GAEnB,GAAI,IAAU,EAAK,KAAK,YAAc,EAAK,KAAK,YAChD,YAAK,mBAAqB,GAAU,GAAM,EAAU,KAAK,mBAElD,CACL,IAAK,GACL,EAAG,KAAK,cAAe,GAAK,KAIhC,EAAM,aAAe,SAAU,EAAQ,CACrC,GAAI,GAAY,EAAS,GACrB,GAAS,KAAK,kBAAmB,GAEjC,GAAe,KAAK,WAAW,cAC/B,GAAS,GAAe,GAAO,KAAO,GAAO,MAC7C,GAAQ,GAAS,EAAU,WAC3B,GAAW,KAAK,MAAO,GAAS,KAAK,aACzC,GAAW,KAAK,IAAK,EAAG,IACxB,GAAI,IAAU,KAAK,MAAO,GAAQ,KAAK,aAEvC,IAAW,GAAQ,KAAK,YAAc,EAAI,EAC1C,GAAU,KAAK,IAAK,KAAK,KAAO,EAAG,IAMnC,OAHI,IAAc,KAAK,WAAW,aAC9B,GAAc,IAAc,GAAO,IAAM,GAAO,QAClD,EAAU,YACF,EAAI,GAAU,GAAK,GAAS,IACpC,KAAK,MAAM,GAAK,KAAK,IAAK,GAAW,KAAK,MAAM,KAIpD,EAAM,kBAAoB,UAAW,CACnC,KAAK,KAAO,KAAK,IAAI,MAAO,KAAM,KAAK,OACvC,GAAI,GAAO,CACT,OAAQ,KAAK,MAGf,MAAK,MAAK,WAAW,aACnB,GAAK,MAAQ,KAAK,yBAGb,GAGT,EAAM,sBAAwB,UAAW,CAIvC,OAHI,GAAa,EAEb,EAAI,KAAK,KACL,EAAE,GACH,KAAK,MAAM,KAAO,GAGvB,IAGF,MAAS,MAAK,KAAO,GAAe,KAAK,YAAc,KAAK,QAG9D,EAAM,kBAAoB,UAAW,CACnC,GAAI,GAAgB,KAAK,eACzB,YAAK,oBACE,GAAiB,KAAK,gBAGxB,K,oBC5OT,UAIE,UAAU,EAAQ,EAAU,CAK1B,EAAQ,CACJ,QACA,SACD,EACD,EAAO,kEAiBV,OAAQ,SAAkB,EAAW,EAAU,CAClD,aAIA,WAAqB,EAAM,CACzB,OAAU,KAAQ,GAChB,MAAO,GAET,SAAO,KACA,GAMT,GAAI,GAAe,SAAS,gBAAgB,MAExC,EAAqB,MAAO,GAAa,YAAc,SACzD,aAAe,mBACb,EAAoB,MAAO,GAAa,WAAa,SACvD,YAAc,kBAEZ,GAAqB,CACvB,iBAAkB,sBAClB,WAAY,iBACX,GAGC,GAAmB,CACrB,UAAW,EACX,WAAY,EACZ,mBAAoB,EAAqB,WACzC,mBAAoB,EAAqB,WACzC,gBAAiB,EAAqB,SAKxC,YAAe,EAAS,EAAS,CAC1B,CAAC,GAIN,MAAK,QAAU,EAEf,KAAK,OAAS,EACd,KAAK,SAAW,CACd,EAAG,EACH,EAAG,GAGL,KAAK,WAIP,GAAI,IAAQ,GAAK,UAAY,OAAO,OAAQ,EAAU,WACtD,GAAM,YAAc,GAEpB,GAAM,QAAU,UAAW,CAEzB,KAAK,QAAU,CACb,cAAe,GACf,MAAO,GACP,MAAO,IAGT,KAAK,IAAI,CACP,SAAU,cAKd,GAAM,YAAc,SAAU,EAAQ,CACpC,GAAI,GAAS,KAAO,EAAM,KACrB,KAAM,IACT,KAAM,GAAU,IAIpB,GAAM,QAAU,UAAW,CACzB,KAAK,KAAO,EAAS,KAAK,UAO5B,GAAM,IAAM,SAAU,EAAQ,CAC5B,GAAI,GAAY,KAAK,QAAQ,MAE7B,OAAU,MAAQ,GAAQ,CAExB,GAAI,IAAgB,GAAkB,KAAU,GAChD,EAAW,IAAkB,EAAO,MAKxC,GAAM,YAAc,UAAW,CAC7B,GAAI,GAAQ,iBAAkB,KAAK,SAC/B,EAAe,KAAK,OAAO,WAAW,cACtC,GAAc,KAAK,OAAO,WAAW,aACrC,GAAS,EAAO,EAAe,OAAS,SACxC,GAAS,EAAO,GAAc,MAAQ,UACtC,GAAI,WAAY,IAChB,GAAI,WAAY,IAEhB,GAAa,KAAK,OAAO,KACxB,GAAO,QAAQ,MAAQ,IAC1B,IAAM,GAAI,IAAQ,GAAW,OAE1B,GAAO,QAAQ,MAAQ,IAC1B,IAAM,GAAI,IAAQ,GAAW,QAG/B,GAAI,MAAO,IAAM,EAAI,GACrB,GAAI,MAAO,IAAM,EAAI,GAErB,IAAK,EAAe,GAAW,YAAc,GAAW,aACxD,IAAK,GAAc,GAAW,WAAa,GAAW,cAEtD,KAAK,SAAS,EAAI,GAClB,KAAK,SAAS,EAAI,IAIpB,GAAM,eAAiB,UAAW,CAChC,GAAI,GAAa,KAAK,OAAO,KACzB,EAAQ,GACR,GAAe,KAAK,OAAO,WAAW,cACtC,GAAc,KAAK,OAAO,WAAW,aAGrC,GAAW,GAAe,cAAgB,eAC1C,GAAY,GAAe,OAAS,QACpC,GAAiB,GAAe,QAAU,OAE1C,GAAI,KAAK,SAAS,EAAI,EAAY,IAEtC,EAAO,IAAc,KAAK,UAAW,IAErC,EAAO,IAAmB,GAG1B,GAAI,IAAW,GAAc,aAAe,gBACxC,GAAY,GAAc,MAAQ,SAClC,GAAiB,GAAc,SAAW,MAE1C,GAAI,KAAK,SAAS,EAAI,EAAY,IAEtC,EAAO,IAAc,KAAK,UAAW,IAErC,EAAO,IAAmB,GAE1B,KAAK,IAAK,GACV,KAAK,UAAW,SAAU,CAAE,QAG9B,GAAM,UAAY,SAAU,EAAI,CAC9B,GAAI,GAAe,KAAK,OAAO,WAAW,cAC1C,MAAO,MAAK,OAAO,QAAQ,iBAAmB,CAAC,EACzC,EAAI,KAAK,OAAO,KAAK,MAAU,IAAQ,IAAM,EAAI,MAGzD,GAAM,UAAY,SAAU,EAAI,CAC9B,GAAI,GAAe,KAAK,OAAO,WAAW,cAC1C,MAAO,MAAK,OAAO,QAAQ,iBAAmB,EACxC,EAAI,KAAK,OAAO,KAAK,OAAW,IAAQ,IAAM,EAAI,MAG1D,GAAM,cAAgB,SAAU,EAAG,EAAI,CACrC,KAAK,cAEL,GAAI,IAAO,KAAK,SAAS,EACrB,GAAO,KAAK,SAAS,EAErB,GAAa,GAAK,KAAK,SAAS,GAAK,GAAK,KAAK,SAAS,EAM5D,GAHA,KAAK,YAAa,EAAG,GAGhB,IAAc,CAAC,KAAK,gBAAkB,CACzC,KAAK,iBACL,OAGF,GAAI,IAAS,EAAI,GACb,GAAS,EAAI,GACb,GAAkB,GACtB,GAAgB,UAAY,KAAK,aAAc,GAAQ,IAEvD,KAAK,WAAW,CACd,GAAI,GACJ,gBAAiB,CACf,UAAW,KAAK,gBAElB,WAAY,MAIhB,GAAM,aAAe,SAAU,EAAG,EAAI,CAEpC,GAAI,IAAe,KAAK,OAAO,WAAW,cACtC,GAAc,KAAK,OAAO,WAAW,aACzC,SAAI,GAAe,EAAI,CAAC,EACxB,EAAI,GAAc,EAAI,CAAC,EAChB,eAAiB,EAAI,OAAS,EAAI,UAI3C,GAAM,KAAO,SAAU,EAAG,EAAI,CAC5B,KAAK,YAAa,EAAG,GACrB,KAAK,kBAGP,GAAM,OAAS,GAAM,cAErB,GAAM,YAAc,SAAU,EAAG,EAAI,CACnC,KAAK,SAAS,EAAI,WAAY,GAC9B,KAAK,SAAS,EAAI,WAAY,IAWhC,GAAM,eAAiB,SAAU,EAAO,CACtC,KAAK,IAAK,EAAK,IACV,EAAK,YACR,KAAK,cAAe,EAAK,IAE3B,OAAU,KAAQ,GAAK,gBACrB,EAAK,gBAAiB,GAAO,KAAM,OAYvC,GAAM,WAAa,SAAU,EAAO,CAElC,GAAK,CAAC,WAAY,KAAK,OAAO,QAAQ,oBAAuB,CAC3D,KAAK,eAAgB,GACrB,OAGF,GAAI,GAAc,KAAK,QAEvB,OAAU,MAAQ,GAAK,gBACrB,EAAY,MAAO,IAAS,EAAK,gBAAiB,IAGpD,IAAM,KAAQ,GAAK,GACjB,EAAY,cAAe,IAAS,GAE/B,EAAK,YACR,GAAY,MAAO,IAAS,IAKhC,GAAK,EAAK,KAAO,CACf,KAAK,IAAK,EAAK,MAEf,GAAI,IAAI,KAAK,QAAQ,aAErB,GAAI,KAGN,KAAK,iBAAkB,EAAK,IAE5B,KAAK,IAAK,EAAK,IAEf,KAAK,gBAAkB,IAMzB,YAAsB,EAAM,CAC1B,MAAO,GAAI,QAAS,WAAY,SAAU,EAAK,CAC7C,MAAO,IAAM,EAAG,gBAIpB,GAAI,IAAkB,WAAa,GAAa,GAEhD,GAAM,iBAAmB,UAAsB,CAG7C,GAAK,MAAK,gBAcV,IAAI,GAAW,KAAK,OAAO,QAAQ,mBACnC,EAAW,MAAO,IAAY,SAAW,EAAW,KAAO,EAE3D,KAAK,IAAI,CACP,mBAAoB,GACpB,mBAAoB,EACpB,gBAAiB,KAAK,cAAgB,IAGxC,KAAK,QAAQ,iBAAkB,GAAoB,KAAM,MAK3D,GAAM,sBAAwB,SAAU,EAAQ,CAC9C,KAAK,gBAAiB,IAGxB,GAAM,iBAAmB,SAAU,EAAQ,CACzC,KAAK,gBAAiB,IAIxB,GAAI,IAAyB,CAC3B,oBAAqB,aAGvB,GAAM,gBAAkB,SAAU,EAAQ,CAExC,GAAK,EAAM,SAAW,KAAK,QAG3B,IAAI,GAAc,KAAK,QAEnB,GAAe,GAAwB,EAAM,eAAkB,EAAM,aAgBzE,GAbA,MAAO,GAAY,cAAe,IAE7B,EAAY,EAAY,gBAE3B,KAAK,oBAGF,KAAgB,GAAY,OAE/B,MAAK,QAAQ,MAAO,EAAM,cAAiB,GAC3C,MAAO,GAAY,MAAO,KAGvB,KAAgB,GAAY,MAAQ,CACvC,GAAI,IAAkB,EAAY,MAAO,IACzC,GAAgB,KAAM,MACtB,MAAO,GAAY,MAAO,IAG5B,KAAK,UAAW,gBAAiB,CAAE,SAGrC,GAAM,kBAAoB,UAAW,CACnC,KAAK,yBACL,KAAK,QAAQ,oBAAqB,GAAoB,KAAM,IAC5D,KAAK,gBAAkB,IAOzB,GAAM,cAAgB,SAAU,EAAQ,CAEtC,GAAI,GAAa,GACjB,OAAU,MAAQ,GAChB,EAAY,IAAS,GAEvB,KAAK,IAAK,IAGZ,GAAI,IAAuB,CACzB,mBAAoB,GACpB,mBAAoB,GACpB,gBAAiB,IAGnB,UAAM,uBAAyB,UAAW,CAExC,KAAK,IAAK,KAKZ,GAAM,QAAU,SAAU,EAAQ,CAChC,EAAQ,MAAO,GAAU,EAAI,EAC7B,KAAK,aAAe,EAAQ,MAM9B,GAAM,WAAa,UAAW,CAC5B,KAAK,QAAQ,WAAW,YAAa,KAAK,SAE1C,KAAK,IAAI,CAAE,QAAS,KACpB,KAAK,UAAW,SAAU,CAAE,QAG9B,GAAM,OAAS,UAAW,CAExB,GAAK,CAAC,GAAsB,CAAC,WAAY,KAAK,OAAO,QAAQ,oBAAuB,CAClF,KAAK,aACL,OAIF,KAAK,KAAM,gBAAiB,UAAW,CACrC,KAAK,eAEP,KAAK,QAGP,GAAM,OAAS,UAAW,CACxB,MAAO,MAAK,SAEZ,KAAK,IAAI,CAAE,QAAS,KAEpB,GAAI,GAAU,KAAK,OAAO,QAEtB,EAAkB,GAClB,GAAwB,KAAK,mCAAmC,gBACpE,EAAiB,IAA0B,KAAK,sBAEhD,KAAK,WAAW,CACd,KAAM,EAAQ,YACd,GAAI,EAAQ,aACZ,WAAY,GACZ,gBAAiB,KAIrB,GAAM,sBAAwB,UAAW,CAGjC,KAAK,UACT,KAAK,UAAU,WASnB,GAAM,mCAAqC,SAAU,EAAgB,CACnE,GAAI,GAAc,KAAK,OAAO,QAAS,GAEvC,GAAK,EAAY,QACf,MAAO,UAGT,OAAU,MAAQ,GAChB,MAAO,KAIX,GAAM,KAAO,UAAW,CAEtB,KAAK,SAAW,GAEhB,KAAK,IAAI,CAAE,QAAS,KAEpB,GAAI,GAAU,KAAK,OAAO,QAEtB,EAAkB,GAClB,GAAwB,KAAK,mCAAmC,eACpE,EAAiB,IAA0B,KAAK,oBAEhD,KAAK,WAAW,CACd,KAAM,EAAQ,aACd,GAAI,EAAQ,YAEZ,WAAY,GACZ,gBAAiB,KAIrB,GAAM,oBAAsB,UAAW,CAGhC,KAAK,UACR,MAAK,IAAI,CAAE,QAAS,SACpB,KAAK,UAAU,UAInB,GAAM,QAAU,UAAW,CACzB,KAAK,IAAI,CACP,SAAU,GACV,KAAM,GACN,MAAO,GACP,IAAK,GACL,OAAQ,GACR,WAAY,GACZ,UAAW,MAIR,M,qBCviBP;AAAA;AAAA;AAAA;AAAA,EAME,UAAU,EAAQ,EAAU,CAC5B,aAKE,EAAQ,CACJ,QACA,QACA,QACA,QACD,EACD,SAAU,EAAW,EAAS,EAAO,EAAO,CAC1C,MAAO,GAAS,EAAQ,EAAW,EAAS,EAAO,IACpD,uCAsBJ,OAAQ,SAAkB,EAAQ,EAAW,EAAS,EAAO,EAAO,CACvE,aAIA,GAAI,GAAU,EAAO,QACjB,EAAS,EAAO,OAChB,GAAO,UAAW,GAKlB,GAAO,EAEP,GAAY,GAQhB,YAAmB,EAAS,EAAU,CACpC,GAAI,IAAe,EAAM,gBAAiB,GAC1C,GAAK,CAAC,GAAe,CACd,GACH,EAAQ,MAAO,mBAAqB,KAAK,YAAY,UACnD,KAAS,KAAgB,IAE7B,OAEF,KAAK,QAAU,GAEV,GACH,MAAK,SAAW,EAAQ,KAAK,UAI/B,KAAK,QAAU,EAAM,OAAQ,GAAI,KAAK,YAAY,UAClD,KAAK,OAAQ,GAGb,GAAI,IAAK,EAAE,GACX,KAAK,QAAQ,aAAe,GAC5B,GAAW,IAAO,KAGlB,KAAK,UAEL,GAAI,IAAe,KAAK,WAAW,cAC9B,IACH,KAAK,SAKT,GAAS,UAAY,WACrB,GAAS,KAAO,EAGhB,GAAS,SAAW,CAClB,eAAgB,CACd,SAAU,YAEZ,WAAY,GACZ,WAAY,GACZ,UAAW,GACX,OAAQ,GACR,gBAAiB,GAEjB,mBAAoB,OACpB,YAAa,CACX,QAAS,EACT,UAAW,gBAEb,aAAc,CACZ,QAAS,EACT,UAAW,aAIf,GAAI,IAAQ,GAAS,UAErB,EAAM,OAAQ,GAAO,EAAU,WAM/B,GAAM,OAAS,SAAU,EAAO,CAC9B,EAAM,OAAQ,KAAK,QAAS,IAM9B,GAAM,WAAa,SAAU,EAAS,CACpC,GAAI,GAAY,KAAK,YAAY,cAAe,GAChD,MAAO,IAAa,KAAK,QAAS,KAAgB,OAChD,KAAK,QAAS,GAAc,KAAK,QAAS,IAG9C,GAAS,cAAgB,CAEvB,WAAY,eACZ,WAAY,eACZ,cAAe,kBACf,WAAY,eACZ,UAAW,cACX,OAAQ,gBACR,gBAAiB,uBAGnB,GAAM,QAAU,UAAW,CAEzB,KAAK,cAEL,KAAK,OAAS,GACd,KAAK,MAAO,KAAK,QAAQ,OAEzB,EAAM,OAAQ,KAAK,QAAQ,MAAO,KAAK,QAAQ,gBAG/C,GAAI,GAAgB,KAAK,WAAW,UAC/B,GACH,KAAK,cAKT,GAAM,YAAc,UAAW,CAE7B,KAAK,MAAQ,KAAK,SAAU,KAAK,QAAQ,WAS3C,GAAM,SAAW,SAAU,EAAQ,CAOjC,OALI,GAAY,KAAK,wBAAyB,GAC1C,GAAO,KAAK,YAAY,KAGxB,GAAQ,GACF,GAAE,EAAG,GAAI,EAAU,OAAQ,KAAM,CACzC,GAAI,IAAO,EAAU,IACjB,GAAO,GAAI,IAAM,GAAM,MAC3B,GAAM,KAAM,IAGd,MAAO,KAQT,GAAM,wBAA0B,SAAU,EAAQ,CAChD,MAAO,GAAM,mBAAoB,EAAO,KAAK,QAAQ,eAOvD,GAAM,gBAAkB,UAAW,CACjC,MAAO,MAAK,MAAM,IAAK,SAAU,EAAO,CACtC,MAAO,GAAK,WAShB,GAAM,OAAS,UAAW,CACxB,KAAK,eACL,KAAK,gBAGL,GAAI,GAAgB,KAAK,WAAW,iBAChC,EAAY,IAAkB,OAChC,EAAgB,CAAC,KAAK,gBACxB,KAAK,YAAa,KAAK,MAAO,GAG9B,KAAK,gBAAkB,IAIzB,GAAM,MAAQ,GAAM,OAKpB,GAAM,aAAe,UAAW,CAC9B,KAAK,WAIP,GAAM,QAAU,UAAW,CACzB,KAAK,KAAO,EAAS,KAAK,UAa5B,GAAM,gBAAkB,SAAU,EAAa,EAAO,CACpD,GAAI,IAAS,KAAK,QAAS,GACvB,GACE,GAKJ,CAAK,MAAO,KAAU,SACpB,GAAO,KAAK,QAAQ,cAAe,IACzB,aAAkB,cAC5B,IAAO,IAGT,KAAM,GAAgB,GAAO,EAAS,IAAQ,GAAS,IATvD,KAAM,GAAgB,GAiB1B,GAAM,YAAc,SAAU,EAAO,EAAY,CAC/C,EAAQ,KAAK,mBAAoB,GAEjC,KAAK,aAAc,EAAO,GAE1B,KAAK,eASP,GAAM,mBAAqB,SAAU,EAAQ,CAC3C,MAAO,GAAM,OAAQ,SAAU,EAAO,CACpC,MAAO,CAAC,EAAK,aASjB,GAAM,aAAe,SAAU,EAAO,EAAY,CAGhD,GAFA,KAAK,qBAAsB,SAAU,GAEhC,GAAC,GAAS,CAAC,EAAM,QAKtB,IAAI,IAAQ,GAEZ,EAAM,QAAS,SAAU,GAAO,CAE9B,GAAI,IAAW,KAAK,uBAAwB,IAE5C,GAAS,KAAO,GAChB,GAAS,UAAY,GAAa,GAAK,gBACvC,GAAM,KAAM,KACX,MAEH,KAAK,oBAAqB,MAQ5B,GAAM,uBAAyB,UAAuB,CACpD,MAAO,CACL,EAAG,EACH,EAAG,IAUP,GAAM,oBAAsB,SAAU,EAAQ,CAC5C,KAAK,gBACL,EAAM,QAAS,SAAU,EAAK,GAAI,CAChC,KAAK,cAAe,EAAI,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,UAAW,KAC1D,OAIL,GAAM,cAAgB,UAAW,CAC/B,GAAI,GAAU,KAAK,QAAQ,QAC3B,GAAK,GAAY,KAAgC,CAC/C,KAAK,QAAU,EACf,OAEF,YAAK,QAAU,GAAiB,GACzB,KAAK,SAUd,GAAM,cAAgB,SAAU,EAAM,EAAG,GAAG,GAAW,GAAI,CACpD,GAEH,EAAK,KAAM,EAAG,IAEd,GAAK,QAAS,GAAI,KAAK,SACvB,EAAK,OAAQ,EAAG,MAQpB,GAAM,YAAc,UAAW,CAC7B,KAAK,mBAGP,GAAM,gBAAkB,UAAW,CACjC,GAAI,GAAsB,KAAK,WAAW,mBAC1C,GAAK,EAAC,EAGN,IAAI,GAAO,KAAK,oBACX,GACH,MAAK,qBAAsB,EAAK,MAAO,IACvC,KAAK,qBAAsB,EAAK,OAAQ,OAU5C,GAAM,kBAAoB,GAM1B,GAAM,qBAAuB,SAAU,EAAS,EAAU,CACxD,GAAK,IAAY,OAIjB,IAAI,IAAW,KAAK,KAEf,GAAS,aACZ,IAAW,EAAU,GAAS,YAAc,GAAS,aACnD,GAAS,gBAAkB,GAAS,iBACpC,GAAS,cAAgB,GAAS,WAClC,GAAS,eAAiB,GAAS,mBAGvC,EAAU,KAAK,IAAK,EAAS,GAC7B,KAAK,QAAQ,MAAO,EAAU,QAAU,UAAa,EAAU,OAQjE,GAAM,qBAAuB,SAAU,EAAW,EAAQ,CACxD,GAAI,IAAQ,KACZ,aAAsB,CACpB,GAAM,cAAe,EAAY,WAAY,KAAM,CAAE,IAGvD,GAAI,IAAQ,EAAM,OAClB,GAAK,CAAC,GAAS,CAAC,GAAQ,CACtB,KACA,OAGF,GAAI,IAAY,EAChB,aAAgB,CACd,KACK,IAAa,IAChB,KAKJ,EAAM,QAAS,SAAU,GAAO,CAC9B,GAAK,KAAM,EAAW,OAU1B,GAAM,cAAgB,SAAU,EAAM,EAAO,GAAO,CAElD,GAAI,IAAW,EAAQ,CAAE,GAAQ,OAAQ,IAAS,GAGlD,GAFA,KAAK,UAAW,EAAM,IAEjB,EAGH,GADA,KAAK,SAAW,KAAK,UAAY,EAAQ,KAAK,SACzC,EAAQ,CAEX,GAAI,IAAS,EAAO,MAAO,GAC3B,GAAO,KAAO,EACd,KAAK,SAAS,QAAS,GAAQ,QAG/B,MAAK,SAAS,QAAS,EAAM,KAanC,GAAM,OAAS,SAAU,EAAO,CAC9B,GAAI,GAAO,KAAK,QAAS,GACpB,GACH,GAAK,UAAY,KAQrB,GAAM,SAAW,SAAU,EAAO,CAChC,GAAI,GAAO,KAAK,QAAS,GACpB,GACH,MAAO,GAAK,WAQhB,GAAM,MAAQ,SAAU,EAAQ,CAE9B,EADQ,KAAK,MAAO,GACf,EAAC,GAIN,MAAK,OAAS,KAAK,OAAO,OAAQ,GAElC,EAAM,QAAS,KAAK,OAAQ,QAO9B,GAAM,QAAU,SAAU,EAAQ,CAEhC,EADQ,KAAK,MAAO,GACf,EAAC,GAIN,EAAM,QAAS,SAAU,EAAO,CAE9B,EAAM,WAAY,KAAK,OAAQ,GAC/B,KAAK,SAAU,IACd,OAQL,GAAM,MAAQ,SAAU,EAAQ,CAC9B,GAAK,EAAC,EAIN,MAAK,OAAO,IAAS,UACnB,GAAQ,KAAK,QAAQ,iBAAkB,IAEzC,EAAQ,EAAM,UAAW,GAClB,GAGT,GAAM,cAAgB,UAAW,CAC1B,CAAC,KAAK,QAAU,CAAC,KAAK,OAAO,QAIlC,MAAK,mBAEL,KAAK,OAAO,QAAS,KAAK,aAAc,QAI1C,GAAM,iBAAmB,UAAW,CAElC,GAAI,GAAe,KAAK,QAAQ,wBAC5B,EAAO,KAAK,KAChB,KAAK,cAAgB,CACnB,KAAM,EAAa,KAAO,EAAK,YAAc,EAAK,gBAClD,IAAK,EAAa,IAAM,EAAK,WAAa,EAAK,eAC/C,MAAO,EAAa,MAAU,GAAK,aAAe,EAAK,kBACvD,OAAQ,EAAa,OAAW,GAAK,cAAgB,EAAK,qBAO9D,GAAM,aAAe,GAOrB,GAAM,kBAAoB,SAAU,EAAO,CACzC,GAAI,GAAe,EAAK,wBACpB,GAAW,KAAK,cAChB,GAAO,EAAS,GAChB,GAAS,CACX,KAAM,EAAa,KAAO,GAAS,KAAO,GAAK,WAC/C,IAAK,EAAa,IAAM,GAAS,IAAM,GAAK,UAC5C,MAAO,GAAS,MAAQ,EAAa,MAAQ,GAAK,YAClD,OAAQ,GAAS,OAAS,EAAa,OAAS,GAAK,cAEvD,MAAO,KAOT,GAAM,YAAc,EAAM,YAK1B,GAAM,WAAa,UAAW,CAC5B,EAAO,iBAAkB,SAAU,MACnC,KAAK,cAAgB,IAMvB,GAAM,aAAe,UAAW,CAC9B,EAAO,oBAAqB,SAAU,MACtC,KAAK,cAAgB,IAGvB,GAAM,SAAW,UAAW,CAC1B,KAAK,UAGP,EAAM,eAAgB,GAAU,WAAY,KAE5C,GAAM,OAAS,UAAW,CAGnB,CAAC,KAAK,eAAiB,CAAC,KAAK,qBAIlC,KAAK,UAOP,GAAM,kBAAoB,UAAW,CACnC,GAAI,GAAO,EAAS,KAAK,SAGrB,EAAW,KAAK,MAAQ,EAC5B,MAAO,IAAY,EAAK,aAAe,KAAK,KAAK,YAUnD,GAAM,SAAW,SAAU,EAAQ,CACjC,GAAI,GAAQ,KAAK,SAAU,GAE3B,MAAK,GAAM,QACT,MAAK,MAAQ,KAAK,MAAM,OAAQ,IAE3B,GAOT,GAAM,SAAW,SAAU,EAAQ,CACjC,GAAI,GAAQ,KAAK,SAAU,GACtB,CAAC,EAAM,QAIZ,MAAK,YAAa,EAAO,IACzB,KAAK,OAAQ,KAOf,GAAM,UAAY,SAAU,EAAQ,CAClC,GAAI,GAAQ,KAAK,SAAU,GAC3B,GAAK,EAAC,EAAM,OAIZ,IAAI,IAAgB,KAAK,MAAM,MAAM,GACrC,KAAK,MAAQ,EAAM,OAAQ,IAE3B,KAAK,eACL,KAAK,gBAEL,KAAK,YAAa,EAAO,IACzB,KAAK,OAAQ,GAEb,KAAK,YAAa,MAOpB,GAAM,OAAS,SAAU,EAAQ,CAE/B,GADA,KAAK,qBAAsB,SAAU,GAChC,GAAC,GAAS,CAAC,EAAM,QAGtB,IAAI,GAAU,KAAK,gBACnB,EAAM,QAAS,SAAU,GAAM,GAAI,CACjC,GAAK,QAAS,GAAI,GAClB,GAAK,aAQT,GAAM,KAAO,SAAU,EAAQ,CAE7B,GADA,KAAK,qBAAsB,OAAQ,GAC9B,GAAC,GAAS,CAAC,EAAM,QAGtB,IAAI,GAAU,KAAK,gBACnB,EAAM,QAAS,SAAU,GAAM,GAAI,CACjC,GAAK,QAAS,GAAI,GAClB,GAAK,WAQT,GAAM,mBAAqB,SAAU,EAAQ,CAC3C,GAAI,GAAQ,KAAK,SAAU,GAC3B,KAAK,OAAQ,IAOf,GAAM,iBAAmB,SAAU,EAAQ,CACzC,GAAI,GAAQ,KAAK,SAAU,GAC3B,KAAK,KAAM,IASb,GAAM,QAAU,SAAU,EAAO,CAE/B,OAAU,GAAE,EAAG,EAAI,KAAK,MAAM,OAAQ,IAAM,CAC1C,GAAI,IAAO,KAAK,MAAM,GACtB,GAAK,GAAK,SAAW,EAEnB,MAAO,MAUb,GAAM,SAAW,SAAU,EAAQ,CACjC,EAAQ,EAAM,UAAW,GACzB,GAAI,GAAQ,GACZ,SAAM,QAAS,SAAU,GAAO,CAC9B,GAAI,IAAO,KAAK,QAAS,IACpB,IACH,EAAM,KAAM,KAEb,MAEI,GAOT,GAAM,OAAS,SAAU,EAAQ,CAC/B,GAAI,GAAc,KAAK,SAAU,GAKjC,KAHK,qBAAsB,SAAU,GAGhC,GAAC,GAAe,CAAC,EAAY,SAIlC,EAAY,QAAS,SAAU,GAAO,CACpC,GAAK,SAEL,EAAM,WAAY,KAAK,MAAO,KAC7B,OAML,GAAM,QAAU,UAAW,CAEzB,GAAI,GAAQ,KAAK,QAAQ,MACzB,EAAM,OAAS,GACf,EAAM,SAAW,GACjB,EAAM,MAAQ,GAEd,KAAK,MAAM,QAAS,SAAU,GAAO,CACnC,GAAK,YAGP,KAAK,eAEL,GAAI,GAAK,KAAK,QAAQ,aACtB,MAAO,IAAW,GAClB,MAAO,MAAK,QAAQ,aAEf,GACH,EAAO,WAAY,KAAK,QAAS,KAAK,YAAY,YAYtD,GAAS,KAAO,SAAU,EAAO,CAC/B,EAAO,EAAM,gBAAiB,GAC9B,GAAI,GAAK,GAAQ,EAAK,aACtB,MAAO,IAAM,GAAW,IAU1B,GAAS,OAAS,SAAU,EAAW,EAAU,CAE/C,GAAI,IAAS,GAAU,IAEvB,UAAO,SAAW,EAAM,OAAQ,GAAI,GAAS,UAC7C,EAAM,OAAQ,GAAO,SAAU,GAC/B,GAAO,cAAgB,EAAM,OAAQ,GAAI,GAAS,eAElD,GAAO,UAAY,EAEnB,GAAO,KAAO,GAAS,KAGvB,GAAO,KAAO,GAAU,GAIxB,EAAM,SAAU,GAAQ,GAKnB,GAAU,EAAO,SACpB,EAAO,QAAS,EAAW,IAGtB,IAGT,YAAmB,EAAS,CAC1B,YAAoB,CAClB,EAAO,MAAO,KAAM,WAGtB,SAAS,UAAY,OAAO,OAAQ,EAAO,WAC3C,EAAS,UAAU,YAAc,EAE1B,EAMT,GAAI,IAAU,CACZ,GAAI,EACJ,EAAG,KAKL,YAA0B,EAAO,CAC/B,GAAK,MAAO,IAAQ,SAClB,MAAO,GAET,GAAI,GAAU,EAAK,MAAO,qBACtB,GAAM,GAAW,EAAQ,GACzB,GAAO,GAAW,EAAQ,GAC9B,GAAK,CAAC,GAAI,OACR,MAAO,GAET,GAAM,WAAY,IAClB,GAAI,IAAO,GAAS,KAAU,EAC9B,MAAO,IAAM,GAMf,UAAS,KAAO,EAET,M,kCC/5BP,GAAI,GAAuB,EAAQ,KAEnC,YAAyB,EACzB,YAAkC,EAClC,EAAuB,kBAAoB,EAE3C,EAAO,QAAU,UAAW,CAC1B,WAAc,EAAO,EAAU,EAAe,EAAU,GAAc,GAAQ,CAC5E,GAAI,KAAW,EAIf,IAAI,IAAM,GAAI,OACZ,mLAIF,SAAI,KAAO,sBACL,IAER,EAAK,WAAa,EAClB,YAAmB,CACjB,MAAO,GAIT,GAAI,GAAiB,CACnB,MAAO,EACP,OAAQ,EACR,KAAM,EACN,KAAM,EACN,OAAQ,EACR,OAAQ,EACR,OAAQ,EACR,OAAQ,EAER,IAAK,EACL,QAAS,EACT,QAAS,EACT,YAAa,EACb,WAAY,EACZ,KAAM,EACN,SAAU,EACV,MAAO,EACP,UAAW,EACX,MAAO,EACP,MAAO,EAEP,eAAgB,EAChB,kBAAmB,GAGrB,SAAe,UAAY,EAEpB,I,qBCxDT,GAAI,GAAuC,YAUzC,GAAO,QAAU,EAAQ,S,6BCR3B,GAAI,GAAuB,+CAE3B,EAAO,QAAU,G,qBCXjB;AAAA;AAAA;AAAA;AAAA,EAKC,UAAS,EAAE,EAAE,CAAsD,EAAE,EAAQ,EAAQ,MAAS,EAAQ,MAAc,EAAQ,MAAQ,EAAQ,MAAmB,EAAQ,MAAoB,EAAQ,KAAmB,EAAQ,MAAuB,EAAQ,MAAqB,EAAQ,MAAoB,EAAQ,MAAqB,EAAQ,MAAsB,EAAQ,MAAwB,EAAQ,MAAqB,EAAQ,KAAoB,EAAQ,MAAqB,EAAQ,MAAsB,EAAQ,MAAwB,EAAQ,MAAqB,EAAQ,MAAuB,EAAQ,MAAuB,EAAQ,MAAqB,EAAQ,MAAmB,EAAQ,MAAoB,EAAQ,MAAuB,EAAQ,MAAqB,EAAQ,MAAuB,EAAQ,MAAoB,EAAQ,MAAoB,EAAQ,MAAuB,EAAQ,MAAuB,EAAQ,MAAqB,EAAQ,MAAqB,EAAQ,MAAuB,EAAQ,MAAoB,EAAQ,MAAgB,EAAQ,MAAgB,EAAQ,MAAqC,EAAQ,MAAuC,EAAQ,MAAsC,EAAQ,MAAyC,EAAQ,MAAuB,EAAQ,MAAwB,EAAQ,MAAyB,EAAQ,MAA2B,EAAQ,MAAwB,EAAQ,MAAqB,EAAQ,MAAsB,EAAQ,KAAuB,EAAQ,MAAsB,EAAQ,MAAoB,EAAQ,MAAsB,EAAQ,MAAwB,EAAQ,MAAuB,EAAQ,MAA0B,EAAQ,MAAoB,EAAQ,MAAqB,EAAQ,MAA6B,EAAQ,MAAmB,EAAQ,MAAkB,EAAQ,MAAqB,EAAQ,MAAY,EAAQ,MAAwB,EAAQ,MAAa,EAAQ,MAAsB,EAAQ,SAAyxE,KAAM,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,EAAE,EAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,aAAa,YAAY,GAAE,CAAC,MAAO,KAAa,MAAO,KAAjB,UAAoB,WAAY,IAAE,GAAE,CAAC,QAAQ,IAAG,GAAI,IAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,YAAY,GAAE,GAAE,EAAE,CAAC,MAAO,IAAE,GAAG,IAAG,SAAS,EAAE,EAAE,CAAC,GAAG,GAAI,CAAU,MAAO,IAAjB,UAAgC,MAAO,IAAnB,YAAsB,MAAO,GAAE,GAAY,IAAT,OAAW,KAAM,IAAI,WAAU,4DAA4D,MAAO,UAAS,GAAE,CAAC,GAAY,KAAT,OAAW,KAAM,IAAI,gBAAe,6DAA6D,MAAO,KAAG,IAAI,GAAE,KAAK,QAAQ,UAAU,GAAE,GAAG,GAAG,GAAG,IAAG,aAAa,GAAE,MAAM,GAAE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAI,IAAE,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAQ,GAAI,UAAU,UAAM,EAAU,MAAO,IAAG,UAAU,CAAC,MAAM,CAAC,CAAC,OAAM,YAAY,GAAE,GAAE,CAAC,GAAI,GAAE,OAAO,KAAK,IAAG,GAAG,OAAO,sBAAsB,CAAC,GAAI,GAAE,OAAO,sBAAsB,IAAG,IAAI,GAAE,EAAE,OAAQ,SAAS,EAAE,CAAC,MAAO,QAAO,yBAAyB,GAAE,GAAG,cAAe,EAAE,KAAK,MAAM,EAAE,GAAG,MAAO,GAAE,YAAY,GAAE,CAAC,OAAQ,IAAE,EAAE,GAAE,UAAU,OAAO,KAAI,CAAC,GAAI,GAAQ,UAAU,KAAhB,KAAmB,UAAU,IAAG,GAAG,GAAE,EAAE,GAAG,OAAO,GAAG,IAAI,QAAS,SAAS,EAAE,CAAC,GAAG,GAAE,EAAE,EAAE,MAAO,OAAO,0BAA0B,OAAO,iBAAiB,GAAE,OAAO,0BAA0B,IAAI,GAAG,OAAO,IAAI,QAAS,SAAS,EAAE,CAAC,OAAO,eAAe,GAAE,EAAE,OAAO,yBAAyB,EAAE,MAAO,MAAO,IAAE,YAAY,GAAE,CAAC,GAAI,IAAE,SAAS,EAAE,EAAE,CAAC,GAAa,MAAO,IAAjB,UAAoB,CAAC,EAAE,MAAO,GAAE,GAAI,GAAE,EAAE,OAAO,aAAa,GAAY,IAAT,OAAW,CAAC,GAAI,IAAE,EAAE,KAAK,EAAE,GAAG,WAAW,GAAa,MAAO,KAAjB,SAAmB,MAAO,IAAE,KAAM,IAAI,WAAU,gDAAgD,MAAO,CAAW,IAAX,SAAa,OAAO,QAAQ,IAAI,GAAE,UAAU,MAAgB,OAAO,KAAjB,SAAmB,GAAE,GAAE,GAAG,YAAY,GAAE,CAAC,MAAO,IAAe,MAAO,SAAnB,YAAqC,MAAO,QAAO,UAAxB,SAAiC,SAAS,GAAE,CAAC,MAAO,OAAO,KAAG,SAAS,GAAE,CAAC,MAAO,KAAe,MAAO,SAAnB,YAA2B,GAAE,cAAc,QAAQ,KAAI,OAAO,UAAU,SAAS,MAAO,KAAG,GAAG,IAAG,YAAY,GAAE,GAAE,CAAC,GAAG,CAAE,cAAa,KAAG,KAAM,IAAI,WAAU,qCAAqC,YAAY,GAAE,GAAE,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAE,OAAO,IAAI,CAAC,GAAI,GAAE,GAAE,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,aAAa,GAAG,SAAU,IAAI,GAAE,SAAS,IAAI,OAAO,eAAe,GAAE,GAAG,EAAE,KAAK,IAAI,YAAY,GAAE,GAAE,EAAE,CAAC,MAAO,KAAG,GAAG,GAAE,UAAU,IAAG,GAAG,GAAG,GAAE,GAAG,OAAO,eAAe,GAAE,YAAY,CAAC,SAAS,KAAK,GAAE,YAAY,GAAE,GAAE,EAAE,CAAC,MAAO,IAAE,GAAG,MAAM,IAAE,OAAO,eAAe,GAAE,GAAE,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,KAAK,GAAE,IAAG,EAAE,GAAE,aAAa,CAAC,MAAO,IAAG,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,GAAE,CAAC,OAAQ,IAAE,EAAE,GAAE,UAAU,OAAO,KAAI,CAAC,GAAI,GAAE,UAAU,IAAG,OAAQ,KAAK,GAAE,OAAO,UAAU,eAAe,KAAK,EAAE,IAAK,IAAE,GAAG,EAAE,IAAI,MAAO,KAAG,GAAG,MAAM,KAAK,WAAW,YAAY,GAAE,GAAE,CAAC,GAAe,MAAO,KAAnB,YAA6B,KAAP,KAAS,KAAM,IAAI,WAAU,sDAAsD,GAAE,UAAU,OAAO,OAAO,IAAG,GAAE,UAAU,CAAC,YAAY,CAAC,MAAM,GAAE,SAAS,GAAG,aAAa,MAAM,OAAO,eAAe,GAAE,YAAY,CAAC,SAAS,KAAK,IAAG,GAAG,GAAE,IAAG,YAAY,GAAE,CAAC,MAAO,IAAG,OAAO,eAAe,OAAO,eAAe,OAAO,SAAS,GAAE,CAAC,MAAO,IAAE,WAAW,OAAO,eAAe,KAAI,GAAG,IAAG,YAAY,GAAE,GAAE,CAAC,MAAO,IAAG,OAAO,eAAe,OAAO,eAAe,OAAO,SAAS,EAAE,EAAE,CAAC,MAAO,GAAE,UAAU,EAAE,GAAG,GAAG,GAAE,IAAG,YAAY,GAAE,CAAC,MAAO,UAAS,GAAE,CAAC,GAAG,MAAM,QAAQ,IAAG,MAAO,IAAG,KAAI,KAAI,SAAS,GAAE,CAAC,GAAgB,MAAO,SAApB,aAAkC,GAAE,OAAO,WAAf,MAAgC,GAAE,eAAR,KAAsB,MAAO,OAAM,KAAK,KAAI,KAAI,SAAS,GAAE,EAAE,CAAC,GAAG,EAAC,GAAS,IAAa,MAAO,KAAjB,SAAmB,MAAO,IAAG,GAAE,GAAG,GAAI,GAAE,OAAO,UAAU,SAAS,KAAK,IAAG,MAAM,EAAE,IAAwD,GAAzC,IAAX,UAAc,GAAE,aAAc,GAAE,GAAE,YAAY,MAAiB,IAAR,OAAmB,IAAR,MAAU,MAAO,OAAM,KAAK,IAAG,GAAiB,IAAd,aAAiB,2CAA2C,KAAK,GAAG,MAAO,IAAG,GAAE,KAAI,KAAI,UAAU,CAAC,KAAM,IAAI,WAAU;AAAA,wFAA2I,YAAY,GAAE,GAAE,CAAE,CAAM,IAAN,MAAS,GAAE,GAAE,SAAU,IAAE,GAAE,QAAQ,OAAQ,GAAE,EAAE,EAAE,GAAI,OAAM,IAAG,EAAE,GAAE,IAAI,EAAE,GAAG,GAAE,GAAG,MAAO,GAAE,GAAI,IAAG,GAAG,GAAG,oCAAoC,YAAY,GAAE,CAAC,GAAI,IAAE,GAAY,MAAO,KAAjB,UAAoB,aAAa,QAAO,GAAG,SAAS,IAAG,GAAG,OAAO,IAAG,GAAI,MAAK,MAAO,IAAG,IAAG,GAAE,KAAK,YAAY,GAAE,GAAE,CAAC,MAAO,IAAE,IAAG,GAAI,MAAK,YAAY,EAAE,QAAQ,KAAI,CAAC,GAAG,SAAS,GAAE,IAAG,YAAY,GAAE,GAAE,EAAE,CAAC,GAAU,IAAP,KAAS,MAAO,GAAE,OAAO,GAAE,GAAE,CAAC,4BAA4B,GAAG,6BAA6B,KAAK,GAAI,GAAE,GAAG,GAAG,MAAO,IAAG,CAAC,GAAG,QAAQ,KAAK,2DAA2D,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,GAAG,OAAQ,GAAE,GAAG,OAAO,EAAE,OAAO,GAAE,GAAE,CAAC,OAAO,GAAG,KAAK,4BAA4B,GAAG,6BAA6B,KAAK,YAAY,GAAE,GAAE,CAAC,GAAI,GAAE,GAAE,WAAW,EAAE,GAAE,OAAO,MAAO,KAAG,GAAG,GAAE,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,YAAY,GAAE,GAAE,CAAC,GAAI,GAAE,GAAE,KAAK,EAAW,IAAT,OAAW,EAAE,EAAE,EAAE,GAAE,OAAO,GAAW,IAAT,OAAW,EAAE,EAAE,EAAE,GAAE,OAAO,EAAW,IAAT,OAAW,EAAE,EAAE,MAAO,IAAE,SAAS,GAAE,WAAW,GAAE,WAAW,GAAE,GAAG,IAAG,GAAG,YAAY,GAAE,GAAE,EAAE,CAAC,GAAI,GAAE,GAAG,IAAG,MAAM,MAAO,IAAE,YAAY,GAAE,CAAC,OAAO,EAAE,aAAa,IAAI,YAAY,GAAE,CAAC,MAAO,IAAE,aAAa,IAAG,YAAY,GAAE,CAAC,MAAO,IAAE,YAAY,IAAG,YAAY,GAAE,CAAC,MAAO,IAAE,eAAe,IAAG,aAAa,CAAC,MAAO,IAAE,WAAW,MAAM,YAAY,GAAE,GAAE,CAAC,MAAO,KAAG,GAAE,GAAE,WAAW,GAAE,IAAG,CAAC,IAAG,CAAC,GAAE,YAAY,GAAE,GAAE,CAAC,MAAO,KAAG,GAAE,GAAE,YAAY,GAAE,IAAG,CAAC,IAAG,CAAC,GAAE,YAAY,GAAE,GAAE,CAAC,MAAO,KAAG,GAAE,GAAG,cAAc,GAAE,IAAG,CAAC,IAAG,CAAC,GAAE,YAAY,GAAE,GAAE,CAAC,MAAO,KAAG,GAAE,GAAE,UAAU,GAAE,IAAG,CAAC,IAAG,CAAC,GAAE,YAAY,GAAE,GAAE,CAAC,MAAO,KAAG,GAAE,GAAE,QAAQ,GAAE,IAAG,CAAC,IAAG,CAAC,GAAE,YAAY,GAAE,GAAE,EAAE,CAAC,GAAI,GAAE,EAAE,GAAE,WAAW,IAAG,GAAE,GAAE,SAAS,GAAG,GAAG,CAAC,EAAE,GAAG,iBAAiB,GAAE,CAAC,MAAM,EAAE,IAAI,UAAI,CAAS,EAAE,GAAG,MAAO,GAAE,aAAa,CAAC,MAAO,CAAa,MAAO,SAApB,YAA2B,OAAO,YAAY,aAAa,YAAY,GAAE,CAAC,GAAa,MAAO,KAAjB,SAAmB,CAAC,GAAI,IAAe,MAAO,SAApB,YAA2B,OAAO,WAAW,MAAO,IAAE,eAAe,GAAE,eAAe,IAAG,KAAK,MAAO,IAAE,YAAY,GAAE,GAAE,CAAC,MAAO,IAAG,GAAE,SAAS,KAAK,IAAG,OAAO,IAAG,YAAY,GAAE,GAAE,CAAC,MAAO,IAAG,GAAE,SAAS,KAAK,IAAG,MAAM,IAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAE,GAAE,qBAAqB,EAAE,GAAE,aAAa,EAAE,GAAE,qBAAqB,GAAE,GAAE,WAAW,MAAO,IAAG,GAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,GAAG,EAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,GAAE,KAAK,GAAE,KAAK,OAAO,IAAG,GAAE,KAAM,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,MAAM,GAAE,GAAE,IAAI,MAAO,IAAG,iBAAiB,GAAE,CAAC,MAAM,GAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,OAAO,GAAG,CAAC,EAAE,KAAM,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,MAAM,GAAE,GAAE,IAAI,MAAO,IAAG,iBAAiB,GAAE,CAAC,MAAM,GAAE,IAAI,QAAQ,IAAG,CAAC,GAAE,GAAG,MAAK,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,aAAa,EAAE,GAAE,qBAAqB,MAAO,IAAG,EAAE,OAAO,EAAE,EAAE,KAAM,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,EAAE,EAAE,IAAI,MAAO,IAAG,iBAAiB,GAAE,CAAC,MAAM,GAAE,IAAI,MAAO,GAAG,EAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAG,GAAE,EAAE,KAAK,EAAE,KAAK,MAAO,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAE,GAAE,aAAa,EAAE,GAAE,WAAW,MAAO,IAAG,GAAE,CAAC,QAAQ,GAAE,aAAa,GAAG,QAAQ,GAAE,WAAW,MAAM,GAAG,EAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAG,GAAE,MAAO,IAAG,CAAC,GAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAG,GAAE,MAAO,GAAG,CAAC,EAAE,GAAG,MAAK,GAAG,YAAY,GAAE,GAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,QAAQ,IAAG,GAAE,GAAE,SAAS,IAAG,EAAE,GAAE,QAAQ,IAAG,EAAE,GAAE,SAAS,IAAG,GAAE,GAAE,QAAQ,GAAG,MAAO,KAAI,GAAG,IAAI,GAAE,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,KAAI,GAAG,IAAG,GAAG,KAAI,GAAG,GAAG,GAAG,GAAE,GAAG,GAAE,EAAE,OAAO,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAE,GAAE,aAAa,EAAE,GAAE,WAAW,MAAO,IAAG,GAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,GAAG,EAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAG,GAAE,MAAO,IAAG,CAAC,GAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAG,GAAE,MAAO,GAAG,CAAC,EAAE,GAAG,MAAK,GAAG,YAAY,GAAE,GAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,KAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAI,GAAE,GAAE,QAAQ,IAAG,EAAE,GAAE,QAAQ,GAAG,MAAO,IAAG,IAAG,GAAG,GAAE,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAE,GAAE,aAAa,EAAE,GAAE,WAAW,EAAE,GAAI,MAAK,GAAE,EAAE,GAAG,MAAO,IAAG,EAAE,CAAC,QAAQ,GAAE,YAAY,GAAG,QAAQ,GAAE,UAAU,MAAM,GAAG,EAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAG,EAAE,OAAO,IAAG,CAAC,GAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAG,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,YAAY,GAAE,GAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,QAAQ,IAAG,GAAE,GAAE,WAAW,IAAG,EAAE,GAAE,QAAQ,IAAG,EAAE,GAAE,WAAW,IAAG,GAAE,GAAE,QAAQ,GAAG,MAAO,KAAI,GAAG,IAAI,GAAE,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,KAAI,GAAG,IAAG,GAAG,KAAI,GAAG,GAAG,GAAG,GAAE,GAAG,GAAE,EAAE,OAAO,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,MAAO,IAAG,GAAE,yBAAyB,GAAE,GAAG,GAAG,GAAG,GAAE,yBAAyB,GAAE,GAAG,EAAE,YAAY,GAAE,GAAE,CAAC,MAAO,IAAE,KAAM,SAAS,EAAE,CAAC,MAAO,IAAE,SAAS,KAAK,GAAE,SAAS,KAAI,GAAE,WAAW,KAAK,GAAE,WAAW,KAAI,EAAE,WAAW,KAAK,EAAE,WAAW,MAAM,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,aAAa,EAAE,GAAE,aAAa,EAAE,GAAE,WAAW,MAAO,IAAG,GAAG,GAAE,IAAI,GAAG,CAAC,GAAG,GAAE,IAAI,GAAG,CAAC,EAAE,KAAI,GAAG,YAAY,GAAE,GAAE,CAAC,GAAI,GAAE,GAAE,QAAQ,EAAE,GAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,KAAM,IAAI,OAAM,2CAA2C,GAAI,GAAE,KAAK,EAAE,GAAE,SAAS,EAAE,GAAE,SAAS,KAAI,EAAE,GAAE,WAAW,EAAE,GAAE,WAAW,KAAI,EAAE,GAAE,WAAW,EAAE,EAAE,WAAW,KAAI,GAAI,IAAE,KAAK,GAAE,GAAE,SAAS,GAAE,GAAE,SAAS,IAAI,GAAE,GAAE,WAAW,GAAE,GAAE,WAAW,IAAI,GAAE,GAAE,WAAW,GAAE,EAAE,WAAW,IAAI,GAAI,GAAE,EAAE,KAAK,EAAE,GAAE,SAAS,EAAE,GAAE,SAAS,IAAI,EAAE,GAAE,WAAW,EAAE,GAAE,WAAW,IAAI,EAAE,GAAE,WAAW,EAAE,EAAE,WAAW,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,MAAM,GAAE,IAAI,SAAI,CAAS,EAAE,GAAG,MAAO,GAAE,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,EAAE,GAAE,UAAU,GAAE,GAAG,MAAO,IAAG,GAAE,2BAA2B,EAAE,GAAG,GAAG,GAAG,EAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,2BAA2B,GAAE,GAAG,KAAM,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,EAAE,GAAE,UAAU,GAAE,GAAG,MAAO,IAAG,GAAE,2BAA2B,EAAE,GAAG,GAAG,GAAG,EAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,2BAA2B,EAAE,IAAG,KAAM,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,EAAE,EAAE,SAAS,GAAE,GAAG,MAAO,IAAG,GAAE,0BAA0B,EAAE,GAAG,GAAG,GAAG,EAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,0BAA0B,GAAE,GAAG,KAAM,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,EAAE,GAAE,SAAS,GAAE,GAAG,MAAO,IAAG,GAAE,0BAA0B,EAAE,GAAG,GAAG,GAAG,EAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,0BAA0B,EAAE,IAAG,KAAM,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAG,GAAG,GAAE,CAAC,GAAI,GAAE,EAAE,OAAQ,SAAS,EAAE,CAAC,MAAO,IAAE,yBAAyB,EAAE,KAAI,IAAK,MAAO,IAAE,IAAI,GAAG,MAAO,GAAE,GAAE,IAAI,GAAG,GAAE,YAAY,GAAE,CAAC,GAAI,IAAE,GAAE,QAAQ,EAAE,GAAE,aAAa,GAAG,GAAG,GAAE,CAAC,GAAI,GAAE,EAAE,OAAQ,SAAS,EAAE,CAAC,MAAO,IAAE,yBAAyB,EAAE,KAAI,IAAK,MAAO,IAAE,IAAI,GAAG,MAAO,GAAE,GAAE,IAAI,GAAG,GAAE,aAAa,CAAC,OAAQ,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,qCAAqC,EAAE,GAAI,KAAI,EAAE,EAAE,EAAE,GAAE,OAAO,EAAE,EAAE,IAAI,CAAC,GAAI,IAAE,GAAE,GAAG,GAAG,EAAE,OAAO,IAAG,CAAC,GAAI,GAAE,GAAG,GAAE,cAAc,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE,SAAS,KAAK,GAAE,KAAK,IAAG,EAAE,IAAI,EAAE,YAAuB,GAAG,MAAd,SAAiB,CAAC,GAAI,IAAE,OAAO,KAAK,IAAG,GAAE,GAAE,GAAG,GAAE,GAAE,GAAE,IAAI,GAAa,MAAO,KAAjB,UAAoB,GAAE,cAAc,MAAM,OAAQ,IAAE,EAAE,GAAE,GAAE,OAAO,GAAE,GAAE,KAAI,CAAC,GAAI,IAAE,GAAG,GAAE,IAAG,cAAc,GAAE,EAAE,IAAI,KAAI,GAAG,GAAE,SAAS,KAAK,IAAE,KAAK,IAAG,EAAE,IAAI,GAAE,OAAM,MAAO,GAAE,aAAa,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,kCAAkC,EAAE,GAAI,KAAI,MAAO,IAAE,QAAS,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,KAAK,GAAE,EAAE,YAAY,GAAG,EAAE,OAAO,GAAG,CAAC,GAAI,GAAE,GAAG,EAAE,cAAc,EAAE,EAAE,IAAI,IAAI,GAAG,GAAG,CAAE,cAAc,KAAI,EAAE,YAAY,IAAI,IAAE,EAAE,aAAa,GAAE,CAAC,IAAG,GAAE,SAAS,GAAE,QAAQ,CAAC,GAAE,MAAO,SAAS,GAAE,GAAE,CAAC,MAAO,MAAI,GAAE,OAAO,CAAC,GAAI,IAAE,GAAE,EAAE,UAAU,GAAE,GAAI,IAAE,EAAE,aAAa,EAAE,aAAa,GAAE,GAAG,OAAO,GAAG,IAAG,CAAC,KAAI,CAAC,IAAG,EAAE,IAAI,EAAE,OAAQ,EAAE,YAAY,GAAE,GAAE,EAAE,EAAE,EAAE,CAAC,OAAQ,IAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAE,IAAI,CAAC,GAAI,IAAE,GAAE,GAAE,EAAE,SAAS,GAAE,GAAE,SAAS,EAAE,KAAK,GAAE,EAAE,WAAW,GAAE,GAAE,WAAW,EAAE,KAAK,GAAE,GAAG,WAAW,GAAE,EAAE,WAAW,EAAE,KAAK,GAAI,IAAE,EAAE,WAAW,GAAG,GAAE,GAAG,GAAG,GAAG,QAAQ,GAAE,KAAI,GAAG,SAAS,GAAE,KAAI,EAAE,KAAK,EAAE,IAAI,MAAO,GAAE,YAAY,GAAE,CAAC,MAAO,IAAE,GAAG,IAAI,OAAO,IAAG,GAAG,OAAO,IAAG,YAAY,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,KAAK,KAAK,GAAE,QAAQ,IAAG,IAAG,GAAE,MAAM,CAAC,YAAY,EAAG,IAAE,GAAG,UAAU,GAAG,YAAY,GAAE,CAAC,GAAI,IAAE,GAAE,aAAa,EAAE,GAAE,kBAAkB,MAAO,IAAG,OAAO,GAAE,UAAU,IAAI,GAAE,GAAG,YAAY,GAAE,CAAC,GAAG,CAAC,EAAE,OAAO,IAAG,KAAM,IAAI,OAAM,gBAAgB,GAAI,IAAE,GAAI,MAAK,IAAG,MAAO,IAAE,SAAS,EAAE,EAAE,EAAE,GAAG,GAAE,YAAY,GAAE,GAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAI,CAAC,EAAE,OAAO,IAAG,KAAM,IAAI,OAAM,yBAAyB,GAAI,GAAE,GAAG,IAAG,EAAE,GAAG,IAAG,MAAO,IAAG,SAAS,EAAE,GAAG,YAAY,GAAE,CAAC,MAAY,IAAE,MAAR,IAAY,YAAY,GAAE,GAAE,EAAE,EAAE,CAAC,OAAQ,GAAE,GAAG,GAAE,EAAE,GAAE,EAAE,GAAE,EAAE,KAAI,CAAC,GAAI,GAAE,GAAE,GAAE,GAAE,EAAE,GAAG,GAAI,GAAE,GAAE,QAAQ,IAAI,GAAG,GAAG,GAAI,GAAE,GAAE,QAAQ,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,MAAO,GAAE,GAAI,IAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,gBAAiB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,KAAK,GAAE,EAAE,MAAM,UAAU,IAAK,SAAS,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,IAAI,GAAE,6EAA6E,gCAAgC,IAAI,GAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,IAAG,gBAAgB,IAAI,GAAE,OAAO,QAAQ,IAAI,GAAE,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,2CAA2C,UAAK,GAAG,MAAM,GAAE,EAAE,MAAM,QAAQ,GAAE,QAAQ,EAAE,MAAM,SAAS,KAAK,GAAE,EAAE,MAAM,QAAQ,GAAE,QAAQ,EAAE,MAAM,SAAS,KAAK,MAAO,KAAG,EAAE,MAAM,UAAU,KAAM,SAAS,GAAE,CAAC,MAAO,MAAI,MAAM,GAAE,QAAQ,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,gCAAgC,IAAI,WAAW,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,cAAc,IAAI,CAAC,UAAU,oHAAoH,IAAG,EAAE,MAAM,UAAU,KAAM,SAAS,GAAE,CAAC,MAAO,MAAI,MAAM,GAAE,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,gCAAgC,IAAI,WAAW,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,cAAc,IAAI,CAAC,UAAU,oHAAoH,KAAK,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,EAAE,MAAM,aAAc,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,UAAU,IAAK,SAAS,GAAE,CAAC,MAAO,IAAE,IAAK,EAAE,SAAS,CAAC,UAAU,OAAO,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,GAAE,WAAW,KAAM,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,GAAE,WAAW,MAAO,GAAI,GAAE,EAAE,uBAAuB,GAAE,EAAE,uBAAuB,EAAE,GAAI,IAAE,GAAG,GAAG,MAAO,GAAE,MAAM,CAAC,UAAU,GAAG,EAAE,MAAM,KAAK,EAAE,EAAE,MAAM,QAAQ,EAAE,MAAM,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,YAAY,QAAQ,GAAG,EAAE,CAAC,GAAI,GAAE,EAAE,SAAS,MAAM,KAAK,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAE,eAAgB,KAAK,EAAE,UAAU,EAAE,EAAE,UAAW,GAAE,aAAa,EAAE,cAAc,EAAG,GAAE,aAAa,EAAE,cAAc,KAAK,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,EAAE,KAAK,CAAC,kCAAkC,GAAG,8CAA8C,KAAK,MAAM,yBAAyB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,aAAa,KAAK,sBAAsB,GAAG,QAAQ,WAAW,GAAG,GAAG,QAAQ,IAAI,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,gBAAgB,KAAK,GAAG,EAAE,sBAAuB,UAAU,CAAC,OAAQ,GAAE,EAAE,MAAM,QAAQ,GAAE,QAAQ,EAAE,MAAM,SAAS,KAAK,EAAE,EAAE,MAAM,QAAQ,GAAE,QAAQ,EAAE,MAAM,SAAS,KAAK,GAAE,GAAG,GAAE,EAAE,IAAG,EAAE,KAAI,GAAE,KAAK,GAAG,QAAQ,cAAc,SAAS,CAAC,IAAI,GAAE,MAAM,IAAG,KAAI,MAAO,MAAK,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,SAAU,GAAG,EAAE,mBAAoB,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,gCAAgC,SAAS,EAAE,gBAAgB,EAAE,yBAA0B,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,EAAE,UAAU,UAAU,UAAU,mCAAmC,QAAQ,SAAS,EAAE,CAAC,MAAO,GAAE,eAAe,KAAK,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,iDAAiD,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,mDAAmD,EAAE,MAAM,SAAU,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,IAAI,WAAW,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,SAAS,SAAS,EAAE,eAAe,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,uBAAuB,EAAE,MAAM,uBAAuB,uBAAuB,EAAE,MAAM,2BAA4B,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,gBAAgB,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,MAAO,IAAG,EAAE,QAAQ,EAAE,kBAAkB,IAAK,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE,MAAM,MAAM,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,iBAAkB,UAAU,CAAC,EAAE,MAAM,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,KAAK,OAAS,GAAG,EAAE,mBAAoB,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,YAAa,GAAG,EAAE,WAAY,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,UAAU,EAAE,MAAM,SAAS,EAAE,KAAM,GAAG,EAAE,UAAW,UAAU,CAAC,EAAE,MAAM,SAAS,EAAE,MAAM,QAAQ,MAAO,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,OAAO,KAAK,MAAM,kBAAkB,SAAS,EAAE,KAAK,mBAAmB,UAAU,SAAS,EAAE,KAAK,mBAAmB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,wFAAwF,OAAO,KAAK,MAAM,eAAe,QAAQ,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,kBAAmB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,QAAQ,IAAK,GAAG,EAAE,gBAAiB,UAAU,CAAC,MAAO,GAAE,MAAM,WAAW,IAAK,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,EAAE,gBAAgB,GAAG,gFAAgF,iCAAiC,IAAI,EAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,GAAG,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,QAAQ,EAAE,gBAAgB,GAAG,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,4CAA4C,UAAK,GAAG,OAAS,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,SAAS,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,MAAO,GAAE,MAAM,aAAc,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,oCAAoC,KAAK,sBAAsB,GAAG,QAAQ,WAAW,GAAG,GAAG,QAAQ,IAAI,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,gBAAgB,KAAK,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,MAAO,GAAE,IAAK,SAAS,EAAE,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,IAAI,GAAE,MAAM,IAAG,OAAS,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,MAAM,EAAE,MAAM,MAAM,UAAU,iCAAiC,SAAS,SAAS,EAAE,CAAC,MAAO,GAAE,SAAS,EAAE,OAAO,SAAS,EAAE,oBAAoB,MAAO,GAAG,EAAE,iBAAkB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,EAAE,UAAU,UAAU,UAAU,oCAAoC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,kDAAkD,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,qDAAqD,EAAE,EAAE,MAAM,WAAY,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,IAAI,WAAW,MAAM,EAAE,MAAM,MAAM,WAAW,EAAE,SAAS,EAAE,SAAS,SAAS,EAAE,mBAAoB,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,gBAAgB,GAAE,CAAC,EAAE,eAAe,CAAC,EAAE,IAAI,MAAO,IAAG,GAAE,QAAQ,EAAE,eAAe,IAAI,KAAK,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE,MAAM,OAAO,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,GAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,oBAAqB,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,MAAM,wBAAwB,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,EAAE,MAAM,SAAS,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,EAAE,MAAM,UAAU,OAAO,KAAK,MAAM,kBAAkB,SAAS,EAAE,KAAK,iBAAiB,GAAG,UAAU,SAAS,EAAE,KAAK,iBAAiB,GAAG,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,0FAA0F,OAAO,KAAK,MAAM,eAAe,QAAQ,GAAG,QAAQ,WAAW,YAAY,GAAE,GAAE,CAAC,OAAQ,GAAE,GAAG,EAAE,GAAG,IAAG,EAAE,GAAG,IAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAE,UAAU,EAAE,GAAG,MAAO,GAAE,GAAI,IAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,gBAAiB,UAAU,CAAC,MAAO,GAAE,MAAM,eAAe,IAAK,SAAS,EAAE,CAAC,GAAI,IAAE,GAAE,QAAQ,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,EAAE,2DAA2D,sCAAsC,IAAI,GAAE,QAAQ,EAAE,SAAS,KAAK,EAAE,IAAG,gBAAgB,EAAE,OAAO,QAAQ,EAAE,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,iDAAiD,UAAK,GAAG,GAAG,EAAE,EAAE,MAAM,WAAW,EAAE,MAAM,aAAe,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,SAAS,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,EAAE,MAAM,aAAc,EAAE,MAAM,CAAC,eAAe,GAAG,EAAE,MAAM,QAAQ,EAAE,MAAM,UAAU,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,EAAE,KAAK,CAAC,wCAAwC,GAAG,oDAAoD,KAAK,MAAM,8BAA8B,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,GAAG,KAAK,sBAAsB,GAAG,QAAQ,WAAW,GAAG,GAAG,QAAQ,IAAI,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,gBAAgB,KAAK,GAAG,EAAE,sBAAuB,UAAU,CAAC,OAAQ,GAAE,GAAG,EAAE,MAAM,SAAS,EAAE,GAAG,EAAE,MAAM,SAAS,GAAE,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAI,IAAE,GAAE,QAAQ,GAAG,GAAE,KAAK,GAAG,QAAQ,cAAc,SAAS,CAAC,IAAI,GAAE,MAAM,IAAG,GAAG,EAAE,EAAE,MAAM,WAAW,EAAE,MAAM,UAAU,EAAE,GAAE,UAAU,EAAE,GAAG,MAAO,MAAK,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,SAAU,GAAG,EAAE,mBAAoB,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,MAAM,GAAE,QAAQ,GAAG,EAAE,MAAM,OAAO,UAAU,sCAAsC,SAAS,EAAE,gBAAgB,EAAE,yBAA0B,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,WAAW,EAAE,MAAM,QAAQ,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,EAAE,UAAU,UAAU,UAAU,yCAAyC,QAAQ,SAAS,GAAE,CAAC,MAAO,GAAE,eAAe,MAAK,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,uDAAuD,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,+DAA+D,MAAO,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,IAAI,WAAW,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,MAAM,WAAW,SAAS,EAAE,SAAS,SAAS,EAAE,eAAe,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,4BAA4B,EAAE,MAAM,4BAA4B,OAAO,EAAE,MAAM,WAAY,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,gBAAgB,EAAE,CAAC,EAAE,eAAe,CAAC,IAAI,MAAO,IAAG,EAAE,QAAQ,EAAE,kBAAkB,IAAK,GAAG,EAAE,WAAY,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAI,GAAE,GAAG,SAAS,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,GAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,oBAAqB,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,OAAO,KAAK,MAAM,kBAAkB,SAAS,EAAE,KAAK,mBAAmB,UAAU,SAAS,EAAE,KAAK,mBAAmB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,oGAAoG,OAAO,KAAK,MAAM,eAAe,QAAQ,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,QAAQ,GAAG,QAAQ,aAAa,GAAG,EAAE,cAAe,SAAS,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,SAAS,EAAE,MAAM,QAAQ,KAAM,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,cAAc,EAAE,MAAM,aAAa,KAAM,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAO,EAAE,MAAR,KAAc,GAAE,iBAAiB,EAAE,IAAI,SAAS,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,YAAa,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,GAAI,GAAE,MAAM,CAAC,EAAE,MAAM,4BAA6B,CAAE,GAAE,MAAM,gBAAwB,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,OAAO,EAAE,KAAM,SAAS,EAAE,CAAC,MAAO,GAAE,gBAAgB,KAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAkB,GAAG,EAAE,aAAc,UAAU,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,EAAE,SAAU,GAAG,EAAE,aAAc,UAAU,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,EAAE,SAAU,GAAG,EAAE,gBAAiB,UAAU,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,MAAM,OAAO,EAAE,MAAM,qBAAsB,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,MAAM,OAAO,EAAE,MAAM,qBAAsB,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,MAAO,GAAE,UAAU,IAAI,EAAE,WAAW,KAAM,GAAG,EAAE,sBAAuB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,eAAe,GAAG,CAAC,GAAE,MAAM,GAAG,GAAI,IAAE,GAAG,EAAE,cAAc,MAAO,IAAE,IAAI,MAAM,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,SAAS,GAAG,CAAC,GAAE,MAAM,GAAG,GAAI,IAAE,GAAG,EAAE,cAAc,MAAO,IAAE,IAAI,IAAG,CAAC,GAAE,IAAI,IAAG,WAAW,SAAU,GAAG,EAAE,YAAa,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,EAAE,GAAE,MAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,GAAI,GAAE,EAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,aAAa,GAAE,EAAE,WAAW,GAAE,EAAE,aAAa,GAAE,EAAE,2BAA2B,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAM,CAAE,EAAE,KAAG,IAAG,KAAI,CAAC,IAAG,CAAC,IAAG,EAAE,eAAgB,KAAG,IAAI,IAAG,SAAS,GAAE,KAAI,GAAG,GAAE,KAAI,GAAG,GAAE,GAAE,IAAI,KAAG,IAAI,IAAG,QAAQ,GAAE,KAAI,GAAG,GAAE,MAAK,CAAE,EAAC,IAAG,CAAC,IAAG,IAAG,CAAC,GAAG,QAAQ,GAAE,KAAI,CAAC,GAAG,GAAE,OAAM,GAAG,GAAE,GAAE,OAAO,GAAG,EAAE,wBAAyB,UAAU,CAAC,GAAI,GAAE,GAAG,CAAC,EAAE,qBAAqB,MAAM,GAAG,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,aAAa,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAO,IAAG,GAAE,GAAE,GAAE,MAAM,GAAG,EAAE,sBAAuB,UAAU,CAAC,GAAI,GAAE,GAAG,CAAC,EAAE,qBAAqB,MAAM,GAAG,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,QAAQ,GAAE,EAAE,WAAW,GAAE,EAAE,aAAa,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAO,IAAG,GAAE,IAAG,GAAE,GAAE,MAAM,GAAG,EAAE,eAAgB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,KAAM,GAAG,EAAE,aAAc,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,KAAM,GAAG,EAAE,YAAa,UAAU,CAAC,GAAI,GAAE,GAAE,OAAO,EAAE,MAAM,KAAK,MAAW,KAAJ,GAAW,IAAJ,IAAS,GAAG,EAAE,eAAgB,UAAU,CAAC,MAAgB,GAAE,MAAM,QAAjB,QAAyB,GAAE,MAAM,MAAM,GAAG,KAAK,GAAE,SAAS,EAAE,MAAM,OAAQ,GAAG,EAAE,gBAAiB,UAAU,CAAC,MAAgB,GAAE,MAAM,QAAjB,QAAyB,IAAE,SAAS,EAAE,MAAM,KAAK,GAAG,KAAK,EAAE,MAAM,QAAS,GAAG,EAAE,eAAgB,UAAU,CAAC,MAAO,GAAE,UAAU,QAAS,GAAG,EAAE,aAAc,UAAU,CAAC,GAAI,GAAE,MAAO,GAAE,MAAM,gBAAwB,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,OAAO,EAAE,KAAM,SAAS,EAAE,CAAC,MAAO,GAAE,gBAAgB,KAAM,EAAE,gBAAgB,EAAE,MAAM,YAAa,GAAG,EAAE,gBAAiB,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,MAAM,aAAa,EAAE,MAAM,aAAa,GAAG,OAAO,MAAO,GAAE,KAAK,wBAAwB,GAAE,0BAA0B,GAAG,EAAE,MAAM,IAAI,MAAM,GAAG,CAAC,kCAAkC,EAAE,aAAa,kCAAkC,EAAE,aAAa,kCAAkC,EAAE,aAAa,2CAA2C,EAAE,qBAAqB,qCAAqC,EAAE,eAAe,mCAAmC,EAAE,aAAa,kCAAkC,EAAE,YAAY,4CAA4C,EAAE,qBAAqB,+CAA+C,EAAE,wBAAwB,6CAA6C,EAAE,sBAAsB,+BAA+B,EAAE,eAAe,iCAAiC,EAAE,YAAY,uCAAuC,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,sCAAsC,EAAE,sBAAuB,GAAG,EAAE,eAAgB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,2BAA2B,GAAW,KAAT,OAAW,SAAS,GAAE,GAAE,EAAE,4BAA4B,GAAW,KAAT,OAAW,gBAAgB,GAAE,GAAE,EAAE,cAAc,EAAE,aAAa,GAAE,GAAE,MAAM,GAAG,OAAO,GAAE,KAAK,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,WAAY,GAAG,EAAE,WAAY,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,SAAS,GAAW,KAAT,OAAW,GAAI,KAAI,GAAE,GAAE,EAAE,aAAa,GAAE,GAAG,EAAE,cAAc,GAAE,GAAG,MAAO,IAAE,IAAI,KAAI,GAAE,KAAK,MAAM,GAAE,GAAG,GAAE,IAAI,IAAG,eAAe,EAAE,cAAc,GAAE,KAAW,IAAN,KAAQ,OAAO,GAAE,OAAQ,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,KAAK,GAAE,KAAK,GAAE,KAAM,IAAK,SAAS,GAAE,CAAC,MAAO,IAAE,WAAY,GAAE,KAAK,QAAS,GAAG,EAAE,cAAe,SAAS,EAAE,EAAE,CAAC,GAAI,IAAE,GAAG,EAAE,MAAM,SAAS,GAAE,GAAG,EAAE,MAAM,aAAa,MAAO,EAAC,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM,gBAAgB,EAAE,kBAAmB,GAAE,sBAAsB,EAAE,UAAU,KAAI,GAAG,GAAE,KAAI,EAAE,KAAM,GAAG,EAAE,iBAAkB,UAAU,CAAC,GAAI,GAAE,EAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,GAAO,EAAE,gBAAN,GAAqB,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,eAAgB,UAAS,eAAe,SAAS,gBAAgB,SAAS,MAAO,IAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,sBAAuB,IAAE,IAAI,EAAE,MAAM,cAAc,EAAE,MAAM,aAAa,SAAS,EAAE,MAAM,aAAa,QAAQ,SAAS,SAAS,gBAAgB,SAAS,cAAc,UAAU,SAAS,0BAA2B,IAAE,IAAI,EAAE,MAAM,4BAA4B,EAAE,gBAAiB,IAAE,IAAI,EAAE,MAAM,8BAA8B,EAAE,iBAAkB,IAAE,KAAK,IAAI,CAAQ,GAAE,EAAE,MAAM,WAAlB,MAAqC,IAAT,QAAY,EAAE,MAAM,CAAC,cAAc,QAAS,GAAG,EAAE,oBAAqB,UAAU,CAAC,MAAO,GAAE,MAAM,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,EAAE,gBAAgB,KAAK,EAAE,MAAM,kBAAkB,EAAE,MAAM,kBAAkB,GAAE,QAAQ,EAAE,MAAM,KAAK,EAAE,MAAM,KAAK,GAAE,QAAQ,EAAE,MAAM,OAAQ,GAAG,EAAE,SAAU,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,EAAE,MAAM,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,UAAU,EAAE,gBAAgB,QAAQ,EAAE,YAAY,aAAa,EAAE,MAAM,gBAAgB,OAAO,EAAE,iBAAiB,eAAe,EAAE,MAAM,gBAAgB,EAAE,iBAAiB,OAAO,SAAS,EAAE,cAAc,aAAa,EAAE,eAAe,KAAK,SAAS,MAAM,EAAE,WAAW,gBAAgB,EAAE,aAAa,eAAe,EAAE,eAAe,OAAO,OAAO,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAyB,EAAE,aAAP,IAAmB,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,WAAW,EAAE,eAAgB,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,KAAK,mBAAmB,CAAC,IAAI,qBAAqB,MAAM,SAAS,EAAE,CAAC,KAAK,eAAe,QAAQ,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,eAAe,GAAG,QAAQ,aAAa,GAAG,EAAE,cAAe,SAAS,EAAE,CAAC,EAAE,MAAM,SAAS,EAAE,MAAM,QAAQ,KAAM,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAO,EAAE,MAAR,KAAc,GAAE,iBAAiB,EAAE,IAAI,SAAS,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,4BAA4B,CAAC,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,WAAW,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,gBAAiB,GAAG,EAAE,cAAe,UAAU,CAAC,MAAO,GAAE,MAAM,gBAAgB,EAAE,MAAM,gBAAiB,GAAE,sBAAsB,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,WAAW,GAAG,EAAE,MAAM,aAAa,EAAE,MAAM,WAAW,EAAE,KAAM,GAAG,EAAE,wBAAyB,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,EAAE,GAAO,EAAE,gBAAN,GAAqB,CAAC,EAAE,gBAAgB,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,eAAgB,UAAS,eAAe,SAAS,gBAAgB,SAAS,MAAO,GAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,sBAAuB,GAAE,IAAI,EAAE,MAAM,cAAc,EAAE,MAAM,aAAa,SAAS,EAAE,MAAM,aAAa,QAAQ,SAAS,SAAS,gBAAgB,SAAS,eAAe,SAAS,cAAc,UAAU,SAAS,kCAAmC,GAAE,KAAK,GAAG,EAAE,aAAa,SAAS,EAAE,aAAa,QAAQ,MAAM,CAAC,cAAc,OAAQ,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,KAAK,0BAA0B,CAAC,IAAI,qBAAqB,MAAM,SAAS,EAAE,CAAC,KAAK,sBAAsB,KAAK,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,gBAAgB,GAAW,IAAT,OAAW,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,gCAAgC,GAAG,2CAA2C,CAAC,CAAC,EAAE,0CAA0C,CAAC,CAAC,GAAG,GAAG,KAAK,MAAM,KAAK,KAAK,MAAM,UAAU,mDAAmD,KAAK,sBAAsB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,KAAK,aAAa,UAAU,EAAE,KAAK,GAAG,aAAa,GAAG,OAAO,GAAE,KAAK,OAAO,KAAK,MAAM,YAAY,QAAQ,KAAK,YAAY,UAAU,KAAK,gBAAgB,SAAS,KAAK,eAAe,MAAM,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,gBAAgB,cAAc,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,iBAAkB,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,YAAY,EAAE,MAAM,WAAW,EAAE,KAAM,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,kBAAmB,SAAS,EAAE,EAAE,GAAE,CAAa,MAAO,GAAE,MAAM,cAA3B,YAAyC,EAAE,MAAM,aAAa,EAAE,EAAE,IAAG,EAAE,MAAM,gBAAgB,EAAE,eAAe,EAAE,IAAG,EAAE,MAAM,qBAAqB,EAAE,MAAM,QAAQ,MAAO,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,iBAAiB,EAAE,MAAM,iBAAiB,GAAG,SAAS,EAAE,GAAE,CAAC,GAAI,IAAE,IAAG,GAAG,KAAI,MAAM,GAAG,MAAM,MAAO,IAAE,WAAW,EAAE,GAAE,CAAC,OAAO,IAAG,OAAO,KAAM,GAAG,EAAE,aAAc,UAAU,CAAC,GAAI,GAAE,EAAE,cAAc,EAAE,GAAG,GAAE,EAAE,iBAAiB,GAAG,GAAG,EAAE,MAAM,eAAe,CAAC,GAAI,IAAE,EAAE,MAAM,cAAc,EAAE,MAAM,eAAe,EAAE,gBAAgB,KAAK,EAAE,EAAE,IAAG,OAAO,EAAE,KAAK,GAAG,QAAQ,cAAc,GAAG,CAAC,IAAI,IAAI,WAAW,GAAE,KAAK,EAAE,QAAQ,GAAE,SAAS,EAAE,MAAM,SAAS,aAAa,EAAE,MAAM,aAAa,gBAAgB,EAAE,MAAM,gBAAgB,eAAe,EAAE,MAAM,eAAe,eAAe,EAAE,MAAM,eAAe,2BAA2B,EAAE,MAAM,2BAA2B,gBAAgB,EAAE,MAAM,gBAAgB,eAAe,EAAE,MAAM,eAAe,aAAa,EAAE,MAAM,gBAAgB,MAAO,GAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAK,SAAS,GAAE,CAAC,GAAI,IAAE,EAAE,QAAQ,EAAE,IAAG,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,2BAA2B,EAAE,MAAM,yBAAyB,4BAA4B,EAAE,MAAM,2BAA2B,IAAI,GAAE,UAAU,IAAI,GAAE,MAAM,EAAE,MAAM,MAAM,QAAQ,EAAE,eAAe,KAAK,EAAE,IAAG,gBAAgB,EAAE,MAAM,gBAAgB,aAAa,EAAE,oBAAoB,KAAK,EAAE,IAAG,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,iBAAiB,EAAE,MAAM,iBAAiB,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,eAAe,EAAE,MAAM,eAAe,SAAS,EAAE,MAAM,SAAS,cAAc,EAAE,MAAM,cAAc,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,SAAS,EAAE,MAAM,SAAS,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,eAAe,EAAE,MAAM,eAAe,eAAe,EAAE,MAAM,eAAe,2BAA2B,EAAE,MAAM,2BAA2B,gBAAgB,EAAE,MAAM,gBAAgB,cAAc,EAAE,MAAM,cAAc,UAAU,EAAE,MAAM,UAAU,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,kBAAkB,EAAE,MAAM,kBAAkB,2BAA2B,EAAE,MAAM,2BAA2B,gBAAgB,EAAE,MAAM,gBAAgB,eAAe,EAAE,MAAM,eAAe,aAAa,EAAE,MAAM,aAAa,OAAO,EAAE,MAAM,OAAO,qBAAqB,EAAE,MAAM,qBAAqB,2BAA2B,EAAE,MAAM,2BAA2B,6BAA6B,EAAE,MAAM,6BAA6B,OAAO,EAAE,MAAM,cAAgB,GAAG,EAAE,cAAe,UAAU,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,EAAE,MAAM,OAAO,EAAE,MAAM,oBAAqB,GAAG,EAAE,qBAAsB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,4BAA4B,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,WAAW,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAiB,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,CAAC,yBAAyB,GAAG,mCAAmC,GAAG,KAAK,cAAc,KAAK,MAAM,UAAU,4CAA4C,KAAK,sBAAsB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,iBAAiB,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,oBAAoB,SAAS,GAAG,QAAQ,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,yBAAyB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,yBAAyB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,yBAAyB,IAAI,YAAY,GAAE,GAAE,CAAC,MAAO,IAAE,GAAG,GAAE,GAAG,GAAG,GAAI,IAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,aAAa,GAAG,MAAM,KAAK,IAAK,UAAU,CAAC,MAAO,IAAG,QAAQ,eAAgB,GAAG,EAAE,eAAe,GAAG,MAAM,IAAI,IAAK,UAAU,CAAC,MAAO,IAAG,QAAQ,eAAgB,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,SAAU,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,SAAU,GAAG,EAAE,iBAAkB,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,YAAY,EAAE,MAAM,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAmB,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,mBAAoB,UAAU,CAAC,EAAE,MAAM,cAAc,EAAE,MAAM,iBAAkB,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,SAAS,GAAE,GAAG,MAAM,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,WAAW,GAAE,GAAG,MAAM,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,SAAS,GAAE,GAAG,MAAM,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,MAAM,CAAE,EAAC,IAAG,CAAC,KAAI,GAAG,GAAE,WAAW,GAAE,GAAG,MAAM,GAAG,EAAE,0BAA2B,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,MAAM,GAAE,GAAE,IAAI,GAAE,GAAE,aAAa,GAAE,GAAE,WAAW,GAAE,GAAE,aAAa,GAAE,GAAE,UAAU,GAAE,GAAE,QAAQ,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAM,CAAE,EAAE,KAAG,IAAG,KAAI,CAAC,KAAK,KAAG,GAAE,GAAG,GAAE,GAAE,EAAE,IAAI,KAAG,IAAG,CAAE,EAAC,IAAG,CAAC,IAAG,MAAK,GAAG,GAAE,GAAE,EAAE,OAAO,GAAG,EAAE,6BAA8B,SAAS,EAAE,CAAC,GAAI,GAAE,GAAG,CAAC,EAAE,wBAAwB,GAAG,MAAM,GAAG,GAAI,IAAE,EAAE,MAAM,GAAE,GAAE,IAAI,GAAE,GAAE,UAAU,GAAE,GAAE,aAAa,GAAE,GAAE,SAAS,GAAE,GAAG,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAO,IAAG,GAAE,GAAE,GAAE,MAAM,GAAG,EAAE,2BAA4B,SAAS,EAAE,CAAC,GAAI,GAAE,GAAG,CAAC,EAAE,wBAAwB,GAAG,MAAM,GAAG,GAAI,IAAE,EAAE,MAAM,GAAE,GAAE,IAAI,GAAE,GAAE,QAAQ,GAAE,GAAE,WAAW,GAAE,GAAE,aAAa,GAAE,GAAE,SAAS,GAAE,GAAG,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAO,IAAG,GAAE,IAAG,GAAE,GAAE,MAAM,GAAG,EAAE,4BAA6B,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,MAAM,GAAE,GAAE,IAAI,GAAE,GAAE,aAAa,GAAE,GAAE,WAAW,GAAE,GAAE,aAAa,GAAE,GAAE,UAAU,GAAE,GAAE,QAAQ,GAAU,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,aAAa,MAAM,CAAE,EAAE,KAAG,IAAG,KAAI,CAAC,KAAK,KAAG,GAAE,GAAG,GAAE,GAAE,EAAE,IAAI,KAAG,IAAG,CAAE,EAAC,IAAG,CAAC,IAAG,MAAK,GAAG,GAAE,GAAE,EAAE,OAAO,GAAG,EAAE,gBAAiB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,IAAI,GAAE,EAAE,QAAQ,EAAE,GAAG,MAAO,IAAG,EAAE,IAAI,GAAG,GAAE,KAAM,GAAG,EAAE,iBAAkB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAE,QAAQ,KAAK,GAAE,QAAQ,OAAO,IAAI,GAAE,SAAS,QAAS,GAAG,EAAE,mBAAoB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAE,QAAQ,KAAK,GAAE,QAAQ,OAAO,IAAI,GAAE,WAAW,QAAS,GAAG,EAAE,kBAAmB,SAAS,EAAE,EAAE,GAAE,CAAC,MAAO,IAAE,SAAS,MAAK,GAAG,GAAE,QAAQ,KAAK,GAAE,QAAQ,MAAM,GAAG,EAAE,oBAAqB,SAAS,EAAE,EAAE,GAAE,CAAC,MAAO,IAAE,WAAW,KAAK,GAAG,GAAE,QAAQ,KAAK,GAAE,QAAQ,MAAM,GAAG,EAAE,cAAe,UAAU,CAAC,OAAQ,GAAE,GAAG,EAAE,EAAE,MAAM,YAAY,GAAE,EAAE,GAAE,GAAG,GAAE,GAAG,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,GAAE,EAAE,MAAM,eAAe,GAAG,EAAE,MAAM,SAAS,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,EAAE,MAAM,SAAS,GAAE,EAAE,MAAM,eAAe,GAAG,EAAE,MAAM,aAAa,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,EAAE,MAAM,aAAa,EAAE,KAAK,GAAG,QAAQ,cAAc,GAAG,CAAC,gBAAgB,EAAE,MAAM,oBAAoB,yBAAyB,EAAE,MAAM,yBAAyB,2BAA2B,EAAE,MAAM,2BAA2B,IAAI,GAAE,IAAI,GAAE,MAAM,GAAE,SAAS,EAAE,MAAM,KAAK,WAAW,EAAE,eAAe,gBAAgB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,oBAAoB,aAAa,EAAE,MAAM,aAAa,iBAAiB,EAAE,MAAM,iBAAiB,OAAO,EAAE,MAAM,OAAO,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,OAAO,EAAE,MAAM,OAAO,qBAAqB,EAAE,MAAM,qBAAqB,eAAe,EAAE,MAAM,eAAe,SAAS,EAAE,MAAM,SAAS,cAAc,EAAE,MAAM,cAAc,WAAW,EAAE,MAAM,WAAW,aAAa,GAAE,SAAS,GAAE,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,2BAA2B,EAAE,MAAM,2BAA2B,gBAAgB,EAAE,MAAM,gBAAgB,cAAc,EAAE,MAAM,cAAc,eAAe,EAAE,MAAM,gBAAgB,eAAe,EAAE,MAAM,eAAe,UAAU,EAAE,MAAM,UAAU,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,QAAQ,EAAE,MAAM,QAAQ,oBAAoB,EAAE,MAAM,oBAAoB,2BAA2B,EAAE,MAAM,2BAA2B,kBAAkB,EAAE,MAAM,kBAAkB,gBAAgB,EAAE,MAAM,gBAAgB,eAAe,EAAE,MAAM,eAAe,aAAa,EAAE,MAAM,aAAa,iBAAiB,EAAE,MAAM,iBAAiB,2BAA2B,EAAE,MAAM,2BAA2B,6BAA6B,EAAE,MAAM,gCAAgC,CAAC,IAAG,CAAC,KAAI,GAAE,GAAE,SAAS,GAAE,GAAG,GAAI,IAAE,GAAG,IAAG,EAAE,GAAE,CAAC,GAAG,CAAC,EAAE,cAAc,IAAG,GAAG,IAAG,GAAE,CAAC,GAAG,CAAC,EAAE,MAAM,cAAc,MAAM,GAAE,IAAI,MAAO,KAAK,GAAG,EAAE,eAAgB,SAAS,EAAE,EAAE,CAAC,GAAI,IAAE,GAAE,SAAS,EAAE,MAAM,IAAI,GAAG,GAAG,GAAE,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAG,KAAM,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,SAAS,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAO,GAAG,EAAE,wBAAyB,SAAS,EAAE,EAAE,CAAC,EAAE,WAAW,IAAI,EAAE,WAAW,IAAK,GAAE,MAAM,gBAAgB,GAAG,EAAE,WAAW,GAAG,SAAS,EAAE,WAAW,GAAG,QAAQ,WAAY,GAAG,EAAE,iBAAkB,SAAS,EAAE,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,GAAE,GAAE,SAAS,GAAE,GAAE,aAAa,GAAE,GAAE,2BAA2B,GAAE,GAAE,6BAA6B,GAAE,GAAE,8BAA8B,GAAE,GAAE,gBAAgB,GAAE,GAAE,qBAAqB,GAAE,EAAE,IAAI,GAAW,KAAR,OAAW,EAAE,iBAAiB,CAAC,GAAE,CAAC,GAAI,IAAE,GAAG,GAAE,IAAG,GAAE,GAAG,IAAG,yBAAyB,GAAE,GAAG,IAAG,KAAK,OAAO,QAAO,QAAQ,EAAE,aAAa,EAAE,GAAG,GAAE,IAAG,UAAU,aAAa,EAAE,sBAA2B,IAAL,GAAO,EAAE,EAAE,EAAE,GAAE,UAAU,GAAE,IAAI,UAAU,YAAY,EAAE,sBAA0B,IAAJ,EAAM,GAAG,EAAE,EAAE,GAAE,UAAU,GAAE,IAAI,UAAU,UAAU,EAAE,sBAAsB,GAAE,GAAG,SAAS,GAAG,EAAE,GAAG,GAAE,EAAE,GAAE,GAAE,UAAU,GAAE,KAAI,UAAU,YAAY,EAAE,sBAAsB,GAAE,GAAE,OAAO,GAAG,SAAS,GAAG,EAAE,GAAG,GAAE,EAAE,GAAE,GAAE,UAAU,GAAE,MAAK,IAAG,GAAE,KAAM,GAAG,EAAE,iBAAkB,SAAS,EAAE,EAAE,CAAC,GAAI,IAAE,GAAE,WAAW,EAAE,MAAM,IAAI,GAAG,GAAG,GAAE,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAG,KAAM,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,WAAW,EAAE,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAO,GAAG,EAAE,0BAA2B,SAAS,EAAE,EAAE,CAAC,EAAE,WAAW,IAAI,EAAE,WAAW,IAAK,GAAE,MAAM,gBAAgB,GAAG,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,GAAG,QAAQ,WAAY,GAAG,EAAE,mBAAoB,SAAS,EAAE,EAAE,CAAC,GAAI,IAAE,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,2BAA2B,OAAO,QAAO,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,gBAAgB,EAAE,MAAM,UAAU,UAAU,aAAa,EAAE,wBAA4B,IAAJ,EAAM,EAAE,EAAE,EAAE,GAAE,YAAY,EAAE,MAAM,aAAa,IAAI,UAAU,YAAY,EAAE,wBAA4B,IAAJ,EAAM,EAAE,EAAE,EAAE,GAAE,YAAY,EAAE,MAAM,aAAa,OAAQ,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,QAAQ,GAAE,EAAE,QAAQ,GAAE,EAAE,aAAa,GAAE,EAAE,aAAa,GAAE,GAAE,SAAS,GAAE,GAAG,MAAO,KAAG,IAAG,IAAG,KAAI,GAAG,GAAE,EAAE,SAAU,GAAG,EAAE,qBAAsB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,GAAE,EAAE,SAAS,GAAE,EAAE,aAAa,GAAE,EAAE,eAAe,GAAE,GAAE,GAAE,GAAE,SAAS,GAAE,IAAI,OAAO,MAAO,GAAE,KAAK,+BAA+B,2BAA2B,OAAO,GAAG,GAAE,CAAC,yCAAyC,EAAE,gBAAgB,GAAG,yCAAyC,EAAE,gBAAgB,GAAE,EAAE,IAAG,kDAAkD,CAAC,EAAE,MAAM,4BAA4B,EAAE,gBAAgB,GAAE,EAAE,IAAG,mDAAmD,EAAE,wBAAwB,GAAG,yCAAyC,GAAG,GAAE,GAAE,EAAE,IAAG,4CAA4C,EAAE,kBAAkB,GAAG,0CAA0C,EAAE,gBAAgB,GAAG,sDAAsD,EAAE,2BAA2B,GAAG,oDAAoD,EAAE,yBAAyB,GAAG,sCAAsC,EAAE,eAAe,GAAE,OAAQ,GAAG,EAAE,cAAe,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,SAAS,EAAE,MAAM,cAAc,MAAO,GAAE,MAAM,4BAA4B,IAAI,EAAE,KAAK,MAAO,GAAG,EAAE,qBAAsB,SAAS,EAAE,CAAC,GAAI,GAAE,GAAE,WAAW,EAAE,MAAM,cAAc,MAAO,GAAE,MAAM,4BAA4B,IAAI,EAAE,KAAK,MAAO,GAAG,EAAE,eAAgB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,yBAAyB,GAAW,KAAT,OAAW,SAAS,GAAE,GAAE,EAAE,2BAA2B,GAAW,KAAT,OAAW,gBAAgB,GAAE,GAAE,EAAE,IAAI,GAAE,EAAE,OAAO,GAAE,GAAE,SAAS,GAAE,GAAG,GAAE,EAAE,WAAW,KAAI,EAAE,WAAW,IAAG,GAAE,GAAE,MAAM,GAAG,OAAO,GAAE,KAAK,OAAO,GAAG,GAAE,YAAY,OAAO,GAAG,EAAE,uBAAwB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,IAAI,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,GAAE,EAAE,SAAS,GAAE,EAAE,QAAQ,GAAE,EAAE,QAAQ,GAAE,EAAE,aAAa,GAAE,EAAE,2BAA2B,MAAO,GAAE,KAAK,iCAAiC,6BAA6B,OAAO,GAAG,CAAC,2CAA4C,KAAG,KAAI,GAAG,GAAE,WAAW,GAAE,GAAG,EAAE,OAAO,2CAA2C,EAAE,kBAAkB,GAAE,EAAE,IAAG,oDAAoD,CAAC,IAAG,EAAE,kBAAkB,GAAE,EAAE,IAAG,qDAAqD,EAAE,0BAA0B,GAAG,2CAA2C,GAAG,GAAE,GAAE,EAAE,IAAG,8CAA8C,EAAE,oBAAoB,GAAG,4CAA4C,EAAE,kBAAkB,OAAQ,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,wBAAwB,GAAE,EAAE,mBAAmB,GAAE,EAAE,OAAO,GAAE,EAAE,IAAI,GAAE,GAAG,EAAE,IAAG,GAAE,GAAG,EAAE,IAAG,MAAO,IAAE,GAAE,EAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAK,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,qBAAqB,GAAE,SAAS,GAAE,GAAE,CAAC,MAAO,IAAG,GAAE,WAAW,KAAK,IAAG,MAAM,KAAI,EAAE,EAAE,QAAQ,MAAO,IAAE,GAAE,EAAE,IAAG,KAAK,GAAG,EAAE,eAAgB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,6BAA6B,GAAE,EAAE,8BAA8B,GAAE,EAAE,IAAI,GAAE,EAAE,SAAS,MAAO,IAAG,GAAG,GAAE,IAAI,KAAK,IAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,kCAAkC,IAAI,IAAG,GAAE,IAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,EAAE,WAAW,IAAG,IAAI,GAAE,QAAQ,SAAS,GAAE,CAAC,EAAE,aAAa,GAAE,KAAI,UAAU,SAAS,GAAE,CAAC,GAAG,KAAK,IAAE,iBAAiB,GAAE,IAAI,SAAS,EAAE,eAAe,GAAE,KAAI,aAAa,EAAE,MAAM,gBAAgB,OAAO,UAAU,CAAC,MAAO,GAAE,kBAAkB,KAAI,eAAe,EAAE,MAAM,gBAAgB,UAAU,CAAC,MAAO,GAAE,kBAAkB,KAAI,OAAO,SAAS,EAAE,YAAY,IAAG,UAAU,EAAE,mBAAmB,IAAG,gBAAgB,EAAE,gBAAgB,IAAG,KAAK,SAAS,aAAa,EAAE,aAAa,IAAG,eAAe,EAAE,eAAe,GAAE,IAAG,OAAO,OAAO,gBAAgB,EAAE,gBAAgB,GAAE,GAAE,KAAI,EAAE,gBAAgB,YAAc,GAAG,EAAE,iBAAkB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,EAAE,SAAS,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,qCAAqC,CAAC,EAAE,EAAE,EAAE,GAAG,IAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,GAAE,IAAI,EAAE,aAAa,IAAG,KAAK,SAAS,QAAQ,SAAS,GAAE,CAAC,EAAE,eAAe,GAAE,KAAI,UAAU,SAAS,GAAE,CAAC,EAAE,iBAAiB,GAAE,KAAI,aAAa,EAAE,MAAM,gBAAgB,OAAO,UAAU,CAAC,MAAO,GAAE,oBAAoB,KAAI,eAAe,EAAE,MAAM,gBAAgB,UAAU,CAAC,MAAO,GAAE,oBAAoB,KAAI,OAAO,UAAU,EAAE,qBAAqB,IAAG,gBAAgB,EAAE,kBAAkB,EAAE,GAAE,IAAG,SAAS,EAAE,mBAAmB,IAAG,eAAe,EAAE,iBAAiB,EAAE,IAAG,OAAO,QAAQ,EAAE,kBAAkB,UAAW,GAAG,EAAE,gBAAiB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,cAAc,GAAE,EAAE,aAAa,GAAE,EAAE,WAAW,GAAE,EAAE,oBAAoB,GAAE,EAAE,sBAAsB,GAAE,EAAE,eAAe,MAAO,GAAE,KAAK,0BAA0B,CAAC,2CAA2C,GAAI,KAAG,KAAI,CAAC,gCAAgC,IAAG,CAAC,kCAAkC,IAAG,CAAC,+BAA+B,OAAO,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,MAAM,EAAE,EAAE,oBAAoB,EAAE,EAAE,sBAAsB,GAAE,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAW,IAAT,OAAW,SAAS,EAAE,GAAE,EAAE,EAAE,OAAO,IAAI,GAAG,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,KAAK,gBAAgB,aAAa,KAAK,MAAM,gBAAgB,OAAO,KAAK,iBAAiB,eAAe,KAAK,MAAM,gBAAgB,KAAK,iBAAiB,OAAO,aAAa,GAAG,OAAO,IAAG,OAAO,GAAG,GAAE,aAAa,KAAK,MAAM,SAAS,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,KAAK,oBAAoB,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,GAAI,GAAE,GAAG,KAAK,IAAG,OAAQ,GAAE,UAAU,OAAO,EAAE,GAAI,OAAM,GAAG,GAAE,EAAE,GAAE,EAAE,KAAI,EAAE,IAAG,UAAU,IAAG,MAAO,IAAG,EAAE,GAAG,KAAK,GAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,OAAO,OAAO,GAAG,EAAE,0BAA2B,UAAU,CAAC,sBAAuB,UAAU,CAAC,EAAE,MAAO,GAAE,KAAK,UAAU,EAAE,UAAU,GAAE,mBAAmB,EAAE,MAAM,SAAS,EAAE,MAAM,SAAS,aAAa,EAAE,OAAO,aAAa,EAAE,KAAK,aAAa,EAAE,eAAiB,GAAG,EAAE,cAAe,SAAS,EAAE,CAAE,GAAE,MAAM,SAAS,EAAE,MAAM,UAAU,GAAG,EAAE,EAAE,QAAS,GAAE,MAAM,cAAc,EAAE,MAAM,cAAc,EAAE,MAAM,aAAa,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,UAAW,GAAE,EAAE,MAAM,SAAS,GAAE,EAAE,GAAG,GAAG,YAAY,GAAG,IAAG,WAAW,GAAI,GAAE,KAAK,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,SAAS,EAAE,MAAM,UAAU,GAAG,EAAE,EAAE,QAAS,GAAE,MAAM,cAAc,EAAE,MAAM,cAAc,EAAE,MAAM,aAAa,GAAG,EAAE,EAAE,SAAU,GAAG,EAAE,YAAa,SAAS,EAAE,CAAC,GAAI,GAAE,CAAC,mCAAmC,EAAE,MAAM,cAAc,EAAE,MAAM,cAAc,GAAG,QAAQ,MAAO,GAAE,eAAe,IAAI,EAAE,KAAK,8CAA8C,EAAE,eAAe,IAAI,EAAE,KAAK,8CAA8C,EAAE,MAAM,aAAc,MAAK,GAAE,SAAS,GAAG,GAAG,GAAE,WAAW,GAAG,GAAG,WAAW,IAAK,IAAG,EAAE,MAAM,YAAY,GAAG,EAAE,KAAK,8CAA8C,EAAE,KAAK,OAAQ,GAAG,EAAE,kBAAmB,SAAS,EAAE,EAAE,CAAO,EAAE,MAAR,KAAc,GAAE,iBAAiB,EAAE,IAAI,SAAqB,EAAE,MAAd,WAAiC,EAAE,MAAhB,aAAqB,CAAC,EAAE,OAAO,iBAAkB,GAAE,iBAAiB,EAAE,OAAO,gBAAgB,SAAuB,EAAE,MAAhB,aAAoC,EAAE,MAAjB,cAAsB,CAAC,EAAE,OAAO,aAAc,GAAE,iBAAiB,EAAE,OAAO,YAAY,SAAmB,EAAE,MAAZ,SAAiB,EAAE,YAAY,GAAG,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,cAAe,UAAU,CAAC,OAAQ,GAAE,EAAE,GAAG,GAAE,EAAE,MAAM,OAAO,EAAE,MAAM,OAAO,IAAI,GAAE,EAAE,MAAM,UAAU,GAAE,EAAE,MAAM,UAAU,EAAE,MAAM,YAAY,KAAK,GAAG,GAAE,GAAE,GAAE,WAAW,IAAI,GAAE,EAAE,MAAM,aAAa,EAAE,MAAM,YAAY,KAAM,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,KAAK,GAAE,GAAG,SAAS,GAAE,CAAC,GAAI,IAAE,GAAI,MAAK,GAAE,cAAc,GAAE,WAAW,GAAE,WAAW,GAAE,GAAI,MAAK,GAAE,cAAc,GAAE,WAAW,GAAE,UAAU,IAAI,MAAO,MAAK,MAAO,EAAC,GAAE,CAAC,IAAG,OAAO,IAAG,GAAE,GAAE,GAAE,GAAE,EAAE,GAAE,GAAE,KAAI,CAAC,GAAI,IAAE,EAAE,WAAW,GAAE,GAAE,IAAG,GAAG,EAAE,KAAK,IAAG,GAAE,CAAC,GAAI,IAAE,GAAG,GAAE,GAAE,GAAE,GAAE,IAAG,EAAE,EAAE,OAAO,KAAI,GAAI,IAAE,EAAE,OAAQ,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,WAAW,GAAE,UAAU,GAAE,IAAI,EAAE,IAAI,MAAO,GAAE,IAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAG,QAAQ,cAAc,KAAK,CAAC,IAAI,GAAE,QAAQ,EAAE,YAAY,KAAK,EAAE,IAAG,UAAU,EAAE,UAAU,IAAG,IAAI,SAAS,GAAE,CAAC,KAAI,IAAI,GAAE,SAAS,KAAI,UAAU,SAAS,GAAE,CAAC,EAAE,gBAAgB,GAAE,KAAI,SAAS,KAAI,GAAE,EAAE,GAAG,KAAK,SAAS,gBAAgB,EAAE,eAAe,IAAG,OAAO,OAAO,gBAAgB,EAAE,eAAe,IAAG,OAAO,QAAQ,GAAG,GAAE,GAAE,EAAE,MAAM,aAAe,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,KAAK,0BAA0B,KAAK,MAAM,UAAU,KAAK,QAAQ,KAAK,SAAS,CAAC,OAAO,KAAK,MAAM,SAAS,aAAa,KAAK,OAAO,iBAAiB,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,EAAE,KAAK,MAAM,OAAO,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,oCAAoC,OAAO,KAAK,MAAM,YAAY,sDAAsD,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,2DAA2D,OAAO,KAAK,MAAM,mBAAmB,uCAAuC,IAAI,IAAI,SAAS,EAAE,CAAC,EAAE,OAAO,IAAI,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,iCAAiC,KAAK,MAAM,cAAc,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,0BAA0B,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,8BAA8B,GAAG,QAAQ,cAAc,KAAK,CAAC,UAAU,8BAA8B,IAAI,SAAS,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,GAAG,KAAK,UAAU,aAAa,KAAK,MAAM,aAAa,KAAK,qBAAqB,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa,UAAU,GAAG,YAAY,KAAK,YAAY,aAAa,GAAG,QAAQ,WAAW,GAAG,GAAG,qBAAsB,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,UAAW,IAAE,EAAE,GAAE,aAAa,KAAM,GAAI,IAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,YAAY,GAAG,MAAM,EAAE,MAAM,iBAAiB,IAAK,UAAU,CAAC,MAAO,IAAG,QAAQ,eAAgB,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,SAAU,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,SAAU,GAAG,EAAE,gBAAiB,UAAU,CAAC,GAAI,GAAE,MAAe,GAAE,EAAE,MAAM,iBAAlB,MAA2C,IAAT,OAAW,EAAE,EAAE,MAAM,eAAgB,GAAG,EAAE,wBAAyB,SAAS,EAAE,CAAC,GAAI,IAAE,UAAU,CAAC,KAAK,UAAU,GAAG,QAAQ,SAAS,KAAK,GAAG,OAAO,sBAAsB,MAAM,GAAG,EAAE,kBAAmB,SAAS,EAAE,GAAE,CAAC,EAAE,MAAM,YAAY,EAAE,MAAM,WAAW,EAAE,MAAM,GAAG,EAAE,uBAAwB,SAAS,EAAE,GAAE,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,EAAE,eAAe,GAAE,GAAG,EAAE,IAAG,YAAY,EAAE,WAAW,KAAI,EAAE,WAAW,KAAK,GAAE,MAAM,gBAAgB,IAAG,EAAE,GAAE,EAAE,EAAE,sBAAsB,GAAG,IAAE,IAAI,EAAE,IAAG,GAAE,EAAE,sBAAsB,KAAK,IAAI,GAAG,GAAE,MAAK,EAAE,UAAU,EAAE,IAAG,QAAQ,WAAY,GAAG,EAAE,YAAa,SAAS,EAAE,GAAE,CAAC,MAAO,IAAG,EAAE,MAAM,GAAG,EAAE,gBAAiB,SAAS,EAAE,CAAC,MAAO,KAAI,GAAE,QAAQ,QAAS,GAAG,EAAE,eAAgB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,WAAW,EAAE,MAAM,SAAS,GAAG,GAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,aAAc,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,WAAW,EAAE,MAAM,SAAS,GAAG,GAAE,QAAQ,KAAK,GAAG,EAAE,MAAM,WAAY,GAAG,EAAE,YAAa,SAAS,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,MAAM,UAAU,EAAE,MAAM,WAAY,GAAG,EAAE,qBAAsB,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,EAAE,GAAE,aAAa,EAAE,GAAE,WAAW,GAAE,GAAE,aAAa,GAAE,GAAE,UAAU,GAAE,GAAE,QAAQ,MAAM,CAAE,EAAE,IAAG,GAAG,KAAI,CAAC,EAAE,kBAAmB,IAAG,GAAE,GAAG,EAAE,EAAE,gBAAgB,IAAI,IAAG,IAAG,CAAE,EAAC,IAAG,CAAC,IAAG,MAAK,GAAG,EAAE,GAAE,EAAE,oBAAqB,GAAG,EAAE,wBAAyB,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,GAAI,IAAE,EAAE,MAAM,EAAE,GAAE,UAAU,EAAE,GAAE,aAAa,GAAE,GAAE,QAAQ,KAAK,GAAG,MAAO,IAAG,GAAE,EAAE,EAAE,gBAAgB,KAAM,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,GAAI,IAAE,EAAE,MAAM,EAAE,GAAE,QAAQ,EAAE,GAAE,WAAW,GAAE,GAAE,aAAa,GAAE,GAAE,QAAQ,KAAK,GAAG,MAAO,IAAG,GAAE,GAAG,GAAE,EAAE,gBAAgB,KAAM,GAAG,EAAE,qBAAsB,SAAS,EAAE,CAAC,GAAI,IAAE,GAAG,GAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM,4BAA4B,CAAC,EAAE,MAAM,QAAQ,CAAC,GAAG,GAAE,GAAG,EAAE,MAAM,YAAY,GAAG,GAAE,GAAG,EAAE,MAAM,iBAAkB,GAAG,EAAE,cAAe,SAAS,EAAE,GAAE,CAAC,GAAI,GAAE,EAAE,MAAM,KAAK,EAAE,gBAAgB,GAAG,GAAE,QAAQ,EAAE,KAAI,KAAM,GAAG,EAAE,gBAAiB,SAAS,EAAE,GAAE,CAAC,GAAI,GAAE,EAAE,IAAI,EAAE,EAAE,MAAM,GAAE,EAAE,KAAK,GAAE,EAAE,eAAe,GAAE,EAAE,gBAAgB,GAAW,IAAR,OAAW,EAAE,iBAAiB,CAAC,EAAE,MAAM,2BAA2B,OAAO,OAAO,QAAQ,EAAE,YAAY,EAAE,IAAG,EAAE,MAAM,gBAAgB,EAAE,MAAM,UAAU,UAAU,aAAa,EAAE,qBAAqB,GAAE,EAAE,GAAE,SAAS,EAAE,MAAM,aAAa,IAAI,UAAU,YAAY,EAAE,qBAAqB,GAAE,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,IAAI,UAAU,UAAU,GAAI,IAAE,GAAG,GAAE,IAAG,YAAY,GAAE,EAAE,GAAE,GAAE,GAAE,GAAG,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,EAAE,qBAAqB,GAAE,EAAE,SAAS,EAAE,MAAM,aAAa,KAAI,UAAU,YAAY,GAAI,IAAE,GAAG,GAAE,IAAG,UAAU,GAAE,EAAE,GAAE,GAAE,GAAE,GAAG,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,EAAE,qBAAqB,GAAE,GAAE,SAAS,EAAE,MAAM,aAAa,KAAI,IAAG,GAAE,KAAM,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,EAAE,GAAE,KAAK,EAAE,GAAE,QAAQ,GAAE,GAAE,QAAQ,GAAE,GAAE,SAAS,GAAE,GAAE,aAAa,GAAE,GAAE,aAAa,GAAE,GAAE,WAAW,GAAE,GAAE,cAAc,MAAO,GAAE,KAAK,8BAA8B,0BAA0B,OAAO,GAAG,GAAE,GAAE,GAAE,QAAQ,EAAE,IAAI,OAAO,CAAC,wCAAwC,IAAI,GAAE,QAAQ,IAAG,wCAAyC,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,EAAE,EAAE,OAAO,iDAAiD,EAAE,mBAAmB,GAAG,2CAA2C,EAAE,aAAa,GAAG,yCAAyC,EAAE,WAAW,GAAG,wCAAwC,EAAE,UAAU,GAAG,kDAAkD,EAAE,mBAAmB,GAAG,qDAAqD,EAAE,sBAAsB,GAAG,mDAAmD,EAAE,oBAAoB,GAAG,qCAAqC,EAAE,cAAc,OAAQ,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,2BAA2B,KAAK,IAAI,GAAE,QAAQ,EAAE,MAAM,cAAc,IAAI,OAAQ,GAAG,EAAE,6BAA8B,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,EAAE,WAAW,GAAE,EAAE,aAAa,MAAO,GAAE,KAAK,yBAAyB,CAAC,0CAA0C,IAAI,IAAG,GAAG,QAAQ,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,MAAO,GAAE,MAAM,kBAAkB,EAAE,MAAM,kBAAkB,GAAG,IAAK,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,OAAQ,GAAE,KAAK,EAAE,GAAG,EAAE,KAAK,MAAM,GAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,iBAAiB,GAAE,EAAE,iBAAiB,GAAE,GAAG,GAAE,GAAG,GAAE,GAAE,YAAY,GAAE,GAAE,UAAU,GAAE,SAAS,GAAE,CAAC,EAAE,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,EAAE,UAAU,GAAE,IAAG,QAAQ,SAAS,GAAE,CAAC,EAAE,YAAY,GAAE,KAAI,UAAU,SAAS,GAAE,CAAC,GAAG,KAAK,IAAE,iBAAiB,GAAE,IAAI,SAAS,EAAE,cAAc,GAAE,KAAI,SAAS,EAAE,gBAAgB,IAAG,UAAU,EAAE,kBAAkB,IAAG,aAAa,EAAE,MAAM,gBAAgB,OAAO,SAAS,GAAE,CAAC,MAAO,GAAE,GAAE,KAAI,eAAe,EAAE,MAAM,gBAAgB,SAAS,GAAE,CAAC,MAAO,GAAE,GAAE,KAAI,OAAO,aAAa,EAAE,MAAM,gBAAgB,OAAO,SAAS,GAAE,CAAC,MAAO,IAAE,GAAE,KAAI,eAAe,EAAE,MAAM,gBAAgB,SAAS,GAAE,CAAC,MAAO,IAAE,GAAE,KAAI,OAAO,IAAI,GAAE,eAAe,EAAE,cAAc,IAAG,OAAO,QAAQ,EAAE,eAAe,OAAM,GAAE,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,KAAK,8BAA8B,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,iCAAiC,aAAa,KAAK,MAAM,gBAAgB,OAAO,KAAK,MAAM,mBAAmB,eAAe,KAAK,MAAM,gBAAgB,KAAK,MAAM,mBAAmB,QAAQ,SAAS,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,eAAgB,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,IAAI,GAAI,IAAE,EAAE,MAAM,KAAK,EAAE,aAAa,OAAM,CAAC,MAAM,IAAG,GAAE,GAAI,MAAK,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,SAAS,KAAM,GAAG,EAAE,kBAAmB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,KAAK,GAAE,EAAE,MAAM,EAAE,GAAE,KAAK,EAAE,GAAE,WAAW,GAAE,GAAE,gBAAgB,MAAO,IAAE,GAAG,QAAQ,aAAa,GAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,QAAQ,cAAc,QAAQ,CAAC,KAAK,OAAO,UAAU,+BAA+B,YAAY,OAAO,KAAK,aAAa,SAAS,GAAG,MAAM,EAAE,SAAS,SAAS,GAAE,CAAC,EAAE,aAAa,GAAE,OAAO,OAAO,QAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,YAAY,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,0CAA0C,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,kCAAkC,KAAK,MAAM,gBAAgB,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,0CAA0C,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,gCAAgC,KAAK,wBAAwB,CAAC,CAAC,IAAI,2BAA2B,MAAM,SAAS,EAAE,EAAE,CAAC,MAAO,GAAE,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,YAAY,UAAU,GAAG,QAAQ,WAAW,YAAY,GAAE,CAAC,GAAI,IAAE,GAAE,mBAAmB,EAAW,KAAT,QAAY,GAAE,EAAE,GAAE,SAAS,EAAW,IAAT,QAAY,EAAE,GAAE,GAAE,UAAU,EAAE,GAAE,SAAS,EAAE,EAAE,cAAc,cAAc,OAAO,EAAE,YAAY,IAAI,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,GAAE,KAAK,SAAS,aAAa,EAAE,aAAa,QAAQ,GAAG,GAAI,IAAG,CAAC,gCAAgC,iCAAiC,uCAAuC,GAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,qBAAsB,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,KAAM,GAAG,EAAE,qBAAsB,UAAU,CAAC,MAAO,GAAE,aAAa,UAAW,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAE,WAAU,CAAC,GAAI,IAAI,YAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,IAAI,WAAW,IAAI,MAAM,OAAO,MAAO,IAAG,KAAM,SAAS,EAAE,CAAC,MAAO,IAAE,QAAQ,IAAI,MAAO,EAAE,SAAS,EAAE,MAAM,oBAAqB,GAAG,EAAE,gBAAiB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,WAAW,GAAE,GAAG,EAAE,OAAO,GAAE,GAAG,EAAE,OAAO,GAAE,KAAK,GAAE,GAAG,GAAG,GAAE,MAAO,KAAI,KAAG,GAAG,SAAS,GAAE,IAAG,GAAE,IAAG,GAAG,QAAQ,GAAE,IAAG,GAAE,MAAM,GAAG,EAAE,gBAAiB,UAAU,CAAC,EAAE,SAAU,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,MAAM,CAAC,KAAK,GAAE,UAAU,GAAE,KAAO,UAAU,CAAC,MAAO,GAAE,kBAAkB,EAAE,MAAM,UAAY,GAAG,EAAE,gBAAiB,UAAU,CAAC,EAAE,SAAU,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,MAAM,CAAC,KAAK,GAAE,UAAU,GAAE,KAAO,UAAU,CAAC,MAAO,GAAE,kBAAkB,EAAE,MAAM,UAAY,GAAG,EAAE,iBAAkB,SAAS,EAAE,GAAE,EAAE,CAAC,EAAE,MAAM,SAAS,EAAE,GAAE,GAAG,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,IAAI,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,wBAAyB,UAAU,CAAC,EAAE,SAAS,CAAC,cAAc,OAAO,EAAE,MAAM,mBAAmB,EAAE,MAAM,sBAAuB,GAAG,EAAE,uBAAwB,SAAS,EAAE,GAAE,CAAC,EAAE,SAAS,CAAC,cAAc,GAAE,QAAQ,KAAK,MAAK,EAAE,MAAM,kBAAkB,EAAE,MAAM,iBAAiB,EAAE,MAAM,GAAG,EAAE,uBAAwB,SAAS,EAAE,GAAE,CAAC,EAAE,MAAM,kBAAkB,EAAE,MAAM,iBAAiB,EAAE,MAAM,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,EAAE,MAAM,cAAe,GAAE,MAAM,aAAa,GAAG,EAAE,SAAS,CAAC,wBAAwB,MAAM,EAAE,MAAM,oBAAqB,GAAE,MAAM,UAAU,EAAE,MAAM,SAAS,GAAG,EAAE,MAAM,SAAS,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,oBAAqB,SAAS,EAAE,CAAC,EAAE,wBAAwB,GAAG,EAAE,MAAM,oBAAqB,GAAE,MAAM,UAAU,EAAE,MAAM,SAAS,GAAG,EAAE,MAAM,SAAS,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,KAAM,GAAG,EAAE,0BAA2B,SAAS,EAAE,CAAC,EAAE,MAAM,eAAgB,GAAE,MAAM,cAAc,GAAG,EAAE,SAAS,CAAC,wBAAwB,QAAS,GAAG,EAAE,wBAAyB,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAG,EAAE,kBAAkB,KAAM,GAAG,EAAE,aAAc,SAAS,EAAE,CAAC,EAAE,SAAU,SAAS,GAAE,CAAC,GAAI,GAAE,GAAE,KAAK,MAAM,CAAC,KAAK,GAAE,QAAQ,EAAE,KAAO,UAAU,CAAC,MAAO,GAAE,iBAAiB,EAAE,MAAM,UAAY,GAAG,EAAE,cAAe,SAAS,EAAE,CAAC,EAAE,SAAU,SAAS,GAAE,CAAC,GAAI,GAAE,GAAE,KAAK,MAAM,CAAC,KAAK,GAAE,SAAS,EAAE,KAAO,UAAU,CAAC,MAAO,GAAE,kBAAkB,EAAE,MAAM,UAAY,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,EAAE,SAAU,SAAS,GAAE,CAAC,GAAI,GAAE,GAAE,KAAK,MAAM,CAAC,KAAK,GAAE,QAAQ,GAAE,SAAS,EAAE,GAAE,SAAS,IAAI,GAAE,QAAQ,MAAQ,UAAU,CAAC,MAAO,GAAE,sBAAsB,EAAE,MAAM,UAAY,GAAG,EAAE,SAAU,UAAU,CAAC,GAAI,GAAE,GAAG,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,GAAE,GAAG,MAAO,GAAE,MAAM,iBAAiB,GAAE,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,IAAI,UAAU,8BAA8B,EAAE,MAAM,WAAW,MAAM,GAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAK,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,EAAE,GAAG,GAAE,EAAE,cAAc,EAAE,EAAE,MAAM,QAAQ,GAAE,EAAE,MAAM,iBAAiB,EAAE,MAAM,iBAAiB,GAAG,OAAO,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,UAAU,EAAE,KAAK,6BAA6B,KAAI,SAAU,GAAG,EAAE,gBAAiB,SAAS,EAAE,GAAE,CAAC,MAAO,GAAE,MAAM,cAAc,SAAS,EAAE,EAAE,GAAE,CAAC,MAAO,GAAE,GAAG,EAAE,OAAO,MAAK,EAAE,EAAE,MAAM,cAAc,IAAG,EAAE,MAAM,iBAAiB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,MAAM,IAAI,EAAE,IAAG,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,SAAS,IAAI,EAAE,MAAM,GAAG,EAAE,eAAgB,UAAU,CAAC,EAAE,SAAU,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,GAAE,EAAE,MAAM,eAAe,EAAE,MAAM,eAAe,KAAO,UAAU,CAAC,MAAO,GAAE,iBAAiB,EAAE,MAAM,UAAY,GAAG,EAAE,qBAAsB,UAAU,CAAC,EAAE,SAAS,CAAC,cAAc,SAAU,GAAG,EAAE,uBAAwB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,CAAC,GAAI,GAAE,OAAO,QAAS,GAAE,MAAM,oBAAoB,EAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,UAAW,GAAE,MAAM,eAAe,EAAE,SAAS,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,GAAE,QAAQ,GAAE,GAAE,eAAe,GAAW,KAAT,OAAW,GAAG,GAAE,GAAE,GAAG,GAAG,EAAE,SAAS,GAAE,KAAI,IAAG,UAAU,GAAE,IAAG,GAAE,QAAQ,IAAG,MAAO,KAAG,GAAE,IAAG,IAAI,EAAE,MAAM,KAAK,EAAE,OAAO,UAAW,GAAE,MAAM,sBAAsB,EAAE,SAAS,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,GAAE,QAAQ,GAAE,GAAE,aAAa,GAAE,GAAE,YAAY,IAAG,GAAE,GAAE,YAAY,GAAE,GAAG,MAAO,KAAG,GAAE,6BAA6B,GAAE,IAAG,GAAG,IAAG,GAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,6BAA6B,GAAE,IAAG,KAAM,IAAI,EAAE,MAAM,KAAK,EAAE,OAAO,cAAc,EAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAI,GAAE,MAAM,0BAA0B,EAAE,MAAM,6BAA6B,CAAC,IAAI,CAAC,EAAE,MAAM,mBAAmB,CAAC,GAAI,IAAE,CAAC,+BAA+B,0CAA0C,EAAE,EAAE,cAAe,GAAE,MAAM,qBAAqB,EAAE,MAAM,uBAAuB,EAAE,MAAM,iBAAkB,GAAE,EAAE,cAAc,GAAG,EAAE,MAAM,6BAA8B,IAAE,KAAK,oDAAoD,EAAE,MAAM,GAAI,GAAE,EAAE,MAAM,qBAAqB,EAAE,MAAM,uBAAuB,EAAE,MAAM,eAAe,GAAE,EAAE,MAAM,GAAE,GAAE,yBAAyB,GAAE,GAAE,wBAAwB,GAAE,EAAE,MAAM,GAAE,GAAE,uBAAuB,GAAW,KAAT,OAAqB,MAAO,KAAjB,SAAmB,GAAE,iBAAiB,GAAE,GAAE,GAAE,sBAAsB,GAAW,KAAT,OAAqB,MAAO,KAAjB,SAAmB,GAAE,gBAAgB,GAAE,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,KAAK,SAAS,UAAU,GAAE,KAAK,KAAK,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,aAAa,EAAE,GAAE,IAAG,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,CAAC,oCAAoC,+CAA+C,KAAK,MAAM,EAAE,EAAE,MAAM,wBAAwB,EAAE,MAAM,+BAAgC,GAAG,EAAE,eAAgB,UAAU,CAAC,EAAE,SAAU,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,MAAM,CAAC,KAAK,GAAE,SAAS,GAAE,EAAE,MAAM,eAAe,EAAE,MAAM,eAAe,KAAO,UAAU,CAAC,MAAO,GAAE,iBAAiB,EAAE,MAAM,UAAY,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,CAAC,GAAI,GAAE,OAAO,QAAS,GAAE,MAAM,oBAAoB,EAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,UAAW,GAAE,MAAM,eAAe,EAAE,SAAS,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,GAAE,QAAQ,GAAE,GAAE,eAAe,GAAW,KAAT,OAAW,GAAG,GAAE,GAAE,GAAG,GAAE,SAAS,GAAE,IAAG,IAAG,YAAY,GAAE,IAAG,GAAE,QAAQ,IAAG,MAAO,KAAG,GAAE,IAAG,IAAI,EAAE,MAAM,KAAK,EAAE,OAAO,UAAW,GAAE,MAAM,sBAAsB,EAAE,SAAS,GAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,GAAE,QAAQ,GAAE,GAAE,aAAa,GAAE,GAAE,UAAU,IAAG,GAAE,GAAE,YAAY,GAAE,GAAG,MAAO,KAAG,GAAE,6BAA6B,GAAE,IAAG,GAAG,IAAG,GAAE,MAAO,SAAS,GAAE,CAAC,MAAO,IAAE,6BAA6B,GAAE,IAAG,KAAM,IAAI,EAAE,MAAM,KAAK,EAAE,OAAO,cAAc,EAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAI,GAAE,MAAM,0BAA0B,EAAE,MAAM,6BAA6B,CAAC,IAAI,CAAC,EAAE,MAAM,mBAAmB,CAAC,GAAI,IAAE,CAAC,+BAA+B,sCAAsC,EAAE,MAAM,gBAAgB,GAAE,KAAK,iDAAiD,EAAE,MAAM,aAAa,GAAE,KAAK,yDAAyD,GAAI,GAAE,EAAE,cAAe,GAAE,MAAM,qBAAqB,EAAE,MAAM,uBAAuB,EAAE,MAAM,iBAAkB,GAAE,EAAE,cAAc,GAAG,EAAE,MAAM,6BAA8B,IAAE,KAAK,gDAAgD,EAAE,MAAM,GAAI,GAAE,EAAE,MAAM,qBAAqB,EAAE,MAAM,uBAAuB,EAAE,MAAM,eAAe,GAAE,EAAE,MAAM,GAAE,GAAE,qBAAqB,GAAE,GAAE,oBAAoB,GAAE,EAAE,MAAM,GAAE,GAAE,mBAAmB,GAAW,KAAT,OAAqB,MAAO,KAAjB,SAAmB,GAAE,aAAa,GAAE,GAAE,GAAE,kBAAkB,GAAW,KAAT,OAAqB,MAAO,KAAjB,SAAmB,GAAE,YAAY,GAAE,MAAO,IAAG,QAAQ,cAAc,SAAS,CAAC,KAAK,SAAS,UAAU,GAAE,KAAK,KAAK,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,aAAa,EAAE,GAAE,IAAG,GAAG,QAAQ,cAAc,OAAO,CAAC,UAAU,CAAC,oCAAoC,2CAA2C,KAAK,MAAM,EAAE,EAAE,MAAM,oBAAoB,EAAE,MAAM,2BAA4B,GAAG,EAAE,qBAAsB,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,EAAE,MAAM,KAAK,GAAE,CAAC,mCAAmC,MAAO,GAAE,MAAM,kBAAkB,GAAE,KAAK,oDAAoD,EAAE,MAAM,mBAAmB,GAAE,KAAK,qDAAqD,EAAE,MAAM,uBAAuB,GAAE,KAAK,yDAAyD,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,GAAE,KAAK,MAAM,GAAG,EAAE,EAAE,MAAM,WAAW,EAAE,MAAM,WAAY,GAAG,EAAE,qBAAsB,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,QAAuB,UAAU,GAAG,GAAG,EAAE,MAAM,kBAAkB,CAAC,EAAE,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,mBAAmB,EAAE,MAAM,mBAAmB,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,MAAM,SAAS,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,SAAS,EAAE,WAAW,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,KAAK,GAAE,QAAQ,EAAE,MAAM,MAAM,uBAAuB,EAAE,MAAM,uBAAuB,uBAAuB,EAAE,MAAM,2BAA4B,GAAG,EAAE,sBAAuB,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,QAAuB,UAAU,GAAG,GAAG,EAAE,MAAM,mBAAmB,CAAC,EAAE,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,aAAa,EAAE,MAAM,aAAa,OAAO,EAAE,MAAM,OAAO,SAAS,EAAE,YAAY,MAAM,GAAE,SAAS,EAAE,MAAM,MAAM,wBAAwB,EAAE,MAAM,4BAA6B,GAAG,EAAE,0BAA2B,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,QAAuB,UAAU,GAAG,GAAG,EAAE,MAAM,uBAAuB,CAAC,EAAE,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,aAAa,EAAE,MAAM,aAAa,OAAO,EAAE,MAAM,OAAO,WAAW,EAAE,MAAM,WAAW,SAAS,EAAE,gBAAgB,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,KAAK,EAAE,MAAM,KAAK,4BAA4B,EAAE,MAAM,gCAAiC,GAAG,EAAE,yBAA0B,SAAS,EAAE,CAAC,EAAE,MAAM,SAAS,KAAK,GAAG,EAAE,MAAM,iBAAiB,EAAE,MAAM,gBAAgB,QAAS,GAAG,EAAE,oBAAqB,UAAU,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,EAAE,MAAM,mBAAmB,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,iCAAiC,QAAQ,SAAS,EAAE,CAAC,MAAO,GAAE,uBAAuB,KAAK,EAAE,MAAM,eAAgB,GAAG,EAAE,sBAAuB,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,4BAA4B,OAAO,EAAE,MAAM,eAAe,4CAA4C,KAAK,EAAE,mBAAmB,IAAG,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,0EAA0E,OAAO,EAAE,MAAM,cAAc,QAAQ,EAAE,qBAAqB,EAAE,oBAAwB,IAAJ,GAAO,EAAE,wBAA4B,IAAJ,GAAO,EAAE,mBAAuB,IAAJ,IAAQ,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,+BAA+B,EAAE,OAAO,QAAQ,GAAG,EAAE,qBAAsB,UAAU,CAAC,GAAI,GAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,OAAsB,UAAU,GAAG,GAAG,GAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM,gBAAgB,EAAE,MAAM,mBAAmB,MAAO,MAAK,GAAI,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,GAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC,EAAE,MAAM,uBAAuB,CAAC,EAAE,MAAM,eAAe,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,4DAA4D,QAAQ,EAAE,MAAM,iBAAiB,EAAE,MAAM,mBAAmB,GAAG,GAAG,GAAG,EAAE,OAAO,GAAG,CAAC,kBAAkB,EAAE,UAAU,GAAE,YAAY,EAAE,YAAY,WAAW,EAAE,WAAW,cAAc,EAAE,cAAc,cAAc,EAAE,cAAc,aAAa,EAAE,aAAa,aAAa,EAAE,aAAa,wBAAwB,EAAE,wBAAwB,GAAE,uBAAuB,GAAE,uBAAuB,MAAK,IAAG,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,+BAA+B,EAAE,OAAO,QAAQ,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,eAAe,GAAE,GAAG,GAAE,EAAE,gBAAgB,GAAE,GAAE,YAAY,GAAE,GAAE,UAAU,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,yDAAyD,EAAE,GAAG,OAAO,GAAE,OAAO,OAAO,IAAG,GAAE,QAAQ,OAAO,GAAG,EAAE,eAAgB,SAAS,EAAE,CAAC,OAAO,QAAkB,GAAE,MAAM,qBAAjB,OAAoC,MAAO,GAAE,mBAAmB,OAAQ,GAAE,MAAM,qBAAqB,EAAE,MAAM,uBAAuB,EAAE,MAAM,gBAAe,MAAO,GAAE,iBAAiB,WAAW,MAAO,GAAE,oBAAoB,MAAO,GAAG,EAAE,eAAgB,UAAU,CAAC,GAAI,GAAE,GAAG,CAAC,EAAE,MAAM,oBAAoB,CAAC,EAAE,MAAM,eAAe,CAAC,OAAQ,IAAE,GAAG,EAAE,EAAE,MAAM,mBAAmB,EAAE,MAAM,YAAY,EAAE,EAAE,EAAE,EAAE,MAAM,qBAAqB,EAAE,MAAM,sBAAsB,GAAE,SAAS,EAAE,MAAM,KAAK,GAAG,GAAE,UAAU,EAAE,MAAM,KAAK,GAAG,GAAU,GAAE,EAAE,MAAM,mBAAlB,MAA6C,IAAT,OAAW,EAAE,EAAE,GAAE,EAAE,GAAE,EAAE,MAAM,YAAY,EAAE,GAAE,CAAC,GAAI,IAAE,GAAE,GAAE,EAAE,GAAE,EAAE,MAAM,qBAAqB,EAAE,MAAM,sBAAsB,GAAE,SAAS,EAAE,IAAG,GAAE,UAAU,EAAE,IAAG,GAAE,SAAS,OAAO,IAAG,GAAE,GAAE,EAAE,MAAM,YAAY,EAAE,GAAE,GAAE,EAAE,GAAE,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,GAAE,IAAI,SAAS,GAAE,CAAC,EAAE,eAAe,IAAG,UAAU,qCAAqC,EAAE,aAAa,CAAC,UAAU,GAAE,EAAE,KAAI,GAAG,QAAQ,cAAc,GAAG,CAAC,yBAAyB,EAAE,MAAM,yBAAyB,2BAA2B,EAAE,MAAM,2BAA2B,oBAAoB,EAAE,MAAM,oBAAoB,gBAAgB,EAAE,MAAM,qBAAqB,SAAS,EAAE,gBAAgB,IAAI,GAAE,aAAa,EAAE,MAAM,aAAa,iBAAiB,EAAE,MAAM,iBAAiB,eAAe,EAAE,MAAM,eAAe,WAAW,EAAE,eAAe,gBAAgB,EAAE,MAAM,mBAAmB,qBAAqB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,oBAAoB,aAAa,EAAE,sBAAsB,aAAa,EAAE,MAAM,aAAa,eAAe,GAAE,iBAAiB,EAAE,MAAM,iBAAiB,OAAO,EAAE,MAAM,OAAO,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,eAAe,EAAE,MAAM,eAAe,SAAS,EAAE,MAAM,SAAS,cAAc,EAAE,MAAM,cAAc,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,OAAO,EAAE,MAAM,OAAO,qBAAqB,EAAE,MAAM,qBAAqB,YAAY,EAAE,MAAM,YAAY,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,gBAAgB,EAAE,MAAM,gBAAgB,SAAS,EAAE,MAAM,SAAS,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,2BAA2B,EAAE,MAAM,2BAA2B,gBAAgB,EAAE,MAAM,gBAAgB,cAAc,EAAE,MAAM,cAAc,gBAAgB,EAAE,MAAM,gBAAgB,UAAU,EAAE,MAAM,UAAU,QAAQ,EAAE,MAAM,QAAQ,cAAc,EAAE,MAAM,cAAc,QAAQ,EAAE,MAAM,QAAQ,oBAAoB,EAAE,MAAM,oBAAoB,kBAAkB,EAAE,MAAM,kBAAkB,mBAAmB,EAAE,MAAM,mBAAmB,qBAAqB,EAAE,MAAM,qBAAqB,kBAAkB,EAAE,MAAM,kBAAkB,2BAA2B,EAAE,MAAM,2BAA2B,oBAAoB,EAAE,MAAM,oBAAoB,wBAAwB,EAAE,MAAM,wBAAwB,6BAA6B,EAAE,MAAM,6BAA6B,8BAA8B,EAAE,MAAM,8BAA8B,eAAe,EAAE,MAAM,eAAe,sBAAsB,EAAE,MAAM,sBAAsB,eAAe,EAAE,MAAM,eAAe,eAAe,EAAE,MAAM,eAAe,aAAa,EAAE,aAAa,2BAA2B,GAAE,6BAA6B,OAAM,MAAO,OAAM,GAAG,EAAE,cAAe,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,MAAO,GAAE,MAAM,eAAe,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,qCAAqC,EAAE,aAAa,CAAC,UAAU,EAAE,MAAM,OAAO,GAAG,QAAQ,cAAc,GAAG,GAAG,CAAC,WAAW,EAAE,eAAe,cAAc,EAAE,MAAM,cAAc,mBAAmB,EAAE,mBAAmB,KAAK,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,iBAAiB,EAAE,yBAAyB,SAAU,GAAG,EAAE,oBAAqB,UAAU,CAAC,GAAG,EAAE,MAAM,gBAAiB,GAAE,MAAM,gBAAgB,EAAE,MAAM,oBAAoB,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,SAAS,WAAW,EAAE,MAAM,WAAW,SAAS,EAAE,MAAM,aAAa,cAAc,EAAE,MAAM,cAAc,OAAO,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,UAAU,EAAE,MAAM,cAAc,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,YAAY,EAAE,MAAM,YAAY,YAAY,EAAE,MAAM,YAAY,kBAAkB,EAAE,MAAM,kBAAkB,sBAAsB,EAAE,MAAM,sBAAsB,iBAAiB,EAAE,MAAM,iBAAiB,WAAW,EAAE,MAAM,WAAW,SAAS,EAAE,MAAM,eAAe,YAAY,EAAE,MAAM,YAAY,OAAO,EAAE,MAAM,OAAO,gBAAgB,EAAE,MAAM,gBAAgB,mBAAmB,EAAE,MAAM,uBAAwB,GAAG,EAAE,yBAA0B,UAAU,CAAC,GAAI,GAAE,GAAI,MAAK,EAAE,MAAM,UAAU,GAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,UAAU,GAAG,OAAO,GAAG,EAAE,YAAY,KAAK,OAAO,GAAG,EAAE,eAAe,GAAG,GAAG,EAAE,MAAM,cAAc,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,GAAE,eAAe,EAAE,MAAM,eAAe,SAAS,EAAE,MAAM,aAAa,gBAAgB,EAAE,MAAM,oBAAqB,GAAG,EAAE,uBAAwB,UAAU,CAAC,GAAI,GAAE,GAAE,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,gBAAgB,EAAE,GAAE,YAAY,EAAE,GAAE,UAAU,MAAO,GAAE,EAAE,MAAM,eAAe,GAAG,OAAO,EAAE,OAAO,OAAO,GAAG,EAAE,MAAM,qBAAqB,EAAE,MAAM,sBAAsB,GAAE,QAAQ,EAAE,MAAM,MAAM,GAAG,OAAO,GAAG,GAAE,SAAS,EAAE,MAAM,MAAM,EAAE,MAAM,QAAQ,KAAK,OAAO,GAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,QAAQ,cAAc,OAAO,CAAC,KAAK,QAAQ,YAAY,SAAS,UAAU,+BAA+B,EAAE,MAAM,yBAAyB,KAAM,GAAG,EAAE,iBAAkB,UAAU,CAAC,GAAG,EAAE,MAAM,SAAS,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,wCAAwC,EAAE,MAAM,YAAa,EAAE,aAAa,GAAG,QAAQ,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,cAAc,KAAK,eAAe,KAAK,wBAAwB,IAAI,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,KAAK,MAAM,gBAAiB,MAAK,qBAAqB,IAAK,GAAE,SAAS,CAAC,eAAe,EAAE,oBAAoB,CAAC,IAAI,qBAAqB,MAAM,SAAS,EAAE,CAAC,GAAI,GAAE,KAAK,GAAG,CAAC,KAAK,MAAM,cAAc,GAAG,KAAK,MAAM,aAAa,EAAE,eAAe,KAAK,MAAM,kBAAkB,EAAE,gBAAgB,KAAK,MAAM,YAAY,CAAC,GAAG,KAAK,MAAM,WAAW,EAAE,aAAa,KAAK,SAAS,CAAC,KAAK,KAAK,MAAM,iBAAiB,CAAC,GAAI,GAAE,CAAC,GAAG,KAAK,MAAM,KAAK,KAAK,MAAM,cAAc,KAAK,SAAS,CAAC,KAAK,KAAK,MAAM,cAAe,UAAU,CAAC,MAAO,IAAG,EAAE,wBAAwB,EAAE,MAAM,WAAY,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,MAAM,WAAW,GAAG,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,MAAM,CAAC,QAAQ,YAAY,IAAI,KAAK,cAAc,GAAG,QAAQ,cAAc,EAAE,CAAC,UAAU,EAAE,KAAK,mBAAmB,KAAK,MAAM,UAAU,CAAC,8BAA8B,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,gBAAgB,KAAK,MAAM,cAAc,mBAAmB,KAAK,MAAM,oBAAoB,KAAK,uBAAuB,KAAK,uBAAuB,KAAK,mBAAmB,KAAK,eAAe,KAAK,cAAc,KAAK,oBAAoB,KAAK,oBAAoB,KAAK,yBAAyB,KAAK,sBAAsB,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,gBAAgB,UAAU,GAAG,YAAY,EAAE,yBAAyB,GAAG,YAAY,OAAO,wBAAwB,gBAAgB,oBAAoB,YAAY,yBAAyB,iBAAiB,qBAAqB,aAAa,gBAAgB,KAAK,eAAe,SAAS,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,KAAK,EAAE,GAAE,UAAU,EAAW,IAAT,OAAW,GAAG,EAAE,EAAE,GAAE,QAAQ,GAAE,kCAAkC,MAAO,IAAG,QAAQ,eAAe,IAAG,GAAG,QAAQ,aAAa,GAAE,CAAC,UAAU,GAAG,OAAO,GAAE,MAAM,WAAW,GAAG,KAAK,OAAO,GAAE,KAAK,OAAO,GAAG,QAAQ,SAAS,EAAE,CAAa,MAAO,IAAE,MAAM,SAA3B,YAAoC,GAAE,MAAM,QAAQ,GAAe,MAAO,IAAnB,YAAsB,EAAE,MAAgB,MAAO,KAAjB,SAAmB,GAAG,QAAQ,cAAc,IAAI,CAAC,UAAU,GAAG,OAAO,GAAE,KAAK,OAAO,GAAE,KAAK,OAAO,GAAG,cAAc,OAAO,QAAQ,IAAI,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,GAAG,OAAO,GAAE,KAAK,OAAO,GAAG,MAAM,6BAA6B,QAAQ,cAAc,QAAQ,GAAG,GAAG,QAAQ,cAAc,OAAO,CAAC,EAAE,kOAAkO,GAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAI,GAAE,GAAG,KAAK,GAAE,CAAC,KAAK,GAAG,SAAS,cAAc,OAAO,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,KAAK,WAAY,MAAK,MAAM,YAAY,UAAU,eAAe,KAAK,MAAM,UAAU,KAAK,YAAa,MAAK,WAAW,SAAS,cAAc,OAAO,KAAK,WAAW,aAAa,KAAK,KAAK,MAAM,UAAW,MAAK,MAAM,YAAY,SAAS,MAAM,YAAY,KAAK,aAAa,KAAK,WAAW,YAAY,KAAK,MAAM,CAAC,IAAI,uBAAuB,MAAM,UAAU,CAAC,KAAK,WAAW,YAAY,KAAK,MAAM,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,MAAO,IAAG,QAAQ,aAAa,KAAK,MAAM,SAAS,KAAK,SAAS,GAAG,QAAQ,WAAW,GAAG,SAAS,GAAE,CAAC,MAAM,CAAC,GAAE,UAAe,GAAE,WAAP,IAAiB,GAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,iBAAkB,UAAU,CAAC,MAAO,OAAM,UAAU,MAAM,KAAK,EAAE,WAAW,QAAQ,iBAAiB,kDAAkD,EAAE,IAAI,OAAO,MAAO,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAI,GAAE,EAAE,iBAAiB,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,GAAG,UAAW,GAAG,EAAE,iBAAkB,UAAU,CAAC,GAAI,GAAE,EAAE,iBAAiB,GAAG,EAAE,OAAO,GAAG,EAAE,GAAG,UAAW,EAAE,WAAW,GAAG,QAAQ,YAAY,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,MAAO,MAAK,MAAM,cAAc,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,6BAA6B,IAAI,KAAK,YAAY,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,oCAAoC,SAAS,IAAI,QAAQ,KAAK,mBAAmB,KAAK,MAAM,SAAS,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,kCAAkC,SAAS,IAAI,QAAQ,KAAK,kBAAkB,KAAK,MAAM,YAAY,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,SAAS,GAAG,QAAQ,WAAe,GAAG,GAAG,SAAS,GAAE,CAAC,aAAY,CAAC,MAAO,IAAG,KAAK,IAAG,GAAG,KAAK,GAAE,WAAW,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,EAAE,KAAK,MAAM,EAAE,EAAE,UAAU,GAAE,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,gBAAgB,GAAE,EAAE,gBAAgB,GAAE,EAAE,cAAc,GAAE,EAAE,gBAAgB,GAAE,EAAE,SAAS,GAAE,EAAE,WAAW,GAAE,EAAE,YAAY,GAAE,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,0BAA0B,GAAG,EAAE,GAAG,QAAQ,cAAc,GAAG,CAAC,cAAc,IAAG,GAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,GAAE,KAAK,YAAY,MAAM,GAAE,eAAe,UAAU,GAAE,iBAAiB,GAAE,UAAU,UAAU,IAAG,EAAE,IAAG,GAAG,QAAQ,cAAc,GAAG,cAAc,CAAC,IAAI,GAAE,SAAS,QAAQ,GAAE,QAAQ,KAAK,eAAe,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,oBAAoB,UAAU,iCAAiC,KAAK,MAAM,iBAAkB,GAAE,GAAG,QAAQ,cAAc,KAAK,MAAM,gBAAgB,GAAG,IAAI,IAAG,CAAC,GAAI,GAAE,GAAG,QAAQ,cAAc,GAAG,CAAC,SAAS,GAAE,WAAW,IAAG,IAAI,GAAI,IAAE,EAAE,KAAK,2BAA2B,IAAG,MAAO,IAAG,QAAQ,cAAc,GAAG,QAAQ,SAAS,KAAK,GAAG,QAAQ,cAAc,MAAM,CAAC,IAAI,GAAE,KAAK,aAAa,UAAU,IAAG,IAAG,MAAM,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,SAAS,GAAG,QAAQ,WAAW,GAAI,IAAG,GAAG,SAAS,GAAE,CAAC,GAAI,IAAE,GAAG,GAAG,GAAG,IAAG,GAAG,CAAC,gBAAgB,GAAE,iBAAiB,GAAG,YAAY,GAAE,aAAa,GAAG,WAAsB,MAAO,IAAE,YAApB,WAAgC,GAAE,aAAa,EAAE,GAAG,QAAQ,SAAS,EAAE,GAAG,YAAY,GAAG,CAAC,KAAK,CAAC,GAAE,WAAW,qBAAqB,GAAG,WAAW,UAAU,GAAE,gBAAgB,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,KAAK,GAAG,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,GAAG,GAAE,mBAAmB,GAAE,cAAc,MAAO,IAAG,QAAQ,cAAc,GAAG,GAAG,GAAG,GAAE,CAAC,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,SAAS,GAAG,yCAAyC,GAAG,GAAG,QAAQ,IAAQ,GAAG,wBAAwB,GAAG,SAAS,GAAE,CAAC,YAAW,EAAE,CAAC,GAAI,GAAE,MAAO,IAAG,KAAK,IAAG,GAAG,EAAE,GAAG,KAAK,GAAE,CAAC,IAAI,kBAAmB,UAAU,CAAC,MAAO,GAAE,MAAM,WAAW,EAAE,MAAM,WAAW,EAAE,MAAM,YAAY,EAAE,MAAM,UAAU,EAAE,MAAM,UAAU,EAAE,MAAM,cAAc,EAAE,MAAM,QAAQ,EAAE,MAAM,QAAQ,OAAQ,GAAG,EAAE,iBAAkB,UAAU,CAAC,GAAI,GAAE,MAAe,GAAE,EAAE,MAAM,YAAlB,MAAsC,IAAT,OAAW,OAAO,EAAE,OAAQ,SAAS,GAAE,EAAE,CAAC,GAAI,GAAE,GAAI,MAAK,EAAE,MAAM,MAAO,GAAE,QAAQ,GAAG,GAAG,OAAO,GAAG,IAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,MAAM,IAAI,MAAO,GAAG,EAAE,mBAAoB,UAAU,CAAC,GAAI,GAAE,GAAE,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAE,GAAG,GAAG,SAAS,GAAE,GAAE,WAAW,IAAI,EAAE,GAAG,GAAG,QAAQ,GAAE,GAAE,SAAS,IAAI,EAAE,GAAE,MAAM,CAAC,KAAK,EAAE,MAAM,WAAW,GAAG,aAAa,GAAG,aAAqB,GAAE,EAAE,MAAM,aAAa,EAAE,MAAM,UAAU,EAAE,MAAM,YAAzD,MAA6E,IAAT,OAAW,EAAE,GAAE,eAAe,GAAG,EAAE,MAAM,gBAAgB,QAAQ,GAAG,qBAAqB,GAAG,wBAAwB,MAAO,GAAG,EAAE,2BAA4B,UAAU,CAAC,EAAE,qBAAqB,aAAa,EAAE,uBAAwB,GAAG,EAAE,WAAY,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,EAAE,MAAM,MAAM,CAAC,cAAc,OAAQ,GAAG,EAAE,UAAW,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,MAAM,EAAE,MAAM,OAAO,EAAE,qBAAsB,GAAG,EAAE,UAAW,SAAS,EAAE,CAAC,GAAI,IAAE,UAAU,OAAO,GAAY,UAAU,KAAnB,QAAuB,UAAU,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,EAAE,MAAM,KAAK,EAAE,MAAM,aAAa,EAAE,mBAAmB,aAAa,oBAAoB,IAAK,UAAU,CAAC,GAAG,EAAE,SAAU,SAAS,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAG,EAAE,UAAY,UAAU,CAAC,CAAC,IAAG,EAAE,UAAU,EAAE,SAAS,CAAC,WAAW,aAAgB,GAAG,EAAE,UAAW,UAAU,CAAC,MAAO,GAAE,OAAO,EAAE,MAAM,gBAAiB,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAgB,GAAE,MAAM,OAAjB,OAAsB,EAAE,MAAM,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,EAAE,MAAM,SAAS,EAAE,MAAM,OAAQ,GAAG,EAAE,cAAe,SAAS,EAAE,CAAC,EAAE,MAAM,cAAe,GAAE,MAAM,QAAQ,GAAG,EAAE,MAAM,oBAAoB,EAAE,MAAM,UAAU,EAAE,QAAQ,KAAK,EAAE,SAAS,CAAC,QAAQ,OAAQ,GAAG,EAAE,uBAAwB,UAAU,CAAC,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,SAAS,CAAC,aAAa,IAAK,UAAU,CAAC,EAAE,oBAAoB,WAAY,UAAU,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,WAAc,GAAG,EAAE,mBAAoB,UAAU,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,OAAQ,GAAG,EAAE,kBAAmB,UAAU,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,WAAY,UAAU,CAAC,MAAO,GAAE,YAAa,KAAM,GAAG,EAAE,sBAAuB,UAAU,CAAC,EAAE,qBAAsB,GAAG,EAAE,aAAc,SAAS,EAAE,CAAE,EAAC,EAAE,MAAM,MAAM,EAAE,MAAM,YAAY,EAAE,MAAM,gBAAgB,EAAE,MAAM,OAAO,GAAG,EAAE,SAAS,CAAC,QAAQ,OAAQ,GAAG,EAAE,6BAA8B,SAAS,EAAE,CAAC,EAAE,MAAM,QAAQ,EAAE,QAAQ,IAAI,EAAE,MAAM,eAAe,GAAG,EAAE,MAAM,YAAY,EAAE,mBAAoB,GAAG,EAAE,eAAgB,UAAU,CAAC,OAAQ,GAAE,UAAU,OAAO,GAAE,GAAI,OAAM,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAE,GAAG,UAAU,GAAG,GAAI,GAAE,GAAE,GAAG,GAAG,CAAC,EAAE,MAAM,aAAc,GAAE,MAAM,YAAY,MAAM,EAAE,IAAe,MAAO,GAAE,oBAArB,YAAyC,CAAC,EAAE,sBAAsB,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,MAAM,oBAAoB,KAAK,GAAI,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAG,IAAE,EAAE,OAAO,MAAM,GAAE,EAAE,MAAM,WAAW,GAAE,EAAE,MAAM,OAAO,GAAE,EAAE,MAAM,cAAc,GAAE,EAAE,MAAM,QAAQ,GAAE,KAAK,GAAE,GAAG,KAAI,GAAG,MAAM,GAAE,GAAG,MAAM,QAAQ,IAAI,IAAE,QAAS,SAAS,GAAE,CAAC,GAAI,IAAE,GAAG,MAAM,GAAE,GAAE,GAAI,MAAK,CAAC,OAAO,GAAE,4BAA4B,GAAG,6BAA6B,KAAK,IAAI,IAAE,GAAG,GAAE,KAAI,KAAI,GAAG,GAAE,GAAE,KAAI,GAAG,GAAE,KAAI,IAAI,IAAE,MAAM,IAAI,IAAE,GAAG,MAAM,GAAE,GAAE,GAAI,MAAK,CAAC,OAAO,GAAE,4BAA4B,GAAG,6BAA6B,KAAK,GAAE,GAAE,GAAG,KAAI,KAAI,GAAG,GAAE,GAAE,IAAG,GAAG,KAAK,IAAE,GAAE,MAAM,IAAI,IAAK,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,GAAG,GAAS,KAAN,KAAe,KAAN,IAAQ,CAAC,GAAI,IAAE,EAAE,eAAe,IAAG,MAAO,IAAE,GAAE,GAAE,GAAE,YAAY,GAAE,MAAO,MAAK,KAAK,IAAI,GAAE,OAAO,GAAI,IAAE,GAAG,MAAM,GAAE,GAAE,MAAM,EAAE,GAAE,QAAQ,GAAI,MAAK,CAAC,4BAA4B,GAAG,6BAA6B,MAAM,GAAG,KAAK,IAAE,GAAI,MAAK,MAAK,GAAG,KAAI,GAAE,GAAE,OAAO,EAAE,MAAM,oBAAoB,EAAE,MAAM,UAAU,IAAG,CAAC,GAAG,GAAE,EAAE,MAAM,WAAY,IAAE,GAAG,IAAI,EAAE,MAAM,SAAS,CAAC,MAAM,GAAE,SAAS,IAAG,QAAQ,GAAE,WAAW,IAAG,QAAQ,EAAE,WAAW,OAAM,CAAC,IAAG,EAAE,OAAO,OAAO,EAAE,YAAY,GAAE,EAAE,OAAQ,GAAG,EAAE,eAAgB,SAAS,EAAE,GAAE,EAAE,CAAC,GAAG,EAAE,MAAM,qBAAqB,CAAC,EAAE,MAAM,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,EAAE,MAAM,YAAY,IAAG,EAAE,YAAY,EAAE,GAAE,GAAG,GAAG,EAAE,MAAM,gBAAgB,EAAE,SAAS,CAAC,wBAAwB,KAAK,CAAC,EAAE,MAAM,qBAAqB,EAAE,MAAM,eAAe,EAAE,gBAAgB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,EAAE,MAAM,cAAc,EAAE,QAAQ,IAAI,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,CAAC,IAAG,IAAG,CAAC,EAAE,MAAM,WAAW,GAAG,EAAE,KAAI,EAAE,QAAQ,OAAQ,GAAG,EAAE,cAAe,SAAS,EAAE,GAAE,EAAE,EAAE,CAAC,GAAI,IAAE,EAAE,GAAG,EAAE,MAAM,gBAAgB,GAAU,KAAP,MAAU,GAAG,GAAE,QAAQ,IAAG,EAAE,OAAO,eAAe,EAAE,MAAM,qBAAqB,GAAU,KAAP,MAAU,GAAG,GAAE,EAAE,OAAO,eAAsB,KAAP,MAAU,GAAG,GAAE,EAAE,OAAO,OAAO,GAAI,IAAE,EAAE,MAAM,GAAE,GAAE,SAAS,GAAE,GAAE,aAAa,GAAE,GAAE,UAAU,GAAE,GAAE,QAAQ,GAAE,GAAE,gBAAgB,GAAE,GAAE,cAAc,GAAE,GAAE,QAAQ,GAAE,GAAE,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,SAAS,KAAI,EAAE,MAAM,cAAc,IAAG,GAAE,GAAU,KAAP,MAAW,EAAC,EAAE,MAAM,UAAU,GAAI,GAAE,MAAM,gBAAgB,EAAE,MAAM,oBAAoB,EAAE,MAAM,gBAAiB,IAAE,GAAG,GAAE,CAAC,KAAK,GAAE,SAAS,EAAE,MAAM,UAAU,OAAO,GAAE,WAAW,EAAE,MAAM,UAAU,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,gBAAgB,CAAC,EAAE,MAAM,oBAAoB,IAAI,IAAE,GAAG,GAAE,CAAC,KAAK,GAAE,WAAW,OAAO,GAAE,aAAa,OAAO,GAAE,gBAAgB,EAAE,MAAM,QAAQ,EAAE,SAAS,CAAC,aAAa,KAAI,EAAE,MAAM,oBAAoB,EAAE,SAAS,CAAC,gBAAgB,KAAK,GAAE,CAAC,GAAI,IAAE,IAAG,CAAC,GAAE,GAAE,IAAG,GAAE,CAAC,IAAG,CAAC,GAAE,GAAE,CAAC,GAAE,MAAM,IAAG,IAAI,CAAO,KAAP,KAAS,GAAE,CAAC,KAAK,MAAM,IAAG,GAAG,GAAE,IAAG,GAAE,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,MAAM,IAAG,GAAE,CAAC,GAAE,IAAG,KAAI,IAAG,GAAE,CAAC,GAAE,MAAM,QAAW,IAAY,IAAN,MAAS,GAAE,OAAU,GAAE,KAAM,SAAS,GAAE,CAAC,MAAO,IAAG,GAAE,MAAM,GAAE,GAAE,OAAQ,SAAS,GAAE,CAAC,MAAM,CAAC,GAAG,GAAE,MAAM,IAAQ,GAAE,GAAG,OAAO,GAAG,IAAG,CAAC,KAAI,IAAQ,GAAE,CAAC,IAAG,IAAQ,GAAE,GAAE,IAAG,GAAI,GAAE,MAAM,SAAS,GAAE,IAAG,EAAE,SAAS,CAAC,WAAW,UAAW,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAC,GAAI,IAAW,EAAE,MAAM,UAAjB,OAAyB,EAAW,EAAE,MAAM,UAAjB,OAAyB,EAAE,GAAG,GAAG,EAAE,CAAC,GAAI,IAAE,GAAE,WAAW,GAAG,GAAG,IAAG,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,QAAQ,EAAE,MAAM,iBAAiB,GAAE,CAAC,GAAI,IAAE,GAAE,WAAW,EAAE,MAAM,SAAS,EAAE,GAAG,QAAQ,EAAE,KAAI,GAAG,GAAE,YAAW,EAAE,CAAC,GAAI,IAAE,GAAE,SAAS,EAAE,MAAM,SAAS,EAAE,GAAG,SAAS,EAAE,KAAI,GAAG,GAAE,KAAI,GAAG,EAAE,SAAS,CAAC,aAAa,MAAO,GAAG,EAAE,iBAAkB,UAAU,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,QAAS,GAAG,EAAE,mBAAoB,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,MAAM,SAAS,EAAE,MAAM,SAAS,EAAE,kBAAkB,EAAE,EAAE,MAAM,SAAS,EAAE,GAAG,GAAE,CAAC,KAAK,GAAE,SAAS,GAAG,OAAO,GAAE,WAAW,KAAK,EAAE,SAAS,CAAC,aAAa,IAAI,EAAE,MAAM,SAAS,GAAG,EAAE,MAAM,qBAAsB,GAAE,uBAAuB,EAAE,QAAQ,KAAK,EAAE,MAAM,eAAe,EAAE,QAAQ,IAAK,GAAE,MAAM,oBAAoB,EAAE,MAAM,iBAAiB,EAAE,SAAS,CAAC,wBAAwB,KAAK,EAAE,SAAS,CAAC,WAAW,SAAU,GAAG,EAAE,eAAgB,UAAU,CAAC,EAAE,MAAM,UAAU,EAAE,MAAM,UAAU,EAAE,QAAQ,IAAI,EAAE,MAAM,iBAAkB,GAAG,EAAE,iBAAkB,SAAS,EAAE,CAAC,EAAE,MAAM,UAAU,GAAG,GAAI,IAAE,EAAE,IAAI,GAAG,EAAE,MAAM,MAAM,EAAE,MAAM,QAAQ,EAAE,MAAM,oBAAoB,GAAG,EAAE,MAAM,KAAK,CAAC,GAAiB,KAAd,aAA6B,KAAZ,UAAc,CAAC,EAAE,iBAAiB,GAAI,GAAE,EAAE,MAAM,gBAAgB,EAAE,MAAM,gBAAgB,+CAA+C,EAAE,MAAM,yBAAyB,EAAE,MAAM,oBAAoB,8CAA8C,uCAAuC,EAAE,EAAE,SAAS,eAAe,EAAE,SAAS,cAAc,cAAc,GAAG,MAAO,KAAK,IAAG,EAAE,MAAM,CAAC,cAAc,MAAM,GAAI,IAAE,GAAG,EAAE,MAAM,cAAwB,KAAV,QAAa,GAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,GAAI,GAAE,aAAa,GAAE,GAAG,CAAC,EAAE,MAAM,qBAAqB,EAAE,gBAAgB,KAAI,EAAE,QAAQ,KAAgB,KAAX,SAAc,GAAE,iBAAiB,EAAE,uBAAuB,EAAE,QAAQ,KAAa,KAAR,OAAW,EAAE,QAAQ,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,UAAwB,MAAd,aAA6B,KAAZ,WAAyB,KAAV,SAAa,EAAE,iBAAkB,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAY,EAAE,MAAb,UAAmB,GAAE,iBAAiB,EAAE,SAAS,CAAC,aAAa,IAAK,UAAU,CAAC,EAAE,QAAQ,IAAI,WAAY,UAAU,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,YAAe,GAAG,EAAE,eAAgB,SAAS,EAAE,CAAC,EAAE,MAAM,UAAU,GAAG,GAAI,IAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,GAAE,GAAG,EAAE,MAAM,cAAc,GAAa,IAAV,QAAY,EAAE,iBAAiB,EAAE,aAAa,GAAE,GAAG,CAAC,EAAE,MAAM,qBAAqB,EAAE,gBAAgB,YAAsB,IAAX,SAAa,EAAE,iBAAiB,EAAE,QAAQ,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,aAAa,CAAC,EAAE,MAAM,2BAA2B,CAAC,GAAI,IAAE,OAAO,OAAO,YAAY,GAAE,EAAE,MAAM,eAAe,GAAE,SAAS,GAAE,GAAG,GAAE,QAAQ,GAAE,GAAG,UAAU,aAAa,GAAE,EAAE,MAAM,eAAe,GAAE,SAAS,GAAE,GAAG,EAAE,QAAQ,GAAE,GAAG,UAAU,UAAU,GAAE,GAAE,SAAS,GAAE,GAAG,UAAU,YAAY,GAAE,GAAE,SAAS,GAAE,GAAG,UAAU,SAAS,GAAE,EAAE,EAAE,SAAS,GAAE,GAAG,GAAE,UAAU,GAAE,GAAG,UAAU,WAAW,GAAE,EAAE,GAAE,SAAS,GAAE,GAAG,GAAE,UAAU,GAAE,GAAG,UAAU,OAAO,GAAE,GAAG,GAAE,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,UAAU,MAAM,GAAE,GAAE,GAAE,GAAE,UAAU,IAAG,cAAc,GAAE,KAAK,GAAG,CAAC,GAAE,MAAO,KAAK,GAAE,MAAM,cAAc,EAAE,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,MAAM,GAAG,EAAE,iBAAiB,EAAE,SAAS,CAAC,oBAAoB,KAAK,EAAE,MAAM,oBAAoB,EAAE,YAAY,IAAG,EAAE,gBAAgB,IAAG,EAAE,MAAM,OAAO,CAAC,GAAI,IAAE,GAAE,SAAS,IAAG,GAAE,GAAE,SAAS,IAAG,GAAE,GAAE,QAAQ,IAAG,GAAE,GAAE,QAAQ,IAAG,KAAI,IAAG,KAAI,GAAE,EAAE,SAAS,CAAC,qBAAqB,KAAK,EAAE,SAAS,CAAC,qBAAqB,SAAU,GAAG,EAAE,kBAAmB,SAAS,EAAE,CAAY,EAAE,MAAb,UAAmB,GAAE,iBAAiB,EAAE,0BAA2B,GAAG,EAAE,eAAgB,SAAS,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,aAAa,EAAE,MAAM,SAAS,CAAC,KAAK,MAAM,GAAG,EAAE,MAAM,SAAS,KAAK,GAAG,EAAE,SAAS,CAAC,WAAW,SAAU,GAAG,EAAE,QAAS,UAAU,CAAC,EAAE,iBAAkB,GAAG,EAAE,WAAY,SAAS,EAAE,CAAY,MAAO,GAAE,MAAM,eAA1B,WAAyC,EAAE,MAAM,cAAc,EAAE,SAAS,UAAU,EAAE,SAAS,SAAS,iBAAiB,EAAE,SAAS,SAAS,MAAM,EAAE,QAAQ,IAAgB,MAAO,GAAE,MAAM,eAA3B,YAA0C,EAAE,MAAM,cAAc,IAAI,EAAE,QAAQ,MAAO,GAAG,EAAE,iBAAkB,UAAU,CAAC,MAAO,GAAE,MAAM,QAAQ,EAAE,iBAAiB,GAAG,QAAQ,cAAc,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,EAAE,MAAM,OAAO,iBAAiB,EAAE,MAAM,iBAAiB,yBAAyB,EAAE,MAAM,yBAAyB,2BAA2B,EAAE,MAAM,2BAA2B,oBAAoB,EAAE,MAAM,oBAAoB,qBAAqB,EAAE,MAAM,qBAAqB,mBAAmB,EAAE,MAAM,mBAAmB,QAAQ,EAAE,QAAQ,oBAAoB,EAAE,MAAM,oBAAoB,WAAW,EAAE,MAAM,mBAAmB,iBAAiB,EAAE,MAAM,iBAAiB,cAAc,EAAE,MAAM,cAAc,aAAa,EAAE,MAAM,aAAa,SAAS,EAAE,MAAM,SAAS,aAAa,EAAE,MAAM,aAAa,SAAS,EAAE,aAAa,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,aAAa,EAAE,MAAM,aAAa,gBAAgB,EAAE,MAAM,gBAAgB,cAAc,EAAE,MAAM,cAAc,UAAU,EAAE,MAAM,UAAU,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,WAAW,EAAE,MAAM,WAAW,eAAe,EAAE,2BAA2B,iBAAiB,EAAE,MAAM,iBAAiB,eAAe,EAAE,MAAM,eAAe,SAAS,GAAG,EAAE,kBAAkB,aAAa,EAAE,MAAM,aAAa,qBAAqB,EAAE,MAAM,qBAAqB,aAAa,EAAE,MAAM,aAAa,YAAY,EAAE,MAAM,YAAY,OAAO,EAAE,MAAM,OAAO,qBAAqB,EAAE,MAAM,qBAAqB,cAAc,EAAE,MAAM,cAAc,kBAAkB,EAAE,MAAM,kBAAkB,mBAAmB,EAAE,MAAM,mBAAmB,wBAAwB,EAAE,MAAM,wBAAwB,sBAAsB,EAAE,MAAM,sBAAsB,gBAAgB,EAAE,MAAM,gBAAgB,iBAAiB,EAAE,MAAM,iBAAiB,WAAW,EAAE,MAAM,WAAW,yBAAyB,EAAE,MAAM,yBAAyB,4BAA4B,EAAE,MAAM,4BAA4B,uBAAuB,EAAE,MAAM,uBAAuB,4BAA4B,EAAE,MAAM,4BAA4B,YAAY,EAAE,MAAM,YAAY,UAAU,EAAE,MAAM,UAAU,wBAAwB,GAAG,YAAY,EAAE,MAAM,YAAY,YAAY,EAAE,MAAM,YAAY,gBAAgB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,oBAAoB,cAAc,EAAE,MAAM,cAAc,aAAa,EAAE,MAAM,aAAa,aAAa,EAAE,MAAM,aAAa,iBAAiB,EAAE,MAAM,iBAAiB,eAAe,EAAE,MAAM,eAAe,cAAc,EAAE,MAAM,cAAc,eAAe,EAAE,MAAM,eAAe,eAAe,EAAE,MAAM,eAAe,mBAAmB,EAAE,MAAM,mBAAmB,aAAa,EAAE,iBAAiB,WAAW,EAAE,MAAM,WAAW,cAAc,EAAE,MAAM,cAAc,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,MAAM,QAAQ,aAAa,EAAE,MAAM,aAAa,WAAW,EAAE,MAAM,WAAW,YAAY,EAAE,MAAM,YAAY,UAAU,EAAE,MAAM,kBAAkB,UAAU,EAAE,MAAM,kBAAkB,eAAe,EAAE,MAAM,eAAe,uBAAuB,EAAE,MAAM,uBAAuB,uBAAuB,EAAE,MAAM,uBAAuB,yBAAyB,EAAE,MAAM,yBAAyB,mBAAmB,EAAE,MAAM,mBAAmB,qBAAqB,EAAE,MAAM,qBAAqB,sBAAsB,EAAE,MAAM,sBAAsB,wBAAwB,EAAE,MAAM,wBAAwB,kBAAkB,EAAE,MAAM,kBAAkB,oBAAoB,EAAE,MAAM,oBAAoB,eAAe,EAAE,MAAM,eAAe,2BAA2B,EAAE,MAAM,2BAA2B,mBAAmB,EAAE,MAAM,mBAAmB,YAAY,EAAE,MAAM,YAAY,kBAAkB,EAAE,MAAM,kBAAkB,mBAAmB,EAAE,MAAM,mBAAmB,qBAAqB,EAAE,MAAM,qBAAqB,kBAAkB,EAAE,MAAM,kBAAkB,gBAAgB,EAAE,MAAM,gBAAgB,kBAAkB,EAAE,MAAM,kBAAkB,iBAAiB,EAAE,MAAM,iBAAiB,iBAAiB,EAAE,MAAM,iBAAiB,2BAA2B,EAAE,MAAM,2BAA2B,cAAc,EAAE,MAAM,cAAc,oBAAoB,EAAE,MAAM,oBAAoB,wBAAwB,EAAE,MAAM,wBAAwB,6BAA6B,EAAE,MAAM,6BAA6B,8BAA8B,EAAE,MAAM,8BAA8B,eAAe,EAAE,MAAM,eAAe,sBAAsB,EAAE,MAAM,sBAAsB,eAAe,EAAE,MAAM,eAAe,iBAAiB,EAAE,MAAM,iBAAiB,gBAAgB,EAAE,MAAM,UAAU,mBAAmB,EAAE,aAAa,eAAe,EAAE,MAAM,QAAQ,gBAAgB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,gBAAgB,gBAAgB,EAAE,MAAM,gBAAgB,cAAc,EAAE,MAAM,eAAe,EAAE,MAAM,UAAU,OAAQ,GAAG,EAAE,uBAAwB,UAAU,CAAC,GAAI,GAAE,GAAE,EAAE,MAAM,EAAE,GAAE,WAAW,EAAE,GAAE,OAAO,GAAE,EAAE,MAAM,eAAe,EAAE,MAAM,eAAe,QAAQ,OAAO,MAAO,GAAE,EAAE,MAAM,aAAa,wBAAwB,OAAO,GAAG,EAAE,MAAM,UAAU,CAAC,WAAW,GAAE,OAAO,IAAI,MAAM,OAAO,EAAE,MAAM,QAAQ,aAAa,GAAG,EAAE,MAAM,QAAQ,CAAC,WAAW,GAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,kBAAkB,OAAO,GAAG,EAAE,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,KAAK,EAAE,MAAM,eAAe,kBAAkB,OAAO,GAAG,EAAE,MAAM,SAAS,CAAC,WAAW,OAAO,OAAO,KAAK,EAAE,MAAM,oBAAoB,mBAAmB,OAAO,GAAG,EAAE,MAAM,SAAS,CAAC,WAAW,YAAY,OAAO,KAAK,EAAE,MAAM,sBAAsB,qBAAqB,OAAO,GAAG,EAAE,MAAM,SAAS,CAAC,WAAW,YAAY,OAAO,KAAK,kBAAkB,OAAO,GAAG,EAAE,MAAM,SAAS,CAAC,WAAW,GAAE,OAAO,KAAK,GAAG,QAAQ,cAAc,OAAO,CAAC,KAAK,QAAQ,YAAY,SAAS,UAAU,+BAA+B,KAAM,GAAG,EAAE,kBAAmB,UAAU,CAAC,GAAI,GAAE,GAAE,EAAE,KAAK,EAAE,MAAM,UAAU,GAAG,GAAG,GAAG,EAAE,MAAM,OAAO,EAAE,EAAE,MAAM,aAAa,GAAG,QAAQ,cAAc,QAAQ,CAAC,KAAK,SAAS,EAAE,EAAE,MAAM,gBAAgB,MAAM,GAAY,MAAO,GAAE,MAAM,OAAzB,SAA+B,EAAE,MAAM,MAAgB,MAAO,GAAE,MAAM,YAAzB,SAAoC,EAAE,MAAM,WAAW,EAAE,MAAM,aAAa,SAAS,GAAE,GAAE,GAAE,CAAC,GAAG,CAAC,GAAE,MAAM,GAAG,GAAI,IAAE,GAAG,GAAE,IAAG,GAAE,GAAE,GAAG,GAAE,IAAG,GAAG,MAAM,GAAG,OAAO,GAAE,OAAO,OAAO,KAAI,EAAE,MAAM,UAAU,EAAE,MAAM,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,SAAS,GAAE,GAAE,CAAC,GAAS,IAAN,MAAS,CAAC,GAAE,OAAO,MAAM,GAAG,GAAI,IAAE,GAAG,GAAE,GAAG,IAAG,GAAO,GAAE,SAAN,EAAa,MAAO,IAAE,GAAO,GAAE,SAAN,EAAa,CAAC,GAAI,IAAE,GAAG,GAAE,GAAG,IAAG,MAAM,GAAG,OAAO,GAAE,MAAM,OAAO,IAAG,GAAI,IAAE,GAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAE,OAAO,OAAO,GAAE,MAAM,EAAE,MAAM,cAAc,EAAE,OAAO,GAAG,EAAE,MAAM,SAAS,EAAE,OAAO,MAAO,IAAG,QAAQ,aAAa,EAAG,IAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAG,SAAS,GAAE,CAAC,EAAE,MAAM,KAAK,QAAQ,IAAG,SAAS,EAAE,YAAY,WAAW,EAAE,cAAc,UAAU,EAAE,cAAc,UAAU,EAAE,aAAa,YAAY,EAAE,gBAAgB,KAAK,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,MAAM,OAAO,EAAE,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,YAAY,EAAE,MAAM,WAAW,cAAc,EAAE,MAAM,iBAAiB,WAAW,EAAE,MAAM,UAAU,eAAe,EAAE,MAAM,cAAc,YAAY,EAAE,KAAK,EAAE,MAAM,UAAU,KAAI,QAAQ,EAAE,MAAM,OAAO,WAAW,EAAE,MAAM,UAAU,WAAW,EAAE,MAAM,UAAU,WAAW,EAAE,MAAM,UAAU,mBAAmB,EAAE,MAAM,iBAAiB,GAAG,GAAG,GAAG,EAAE,eAAe,EAAE,MAAM,aAAa,kBAAkB,EAAE,MAAM,gBAAgB,gBAAgB,EAAE,MAAM,kBAAmB,GAAG,EAAE,oBAAqB,UAAU,CAAC,GAAI,GAAE,EAAE,MAAM,GAAE,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAE,EAAE,UAAU,GAAE,EAAE,QAAQ,GAAE,EAAE,iBAAiB,GAAE,EAAE,qBAAqB,GAAW,KAAT,OAAW,GAAG,GAAE,GAAE,EAAE,eAAe,GAAW,KAAT,OAAW,QAAQ,GAAE,GAAE,EAAE,cAAc,MAAO,KAAI,CAAM,GAAN,MAAe,IAAN,MAAe,IAAN,MAAe,IAAN,MAAS,GAAE,QAAQ,GAAG,QAAQ,cAAc,SAAS,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,+BAA+B,GAAE,CAAC,yCAAyC,IAAI,SAAS,EAAE,aAAa,GAAE,QAAQ,EAAE,aAAa,MAAM,GAAE,SAAS,KAAK,OAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,KAAK,EAAE,MAAO,IAAG,GAAE,IAAG,GAAG,GAAE,CAAC,CAAC,IAAI,oBAAoB,MAAM,UAAU,CAAC,OAAO,iBAAiB,SAAS,KAAK,SAAS,MAAM,CAAC,IAAI,qBAAqB,MAAM,SAAS,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,QAAS,GAAE,EAAE,SAAS,GAAE,KAAK,MAAM,SAAS,GAAG,GAAE,GAAE,SAAS,KAAK,GAAE,SAAS,KAAI,GAAE,QAAQ,KAAK,GAAE,QAAQ,IAAG,IAAI,KAAI,KAAK,gBAAgB,KAAK,MAAM,UAAmB,KAAK,MAAM,kBAApB,QAAqC,EAAE,cAAc,KAAK,MAAM,aAAa,KAAK,SAAS,CAAC,gBAAgB,IAAI,EAAE,iBAAiB,KAAK,MAAM,gBAAgB,KAAK,SAAS,CAAC,eAAe,GAAG,KAAK,MAAM,kBAAkB,EAAE,SAAS,GAAG,EAAE,SAAS,KAAK,MAAM,WAAW,KAAK,SAAS,CAAC,WAAW,OAAO,EAAE,OAAO,KAAK,MAAM,MAAO,CAAK,EAAE,OAAP,IAAkB,KAAK,MAAM,OAAhB,IAAsB,KAAK,MAAM,iBAAsB,EAAE,OAAP,IAAkB,KAAK,MAAM,OAAhB,IAAsB,KAAK,MAAM,qBAAqB,CAAC,IAAI,uBAAuB,MAAM,UAAU,CAAC,KAAK,2BAA2B,OAAO,oBAAoB,SAAS,KAAK,SAAS,MAAM,CAAC,IAAI,uBAAuB,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,GAAE,EAAE,sBAAsB,EAAE,EAAE,0BAA0B,EAAE,KAAK,MAAM,KAAK,MAAO,IAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,oCAAoC,OAAO,EAAE,wCAAwC,KAAK,GAAG,GAAG,QAAQ,cAAc,GAAG,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAE,KAAK,OAAO,GAAG,2CAA2C,EAAE,CAAC,QAAQ,KAAK,gBAAgB,OAAO,KAAK,MAAM,yBAAyB,KAAK,uBAAuB,KAAK,kBAAkB,KAAK,uBAAuB,CAAC,IAAI,SAAS,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,iBAAiB,GAAG,KAAK,MAAM,OAAO,MAAO,GAAE,GAAG,KAAK,MAAM,WAAW,CAAC,GAAI,GAAE,KAAK,MAAM,KAAK,GAAG,QAAQ,cAAc,GAAG,CAAC,cAAc,KAAK,MAAM,eAAe,GAAG,QAAQ,cAAc,MAAM,CAAC,UAAU,2BAA2B,SAAS,GAAG,UAAU,KAAK,iBAAiB,IAAI,KAAK,MAAO,MAAK,MAAM,MAAM,KAAK,MAAM,UAAW,GAAE,GAAG,QAAQ,cAAc,GAAG,CAAC,SAAS,KAAK,MAAM,SAAS,WAAW,KAAK,MAAM,YAAY,IAAI,GAAG,QAAQ,cAAc,MAAM,KAAK,KAAK,uBAAuB,GAAG,MAAO,IAAG,QAAQ,cAAc,GAAG,CAAC,UAAU,KAAK,MAAM,gBAAgB,iBAAiB,KAAK,MAAM,iBAAiB,WAAW,CAAC,KAAK,iBAAiB,SAAS,KAAK,MAAM,SAAS,WAAW,KAAK,MAAM,WAAW,gBAAgB,KAAK,MAAM,gBAAgB,gBAAgB,KAAK,uBAAuB,gBAAgB,KAAK,MAAM,gBAAgB,gBAAgB,EAAE,gBAAgB,KAAK,MAAM,gBAAgB,YAAY,KAAK,MAAM,YAAY,gBAAgB,KAAK,gBAAgB,cAAc,KAAK,MAAM,cAAc,UAAU,KAAK,MAAM,qBAAqB,CAAC,CAAC,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,aAAa,mBAAmB,YAAY,SAAS,UAAU,GAAG,SAAS,GAAG,2BAA2B,GAAG,aAAa,SAAS,QAAQ,UAAU,GAAG,OAAO,UAAU,GAAG,UAAU,UAAU,GAAG,aAAa,UAAU,GAAG,SAAS,UAAU,GAAG,eAAe,UAAU,GAAG,cAAc,UAAU,GAAG,eAAe,UAAU,GAAG,gBAAgB,UAAU,GAAG,mBAAmB,GAAG,aAAa,UAAU,GAAG,aAAa,UAAU,GAAG,YAAY,EAAE,SAAS,GAAG,WAAW,GAAG,2BAA2B,GAAG,oBAAoB,GAAG,eAAe,GAAG,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,wBAAwB,GAAG,6BAA6B,GAAG,8BAA8B,GAAG,eAAe,GAAG,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,OAAO,uBAAuB,iBAAiB,yBAAyB,iBAAiB,mBAAmB,aAAa,qBAAqB,aAAa,sBAAsB,gBAAgB,wBAAwB,gBAAgB,kBAAkB,YAAY,oBAAoB,YAAY,eAAe,OAAO,cAAc,GAAG,eAAe,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,gBAAgB,KAAK,iBAAiB,OAAO,0BAA0B,GAAG,gBAAgB,SAAS,GAAG,QAAQ,WAAW,GAAG,QAAQ,GAAG,WAAW,EAAE,kBAAkB,GAAG,EAAE,QAAQ,GAAG,EAAE,iBAAiB,GAAG,EAAE,eAAe,SAAS,GAAE,GAAE,CAAC,GAAI,GAAe,MAAO,SAApB,YAA2B,OAAO,WAAW,EAAE,gBAAiB,GAAE,eAAe,IAAI,EAAE,eAAe,IAAG,IAAG,EAAE,iBAAiB,SAAS,GAAE,CAAE,CAAa,MAAO,SAApB,YAA2B,OAAO,YAAY,aAAa,IAAG,OAAO,eAAe,EAAE,aAAa,CAAC,MAAM,Q,gCCJzx5G,EAAQ,gBAAkB,EAC1B,WAAyB,EAAQ,EAAc,CAC7C,KAAM,GAAO,EAAS,EAAI,IAAM,GAC1B,EAAS,KAAK,IAAI,GAAQ,WAAW,SAAS,EAAc,KAClE,MAAO,GAAO,I,kCCJhB,OAAO,eAAe,EAAS,gBAAiB,CAC9C,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAO,QAGlB,GAAI,GAAS,EAAQ,O,gCCNrB,EAAQ,kBAAoB,EAC5B,EAAQ,kBAAoB,EAE5B,GAAI,GAAiB,GAErB,YAA6B,CAC3B,MAAO,GAGT,WAA2B,EAAY,CACrC,EAAiB,I,kCCVnB,EAAQ,WAAa,OACrB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAEtB,KAAM,GAAgB,CACpB,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,SAiDH,EAAc,EAAQ,WAAa,CAEvC,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAM,GAAK,cAAgB,EAAI,EAAI,EACzC,OAAQ,QAED,QACA,SACA,MACH,MAAO,IAAS,IAAI,GAAK,CAAE,MAAO,oBAE/B,QACH,MAAO,IAAS,IAAI,GAAK,CAAE,MAAO,eAE/B,eAEH,MAAO,IAAS,IAAI,GAAK,CAAE,MAAO,WAKxC,EAAG,SAAU,GAAM,GAAO,GAAU,CAElC,GAAI,KAAU,KAAM,CAClB,KAAM,IAAa,GAAK,cAElB,GAAO,GAAa,EAAI,GAAa,EAAI,GAC/C,MAAO,IAAS,cAAc,GAAM,CAAE,KAAM,SAG9C,MAAO,GAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAU,GAAS,CAC3C,KAAM,IAAkB,GAAG,EAAQ,aAAa,GAAM,IAEhD,GAAW,GAAiB,EAAI,GAAiB,EAAI,GAG3D,GAAI,KAAU,KAAM,CAClB,KAAM,GAAe,GAAW,IAChC,MAAQ,GAAG,EAAQ,iBAAiB,EAAc,GAIpD,MAAI,MAAU,KACL,GAAS,cAAc,GAAU,CAAE,KAAM,SAI1C,GAAG,EAAQ,iBAAiB,GAAU,GAAM,SAItD,EAAG,SAAU,GAAM,GAAO,CACxB,KAAM,IAAe,GAAG,EAAQ,gBAAgB,IAGhD,MAAQ,GAAG,EAAQ,iBAAiB,GAAa,GAAM,SAYzD,EAAG,SAAU,GAAM,GAAO,CACxB,KAAM,IAAO,GAAK,cAClB,MAAQ,GAAG,EAAQ,iBAAiB,GAAM,GAAM,SAIlD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAU,KAAK,KAAM,IAAK,WAAa,GAAK,GAClD,OAAQ,QAED,IACH,MAAO,QAAO,QAEX,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAS,OAE1C,KACH,MAAO,IAAS,cAAc,GAAS,CAAE,KAAM,gBAE5C,MACH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,SACP,QAAS,mBAGR,eAEH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAU,KAAK,KAAM,IAAK,WAAa,GAAK,GAClD,OAAQ,QAED,IACH,MAAO,QAAO,QAEX,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAS,OAE1C,KACH,MAAO,IAAS,cAAc,GAAS,CAAE,KAAM,gBAE5C,MACH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,SACP,QAAS,mBAGR,eAEH,MAAO,IAAS,QAAQ,GAAS,CAC/B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAQ,GAAK,WACnB,OAAQ,QACD,QACA,KACH,MAAO,GAAQ,gBAAgB,EAAE,GAAM,QAEpC,KACH,MAAO,IAAS,cAAc,GAAQ,EAAG,CAAE,KAAM,cAE9C,MACH,MAAO,IAAS,MAAM,GAAO,CAC3B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,MAAM,GAAO,CAC3B,MAAO,SACP,QAAS,mBAGR,eAEH,MAAO,IAAS,MAAM,GAAO,CAAE,MAAO,OAAQ,QAAS,iBAK7D,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAQ,GAAK,WACnB,OAAQ,QAED,IACH,MAAO,QAAO,GAAQ,OAEnB,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAQ,EAAG,OAE5C,KACH,MAAO,IAAS,cAAc,GAAQ,EAAG,CAAE,KAAM,cAE9C,MACH,MAAO,IAAS,MAAM,GAAO,CAC3B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,MAAM,GAAO,CAC3B,MAAO,SACP,QAAS,mBAGR,eAEH,MAAO,IAAS,MAAM,GAAO,CAAE,MAAO,OAAQ,QAAS,iBAK7D,EAAG,SAAU,GAAM,GAAO,GAAU,GAAS,CAC3C,KAAM,IAAQ,GAAG,EAAQ,SAAS,GAAM,IAExC,MAAI,MAAU,KACL,GAAS,cAAc,GAAM,CAAE,KAAM,SAGtC,GAAG,EAAQ,iBAAiB,GAAM,GAAM,SAIlD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAW,GAAG,EAAQ,YAAY,IAExC,MAAI,MAAU,KACL,GAAS,cAAc,GAAS,CAAE,KAAM,SAGzC,GAAG,EAAQ,iBAAiB,GAAS,GAAM,SAIrD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,MAAI,MAAU,KACL,GAAS,cAAc,GAAK,UAAW,CAAE,KAAM,SAGjD,EAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAa,GAAG,EAAO,cAAc,IAE3C,MAAI,MAAU,KACL,GAAS,cAAc,GAAW,CAAE,KAAM,cAG3C,GAAG,EAAQ,iBAAiB,GAAW,GAAM,SAIvD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAY,GAAK,SACvB,OAAQ,QAED,QACA,SACA,MACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,SACP,QAAS,mBAGR,SACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,QACP,QAAS,mBAGR,eAEH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,GAAS,CAC3C,KAAM,IAAY,GAAK,SACjB,GAAkB,IAAY,GAAQ,aAAe,GAAK,GAAK,EACrE,OAAQ,QAED,IACH,MAAO,QAAO,QAEX,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAgB,OAEjD,KACH,MAAO,IAAS,cAAc,GAAgB,CAAE,KAAM,YACnD,MACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,SACP,QAAS,mBAGR,SACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,QACP,QAAS,mBAGR,eAEH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,GAAS,CAC3C,KAAM,IAAY,GAAK,SACjB,GAAkB,IAAY,GAAQ,aAAe,GAAK,GAAK,EACrE,OAAQ,QAED,IACH,MAAO,QAAO,QAEX,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAgB,GAAM,YAEvD,KACH,MAAO,IAAS,cAAc,GAAgB,CAAE,KAAM,YACnD,MACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,SACP,QAAS,mBAGR,SACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,QACP,QAAS,mBAGR,eAEH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAY,GAAK,SACjB,GAAe,KAAc,EAAI,EAAI,GAC3C,OAAQ,QAED,IACH,MAAO,QAAO,QAEX,KACH,MAAQ,GAAG,EAAQ,iBAAiB,GAAc,GAAM,YAErD,KACH,MAAO,IAAS,cAAc,GAAc,CAAE,KAAM,YAEjD,MACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,cACP,QAAS,mBAGR,QACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,SACP,QAAS,mBAGR,SACH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,QACP,QAAS,mBAGR,eAEH,MAAO,IAAS,IAAI,GAAW,CAC7B,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAElC,KAAM,IAAqB,GADR,WACgB,IAAM,EAAI,KAAO,KAEpD,OAAQ,QACD,QACA,KACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,cACP,QAAS,mBAER,MACH,MAAO,IACJ,UAAU,GAAoB,CAC7B,MAAO,cACP,QAAS,eAEV,kBACA,QACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,SACP,QAAS,mBAER,eAEH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAQ,GAAK,WACnB,GAAI,IASJ,OARI,KAAU,GACZ,GAAqB,EAAc,KAC1B,KAAU,EACnB,GAAqB,EAAc,SAEnC,GAAqB,GAAQ,IAAM,EAAI,KAAO,KAGxC,QACD,QACA,KACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,cACP,QAAS,mBAER,MACH,MAAO,IACJ,UAAU,GAAoB,CAC7B,MAAO,cACP,QAAS,eAEV,kBACA,QACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,SACP,QAAS,mBAER,eAEH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAQ,GAAK,WACnB,GAAI,IAWJ,OAVI,IAAS,GACX,GAAqB,EAAc,QAC1B,IAAS,GAClB,GAAqB,EAAc,UAC1B,IAAS,EAClB,GAAqB,EAAc,QAEnC,GAAqB,EAAc,MAG7B,QACD,QACA,SACA,MACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,cACP,QAAS,mBAER,QACH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,SACP,QAAS,mBAER,eAEH,MAAO,IAAS,UAAU,GAAoB,CAC5C,MAAO,OACP,QAAS,iBAMjB,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,GAAI,KAAU,KAAM,CAClB,GAAI,IAAQ,GAAK,WAAa,GAC9B,MAAI,MAAU,GAAG,IAAQ,IAClB,GAAS,cAAc,GAAO,CAAE,KAAM,SAG/C,MAAO,GAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,MAAI,MAAU,KACL,GAAS,cAAc,GAAK,WAAY,CAAE,KAAM,SAGlD,EAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,KAAM,IAAQ,GAAK,WAAa,GAEhC,MAAI,MAAU,KACL,GAAS,cAAc,GAAO,CAAE,KAAM,SAGvC,GAAG,EAAQ,iBAAiB,GAAO,GAAM,SAInD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,GAAI,IAAQ,GAAK,WAGjB,MAFI,MAAU,GAAG,IAAQ,IAErB,KAAU,KACL,GAAS,cAAc,GAAO,CAAE,KAAM,SAGvC,GAAG,EAAQ,iBAAiB,GAAO,GAAM,SAInD,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,MAAI,MAAU,KACL,GAAS,cAAc,GAAK,aAAc,CAAE,KAAM,WAGpD,EAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAU,CAClC,MAAI,MAAU,KACL,GAAS,cAAc,GAAK,aAAc,CAAE,KAAM,WAGpD,EAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,CACxB,MAAO,GAAQ,gBAAgB,EAAE,GAAM,KAIzC,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAiB,GAAK,oBAE5B,GAAI,KAAmB,EACrB,MAAO,IAGT,OAAQ,QAED,IACH,MAAO,IAAkC,QAKtC,WACA,KACH,MAAO,IAAe,QAKnB,YACA,cAEH,MAAO,IAAe,GAAgB,OAK5C,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAiB,GAAK,oBAE5B,OAAQ,QAED,IACH,MAAO,IAAkC,QAKtC,WACA,KACH,MAAO,IAAe,QAKnB,YACA,cAEH,MAAO,IAAe,GAAgB,OAK5C,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAiB,GAAK,oBAE5B,OAAQ,QAED,QACA,SACA,MACH,MAAO,MAAQ,EAAoB,GAAgB,SAEhD,eAEH,MAAO,MAAQ,GAAe,GAAgB,OAKpD,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAiB,GAAK,oBAE5B,OAAQ,QAED,QACA,SACA,MACH,MAAO,MAAQ,EAAoB,GAAgB,SAEhD,eAEH,MAAO,MAAQ,GAAe,GAAgB,OAKpD,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAY,KAAK,MAAM,GAAK,UAAY,KAC9C,MAAQ,GAAG,EAAQ,iBAAiB,GAAW,GAAM,SAIvD,EAAG,SAAU,GAAM,GAAO,GAAW,CACnC,KAAM,IAAY,GAAK,UACvB,MAAQ,GAAG,EAAQ,iBAAiB,GAAW,GAAM,UAIzD,WAA6B,GAAQ,GAAY,GAAI,CACnD,KAAM,IAAO,GAAS,EAAI,IAAM,IAC1B,GAAY,KAAK,IAAI,IACrB,GAAQ,KAAK,MAAM,GAAY,IAC/B,GAAU,GAAY,GAC5B,MAAI,MAAY,EACP,GAAO,OAAO,IAGrB,GAAO,OAAO,IAAS,GAAa,GAAG,EAAQ,iBAAiB,GAAS,GAI7E,YAA2C,GAAQ,GAAW,CAC5D,MAAI,IAAS,KAAO,EAEX,IADe,EAAI,IAAM,KACjB,GAAG,EAAQ,iBAAiB,KAAK,IAAI,IAAU,GAAI,GAE7D,GAAe,GAAQ,IAGhC,YAAwB,GAAQ,GAAY,GAAI,CAC9C,KAAM,IAAO,GAAS,EAAI,IAAM,IAC1B,GAAY,KAAK,IAAI,IACrB,GAAS,GAAG,EAAQ,iBAAiB,KAAK,MAAM,GAAY,IAAK,GACjE,GAAW,GAAG,EAAQ,iBAAiB,GAAY,GAAI,GAC7D,MAAO,IAAO,GAAQ,GAAY,K,kCC1wBpC,EAAQ,gBAAkB,OAC1B,GAAI,GAAS,EAAQ,MAerB,KAAM,GAAmB,EAAQ,gBAAkB,CAEjD,EAAE,EAAM,EAAO,CAUb,KAAM,GAAa,EAAK,cAElB,EAAO,EAAa,EAAI,EAAa,EAAI,EAC/C,MAAQ,GAAG,EAAO,iBAChB,IAAU,KAAO,EAAO,IAAM,EAC9B,EAAM,SAKV,EAAE,EAAM,EAAO,CACb,KAAM,GAAQ,EAAK,WACnB,MAAO,KAAU,IACb,OAAO,EAAQ,GACd,GAAG,EAAO,iBAAiB,EAAQ,EAAG,IAI7C,EAAE,EAAM,EAAO,CACb,MAAQ,GAAG,EAAO,iBAAiB,EAAK,UAAW,EAAM,SAI3D,EAAE,EAAM,EAAO,CACb,KAAM,GAAqB,EAAK,WAAa,IAAM,EAAI,KAAO,KAE9D,OAAQ,OACD,QACA,KACH,MAAO,GAAmB,kBACvB,MACH,MAAO,OACJ,QACH,MAAO,GAAmB,OACvB,eAEH,MAAO,KAAuB,KAAO,OAAS,SAKpD,EAAE,EAAM,EAAO,CACb,MAAQ,GAAG,EAAO,iBAChB,EAAK,WAAa,IAAM,GACxB,EAAM,SAKV,EAAE,EAAM,EAAO,CACb,MAAQ,GAAG,EAAO,iBAAiB,EAAK,WAAY,EAAM,SAI5D,EAAE,EAAM,EAAO,CACb,MAAQ,GAAG,EAAO,iBAAiB,EAAK,aAAc,EAAM,SAI9D,EAAE,EAAM,EAAO,CACb,MAAQ,GAAG,EAAO,iBAAiB,EAAK,aAAc,EAAM,SAI9D,EAAE,EAAM,EAAO,CACb,KAAM,GAAiB,EAAM,OACvB,EAAe,EAAK,kBACpB,EAAoB,KAAK,MAC7B,EAAe,KAAK,IAAI,GAAI,EAAiB,IAE/C,MAAQ,GAAG,EAAO,iBAAiB,EAAmB,EAAM,W,gCClGhE,EAAQ,eAAiB,OAEzB,KAAM,GAAoB,CAAC,EAAS,IAAe,CACjD,OAAQ,OACD,IACH,MAAO,GAAW,KAAK,CAAE,MAAO,cAC7B,KACH,MAAO,GAAW,KAAK,CAAE,MAAO,eAC7B,MACH,MAAO,GAAW,KAAK,CAAE,MAAO,aAC7B,eAEH,MAAO,GAAW,KAAK,CAAE,MAAO,WAIhC,EAAoB,CAAC,EAAS,IAAe,CACjD,OAAQ,OACD,IACH,MAAO,GAAW,KAAK,CAAE,MAAO,cAC7B,KACH,MAAO,GAAW,KAAK,CAAE,MAAO,eAC7B,MACH,MAAO,GAAW,KAAK,CAAE,MAAO,aAC7B,eAEH,MAAO,GAAW,KAAK,CAAE,MAAO,WAIhC,EAAwB,CAAC,EAAS,IAAe,CACrD,KAAM,GAAc,EAAQ,MAAM,cAAgB,GAC5C,EAAc,EAAY,GAC1B,EAAc,EAAY,GAEhC,GAAI,CAAC,EACH,MAAO,GAAkB,EAAS,GAGpC,GAAI,GAEJ,OAAQ,OACD,IACH,EAAiB,EAAW,SAAS,CAAE,MAAO,UAC9C,UACG,KACH,EAAiB,EAAW,SAAS,CAAE,MAAO,WAC9C,UACG,MACH,EAAiB,EAAW,SAAS,CAAE,MAAO,SAC9C,UACG,eAEH,EAAiB,EAAW,SAAS,CAAE,MAAO,SAC9C,MAGJ,MAAO,GACJ,QAAQ,WAAY,EAAkB,EAAa,IACnD,QAAQ,WAAY,EAAkB,EAAa,KAGlD,EAAkB,EAAQ,eAAiB,CAC/C,EAAG,EACH,EAAG,I,gCChEL,EAAQ,kBAAoB,EAE5B,WAA2B,EAAQ,CACjC,MAAQ,IAAW,CAEjB,KAAM,GAAS,GADQ,KAAK,GAAU,KAAK,OACtB,GAErB,MAAO,KAAW,EAAI,EAAI,K,kCCP9B,EAAQ,gCAAkC,EAC1C,GAAI,GAAS,EAAQ,MAarB,WAAyC,EAAM,CAC7C,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAU,GAAI,MAClB,KAAK,IACH,EAAM,cACN,EAAM,WACN,EAAM,UACN,EAAM,WACN,EAAM,aACN,EAAM,aACN,EAAM,oBAGV,SAAQ,eAAe,EAAM,eACtB,CAAC,EAAO,CAAC,I,gCC5BlB,EAAQ,0BAA4B,EACpC,EAAQ,yBAA2B,EACnC,EAAQ,0BAA4B,EACpC,KAAM,GAAmB,OACnB,EAAkB,OAElB,EAAc,CAAC,IAAK,KAAM,KAAM,QAEtC,WAAmC,EAAO,CACxC,MAAO,GAAiB,KAAK,GAG/B,WAAkC,EAAO,CACvC,MAAO,GAAgB,KAAK,GAG9B,WAAmC,EAAO,EAAQ,EAAO,CACvD,KAAM,GAAW,EAAQ,EAAO,EAAQ,GAExC,GADA,QAAQ,KAAK,GACT,EAAY,SAAS,GAAQ,KAAM,IAAI,YAAW,GAGxD,WAAiB,EAAO,EAAQ,EAAO,CACrC,KAAM,GAAU,EAAM,KAAO,IAAM,QAAU,oBAC7C,MAAO,SAAS,EAAM,gCAAgC,aAAiB,uBAA4B,oBAA0B,qF,kCCxB/H,EAAQ,IAAM,EACd,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA0CtB,WAAa,EAAM,EAAU,CAC3B,KAAM,CACJ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAO,EACP,SAAQ,EACR,WAAU,EACV,WAAU,GACR,EAGE,GAAS,GAAG,EAAQ,QAAQ,GAC5B,GACJ,GAAU,EACL,GAAG,EAAQ,WAAW,GAAO,EAAS,EAAQ,IAC/C,GAGA,GACJ,IAAQ,EACH,GAAG,EAAO,SAAS,GAAgB,GAAO,EAAQ,GACnD,GAGA,GAAe,GAAU,GAAQ,GAEjC,EAAU,IADe,GAAe,IACf,IAM/B,MALmB,GAAG,EAAQ,eAC5B,EACA,GAAa,UAAY,K,kCC5E7B,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAsBtB,WAAyB,EAAM,EAAQ,CACrC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAoB,GAAG,EAAQ,WAAW,GAEhD,GAAI,MAAM,GAAS,MAAQ,GAAG,EAAO,eAAe,EAAM,KAE1D,KAAM,IAAQ,EAAM,WACd,GAAO,EAAS,EAAI,GAAK,EACzB,GAAY,KAAK,MAAM,EAAS,GAEtC,EAAM,QAAQ,EAAM,UAAY,GAAY,GAG5C,GAAI,IAAW,KAAK,IAAI,EAAS,GAGjC,KAAO,GAAW,GAChB,EAAM,QAAQ,EAAM,UAAY,IAC1B,GAAG,EAAQ,WAAW,IAAQ,KAAY,GAMlD,MAAI,IAAqB,GAAG,EAAQ,WAAW,IAAU,IAAW,GAG7D,C,GAAG,EAAQ,YAAY,IAC1B,EAAM,QAAQ,EAAM,UAAa,IAAO,EAAI,EAAI,KAC7C,GAAG,EAAQ,UAAU,IACxB,EAAM,QAAQ,EAAM,UAAa,IAAO,EAAI,EAAI,MAIpD,EAAM,SAAS,IAER,I,kCC/DT,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAsBtB,WAAiB,EAAM,EAAQ,CAC7B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,MAAI,OAAM,GAAiB,GAAG,EAAQ,eAAe,EAAM,KACtD,IAIL,EAAM,QAAQ,EAAM,UAAY,GACzB,K,kCChCT,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAsBtB,WAAkB,EAAM,EAAQ,CAC9B,MAAQ,GAAG,EAAO,iBAAiB,EAAM,EAAS,EAAQ,sB,kCCzB5D,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAwBtB,WAAyB,EAAM,EAAQ,CACrC,MAAQ,GAAG,EAAQ,gBACjB,EACC,GAAG,EAAO,gBAAgB,GAAQ,K,kCC7BvC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAsBtB,WAAyB,EAAM,EAAQ,CACrC,KAAM,GAAY,CAAE,GAAG,EAAO,QAAQ,GACtC,MAAQ,GAAG,EAAQ,eAAe,EAAM,EAAY,K,kCC1BtD,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAsBtB,WAAoB,EAAM,EAAQ,CAChC,MAAQ,GAAG,EAAO,iBAChB,EACA,EAAS,EAAQ,wB,kCC3BrB,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA0BtB,WAAmB,EAAM,EAAQ,CAC/B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,GAAI,MAAM,GAAS,MAAQ,GAAG,EAAQ,eAAe,EAAM,KAC3D,GAAI,CAAC,EAEH,MAAO,GAET,KAAM,GAAa,EAAM,UAUnB,EAAqB,GAAG,EAAQ,eAAe,EAAM,EAAM,WACjE,EAAkB,SAAS,EAAM,WAAa,EAAS,EAAG,GAC1D,KAAM,GAAc,EAAkB,UACtC,MAAI,IAAc,EAGT,EASP,GAAM,YACJ,EAAkB,cAClB,EAAkB,WAClB,GAEK,K,kCCjEX,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAsBrB,WAAqB,EAAM,EAAQ,CACjC,KAAM,GAAS,EAAS,EACxB,MAAQ,GAAG,EAAO,WAAW,EAAM,K,kCCzBrC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,EAAQ,CAChC,MAAQ,GAAG,EAAO,iBAAiB,EAAM,EAAS,O,kCCxBpD,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAQ,CAC9B,KAAM,GAAO,EAAS,EACtB,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCzBnC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAQ,CAC9B,MAAQ,GAAG,EAAO,WAAW,EAAM,EAAS,M,kCCxB9C,EAAQ,wBAA0B,EAClC,GAAI,GAAS,EAAQ,MA4DrB,WAAiC,EAAc,EAAe,EAAS,CACrE,KAAM,CAAC,EAAe,GAAe,CACnC,CAAE,GAAG,EAAO,QAAQ,EAAa,OACjC,CAAE,GAAG,EAAO,QAAQ,EAAa,MACjC,KAAK,CAAC,EAAG,KAAM,EAAI,IACf,CAAC,EAAgB,GAAgB,CACrC,CAAE,GAAG,EAAO,QAAQ,EAAc,OAClC,CAAE,GAAG,EAAO,QAAQ,EAAc,MAClC,KAAK,CAAC,EAAG,KAAM,EAAI,IAErB,MAAI,IAAS,UACJ,GAAiB,GAAgB,GAAkB,EAErD,EAAgB,GAAgB,EAAiB,I,kCC1E1D,EAAQ,MAAQ,EAChB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA8BtB,WAAe,EAAM,EAAU,CAC7B,MAAQ,GAAG,EAAQ,KAAK,CACrB,GAAG,EAAO,KAAK,CAAC,EAAM,EAAS,QAChC,EAAS,Q,kCCnCb,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MA4BrB,WAAwB,EAAe,EAAO,CAC5C,KAAM,GAAQ,GAAG,EAAO,QAAQ,GAEhC,GAAI,MAAM,OAAO,IAAQ,MAAO,KAEhC,KAAM,GAAgB,EAAK,UAE3B,GAAI,GACA,EACJ,SAAM,QAAQ,SAAU,EAAW,EAAO,CACxC,KAAM,IAAe,GAAG,EAAO,QAAQ,GAEvC,GAAI,MAAM,OAAO,KAAe,CAC9B,EAAS,IACT,EAAc,IACd,OAGF,KAAM,IAAW,KAAK,IAAI,EAAgB,GAAY,WAClD,IAAU,MAAQ,GAAW,IAC/B,GAAS,EACT,EAAc,MAIX,I,iCCtDT,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA0BtB,WAAmB,EAAe,EAAO,CACvC,KAAM,GAAQ,GAAG,EAAQ,QAAQ,GAEjC,GAAI,MAAM,OAAO,IAAQ,MAAQ,GAAG,EAAO,eAAe,EAAe,KAEzE,KAAM,GAAgB,EAAK,UAE3B,GAAI,GACA,EACJ,SAAM,QAAS,GAAc,CAC3B,KAAM,IAAe,GAAG,EAAQ,QAAQ,GAExC,GAAI,MAAM,OAAO,KAAe,CAC9B,EAAU,GAAG,EAAO,eAAe,EAAe,KAClD,EAAc,IACd,OAGF,KAAM,IAAW,KAAK,IAAI,EAAgB,GAAY,WAClD,IAAU,MAAQ,GAAW,IAC/B,GAAS,GACT,EAAc,MAIX,I,kCCrDT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAoCrB,WAAoB,EAAU,EAAW,CACvC,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GAEhC,EAAO,EAAU,UAAY,EAAW,UAE9C,MAAI,GAAO,EACF,GACE,EAAO,EACT,EAGA,I,kCCjDX,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAoCrB,WAAqB,EAAU,EAAW,CACxC,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GAEhC,EAAO,EAAU,UAAY,EAAW,UAE9C,MAAI,GAAO,EACF,GACE,EAAO,EACT,EAGA,I,+BCjDX,EAAQ,cACN,EAAQ,cACR,EAAQ,iBACR,EAAQ,eACR,EAAQ,gBACR,EAAQ,cACR,EAAQ,aACR,EAAQ,eACR,EAAQ,aACR,EAAQ,gBACR,EAAQ,cACR,EAAQ,eACR,EAAQ,cACR,EAAQ,aACR,EAAQ,QACR,EAAQ,mBACR,EAAQ,qBACR,EAAQ,qBACR,EAAQ,mBACR,EAAQ,kBACR,EAAQ,QACR,EAAQ,WACR,EAAQ,WACN,OAsBJ,KAAM,GAAc,EAAQ,WAAa,EAenC,EAAc,EAAQ,WAAa,SAgBnC,EAAW,EAAQ,QAAU,KAAK,IAAI,GAAI,GAAK,GAAK,GAAK,GAAK,IAgB9D,EAAW,EAAQ,QAAU,CAAC,EAO9B,EAAsB,EAAQ,mBAAqB,OAOnD,EAAqB,EAAQ,kBAAoB,MAOjD,EAAwB,EAAQ,qBAAuB,IAOvD,EAAsB,EAAQ,mBAAqB,KAOnD,EAAwB,EAAQ,qBAAuB,IAOvD,EAAiB,EAAQ,cAAgB,OAOzC,EAAkB,EAAQ,eAAiB,MAO3C,GAAgB,EAAQ,aAAe,KAOvC,GAAiB,EAAQ,cAAgB,GAOzC,GAAmB,EAAQ,gBAAkB,EAO7C,GAAgB,EAAQ,aAAe,GAOvC,GAAkB,EAAQ,eAAiB,EAO3C,GAAiB,EAAQ,cAAgB,KAOzC,GAAmB,EAAQ,gBAAkB,GAO7C,GAAgB,EAAQ,aAAe,GAAgB,GAOvD,EAAiB,EAAQ,cAAgB,GAAe,EAOxD,EAAiB,EAAQ,cAAgB,GAAe,EAOxD,GAAkB,EAAQ,eAAiB,EAAgB,GAO3D,GAAoB,EAAQ,iBAAmB,GAAiB,G,gCCjOtE,EAAQ,cAAgB,EAgCxB,WAAuB,EAAM,EAAO,CAClC,MAAI,aAAgB,MACX,GAAI,GAAK,YAAY,GAErB,GAAI,MAAK,K,iCCpCpB,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAgCrB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAO,eAAe,EAAM,KAAK,S,kCClC9C,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,KA0BrB,WAAqB,EAAM,CACzB,KAAM,GAAQ,EAAO,EAAO,WACtB,EAAS,KAAK,MAAM,GAE1B,MAAO,KAAW,EAAI,EAAI,I,kCC/B5B,EAAQ,yBAA2B,EACnC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAqDtB,WAAkC,EAAU,EAAW,CACrD,KAAM,GAAa,GAAG,EAAQ,QAAQ,GACtC,GAAI,IAAc,GAAG,EAAQ,QAAQ,GAErC,GAAI,CAAE,GAAG,EAAQ,SAAS,IAAc,CAAE,GAAG,EAAQ,SAAS,IAC5D,MAAO,KAET,KAAM,IAAsB,GAAG,EAAQ,0BACrC,EACA,IAEI,GAAO,GAAqB,EAAI,GAAK,EAErC,GAAQ,KAAK,MAAM,GAAqB,GAE9C,GAAI,IAAS,GAAQ,EAIrB,IAHA,GAAc,GAAG,EAAO,SAAS,GAAY,GAAQ,GAG9C,CAAE,GAAG,EAAQ,WAAW,EAAW,KAExC,IAAW,GAAG,EAAQ,WAAW,IAAc,EAAI,GACnD,GAAc,GAAG,EAAO,SAAS,GAAY,IAI/C,MAAO,MAAW,EAAI,EAAI,K,kCCrF5B,EAAQ,yBAA2B,EACnC,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAkCtB,WAAkC,EAAU,EAAW,CACrD,KAAM,GAAkB,GAAG,EAAQ,YAAY,GACzC,EAAmB,GAAG,EAAQ,YAAY,GAE1C,EACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GACzC,EACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GAK/C,MAAO,MAAK,MACT,GAAgB,GAAkB,EAAO,qB,kCCpD9C,EAAQ,iCAAmC,EAC3C,GAAI,GAAS,EAAQ,MA2BrB,WAA0C,EAAU,EAAW,CAC7D,MACG,GAAG,EAAO,gBAAgB,GAAa,GAAG,EAAO,gBAAgB,K,kCC9BtE,EAAQ,6BAA+B,EACvC,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA2BtB,WAAsC,EAAU,EAAW,CACzD,KAAM,GAAsB,GAAG,EAAQ,gBAAgB,GACjD,EAAuB,GAAG,EAAQ,gBAAgB,GAElD,EACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GACzC,EACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GAK/C,MAAO,MAAK,MACT,GAAgB,GAAkB,EAAO,sB,kCC7C9C,EAAQ,2BAA6B,EACrC,GAAI,GAAS,EAAQ,MAyBrB,WAAoC,EAAU,EAAW,CACvD,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GAEhC,EAAW,EAAU,cAAgB,EAAW,cAChD,EAAY,EAAU,WAAa,EAAW,WAEpD,MAAO,GAAW,GAAK,I,kCCjCzB,EAAQ,6BAA+B,EACvC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAyBtB,WAAsC,EAAU,EAAW,CACzD,KAAM,GAAa,GAAG,EAAQ,QAAQ,GAChC,EAAc,GAAG,EAAQ,QAAQ,GAEjC,EAAW,EAAU,cAAgB,EAAW,cAChD,EACH,GAAG,EAAO,YAAY,GAAc,GAAG,EAAO,YAAY,GAE7D,MAAO,GAAW,EAAI,I,kCCnCxB,EAAQ,0BAA4B,EACpC,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAwCtB,WAAmC,EAAU,EAAW,EAAS,CAC/D,KAAM,GAAmB,GAAG,EAAQ,aAAa,EAAU,GACrD,EAAoB,GAAG,EAAQ,aAAa,EAAW,GAEvD,EACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GACzC,GACJ,CAAC,EACA,GAAG,EAAQ,iCAAiC,GAK/C,MAAO,MAAK,MACT,GAAgB,IAAkB,EAAO,sB,kCC3D9C,EAAQ,0BAA4B,EACpC,GAAI,GAAS,EAAQ,MAyBrB,WAAmC,EAAU,EAAW,CACtD,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GAEtC,MAAO,GAAU,cAAgB,EAAW,gB,kCC9B9C,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAwDtB,WAA0B,EAAU,EAAW,CAC7C,KAAM,GAAa,GAAG,EAAQ,QAAQ,GAChC,EAAc,GAAG,EAAQ,QAAQ,GAEjC,EAAO,EAAgB,EAAW,GAClC,EAAa,KAAK,IACrB,GAAG,EAAO,0BAA0B,EAAW,IAGlD,EAAU,QAAQ,EAAU,UAAY,EAAO,GAI/C,KAAM,IAAmB,OACvB,EAAgB,EAAW,KAAgB,CAAC,GAExC,GAAS,EAAQ,GAAa,IAEpC,MAAO,MAAW,EAAI,EAAI,GAO5B,WAAyB,EAAU,EAAW,CAC5C,KAAM,GACJ,EAAS,cAAgB,EAAU,eACnC,EAAS,WAAa,EAAU,YAChC,EAAS,UAAY,EAAU,WAC/B,EAAS,WAAa,EAAU,YAChC,EAAS,aAAe,EAAU,cAClC,EAAS,aAAe,EAAU,cAClC,EAAS,kBAAoB,EAAU,kBAEzC,MAAI,GAAO,EACF,GACE,EAAO,EACT,EAGA,I,kCCnGX,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MA8BtB,WAA2B,EAAU,EAAW,EAAS,CACvD,KAAM,GACH,GAAG,EAAQ,0BAA0B,EAAU,GAChD,EAAQ,mBACV,MAAQ,GAAG,EAAO,mBAAmB,GAAS,gBAAgB,K,kCCrChE,EAAQ,yBAA2B,EACnC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA2BtB,WAAkC,EAAU,EAAW,CACrD,GAAI,GAAa,GAAG,EAAQ,QAAQ,GACpC,KAAM,GAAc,GAAG,EAAQ,QAAQ,GAEjC,EAAQ,GAAG,EAAO,YAAY,EAAW,GACzC,GAAa,KAAK,IACrB,GAAG,EAAQ,kCAAkC,EAAW,IAE3D,EAAa,GAAG,EAAQ,iBAAiB,EAAW,EAAO,IAK3D,KAAM,IAA2B,OAC9B,GAAG,EAAO,YAAY,EAAW,KAAgB,CAAC,GAE/C,GAAS,EAAQ,IAAa,IAEpC,MAAO,MAAW,EAAI,EAAI,K,kCCjD5B,EAAQ,yBAA2B,EACnC,GAAI,GAAS,EAAQ,MA0BrB,WAAkC,EAAU,EAAW,CACrD,MAAO,CAAE,GAAG,EAAO,QAAQ,GAAY,CAAE,GAAG,EAAO,QAAQ,K,kCC5B7D,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAsCtB,WAA6B,EAAU,EAAW,EAAS,CACzD,KAAM,GACH,GAAG,EAAQ,0BAA0B,EAAU,GAChD,EAAQ,qBACV,MAAQ,GAAG,EAAO,mBAAmB,GAAS,gBAAgB,K,kCC7ChE,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAsBtB,WAA4B,EAAU,EAAW,CAC/C,KAAM,GAAa,GAAG,EAAQ,QAAQ,GAChC,EAAc,GAAG,EAAQ,QAAQ,GAEjC,EAAQ,GAAG,EAAO,YAAY,EAAW,GACzC,GAAa,KAAK,IACrB,GAAG,EAAQ,4BAA4B,EAAW,IAErD,GAAI,IAGJ,GAAI,GAAa,EACf,GAAS,MACJ,CACD,EAAU,aAAe,GAAK,EAAU,UAAY,IAGtD,EAAU,QAAQ,IAGpB,EAAU,SAAS,EAAU,WAAa,EAAO,IAIjD,GAAI,IACD,GAAG,EAAO,YAAY,EAAW,KAAgB,CAAC,EAIlD,GAAG,EAAQ,kBAAmB,GAAG,EAAQ,QAAQ,KAClD,KAAe,GACd,GAAG,EAAO,YAAY,EAAU,KAAgB,GAEjD,IAAqB,IAGvB,GAAS,EAAQ,IAAa,OAAO,KAIvC,MAAO,MAAW,EAAI,EAAI,K,kCClE5B,EAAQ,qBAAuB,EAC/B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA2BtB,WAA8B,EAAU,EAAW,EAAS,CAC1D,KAAM,GAAQ,GAAG,EAAQ,oBAAoB,EAAU,GAAa,EACpE,MAAQ,GAAG,EAAO,mBAAmB,GAAS,gBAAgB,K,kCC/BhE,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA+BtB,WAA6B,EAAU,EAAW,EAAS,CACzD,KAAM,GACH,GAAG,EAAQ,0BAA0B,EAAU,GAAa,IAC/D,MAAQ,GAAG,EAAO,mBAAmB,GAAS,gBAAgB,K,iCCpChE,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAgDtB,WAA2B,EAAU,EAAW,EAAS,CACvD,KAAM,GAAQ,GAAG,EAAQ,kBAAkB,EAAU,GAAa,EAClE,MAAQ,GAAG,EAAO,mBAAmB,GAAS,gBAAgB,K,kCCpDhE,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAsBtB,WAA2B,EAAU,EAAW,CAC9C,KAAM,GAAa,GAAG,EAAQ,QAAQ,GAChC,EAAc,GAAG,EAAQ,QAAQ,GAEjC,EAAQ,GAAG,EAAO,YAAY,EAAW,GACzC,EAAa,KAAK,IACrB,GAAG,EAAQ,2BAA2B,EAAW,IAKpD,EAAU,YAAY,MACtB,EAAW,YAAY,MAIvB,KAAM,IACH,GAAG,EAAO,YAAY,EAAW,KAAgB,CAAC,EAC/C,GAAS,EAAQ,GAAa,CAAC,IAGrC,MAAO,MAAW,EAAI,EAAI,K,kCC9C5B,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MAmCrB,WAA2B,EAAU,EAAS,CAC5C,KAAM,GAAa,GAAG,EAAO,QAAQ,EAAS,OACxC,EAAW,GAAG,EAAO,QAAQ,EAAS,KAE5C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EAAW,CAAC,EAAY,CAAC,EACnC,EAAc,EAAW,EAAU,EACzC,EAAY,SAAS,EAAG,EAAG,EAAG,GAE9B,GAAI,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,EAAM,MAAO,GACd,EAAO,GACT,GAAO,CAAC,EACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,GAAe,GACrB,GAAM,KAAM,GAAG,EAAO,QAAQ,IAC9B,EAAY,QAAQ,EAAY,UAAY,GAC5C,EAAY,SAAS,EAAG,EAAG,EAAG,GAGhC,MAAO,GAAW,GAAM,UAAY,K,kCC5DtC,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAkCtB,WAA4B,EAAU,EAAS,CAC7C,KAAM,GAAa,GAAG,EAAQ,QAAQ,EAAS,OACzC,EAAW,GAAG,EAAQ,QAAQ,EAAS,KAE7C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EAAW,CAAC,EAAY,CAAC,EACzC,GAAI,GAAc,EAAW,EAAU,EACvC,EAAY,WAAW,EAAG,EAAG,GAE7B,GAAI,IAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,GAAM,MAAO,GACd,GAAO,GACT,IAAO,CAAC,GACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,GAAe,GACrB,GAAM,KAAM,GAAG,EAAQ,QAAQ,IAC/B,EAAe,GAAG,EAAO,UAAU,EAAa,IAGlD,MAAO,GAAW,GAAM,UAAY,K,kCC3DtC,EAAQ,qBAAuB,EAC/B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAkCtB,WAA8B,EAAU,EAAS,CAC/C,KAAM,GAAa,GAAG,EAAQ,eAC3B,GAAG,EAAQ,QAAQ,EAAS,QAEzB,EAAW,GAAG,EAAQ,QAAQ,EAAS,KAE7C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EAAW,CAAC,EAAY,CAAC,EACzC,GAAI,IAAc,EAAW,EAAU,EAEnC,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,GAAM,MAAO,GACd,GAAO,GACT,IAAO,CAAC,GACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,IAAe,GACrB,GAAM,KAAM,GAAG,EAAQ,QAAQ,KAC/B,GAAe,GAAG,EAAO,YAAY,GAAa,IAGpD,MAAO,GAAW,GAAM,UAAY,K,kCC7DtC,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,MAoCrB,WAA6B,EAAU,EAAS,CAC9C,KAAM,GAAa,GAAG,EAAO,QAAQ,EAAS,OACxC,EAAW,GAAG,EAAO,QAAQ,EAAS,KAE5C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EAAW,CAAC,EAAY,CAAC,EACnC,EAAc,EAAW,EAAU,EACzC,EAAY,SAAS,EAAG,EAAG,EAAG,GAC9B,EAAY,QAAQ,GAEpB,GAAI,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,EAAM,MAAO,GACd,EAAO,GACT,GAAO,CAAC,EACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,GAAe,GACrB,GAAM,KAAM,GAAG,EAAO,QAAQ,IAC9B,EAAY,SAAS,EAAY,WAAa,GAGhD,MAAO,GAAW,GAAM,UAAY,K,kCC7DtC,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAgCtB,WAA+B,EAAU,EAAS,CAChD,KAAM,GAAa,GAAG,EAAQ,QAAQ,EAAS,OACzC,EAAW,GAAG,EAAQ,QAAQ,EAAS,KAE7C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EACZ,CAAE,GAAG,EAAQ,gBAAgB,GAC7B,CAAE,GAAG,EAAQ,gBAAgB,GACjC,GAAI,IAAc,EACb,GAAG,EAAQ,gBAAgB,GAC3B,GAAG,EAAQ,gBAAgB,GAE5B,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,GAAM,MAAO,GACd,GAAO,GACT,IAAO,CAAC,GACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,IAAe,GACrB,GAAM,KAAM,GAAG,EAAQ,QAAQ,KAC/B,GAAe,GAAG,EAAO,aAAa,GAAa,IAGrD,MAAO,GAAW,GAAM,UAAY,K,kCC7DtC,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAsCtB,WAA4B,EAAU,EAAS,CAC7C,KAAM,GAAa,GAAG,EAAQ,QAAQ,EAAS,OACzC,EAAW,GAAG,EAAQ,QAAQ,EAAS,KAE7C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAgB,EACjB,GAAG,EAAQ,aAAa,EAAS,GACjC,GAAG,EAAQ,aAAa,EAAW,GAClC,GAAc,EACf,GAAG,EAAQ,aAAa,EAAW,GACnC,GAAG,EAAQ,aAAa,EAAS,GAGtC,EAAc,SAAS,IACvB,GAAY,SAAS,IAErB,KAAM,IAAU,CAAC,GAAY,UAC7B,GAAI,IAAc,EAEd,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,GAAM,MAAO,GACd,GAAO,GACT,IAAO,CAAC,GACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,IAAe,IACrB,GAAY,SAAS,GACrB,GAAM,KAAM,GAAG,EAAQ,QAAQ,KAC/B,GAAe,GAAG,EAAO,UAAU,GAAa,IAChD,GAAY,SAAS,IAGvB,MAAO,GAAW,GAAM,UAAY,K,kCC5EtC,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA6BtB,WAA+B,EAAU,CACvC,KAAM,GAAgB,GAAG,EAAO,mBAAmB,GAC7C,EAAW,GACjB,GAAI,GAAQ,EACZ,KAAO,EAAQ,EAAa,QAAQ,CAClC,KAAM,GAAO,EAAa,KACrB,GAAG,EAAQ,WAAW,IAAO,EAAS,KAAK,GAElD,MAAO,K,kCCvCT,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MA8BtB,WAA4B,EAAM,CAChC,KAAM,GAAS,GAAG,EAAQ,cAAc,GAClC,EAAO,GAAG,EAAQ,YAAY,GACpC,MAAQ,GAAG,EAAO,uBAAuB,CAAE,QAAO,U,iCCpCpD,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA2BtB,WAA2B,EAAM,CAC/B,KAAM,GAAS,GAAG,EAAQ,aAAa,GACjC,EAAO,GAAG,EAAQ,WAAW,GACnC,MAAQ,GAAG,EAAO,uBAAuB,CAAE,QAAO,U,kCCjCpD,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MAiCrB,WAA4B,EAAU,EAAS,CAC7C,KAAM,GAAa,GAAG,EAAO,QAAQ,EAAS,OACxC,EAAW,GAAG,EAAO,QAAQ,EAAS,KAE5C,GAAI,GAAW,CAAC,EAAY,CAAC,EAC7B,KAAM,GAAU,EAAW,CAAC,EAAY,CAAC,EACnC,EAAc,EAAW,EAAU,EACzC,EAAY,SAAS,EAAG,EAAG,EAAG,GAC9B,EAAY,SAAS,EAAG,GAExB,GAAI,GAAO,GAAS,MAAQ,EAC5B,GAAI,CAAC,EAAM,MAAO,GACd,EAAO,GACT,GAAO,CAAC,EACR,EAAW,CAAC,GAGd,KAAM,IAAQ,GAEd,KAAO,CAAC,GAAe,GACrB,GAAM,KAAM,GAAG,EAAO,QAAQ,IAC9B,EAAY,YAAY,EAAY,cAAgB,GAGtD,MAAO,GAAW,GAAM,UAAY,K,kCC1DtC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,CACtB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,kCC1BT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAqBrB,WAAqB,EAAM,CAIzB,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACb,EAAS,EAAI,KAAK,MAAM,EAAO,IAAM,GAC3C,SAAM,YAAY,EAAQ,GAAI,IAC9B,EAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,kCC/BT,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAsBrB,WAAmB,EAAM,CACvB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,GAAI,GAAI,KAClB,I,kCC1BT,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAwBrB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAO,WAAW,EAAM,CAAE,aAAc,M,kCC1BrD,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAyBtB,WAA0B,EAAM,CAC9B,KAAM,GAAQ,GAAG,EAAO,gBAAgB,GAClC,EAA6B,GAAG,EAAQ,eAAe,EAAM,GACnE,EAA0B,YAAY,EAAO,EAAG,EAAG,GACnD,EAA0B,SAAS,EAAG,EAAG,EAAG,GAC5C,KAAM,GAAS,GAAG,EAAQ,gBAAgB,GAC1C,SAAM,gBAAgB,EAAM,kBAAoB,GACzC,I,kCCnCT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAsBrB,WAAqB,EAAM,CACzB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,GAAI,KACd,I,iCC1BT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,CACxB,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAQ,EAAM,WACpB,SAAM,YAAY,EAAM,cAAe,EAAQ,EAAG,GAClD,EAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,iCC5BT,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAsBrB,WAAsB,EAAM,CAC1B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAe,EAAM,WACrB,EAAQ,EAAgB,EAAe,EAAK,EAClD,SAAM,SAAS,EAAO,GACtB,EAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,kCC7BT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAsBrB,WAAqB,EAAM,CACzB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,gBAAgB,KACf,I,kCC1BT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAoBrB,YAAsB,CACpB,MAAQ,GAAG,EAAO,UAAU,KAAK,S,gCCtBnC,EAAQ,cAAgB,EAkBxB,YAAyB,CACvB,KAAM,GAAM,GAAI,MACV,EAAO,EAAI,cACX,EAAQ,EAAI,WACZ,EAAM,EAAI,UAEV,EAAO,GAAI,MAAK,GACtB,SAAK,YAAY,EAAM,EAAO,EAAM,GACpC,EAAK,SAAS,GAAI,GAAI,GAAI,KACnB,I,kCC3BT,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAQ,MAgCtB,WAAmB,EAAM,EAAS,CAChC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,EAAe,cACf,EAAe,QAAQ,SAAS,cAChC,EAEI,EAAS,GAAG,EAAO,QAAQ,GAC3B,EAAM,EAAM,SACZ,EAAQ,GAAM,EAAe,GAAK,GAAK,EAAK,GAAM,GAExD,SAAM,QAAQ,EAAM,UAAY,GAChC,EAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,kCClDT,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAsBrB,WAAmB,EAAM,CACvB,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACnB,SAAM,YAAY,EAAO,EAAG,EAAG,GAC/B,EAAM,SAAS,GAAI,GAAI,GAAI,KACpB,I,gCC5BT,EAAQ,eAAiB,EAkBzB,YAA0B,CACxB,KAAM,GAAM,GAAI,MACV,EAAO,EAAI,cACX,EAAQ,EAAI,WACZ,EAAM,EAAI,UAEV,EAAO,GAAI,MAAK,GACtB,SAAK,YAAY,EAAM,EAAO,EAAM,GACpC,EAAK,SAAS,GAAI,GAAI,GAAI,KACnB,I,iCC3BT,EAAQ,OAAS,EAAQ,WAAa,GACtC,OAAO,eAAe,EAAS,aAAc,CAC3C,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,cAGnB,OAAO,eAAe,EAAS,iBAAkB,CAC/C,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,kBAGnB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAgBtB,KAAM,GACJ,wDAII,EAA6B,oCAE7B,EAAsB,eACtB,GAAoB,MACpB,GAAgC,WAoStC,YAAgB,GAAM,GAAW,GAAS,CACxC,KAAM,IAAkB,GAAG,EAAQ,qBAC7B,EACJ,IAAS,QAAU,GAAe,QAAU,EAAO,cAE/C,EACJ,IAAS,uBACT,IAAS,QAAQ,SAAS,uBAC1B,GAAe,uBACf,GAAe,QAAQ,SAAS,uBAChC,EAEI,GACJ,IAAS,cACT,IAAS,QAAQ,SAAS,cAC1B,GAAe,cACf,GAAe,QAAQ,SAAS,cAChC,EAEI,GAAgB,GAAG,EAAQ,QAAQ,IAEzC,GAAI,CAAE,GAAG,EAAQ,SAAS,IACxB,KAAM,IAAI,YAAW,sBAGvB,GAAI,IAAQ,GACT,MAAM,GACN,IAAK,IAAc,CAClB,KAAM,IAAiB,GAAU,GACjC,MAAI,MAAmB,KAAO,KAAmB,IAExC,EADuB,eAAe,IACxB,GAAW,EAAO,YAElC,KAER,KAAK,IACL,MAAM,GACN,IAAK,IAAc,CAElB,GAAI,KAAc,KAChB,MAAO,CAAE,QAAS,GAAO,MAAO,KAGlC,KAAM,IAAiB,GAAU,GACjC,GAAI,KAAmB,IACrB,MAAO,CAAE,QAAS,GAAO,MAAO,GAAmB,KAGrD,GAAI,EAAQ,WAAW,IACrB,MAAO,CAAE,QAAS,GAAM,MAAO,IAGjC,GAAI,GAAe,MAAM,IACvB,KAAM,IAAI,YACR,iEACE,GACA,KAIN,MAAO,CAAE,QAAS,GAAO,MAAO,MAIhC,EAAO,SAAS,cAClB,IAAQ,EAAO,SAAS,aAAa,GAAc,KAGrD,KAAM,IAAmB,CACvB,wBACA,gBACA,UAGF,MAAO,IACJ,IAAK,IAAS,CACb,GAAI,CAAC,GAAK,QAAS,MAAO,IAAK,MAE/B,KAAM,IAAQ,GAAK,MAEnB,MACG,EAAC,IAAS,6BACR,GAAG,EAAQ,0BAA0B,KACvC,CAAC,IAAS,8BACR,GAAG,EAAQ,2BAA2B,MAExC,GAAG,EAAQ,2BAA2B,GAAO,GAAW,OAAO,KAI3D,EADmB,WAAW,GAAM,IAC1B,GAAc,GAAO,EAAO,SAAU,MAExD,KAAK,IAGV,YAA4B,GAAO,CACjC,KAAM,IAAU,GAAM,MAAM,GAE5B,MAAK,IAIE,GAAQ,GAAG,QAAQ,GAAmB,KAHpC,K,kCCpbX,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAuFtB,WAAwB,EAAM,GAAU,GAAS,CAC/C,KAAM,IAAkB,GAAG,EAAQ,qBAC7B,GACJ,IAAS,QAAU,GAAe,QAAU,EAAQ,cAChD,GAAyB,KAEzB,GAAc,GAAG,EAAO,YAAY,EAAM,IAEhD,GAAI,MAAM,IACR,KAAM,IAAI,YAAW,sBAGvB,KAAM,IAAkB,OAAO,OAAO,GAAI,GAAS,CACjD,UAAW,IAAS,UACpB,WAAY,KAGd,GAAI,IACA,EACA,GAAa,EACf,IAAY,GAAG,EAAQ,QAAQ,IAC/B,EAAa,GAAG,EAAQ,QAAQ,IAEhC,IAAY,GAAG,EAAQ,QAAQ,GAC/B,EAAa,GAAG,EAAQ,QAAQ,KAGlC,KAAM,GAAW,GAAG,EAAQ,qBAAqB,EAAW,IACtD,GACF,C,GAAG,EAAQ,iCAAiC,GAC3C,GAAG,EAAQ,iCAAiC,KAC/C,IACI,GAAU,KAAK,MAAO,GAAU,IAAmB,IACzD,GAAI,IAGJ,GAAI,GAAU,EACZ,MAAI,KAAS,eACP,EAAU,EACL,GAAO,eAAe,mBAAoB,EAAG,IAC3C,EAAU,GACZ,GAAO,eAAe,mBAAoB,GAAI,IAC5C,EAAU,GACZ,GAAO,eAAe,mBAAoB,GAAI,IAC5C,EAAU,GACZ,GAAO,eAAe,cAAe,EAAG,IACtC,EAAU,GACZ,GAAO,eAAe,mBAAoB,EAAG,IAE7C,GAAO,eAAe,WAAY,EAAG,IAG1C,KAAY,EACP,GAAO,eAAe,mBAAoB,EAAG,IAE7C,GAAO,eAAe,WAAY,GAAS,IAKjD,GAAI,GAAU,GACnB,MAAO,IAAO,eAAe,WAAY,GAAS,IAG7C,GAAI,GAAU,GACnB,MAAO,IAAO,eAAe,cAAe,EAAG,IAG1C,GAAI,GAAU,EAAQ,aAAc,CACzC,KAAM,IAAQ,KAAK,MAAM,GAAU,IACnC,MAAO,IAAO,eAAe,cAAe,GAAO,QAG9C,IAAI,GAAU,GACnB,MAAO,IAAO,eAAe,QAAS,EAAG,IAGpC,GAAI,GAAU,EAAQ,eAAgB,CAC3C,KAAM,IAAO,KAAK,MAAM,GAAU,EAAQ,cAC1C,MAAO,IAAO,eAAe,QAAS,GAAM,YAGnC,GAAU,EAAQ,eAAiB,EAC5C,UAAS,KAAK,MAAM,GAAU,EAAQ,gBAC/B,GAAO,eAAe,eAAgB,GAAQ,IAMvD,GAHA,GAAU,GAAG,EAAQ,oBAAoB,EAAW,IAGhD,GAAS,GAAI,CACf,KAAM,IAAe,KAAK,MAAM,GAAU,EAAQ,gBAClD,MAAO,IAAO,eAAe,UAAW,GAAc,QAGjD,CACL,KAAM,IAAyB,GAAS,GAClC,GAAQ,KAAK,MAAM,GAAS,IAGlC,MAAI,IAAyB,EACpB,GAAO,eAAe,cAAe,GAAO,IAG1C,GAAyB,EAC3B,GAAO,eAAe,aAAc,GAAO,IAI3C,GAAO,eAAe,eAAgB,GAAQ,EAAG,O,kCC7M9D,EAAQ,qBAAuB,EAC/B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,KAElB,EAAU,EAAQ,MA0FtB,WAA8B,EAAM,EAAU,GAAS,CACrD,KAAM,IAAkB,GAAG,EAAQ,qBAC7B,GACJ,IAAS,QAAU,GAAe,QAAU,EAAO,cAE/C,GAAc,GAAG,EAAQ,YAAY,EAAM,GAEjD,GAAI,MAAM,IACR,KAAM,IAAI,YAAW,sBAGvB,KAAM,IAAkB,OAAO,OAAO,GAAI,GAAS,CACjD,UAAW,IAAS,UACpB,WAAY,KAGd,GAAI,IACA,GACA,GAAa,EACf,IAAY,GAAG,EAAQ,QAAQ,GAC/B,GAAa,GAAG,EAAQ,QAAQ,IAEhC,IAAY,GAAG,EAAQ,QAAQ,GAC/B,GAAa,GAAG,EAAQ,QAAQ,IAGlC,KAAM,IAAkB,GAAG,EAAQ,mBACjC,IAAS,gBAAkB,SAGvB,EAAe,GAAU,UAAY,GAAS,UAC9C,EAAU,EAAe,EAAQ,qBAEjC,GACH,GAAG,EAAQ,iCAAiC,IAC5C,GAAG,EAAQ,iCAAiC,IAIzC,GACH,GAAe,IAAkB,EAAQ,qBAEtC,GAAc,IAAS,KAC7B,GAAI,IAoBJ,GAnBK,GAeH,GAAO,GAdH,EAAU,EACZ,GAAO,SACE,EAAU,GACnB,GAAO,SACE,EAAU,EAAQ,aAC3B,GAAO,OACE,GAAuB,EAAQ,eACxC,GAAO,MACE,GAAuB,EAAQ,cACxC,GAAO,QAEP,GAAO,OAOP,KAAS,SAAU,CACrB,KAAM,IAAU,GAAe,EAAe,KAC9C,MAAO,IAAO,eAAe,WAAY,GAAS,YAGzC,KAAS,SAAU,CAC5B,KAAM,IAAiB,GAAe,GACtC,MAAO,IAAO,eAAe,WAAY,GAAgB,YAGhD,KAAS,OAAQ,CAC1B,KAAM,IAAQ,GAAe,EAAU,IACvC,MAAO,IAAO,eAAe,SAAU,GAAO,YAGrC,KAAS,MAAO,CACzB,KAAM,IAAO,GAAe,GAAuB,EAAQ,cAC3D,MAAO,IAAO,eAAe,QAAS,GAAM,YAGnC,KAAS,QAAS,CAC3B,KAAM,IAAS,GACb,GAAuB,EAAQ,gBAEjC,MAAO,MAAW,IAAM,KAAgB,QACpC,GAAO,eAAe,SAAU,EAAG,IACnC,GAAO,eAAe,UAAW,GAAQ,QAGxC,CACL,KAAM,IAAQ,GAAe,GAAuB,EAAQ,eAC5D,MAAO,IAAO,eAAe,SAAU,GAAO,O,kCChMlD,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,KAEjB,EAAU,EAAQ,MAyFtB,WAA6B,EAAM,EAAS,CAC1C,MAAQ,GAAG,EAAQ,gBACjB,EACC,GAAG,EAAO,cAAc,GACzB,K,kCChGJ,EAAQ,0BAA4B,EACpC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KA+EtB,WAAmC,EAAM,EAAS,CAChD,MAAQ,GAAG,EAAO,sBAChB,EACC,GAAG,EAAQ,cAAc,GAC1B,K,kCCrFJ,EAAQ,eAAiB,EAEzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAMtB,KAAM,GAAgB,CACpB,QACA,SACA,QACA,OACA,QACA,UACA,WA+DF,WAAwB,EAAU,EAAS,CACzC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,QAAU,EAAe,QAAU,EAAO,cAC/C,EAAS,GAAS,QAAU,EAC5B,EAAO,GAAS,MAAQ,GACxB,GAAY,GAAS,WAAa,IAExC,MAAK,GAAO,eAIG,EACZ,OAAO,CAAC,GAAK,KAAS,CACrB,KAAM,IAAQ,IAAI,GAAK,QAAQ,OAAS,IAAM,GAAE,iBAC1C,GAAQ,EAAS,IACvB,MAAI,MAAU,QAAc,IAAQ,EAAS,KACpC,GAAI,OAAO,EAAO,eAAe,GAAO,KAE1C,IACN,IACF,KAAK,IAZC,K,kCCxFX,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAQ,MA2CtB,WAAmB,EAAM,EAAS,CAChC,KAAM,GAAS,GAAG,EAAO,QAAQ,GAEjC,GAAI,MAAM,EAAM,WACd,KAAM,IAAI,YAAW,sBAGvB,KAAM,GAAS,GAAS,QAAU,WAC5B,EAAiB,GAAS,gBAAkB,WAElD,GAAI,GAAS,GACT,EAAW,GAEf,KAAM,IAAgB,IAAW,WAAa,IAAM,GAC9C,GAAgB,IAAW,WAAa,IAAM,GAGpD,GAAI,IAAmB,OAAQ,CAC7B,KAAM,IAAO,GAAG,EAAQ,iBAAiB,EAAM,UAAW,GACpD,GAAS,GAAG,EAAQ,iBAAiB,EAAM,WAAa,EAAG,GAIjE,EAAS,GAHK,GAAG,EAAQ,iBAAiB,EAAM,cAAe,KAG5C,KAAgB,KAAQ,KAAgB,KAI7D,GAAI,IAAmB,OAAQ,CAE7B,KAAM,IAAS,EAAM,oBAErB,GAAI,KAAW,EAAG,CAChB,KAAM,GAAiB,KAAK,IAAI,IAC1B,EAAc,GAAG,EAAQ,iBAC7B,KAAK,MAAM,EAAiB,IAC5B,GAEI,GAAgB,GAAG,EAAQ,iBAAiB,EAAiB,GAAI,GAIvE,EAAW,GAFE,GAAS,EAAI,IAAM,MAEX,KAAc,SAEnC,GAAW,IAGb,KAAM,IAAQ,GAAG,EAAQ,iBAAiB,EAAM,WAAY,GACtD,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAC1D,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAG1D,GAAY,IAAW,GAAK,GAAK,IAGjC,GAAO,CAAC,GAAM,GAAQ,IAAQ,KAAK,IAGzC,EAAS,GAAG,IAAS,KAAY,KAAO,IAG1C,MAAO,K,kCC1GT,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA2CtB,WAAuB,EAAM,EAAS,CACpC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAElC,GAAI,CAAE,GAAG,EAAO,SAAS,GACvB,KAAM,IAAI,YAAW,sBAGvB,KAAM,GAAS,GAAS,QAAU,WAC5B,EAAiB,GAAS,gBAAkB,WAElD,GAAI,GAAS,GAEb,KAAM,IAAgB,IAAW,WAAa,IAAM,GAC9C,GAAgB,IAAW,WAAa,IAAM,GAGpD,GAAI,IAAmB,OAAQ,CAC7B,KAAM,IAAO,GAAG,EAAQ,iBAAiB,EAAM,UAAW,GACpD,GAAS,GAAG,EAAQ,iBAAiB,EAAM,WAAa,EAAG,GAIjE,EAAS,GAHK,GAAG,EAAQ,iBAAiB,EAAM,cAAe,KAG5C,KAAgB,KAAQ,KAAgB,KAI7D,GAAI,IAAmB,OAAQ,CAC7B,KAAM,IAAQ,GAAG,EAAQ,iBAAiB,EAAM,WAAY,GACtD,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAC1D,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAMhE,EAAS,GAAG,IAHM,IAAW,GAAK,GAAK,MAGN,KAAO,KAAgB,KAAS,KAAgB,KAGnF,MAAO,K,gCCrFT,EAAQ,kBAAoB,EA0B5B,WAA2B,EAAU,CACnC,KAAM,CACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,GACR,EAEJ,MAAO,IAAI,KAAS,KAAU,MAAS,KAAS,KAAW,O,kCCpC7D,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAmCtB,WAAuB,EAAM,EAAS,CACpC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAElC,GAAI,CAAE,GAAG,EAAO,SAAS,GACvB,KAAM,IAAI,YAAW,sBAGvB,KAAM,GAAiB,GAAS,gBAAkB,EAE5C,EAAO,GAAG,EAAQ,iBAAiB,EAAM,UAAW,GACpD,EAAS,GAAG,EAAQ,iBAAiB,EAAM,WAAa,EAAG,GAC3D,GAAO,EAAM,cAEb,GAAQ,GAAG,EAAQ,iBAAiB,EAAM,WAAY,GACtD,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAC1D,GAAU,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAEhE,GAAI,IAAmB,GACvB,GAAI,EAAiB,EAAG,CACtB,KAAM,IAAe,EAAM,kBACrB,EAAoB,KAAK,MAC7B,GAAe,KAAK,IAAI,GAAI,EAAiB,IAE/C,GACE,IAAO,GAAG,EAAQ,iBAAiB,EAAmB,GAG1D,GAAI,IAAS,GACb,KAAM,IAAW,EAAM,oBAEvB,GAAI,KAAa,EAAG,CAClB,KAAM,IAAiB,KAAK,IAAI,IAC1B,EAAc,GAAG,EAAQ,iBAC7B,KAAK,MAAM,GAAiB,IAC5B,GAEI,EAAgB,GAAG,EAAQ,iBAAiB,GAAiB,GAAI,GAIvE,GAAS,GAFI,GAAW,EAAI,IAAM,MAEf,KAAc,QAEjC,IAAS,IAGX,MAAO,GAAG,MAAQ,KAAS,KAAO,MAAQ,MAAU,KAAS,KAAmB,O,kCCnFlF,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAEtB,KAAM,GAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAElD,EAAS,CACb,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAyBF,WAAuB,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAElC,GAAI,CAAE,GAAG,EAAO,SAAS,GACvB,KAAM,IAAI,YAAW,sBAGvB,KAAM,GAAU,EAAK,EAAM,aACrB,EAAc,GAAG,EAAQ,iBAAiB,EAAM,aAAc,GAC9D,GAAY,EAAO,EAAM,eACzB,GAAO,EAAM,iBAEb,GAAQ,GAAG,EAAQ,iBAAiB,EAAM,cAAe,GACzD,GAAU,GAAG,EAAQ,iBAAiB,EAAM,gBAAiB,GAC7D,GAAU,GAAG,EAAQ,iBAAiB,EAAM,gBAAiB,GAGnE,MAAO,GAAG,MAAY,KAAc,MAAa,MAAQ,MAAQ,MAAU,W,kCC7D7E,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAElB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA0CtB,WAAwB,EAAM,EAAU,EAAS,CAC/C,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,GAAa,GAAG,EAAQ,QAAQ,GAEhC,GAAkB,GAAG,EAAQ,qBAC7B,GACJ,GAAS,QAAU,GAAe,QAAU,EAAQ,cAChD,GACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,GAAe,cACf,GAAe,QAAQ,SAAS,cAChC,EAEI,GAAQ,GAAG,EAAO,0BAA0B,EAAO,IAEzD,GAAI,MAAM,IACR,KAAM,IAAI,YAAW,sBAGvB,GAAI,IACA,GAAO,GACT,GAAQ,QACC,GAAO,GAChB,GAAQ,WACC,GAAO,EAChB,GAAQ,YACC,GAAO,EAChB,GAAQ,QACC,GAAO,EAChB,GAAQ,WACC,GAAO,EAChB,GAAQ,WAER,GAAQ,QAGV,KAAM,IAAY,GAAO,eAAe,GAAO,EAAO,GAAW,CAC/D,UACA,kBAEF,MAAQ,GAAG,EAAQ,QAAQ,EAAO,GAAW,CAAE,UAAQ,oB,kCC1FzD,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAmBrB,WAAsB,EAAU,CAC9B,MAAQ,GAAG,EAAO,QAAQ,EAAW,O,kCCrBvC,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAqBrB,WAAiB,EAAM,CAGrB,MADmB,GADD,EAAO,QAAQ,GACR,Y,kCCxB3B,EAAQ,OAAS,EACjB,GAAI,GAAS,EAAQ,MAqBrB,WAAgB,EAAM,CAGpB,MADY,GADM,EAAO,QAAQ,GACf,W,kCCxBpB,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAqBtB,WAAsB,EAAM,CAC1B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAMlC,MADkB,GAJD,EAAO,0BACtB,EACC,GAAG,EAAQ,aAAa,IAEF,I,kCC9B3B,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAqBtB,WAAwB,EAAM,CAC5B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACb,EAAa,EAAM,WACnB,EAAkB,GAAG,EAAQ,eAAe,EAAM,GACxD,SAAe,YAAY,EAAM,EAAa,EAAG,GACjD,EAAe,SAAS,EAAG,EAAG,EAAG,GAC1B,EAAe,Y,iCC9BxB,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAqBtB,WAAuB,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAElC,MAAI,QAAO,GAAI,MAAK,MAAY,eACvB,IAGD,GAAG,EAAO,YAAY,GAAS,IAAM,M,kCC9B/C,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAqBrB,WAAmB,EAAM,CAKvB,KAAM,GAAO,GADK,EAAO,QAAQ,GACd,cAEnB,MADe,MAAK,MAAM,EAAO,IAAM,K,kCC5BzC,EAAQ,kBAAoB,EAE5B,GAAI,GAAS,EAAQ,MA0BrB,YAA6B,CAC3B,MAAO,QAAO,OAAO,GAAK,GAAG,EAAO,wB,kCC7BtC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAqBrB,WAAkB,EAAM,CAGtB,MADc,GADI,EAAO,QAAQ,GACb,a,gCCxBtB,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAwBrB,WAAmB,EAAM,CAEvB,GAAI,GAAM,GADQ,EAAO,QAAQ,GACjB,SAEhB,MAAI,KAAQ,GACV,GAAM,GAGD,I,kCCjCT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAuBtB,WAAoB,EAAM,CACxB,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EACJ,CAAE,GAAG,EAAQ,gBAAgB,GAC7B,CAAE,GAAG,EAAQ,oBAAoB,GAKnC,MAAO,MAAK,MAAM,EAAO,EAAO,oBAAsB,I,kCCpCxD,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAwBtB,WAAwB,EAAM,CAC5B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAO,EAAM,cAEb,EAA6B,GAAG,EAAO,eAAe,EAAM,GAClE,EAA0B,YAAY,EAAO,EAAG,EAAG,GACnD,EAA0B,SAAS,EAAG,EAAG,EAAG,GAC5C,KAAM,GAAmB,GAAG,EAAQ,gBAClC,GAGI,EAA6B,GAAG,EAAO,eAAe,EAAM,GAClE,EAA0B,YAAY,EAAM,EAAG,GAC/C,EAA0B,SAAS,EAAG,EAAG,EAAG,GAC5C,KAAM,IAAmB,GAAG,EAAQ,gBAClC,GAGF,MAAI,GAAM,WAAa,EAAgB,UAC9B,EAAO,EACL,EAAM,WAAa,GAAgB,UACrC,EAEA,EAAO,I,kCClDlB,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAuBtB,WAA2B,EAAM,CAC/B,KAAM,GAAY,GAAG,EAAQ,oBAAoB,GAI3C,EAAO,CAHK,GAAG,EAAQ,oBAC1B,GAAG,EAAO,UAAU,EAAU,KAER,CAAC,EAK1B,MAAO,MAAK,MAAM,EAAO,EAAQ,sB,kCCpCnC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAqBrB,WAAyB,EAAM,CAG7B,MADqB,GADH,EAAO,QAAQ,GACN,oB,kCCxB7B,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CAGxB,MADgB,GADE,EAAO,QAAQ,GACX,e,kCCxBxB,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAqBrB,WAAkB,EAAM,CAGtB,MADc,GADI,EAAO,QAAQ,GACb,a,kCCxBtB,EAAQ,8BAAgC,EACxC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAuCtB,WAAuC,EAAc,EAAe,CAClE,KAAM,CAAC,EAAW,GAAW,CAC3B,CAAE,GAAG,EAAQ,QAAQ,EAAa,OAClC,CAAE,GAAG,EAAQ,QAAQ,EAAa,MAClC,KAAK,CAAC,GAAG,KAAM,GAAI,IACf,CAAC,EAAY,GAAY,CAC7B,CAAE,GAAG,EAAQ,QAAQ,EAAc,OACnC,CAAE,GAAG,EAAQ,QAAQ,EAAc,MACnC,KAAK,CAAC,GAAG,KAAM,GAAI,IAIrB,GAAI,CADkB,GAAY,GAAY,EAAa,GACvC,MAAO,GAG3B,KAAM,IAAc,EAAa,EAAY,EAAY,EACnD,GACJ,GAAe,GAAG,EAAO,iCAAiC,IACtD,GAAe,EAAW,EAAU,EAAU,EAC9C,GACJ,GAAgB,GAAG,EAAO,iCAAiC,IAG7D,MAAO,MAAK,KAAM,IAAQ,IAAQ,EAAQ,qB,kCCjE5C,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,KAAM,GAAS,GAAG,EAAO,QAAQ,GAEjC,MADgB,MAAK,MAAM,EAAM,WAAa,GAAK,I,kCCxBrD,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CAGxB,MADgB,GADE,EAAO,QAAQ,GACX,e,kCCxBxB,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAqBrB,WAAiB,EAAM,CAGrB,MADkB,GADA,EAAO,QAAQ,GACT,Y,kCCxB1B,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAqBrB,WAAqB,EAAM,CACzB,MAAO,MAAK,MAAM,CAAE,GAAG,EAAO,QAAQ,GAAQ,O,kCCvBhD,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA2CtB,WAAiB,EAAM,EAAS,CAC9B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EACJ,CAAE,GAAG,EAAQ,aAAa,EAAO,GACjC,CAAE,GAAG,EAAQ,iBAAiB,EAAO,GAKvC,MAAO,MAAK,MAAM,EAAO,EAAO,oBAAsB,I,kCCxDxD,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA0BtB,WAAwB,EAAM,EAAS,CACrC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,EAAe,cACf,EAAe,QAAQ,SAAS,cAChC,EAEI,EAAqB,GAAG,EAAO,SAAS,GAC9C,GAAI,MAAM,GAAoB,MAAO,KAErC,KAAM,IAAgB,GAAG,EAAQ,QAAS,GAAG,EAAQ,cAAc,IAEnE,GAAI,IAAqB,EAAe,GACpC,IAAsB,GAAG,KAAsB,GAEnD,KAAM,IAA8B,EAAoB,GACxD,MAAO,MAAK,KAAK,GAA8B,GAAK,I,kCCjDtD,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA0CtB,WAAqB,EAAM,EAAS,CAClC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAO,EAAM,cAEb,EAAkB,GAAG,EAAQ,qBAC7B,GACJ,GAAS,uBACT,GAAS,QAAQ,SAAS,uBAC1B,EAAe,uBACf,EAAe,QAAQ,SAAS,uBAChC,EAEI,GAAuB,GAAG,EAAO,eAAe,EAAM,GAC5D,GAAoB,YAAY,EAAO,EAAG,EAAG,IAC7C,GAAoB,SAAS,EAAG,EAAG,EAAG,GACtC,KAAM,IAAmB,GAAG,EAAQ,aAClC,GACA,GAGI,GAAuB,GAAG,EAAO,eAAe,EAAM,GAC5D,GAAoB,YAAY,EAAM,EAAG,IACzC,GAAoB,SAAS,EAAG,EAAG,EAAG,GACtC,KAAM,IAAmB,GAAG,EAAQ,aAClC,GACA,GAGF,MAAI,GAAM,WAAa,GAAgB,UAC9B,EAAO,EACL,EAAM,WAAa,GAAgB,UACrC,EAEA,EAAO,I,kCChFlB,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAgCtB,WAAyB,EAAM,EAAS,CACtC,MACG,GAAG,EAAO,2BACR,GAAG,EAAQ,gBAAgB,GAC3B,GAAG,EAAQ,cAAc,GAC1B,GACE,I,kCCzCR,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAqBrB,WAAiB,EAAM,CACrB,MAAQ,GAAG,EAAO,QAAQ,GAAM,gB,iCCvBlC,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,KAqBrB,WAA6B,EAAO,CAClC,MAAO,MAAK,MAAM,EAAQ,EAAO,sB,kCCvBnC,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,KAqBrB,WAAwB,EAAO,CAC7B,MAAO,MAAK,MAAM,EAAQ,EAAO,iB,iCCvBnC,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,KAqBrB,WAAwB,EAAO,CAC7B,MAAO,MAAK,MAAM,EAAQ,EAAO,iB,kCCtBnC,GAAI,GAAS,EAAQ,MACrB,OAAO,KAAK,GAAQ,QAAQ,SAAU,EAAK,CACrC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAO,IAC9C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAO,QAIpB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAU,EAAQ,MACtB,OAAO,KAAK,GAAS,QAAQ,SAAU,EAAK,CACtC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAQ,IAC/C,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,QAIrB,GAAI,GAAW,EAAQ,MACvB,OAAO,KAAK,GAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,GAAW,EAAQ,MACvB,OAAO,KAAK,GAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAS,QAItB,GAAI,GAAW,EAAQ,KACvB,OAAO,KAAK,GAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,KACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,IACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAW,EAAQ,MACvB,OAAO,KAAK,IAAU,QAAQ,SAAU,EAAK,CACvC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAS,IAChD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAS,QAItB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,IACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,IACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,GAAY,EAAQ,MACxB,OAAO,KAAK,GAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAU,QAIvB,GAAI,GAAY,EAAQ,MACxB,OAAO,KAAK,GAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAU,QAIvB,GAAI,GAAY,EAAQ,MACxB,OAAO,KAAK,GAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,GAAY,EAAQ,MACxB,OAAO,KAAK,GAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAU,QAIvB,GAAI,GAAY,EAAQ,MACxB,OAAO,KAAK,GAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,EAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,KACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,IACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,QAIvB,GAAI,IAAY,EAAQ,MACxB,OAAO,KAAK,IAAW,QAAQ,SAAU,EAAK,CACxC,IAAQ,WAAa,IAAQ,cAC7B,IAAO,IAAW,EAAQ,KAAS,GAAU,IACjD,OAAO,eAAe,EAAS,EAAK,CAClC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,IAAU,S,kCCpoFvB,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MA0BrB,WAAkB,EAAO,EAAK,EAAS,CACrC,KAAM,GAAU,GAAG,EAAO,QAAQ,GAClC,GAAI,MAAM,CAAC,GAAS,KAAM,IAAI,WAAU,yBAExC,KAAM,GAAQ,GAAG,EAAO,QAAQ,GAChC,GAAI,MAAM,CAAC,GAAO,KAAM,IAAI,WAAU,uBAEtC,GAAI,GAAS,gBAAkB,CAAC,EAAS,CAAC,EACxC,KAAM,IAAI,WAAU,qCAEtB,MAAO,CAAE,MAAO,EAAQ,IAAK,K,kCCrC/B,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAwBtB,WAA4B,EAAU,CACpC,KAAM,IAAS,GAAG,EAAQ,QAAQ,EAAS,OACrC,GAAO,GAAG,EAAQ,QAAQ,EAAS,KAEnC,GAAW,GAEX,GAAS,GAAG,EAAQ,mBAAmB,GAAK,IAC9C,IAAO,IAAS,MAAQ,IAE5B,KAAM,IAAmB,GAAG,EAAO,KAAK,GAAO,CAAE,MAAO,GAAS,QAE3D,GAAU,GAAG,EAAQ,oBAAoB,GAAK,IAChD,IAAQ,IAAS,OAAS,IAE9B,KAAM,IAAiB,GAAG,EAAO,KAAK,GAAiB,CACrD,OAAQ,GAAS,SAGb,GAAQ,GAAG,EAAQ,kBAAkB,GAAK,IAC5C,IAAM,IAAS,KAAO,IAE1B,KAAM,GAAkB,GAAG,EAAO,KAAK,GAAe,CACpD,KAAM,GAAS,OAGX,EAAS,GAAG,EAAQ,mBAAmB,GAAK,GAC9C,GAAO,IAAS,MAAQ,GAE5B,KAAM,IAAoB,GAAG,EAAO,KAAK,EAAgB,CACvD,MAAO,GAAS,QAGZ,GAAW,GAAG,EAAQ,qBAAqB,GAAK,IAClD,IAAS,IAAS,QAAU,IAEhC,KAAM,IAAoB,GAAG,EAAO,KAAK,GAAkB,CACzD,QAAS,GAAS,UAGd,GAAW,GAAG,EAAQ,qBAAqB,GAAK,IACtD,MAAI,KAAS,IAAS,QAAU,IAEzB,K,kCC1ET,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MA0GrB,WAAoB,EAAM,EAAgB,EAAe,CACvD,GAAI,GAEJ,MAAI,GAAgB,GAClB,EAAgB,EAEhB,EAAgB,EAGX,GAAI,MAAK,eAAe,GAAe,OAAQ,GAAe,OAClE,GAAG,EAAO,QAAQ,IAIvB,WAAyB,EAAM,CAC7B,MAAO,KAAS,QAAa,CAAE,WAAY,M,kCC1H7C,EAAQ,mBAAqB,GAC7B,GAAI,GAAS,EAAQ,KAEjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAW,EAAQ,MA6GvB,YAA4B,GAAM,GAAU,GAAS,CACnD,GAAI,IAAQ,EACR,GACJ,KAAM,IAAY,GAAG,EAAS,QAAQ,IAChC,GAAa,GAAG,EAAS,QAAQ,IAEvC,GAAK,IAAS,KA2CZ,GAAO,IAAS,KACZ,KAAS,SACX,GAAS,GAAG,EAAQ,qBAAqB,GAAU,IAC1C,KAAS,SAClB,GAAS,GAAG,EAAQ,qBAAqB,GAAU,IAC1C,KAAS,OAClB,GAAS,GAAG,EAAQ,mBAAmB,GAAU,IACxC,KAAS,MAClB,GAAS,GAAG,EAAQ,0BAA0B,GAAU,IAC/C,KAAS,OAClB,GAAS,GAAG,EAAQ,2BAA2B,GAAU,IAChD,KAAS,QAClB,GAAS,GAAG,EAAQ,4BAA4B,GAAU,IACjD,KAAS,UAClB,GAAS,GAAG,EAAQ,8BAA8B,GAAU,IACnD,KAAS,QAClB,IAAS,GAAG,EAAQ,2BAA2B,GAAU,SA3DzC,CAElB,KAAM,GAAiB,GAAG,EAAQ,qBAAqB,GAAU,IAE7D,KAAK,IAAI,GAAiB,EAAO,gBACnC,IAAS,GAAG,EAAQ,qBAAqB,GAAU,IACnD,GAAO,UACE,KAAK,IAAI,GAAiB,EAAO,cAC1C,IAAS,GAAG,EAAQ,qBAAqB,GAAU,IACnD,GAAO,UAEP,KAAK,IAAI,GAAiB,EAAO,cACjC,KAAK,IAAK,GAAG,EAAQ,0BAA0B,GAAU,KAAc,EAEvE,IAAS,GAAG,EAAQ,mBAAmB,GAAU,IACjD,GAAO,QAEP,KAAK,IAAI,GAAiB,EAAO,eAChC,IAAS,GAAG,EAAQ,0BAA0B,GAAU,MACzD,KAAK,IAAI,IAAS,EAElB,GAAO,MACE,KAAK,IAAI,GAAiB,EAAO,eAC1C,IAAS,GAAG,EAAQ,2BAA2B,GAAU,IACzD,GAAO,QACE,KAAK,IAAI,GAAiB,EAAO,iBAC1C,IAAS,GAAG,EAAQ,4BAA4B,GAAU,IAC1D,GAAO,SACE,KAAK,IAAI,GAAiB,EAAO,eACrC,GAAG,EAAQ,8BAA8B,GAAU,IAAa,EAEnE,IAAS,GAAG,EAAQ,8BAA8B,GAAU,IAC5D,GAAO,WAMT,IAAS,GAAG,EAAQ,2BAA2B,GAAU,IACzD,GAAO,QA8BX,MAAO,IANS,MAAK,mBAAmB,IAAS,OAAQ,CACvD,cAAe,IAAS,cACxB,QAAS,IAAS,SAAW,OAC7B,MAAO,IAAS,QAGP,OAAO,GAAO,M,kCCnM3B,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAsBrB,WAAiB,EAAM,EAAe,CACpC,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAkB,GAAG,EAAO,QAAQ,GAC1C,MAAO,GAAM,UAAY,EAAe,Y,kCC1B1C,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAe,CACrC,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAkB,GAAG,EAAO,QAAQ,GAC1C,MAAO,CAAC,EAAQ,CAAC,I,gCC1BnB,EAAQ,OAAS,EAgCjB,WAAgB,EAAO,CACrB,MACE,aAAiB,OAChB,MAAO,IAAU,UAChB,OAAO,UAAU,SAAS,KAAK,KAAW,kB,kCCpChD,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAyBrB,WAAiB,EAAU,EAAW,CACpC,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GACtC,MAAO,CAAC,GAAc,CAAC,I,gCC7BzB,EAAQ,SAAW,EAwBnB,WAAkB,EAAM,EAAO,EAAK,CAClC,KAAM,GAAO,GAAI,MAAK,EAAM,EAAO,GACnC,MACE,GAAK,gBAAkB,GACvB,EAAK,aAAe,GACpB,EAAK,YAAc,I,kCC7BvB,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MAqBrB,WAA2B,EAAM,CAC/B,MAAQ,GAAG,EAAO,QAAQ,GAAM,YAAc,I,kCCvBhD,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAqBrB,WAAkB,EAAM,CACtB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,CACtB,MAAO,CAAE,GAAG,EAAO,QAAQ,GAAQ,KAAK,Q,iCCxB1C,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAqBtB,WAA0B,EAAM,CAC9B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAClC,MAAO,CAAE,GAAG,EAAO,UAAU,IAAW,CAAE,GAAG,EAAQ,YAAY,K,iCC1BnE,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CAExB,KAAM,GAAO,GADK,EAAO,QAAQ,GACd,cACnB,MAAO,GAAO,MAAQ,GAAM,EAAO,IAAM,GAAK,EAAO,MAAQ,I,kCCzB/D,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAoStB,WAAiB,EAAS,EAAW,EAAS,CAC5C,MAAQ,GAAG,EAAO,SACf,GAAG,EAAQ,OAAO,EAAS,EAAW,GAAI,MAAQ,M,kCCxSvD,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAqBrB,WAAkB,EAAM,CACtB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,OAAS,EACjB,GAAI,GAAS,EAAQ,MAsBrB,WAAgB,EAAM,CACpB,MAAO,CAAE,GAAG,EAAO,QAAQ,GAAQ,KAAK,Q,kCCxB1C,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAgCrB,WAAmB,EAAU,EAAW,CACtC,KAAM,GAAsB,GAAG,EAAO,YAAY,GAC5C,EAAuB,GAAG,EAAO,YAAY,GAEnD,MAAO,CAAC,GAAuB,CAAC,I,kCCrClC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MA2BrB,WAAoB,EAAU,EAAW,CACvC,KAAM,GAAuB,GAAG,EAAO,aAAa,GAC9C,EAAwB,GAAG,EAAO,aAAa,GAErD,MAAO,CAAC,GAAwB,CAAC,I,kCChCnC,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MA6BrB,WAAuB,EAAU,EAAW,CAC1C,MAAQ,GAAG,EAAO,YAAY,EAAU,EAAW,CAAE,aAAc,M,kCC/BrE,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MAwBrB,WAA2B,EAAU,EAAW,CAC9C,KAAM,GAAuB,GAAG,EAAO,oBAAoB,GACrD,EAAwB,GAAG,EAAO,oBAAoB,GAE5D,MAAO,CAAC,GAAwB,CAAC,I,kCC7BnC,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAiCrB,WAAsB,EAAU,EAAW,CACzC,KAAM,GAAyB,GAAG,EAAO,eAAe,GAClD,EAA0B,GAAG,EAAO,eAAe,GAEzD,MAAO,CAAC,GAA0B,CAAC,I,kCCtCrC,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MA2BrB,WAAqB,EAAU,EAAW,CACxC,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GACtC,MACE,GAAU,gBAAkB,EAAW,eACvC,EAAU,aAAe,EAAW,a,kCCjCxC,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MA2BrB,WAAuB,EAAU,EAAW,CAC1C,KAAM,GAA0B,GAAG,EAAO,gBAAgB,GACpD,EAA2B,GAAG,EAAO,gBAAgB,GAE3D,MAAO,CAAC,GAA2B,CAAC,I,gCChCtC,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAyCrB,WAAsB,EAAU,EAAW,CACzC,KAAM,GAAyB,GAAG,EAAO,eAAe,GAClD,EAA0B,GAAG,EAAO,eAAe,GAEzD,MAAO,CAAC,GAA0B,CAAC,I,kCC9CrC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAwCrB,WAAoB,EAAU,EAAW,EAAS,CAChD,KAAM,GAAuB,GAAG,EAAO,aAAa,EAAU,GACxD,EAAwB,GAAG,EAAO,aAAa,EAAW,GAEhE,MAAO,CAAC,GAAwB,CAAC,I,kCC7CnC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAU,EAAW,CACvC,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAc,GAAG,EAAO,QAAQ,GACtC,MAAO,GAAU,gBAAkB,EAAW,gB,kCC1BhD,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAqBrB,WAAkB,EAAM,CACtB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAuBtB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAQ,YAAY,EAAO,GAAG,EAAO,cAAc,M,kCC1BhE,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAyBtB,WAAuB,EAAM,CAC3B,MAAQ,GAAG,EAAQ,eAAe,EAAO,GAAG,EAAO,cAAc,M,kCC5BnE,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAwBtB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAQ,cAAc,EAAO,GAAG,EAAO,cAAc,M,kCC3BlE,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAuBtB,WAAqB,EAAM,CACzB,MAAQ,GAAG,EAAQ,aAAa,EAAO,GAAG,EAAO,cAAc,M,kCC1BjE,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAsBtB,WAAuB,EAAM,CAC3B,MAAQ,GAAG,EAAQ,eAAe,EAAO,GAAG,EAAO,cAAc,M,kCCzBnE,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,IAuBtB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAQ,cAAc,EAAO,GAAG,EAAO,cAAc,M,kCC1BlE,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAiCtB,WAAoB,EAAM,EAAS,CACjC,MAAQ,GAAG,EAAQ,YAAY,EAAO,GAAG,EAAO,cAAc,GAAO,K,kCCpCvE,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAsBtB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAQ,YAAY,EAAO,GAAG,EAAO,cAAc,M,iCCzBhE,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAsBtB,WAAiB,EAAM,CACrB,MAAQ,GAAG,EAAQ,WAAW,EAAO,GAAG,EAAO,cAAc,M,kCCzB/D,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KAClB,EAAU,EAAQ,MAsBtB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAQ,WACjB,EACC,GAAG,EAAO,SAAU,GAAG,EAAQ,cAAc,GAAO,M,gCC5BzD,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAqBrB,WAAmB,EAAM,CACvB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAmCtB,WAAiB,EAAM,CACrB,GAAI,CAAE,GAAG,EAAO,QAAQ,IAAS,MAAO,IAAS,SAC/C,MAAO,GAET,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAClC,MAAO,CAAC,MAAM,OAAO,M,kCC1CvB,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAqBrB,WAAqB,EAAM,CACzB,MAAQ,GAAG,EAAO,QAAQ,GAAM,WAAa,I,kCCvB/C,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAqBrB,WAAmB,EAAM,CACvB,KAAM,GAAO,GAAG,EAAO,QAAQ,GAAM,SACrC,MAAO,KAAQ,GAAK,IAAQ,I,kCCxB9B,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MA2CrB,WAA0B,EAAM,EAAU,CACxC,KAAM,GAAO,CAAE,GAAG,EAAO,QAAQ,GAC3B,CAAC,EAAW,GAAW,CAC3B,CAAE,GAAG,EAAO,QAAQ,EAAS,OAC7B,CAAE,GAAG,EAAO,QAAQ,EAAS,MAC7B,KAAK,CAAC,EAAG,IAAM,EAAI,GAErB,MAAO,IAAQ,GAAa,GAAQ,I,kCCnDtC,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,KAsBtB,WAAqB,EAAM,CACzB,MAAQ,GAAG,EAAQ,WACjB,EACC,GAAG,EAAQ,SAAU,GAAG,EAAO,cAAc,GAAO,M,kCC5BzD,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAqBrB,WAAyB,EAAM,CAI7B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACb,EAAS,EAAI,KAAK,MAAM,EAAO,IAAM,GAC3C,SAAM,YAAY,EAAS,EAAG,EAAG,GACjC,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC/BT,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MAwBrB,WAA0B,EAAM,CAC9B,MAAQ,GAAG,EAAO,eAAe,EAAM,CAAE,aAAc,M,kCC1BzD,EAAQ,qBAAuB,EAC/B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAyBtB,WAA8B,EAAM,CAClC,KAAM,GAAQ,GAAG,EAAO,gBAAgB,GAClC,EAAmB,GAAG,EAAQ,eAAe,EAAM,GACzD,EAAgB,YAAY,EAAO,EAAG,EAAG,GACzC,EAAgB,SAAS,EAAG,EAAG,EAAG,GAClC,KAAM,GAAS,GAAG,EAAQ,gBAAgB,GAC1C,SAAM,QAAQ,EAAM,UAAY,GACzB,I,kCCnCT,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAsBrB,WAAwB,EAAM,CAC5B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAQ,EAAM,WACpB,SAAM,YAAY,EAAM,cAAe,EAAQ,EAAG,GAClD,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC5BT,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MAsBrB,WAA0B,EAAM,CAC9B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAe,EAAM,WACrB,EAAQ,EAAgB,EAAe,EAAK,EAClD,SAAM,SAAS,EAAO,GACtB,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC7BT,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAQ,MAgCtB,WAAuB,EAAM,EAAS,CACpC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,EAAe,cACf,EAAe,QAAQ,SAAS,cAChC,EAEI,EAAS,GAAG,EAAO,QAAQ,GAC3B,EAAM,EAAM,SACZ,EAAQ,GAAM,EAAe,GAAK,GAAK,EAAK,GAAM,GAExD,SAAM,SAAS,EAAG,EAAG,EAAG,GACxB,EAAM,QAAQ,EAAM,UAAY,GACzB,I,iCClDT,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAsBrB,WAAuB,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACnB,SAAM,YAAY,EAAO,EAAG,EAAG,GAC/B,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC5BT,EAAQ,YAAc,EACtB,OAAO,eAAe,EAAS,kBAAmB,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,mBAGnB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MActB,KAAM,GAAyB,iCAEzB,EAAsB,eACtB,EAAoB,MACpB,EAAgC,WAiEtC,WAAqB,EAAM,GAAW,CACpC,KAAM,IAAS,GAAG,EAAQ,QAAQ,GAElC,GAAI,CAAE,GAAG,EAAO,SAAS,IACvB,KAAM,IAAI,YAAW,sBAGvB,KAAM,IAAS,GAAU,MAAM,GAG/B,MAAK,IAEU,GACZ,IAAK,IAAc,CAElB,GAAI,KAAc,KAChB,MAAO,IAGT,KAAM,IAAiB,GAAU,GACjC,GAAI,KAAmB,IACrB,MAAO,GAAmB,IAG5B,KAAM,IAAY,EAAQ,gBAAgB,IAC1C,GAAI,GACF,MAAO,IAAU,GAAO,IAG1B,GAAI,GAAe,MAAM,GACvB,KAAM,IAAI,YACR,iEACE,GACA,KAIN,MAAO,MAER,KAAK,IA7BY,GAkCtB,WAA4B,EAAO,CACjC,KAAM,IAAU,EAAM,MAAM,GAE5B,MAAK,IAIE,GAAQ,GAAG,QAAQ,EAAmB,KAHpC,I,gCC5IX,EAAQ,kBAAoB,EAE5B,WAA2B,EAAM,CAC/B,MAAO,CAAC,EAAU,KAAO,CAEvB,KAAM,GAAQ,EAAQ,MAAQ,OAAO,EAAQ,OAAS,EAAK,aAE3D,MADe,GAAK,QAAQ,IAAU,EAAK,QAAQ,EAAK,iB,gCCN5D,EAAQ,gBAAkB,EAyC1B,WAAyB,EAAM,CAC7B,MAAO,CAAC,EAAO,IAAY,CACzB,KAAM,GAAU,GAAS,QAAU,OAAO,EAAQ,SAAW,aAE7D,GAAI,GACJ,GAAI,IAAY,cAAgB,EAAK,iBAAkB,CACrD,KAAM,GAAe,EAAK,wBAA0B,EAAK,aACnD,EAAQ,GAAS,MAAQ,OAAO,EAAQ,OAAS,EAEvD,EACE,EAAK,iBAAiB,IAAU,EAAK,iBAAiB,OACnD,CACL,KAAM,GAAe,EAAK,aACpB,EAAQ,GAAS,MAAQ,OAAO,EAAQ,OAAS,EAAK,aAE5D,EAAc,EAAK,OAAO,IAAU,EAAK,OAAO,GAElD,KAAM,GAAQ,EAAK,iBAAmB,EAAK,iBAAiB,GAAS,EAGrE,MAAO,GAAY,M,gCC7DvB,EAAQ,aAAe,EAEvB,WAAsB,EAAM,CAC1B,MAAO,CAAC,EAAQ,EAAU,KAAO,CAC/B,KAAM,GAAQ,EAAQ,MAEhB,EACH,GAAS,EAAK,cAAc,IAC7B,EAAK,cAAc,EAAK,mBACpB,EAAc,EAAO,MAAM,GAEjC,GAAI,CAAC,EACH,MAAO,MAET,KAAM,GAAgB,EAAY,GAE5B,EACH,GAAS,EAAK,cAAc,IAC7B,EAAK,cAAc,EAAK,mBAEpB,GAAM,MAAM,QAAQ,GACtB,EAAU,EAAgB,IAAY,GAAQ,KAAK,IAEnD,EAAQ,EAAgB,IAAY,GAAQ,KAAK,IAErD,GAAI,IAEJ,GAAQ,EAAK,cAAgB,EAAK,cAAc,IAAO,GACvD,GAAQ,EAAQ,cAEZ,EAAQ,cAAc,IACtB,GAEJ,KAAM,IAAO,EAAO,MAAM,EAAc,QAExC,MAAO,CAAE,SAAO,UAIpB,WAAiB,EAAQ,EAAW,CAClC,SAAW,KAAO,GAChB,GACE,OAAO,UAAU,eAAe,KAAK,EAAQ,IAC7C,EAAU,EAAO,IAEjB,MAAO,GAMb,WAAmB,EAAO,EAAW,CACnC,OAAS,GAAM,EAAG,EAAM,EAAM,OAAQ,IACpC,GAAI,EAAU,EAAM,IAClB,MAAO,K,gCCtDb,EAAQ,oBAAsB,EAE9B,WAA6B,EAAM,CACjC,MAAO,CAAC,EAAQ,EAAU,KAAO,CAC/B,KAAM,GAAc,EAAO,MAAM,EAAK,cACtC,GAAI,CAAC,EAAa,MAAO,MACzB,KAAM,GAAgB,EAAY,GAE5B,EAAc,EAAO,MAAM,EAAK,cACtC,GAAI,CAAC,EAAa,MAAO,MACzB,GAAI,GAAQ,EAAK,cACb,EAAK,cAAc,EAAY,IAC/B,EAAY,GAGhB,EAAQ,EAAQ,cAAgB,EAAQ,cAAc,GAAS,EAE/D,KAAM,GAAO,EAAO,MAAM,EAAc,QAExC,MAAO,CAAE,QAAO,W,kCCnBpB,EAAQ,KAAO,OACf,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAUtB,KAAM,GAAQ,EAAQ,KAAO,CAC3B,KAAM,QACN,eAAgB,EAAO,eACvB,WAAY,EAAQ,WACpB,eAAgB,EAAQ,eACxB,SAAU,EAAQ,SAClB,MAAO,EAAQ,MACf,QAAS,CACP,aAAc,EACd,sBAAuB,K,gCCxB3B,EAAQ,eAAiB,OAEzB,KAAM,GAAuB,CAC3B,iBAAkB,CAChB,IAAK,qBACL,MAAO,+BAGT,SAAU,CACR,IAAK,WACL,MAAO,qBAGT,YAAa,gBAEb,iBAAkB,CAChB,IAAK,qBACL,MAAO,+BAGT,SAAU,CACR,IAAK,WACL,MAAO,qBAGT,YAAa,CACX,IAAK,eACL,MAAO,yBAGT,OAAQ,CACN,IAAK,SACL,MAAO,mBAGT,MAAO,CACL,IAAK,QACL,MAAO,kBAGT,YAAa,CACX,IAAK,eACL,MAAO,yBAGT,OAAQ,CACN,IAAK,SACL,MAAO,mBAGT,aAAc,CACZ,IAAK,gBACL,MAAO,0BAGT,QAAS,CACP,IAAK,UACL,MAAO,oBAGT,YAAa,CACX,IAAK,eACL,MAAO,yBAGT,OAAQ,CACN,IAAK,SACL,MAAO,mBAGT,WAAY,CACV,IAAK,cACL,MAAO,wBAGT,aAAc,CACZ,IAAK,gBACL,MAAO,2BAIL,EAAiB,CAAC,EAAO,EAAO,IAAY,CAChD,GAAI,GAEJ,KAAM,GAAa,EAAqB,GASxC,MARI,OAAO,IAAe,SACxB,EAAS,EACA,IAAU,EACnB,EAAS,EAAW,IAEpB,EAAS,EAAW,MAAM,QAAQ,YAAa,EAAM,YAGnD,GAAS,UACP,EAAQ,YAAc,EAAQ,WAAa,EACtC,MAAQ,EAER,EAAS,OAIb,GAET,EAAQ,eAAiB,G,kCCvGzB,EAAQ,WAAa,OACrB,GAAI,GAAS,EAAQ,MAErB,KAAM,GAAc,CAClB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,cAGH,EAAc,CAClB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,UAGH,EAAkB,CACtB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,sBAGH,EAAc,EAAQ,WAAa,CACvC,KAAO,GAAG,EAAO,mBAAmB,CAClC,QAAS,EACT,aAAc,SAGhB,KAAO,GAAG,EAAO,mBAAmB,CAClC,QAAS,EACT,aAAc,SAGhB,SAAW,GAAG,EAAO,mBAAmB,CACtC,QAAS,EACT,aAAc,W,gCCrClB,EAAQ,eAAiB,OAEzB,KAAM,GAAuB,CAC3B,SAAU,qBACV,UAAW,mBACX,MAAO,eACP,SAAU,kBACV,SAAU,cACV,MAAO,KAGH,EAAiB,CAAC,EAAO,EAAO,EAAW,IAC/C,EAAqB,GACvB,EAAQ,eAAiB,G,kCCbzB,EAAQ,SAAW,OACnB,GAAI,GAAS,EAAQ,MAErB,KAAM,GAAY,CAChB,OAAQ,CAAC,IAAK,KACd,YAAa,CAAC,KAAM,MACpB,KAAM,CAAC,gBAAiB,gBAGpB,EAAgB,CACpB,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxB,YAAa,CAAC,KAAM,KAAM,KAAM,MAChC,KAAM,CAAC,cAAe,cAAe,cAAe,gBAOhD,EAAc,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChE,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGF,KAAM,CACJ,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAIE,EAAY,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvC,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5C,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxD,KAAM,CACJ,SACA,SACA,UACA,YACA,WACA,SACA,aAIE,EAAkB,CACtB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,SAET,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,SAET,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,UAIL,EAA4B,CAChC,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,YAET,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,YAET,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,aAIL,EAAgB,CAAC,EAAa,KAAa,CAC/C,KAAM,IAAS,OAAO,GAShB,GAAS,GAAS,IACxB,GAAI,GAAS,IAAM,GAAS,GAC1B,OAAQ,GAAS,QACV,GACH,MAAO,IAAS,SACb,GACH,MAAO,IAAS,SACb,GACH,MAAO,IAAS,KAGtB,MAAO,IAAS,MAGZ,EAAY,EAAQ,SAAW,CACnC,gBAEA,IAAM,GAAG,EAAO,iBAAiB,CAC/B,OAAQ,EACR,aAAc,SAGhB,QAAU,GAAG,EAAO,iBAAiB,CACnC,OAAQ,EACR,aAAc,OACd,iBAAmB,GAAY,EAAU,IAG3C,MAAQ,GAAG,EAAO,iBAAiB,CACjC,OAAQ,EACR,aAAc,SAGhB,IAAM,GAAG,EAAO,iBAAiB,CAC/B,OAAQ,EACR,aAAc,SAGhB,UAAY,GAAG,EAAO,iBAAiB,CACrC,OAAQ,EACR,aAAc,OACd,iBAAkB,EAClB,uBAAwB,W,kCCzL5B,EAAQ,MAAQ,OAEhB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAEtB,KAAM,GAA4B,wBAC5B,EAA4B,OAE5B,EAAmB,CACvB,OAAQ,UACR,YAAa,6DACb,KAAM,8DAEF,EAAmB,CACvB,IAAK,CAAC,MAAO,YAGT,EAAuB,CAC3B,OAAQ,WACR,YAAa,YACb,KAAM,kCAEF,EAAuB,CAC3B,IAAK,CAAC,KAAM,KAAM,KAAM,OAGpB,EAAqB,CACzB,OAAQ,eACR,YAAa,sDACb,KAAM,6FAEF,EAAqB,CACzB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGF,IAAK,CACH,OACA,MACA,QACA,OACA,QACA,QACA,QACA,OACA,MACA,MACA,MACA,QAIE,GAAmB,CACvB,OAAQ,YACR,MAAO,2BACP,YAAa,kCACb,KAAM,gEAEF,GAAmB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnD,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAG/C,GAAyB,CAC7B,OAAQ,6DACR,IAAK,kFAED,GAAyB,CAC7B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,WAIL,GAAS,EAAQ,MAAQ,CAC7B,cAAgB,GAAG,EAAQ,qBAAqB,CAC9C,aAAc,EACd,aAAc,EACd,cAAgB,IAAU,SAAS,GAAO,MAG5C,IAAM,GAAG,EAAO,cAAc,CAC5B,cAAe,EACf,kBAAmB,OACnB,cAAe,EACf,kBAAmB,QAGrB,QAAU,GAAG,EAAO,cAAc,CAChC,cAAe,EACf,kBAAmB,OACnB,cAAe,EACf,kBAAmB,MACnB,cAAgB,IAAU,GAAQ,IAGpC,MAAQ,GAAG,EAAO,cAAc,CAC9B,cAAe,EACf,kBAAmB,OACnB,cAAe,EACf,kBAAmB,QAGrB,IAAM,GAAG,EAAO,cAAc,CAC5B,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAGrB,UAAY,GAAG,EAAO,cAAc,CAClC,cAAe,GACf,kBAAmB,MACnB,cAAe,GACf,kBAAmB,U,kCCnIvB,EAAQ,IAAM,EACd,GAAI,GAAS,EAAQ,MA0BrB,WAAa,EAAO,CAClB,GAAI,GACJ,SAAM,QAAQ,SAAU,EAAW,CACjC,KAAM,GAAe,GAAG,EAAO,QAAQ,GAGrC,KAAW,QACX,EAAS,GACT,MAAM,OAAO,MAEb,GAAS,KAIN,GAAU,GAAI,MAAK,O,kCCzC5B,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,KA+BrB,WAAsB,CAAE,QAAO,SAAQ,QAAO,OAAM,QAAO,UAAS,WAAW,CAC7E,GAAI,GAAY,EAEZ,GAAO,IAAa,EAAQ,EAAO,YACnC,GAAQ,IAAa,EAAU,GAAO,WAAa,KACnD,GAAO,IAAa,EAAQ,GAC5B,GAAM,IAAa,GAEvB,GAAI,IAAe,EAAY,GAAK,GAAK,GAEzC,MAAI,IAAO,KAAgB,EAAQ,GAAK,IACpC,GAAS,KAAgB,EAAU,IACnC,GAAS,KAAgB,GAEtB,KAAK,MAAM,GAAe,O,kCC9CnC,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,KAwBrB,WAA6B,EAAc,CACzC,KAAM,GAAQ,EAAe,EAAO,mBACpC,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,KAwBrB,WAA+B,EAAc,CAC3C,KAAM,GAAU,EAAe,EAAO,qBACtC,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,KAwBrB,WAA+B,EAAc,CAC3C,KAAM,GAAU,EAAe,EAAO,qBACtC,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,IAAM,EACd,GAAI,GAAS,EAAQ,MA0BrB,WAAa,EAAO,CAClB,GAAI,GAEJ,SAAM,QAAS,GAAc,CAC3B,KAAM,GAAQ,GAAG,EAAO,QAAQ,GAC5B,EAAC,GAAU,EAAS,GAAQ,MAAM,CAAC,KACrC,GAAS,KAIN,GAAU,GAAI,MAAK,O,kCCrC5B,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,KAwBrB,WAAwB,EAAS,CAC/B,KAAM,GAAQ,EAAU,EAAO,cAC/B,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,KAmBrB,WAA+B,EAAS,CACtC,MAAO,MAAK,MAAM,EAAU,EAAO,wB,kCCrBrC,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,KAmBrB,WAA0B,EAAS,CACjC,MAAO,MAAK,MAAM,EAAU,EAAO,mB,kCCrBrC,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,KAwBrB,WAA0B,EAAQ,CAChC,KAAM,GAAW,EAAS,EAAO,gBACjC,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,KAuBrB,WAAuB,EAAQ,CAC7B,KAAM,GAAQ,EAAS,EAAO,aAC9B,MAAO,MAAK,MAAM,K,kCC1BpB,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA2BtB,WAAiB,EAAM,EAAK,CAC1B,GAAI,GAAQ,EAAO,GAAG,EAAQ,QAAQ,GACtC,MAAI,IAAS,GAAG,IAAS,GAEjB,GAAG,EAAO,SAAS,EAAM,K,kCCjCnC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAqBrB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAO,SAAS,EAAM,K,iCCvBnC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAqBrB,WAAoB,EAAM,CACxB,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAqBrB,WAAsB,EAAM,CAC1B,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAqBrB,WAAqB,EAAM,CACzB,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAqBrB,WAAuB,EAAM,CAC3B,MAAQ,GAAG,EAAO,SAAS,EAAM,K,kCCvBnC,OAAO,eAAe,EAAS,iBAAkB,CAC/C,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,kBAGnB,EAAQ,MAAQ,GAChB,OAAO,eAAe,EAAS,UAAW,CACxC,WAAY,GACZ,IAAK,UAAY,CACf,MAAO,GAAQ,WAGnB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAoBtB,KAAM,GACJ,wDAII,EAA6B,oCAE7B,GAAsB,eACtB,GAAoB,MAEpB,GAAsB,KACtB,GAAgC,WA2StC,YAAe,GAAS,GAAW,EAAe,EAAS,CACzD,KAAM,IAAkB,GAAG,EAAQ,qBAC7B,GACJ,GAAS,QAAU,GAAe,QAAU,EAAQ,cAEhD,GACJ,GAAS,uBACT,GAAS,QAAQ,SAAS,uBAC1B,GAAe,uBACf,GAAe,QAAQ,SAAS,uBAChC,EAEI,GACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,GAAe,cACf,GAAe,QAAQ,SAAS,cAChC,EAEF,GAAI,KAAc,GAChB,MAAI,MAAY,GACN,GAAG,EAAQ,QAAQ,GAEnB,GAAG,EAAO,eAAe,EAAe,KAIpD,KAAM,IAAe,CACnB,yBACA,gBACA,WAII,GAAU,CAAC,GAAI,GAAQ,4BAEvB,GAAS,GACZ,MAAM,GACN,IAAK,IAAc,CAClB,KAAM,IAAiB,GAAU,GACjC,MAAI,MAAkB,GAAQ,eAErB,EADuB,eAAe,IACxB,GAAW,GAAO,YAElC,KAER,KAAK,IACL,MAAM,GAEH,GAAa,GAEnB,OAAS,MAAS,IAAQ,CAEtB,CAAC,GAAS,6BACT,GAAG,EAAQ,0BAA0B,KAErC,GAAG,EAAQ,2BAA2B,GAAO,GAAW,IAGzD,CAAC,GAAS,8BACT,GAAG,EAAQ,2BAA2B,KAEtC,GAAG,EAAQ,2BAA2B,GAAO,GAAW,IAG3D,KAAM,IAAiB,GAAM,GACvB,GAAS,EAAQ,QAAQ,IAC/B,GAAI,GAAQ,CACV,KAAM,CAAE,uBAAuB,GAC/B,GAAI,MAAM,QAAQ,IAAqB,CACrC,KAAM,IAAoB,GAAW,KAClC,IACC,GAAmB,SAAS,GAAU,QACtC,GAAU,QAAU,IAExB,GAAI,GACF,KAAM,IAAI,YACR,uCAAuC,GAAkB,qBAAqB,iCAGzE,GAAO,qBAAuB,KAAO,GAAW,OAAS,EAClE,KAAM,IAAI,YACR,uCAAuC,6CAI3C,GAAW,KAAK,CAAE,MAAO,GAAgB,UAAW,KAEpD,KAAM,IAAc,GAAO,IACzB,GACA,GACA,GAAO,MACP,IAGF,GAAI,CAAC,GACH,MAAQ,GAAG,EAAO,eAAe,EAAe,KAGlD,GAAQ,KAAK,GAAY,QAEzB,GAAU,GAAY,SACjB,CACL,GAAI,GAAe,MAAM,IACvB,KAAM,IAAI,YACR,iEACE,GACA,KAYN,GAPI,KAAU,KACZ,GAAQ,IACC,KAAmB,KAC5B,IAAQ,GAAmB,KAIzB,GAAQ,QAAQ,MAAW,EAC7B,GAAU,GAAQ,MAAM,GAAM,YAE9B,OAAQ,GAAG,EAAO,eAAe,EAAe,MAMtD,GAAI,GAAQ,OAAS,GAAK,GAAoB,KAAK,IACjD,MAAQ,GAAG,EAAO,eAAe,EAAe,KAGlD,KAAM,IAAwB,GAC3B,IAAK,IAAW,GAAO,UACvB,KAAK,CAAC,GAAG,KAAM,GAAI,IACnB,OAAO,CAAC,GAAU,GAAO,KAAU,GAAM,QAAQ,MAAc,IAC/D,IAAK,IACJ,GACG,OAAQ,IAAW,GAAO,WAAa,IACvC,KAAK,CAAC,GAAG,KAAM,GAAE,YAAc,GAAE,cAErC,IAAK,IAAgB,GAAY,IAEpC,GAAI,IAAQ,GAAG,EAAQ,QAAQ,GAE/B,GAAI,MAAM,GAAK,WACb,MAAQ,GAAG,EAAO,eAAe,EAAe,KAGlD,KAAM,IAAQ,GACd,SAAW,MAAU,IAAuB,CAC1C,GAAI,CAAC,GAAO,SAAS,GAAM,IACzB,MAAQ,GAAG,EAAO,eAAe,EAAe,KAGlD,KAAM,IAAS,GAAO,IAAI,GAAM,GAAO,IAEnC,MAAM,QAAQ,IAChB,IAAO,GAAO,GACd,OAAO,OAAO,GAAO,GAAO,KAG5B,GAAO,GAIX,MAAQ,GAAG,EAAO,eAAe,EAAe,IAGlD,YAA4B,GAAO,CACjC,MAAO,IAAM,MAAM,IAAqB,GAAG,QAAQ,GAAmB,O,kCC3gBxE,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,KAsCrB,WAAkB,GAAU,GAAS,CACnC,KAAM,IAAmB,IAAS,kBAAoB,EAChD,GAAc,EAAgB,IAEpC,GAAI,IACJ,GAAI,GAAY,KAAM,CACpB,KAAM,IAAkB,EAAU,GAAY,KAAM,IACpD,GAAO,EAAU,GAAgB,eAAgB,GAAgB,MAGnE,GAAI,CAAC,IAAQ,MAAM,GAAK,WACtB,MAAO,IAAI,MAAK,KAGlB,KAAM,IAAY,GAAK,UACvB,GAAI,IAAO,EACP,GAEJ,GAAI,GAAY,MACd,IAAO,GAAU,GAAY,MACzB,MAAM,KACR,MAAO,IAAI,MAAK,KAIpB,GAAI,GAAY,UAEd,GADA,GAAS,GAAc,GAAY,UAC/B,MAAM,IACR,MAAO,IAAI,MAAK,SAEb,CACL,KAAM,IAAY,GAAI,MAAK,GAAY,IAMjC,GAAS,GAAI,MAAK,GACxB,UAAO,YACL,GAAU,iBACV,GAAU,cACV,GAAU,cAEZ,GAAO,SACL,GAAU,cACV,GAAU,gBACV,GAAU,gBACV,GAAU,sBAEL,GAGT,MAAO,IAAI,MAAK,GAAY,GAAO,IAGrC,KAAM,GAAW,CACf,kBAAmB,OACnB,kBAAmB,QACnB,SAAU,cAGN,EACJ,gEACI,EACJ,4EACI,EAAgB,gCAEtB,WAAyB,GAAY,CACnC,KAAM,IAAc,GACd,GAAQ,GAAW,MAAM,EAAS,mBACxC,GAAI,IAIJ,GAAI,GAAM,OAAS,EACjB,MAAO,IAiBT,GAdI,IAAI,KAAK,GAAM,IACjB,GAAa,GAAM,GAEnB,IAAY,KAAO,GAAM,GACzB,GAAa,GAAM,GACf,EAAS,kBAAkB,KAAK,GAAY,OAC9C,IAAY,KAAO,GAAW,MAAM,EAAS,mBAAmB,GAChE,GAAa,GAAW,OACtB,GAAY,KAAK,OACjB,GAAW,UAKb,GAAY,CACd,KAAM,IAAQ,EAAS,SAAS,KAAK,IACjC,GACF,IAAY,KAAO,GAAW,QAAQ,GAAM,GAAI,IAChD,GAAY,SAAW,GAAM,IAE7B,GAAY,KAAO,GAIvB,MAAO,IAGT,WAAmB,GAAY,GAAkB,CAC/C,KAAM,IAAQ,GAAI,QAChB,uBACG,GAAI,IACL,sBACC,GAAI,IACL,QAGE,GAAW,GAAW,MAAM,IAElC,GAAI,CAAC,GAAU,MAAO,CAAE,KAAM,IAAK,eAAgB,IAEnD,KAAM,IAAO,GAAS,GAAK,SAAS,GAAS,IAAM,KAC7C,GAAU,GAAS,GAAK,SAAS,GAAS,IAAM,KAGtD,MAAO,CACL,KAAM,KAAY,KAAO,GAAO,GAAU,IAC1C,eAAgB,GAAW,MAAO,IAAS,IAAM,GAAS,IAAI,SAIlE,WAAmB,GAAY,GAAM,CAEnC,GAAI,KAAS,KAAM,MAAO,IAAI,MAAK,KAEnC,KAAM,IAAW,GAAW,MAAM,GAElC,GAAI,CAAC,GAAU,MAAO,IAAI,MAAK,KAE/B,KAAM,IAAa,CAAC,CAAC,GAAS,GACxB,GAAY,EAAc,GAAS,IACnC,GAAQ,EAAc,GAAS,IAAM,EACrC,GAAM,EAAc,GAAS,IAC7B,GAAO,EAAc,GAAS,IAC9B,GAAY,EAAc,GAAS,IAAM,EAE/C,GAAI,GACF,MAAK,GAAiB,GAAM,GAAM,IAG3B,GAAiB,GAAM,GAAM,IAF3B,GAAI,MAAK,KAGb,CACL,KAAM,IAAO,GAAI,MAAK,GACtB,MACE,CAAC,GAAa,GAAM,GAAO,KAC3B,CAAC,GAAsB,GAAM,IAEtB,GAAI,MAAK,KAElB,IAAK,eAAe,GAAM,GAAO,KAAK,IAAI,GAAW,KAC9C,KAIX,WAAuB,GAAO,CAC5B,MAAO,IAAQ,SAAS,IAAS,EAGnC,YAAmB,GAAY,CAC7B,KAAM,IAAW,GAAW,MAAM,GAClC,GAAI,CAAC,GAAU,MAAO,KAEtB,KAAM,IAAQ,GAAc,GAAS,IAC/B,GAAU,GAAc,GAAS,IACjC,GAAU,GAAc,GAAS,IAEvC,MAAK,GAAa,GAAO,GAAS,IAKhC,GAAQ,EAAO,mBACf,GAAU,EAAO,qBACjB,GAAU,IANH,IAUX,YAAuB,GAAO,CAC5B,MAAQ,KAAS,WAAW,GAAM,QAAQ,IAAK,OAAU,EAG3D,YAAuB,GAAgB,CACrC,GAAI,KAAmB,IAAK,MAAO,GAEnC,KAAM,IAAW,GAAe,MAAM,GACtC,GAAI,CAAC,GAAU,MAAO,GAEtB,KAAM,IAAO,GAAS,KAAO,IAAM,GAAK,EAClC,GAAQ,SAAS,GAAS,IAC1B,GAAW,GAAS,IAAM,SAAS,GAAS,KAAQ,EAE1D,MAAK,IAAiB,GAAO,IAK3B,GACC,IAAQ,EAAO,mBAAqB,GAAU,EAAO,sBAL/C,IASX,YAA0B,GAAa,GAAM,GAAK,CAChD,KAAM,IAAO,GAAI,MAAK,GACtB,GAAK,eAAe,GAAa,EAAG,GACpC,KAAM,IAAqB,GAAK,aAAe,EACzC,GAAQ,IAAO,GAAK,EAAI,GAAM,EAAI,GACxC,UAAK,WAAW,GAAK,aAAe,IAC7B,GAMT,KAAM,IAAe,CAAC,GAAI,KAAM,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEpE,YAAyB,GAAM,CAC7B,MAAO,IAAO,MAAQ,GAAM,GAAO,IAAM,GAAK,GAAO,MAAQ,EAG/D,YAAsB,GAAM,GAAO,GAAM,CACvC,MACE,KAAS,GACT,IAAS,IACT,IAAQ,GACR,IAAS,IAAa,KAAW,IAAgB,IAAQ,GAAK,KAIlE,YAA+B,GAAM,GAAW,CAC9C,MAAO,KAAa,GAAK,IAAc,IAAgB,IAAQ,IAAM,KAGvE,WAA0B,GAAO,GAAM,GAAK,CAC1C,MAAO,KAAQ,GAAK,IAAQ,IAAM,IAAO,GAAK,IAAO,EAGvD,WAAsB,GAAO,GAAS,GAAS,CAC7C,MAAI,MAAU,GACL,KAAY,GAAK,KAAY,EAIpC,IAAW,GACX,GAAU,IACV,IAAW,GACX,GAAU,IACV,IAAS,GACT,GAAQ,GAIZ,YAA0B,GAAQ,GAAS,CACzC,MAAO,KAAW,GAAK,IAAW,K,gCC1SpC,EAAQ,UAAY,EAkCpB,WAAmB,EAAS,CAC1B,KAAM,GAAQ,EAAQ,MACpB,iGAEF,MAAI,GAEK,GAAI,MACT,KAAK,IACH,CAAC,EAAM,GACP,CAAC,EAAM,GAAK,EACZ,CAAC,EAAM,GACP,CAAC,EAAM,GAAM,EAAC,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAK,GACvD,CAAC,EAAM,GAAM,EAAC,EAAM,KAAO,GAAM,GAAM,IAAM,IAAM,GAAK,GACxD,CAAC,EAAM,GACP,CAAG,IAAM,IAAM,KAAO,MAAM,UAAU,EAAG,KAIxC,GAAI,MAAK,O,kCCpDlB,EAAQ,OAAS,OACjB,GAAI,GAAU,EAAQ,MAEtB,OAAa,CACX,IAAI,EAAY,EAAO,EAAO,EAAS,CACrC,KAAM,GAAS,KAAK,MAAM,EAAY,EAAO,EAAO,GACpD,MAAK,GAIE,CACL,OAAQ,GAAI,GAAQ,YAClB,EAAO,MACP,KAAK,SACL,KAAK,IACL,KAAK,SACL,KAAK,aAEP,KAAM,EAAO,MAXN,KAeX,SAAS,EAAU,EAAQ,EAAU,CACnC,MAAO,IAGX,EAAQ,OAAS,G,kCC1BjB,EAAQ,YACN,EAAQ,OACR,EAAQ,2BACN,OACJ,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAEtB,KAAM,GAAyB,GAE/B,OAAa,CACX,YAAc,EAEd,SAAS,EAAU,EAAU,CAC3B,MAAO,IAGX,EAAQ,OAAS,EAEjB,eAA0B,EAAO,CAC/B,YACE,EAEA,EAEA,EAEA,GACA,GACA,CACA,QACA,KAAK,MAAQ,EACb,KAAK,cAAgB,EACrB,KAAK,SAAW,EAChB,KAAK,SAAW,GACZ,IACF,MAAK,YAAc,IAIvB,SAAS,EAAM,EAAS,CACtB,MAAO,MAAK,cAAc,EAAM,KAAK,MAAO,GAG9C,IAAI,EAAM,EAAO,EAAS,CACxB,MAAO,MAAK,SAAS,EAAM,EAAO,KAAK,MAAO,IAGlD,EAAQ,YAAc,EAEtB,eAAyC,EAAO,CAC9C,SAAW,EACX,YAAc,GACd,IAAI,EAAM,EAAO,CACf,MAAI,GAAM,eAAuB,EACzB,GAAG,EAAQ,eAAe,EAAO,GAAG,EAAO,WAAW,EAAM,QAGxE,EAAQ,2BAA6B,G,gCCzDrC,EAAQ,iBAAmB,EAAQ,gBAAkB,OACrD,KAAM,GAAmB,EAAQ,gBAAkB,CACjD,MAAO,iBACP,KAAM,qBACN,UAAW,kCACX,KAAM,qBACN,QAAS,qBACT,QAAS,qBACT,QAAS,iBACT,QAAS,iBACT,OAAQ,YACR,OAAQ,YAER,YAAa,MACb,UAAW,WACX,YAAa,WACb,WAAY,WAEZ,gBAAiB,SACjB,kBAAmB,QACnB,gBAAiB,aACjB,kBAAmB,aACnB,iBAAkB,cAGd,EAAoB,EAAQ,iBAAmB,CACnD,qBAAsB,2BACtB,MAAO,0BACP,qBAAsB,oCACtB,SAAU,2BACV,wBAAyB,wC,kCC9B3B,EAAQ,QAAU,OAClB,GAAI,GAAa,EAAQ,MACrB,EAAc,EAAQ,MACtB,EAAuB,EAAQ,MAC/B,EAAqB,EAAQ,KAC7B,EAAsB,EAAQ,MAC9B,EAAiB,EAAQ,MACzB,EAA2B,EAAQ,MACnC,EAAe,EAAQ,MACvB,EAAyB,EAAQ,MACjC,EAAmB,EAAQ,MAC3B,GAAiB,EAAQ,MACzB,GAAc,EAAQ,MACtB,GAAmB,EAAQ,MAC3B,GAAa,EAAQ,MACrB,GAAkB,EAAQ,MAC1B,GAA4B,EAAQ,MACpC,GAAgB,EAAQ,MACxB,GAAc,EAAQ,KACtB,EAAsB,EAAQ,MAC9B,EAAmB,EAAQ,MAC3B,GAAmB,EAAQ,MAC3B,GAAmB,EAAQ,KAC3B,GAAmB,EAAQ,MAC3B,GAAmB,EAAQ,MAC3B,GAAgB,EAAQ,MACxB,GAAgB,EAAQ,MACxB,GAA0B,EAAQ,MAClC,GAA0B,EAAQ,MAClC,GAAqB,EAAQ,MAC7B,GAA0B,EAAQ,MAClC,GAA+B,EAAQ,MA8C3C,KAAM,IAAW,EAAQ,QAAU,CACjC,EAAG,GAAI,GAAW,UAClB,EAAG,GAAI,GAAY,WACnB,EAAG,GAAI,GAAqB,oBAC5B,EAAG,GAAI,GAAmB,kBAC1B,EAAG,GAAI,GAAoB,mBAC3B,EAAG,GAAI,GAAe,cACtB,EAAG,GAAI,GAAyB,wBAChC,EAAG,GAAI,GAAa,YACpB,EAAG,GAAI,GAAuB,sBAC9B,EAAG,GAAI,GAAiB,gBACxB,EAAG,GAAI,IAAe,cACtB,EAAG,GAAI,IAAY,WACnB,EAAG,GAAI,IAAiB,gBACxB,EAAG,GAAI,IAAW,UAClB,EAAG,GAAI,IAAgB,eACvB,EAAG,GAAI,IAA0B,yBACjC,EAAG,GAAI,IAAc,aACrB,EAAG,GAAI,IAAY,WACnB,EAAG,GAAI,GAAoB,mBAC3B,EAAG,GAAI,GAAiB,gBACxB,EAAG,GAAI,IAAiB,gBACxB,EAAG,GAAI,IAAiB,gBACxB,EAAG,GAAI,IAAiB,gBACxB,EAAG,GAAI,IAAiB,gBACxB,EAAG,GAAI,IAAc,aACrB,EAAG,GAAI,IAAc,aACrB,EAAG,GAAI,IAAwB,uBAC/B,EAAG,GAAI,IAAwB,uBAC/B,EAAG,GAAI,IAAmB,kBAC1B,EAAG,GAAI,IAAwB,uBAC/B,EAAG,GAAI,IAA6B,8B,kCC5GtC,EAAQ,mBAAqB,OAC7B,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAiC,GAAQ,MAAO,CAC9C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,QACA,SACA,MACH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,mBAIV,QACH,MAAO,GAAM,UAAU,EAAY,CACjC,MAAO,SACP,QAAS,mBAER,eAEH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,OACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,gBAMnB,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAU,GAAG,EAAO,sBAAsB,GAAQ,EAAG,EAAG,GACtD,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAEjD,EAAQ,mBAAqB,G,iCCvD7B,EAAQ,WAAa,OACrB,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAyB,GAAQ,MAAO,CACtC,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,QACA,SACA,MACH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,mBAIV,QACH,MAAO,GAAM,UAAU,EAAY,CACjC,MAAO,SACP,QAAS,mBAER,eAEH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,OACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,gBAMnB,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAU,GAAG,EAAO,sBAAsB,GAAQ,EAAG,EAAG,GACtD,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAEjD,EAAQ,WAAa,G,kCCvDrB,EAAQ,WAAa,OACrB,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,KAAM,GAAgB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC7D,EAA0B,CAC9B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAI9C,eAAyB,GAAQ,MAAO,CACtC,SAAW,GACX,YAAc,EAEd,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,KAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAM,EAAO,CACpB,KAAM,GAAO,EAAK,cACZ,GAAc,GAAG,EAAO,iBAAiB,GACzC,GAAQ,EAAK,WACnB,MAAI,IACK,GAAS,GAAK,GAAS,EAAwB,IAE/C,GAAS,GAAK,GAAS,EAAc,IAIhD,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,QAAQ,GACb,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,WAAa,G,kCC9DrB,EAAQ,gBAAkB,OAC1B,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,YAAc,EAEd,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,QACA,KACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,UAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAM,EAAO,CACpB,KAAM,GAAO,EAAK,cAElB,MADoB,GAAG,EAAO,iBAAiB,GAEtC,GAAS,GAAK,GAAS,IAEvB,GAAS,GAAK,GAAS,IAIlC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAS,EAAG,GACjB,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,gBAAkB,G,kCC5D1B,EAAQ,UAAY,OACpB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAGtB,eAAwB,GAAQ,MAAO,CACrC,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OAED,QACA,SACA,MACH,MACE,GAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,QACH,MAAO,GAAM,IAAI,EAAY,CAC3B,MAAO,SACP,QAAS,mBAGR,SACH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,eAEH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,OAAQ,QAAS,gBAChD,EAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,gBAK1D,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,EAAS,CAChC,SAAQ,GAAG,EAAO,QAAQ,EAAM,EAAO,GACvC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAEjD,EAAQ,UAAY,G,kCC/DpB,EAAQ,gBAAkB,OAC1B,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,QACA,SACA,MACH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,mBAIV,QACH,MAAO,GAAM,UAAU,EAAY,CACjC,MAAO,SACP,QAAS,mBAER,eAEH,MACE,GAAM,UAAU,EAAY,CAC1B,MAAO,OACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,cACP,QAAS,gBAEX,EAAM,UAAU,EAAY,CAC1B,MAAO,SACP,QAAS,gBAMnB,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAU,GAAG,EAAO,sBAAsB,GAAQ,EAAG,EAAG,GACtD,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,KAEvC,EAAQ,gBAAkB,G,kCCxD1B,EAAQ,UAAY,OAEpB,GAAI,GAAU,EAAQ,MAEtB,eAAwB,GAAQ,MAAO,CACrC,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OAED,QACA,SACA,MACH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,iBAC/B,EAAM,IAAI,EAAY,CAAE,MAAO,eAI9B,QACH,MAAO,GAAM,IAAI,EAAY,CAAE,MAAO,eAEnC,eAEH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,UAC/B,EAAM,IAAI,EAAY,CAAE,MAAO,iBAC/B,EAAM,IAAI,EAAY,CAAE,MAAO,YAKvC,IAAI,EAAM,EAAO,EAAO,CACtB,SAAM,IAAM,EACZ,EAAK,YAAY,EAAO,EAAG,GAC3B,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,KAEvC,EAAQ,UAAY,G,kCCzCpB,EAAQ,mBAAqB,OAC7B,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAiC,GAAQ,MAAO,CAC9C,SAAW,IAEX,MAAM,EAAY,EAAO,CACvB,MAAI,KAAU,IACJ,GAAG,EAAO,oBAAoB,EAAG,GAGnC,GAAG,EAAO,oBAAoB,EAAM,OAAQ,GAGtD,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,YAAY,EAAO,EAAG,GAC3B,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAE1E,EAAQ,mBAAqB,G,kCCxB7B,EAAQ,uBAAyB,OACjC,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAqC,GAAQ,MAAO,CAClD,SAAW,GAEX,MAAM,EAAY,EAAO,CACvB,KAAM,GAAiB,GACrB,KAAK,MAAM,EAAQ,KAAK,IAAI,GAAI,CAAC,EAAM,OAAS,IAClD,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAM,OAAQ,GACvC,GAIJ,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,gBAAgB,GACd,EAGT,mBAAqB,CAAC,IAAK,KAE7B,EAAQ,uBAAyB,G,kCCxBjC,EAAQ,gBAAkB,OAC1B,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,QAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CAEvB,MAAI,GADc,YAAc,IACpB,EAAQ,GAClB,EAAK,SAAS,EAAQ,GAAI,EAAG,EAAG,GAEhC,EAAK,SAAS,EAAO,EAAG,EAAG,GAEtB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5C,EAAQ,gBAAkB,G,iCCvC1B,EAAQ,gBAAkB,OAC1B,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,QAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAS,EAAO,EAAG,EAAG,GACpB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtD,EAAQ,gBAAkB,G,kCClC1B,EAAQ,gBAAkB,OAC1B,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,QAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,KAAM,GAAQ,GAAS,GAAK,EAAQ,GAAK,EACzC,SAAK,SAAS,EAAO,EAAG,EAAG,GACpB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEtD,EAAQ,gBAAkB,G,kCCnC1B,EAAQ,gBAAkB,OAC1B,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,QAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,KAAM,GAAO,EAAK,YAAc,GAChC,MAAI,IAAQ,EAAQ,GAClB,EAAK,SAAS,EAAQ,GAAI,EAAG,EAAG,GACvB,CAAC,GAAQ,IAAU,GAC5B,EAAK,SAAS,EAAG,EAAG,EAAG,GAEvB,EAAK,SAAS,EAAO,EAAG,EAAG,GAEtB,EAGT,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5C,EAAQ,gBAAkB,G,kCCzC1B,EAAQ,aAAe,OACvB,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAA2B,GAAQ,MAAO,CACxC,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,KAAM,GAAiB,GACjB,IAAU,EACL,EAEF,EAGT,OAAQ,OAED,QACA,KACH,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,OAE3C,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,YAE5C,MACH,MAAQ,GAAG,EAAO,UAChB,EAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAET,EAAM,IAAI,EAAY,CACpB,MAAO,QACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CACpB,MAAO,SACP,QAAS,eAEb,OAGC,QACH,MAAQ,GAAG,EAAO,UAChB,EAAM,IAAI,EAAY,CACpB,MAAO,SACP,QAAS,eAEX,OAGC,SACH,MAAQ,GAAG,EAAO,UAChB,EAAM,IAAI,EAAY,CACpB,MAAO,QACP,QAAS,gBAET,EAAM,IAAI,EAAY,CACpB,MAAO,SACP,QAAS,eAEb,OAGC,eAEH,MAAQ,GAAG,EAAO,UAChB,EAAM,IAAI,EAAY,CACpB,MAAO,OACP,QAAS,gBAET,EAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CACpB,MAAO,QACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CACpB,MAAO,SACP,QAAS,eAEb,IAKR,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAQ,GAAG,EAAO,WAAW,EAAM,GACnC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,aAAe,G,kCCtHvB,EAAQ,kBAAoB,OAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAAgC,GAAQ,MAAO,CAC7C,SAAW,GAEX,MAAM,EAAY,EAAO,CACvB,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,qBAC5B,OAEC,KACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,MAC5B,OAEC,OACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,qBAC5B,OAEC,QACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,wBAC5B,OAEC,cAEH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,SAC5B,IAKR,IAAI,EAAM,EAAO,EAAO,CACtB,MAAI,GAAM,eAAuB,EACzB,GAAG,EAAO,eAChB,EACA,EAAK,UACF,GAAG,EAAQ,iCAAiC,GAC7C,GAIN,mBAAqB,CAAC,IAAK,IAAK,KAElC,EAAQ,kBAAoB,G,kCCvD5B,EAAQ,uBAAyB,OACjC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAAqC,GAAQ,MAAO,CAClD,SAAW,GAEX,MAAM,EAAY,EAAO,CACvB,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,qBAC5B,OAEC,KACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,MAC5B,OAEC,OACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,qBAC5B,OAEC,QACH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,wBAC5B,OAEC,cAEH,MAAQ,GAAG,EAAO,sBAChB,EAAW,iBAAiB,SAC5B,IAKR,IAAI,EAAM,EAAO,EAAO,CACtB,MAAI,GAAM,eAAuB,EACzB,GAAG,EAAO,eAChB,EACA,EAAK,UACF,GAAG,EAAQ,iCAAiC,GAC7C,GAIN,mBAAqB,CAAC,IAAK,IAAK,KAElC,EAAQ,uBAAyB,G,kCCvDjC,EAAQ,cAAgB,OACxB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAA4B,GAAQ,MAAO,CACzC,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,KAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,MAAQ,GAAG,EAAQ,gBAAiB,GAAG,EAAO,YAAY,EAAM,IAGlE,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,cAAgB,G,iCCnDxB,EAAQ,kBAAoB,OAC5B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAAgC,GAAQ,MAAO,CAC7C,SAAW,IAEX,MAAM,EAAY,EAAO,CACvB,MAAI,KAAU,IACJ,GAAG,EAAO,oBAAoB,EAAG,GAGnC,GAAG,EAAO,oBAAoB,EAAM,OAAQ,GAGtD,IAAI,EAAM,EAAQ,EAAO,CACvB,KAAM,GAAmB,GAAG,EAAQ,eAAe,EAAM,GACzD,SAAgB,YAAY,EAAO,EAAG,GACtC,EAAgB,SAAS,EAAG,EAAG,EAAG,GAC1B,GAAG,EAAO,gBAAgB,GAGpC,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,kBAAoB,G,kCC5C5B,EAAQ,eAAiB,OACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAA6B,GAAQ,MAAO,CAC1C,SAAW,GACX,MAAM,EAAY,EAAO,EAAO,EAAS,CACvC,KAAM,GAAiB,IAAU,CAE/B,KAAM,IAAgB,KAAK,MAAO,IAAQ,GAAK,GAAK,EACpD,MAAS,IAAQ,EAAQ,aAAe,GAAK,EAAK,IAGpD,OAAQ,OAED,QACA,KACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAM,OAAQ,GACvC,OAGC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,QAER,OAGC,MACH,MACE,GAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,QACH,MAAO,GAAM,IAAI,EAAY,CAC3B,MAAO,SACP,QAAS,mBAGR,SACH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,eAEH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,OAAQ,QAAS,gBAChD,EAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,gBAK1D,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,EAAS,CAChC,SAAQ,GAAG,EAAO,QAAQ,EAAM,EAAO,GACvC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,eAAiB,G,kCCnGzB,EAAQ,gBAAkB,OAC1B,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAClB,EAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAA8B,GAAQ,MAAO,CAC3C,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,KAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,iBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,GAAS,CAChC,MAAQ,GAAG,EAAQ,aAChB,GAAG,EAAO,SAAS,EAAM,EAAO,IACjC,IAIJ,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,gBAAkB,G,kCCrD1B,EAAQ,oBAAsB,OAC9B,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAAkC,GAAQ,MAAO,CAC/C,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,KAAM,GAAiB,IAAU,EAC/B,QACA,eAAgB,IAAU,OAG5B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAG,GAC5B,OAEC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,SAER,WAGF,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAM,OAAQ,GACvC,IAKR,SAAS,EAAO,EAAO,CACrB,MAAO,GAAM,gBAAkB,EAAM,KAAO,EAG9C,IAAI,EAAM,EAAO,EAAO,EAAS,CAC/B,KAAM,IAAe,GAAG,EAAO,aAAa,EAAM,GAElD,GAAI,EAAM,eAAgB,CACxB,KAAM,IAA0B,GAAG,EAAO,uBACxC,EAAM,KACN,IAEF,SAAK,YACH,GACA,EACA,EAAQ,uBAEV,EAAK,SAAS,EAAG,EAAG,EAAG,GACf,GAAG,EAAQ,aAAa,EAAM,GAGxC,KAAM,IACJ,CAAE,QAAS,KAAU,EAAM,MAAQ,EAAI,EAAM,KAAO,EAAI,EAAM,KAChE,SAAK,YAAY,GAAM,EAAG,EAAQ,uBAClC,EAAK,SAAS,EAAG,EAAG,EAAG,GACf,GAAG,EAAQ,aAAa,EAAM,GAGxC,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,oBAAsB,G,kCCnF9B,EAAQ,aAAe,OACvB,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA2B,GAAQ,MAAO,CACxC,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,OAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,mBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,WAAW,EAAO,EAAG,GACnB,EAGT,mBAAqB,CAAC,IAAK,KAE7B,EAAQ,aAAe,G,kCClCvB,EAAQ,YAAc,OACtB,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA0B,GAAQ,MAAO,CACvC,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGF,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,KAAM,GAAiB,GAAU,EAAQ,EAEzC,OAAQ,OAED,IACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,qBACT,EAAW,gBAAgB,MAC3B,GAEF,OAGC,KACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAG,GAC5B,OAGC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,UAER,OAGC,MACH,MACE,GAAM,MAAM,EAAY,CACtB,MAAO,cACP,QAAS,gBAEX,EAAM,MAAM,EAAY,CAAE,MAAO,SAAU,QAAS,mBAInD,QACH,MAAO,GAAM,MAAM,EAAY,CAC7B,MAAO,SACP,QAAS,mBAGR,eAEH,MACE,GAAM,MAAM,EAAY,CAAE,MAAO,OAAQ,QAAS,gBAClD,EAAM,MAAM,EAAY,CACtB,MAAO,cACP,QAAS,gBAEX,EAAM,MAAM,EAAY,CAAE,MAAO,SAAU,QAAS,gBAK5D,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAS,EAAO,GACrB,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,GAGX,EAAQ,YAAc,G,kCC5FtB,EAAQ,cAAgB,OACxB,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA4B,GAAQ,MAAO,CACzC,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OAED,QACA,KACH,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,OAE3C,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,gBAE5C,MACH,MACE,GAAM,QAAQ,EAAY,CACxB,MAAO,cACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,SACP,QAAS,mBAKV,QACH,MAAO,GAAM,QAAQ,EAAY,CAC/B,MAAO,SACP,QAAS,mBAGR,eAEH,MACE,GAAM,QAAQ,EAAY,CACxB,MAAO,OACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,cACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,SACP,QAAS,gBAMnB,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAU,GAAQ,GAAK,EAAG,GAC/B,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,cAAgB,G,kCCnFxB,EAAQ,aAAe,OACvB,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA2B,GAAQ,MAAO,CACxC,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,qBAChB,EAAW,gBAAgB,OAC3B,OAEC,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,mBAE/C,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,IAIpD,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,WAAW,EAAO,GAChB,EAGT,mBAAqB,CAAC,IAAK,KAE7B,EAAQ,aAAe,G,kCClCvB,EAAQ,yBAA2B,OACnC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAGrB,eAAuC,GAAQ,MAAO,CACpD,SAAW,GAEX,MAAM,EAAY,EAAO,EAAO,EAAS,CACvC,KAAM,GAAiB,IAAU,CAE/B,KAAM,IAAgB,KAAK,MAAO,IAAQ,GAAK,GAAK,EACpD,MAAS,IAAQ,EAAQ,aAAe,GAAK,EAAK,IAGpD,OAAQ,OAED,QACA,KACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAM,OAAQ,GACvC,OAGC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,QAER,OAGC,MACH,MACE,GAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,QACH,MAAO,GAAM,IAAI,EAAY,CAC3B,MAAO,SACP,QAAS,mBAGR,SACH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,mBAIjD,eAEH,MACE,GAAM,IAAI,EAAY,CAAE,MAAO,OAAQ,QAAS,gBAChD,EAAM,IAAI,EAAY,CACpB,MAAO,cACP,QAAS,gBAEX,EAAM,IAAI,EAAY,CAAE,MAAO,QAAS,QAAS,gBACjD,EAAM,IAAI,EAAY,CAAE,MAAO,SAAU,QAAS,gBAK1D,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,EAAS,CAChC,SAAQ,GAAG,EAAO,QAAQ,EAAM,EAAO,GACvC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,yBAA2B,G,kCCpGnC,EAAQ,sBAAwB,OAChC,GAAI,GAAa,EAAQ,MACrB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAoC,GAAQ,MAAO,CACjD,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,KAAM,GAAiB,GAAU,EAAQ,EAEzC,OAAQ,OAED,IACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,qBACT,EAAW,gBAAgB,MAC3B,GAEF,OAGC,KACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAG,GAC5B,OAGC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,UAER,OAGC,MACH,MACE,GAAM,MAAM,EAAY,CACtB,MAAO,cACP,QAAS,gBAEX,EAAM,MAAM,EAAY,CAAE,MAAO,SAAU,QAAS,mBAInD,QACH,MAAO,GAAM,MAAM,EAAY,CAC7B,MAAO,SACP,QAAS,mBAGR,eAEH,MACE,GAAM,MAAM,EAAY,CAAE,MAAO,OAAQ,QAAS,gBAClD,EAAM,MAAM,EAAY,CACtB,MAAO,cACP,QAAS,gBAEX,EAAM,MAAM,EAAY,CAAE,MAAO,SAAU,QAAS,gBAK5D,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,GAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAS,EAAO,GACrB,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,sBAAwB,G,kCC5FhC,EAAQ,wBAA0B,OAClC,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAsC,GAAQ,MAAO,CACnD,SAAW,IAEX,MAAM,EAAY,EAAO,EAAO,CAC9B,OAAQ,OAED,QACA,KACH,MAAQ,GAAG,EAAO,cAAc,EAAM,OAAQ,OAE3C,KACH,MAAO,GAAM,cAAc,EAAY,CAAE,KAAM,gBAE5C,MACH,MACE,GAAM,QAAQ,EAAY,CACxB,MAAO,cACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,SACP,QAAS,mBAKV,QACH,MAAO,GAAM,QAAQ,EAAY,CAC/B,MAAO,SACP,QAAS,mBAGR,eAEH,MACE,GAAM,QAAQ,EAAY,CACxB,MAAO,OACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,cACP,QAAS,gBAEX,EAAM,QAAQ,EAAY,CACxB,MAAO,SACP,QAAS,gBAMnB,SAAS,EAAO,EAAO,CACrB,MAAO,IAAS,GAAK,GAAS,EAGhC,IAAI,EAAM,EAAQ,EAAO,CACvB,SAAK,SAAU,GAAQ,GAAK,EAAG,GAC/B,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,mBAAqB,CACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGJ,EAAQ,wBAA0B,G,kCCnFlC,EAAQ,4BAA8B,OACtC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAA0C,GAAQ,MAAO,CACvD,SAAW,GAEX,MAAM,EAAY,CAChB,MAAQ,GAAG,EAAO,sBAAsB,GAG1C,IAAI,EAAM,EAAQ,EAAO,CACvB,MAAO,CAAE,GAAG,EAAO,eAAe,EAAM,GAAQ,CAAE,eAAgB,KAGpE,mBAAqB,IAEvB,EAAQ,4BAA8B,G,kCCnBtC,EAAQ,uBAAyB,OACjC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAS,EAAQ,KAErB,eAAqC,GAAQ,MAAO,CAClD,SAAW,GAEX,MAAM,EAAY,CAChB,MAAQ,GAAG,EAAO,sBAAsB,GAG1C,IAAI,EAAM,EAAQ,EAAO,CACvB,MAAO,CACJ,GAAG,EAAO,eAAe,EAAM,EAAQ,KACxC,CAAE,eAAgB,KAItB,mBAAqB,IAEvB,EAAQ,uBAAyB,G,kCCtBjC,EAAQ,WAAa,OACrB,GAAI,GAAU,EAAQ,MAElB,EAAS,EAAQ,KAUrB,eAAyB,GAAQ,MAAO,CACtC,SAAW,IACX,mBAAqB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEnE,MAAM,EAAY,EAAO,EAAO,CAC9B,KAAM,GAAiB,GAAU,EAC/B,OACA,eAAgB,IAAU,OAG5B,OAAQ,OACD,IACH,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAG,GAC5B,OAEC,KACH,MAAQ,GAAG,EAAO,UAChB,EAAM,cAAc,EAAY,CAC9B,KAAM,SAER,WAGF,MAAQ,GAAG,EAAO,UACf,GAAG,EAAO,cAAc,EAAM,OAAQ,GACvC,IAKR,SAAS,EAAO,EAAO,CACrB,MAAO,GAAM,gBAAkB,EAAM,KAAO,EAG9C,IAAI,EAAM,EAAO,EAAO,CACtB,KAAM,GAAc,EAAK,cAEzB,GAAI,EAAM,eAAgB,CACxB,KAAM,GAA0B,GAAG,EAAO,uBACxC,EAAM,KACN,GAEF,SAAK,YAAY,EAAwB,EAAG,GAC5C,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,EAGT,KAAM,GACJ,CAAE,QAAS,KAAU,EAAM,MAAQ,EAAI,EAAM,KAAO,EAAI,EAAM,KAChE,SAAK,YAAY,EAAM,EAAG,GAC1B,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,GAGX,EAAQ,WAAa,G,iCCpErB,EAAQ,qBAAuB,EAC/B,EAAQ,gBAAkB,GAC1B,EAAQ,SAAW,EACnB,EAAQ,sBAAwB,EAChC,EAAQ,qBAAuB,EAC/B,EAAQ,aAAe,EACvB,EAAQ,mBAAqB,EAC7B,EAAQ,oBAAsB,EAC9B,EAAQ,qBAAuB,EAC/B,GAAI,GAAS,EAAQ,KAEjB,EAAa,EAAQ,MAEzB,WAAkB,GAAe,GAAO,CACtC,MAAK,KAIE,CACL,MAAO,GAAM,GAAc,OAC3B,KAAM,GAAc,MAIxB,WAA6B,GAAS,GAAY,CAChD,KAAM,IAAc,GAAW,MAAM,IAErC,MAAK,IAIE,CACL,MAAO,SAAS,GAAY,GAAI,IAChC,KAAM,GAAW,MAAM,GAAY,GAAG,SAL/B,KASX,WAA8B,GAAS,GAAY,CACjD,KAAM,IAAc,GAAW,MAAM,IAErC,GAAI,CAAC,GACH,MAAO,MAIT,GAAI,GAAY,KAAO,IACrB,MAAO,CACL,MAAO,EACP,KAAM,GAAW,MAAM,IAI3B,KAAM,IAAO,GAAY,KAAO,IAAM,EAAI,GACpC,GAAQ,GAAY,GAAK,SAAS,GAAY,GAAI,IAAM,EACxD,GAAU,GAAY,GAAK,SAAS,GAAY,GAAI,IAAM,EAC1D,GAAU,GAAY,GAAK,SAAS,GAAY,GAAI,IAAM,EAEhE,MAAO,CACL,MACE,GACC,IAAQ,EAAO,mBACd,GAAU,EAAO,qBACjB,GAAU,EAAO,sBACrB,KAAM,GAAW,MAAM,GAAY,GAAG,SAI1C,WAA8B,GAAY,CACxC,MAAO,GACL,EAAW,gBAAgB,gBAC3B,IAIJ,WAAsB,GAAG,GAAY,CACnC,OAAQ,QACD,GACH,MAAO,GACL,EAAW,gBAAgB,YAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,UAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,YAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,WAC3B,YAGF,MAAO,GAAoB,GAAI,QAAO,UAAY,GAAI,KAAM,KAIlE,WAA4B,GAAG,GAAY,CACzC,OAAQ,QACD,GACH,MAAO,GACL,EAAW,gBAAgB,kBAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,gBAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,kBAC3B,QAEC,GACH,MAAO,GACL,EAAW,gBAAgB,iBAC3B,YAGF,MAAO,GAAoB,GAAI,QAAO,YAAc,GAAI,KAAM,KAIpE,WAA8B,GAAW,CACvC,OAAQ,QACD,UACH,MAAO,OACJ,UACH,MAAO,QACJ,SACA,WACA,YACH,MAAO,QACJ,SACA,eACA,gBAEH,MAAO,IAIb,WAA+B,GAAc,GAAa,CACxD,KAAM,IAAc,GAAc,EAK5B,GAAiB,GAAc,GAAc,EAAI,GAEvD,GAAI,IACJ,GAAI,IAAkB,GACpB,GAAS,IAAgB,QACpB,CACL,KAAM,IAAW,GAAiB,GAC5B,GAAkB,KAAK,MAAM,GAAW,KAAO,IAC/C,EAAoB,IAAgB,GAAW,IACrD,GAAS,GAAe,GAAmB,GAAoB,IAAM,GAGvE,MAAO,IAAc,GAAS,EAAI,GAGpC,YAAyB,GAAM,CAC7B,MAAO,IAAO,MAAQ,GAAM,GAAO,IAAM,GAAK,GAAO,MAAQ,I,kCCxK/D,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,KA2BtB,WAAqB,EAAM,EAAK,CAC9B,GAAI,GAAS,GAAG,EAAO,QAAQ,GAAQ,EACvC,MAAI,IAAS,GAAG,IAAS,GAEjB,GAAG,EAAQ,SAAS,EAAM,K,kCCjCpC,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAqBrB,WAAwB,EAAM,CAC5B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,iCCvBvC,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAqBrB,WAAwB,EAAM,CAC5B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MAqBrB,WAA0B,EAAM,CAC9B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAqBrB,WAAwB,EAAM,CAC5B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,MAqBrB,WAA0B,EAAM,CAC9B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAqBrB,WAAyB,EAAM,CAC7B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,kBAAoB,EAC5B,GAAI,GAAS,EAAQ,MAqBrB,WAA2B,EAAM,CAC/B,MAAQ,GAAG,EAAO,aAAa,EAAM,K,kCCvBvC,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,KAqBrB,WAA0B,EAAU,CAClC,MAAO,MAAK,MAAM,EAAW,EAAO,mB,kCCvBtC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,KA0BrB,WAAyB,EAAU,CACjC,KAAM,GAAQ,EAAW,EAAO,eAChC,MAAO,MAAK,MAAM,K,kCC7BpB,EAAQ,oBAAsB,EAC9B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA+CtB,WAA6B,EAAM,EAAS,CAC1C,KAAM,GAAY,GAAS,WAAa,EAExC,GAAI,EAAY,GAAK,EAAY,GAC/B,MAAQ,GAAG,EAAQ,eAAe,EAAM,KAE1C,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAoB,EAAM,aAAe,GACzC,EAAoB,EAAM,aAAe,GAAK,GAC9C,GAAyB,EAAM,kBAAoB,IAAO,GAAK,GAC/D,GACJ,EAAM,WACN,EACA,EACA,GAGI,GAAS,GAAS,gBAAkB,QAIpC,GAAe,GAHM,EAAO,mBAAmB,IAGjB,GAAQ,GAAa,EAEnD,GAAU,GAAG,EAAQ,eAAe,EAAM,GAChD,UAAO,SAAS,GAAc,EAAG,EAAG,GAC7B,K,kCC3ET,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MA0CtB,WAA+B,EAAM,EAAS,CAC5C,KAAM,GAAY,GAAS,WAAa,EAExC,GAAI,EAAY,GAAK,EAAY,GAC/B,MAAQ,GAAG,EAAQ,eAAe,EAAM,KAE1C,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAoB,EAAM,aAAe,GACzC,EAAyB,EAAM,kBAAoB,IAAO,GAC1D,GACJ,EAAM,aAAe,EAAoB,EAGrC,GAAS,GAAS,gBAAkB,QAGpC,GAAiB,GAFI,EAAO,mBAAmB,IAEf,GAAU,GAAa,EAEvD,GAAU,GAAG,EAAQ,eAAe,EAAM,GAChD,UAAO,WAAW,GAAgB,EAAG,GAC9B,K,kCCjET,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,KAwBrB,WAAwB,EAAS,CAC/B,KAAM,GAAQ,EAAU,EAAO,cAC/B,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,sBAAwB,EAChC,GAAI,GAAS,EAAQ,KAmBrB,WAA+B,EAAS,CACtC,MAAO,GAAU,EAAO,uB,kCCrB1B,EAAQ,iBAAmB,EAC3B,GAAI,GAAS,EAAQ,KAwBrB,WAA0B,EAAS,CACjC,KAAM,GAAU,EAAU,EAAO,gBACjC,MAAO,MAAK,MAAM,K,kCC3BpB,EAAQ,IAAM,EACd,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAmCtB,WAAa,EAAM,EAAQ,CACzB,GAAI,GAAS,GAAG,EAAQ,QAAQ,GAGhC,MAAI,OAAM,CAAC,GACD,GAAG,EAAO,eAAe,EAAM,KAGrC,GAAO,MAAQ,MACjB,EAAM,YAAY,EAAO,MAGvB,EAAO,OAAS,MAClB,GAAS,GAAG,EAAQ,UAAU,EAAO,EAAO,QAG1C,EAAO,MAAQ,MACjB,EAAM,QAAQ,EAAO,MAGnB,EAAO,OAAS,MAClB,EAAM,SAAS,EAAO,OAGpB,EAAO,SAAW,MACpB,EAAM,WAAW,EAAO,SAGtB,EAAO,SAAW,MACpB,EAAM,WAAW,EAAO,SAGtB,EAAO,cAAgB,MACzB,EAAM,gBAAgB,EAAO,cAGxB,K,kCC1ET,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAsBrB,WAAiB,EAAM,EAAY,CACjC,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,QAAQ,GACP,I,kCC1BT,EAAQ,OAAS,EACjB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MAgCtB,WAAgB,EAAM,EAAK,EAAS,CAClC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,EAAe,cACf,EAAe,QAAQ,SAAS,cAChC,EAEI,EAAS,GAAG,EAAQ,QAAQ,GAC5B,GAAa,EAAM,SAGnB,GAAY,CADA,EAAM,EACM,GAAK,EAE7B,GAAQ,EAAI,EACZ,GACJ,EAAM,GAAK,EAAM,EACb,EAAQ,IAAa,IAAS,EAC5B,IAAW,IAAS,EAAO,IAAa,IAAS,EACzD,MAAQ,GAAG,EAAO,SAAS,EAAO,M,kCCxDpC,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAsBrB,WAAsB,EAAM,EAAW,CACrC,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,SAAS,GACf,EAAM,QAAQ,GACP,I,kCC3BT,EAAQ,kBAAoB,EAE5B,GAAI,GAAS,EAAQ,MA+CrB,WAA2B,EAAS,CAClC,KAAM,GAAS,GACT,EAAkB,GAAG,EAAO,qBAElC,SAAW,KAAY,GACjB,OAAO,UAAU,eAAe,KAAK,EAAgB,IAEvD,GAAO,GAAY,EAAe,IAItC,SAAW,KAAY,GACjB,OAAO,UAAU,eAAe,KAAK,EAAS,IAChD,CAAI,EAAQ,KAAc,OAExB,MAAO,GAAO,GAGd,EAAO,GAAY,EAAQ,IAKhC,GAAG,EAAO,mBAAmB,K,kCCxEhC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAO,CAC7B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,SAAS,GACR,I,iCC1BT,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,IAClB,EAAU,EAAQ,MAwBtB,WAAmB,EAAM,EAAK,CAC5B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAc,GAAG,EAAQ,WAAW,GACpC,EAAO,EAAM,EACnB,MAAQ,GAAG,EAAO,SAAS,EAAO,K,kCC/BpC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAwBtB,WAAoB,EAAM,EAAM,CAC9B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAQ,GAAG,EAAO,YAAY,GAAS,EAC7C,SAAM,QAAQ,EAAM,UAAY,EAAO,GAChC,I,kCC9BT,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAyBtB,WAAwB,EAAM,EAAU,CACtC,GAAI,GAAS,GAAG,EAAQ,QAAQ,GAChC,KAAM,GAAQ,GAAG,EAAQ,0BACvB,EACC,GAAG,EAAQ,oBAAoB,IAE5B,EAAmB,GAAG,EAAO,eAAe,EAAM,GACxD,SAAgB,YAAY,EAAU,EAAG,GACzC,EAAgB,SAAS,EAAG,EAAG,EAAG,GAClC,EAAS,GAAG,EAAQ,oBAAoB,GACxC,EAAM,QAAQ,EAAM,UAAY,GACzB,I,kCCxCT,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAsBrB,WAAyB,EAAM,EAAc,CAC3C,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,gBAAgB,GACf,I,kCC1BT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,EAAS,CACjC,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,GACV,I,kCC1BT,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAsBtB,WAAkB,EAAM,EAAO,CAC7B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAO,EAAM,cACb,EAAM,EAAM,UAEZ,EAAwB,GAAG,EAAO,eAAe,EAAM,GAC7D,EAAqB,YAAY,EAAM,EAAO,IAC9C,EAAqB,SAAS,EAAG,EAAG,EAAG,GACvC,KAAM,IAAe,GAAG,EAAQ,gBAAgB,GAGhD,SAAM,SAAS,EAAO,KAAK,IAAI,EAAK,KAC7B,I,kCCrCT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAsBtB,WAAoB,EAAM,EAAS,CACjC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAa,KAAK,MAAM,EAAM,WAAa,GAAK,EAChD,EAAO,EAAU,EACvB,MAAQ,GAAG,EAAO,UAAU,EAAO,EAAM,WAAa,EAAO,K,kCC5B/D,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,EAAS,CACjC,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,GACV,I,iCC1BT,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MA2CtB,WAAiB,EAAM,EAAM,EAAS,CACpC,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAC5B,EAAQ,GAAG,EAAO,SAAS,EAAO,GAAW,EACnD,SAAM,QAAQ,EAAM,UAAY,EAAO,GAChC,I,kCCjDT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA4CtB,WAAqB,EAAM,EAAU,EAAS,CAC5C,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,GACJ,GAAS,uBACT,GAAS,QAAQ,SAAS,uBAC1B,EAAe,uBACf,EAAe,QAAQ,SAAS,uBAChC,EAEF,GAAI,IAAS,GAAG,EAAQ,QAAQ,GAChC,KAAM,IAAQ,GAAG,EAAQ,0BACvB,GACC,GAAG,EAAQ,iBAAiB,GAAO,IAEhC,GAAa,GAAG,EAAO,eAAe,EAAM,GAClD,UAAU,YAAY,EAAU,EAAG,IACnC,GAAU,SAAS,EAAG,EAAG,EAAG,GAC5B,GAAS,GAAG,EAAQ,iBAAiB,GAAW,GAChD,GAAM,QAAQ,GAAM,UAAY,IACzB,K,kCCrET,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAsBtB,WAAiB,EAAM,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAQ,QAAQ,GAGlC,MAAI,OAAM,CAAC,GACD,GAAG,EAAO,eAAe,EAAM,KAGzC,GAAM,YAAY,GACX,K,kCCjCT,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,CACxB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC1BT,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAqBrB,WAAuB,EAAM,CAI3B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAO,EAAM,cACb,EAAS,KAAK,MAAM,EAAO,IAAM,GACvC,SAAM,YAAY,EAAQ,EAAG,GAC7B,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC/BT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAsBrB,WAAqB,EAAM,CACzB,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,EAAG,EAAG,GAChB,I,kCC1BT,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAwBrB,WAAwB,EAAM,CAC5B,MAAQ,GAAG,EAAO,aAAa,EAAM,CAAE,aAAc,M,kCC1BvD,EAAQ,mBAAqB,EAC7B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAyBtB,WAA4B,EAAM,CAChC,KAAM,GAAQ,GAAG,EAAO,gBAAgB,GAClC,EAAmB,GAAG,EAAQ,eAAe,EAAM,GACzD,SAAgB,YAAY,EAAM,EAAG,GACrC,EAAgB,SAAS,EAAG,EAAG,EAAG,GAC1B,GAAG,EAAQ,gBAAgB,K,kCCjCrC,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAsBrB,WAAuB,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,WAAW,EAAG,GACb,I,kCC1BT,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAsBrB,WAAsB,EAAM,CAC1B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,QAAQ,GACd,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC3BT,EAAQ,eAAiB,EACzB,GAAI,GAAS,EAAQ,MAsBrB,WAAwB,EAAM,CAC5B,KAAM,GAAS,GAAG,EAAO,QAAQ,GAC3B,EAAe,EAAM,WACrB,EAAQ,EAAgB,EAAe,EAC7C,SAAM,SAAS,EAAO,GACtB,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCC7BT,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,MAsBrB,WAAuB,EAAM,CAC3B,KAAM,GAAS,GAAG,EAAO,QAAQ,GACjC,SAAM,gBAAgB,GACf,I,kCC1BT,EAAQ,aAAe,EACvB,GAAI,GAAS,EAAQ,MAkBrB,YAAwB,CACtB,MAAQ,GAAG,EAAO,YAAY,KAAK,S,gCCpBrC,EAAQ,gBAAkB,EAgB1B,YAA2B,CACzB,KAAM,GAAM,GAAI,MACV,EAAO,EAAI,cACX,EAAQ,EAAI,WACZ,EAAM,EAAI,UAEV,EAAO,GAAI,MAAK,GACtB,SAAK,YAAY,EAAM,EAAO,EAAM,GACpC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,I,kCCzBT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAQ,MAgCtB,WAAqB,EAAM,EAAS,CAClC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,cACT,GAAS,QAAQ,SAAS,cAC1B,EAAe,cACf,EAAe,QAAQ,SAAS,cAChC,EAEI,EAAS,GAAG,EAAO,QAAQ,GAC3B,EAAM,EAAM,SACZ,EAAQ,GAAM,EAAe,EAAI,GAAK,EAAM,EAElD,SAAM,QAAQ,EAAM,UAAY,GAChC,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,kCClDT,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAClB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA0CtB,WAAyB,EAAM,EAAS,CACtC,KAAM,GAAkB,GAAG,EAAQ,qBAC7B,EACJ,GAAS,uBACT,GAAS,QAAQ,SAAS,uBAC1B,EAAe,uBACf,EAAe,QAAQ,SAAS,uBAChC,EAEI,EAAQ,GAAG,EAAQ,aAAa,EAAM,GACtC,GAAa,GAAG,EAAO,eAAe,EAAM,GAClD,UAAU,YAAY,EAAM,EAAG,GAC/B,GAAU,SAAS,EAAG,EAAG,EAAG,GACb,GAAG,EAAQ,aAAa,GAAW,K,kCC5DpD,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MACjB,EAAU,EAAQ,MAsBtB,WAAqB,EAAM,CACzB,KAAM,GAAa,GAAG,EAAO,QAAQ,GAC/B,EAAS,GAAG,EAAQ,eAAe,EAAM,GAC/C,SAAM,YAAY,EAAU,cAAe,EAAG,GAC9C,EAAM,SAAS,EAAG,EAAG,EAAG,GACjB,I,gCC7BT,EAAQ,iBAAmB,EAgB3B,YAA4B,CAC1B,KAAM,GAAM,GAAI,MACV,EAAO,EAAI,cACX,EAAQ,EAAI,WACZ,EAAM,EAAI,UAEV,EAAO,GAAI,MAAK,GACtB,SAAK,YAAY,EAAM,EAAO,EAAM,GACpC,EAAK,SAAS,EAAG,EAAG,EAAG,GAChB,I,kCCzBT,EAAQ,IAAM,EACd,GAAI,GAAS,EAAQ,KACjB,EAAU,EAAQ,MAElB,EAAU,EAAQ,MA0CtB,WAAa,EAAM,EAAU,CAC3B,KAAM,CACJ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,SAAQ,EACR,WAAU,EACV,WAAU,GACR,EAGE,GAAqB,GAAG,EAAQ,WAAW,EAAM,EAAS,EAAQ,IAGlE,GAAmB,GAAG,EAAO,SACjC,GACA,EAAO,EAAQ,GAIX,GAAe,GAAU,GAAQ,GAEjC,GAAU,IADe,GAAe,IACf,IAM/B,MALmB,GAAG,EAAQ,eAC5B,EACA,GAAgB,UAAY,M,kCCxEhC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAsBrB,WAAyB,EAAM,EAAQ,CACrC,MAAQ,GAAG,EAAO,iBAAiB,EAAM,CAAC,K,iCCxB5C,EAAQ,QAAU,EAClB,GAAI,GAAS,EAAQ,MAsBrB,WAAiB,EAAM,EAAQ,CAC7B,MAAQ,GAAG,EAAO,SAAS,EAAM,CAAC,K,kCCxBpC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAQ,CAC9B,MAAQ,GAAG,EAAO,UAAU,EAAM,CAAC,K,kCCxBrC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAwBrB,WAAyB,EAAM,EAAQ,CACrC,MAAQ,GAAG,EAAO,iBAAiB,EAAM,CAAC,K,gCC1B5C,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,MAsBrB,WAAyB,EAAM,EAAQ,CACrC,MAAQ,GAAG,EAAO,iBAAiB,EAAM,CAAC,K,kCCxB5C,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,EAAQ,CAChC,MAAQ,GAAG,EAAO,YAAY,EAAM,CAAC,K,kCCxBvC,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MAsBrB,WAAmB,EAAM,EAAQ,CAC/B,MAAQ,GAAG,EAAO,WAAW,EAAM,CAAC,K,kCCxBtC,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,MAsBrB,WAAqB,EAAM,EAAQ,CACjC,MAAQ,GAAG,EAAO,aAAa,EAAM,CAAC,K,kCCxBxC,EAAQ,WAAa,EACrB,GAAI,GAAS,EAAQ,MAsBrB,WAAoB,EAAM,EAAQ,CAChC,MAAQ,GAAG,EAAO,YAAY,EAAM,CAAC,K,kCCxBvC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAQ,CAC9B,MAAQ,GAAG,EAAO,UAAU,EAAM,CAAC,K,kCCxBrC,EAAQ,SAAW,EACnB,GAAI,GAAS,EAAQ,MAsBrB,WAAkB,EAAM,EAAQ,CAC9B,MAAQ,GAAG,EAAO,UAAU,EAAM,CAAC,K,gCCxBrC,EAAQ,OAAS,EAkCjB,WAAgB,EAAU,CACxB,KAAM,GAAS,OAAO,UAAU,SAAS,KAAK,GAG9C,MACE,aAAoB,OACnB,MAAO,IAAa,UAAY,IAAW,gBAGrC,GAAI,GAAS,YAAY,CAAC,GAEjC,MAAO,IAAa,UACpB,IAAW,mBACX,MAAO,IAAa,UACpB,IAAW,kBAGJ,GAAI,MAAK,GAGT,GAAI,MAAK,O,kCCtDpB,EAAQ,UAAY,EACpB,GAAI,GAAS,EAAQ,MA8BrB,WAAmB,EAAU,EAAa,CACxC,KAAM,GACJ,YAAuB,MAClB,GAAG,EAAO,eAAe,EAAa,GACvC,GAAI,GAAY,GACtB,SAAK,YACH,EAAS,cACT,EAAS,WACT,EAAS,WAEX,EAAK,SACH,EAAS,WACT,EAAS,aACT,EAAS,aACT,EAAS,mBAEJ,I,kCC/CT,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,KAmBrB,WAAqB,EAAO,CAC1B,MAAO,MAAK,MAAM,EAAQ,EAAO,c,kCCrBnC,EAAQ,YAAc,EACtB,GAAI,GAAS,EAAQ,KAmBrB,WAAqB,EAAO,CAC1B,MAAO,MAAK,MAAM,EAAQ,EAAO,c,kCCrBnC,EAAQ,cAAgB,EACxB,GAAI,GAAS,EAAQ,KAmBrB,WAAuB,EAAO,CAC5B,MAAO,MAAK,MAAM,EAAQ,EAAO,gB,kCCrBnC,EAAQ,gBAAkB,EAC1B,GAAI,GAAS,EAAQ,KAmBrB,WAAyB,EAAO,CAC9B,MAAO,MAAK,MAAM,EAAQ,EAAO,kB,kCCtBnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYa,GAAI,GAAG,EAAQ,MAAS,EAAG,EAAQ,MAAa,WAAW,EAAE,CAAC,OAAQ,GAAE,yDAAyD,EAAE,EAAE,EAAE,EAAE,UAAU,OAAO,IAAI,GAAG,WAAW,mBAAmB,UAAU,IAAI,MAAM,yBAAyB,EAAE,WAAW,EAAE,iHAAiH,GAAI,GAAG,GAAI,KAAI,EAAG,GAAG,WAAY,EAAE,EAAE,CAAC,EAAG,EAAE,GAAG,EAAG,EAAE,UAAU,GACtb,WAAY,EAAE,EAAE,CAAS,IAAR,EAAG,GAAG,EAAM,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAG,IAAI,EAAE,IACzD,GAAI,GAAG,CAAE,CAAc,MAAO,SAArB,aAA2C,MAAO,QAAO,UAA5B,aAAoD,MAAO,QAAO,SAAS,eAArC,aAAoD,EAAG,OAAO,UAAU,eAAe,EAAG,8VAA8V,GACpgB,GAAG,GAAG,GAAG,YAAY,EAAE,CAAC,MAAG,GAAG,KAAK,GAAG,GAAS,GAAM,EAAG,KAAK,GAAG,GAAS,GAAM,EAAG,KAAK,GAAU,GAAG,GAAG,GAAG,IAAG,GAAG,GAAS,IAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAU,IAAP,MAAc,EAAE,OAAN,EAAW,MAAM,GAAG,OAAO,MAAO,QAAQ,eAAgB,SAAS,MAAM,OAAQ,UAAU,MAAG,GAAQ,GAAa,IAAP,KAAe,CAAC,EAAE,gBAAgB,GAAE,EAAE,cAAc,MAAM,EAAE,GAAmB,IAAV,SAAuB,IAAV,iBAAoB,MAAM,IACtX,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAU,IAAP,MAAwB,MAAO,IAArB,aAAwB,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,GAAU,IAAP,KAAS,OAAO,EAAE,UAAW,GAAE,MAAM,CAAC,MAAO,GAAE,MAAW,KAAL,OAAY,GAAE,MAAO,OAAM,OAAQ,GAAE,MAAO,OAAM,IAAI,EAAE,EAAE,MAAM,GAAG,YAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,gBAAoB,IAAJ,GAAW,IAAJ,GAAW,IAAJ,EAAM,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,GAAI,IAAE,GACnb,uIAAuI,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe,QAAQ,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,GAAG,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAAS,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,cAAc,KAAK,GAAG,MACve,CAAC,cAAc,4BAA4B,YAAY,iBAAiB,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,8OAA8O,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,cAAc,KAAK,GAAG,MACrb,CAAC,UAAU,WAAW,QAAQ,YAAY,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,YAAY,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQ,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,SAAS,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,cAAc,KAAK,GAAG,MAAM,GAAI,IAAG,gBAAgB,WAAY,EAAE,CAAC,MAAO,GAAE,GAAG,cAC3Y,0jCAA0jC,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,GACzmC,GAAI,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,2EAA2E,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,GAAG,GAAI,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,+BAA+B,GAAG,MAAM,CAAC,WAAW,WAAW,aAAa,QAAQ,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,GAAG,GAAI,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,uCAAuC,GAAG,MAAM,CAAC,WAAW,eAAe,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,cAAc,KAAK,GAAG,MAC/c,GAAE,UAAU,GAAI,IAAE,YAAY,EAAE,GAAG,aAAa,+BAA+B,GAAG,IAAI,CAAC,MAAM,OAAO,SAAS,cAAc,QAAQ,SAAS,EAAE,CAAC,GAAE,GAAG,GAAI,IAAE,EAAE,EAAE,GAAG,EAAE,cAAc,KAAK,GAAG,MACzL,WAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,eAAe,GAAG,GAAE,GAAG,KAAQ,CAAO,IAAP,KAAa,EAAE,OAAN,EAAW,GAAG,CAAE,GAAE,EAAE,SAAe,EAAE,KAAR,KAAkB,EAAE,KAAR,KAAkB,EAAE,KAAR,KAAkB,EAAE,KAAR,MAAW,IAAG,EAAE,EAAE,EAAE,IAAK,GAAE,MAAM,GAAU,IAAP,KAAS,GAAG,IAAK,CAAO,IAAP,KAAS,EAAE,gBAAgB,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,gBAAgB,EAAE,EAAE,cAAqB,IAAP,KAAa,EAAE,OAAN,EAAW,GAAG,GAAG,EAAG,GAAE,EAAE,cAAc,EAAE,EAAE,mBAA0B,IAAP,KAAS,EAAE,gBAAgB,GAAI,GAAE,EAAE,KAAK,EAAM,IAAJ,GAAW,IAAJ,GAAY,IAAL,GAAO,GAAG,GAAG,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAC7c,GAAI,IAAG,EAAG,mDAAmD,GAAG,OAAO,IAAI,iBAAiB,GAAG,OAAO,IAAI,gBAAgB,GAAG,OAAO,IAAI,kBAAkB,GAAG,OAAO,IAAI,qBAAqB,GAAG,OAAO,IAAI,kBAAkB,GAAG,OAAO,IAAI,kBAAkB,GAAG,OAAO,IAAI,iBAAiB,GAAG,OAAO,IAAI,qBAAqB,GAAG,OAAO,IAAI,kBAAkB,GAAG,OAAO,IAAI,uBAAuB,GAAG,OAAO,IAAI,cAAc,GAAG,OAAO,IAAI,cAAc,OAAO,IAAI,eAAe,OAAO,IAAI,0BACje,GAAI,IAAG,OAAO,IAAI,mBAAmB,OAAO,IAAI,uBAAuB,OAAO,IAAI,eAAe,OAAO,IAAI,wBAAwB,GAAI,IAAG,OAAO,SAAS,YAAY,EAAE,CAAC,MAAU,KAAP,MAAqB,MAAO,IAAlB,SAA2B,KAAK,GAAE,IAAI,EAAE,KAAK,EAAE,cAAiC,MAAO,IAApB,WAAsB,EAAE,MAAK,GAAI,IAAE,OAAO,OAAO,GAAG,YAAY,EAAE,CAAC,GAAY,KAAT,OAAY,GAAG,CAAC,KAAM,eAAe,EAAN,CAAS,GAAI,GAAE,EAAE,MAAM,OAAO,MAAM,gBAAgB,GAAG,GAAG,EAAE,IAAI,GAAG,MAAM;AAAA,EAAK,GAAG,EAAE,GAAI,IAAG,GACzb,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,GAAI,GAAE,MAAM,kBAAkB,MAAM,kBAAkB,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,KAAM,UAAU,OAAO,eAAe,EAAE,UAAU,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAM,YAAuB,MAAO,UAAlB,UAA2B,QAAQ,UAAU,CAAC,GAAG,CAAC,QAAQ,UAAU,EAAE,UAAU,GAAN,CAAS,GAAI,GAAE,GAAE,QAAQ,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,GAAN,CAAS,EAAE,GAAE,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,KAAM,eAAe,GAAN,CAAS,EAAE,GAAE,WAAW,GAAN,CAAS,GAAG,IAAG,GAAc,MAAO,IAAE,OAApB,SAA0B,CAAC,OAAQ,GAAE,GAAE,MAAM,MAAM;AAAA,GACnf,EAAE,EAAE,MAAM,MAAM;AAAA,GAAM,EAAE,EAAE,OAAO,EAAE,GAAE,EAAE,OAAO,EAAE,GAAG,GAAG,GAAG,IAAG,EAAE,KAAK,EAAE,KAAI,KAAI,KAAK,GAAG,GAAG,GAAG,GAAE,IAAI,KAAI,GAAG,EAAE,KAAK,EAAE,IAAG,CAAC,GAAO,IAAJ,GAAW,KAAJ,EAAO,EAAG,IAAG,IAAI,KAAI,EAAE,IAAG,EAAE,KAAK,EAAE,IAAG,CAAC,GAAI,IAAE;AAAA,EAAK,EAAE,GAAG,QAAQ,WAAW,QAAQ,SAAE,aAAa,GAAE,SAAS,gBAAiB,IAAE,GAAE,QAAQ,cAAc,EAAE,cAAqB,SAAQ,GAAG,GAAG,GAAG,IAAG,eAAQ,CAAQ,GAAG,GAAG,MAAM,kBAAkB,EAAE,MAAO,GAAE,EAAE,EAAE,aAAa,EAAE,KAAK,IAAI,GAAG,GAAG,GAC5Z,YAAY,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,MAAO,IAAG,EAAE,UAAW,IAAG,MAAO,IAAG,YAAa,IAAG,MAAO,IAAG,gBAAiB,IAAG,MAAO,IAAG,oBAAqB,OAAO,OAAO,IAAG,MAAO,GAAE,GAAG,EAAE,KAAK,IAAI,MAAO,IAAG,MAAO,GAAE,GAAG,EAAE,KAAK,OAAO,IAAI,MAAO,GAAE,MAAO,GAAE,GAAG,EAAE,KAAK,IAAI,UAAU,MAAM,IACrR,YAAY,EAAE,CAAC,GAAS,GAAN,KAAQ,MAAO,MAAK,GAAgB,MAAO,IAApB,WAAsB,MAAO,GAAE,aAAa,EAAE,MAAM,KAAK,GAAc,MAAO,IAAlB,SAAoB,MAAO,GAAE,OAAO,OAAQ,IAAG,MAAM,eAAgB,IAAG,MAAM,aAAc,IAAG,MAAM,eAAgB,IAAG,MAAM,iBAAkB,IAAG,MAAM,eAAgB,IAAG,MAAM,eAAe,GAAc,MAAO,IAAlB,SAAoB,OAAO,EAAE,cAAe,IAAG,MAAO,GAAE,aAAa,WAAW,gBAAiB,IAAG,MAAO,GAAE,SAAS,aAAa,WAAW,gBAAiB,IAAG,GAAI,GAAE,EAAE,OAAO,SAAE,EAAE,YAAY,GAAI,GAAE,EAAE,aAClf,EAAE,MAAM,GAAG,EAAO,IAAL,GAAO,cAAc,EAAE,IAAI,cAAqB,MAAO,IAAG,MAAO,GAAE,EAAE,aAAa,KAAY,IAAP,KAAS,EAAE,GAAG,EAAE,OAAO,WAAY,IAAG,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,MAAO,IAAG,EAAE,SAAI,GAAW,MAAO,MACvM,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,KAAK,OAAO,EAAE,SAAU,IAAG,MAAM,YAAa,GAAE,MAAO,GAAE,aAAa,WAAW,gBAAiB,IAAG,MAAO,GAAE,SAAS,aAAa,WAAW,gBAAiB,IAAG,MAAM,yBAA0B,IAAG,MAAO,GAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,EAAE,aAAc,CAAK,IAAL,GAAO,cAAc,EAAE,IAAI,kBAAmB,GAAE,MAAM,eAAgB,GAAE,MAAO,OAAO,GAAE,MAAM,aAAc,GAAE,MAAM,WAAY,GAAE,MAAM,WAAY,IAAG,MAAO,IAAG,OAAQ,GAAE,MAAO,KAAI,GAAG,aAAa,WAAY,IAAG,MAAM,gBACjf,IAAG,MAAM,eAAgB,IAAG,MAAM,YAAa,IAAG,MAAM,eAAgB,IAAG,MAAM,mBAAoB,IAAG,MAAM,oBAAqB,OAAO,OAAO,QAAQ,OAAO,QAAQ,IAAG,GAAgB,MAAO,IAApB,WAAsB,MAAO,GAAE,aAAa,EAAE,MAAM,KAAK,GAAc,MAAO,IAAlB,SAAoB,MAAO,GAAE,MAAO,MAAK,YAAY,EAAE,CAAC,OAAO,MAAO,QAAQ,cAAe,aAAc,aAAc,YAAY,MAAO,OAAO,SAAS,MAAO,WAAU,MAAM,IACla,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,KAAK,MAAO,GAAE,EAAE,WAAqB,EAAE,gBAAZ,SAA4B,CAAa,IAAb,YAA0B,IAAV,SAC9F,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,GAAG,UAAU,QAAQ,EAAE,OAAO,yBAAyB,EAAE,YAAY,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,eAAe,IAAkB,MAAO,IAArB,aAAqC,MAAO,GAAE,KAAtB,YAAwC,MAAO,GAAE,KAAtB,WAA0B,CAAC,GAAI,GAAE,EAAE,IAAI,EAAE,EAAE,IAAI,cAAO,eAAe,EAAE,EAAE,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,MAAO,GAAE,KAAK,OAAO,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,KAAK,MAAM,OAAO,eAAe,EAAE,EAAE,CAAC,WAAW,EAAE,aAAmB,CAAC,SAAS,UAAU,CAAC,MAAO,IAAG,SAAS,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,aAAa,UAAU,CAAC,EAAE,cACxf,KAAK,MAAO,GAAE,MAAM,YAAY,EAAE,CAAC,EAAE,eAAgB,GAAE,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAI,GAAE,EAAE,cAAc,GAAG,CAAC,EAAE,MAAM,GAAG,GAAI,GAAE,EAAE,WAAe,EAAE,GAAG,UAAI,GAAE,GAAG,GAAG,EAAE,QAAQ,OAAO,QAAQ,EAAE,OAAO,EAAE,EAAS,IAAI,EAAG,GAAE,SAAS,GAAG,IAAI,GAAG,YAAY,EAAE,CAAsD,GAArD,EAAE,GAAI,CAAc,MAAO,WAArB,YAA8B,SAAS,QAAyB,MAAO,IAArB,YAAuB,MAAO,MAAK,GAAG,CAAC,MAAO,GAAE,eAAe,EAAE,UAAK,CAAS,MAAO,GAAE,MAC/Z,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,MAAO,IAAE,GAAG,EAAE,CAAC,eAAe,OAAO,aAAa,OAAO,MAAM,OAAO,QAAc,GAAI,EAAE,cAAc,iBAAiB,YAAY,EAAE,EAAE,CAAC,GAAI,GAAQ,EAAE,cAAR,KAAqB,GAAG,EAAE,aAAa,EAAQ,EAAE,SAAR,KAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAS,EAAE,OAAR,KAAc,EAAE,MAAM,GAAG,EAAE,cAAc,CAAC,eAAe,EAAE,aAAa,EAAE,WAAwB,EAAE,OAAf,YAA+B,EAAE,OAAZ,QAAuB,EAAE,SAAR,KAAsB,EAAE,OAAR,MAAe,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,QAAc,GAAN,MAAS,EAAG,EAAE,UAAU,EAAE,IAC3d,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAI,GAAE,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,GAAS,GAAN,KAAsB,IAAX,SAAiB,CAAI,IAAJ,GAAY,EAAE,QAAP,IAAc,EAAE,OAAO,IAAE,GAAE,MAAM,GAAG,GAAO,EAAE,QAAQ,GAAG,GAAI,GAAE,MAAM,GAAG,WAAsB,IAAX,UAAwB,IAAV,QAAY,CAAC,EAAE,gBAAgB,SAAS,OAAO,EAAE,eAAe,SAAS,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,eAAe,iBAAiB,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,eAAqB,EAAE,SAAR,MAAuB,EAAE,gBAAR,MAAyB,GAAE,eAAe,CAAC,CAAC,EAAE,gBACnZ,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,eAAe,UAAU,EAAE,eAAe,gBAAgB,CAAC,GAAI,GAAE,EAAE,KAAK,GAAG,CAAE,CAAW,IAAX,UAAwB,IAAV,SAAsB,EAAE,QAAX,QAAyB,EAAE,QAAT,MAAgB,OAAO,EAAE,GAAG,EAAE,cAAc,aAAa,GAAG,IAAI,EAAE,OAAQ,GAAE,MAAM,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,KAAU,IAAL,IAAS,GAAE,KAAK,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,cAAc,eAAoB,IAAL,IAAS,GAAE,KAAK,GACvV,YAAY,EAAE,EAAE,EAAE,CAAI,CAAW,IAAX,UAAc,GAAG,EAAE,iBAAiB,IAAE,CAAM,GAAN,KAAQ,EAAE,aAAa,GAAG,EAAE,cAAc,aAAa,EAAE,eAAe,GAAG,GAAI,GAAE,aAAa,GAAG,IAAG,GAAI,IAAG,MAAM,QAC7K,YAAY,EAAE,EAAE,EAAE,EAAE,CAAa,GAAZ,EAAE,EAAE,QAAW,EAAE,CAAC,EAAE,GAAG,OAAQ,GAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,eAAe,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,WAAW,GAAI,GAAE,GAAG,SAAS,GAAG,GAAG,GAAI,GAAE,GAAG,gBAAgB,QAAQ,CAAmB,IAAlB,EAAE,GAAG,GAAG,GAAG,EAAE,KAAS,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,SAAS,GAAG,GAAI,GAAE,GAAG,gBAAgB,IAAI,OAAc,IAAP,MAAU,EAAE,GAAG,UAAW,GAAE,EAAE,IAAW,IAAP,MAAW,GAAE,SAAS,KACpY,YAAY,EAAE,EAAE,CAAC,GAAS,EAAE,yBAAR,KAAgC,KAAM,OAAM,EAAE,KAAK,MAAO,IAAE,GAAG,EAAE,CAAC,MAAM,OAAO,aAAa,OAAO,SAAS,GAAG,EAAE,cAAc,eAAe,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAS,GAAN,KAAQ,CAA+B,GAA9B,EAAE,EAAE,SAAS,EAAE,EAAE,aAAsB,GAAN,KAAQ,CAAC,GAAS,GAAN,KAAQ,KAAM,OAAM,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,KAAM,OAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAQ,GAAN,MAAU,GAAE,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC,aAAa,GAAG,IAChY,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAoB,GAAN,MAAU,GAAE,GAAG,EAAE,IAAI,EAAE,OAAQ,GAAE,MAAM,GAAS,EAAE,cAAR,MAAsB,EAAE,eAAe,GAAI,GAAE,aAAa,IAAU,GAAN,MAAU,GAAE,aAAa,GAAG,GAAG,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,IAAI,EAAE,cAAc,cAAmB,IAAL,IAAe,IAAP,MAAW,GAAE,MAAM,GAAG,YAAY,EAAE,CAAC,OAAO,OAAQ,MAAM,MAAM,iCAAkC,OAAO,MAAM,6CAA6C,MAAM,gCAC9a,YAAY,EAAE,EAAE,CAAC,MAAa,IAAN,MAA0C,IAAjC,+BAAmC,GAAG,GAAkC,IAA/B,8BAAoD,IAAlB,gBAAoB,+BAA+B,EAC/J,GAAI,IAAG,GAAG,SAAS,EAAE,CAAC,MAAoB,OAAO,QAArB,aAA4B,MAAM,wBAAwB,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,wBAAwB,UAAU,CAAC,MAAO,GAAE,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,CAAC,GAAkC,EAAE,eAAjC,8BAA+C,aAAc,GAAE,EAAE,UAAU,MAAM,CAA2F,IAA1F,GAAG,IAAI,SAAS,cAAc,OAAO,GAAG,UAAU,QAAQ,EAAE,UAAU,WAAW,SAAa,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,eACvc,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAI,GAAE,EAAE,WAAW,GAAG,GAAG,IAAI,EAAE,WAAe,EAAE,WAAN,EAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EACrH,GAAI,IAAG,CAAC,wBAAwB,GAAG,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAClf,KAAK,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,cAAc,GAAG,YAAY,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,QAAQ,SAAS,EAAE,CAAC,GAAG,QAAQ,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,cAAc,EAAE,UAAU,GAAG,GAAG,GAAG,GAAG,OAAO,YAAY,EAAE,EAAE,EAAE,CAAC,MAAa,IAAN,MAAqB,MAAO,IAAnB,WAA2B,IAAL,GAAO,GAAG,GAAc,MAAO,IAAlB,UAAyB,IAAJ,GAAO,GAAG,eAAe,IAAI,GAAG,GAAI,IAAG,GAAG,OAAO,EAAE,KACrb,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,OAAQ,KAAK,GAAE,GAAG,EAAE,eAAe,GAAG,CAAC,GAAI,GAAM,EAAE,QAAQ,QAAd,EAAoB,EAAE,GAAG,EAAE,EAAE,GAAG,GAAa,IAAV,SAAc,GAAE,YAAY,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,GAAI,IAAG,GAAE,CAAC,SAAS,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,KAClT,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAK,CAAM,EAAE,UAAR,MAAwB,EAAE,yBAAR,MAAiC,KAAM,OAAM,EAAE,IAAI,IAAI,GAAS,EAAE,yBAAR,KAAgC,CAAC,GAAS,EAAE,UAAR,KAAiB,KAAM,OAAM,EAAE,KAAK,GAAc,MAAO,GAAE,yBAApB,UAA6C,CAAE,WAAW,GAAE,yBAAyB,KAAM,OAAM,EAAE,KAAM,GAAS,EAAE,OAAR,MAA0B,MAAO,GAAE,OAApB,SAA0B,KAAM,OAAM,EAAE,MAC5V,YAAY,EAAE,EAAE,CAAC,GAAQ,EAAE,QAAQ,OAAf,GAAoB,MAAiB,OAAO,GAAE,IAApB,SAAuB,OAAO,OAAQ,qBAAsB,oBAAqB,gBAAiB,oBAAqB,oBAAqB,uBAAwB,qBAAsB,gBAAgB,MAAM,WAAW,MAAM,IAAI,GAAI,IAAG,KAAK,YAAY,EAAE,CAAC,SAAE,EAAE,QAAQ,EAAE,YAAY,OAAO,EAAE,yBAA0B,GAAE,EAAE,yBAAoC,EAAE,WAAN,EAAe,EAAE,WAAW,EAAE,GAAI,IAAG,KAAK,GAAG,KAAK,GAAG,KACpc,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAgB,MAAO,KAApB,WAAuB,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,EAAE,UAAU,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,UAAU,EAAE,KAAK,KAAK,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,GAAI,GAAE,GAAG,EAAE,GAAoB,GAAjB,GAAG,GAAG,KAAK,GAAG,GAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,YAAY,EAAE,EAAE,CAAC,MAAO,GAAE,GAAG,aAAa,EAAE,GAAI,IAAG,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,MAAO,GAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,MAAO,IAAG,EAAE,EAAE,UAAG,CAAW,GAAG,GAAG,CAAO,KAAP,MAAkB,KAAP,OAAU,MAAK,OAC3a,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,GAAU,IAAP,KAAS,MAAO,MAAK,GAAI,GAAE,GAAG,GAAG,GAAU,IAAP,KAAS,MAAO,MAAK,EAAE,EAAE,GAAG,EAAE,OAAO,OAAQ,cAAe,qBAAsB,oBAAqB,2BAA4B,kBAAmB,yBAA0B,kBAAmB,yBAA0B,gBAAiB,uBAAwB,eAAgB,GAAE,CAAC,EAAE,WAAY,GAAE,EAAE,KAAK,EAAE,CAAE,CAAW,IAAX,UAAwB,IAAV,SAAwB,IAAX,UAA2B,IAAb,aAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,GAAG,EAAE,MAAO,MAAK,GAAG,GACte,MAAO,IADke,WAChe,KAAM,OAAM,EAAE,IAAI,EAAE,MAAO,KAAI,MAAO,GAAE,GAAI,IAAG,GAAG,GAAG,EAAG,GAAG,CAAC,GAAI,IAAG,GAAG,OAAO,eAAe,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,GAAG,MAAM,OAAO,iBAAiB,OAAO,GAAG,IAAI,OAAO,oBAAoB,OAAO,GAAG,SAAI,CAAS,GAAG,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,CAAC,GAAI,IAAE,MAAM,UAAU,MAAM,KAAK,UAAU,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,UAAS,GAAN,CAAS,KAAK,QAAQ,KAAI,GAAI,IAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,QAAQ,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM,GAAG,WAC/d,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,CAA0B,GAAzB,GAAG,MAAM,KAAK,WAAc,GAAG,CAAC,GAAG,GAAG,CAAC,GAAI,IAAE,GAAG,GAAG,GAAG,GAAG,SAAU,MAAM,OAAM,EAAE,MAAM,IAAK,IAAG,GAAG,GAAG,KAAI,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,EAAG,GAAE,EAAO,GAAE,MAAM,QAAb,GAAqB,GAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,MAAW,GAAE,MAAN,EAAU,EAAE,KAAK,YAAY,EAAE,CAAC,GAAQ,EAAE,MAAP,GAAW,CAAC,GAAI,GAAE,EAAE,cAAsE,GAAjD,IAAP,MAAW,GAAE,EAAE,UAAiB,IAAP,MAAW,GAAE,EAAE,gBAA0B,IAAP,KAAS,MAAO,GAAE,WAAW,MAAO,MAAK,YAAY,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,KAAM,OAAM,EAAE,MAC3e,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,GAAG,CAAC,EAAE,CAAS,GAAR,EAAE,GAAG,GAAa,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,MAAO,KAAI,EAAE,KAAK,EAAE,OAAQ,GAAE,EAAE,EAAE,IAAI,CAAC,GAAI,GAAE,EAAE,OAAO,GAAU,IAAP,KAAS,MAAM,GAAI,GAAE,EAAE,UAAU,GAAU,IAAP,KAAS,CAAY,GAAX,EAAE,EAAE,OAAiB,IAAP,KAAS,CAAC,EAAE,EAAE,SAAS,MAAM,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,MAAO,IAAG,GAAG,EAAE,GAAG,IAAI,EAAE,MAAO,IAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,KAAM,OAAM,EAAE,MAAO,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,OAAQ,GAAE,GAAG,GAAE,EAAE,MAAM,IAAG,CAAC,GAAG,KAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,KAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,GAAE,GAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,GAAE,EAAE,MAAM,IAAG,CAAC,GAAG,KAC5f,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,KAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,GAAE,GAAE,QAAQ,GAAG,CAAC,EAAE,KAAM,OAAM,EAAE,OAAQ,GAAG,EAAE,YAAY,EAAE,KAAM,OAAM,EAAE,MAAO,GAAO,EAAE,MAAN,EAAU,KAAM,OAAM,EAAE,MAAM,MAAO,GAAE,UAAU,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,SAAE,GAAG,GAAiB,IAAP,KAAS,GAAG,GAAG,KAAK,YAAY,EAAE,CAAC,GAAO,EAAE,MAAN,GAAe,EAAE,MAAN,EAAU,MAAO,GAAE,IAAI,EAAE,EAAE,MAAa,IAAP,MAAU,CAAC,GAAI,GAAE,GAAG,GAAG,GAAU,IAAP,KAAS,MAAO,GAAE,EAAE,EAAE,QAAQ,MAAO,MACtX,GAAI,IAAG,EAAG,0BAA0B,GAAG,EAAG,wBAAwB,GAAG,EAAG,qBAAqB,GAAG,EAAG,sBAAsB,GAAE,EAAG,aAAa,GAAG,EAAG,iCAAiC,GAAG,EAAG,2BAA2B,GAAG,EAAG,8BAA8B,GAAG,EAAG,wBAAwB,GAAG,EAAG,qBAAqB,GAAG,EAAG,sBAAsB,GAAG,KAAK,GAAG,KAAK,YAAY,EAAE,CAAC,GAAG,IAAiB,MAAO,IAAG,mBAAvB,WAAyC,GAAG,CAAC,GAAG,kBAAkB,GAAG,EAAE,OAAc,GAAE,QAAQ,MAAM,OAAvB,UAA6B,GAC7d,GAAI,IAAG,KAAK,MAAM,KAAK,MAAM,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC,YAAK,EAAa,IAAJ,EAAM,GAAG,GAAI,IAAG,GAAG,GAAG,GAAG,EAAE,GAAI,IAAG,GAAG,GAAG,QAC7H,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,OAAQ,GAAE,MAAO,OAAO,GAAE,MAAO,OAAO,GAAE,MAAO,OAAO,GAAE,MAAO,OAAO,IAAG,MAAO,QAAQ,IAAG,MAAO,QAAQ,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,aAAa,SAAQ,MAAO,GAAE,YAAa,aAAa,aAAa,cAAc,cAAc,UAAS,MAAO,GAAE,cAAe,WAAU,MAAO,eAAe,WAAU,MAAO,eAAe,WAAU,MAAO,eAAe,YAAW,MAAO,oBACjgB,MAAO,IAAG,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,GAAO,IAAJ,EAAM,MAAO,GAAE,GAAI,GAAE,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,EAAE,UAAU,GAAO,IAAJ,EAAM,CAAC,GAAI,IAAE,EAAE,CAAC,EAAM,KAAJ,EAAM,EAAE,GAAG,IAAI,IAAG,EAAM,IAAJ,GAAQ,GAAE,GAAG,SAAU,GAAE,EAAE,CAAC,EAAM,IAAJ,EAAM,EAAE,GAAG,GAAO,IAAJ,GAAQ,GAAE,GAAG,IAAI,GAAO,IAAJ,EAAM,MAAO,GAAE,GAAO,IAAJ,GAAO,IAAI,GAAQ,GAAE,KAAP,GAAY,GAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAQ,IAAL,IAAa,GAAE,WAAP,GAAiB,MAAO,GAA0C,GAAnC,GAAE,KAAP,GAAY,IAAG,EAAE,IAAI,EAAE,EAAE,eAAsB,IAAJ,EAAM,IAAI,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,MAAO,GACtc,YAAY,EAAE,EAAE,CAAC,OAAO,OAAQ,OAAO,OAAO,GAAE,MAAO,GAAE,QAAS,OAAO,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,aAAa,SAAQ,MAAO,GAAE,QAAS,aAAa,aAAa,cAAc,cAAc,UAAS,MAAM,OAAQ,eAAe,eAAe,eAAe,YAAW,MAAM,WAAW,MAAM,IAC5a,YAAY,EAAE,EAAE,CAAC,OAAQ,GAAE,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,EAAE,gBAAgB,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,GAAE,GAAG,EAAE,GAAE,EAAE,GAAW,KAAL,GAAW,CAAK,IAAE,KAAP,GAAgB,IAAE,KAAP,IAAU,GAAE,GAAG,GAAG,GAAE,IAAQ,IAAG,GAAI,GAAE,cAAc,IAAG,GAAG,CAAC,IAAG,YAAY,EAAE,CAAC,SAAE,EAAE,aAAa,YAAuB,IAAJ,EAAM,EAAE,EAAE,WAAW,WAAW,EAAE,aAAa,CAAC,GAAI,GAAE,GAAG,YAAK,EAAO,IAAG,WAAR,GAAmB,IAAG,IAAW,EAAE,YAAY,EAAE,CAAC,OAAQ,GAAE,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,MAAO,GAC1a,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,cAAc,EAAc,IAAZ,WAAgB,GAAE,eAAe,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,eAAe,EAAE,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,EAAE,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,cAAc,GAAI,GAAE,EAAE,WAAW,IAAI,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GACvY,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,cAAc,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAI,GAAE,IAAI,GAAG,GAAG,CAAC,GAAG,GAAI,IAAE,EAAE,YAAY,EAAE,CAAC,UAAG,CAAC,EAAS,EAAE,EAAE,EAAE,EAAO,GAAE,aAAP,EAAkB,GAAG,UAAU,EAAE,EAAE,GAAI,IAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAAI,KAAI,GAAG,GAAI,KAAI,GAAG,GAAG,GAAG,6PAA6P,MAAM,KAChiB,YAAY,EAAE,EAAE,CAAC,OAAO,OAAQ,cAAe,WAAW,GAAG,KAAK,UAAW,gBAAiB,YAAY,GAAG,KAAK,UAAW,gBAAiB,WAAW,GAAG,KAAK,UAAW,kBAAmB,aAAa,GAAG,OAAO,EAAE,WAAW,UAAW,wBAAyB,qBAAqB,GAAG,OAAO,EAAE,YACxS,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAU,KAAP,MAAU,EAAE,cAAc,EAAS,GAAE,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,CAAC,IAAW,IAAP,MAAW,GAAE,GAAG,GAAU,IAAP,MAAU,GAAG,IAAI,GAAE,GAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAwB,IAAP,MAAe,EAAE,QAAQ,KAAf,IAAmB,EAAE,KAAK,GAAU,GACnR,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,OAAQ,UAAU,MAAO,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAQ,YAAY,MAAO,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAQ,YAAY,MAAO,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,OAAQ,cAAc,GAAI,GAAE,EAAE,UAAU,UAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,IAAU,OAAQ,oBAAoB,MAAO,GAAE,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM,GACjW,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,QAAQ,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,GAAG,GAAG,GAAU,IAAP,MAAS,GAAG,EAAE,EAAE,IAAS,IAAL,IAAQ,GAAG,EAAE,GAAG,GAAU,IAAP,KAAS,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,UAAU,CAAC,GAAG,KAAK,gBAAoB,IAAJ,GAAO,EAAE,UAAU,QAAQ,cAAc,aAAa,CAAC,EAAE,UAAc,EAAE,MAAN,EAAU,EAAE,UAAU,cAAc,KAAK,SAAQ,EAAE,UAAU,KAC9S,YAAY,EAAE,CAAC,GAAU,EAAE,YAAT,KAAmB,MAAM,GAAG,OAAQ,GAAE,EAAE,iBAAiB,EAAE,EAAE,QAAQ,CAAC,GAAI,GAAE,GAAG,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,EAAE,aAAa,GAAU,IAAP,KAAS,CAAC,EAAE,EAAE,YAAY,GAAI,GAAE,GAAI,GAAE,YAAY,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,OAAO,cAAc,GAAG,GAAG,SAAU,OAAO,GAAE,GAAG,GAAU,IAAP,MAAU,GAAG,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,MAAM,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC,GAAG,GAAU,KAAP,MAAW,GAAG,KAAM,IAAG,MAAa,KAAP,MAAW,GAAG,KAAM,IAAG,MAAa,KAAP,MAAW,GAAG,KAAM,IAAG,MAAM,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAChf,YAAY,EAAE,EAAE,CAAC,EAAE,YAAY,GAAI,GAAE,UAAU,KAAK,IAAK,IAAG,GAAG,EAAG,0BAA0B,EAAG,wBAAwB,MACvH,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC,MAAO,IAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,YAAY,GAAI,GAAE,UAAU,OAA+F,IAAjF,KAAP,MAAW,GAAG,GAAG,GAAU,KAAP,MAAW,GAAG,GAAG,GAAU,KAAP,MAAW,GAAG,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,QAAQ,GAAO,EAAE,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,GAAG,GAAG,EAAE,YAAY,GAAI,GAAE,UAAU,MAAM,KAAK,EAAE,GAAG,QAAS,GAAE,GAAG,GAAU,EAAE,YAAT,OAAqB,GAAG,GAAU,EAAE,YAAT,MAAoB,GAAG,QAAQ,GAAI,IAAG,GAAG,wBAAwB,GAAG,GAC5a,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,GAAG,WAAW,GAAG,WAAW,KAAK,GAAG,CAAC,GAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAG,CAAQ,GAAE,EAAE,GAAG,WAAW,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,GAAG,WAAW,GAAG,WAAW,KAAK,GAAG,CAAC,GAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAG,CAAQ,GAAE,EAAE,GAAG,WAAW,GAC/N,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAI,GAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAU,IAAP,KAAS,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,WAAW,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,QAAQ,GAAG,CAAC,KAAY,IAAP,MAAU,CAAC,GAAI,GAAE,GAAG,GAA0D,GAAhD,IAAP,MAAU,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAU,IAAP,MAAU,GAAG,EAAE,EAAE,EAAE,GAAG,GAAM,IAAI,EAAE,MAAM,EAAE,EAAS,IAAP,MAAU,EAAE,sBAAuB,IAAG,EAAE,EAAE,EAAE,KAAK,IAAI,GAAI,IAAG,KACpU,YAAY,EAAE,EAAE,EAAE,EAAE,CAAyB,GAAxB,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,GAAG,GAAa,IAAP,KAAS,GAAG,EAAE,GAAG,GAAU,IAAP,KAAS,EAAE,aAAa,EAAE,EAAE,IAAS,IAAL,GAAO,CAAS,GAAR,EAAE,GAAG,GAAa,IAAP,KAAS,MAAO,GAAE,EAAE,aAAiB,IAAJ,EAAM,CAAC,GAAG,EAAE,UAAU,QAAQ,cAAc,aAAa,MAAW,GAAE,MAAN,EAAU,EAAE,UAAU,cAAc,KAAK,EAAE,SAAU,KAAI,GAAI,GAAE,MAAM,UAAG,EAAS,KACzS,YAAY,EAAE,CAAC,OAAO,OAAQ,aAAc,YAAa,YAAa,kBAAmB,WAAY,UAAW,eAAgB,eAAgB,cAAe,gBAAiB,WAAY,cAAe,eAAgB,YAAa,cAAe,cAAe,eAAgB,YAAa,gBAAiB,cAAe,YAAa,YAAa,WAAY,oBAAqB,kBAAmB,gBAAiB,iBAAkB,YAAa,aAAc,aAAc,aAAc,kBAAmB,eAAgB,iBAAkB,mBAAoB,aAAc,sBAAuB,gBAAiB,uBAAwB,qBAAsB,wBAAyB,iBAAkB,gBAAiB,kBAAmB,WAAY,uBAAwB,YAAa,iBAAkB,eAAgB,aAAc,cAAc,MAAO,OAAO,WAAY,gBAAiB,eAAgB,gBAAiB,eAAgB,gBAAiB,eAAgB,gBAAiB,kBAAmB,iBAAkB,kBAAmB,aAAc,aAAc,gBAAiB,YAAa,iBAAkB,iBAAkB,mBAAoB,eAAe,MAAO,OAC/pC,UAAU,OAAO,UAAW,IAAG,MAAO,OAAO,IAAG,MAAO,OAAO,QAAQ,IAAG,MAAO,QAAQ,IAAG,MAAO,mBAAkB,MAAO,YAAW,MAAO,KAAI,GAAI,IAAG,KAAK,GAAG,KAAK,GAAG,KAAK,aAAa,CAAC,GAAG,GAAG,MAAO,IAAG,GAAI,GAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,SAAU,IAAG,GAAG,MAAM,GAAG,YAAY,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAI,GAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAO,IAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,QACjY,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,kBAAa,GAAG,GAAE,EAAE,SAAa,IAAJ,GAAY,IAAL,IAAS,GAAE,KAAK,EAAE,EAAO,IAAL,IAAS,GAAE,IAAW,IAAI,GAAQ,IAAL,GAAO,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAC1K,YAAY,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,KAAK,OAAQ,MAAK,GAAE,EAAE,eAAe,KAAK,GAAE,EAAE,IAAG,KAAK,IAAG,EAAE,EAAE,GAAG,EAAE,KAAI,YAAK,mBAAoB,CAAM,EAAE,kBAAR,KAAyB,EAAE,iBAAsB,EAAE,cAAP,IAAoB,GAAG,GAAG,KAAK,qBAAqB,GAAU,KAAK,UAAE,EAAE,UAAU,CAAC,eAAe,UAAU,CAAC,KAAK,iBAAiB,GAAG,GAAI,GAAE,KAAK,YAAY,GAAI,GAAE,eAAe,EAAE,iBAA6B,MAAO,GAAE,aAArB,WACxd,GAAE,YAAY,IAAI,KAAK,mBAAmB,KAAK,gBAAgB,UAAU,CAAC,GAAI,GAAE,KAAK,YAAY,GAAI,GAAE,gBAAgB,EAAE,kBAA8B,MAAO,GAAE,cAArB,WAAoC,GAAE,aAAa,IAAI,KAAK,qBAAqB,KAAK,QAAQ,UAAU,GAAG,aAAa,KAAY,EAChR,GAAI,IAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,SAAS,EAAE,CAAC,MAAO,GAAE,WAAW,KAAK,OAAO,iBAAiB,EAAE,UAAU,GAAG,GAAG,GAAG,IAAI,EAAG,GAAE,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAG,GAAG,GAAI,EAAG,GAAG,EAAG,EAAG,GAAE,GAAG,EAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,EAAE,QAAQ,EAAE,cAAc,SAAS,EAAE,CAAC,MAAgB,GAAE,gBAAX,OAAyB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,UAAU,SAAS,EAAE,CAAC,MAAG,aAC3e,GAAS,EAAE,UAAU,KAAI,GAAK,IAAkB,EAAE,OAAhB,YAAsB,GAAG,EAAE,QAAQ,EAAG,QAAQ,GAAG,EAAE,QAAQ,EAAG,SAAS,GAAG,EAAG,EAAE,EAAG,GAAU,IAAI,UAAU,SAAS,EAAE,CAAC,MAAM,aAAc,GAAE,EAAE,UAAU,MAAM,GAAG,GAAG,GAAI,GAAG,GAAE,GAAG,EAAG,CAAC,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,EAAG,CAAC,cAAc,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,cAAc,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,MAAM,iBAAkB,GAAE,EAAE,cAAc,OAAO,iBAAiB,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,SACxf,SAAS,IAAI,KAAK,YAAY,GAAG,UAAU,MAAM,aAAa,KAAK,YAAY,IAAI,SAAS,IAAI,KAAK,KAAK,cAAc,KAAK,cAAc,OAAO,aAAa,gBAAgB,gBAAgB,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQ,GAAG,CAAC,IAAI,SAAS,QAAQ,UAAU,KAAK,UAAU,MAAM,YAAY,YAAY,EAAE,CAAC,GAAI,GAAE,KAAK,YAAY,MAAO,GAAE,iBAAiB,EAAE,iBAAiB,GAAI,GAAE,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,MAAO,IAC9R,GAAI,IAAG,GAAE,GAAG,EAAG,CAAC,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAI,GAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAoB,IAAjB,eAAmB,MAAO,GAAE,MAAmB,GAAE,OAAf,WAAqB,GAAE,GAAG,GAAQ,IAAL,GAAO,QAAQ,OAAO,aAAa,IAAgB,EAAE,OAAd,WAA8B,EAAE,OAAZ,QAAiB,GAAG,EAAE,UAAU,eAAe,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,SAAS,SAAS,EAAE,CAAC,MAAmB,GAAE,OAAf,WAAoB,GAAG,GAAG,GAAG,QAAQ,SAAS,EAAE,CAAC,MAAkB,GAAE,OAAd,WAA8B,EAAE,OAAZ,QAAiB,EAAE,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC,MACve,GAAE,OAD2e,WACte,GAAG,GAAe,EAAE,OAAd,WAA8B,EAAE,OAAZ,QAAiB,EAAE,QAAQ,KAAK,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,EAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,EAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,KAAK,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,cAAc,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE,GAAG,EAAG,CAAC,OAAO,SAAS,EAAE,CAAC,MAAM,UAAW,GAAE,EAAE,OAAO,eAAgB,GAAE,CAAC,EAAE,YAAY,GAClf,OAAO,SAAS,EAAE,CAAC,MAAM,UAAW,GAAE,EAAE,OAAO,eAAgB,GAAE,CAAC,EAAE,YAAY,cAAe,GAAE,CAAC,EAAE,WAAW,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,GAAI,oBAAqB,QAAO,GAAG,KAAK,GAAI,gBAAiB,WAAW,IAAG,SAAS,cAAc,GAAI,IAAG,GAAI,aAAc,SAAQ,CAAC,GAAG,GAAG,GAAK,EAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,OAAO,aAAa,IAAI,GAAG,GAC1W,YAAY,EAAE,EAAE,CAAC,OAAO,OAAQ,QAAQ,MAAW,IAAG,QAAQ,EAAE,WAAlB,OAAgC,UAAU,MAAa,GAAE,UAAR,QAAqB,eAAgB,gBAAiB,WAAW,MAAM,WAAW,MAAM,IAAI,YAAY,EAAE,CAAC,SAAE,EAAE,OAAwB,MAAO,IAAlB,UAAqB,QAAS,GAAE,EAAE,KAAK,KAAK,GAAI,IAAG,GAAG,YAAY,EAAE,EAAE,CAAC,OAAO,OAAQ,iBAAiB,MAAO,IAAG,OAAQ,WAAW,MAAQ,GAAE,QAAP,GAAoB,KAAK,IAAG,GAAU,QAAQ,YAAY,MAAO,GAAE,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,MAAO,OAC7c,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,MAAyB,KAAnB,kBAAsB,CAAC,IAAI,GAAG,EAAE,GAAI,GAAE,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,OAAO,OAAQ,QAAQ,MAAO,UAAU,WAAW,GAAG,CAAE,GAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,OAAO,MAAO,GAAE,KAAK,GAAG,EAAE,MAAM,MAAO,QAAO,aAAa,EAAE,OAAO,MAAO,UAAU,iBAAiB,MAAO,KAAW,EAAE,SAAT,KAAgB,KAAK,EAAE,aAAa,MAAO,OAClY,GAAI,IAAG,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,UAAU,EAAE,SAAS,cAAc,MAAgB,KAAV,QAAY,CAAC,CAAC,GAAG,EAAE,MAAmB,IAAb,WAAqB,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,QAAS,GAAE,GAAI,IAAG,WAAW,SAAS,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,GAAI,IAAG,KAAK,GAAG,KAAK,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,GAAG,GAAG,MAAO,GACne,YAAY,EAAE,EAAE,CAAC,GAAc,IAAX,SAAa,MAAO,GAAE,GAAI,IAAG,GAAG,GAAG,EAAG,CAAC,GAAI,IAAG,GAAG,EAAG,CAAC,GAAI,IAAG,WAAY,UAAS,GAAG,CAAC,GAAG,CAAC,GAAI,IAAG,SAAS,cAAc,OAAO,GAAG,aAAa,UAAU,WAAW,GAAgB,MAAO,IAAG,SAAvB,WAA+B,GAAG,OAAQ,IAAG,GAAG,GAAG,IAAK,EAAC,SAAS,cAAc,EAAE,SAAS,cAAc,aAAa,CAAC,IAAK,IAAG,YAAY,mBAAmB,IAAI,GAAG,GAAG,MAAM,YAAY,EAAE,CAAC,GAAa,EAAE,eAAZ,SAA0B,GAAG,IAAI,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,IAC5b,YAAY,EAAE,EAAE,EAAE,CAAa,IAAZ,UAAe,MAAK,GAAG,EAAE,GAAG,EAAE,GAAG,YAAY,mBAAmB,KAAkB,IAAb,YAAgB,KAAK,YAAY,EAAE,CAAC,GAAuB,IAApB,mBAAiC,IAAV,SAAyB,IAAZ,UAAc,MAAO,IAAG,IAAI,YAAY,EAAE,EAAE,CAAC,GAAa,IAAV,QAAY,MAAO,IAAG,GAAG,YAAY,EAAE,EAAE,CAAC,GAAa,IAAV,SAAwB,IAAX,SAAa,MAAO,IAAG,GAAG,YAAY,EAAE,EAAE,CAAC,MAAO,KAAI,GAAI,CAAI,IAAJ,GAAO,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,IAAI,EAAE,GAAI,IAAgB,MAAO,QAAO,IAA3B,WAA8B,OAAO,GAAG,GACtZ,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,GAAG,GAAc,MAAO,IAAlB,UAA4B,IAAP,MAAqB,MAAO,IAAlB,UAA4B,IAAP,KAAS,MAAM,GAAG,GAAI,GAAE,OAAO,KAAK,GAAG,EAAE,OAAO,KAAK,GAAG,GAAG,EAAE,SAAS,EAAE,OAAO,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,GAAG,CAAC,EAAG,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,YAAY,EAAE,CAAC,KAAK,GAAG,EAAE,YAAY,EAAE,EAAE,WAAW,MAAO,GACrU,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,EAAE,OAAQ,GAAE,GAAG,CAAC,GAAO,EAAE,WAAN,EAAe,CAA0B,GAAzB,EAAE,EAAE,EAAE,YAAY,OAAU,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,IAAI,EAAE,GAAG,GAAO,EAAE,WAAN,EAAe,GAAG,GAAO,EAAE,WAAN,EAAe,GAAG,EAAE,EAAE,YAAY,YAAa,GAAE,EAAE,SAAS,GAAG,EAAE,wBAAwB,CAAC,CAAE,GAAE,wBAAwB,GAAG,IAAI,GAAG,GAC5Z,aAAa,CAAC,OAAQ,GAAE,OAAO,EAAE,KAAK,YAAa,GAAE,mBAAmB,CAAC,GAAG,CAAC,GAAI,GAAa,MAAO,GAAE,cAAc,SAAS,MAA3C,cAAgD,CAAS,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,kBAAmB,OAAM,EAAE,GAAG,EAAE,UAAU,MAAO,GAAE,WAAY,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,UAAU,EAAE,SAAS,cAAc,MAAO,IAAI,CAAU,IAAV,SAAc,CAAS,EAAE,OAAX,QAA4B,EAAE,OAAb,UAA2B,EAAE,OAAV,OAAwB,EAAE,OAAV,OAA6B,EAAE,OAAf,aAAmC,IAAb,YAAyB,EAAE,kBAAX,QAC7Y,YAAY,EAAE,CAAC,GAAI,GAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,eAAe,GAAG,IAAI,GAAG,GAAG,EAAE,eAAe,GAAG,EAAE,cAAc,gBAAgB,GAAG,CAAC,GAAU,IAAP,MAAU,EAAG,IAAG,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,IAAa,IAAT,QAAa,GAAE,GAAG,kBAAmB,GAAE,EAAE,eAAe,EAAE,EAAE,aAAa,KAAK,IAAI,EAAE,EAAE,MAAM,gBAAgB,EAAG,GAAE,EAAE,eAAe,WAAW,EAAE,aAAa,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,eAAe,GAAI,GAAE,EAAE,YAAY,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,GAAG,EAAW,EAAE,MAAX,OAAe,EAAE,KAAK,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAI,GAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAI,GAAE,GAAG,EACvf,GAAG,GAAG,GAAI,CAAI,EAAE,aAAN,GAAkB,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,SAAU,GAAE,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAG,GAAE,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAU,GAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,MAAU,IAAL,EAAE,GAAO,EAAE,EAAE,EAAE,EAAE,YAAgB,EAAE,WAAN,GAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,EAAE,YAAmD,IAA1B,MAAO,GAAE,OAAtB,YAA6B,EAAE,QAAY,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,WAAW,EAAE,KAAK,EAAE,QAAQ,UAAU,EAAE,KACrf,GAAI,IAAG,GAAI,gBAAiB,WAAU,IAAI,SAAS,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAC3F,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,SAAS,EAAE,EAAE,SAAa,EAAE,WAAN,EAAe,EAAE,EAAE,cAAc,IAAU,IAAN,MAAU,KAAK,GAAG,IAAK,GAAE,GAAG,kBAAmB,IAAG,EAAG,GAAG,EAAE,CAAC,MAAM,EAAE,eAAe,IAAI,EAAE,cAAe,GAAG,GAAE,eAAe,EAAE,cAAc,aAAa,QAAQ,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,aAAa,EAAE,aAAa,UAAU,EAAE,UAAU,YAAY,EAAE,cAAc,IAAI,GAAG,GAAG,IAAK,IAAG,EAAE,EAAE,GAAG,GAAG,YAAY,EAAE,EAAE,QAAS,GAAE,GAAI,IAAG,WAAW,SAAS,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,OAAO,MACjf,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,SAAE,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,GAAG,SAAS,EAAE,EAAE,MAAM,GAAG,MAAM,EAAS,EAAE,GAAI,IAAG,CAAC,aAAa,GAAG,YAAY,gBAAgB,mBAAmB,GAAG,YAAY,sBAAsB,eAAe,GAAG,YAAY,kBAAkB,cAAc,GAAG,aAAa,kBAAkB,GAAG,GAAG,GAAG,GACvU,GAAK,IAAG,SAAS,cAAc,OAAO,MAAM,kBAAmB,SAAS,OAAO,IAAG,aAAa,UAAU,MAAO,IAAG,mBAAmB,UAAU,MAAO,IAAG,eAAe,WAAW,mBAAoB,SAAQ,MAAO,IAAG,cAAc,YAAY,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,MAAO,IAAG,GAAG,GAAG,CAAC,GAAG,GAAG,MAAO,GAAE,GAAI,GAAE,GAAG,GAAG,EAAE,IAAI,IAAK,GAAE,GAAG,EAAE,eAAe,IAAI,IAAK,IAAG,MAAO,IAAG,GAAG,EAAE,GAAG,MAAO,GAAE,GAAI,IAAG,GAAG,gBAAgB,GAAG,GAAG,sBAAsB,GAAG,GAAG,kBAAkB,GAAG,GAAG,iBAAiB,GAAG,GAAI,KAAI,GAAG,smBAAsmB,MAAM,KAC/lC,YAAY,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAG,EAAE,CAAC,IAAI,OAAQ,IAAG,EAAE,GAAG,GAAG,OAAO,KAAK,CAAC,GAAI,IAAG,GAAG,IAAI,GAAG,GAAG,cAAc,GAAG,GAAG,GAAG,cAAc,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,kBAAkB,GAAG,GAAG,wBAAwB,GAAG,GAAG,oBAAoB,GAAG,WAAW,iBAAiB,GAAG,UAAU,WAAW,GAAG,WAAW,UAAU,GAAG,GAAG,mBAAmB,EAAG,eAAe,CAAC,WAAW,cAAc,EAAG,eAAe,CAAC,WAAW,cAAc,EAAG,iBAAiB,CAAC,aAAa,gBAC7c,EAAG,iBAAiB,CAAC,aAAa,gBAAgB,EAAG,WAAW,oEAAoE,MAAM,MAAM,EAAG,WAAW,uFAAuF,MAAM,MAAM,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAU,EAAG,mBAAmB,2DAA2D,MAAM,MAAM,EAAG,qBAAqB,6DAA6D,MAAM,MAC/f,EAAG,sBAAsB,8DAA8D,MAAM,MAAM,GAAI,IAAG,6NAA6N,MAAM,KAAK,GAAG,GAAI,KAAI,0CAA0C,MAAM,KAAK,OAAO,KACzZ,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,gBAAgB,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,cAAc,KACpG,YAAY,EAAE,EAAE,CAAC,EAAO,GAAE,KAAP,EAAU,OAAQ,GAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,GAAI,GAAE,OAAO,GAAG,EAAE,OAAQ,GAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAI,IAAE,EAAE,GAAG,GAAE,GAAE,SAAS,GAAE,GAAE,cAA2B,GAAb,GAAE,GAAE,SAAY,KAAI,GAAG,EAAE,uBAAuB,QAAQ,GAAG,EAAE,GAAE,IAAG,EAAE,OAAO,KAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAoD,GAAnD,GAAE,EAAE,GAAG,GAAE,GAAE,SAAS,GAAE,GAAE,cAAc,GAAE,GAAE,SAAY,KAAI,GAAG,EAAE,uBAAuB,QAAQ,GAAG,EAAE,GAAE,IAAG,EAAE,KAAI,GAAG,GAAG,KAAM,GAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAC1a,YAAW,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,IAAa,IAAT,QAAa,GAAE,EAAE,IAAI,GAAI,MAAK,GAAI,GAAE,EAAE,WAAW,EAAE,IAAI,IAAK,IAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,GAAI,IAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAI,IAAG,kBAAkB,KAAK,SAAS,SAAS,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAG,QAAQ,SAAS,EAAE,CAAqB,IAApB,mBAAwB,IAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,GAAI,GAAM,EAAE,WAAN,EAAe,EAAE,EAAE,cAAqB,IAAP,MAAU,EAAE,KAAM,GAAE,IAAI,GAAG,GAAG,kBAAkB,GAAG,KAC7a,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,QAAS,GAAE,GAAI,GAAE,GAAG,UAAW,GAAE,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,EAAE,KAAK,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAmB,IAAf,cAAgC,IAAd,aAA2B,IAAV,SAAc,GAAE,IAAI,EAAW,IAAT,OAAW,EAAE,iBAAiB,EAAE,EAAE,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,iBAAiB,EAAE,EAAE,IAAa,IAAT,OAAW,EAAE,iBAAiB,EAAE,EAAE,CAAC,QAAQ,IAAI,EAAE,iBAAiB,EAAE,EAAE,IAC/U,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,GAAQ,GAAE,KAAP,GAAgB,GAAE,KAAP,GAAkB,IAAP,KAAS,EAAE,OAAO,CAAC,GAAU,IAAP,KAAS,OAAO,GAAI,GAAE,EAAE,IAAI,GAAO,IAAJ,GAAW,IAAJ,EAAM,CAAC,GAAI,IAAE,EAAE,UAAU,cAAc,GAAG,KAAI,GAAO,GAAE,WAAN,GAAgB,GAAE,aAAa,EAAE,MAAM,GAAO,IAAJ,EAAM,IAAI,EAAE,EAAE,OAAc,IAAP,MAAU,CAAC,GAAI,IAAE,EAAE,IAAI,GAAG,CAAI,KAAJ,GAAW,KAAJ,IAAS,IAAE,EAAE,UAAU,cAAc,KAAI,GAAO,GAAE,WAAN,GAAgB,GAAE,aAAa,GAAE,OAAO,EAAE,EAAE,OAAO,KAAY,KAAP,MAAU,CAAS,GAAR,EAAE,GAAG,IAAa,IAAP,KAAS,OAAe,GAAR,GAAE,EAAE,IAAW,KAAJ,GAAW,KAAJ,EAAM,CAAC,EAAE,EAAE,EAAE,WAAW,GAAE,GAAE,YAAY,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC,GAAI,IAAE,EAAE,GAAE,GAAG,GAAG,GAAE,GACpf,EAAE,CAAC,GAAI,IAAE,GAAG,IAAI,GAAG,GAAY,KAAT,OAAW,CAAC,GAAI,IAAE,GAAG,GAAE,EAAE,OAAO,OAAQ,WAAW,GAAO,GAAG,KAAP,EAAU,YAAa,cAAe,QAAQ,GAAE,GAAG,UAAW,UAAU,GAAE,QAAQ,GAAE,GAAG,UAAW,WAAW,GAAE,OAAO,GAAE,GAAG,UAAW,iBAAkB,YAAY,GAAE,GAAG,UAAW,QAAQ,GAAO,EAAE,SAAN,EAAa,YAAa,eAAgB,eAAgB,gBAAiB,gBAAiB,cAAe,eAAgB,gBAAiB,cAAc,GAAE,GAAG,UAAW,WAAY,cAAe,gBAAiB,eAAgB,gBAAiB,eAAgB,gBAAiB,OAAO,GAC1iB,GAAG,UAAW,kBAAmB,eAAgB,gBAAiB,aAAa,GAAE,GAAG,UAAW,QAAQ,QAAQ,IAAG,GAAE,GAAG,UAAW,IAAG,GAAE,GAAG,UAAW,SAAS,GAAE,EAAG,UAAW,QAAQ,GAAE,GAAG,UAAW,WAAY,UAAW,QAAQ,GAAE,GAAG,UAAW,wBAAyB,yBAA0B,oBAAqB,kBAAmB,kBAAmB,iBAAkB,kBAAmB,YAAY,GAAE,GAAG,GAAI,IAAO,GAAE,KAAP,EAAU,GAAE,CAAC,IAAc,IAAX,SAAa,GAAE,GAAS,KAAP,KAAS,GAAE,UAAU,KAAK,GAAE,GAAE,GAAG,OAAQ,IAAE,GAAE,GAC7e,KAD+e,MAC5e,CAAC,GAAE,GAAE,GAAI,IAAE,GAAE,UAAsF,GAAxE,GAAE,MAAN,GAAkB,KAAP,MAAW,IAAE,GAAS,KAAP,MAAW,IAAE,GAAG,GAAE,IAAS,IAAN,MAAS,GAAE,KAAK,GAAG,GAAE,GAAE,OAAS,GAAE,MAAM,GAAE,GAAE,OAAO,EAAE,GAAE,QAAS,IAAE,GAAI,IAAE,GAAE,GAAE,KAAK,EAAE,IAAG,GAAE,KAAK,CAAC,MAAM,GAAE,UAAU,OAAM,GAAQ,GAAE,KAAP,EAAU,CAAC,EAAE,CAAyE,GAAxE,GAAgB,IAAd,aAAiC,IAAhB,cAAkB,GAAe,IAAb,YAA+B,IAAf,aAAoB,IAAG,IAAI,IAAK,IAAE,EAAE,eAAe,EAAE,cAAe,IAAG,KAAI,GAAE,KAAK,QAAQ,GAAG,KAAG,KAAG,IAAE,GAAE,SAAS,GAAE,GAAG,IAAE,GAAE,eAAe,GAAE,aAAa,GAAE,aAAa,OAAU,GAAM,IAAE,EAAE,eAAe,EAAE,UAAU,GAAE,GAAE,GAAE,GAAE,GAAG,IAAG,KAC1e,KAD+e,MAC3e,IAAE,GAAG,IAAG,KAAI,IAAO,GAAE,MAAN,GAAe,GAAE,MAAN,IAAW,IAAE,OAAU,IAAE,KAAK,GAAE,IAAK,KAAI,IAAE,CAAgU,GAA/T,GAAE,GAAG,GAAE,eAAe,GAAE,eAAe,GAAE,QAAW,CAAe,IAAf,cAAkC,IAAhB,gBAAkB,IAAE,GAAG,GAAE,iBAAiB,GAAE,iBAAiB,GAAE,WAAU,GAAQ,IAAN,KAAQ,GAAE,GAAG,IAAG,GAAQ,IAAN,KAAQ,GAAE,GAAG,IAAG,GAAE,GAAI,IAAE,GAAE,GAAE,QAAQ,GAAE,EAAE,IAAG,GAAE,OAAO,GAAE,GAAE,cAAc,GAAE,GAAE,KAAK,GAAG,MAAK,IAAI,IAAE,GAAI,IAAE,GAAE,GAAE,QAAQ,GAAE,EAAE,IAAG,GAAE,OAAO,GAAE,GAAE,cAAc,GAAE,GAAE,IAAG,GAAE,GAAK,IAAG,GAAE,EAAE,CAAa,IAAZ,GAAE,GAAE,GAAE,GAAE,GAAE,EAAM,GAAE,GAAE,GAAE,GAAE,GAAG,IAAG,KAAQ,IAAJ,GAAE,EAAM,GAAE,GAAE,GAAE,GAAE,GAAG,IAAG,KAAI,KAAK,EAAE,GAAE,IAAG,GAAE,GAAG,IAAG,KAAI,KAAK,EAAE,GAAE,IAAG,GACpf,GAAG,IAAG,KAAI,KAAK,MAAK,CAAC,GAAG,KAAI,IAAU,KAAP,MAAU,KAAI,GAAE,UAAU,QAAQ,GAAE,GAAG,IAAG,GAAE,GAAG,IAAG,GAAE,SAAU,IAAE,KAAY,KAAP,MAAU,GAAG,GAAE,GAAE,GAAE,GAAE,IAAW,KAAP,MAAiB,KAAP,MAAU,GAAG,GAAE,GAAE,GAAE,GAAE,KAAM,EAAE,CAAyD,GAAxD,GAAE,GAAE,GAAG,IAAG,OAAO,GAAE,GAAE,UAAU,GAAE,SAAS,cAA4B,KAAX,UAAwB,KAAV,SAAsB,GAAE,OAAX,OAAgB,GAAI,IAAG,WAAW,GAAG,IAAG,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,GAAI,IAAG,OAAQ,IAAE,GAAE,WAAqB,GAAE,gBAAZ,SAA4B,CAAa,GAAE,OAAf,YAA+B,GAAE,OAAZ,UAAoB,IAAG,IAAI,GAAG,IAAK,IAAG,GAAG,EAAE,KAAI,CAAC,GAAG,GAAE,GAAG,EAAE,IAAG,QAAQ,IAAI,GAAG,EAAE,GAAE,IAAgB,IAAb,YAAiB,IAAG,GAAE,gBAClf,GAAG,YAAuB,GAAE,OAAb,UAAmB,GAAG,GAAE,SAAS,GAAE,OAAyB,OAAlB,GAAG,GAAE,GAAG,IAAG,OAAc,OAAQ,UAAa,IAAG,KAAc,GAAG,kBAAZ,SAA4B,IAAG,GAAG,GAAG,GAAE,GAAG,MAAK,UAAW,WAAW,GAAG,GAAG,GAAG,KAAK,UAAW,YAAY,GAAG,GAAG,UAAW,kBAAmB,cAAe,UAAU,GAAG,GAAG,GAAG,GAAE,EAAE,IAAG,UAAW,kBAAkB,GAAG,GAAG,UAAW,cAAe,QAAQ,GAAG,GAAE,EAAE,IAAG,GAAI,IAAG,GAAG,GAAG,EAAE,CAAC,OAAO,OAAQ,mBAAmB,GAAI,IAAG,qBAAqB,YAAa,iBAAiB,GAAG,mBACpe,YAAa,oBAAoB,GAAG,sBAAsB,QAAQ,GAAG,WAAY,IAAG,GAAG,EAAE,IAAK,IAAG,oBAAgC,IAAZ,WAAqB,EAAE,UAAR,KAAkB,IAAG,sBAAsB,IAAK,KAAW,EAAE,SAAT,MAAkB,KAA2B,KAAvB,qBAA+C,KAArB,oBAAyB,IAAK,IAAG,MAAO,IAAG,GAAE,GAAG,SAAU,IAAG,GAAG,MAAM,GAAG,YAAY,GAAG,KAAK,GAAG,GAAG,GAAE,IAAI,EAAE,GAAG,QAAS,IAAG,GAAI,IAAG,GAAG,EAAE,KAAK,EAAE,IAAG,GAAE,KAAK,CAAC,MAAM,GAAG,UAAU,KAAK,GAAG,GAAG,KAAK,GAAI,IAAG,GAAG,GAAU,KAAP,MAAY,IAAG,KAAK,OAAU,IAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAAG,IAAE,GAAG,GAAE,iBAC3e,EAAE,GAAE,QAAS,IAAE,GAAI,IAAG,gBAAgB,cAAc,KAAK,EAAE,IAAG,GAAE,KAAK,CAAC,MAAM,GAAE,UAAU,KAAI,GAAE,KAAK,KAAI,GAAG,GAAE,KAAK,YAAY,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,GAAG,YAAY,EAAE,EAAE,CAAC,OAAQ,GAAE,EAAE,UAAU,EAAE,GAAU,IAAP,MAAU,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,UAAc,EAAE,MAAN,GAAkB,IAAP,MAAW,GAAE,EAAE,EAAE,GAAG,EAAE,GAAS,GAAN,MAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAS,GAAN,MAAS,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,MAAO,GAAE,YAAY,EAAE,CAAC,GAAU,IAAP,KAAS,MAAO,MAAK,EAAG,GAAE,EAAE,aAAa,GAAO,EAAE,MAAN,GAAW,MAAO,IAAI,KAC/c,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAQ,GAAE,EAAE,WAAW,EAAE,GAAU,IAAP,MAAU,IAAI,GAAG,CAAC,GAAI,IAAE,EAAE,GAAE,GAAE,UAAU,GAAE,GAAE,UAAU,GAAU,KAAP,MAAU,KAAI,EAAE,MAAU,GAAE,MAAN,GAAkB,KAAP,MAAW,IAAE,GAAE,EAAG,IAAE,GAAG,EAAE,GAAS,IAAN,MAAS,EAAE,QAAQ,GAAG,EAAE,GAAE,MAAK,GAAI,IAAE,GAAG,EAAE,GAAS,IAAN,MAAS,EAAE,KAAK,GAAG,EAAE,GAAE,OAAM,EAAE,EAAE,OAAW,EAAE,SAAN,GAAc,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,GAAI,IAAG,SAAS,GAAG,iBAAiB,YAAY,EAAE,CAAC,MAAO,CAAW,MAAO,IAAlB,SAAoB,EAAE,GAAG,GAAG,QAAQ,GAAG;AAAA,GAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,EAAE,EAAE,CAAS,GAAR,EAAE,GAAG,GAAM,GAAG,KAAK,GAAG,EAAE,KAAM,OAAM,EAAE,MAAO,aAAa,EAC7e,GAAI,IAAG,KAAK,GAAG,KAAK,YAAY,EAAE,EAAE,CAAC,MAAmB,KAAb,YAA6B,IAAb,YAA2B,MAAO,GAAE,UAApB,UAAyC,MAAO,GAAE,UAApB,UAAyC,MAAO,GAAE,yBAApB,UAAoD,EAAE,0BAAT,MAAwC,EAAE,wBAAwB,QAAhC,KACtN,GAAI,IAAgB,MAAO,aAApB,WAA+B,WAAW,OAAO,GAAgB,MAAO,eAApB,WAAiC,aAAa,OAAO,GAAgB,MAAO,UAApB,WAA4B,QAAQ,OAAO,GAAgB,MAAO,iBAApB,WAAmC,eAA6B,MAAO,KAArB,YAAwB,SAAS,EAAE,CAAC,MAAO,IAAG,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,WAAW,UAAU,CAAC,KAAM,KAChV,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAA6B,GAAjB,EAAE,YAAY,GAAM,GAAO,EAAE,WAAN,EAAe,GAAG,EAAE,EAAE,KAAY,IAAP,KAAS,CAAC,GAAO,IAAJ,EAAM,CAAC,EAAE,YAAY,GAAG,GAAG,GAAG,OAAO,QAAc,KAAN,KAAgB,IAAP,MAAiB,IAAP,MAAU,IAAI,EAAE,QAAQ,GAAG,GAAG,GAAG,YAAY,EAAE,CAAC,KAAW,GAAN,KAAQ,EAAE,EAAE,YAAY,CAAC,GAAI,GAAE,EAAE,SAAS,GAAO,IAAJ,GAAW,IAAJ,EAAM,MAAM,GAAO,IAAJ,EAAM,CAAU,GAAT,EAAE,EAAE,KAAc,IAAN,KAAgB,IAAP,MAAiB,IAAP,KAAS,MAAM,GAAU,IAAP,KAAS,MAAO,OAAM,MAAO,GAChY,YAAY,EAAE,CAAC,EAAE,EAAE,gBAAgB,OAAQ,GAAE,EAAE,GAAG,CAAC,GAAO,EAAE,WAAN,EAAe,CAAC,GAAI,GAAE,EAAE,KAAK,GAAS,IAAN,KAAgB,IAAP,MAAiB,IAAP,KAAS,CAAC,GAAO,IAAJ,EAAM,MAAO,GAAE,QAAe,KAAP,MAAU,IAAI,EAAE,EAAE,gBAAgB,MAAO,MAAK,GAAI,IAAG,KAAK,SAAS,SAAS,IAAI,MAAM,GAAG,GAAG,gBAAgB,GAAG,GAAG,gBAAgB,GAAG,GAAG,oBAAoB,GAAG,GAAG,iBAAiB,GAAG,GAAG,oBAAoB,GAAG,GAAG,kBAAkB,GAClX,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,IAAI,GAAG,EAAE,MAAO,GAAE,OAAQ,GAAE,EAAE,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAe,GAAd,EAAE,EAAE,UAAoB,EAAE,QAAT,MAAuB,IAAP,MAAiB,EAAE,QAAT,KAAe,IAAI,EAAE,GAAG,GAAU,IAAP,MAAU,CAAC,GAAG,EAAE,EAAE,IAAI,MAAO,GAAE,EAAE,GAAG,GAAG,MAAO,GAAE,EAAE,EAAE,EAAE,EAAE,WAAW,MAAO,MAAK,YAAY,EAAE,CAAC,SAAE,EAAE,KAAK,EAAE,IAAU,CAAC,GAAO,EAAE,MAAN,GAAe,EAAE,MAAN,GAAgB,EAAE,MAAP,IAAgB,EAAE,MAAN,EAAU,KAAK,EAAE,YAAY,EAAE,CAAC,GAAO,EAAE,MAAN,GAAe,EAAE,MAAN,EAAU,MAAO,GAAE,UAAU,KAAM,OAAM,EAAE,KAAM,YAAY,EAAE,CAAC,MAAO,GAAE,KAAK,KAAK,GAAI,IAAG,GAAG,GAAG,GAAG,WAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,GACre,WAAW,EAAE,CAAC,EAAE,IAAK,GAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,KAAK,MAAM,WAAW,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAI,GAAG,GAAG,EAAE,EAAG,GAAI,EAAG,EAAG,IAAI,EAAG,EAAG,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,KAAK,aAAa,GAAG,CAAC,EAAE,MAAO,GAAG,GAAI,GAAE,EAAE,UAAU,GAAG,GAAG,EAAE,8CAA8C,EAAE,MAAO,GAAE,0CAA0C,GAAI,GAAE,GAAG,EAAE,IAAI,IAAK,GAAE,EAAE,GAAG,EAAE,GAAG,UAAI,GAAE,EAAE,UAAU,EAAE,4CAA4C,EAAE,EAAE,0CAA0C,GAAU,EAC7d,YAAY,EAAE,CAAC,SAAE,EAAE,kBAAgC,GAAP,KAAqB,aAAa,CAAC,EAAE,GAAI,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,EAAG,KAAM,OAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAG,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAgC,GAAtB,EAAE,EAAE,kBAAkC,MAAO,GAAE,iBAAtB,WAAsC,MAAO,GAAE,EAAE,EAAE,kBAAkB,OAAQ,KAAK,GAAE,GAAG,CAAE,KAAK,IAAG,KAAM,OAAM,EAAE,IAAI,GAAG,IAAI,UAAU,IAAI,MAAO,IAAE,GAAG,EAAE,GACtX,YAAY,EAAE,CAAC,SAAG,GAAE,EAAE,YAAY,EAAE,2CAA2C,EAAG,EAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAG,EAAG,SAAe,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,GAAG,CAAC,EAAE,KAAM,OAAM,EAAE,MAAM,EAAG,GAAE,GAAG,EAAE,EAAE,GAAI,EAAE,0CAA0C,EAAE,EAAE,GAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAI,EAAE,EAAG,GAAG,GAAI,IAAG,KAAK,GAAG,GAAG,GAAG,GAAG,YAAY,EAAE,CAAQ,KAAP,KAAU,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,GACzX,aAAa,CAAC,GAAG,CAAC,IAAW,KAAP,KAAU,CAAC,GAAG,GAAG,GAAI,GAAE,EAAE,EAAE,GAAE,GAAG,CAAC,GAAI,GAAE,GAAG,IAAI,GAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,EAAG,GAAE,EAAE,UAAiB,IAAP,MAAU,GAAG,KAAK,GAAG,SAAS,EAAN,CAAS,KAAa,MAAP,MAAY,IAAG,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,IAAI,SAAG,CAAQ,GAAE,EAAE,GAAG,IAAI,MAAO,MAAK,GAAI,IAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,GAAG,YAAY,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,GAAG,EAChV,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,GAAI,GAAE,GAAG,EAAE,GAAG,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,IAAG,GAAG,GAAG,EAAE,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,EAAG,GAAG,IAAG,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAO,IAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,CAAQ,EAAE,SAAT,MAAkB,IAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,IAAI,GAAG,IAAI,KAAK,GAAI,IAAG,KAAK,GAAG,KAAK,GAAE,GAAG,GAAG,KACje,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,YAAY,UAAU,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAiB,IAAP,KAAU,GAAE,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,KAAK,GACtJ,YAAY,EAAE,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,GAAI,GAAE,EAAE,KAAK,SAAM,EAAE,WAAN,GAAgB,EAAE,gBAAgB,EAAE,SAAS,cAAc,KAAK,EAAgB,IAAP,KAAU,GAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,YAAY,IAAI,OAAQ,GAAE,MAAO,GAAO,EAAE,eAAP,IAAyB,EAAE,WAAN,EAAe,KAAK,EAAS,IAAP,KAAU,GAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,OAAQ,IAAG,MAAO,GAAM,EAAE,WAAN,EAAe,KAAK,EAAS,IAAP,KAAU,GAAS,KAAP,KAAU,CAAC,GAAG,GAAG,SAAS,IAAI,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,YAAY,EAAE,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAClf,KAAK,IAAI,WAAW,MAAM,IAAI,YAAY,EAAE,CAAC,MAAY,GAAE,KAAK,KAAZ,GAAqB,GAAE,MAAM,OAAb,EAAkB,YAAY,EAAE,CAAC,GAAG,GAAE,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,CAAC,GAAI,GAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAI,GAAE,MAAM,EAAE,MAAM,MAAM,EAAE,GAAE,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM,EAAE,GAAE,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,OAAc,IAAP,MAAc,EAAE,MAAN,GAAe,EAAE,MAAN,GAAgB,EAAE,MAAP,IAAY,EAAE,EAAE,OAAO,GAAG,EAC/Z,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,GAAE,MAAO,IAAG,GAAG,GAAE,GAAG,GAAG,GAAI,GAAkG,GAA/F,GAAM,EAAE,MAAN,IAAY,CAAE,GAAM,EAAE,MAAN,IAAa,GAAE,EAAE,KAAK,EAAW,IAAT,QAAqB,IAAT,QAAY,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAmB,GAAI,GAAE,IAAI,CAAC,GAAG,GAAG,GAAG,KAAM,MAAK,MAAM,EAAE,MAAM,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAmB,GAAN,GAAG,GAAW,EAAE,MAAP,GAAW,CAAgD,GAA/C,EAAE,EAAE,cAAc,EAAS,IAAP,KAAS,EAAE,WAAW,KAAQ,CAAC,EAAE,KAAM,OAAM,EAAE,MAAM,EAAE,CAAiB,IAAhB,EAAE,EAAE,YAAgB,EAAE,EAAE,GAAG,CAAC,GAAO,EAAE,WAAN,EAAe,CAAC,GAAI,GAAE,EAAE,KAAK,GAAU,IAAP,KAAS,CAAC,GAAO,IAAJ,EAAM,CAAC,GAAG,GAAG,EAAE,aAAa,QAAQ,QAAc,KAAN,KAAgB,IAAP,MAAiB,IAAP,MAAU,IAAI,EAAE,EAAE,YAAY,GACjgB,UAAW,IAAG,GAAG,GAAG,EAAE,UAAU,aAAa,KAAK,MAAM,GAAG,aAAa,CAAC,OAAQ,GAAE,GAAG,GAAG,EAAE,GAAG,EAAE,aAAa,aAAa,CAAC,GAAG,GAAG,KAAK,GAAE,GAAG,YAAY,EAAE,CAAQ,KAAP,KAAU,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,GAAI,IAAG,GAAG,wBAAwB,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,aAAa,CAAC,EAAE,GAAE,GAAG,GAAG,EAAE,EAAE,aAAa,OAAQ,KAAK,GAAW,EAAE,KAAX,QAAgB,GAAE,GAAG,EAAE,IAAI,MAAO,GAAE,MAAO,GAAE,GAAI,IAAG,EAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,aAAa,CAAC,GAAG,GAAG,GAAG,KAAK,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,cAAc,EAChd,YAAY,EAAE,EAAE,EAAE,CAAC,KAAY,IAAP,MAAU,CAAC,GAAI,GAAE,EAAE,UAA+H,GAApH,GAAE,WAAW,KAAK,EAAG,GAAE,YAAY,EAAS,IAAP,MAAW,GAAE,YAAY,IAAW,IAAP,MAAW,GAAE,WAAW,KAAK,GAAI,GAAE,YAAY,GAAM,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE,aAAoB,IAAP,MAAiB,EAAE,eAAT,MAAwB,CAAK,GAAE,MAAM,KAAb,GAAkB,IAAG,IAAI,EAAE,aAAa,MACjU,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,MAAa,KAAP,KAAU,CAAC,GAAU,KAAP,KAAU,KAAM,OAAM,EAAE,MAAM,GAAG,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,OAAQ,IAAG,GAAG,KAAK,EAAE,MAAO,GAAE,GAAI,IAAG,KAAK,YAAY,EAAE,CAAQ,KAAP,KAAU,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,MAAO,KAAP,KAAU,GAAE,KAAK,EAAE,GAAG,IAAK,GAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,YAAY,EAAS,GAAG,EAAE,GAC9X,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAI,GAAE,EAAE,UAAqC,IAApB,IAAP,MAAW,GAAE,OAAO,GAAG,EAAE,EAAM,EAAE,EAAE,OAAc,IAAP,MAAU,EAAE,YAAY,EAAE,EAAE,EAAE,UAAiB,IAAP,MAAW,GAAE,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,MAAW,GAAE,MAAN,EAAU,EAAE,UAAU,KAAK,GAAI,IAAG,GAAG,YAAY,EAAE,CAAC,EAAE,YAAY,CAAC,UAAU,EAAE,cAAc,gBAAgB,KAAK,eAAe,KAAK,OAAO,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,GAAG,QAAQ,MAC/W,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,cAAc,GAAI,GAAE,YAAY,CAAC,UAAU,EAAE,UAAU,gBAAgB,EAAE,gBAAgB,eAAe,EAAE,eAAe,OAAO,EAAE,OAAO,QAAQ,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,KAAK,SAAS,KAAK,KAAK,MACjR,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,GAAU,IAAP,KAAS,MAAO,MAAgB,GAAX,EAAE,EAAE,OAAe,IAAE,KAAP,EAAU,CAAC,GAAI,GAAE,EAAE,QAAQ,MAAO,KAAP,KAAS,EAAE,KAAK,EAAG,GAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,QAAQ,EAAS,GAAG,EAAE,GAAG,SAAE,EAAE,YAAmB,IAAP,KAAU,GAAE,KAAK,EAAE,GAAG,IAAK,GAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,YAAY,EAAS,GAAG,EAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAiB,GAAhB,EAAE,EAAE,YAAsB,IAAP,MAAW,GAAE,EAAE,OAAY,GAAE,WAAP,GAAiB,CAAC,GAAI,GAAE,EAAE,MAAM,GAAG,EAAE,aAAa,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAClZ,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,EAAE,EAAE,UAAU,GAAU,IAAP,MAAW,GAAE,EAAE,YAAY,IAAI,GAAG,CAAC,GAAI,GAAE,KAAK,EAAE,KAAyB,GAApB,EAAE,EAAE,gBAA0B,IAAP,KAAS,CAAC,EAAE,CAAC,GAAI,GAAE,CAAC,UAAU,EAAE,UAAU,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI,QAAQ,EAAE,QAAQ,SAAS,EAAE,SAAS,KAAK,MAAa,IAAP,KAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAkB,IAAP,MAAiB,IAAP,KAAS,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,MAAO,GAAE,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,eAAsB,IAAP,KAAS,EAAE,gBAAgB,EAAE,EAAE,KACnf,EAAE,EAAE,eAAe,EACnB,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,GAAG,GAAG,GAAI,GAAE,EAAE,gBAAgB,EAAE,EAAE,eAAe,GAAE,EAAE,OAAO,QAAQ,GAAU,KAAP,KAAS,CAAC,EAAE,OAAO,QAAQ,KAAK,GAAI,IAAE,GAAE,GAAE,GAAE,KAAK,GAAE,KAAK,KAAY,IAAP,KAAS,EAAE,GAAE,EAAE,KAAK,GAAE,EAAE,GAAE,GAAI,IAAE,EAAE,UAAiB,KAAP,MAAW,IAAE,GAAE,YAAY,GAAE,GAAE,eAAe,KAAI,GAAI,CAAO,KAAP,KAAS,GAAE,gBAAgB,GAAE,GAAE,KAAK,GAAE,GAAE,eAAe,KAAI,GAAU,IAAP,KAAS,CAAC,GAAI,IAAE,EAAE,UAAU,EAAE,EAAE,GAAE,GAAE,GAAE,KAAK,GAAE,EAAE,EAAE,CAAC,GAAI,IAAE,GAAE,KAAK,GAAE,GAAE,UAAU,GAAI,GAAE,MAAK,GAAE,CAAQ,KAAP,MAAW,IAAE,GAAE,KAAK,CAAC,UAAU,GAAE,KAAK,EAAE,IAAI,GAAE,IAAI,QAAQ,GAAE,QAAQ,SAAS,GAAE,SACvf,KAAK,OAAO,EAAE,CAAC,GAAI,IAAE,EAAE,GAAE,GAAU,OAAR,GAAE,EAAE,GAAE,EAAS,GAAE,SAAU,GAAc,GAAZ,GAAE,GAAE,QAAwB,MAAO,KAApB,WAAsB,CAAC,GAAE,GAAE,KAAK,GAAE,GAAE,IAAG,QAAQ,GAAE,GAAE,YAAa,GAAE,GAAE,MAAM,GAAE,MAAM,OAAO,QAAS,GAAsD,GAApD,GAAE,GAAE,QAAQ,GAAe,MAAO,KAApB,WAAsB,GAAE,KAAK,GAAE,GAAE,IAAG,GAAY,IAAP,KAAqB,QAAQ,GAAE,GAAE,GAAG,GAAE,IAAG,YAAa,GAAE,GAAG,IAAW,GAAE,WAAT,MAAuB,GAAE,OAAN,GAAa,GAAE,OAAO,GAAG,GAAE,EAAE,QAAe,KAAP,KAAS,EAAE,QAAQ,CAAC,IAAG,GAAE,KAAK,SAAS,IAAE,CAAC,UAAU,GAAE,KAAK,GAAE,IAAI,GAAE,IAAI,QAAQ,GAAE,QAAQ,SAAS,GAAE,SAAS,KAAK,MAAa,KAAP,KAAU,IAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAK,GAAE,GAAG,GAC3e,GAAT,GAAE,GAAE,KAAe,KAAP,KAAS,IAAG,GAAE,EAAE,OAAO,QAAe,KAAP,KAAS,MAAW,GAAE,GAAE,GAAE,GAAE,KAAK,GAAE,KAAK,KAAK,EAAE,eAAe,GAAE,EAAE,OAAO,QAAQ,YAAW,GAA+F,GAArF,KAAP,MAAW,IAAE,IAAG,EAAE,UAAU,GAAE,EAAE,gBAAgB,GAAE,EAAE,eAAe,GAAE,EAAE,EAAE,OAAO,YAAsB,IAAP,KAAS,CAAC,EAAE,EAAE,EAAG,IAAG,EAAE,KAAK,EAAE,EAAE,WAAW,IAAI,OAAe,KAAP,MAAW,GAAE,OAAO,MAAM,GAAG,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,cAAc,IAC5V,YAAY,EAAE,EAAE,EAAE,CAA4B,GAA3B,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAe,IAAP,KAAS,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,EAAE,EAAE,SAAS,GAAU,IAAP,KAAS,CAAqB,GAApB,EAAE,SAAS,KAAK,EAAE,EAAkB,MAAO,IAApB,WAAsB,KAAM,OAAM,EAAE,IAAI,IAAI,EAAE,KAAK,KAAK,GAAI,IAAI,GAAI,GAAG,YAAW,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,EAAS,GAAP,KAAqB,EAAE,GAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAM,EAAE,QAAN,GAAc,GAAE,YAAY,UAAU,GAChX,GAAI,IAAG,CAAC,UAAU,SAAS,EAAE,CAAC,MAAO,GAAE,EAAE,iBAAiB,GAAG,KAAK,EAAE,IAAI,gBAAgB,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,GAAI,GAAE,KAAI,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAqB,GAAP,MAAW,GAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAU,IAAP,MAAW,IAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,oBAAoB,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,GAAI,GAAE,KAAI,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAqB,GAAP,MAAW,GAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAU,IAAP,MAAW,IAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,mBAAmB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,GAAI,GAAE,KAAI,EACnf,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAqB,GAAP,MAAW,GAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAU,IAAP,MAAW,IAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,MAAM,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAE,EAAE,UAA6B,MAAO,GAAE,uBAAtB,WAA4C,EAAE,sBAAsB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GACxS,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,EAAO,EAAE,EAAE,YAAY,MAAW,OAAO,IAAlB,UAA4B,IAAP,KAAS,EAAE,GAAG,GAAI,GAAE,GAAG,GAAG,EAAG,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAG,GAAS,GAAP,MAAsB,GAAG,EAAE,GAAG,GAAI,EAAE,GAAI,GAAE,EAAE,GAAG,EAAE,cAAqB,EAAE,QAAT,MAAyB,EAAE,QAAX,OAAiB,EAAE,MAAM,KAAK,EAAE,QAAQ,GAAG,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,GAAI,GAAE,EAAE,UAAU,EAAE,4CAA4C,EAAE,EAAE,0CAA0C,GAAU,EAC3Z,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAmB,MAAO,GAAE,2BAAtB,YAAiD,EAAE,0BAA0B,EAAE,GAAgB,MAAO,GAAE,kCAAtB,YAAwD,EAAE,iCAAiC,EAAE,GAAG,EAAE,QAAQ,GAAG,GAAG,oBAAoB,EAAE,EAAE,MAAM,MAC/P,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,GAAG,GAAG,GAAG,GAAI,GAAE,EAAE,YAAuB,MAAO,IAAlB,UAA4B,IAAP,KAAS,EAAE,QAAQ,GAAG,GAAI,GAAE,GAAG,GAAG,EAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,yBAAsC,MAAO,IAApB,YAAwB,IAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,eAA4B,MAAO,GAAE,0BAAtB,YAA6D,MAAO,GAAE,yBAAtB,YAA4D,MAAO,GAAE,2BAAtB,YAA8D,MAAO,GAAE,oBAAtB,YAA2C,GAAE,EAAE,MACxe,MAAO,GAAE,oBAAtB,YAA0C,EAAE,qBAAkC,MAAO,GAAE,2BAAtB,YAAiD,EAAE,4BAA4B,IAAI,EAAE,OAAO,GAAG,oBAAoB,EAAE,EAAE,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,eAA4B,MAAO,GAAE,mBAAtB,YAA0C,GAAE,OAAO,SAC5R,YAAY,EAAE,EAAE,EAAE,CAAS,GAAR,EAAE,EAAE,IAAc,IAAP,MAAuB,MAAO,IAApB,YAAkC,MAAO,IAAlB,SAAoB,CAAC,GAAG,EAAE,OAAO,CAAY,GAAX,EAAE,EAAE,OAAU,EAAE,CAAC,GAAO,EAAE,MAAN,EAAU,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,EAAE,UAAU,GAAG,CAAC,EAAE,KAAM,OAAM,EAAE,IAAI,IAAI,GAAI,GAAE,EAAE,EAAE,GAAG,EAAE,MAAU,KAAP,MAAiB,EAAE,MAAT,MAA2B,MAAO,GAAE,KAAtB,YAA2B,EAAE,IAAI,aAAa,EAAS,EAAE,IAAI,GAAE,SAAS,EAAE,CAAC,GAAI,IAAE,EAAE,KAAK,KAAI,IAAK,IAAE,EAAE,KAAK,IAAW,IAAP,KAAS,MAAO,IAAE,GAAG,GAAE,GAAG,GAAG,EAAE,WAAW,EAAS,GAAE,GAAc,MAAO,IAAlB,SAAoB,KAAM,OAAM,EAAE,MAAM,GAAG,CAAC,EAAE,OAAO,KAAM,OAAM,EAAE,IAAI,IAAK,MAAO,GACpe,YAAY,EAAE,EAAE,CAAC,QAAE,OAAO,UAAU,SAAS,KAAK,GAAS,MAAM,EAAE,GAAuB,IAApB,kBAAsB,qBAAqB,OAAO,KAAK,GAAG,KAAK,MAAM,IAAI,IAAK,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,MAAO,GAAE,EAAE,UAC5L,YAAY,EAAE,CAAC,WAAW,GAAE,GAAE,CAAC,GAAG,EAAE,CAAC,GAAI,IAAE,GAAE,UAAiB,KAAP,KAAU,IAAE,UAAU,CAAC,IAAG,GAAE,OAAO,IAAI,GAAE,KAAK,KAAI,WAAW,GAAE,GAAE,CAAC,GAAG,CAAC,EAAE,MAAO,MAAK,KAAY,KAAP,MAAU,EAAE,GAAE,IAAG,GAAE,GAAE,QAAQ,MAAO,MAAK,WAAW,GAAE,GAAE,CAAC,IAAI,GAAE,GAAI,KAAW,KAAP,MAAiB,GAAE,MAAT,KAAa,GAAE,IAAI,GAAE,IAAI,IAAG,GAAE,IAAI,GAAE,MAAM,IAAG,GAAE,GAAE,QAAQ,MAAO,IAAE,WAAW,GAAE,GAAE,CAAC,UAAE,GAAG,GAAE,IAAG,GAAE,MAAM,EAAE,GAAE,QAAQ,KAAY,GAAE,WAAW,GAAE,GAAE,GAAE,CAAW,MAAV,IAAE,MAAM,GAAM,EAA4B,IAAE,GAAE,UAAoB,KAAP,KAAgB,IAAE,GAAE,MAAM,GAAE,GAAG,IAAE,OAAO,EAAE,IAAG,IAAE,IAAE,OAAO,EAAS,KAArG,IAAE,OAAO,QAAQ,IAAsF,WAAW,GAAE,CAAC,UACtf,GAAE,YAAT,MAAqB,IAAE,OAAO,GAAU,GAAE,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,MAAU,MAAP,MAAc,GAAE,MAAN,EAAiB,IAAE,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,IAAE,IAAE,EAAE,GAAE,IAAG,GAAE,OAAO,GAAS,IAAE,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,KAAK,MAAG,MAAI,GAAU,GAAE,GAAE,GAAE,GAAE,MAAM,SAAS,GAAE,GAAE,KAAe,KAAP,MAAW,IAAE,cAAc,IAAc,MAAO,KAAlB,UAA4B,KAAP,MAAU,GAAE,WAAW,IAAI,GAAG,MAAK,GAAE,MAAa,IAAE,EAAE,GAAE,GAAE,OAAO,GAAE,IAAI,GAAG,GAAE,GAAE,IAAG,GAAE,OAAO,GAAE,IAAE,IAAE,GAAG,GAAE,KAAK,GAAE,IAAI,GAAE,MAAM,KAAK,GAAE,KAAK,IAAG,GAAE,IAAI,GAAG,GAAE,GAAE,IAAG,GAAE,OAAO,GAAS,IAAE,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,MAAU,MAAP,MAAc,GAAE,MAAN,GAC3e,GAAE,UAAU,gBAAgB,GAAE,eAAe,GAAE,UAAU,iBAAiB,GAAE,eAAsB,IAAE,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,IAAE,IAAE,EAAE,GAAE,GAAE,UAAU,IAAI,GAAE,OAAO,GAAS,IAAE,YAAW,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,MAAU,MAAP,MAAc,GAAE,MAAN,EAAiB,IAAE,GAAG,GAAE,GAAE,KAAK,GAAE,IAAG,GAAE,OAAO,GAAE,IAAE,IAAE,EAAE,GAAE,IAAG,GAAE,OAAO,GAAS,IAAE,YAAW,GAAE,GAAE,GAAE,CAAC,GAAc,MAAO,KAAlB,UAA0B,KAAL,IAAmB,MAAO,KAAlB,SAAoB,MAAO,IAAE,GAAG,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,GAAE,GAAc,MAAO,KAAlB,UAA4B,KAAP,KAAS,CAAC,OAAO,GAAE,cAAe,IAAG,MAAO,IAAE,GAAG,GAAE,KAAK,GAAE,IAAI,GAAE,MAAM,KAAK,GAAE,KAAK,IACnf,GAAE,IAAI,GAAG,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,OAAO,IAAG,MAAO,IAAE,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,OAAO,IAAG,GAAI,IAAE,GAAE,MAAM,MAAO,IAAE,GAAE,GAAE,GAAE,UAAU,IAAG,GAAG,GAAG,KAAI,GAAG,IAAG,MAAO,IAAE,GAAG,GAAE,GAAE,KAAK,GAAE,MAAM,GAAE,OAAO,GAAE,GAAE,GAAG,GAAE,IAAG,MAAO,MAAK,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,GAAI,IAAS,KAAP,KAAS,GAAE,IAAI,KAAK,GAAc,MAAO,KAAlB,UAA0B,KAAL,IAAmB,MAAO,KAAlB,SAAoB,MAAc,MAAP,KAAS,KAAK,GAAE,GAAE,GAAE,GAAG,GAAE,IAAG,GAAc,MAAO,KAAlB,UAA4B,KAAP,KAAS,CAAC,OAAO,GAAE,cAAe,IAAG,MAAO,IAAE,MAAM,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,SAAU,IAAG,MAAO,IAAE,MAAM,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,SAAU,IAAG,MAAO,IAAE,GAAE,MAAM,GAAE,GACpf,GAAE,GAAE,GAAE,UAAU,IAAG,GAAG,GAAG,KAAI,GAAG,IAAG,MAAc,MAAP,KAAS,KAAK,GAAE,GAAE,GAAE,GAAE,GAAE,MAAM,GAAG,GAAE,IAAG,MAAO,MAAK,YAAW,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAc,MAAO,KAAlB,UAA0B,KAAL,IAAmB,MAAO,KAAlB,SAAoB,MAAO,IAAE,GAAE,IAAI,KAAI,KAAK,GAAE,GAAE,GAAE,GAAG,GAAE,IAAG,GAAc,MAAO,KAAlB,UAA4B,KAAP,KAAS,CAAC,OAAO,GAAE,cAAe,IAAG,MAAO,IAAE,GAAE,IAAW,GAAE,MAAT,KAAa,GAAE,GAAE,MAAM,KAAK,GAAE,GAAE,GAAE,GAAE,QAAQ,IAAG,MAAO,IAAE,GAAE,IAAW,GAAE,MAAT,KAAa,GAAE,GAAE,MAAM,KAAK,GAAE,GAAE,GAAE,GAAE,QAAQ,IAAG,GAAI,IAAE,GAAE,MAAM,MAAO,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,UAAU,IAAG,GAAG,GAAG,KAAI,GAAG,IAAG,MAAO,IAAE,GAAE,IAAI,KAAI,KAAK,GAAE,GAAE,GAAE,GAAE,GAAE,MAAM,GAAG,GAAE,IAAG,MAAO,MAC1f,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,OAAQ,IAAE,KAAK,GAAE,KAAK,GAAE,GAAE,GAAE,GAAE,EAAE,GAAE,KAAY,KAAP,MAAU,GAAE,GAAE,OAAO,KAAI,CAAC,GAAE,MAAM,GAAG,IAAE,GAAE,GAAE,MAAM,GAAE,GAAE,QAAQ,GAAI,IAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAU,KAAP,KAAS,CAAQ,KAAP,MAAW,IAAE,IAAG,MAAM,GAAG,IAAU,GAAE,YAAT,MAAoB,EAAE,GAAE,IAAG,GAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,GAAE,GAAE,GAAE,GAAG,KAAI,GAAE,OAAO,MAAO,GAAE,GAAE,IAAG,IAAG,GAAG,GAAE,IAAG,GAAE,GAAU,KAAP,KAAS,CAAC,KAAK,GAAE,GAAE,OAAO,KAAI,GAAE,GAAE,GAAE,GAAE,IAAG,IAAU,KAAP,MAAW,IAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,IAAG,WAAG,GAAG,GAAE,IAAU,GAAE,IAAI,GAAE,EAAE,GAAE,IAAG,GAAE,GAAE,OAAO,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,IAAU,KAAP,MAAW,IAAU,GAAE,YAAT,MAAoB,GAAE,OAChf,GAAE,MADqf,KACjf,GAAE,GAAE,KAAK,GAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,IAAG,UAAG,GAAE,QAAQ,SAAS,GAAE,CAAC,MAAO,GAAE,GAAE,MAAK,IAAG,GAAG,GAAE,IAAU,GAAE,YAAW,GAAE,GAAE,GAAE,GAAE,CAAC,GAAI,IAAE,GAAG,IAAG,GAAgB,MAAO,KAApB,WAAsB,KAAM,OAAM,EAAE,MAAkB,GAAZ,GAAE,GAAE,KAAK,IAAY,IAAN,KAAQ,KAAM,OAAM,EAAE,MAAM,OAAQ,IAAE,GAAE,KAAK,GAAE,GAAE,GAAE,GAAE,EAAE,GAAE,KAAK,GAAE,GAAE,OAAc,KAAP,MAAU,CAAC,GAAE,KAAK,KAAI,GAAE,GAAE,OAAO,CAAC,GAAE,MAAM,GAAG,IAAE,GAAE,GAAE,MAAM,GAAE,GAAE,QAAQ,GAAI,IAAE,GAAE,GAAE,GAAE,GAAE,MAAM,IAAG,GAAU,KAAP,KAAS,CAAQ,KAAP,MAAW,IAAE,IAAG,MAAM,GAAG,IAAU,GAAE,YAAT,MAAoB,EAAE,GAAE,IAAG,GAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,GAAE,GAAE,GAAE,GAAG,GAAE,KAAK,MAAO,GAAE,GACzf,IAAG,IAAG,GAAG,GAAE,IAAG,GAAE,GAAU,KAAP,KAAS,CAAC,KAAK,CAAC,GAAE,KAAK,KAAI,GAAE,GAAE,OAAO,GAAE,GAAE,GAAE,GAAE,MAAM,IAAU,KAAP,MAAW,IAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,IAAG,WAAG,GAAG,GAAE,IAAU,GAAE,IAAI,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,KAAK,KAAI,GAAE,GAAE,OAAO,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAM,IAAU,KAAP,MAAW,IAAU,GAAE,YAAT,MAAoB,GAAE,OAAc,GAAE,MAAT,KAAa,GAAE,GAAE,KAAK,GAAE,EAAE,GAAE,GAAE,IAAU,KAAP,KAAS,GAAE,GAAE,GAAE,QAAQ,GAAE,GAAE,IAAG,UAAG,GAAE,QAAQ,SAAS,GAAE,CAAC,MAAO,GAAE,GAAE,MAAK,IAAG,GAAG,GAAE,IAAU,GAAE,YAAW,GAAE,GAAE,GAAE,GAAE,CAAgF,GAApE,MAAO,KAAlB,UAA4B,KAAP,MAAU,GAAE,OAAO,IAAW,GAAE,MAAT,MAAe,IAAE,GAAE,MAAM,UAAwB,MAAO,KAAlB,UAA4B,KAAP,KAAS,CAAC,OAAO,GAAE,cAAe,IAAG,EAAE,CAAC,OAAQ,IAC7hB,GAAE,IAAI,GAAE,GAAS,KAAP,MAAU,CAAC,GAAG,GAAE,MAAM,GAAE,CAAU,GAAT,GAAE,GAAE,KAAQ,KAAI,IAAI,GAAO,GAAE,MAAN,EAAU,CAAC,EAAE,GAAE,GAAE,SAAS,GAAE,EAAE,GAAE,GAAE,MAAM,UAAU,GAAE,OAAO,GAAE,GAAE,GAAE,iBAAiB,GAAE,cAAc,IAAc,MAAO,KAAlB,UAA4B,KAAP,MAAU,GAAE,WAAW,IAAI,GAAG,MAAK,GAAE,KAAK,CAAC,EAAE,GAAE,GAAE,SAAS,GAAE,EAAE,GAAE,GAAE,OAAO,GAAE,IAAI,GAAG,GAAE,GAAE,IAAG,GAAE,OAAO,GAAE,GAAE,GAAE,QAAQ,EAAE,GAAE,IAAG,UAAW,GAAE,GAAE,IAAG,GAAE,GAAE,QAAQ,GAAE,OAAO,GAAI,IAAE,GAAG,GAAE,MAAM,SAAS,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,OAAO,GAAE,GAAE,IAAI,IAAE,GAAG,GAAE,KAAK,GAAE,IAAI,GAAE,MAAM,KAAK,GAAE,KAAK,IAAG,GAAE,IAAI,GAAG,GAAE,GAAE,IAAG,GAAE,OAAO,GAAE,GAAE,IAAG,MAAO,GAAE,QAAQ,IAAG,EAAE,CAAC,IAAI,GAAE,GAAE,IACrf,KADyf,MACtf,CAAC,GAAG,GAAE,MAAM,GAAE,GAAO,GAAE,MAAN,GAAW,GAAE,UAAU,gBAAgB,GAAE,eAAe,GAAE,UAAU,iBAAiB,GAAE,eAAe,CAAC,EAAE,GAAE,GAAE,SAAS,GAAE,EAAE,GAAE,GAAE,UAAU,IAAI,GAAE,OAAO,GAAE,GAAE,GAAE,YAAY,CAAC,EAAE,GAAE,IAAG,UAAW,GAAE,GAAE,IAAG,GAAE,GAAE,QAAQ,GAAE,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,GAAE,GAAE,MAAO,GAAE,QAAQ,IAAG,MAAO,IAAE,GAAE,MAAM,GAAE,GAAE,GAAE,GAAE,GAAE,UAAU,IAAG,GAAG,GAAG,IAAG,MAAO,IAAE,GAAE,GAAE,GAAE,IAAG,GAAG,GAAG,IAAG,MAAO,IAAE,GAAE,GAAE,GAAE,IAAG,GAAG,GAAE,IAAG,MAAiB,OAAO,KAAlB,UAA0B,KAAL,IAAmB,MAAO,KAAlB,SAAqB,IAAE,GAAG,GAAS,KAAP,MAAc,GAAE,MAAN,EAAW,GAAE,GAAE,GAAE,SAAS,GAAE,EAAE,GAAE,IAAG,GAAE,OAAO,GAAE,GAAE,IACnf,GAAE,GAAE,IAAG,GAAE,GAAG,GAAE,GAAE,KAAK,IAAG,GAAE,OAAO,GAAE,GAAE,IAAG,EAAE,KAAI,EAAE,GAAE,IAAG,MAAO,IAAE,GAAI,IAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,EAAG,IAAI,GAAG,EAAG,IAAI,GAAG,EAAG,IAAI,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,KAAM,OAAM,EAAE,MAAM,MAAO,GAAE,YAAY,EAAE,EAAE,CAAuC,OAAtC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,SAAgB,OAAQ,OAAO,IAAG,EAAG,GAAE,EAAE,iBAAiB,EAAE,aAAa,GAAG,KAAK,IAAI,cAAc,EAAM,IAAJ,EAAM,EAAE,WAAW,EAAE,EAAE,EAAE,cAAc,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAChb,YAAY,EAAE,CAAC,GAAG,GAAG,SAAS,GAAI,GAAE,GAAG,GAAG,SAAa,EAAE,GAAG,EAAE,EAAE,MAAM,IAAI,GAAI,GAAE,GAAG,GAAG,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC,GAAG,UAAU,GAAI,GAAE,IAAI,EAAE,KAAK,GAAI,IAAE,EAAG,GACrJ,YAAY,EAAE,CAAC,OAAQ,GAAE,EAAS,IAAP,MAAU,CAAC,GAAQ,EAAE,MAAP,GAAW,CAAC,GAAI,GAAE,EAAE,cAAc,GAAU,IAAP,MAAW,GAAE,EAAE,WAAkB,IAAP,MAAiB,EAAE,OAAT,MAAsB,EAAE,OAAT,MAAe,MAAO,WAAe,EAAE,MAAP,IAAqB,EAAE,cAAc,cAAzB,QAAsC,GAAQ,GAAE,MAAM,OAAb,EAAkB,MAAO,WAAiB,EAAE,QAAT,KAAe,CAAC,EAAE,MAAM,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,KAAY,EAAE,UAAT,MAAkB,CAAC,GAAU,EAAE,SAAT,MAAiB,EAAE,SAAS,EAAE,MAAO,MAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,MAAO,MAAK,GAAI,IAAG,GACrc,aAAa,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAG,OAAO,IAAI,GAAG,GAAG,8BAA8B,KAAK,GAAG,OAAO,EAAE,GAAI,IAAG,GAAG,uBAAuB,GAAG,GAAG,wBAAwB,GAAG,EAAE,GAAE,KAAK,GAAE,KAAK,GAAE,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,aAAY,CAAC,KAAM,OAAM,EAAE,MAAO,YAAY,EAAE,EAAE,CAAC,GAAU,IAAP,KAAS,MAAM,GAAG,OAAQ,GAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,GAAG,MAAM,GAC9V,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAuH,GAAtH,GAAG,EAAE,GAAE,EAAE,EAAE,cAAc,KAAK,EAAE,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,QAAe,IAAP,MAAiB,EAAE,gBAAT,KAAuB,GAAG,GAAG,EAAE,EAAE,EAAE,GAAM,GAAG,CAAC,EAAE,EAAE,EAAE,CAAY,GAAX,GAAG,GAAG,GAAG,EAAK,IAAI,EAAE,KAAM,OAAM,EAAE,MAAM,GAAG,EAAE,GAAE,GAAE,KAAK,EAAE,YAAY,KAAK,GAAG,QAAQ,GAAG,EAAE,EAAE,EAAE,SAAS,IAAkE,GAA9D,GAAG,QAAQ,GAAG,EAAS,KAAP,MAAiB,GAAE,OAAT,KAAc,GAAG,EAAE,GAAE,GAAE,GAAE,KAAK,GAAG,GAAM,EAAE,KAAM,OAAM,EAAE,MAAM,MAAO,GAAE,aAAa,CAAC,GAAI,GAAM,KAAJ,EAAO,UAAG,EAAS,EAC9Y,aAAa,CAAC,GAAI,GAAE,CAAC,cAAc,KAAK,UAAU,KAAK,UAAU,KAAK,MAAM,KAAK,KAAK,MAAM,MAAO,MAAP,KAAS,GAAE,cAAc,GAAE,EAAE,GAAE,GAAE,KAAK,EAAS,GAAE,aAAa,CAAC,GAAU,KAAP,KAAS,CAAC,GAAI,GAAE,GAAE,UAAU,EAAS,IAAP,KAAS,EAAE,cAAc,SAAU,GAAE,GAAE,KAAK,GAAI,GAAS,KAAP,KAAS,GAAE,cAAc,GAAE,KAAK,GAAU,IAAP,KAAS,GAAE,EAAE,GAAE,MAAM,CAAC,GAAU,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,GAAE,EAAE,EAAE,CAAC,cAAc,GAAE,cAAc,UAAU,GAAE,UAAU,UAAU,GAAE,UAAU,MAAM,GAAE,MAAM,KAAK,MAAa,KAAP,KAAS,GAAE,cAAc,GAAE,EAAE,GAAE,GAAE,KAAK,EAAE,MAAO,IAChe,YAAY,EAAE,EAAE,CAAC,MAAmB,OAAO,IAApB,WAAsB,EAAE,GAAG,EAClD,YAAY,EAAE,CAAC,GAAI,GAAE,KAAK,EAAE,EAAE,MAAM,GAAU,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAI,GAAE,GAAE,EAAE,EAAE,UAAU,EAAE,EAAE,QAAQ,GAAU,IAAP,KAAS,CAAC,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,KAAK,GAAU,IAAP,KAAS,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,GAAI,IAAE,EAAE,KAAK,GAAE,KAAK,GAAE,EAAE,EAAE,CAAC,GAAI,IAAE,GAAE,KAAK,GAAI,IAAG,MAAK,GAAS,KAAP,MAAW,IAAE,GAAE,KAAK,CAAC,KAAK,EAAE,OAAO,GAAE,OAAO,cAAc,GAAE,cAAc,WAAW,GAAE,WAAW,KAAK,OAAO,EAAE,GAAE,cAAc,GAAE,WAAW,EAAE,EAAE,GAAE,YAAY,CAAC,GAAI,IAAE,CAAC,KAAK,GAAE,OAAO,GAAE,OAAO,cAAc,GAAE,cACngB,WAAW,GAAE,WAAW,KAAK,MAAa,KAAP,KAAU,IAAE,GAAE,GAAE,EAAE,GAAG,GAAE,GAAE,KAAK,GAAE,GAAE,OAAO,GAAE,IAAI,GAAE,GAAE,GAAE,WAAkB,KAAP,MAAU,KAAI,GAAU,KAAP,KAAS,EAAE,EAAE,GAAE,KAAK,GAAE,GAAG,EAAE,EAAE,gBAAiB,IAAG,IAAI,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,GAAE,EAAE,kBAAkB,EAAkB,GAAhB,EAAE,EAAE,YAAsB,IAAP,KAAS,CAAC,EAAE,EAAE,EAAG,GAAE,EAAE,KAAK,GAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,IAAI,OAAe,KAAP,MAAW,GAAE,MAAM,GAAG,MAAM,CAAC,EAAE,cAAc,EAAE,UACrX,YAAY,EAAE,CAAC,GAAI,GAAE,KAAK,EAAE,EAAE,MAAM,GAAU,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,GAAI,GAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,cAAc,GAAU,IAAP,KAAS,CAAC,EAAE,QAAQ,KAAK,GAAI,GAAE,EAAE,EAAE,KAAK,EAAG,GAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,IAAI,GAAG,GAAG,EAAE,EAAE,gBAAiB,IAAG,IAAI,EAAE,cAAc,EAAS,EAAE,YAAT,MAAqB,GAAE,UAAU,GAAG,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,GAAG,aAAa,EACnW,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,cAAc,GAAsE,GAAnE,GAAI,GAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,CAAC,IAAO,EAAE,cAAc,GAAG,GAAU,KAAP,MAAU,GAAE,cAAc,IAAI,EAAE,CAAuD,GAAtD,EAAE,OAAO,KAAK,GAAG,EAAE,GAAG,KAAK,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,MAAgB,KAAP,KAAS,KAAM,OAAM,EAAE,MAAW,IAAG,MAAR,GAAa,GAAG,EAAE,EAAE,GAAG,MAAO,GAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,EAAE,GAAE,YAAmB,IAAP,KAAU,GAAE,CAAC,WAAW,KAAK,OAAO,MAAM,GAAE,YAAY,EAAE,EAAE,OAAO,CAAC,IAAK,GAAE,EAAE,OAAc,IAAP,KAAS,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,IAC/e,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,MAAO,GAAE,UAAU,CAAC,GAAG,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,EAAE,EAAE,MAAM,GAAG,CAAC,GAAI,GAAE,IAAI,MAAM,CAAC,GAAG,EAAE,QAAG,CAAS,MAAM,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,GAAU,IAAP,MAAU,GAAG,EAAE,EAAE,EAAE,IAC/P,YAAY,EAAE,CAAC,GAAI,GAAE,KAAK,MAAa,OAAO,IAApB,YAAwB,GAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,EAAE,SAAS,KAAK,oBAAoB,GAAG,kBAAkB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,KAAK,KAAK,GAAE,GAAS,CAAC,EAAE,cAAc,GAC1P,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,SAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,MAAM,EAAE,GAAE,YAAmB,IAAP,KAAU,GAAE,CAAC,WAAW,KAAK,OAAO,MAAM,GAAE,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,GAAI,GAAE,EAAE,WAAkB,IAAP,KAAS,EAAE,WAAW,EAAE,KAAK,EAAG,GAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,IAAW,EAAE,aAAa,CAAC,MAAO,MAAK,cAAc,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,GAAE,OAAO,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE,OAAgB,IAAT,OAAW,KAAK,GAC5Y,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,EAAW,IAAT,OAAW,KAAK,EAAE,GAAI,GAAE,OAAO,GAAU,KAAP,KAAS,CAAC,GAAI,GAAE,GAAE,cAA0B,GAAZ,EAAE,EAAE,QAAkB,IAAP,MAAU,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,GAAE,OAAO,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,QAAQ,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,EAAE,GAC9W,YAAY,EAAE,EAAE,CAAC,GAAgB,MAAO,IAApB,WAAsB,MAAO,GAAE,IAAI,EAAE,GAAG,UAAU,CAAC,EAAE,OAAO,GAAU,GAAP,KAAqB,MAAO,GAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,MAAM,YAAY,EAAE,EAAE,EAAE,CAAC,SAAS,GAAP,KAAqB,EAAE,OAAO,CAAC,IAAI,KAAY,GAAG,EAAE,EAAE,GAAG,KAAK,KAAK,EAAE,GAAG,GAAG,aAAa,EAAE,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,EAAW,IAAT,OAAW,KAAK,EAAE,GAAI,GAAE,EAAE,cAAc,MAAU,KAAP,MAAiB,IAAP,MAAU,GAAG,EAAE,EAAE,IAAW,EAAE,GAAG,GAAE,cAAc,CAAC,EAAE,GAAU,GAC5Z,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,EAAW,IAAT,OAAW,KAAK,EAAE,GAAI,GAAE,EAAE,cAAc,MAAU,KAAP,MAAiB,IAAP,MAAU,GAAG,EAAE,EAAE,IAAW,EAAE,GAAG,GAAE,IAAI,EAAE,cAAc,CAAC,EAAE,GAAU,GAAE,YAAY,EAAE,EAAE,EAAE,CAAC,MAAQ,IAAG,MAAR,EAAmB,GAAE,WAAY,GAAE,UAAU,GAAG,GAAG,IAAI,EAAE,cAAc,GAAE,IAAG,EAAE,IAAK,GAAE,KAAK,GAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,IAAW,GAAE,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,GAAM,IAAJ,GAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAI,GAAE,GAAG,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC,EAAE,IAAI,WAAI,CAAQ,GAAE,EAAE,GAAG,WAAW,GAAG,aAAa,CAAC,MAAO,MAAK,cAC7c,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,GAAkE,GAA/D,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,KAAK,KAAK,MAAS,GAAG,GAAG,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,KAAI,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAC5K,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,KAAK,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,GAAI,GAAE,EAAE,UAAU,GAAO,EAAE,QAAN,GAAc,CAAO,IAAP,MAAc,EAAE,QAAN,IAAe,GAAE,EAAE,oBAA2B,IAAP,MAAU,GAAG,CAAC,GAAI,GAAE,EAAE,kBAAkB,GAAE,EAAE,EAAE,GAAqC,GAAlC,EAAE,cAAc,GAAG,EAAE,WAAW,GAAK,GAAG,GAAE,GAAG,CAAC,GAAI,IAAE,EAAE,YAAmB,KAAP,KAAU,GAAE,KAAK,EAAE,GAAG,IAAK,GAAE,KAAK,GAAE,KAAK,GAAE,KAAK,GAAG,EAAE,YAAY,EAAE,aAAQ,SAAU,EAAS,EAAE,GAAG,EAAE,EAAE,EAAE,GAAU,IAAP,MAAW,GAAE,KAAI,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,KAC3c,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,MAAO,KAAI,IAAU,IAAP,MAAU,IAAI,GAAE,YAAY,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAI,GAAE,EAAE,QAAe,IAAP,KAAS,EAAE,KAAK,EAAG,GAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,GAAQ,GAAE,WAAP,EAAgB,CAAC,GAAI,GAAE,EAAE,MAAM,GAAG,EAAE,aAAa,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAC3P,GAAI,IAAG,CAAC,YAAY,GAAG,YAAY,GAAE,WAAW,GAAE,UAAU,GAAE,oBAAoB,GAAE,mBAAmB,GAAE,gBAAgB,GAAE,QAAQ,GAAE,WAAW,GAAE,OAAO,GAAE,SAAS,GAAE,cAAc,GAAE,iBAAiB,GAAE,cAAc,GAAE,iBAAiB,GAAE,qBAAqB,GAAE,MAAM,GAAE,yBAAyB,IAAI,GAAG,CAAC,YAAY,GAAG,YAAY,SAAS,EAAE,EAAE,CAAC,YAAK,cAAc,CAAC,EAAW,IAAT,OAAW,KAAK,GAAU,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,GAAP,KAAqB,EAAE,OAAO,CAAC,IAAI,KAAY,GAAG,QAC3f,EAAE,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,gBAAgB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,QAAQ,EAAE,EAAE,IAAI,mBAAmB,SAAS,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,EAAE,EAAE,IAAI,QAAQ,SAAS,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,SAAW,IAAT,OAAW,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,GAAU,GAAG,WAAW,SAAS,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,KAAK,SAAW,IAAT,OAAW,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY,KAAK,MAAM,EAAE,SAAS,KAAK,oBAAoB,EAAE,kBAAkB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,KAAK,KAAK,GAAE,GAAS,CAAC,EAAE,cAAc,IAAI,OAAO,SAAS,EAAE,CAAC,GAAI,GACrf,KAAK,SAAE,CAAC,QAAQ,GAAU,EAAE,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,iBAAiB,SAAS,EAAE,CAAC,MAAO,MAAK,cAAc,GAAG,cAAc,UAAU,CAAC,GAAI,GAAE,GAAG,IAAI,EAAE,EAAE,GAAG,SAAE,GAAG,KAAK,KAAK,EAAE,IAAI,KAAK,cAAc,EAAQ,CAAC,EAAE,IAAI,iBAAiB,UAAU,GAAG,qBAAqB,SAAS,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,KAAK,GAAG,GAAE,CAAC,GAAY,IAAT,OAAW,KAAM,OAAM,EAAE,MAAM,EAAE,QAAQ,CAAO,GAAN,EAAE,IAAc,KAAP,KAAS,KAAM,OAAM,EAAE,MAAW,IAAG,MAAR,GAAa,GAAG,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAI,GAAE,CAAC,MAAM,EAAE,YAAY,GAAG,SAAE,MAAM,EAAE,GAAG,GAAG,KAAK,KAAK,EACpf,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,GAAG,EAAE,GAAG,KAAK,KAAK,EAAE,EAAE,EAAE,GAAG,OAAO,MAAa,GAAG,MAAM,UAAU,CAAC,GAAI,GAAE,KAAK,EAAE,GAAE,iBAAiB,GAAG,GAAE,CAAC,GAAI,GAAE,GAAO,EAAE,GAAG,EAAG,GAAE,CAAE,IAAG,GAAG,GAAG,GAAG,IAAI,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAI,IAAG,IAAI,EAAE,SAAS,KAAK,GAAG,QAAS,GAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,MAAO,GAAE,cAAc,GAAG,yBAAyB,IAAI,GAAG,CAAC,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,UAAU,CAAC,MAAO,IAAG,KAClhB,cAAc,GAAG,iBAAiB,SAAS,EAAE,CAAC,GAAI,GAAE,KAAK,MAAO,IAAG,EAAE,GAAE,cAAc,IAAI,cAAc,UAAU,CAAC,GAAI,GAAE,GAAG,IAAI,GAAG,EAAE,KAAK,cAAc,MAAM,CAAC,EAAE,IAAI,iBAAiB,GAAG,qBAAqB,GAAG,MAAM,GAAG,yBAAyB,IAAI,GAAG,CAAC,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,UAAU,CAAC,MAAO,IAAG,KAAK,cAAc,GAAG,iBAAiB,SAAS,EAAE,CAAC,GAAI,GAAE,KAAK,MAClf,MADyf,KACvf,EAAE,cAAc,EAAE,GAAG,EAAE,GAAE,cAAc,IAAI,cAAc,UAAU,CAAC,GAAI,GAAE,GAAG,IAAI,GAAG,EAAE,KAAK,cAAc,MAAM,CAAC,EAAE,IAAI,iBAAiB,GAAG,qBAAqB,GAAG,MAAM,GAAG,yBAAyB,IAAI,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,GAAI,GAAE,GAAG,EAAE,EAAE,EAAG,IAAG,GAAG,GAAG,EAAE,EAAE,aAAa,GAAG,GAAI,GAAE,QAAQ,EAAN,CAAS,EAAE;AAAA,0BAA6B,EAAE,QAAQ;AAAA,EAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,MAAM,YAAY,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,MAAY,GAAI,KAAK,OAAa,GAAI,MACpd,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,aAAa,EAAN,CAAS,WAAW,UAAU,CAAC,KAAM,MAAM,GAAI,IAAgB,MAAO,UAApB,WAA4B,QAAQ,IAAI,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,QAAQ,MAAM,GAAI,GAAE,EAAE,MAAM,SAAE,SAAS,UAAU,CAAC,IAAK,IAAG,GAAG,GAAG,GAAG,GAAG,EAAE,IAAW,EAC1Q,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAI,GAAE,EAAE,KAAK,yBAAyB,GAAgB,MAAO,IAApB,WAAsB,CAAC,GAAI,GAAE,EAAE,MAAM,EAAE,QAAQ,UAAU,CAAC,MAAO,GAAE,IAAI,EAAE,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,GAAI,GAAE,EAAE,UAAU,MAAO,KAAP,MAAuB,MAAO,GAAE,mBAAtB,YAA0C,GAAE,SAAS,UAAU,CAAC,GAAG,EAAE,GAAgB,MAAO,IAApB,YAAwB,CAAO,KAAP,KAAU,GAAG,GAAI,KAAI,CAAC,OAAO,GAAG,IAAI,OAAO,GAAI,GAAE,EAAE,MAAM,KAAK,kBAAkB,EAAE,MAAM,CAAC,eAAsB,IAAP,KAAS,EAAE,OAAc,EAClb,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,GAAU,IAAP,KAAS,CAAC,EAAE,EAAE,UAAU,GAAI,IAAG,GAAI,GAAE,GAAI,KAAI,EAAE,IAAI,EAAE,OAAQ,GAAE,EAAE,IAAI,GAAY,IAAT,QAAa,GAAE,GAAI,KAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAK,GAAE,IAAI,GAAG,EAAE,GAAG,KAAK,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,YAAY,EAAE,CAAC,EAAE,CAAC,GAAI,GAA4E,GAAvE,GAAO,EAAE,MAAP,KAAW,GAAE,EAAE,cAAc,EAAS,IAAP,KAAgB,EAAE,aAAT,KAA0B,IAAM,EAAE,MAAO,GAAE,EAAE,EAAE,aAAoB,IAAP,MAAU,MAAO,MAC5V,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAQ,GAAE,KAAK,KAAZ,EAAsB,KAAI,EAAE,EAAE,OAAO,MAAO,GAAE,OAAO,IAAI,EAAE,OAAO,OAAO,EAAE,OAAO,OAAW,EAAE,MAAN,GAAY,CAAO,EAAE,YAAT,KAAmB,EAAE,IAAI,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,GAAE,GAAE,OAAO,MAAM,EAAE,MAAM,EAAS,GAAE,GAAI,IAAG,GAAG,kBAAkB,GAAG,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAa,IAAP,KAAS,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,GACjV,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,GAAI,GAAE,EAAE,IAAqC,MAAjC,IAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAe,IAAP,MAAU,CAAC,GAAU,GAAE,YAAY,EAAE,YAAY,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,IAAG,KAAG,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAU,EAAE,OACpN,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,KAAK,MAAgB,OAAO,IAApB,YAAuB,CAAC,GAAG,IAAa,EAAE,eAAX,QAAgC,EAAE,UAAT,MAA2B,EAAE,eAAX,OAA+B,GAAE,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAG,GAAE,GAAG,EAAE,KAAK,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAS,EAAE,MAAM,GAAY,GAAV,EAAE,EAAE,MAAc,GAAE,MAAM,KAAb,EAAgB,CAAC,GAAI,GAAE,EAAE,cAA0C,GAA5B,EAAE,EAAE,QAAQ,EAAS,IAAP,KAAS,EAAE,GAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,MAAO,IAAG,EAAE,EAAE,GAAG,SAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAS,EAAE,MAAM,EACzb,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,cAAc,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,aAAa,EAAE,EAAO,GAAE,MAAM,KAAb,EAAqB,GAAE,MAAM,UAAb,GAAuB,IAAG,QAAS,OAAO,GAAE,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,MAAO,IAAG,EAAE,EAAE,EAAE,EAAE,GACtN,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,EAAE,EAAE,SAAS,EAAS,IAAP,KAAS,EAAE,cAAc,KAAK,GAAc,EAAE,OAAb,SAAkB,GAAQ,GAAE,KAAK,KAAZ,EAAe,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,MAAM,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,GAAQ,GAAE,cAAP,EAAmB,MAAO,GAAS,IAAP,KAAS,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,WAAW,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,MAAM,EAAE,YAAY,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,MAAM,EAAS,IAAP,KAAS,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,IAAI,MAC/e,KADsf,KACnf,GAAE,EAAE,UAAU,EAAE,EAAE,cAAc,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,UAAG,EAAE,EAAE,EAAE,GAAU,EAAE,MAAM,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,IAAO,CAAO,IAAP,MAAiB,IAAP,MAAiB,IAAP,MAAU,EAAE,MAAM,IAAE,GAAE,OAAO,IAAI,EAAE,OAAO,SAAQ,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,GAAG,EAAG,EAAE,QAAmD,MAA3C,GAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAe,IAAP,MAAU,CAAC,GAAU,GAAE,YAAY,EAAE,YAAY,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,IAAG,KAAG,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAU,EAAE,OAC7Z,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,OAAQ,GAAE,GAAW,GAAR,GAAG,EAAE,GAAa,EAAE,YAAT,KAAmB,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAkB,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,UAAU,GAAE,EAAE,cAAc,EAAE,MAAM,GAAE,GAAI,IAAE,EAAE,QAAQ,GAAE,EAAE,YAAuB,MAAO,KAAlB,UAA4B,KAAP,KAAS,GAAE,GAAG,IAAI,IAAE,GAAG,GAAG,EAAG,EAAE,QAAQ,GAAE,GAAG,EAAE,KAAI,GAAI,IAAE,EAAE,yBAAyB,GAAe,MAAO,KAApB,YAAoC,MAAO,GAAE,yBAAtB,WAA8C,IAAgB,MAAO,GAAE,kCAAtB,YAAqE,MAAO,GAAE,2BAAtB,YACpc,MAAI,GAAG,KAAI,KAAI,GAAG,EAAE,EAAE,EAAE,IAAG,GAAG,GAAG,GAAI,IAAE,EAAE,cAAc,EAAE,MAAM,GAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAE,EAAE,cAAc,KAAI,GAAG,KAAI,IAAG,EAAG,SAAS,GAAI,CAAa,MAAO,KAApB,YAAwB,IAAG,EAAE,EAAE,GAAE,GAAG,GAAE,EAAE,eAAgB,IAAE,IAAI,GAAG,EAAE,EAAE,GAAE,EAAE,GAAE,GAAE,KAAK,KAAgB,MAAO,GAAE,2BAAtB,YAA8D,MAAO,GAAE,oBAAtB,YAA2C,CAAa,MAAO,GAAE,oBAAtB,YAA0C,EAAE,qBAAkC,MAAO,GAAE,2BAAtB,YAAiD,EAAE,6BAA0C,MAAO,GAAE,mBAAtB,YAA0C,GAAE,OAAO,UAClf,CAAa,MAAO,GAAE,mBAAtB,YAA0C,GAAE,OAAO,SAAS,EAAE,cAAc,EAAE,EAAE,cAAc,IAAG,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,EAAE,QAAQ,GAAE,EAAE,IAAI,CAAa,MAAO,GAAE,mBAAtB,YAA0C,GAAE,OAAO,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,EAAE,GAAG,GAAE,EAAE,cAAc,GAAE,EAAE,OAAO,EAAE,YAAY,GAAE,GAAG,EAAE,KAAK,IAAG,EAAE,MAAM,GAAE,GAAE,EAAE,aAAa,GAAE,EAAE,QAAQ,GAAE,EAAE,YAAuB,MAAO,KAAlB,UAA4B,KAAP,KAAS,GAAE,GAAG,IAAI,IAAE,GAAG,GAAG,EAAG,EAAE,QAAQ,GAAE,GAAG,EAAE,KAAI,GAAI,IAAE,EAAE,yBAA0B,IAAe,MAAO,KAApB,YAAoC,MAAO,GAAE,yBAAtB,aAC3c,MAAO,GAAE,kCAAtB,YAAqE,MAAO,GAAE,2BAAtB,YAAkD,MAAI,IAAG,KAAI,KAAI,GAAG,EAAE,EAAE,EAAE,IAAG,GAAG,GAAG,GAAE,EAAE,cAAc,EAAE,MAAM,GAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAI,IAAE,EAAE,cAAc,KAAI,IAAG,KAAI,IAAG,EAAG,SAAS,GAAI,CAAa,MAAO,KAApB,YAAwB,IAAG,EAAE,EAAE,GAAE,GAAG,GAAE,EAAE,eAAgB,IAAE,IAAI,GAAG,EAAE,EAAE,GAAE,EAAE,GAAE,GAAE,KAAI,IAAK,KAAgB,MAAO,GAAE,4BAAtB,YAA+D,MAAO,GAAE,qBAAtB,YAA4C,CAAa,MAAO,GAAE,qBAAtB,YAA2C,EAAE,oBAAoB,EAAE,GAAE,IAAgB,MAAO,GAAE,4BAAtB,YACte,EAAE,2BAA2B,EAAE,GAAE,KAAiB,MAAO,GAAE,oBAAtB,YAA2C,GAAE,OAAO,GAAgB,MAAO,GAAE,yBAAtB,YAAgD,GAAE,OAAO,OAAQ,CAAa,MAAO,GAAE,oBAAtB,YAA0C,KAAI,EAAE,eAAe,KAAI,EAAE,eAAgB,GAAE,OAAO,GAAgB,MAAO,GAAE,yBAAtB,YAA+C,KAAI,EAAE,eAAe,KAAI,EAAE,eAAgB,GAAE,OAAO,MAAM,EAAE,cAAc,EAAE,EAAE,cAAc,IAAG,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,EAAE,QAAQ,GAAE,EAAE,IAAI,CAAa,MAAO,GAAE,oBAAtB,YAA0C,KAAI,EAAE,eAAe,KACjf,EAAE,eAAgB,GAAE,OAAO,GAAgB,MAAO,GAAE,yBAAtB,YAA+C,KAAI,EAAE,eAAe,KAAI,EAAE,eAAgB,GAAE,OAAO,MAAM,EAAE,IAAI,MAAO,IAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GACjK,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAI,GAAO,GAAE,MAAM,OAAb,EAAkB,GAAG,CAAC,GAAG,CAAC,EAAE,MAAO,IAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,GAAG,QAAQ,EAAE,GAAI,IAAE,GAAgB,MAAO,GAAE,0BAAtB,WAA+C,KAAK,EAAE,SAAS,SAAE,OAAO,EAAS,IAAP,MAAU,EAAG,GAAE,MAAM,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAE,IAAI,GAAG,EAAE,EAAE,GAAE,GAAG,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,IAAW,EAAE,MAAM,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,EAAE,eAAe,GAAG,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,IAAI,GAAG,EAAE,EAAE,eAC9d,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,YAAK,GAAG,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,EAAE,GAAU,EAAE,MAAM,GAAI,IAAG,CAAC,WAAW,KAAK,YAAY,KAAK,UAAU,GAAG,YAAY,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,KAAK,YAAY,MAC7L,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,EAAE,GAAE,QAAQ,EAAE,GAAG,EAAO,GAAE,MAAM,OAAb,EAAkB,GAA0I,GAAvI,IAAE,IAAK,IAAS,IAAP,MAAiB,EAAE,gBAAT,KAAuB,GAAQ,GAAE,KAAP,GAAc,GAAE,GAAE,GAAG,EAAE,OAAO,MAAa,CAAO,IAAP,MAAiB,EAAE,gBAAT,OAAuB,IAAG,GAAE,EAAE,GAAE,EAAE,GAAa,IAAP,KAAkC,MAAxB,IAAG,GAAG,EAAE,EAAE,cAAwB,IAAP,MAAW,GAAE,EAAE,WAAkB,IAAP,MAAiB,CAAK,GAAE,KAAK,KAAZ,EAAe,EAAE,MAAM,EAAS,EAAE,OAAT,KAAc,EAAE,MAAM,EAAE,EAAE,MAAM,WAAW,MAAK,GAAE,EAAE,SAAS,EAAE,EAAE,SAAgB,EAAG,GAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,SAAS,SAAS,GAAQ,GAAE,KAAP,GAAkB,IAAP,KAAU,GAAE,WAAW,EAAE,EAAE,aAC7e,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,cAAc,GAAG,GAAG,EAAE,cAAc,GAAG,GAAG,GAAG,EAAE,IAAqB,GAAlB,EAAE,EAAE,cAAwB,IAAP,MAAW,IAAE,EAAE,WAAkB,KAAP,MAAU,MAAO,IAAG,EAAE,EAAE,EAAE,EAAE,GAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,GAAE,EAAE,QAAQ,GAAI,IAAE,CAAC,KAAK,SAAS,SAAS,EAAE,UAAU,MAAK,GAAE,KAAP,GAAW,EAAE,QAAQ,EAAG,GAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,GAAE,EAAE,UAAU,MAAO,GAAE,GAAG,EAAE,IAAG,EAAE,aAAa,EAAE,aAAa,UAAiB,KAAP,KAAS,EAAE,GAAG,GAAE,GAAI,GAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,OACnf,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,cAAc,EAAS,IAAP,KAAS,GAAG,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,KAAK,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,cAAc,GAAU,EAAE,SAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,SAAS,EAAE,WAAgB,GAAE,KAAK,KAAZ,GAAiB,GAAE,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,KAAY,IAAP,MAAW,GAAE,EAAE,UAAiB,IAAP,KAAU,GAAE,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc,KAAY,EACld,YAAY,EAAE,EAAE,CAAC,SAAE,GAAG,CAAC,KAAK,UAAU,SAAS,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAS,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,MAAO,KAAP,MAAU,GAAG,GAAG,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,KAAY,EAC9N,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAG,MAAG,GAAE,MAAM,IAAW,GAAE,OAAO,KAAK,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE,IAAa,EAAE,gBAAT,KAA8B,GAAE,MAAM,EAAE,MAAM,EAAE,OAAO,IAAI,MAAK,GAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,UAAU,SAAS,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAO,GAAE,KAAK,KAAZ,GAAgB,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAAE,MAAM,cAAc,GAAG,GAAG,EAAE,cAAc,GAAU,GAAE,GAAQ,GAAE,KAAK,KAAZ,EAAe,MAAO,IAAG,EAAE,EAAE,EAAE,MAAM,GAAU,EAAE,OAAT,KAAc,CAChd,GADid,EAAE,EAAE,aAAa,EAAE,YAAY,QAC7e,EAAE,GAAI,IAAE,EAAE,KAAK,SAAE,GAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAe,GAAG,EAAE,EAAE,EAAE,GAA0B,GAAvB,GAAO,GAAE,EAAE,cAAT,EAAwB,IAAI,GAAE,CAAK,GAAJ,EAAE,GAAY,IAAP,KAAS,CAAC,OAAO,EAAE,CAAC,OAAQ,GAAE,EAAE,EAAE,UAAW,IAAG,EAAE,EAAE,UAAW,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,UAAU,WAAW,WAAW,WAAW,YAAY,YAAY,YAAY,aAAa,aAAa,aAAa,aAAa,cAAc,cAAc,UAAS,EAAE,GAAG,UAAW,WAAU,EAAE,UAAU,cAAc,EAAE,EAAE,EAAO,GAAG,GAAE,eAAe,MAAzB,EAA6B,EAAE,EAC/e,IAAJ,GAAO,IAAI,EAAE,WAAY,GAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAK,YAAK,EAAE,GAAG,MAAM,EAAE,OAAc,GAAG,EAAE,EAAE,EAAE,GAAG,MAAU,GAAE,OAAT,KAAqB,GAAE,OAAO,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,KAAK,GAAG,EAAE,YAAY,EAAE,MAAK,GAAE,EAAE,YAAY,GAAG,GAAG,EAAE,aAAa,GAAG,EAAE,GAAE,GAAG,GAAG,KAAY,IAAP,MAAW,IAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,KAAY,GAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAI,GAAE,EAAE,UAAiB,IAAP,MAAW,GAAE,OAAO,GAAG,GAAG,EAAE,OAAO,EAAE,GACtc,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,cAAqB,IAAP,KAAS,EAAE,cAAc,CAAC,YAAY,EAAE,UAAU,KAAK,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAI,GAAE,YAAY,EAAE,EAAE,UAAU,KAAK,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,GACzO,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,EAAE,KAAsC,GAAjC,GAAG,EAAE,EAAE,EAAE,SAAS,GAAG,EAAE,GAAE,QAAgB,GAAE,KAAP,EAAU,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,QAAQ,CAAC,GAAU,IAAP,MAAe,GAAE,MAAM,OAAb,EAAkB,EAAE,IAAI,EAAE,EAAE,MAAa,IAAP,MAAU,CAAC,GAAQ,EAAE,MAAP,GAAkB,EAAE,gBAAT,MAAwB,GAAG,EAAE,EAAE,WAAgB,EAAE,MAAP,GAAW,GAAG,EAAE,EAAE,WAAkB,EAAE,QAAT,KAAe,CAAC,EAAE,MAAM,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,KAAY,EAAE,UAAT,MAAkB,CAAC,GAAU,EAAE,SAAT,MAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,EAAS,GAAP,EAAE,GAAE,GAAW,GAAE,KAAK,KAAZ,EAAe,EAAE,cAC/e,SAAU,QAAO,OAAQ,WAAqB,IAAV,EAAE,EAAE,MAAU,EAAE,KAAY,IAAP,MAAU,EAAE,EAAE,UAAiB,IAAP,MAAiB,GAAG,KAAV,MAAe,GAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAS,IAAP,KAAU,GAAE,EAAE,MAAM,EAAE,MAAM,MAAO,GAAE,EAAE,QAAQ,EAAE,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,UAAW,YAA6B,IAAjB,EAAE,KAAK,EAAE,EAAE,MAAU,EAAE,MAAM,KAAY,IAAP,MAAU,CAAe,GAAd,EAAE,EAAE,UAAoB,IAAP,MAAiB,GAAG,KAAV,KAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,UAAW,WAAW,GAAG,EAAE,GAAG,KAAK,KAAK,QAAQ,cAAc,EAAE,cAAc,KAAK,MAAO,GAAE,MACxd,YAAY,EAAE,EAAE,CAAM,GAAE,KAAK,KAAZ,GAAuB,IAAP,MAAW,GAAE,UAAU,KAAK,EAAE,UAAU,KAAK,EAAE,OAAO,GAAG,YAAY,EAAE,EAAE,EAAE,CAAuD,GAA/C,IAAP,MAAW,GAAE,aAAa,EAAE,cAAc,IAAI,EAAE,MAAc,GAAE,EAAE,cAAT,EAAqB,MAAO,MAAK,GAAU,IAAP,MAAU,EAAE,QAAQ,EAAE,MAAM,KAAM,OAAM,EAAE,MAAM,GAAU,EAAE,QAAT,KAAe,CAA4C,IAA3C,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAM,EAAE,OAAO,EAAS,EAAE,UAAT,MAAkB,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,QAAQ,KAAK,MAAO,GAAE,MACza,YAAY,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,GAAG,GAAG,KAAK,UAAW,GAAE,GAAG,GAAG,UAAW,GAAE,GAAG,EAAE,OAAO,GAAG,GAAG,UAAW,GAAE,GAAG,EAAE,EAAE,UAAU,eAAe,UAAW,IAAG,GAAI,GAAE,EAAE,KAAK,SAAS,EAAE,EAAE,cAAc,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,UAAW,IAAqB,GAAlB,EAAE,EAAE,cAAwB,IAAP,KAAU,MAAU,GAAE,aAAT,KAA2B,GAAE,GAAE,GAAE,QAAQ,GAAG,EAAE,OAAO,IAAI,MAAa,GAAE,EAAE,MAAM,cAAf,EAAkC,GAAG,EAAE,EAAE,GAAG,GAAE,GAAE,GAAE,QAAQ,GAAG,EAAE,GAAG,EAAE,EAAE,GAAiB,IAAP,KAAS,EAAE,QAAQ,MAAK,EAAE,GAAE,GAAE,QAAQ,GAAG,UAAW,IAC7d,GADge,EAAO,GACrf,EAAE,cAD8e,EAC1d,GAAE,MAAM,OAAb,EAAkB,CAAC,GAAG,EAAE,MAAO,IAAG,EAAE,EAAE,GAAG,EAAE,OAAO,IAAgG,GAA5F,EAAE,EAAE,cAAqB,IAAP,MAAW,GAAE,UAAU,KAAK,EAAE,KAAK,KAAK,EAAE,WAAW,MAAM,EAAE,GAAE,GAAE,SAAY,EAAE,MAAW,MAAO,UAAU,QAAQ,IAAG,MAAO,GAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAO,IAAG,EAAE,EAAE,GAAG,GAAI,IAAG,GAAG,GAAG,GACxQ,GAAG,SAAS,EAAE,EAAE,CAAC,OAAQ,GAAE,EAAE,MAAa,IAAP,MAAU,CAAC,GAAO,EAAE,MAAN,GAAe,EAAE,MAAN,EAAU,EAAE,YAAY,EAAE,mBAAuB,EAAE,MAAN,GAAkB,EAAE,QAAT,KAAe,CAAC,EAAE,MAAM,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,KAAY,EAAE,UAAT,MAAkB,CAAC,GAAU,EAAE,SAAT,MAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,UAAU,GACvT,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,cAAc,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG,SAAS,GAAI,GAAE,KAAK,OAAO,OAAQ,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAW,SAAS,EAAE,GAAE,GAAG,EAAE,CAAC,MAAM,SAAS,EAAE,GAAE,GAAG,EAAE,CAAC,MAAM,SAAS,EAAE,GAAG,UAAW,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAA2B,MAAO,GAAE,SAAtB,YAA4C,MAAO,GAAE,SAAtB,YAAgC,GAAE,QAAQ,IAAI,GAAG,EAAE,GAAG,GAAI,GAAE,EAAE,KAAK,IAAI,KAAK,GAAE,GAAG,CAAC,EAAE,eAAe,KAAI,EAAE,eAAe,KAAU,EAAE,KAAR,KAAW,GAAa,KAAV,QAAY,CAAC,GAAI,IAAE,EAAE,IAAG,IAAI,IAAK,IAAE,GAAE,eAAe,IACjf,IAAI,GAAE,IAAI,EAAE,GAAG,QAAoC,MAA5B,2BAA4C,KAAb,YAAmD,KAAnC,kCAAmE,KAA7B,4BAA8C,KAAd,aAAkB,GAAG,eAAe,IAAG,GAAI,GAAE,IAAK,GAAE,GAAG,IAAI,KAAK,GAAE,OAAO,IAAI,KAAK,GAAE,CAAC,GAAI,IAAE,EAAE,IAAyB,GAAtB,GAAQ,GAAN,KAAQ,EAAE,IAAG,OAAU,EAAE,eAAe,KAAI,KAAI,IAAI,CAAM,IAAN,MAAe,IAAN,MAAS,GAAa,KAAV,QAAY,GAAG,GAAE,CAAC,IAAI,IAAK,IAAE,CAAC,GAAE,eAAe,IAAI,IAAG,GAAE,eAAe,IAAK,IAAI,GAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAK,IAAE,GAAE,eAAe,IAAI,GAAE,KAAK,GAAE,IAAK,IAAI,GAAE,IAAI,EAAE,GAAG,GAAE,QAAS,IAAI,IAAI,GAAE,IAAI,EAAE,KAAK,GACpf,IAAI,EAAE,OAAkC,MAA5B,0BAA+B,IAAE,GAAE,GAAE,OAAO,OAAO,GAAE,GAAE,GAAE,OAAO,OAAa,IAAN,MAAS,KAAI,IAAI,GAAE,GAAG,IAAI,KAAK,GAAE,KAAiB,KAAb,WAA0B,MAAO,KAAlB,UAAgC,MAAO,KAAlB,UAAsB,GAAE,GAAG,IAAI,KAAK,GAAE,GAAG,IAAsC,KAAnC,kCAAmE,KAA7B,4BAAiC,GAAG,eAAe,IAAI,CAAM,IAAN,MAAsB,KAAb,YAAgB,GAAE,SAAS,GAAG,GAAG,KAAI,IAAI,GAAE,KAAM,GAAE,GAAG,IAAI,KAAK,GAAE,KAAI,GAAI,GAAE,GAAG,IAAI,KAAK,QAAQ,GAAG,GAAI,IAAE,EAAK,GAAE,YAAY,KAAE,GAAE,OAAO,KAAI,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAI,GAAE,OAAO,IAC9d,YAAY,EAAE,EAAE,CAAC,GAAG,CAAC,GAAE,OAAO,EAAE,cAAe,SAAS,EAAE,EAAE,KAAK,OAAQ,GAAE,KAAY,IAAP,MAAiB,EAAE,YAAT,MAAqB,GAAE,GAAG,EAAE,EAAE,QAAe,IAAP,KAAS,EAAE,KAAK,KAAK,EAAE,QAAQ,KAAK,UAAW,YAAY,EAAE,EAAE,KAAK,OAAQ,GAAE,KAAY,IAAP,MAAiB,EAAE,YAAT,MAAqB,GAAE,GAAG,EAAE,EAAE,QAAe,IAAP,KAAS,GAAU,EAAE,OAAT,KAAc,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,KAAK,EAAE,QAAQ,MACvU,YAAW,EAAE,CAAC,GAAI,GAAS,EAAE,YAAT,MAAoB,EAAE,UAAU,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAQ,GAAE,EAAE,MAAa,IAAP,MAAU,GAAG,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,aAAa,SAAS,GAAG,EAAE,MAAM,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,YAAa,KAAI,EAAE,EAAE,MAAa,IAAP,MAAU,GAAG,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,aAAa,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,SAAE,cAAc,EAAE,EAAE,WAAW,EAAS,EAC5V,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAmB,OAAN,GAAG,GAAU,EAAE,SAAU,OAAO,QAAQ,QAAQ,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,IAAG,MAAO,IAAE,GAAG,SAAU,GAAE,MAAO,IAAG,EAAE,OAAO,KAAK,GAAE,GAAG,SAAU,GAAE,SAAE,EAAE,UAAU,KAAK,EAAE,GAAI,EAAE,GAAG,KAAK,EAAE,gBAAiB,GAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,MAAS,CAAO,IAAP,MAAiB,EAAE,QAAT,OAAe,IAAG,GAAG,EAAE,OAAO,EAAS,IAAP,MAAU,EAAE,cAAc,cAAmB,GAAE,MAAM,OAAb,GAAoB,GAAE,OAAO,KAAY,KAAP,MAAY,IAAG,IAAI,GAAG,QAAO,GAAG,EAAE,GAAG,GAAE,GAAU,SAAU,GAAE,GAAG,GAAG,GAAI,GAAE,GAAG,GAAG,SAC7e,GAAT,EAAE,EAAE,KAAe,IAAP,MAAgB,EAAE,WAAR,KAAkB,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAM,GAAE,OAAO,IAAI,EAAE,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAU,EAAE,YAAT,KAAmB,KAAM,OAAM,EAAE,MAAM,UAAE,GAAU,KAAsB,GAAjB,EAAE,GAAG,GAAG,SAAY,GAAG,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,GAAI,GAAE,EAAE,cAA+C,OAAjC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAO,GAAE,KAAK,KAAZ,EAAsB,OAAQ,SAAS,GAAE,SAAS,GAAG,GAAE,QAAQ,GAAG,UAAW,aAAc,aAAc,QAAQ,GAAE,OAAO,GAAG,UAAW,YAAa,QAAQ,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,IAAI,GAAE,GAAG,GAAG,GAAG,UAAW,SAAS,GAAE,QAAQ,GAAG,UAAW,UAAW,YAAa,OAAO,GAAE,QACnhB,GAAG,GAAE,OAAO,GAAG,UAAW,UAAU,GAAE,SAAS,GAAG,UAAW,QAAQ,GAAG,EAAE,GAAG,GAAE,UAAU,GAAG,UAAW,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,GAAE,UAAU,GAAG,UAAW,WAAW,GAAG,EAAE,GAAG,GAAE,UAAU,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,OAAQ,KAAK,GAAE,GAAG,EAAE,eAAe,GAAG,CAAC,GAAI,IAAE,EAAE,GAAgB,IAAb,WAA0B,MAAO,KAAlB,SAAoB,EAAE,cAAc,IAAI,CAAK,EAAE,2BAAP,IAAiC,GAAG,EAAE,YAAY,GAAE,GAAG,EAAE,CAAC,WAAW,KAAe,MAAO,KAAlB,UAAqB,EAAE,cAAc,GAAG,IAAI,CAAK,EAAE,2BAAP,IAAiC,GAAG,EAAE,YAC1e,GAAE,GAAG,EAAE,CAAC,WAAW,GAAG,KAAI,EAAG,eAAe,IAAU,IAAN,MAAsB,IAAb,YAAgB,GAAE,SAAS,GAAG,OAAO,OAAQ,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,UAAW,WAAW,GAAG,GAAG,GAAG,GAAG,UAAW,aAAc,SAAS,cAA2B,MAAO,GAAE,SAAtB,YAAgC,GAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,YAAY,EAAS,IAAP,MAAW,GAAE,OAAO,OAAO,CAAC,EAAM,EAAE,WAAN,EAAe,EAAE,EAAE,cAA+C,IAAjC,gCAAqC,GAAE,GAAG,IAAqC,IAAjC,+BAA8C,IAAX,SAAc,GAAE,EAAE,cAAc,OAAO,EAAE,UAAU,qBAAuB,EAAE,EAAE,YAAY,EAAE,aACpf,MAAO,GAAE,IAApB,SAAuB,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,KAAM,GAAE,EAAE,cAAc,GAAc,IAAX,UAAe,GAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,EAAE,MAAO,GAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,CAAW,OAAV,EAAE,GAAG,EAAE,GAAU,OAAQ,SAAS,GAAE,SAAS,GAAG,GAAE,QAAQ,GAAG,EAAE,EAAE,UAAW,aAAc,aAAc,QAAQ,GAAE,OAAO,GAAG,EAAE,EAAE,UAAW,YAAa,QAAQ,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,IAAI,GAAE,GAAG,GAAG,GAAG,EAAE,EAAE,UAAW,SAAS,GAAE,QAAQ,GAAG,EAAE,EAAE,UAAW,UAAW,YAAa,OAAO,GAAE,QAClf,GAAG,GAAE,OAAO,GAAG,EAAE,EAAE,UAAW,UAAU,GAAE,SAAS,GAAG,EAAE,EAAE,UAAW,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,UAAU,GAAG,UAAW,SAAS,EAAE,EAAE,UAAW,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,GAAE,GAAG,EAAE,CAAC,MAAM,SAAS,GAAE,UAAU,GAAG,UAAW,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,UAAU,GAAG,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,GAAE,EAAE,IAAI,IAAK,IAAE,GAAG,GAAE,eAAe,GAAG,CAAC,GAAI,IAAE,GAAE,GAAa,IAAV,QAAY,GAAG,EAAE,IAA+B,IAA5B,0BAA+B,IAAE,GAAE,GAAE,OAAO,OAAa,IAAN,MAAS,GAAG,EAAE,KAAiB,IAAb,WAA0B,MAAO,KAAlB,SAAqB,CAC7e,IAD6e,YACre,KAAL,KAAS,GAAG,EAAE,IAAc,MAAO,KAAlB,UAAqB,GAAG,EAAE,GAAG,IAAsC,IAAnC,kCAAmE,IAA7B,4BAA8C,IAAd,aAAkB,GAAG,eAAe,GAAS,IAAN,MAAsB,IAAb,YAAgB,GAAE,SAAS,GAAS,IAAN,MAAS,EAAG,EAAE,EAAE,GAAE,IAAI,OAAO,OAAQ,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,IAAI,UAAW,WAAW,GAAG,GAAG,GAAG,GAAG,UAAW,SAAe,EAAE,OAAR,MAAe,EAAE,aAAa,QAAQ,GAAG,GAAG,EAAE,QAAQ,UAAW,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAY,GAAN,KAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAU,EAAE,cAAR,MAAsB,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,aAClf,IAAI,cAA2B,MAAO,GAAE,SAAtB,YAAgC,GAAE,QAAQ,IAAI,OAAO,OAAQ,aAAc,YAAa,aAAc,WAAW,EAAE,CAAC,CAAC,EAAE,UAAU,YAAa,MAAM,EAAE,GAAG,gBAAgB,EAAE,IAAI,GAAI,GAAE,OAAO,GAAU,EAAE,MAAT,MAAe,GAAE,OAAO,IAAI,EAAE,OAAO,SAAS,UAAE,GAAU,SAAU,GAAE,GAAG,GAAS,EAAE,WAAR,KAAkB,GAAG,EAAE,EAAE,EAAE,cAAc,OAAO,CAAC,GAAc,MAAO,IAAlB,UAA4B,EAAE,YAAT,KAAmB,KAAM,OAAM,EAAE,MAAsC,GAAhC,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,SAAY,GAAG,GAAG,CAAyC,GAAxC,EAAE,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAK,GAAE,EAAE,YAAY,IAAK,GACvf,GAAU,IAAP,MAAS,OAAO,EAAE,SAAU,GAAE,GAAG,EAAE,UAAU,EAAO,GAAE,KAAK,KAAZ,GAAgB,UAAW,GAAO,EAAE,cAAc,2BAArB,IAA+C,GAAG,EAAE,UAAU,EAAO,GAAE,KAAK,KAAZ,GAAgB,GAAI,GAAE,OAAO,OAAQ,GAAG,CAAI,EAAE,WAAN,EAAe,EAAE,EAAE,eAAe,eAAe,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,UAAE,GAAU,SAAU,IAA0B,GAAvB,EAAE,IAAG,EAAE,EAAE,cAAwB,IAAP,MAAiB,EAAE,gBAAT,MAA+B,EAAE,cAAc,aAAvB,KAAkC,CAAC,GAAG,IAAU,KAAP,MAAgB,GAAE,KAAK,KAAZ,GAAqB,GAAE,MAAM,OAAb,EAAkB,KAAK,KAAK,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,GAAG,GAAU,IAAP,MAAiB,EAAE,aAAT,KAAoB,CAAC,GACzf,IAD4f,KAC1f,CAAC,GAAG,CAAC,EAAE,KAAM,OAAM,EAAE,MAAqD,GAA/C,EAAE,EAAE,cAAc,EAAS,IAAP,KAAS,EAAE,WAAW,KAAQ,CAAC,EAAE,KAAM,OAAM,EAAE,MAAM,EAAE,IAAI,MAAO,MAAU,GAAE,MAAM,OAAb,GAAoB,GAAE,cAAc,MAAM,EAAE,OAAO,EAAE,GAAE,GAAG,EAAE,OAAe,MAAP,MAAY,IAAG,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,MAAO,GAAE,MAAM,MAAM,EAAE,KAAK,MAAQ,GAAE,MAAM,OAAb,EAAyB,GAAE,MAAM,EAAE,GAAE,GAAS,IAAP,KAAS,IAAK,CAAO,IAAP,MAAiB,EAAE,gBAAT,OAAyB,GAAI,GAAE,MAAM,OAAO,KAAU,GAAE,KAAK,KAAZ,GAAiB,CAAO,IAAP,MAAe,IAAE,QAAQ,KAAf,EAAsB,KAAJ,GAAQ,IAAE,GAAG,OAAc,EAAE,cAAT,MAAuB,GAAE,OAAO,GAAG,GAAE,GAAU,UAAU,GAAE,MAAO,MACrf,GAAG,EAAE,GAAU,IAAP,MAAU,GAAG,EAAE,UAAU,eAAe,GAAE,GAAG,SAAU,IAAG,MAAO,IAAG,EAAE,KAAK,UAAU,GAAE,GAAG,SAAU,IAAG,MAAO,IAAG,EAAE,OAAO,KAAK,GAAE,GAAG,SAAU,IAA0B,GAAvB,EAAE,IAAG,EAAE,EAAE,cAAwB,IAAP,KAAS,MAAO,IAAE,GAAG,KAAuC,GAAlC,EAAO,GAAE,MAAM,OAAb,EAAkB,EAAE,EAAE,UAAoB,IAAP,KAAS,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAO,KAAJ,GAAc,IAAP,MAAe,GAAE,MAAM,OAAb,EAAkB,IAAI,EAAE,EAAE,MAAa,IAAP,MAAU,CAAS,GAAR,EAAE,GAAG,GAAa,IAAP,KAAS,CAAmG,IAAlG,EAAE,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,YAAmB,IAAP,MAAW,GAAE,YAAY,EAAE,EAAE,OAAO,GAAG,EAAE,aAAa,EAAE,EAAE,EAAM,EAAE,EAAE,MAAa,IAAP,MAAU,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,SAC7e,EAAE,EAAE,UAAiB,IAAP,KAAU,GAAE,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,KAAK,EAAE,aAAa,EAAE,EAAE,cAAc,KAAK,EAAE,cAAc,KAAK,EAAE,YAAY,KAAK,EAAE,aAAa,KAAK,EAAE,UAAU,MAAO,GAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,aAAoB,IAAP,KAAS,KAAK,CAAC,MAAM,EAAE,MAAM,aAAa,EAAE,eAAe,EAAE,EAAE,QAAQ,SAAE,GAAE,GAAE,QAAQ,EAAE,GAAU,EAAE,MAAM,EAClgB,EAAE,QAAe,EAAE,OAAT,MAAe,KAAI,IAAK,GAAE,OAAO,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAU,IAAP,MAAU,GAAG,EAAE,OAAO,IAAI,EAAE,GAAG,EAAE,EAAE,YAAmB,IAAP,MAAW,GAAE,YAAY,EAAE,EAAE,OAAO,GAAG,GAAG,EAAE,IAAW,EAAE,OAAT,MAA0B,EAAE,WAAb,UAAuB,CAAC,EAAE,WAAW,CAAC,GAAE,MAAO,IAAE,GAAG,SAAU,GAAE,KAAI,EAAE,mBAAmB,IAAiB,IAAb,YAAiB,GAAE,OAAO,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,SAAS,EAAE,YAAa,GAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAI,GAAE,EAAE,KAAY,IAAP,KAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,MAAU,GAAE,OAAT,KAAqB,GAAE,EAAE,KAAK,EAAE,UAC9e,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,KAAI,EAAE,QAAQ,KAAK,EAAE,GAAE,QAAQ,EAAE,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAE,IAAE,GAAU,UAAU,QAAQ,IAAG,MAAO,MAAK,EAAS,EAAE,gBAAT,KAA8B,IAAP,MAAiB,EAAE,gBAAT,OAAyB,GAAI,GAAE,OAAO,MAAM,GAAQ,GAAE,KAAK,KAAZ,EAAoB,IAAG,cAAR,GAAsB,IAAE,GAAG,EAAE,aAAa,GAAI,GAAE,OAAO,OAAO,GAAE,GAAG,SAAU,IAAG,MAAO,UAAU,IAAG,MAAO,MAAK,KAAM,OAAM,EAAE,IAAI,EAAE,MAC5W,YAAY,EAAE,EAAE,CAAO,OAAN,GAAG,GAAU,EAAE,SAAU,GAAE,MAAO,IAAG,EAAE,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAO,GAAE,MAAM,EAAE,OAAO,IAAI,GAAG,SAAU,GAAE,MAAO,MAAK,EAAE,GAAI,EAAE,GAAG,KAAK,EAAE,EAAE,MAAW,GAAE,SAAP,GAAoB,GAAE,OAAP,EAAa,GAAE,MAAM,EAAE,OAAO,IAAI,GAAG,SAAU,GAAE,MAAO,IAAG,GAAG,SAAU,IAA0B,GAAvB,EAAE,IAAG,EAAE,EAAE,cAAwB,IAAP,MAAiB,EAAE,aAAT,KAAoB,CAAC,GAAU,EAAE,YAAT,KAAmB,KAAM,OAAM,EAAE,MAAM,KAAK,SAAE,EAAE,MAAa,EAAE,MAAO,GAAE,MAAM,EAAE,OAAO,IAAI,GAAG,SAAU,IAAG,MAAO,GAAE,IAAG,SAAU,GAAE,MAAO,MAAK,SAAU,IAAG,MAAO,IAAG,EAAE,KAAK,UAAU,SAAU,QAAQ,IAAG,MAAO,MAC1gB,SAAU,IAAG,MAAO,cAAa,MAAO,OAAM,GAAI,IAAG,GAAG,GAAE,GAAG,GAAgB,MAAO,UAApB,WAA4B,QAAQ,IAAI,GAAE,KAAK,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,IAAI,GAAU,IAAP,KAAS,GAAgB,MAAO,IAApB,WAAsB,GAAG,CAAC,EAAE,YAAY,EAAN,CAAS,GAAE,EAAE,EAAE,OAAQ,GAAE,QAAQ,KAAK,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAN,CAAS,GAAE,EAAE,EAAE,IAAI,GAAI,IAAG,GACxR,YAAY,EAAE,EAAE,CAAc,GAAb,GAAG,GAAG,EAAE,KAAQ,EAAG,GAAG,CAAC,GAAG,kBAAmB,GAAE,GAAI,GAAE,CAAC,MAAM,EAAE,eAAe,IAAI,EAAE,kBAAmB,GAAE,CAAC,EAAG,GAAE,EAAE,gBAAgB,EAAE,aAAa,OAAO,GAAI,GAAE,EAAE,cAAc,EAAE,eAAe,GAAG,GAAO,EAAE,aAAN,EAAiB,CAAC,EAAE,EAAE,WAAW,GAAI,GAAE,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,GAAG,CAAC,EAAE,SAAS,EAAE,cAAS,CAAS,EAAE,KAAK,QAAQ,GAAI,GAAE,EAAE,GAAE,GAAG,GAAE,GAAG,GAAE,EAAE,GAAE,EAAE,GAAE,EAAE,GAAE,KAAK,EAAE,OAAO,CAAC,OAAQ,IAAK,KAAI,GAAO,IAAJ,GAAW,GAAE,WAAN,GAAiB,IAAE,EAAE,GAAG,KAAI,GAAO,IAAJ,GAAW,GAAE,WAAN,GAAiB,IAAE,EAAE,GAAO,GAAE,WAAN,GAAiB,IACnf,GAAE,UAAU,QAAmB,IAAE,GAAE,cAAZ,MAA8B,GAAE,GAAE,GAAE,GAAE,OAAO,CAAC,GAAG,KAAI,EAAE,QAAoD,GAA5C,KAAI,GAAG,EAAE,KAAI,GAAI,IAAE,GAAG,KAAI,GAAG,EAAE,KAAI,GAAI,IAAE,GAAc,IAAE,GAAE,eAAZ,KAAyB,MAAM,GAAE,GAAE,GAAE,GAAE,WAAW,GAAE,GAAE,EAAO,KAAL,IAAa,KAAL,GAAO,KAAK,CAAC,MAAM,GAAE,IAAI,QAAQ,GAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,OAAQ,GAAE,KAA+C,IAA1C,GAAG,CAAC,YAAY,EAAE,eAAe,GAAG,GAAG,GAAO,GAAE,EAAS,KAAP,MAAU,GAAG,EAAE,GAAE,EAAE,EAAE,MAAW,GAAE,aAAa,QAApB,GAAkC,IAAP,KAAS,EAAE,OAAO,EAAE,GAAE,MAAO,MAAY,KAAP,MAAU,CAAC,EAAE,GAAE,GAAG,CAAC,GAAI,IAAE,EAAE,UAAU,GAAQ,GAAE,MAAM,QAAb,EAAmB,OAAO,EAAE,SAAU,OAAO,QAAQ,IAAG,UACnf,GAAE,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,GAAE,cAAc,GAAE,GAAE,cAAc,GAAE,EAAE,UAAU,GAAE,GAAE,wBAAwB,EAAE,cAAc,EAAE,KAAK,GAAE,GAAG,EAAE,KAAK,IAAG,IAAG,GAAE,oCAAoC,GAAE,UAAW,GAAE,GAAI,IAAE,EAAE,UAAU,cAAkB,GAAE,WAAN,EAAe,GAAE,YAAY,GAAO,GAAE,WAAN,GAAgB,GAAE,iBAAiB,GAAE,YAAY,GAAE,iBAAiB,UAAW,OAAO,OAAO,OAAO,IAAG,cAAc,KAAM,OAAM,EAAE,aAAc,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,IAAe,GAAZ,EAAE,EAAE,QAAkB,IAAP,KAAS,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,EAAE,MAAM,GAAE,EAAE,OAAO,UAAE,GAAG,GAAG,GAAU,GAC1f,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,YAAyC,GAA7B,EAAS,IAAP,KAAS,EAAE,WAAW,KAAe,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAI,GAAE,IAAI,KAAK,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,EAAE,QAAQ,OAAgB,IAAT,QAAY,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,WAAW,IAAI,IAAI,YAAY,EAAE,EAAE,CAA8C,GAA7C,EAAE,EAAE,YAAY,EAAS,IAAP,KAAS,EAAE,WAAW,KAAe,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAI,GAAE,IAAI,KAAK,EAAE,CAAC,GAAI,GAAE,EAAE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,WAAW,IAAI,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,IAAI,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,UAAU,OAAO,EAAE,SAAU,GAAE,EAAE,EAAE,cAAc,EAAE,EAAe,MAAO,IAApB,WAAsB,EAAE,GAAG,EAAE,QAAQ,GAChf,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,UAAiB,IAAP,MAAW,GAAE,UAAU,KAAK,GAAG,IAAI,EAAE,MAAM,KAAK,EAAE,UAAU,KAAK,EAAE,QAAQ,KAAS,EAAE,MAAN,GAAY,GAAE,EAAE,UAAiB,IAAP,MAAW,OAAO,GAAE,IAAI,MAAO,GAAE,IAAI,MAAO,GAAE,IAAI,MAAO,GAAE,IAAI,MAAO,GAAE,MAAM,EAAE,UAAU,KAAK,EAAE,OAAO,KAAK,EAAE,aAAa,KAAK,EAAE,cAAc,KAAK,EAAE,cAAc,KAAK,EAAE,aAAa,KAAK,EAAE,UAAU,KAAK,EAAE,YAAY,KAAK,YAAY,EAAE,CAAC,MAAW,GAAE,MAAN,GAAe,EAAE,MAAN,GAAe,EAAE,MAAN,EAC1Z,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,KAAY,EAAE,UAAT,MAAkB,CAAC,GAAU,EAAE,SAAT,MAAiB,GAAG,EAAE,QAAQ,MAAO,MAAK,EAAE,EAAE,OAAiC,IAA1B,EAAE,QAAQ,OAAO,EAAE,OAAW,EAAE,EAAE,QAAY,EAAE,MAAN,GAAe,EAAE,MAAN,GAAgB,EAAE,MAAP,IAAY,CAAyB,GAArB,EAAE,MAAM,GAAuB,EAAE,QAAT,MAAoB,EAAE,MAAN,EAAU,WAAgB,EAAE,MAAM,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,CAAE,GAAE,MAAM,GAAG,MAAO,GAAE,WAC/S,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,IAAI,GAAO,IAAJ,GAAW,IAAJ,EAAM,EAAE,EAAE,UAAU,EAAM,EAAE,WAAN,EAAe,EAAE,WAAW,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,GAAI,CAAI,EAAE,WAAN,EAAgB,GAAE,EAAE,WAAW,EAAE,aAAa,EAAE,IAAK,GAAE,EAAE,EAAE,YAAY,IAAI,EAAE,EAAE,oBAA2B,GAAP,MAA6B,EAAE,UAAT,MAAmB,GAAE,QAAQ,aAAiB,IAAJ,GAAQ,GAAE,EAAE,MAAa,IAAP,MAAU,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAAe,IAAP,MAAU,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QACnX,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,IAAI,GAAO,IAAJ,GAAW,IAAJ,EAAM,EAAE,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,WAAe,IAAJ,GAAQ,GAAE,EAAE,MAAa,IAAP,MAAU,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAAe,IAAP,MAAU,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,GAAI,IAAE,KAAK,GAAG,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,MAAa,IAAP,MAAU,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAC5Q,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,IAAiB,MAAO,IAAG,sBAAvB,WAA4C,GAAG,CAAC,GAAG,qBAAqB,GAAG,QAAG,EAAU,OAAO,EAAE,SAAU,GAAE,IAAG,GAAG,EAAE,OAAQ,GAAE,GAAI,GAAE,GAAE,EAAE,GAAG,GAAE,KAAK,GAAG,EAAE,EAAE,GAAG,GAAE,EAAE,GAAG,EAAS,KAAP,MAAW,IAAI,GAAE,GAAE,EAAE,EAAE,UAAc,EAAE,WAAN,EAAe,EAAE,WAAW,YAAY,GAAG,EAAE,YAAY,IAAI,GAAE,YAAY,EAAE,YAAY,UAAW,IAAU,KAAP,MAAW,IAAI,GAAE,GAAE,EAAE,EAAE,UAAc,EAAE,WAAN,EAAe,GAAG,EAAE,WAAW,GAAO,EAAE,WAAN,GAAgB,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,GAAE,EAAE,YAAY,UAAW,GAAE,EAAE,GAAE,EAAE,GAAG,GAAE,EAAE,UAAU,cAAc,GAAG,GAClf,GAAG,EAAE,EAAE,GAAG,GAAE,EAAE,GAAG,EAAE,UAAW,OAAO,QAAQ,QAAQ,IAAG,GAAG,CAAC,IAAI,GAAE,EAAE,YAAmB,IAAP,MAAW,GAAE,EAAE,WAAkB,IAAP,OAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAa,IAAT,QAAa,CAAK,GAAE,KAAP,GAAyB,GAAE,KAAP,IAAW,GAAG,EAAE,EAAE,GAAI,EAAE,EAAE,WAAW,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,UAAW,GAAE,GAAG,CAAC,IAAI,IAAG,EAAE,GAAG,EAAE,EAAE,UAAuB,MAAO,GAAE,sBAAtB,YAA4C,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,6BAA6B,GAAN,CAAS,GAAE,EAAE,EAAE,IAAG,GAAG,EAAE,EAAE,GAAG,UAAW,IAAG,GAAG,EAAE,EAAE,GAAG,UAAW,IAAG,EAAE,KAAK,EAAG,IAAG,GAAE,KAC5e,EAAE,gBAD8e,KAChe,GAAG,EAAE,EAAE,GAAG,GAAE,GAAG,GAAG,EAAE,EAAE,GAAG,cAAc,GAAG,EAAE,EAAE,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,YAAY,GAAU,IAAP,KAAS,CAAC,EAAE,YAAY,KAAK,GAAI,GAAE,EAAE,UAAiB,IAAP,MAAW,GAAE,EAAE,UAAU,GAAI,KAAI,EAAE,QAAQ,SAAS,EAAE,CAAC,GAAI,GAAE,GAAG,KAAK,KAAK,EAAE,GAAG,EAAE,IAAI,IAAK,GAAE,IAAI,GAAG,EAAE,KAAK,EAAE,OACnQ,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,GAAU,IAAP,KAAS,OAAQ,GAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,GAAG,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,GAAE,EAAE,EAAE,KAAY,KAAP,MAAU,CAAC,OAAO,GAAE,SAAU,GAAE,GAAE,GAAE,UAAU,GAAG,GAAG,YAAa,GAAE,GAAE,GAAE,UAAU,cAAc,GAAG,GAAG,YAAa,GAAE,GAAE,GAAE,UAAU,cAAc,GAAG,GAAG,QAAQ,GAAE,GAAE,OAAO,GAAU,KAAP,KAAS,KAAM,OAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,GAAE,KAAK,GAAG,GAAG,GAAI,IAAE,EAAE,UAAiB,KAAP,MAAW,IAAE,OAAO,MAAM,EAAE,OAAO,WAAW,GAAN,CAAS,GAAE,EAAE,EAAE,KAAI,GAAG,EAAE,aAAa,MAAM,IAAI,EAAE,EAAE,MAAa,IAAP,MAAU,GAAG,EAAE,GAAG,EAAE,EAAE,QAC1d,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,EAAE,EAAE,MAAM,OAAO,EAAE,SAAU,OAAO,QAAQ,QAAQ,IAAiB,GAAd,GAAG,EAAE,GAAG,GAAG,GAAM,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,GAAG,EAAE,SAAS,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,IAAG,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,cAAc,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,KAAI,UAAW,GAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAY,IAAP,MAAU,GAAG,EAAE,EAAE,QAAQ,UAAW,GAAgD,GAA9C,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAY,IAAP,MAAU,GAAG,EAAE,EAAE,QAAW,EAAE,MAAM,GAAG,CAAC,GAAI,GAAE,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,UAAU,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,KAAI,GAAG,EAAE,GAAI,GAAE,EAAE,UAAgB,GAAN,MAAS,CAAC,GAAI,GAAE,EAAE,cAAc,EAAS,IAAP,KAAS,EAAE,cAAc,EAAE,GAAE,EAAE,KAAK,GAAE,EAAE,YACje,GAAnB,EAAE,YAAY,KAAe,KAAP,KAAS,GAAG,CAAW,KAAV,SAAuB,EAAE,OAAZ,SAAwB,EAAE,MAAR,MAAc,GAAG,EAAE,GAAG,GAAG,GAAE,GAAG,GAAI,IAAE,GAAG,GAAE,GAAG,IAAI,EAAE,EAAE,EAAE,GAAE,OAAO,GAAG,EAAE,CAAC,GAAI,IAAE,GAAE,GAAG,GAAE,GAAE,EAAE,GAAa,KAAV,QAAY,GAAG,EAAE,IAA+B,KAA5B,0BAA8B,GAAG,EAAE,IAAgB,KAAb,WAAe,GAAG,EAAE,IAAG,EAAG,EAAE,GAAE,GAAE,IAAG,OAAO,QAAQ,QAAQ,GAAG,EAAE,GAAG,UAAW,WAAW,GAAG,EAAE,GAAG,UAAW,SAAS,GAAI,IAAE,EAAE,cAAc,YAAY,EAAE,cAAc,YAAY,CAAC,CAAC,EAAE,SAAS,GAAI,IAAE,EAAE,MAAY,IAAN,KAAQ,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,GAAE,IAAI,KAAI,CAAC,CAAC,EAAE,UAAW,CAAM,EAAE,cAAR,KAAqB,GAAG,EAAE,CAAC,CAAC,EAAE,SACnf,EAAE,aAAa,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,KAAK,EAAE,IAAI,QAAQ,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,KAAI,UAAW,GAAgB,GAAd,GAAG,EAAE,GAAG,GAAG,GAAM,EAAE,EAAE,CAAC,GAAU,EAAE,YAAT,KAAmB,KAAM,OAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,CAAC,EAAE,UAAU,QAAQ,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,KAAI,UAAW,GAAgB,GAAd,GAAG,EAAE,GAAG,GAAG,GAAM,EAAE,GAAU,IAAP,MAAU,EAAE,cAAc,aAAa,GAAG,CAAC,GAAG,EAAE,qBAAqB,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,IAAG,UAAW,GAAE,GAAG,EAAE,GAAG,GAAG,GAAG,UAAW,IAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,MAAO,GAAS,EAAE,gBAAT,KAAuB,EAAE,UAAU,SAAS,EAAE,CAAC,GAC3e,EAAE,YAAT,MAA2B,EAAE,UAAU,gBAAnB,MAAmC,IAAG,OAAM,EAAE,GAAG,GAAG,GAAG,UAAW,IAAsF,GAAnF,GAAS,IAAP,MAAiB,EAAE,gBAAT,KAAuB,EAAE,KAAK,EAAG,IAAG,IAAE,KAAI,GAAE,GAAG,EAAE,GAAG,GAAE,IAAG,GAAG,EAAE,GAAG,GAAG,GAAM,EAAE,KAAK,CAA0B,GAAzB,GAAS,EAAE,gBAAT,KAA2B,GAAE,UAAU,SAAS,KAAI,CAAC,IAAQ,GAAE,KAAK,KAAZ,EAAe,IAAI,GAAE,EAAE,GAAE,EAAE,MAAa,KAAP,MAAU,CAAC,IAAI,GAAE,GAAE,GAAS,KAAP,MAAU,CAAe,OAAd,GAAE,GAAE,GAAE,GAAE,MAAa,GAAE,SAAU,OAAO,QAAQ,QAAQ,IAAG,GAAG,EAAE,GAAE,GAAE,QAAQ,UAAW,GAAE,GAAG,GAAE,GAAE,QAAQ,GAAI,IAAE,GAAE,UAAU,GAAgB,MAAO,IAAE,sBAAtB,WAA2C,CAAC,EAAE,GAAE,EAAE,GAAE,OAAO,GAAG,CAAC,EAAE,EAAE,GAAE,MACpf,EAAE,cAAc,GAAE,MAAM,EAAE,cAAc,GAAE,6BAA6B,GAAN,CAAS,GAAE,EAAE,EAAE,KAAI,UAAW,GAAE,GAAG,GAAE,GAAE,QAAQ,UAAW,IAAG,GAAU,GAAE,gBAAT,KAAuB,CAAC,GAAG,IAAG,UAAiB,KAAP,KAAU,IAAE,OAAO,GAAE,GAAE,IAAG,GAAG,IAAG,GAAE,GAAE,QAAQ,EAAE,IAAI,GAAE,KAAK,GAAE,IAAI,CAAC,GAAO,GAAE,MAAN,GAAW,GAAU,KAAP,KAAS,CAAC,GAAE,GAAE,GAAG,CAAC,EAAE,GAAE,UAAU,GAAG,GAAE,EAAE,MAAmB,MAAO,GAAE,aAAtB,WAAkC,EAAE,YAAY,UAAU,OAAO,aAAa,EAAE,QAAQ,QAAS,IAAE,GAAE,UAAU,GAAE,GAAE,cAAc,MAAM,EAAqB,IAAP,MAAU,GAAE,eAAe,WAAW,GAAE,QAAQ,KAAK,GAAE,MAAM,QACzf,GAAG,UAAU,UAAU,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,cAAiB,GAAE,MAAN,GAAW,GAAU,KAAP,KAAS,GAAG,CAAC,GAAE,UAAU,UAAU,GAAE,GAAG,GAAE,oBAAoB,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,aAAa,CAAK,GAAE,MAAP,IAAiB,GAAE,MAAP,IAAmB,GAAE,gBAAT,MAAwB,KAAI,IAAW,GAAE,QAAT,KAAe,CAAC,GAAE,MAAM,OAAO,GAAE,GAAE,GAAE,MAAM,SAAS,GAAG,KAAI,EAAE,QAAQ,KAAY,GAAE,UAAT,MAAkB,CAAC,GAAU,GAAE,SAAT,MAAiB,GAAE,SAAS,EAAE,QAAQ,KAAI,IAAI,IAAE,MAAM,GAAE,GAAE,OAAO,KAAI,IAAI,IAAE,MAAM,GAAE,QAAQ,OAAO,GAAE,OAAO,GAAE,GAAE,SAAS,UAAW,IAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,UAAW,IAAG,cAAc,GAAG,EACnf,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAQ,GAAE,EAAE,OAAc,IAAP,MAAU,CAAC,GAAG,GAAG,GAAG,CAAC,GAAI,GAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,KAAM,OAAM,EAAE,MAAO,OAAO,EAAE,SAAU,GAAE,GAAI,GAAE,EAAE,UAAU,EAAE,MAAM,IAAK,IAAG,EAAE,IAAI,EAAE,OAAO,KAAK,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,UAAW,OAAO,GAAE,GAAI,GAAE,EAAE,UAAU,cAAc,GAAE,GAAG,GAAG,GAAG,EAAE,GAAE,GAAG,cAAc,KAAM,OAAM,EAAE,aAAc,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,IAAG,EAAE,OAAO,GAAG,EAAE,MAAO,GAAE,OAAO,OAAO,YAAY,EAAE,EAAE,EAAE,CAAC,GAAE,EAAE,GAAG,EAAE,EAAE,GACrb,YAAY,EAAE,EAAE,EAAE,CAAC,OAAQ,GAAO,GAAE,KAAK,KAAZ,EAAsB,KAAP,MAAU,CAAC,GAAI,GAAE,GAAE,EAAE,EAAE,MAAM,GAAQ,EAAE,MAAP,IAAY,EAAE,CAAC,GAAI,GAAS,EAAE,gBAAT,MAAwB,GAAG,GAAG,CAAC,EAAE,CAAC,GAAI,IAAE,EAAE,UAAU,GAAS,KAAP,MAAiB,GAAE,gBAAT,MAAwB,GAAE,GAAE,GAAG,GAAI,IAAE,GAAO,GAAL,GAAG,EAAM,IAAE,KAAI,CAAC,GAAE,IAAI,GAAE,EAAS,KAAP,MAAU,EAAE,GAAE,GAAE,EAAE,MAAW,EAAE,MAAP,IAAmB,EAAE,gBAAT,KAAuB,GAAG,GAAU,KAAP,KAAU,IAAE,OAAO,EAAE,GAAE,IAAG,GAAG,GAAG,KAAY,IAAP,MAAU,GAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,GAAE,EAAE,GAAG,GAAE,GAAE,GAAE,GAAG,EAAE,EAAE,OAAa,GAAE,aAAa,QAApB,GAAkC,IAAP,KAAU,GAAE,OAAO,EAAE,GAAE,GAAG,GAAG,EAAE,EAAE,IACpc,YAAY,EAAE,CAAC,KAAY,KAAP,MAAU,CAAC,GAAI,GAAE,GAAE,GAAQ,GAAE,MAAM,QAAb,EAAmB,CAAC,GAAI,GAAE,EAAE,UAAU,GAAG,CAAC,GAAQ,GAAE,MAAM,QAAb,EAAmB,OAAO,EAAE,SAAU,OAAO,QAAQ,IAAG,IAAG,GAAG,EAAE,GAAG,UAAW,GAAE,GAAI,GAAE,EAAE,UAAU,GAAG,EAAE,MAAM,GAAG,CAAC,GAAE,GAAU,IAAP,KAAS,EAAE,wBAAwB,CAAC,GAAI,GAAE,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,EAAE,cAAc,EAAE,qCAAqC,GAAI,GAAE,EAAE,YAAmB,IAAP,MAAU,GAAG,EAAE,EAAE,GAAG,UAAW,GAAE,GAAI,GAAE,EAAE,YAAY,GAAU,IAAP,KAAS,CAAQ,GAAP,EAAE,KAAe,EAAE,QAAT,KAAe,OAAO,EAAE,MAAM,SAAU,GAAE,EACjhB,EAAE,MAAM,UAAU,UAAW,GAAE,EAAE,EAAE,MAAM,UAAU,GAAG,EAAE,EAAE,GAAG,UAAW,GAAE,GAAI,IAAE,EAAE,UAAU,GAAU,IAAP,MAAU,EAAE,MAAM,EAAE,CAAC,EAAE,GAAE,GAAI,IAAE,EAAE,cAAc,OAAO,EAAE,UAAW,aAAc,YAAa,aAAc,WAAW,GAAE,WAAW,EAAE,QAAQ,UAAW,MAAM,GAAE,KAAM,GAAE,IAAI,GAAE,MAAM,UAAW,GAAE,UAAW,GAAE,UAAW,IAAG,UAAW,IAAG,GAAU,EAAE,gBAAT,KAAuB,CAAC,GAAI,IAAE,EAAE,UAAU,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,GAAE,cAAc,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,GAAE,WAAkB,KAAP,MAAU,GAAG,MAAK,UAAW,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IAAG,cAC1f,KAAM,OAAM,EAAE,MAAO,IAAG,EAAE,MAAM,KAAK,GAAG,SAAS,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,KAAI,GAAG,IAAI,EAAE,CAAC,GAAE,KAAK,MAAkB,GAAZ,EAAE,EAAE,QAAkB,IAAP,KAAS,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,EAAE,MAAM,GAAE,EAAE,QAAQ,YAAY,EAAE,CAAC,KAAY,KAAP,MAAU,CAAC,GAAI,GAAE,GAAE,GAAG,IAAI,EAAE,CAAC,GAAE,KAAK,MAAM,GAAI,GAAE,EAAE,QAAQ,GAAU,IAAP,KAAS,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,EAAE,MAAM,GAAE,EAAE,QAChS,YAAY,EAAE,CAAC,KAAY,KAAP,MAAU,CAAC,GAAI,GAAE,GAAE,GAAG,CAAC,OAAO,EAAE,SAAU,OAAO,QAAQ,IAAG,GAAI,GAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,GAAN,CAAS,GAAE,EAAE,EAAE,IAAG,UAAW,GAAE,GAAI,GAAE,EAAE,UAAU,GAAgB,MAAO,GAAE,mBAAtB,WAAwC,CAAC,GAAI,GAAE,EAAE,OAAO,GAAG,CAAC,EAAE,0BAA0B,GAAN,CAAS,GAAE,EAAE,EAAE,KAAI,GAAI,GAAE,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,GAAN,CAAS,GAAE,EAAE,EAAE,IAAG,UAAW,GAAE,GAAI,GAAE,EAAE,OAAO,GAAG,CAAC,GAAG,SAAS,GAAN,CAAS,GAAE,EAAE,EAAE,YAAW,GAAN,CAAS,GAAE,EAAE,EAAE,OAAO,IAAG,GAAG,IAAI,EAAE,CAAC,GAAE,KAAK,MAAM,GAAI,IAAE,EAAE,QAAQ,GAAU,KAAP,KAAS,CAAC,GAAE,OAAO,EAAE,OAAO,GAAE,GAAE,MAAM,GAAE,EAAE,QACtd,GAAI,IAAG,KAAK,KAAK,GAAG,GAAG,uBAAuB,GAAG,GAAG,kBAAkB,GAAG,GAAG,wBAAwB,GAAE,EAAE,GAAE,KAAK,GAAE,KAAK,GAAE,EAAE,GAAG,EAAE,GAAG,EAAG,GAAG,GAAE,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,IAAS,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,aAAY,CAAC,MAAY,IAAE,KAAP,EAAU,KAAS,KAAL,GAAQ,GAAG,GAAG,KAC7T,YAAY,EAAE,CAAC,MAAQ,GAAE,KAAK,KAAZ,EAAsB,EAAU,IAAE,KAAP,GAAe,KAAJ,EAAa,GAAE,CAAC,GAAY,GAAG,aAAV,KAA4B,CAAI,KAAJ,GAAS,IAAG,MAAM,IAAG,GAAE,GAAS,IAAJ,GAAe,GAAE,OAAO,MAAM,EAAW,IAAT,OAAW,GAAG,GAAG,EAAE,OAAa,GAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,KAAM,IAAG,EAAE,GAAG,KAAK,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAM,CAAK,IAAE,KAAP,GAAW,IAAI,KAAE,KAAI,IAAI,CAAK,IAAE,KAAP,GAAY,KAAI,GAAO,KAAJ,GAAO,GAAG,EAAE,KAAI,GAAG,EAAE,GAAO,IAAJ,GAAW,KAAJ,GAAY,GAAE,KAAK,KAAZ,GAAiB,IAAG,KAAI,IAAI,IAAI,OACrY,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,aAAa,GAAG,EAAE,GAAG,GAAI,GAAE,GAAG,EAAE,IAAI,GAAE,GAAE,GAAG,GAAO,IAAJ,EAAa,IAAP,MAAU,GAAG,GAAG,EAAE,aAAa,KAAK,EAAE,iBAAiB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,mBAAmB,EAAE,CAAgB,GAAT,GAAN,MAAS,GAAG,GAAU,IAAJ,EAAU,EAAE,MAAN,EAAU,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,UAAU,CAAM,IAAE,KAAP,GAAW,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,QAAS,GAAE,EAAE,GAAG,UAAW,GAAE,EAAE,GAAG,UAAW,IAAG,EAAE,GAAG,UAAW,WAAU,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,KAAK,IAAI,EAAE,iBAAiB,EAAE,EAAE,aAAa,GAC3c,YAAY,EAAE,EAAE,CAAY,GAAX,GAAG,GAAG,GAAG,EAAU,IAAE,KAAP,EAAU,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,EAAE,aAAa,GAAG,MAAM,EAAE,eAAe,EAAE,MAAO,MAAK,GAAI,GAAE,GAAG,EAAE,IAAI,GAAE,GAAE,GAAG,GAAO,IAAJ,EAAM,MAAO,MAAK,GAAQ,GAAE,MAAP,GAAiB,GAAE,EAAE,gBAAT,GAAwB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,GAAI,GAAE,GAAE,IAAG,EAAE,GAAI,GAAE,KAAQ,MAAI,GAAG,KAAI,IAAE,IAAG,KAAK,GAAG,KAAI,IAAI,GAAG,EAAE,IAAG,EAAG,IAAG,CAAC,KAAK,YAAY,GAAN,CAAS,GAAG,EAAE,UAAS,GAAG,KAAK,GAAG,QAAQ,EAAE,GAAE,EAAS,KAAP,KAAS,EAAE,EAAG,IAAE,KAAK,GAAE,EAAE,EAAE,IAAG,GAAO,IAAJ,EAAM,CAAyC,GAApC,IAAJ,GAAQ,GAAE,GAAG,GAAO,IAAJ,GAAQ,GAAE,EAAE,EAAE,GAAG,EAAE,KAAY,IAAJ,EAAM,KAAM,GAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,MAAK,EAAE,GAAO,IAAJ,EAAM,GAAG,EAAE,OAChf,CAAuB,GAAtB,EAAE,EAAE,QAAQ,UAAkB,GAAE,MAAP,GAAY,CAAC,GAAG,IAAK,GAAE,GAAG,EAAE,GAAO,IAAJ,GAAQ,GAAE,GAAG,GAAO,IAAJ,GAAQ,GAAE,EAAE,EAAE,GAAG,EAAE,KAAS,IAAJ,GAAO,KAAM,GAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,MAAK,EAAqC,OAAnC,EAAE,aAAa,EAAE,EAAE,cAAc,EAAS,OAAQ,OAAO,GAAE,KAAM,OAAM,EAAE,UAAW,GAAE,GAAG,EAAE,GAAG,IAAI,UAAW,GAAU,GAAR,GAAG,EAAE,GAAO,GAAE,aAAa,GAAI,GAAE,GAAG,IAAI,KAAI,GAAG,GAAG,CAAC,GAAO,GAAG,EAAE,KAAT,EAAY,MAAyB,GAAnB,EAAE,EAAE,eAAmB,GAAE,KAAK,EAAE,CAAC,KAAI,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAG,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,UAAW,GAAU,GAAR,GAAG,EAAE,GAAO,GAAE,WAChf,EAAE,MAAqB,IAAf,EAAE,EAAE,WAAe,EAAE,GAAG,EAAE,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAI,GAAE,GAAG,GAAG,CAAC,EAAsG,GAApG,EAAE,EAAE,EAAE,KAAI,EAAE,EAAG,KAAI,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,OAAO,EAAK,GAAG,EAAE,CAAC,EAAE,cAAc,GAAG,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,UAAW,GAAE,GAAG,EAAE,GAAG,IAAI,cAAc,KAAM,OAAM,EAAE,QAAS,UAAG,EAAE,MAAY,EAAE,eAAe,EAAE,GAAG,KAAK,KAAK,GAAG,KACjX,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAG,SAAE,QAAQ,cAAc,cAAe,IAAG,EAAE,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,GAAO,IAAJ,GAAQ,GAAE,GAAG,GAAG,EAAS,IAAP,MAAU,GAAG,IAAW,EAAE,YAAY,EAAE,CAAQ,KAAP,KAAU,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,GAC1L,YAAY,EAAE,CAAC,OAAQ,GAAE,IAAI,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,GAAI,GAAE,EAAE,YAAY,GAAU,IAAP,MAAW,GAAE,EAAE,OAAc,IAAP,MAAU,OAAQ,GAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,QAAG,CAAS,MAAM,KAAe,GAAV,EAAE,EAAE,MAAS,EAAE,aAAa,OAAc,IAAP,KAAS,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,KAAY,EAAE,UAAT,MAAkB,CAAC,GAAU,EAAE,SAAT,MAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,MAAM,GACha,YAAY,EAAE,EAAE,CAAqD,IAApD,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,aAAa,CAAC,EAAM,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,GAAQ,IAAE,KAAP,EAAU,KAAM,OAAM,EAAE,MAAM,KAAK,GAAI,GAAE,GAAG,EAAE,GAAG,GAAQ,GAAE,KAAP,EAAU,MAAO,IAAG,EAAE,MAAK,KAAK,GAAI,GAAE,GAAG,EAAE,GAAG,GAAO,EAAE,MAAN,GAAe,IAAJ,EAAM,CAAC,GAAI,GAAE,GAAG,GAAO,IAAJ,GAAQ,GAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAO,IAAJ,EAAM,KAAM,GAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,MAAK,EAAE,GAAO,IAAJ,EAAM,KAAM,OAAM,EAAE,MAAM,SAAE,aAAa,EAAE,QAAQ,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,MAAY,KACnd,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,IAAG,EAAE,GAAG,CAAC,MAAO,GAAE,UAAG,CAAQ,GAAE,EAAM,KAAJ,GAAQ,IAAG,KAAI,IAAI,IAAI,OAAO,YAAY,EAAE,CAAQ,KAAP,MAAe,GAAG,MAAP,GAAiB,IAAE,KAAP,GAAW,KAAK,GAAI,GAAE,GAAE,IAAG,EAAE,GAAI,GAAE,GAAG,WAAW,EAAE,GAAE,GAAG,CAAC,GAAG,GAAG,WAAW,KAAK,GAAE,EAAE,EAAE,MAAO,YAAI,CAAQ,GAAE,EAAE,GAAG,WAAW,EAAE,GAAE,EAAO,IAAE,KAAP,GAAW,MAAM,aAAa,CAAC,GAAG,GAAG,QAAQ,EAAE,IAC7S,YAAY,EAAE,EAAE,CAAC,EAAE,aAAa,KAAK,EAAE,cAAc,EAAE,GAAI,GAAE,EAAE,cAAiD,GAA9B,IAAL,IAAS,GAAE,cAAc,GAAG,GAAG,IAAc,KAAP,KAAS,IAAI,EAAE,GAAE,OAAc,IAAP,MAAU,CAAC,GAAI,GAAE,EAAQ,OAAN,GAAG,GAAU,EAAE,SAAU,GAAE,EAAE,EAAE,KAAK,kBAAyB,GAAP,MAAsB,KAAK,UAAW,GAAE,KAAK,EAAE,GAAI,EAAE,GAAG,KAAK,UAAW,GAAE,GAAG,GAAG,UAAW,GAAE,KAAK,UAAW,IAAG,EAAE,IAAG,UAAW,IAAG,EAAE,IAAG,UAAW,IAAG,GAAG,EAAE,KAAK,UAAU,UAAW,QAAQ,IAAG,KAAK,EAAE,EAAE,OAA2E,GAApE,GAAE,EAAE,GAAE,EAAE,GAAG,EAAE,QAAQ,MAAM,GAAE,GAAG,EAAE,GAAE,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,KAAe,KAAP,KAAU,CAAC,IAAI,EAC1f,EAAE,EAAE,GAAG,OAAO,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,YAAmB,IAAP,KAAS,CAAC,EAAE,YAAY,KAAK,GAAI,GAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,MAAO,GAC1K,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,GAAI,GAAE,GAAE,GAAG,CAAoB,GAAnB,KAAK,GAAG,QAAQ,GAAM,GAAG,CAAC,OAAQ,GAAE,GAAE,cAAqB,IAAP,MAAU,CAAC,GAAI,GAAE,EAAE,MAAa,IAAP,MAAW,GAAE,QAAQ,MAAM,EAAE,EAAE,KAAK,GAAG,GAA8C,GAA3C,GAAG,EAAE,GAAE,GAAE,GAAE,KAAK,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,KAAe,IAAP,MAAiB,EAAE,SAAT,KAAgB,CAAC,GAAE,EAAE,GAAG,EAAE,GAAE,KAAK,MAAM,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,EAAE,OAAO,GAAE,EAAE,GAAE,EAAqB,GAAnB,EAAE,GAAE,GAAE,OAAO,MAAgB,KAAP,MAAqB,MAAO,KAAlB,UAAkC,MAAO,IAAE,MAAtB,WAA2B,CAAC,GAAI,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAI,GAAQ,IAAE,KAAK,KAAZ,GAAiB,CAAI,KAAJ,GAAY,KAAL,IAAa,KAAL,IAAQ,CAAC,GAAI,IAAE,GAAE,UAAU,GAAG,IAAE,YAAY,GAAE,YAAY,GAAE,cAAc,GAAE,cACxe,GAAE,MAAM,GAAE,OAAQ,IAAE,YAAY,KAAK,GAAE,cAAc,MAAM,GAAI,IAAE,GAAG,GAAG,GAAU,KAAP,KAAS,CAAC,GAAE,OAAO,KAAK,GAAG,GAAE,EAAE,GAAE,EAAE,GAAG,GAAE,KAAK,GAAG,GAAG,EAAE,GAAE,GAAG,EAAE,GAAE,GAAE,GAAE,GAAI,IAAE,EAAE,YAAY,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,GAAI,KAAI,GAAE,IAAI,IAAG,EAAE,YAAY,OAAO,IAAE,IAAI,IAAG,YAAY,CAAC,GAAQ,GAAE,KAAP,EAAU,CAAC,GAAG,EAAE,GAAE,GAAG,KAAK,QAAQ,GAAE,MAAM,EAAE,eAAe,IAAG,GAAE,KAAK,EAAE,CAAC,GAAI,IAAE,GAAG,GAAG,GAAU,KAAP,KAAS,CAAM,IAAE,MAAM,SAAb,GAAsB,IAAE,OAAO,KAAK,GAAG,GAAE,EAAE,GAAE,EAAE,GAAG,GAAG,GAAG,GAAE,KAAI,SAAS,EAAE,GAAE,GAAG,GAAE,IAAO,KAAJ,GAAQ,IAAE,GAAU,KAAP,KAAU,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,EAAE,OAAO,MACpf,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAI,IAAE,GAAG,EAAE,GAAE,GAAG,GAAG,EAAE,IAAG,YAAa,GAAE,GAAE,GAAE,GAAI,IAAE,EAAE,KAAK,GAAE,EAAE,UAAU,GAAQ,GAAE,MAAM,OAAb,GAAoB,CAAa,MAAO,IAAE,0BAAtB,YAAuD,KAAP,MAAuB,MAAO,IAAE,mBAAtB,YAA0C,CAAO,KAAP,MAAW,CAAC,GAAG,IAAI,MAAK,CAAC,EAAE,OAAO,MAAM,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAI,IAAE,GAAG,EAAE,GAAE,GAAG,GAAG,EAAE,IAAG,SAAS,EAAE,EAAE,aAAoB,IAAP,MAAU,GAAG,SAAS,GAAN,CAAU,EAAE,GAAG,KAAI,GAAU,IAAP,MAAW,IAAE,EAAE,EAAE,QAAQ,SAAS,YAAY,GAAG,aAAa,CAAC,GAAI,GAAE,GAAG,QAAQ,UAAG,QAAQ,GAAiB,IAAP,KAAS,GAAG,EACpd,aAAa,CAAI,CAAI,KAAJ,GAAW,KAAJ,GAAW,KAAJ,IAAM,IAAE,GAAS,KAAP,MAAe,IAAG,aAAR,GAAyB,IAAG,aAAR,GAAoB,GAAG,GAAE,IAAG,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,IAAG,EAAE,GAAI,GAAE,KAAQ,MAAI,GAAG,KAAI,IAAE,IAAG,KAAK,GAAG,EAAE,IAAG,EAAG,IAAG,CAAC,KAAK,YAAY,EAAN,CAAS,GAAG,EAAE,SAAS,GAAyB,GAAtB,KAAK,GAAE,EAAE,GAAG,QAAQ,EAAY,KAAP,KAAS,KAAM,OAAM,EAAE,MAAM,UAAE,KAAK,GAAE,EAAS,GAAE,aAAa,CAAC,KAAY,KAAP,MAAU,GAAG,IAAG,aAAa,CAAC,KAAY,KAAP,MAAU,CAAC,MAAM,GAAG,IAAG,YAAY,EAAE,CAAC,GAAI,GAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,aAAoB,IAAP,KAAS,GAAG,GAAG,GAAE,EAAE,GAAG,QAAQ,KACtd,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAqB,GAAX,EAAE,EAAE,OAAe,GAAE,MAAM,SAAb,GAAqB,GAAG,EAAE,GAAG,EAAE,EAAE,IAAW,IAAP,KAAS,CAAC,GAAE,EAAE,YAAY,CAAW,GAAV,EAAE,GAAG,EAAE,GAAa,IAAP,KAAS,CAAC,EAAE,OAAO,MAAM,GAAE,EAAE,OAAO,GAAU,IAAP,KAAS,EAAE,OAAO,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,SAAS,CAAC,GAAE,EAAE,GAAE,KAAK,QAAoB,GAAZ,EAAE,EAAE,QAAkB,IAAP,KAAS,CAAC,GAAE,EAAE,OAAO,GAAE,EAAE,QAAe,IAAP,MAAc,KAAJ,GAAQ,IAAE,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,EAAE,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,KAAK,GAAE,EAAE,GAAG,EAAE,EAAE,EAAE,UAAG,CAAQ,GAAG,WAAW,EAAE,GAAE,EAAE,MAAO,MAC5b,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,EAAG,YAAkB,KAAP,MAAW,GAAQ,IAAE,KAAP,EAAU,KAAM,OAAM,EAAE,MAAM,EAAE,EAAE,aAAa,GAAI,GAAE,EAAE,cAAc,GAAU,IAAP,KAAS,MAAO,MAA2C,GAAtC,EAAE,aAAa,KAAK,EAAE,cAAc,EAAK,IAAI,EAAE,QAAQ,KAAM,OAAM,EAAE,MAAM,EAAE,aAAa,KAAK,EAAE,iBAAiB,EAAE,GAAI,GAAE,EAAE,MAAM,EAAE,WAA8J,GAAnJ,GAAG,EAAE,GAAG,IAAI,IAAI,IAAE,GAAE,KAAK,GAAE,GAAQ,GAAE,aAAa,QAApB,GAAgC,GAAE,MAAM,QAAb,GAAoB,IAAK,IAAG,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,QAAQ,EAAO,GAAE,MAAM,SAAb,EAA4B,GAAE,aAAa,SAApB,GAA4B,EAAE,CAAC,EAAE,GAAG,WAAW,GAAG,WAAW,KAChf,GAAI,GAAE,GAAE,GAAE,EAAE,GAAI,IAAE,GAAE,IAAG,EAAE,GAAG,QAAQ,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,GAAE,GAAE,GAAE,EAAE,GAAG,WAAW,MAAO,GAAE,QAAQ,EAAsF,GAApF,IAAK,IAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,aAAiB,IAAJ,GAAQ,IAAG,MAAM,GAAG,EAAE,UAAU,GAAG,GAAG,EAAE,MAAe,IAAP,KAAS,IAAI,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,OAAO,EAAE,SAAS,GAAG,GAAG,KAAM,IAAG,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,MAAK,IAAG,KAAR,GAAgB,EAAE,MAAN,GAAW,KAAK,EAAE,EAAE,aAAkB,GAAE,KAAP,EAAU,IAAI,GAAG,KAAM,IAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAY,KACje,aAAa,CAAC,GAAU,KAAP,KAAU,CAAC,GAAI,GAAE,GAAG,IAAI,EAAE,GAAG,WAAW,EAAE,GAAE,GAAG,CAAgC,GAA/B,GAAG,WAAW,KAAK,GAAE,GAAG,EAAE,GAAG,EAAY,KAAP,KAAU,GAAI,GAAE,OAAO,CAAmB,GAAlB,EAAE,GAAG,GAAG,KAAK,GAAG,EAAU,IAAE,KAAP,EAAU,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,GAAO,IAAL,IAAG,EAAM,GAAE,EAAE,QAAe,KAAP,MAAU,CAAC,GAAI,GAAE,GAAE,EAAE,EAAE,MAAM,GAAQ,IAAE,MAAM,MAAb,EAAiB,CAAC,GAAI,IAAE,EAAE,UAAU,GAAU,KAAP,KAAS,CAAC,OAAQ,IAAE,EAAE,GAAE,GAAE,OAAO,KAAI,CAAC,GAAI,IAAE,GAAE,IAAG,IAAI,GAAE,GAAS,KAAP,MAAU,CAAC,GAAI,IAAE,GAAE,OAAO,GAAE,SAAU,OAAO,QAAQ,IAAG,GAAG,EAAE,GAAE,GAAG,GAAI,IAAE,GAAE,MAAM,GAAU,KAAP,KAAS,GAAE,OAAO,GAAE,GAAE,OAAO,MAAY,KAAP,MAAU,CAAC,GAAE,GAAE,GAAI,IAAE,GAAE,QAAQ,GAAE,GAAE,OAAa,GAAN,GAAG,IAAM,KACnf,GAAE,CAAC,GAAE,KAAK,MAAM,GAAU,KAAP,KAAS,CAAC,GAAE,OAAO,GAAE,GAAE,GAAE,MAAM,GAAE,KAAI,GAAI,IAAE,EAAE,UAAU,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,GAAE,MAAM,GAAU,KAAP,KAAS,CAAC,GAAE,MAAM,KAAK,EAAE,CAAC,GAAI,IAAE,GAAE,QAAQ,GAAE,QAAQ,KAAK,GAAE,SAAe,KAAP,OAAW,GAAE,GAAG,GAAQ,GAAE,aAAa,QAApB,GAAkC,IAAP,KAAS,EAAE,OAAO,EAAE,GAAE,MAAO,GAAE,KAAY,KAAP,MAAU,CAAK,GAAJ,EAAE,GAAU,GAAE,MAAM,QAAb,EAAmB,OAAO,EAAE,SAAU,OAAO,QAAQ,IAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,GAAI,IAAE,EAAE,QAAQ,GAAU,KAAP,KAAS,CAAC,GAAE,OAAO,EAAE,OAAO,GAAE,GAAE,QAAQ,GAAE,EAAE,QAAQ,GAAI,IAAE,EAAE,QAAQ,IAAI,GAAE,GAAS,KAAP,MAAU,CAAC,EAAE,GAAE,GAAI,IAAE,EAAE,MAAM,GAAQ,GAAE,aAAa,QAApB,GACvd,KADkf,KAChf,GAAE,OAAO,EAAE,GAAE,OAAO,GAAE,IAAI,EAAE,GAAS,KAAP,MAAU,CAAK,GAAJ,GAAE,GAAU,IAAE,MAAM,QAAb,EAAmB,GAAG,CAAC,OAAO,GAAE,SAAU,OAAO,QAAQ,IAAG,GAAG,EAAE,WAAU,GAAN,CAAU,GAAE,GAAE,GAAE,OAAO,IAAI,GAAG,KAAI,EAAE,CAAC,GAAE,KAAK,QAAQ,GAAI,IAAE,GAAE,QAAQ,GAAU,KAAP,KAAS,CAAC,GAAE,OAAO,GAAE,OAAO,GAAE,GAAE,QAAQ,GAAE,GAAE,QAAiB,GAAT,GAAE,EAAE,KAAQ,IAAiB,MAAO,IAAG,uBAAvB,WAA6C,GAAG,CAAC,GAAG,sBAAsB,GAAG,QAAG,EAAW,EAAE,GAAG,MAAO,UAAE,CAAQ,GAAE,EAAE,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAW,IAAP,MAAW,IAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IACte,YAAW,EAAE,EAAE,EAAE,CAAC,GAAO,EAAE,MAAN,EAAU,GAAG,EAAE,EAAE,OAAQ,MAAY,IAAP,MAAU,CAAC,GAAO,EAAE,MAAN,EAAU,CAAC,GAAG,EAAE,EAAE,GAAG,cAAkB,EAAE,MAAN,EAAU,CAAC,GAAI,GAAE,EAAE,UAAU,GAAgB,MAAO,GAAE,KAAK,0BAA3B,YAAkE,MAAO,GAAE,mBAAtB,YAA0C,CAAO,KAAP,MAAW,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAW,IAAP,MAAW,IAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,OAAO,EAAE,EAAE,QAC5U,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAiB,IAAP,MAAU,EAAE,OAAO,GAAG,EAAE,KAAI,EAAE,aAAa,EAAE,eAAe,EAAE,KAAI,GAAI,IAAE,KAAK,GAAI,CAAI,KAAJ,GAAW,KAAJ,GAAQ,IAAE,aAAa,IAAG,IAAI,KAAI,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,EAAE,CAAK,IAAJ,GAAQ,CAAK,GAAE,KAAK,KAAZ,EAAe,EAAE,EAAG,GAAE,GAAG,KAAK,EAAO,IAAG,aAAR,GAAqB,IAAG,WAAW,GAAI,GAAE,KAAI,EAAE,GAAG,EAAE,GAAU,IAAP,MAAW,IAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,YAAY,EAAE,CAAC,GAAI,GAAE,EAAE,cAAc,EAAE,EAAS,IAAP,MAAW,GAAE,EAAE,WAAW,GAAG,EAAE,GAC/Y,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,OAAO,EAAE,SAAU,IAAG,GAAI,GAAE,EAAE,UAAc,EAAE,EAAE,cAAqB,IAAP,MAAW,GAAE,EAAE,WAAW,UAAW,IAAG,EAAE,EAAE,UAAU,cAAc,KAAM,OAAM,EAAE,MAAc,IAAP,MAAU,EAAE,OAAO,GAAG,GAAG,EAAE,GAAG,GAAI,IAClN,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,GAAU,IAAP,KAAS,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAG,QAAQ,GAAG,OAAO,CAAC,GAAQ,GAAE,MAAM,KAAb,GAAsB,GAAE,MAAM,OAAb,EAAkB,MAAO,IAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAQ,GAAE,MAAM,UAAb,MAAgC,IAAG,GAAG,IAAQ,GAAE,MAAM,WAAb,GAAuB,GAAG,EAAE,GAAG,EAAE,OAAiB,OAAV,EAAE,MAAM,EAAS,EAAE,SAAU,GAAE,GAAI,GAAE,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa,GAAI,GAAE,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,GAAI,GAAE,KAAK,SAAE,OAAO,EAAa,MAAO,IAAlB,UAA4B,IAAP,MAAuB,MAAO,GAAE,QAAtB,YAAuC,EAAE,WAAX,OAAqB,GAAE,IAAI,EAAE,EAAE,cAAc,KAAK,EAAE,YAC1e,KAAK,GAAG,GAAI,GAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,cAAqB,EAAE,QAAT,MAAyB,EAAE,QAAX,OAAiB,EAAE,MAAM,KAAK,GAAG,GAAG,EAAE,QAAQ,GAAG,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,IAAK,GAAE,IAAI,EAAE,IAAG,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,OAAc,MAAO,IAAG,EAAE,EAAE,YAAY,EAAE,CAAqF,OAApF,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAU,OAAQ,GAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,YAAa,GAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,YAAa,IAAG,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,GAAG,YAAa,IAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,QAAQ,KAAM,OAAM,EAAE,IACvgB,EAAE,KAAM,MAAO,OAAO,GAAE,MAAO,GAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,OAAQ,GAAE,MAAO,GAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,OAAQ,GAAE,EAAE,CAAO,GAAN,GAAG,GAAa,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,GAAI,GAAE,EAAE,cAA0B,GAAZ,EAAE,EAAE,QAAW,EAAE,aAAa,GAAG,EAAE,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,EAAE,MAAM,0BAA0B,EAAE,0BAA0B,YAAY,EAAE,aAAa,EAAE,YAAY,UAChf,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,gBAAgB,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,YAAa,KAAI,GAAG,GAAG,EAAE,UAAU,cAAc,YAAY,GAAG,EAAE,GAAE,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,YAAY,CAAM,GAAL,KAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,MAAO,OAAO,GAAE,MAAO,IAAG,GAAU,IAAP,MAAU,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAS,IAAP,KAAS,EAAE,cAAc,KAAK,EAAE,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,KAAY,IAAP,MAAU,GAAG,EAAE,IAAK,GAAE,OAAO,IACnf,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,UAAW,GAAE,MAAc,KAAP,MAAU,GAAG,GAAG,SAAU,IAAG,MAAO,IAAG,EAAE,EAAE,OAAQ,GAAE,MAAO,IAAG,EAAE,EAAE,UAAU,eAAe,EAAE,EAAE,aAAoB,IAAP,KAAS,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,UAAW,IAAG,MAAO,GAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,OAAQ,GAAE,MAAO,IAAG,EAAE,EAAE,EAAE,aAAa,GAAG,EAAE,UAAW,GAAE,MAAO,IAAG,EAAE,EAAE,EAAE,aAAa,SAAS,GAAG,EAAE,UAAW,IAAG,MAAO,IAAG,EAAE,EAAE,EAAE,aAAa,SAAS,GAAG,EAAE,UAAW,IAAG,EAAE,CACxZ,GADyZ,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,aAAa,EAAE,EAAE,cAClf,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,cAAc,EAAY,IAAP,KAAS,GAAG,GAAG,EAAE,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,EAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,aAAc,KAAI,EAAE,EAAE,MAAa,IAAP,MAAW,GAAE,OAAO,GAAU,IAAP,MAAU,CAAC,GAAI,IAAE,EAAE,aAAa,GAAU,KAAP,KAAS,CAAC,EAAE,EAAE,MAAM,OAAQ,IAAE,GAAE,aAAoB,KAAP,MAAU,CAAC,GAAG,GAAE,UAAU,EAAE,CAAC,GAAO,EAAE,MAAN,EAAU,CAAC,GAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAE,IAAI,EAAE,GAAI,IAAE,EAAE,YAAY,GAAU,KAAP,KAAS,CAAC,GAAE,GAAE,OAAO,GAAI,IAAE,GAAE,QAAe,KAAP,KAAS,GAAE,KAAK,GAAG,IAAE,KAAK,GAAE,KAAK,GAAE,KAAK,IAAG,GAAE,QAAQ,IAAG,EAAE,OAAO,EAAE,GAAE,EAAE,UAAiB,KAAP,MAAW,IAAE,OAAO,GAAG,GAAG,EAAE,OAClf,EAAE,GAAG,GAAE,OAAO,EAAE,MAAM,GAAE,GAAE,cAAmB,EAAE,MAAP,GAAW,EAAE,EAAE,OAAO,EAAE,KAAK,KAAK,EAAE,cAAmB,EAAE,MAAP,GAAW,CAAY,GAAX,EAAE,EAAE,OAAiB,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAE,EAAE,UAAiB,KAAP,MAAW,IAAE,OAAO,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,YAAa,GAAE,EAAE,MAAM,GAAU,IAAP,KAAS,EAAE,OAAO,MAAO,KAAI,EAAE,EAAS,IAAP,MAAU,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,MAAkB,GAAZ,EAAE,EAAE,QAAkB,IAAP,KAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,MAAO,OAAO,GAAE,MAAO,GAAE,EAAE,KAAK,EAAE,EAAE,aAAa,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GACpf,EAAE,UAAW,IAAG,MAAO,GAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,OAAQ,IAAG,MAAO,IAAG,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,OAAQ,IAAG,MAAO,GAAE,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAI,GAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,OAAQ,IAAG,MAAO,IAAG,EAAE,EAAE,OAAQ,IAAG,MAAO,IAAG,EAAE,EAAE,GAAG,KAAM,OAAM,EAAE,IAAI,EAAE,OAAQ,YAAY,EAAE,EAAE,CAAC,MAAO,IAAG,EAAE,GAC/Y,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,UAAU,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK,MAAM,EAAE,KAAK,IAAI,KAAK,KAAK,aAAa,EAAE,KAAK,aAAa,KAAK,cAAc,KAAK,YAAY,KAAK,cAAc,KAAK,KAAK,KAAK,EAAE,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,UAAU,KAAK,KAAK,WAAW,KAAK,MAAM,EAAE,KAAK,UAAU,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,MAAO,IAAI,IAAG,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,SAAE,EAAE,UAAgB,CAAE,EAAC,GAAG,CAAC,EAAE,kBACnc,YAAY,EAAE,CAAC,GAAgB,MAAO,IAApB,WAAsB,MAAO,IAAG,GAAG,EAAE,EAAE,GAAsB,GAAP,KAAS,CAAc,GAAb,EAAE,EAAE,SAAY,IAAI,GAAG,MAAO,IAAG,GAAG,IAAI,GAAG,MAAO,IAAG,MAAO,GAC9I,YAAY,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,MAAO,KAAP,KAAU,GAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,UAAU,GAAI,GAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,aAAoB,IAAP,KAAS,KAAK,CAAC,MAAM,EAAE,MAAM,aAAa,EAAE,cAC/e,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAW,EACvD,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAM,GAAJ,EAAE,EAAkB,MAAO,IAApB,WAAsB,GAAG,IAAK,GAAE,WAAsB,MAAO,IAAlB,SAAoB,EAAE,MAAO,GAAE,OAAO,OAAQ,IAAG,MAAO,IAAG,EAAE,SAAS,EAAE,EAAE,OAAQ,IAAG,EAAE,EAAE,GAAG,EAAE,UAAW,IAAG,MAAO,GAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,EAAE,MAAM,EAAE,MAAO,IAAG,MAAO,GAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,EAAE,MAAM,EAAE,MAAO,IAAG,MAAO,GAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,EAAE,MAAM,EAAE,MAAO,IAAG,MAAO,IAAG,EAAE,EAAE,EAAE,WAAW,GAAc,MAAO,IAAlB,UAA4B,IAAP,KAAS,OAAO,EAAE,cAAe,IAAG,EAAE,GAAG,YAAa,IAAG,EAAE,EAAE,YAAa,IAAG,EAAE,GACpf,YAAa,IAAG,EAAE,GAAG,YAAa,IAAG,EAAE,GAAG,EAAE,KAAK,QAAQ,KAAM,OAAM,EAAE,IAAU,GAAN,KAAQ,EAAE,MAAO,GAAE,KAAM,SAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAS,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,SAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAS,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,SAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,SAAS,IAAW,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,SAAE,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,MAAM,EAAS,EAC3W,YAAY,EAAE,EAAE,EAAE,CAAC,SAAE,GAAG,EAAS,EAAE,WAAT,KAAkB,EAAE,SAAS,GAAG,EAAE,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,cAAc,EAAE,cAAc,gBAAgB,KAAK,eAAe,EAAE,gBAAuB,EACrL,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,KAAK,UAAU,KAAK,QAAQ,KAAK,gBAAgB,KAAK,KAAK,cAAc,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,QAAQ,KAAK,KAAK,iBAAiB,EAAE,KAAK,WAAW,GAAG,GAAG,KAAK,gBAAgB,GAAG,IAAI,KAAK,eAAe,KAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,KAAK,YAAY,KAAK,eAAe,KAAK,aAAa,EAAE,KAAK,cAAc,GAAG,GAAG,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,KAAK,gCAC/e,KAAK,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,CAAC,SAAE,GAAI,IAAG,EAAE,EAAE,EAAE,GAAE,IAAO,IAAJ,EAAO,GAAE,EAAO,IAAL,IAAS,IAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,KAAK,YAAY,KAAK,0BAA0B,MAAM,GAAG,GAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,QAAiB,UAAU,KAAnB,OAAsB,UAAU,GAAG,KAAK,MAAM,CAAC,SAAS,GAAG,IAAU,GAAN,KAAQ,KAAK,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,GACla,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,MAAO,GAAG,EAAE,EAAE,gBAAgB,EAAE,CAAC,GAAG,GAAG,KAAK,GAAO,EAAE,MAAN,EAAU,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,EAAE,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,EAAE,EAAE,UAAU,QAAQ,YAAa,GAAE,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,0CAA0C,SAAS,EAAE,EAAE,aAAoB,IAAP,MAAU,KAAM,OAAM,EAAE,MAAO,GAAO,EAAE,MAAN,EAAU,CAAC,GAAI,GAAE,EAAE,KAAK,GAAG,GAAG,GAAG,MAAO,IAAG,EAAE,EAAE,GAAG,MAAO,GACnW,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAE,GAAE,CAAC,SAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAE,IAAG,EAAE,QAAQ,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAI,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAA4B,GAAI,KAAK,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAU,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,QAAQ,EAAE,KAAI,EAAE,GAAG,GAAG,SAAE,GAAG,GAAU,EAAE,UAAT,KAAiB,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,GAAG,EAAW,IAAT,OAAW,KAAK,EAAS,IAAP,MAAW,GAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,GAAU,IAAP,MAAW,IAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAW,EAC1b,YAAY,EAAE,CAAa,GAAZ,EAAE,EAAE,QAAW,CAAC,EAAE,MAAM,MAAO,MAAK,OAAO,EAAE,MAAM,SAAU,GAAE,MAAO,GAAE,MAAM,kBAAkB,MAAO,GAAE,MAAM,WAAW,YAAY,EAAE,EAAE,CAAmB,GAAlB,EAAE,EAAE,cAAwB,IAAP,MAAiB,EAAE,aAAT,KAAoB,CAAC,GAAI,GAAE,EAAE,UAAU,EAAE,UAAc,IAAJ,GAAO,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,GAAI,GAAE,EAAE,YAAY,GAAG,EAAE,GAAG,aAAa,CAAC,MAAO,MAAK,GAAI,IAAgB,MAAO,cAApB,WAAgC,YAAY,SAAS,EAAE,CAAC,QAAQ,MAAM,IAAI,YAAY,EAAE,CAAC,KAAK,cAAc,EAC3b,GAAG,UAAU,OAAO,GAAG,UAAU,OAAO,SAAS,EAAE,CAAC,GAAI,GAAE,KAAK,cAAc,GAAU,IAAP,KAAS,KAAM,OAAM,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,OAAO,GAAG,UAAU,QAAQ,GAAG,UAAU,QAAQ,UAAU,CAAC,GAAI,GAAE,KAAK,cAAc,GAAU,IAAP,KAAS,CAAC,KAAK,cAAc,KAAK,GAAI,GAAE,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG,KAAK,EAAE,KAAK,QAAQ,EAAE,IAAI,OAAO,YAAY,EAAE,CAAC,KAAK,cAAc,EAC7V,GAAG,UAAU,2BAA2B,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,GAAI,GAAE,KAAK,EAAE,CAAC,UAAU,KAAK,OAAO,EAAE,SAAS,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAG,QAAY,IAAJ,GAAO,EAAE,GAAG,GAAG,SAAS,IAAI,CAAC,GAAG,OAAO,EAAE,EAAE,GAAO,IAAJ,GAAO,GAAG,KAAK,YAAY,EAAE,CAAC,MAAM,CAAE,EAAC,GAAO,EAAE,WAAN,GAAoB,EAAE,WAAN,GAAqB,EAAE,WAAP,IAAiB,YAAY,EAAE,CAAC,MAAM,CAAE,EAAC,GAAO,EAAE,WAAN,GAAoB,EAAE,WAAN,GAAqB,EAAE,WAAP,IAAkB,CAAI,EAAE,WAAN,GAAiD,EAAE,YAAnC,iCAA+C,aAAa,EACva,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAgB,MAAO,IAApB,WAAsB,CAAC,GAAI,GAAE,EAAE,EAAE,UAAU,CAAC,GAAI,IAAE,GAAG,GAAG,EAAE,KAAK,KAAI,GAAI,GAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI,SAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAO,EAAE,WAAN,EAAe,EAAE,WAAW,GAAG,KAAY,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,YAAY,GAAG,GAAgB,MAAO,IAApB,WAAsB,CAAC,GAAI,IAAE,EAAE,EAAE,UAAU,CAAC,GAAI,IAAE,GAAG,IAAG,GAAE,KAAK,KAAI,GAAI,IAAE,GAAG,EAAE,EAAE,GAAG,KAAK,KAAK,GAAG,GAAG,GAAG,IAAI,SAAE,oBAAoB,GAAE,EAAE,IAAI,GAAE,QAAQ,GAAO,EAAE,WAAN,EAAe,EAAE,WAAW,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAE,EAAE,KAAY,GAC7d,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,oBAAoB,GAAG,EAAE,CAAC,GAAI,GAAE,EAAE,GAAgB,MAAO,IAApB,WAAsB,CAAC,GAAI,IAAE,EAAE,EAAE,UAAU,CAAC,GAAI,IAAE,GAAG,GAAG,GAAE,KAAK,KAAI,GAAG,EAAE,EAAE,EAAE,OAAQ,GAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,MAAO,IAAG,GAAG,GAAG,SAAS,EAAE,CAAC,OAAO,EAAE,SAAU,GAAE,GAAI,GAAE,EAAE,UAAU,GAAG,EAAE,QAAQ,cAAc,aAAa,CAAC,GAAI,GAAE,GAAG,EAAE,cAAkB,IAAJ,GAAQ,IAAG,EAAE,EAAE,GAAG,GAAG,EAAE,MAAU,IAAE,KAAP,GAAY,IAAG,KAAI,IAAI,OAAO,UAAW,IAAG,GAAG,UAAU,CAAC,GAAI,GAAE,GAAG,EAAE,GAAG,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,KAAI,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,EAAE,KAC5b,GAAG,SAAS,EAAE,CAAC,GAAQ,EAAE,MAAP,GAAW,CAAC,GAAI,GAAE,GAAG,EAAE,WAAW,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,KAAI,GAAG,EAAE,EAAE,UAAU,GAAG,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAAC,GAAQ,EAAE,MAAP,GAAW,CAAC,GAAI,GAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAU,IAAP,KAAS,CAAC,GAAI,GAAE,KAAI,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC,MAAO,KAAG,GAAG,SAAS,EAAE,EAAE,CAAC,GAAI,GAAE,GAAE,GAAG,CAAC,MAAO,IAAE,EAAE,WAAI,CAAQ,GAAE,IAChS,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,OAAQ,QAAyB,GAAjB,GAAG,EAAE,GAAG,EAAE,EAAE,KAAkB,EAAE,OAAZ,SAAwB,GAAN,KAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,WAAsF,IAA3E,EAAE,EAAE,iBAAiB,cAAc,KAAK,UAAU,GAAG,GAAG,mBAAuB,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAI,GAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,GAAI,GAAE,GAAG,GAAG,GAAG,CAAC,EAAE,KAAM,OAAM,EAAE,KAAK,GAAG,GAAG,GAAG,EAAE,KAAK,UAAW,WAAW,GAAG,EAAE,GAAG,UAAW,SAAS,EAAE,EAAE,MAAY,GAAN,MAAS,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,GACpa,GAAI,IAAG,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,wBAAwB,GAAG,WAAW,EAAE,QAAQ,SAAS,oBAAoB,aAC1I,GAAG,CAAC,WAAW,GAAG,WAAW,QAAQ,GAAG,QAAQ,oBAAoB,GAAG,oBAAoB,eAAe,GAAG,eAAe,kBAAkB,KAAK,4BAA4B,KAAK,4BAA4B,KAAK,cAAc,KAAK,wBAAwB,KAAK,wBAAwB,KAAK,gBAAgB,KAAK,mBAAmB,KAAK,eAAe,KAAK,qBAAqB,GAAG,uBAAuB,wBAAwB,SAAS,EAAE,CAAC,SAAE,GAAG,GAAiB,IAAP,KAAS,KAAK,EAAE,WAAW,wBAAwB,GAAG,yBAC/f,GAAG,4BAA4B,KAAK,gBAAgB,KAAK,aAAa,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,kBAAkB,kCAAkC,GAAiB,MAAO,iCAArB,YAAoD,CAAC,GAAI,IAAG,+BAA+B,GAAG,CAAC,GAAG,YAAY,GAAG,cAAc,GAAG,CAAC,GAAG,GAAG,OAAO,IAAI,GAAG,QAAG,GAAW,EAAQ,mDAAmD,GAC9Y,EAAQ,aAAa,SAAS,EAAE,EAAE,CAAC,GAAI,GAAE,EAAE,UAAU,QAAiB,UAAU,KAAnB,OAAsB,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,MAAO,IAAG,EAAE,EAAE,KAAK,IAAI,EAAQ,WAAW,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,GAAI,GAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAO,IAAP,MAAuB,CAAK,EAAE,sBAAP,IAA6B,GAAE,IAAa,EAAE,mBAAX,QAA8B,GAAE,EAAE,kBAA2B,EAAE,qBAAX,QAAgC,GAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAO,EAAE,WAAN,EAAe,EAAE,WAAW,GAAU,GAAI,IAAG,IACnf,EAAQ,YAAY,SAAS,EAAE,CAAC,GAAS,GAAN,KAAQ,MAAO,MAAK,GAAO,EAAE,WAAN,EAAe,MAAO,GAAE,GAAI,GAAE,EAAE,gBAAgB,GAAY,IAAT,OAAY,KAAgB,OAAO,GAAE,QAAtB,WAAmC,MAAM,EAAE,MAAM,GAAE,OAAO,KAAK,GAAG,KAAK,KAAW,MAAM,EAAE,IAAI,KAAK,SAAE,GAAG,GAAG,EAAS,IAAP,KAAS,KAAK,EAAE,UAAiB,GAAG,EAAQ,UAAU,SAAS,EAAE,CAAC,MAAO,IAAG,IAAI,EAAQ,QAAQ,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,MAAO,IAAG,KAAK,EAAE,EAAE,GAAG,IAC7Y,EAAQ,YAAY,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,GAAI,GAAQ,GAAN,MAAS,EAAE,iBAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAyO,GAA/N,GAAP,MAAuB,CAAK,EAAE,sBAAP,IAA6B,GAAE,IAAa,EAAE,mBAAX,QAA8B,GAAE,EAAE,kBAA2B,EAAE,qBAAX,QAAgC,GAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,EAAE,EAAQ,GAAI,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,GAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAe,EAAE,iCAAR,KAAwC,EAAE,gCAAgC,CAAC,EAAE,GAAG,EAAE,gCAAgC,KAAK,EACvhB,GAAG,MAAO,IAAI,IAAG,IAAI,EAAQ,OAAO,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,MAAO,IAAG,KAAK,EAAE,EAAE,GAAG,IAAI,EAAQ,uBAAuB,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,KAAK,MAAO,GAAE,oBAAqB,IAAG,UAAU,CAAC,GAAG,KAAK,KAAK,EAAE,GAAG,UAAU,CAAC,EAAE,oBAAoB,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,EAAQ,wBAAwB,GAC/U,EAAQ,oCAAoC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,KAAM,OAAM,EAAE,MAAM,GAAS,GAAN,MAAkB,EAAE,kBAAX,OAA2B,KAAM,OAAM,EAAE,KAAK,MAAO,IAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAQ,QAAQ,kC,uCChUzL,EAAI,EAAQ,MAChB,GAAI,GACF,EAAQ,EAAa,EAAE,WACvB,EAAsB,EAAE,gBACnB,Q,kCCJP,YAAoB,CAElB,GACE,QAAO,iCAAmC,aAC1C,MAAO,gCAA+B,UAAa,YAcrD,GAAI,CAEF,+BAA+B,SAAS,SACjC,EAAP,CAGA,QAAQ,MAAM,IAOhB,IACA,EAAO,QAAU,EAAjB,O,kHClC8E,WAAwB,EAAU,GAAY,CAC5H,EAAS,UAAY,OAAO,OAAO,GAAW,WAC9C,EAAS,UAAU,YAAc,EAEjC,EAAgB,EAAU,IAG5B,WAAyB,EAAG,GAAG,CAC7B,SAAkB,OAAO,gBAAkB,SAAyB,GAAG,GAAG,CACxE,UAAE,UAAY,GACP,IAGF,EAAgB,EAAG,IAG5B,WAAuC,EAAQ,GAAU,CACvD,GAAI,GAAU,KAAM,MAAO,GAC3B,GAAI,IAAS,GACT,GAAa,OAAO,KAAK,GACzB,GAAK,GAET,IAAK,GAAI,EAAG,GAAI,GAAW,OAAQ,KAEjC,GADM,GAAW,IACb,KAAS,QAAQ,KAAQ,IAC7B,IAAO,IAAO,EAAO,KAGvB,MAAO,IAGT,WAAgC,EAAM,CACpC,GAAI,IAAS,OACX,KAAM,IAAI,gBAAe,6DAG3B,MAAO,GAIT,WAAqB,EAAS,GAAe,GAAa,CACxD,MAAI,KAAY,GACP,GASL,EAAQ,qBACH,EAAQ,qBAAqB,UAAU,SAAS,IAGlD,EAAQ,UAAU,SAAS,IAOpC,WAAqB,EAAS,GAAe,GAAa,CACxD,GAAI,IAAY,GACd,MAAO,GAST,KAAO,EAAQ,YAAc,EAAQ,MAAM,CAEzC,GAAI,EAAQ,YAAc,EAAY,EAAS,GAAe,IAC5D,MAAO,GAGT,EAAU,EAAQ,YAAc,EAAQ,KAG1C,MAAO,GAMT,WAA0B,EAAK,CAC7B,MAAO,UAAS,gBAAgB,aAAe,EAAI,SAAW,SAAS,gBAAgB,cAAgB,EAAI,QAG7G,GAAI,GAA0B,UAAmC,CAC/D,GAAI,QAAO,SAAW,aAAe,MAAO,QAAO,kBAAqB,YAIxE,IAAI,IAAU,GACV,GAAU,OAAO,eAAe,GAAI,UAAW,CACjD,IAAK,UAAe,CAClB,GAAU,MAIV,GAAO,UAAgB,GAE3B,cAAO,iBAAiB,0BAA2B,GAAM,IACzD,OAAO,oBAAoB,0BAA2B,GAAM,IACrD,KACP,YAAiB,EAAM,CACvB,MAAI,KAAS,QACX,GAAO,GAGF,UAAY,CACjB,MAAO,EAAE,GAIb,GAAI,IAAM,KAAc,GACpB,GAAc,GACd,GAAmB,GACnB,GAAc,CAAC,aAAc,aAC7B,GAAoB,8BAKxB,YAAgC,EAAU,GAAW,CACnD,GAAI,IAAiB,GACjB,GAAe,GAAY,QAAQ,MAAe,GAEtD,MAAI,KAAgB,IAClB,IAAe,QAAU,CAAC,EAAS,MAAM,gBAGpC,GAWT,WAA2B,EAAkB,GAAQ,CACnD,GAAI,IAAQ,GAER,GAAgB,EAAiB,aAAe,EAAiB,MAAQ,YAC7E,MAAO,IAAQ,GAAsB,SAAU,GAAY,CACzD,EAAe,GAAgB,IAE/B,YAAwB,GAAO,CAC7B,GAAI,IAEJ,UAAQ,GAAW,KAAK,KAAM,KAAU,KAExC,GAAM,sBAAwB,SAAU,GAAO,CAC7C,GAAI,MAAO,IAAM,2BAA8B,WAAY,CACzD,GAAM,0BAA0B,IAEhC,OAGF,GAAI,IAAW,GAAM,cAErB,GAAI,MAAO,IAAS,MAAM,oBAAuB,WAAY,CAC3D,GAAS,MAAM,mBAAmB,IAClC,OAGF,GAAI,MAAO,IAAS,oBAAuB,WAAY,CACrD,GAAS,mBAAmB,IAC5B,OAGF,KAAM,IAAI,OAAM,qBAAuB,GAAgB,qFAGzD,GAAM,mBAAqB,UAAY,CACrC,GAAI,IAAW,GAAM,cAErB,MAAI,KAAU,MAAO,IAAO,oBAAuB,WAC1C,GAAO,qBAAqB,IAGjC,MAAO,IAAS,oBAAuB,WAClC,GAAS,qBAGX,kBAAY,KAGrB,GAAM,qBAAuB,UAAY,CACvC,GAAI,QAAO,WAAa,aAAe,GAAiB,GAAM,OAI9D,CAAI,MAAO,KAAwB,aACjC,IAAsB,KAGxB,GAAiB,GAAM,MAAQ,GAC/B,GAAI,IAAS,GAAM,MAAM,WAEpB,GAAO,SACV,IAAS,CAAC,KAGZ,GAAY,GAAM,MAAQ,SAAU,GAAO,CACzC,GAAI,GAAM,gBAAkB,MAExB,IAAM,MAAM,gBACd,GAAM,iBAGJ,GAAM,MAAM,iBACd,GAAM,kBAGJ,KAAM,MAAM,kBAAoB,EAAiB,MACrD,IAAI,IAAU,GAAM,UAAY,GAAM,cAAgB,GAAM,eAAe,SAAW,GAAM,OAExF,EAAY,GAAS,GAAM,cAAe,GAAM,MAAM,2BAA6B,UAIvF,GAAM,sBAAsB,MAG9B,GAAO,QAAQ,SAAU,GAAW,CAClC,SAAS,iBAAiB,GAAW,GAAY,GAAM,MAAO,GAAuB,EAAuB,IAAQ,SAIxH,GAAM,sBAAwB,UAAY,CACxC,MAAO,IAAiB,GAAM,MAC9B,GAAI,IAAK,GAAY,GAAM,MAE3B,GAAI,IAAM,MAAO,WAAa,YAAa,CACzC,GAAI,IAAS,GAAM,MAAM,WAEpB,GAAO,SACV,IAAS,CAAC,KAGZ,GAAO,QAAQ,SAAU,GAAW,CAClC,MAAO,UAAS,oBAAoB,GAAW,GAAI,GAAuB,EAAuB,IAAQ,OAE3G,MAAO,IAAY,GAAM,QAI7B,GAAM,OAAS,SAAU,GAAK,CAC5B,MAAO,IAAM,YAAc,IAG7B,GAAM,KAAO,KACN,GAOT,GAAI,IAAS,GAAe,UAE5B,UAAO,YAAc,UAAuB,CAC1C,GAAI,EAAiB,WAAa,CAAC,EAAiB,UAAU,iBAC5D,MAAO,MAGT,GAAI,IAAM,KAAK,YACf,MAAO,IAAI,YAAc,GAAI,cAAgB,IAO/C,GAAO,kBAAoB,UAA6B,CAItD,GAAI,QAAO,WAAa,aAAe,CAAC,SAAS,eAIjD,IAAI,IAAW,KAAK,cAEpB,GAAI,IAAU,MAAO,IAAO,oBAAuB,YACjD,MAAK,0BAA4B,GAAO,mBAAmB,IAEvD,MAAO,MAAK,2BAA8B,YAC5C,KAAM,IAAI,OAAM,qBAAuB,GAAgB,4GAM3D,KAFK,cAAgB,KAAK,qBAEtB,MAAK,MAAM,uBACf,KAAK,yBAGP,GAAO,mBAAqB,UAA8B,CACxD,KAAK,cAAgB,KAAK,sBAO5B,GAAO,qBAAuB,UAAgC,CAC5D,KAAK,yBAWP,GAAO,OAAS,UAAkB,CAEhC,GAAI,IAAc,KAAK,MACnB,GAAY,iBACZ,GAAI,IAAQ,EAA8B,GAAa,CAAC,qBAE5D,MAAI,GAAiB,WAAa,EAAiB,UAAU,iBAC3D,GAAM,IAAM,KAAK,OAEjB,GAAM,WAAa,KAAK,OAG1B,GAAM,sBAAwB,KAAK,sBACnC,GAAM,qBAAuB,KAAK,qBAC3B,oBAAc,EAAkB,KAGlC,IACP,aAAY,GAAO,YAAc,kBAAoB,GAAgB,IAAK,GAAO,aAAe,CAChG,WAAY,CAAC,YAAa,cAC1B,iBAAkB,IAAU,GAAO,kBAAoB,GACvD,wBAAyB,GACzB,eAAgB,GAChB,gBAAiB,IAChB,GAAO,SAAW,UAAY,CAC/B,MAAO,GAAiB,SAAW,EAAiB,WAAa,GAChE,GACJ,UAAe,G,kCC/VhB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAGT,GAAI,GAAW,OAAO,QAAU,SAAU,GAAQ,CAAE,OAAS,IAAI,EAAG,GAAI,UAAU,OAAQ,KAAK,CAAE,GAAI,IAAS,UAAU,IAAI,OAAS,KAAO,IAAc,OAAO,UAAU,eAAe,KAAK,GAAQ,IAAQ,IAAO,GAAO,GAAO,IAAY,MAAO,KAEnP,EAAe,UAAY,CAAE,YAA0B,GAAQ,GAAO,CAAE,OAAS,GAAI,EAAG,EAAI,GAAM,OAAQ,IAAK,CAAE,GAAI,GAAa,GAAM,GAAI,EAAW,WAAa,EAAW,YAAc,GAAO,EAAW,aAAe,GAAU,SAAW,IAAY,GAAW,SAAW,IAAM,OAAO,eAAe,GAAQ,EAAW,IAAK,IAAiB,MAAO,UAAU,GAAa,GAAY,EAAa,CAAE,MAAI,KAAY,GAAiB,GAAY,UAAW,IAAiB,GAAa,GAAiB,GAAa,GAAqB,OAE5hB,EAAS,EAAQ,MAEjB,EAAU,EAAuB,GAEjC,EAAa,EAAQ,MAErB,EAAc,EAAuB,GAErC,EAAU,EAAQ,MAElB,EAAW,EAAuB,GAElC,EAAW,EAAQ,MAEvB,WAAgC,GAAK,CAAE,MAAO,KAAO,GAAI,WAAa,GAAM,CAAE,QAAS,IAEvF,YAAyB,GAAU,GAAa,CAAE,GAAI,CAAE,cAAoB,KAAgB,KAAM,IAAI,WAAU,qCAEhH,YAAoC,GAAM,GAAM,CAAE,GAAI,CAAC,GAAQ,KAAM,IAAI,gBAAe,6DAAgE,MAAO,KAAS,OAAO,KAAS,UAAY,MAAO,KAAS,YAAc,GAAO,GAEzO,YAAmB,GAAU,GAAY,CAAE,GAAI,MAAO,KAAe,YAAc,KAAe,KAAQ,KAAM,IAAI,WAAU,2DAA6D,MAAO,KAAe,GAAS,UAAY,OAAO,OAAO,IAAc,GAAW,UAAW,CAAE,YAAa,CAAE,MAAO,GAAU,WAAY,GAAO,SAAU,GAAM,aAAc,MAAe,IAAY,QAAO,eAAiB,OAAO,eAAe,GAAU,IAAc,GAAS,UAAY,IAOje,GAAI,IAAsB,SAA6B,GAAuB,CAC5E,MAAO,CACL,SAAU,GAAsB,UAChC,cAAe,GAAsB,iBAIrC,GAAqB,SAAU,GAAkB,CACnD,GAAU,GAAoB,IAE9B,YAA4B,GAAO,CACjC,GAAgB,KAAM,IAEtB,GAAI,GAAQ,GAA2B,KAAO,IAAmB,WAAa,OAAO,eAAe,KAAqB,KAAK,KAAM,KAEpI,SAAM,KAAO,UAAY,CACvB,GAAI,CAAC,OAAO,OACV,KAAM,IAAI,OAAM,sKAGlB,GAAI,CAAC,OAAO,OAAO,KAAK,OACtB,KAAM,IAAI,OAAM,4MAGlB,EAAM,oBAAsB,GAAI,QAAO,OAAO,KAAK,OAAO,oBAC1D,EAAM,eAAiB,OAAO,OAAO,KAAK,OAAO,oBAAoB,GACrE,EAAM,SAAS,SAAU,EAAO,CAC9B,MAAI,GAAM,MACD,KAEA,CAAE,MAAO,OAKtB,EAAM,qBAAuB,SAAU,EAAa,GAAQ,CAE1D,GADA,EAAM,SAAS,CAAE,QAAS,KACtB,KAAW,EAAM,eAAgB,CACnC,EAAM,MAAM,QAAQ,GAAQ,EAAM,kBAClC,OAEF,GAAI,IAA2B,EAAM,MAAM,yBAE3C,EAAM,SAAS,CACb,YAAa,EAAY,IAAI,SAAU,GAAG,GAAK,CAC7C,MAAO,CACL,GAAI,GAAE,GACN,YAAa,GAAE,YACf,QAAS,GAAE,SACX,OAAQ,OAA4B,KAAQ,GAC5C,MAAO,GACP,oBAAqB,GAAoB,GAAE,uBAC3C,kBAAmB,GAAE,mBACrB,MAAO,GAAE,MACT,MAAO,GAAE,YAMjB,EAAM,iBAAmB,UAAY,CACnC,GAAI,GAAQ,EAAM,MAAM,MAEpB,EAAM,QACR,GAAM,SAAS,CAAE,QAAS,KAC1B,EAAM,oBAAoB,oBAAoB,EAAS,GAAI,EAAM,MAAM,cAAe,CACpF,MAAO,IACL,EAAM,wBAId,EAAM,iBAAmB,UAAY,CACnC,EAAM,SAAS,CAAE,YAAa,MAGhC,EAAM,YAAc,UAAY,CAC9B,EAAM,SAAS,CACb,YAAa,EAAM,MAAM,YAAY,IAAI,SAAU,EAAY,CAC7D,MAAO,GAAS,GAAI,EAAY,CAC9B,OAAQ,UAMhB,EAAM,aAAe,SAAU,EAAS,GAAS,GAAY,CAC3D,EAAM,mBACF,EAAM,MAAM,SACd,EAAM,MAAM,SAAS,EAAS,GAAS,IAEvC,EAAM,MAAM,SAAS,IAIzB,EAAM,oBAAsB,UAAY,CACtC,MAAO,GAAM,MAAM,YAAY,KAAK,SAAU,EAAY,CACxD,MAAO,GAAW,UAItB,EAAM,oBAAsB,SAAU,EAAO,CAC3C,GAAI,IAAa,EAAM,MAAM,YAAY,KAAK,SAAU,GAAY,CAClE,MAAO,IAAW,QAAU,IAC3B,YACH,EAAM,iBAAiB,GACvB,EAAM,MAAM,SAAS,KAGvB,EAAM,qBAAuB,UAAY,CACvC,EAAM,cACN,EAAM,MAAM,SAAS,EAAM,MAAM,iBAGnC,EAAM,eAAiB,UAAY,CACjC,GAAI,GAAmB,EAAM,sBACzB,IAAqB,OACvB,EAAM,aAAa,EAAM,MAAM,MAAO,KAAM,MAE5C,EAAM,aAAa,EAAiB,YAAa,EAAiB,QAAS,IAI/E,EAAM,cAAgB,UAAY,CAChC,GAAI,EAAM,MAAM,YAAY,SAAW,EAIvC,IAAI,GAAmB,EAAM,sBACzB,IAAqB,OACvB,EAAM,oBAAoB,GACjB,EAAiB,QAAU,EAAM,MAAM,YAAY,OAAS,EACrE,EAAM,uBAEN,EAAM,oBAAoB,EAAiB,MAAQ,KAIvD,EAAM,YAAc,UAAY,CAC9B,GAAI,EAAM,MAAM,YAAY,SAAW,EAIvC,IAAI,GAAmB,EAAM,sBACzB,IAAqB,OACvB,EAAM,oBAAoB,EAAM,MAAM,YAAY,OAAS,GAClD,EAAiB,QAAU,EACpC,EAAM,uBAEN,EAAM,oBAAoB,EAAiB,MAAQ,KAIvD,EAAM,mBAAqB,SAAU,EAAO,CAE1C,OAAQ,EAAM,SACP,QACH,EAAM,iBACN,EAAM,iBACN,UACG,YACH,EAAM,iBACN,EAAM,gBACN,UACG,UACH,EAAM,iBACN,EAAM,cACN,UACG,SACH,EAAM,mBACN,QAKN,EAAM,iBAAmB,SAAU,EAAO,CACxC,EAAM,SAAS,CACb,YAAa,EAAM,MAAM,YAAY,IAAI,SAAU,GAAY,GAAK,CAClE,MAAI,MAAQ,EACH,EAAS,GAAI,GAAY,CAAE,OAAQ,KAEnC,EAAS,GAAI,GAAY,CAAE,OAAQ,UAMlD,EAAM,kBAAoB,SAAU,EAAO,CACzC,GAAI,IAAQ,EAAM,OAAO,MAIzB,GAFA,EAAM,MAAM,SAAS,IACrB,EAAM,SAAS,CAAE,eAAgB,KAC7B,CAAC,GAAO,CACV,EAAM,mBACN,OAEE,EAAM,MAAM,wBACd,EAAM,6BAIV,EAAM,kBAAoB,UAAY,CAC/B,EAAM,uBACT,EAAM,oBAIV,EAAM,sBAAwB,UAAY,CACxC,GAAI,GAAmB,EAAM,sBAC7B,MAAO,GAAmB,kCAAoC,EAAiB,QAAU,QAG3F,EAAM,cAAgB,UAAY,CAChC,MAAO,GAAM,MAAM,YAAY,OAAS,GAG1C,EAAM,cAAgB,UAAY,CAChC,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAElF,GAAI,EAAQ,eAAe,SACzB,KAAM,IAAI,OAAM,gGAGlB,GAAI,EAAQ,eAAe,YACzB,KAAM,IAAI,OAAM,sGAGlB,GAAI,IAAoB,CACtB,KAAM,OACN,aAAc,MACd,KAAM,WACN,oBAAqB,OACrB,gBAAiB,EAAM,gBACvB,wBAAyB,EAAM,wBAC/B,SAAU,CAAC,EAAM,MAAM,OAGzB,MAAO,GAAS,GAAI,GAAmB,EAAS,CAC9C,UAAY,GAAG,EAAS,SAAS,EAAM,mBAAoB,EAAQ,WACnE,OAAS,GAAG,EAAS,SAAS,EAAM,kBAAmB,EAAQ,QAC/D,MAAO,EAAM,MAAM,MACnB,SAAU,SAAkB,GAAO,CACjC,EAAM,kBAAkB,QAK9B,EAAM,uBAAyB,SAAU,EAAY,CACnD,GAAI,IAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE9E,GAA6B,EAAM,2BAA2B,KAAK,EAAO,EAAW,OACrF,GAAwB,EAAM,sBAAsB,KAAK,EAAO,GAEpE,MAAO,GAAS,GAAI,GAAS,CAC3B,IAAK,EAAW,GAChB,GAAI,EAAM,wBACV,KAAM,SACN,aAAe,GAAG,EAAS,SAAS,GAA4B,GAAQ,cACxE,aAAe,GAAG,EAAS,SAAS,EAAM,2BAA4B,GAAQ,cAC9E,YAAc,GAAG,EAAS,SAAS,EAAM,0BAA2B,GAAQ,aAC5E,UAAY,GAAG,EAAS,SAAS,EAAM,wBAAyB,GAAQ,WACxE,aAAe,GAAG,EAAS,SAAS,EAAM,2BAA4B,GAAQ,cAC9E,WAAa,GAAG,EAAS,SAAS,EAAM,wBAAyB,GAAQ,YACzE,QAAU,GAAG,EAAS,SAAS,GAAuB,GAAQ,YAIlE,EAAM,2BAA6B,SAAU,EAAO,CAClD,EAAM,iBAAiB,IAGzB,EAAM,2BAA6B,UAAY,CAC7C,EAAM,sBAAwB,GAC9B,EAAM,eAGR,EAAM,0BAA4B,SAAU,EAAO,CACjD,EAAM,iBACN,EAAM,sBAAwB,IAGhC,EAAM,2BAA6B,UAAY,CAC7C,EAAM,sBAAwB,IAGhC,EAAM,wBAA0B,UAAY,CAC1C,EAAM,sBAAwB,IAGhC,EAAM,sBAAwB,SAAU,EAAY,GAAO,CACrD,IAAS,GAAM,gBACjB,GAAM,iBAER,GAAI,IAAc,EAAW,YACzB,GAAU,EAAW,QAEzB,EAAM,aAAa,GAAa,GAAS,GACzC,WAAW,UAAY,CACrB,EAAM,sBAAwB,MAIlC,EAAM,MAAQ,CACZ,QAAS,GACT,YAAa,GACb,eAAgB,GAAM,MACtB,MAAO,CAAC,GAAM,oBAGhB,EAAM,0BAA6B,GAAG,EAAS,SAAS,EAAM,iBAAkB,GAAM,UAC/E,EAGT,SAAa,GAAoB,CAAC,CAChC,IAAK,oBACL,MAAO,UAA6B,CAClC,GAAI,GAAqB,KAAK,MAAM,mBAEpC,GAAI,EAAoB,CACtB,GAAI,GAAiB,OAAO,QAAU,OAAO,OAAO,MAAQ,OAAO,OAAO,KAAK,OAC1E,EAGH,KAAK,OAFL,OAAO,GAAsB,KAAK,SAKpC,MAAK,SAGR,CACD,IAAK,uBACL,MAAO,UAAgC,CACrC,GAAI,GAAqB,KAAK,MAAM,mBAEhC,GAAsB,OAAO,IAC/B,MAAO,QAAO,KAGjB,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,MAAO,MAAK,MAAM,SAAS,CACzB,cAAe,KAAK,cACpB,uBAAwB,KAAK,uBAC7B,QAAS,KAAK,MAAM,QACpB,YAAa,KAAK,MAAM,kBAKvB,IACP,EAAQ,QAAQ,WAElB,GAAmB,UAAY,CAC7B,SAAU,EAAY,QAAQ,KAAK,WACnC,MAAO,EAAY,QAAQ,OAAO,WAClC,SAAU,EAAY,QAAQ,KAAK,WACnC,QAAS,EAAY,QAAQ,KAC7B,SAAU,EAAY,QAAQ,KAC9B,cAAe,EAAY,QAAQ,MAAM,CACvC,OAAQ,EAAY,QAAQ,OAC5B,sBAAuB,EAAY,QAAQ,OAC3C,SAAU,EAAY,QAAQ,OAC9B,OAAQ,EAAY,QAAQ,UAAU,CAAC,EAAY,QAAQ,OAAQ,EAAY,QAAQ,SACvF,OAAQ,EAAY,QAAQ,UAAU,CAAC,EAAY,QAAQ,OAAQ,EAAY,QAAQ,SACvF,MAAO,EAAY,QAAQ,QAE7B,SAAU,EAAY,QAAQ,OAC9B,yBAA0B,EAAY,QAAQ,KAC9C,uBAAwB,EAAY,QAAQ,KAC5C,mBAAoB,EAAY,QAAQ,QAG1C,GAAmB,aAAe,CAEhC,QAAS,SAAiB,GAAQ,GAAmB,CACnD,MAAO,SAAQ,MAAM;AAAA;AAAA,UAA2N,KAGlP,cAAe,GACf,SAAU,IACV,yBAA0B,GAC1B,uBAAwB,IAG1B,UAAkB,I,gCCnalB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAET,GAAI,GAAU,EAAQ,QAAU,UAAmB,CACjD,OAAS,GAAO,UAAU,OAAQ,EAAM,MAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC1E,EAAI,GAAQ,UAAU,GAGxB,MAAO,WAAY,CACjB,OAAS,GAAQ,UAAU,OAAQ,EAAO,MAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IAChF,EAAK,GAAS,UAAU,GAG1B,EAAI,QAAQ,SAAU,EAAI,CACxB,MAAO,IAAM,EAAG,MAAM,OAAW,OAKnC,EAAO,EAAQ,KAAO,SAAc,EAAK,CAC3C,OAAS,GAAQ,UAAU,OAAQ,EAAQ,MAAM,EAAQ,EAAI,EAAQ,EAAI,GAAI,EAAQ,EAAG,EAAQ,EAAO,IACrG,EAAM,EAAQ,GAAK,UAAU,GAG/B,MAAO,GAAM,OAAO,SAAU,EAAQ,EAAM,CAC1C,MAAI,IAAO,EAAI,eAAe,IAC5B,GAAO,GAAQ,EAAI,IAEd,GACN,M,wCC7BL,EAA6C,CAC3C,MAAO,IAET,EAAQ,GAAY,EAA2B,EAA2B,OAE1E,GAAI,GAAsB,EAAQ,MAE9B,EAAuB,EAAuB,GAE9C,EAAS,EAAQ,KAErB,WAAgC,EAAK,CAAE,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAEvF,EAA2B,EAAO,iBAClC,EAA2B,EAAO,iBAClC,EAAQ,GAAY,EAAO,UAC3B,EAAQ,GAAU,EAAqB,S,+BChBvC,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAET,GAAI,GAAmB,EAAQ,iBAAmB,SAA0B,EAAS,CACnF,GAAI,GAAW,GAAI,QAAO,OAAO,KAAK,SAClC,EAAK,OAAO,OAAO,KAAK,eAAe,GAE3C,MAAO,IAAI,SAAQ,SAAU,EAAS,EAAQ,CAC5C,EAAS,QAAQ,CAAE,QAAS,GAAW,SAAU,EAAS,EAAQ,CAC5D,IAAW,GACb,EAAO,GAET,EAAQ,QAKV,EAAY,EAAQ,UAAY,SAAmB,EAAQ,CAC7D,MAAO,IAAI,SAAQ,SAAU,EAAS,EAAQ,CAC5C,GAAI,CACF,GAAI,GAAS,CACX,IAAK,EAAO,SAAS,SAAS,MAC9B,IAAK,EAAO,SAAS,SAAS,OAEhC,EAAQ,SACD,EAAP,CACA,EAAO,OAKT,EAAmB,EAAQ,iBAAmB,SAA0B,EAAS,CACnF,GAAI,GAAW,GAAI,QAAO,OAAO,KAAK,SAClC,EAAK,OAAO,OAAO,KAAK,eAAe,GAE3C,MAAO,IAAI,SAAQ,SAAU,EAAS,EAAQ,CAC5C,EAAS,QAAQ,CAAE,QAAS,GAAW,SAAU,EAAS,EAAQ,CAC5D,IAAW,GACb,EAAO,GAET,EAAQ,S,gCC1Cd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASa,GAAI,GAAE,OAAO,IAAI,iBAAiB,EAAE,OAAO,IAAI,gBAAgB,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,IAAI,qBAAqB,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,IAAI,iBAAiB,EAAE,OAAO,IAAI,qBAAqB,EAAE,OAAO,IAAI,kBAAkB,EAAE,OAAO,IAAI,cAAc,EAAE,OAAO,IAAI,cAAc,GAAE,OAAO,SAAS,YAAW,GAAE,CAAC,MAAU,MAAP,MAAqB,MAAO,KAAlB,SAA2B,KAAK,IAAE,IAAG,GAAE,KAAI,GAAE,cAAiC,MAAO,KAApB,WAAsB,GAAE,MACte,GAAI,IAAE,CAAC,UAAU,UAAU,CAAC,MAAM,IAAI,mBAAmB,UAAU,GAAG,oBAAoB,UAAU,GAAG,gBAAgB,UAAU,IAAI,GAAE,OAAO,OAAO,GAAE,GAAG,YAAW,GAAE,GAAE,GAAE,CAAC,KAAK,MAAM,GAAE,KAAK,QAAQ,GAAE,KAAK,KAAK,GAAE,KAAK,QAAQ,IAAG,GAAE,GAAE,UAAU,iBAAiB,GACnQ,GAAE,UAAU,SAAS,SAAS,GAAE,GAAE,CAAC,GAAc,MAAO,KAAlB,UAAkC,MAAO,KAApB,YAA6B,IAAN,KAAQ,KAAM,OAAM,yHAAyH,KAAK,QAAQ,gBAAgB,KAAK,GAAE,GAAE,aAAa,GAAE,UAAU,YAAY,SAAS,GAAE,CAAC,KAAK,QAAQ,mBAAmB,KAAK,GAAE,gBAAgB,aAAY,EAAE,GAAE,UAAU,GAAE,UAAU,YAAW,GAAE,GAAE,GAAE,CAAC,KAAK,MAAM,GAAE,KAAK,QAAQ,GAAE,KAAK,KAAK,GAAE,KAAK,QAAQ,IAAG,GAAE,GAAI,GAAE,GAAE,UAAU,GAAI,IACrf,EAAE,YAAY,GAAE,GAAE,EAAE,GAAE,WAAW,EAAE,qBAAqB,GAAG,GAAI,GAAE,MAAM,QAAQ,GAAE,OAAO,UAAU,eAAe,GAAE,CAAC,QAAQ,MAAM,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,IACtK,YAAW,GAAE,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,GAAG,GAAE,KAAK,GAAE,KAAK,GAAS,IAAN,KAAQ,IAAI,KAAc,IAAE,MAAX,QAAiB,IAAE,GAAE,KAAc,GAAE,MAAX,QAAiB,IAAE,GAAG,GAAE,KAAK,GAAE,GAAE,KAAK,GAAE,KAAI,CAAC,GAAE,eAAe,KAAK,IAAE,IAAG,GAAE,KAAI,GAAI,IAAE,UAAU,OAAO,EAAE,GAAO,KAAJ,EAAM,GAAE,SAAS,WAAU,EAAE,GAAE,CAAC,OAAQ,IAAE,MAAM,IAAG,GAAE,EAAE,GAAE,GAAE,KAAI,GAAE,IAAG,UAAU,GAAE,GAAG,GAAE,SAAS,GAAE,GAAG,IAAG,GAAE,aAAa,IAAI,KAAK,IAAE,GAAE,aAAa,GAAW,GAAE,MAAX,QAAgB,IAAE,IAAG,GAAE,KAAI,MAAM,CAAC,SAAS,EAAE,KAAK,GAAE,IAAI,GAAE,IAAI,GAAE,MAAM,GAAE,OAAO,GAAE,SACra,YAAW,GAAE,GAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAE,KAAK,IAAI,GAAE,IAAI,GAAE,IAAI,MAAM,GAAE,MAAM,OAAO,GAAE,QAAQ,YAAW,GAAE,CAAC,MAAiB,OAAO,KAAlB,UAA4B,KAAP,MAAU,GAAE,WAAW,EAAE,YAAgB,GAAE,CAAC,GAAI,IAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI,GAAE,QAAQ,QAAQ,SAAS,GAAE,CAAC,MAAO,IAAE,MAAK,GAAI,IAAE,OAAO,YAAW,GAAE,GAAE,CAAC,MAAiB,OAAO,KAAlB,UAA4B,KAAP,MAAgB,GAAE,KAAR,KAAY,GAAO,GAAG,GAAE,KAAK,GAAE,SAAS,IAC5W,YAAW,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAI,IAAE,MAAO,IAAK,CAAc,KAAd,aAA6B,KAAZ,YAAc,IAAE,MAAK,GAAI,IAAE,GAAG,GAAU,KAAP,KAAS,GAAE,OAAQ,QAAO,QAAQ,aAAc,SAAS,GAAE,GAAG,UAAW,SAAS,OAAO,GAAE,cAAe,OAAO,GAAE,GAAE,IAAI,GAAG,GAAE,MAAO,IAAE,GAAE,GAAE,GAAE,IAAG,GAAO,KAAL,GAAO,IAAI,GAAE,GAAE,GAAG,GAAE,EAAE,IAAI,IAAE,GAAS,IAAN,MAAU,IAAE,GAAE,QAAQ,GAAE,OAAO,KAAK,GAAE,GAAE,GAAE,GAAE,GAAG,SAAS,GAAE,CAAC,MAAO,OAAW,IAAN,MAAU,IAAE,KAAK,IAAE,GAAE,GAAE,GAAG,EAAC,GAAE,KAAK,IAAG,GAAE,MAAM,GAAE,IAAI,GAAI,IAAG,GAAE,KAAK,QAAQ,GAAE,OAAO,KAAK,KAAI,GAAE,KAAK,KAAI,EAAyB,GAAvB,GAAE,EAAE,GAAO,KAAL,GAAO,IAAI,GAAE,IAAO,EAAE,IAAG,OAAQ,IAAE,EAAE,GAAE,GAAE,OAAO,KAAI,CAAC,GACrf,GAAE,IAAG,GAAI,IAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,YAAW,GAAE,GAAE,IAAgB,MAAO,KAApB,WAAsB,IAAI,GAAE,GAAE,KAAK,IAAG,GAAE,EAAE,CAAE,IAAE,GAAE,QAAQ,MAAM,GAAE,GAAE,MAAM,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,YAAsB,KAAX,SAAa,KAAM,IAAE,OAAO,IAAG,MAAM,kDAAmD,CAAoB,KAApB,kBAAsB,qBAAqB,OAAO,KAAK,IAAG,KAAK,MAAM,IAAI,IAAG,6EAA6E,MAAO,IACxZ,YAAW,GAAE,GAAE,GAAE,CAAC,GAAS,IAAN,KAAQ,MAAO,IAAE,GAAI,IAAE,GAAG,GAAE,EAAE,UAAE,GAAE,GAAE,GAAG,GAAG,SAAS,GAAE,CAAC,MAAO,IAAE,KAAK,GAAE,GAAE,QAAc,GAAE,YAAW,GAAE,CAAC,GAAQ,GAAE,UAAP,GAAe,CAAC,GAAI,IAAE,GAAE,QAAQ,GAAE,KAAI,GAAE,KAAK,SAAS,GAAE,CAAI,CAAI,GAAE,UAAN,GAAoB,GAAE,UAAP,KAAe,IAAE,QAAQ,EAAE,GAAE,QAAQ,KAAG,SAAS,GAAE,CAAI,CAAI,GAAE,UAAN,GAAoB,GAAE,UAAP,KAAe,IAAE,QAAQ,EAAE,GAAE,QAAQ,MAAS,GAAE,UAAP,IAAiB,IAAE,QAAQ,EAAE,GAAE,QAAQ,IAAG,GAAO,GAAE,UAAN,EAAc,MAAO,IAAE,QAAQ,QAAQ,KAAM,IAAE,QACpZ,GAAI,IAAE,CAAC,QAAQ,MAAM,GAAE,CAAC,WAAW,MAAM,GAAE,CAAC,uBAAuB,GAAE,wBAAwB,GAAE,kBAAkB,IAAG,EAAQ,SAAS,CAAC,IAAI,GAAE,QAAQ,SAAS,GAAE,GAAE,GAAE,CAAC,GAAE,GAAE,UAAU,CAAC,GAAE,MAAM,KAAK,YAAY,KAAI,MAAM,SAAS,GAAE,CAAC,GAAI,IAAE,EAAE,UAAE,GAAE,UAAU,CAAC,OAAa,IAAG,QAAQ,SAAS,GAAE,CAAC,MAAO,IAAE,GAAE,SAAS,GAAE,CAAC,MAAO,OAAK,IAAI,KAAK,SAAS,GAAE,CAAC,GAAG,CAAC,GAAE,IAAG,KAAM,OAAM,yEAAyE,MAAO,MAAI,EAAQ,UAAU,GAAE,EAAQ,SAAS,EACne,EAAQ,SAAS,EAAE,EAAQ,cAAc,GAAE,EAAQ,WAAW,EAAE,EAAQ,SAAS,EAAE,EAAQ,mDAAmD,GAC9I,EAAQ,aAAa,SAAS,GAAE,GAAE,GAAE,CAAC,GAAU,IAAP,KAAqB,KAAM,OAAM,iFAAiF,GAAE,KAAK,GAAI,IAAE,GAAE,GAAG,GAAE,OAAO,GAAE,GAAE,IAAI,GAAE,GAAE,IAAI,GAAE,GAAE,OAAO,GAAS,IAAN,KAAQ,CAAoE,GAA1D,GAAE,MAAX,QAAiB,IAAE,GAAE,IAAI,GAAE,GAAE,SAAkB,GAAE,MAAX,QAAiB,IAAE,GAAG,GAAE,KAAQ,GAAE,MAAM,GAAE,KAAK,aAAa,GAAI,IAAE,GAAE,KAAK,aAAa,IAAI,KAAK,IAAE,GAAE,KAAK,GAAE,KAAI,CAAC,GAAE,eAAe,KAAK,IAAE,IAAY,GAAE,MAAX,QAAwB,KAAT,OAAW,GAAE,IAAG,GAAE,KAAI,GAAI,IAAE,UAAU,OAAO,EAAE,GAAO,KAAJ,EAAM,GAAE,SAAS,WAAU,EAAE,GAAE,CAAC,GAAE,MAAM,IACrf,OAAQ,IAAE,EAAE,GAAE,GAAE,KAAI,GAAE,IAAG,UAAU,GAAE,GAAG,GAAE,SAAS,GAAE,MAAM,CAAC,SAAS,EAAE,KAAK,GAAE,KAAK,IAAI,GAAE,IAAI,GAAE,MAAM,GAAE,OAAO,KAAI,EAAQ,cAAc,SAAS,GAAE,CAAC,UAAE,CAAC,SAAS,EAAE,cAAc,GAAE,eAAe,GAAE,aAAa,EAAE,SAAS,KAAK,SAAS,KAAK,cAAc,KAAK,YAAY,MAAM,GAAE,SAAS,CAAC,SAAS,EAAE,SAAS,IAAU,GAAE,SAAS,IAAG,EAAQ,cAAc,GAAE,EAAQ,cAAc,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,KAAK,KAAK,IAAG,UAAE,KAAK,GAAS,IAAG,EAAQ,UAAU,UAAU,CAAC,MAAM,CAAC,QAAQ,OACzd,EAAQ,WAAW,SAAS,GAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,KAAI,EAAQ,eAAe,GAAE,EAAQ,KAAK,SAAS,GAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,IAAG,MAAM,KAAI,EAAQ,KAAK,SAAS,GAAE,GAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,GAAE,QAAiB,KAAT,OAAW,KAAK,KAAI,EAAQ,gBAAgB,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,WAAW,GAAE,WAAW,GAAG,GAAG,CAAC,YAAI,CAAQ,GAAE,WAAW,KAAI,EAAQ,aAAa,UAAU,CAAC,KAAM,OAAM,6DAC9Y,EAAQ,YAAY,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,YAAY,GAAE,KAAI,EAAQ,WAAW,SAAS,GAAE,CAAC,MAAO,IAAE,QAAQ,WAAW,KAAI,EAAQ,cAAc,UAAU,GAAG,EAAQ,iBAAiB,SAAS,GAAE,CAAC,MAAO,IAAE,QAAQ,iBAAiB,KAAI,EAAQ,UAAU,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,UAAU,GAAE,KAAI,EAAQ,MAAM,UAAU,CAAC,MAAO,IAAE,QAAQ,SAAS,EAAQ,oBAAoB,SAAS,GAAE,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,oBAAoB,GAAE,GAAE,KAC3b,EAAQ,mBAAmB,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,mBAAmB,GAAE,KAAI,EAAQ,gBAAgB,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,gBAAgB,GAAE,KAAI,EAAQ,QAAQ,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,QAAQ,GAAE,KAAI,EAAQ,WAAW,SAAS,GAAE,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,WAAW,GAAE,GAAE,KAAI,EAAQ,OAAO,SAAS,GAAE,CAAC,MAAO,IAAE,QAAQ,OAAO,KAAI,EAAQ,SAAS,SAAS,GAAE,CAAC,MAAO,IAAE,QAAQ,SAAS,KAAI,EAAQ,qBAAqB,SAAS,GAAE,GAAE,GAAE,CAAC,MAAO,IAAE,QAAQ,qBAAqB,GAAE,GAAE,KAC7e,EAAQ,cAAc,UAAU,CAAC,MAAO,IAAE,QAAQ,iBAAiB,EAAQ,QAAQ,U,kCCtBjF,EAAO,QAAU,EAAjB,O,8BCHF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASa,WAAW,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,OAAO,GAAE,KAAK,IAAG,EAAE,KAAK,EAAE,IAAG,CAAC,GAAI,IAAE,GAAE,IAAI,EAAE,GAAE,GAAE,IAAG,GAAG,EAAE,EAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,OAAO,UAAS,WAAW,GAAE,CAAC,MAAW,IAAE,SAAN,EAAa,KAAK,GAAE,GAAG,WAAW,GAAE,CAAC,GAAO,GAAE,SAAN,EAAa,MAAO,MAAK,GAAI,IAAE,GAAE,GAAG,GAAE,GAAE,MAAM,GAAG,KAAI,GAAE,CAAC,GAAE,GAAG,GAAE,EAAE,OAAQ,IAAE,EAAE,GAAE,GAAE,OAAO,GAAE,KAAI,EAAE,GAAE,IAAG,CAAC,GAAI,IAAE,EAAG,IAAE,GAAG,EAAE,GAAE,GAAE,IAAG,GAAE,GAAE,EAAE,GAAE,GAAE,IAAG,GAAG,EAAE,EAAE,GAAE,IAAG,GAAE,IAAG,EAAE,EAAE,GAAE,IAAI,IAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,IAAI,IAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,YAAW,GAAE,IAAG,EAAE,EAAE,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,IAAG,GAAE,GAAE,OAAO,UAAS,MAAO,IAC1c,WAAW,GAAE,GAAE,CAAC,GAAI,IAAE,GAAE,UAAU,GAAE,UAAU,MAAW,MAAJ,EAAM,GAAE,GAAE,GAAG,GAAE,GAAG,GAAc,MAAO,cAAlB,UAA4C,MAAO,aAAY,KAAhC,WAAoC,CAAC,GAAI,GAAE,YAAY,EAAQ,aAAa,UAAU,CAAC,MAAO,GAAE,WAAW,CAAC,GAAI,GAAE,KAAK,EAAE,EAAE,MAAM,EAAQ,aAAa,UAAU,CAAC,MAAO,GAAE,MAAM,GAAG,GAAI,GAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,GAAE,EAAE,GAAE,GAAG,GAAE,GAAG,GAAE,GAAG,GAAe,MAAO,aAApB,WAA+B,WAAW,KAAK,GAAe,MAAO,eAApB,WAAiC,aAAa,KAAK,GAAgB,MAAO,eAArB,YAAkC,aAAa,KACjd,MAAO,YAArB,aAAyC,UAAU,aAAnB,QAAwC,UAAU,WAAW,iBAA9B,QAA8C,UAAU,WAAW,eAAe,KAAK,UAAU,YAAY,YAAW,GAAE,CAAC,OAAQ,IAAE,EAAE,GAAU,KAAP,MAAU,CAAC,GAAU,GAAE,WAAT,KAAkB,EAAE,WAAW,GAAE,WAAW,GAAE,EAAE,GAAG,GAAE,UAAU,GAAE,eAAe,EAAE,EAAE,QAAQ,OAAM,GAAE,EAAE,IAAI,WAAW,GAAE,CAAW,GAAV,GAAE,GAAG,GAAE,IAAM,CAAC,GAAE,GAAU,EAAE,KAAT,KAAY,GAAE,GAAG,GAAE,OAAO,CAAC,GAAI,IAAE,EAAE,GAAU,KAAP,MAAU,GAAE,EAAE,GAAE,UAAU,KACla,WAAW,GAAE,GAAE,CAAC,GAAE,GAAG,IAAI,IAAE,GAAG,GAAE,IAAG,GAAE,IAAI,GAAE,GAAG,GAAI,IAAE,GAAE,GAAG,CAAM,IAAL,GAAE,IAAO,EAAE,EAAE,GAAU,IAAP,MAAW,EAAE,GAAE,eAAe,KAAI,IAAG,CAAC,OAAM,CAAC,GAAI,IAAE,EAAE,SAAS,GAAgB,MAAO,KAApB,WAAsB,CAAC,EAAE,SAAS,KAAK,GAAE,EAAE,cAAc,GAAI,IAAE,GAAE,EAAE,gBAAgB,IAAG,GAAE,EAAQ,eAA4B,MAAO,KAApB,WAAsB,EAAE,SAAS,GAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAE,QAAQ,GAAE,GAAG,EAAE,EAAE,GAAG,GAAU,IAAP,KAAS,GAAI,IAAE,OAAO,CAAC,GAAI,IAAE,EAAE,GAAU,KAAP,MAAU,GAAE,EAAE,GAAE,UAAU,IAAG,GAAE,GAAG,MAAO,WAAE,CAAQ,EAAE,KAAK,GAAE,GAAE,GAAE,IAAI,GAAI,IAAE,GAAG,GAAE,KAAK,GAAE,GAAG,GAAE,EAAE,GAAE,GACtc,aAAY,CAAC,MAAO,IAAQ,eAAe,GAAE,IAAQ,aAAY,CAAC,GAAU,KAAP,KAAS,CAAC,GAAI,IAAE,EAAQ,eAAe,GAAE,GAAE,GAAI,IAAE,GAAG,GAAG,CAAC,GAAE,GAAE,GAAG,WAAG,CAAQ,GAAE,KAAK,IAAE,GAAG,GAAE,WAAY,IAAE,GAAG,GAAI,IAAE,GAAgB,MAAO,KAApB,WAAsB,GAAE,UAAU,CAAC,GAAE,aAA0B,MAAO,iBAArB,YAAoC,CAAC,GAAI,IAAE,GAAI,gBAAe,GAAE,GAAE,MAAM,GAAE,MAAM,UAAU,GAAE,GAAE,UAAU,CAAC,GAAE,YAAY,WAAY,IAAE,UAAU,CAAC,GAAE,GAAE,IAAI,YAAW,GAAE,CAAC,GAAE,GAAE,IAAI,IAAE,GAAG,MAAK,YAAW,GAAE,GAAE,CAAC,GAAE,GAAE,UAAU,CAAC,GAAE,EAAQ,iBAAiB,IAC1d,EAAQ,sBAAsB,EAAE,EAAQ,2BAA2B,EAAE,EAAQ,qBAAqB,EAAE,EAAQ,wBAAwB,EAAE,EAAQ,mBAAmB,KAAK,EAAQ,8BAA8B,EAAE,EAAQ,wBAAwB,SAAS,GAAE,CAAC,GAAE,SAAS,MAAM,EAAQ,2BAA2B,UAAU,CAAC,IAAG,IAAI,IAAE,GAAG,GAAE,KACvU,EAAQ,wBAAwB,SAAS,GAAE,CAAC,EAAE,IAAG,IAAI,GAAE,QAAQ,MAAM,mHAAmH,GAAE,EAAE,GAAE,KAAK,MAAM,IAAI,IAAG,GAAG,EAAQ,iCAAiC,UAAU,CAAC,MAAO,KAAG,EAAQ,8BAA8B,UAAU,CAAC,MAAO,GAAE,IAAI,EAAQ,cAAc,SAAS,GAAE,CAAC,OAAO,QAAQ,OAAO,OAAO,GAAE,GAAI,IAAE,EAAE,cAAc,GAAE,GAAE,GAAI,IAAE,GAAE,GAAE,GAAE,GAAG,CAAC,MAAO,aAAI,CAAQ,GAAE,KAAI,EAAQ,wBAAwB,UAAU,GAC7f,EAAQ,sBAAsB,UAAU,GAAG,EAAQ,yBAAyB,SAAS,GAAE,GAAE,CAAC,OAAO,QAAQ,OAAO,OAAO,OAAO,OAAO,GAAE,cAAc,GAAE,EAAE,GAAI,IAAE,GAAE,GAAE,GAAE,GAAG,CAAC,MAAO,aAAI,CAAQ,GAAE,KAC9L,EAAQ,0BAA0B,SAAS,GAAE,GAAE,GAAE,CAAC,GAAI,IAAE,EAAQ,eAA8F,OAApE,MAAO,KAAlB,UAA4B,KAAP,KAAU,IAAE,GAAE,MAAM,GAAa,MAAO,KAAlB,UAAqB,EAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAS,QAAQ,GAAE,GAAI,IAAE,GAAG,UAAW,GAAE,GAAE,IAAI,UAAW,GAAE,GAAE,WAAW,UAAW,GAAE,GAAE,IAAI,cAAc,GAAE,IAAI,UAAE,GAAE,GAAE,GAAE,CAAC,GAAG,IAAI,SAAS,GAAE,cAAc,GAAE,UAAU,GAAE,eAAe,GAAE,UAAU,IAAI,GAAE,GAAG,IAAE,UAAU,GAAE,EAAE,EAAE,IAAU,EAAE,KAAT,MAAa,KAAI,EAAE,IAAK,IAAG,IAAE,IAAG,GAAE,IAAI,GAAE,GAAG,GAAE,EAAE,GAAE,MAAM,IAAE,UAAU,GAAE,EAAE,EAAE,IAAG,IAAG,IAAI,IAAE,GAAG,GAAE,KAAY,IACle,EAAQ,qBAAqB,GAAE,EAAQ,sBAAsB,SAAS,GAAE,CAAC,GAAI,IAAE,GAAE,MAAO,WAAU,CAAC,GAAI,IAAE,GAAE,GAAE,GAAE,GAAG,CAAC,MAAO,IAAE,MAAM,KAAK,kBAAW,CAAQ,GAAE,O,kCCf1J,EAAO,QAAU,EAAjB,K,8BCDF,GAAI,GAEJ;AAAA;AAAA;AAAA,EAIA,EAAS,UAAY,CACjB,GAAI,GAAS,GACT,EAAS,GAab,SAAO,GAAK,SAAU,EAAM,EAAS,CACjC,GAAI,GAAW,CAAC,KAAM,EAAM,QAAS,GACrC,SAAO,GAAQ,EAAO,IAAS,GAC/B,EAAO,GAAM,QAAQ,GACd,GAMX,EAAO,IAAM,SAAU,EAAU,CAC7B,GAAI,GAAQ,EAAO,EAAS,MAAM,QAAQ,GAEtC,IAAU,IACV,EAAO,EAAS,MAAM,OAAO,EAAO,IAQ5C,EAAO,QAAU,SAAU,EAAM,EAAM,CACnC,GAAI,GAAY,EAAO,GACnB,EAEJ,GAAI,EAEA,IADA,EAAI,EAAU,OACP,KACH,EAAU,GAAG,QAAQ,IAK1B,GAGX,EAAO,QAAU,G,iBC5DjB,WAAyB,EAAU,EAAa,CAAE,GAAI,CAAE,aAAoB,IAAgB,KAAM,IAAI,WAAU,qCAEhH,WAA2B,EAAQ,EAAO,CAAE,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAAE,GAAI,GAAa,EAAM,GAAI,EAAW,WAAa,EAAW,YAAc,GAAO,EAAW,aAAe,GAAU,SAAW,IAAY,GAAW,SAAW,IAAM,OAAO,eAAe,EAAQ,EAAW,IAAK,IAE7S,WAAsB,EAAa,EAAY,EAAa,CAAE,MAAI,IAAY,EAAkB,EAAY,UAAW,GAAiB,GAAa,EAAkB,EAAa,GAAqB,EAEzM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUA,GAAI,GAAsB,UAAY,CAOpC,YAAkB,CAChB,GAAI,GAAW,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC/E,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAElF,EAAgB,KAAM,GAEtB,KAAK,SAAW,EAChB,KAAK,SAAW,GAChB,KAAK,QAAU,QACf,KAAK,GAAK,KAAK,kBACf,KAAK,KAAO,SAAS,cAAc,QACnC,KAAK,QAAU,CACb,KAAM,EAAQ,MAAQ,GACtB,SAAU,EAAQ,UAAY,gBAC9B,UAAW,EAAQ,WAAa,EAChC,aAAc,EAAQ,cAAgB,EACtC,UAAW,EAAQ,WAAa,EAChC,YAAa,EAAQ,aAAe,KACpC,gBAAiB,EAAQ,iBAAmB,QAE9C,KAAK,wBAA0B,KAAK,wBAAwB,KAAK,MACjE,KAAK,0BACL,OAAO,iBAAiB,OAAQ,KAAK,yBACrC,OAAO,iBAAiB,SAAU,KAAK,yBACvC,KAAK,MAQP,SAAa,EAAQ,CAAC,CACpB,IAAK,MACL,MAAO,UAAe,CACpB,GAAI,GAAQ,KAGR,EAAa,YAAY,UAAY,CACvC,GAAI,SAAS,aAAe,WAAY,CACtC,cAAc,GACd,GAAI,GAAW,SAAS,iBAAiB,EAAM,UAE/C,EAAM,QAAQ,EAAU,SAAU,EAAS,CACzC,MAAO,GAAM,cAAc,OAG9B,MAQJ,CACD,IAAK,gBACL,MAAO,SAAuB,EAAS,CACrC,GAAI,GAAS,KAGb,EAAQ,OAAS,GAEjB,EAAQ,OAAO,OAAS,GACxB,EAAQ,OAAO,UAAY,SAAS,EAAQ,aAAa,qBAAuB,KAAK,QAAQ,UAC7F,EAAQ,OAAO,aAAe,SAAS,EAAQ,aAAa,wBAA0B,KAAK,QAAQ,aACnG,EAAQ,OAAO,UAAY,SAAS,EAAQ,aAAa,qBAAuB,KAAK,QAAQ,UAC7F,EAAQ,OAAO,YAAc,EAAQ,aAAa,sBAAwB,KAAK,QAAQ,YACvF,EAAQ,OAAO,KAAO,EAAQ,aAAa,oBAAsB,GAAO,KAAK,QAAQ,KAGrF,EAAQ,OAAO,gBAAkB,KAAK,QAAQ,gBAC9C,EAAQ,OAAO,UAAY,KAAK,mBAAmB,GACnD,EAAQ,OAAO,UAAU,KAAO,KAAK,aAAa,EAAQ,OAAO,WACjE,EAAQ,OAAO,KAAO,KAAK,aAAa,GAEpC,EAAQ,QAAQ,gBAAkB,OACpC,GAAQ,OAAS,UAAY,CAC3B,MAAO,GAAQ,OAAO,KAAO,EAAO,aAAa,KAIjD,EAAQ,OAAO,MACjB,KAAK,YAAY,GAInB,KAAK,SAAS,KAQf,CACD,IAAK,cACL,MAAO,SAAqB,EAAS,CACnC,EAAQ,mBAAmB,cAAe,EAAQ,aAAa,yBAA2B,KAAK,QAAQ,UACvG,EAAQ,gBAAgB,YAAY,KAQrC,CACD,IAAK,WACL,MAAO,SAAkB,EAAS,CAC5B,EAAQ,OAAO,KAAK,IAAM,EAAQ,OAAO,KAAK,OAAS,EAAQ,OAAO,UAAU,KAAK,IAAM,EAAQ,OAAO,UAAU,KAAK,QAAU,EAAQ,OAAO,UAAY,KAAK,GAAG,OAAS,CAAC,EAAQ,OAAO,QACjM,GAAQ,OAAO,OAAS,IAGtB,KAAK,SAAS,QAAQ,GAAW,GACnC,KAAK,SAAS,KAAK,GAGhB,EAAQ,OAAO,aAClB,MAAK,iBAAiB,GACtB,EAAQ,OAAO,YAAc,IAG1B,EAAQ,OAAO,aAClB,MAAK,iBAAiB,GACtB,EAAQ,OAAO,YAAc,IAG/B,KAAK,YAAY,KAQlB,CACD,IAAK,mBACL,MAAO,SAA0B,EAAS,CACxC,GAAI,GAAS,KAEb,EAAQ,OAAO,eAAiB,UAAY,CAC1C,MAAO,GAAO,eAAe,IAG/B,OAAO,iBAAiB,SAAU,EAAQ,OAAO,kBAQlD,CACD,IAAK,sBACL,MAAO,SAA6B,EAAS,CAC3C,OAAO,oBAAoB,SAAU,EAAQ,OAAO,kBAQrD,CACD,IAAK,iBACL,MAAO,SAAwB,EAAS,CACtC,KAAK,GAAK,KAAK,kBACf,EAAQ,OAAO,KAAO,KAAK,aAAa,GACxC,EAAQ,OAAO,UAAU,KAAO,KAAK,aAAa,EAAQ,OAAO,WAE7D,EAAQ,OAAO,KAAK,IAAM,EAAQ,OAAO,KAAK,OAAS,EAAQ,OAAO,UAAU,KAAK,IAAM,EAAQ,OAAO,UAAU,KAAK,QAAU,EAAQ,OAAO,UAAY,KAAK,GAAG,OAAS,CAAC,EAAQ,OAAO,OACjM,EAAQ,OAAO,OAAS,GACf,GAAQ,OAAO,KAAK,IAAM,EAAQ,OAAO,KAAK,QAAU,EAAQ,OAAO,UAAU,KAAK,IAAM,EAAQ,OAAO,UAAU,KAAK,QAAU,EAAQ,OAAO,WAAa,KAAK,GAAG,OAAS,EAAQ,OAAO,SACzM,GAAQ,OAAO,OAAS,IAG1B,KAAK,YAAY,KAQlB,CACD,IAAK,mBACL,MAAO,SAA0B,EAAS,CACxC,GAAI,GAAS,KAEb,EAAQ,OAAO,eAAiB,UAAY,CAC1C,MAAO,GAAO,eAAe,IAG/B,OAAO,iBAAiB,SAAU,EAAQ,OAAO,kBAQlD,CACD,IAAK,sBACL,MAAO,SAA6B,EAAS,CAC3C,OAAO,oBAAoB,SAAU,EAAQ,OAAO,kBAQrD,CACD,IAAK,iBACL,MAAO,SAAwB,EAAS,CAClC,EAAQ,QAAU,EAAQ,OAAO,QACnC,KAAK,YAAY,KASpB,CACD,IAAK,cACL,MAAO,SAAqB,EAAS,CAQnC,KAPK,IAAI,EAAS,CAChB,SAAU,GACV,MAAO,GACP,IAAK,GACL,KAAM,KAGJ,OAAK,GAAG,OAAS,EAAQ,OAAO,KAAK,QAAU,CAAC,EAAQ,OAAO,SAI9D,GAAQ,OAAO,KAAK,OACvB,GAAQ,OAAO,KAAO,KAAK,aAAa,IAGtC,EAAQ,OAAO,MACjB,KAAK,IAAI,EAAQ,WAAY,CAC3B,QAAS,QACT,MAAO,EAAQ,OAAO,KAAK,MAAQ,KACnC,OAAQ,EAAQ,OAAO,KAAK,OAAS,OAIrC,EAAQ,OAAO,KAAK,MAAQ,GAAK,EAAQ,OAAO,YAAc,KAAK,KACrE,MAAK,IAAI,EAAS,CAChB,SAAU,QACV,IAAK,EAAQ,OAAO,KAAK,IAAM,KAC/B,KAAM,EAAQ,OAAO,KAAK,KAAO,KACjC,MAAO,EAAQ,OAAO,KAAK,MAAQ,OAGjC,EAAQ,OAAO,aACjB,EAAQ,UAAU,IAAI,EAAQ,OAAO,cAE9B,KAAK,UAAY,EAAQ,OAAO,KAAK,IAAM,EAAQ,OAAO,UACnE,MAAK,IAAI,EAAS,CAChB,SAAU,QACV,MAAO,EAAQ,OAAO,KAAK,MAAQ,KACnC,KAAM,EAAQ,OAAO,KAAK,KAAO,OAG/B,KAAK,UAAY,EAAQ,OAAO,KAAK,OAAS,EAAQ,OAAO,UAAY,EAAQ,OAAO,UAAU,KAAK,IAAM,EAAQ,OAAO,UAAU,aAAe,EAAQ,OAAO,aAClK,GAAQ,OAAO,aACjB,EAAQ,UAAU,OAAO,EAAQ,OAAO,aAG1C,KAAK,IAAI,EAAS,CAChB,IAAK,EAAQ,OAAO,UAAU,KAAK,IAAM,EAAQ,OAAO,UAAU,aAAgB,MAAK,UAAY,EAAQ,OAAO,KAAK,OAAS,EAAQ,OAAO,cAAgB,QAG7J,GAAQ,OAAO,aACjB,EAAQ,UAAU,IAAI,EAAQ,OAAO,aAGvC,KAAK,IAAI,EAAS,CAChB,IAAK,EAAQ,OAAO,UAAY,SAIhC,GAAQ,OAAO,aACjB,EAAQ,UAAU,OAAO,EAAQ,OAAO,aAG1C,KAAK,IAAI,EAAS,CAChB,SAAU,GACV,MAAO,GACP,IAAK,GACL,KAAM,KAGJ,EAAQ,OAAO,MACjB,KAAK,IAAI,EAAQ,WAAY,CAC3B,QAAS,GACT,MAAO,GACP,OAAQ,SAUf,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,GAAI,GAAS,KAEb,KAAK,QAAQ,KAAK,SAAU,SAAU,EAAS,CAC7C,EAAQ,OAAO,KAAO,EAAO,aAAa,GAC1C,EAAQ,OAAO,UAAU,KAAO,EAAO,aAAa,EAAQ,OAAO,WAEnE,EAAO,SAAS,GAEhB,EAAO,YAAY,OAQtB,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,GAAI,GAAS,KAEb,OAAO,oBAAoB,OAAQ,KAAK,yBACxC,OAAO,oBAAoB,SAAU,KAAK,yBAC1C,KAAK,QAAQ,KAAK,SAAU,SAAU,EAAS,CAC7C,EAAO,oBAAoB,GAE3B,EAAO,oBAAoB,GAE3B,MAAO,GAAQ,WAUlB,CACD,IAAK,qBACL,MAAO,SAA4B,EAAS,CAG1C,OAFI,GAAY,EAAQ,WAEjB,CAAC,EAAU,aAAa,0BAA4B,CAAC,EAAU,WAAW,cAAc,EAAQ,OAAO,kBAAoB,IAAc,KAAK,MACnJ,EAAY,EAAU,WAGxB,MAAO,KASR,CACD,IAAK,eACL,MAAO,SAAsB,EAAS,CACpC,KAAK,IAAI,EAAS,CAChB,SAAU,GACV,MAAO,GACP,IAAK,GACL,KAAM,KAER,GAAI,GAAQ,KAAK,IAAI,EAAQ,YAAa,EAAQ,YAAa,EAAQ,aACnE,EAAS,KAAK,IAAI,EAAQ,aAAc,EAAQ,aAAc,EAAQ,cACtE,EAAM,EACN,EAAO,EAEX,EACE,IAAO,EAAQ,WAAa,EAC5B,GAAQ,EAAQ,YAAc,EAC9B,EAAU,EAAQ,mBACX,GAET,MAAO,CACL,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,KASX,CACD,IAAK,kBACL,MAAO,UAA2B,CAChC,MAAO,CACL,MAAO,KAAK,IAAI,SAAS,gBAAgB,YAAa,OAAO,YAAc,GAC3E,OAAQ,KAAK,IAAI,SAAS,gBAAgB,aAAc,OAAO,aAAe,MASjF,CACD,IAAK,0BACL,MAAO,UAAmC,CACxC,KAAK,UAAa,QAAO,aAAe,SAAS,WAAc,UAAS,WAAa,IAAM,IAS5F,CACD,IAAK,UACL,MAAO,SAAiB,EAAO,EAAU,CACvC,OAAS,GAAI,EAAG,EAAM,EAAM,OAAQ,EAAI,EAAK,IAC3C,EAAS,EAAM,MAUlB,CACD,IAAK,MACL,MAAO,SAAa,EAAS,EAAY,CACvC,OAAS,KAAY,GACf,EAAW,eAAe,IAC5B,GAAQ,MAAM,GAAY,EAAW,QAMtC,KAOR,UAAU,EAAM,EAAS,CAEtB,EAAO,QAAU,IAQlB,KAAM,I,qBC/eT,GAAI,GAAS,EAAQ,MAErB,EAAO,QAAU,G,kCCDjB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAGT,GAAI,GAAgB,EAAQ,MAExB,EAAiB,EAAuB,GAE5C,WAAgC,EAAK,CAAE,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAEvF,UAAkB,CAChB,WAAY,CACV,iBAAkB,CAAC,EAAe,QAAQ,MAAO,EAAe,QAAQ,QACxE,oBAAqB,IAEvB,UAAW,CACT,iBAAkB,CAAC,EAAe,QAAQ,MAAO,EAAe,QAAQ,SACxE,oBAAqB,IAEvB,OAAQ,CACN,iBAAkB,CAAC,EAAe,QAAQ,MAAO,EAAe,QAAQ,QAAS,EAAe,QAAQ,QACxG,oBAAqB,GAIrB,QAAS,MAGb,EAAO,QAAU,EAAQ,S,kCC5BzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAGT,GAAI,GAAS,EAAQ,MAEjB,EAAU,EAAuB,GAEjC,EAAiB,EAAQ,MAEzB,EAAkB,EAAuB,GAEzC,EAAc,EAAQ,MAEtB,EAAe,EAAuB,GAEtC,EAAoB,EAAQ,MAE5B,EAAqB,EAAuB,GAEhD,WAAgC,GAAK,CAAE,MAAO,KAAO,GAAI,WAAa,GAAM,CAAE,QAAS,IAIvF,GAAI,GAAS,GAAG,EAAQ,SAAS,kBAE7B,GAAgB,GASpB,GAAc,YAAc,SAAU,GAAS,CAC7C,GAAI,IAAS,GAET,GAAQ,SAAe,GAAW,CACpC,GAAI,IAAc,KAAO,GAAU,MAAM,EAAG,GAAG,cAAgB,GAAU,MAAM,GAE/E,GAAO,IAAe,SAAU,GAAO,CACrC,EAAM,aAAc,GAAa,IAEjC,GAAQ,QAAQ,GAAW,MAI3B,GAA4B,GAC5B,GAAoB,GACpB,GAAiB,OAErB,GAAI,CACF,OAAS,IAAY,EAAa,QAAQ,OAAO,YAAa,EAAO,CAAE,IAA6B,GAAQ,GAAU,QAAQ,MAAO,GAA4B,GAAM,CACrK,GAAI,GAAY,EAAM,MAEtB,GAAM,UAED,GAAP,CACA,GAAoB,GACpB,GAAiB,UACjB,CACA,GAAI,CACE,CAAC,IAA6B,GAAU,QAC1C,GAAU,gBAEZ,CACA,GAAI,GACF,KAAM,KAKZ,MAAO,KAaT,GAAc,gBAAkB,SAAU,GAAgB,CACxD,GAAI,IAAc,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAElF,GAAY,GAEZ,GAAS,SAAgB,GAAc,CACrC,IAAe,EAAmB,QAAQ,IAC5C,GAAU,IAAgB,UAAY,CACpC,OAAS,IAAO,UAAU,OAAQ,GAAO,MAAM,IAAO,GAAO,EAAG,GAAO,GAAM,KAC3E,GAAK,IAAQ,UAAU,IAGzB,MAAO,IAAe,KAAK,SAAU,GAAQ,CAC3C,GAAI,IAAY,EAAmB,QAAQ,IACvC,GAAc,GAAO,iBAOrB,GAAQ,GAAO,IAAc,MAAM,GAAQ,IAK/C,MAAI,IAAU,qBAGd,MAAM,QAAQ,GAAU,mBAAqB,GAAU,iBAAiB,QAAQ,MAAiB,GACxF,GAAI,SAAQ,SAAU,GAAS,CACpC,GAAI,IAAsB,aAA+B,CACvD,GAAI,IAAyB,GAAO,iBAEhC,GAAU,OAEV,MAAO,IAAU,SAAY,UAC/B,IAAU,WAAW,UAAY,CAC/B,GAAO,oBAAoB,gBAAiB,IAE5C,MACC,GAAU,UAGX,MAAM,QAAQ,GAAU,mBAAqB,GAAU,iBAAiB,QAAQ,MAA4B,IAC9G,IAAO,oBAAoB,gBAAiB,IAE5C,aAAa,IAEb,OAIJ,GAAO,iBAAiB,gBAAiB,MACxC,KAAK,UAAY,CAClB,MAAO,MAIJ,MAIX,GAAU,IAAgB,UAAY,CACpC,OAAS,IAAQ,UAAU,OAAQ,GAAO,MAAM,IAAQ,GAAQ,EAAG,GAAQ,GAAO,KAChF,GAAK,IAAS,UAAU,IAG1B,MAAO,IAAe,KAAK,SAAU,GAAQ,CAM3C,MAAO,IAAO,IAAc,MAAM,GAAQ,QAM9C,GAA6B,GAC7B,GAAqB,GACrB,GAAkB,OAEtB,GAAI,CACF,OAAS,GAAa,EAAgB,QAAQ,OAAO,YAAa,EAAQ,CAAE,IAA8B,GAAS,EAAW,QAAQ,MAAO,GAA6B,GAAM,CAC9K,GAAI,IAAe,EAAO,MAE1B,GAAO,WAEF,GAAP,CACA,GAAqB,GACrB,GAAkB,UAClB,CACA,GAAI,CACE,CAAC,IAA8B,EAAW,QAC5C,EAAW,gBAEb,CACA,GAAI,GACF,KAAM,KAKZ,MAAO,KAGT,UAAkB,GAClB,EAAO,QAAU,EAAQ,S,gCCnMzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAET,UAAkB,CAChB,UAAW,EACX,MAAO,EACP,OAAQ,EACR,QAAS,EACT,UAAW,GACX,WAAY,GAEd,EAAO,QAAU,EAAQ,S,gCCXzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAST,UAAkB,CAAC,QAAS,cAAe,wBAAyB,qBAAsB,QAAS,YAAa,gBAChH,EAAO,QAAU,EAAQ,S,gCCXzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAOT,UAAkB,CAAC,eAAgB,gBAAiB,gBAAiB,iBAAkB,YAAa,aAAc,YAAa,yBAA0B,cAAe,eAAgB,YAAa,gBAAiB,cAAe,aAAc,UAAW,cAAe,mBAAoB,YAAa,OAAQ,SAAU,UAAW,YAAa,YAAa,SAAU,iBAAkB,kBAAmB,kBAAmB,4BAA6B,qBAAsB,qBAAsB,4BAA6B,iBAAkB,cAAe,sBAAuB,cAAe,oBAAqB,aAAc,YAAa,mBAAoB,UAAW,UAAW,aAC9qB,EAAO,QAAU,EAAQ,S,kCCTzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAGT,GAAI,GAAU,MAAO,SAAW,YAAc,MAAO,QAAO,UAAa,SAAW,SAAU,EAAK,CAAE,MAAO,OAAO,IAAS,SAAU,EAAK,CAAE,MAAO,IAAO,MAAO,SAAW,YAAc,EAAI,cAAgB,QAAU,IAAQ,OAAO,UAAY,SAAW,MAAO,IAElQ,EAAU,EAAQ,MAElB,EAAW,EAAuB,GAElC,EAAwB,EAAQ,MAEhC,EAAyB,EAAuB,GAEhD,EAAiB,EAAQ,MAEzB,EAAkB,EAAuB,GAE7C,WAAgC,EAAK,CAAE,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAUvF,GAAI,GAAmB,OAavB,UAAkB,SAAU,EAAgB,CAC1C,GAAI,IAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC9E,GAAc,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAElF,GAAW,GAAG,EAAS,WAM3B,GAJK,GACH,GAAoB,GAAG,EAAuB,SAAS,KAGrD,GAAQ,OACV,KAAM,IAAI,OAAM,yCAGlB,GAAI,MAAO,IAAmB,UAAY,CAAC,SAAS,eAAe,GACjE,KAAM,IAAI,OAAM,YAAc,EAAiB,qBAGjD,GAAQ,OAAS,EAAgB,QAAQ,YAAY,IAErD,GAAI,IAAiB,GAAI,SAAQ,SAAU,GAAS,CAClD,GAAK,OAAO,IAAmB,YAAc,YAAc,EAAQ,MAAqB,UAAY,EAAe,oBAAqB,UAAU,CAChJ,GAAI,IAAS,EAEb,GAAQ,QAIR,GAAiB,KAAK,SAAU,GAAI,CAElC,GAAI,GAAS,GAAI,IAAG,OAAO,EAAgB,IAE3C,UAAQ,GAAG,QAAS,UAAY,CAC9B,GAAQ,KAGH,SAKT,GAAY,EAAgB,QAAQ,gBAAgB,GAAgB,IAExE,UAAU,GAAK,GAAQ,GACvB,GAAU,IAAM,GAAQ,IAEjB,IAGT,EAAO,QAAU,EAAQ,S,kCC1FzB,OAAO,eAAe,EAAS,aAAc,CAC3C,MAAO,KAGT,GAAI,GAAc,EAAQ,MAEtB,EAAe,EAAuB,GAE1C,WAAgC,EAAK,CAAE,MAAO,IAAO,EAAI,WAAa,EAAM,CAAE,QAAS,GAEvF,UAAkB,SAAU,EAAS,CAKnC,GAAI,GAAiB,GAAI,SAAQ,SAAU,EAAS,CAClD,GAAI,OAAO,IAAM,OAAO,GAAG,QAAU,OAAO,GAAG,iBAAkB,UAAU,CACzE,EAAQ,OAAO,IAEf,WACK,CACL,GAAI,GAAW,OAAO,SAAS,WAAa,QAAU,QAAU,SAE/D,GAAG,EAAa,SAAS,EAAW,+BAAgC,SAAU,EAAO,CAChF,GACF,EAAQ,QAAQ,QAAS,KAK/B,GAAI,GAAW,OAAO,wBAItB,OAAO,wBAA0B,UAAY,CACvC,GACF,IAGF,EAAQ,OAAO,OAInB,MAAO,IAGT,EAAO,QAAU,EAAQ,S,qBC1CzB,EAAU,EAAO,QAAU,EAAjB,MACV,EAAQ,IAAM,EACd,EAAQ,WAAa,EACrB,EAAQ,KAAO,EACf,EAAQ,KAAO,EACf,EAAQ,UAAY,EACpB,EAAQ,QAAyB,MAAO,SAAtB,aACe,MAAO,QAAO,SAA7B,YACE,OAAO,QAAQ,MACf,IAMpB,EAAQ,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,WAWF,YAAqB,CAInB,MAAI,OAAO,SAAW,aAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAKD,MAAO,WAAa,aAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,MAAO,SAAW,aAAe,OAAO,SAAY,QAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,mBAAqB,SAAS,OAAO,GAAI,KAAO,IAEnJ,MAAO,YAAc,aAAe,UAAU,WAAa,UAAU,UAAU,cAAc,MAAM,sBAOxG,EAAQ,WAAW,EAAI,SAAS,EAAG,CACjC,GAAI,CACF,MAAO,MAAK,UAAU,SACf,EAAP,CACA,MAAO,+BAAiC,EAAI,UAWhD,WAAoB,EAAM,CACxB,GAAI,GAAY,KAAK,UASrB,GAPA,EAAK,GAAM,GAAY,KAAO,IAC1B,KAAK,UACJ,GAAY,MAAQ,KACrB,EAAK,GACJ,GAAY,MAAQ,KACrB,IAAM,EAAQ,SAAS,KAAK,MAE5B,EAAC,EAEL,IAAI,GAAI,UAAY,KAAK,MACzB,EAAK,OAAO,EAAG,EAAG,EAAG,kBAKrB,GAAI,GAAQ,EACR,GAAQ,EACZ,EAAK,GAAG,QAAQ,cAAe,SAAS,GAAO,CAChC,KAAT,MACJ,KACa,KAAT,MAGF,IAAQ,MAIZ,EAAK,OAAO,GAAO,EAAG,IAUxB,YAAe,CAGb,MAAoB,OAAO,UAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,WAU3D,WAAc,EAAY,CACxB,GAAI,CACU,GAAR,KACF,EAAQ,QAAQ,WAAW,SAE3B,EAAQ,QAAQ,MAAQ,OAE1B,GAUJ,YAAgB,CACd,GAAI,GACJ,GAAI,CACF,EAAI,EAAQ,QAAQ,WACpB,EAGF,MAAI,CAAC,GAAK,MAAO,UAAY,aAAe,OAAS,UACnD,GAAI,QAAQ,IAAI,OAGX,EAOT,EAAQ,OAAO,KAaf,YAAwB,CACtB,GAAI,CACF,MAAO,QAAO,kBACd,K,qBC/KJ,EAAU,EAAO,QAAU,EAAY,MAAQ,EAAY,QAAa,EACxE,EAAQ,OAAS,EACjB,EAAQ,QAAU,EAClB,EAAQ,OAAS,EACjB,EAAQ,QAAU,EAClB,EAAQ,SAAW,EAAnB,MAMA,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAQhB,EAAQ,WAAa,GAMrB,GAAI,GASJ,WAAqB,EAAW,CAC9B,GAAI,GAAO,EAAG,EAEd,IAAK,IAAK,GACR,EAAU,IAAQ,GAAK,EAAQ,EAAU,WAAW,GACpD,GAAQ,EAGV,MAAO,GAAQ,OAAO,KAAK,IAAI,GAAQ,EAAQ,OAAO,QAWxD,WAAqB,EAAW,CAE9B,YAAiB,CAEf,GAAI,EAAC,EAAM,QAEX,IAAI,GAAO,EAGP,GAAO,CAAC,GAAI,MACZ,GAAK,GAAQ,IAAY,IAC7B,EAAK,KAAO,GACZ,EAAK,KAAO,EACZ,EAAK,KAAO,GACZ,EAAW,GAIX,OADI,IAAO,GAAI,OAAM,UAAU,QACtB,GAAI,EAAG,GAAI,GAAK,OAAQ,KAC/B,GAAK,IAAK,UAAU,IAGtB,GAAK,GAAK,EAAQ,OAAO,GAAK,IAEb,MAAO,IAAK,IAAzB,UAEF,GAAK,QAAQ,MAIf,GAAI,IAAQ,EACZ,GAAK,GAAK,GAAK,GAAG,QAAQ,gBAAiB,SAAS,GAAO,GAAQ,CAEjE,GAAI,KAAU,KAAM,MAAO,IAC3B,KACA,GAAI,GAAY,EAAQ,WAAW,IACnC,GAAmB,MAAO,IAAtB,WAAiC,CACnC,GAAI,GAAM,GAAK,IACf,GAAQ,EAAU,KAAK,EAAM,GAG7B,GAAK,OAAO,GAAO,GACnB,KAEF,MAAO,MAIT,EAAQ,WAAW,KAAK,EAAM,IAE9B,GAAI,IAAQ,EAAM,KAAO,EAAQ,KAAO,QAAQ,IAAI,KAAK,SACzD,GAAM,MAAM,EAAM,KAGpB,SAAM,UAAY,EAClB,EAAM,QAAU,EAAQ,QAAQ,GAChC,EAAM,UAAY,EAAQ,YAC1B,EAAM,MAAQ,EAAY,GAGP,MAAO,GAAQ,MAA9B,YACF,EAAQ,KAAK,GAGR,EAWT,WAAgB,EAAY,CAC1B,EAAQ,KAAK,GAEb,EAAQ,MAAQ,GAChB,EAAQ,MAAQ,GAKhB,OAHI,GAAS,OAAO,IAAe,SAAW,EAAa,IAAI,MAAM,UACjE,EAAM,EAAM,OAEP,GAAI,EAAG,GAAI,EAAK,KACnB,CAAC,EAAM,KACX,GAAa,EAAM,IAAG,QAAQ,MAAO,OACjC,EAAW,KAAO,IACpB,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAW,OAAO,GAAK,MAE3D,EAAQ,MAAM,KAAK,GAAI,QAAO,IAAM,EAAa,OAWvD,YAAmB,CACjB,EAAQ,OAAO,IAWjB,WAAiB,EAAM,CACrB,GAAI,GAAG,EACP,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,IAAK,EAAI,EAAG,EAAM,EAAQ,MAAM,OAAQ,EAAI,EAAK,IAC/C,GAAI,EAAQ,MAAM,GAAG,KAAK,GACxB,MAAO,GAGX,MAAO,GAWT,WAAgB,EAAK,CACnB,MAAI,aAAe,OAAc,EAAI,OAAS,EAAI,QAC3C,I,iBCpMT,GAAI,GAAI,IACJ,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,GACR,EAAI,EAAI,OAgBZ,EAAO,QAAU,SAAS,EAAK,EAAS,CACtC,EAAU,GAAW,GACrB,GAAI,GAAO,MAAO,GAClB,GAAI,IAAS,UAAY,EAAI,OAAS,EACpC,MAAO,GAAM,GACR,GAAI,IAAS,UAAY,MAAM,KAAS,GAC7C,MAAO,GAAQ,KAAO,EAAQ,GAAO,EAAS,GAEhD,KAAM,IAAI,OACR,wDACE,KAAK,UAAU,KAYrB,WAAe,EAAK,CAElB,GADA,EAAM,OAAO,GACT,IAAI,OAAS,KAGjB,IAAI,GAAQ,wHAAwH,KAClI,GAEF,GAAI,EAAC,EAGL,IAAI,GAAI,WAAW,EAAM,IACrB,GAAQ,GAAM,IAAM,MAAM,cAC9B,OAAQ,QACD,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,MACR,WACA,UACA,IACH,MAAO,GAAI,MACR,YACA,WACA,UACA,SACA,IACH,MAAO,GAAI,MACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,MACR,cACA,aACA,WACA,UACA,IACH,MAAO,GAAI,MACR,mBACA,kBACA,YACA,WACA,KACH,MAAO,WAEP,UAYN,WAAkB,EAAI,CACpB,MAAI,IAAM,EACD,KAAK,MAAM,EAAK,GAAK,IAE1B,GAAM,EACD,KAAK,MAAM,EAAK,GAAK,IAE1B,GAAM,EACD,KAAK,MAAM,EAAK,GAAK,IAE1B,GAAM,EACD,KAAK,MAAM,EAAK,GAAK,IAEvB,EAAK,KAWd,WAAiB,EAAI,CACnB,MAAO,GAAO,EAAI,EAAG,QACnB,EAAO,EAAI,EAAG,SACd,EAAO,EAAI,EAAG,WACd,EAAO,EAAI,EAAG,WACd,EAAK,MAOT,WAAgB,EAAI,EAAG,EAAM,CAC3B,GAAI,IAAK,GAGT,MAAI,GAAK,EAAI,IACJ,KAAK,MAAM,EAAK,GAAK,IAAM,EAE7B,KAAK,KAAK,EAAK,GAAK,IAAM,EAAO,OCrJtC,GAA2B,GAG/B,YAA6B,EAAU,CAEtC,GAAI,GAAe,GAAyB,GAC5C,GAAI,IAAiB,OACpB,MAAO,GAAa,QAGrB,GAAI,GAAS,GAAyB,GAAY,CAGjD,QAAS,IAIV,UAAoB,GAAU,KAAK,EAAO,QAAS,EAAQ,EAAO,QAAS,IAGpE,EAAO,Q,YCpBf,GAAoB,EAAI,SAAS,EAAQ,CACxC,GAAI,GAAS,GAAU,EAAO,WAC7B,UAAW,CAAE,MAAO,GAAO,SAC3B,UAAW,CAAE,MAAO,IACrB,UAAoB,EAAE,EAAQ,CAAE,EAAG,IAC5B,O,WCNR,GAAI,GAAW,OAAO,eAAiB,SAAS,EAAK,CAAE,MAAO,QAAO,eAAe,IAAU,SAAS,EAAK,CAAE,MAAO,GAAI,WACrH,EAOJ,GAAoB,EAAI,SAAS,EAAO,EAAM,CAG7C,GAFG,EAAO,GAAG,GAAQ,KAAK,IACvB,EAAO,GACP,MAAO,IAAU,UAAY,GAC3B,GAAO,GAAM,EAAM,YACnB,EAAO,IAAO,MAAO,GAAM,MAAS,YAAY,MAAO,GAE5D,GAAI,GAAK,OAAO,OAAO,MACvB,GAAoB,EAAE,GACtB,GAAI,GAAM,GACV,EAAiB,GAAkB,CAAC,KAAM,EAAS,IAAK,EAAS,IAAK,EAAS,IAC/E,OAAQ,GAAU,EAAO,GAAK,EAAO,MAAO,IAAW,UAAY,CAAC,CAAC,EAAe,QAAQ,GAAU,EAAU,EAAS,GACxH,OAAO,oBAAoB,GAAS,QAAQ,SAAS,EAAK,CAAE,EAAI,GAAO,UAAW,CAAE,MAAO,GAAM,MAElG,SAAI,QAAa,UAAW,CAAE,MAAO,IACrC,GAAoB,EAAE,EAAI,GACnB,M,WCvBR,GAAoB,EAAI,SAAS,EAAS,EAAY,CACrD,OAAQ,KAAO,GACX,GAAoB,EAAE,EAAY,IAAQ,CAAC,GAAoB,EAAE,EAAS,IAC5E,OAAO,eAAe,EAAS,EAAK,CAAE,WAAY,GAAM,IAAK,EAAW,S,WCJ3E,GAAoB,EAAK,UAAW,CACnC,GAAI,MAAO,aAAe,SAAU,MAAO,YAC3C,GAAI,CACH,MAAO,OAAQ,GAAI,UAAS,sBAC3B,CACD,GAAI,MAAO,SAAW,SAAU,MAAO,e,WCLzC,GAAoB,EAAI,SAAS,EAAK,EAAM,CAAE,MAAO,QAAO,UAAU,eAAe,KAAK,EAAK,O,WCC/F,GAAoB,EAAI,SAAS,EAAS,CACtC,MAAO,SAAW,aAAe,OAAO,aAC1C,OAAO,eAAe,EAAS,OAAO,YAAa,CAAE,MAAO,WAE7D,OAAO,eAAe,EAAS,aAAc,CAAE,MAAO,S,mCCCvD,MANqB,GAAgC,GCArD,WACE,EACA,KACG,EAAe,CAElB,GAAI,CACF,GAAI,EACF,MAAO,GAAG,EAAW,GAAG,SAEnB,EAAP,CACA,eAAQ,MAAM,GACP,KAGT,MAAO,MAGT,WACE,EACA,KACG,EAAe,CAElB,GAAI,CACF,MAAO,OAAM,KAAK,GAAY,IAAK,GAAc,EAAG,EAAW,GAAG,UAC3D,EAAP,CACA,eAAQ,MAAM,GACP,MAKX,MAAe,CACb,OAAQ,EACR,SAAU,G,qBC3BZ,WACE,EACA,EACA,EAAmB,MAChB,EAAuB,CAE1B,GAAI,CACF,GAAI,EAAW,CACb,KAAM,GAAa,EAAmB,GAAc,GAAa,GAC3D,EAAO,QAAW,GAElB,EAAQ,OAAH,wBAAQ,GAAiB,GAEpC,EAAK,OAAO,gBAAC,EAAS,iBAAK,YAEtB,EAAP,CACA,QAAQ,MAAM,IAIlB,WACE,EAEA,EACA,EAAmB,MAChB,EAAuB,CAE1B,GAAI,CACF,MAAO,OAAM,KAAK,GAAY,QAAS,GAAc,CACnD,KAAM,GAAa,EAAmB,GAAc,GAAa,GAC3D,EAAO,QAAW,GAElB,EAAQ,OAAH,sBAAK,aAAc,GAAiB,GAE/C,EAAK,OAAO,gBAAC,EAAS,iBAAK,aAEtB,EAAP,CACA,QAAQ,MAAM,GAGhB,MAAO,MAGT,MAAe,CACb,OAAQ,EACR,SAAU,G,oBCnDZ,EAAe,CACbC,OAAQ,SACRC,UAAW,YACXC,OAAQ,SACRC,QAAS,WCCC,GAAZ,UAAY,EAAS,CACnB,cACA,oBACA,gBACA,sBAJU,QAAS,KAQrB,GAAY,IAAZ,UAAY,EAAO,CACjB,sBACA,gBAFU,QAAO,KAMnB,GAAY,IAAZ,UAAY,EAAsB,CAChC,cACA,gBAFU,QAAsB,KAgC3B,KAAM,IAAuB,0BACvB,GAAmB,sBACnB,GAA+B,+BAC/B,GAA8B,8BAC9B,GAAsB,sBAEtB,EAAgB,gBAChB,EAAa,aACb,GAAY,YACZ,GAAW,WACX,GAAO,OACP,GAAM,MAEN,GAAU,UACV,GAAS,SAGT,GAAe,EACf,GAAgB,GAIhB,GAAuC,CAClD,IAAK,QACL,IAAK,SAIM,GAAa,IACb,GAAa,EACb,GAAmB,YC7DhC,OAhBuB,GAAiC,C,MACtD,KAAM,GAAgB,OAAO,eAE7B,GAAI,CAAC,EAAe,KAAM,IAAI,OAAM,2BAEpC,KAAM,GAAW,KAAQ,WAAO,0BAAG,IAEnC,GAAI,CAAC,EAAU,MAAO,MAEtB,KAAM,GAAa,EAAc,GAEjC,GAAI,CAAC,EAAY,KAAM,IAAI,OAAM,oBAAoB,uBAErD,MAAO,ICbT,KAAM,IAA8D,CAClE,IAAK,6CACL,QAAS,MACT,MAAO,gBACP,MAAO,CACL,CACE,GAAI,EACJ,MACE,mPACF,MAAO,0CACP,IAAK,IACL,OAAQ,MAEV,CACE,GAAI,EACJ,MAAO,iBACP,MAAO,iBACP,IAAK,IACL,OAAQ,MAEV,CACE,GAAI,EACJ,MAAO,iBACP,MAAO,iBACP,IAAK,IACL,OAAQ,MAEV,CACE,GAAI,EACJ,MAAO,iBACP,MAAO,iBACP,IAAK,IACL,OAAQ,MAEV,CACE,GAAI,EACJ,MAAO,iBACP,MAAO,iBACP,IAAK,IACL,OAAQ,OAGZ,YAAa,QACb,aAAc,CACZ,gCAAiC,+BACjC,sCACE,oIAEJ,WAAY,CACV,YAAa,EACb,WAAY,EACZ,UAAW,GACX,WAAY,KAIV,GAAkE,CACtE,MAAO,sBACP,QAAS,CACP,OAAQ,eACR,KAAM,oCAER,IAAK,+CACL,MAAO,aACP,eAAgB,KAChB,MAAO,CACL,CACE,GAAI,EACJ,KAAM,UACN,KAAM,CACJ,MAAO,0BACP,uBAAwB,gCACxB,eAAgB,mCAElB,OAAQ,CACN,MAAO,gBACP,KAAM,WAGV,CACE,GAAI,EACJ,KAAM,UACN,KAAM,CACJ,MAAO,oBACP,uBAAwB,mEAE1B,OAAQ,CACN,MAAO,kBACP,KAAM,YAGV,CACE,GAAI,EACJ,KAAM,UACN,KAAM,CACJ,MAAO,gDAET,OAAQ,CACN,MAAO,gBACP,KAAM,WAGV,CACE,GAAI,EACJ,KAAM,UACN,KAAM,OACN,KAAM,CACJ,MAAO,oBACP,uBAAwB,oEAE1B,OAAQ,CACN,MAAO,kBACP,KAAM,aAIZ,YAAa,QACb,aAAc,CACZ,kCAAmC,gCAErC,WAAY,CACV,YAAa,EACb,WAAY,EACZ,UAAW,GACX,WAAY,KAgDhB,OAV4B,IAAY,CAClC,SAAM,YAAN,OAAQ,iBAEZ,QAAO,eAAiB,CACtB,uBAAwB,GACxB,yBAA0B,MC9JvB,KAAM,IAAmB,MAC9B,EACA,IACoC,C,MACpC,KAAM,CAAE,OAAQ,EACV,EAAoC,GAE1C,EAAa,IAAM,EACnB,EAAa,KAAO,CAAE,QAAS,GAAO,QAAS,qBAC/C,EAAa,cAAgB,EAE7B,GAAI,CACE,MAAO,IAAQ,aAAe,MAAO,GAAI,MAAS,UAAY,EAAI,KAAK,SACzE,GAAa,KAAO,EAAI,YAEnB,EAAP,CACA,QAAQ,MAAM,GAGhB,KAAI,IAAkB,OAAY,YAAZ,EAAc,QAAI,0BAAE,UACxC,QAAQ,MAAM,EAAa,KAAK,SAG5B,GAOF,GAAiB,GAAqC,C,UAC1D,KAAM,GAAS,GAAD,GAAC,UAAO,kBAAc,0BAAE,WAAmB,0BAAE,4BAAwB,mBAAI,GAEvF,MAAK,IACH,QAAQ,MAAM,yDAGT,OAAP,wBACK,GAAM,CACT,QAAS,OAAF,wBACF,EAAO,SAAO,CACjB,2BAA4B,OAKlC,kBAA2D,CACzD,WACA,UAAU,CAAE,OAAQ,mBAAoB,eAAgB,oBACxD,kBACM,CACN,KAAM,GAAsB,CAC1B,OAAQ,EAAS,OACjB,KAAM,EAAS,MAAQ,KACvB,YAAa,eAGX,GACF,GAAO,QAAU,GAGnB,KAAM,CAAE,OAAQ,EACV,EAAe,EAAI,WAAW,KAAO,EAAM,IAAI,IAG/C,EAA8B,GAAc,GAElD,MAAO,OAAM,EAAc,GACxB,KAAM,GAAa,EAAS,QAC5B,KAAM,GAAgB,CACrB,GAAI,GAAY,EAAS,QACvB,MAAO,GAIT,KAAM,CACJ,IAAK,CACH,KAAM,CACJ,QAAS,EAAS,QAClB,QAAS,EAAS,QAClB,QAAS,EAAS,aAKzB,MAAO,GAAU,GAAiB,EAAO,IAG9C,OAAe,GC9Ff,GAPwB,CACtB,EACA,IAEO,IAAY,YAAZ,EAAe,KAAQ,ECEhC,GAAe,CAIb,aAAa,EAAoB,CAC/B,KAAM,GACJ,OAAO,aAAe,SAAS,gBAAgB,WAAa,SAAS,KAAK,WAAa,EACzF,MAAO,GAAQ,wBAAwB,IAAM,GAM/C,UAAU,CAAE,WAAW,SAAU,eAAe,EAAG,UAAwB,CAEzE,KAAM,GAAM,KADiB,aAAa,GACZ,EAE9B,OAAO,OAAO,CACZ,WACA,UCvBN,KAAM,IAAiB,IACd,OAAO,YAAc,SAAS,gBAAgB,aAAe,SAAS,KAAK,YAepF,OAAe,CACb,kBACA,mBAdyB,IAGlB,KAAc,GAAW,GAYhC,oBAT0B,IAGnB,MAAe,GAAW,ICTpB,YAA4B,EAAc,EAAU,CACjE,EAAa,cAAc,QAAQ,GAAW,CACxC,GAAQ,QAAQ,IAAM,EAAQ,QAAQ,YACxC,EAAa,cAAc,QAAQ,KAIvC,EAAa,WAAW,GAAS,CAC/B,EAAM,QAAU,OACZ,GACF,EAAS,KCRA,YAAuB,EAAU,GAAI,EAAU,EAAU,CACtE,KAAK,OAAS,IAAM,CACd,KAAK,QACP,KAAK,WAAW,IAAM,GAAI,IAE1B,GAAkB,OAItB,KAAK,YAAc,IAAM,GAAG,MAAM,KAAK,SAAS,iBAAiB,KAAK,WAEtE,KAAK,WAAa,CAAC,EAAW,IAAM,GAAI,EAAkB,KAAS,CACjE,KAAM,GAAuB,OAAO,sBAAwB,KAAK,cAEjE,KAAK,cAAc,QAAQ,GAAW,CACpC,EAAS,GACT,EAAS,GAEL,CAAC,GAAwB,EAC3B,EAAU,GAEV,EAAqB,QAAQ,MAKnC,KAAK,YAAc,IACjB,GAAI,sBAAqB,CAAC,EAAS,IAAa,CAC9C,EAAQ,QAAQ,CAAC,CAAE,oBAAmB,YAAa,CAC7C,EAAoB,GACtB,GAAS,UAAU,GACnB,EAAU,EAAQ,QAGrB,KAAK,SAEV,KAAM,GAAY,CAAC,EAAQ,IAAqB,CAC9C,KAAM,CAAE,MAAK,SAAQ,KAAI,aAAc,EAAO,QAC9C,EAAmB,GAAoB,CAAC,OAAO,qBAE3C,GACF,GAAO,IAAM,GAGX,GACF,GAAO,OAAS,GAGd,GAAoB,GACtB,GAAO,MAAM,gBAAkB,QAAQ,OAGrC,GAAoB,GACtB,EAAO,UAAU,IAAI,GAGvB,EAAgB,EAAO,gBAGnB,EAAkB,GAAW,CAC7B,OAAO,oBAAsB,YAAmB,qBAClD,GAAG,MAAM,KAAK,EAAQ,iBAAiB,kBAAkB,QAAQ,GAAU,CACzE,EAAO,OAAS,EAAO,QAAQ,UAK/B,EAAW,GAAW,CAC1B,KAAM,CAAE,cAAa,SAAS,IAAM,IAAO,KAAK,QAC1C,EAAS,IAAM,CACnB,EAAO,GACP,EAAQ,UAAU,IAAI,WAGxB,EAAQ,iBAAiB,QAAS,IAAM,CAClC,GAAe,CAAC,EAAQ,UAAU,SAAS,UAC7C,GAAQ,IAAM,GAEhB,EAAQ,UAAU,IAAI,SACtB,EAAQ,oBAAoB,OAAQ,KAGtC,EAAQ,iBAAiB,OAAQ,IAGnC,KAAK,SAAW,GAAY,iBAC5B,KAAK,QAAU,EACf,KAAK,QACH,CAAC,iBAAiB,UAAU,eAAe,YAAc,IAAa,GAAa,uBACrF,KAAK,SAGP,GAAa,uBAAyB,GClGtC,OAAe,GCAf,GAAe,IAAM,CACnB,GAAI,GAAW,GAAI,IAAa,CAAE,WAAY,SAAW,aAErD,SAAS,cAAc,aAEzB,GAAW,GAAI,IAAa,CAAE,WAAY,QAAS,UAAW,IAAO,eCP1D,YAAwB,EAA6B,CAElE,GAAI,CADc,yBAA0B,SAC5B,OAgBhB,GAfiC,sBAAqB,CAAC,EAAS,IAAa,CAC3E,EAAQ,QAAQ,CAAC,CAAE,iBAAgB,OAAQ,KAAY,CACrD,GAAI,GAAkB,YAAiB,kBACrC,OAAS,GAAI,EAAG,EAAI,EAAM,SAAS,OAAQ,IAAK,CAC9C,KAAM,GAAc,EAAM,SAAS,GAC/B,GACF,GAAY,IAAM,EAAY,QAAQ,IACtC,EAAM,OACN,EAAM,UAAU,OAAO,iBACvB,EAAS,UAAU,SAMR,QAAQ,GClB/B,OAAe,CAOb,QAAQ,EAAU,CAChB,MAAO,OAAM,QAAQ,GAAY,EAAW,CAAC,IAW/C,SAAS,EAAO,EAAQ,EAAS,GAAO,CACtC,KAAM,GAAmB,MAAM,QAAQ,GAAU,EAAS,CAAC,GAC3D,GAAI,GAAW,GAGf,OAAS,GAAI,EAAG,EAAI,EAAiB,OAAQ,GAAK,EAAG,CACnD,KAAM,GAAgB,EAAiB,GAEvC,GAAI,EAAM,SAAS,IAGjB,GAFA,EAAW,GAEP,CAAC,EACH,UAEO,IACT,GAAW,IAIf,MAAO,IAST,UAAU,EAAO,CACf,MAAI,OAAM,QAAQ,GACT,EAEF,YAAiB,iBAAkB,YAAiB,UACvD,MAAM,KAAK,GACX,CAAC,IASP,SAAS,EAAQ,CACf,GAAI,GAAS,GAEb,SAAO,IAAK,GAAS,CACnB,GAAI,GAAQ,EAEZ,OAAC,MAAM,QAAQ,IAAW,GAAQ,CAAC,IAC5B,EAAO,KAAK,GAAG,KAGxB,EAAS,KAAK,KAAK,GACnB,EAAS,KAAK,OAAO,GAEd,GAUT,eAAe,EAAW,EAAW,CACnC,GAAI,EAAW,CAEb,KAAM,GAAM,EAAU,IAAK,GAAS,EAAK,IAGnC,EAAS,EAAU,OAAQ,GAAS,CAAC,EAAI,SAAS,EAAK,KAG7D,MAAK,GAAO,OAGL,CAAC,GAAG,EAAW,GAAG,GAHE,EAM7B,MAAO,IAST,QAAQ,EAAQ,CACd,MAAO,MAAK,MAAM,GAAG,GAAQ,KAAK,MASpC,OAAS,GAAU,MAAM,KAAK,GAAI,KAAI,IAQtC,KAAK,EAAO,CACV,MAAO,GAAM,OAAO,UAWtB,OAAO,EAAO,EAAM,CAClB,KAAM,GAAI,EAAM,QAAQ,GAExB,MAAI,KAAM,IACR,EAAM,OAAO,EAAG,GAGX,GAUT,iBAAiB,EAAK,EAAM,CAC1B,KAAM,GAAY,EAAI,QAAQ,GAC9B,GAAI,GAAS,EAEb,MAAI,KAAc,IAChB,GAAS,EAAI,OAAO,CAAC,EAAU,IAAU,EAAQ,IAG5C,GAST,QAAQ,EAAO,CACb,MAAI,OAAM,QAAQ,GACT,EAAM,OAAO,CAAC,EAAM,IAAY,EAAK,OAAO,GAAU,IAGxD,GAST,IAAI,EAAO,CACT,MAAO,GAAM,OAAO,CAAC,EAAG,IAAM,EAAI,EAAG,IASvC,KAAK,EAAO,EAAW,EAAS,CAC9B,KAAM,GAAO,EAAM,GACnB,SAAM,OAAO,EAAW,GACxB,EAAM,OAAO,EAAS,EAAG,GAClB,GAYT,SAAS,EAAK,EAAW,CACvB,KAAM,GAAS,GAEf,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EACnC,EAAO,KAAK,EAAI,MAAM,EAAG,EAAI,IAG/B,MAAO,IAYT,cAAc,CAAE,QAAO,MAAK,aAAa,CAEvC,KAAM,GAAiB,KADH,SAAS,EAAK,GACJ,KAAM,GAAU,EAAM,QAAQ,EAAM,MAAQ,IAG1E,MAFe,MAAK,SAAS,EAAgB,EAAO,MCvMxD,YAA2B,EAAiB,CAC1C,KAAM,GAAgB,EAAgB,cAAgB,OAChD,EAAY,EAAgB,EAAgB,UAAY,GACxD,EAAW,EAAgB,EAAgB,SAAW,EAE5D,MAAO,CAAE,YAAW,YAGtB,YAAoB,EAAW,EAAQ,EAAa,CAClD,KAAM,GAAiB,GAAO,UAAU,GACxC,GAAI,GAAc,EAEZ,YAAuB,QAC3B,GAAc,CAAC,IAIjB,GAAI,CAAE,YAAa,EAGnB,MAAI,GAAY,eAAe,cAAgB,EAAY,UAAU,cAAgB,UACnF,GAAY,GAAU,CAEpB,EAAY,aAAe,EAAY,SAAS,KAK7C,EAAY,IAAK,GACf,EAAe,QAAS,GAAa,EAAS,iBAAiB,EAAO,KAIjF,OAAe,CAGb,MAAM,EAAI,CACR,GAAI,CACF,KAAM,GAAY,EAAK,GACjB,EAAS,EAAK,GAGpB,GAAI,EAAO,cAAgB,OACzB,OAAO,KAAK,GAAQ,QAAS,GAAc,CACzC,KAAM,GAAkB,EAAO,GACzB,EAAc,GAAkB,GAEtC,GAAW,EAAW,EAAW,SAE9B,CAEL,KAAM,GAAkB,EAAK,GACvB,EAAc,GAAkB,GAEtC,GAAW,EAAQ,EAAW,UAEzB,EAAP,CACA,KAAM,IAAI,OAAM,GAElB,MAAO,IAKT,QAAQ,EAAW,EAAO,EAAM,EAAa,GAAO,CAClD,KAAM,GAAiB,GAAO,UAAU,GAGxC,GAAI,CACF,EAAe,QAAS,GAAa,EAAS,oBAAoB,EAAO,EAAM,UACxE,EAAP,CACA,KAAM,IAAI,OAAM,GAElB,MAAO,IAMT,WAAY,CAEV,SAAS,eAAkB,SAAS,cAA8B,OAClE,SAAS,KAAK,SAuBhB,cAAc,CACZ,UACA,iBACA,qBACA,iBACA,UACA,UAAU,IACT,CACD,KAAM,GAAa,GAAO,UACxB,GAAkB,EAAQ,uBAAuB,IAEnD,GAAI,CAAC,EAAW,OAAQ,OAKxB,KAAM,GAAkB,GAAc,CAEpC,GAAI,GA+BJ,EAAuB,YA9BK,IAAM,CAChC,GAAI,GAAU,GAMd,GAAI,MAAM,QAAQ,IAChB,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,GAAK,EAC9C,GAAI,CAAC,EAAU,UAAU,SAAS,EAAe,IAAK,CACpD,EAAU,GACV,WAKJ,GAAU,EAAU,UAAU,SAAS,GAIzC,GAAI,EAAS,CAEX,KAAM,GAAQ,GAAI,aAAY,EAAS,CAAE,OAAQ,IACjD,EAAU,cAAc,GAGxB,cAAc,KAIsC,MAG1D,EAAW,QAAQ,KCjMvB,GAAe,CACb,UAAU,EAAY,CACpB,GAAI,CACF,MAAO,MAAK,MAAM,QAClB,CACA,MAAO,SCHb,YAA4B,EAAS,CACnC,KAAM,GAAW,GAAI,QAAO,KAAK,SAC3B,CAAE,MAAO,OAAO,KAAK,eAE3B,MAAO,IAAI,SAAQ,CAAC,EAAS,IAAW,CACtC,EAAS,QAAQ,CAAE,UAAS,sBAAuB,CAAE,QAAS,OAAU,CAAC,EAAS,IAAW,CACvF,IAAW,GACb,EAAO,GAET,EAAQ,OAKd,OAAe,GCTf,GAP8B,GAAkB,CAC9C,KAAM,GAAc,EAAM,OAAO,GAAG,cAC9B,EAAiB,EAAM,MAAM,GAEnC,MAAO,GAAG,IAAc,KCkB1B,GAnByC,GAAiB,CACxD,GAAI,GAAiB,GAErB,SAAQ,QAAS,GAAS,CACpB,EAAK,aAAe,GACtB,EAAK,MAAM,QAAS,GAAiB,CACnC,EAAiB,OAAH,wBACT,GAAc,EAChB,GAAqB,EAAa,QAAS,EAAa,cAI7D,EAAiB,OAAH,wBAAQ,GAAc,EAAG,GAAqB,EAAK,QAAS,EAAK,cAI5E,GCRT,GARoC,GAA4C,CAC9E,KAAM,GAAoC,KAAK,MAC7C,OAAO,aAAa,QAAQ,IAG9B,MAAO,IAAqB,ICH9B,GAJoC,GAC3B,OAAO,aAAa,QAAQ,KAAqB,KCc1D,GAhB4B,CAAC,EAAa,IAAmB,CAC3D,KAAM,GAAe,GAAI,iBAAgB,OAAO,SAAS,QAGzD,EAAa,IAAI,EAAK,EAAM,YAGxB,IAAU,IACZ,EAAa,OAAO,GAItB,KAAM,GAAyB,GAAG,OAAO,SAAS,YAAY,EAAa,aAC3E,OAAO,QAAQ,aAAa,KAAM,GAAI,ICCxC,GAVqB,IAAM,C,UACzB,KAAM,GAAS,GAAD,GAAC,UAAO,kBAAc,0BAAE,WAAmB,0BAAE,4BAAwB,mBAAI,GAEvF,MAAK,IACH,QAAQ,MAAM,yDAGT,GCXT,GAAe,IAAM,CACnB,YAAuC,CAErC,KAAM,GAAY,GADI,iBAAgB,OAAO,SAAS,QAC1B,IAAI,YAEhC,GAAI,EAAW,CACb,KAAM,GAAU,SAAS,eAAe,GACpC,EACF,EAAQ,eAAe,CAAE,SAAU,WAEnC,QAAQ,KAAK,oBAAoB,kBAMvC,SAAS,iBAAiB,mBAAoB,ICdhD,KAAM,IAAe,eACf,GAAsB,4BACtB,GAAoB,aACpB,GAAiB,WAEjB,GAAiB,WACjB,GAAiB,WAmLvB,OA5KmB,GAAiC,C,UAElD,KAAM,GAA8B,EAAU,cAAc,IAAI,aAC1D,EAAqB,EAAU,cAAc,IAAI,kBACjD,EAAqC,EAAU,cACnD,IAAI,wBAEA,EAA4B,EAAU,cAAc,IAAI,cACxD,EAA2B,MAAU,WAAO,0BAAG,OAAoB,OACnE,EAAiB,MAAU,WAAO,0BAAG,OAAoB,OAAY,KAAK,MAAM,KAAU,WAAO,0BAAG,IAAgB,eAAiB,GAGrI,EAAc,EAAU,QAAQ,IAAI,MACpC,EAAgB,CAAC,CAAC,EAGlB,EAAoB,GAAI,OAAM,mBAEpC,GAAI,GAAkB,GAClB,EAAgB,EAEpB,GAAI,CAAC,GAAY,CAAC,EAAoB,OAEtC,KAAM,GAAa,IAAI,EAAU,KAC3B,EAAO,EAAS,aAAa,QAO7B,EAAoC,IAAY,CAChD,GAEJ,EAAmB,UAAU,IAAI,cAO7B,GAAmC,IAAY,CAC/C,CAAC,GAEL,EAAmB,UAAU,OAAO,cAGhC,GAAkB,IAAY,CAClC,EAAS,aAAa,gBAAiB,GAAG,KAC1C,EAAmB,aAAa,cAAe,GAAG,CAAC,MAG/C,EAA2B,IAAY,CAC3C,EAAmB,MAAM,UAAY,GAAG,MAEpC,GACF,GAAkB,iBAAmB,EAErC,EAAY,cAAc,KAIxB,GAAgB,IAAY,CAChC,KAEA,EAAO,UAAU,IAAI,IAEjB,GACF,EAAS,UAAU,IAAI,IAGzB,KAGI,GAAiB,IAAY,CACjC,KAEA,EAAO,UAAU,OAAO,IAEpB,GACF,EAAS,UAAU,OAAO,IAG5B,EAAmB,MAAM,UAAY,KAEjC,GAEF,GAAkB,iBAAmB,CAAC,EACtC,EAAY,cAAc,KAIxB,GAAe,IAA4B,CAM/C,GAJA,GAAM,iBAEN,EAAkB,CAAC,EAEf,EAAiB,CAEnB,OAAO,QAAQ,aAAa,KAAM,KAAM,GACxC,KACA,OAIF,OAAO,QAAQ,aAAa,KAAM,KAAM,OAAO,SAAS,KAAK,MAAM,KAAK,IACxE,MAGI,GAA4B,IAAY,CAC5C,EAAgB,EAAmB,aAE/B,GACF,KAWE,GAA2B,CAAC,GAAa,KAAe,CAGxD,OAFmB,SAAS,OAEhB,GAEhB,GAAkB,GAElB,KAEI,IACF,aAAiB,CAAE,OAAQ,MAQzB,GAAiB,GAAI,gBAAe,IAAY,CACpD,OAIF,EAAS,iBAAiB,QAAS,IACnC,GAAe,QAAQ,GAEvB,OAAO,iBAAiB,aAAc,IAAM,GAAyB,KAGrE,KAGI,GAAkB,IACpB,GAAkB,GAClB,MAIF,IACA,KAGA,EAAmB,iBAAiB,kBAAmB,IAEvD,EAAmB,iBAAiB,gBAAiB,ICxLvD,6BAEA,YAAiB,EAAQ,CACvB,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,GAAI,GAAS,UAAU,GACvB,OAAS,KAAO,GACd,EAAO,GAAO,EAAO,GAGzB,MAAO,GAKT,GAAI,IAAmB,CACrB,KAAM,SAAU,EAAO,CACrB,MAAI,GAAM,KAAO,KACf,GAAQ,EAAM,MAAM,EAAG,KAElB,EAAM,QAAQ,mBAAoB,qBAE3C,MAAO,SAAU,EAAO,CACtB,MAAO,oBAAmB,GAAO,QAC/B,2CACA,sBAQN,YAAe,EAAW,EAAmB,CAC3C,WAAc,EAAK,EAAO,EAAY,CACpC,GAAI,MAAO,WAAa,YAIxB,GAAa,GAAO,GAAI,EAAmB,GAEvC,MAAO,GAAW,SAAY,UAChC,GAAW,QAAU,GAAI,MAAK,KAAK,MAAQ,EAAW,QAAU,QAE9D,EAAW,SACb,GAAW,QAAU,EAAW,QAAQ,eAG1C,EAAM,mBAAmB,GACtB,QAAQ,uBAAwB,oBAChC,QAAQ,QAAS,QAEpB,GAAI,GAAwB,GAC5B,OAAS,KAAiB,GACpB,CAAC,EAAW,IAIhB,IAAyB,KAAO,EAE5B,EAAW,KAAmB,IAWlC,IAAyB,IAAM,EAAW,GAAe,MAAM,KAAK,KAGtE,MAAQ,UAAS,OACf,EAAM,IAAM,EAAU,MAAM,EAAO,GAAO,GAG9C,WAAc,EAAK,CACjB,GAAI,QAAO,WAAa,aAAgB,UAAU,QAAU,CAAC,GAQ7D,QAFI,GAAU,SAAS,OAAS,SAAS,OAAO,MAAM,MAAQ,GAC1D,EAAM,GACD,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAI,GAAQ,EAAQ,GAAG,MAAM,KACzB,EAAQ,EAAM,MAAM,GAAG,KAAK,KAEhC,GAAI,CACF,GAAI,GAAW,mBAAmB,EAAM,IAGxC,GAFA,EAAI,GAAY,EAAU,KAAK,EAAO,GAElC,IAAQ,EACV,WAEF,GAGJ,MAAO,GAAM,EAAI,GAAO,GAG1B,MAAO,QAAO,OACZ,CACE,IAAK,EACL,IAAK,EACL,OAAQ,SAAU,EAAK,EAAY,CACjC,EACE,EACA,GACA,GAAO,GAAI,EAAY,CACrB,QAAS,OAIf,eAAgB,SAAU,EAAY,CACpC,MAAO,IAAK,KAAK,UAAW,GAAO,GAAI,KAAK,WAAY,KAE1D,cAAe,SAAU,EAAW,CAClC,MAAO,IAAK,GAAO,GAAI,KAAK,UAAW,GAAY,KAAK,cAG5D,CACE,WAAY,CAAE,MAAO,OAAO,OAAO,IACnC,UAAW,CAAE,MAAO,OAAO,OAAO,MAKxC,GAAI,IAAM,GAAK,GAAkB,CAAE,KAAM,MAGzC,GAAe,GC1Hf,GAAgB,GAA2B,CACzC,KAAM,GAAwB,EAAU,cAAc,oBAChD,EAA0B,EAAU,cAAc,sBAClD,EAAyB,EAAU,cAAc,qBAGvD,GAAI,OAAY,qBAAuB,OAAQ,OAM/C,KAAM,GAAe,IAAM,C,UACzB,KAAM,GAAS,GAAD,GAAC,UAAO,kBAAc,0BAAE,WAAmB,0BAAE,4BAAwB,mBAAI,GAEvF,MAAK,IACH,QAAQ,MAAM,yDAGT,GAIT,GAAO,GAAG,OAAQ,CAAE,iBAAkB,IAAM,EAAU,UAAU,IAAI,GAAW,UAE/E,KAAM,GAAa,IAAM,CACvB,EAAU,UAAU,OAAO,WAGvB,EAAY,KAAO,IAAwB,CAC/C,KAAM,GAAO,CAAE,iBAAkB,GACjC,GAAI,CACF,KAAM,OAAM,GAAG,OAAO,SAAS,2BAA4B,CACzD,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,2BAA4B,KAE9B,KAAM,KAAK,UAAU,KACpB,KAAK,IAAM,CACZ,YAEK,EAAP,CACA,EAAY,KAIV,EAAgB,GAAY,CAChC,KAAM,CAAE,aAAc,OAEhB,EAAiB,CACrB,MAAO,GAAG,EAAQ,QAAQ,qBAC1B,aAAc,GAAG,EAAQ,QAAQ,4BACjC,WAAY,GAAG,EAAQ,QAAQ,0BAC/B,UAAW,GAAG,EAAQ,QAAQ,yBAC9B,UAAW,GAAG,EAAQ,QAAQ,yBAC9B,uBACA,CACE,uBAAwB,GAAG,EAAQ,QAAQ,sCAC3C,yBAA0B,GAAG,EAAQ,QAAQ,4BAC7C,yBAA0B,GAAG,EAAQ,QAAQ,0BAC7C,wBAAyB,GAAG,EAAQ,QAAQ,yBAC5C,wBAAyB,GAAG,EAAQ,QAAQ,2BAGhD,EAAU,KAAK,IAGX,EAAe,GAAwB,CAC3C,GAAI,CACE,OAAO,aACT,OAAO,YAAY,qBAAqB,CAAE,WAAY,UAEjD,EAAP,CACA,EAAY,KAIhB,GAAO,GAAG,EAAW,CACnB,MAAO,IAAM,CACX,EAAU,IACV,EAAY,IACZ,EAAa,MAIjB,GAAO,GAAG,EAAY,CACpB,MAAO,IAAM,CACX,EAAU,IACV,EAAY,IACZ,EAAa,MAIjB,GAAO,GAAG,EAAU,CAClB,MAAO,IAAM,CACX,OAAY,kBAAmB,QAC/B,IACA,EAAa,OC7GnB,KAAM,IAAkB,YAClB,GAAkB,YAClB,GAA+B,IA4GrC,OA/F4B,GAAiC,CAC3D,KAAM,GAAoB,EAAU,cAAc,OAElD,GAAI,CAAC,EAAO,OAGZ,GAAI,GAAc,GACd,EAEJ,KAAM,GAAY,EAAU,QAAQ,IAC9B,EAAY,EAAU,QAAQ,IAM9B,EAAe,IAAY,CAC/B,EAAc,GAEd,OAAO,cAAc,IAGjB,EAAsB,GAAyB,CACnD,KAAM,GAAS,SAAS,cAAc,KAEtC,EAAO,SAAW,EAClB,EAAO,KAAO,EAEd,EAAO,aAAa,aAAc,GAClC,EAAO,UAAU,IAAI,QAAS,SAG9B,EAAU,WAAW,aAAa,EAAQ,GAE1C,EAAO,YAAY,IAGf,EAAkB,IAAY,CAElC,GAAI,EAAa,OAEjB,IAEA,KAAM,GAAM,GAAI,OAGV,EAAY,GAFK,iBAEM,kBAAkB,GAE/C,EAAI,OAAS,IAAM,CACjB,KAAM,GAAS,SAAS,cAAc,UAEhC,EAAe,IAEf,CAAE,OAAQ,EAAa,MAAO,GAAe,EAAM,wBACnD,EAAgB,KAAK,IAAI,EAAa,GAEtC,GAAc,KAAK,KAAK,EAAe,GAOvC,GAAc,EAAa,GAC3B,EAAe,EAAc,GAEnC,EAAO,MAAQ,GACf,EAAO,OAAS,EAGhB,EADuB,WAAW,MAC1B,UAAU,EAAK,EAAG,EAAG,GAAa,GAE1C,KAAM,IAAS,EAAO,UAAU,aAEhC,EAAmB,KAIrB,EAAI,IAAM,6BAA6B,OAAO,KAAK,MAM/C,EAAiB,IAAY,CAC7B,EAAM,eAAiB,GAE3B,KAIF,EAAM,iBAAiB,OAAQ,GAC/B,EAAmB,OAAO,YAAY,EAAgB,K,wBCvGxD,KAAM,IAAe,sBACf,GAAqB,SACrB,GAAe,YACf,GAA0B,cAE1B,GAAwC,GAKjC,GAAoC,CAAC,CAChD,cACA,cACA,cAKU,CACV,KAAM,CAAE,WAAY,GAAqB,EAGzC,EAAY,WAAa,EAAmB,GAExC,GACF,KAwXJ,OA1W+B,GAAiC,CAE9D,GAAI,GAA8B,KAC9B,EAAmB,GACnB,EAAmB,GACnB,EAAmB,EACnB,EAAiB,EAErB,KAAM,GAAiC,EAAU,cAAc,IAAI,kBAC7D,CAAE,cAAe,GAAqB,EACtC,EAAsC,EAAU,cACpD,IAAI,kBAEA,EAAsC,EAAU,cACpD,IAAI,kBAIA,EAAgD,EAAa,iBACjE,IAAI,aAGA,EAAoB,IAAY,CACpC,EAAiB,UAAU,IAAI,IAC/B,EAAiB,UAAU,IAAI,IAE/B,EAAmB,IAMf,EAAwB,IAA4B,CACxD,KAAM,CAAE,WAAY,IAAqB,EAEzC,EAAmB,GAGnB,EAAiB,EAAa,WAE9B,EAAmB,GAAM,MAAQ,IAM7B,EAAqB,IAAY,CACrC,EAAmB,GAEnB,EAAa,UAAU,OAAO,KAM1B,EAAwB,IAA4B,CAGxD,GAFA,GAAM,iBAEF,CAAC,EAAkB,OAGvB,EAAa,UAAU,IAAI,IAE3B,IAGA,KAAM,IAAiB,GADC,MAAQ,EAAiB,WACd,EAEnC,EAAa,WAAa,EAAiB,IAMvC,EAAoC,CAAC,CACzC,sBAAqB,GACrB,uBAAsB,MACZ,CACN,IACF,EAAiB,UAAU,OAAO,IAGhC,IACF,EAAiB,UAAU,OAAO,KAUhC,EAAwB,IAAY,CACxC,KAAM,CAAE,YAAa,IAAgB,EAC/B,GAA2B,EAgBjC,GAAI,CAFiB,CARc,MAAM,KAAK,GAAgB,OAAO,CAAC,GAAK,KAAS,CAClF,KAAM,CAAE,UAAU,GAAK,wBAIvB,MAFiB,IAAM,GAAQ,IAG9B,CAAC,IAEsC,IAEvB,CACjB,IAEA,EAAa,oBAAoB,YAAa,GAC9C,EAAa,oBAAoB,UAAW,GAC5C,EAAa,oBAAoB,aAAc,GAC/C,EAAa,oBAAoB,YAAa,GAE9C,EAAa,oBAAoB,YAAa,GAE9C,OAWF,GARA,EAAa,iBAAiB,YAAa,GAC3C,EAAa,iBAAiB,UAAW,GACzC,EAAa,iBAAiB,aAAc,GAC5C,EAAa,iBAAiB,YAAa,GAG3C,EAAa,iBAAiB,YAAa,GAEvC,EAAkB,OAGtB,KAAM,CACJ,WAAY,GACZ,YAAa,GACb,YAAa,IACX,EAEJ,GAAI,IAAqB,GACrB,GAAsB,GAEtB,GAAsB,GACxB,IAAqB,IAGnB,GAAuB,GAAsB,IAC/C,IAAsB,IAGxB,EAAkC,CAAE,sBAAoB,0BAMpD,EAA0B,CAAC,CAAE,WAA6C,CAC9E,KAAM,CAAE,YAAa,IAAqB,EACpC,CAAE,WAAY,IAA6B,EAE3C,GAAoC,GACpC,GAAqC,GAErC,GAAW,GAAO,qBAElB,GACH,GAAmB,IACnB,IAAW,GAAoC,IAE5C,GACJ,KAAS,QACL,GAA2B,GAC3B,GAA2B,GAEjC,EAAa,WAAa,GAG1B,KAMI,GAAqC,IAA2C,CACpF,KAAM,CAAE,qBAAmB,uBAAuB,GAIlD,GAAI,CAFuB,MAAsB,GAExB,OAEzB,KAAM,CAAE,EAAG,GAAW,UAAU,GAE1B,GAAqB,GAAY,EACjC,GAAsB,GAAQ,GAAO,iBAG3C,GAAI,IAAsB,GAAqB,CAC7C,GAAkC,CAChC,YAAa,EACb,YAAa,GAAM,SAErB,OAGF,KAAM,IAAsB,EAAa,WACnC,GAAuB,GAE7B,GAAI,GAAoB,CACtB,KAAM,IAAqB,CAAC,EAAiB,UAAU,SAAS,IAE1D,GACJ,GAAwB,IAAqB,GAAwC,GAGvF,EAAa,WAAa,GAAsB,GAAY,GAC5D,OAGF,GAAI,GAAqB,CACvB,KAAM,IAAsB,CAAC,EAAiB,UAAU,SAAS,IAC3D,GAAiB,GAAQ,GAAO,iBAEhC,GACJ,GAAwB,IAAsB,GAAwC,GAGxF,EAAa,WAAa,GAAsB,GAAiB,KAO/D,GAAsC,IAA2C,CACrF,KAAM,CAAE,oBAAkB,uBAAuB,GAIjD,GAF6B,GAAiB,QAAU,GAAmB,MAEjD,OAE1B,KAAM,IAAqB,GAAmB,EAAI,GAAiB,EAC7D,GAAsB,GAAiB,MAAQ,GAAmB,MAGxE,GAAI,IAAsB,GAAqB,CAC7C,GAAkC,CAChC,YAAa,EACb,YAAa,GAAM,SAGrB,GAAkC,CAChC,YAAa,EACb,YAAa,GAAM,SAErB,OAGF,KAAM,IAAsB,EAAa,WACnC,GAAuB,GAE7B,GAAI,GAAoB,CACtB,KAAM,IAAqB,CAAC,EAAiB,UAAU,SAAS,IAE1D,GAAiB,GAAiB,EAAI,GAAmB,EACzD,GACJ,GAAwB,IAAqB,GAAwC,GAGvF,EAAa,WAAa,GAAsB,GAAiB,GAEjE,OAGF,GAAI,GAAqB,CACvB,KAAM,IAAsB,CAAC,EAAiB,UAAU,SAAS,IAE3D,GAAiB,GAAmB,MAAQ,GAAiB,MAE7D,GACJ,GAAwB,IAAsB,GAAwC,GAGxF,EAAa,WAAa,GAAsB,GAAiB,KAQ/D,EAAqC,IAAgC,CACzE,KAAM,IAAW,GAAI,sBAAqB,CAAC,CAAC,MAAW,CAGrD,GAFwB,qBAGtB,GAAkC,IAElC,GAAmC,IAGrC,GAAS,eAGX,GAAS,QAAQ,KAMb,GAAqB,IAA4B,CAErD,GAAM,iBAEN,KAAM,IAAwB,GAAM,cAGhC,KAAa,GAGjB,GAAiB,GAEjB,EAAkC,MAG9B,GAAsB,IAAY,CACtC,EAAiB,MAAM,KAAK,GAAgB,KAAM,IAChD,GAAK,UAAU,SAAS,KAI1B,EAAe,QAAS,IAAW,CACjC,GAAO,iBAAiB,QAAS,MAInC,EAAiB,iBAAiB,QAAS,IAAM,EAAwB,CAAE,KAAM,UACjF,EAAiB,iBAAiB,QAAS,IAAM,EAAwB,CAAE,KAAM,WAEjF,KAIF,OAAO,iBACL,SACA,KAAS,IAAM,CACb,IAEA,KAAM,IAAoB,MAAM,KAAK,GAAgB,KAAM,IACzD,GAAO,UAAU,SAAS,KAE5B,EAAkC,KACjC,MAIL,OAAO,WAAW,IAAM,CACtB,MACC,MCtYL,KAAM,IAAe,UAEf,GAAe,YACf,GAAe,YACf,GAAwB,gBAExB,GAA+B,IAkVrC,OA3Uc,GAAiC,CAC7C,GAAI,GAAyB,EACzB,EAAiB,EACjB,EAAa,EAEb,EAAc,GAEd,EAAoB,GAExB,KAAM,GAAoC,EAAU,cAAc,IAAI,kBAGhE,EAA8C,EAAgB,iBAClE,IAAI,aAGA,EAAwC,EAAU,cACtD,IAAI,8BAGA,EAAqD,EAAU,iBACnE,IAAI,wBAGA,EAA4C,EAAU,iBAC1D,IAAI,cAMA,EAAoB,CAAC,CACzB,+BAGU,CACV,EAA0B,iBACxB,gBACA,IAAM,CACJ,EAAoB,IAEtB,CAAE,KAAM,KAGV,EAA0B,UAAU,OAAO,IAC3C,EAA0B,UAAU,IAAI,IAEpC,GACF,GAAc,GAEV,GACF,EAAsB,gBAAgB,UAsB1C,MAf0C,KAAK,GAAwB,OACpE,IACK,KAAiB,EAAkC,GAEhD,CAAC,GAAa,UAAU,SAAS,KAWhB,QAAS,IAAoB,CACvD,GAAgB,UAAU,IAAI,OAS5B,EAAsB,CAAC,CAC3B,kBAAkB,GAClB,oBAAmB,KAIT,CACN,GAAY,OAAO,qBAAqB,GAE5C,KAAM,IAAiC,EAAuB,GACxD,GAA4B,EAAuB,GAEnD,GAAmB,EAAc,GAEjC,CAAE,OAAQ,IAAkB,EAAsB,wBAClD,GAAY,GAAiB,aAAe,GAElD,GAAI,IAAY,EAChB,KAAM,IAAmB,GAAY,GAG/B,GAAwB,IAAsB,CAC7C,IAAW,IAAY,IAE5B,KAAM,IAAU,GAAY,GACtB,GAAmB,GAAU,GAQ7B,GAAS,GAAgB,GAAmB,KAAK,IAAI,GAAkB,GAG7E,GAFA,EAAsB,MAAM,OAAS,GAAG,OAEpC,GAAU,GAA8B,CAC1C,EAAa,OAAO,sBAAsB,IAC1C,OAGE,GAEJ,EAAkB,CAAE,gCAItB,GAAI,EAAiB,CACnB,EAAa,OAAO,sBAAsB,IAC1C,OAGF,KAAM,IAAgB,IAAY,CAChC,GAAI,KAAqB,EAAG,CAC1B,EAAa,OAAO,sBAAsB,IAC1C,OAIF,EAAkB,CAAE,gCAOjB,EASH,KARA,GAA+B,iBAC7B,gBACA,IAAM,CACJ,MAEF,CAAE,KAAM,KAOZ,GAA+B,UAAU,OAAO,IAGhD,GAA+B,aAAa,gBAAiB,SAC7D,GAA0B,aAAa,gBAAiB,SAMpD,EAAqB,CAAC,CAAE,oBAAuD,CACnF,EAAyB,EACzB,EAAiB,GAOb,EAAkB,CAAC,EAAiB,KAAgB,CACxD,GAAI,IAAmB,GAA0B,CAAC,EAAgB,OAElE,EAAoB,GAEpB,KAAM,IAAe,EAAa,GAC5B,GAAuB,EAAa,GAE1C,GAAa,UAAU,IAAI,IAC3B,GAAqB,UAAU,OAAO,IAEtC,GAAa,aAAa,gBAAiB,QAC3C,GAAqB,aAAa,gBAAiB,SAEnD,EAAoB,KAQhB,EAAqB,IAAY,CACrC,KAAM,CAAE,KAAM,GAAY,OAAO,SAEjC,GAAI,CAAC,EAAS,OAEd,GAAI,IAAc,EAElB,KAAM,IAAoB,MAAM,KAAK,GAAc,KAAK,CAAC,GAAQ,KAAU,CACzE,KAAM,CAAE,KAAM,IAAe,GAE7B,MAAK,IAEL,IAAc,GAEP,KAAe,GAJE,KAOtB,CAAC,IAEL,GAAmB,CAAE,eAAgB,KACrC,IAEA,aAAiB,CAAE,OAAQ,GAAmB,aAAc,OAMxD,EAAqB,GAA4B,C,OAErD,EAAM,iBAEN,MAAU,cAAc,eAAW,sBAAE,UAAU,IAAI,YAEnD,GAAI,IAAkB,EAElB,GACF,GAAc,IAGhB,KAAM,IAAmB,MAAM,KAAK,GAAc,KAAK,CAAC,GAAQ,KAC9D,IAAkB,GACX,KAAW,EAAM,gBAGtB,KAAoB,GAExB,GAAmB,CAAE,eAAgB,KAGrC,OAAO,QAAQ,aAAa,KAAM,KAAM,GAAiB,MACzD,MAMI,EAAuB,IAAY,CAKvC,EAJ2B,MAAM,KAAK,GAAc,UAAW,IACtD,GAAO,UAAU,SAAS,MAW/B,GAA+B,IAAY,CAG/C,MAFkC,KAAK,GAEnB,QAAS,IAAuB,CAElD,GAAmB,iBAAiB,kBAAoB,IAAgC,CACtF,KAAM,CAAE,qBAAqB,GAE7B,EAAoB,CAAE,gBAAiB,GAAM,2BAK7C,GAAsB,IAAY,CAEtC,EAAa,QAAS,GAAW,CAC/B,EAAO,iBAAiB,QAAS,KAGnC,IAGA,IAGA,GAAkC,CAChC,YAAa,EACb,YAAa,EAAa,GAC1B,SAAU,IAAM,EAAgB,UAAU,OAAO,MAGnD,MAIF,OAAO,iBAAiB,aAAc,IAAM,CAC1C,IAEA,EAAgB,UAAU,IAAI,IAE9B,GAAkC,CAChC,YAAa,EACb,YAAa,EAAa,GAC1B,SAAU,IAAM,EAAgB,UAAU,OAAO,QAKrD,OAAO,iBACL,SACA,KAAS,IAAM,CACb,EAAoB,CAAE,gBAAiB,MACtC,MAGL,MCrVF,YAAkB,EAAK,CACnB,MAAQ,KAAQ,MACZ,MAAO,IAAQ,UACf,eAAiB,IACjB,EAAI,cAAgB,OAE5B,YAAgB,EAAQ,EAAK,CACrB,IAAW,QAAU,GAAS,IAC9B,IAAQ,QAAU,GAAM,IAC5B,OAAO,KAAK,GAAK,QAAQ,SAAU,EAAK,CAChC,MAAO,GAAO,IAAS,YACvB,EAAO,GAAO,EAAI,GACb,GAAS,EAAI,KAClB,GAAS,EAAO,KAChB,OAAO,KAAK,EAAI,IAAM,OAAS,GAC/B,GAAO,EAAO,GAAM,EAAI,MAKpC,GAAI,IAAc,CACd,KAAM,GACN,iBAAkB,UAAY,GAC9B,oBAAqB,UAAY,GACjC,cAAe,CACX,KAAM,UAAY,GAClB,SAAU,IAEd,cAAe,UAAY,CACvB,MAAO,OAEX,iBAAkB,UAAY,CAC1B,MAAO,IAEX,eAAgB,UAAY,CACxB,MAAO,OAEX,YAAa,UAAY,CACrB,MAAO,CACH,UAAW,UAAY,KAG/B,cAAe,UAAY,CACvB,MAAO,CACH,SAAU,GACV,WAAY,GACZ,MAAO,GACP,aAAc,UAAY,GAC1B,qBAAsB,UAAY,CAC9B,MAAO,MAInB,gBAAiB,UAAY,CACzB,MAAO,IAEX,WAAY,UAAY,CACpB,MAAO,OAEX,SAAU,CACN,KAAM,GACN,KAAM,GACN,SAAU,GACV,KAAM,GACN,OAAQ,GACR,SAAU,GACV,SAAU,GACV,OAAQ,KAGhB,aAAuB,CACnB,GAAI,GAAM,MAAO,WAAa,YAAc,SAAW,GACvD,UAAO,EAAK,IACL,EAGX,GAAI,IAAY,CACZ,SAAU,GACV,UAAW,CACP,UAAW,IAEf,SAAU,CACN,KAAM,GACN,KAAM,GACN,SAAU,GACV,KAAM,GACN,OAAQ,GACR,SAAU,GACV,SAAU,GACV,OAAQ,IAEZ,QAAS,CACL,aAAc,UAAY,GAC1B,UAAW,UAAY,GACvB,GAAI,UAAY,GAChB,KAAM,UAAY,IAEtB,YAAa,UAAuB,CAChC,MAAO,OAEX,iBAAkB,UAAY,GAC9B,oBAAqB,UAAY,GACjC,iBAAkB,UAAY,CAC1B,MAAO,CACH,iBAAkB,UAAY,CAC1B,MAAO,MAInB,MAAO,UAAY,GACnB,KAAM,UAAY,GAClB,OAAQ,GACR,WAAY,UAAY,GACxB,aAAc,UAAY,GAC1B,WAAY,UAAY,CACpB,MAAO,IAEX,sBAAuB,SAAU,EAAU,CACvC,MAAI,OAAO,aAAe,YACtB,KACO,MAEJ,WAAW,EAAU,IAEhC,qBAAsB,SAAU,EAAI,CAC5B,MAAO,aAAe,aAG1B,aAAa,KAGrB,aAAqB,CACjB,GAAI,GAAM,MAAO,SAAW,YAAc,OAAS,GACnD,UAAO,EAAK,IACL,ECrIX,YAAwB,EAAU,EAAY,CAC5C,EAAS,UAAY,OAAO,OAAO,EAAW,WAC9C,EAAS,UAAU,YAAc,EACjC,EAAS,UAAY,EAGvB,YAAyB,EAAG,CAC1B,UAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyB,EAAG,CAC5F,MAAO,GAAE,WAAa,OAAO,eAAe,IAEvC,GAAgB,GAGzB,YAAyB,EAAG,EAAG,CAC7B,UAAkB,OAAO,gBAAkB,SAAyB,EAAG,EAAG,CACxE,SAAE,UAAY,EACP,GAGF,GAAgB,EAAG,GAG5B,aAAqC,CAEnC,GADI,MAAO,UAAY,aAAe,CAAC,QAAQ,WAC3C,QAAQ,UAAU,KAAM,MAAO,GACnC,GAAI,MAAO,QAAU,WAAY,MAAO,GAExC,GAAI,CACF,YAAK,UAAU,SAAS,KAAK,QAAQ,UAAU,KAAM,GAAI,UAAY,KAC9D,QACP,CACA,MAAO,IAIX,YAAoB,EAAQ,EAAM,EAAO,CACvC,MAAI,MACF,GAAa,QAAQ,UAErB,GAAa,SAAoB,EAAQ,EAAM,EAAO,CACpD,GAAI,GAAI,CAAC,MACT,EAAE,KAAK,MAAM,EAAG,GAChB,GAAI,GAAc,SAAS,KAAK,MAAM,EAAQ,GAC1C,EAAW,GAAI,GACnB,MAAI,IAAO,GAAgB,EAAU,EAAM,WACpC,GAIJ,GAAW,MAAM,KAAM,WAGhC,YAA2B,EAAI,CAC7B,MAAO,UAAS,SAAS,KAAK,GAAI,QAAQ,mBAAqB,GAGjE,YAA0B,EAAO,CAC/B,GAAI,GAAS,MAAO,MAAQ,WAAa,GAAI,KAAQ,OAErD,UAAmB,SAA0B,EAAO,CAClD,GAAI,IAAU,MAAQ,CAAC,GAAkB,GAAQ,MAAO,GAExD,GAAI,MAAO,IAAU,WACnB,KAAM,IAAI,WAAU,sDAGtB,GAAI,MAAO,IAAW,YAAa,CACjC,GAAI,EAAO,IAAI,GAAQ,MAAO,GAAO,IAAI,GAEzC,EAAO,IAAI,EAAO,GAGpB,YAAmB,CACjB,MAAO,IAAW,EAAO,UAAW,GAAgB,MAAM,aAG5D,SAAQ,UAAY,OAAO,OAAO,EAAM,UAAW,CACjD,YAAa,CACX,MAAO,EACP,WAAY,GACZ,SAAU,GACV,aAAc,MAGX,GAAgB,EAAS,IAG3B,GAAiB,GAG1B,YAAgC,EAAM,CACpC,GAAI,IAAS,OACX,KAAM,IAAI,gBAAe,6DAG3B,MAAO,GAIT,YAAsB,EAAK,CACzB,GAAI,GAAQ,EAAI,UAChB,OAAO,eAAe,EAAK,YAAa,CACtC,IAAK,UAAe,CAClB,MAAO,IAET,IAAK,SAAa,EAAO,CACvB,EAAM,UAAY,KAKxB,GAAI,IAAoB,SAAU,EAAQ,CACxC,GAAe,EAAM,GAErB,WAAc,EAAO,CACnB,GAAI,GAEJ,SAAQ,EAAO,KAAK,MAAM,EAAQ,CAAC,MAAM,OAAO,KAAW,KAC3D,GAAa,GAAuB,IAC7B,EAGT,MAAO,IACO,GAAiB,QAEjC,YAAmB,EAAK,CAClB,IAAQ,QACV,GAAM,IAGR,GAAI,GAAM,GACV,SAAI,QAAQ,SAAU,EAAI,CACpB,MAAM,QAAQ,GAChB,EAAI,KAAK,MAAM,EAAK,GAAU,IAE9B,EAAI,KAAK,KAGN,EAET,YAAqB,EAAK,EAAU,CAClC,MAAO,OAAM,UAAU,OAAO,KAAK,EAAK,GAE1C,YAAqB,EAAK,CAGxB,OAFI,GAAc,GAET,EAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EAC/B,EAAY,QAAQ,EAAI,MAAQ,IAAI,EAAY,KAAK,EAAI,IAG/D,MAAO,GAET,YAAqB,EAAQ,CAC3B,MAAO,GAAO,cAAc,QAAQ,QAAS,SAAU,EAAO,EAAO,CACnE,MAAO,GAAM,gBAIjB,YAAa,EAAU,EAAS,CAC9B,GAAI,MAAO,IAAa,SACtB,MAAO,CAAC,GAMV,OAHI,GAAI,GACJ,EAAM,EAAQ,iBAAiB,GAE1B,EAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EACnC,EAAE,KAAK,EAAI,IAGb,MAAO,GAGT,YAAW,EAAU,EAAS,CAC5B,GAAI,GAAS,KACT,EAAW,KACX,EAAM,GAEV,GAAI,CAAC,GAAW,YAAoB,IAClC,MAAO,GAGT,GAAI,CAAC,EACH,MAAO,IAAI,IAAK,GAGlB,GAAI,MAAO,IAAa,SAAU,CAChC,GAAI,GAAO,EAAS,OAEpB,GAAI,EAAK,QAAQ,MAAQ,GAAK,EAAK,QAAQ,MAAQ,EAAG,CACpD,GAAI,GAAW,MACX,EAAK,QAAQ,SAAW,GAAG,GAAW,MACtC,EAAK,QAAQ,SAAW,GAAG,GAAW,SACtC,GAAK,QAAQ,SAAW,GAAK,EAAK,QAAQ,SAAW,IAAG,GAAW,MACnE,EAAK,QAAQ,YAAc,GAAG,GAAW,SACzC,EAAK,QAAQ,aAAe,GAAG,GAAW,UAC9C,GAAI,GAAa,EAAS,cAAc,GACxC,EAAW,UAAY,EAEvB,OAAS,GAAI,EAAG,EAAI,EAAW,WAAW,OAAQ,GAAK,EACrD,EAAI,KAAK,EAAW,WAAW,QAGjC,GAAM,GAAI,EAAS,OAAQ,GAAW,WAG/B,EAAS,UAAY,IAAa,GAAU,IAAa,EAClE,EAAI,KAAK,WACA,MAAM,QAAQ,GAAW,CAClC,GAAI,YAAoB,IAAM,MAAO,GACrC,EAAM,EAGR,MAAO,IAAI,IAAK,GAAY,IAG9B,GAAE,GAAK,GAAK,UAEZ,aAAoB,CAClB,OAAS,GAAO,UAAU,OAAQ,EAAU,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAClF,EAAQ,GAAQ,UAAU,GAG5B,GAAI,GAAa,GAAU,EAAQ,IAAI,SAAU,EAAG,CAClD,MAAO,GAAE,MAAM,QAEjB,YAAK,QAAQ,SAAU,EAAI,CACzB,GAAI,GAEH,GAAgB,EAAG,WAAW,IAAI,MAAM,EAAe,KAEnD,KAGT,aAAuB,CACrB,OAAS,GAAQ,UAAU,OAAQ,EAAU,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACvF,EAAQ,GAAS,UAAU,GAG7B,GAAI,GAAa,GAAU,EAAQ,IAAI,SAAU,EAAG,CAClD,MAAO,GAAE,MAAM,QAEjB,YAAK,QAAQ,SAAU,EAAI,CACzB,GAAI,GAEH,GAAiB,EAAG,WAAW,OAAO,MAAM,EAAgB,KAExD,KAGT,aAAuB,CACrB,OAAS,GAAQ,UAAU,OAAQ,EAAU,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACvF,EAAQ,GAAS,UAAU,GAG7B,GAAI,GAAa,GAAU,EAAQ,IAAI,SAAU,EAAG,CAClD,MAAO,GAAE,MAAM,QAEjB,KAAK,QAAQ,SAAU,EAAI,CACzB,EAAW,QAAQ,SAAU,EAAW,CACtC,EAAG,UAAU,OAAO,OAK1B,aAAoB,CAClB,OAAS,GAAQ,UAAU,OAAQ,EAAU,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACvF,EAAQ,GAAS,UAAU,GAG7B,GAAI,GAAa,GAAU,EAAQ,IAAI,SAAU,EAAG,CAClD,MAAO,GAAE,MAAM,QAEjB,MAAO,IAAY,KAAM,SAAU,EAAI,CACrC,MAAO,GAAW,OAAO,SAAU,EAAW,CAC5C,MAAO,GAAG,UAAU,SAAS,KAC5B,OAAS,IACX,OAAS,EAGd,YAAc,EAAO,EAAO,CAC1B,GAAI,UAAU,SAAW,GAAK,MAAO,IAAU,SAE7C,MAAI,MAAK,GAAW,KAAK,GAAG,aAAa,GACzC,OAIF,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,GAAI,UAAU,SAAW,EAEvB,KAAK,GAAG,aAAa,EAAO,OAG5B,QAAS,KAAY,GACnB,KAAK,GAAG,GAAY,EAAM,GAC1B,KAAK,GAAG,aAAa,EAAU,EAAM,IAK3C,MAAO,MAGT,YAAoB,EAAM,CACxB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,gBAAgB,GAG1B,MAAO,MAGT,YAAc,EAAO,EAAO,CAC1B,GAAI,UAAU,SAAW,GAAK,MAAO,IAAU,UAE7C,GAAI,KAAK,GAAI,MAAO,MAAK,GAAG,OACvB,CAEL,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,GAAI,UAAU,SAAW,EAEvB,KAAK,GAAG,GAAS,MAGjB,QAAS,KAAY,GACnB,KAAK,GAAG,GAAY,EAAM,GAKhC,MAAO,MAGT,MAAO,MAGT,YAAc,EAAK,EAAO,CACxB,GAAI,GAEJ,GAAI,MAAO,IAAU,YAAa,CAEhC,GADA,EAAK,KAAK,GACN,CAAC,EAAI,OAET,GAAI,EAAG,wBAA0B,IAAO,GAAG,uBACzC,MAAO,GAAG,uBAAuB,GAGnC,GAAI,GAAU,EAAG,aAAa,QAAU,GAExC,MAAI,IAIJ,OAIF,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,EAAK,KAAK,GACL,EAAG,wBAAwB,GAAG,uBAAyB,IAC5D,EAAG,uBAAuB,GAAO,EAGnC,MAAO,MAGT,YAAoB,EAAK,CACvB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GAEV,EAAG,wBAA0B,EAAG,uBAAuB,IACzD,GAAG,uBAAuB,GAAO,KACjC,MAAO,GAAG,uBAAuB,KAKvC,aAAmB,CACjB,GAAI,GAAK,KAAK,GACd,GAAI,EAAC,EACL,IAAI,GAAU,GAEd,GAAI,EAAG,QACL,OAAS,KAAW,GAAG,QACrB,EAAQ,GAAW,EAAG,QAAQ,OAGhC,QAAS,GAAI,EAAG,EAAI,EAAG,WAAW,OAAQ,GAAK,EAAG,CAChD,GAAI,GAAQ,EAAG,WAAW,GAEtB,EAAM,KAAK,QAAQ,UAAY,GACjC,GAAQ,GAAY,EAAM,KAAK,MAAM,SAAS,KAAO,EAAM,OAKjE,OAAS,KAAO,GACV,EAAQ,KAAS,QAAS,EAAQ,GAAO,GAAe,EAAQ,KAAS,OAAQ,EAAQ,GAAO,GAAc,WAAW,EAAQ,MAAU,EAAQ,GAAO,GAAG,GAAQ,IAAQ,GAGnL,MAAO,IAGT,YAAa,EAAO,CAClB,GAAI,MAAO,IAAU,YAAa,CAEhC,GAAI,GAAK,KAAK,GACd,GAAI,CAAC,EAAI,OAET,GAAI,EAAG,UAAY,EAAG,SAAS,gBAAkB,SAAU,CAGzD,OAFI,GAAS,GAEJ,EAAI,EAAG,EAAI,EAAG,gBAAgB,OAAQ,GAAK,EAClD,EAAO,KAAK,EAAG,gBAAgB,GAAG,OAGpC,MAAO,GAGT,MAAO,GAAG,MAIZ,OAAS,GAAK,EAAG,EAAK,KAAK,OAAQ,GAAM,EAAG,CAC1C,GAAI,GAAM,KAAK,GAEf,GAAI,MAAM,QAAQ,IAAU,EAAI,UAAY,EAAI,SAAS,gBAAkB,SACzE,OAAS,GAAI,EAAG,EAAI,EAAI,QAAQ,OAAQ,GAAK,EAC3C,EAAI,QAAQ,GAAG,SAAW,EAAM,QAAQ,EAAI,QAAQ,GAAG,QAAU,MAGnE,GAAI,MAAQ,EAIhB,MAAO,MAGT,YAAe,EAAO,CACpB,MAAO,MAAK,IAAI,GAGlB,YAAmB,EAAW,CAC5B,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,MAAM,UAAY,EAG5B,MAAO,MAGT,YAAoB,EAAU,CAC5B,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,MAAM,mBAAqB,MAAO,IAAa,SAAW,EAAW,KAAO,EAGtF,MAAO,MAGT,aAAc,CACZ,OAAS,GAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAG1B,GAAI,GAAY,EAAK,GACjB,EAAiB,EAAK,GACtB,EAAW,EAAK,GAChB,EAAU,EAAK,GAEf,MAAO,GAAK,IAAO,YACrB,GAAY,EAAK,GACjB,EAAW,EAAK,GAChB,EAAU,EAAK,GACf,EAAiB,QAGd,GAAS,GAAU,IAExB,WAAyB,EAAG,CAC1B,GAAI,GAAS,EAAE,OACf,GAAI,EAAC,EACL,IAAI,GAAY,EAAE,OAAO,eAAiB,GAM1C,GAJI,EAAU,QAAQ,GAAK,GACzB,EAAU,QAAQ,GAGhB,GAAE,GAAQ,GAAG,GAAiB,EAAS,MAAM,EAAQ,OAIvD,QAHI,IAAW,GAAE,GAAQ,UAGhB,GAAI,EAAG,GAAI,GAAS,OAAQ,IAAK,EACpC,GAAE,GAAS,KAAI,GAAG,IAAiB,EAAS,MAAM,GAAS,IAAI,IAKzE,WAAqB,EAAG,CACtB,GAAI,GAAY,GAAK,EAAE,OAAS,EAAE,OAAO,eAAiB,GAAK,GAE3D,EAAU,QAAQ,GAAK,GACzB,EAAU,QAAQ,GAGpB,EAAS,MAAM,KAAM,GAMvB,OAHI,GAAS,EAAU,MAAM,KACzB,EAEK,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GAEd,GAAK,EAaH,IAAK,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACrC,GAAI,GAAS,EAAO,GACf,EAAG,mBAAmB,GAAG,kBAAoB,IAC7C,EAAG,kBAAkB,IAAS,GAAG,kBAAkB,GAAU,IAElE,EAAG,kBAAkB,GAAQ,KAAK,CAChC,SAAU,EACV,cAAe,IAGjB,EAAG,iBAAiB,EAAQ,EAAiB,OAtB/C,KAAK,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACrC,GAAI,GAAQ,EAAO,GACd,EAAG,eAAe,GAAG,cAAgB,IACrC,EAAG,cAAc,IAAQ,GAAG,cAAc,GAAS,IACxD,EAAG,cAAc,GAAO,KAAK,CAC3B,SAAU,EACV,cAAe,IAEjB,EAAG,iBAAiB,EAAO,EAAa,IAmB9C,MAAO,MAGT,aAAe,CACb,OAAS,GAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAG1B,GAAI,GAAY,EAAK,GACjB,EAAiB,EAAK,GACtB,EAAW,EAAK,GAChB,EAAU,EAAK,GAEf,MAAO,GAAK,IAAO,YACrB,GAAY,EAAK,GACjB,EAAW,EAAK,GAChB,EAAU,EAAK,GACf,EAAiB,QAGd,GAAS,GAAU,IAGxB,OAFI,GAAS,EAAU,MAAM,KAEpB,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAGtC,OAFI,GAAQ,EAAO,GAEV,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GACV,EAAW,OAQf,GANI,CAAC,GAAkB,EAAG,cACxB,EAAW,EAAG,cAAc,GACnB,GAAkB,EAAG,mBAC9B,GAAW,EAAG,kBAAkB,IAG9B,GAAY,EAAS,OACvB,OAAS,GAAI,EAAS,OAAS,EAAG,GAAK,EAAG,GAAK,EAAG,CAChD,GAAI,GAAU,EAAS,GAEnB,GAAY,EAAQ,WAAa,GAG1B,GAAY,EAAQ,UAAY,EAAQ,SAAS,WAAa,EAAQ,SAAS,YAAc,EAFtG,GAAG,oBAAoB,EAAO,EAAQ,cAAe,GACrD,EAAS,OAAO,EAAG,IAIT,GACV,GAAG,oBAAoB,EAAO,EAAQ,cAAe,GACrD,EAAS,OAAO,EAAG,KAO7B,MAAO,MAGT,aAAgB,CAGd,OAFI,GAAM,KAED,EAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAG1B,GAAI,GAAY,EAAK,GACjB,EAAiB,EAAK,GACtB,EAAW,EAAK,GAChB,EAAU,EAAK,GAEf,MAAO,GAAK,IAAO,YACrB,GAAY,EAAK,GACjB,EAAW,EAAK,GAChB,EAAU,EAAK,GACf,EAAiB,QAGnB,YAAuB,CACrB,OAAS,GAAQ,UAAU,OAAQ,EAAY,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACzF,EAAU,GAAS,UAAU,GAG/B,EAAS,MAAM,KAAM,GACrB,EAAI,IAAI,EAAW,EAAgB,EAAa,GAE5C,EAAY,WACd,MAAO,GAAY,UAIvB,SAAY,UAAY,EACjB,EAAI,GAAG,EAAW,EAAgB,EAAa,GAGxD,aAAmB,CAGjB,OAFI,GAAS,KAEJ,EAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAM1B,OAHI,GAAS,EAAK,GAAG,MAAM,KACvB,EAAY,EAAK,GAEZ,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAGtC,OAFI,GAAQ,EAAO,GAEV,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GAEd,GAAI,EAAO,YAAa,CACtB,GAAI,GAAM,GAAI,GAAO,YAAY,EAAO,CACtC,OAAQ,EACR,QAAS,GACT,WAAY,KAEd,EAAG,cAAgB,EAAK,OAAO,SAAU,EAAM,EAAW,CACxD,MAAO,GAAY,IAErB,EAAG,cAAc,GACjB,EAAG,cAAgB,GACnB,MAAO,GAAG,eAKhB,MAAO,MAGT,YAAuB,EAAU,CAC/B,GAAI,GAAM,KAEV,WAAsB,EAAG,CACnB,EAAE,SAAW,MACjB,GAAS,KAAK,KAAM,GACpB,EAAI,IAAI,gBAAiB,IAG3B,MAAI,IACF,EAAI,GAAG,gBAAiB,GAGnB,KAGT,YAAsB,EAAU,CAC9B,GAAI,GAAM,KAEV,WAAsB,EAAG,CACnB,EAAE,SAAW,MACjB,GAAS,KAAK,KAAM,GACpB,EAAI,IAAI,eAAgB,IAG1B,MAAI,IACF,EAAI,GAAG,eAAgB,GAGlB,KAGT,aAAiB,CACf,GAAI,GAAS,YAEb,MAAI,MAAK,KAAO,EACP,EAAO,WAGZ,KAAK,OAAS,EACT,WAAW,KAAK,IAAI,UAGtB,KAGT,YAAoB,EAAgB,CAClC,GAAI,KAAK,OAAS,EAAG,CACnB,GAAI,EAAgB,CAClB,GAAI,GAAU,KAAK,SAEnB,MAAO,MAAK,GAAG,YAAc,WAAW,EAAQ,iBAAiB,iBAAmB,WAAW,EAAQ,iBAAiB,gBAG1H,MAAO,MAAK,GAAG,YAGjB,MAAO,MAGT,aAAkB,CAChB,GAAI,GAAS,YAEb,MAAI,MAAK,KAAO,EACP,EAAO,YAGZ,KAAK,OAAS,EACT,WAAW,KAAK,IAAI,WAGtB,KAGT,YAAqB,EAAgB,CACnC,GAAI,KAAK,OAAS,EAAG,CACnB,GAAI,EAAgB,CAClB,GAAI,GAAW,KAAK,SAEpB,MAAO,MAAK,GAAG,aAAe,WAAW,EAAS,iBAAiB,eAAiB,WAAW,EAAS,iBAAiB,kBAG3H,MAAO,MAAK,GAAG,aAGjB,MAAO,MAGT,aAAkB,CAChB,GAAI,KAAK,OAAS,EAAG,CACnB,GAAI,GAAS,KACT,EAAW,KACX,EAAK,KAAK,GACV,EAAM,EAAG,wBACT,EAAO,EAAS,KAChB,EAAY,EAAG,WAAa,EAAK,WAAa,EAC9C,EAAa,EAAG,YAAc,EAAK,YAAc,EACjD,EAAY,IAAO,EAAS,EAAO,QAAU,EAAG,UAChD,EAAa,IAAO,EAAS,EAAO,QAAU,EAAG,WACrD,MAAO,CACL,IAAK,EAAI,IAAM,EAAY,EAC3B,KAAM,EAAI,KAAO,EAAa,GAIlC,MAAO,MAGT,aAAgB,CACd,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,MAAM,QAAU,OAG1B,MAAO,MAGT,aAAgB,CAGd,OAFI,GAAS,YAEJ,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GAEV,EAAG,MAAM,UAAY,QACvB,GAAG,MAAM,QAAU,IAGjB,EAAO,iBAAiB,EAAI,MAAM,iBAAiB,aAAe,QAEpE,GAAG,MAAM,QAAU,SAIvB,MAAO,MAGT,aAAkB,CAChB,GAAI,GAAS,KACb,MAAI,MAAK,GAAW,EAAO,iBAAiB,KAAK,GAAI,MAC9C,GAGT,YAAa,EAAO,EAAO,CACzB,GAAI,GAAS,KACT,EAEJ,GAAI,UAAU,SAAW,EACvB,GAAI,MAAO,IAAU,UAEnB,GAAI,KAAK,GAAI,MAAO,GAAO,iBAAiB,KAAK,GAAI,MAAM,iBAAiB,OACvE,CAEL,IAAK,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,OAAS,KAAS,GAChB,KAAK,GAAG,MAAM,GAAS,EAAM,GAIjC,MAAO,MAIX,GAAI,UAAU,SAAW,GAAK,MAAO,IAAU,SAAU,CAEvD,IAAK,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,KAAK,GAAG,MAAM,GAAS,EAGzB,MAAO,MAGT,MAAO,MAGT,YAAc,EAAU,CACtB,MAAK,GACL,MAAK,QAAQ,SAAU,EAAI,EAAO,CAChC,EAAS,MAAM,EAAI,CAAC,EAAI,MAEnB,MAJe,KAOxB,YAAgB,EAAU,CACxB,GAAI,GAAS,GAAY,KAAM,GAC/B,MAAO,IAAE,GAGX,YAAc,EAAM,CAClB,GAAI,MAAO,IAAS,YAClB,MAAO,MAAK,GAAK,KAAK,GAAG,UAAY,KAGvC,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,UAAY,EAGtB,MAAO,MAGT,YAAc,EAAM,CAClB,GAAI,MAAO,IAAS,YAClB,MAAO,MAAK,GAAK,KAAK,GAAG,YAAY,OAAS,KAGhD,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,KAAK,GAAG,YAAc,EAGxB,MAAO,MAGT,YAAY,EAAU,CACpB,GAAI,GAAS,KACT,EAAW,KACX,EAAK,KAAK,GACV,EACA,EACJ,GAAI,CAAC,GAAM,MAAO,IAAa,YAAa,MAAO,GAEnD,GAAI,MAAO,IAAa,SAAU,CAChC,GAAI,EAAG,QAAS,MAAO,GAAG,QAAQ,GAClC,GAAI,EAAG,sBAAuB,MAAO,GAAG,sBAAsB,GAC9D,GAAI,EAAG,kBAAmB,MAAO,GAAG,kBAAkB,GAGtD,IAFA,EAAc,GAAE,GAEX,EAAI,EAAG,EAAI,EAAY,OAAQ,GAAK,EACvC,GAAI,EAAY,KAAO,EAAI,MAAO,GAGpC,MAAO,GAGT,GAAI,IAAa,EACf,MAAO,KAAO,EAGhB,GAAI,IAAa,EACf,MAAO,KAAO,EAGhB,GAAI,EAAS,UAAY,YAAoB,IAAM,CAGjD,IAFA,EAAc,EAAS,SAAW,CAAC,GAAY,EAE1C,EAAI,EAAG,EAAI,EAAY,OAAQ,GAAK,EACvC,GAAI,EAAY,KAAO,EAAI,MAAO,GAGpC,MAAO,GAGT,MAAO,GAGT,aAAiB,CACf,GAAI,GAAQ,KAAK,GACb,EAEJ,GAAI,EAAO,CAGT,IAFA,EAAI,EAEI,GAAQ,EAAM,mBAAqB,MACrC,EAAM,WAAa,GAAG,IAAK,GAGjC,MAAO,IAMX,YAAY,EAAO,CACjB,GAAI,MAAO,IAAU,YAAa,MAAO,MACzC,GAAI,GAAS,KAAK,OAElB,GAAI,EAAQ,EAAS,EACnB,MAAO,IAAE,IAGX,GAAI,EAAQ,EAAG,CACb,GAAI,GAAc,EAAS,EAC3B,MAAI,GAAc,EAAU,GAAE,IACvB,GAAE,CAAC,KAAK,KAGjB,MAAO,IAAE,CAAC,KAAK,KAGjB,aAAkB,CAIhB,OAHI,GACA,EAAW,KAEN,EAAI,EAAG,EAAI,UAAU,OAAQ,GAAK,EAAG,CAC5C,EAAW,EAAI,GAAK,UAAU,QAAU,EAAI,OAAY,UAAU,GAElE,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,GAAI,MAAO,IAAa,SAAU,CAChC,GAAI,GAAU,EAAS,cAAc,OAGrC,IAFA,EAAQ,UAAY,EAEb,EAAQ,YACb,KAAK,GAAG,YAAY,EAAQ,oBAErB,YAAoB,IAC7B,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EACxC,KAAK,GAAG,YAAY,EAAS,QAG/B,MAAK,GAAG,YAAY,GAK1B,MAAO,MAGT,YAAkB,EAAQ,CACxB,UAAE,GAAQ,OAAO,MACV,KAGT,YAAiB,EAAU,CACzB,GAAI,GAAW,KACX,EACA,EAEJ,IAAK,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,GAAI,MAAO,IAAa,SAAU,CAChC,GAAI,GAAU,EAAS,cAAc,OAGrC,IAFA,EAAQ,UAAY,EAEf,EAAI,EAAQ,WAAW,OAAS,EAAG,GAAK,EAAG,GAAK,EACnD,KAAK,GAAG,aAAa,EAAQ,WAAW,GAAI,KAAK,GAAG,WAAW,YAExD,YAAoB,IAC7B,IAAK,EAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EACpC,KAAK,GAAG,aAAa,EAAS,GAAI,KAAK,GAAG,WAAW,QAGvD,MAAK,GAAG,aAAa,EAAU,KAAK,GAAG,WAAW,IAItD,MAAO,MAGT,YAAmB,EAAQ,CACzB,UAAE,GAAQ,QAAQ,MACX,KAGT,YAAsB,EAAU,CAG9B,OAFI,GAAS,GAAE,GAEN,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,GAAI,EAAO,SAAW,EACpB,EAAO,GAAG,WAAW,aAAa,KAAK,GAAI,EAAO,YACzC,EAAO,OAAS,EACzB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAO,GAAG,WAAW,aAAa,KAAK,GAAG,UAAU,IAAO,EAAO,IAM1E,YAAqB,EAAU,CAG7B,OAFI,GAAQ,GAAE,GAEL,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,GAAI,EAAM,SAAW,EACnB,EAAM,GAAG,WAAW,aAAa,KAAK,GAAI,EAAM,GAAG,qBAC1C,EAAM,OAAS,EACxB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,EAAM,GAAG,WAAW,aAAa,KAAK,GAAG,UAAU,IAAO,EAAM,GAAG,aAM3E,YAAc,EAAU,CACtB,MAAI,MAAK,OAAS,EACZ,EACE,KAAK,GAAG,oBAAsB,GAAE,KAAK,GAAG,oBAAoB,GAAG,GAC1D,GAAE,CAAC,KAAK,GAAG,qBAGb,GAAE,IAGP,KAAK,GAAG,mBAA2B,GAAE,CAAC,KAAK,GAAG,qBAC3C,GAAE,IAGJ,GAAE,IAGX,YAAiB,EAAU,CACzB,GAAI,GAAU,GACV,EAAK,KAAK,GACd,GAAI,CAAC,EAAI,MAAO,IAAE,IAElB,KAAO,EAAG,oBAAoB,CAC5B,GAAI,GAAQ,EAAG,mBAEX,EACE,GAAE,GAAO,GAAG,IAAW,EAAQ,KAAK,GACnC,EAAQ,KAAK,GAEpB,EAAK,EAGP,MAAO,IAAE,GAGX,WAAc,EAAU,CACtB,GAAI,KAAK,OAAS,EAAG,CACnB,GAAI,GAAK,KAAK,GAEd,MAAI,GACE,EAAG,wBAA0B,GAAE,EAAG,wBAAwB,GAAG,GACxD,GAAE,CAAC,EAAG,yBAGR,GAAE,IAGP,EAAG,uBAA+B,GAAE,CAAC,EAAG,yBACrC,GAAE,IAGX,MAAO,IAAE,IAGX,WAAiB,EAAU,CACzB,GAAI,GAAU,GACV,EAAK,KAAK,GACd,GAAI,CAAC,EAAI,MAAO,IAAE,IAElB,KAAO,EAAG,wBAAwB,CAChC,GAAI,GAAQ,EAAG,uBAEX,EACE,GAAE,GAAO,GAAG,IAAW,EAAQ,KAAK,GACnC,EAAQ,KAAK,GAEpB,EAAK,EAGP,MAAO,IAAE,GAGX,WAAkB,EAAU,CAC1B,MAAO,MAAK,QAAQ,GAAU,IAAI,KAAK,QAAQ,IAGjD,YAAgB,EAAU,CAGxB,OAFI,GAAU,GAEL,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,KAAK,GAAG,aAAe,MACzB,CAAI,EACE,GAAE,KAAK,GAAG,YAAY,GAAG,IAAW,EAAQ,KAAK,KAAK,GAAG,YAE7D,EAAQ,KAAK,KAAK,GAAG,aAK3B,MAAO,IAAE,GAGX,WAAiB,EAAU,CAGzB,OAFI,GAAU,GAEL,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAGpC,OAFI,GAAU,KAAK,GAAG,WAEf,GACD,EACE,GAAE,GAAS,GAAG,IAAW,EAAQ,KAAK,GAE1C,EAAQ,KAAK,GAGf,EAAU,EAAQ,WAItB,MAAO,IAAE,GAGX,WAAiB,EAAU,CACzB,GAAI,GAAU,KAEd,MAAI,OAAO,IAAa,YACf,GAAE,IAGN,GAAQ,GAAG,IACd,GAAU,EAAQ,QAAQ,GAAU,GAAG,IAGlC,GAGT,YAAc,EAAU,CAGtB,OAFI,GAAgB,GAEX,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAGpC,OAFI,GAAQ,KAAK,GAAG,iBAAiB,GAE5B,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,EAAc,KAAK,EAAM,IAI7B,MAAO,IAAE,GAGX,YAAkB,EAAU,CAG1B,OAFI,GAAW,GAEN,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAGpC,OAFI,GAAa,KAAK,GAAG,SAEhB,EAAI,EAAG,EAAI,EAAW,OAAQ,GAAK,EACtC,EAAC,GAAY,GAAE,EAAW,IAAI,GAAG,KACnC,EAAS,KAAK,EAAW,IAK/B,MAAO,IAAE,GAGX,aAAkB,CAChB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,KAAK,GAAG,YAAY,KAAK,GAAG,WAAW,YAAY,KAAK,IAG9D,MAAO,MAGT,aAAkB,CAChB,MAAO,MAAK,SAGd,aAAe,CAKb,OAJI,GAAM,KACN,EACA,EAEK,EAAS,UAAU,OAAQ,EAAM,GAAI,OAAM,GAAS,EAAS,EAAG,EAAS,EAAQ,IACxF,EAAI,GAAU,UAAU,GAG1B,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EAAG,CAClC,GAAI,GAAQ,GAAE,EAAI,IAElB,IAAK,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACjC,EAAI,KAAK,EAAM,IAInB,MAAO,GAGT,aAAiB,CACf,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAAG,CACvC,GAAI,GAAK,KAAK,GAEd,GAAI,EAAG,WAAa,EAAG,CACrB,OAAS,GAAI,EAAG,EAAI,EAAG,WAAW,OAAQ,GAAK,EACzC,EAAG,WAAW,GAAG,YACnB,EAAG,WAAW,GAAG,WAAW,YAAY,EAAG,WAAW,IAI1D,EAAG,YAAc,IAIrB,MAAO,MAGT,aAAoB,CAGlB,OAFI,GAAS,YAEJ,EAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAGzB,GAAI,GAAO,EAAK,GACZ,EAAM,EAAK,GACX,EAAW,EAAK,GAChB,EAAS,EAAK,GACd,EAAW,EAAK,GAEpB,MAAI,GAAK,SAAW,GAAK,MAAO,IAAW,YACzC,GAAW,EACX,EAAO,EAAK,GACZ,EAAM,EAAK,GACX,EAAW,EAAK,GAChB,EAAW,EAAK,GAChB,EAAS,EAAK,IAGZ,MAAO,IAAW,aAAa,GAAS,SACrC,KAAK,KAAK,UAAmB,CAClC,GAAI,GAAK,KACL,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,GAEA,GAAa,EAAM,GAAK,IAAQ,EAChC,EAAc,EAAO,GAAK,IAAS,EAsBvC,GApBI,MAAO,IAAW,aACpB,GAAS,SAGP,IACF,GAAa,EAAG,UAEX,GACH,GAAG,UAAY,IAIf,GACF,GAAc,EAAG,WAEZ,GACH,GAAG,WAAa,IAIhB,CAAC,EAAU,OAEX,IACF,GAAS,EAAG,aAAe,EAAG,aAC9B,EAAS,KAAK,IAAI,KAAK,IAAI,EAAK,GAAS,IAGvC,GACF,GAAU,EAAG,YAAc,EAAG,YAC9B,EAAU,KAAK,IAAI,KAAK,IAAI,EAAM,GAAU,IAG9C,GAAI,IAAY,KACZ,IAAc,IAAW,GAAY,IAAa,IAClD,GAAe,IAAY,GAAa,GAAc,IAE1D,YAAgB,GAAM,CAChB,KAAS,QACX,IAAO,GAAI,QAAO,WAGhB,KAAc,MAChB,IAAY,IAGd,GAAI,IAAW,KAAK,IAAI,KAAK,IAAK,IAAO,IAAa,EAAU,GAAI,GAChE,GAAe,IAAW,SAAW,GAAW,GAAM,KAAK,IAAI,GAAW,KAAK,IAAM,EACrF,GAwBJ,GAvBI,IAAY,GAAY,EAAa,GAAgB,GAAS,IAC9D,GAAa,IAAa,EAAc,GAAgB,GAAU,IAElE,IAAc,EAAS,GAAc,GAAa,GACpD,GAAG,UAAY,EACf,GAAO,IAGL,IAAc,EAAS,GAAc,GAAa,GACpD,GAAG,UAAY,EACf,GAAO,IAGL,GAAe,EAAU,GAAe,IAAc,GACxD,GAAG,WAAa,EAChB,GAAO,IAGL,GAAe,EAAU,GAAe,IAAc,GACxD,GAAG,WAAa,EAChB,GAAO,IAGL,GAAM,CACJ,GAAU,IACd,OAGE,IAAY,GAAG,UAAY,GAC3B,GAAa,GAAG,WAAa,IACjC,EAAO,sBAAsB,IAG/B,EAAO,sBAAsB,MAKjC,aAAqB,CACnB,OAAS,GAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAG1B,GAAI,GAAM,EAAK,GACX,EAAW,EAAK,GAChB,EAAS,EAAK,GACd,EAAW,EAAK,GAEhB,EAAK,SAAW,GAAK,MAAO,IAAW,YACzC,GAAM,EAAK,GACX,EAAW,EAAK,GAChB,EAAW,EAAK,GAChB,EAAS,EAAK,IAGhB,GAAI,GAAM,KAEV,MAAI,OAAO,IAAQ,YACb,EAAI,OAAS,EAAU,EAAI,GAAG,UAC3B,KAGF,EAAI,SAAS,OAAW,EAAK,EAAU,EAAQ,GAGxD,aAAsB,CACpB,OAAS,GAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAG1B,GAAI,GAAO,EAAK,GACZ,EAAW,EAAK,GAChB,EAAS,EAAK,GACd,EAAW,EAAK,GAEhB,EAAK,SAAW,GAAK,MAAO,IAAW,YACzC,GAAO,EAAK,GACZ,EAAW,EAAK,GAChB,EAAW,EAAK,GAChB,EAAS,EAAK,IAGhB,GAAI,GAAM,KAEV,MAAI,OAAO,IAAS,YACd,EAAI,OAAS,EAAU,EAAI,GAAG,WAC3B,KAGF,EAAI,SAAS,EAAM,OAAW,EAAU,EAAQ,GAGzD,YAAiB,EAAc,EAAe,CAC5C,GAAI,GAAS,YACT,EAAM,KACN,EAAI,CACN,MAAO,OAAO,OAAO,GAAI,GACzB,OAAQ,OAAO,OAAO,CACpB,SAAU,IACV,OAAQ,SAQP,GACH,SAAU,EACV,UAAW,GACX,IAAK,GACL,eAAgB,SAAwB,EAAQ,EAAU,CACxD,MAAI,KAAW,QACN,GAAM,KAAK,IAAI,EAAW,KAAK,IAAM,EAG1C,MAAO,IAAW,WACb,EAAO,GAGT,GAET,KAAM,UAAgB,CAChB,EAAE,SACJ,EAAO,qBAAqB,EAAE,SAGhC,EAAE,UAAY,GACd,EAAE,SAAS,KAAK,SAAU,EAAI,CAC5B,GAAI,GAAU,EACd,MAAO,GAAQ,sBAEjB,EAAE,IAAM,IAEV,KAAM,SAAc,EAAU,CAQ5B,GAPA,EAAE,UAAY,GACd,EAAE,SAAS,KAAK,SAAU,EAAI,CAC5B,GAAI,GAAU,EACd,MAAO,GAAQ,sBAEb,GAAU,EAAS,GAEnB,EAAE,IAAI,OAAS,EAAG,CACpB,GAAI,GAAM,EAAE,IAAI,QAChB,EAAE,QAAQ,EAAI,GAAI,EAAI,MAG1B,QAAS,SAAiB,EAAO,EAAQ,CACvC,GAAI,EAAE,UACJ,SAAE,IAAI,KAAK,CAAC,EAAO,IACZ,EAGT,GAAI,GAAW,GAEf,EAAE,SAAS,KAAK,SAAU,GAAI,GAAO,CACnC,GAAI,GACA,GACA,GACA,GACA,GACC,GAAG,qBAAqB,GAAE,SAAS,IAAO,oBAAsB,GACrE,EAAS,IAAS,CAChB,UAAW,IAEb,OAAO,KAAK,GAAO,QAAQ,SAAU,GAAM,CACzC,EAAmB,EAAO,iBAAiB,GAAI,MAAM,iBAAiB,IAAM,QAAQ,IAAK,KACzF,GAAe,WAAW,GAC1B,GAAO,EAAiB,QAAQ,GAAc,IAC9C,GAAa,WAAW,EAAM,KAC9B,GAAiB,EAAM,IAAQ,GAC/B,EAAS,IAAO,IAAQ,CACtB,iBAAkB,EAClB,aAAc,GACd,KAAM,GACN,WAAY,GACZ,eAAgB,GAChB,aAAc,QAIpB,GAAI,GAAY,KACZ,EACA,EAAe,EACf,EAAY,EACZ,EACA,EAAQ,GACZ,EAAE,UAAY,GAEd,YAAkB,CAChB,EAAO,GAAI,QAAO,UAClB,GAAI,IACA,GAoDJ,GAjDE,GAAQ,GACJ,EAAO,OAAO,EAAO,MAAM,IAG7B,IAAc,MAChB,GAAY,GAGV,EAAO,UAET,EAAO,SAAS,EAAK,KAAK,IAAI,KAAK,IAAK,GAAO,GAAa,EAAO,SAAU,GAAI,GAAI,EAAY,EAAO,SAAW,EAAO,EAAI,EAAI,EAAY,EAAO,SAAW,EAAM,GAGxK,EAAS,QAAQ,SAAU,EAAS,CAClC,GAAI,IAAK,EACL,GAAQ,GAAG,MACf,OAAO,KAAK,GAAO,QAAQ,SAAU,GAAM,CACzC,GAAI,KAAQ,GAAG,MACf,IAAW,KAAK,IAAI,KAAK,IAAK,GAAO,GAAa,EAAO,SAAU,GAAI,GACvE,GAAe,EAAE,eAAe,EAAO,OAAQ,IAC/C,GAAI,IAAW,GAAG,IACd,GAAe,GAAS,aACxB,GAAa,GAAS,WACtB,GAAO,GAAS,KACpB,GAAG,IAAM,aAAe,GAAe,GAAgB,IAAa,IACpE,GAAI,IAAe,GAAG,IAAM,aAgB5B,GAdI,IAAa,IAAgB,IAAgB,IAAc,GAAa,IAAgB,IAAgB,KAC1G,IAAG,UAAU,MAAM,IAAQ,GAAa,GACxC,GAAa,EAET,IAAc,OAAO,KAAK,GAAO,QACnC,IAAG,KAAO,GACV,GAAgB,GAGd,IAAiB,EAAS,QAC5B,GAAO,KAIP,EAAM,CACR,EAAE,KAAK,EAAO,UACd,OAGF,GAAG,UAAU,MAAM,IAAQ,GAAe,QAG1C,IAEJ,GAAE,QAAU,EAAO,sBAAsB,IAG3C,SAAE,QAAU,EAAO,sBAAsB,GAClC,IAIX,GAAI,EAAE,SAAS,SAAW,EACxB,MAAO,GAKT,OAFI,GAEK,EAAI,EAAG,EAAI,EAAE,SAAS,OAAQ,GAAK,EACtC,EAAE,SAAS,GAAG,oBAChB,EAAkB,EAAE,SAAS,GAAG,oBAC3B,EAAE,SAAS,GAAG,oBAAsB,EAG7C,MAAK,IACH,GAAkB,GAGhB,IAAiB,OACnB,EAAgB,OAEhB,EAAgB,QAAQ,EAAE,MAAO,EAAE,QAG9B,EAGT,aAAgB,CAGd,OAFI,GAAM,KAED,EAAI,EAAG,EAAI,EAAI,OAAQ,GAAK,EAC/B,EAAI,GAAG,qBACT,EAAI,GAAG,oBAAoB,OAKjC,GAAI,IAAY,gBAAgB,MAAM,KAEtC,YAAkB,EAAM,CACtB,YAAwB,CACtB,OAAS,GAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAGzB,GAAI,MAAO,GAAK,IAAO,YAAa,CAClC,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EAChC,GAAU,QAAQ,GAAQ,GAC5B,CAAI,IAAQ,MAAK,GAAI,KAAK,GAAG,KAC3B,GAAE,KAAK,IAAI,QAAQ,IAKzB,MAAO,MAGT,MAAO,MAAK,GAAG,MAAM,KAAM,CAAC,GAAM,OAAO,IAG3C,MAAO,GAGT,GAAI,IAAQ,GAAS,SACjB,GAAO,GAAS,QAChB,GAAQ,GAAS,SACjB,GAAU,GAAS,WACnB,GAAW,GAAS,YACpB,GAAQ,GAAS,SACjB,GAAU,GAAS,WACnB,GAAW,GAAS,YACpB,GAAS,GAAS,UAClB,GAAS,GAAS,UAClB,GAAY,GAAS,aACrB,GAAY,GAAS,aACrB,GAAU,GAAS,WACnB,GAAa,GAAS,cACtB,GAAa,GAAS,cACtB,GAAW,GAAS,YACpB,GAAY,GAAS,aACrB,GAAa,GAAS,cACtB,GAAW,GAAS,YACpB,GAAY,GAAS,aACrB,GAAS,GAAS,UAClB,GAAS,GAAS,UAEtB,GAAe,KCxpDX,GAAU,CACZ,SAAU,GACV,YAAa,GACb,SAAU,GACV,YAAa,GACb,KAAM,GACN,WAAY,GACZ,UAAW,GACX,WAAY,GACZ,GAAI,GACJ,IAAK,GACL,QAAS,GACT,cAAe,GACf,WAAY,GACZ,YAAa,GACb,OAAQ,GACR,OAAQ,GACR,IAAK,GACL,KAAM,GACN,KAAM,GACN,KAAM,GACN,GAAI,GACJ,MAAO,GACP,GAAI,GACJ,OAAQ,GACR,QAAS,GACT,KAAM,GACN,QAAS,GACT,KAAM,EACN,QAAS,EACT,OAAQ,GACR,QAAS,EACT,QAAS,EACT,KAAM,GACN,SAAU,GACV,OAAQ,GACR,OAAQ,IAEV,OAAO,KAAK,IAAS,QAAQ,SAAU,EAAY,CACjD,OAAO,eAAe,GAAE,GAAI,EAAY,CACtC,MAAO,GAAQ,GACf,SAAU,OAGd,OAAe,GC3Cf,YAAqB,EAAK,CACxB,GAAI,GAAS,EACb,OAAO,KAAK,GAAQ,QAAQ,SAAU,EAAK,CACzC,GAAI,CACF,EAAO,GAAO,UACd,EAGF,GAAI,CACF,MAAO,GAAO,QACd,KAKN,YAAkB,EAAU,EAAO,CACjC,MAAI,KAAU,QACZ,GAAQ,GAGH,WAAW,EAAU,GAG9B,aAAe,CACb,MAAO,MAAK,MAGd,YAA0B,EAAI,CAC5B,GAAI,GAAS,KACT,EAEJ,MAAI,GAAO,kBACT,GAAQ,EAAO,iBAAiB,EAAI,OAGlC,CAAC,GAAS,EAAG,cACf,GAAQ,EAAG,cAGR,GACH,GAAQ,EAAG,OAGN,EAGT,YAAsB,EAAI,EAAM,CAC1B,IAAS,QACX,GAAO,KAGT,GAAI,GAAS,KACT,EACA,EACA,EACA,EAAW,GAAiB,EAAI,MAEpC,MAAI,GAAO,gBACT,GAAe,EAAS,WAAa,EAAS,gBAE1C,EAAa,MAAM,KAAK,OAAS,GACnC,GAAe,EAAa,MAAM,MAAM,IAAI,SAAU,EAAG,CACvD,MAAO,GAAE,QAAQ,IAAK,OACrB,KAAK,OAKV,EAAkB,GAAI,GAAO,gBAAgB,IAAiB,OAAS,GAAK,IAE5E,GAAkB,EAAS,cAAgB,EAAS,YAAc,EAAS,aAAe,EAAS,aAAe,EAAS,WAAa,EAAS,iBAAiB,aAAa,QAAQ,aAAc,sBACrM,EAAS,EAAgB,WAAW,MAAM,MAGxC,IAAS,KAEX,CAAI,EAAO,gBAAiB,EAAe,EAAgB,IAClD,EAAO,SAAW,GAAI,EAAe,WAAW,EAAO,KACzD,EAAe,WAAW,EAAO,KAGtC,IAAS,KAEX,CAAI,EAAO,gBAAiB,EAAe,EAAgB,IAClD,EAAO,SAAW,GAAI,EAAe,WAAW,EAAO,KACzD,EAAe,WAAW,EAAO,KAGnC,GAAgB,EAGzB,YAAkB,EAAG,CACnB,MAAO,OAAO,IAAM,UAAY,IAAM,MAAQ,EAAE,aAAe,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,EAAG,MAAQ,SAGpH,YAAgB,EAAM,CAEpB,MAAI,OAAO,SAAW,aAAe,MAAO,QAAO,aAAgB,YAC1D,YAAgB,aAGlB,GAAS,GAAK,WAAa,GAAK,EAAK,WAAa,IAG3D,aAAkB,CAIhB,OAHI,GAAK,OAAO,UAAU,QAAU,EAAI,OAAY,UAAU,IAC1D,EAAW,CAAC,YAAa,cAAe,aAEnC,EAAI,EAAG,EAAI,UAAU,OAAQ,GAAK,EAAG,CAC5C,GAAI,GAAa,EAAI,GAAK,UAAU,QAAU,EAAI,OAAY,UAAU,GAExE,GAAgC,GAAe,MAAQ,CAAC,GAAO,GAK7D,OAJI,GAAY,OAAO,KAAK,OAAO,IAAa,OAAO,SAAU,EAAK,CACpE,MAAO,GAAS,QAAQ,GAAO,IAGxB,EAAY,EAAG,EAAM,EAAU,OAAQ,EAAY,EAAK,GAAa,EAAG,CAC/E,GAAI,GAAU,EAAU,GACpB,EAAO,OAAO,yBAAyB,EAAY,GAEnD,IAAS,QAAa,EAAK,YAC7B,CAAI,GAAS,EAAG,KAAa,GAAS,EAAW,IAC3C,EAAW,GAAS,WACtB,EAAG,GAAW,EAAW,GAEzB,GAAO,EAAG,GAAU,EAAW,IAExB,CAAC,GAAS,EAAG,KAAa,GAAS,EAAW,IACvD,GAAG,GAAW,GAEV,EAAW,GAAS,WACtB,EAAG,GAAW,EAAW,GAEzB,GAAO,EAAG,GAAU,EAAW,KAGjC,EAAG,GAAW,EAAW,KAOnC,MAAO,GAGT,YAA2B,EAAU,EAAK,CACxC,OAAO,KAAK,GAAK,QAAQ,SAAU,EAAK,CAClC,GAAS,EAAI,KACf,OAAO,KAAK,EAAI,IAAM,QAAQ,SAAU,EAAQ,CAC1C,MAAO,GAAI,GAAK,IAAY,YAC9B,GAAI,GAAK,GAAU,EAAI,GAAK,GAAQ,KAAK,MAK/C,EAAS,GAAO,EAAI,KAIxB,YAA2B,EAAS,CAClC,MAAI,KAAY,QACd,GAAU,IAGL,IAAM,EAAQ,OAAO,QAAQ,cAAe,QAClD,QAAQ,KAAM,KAGjB,YAAmC,EAAY,EAAQ,EAAgB,EAAY,CACjF,GAAI,GAAW,KAEf,MAAI,IACF,OAAO,KAAK,GAAY,QAAQ,SAAU,EAAK,CAC7C,GAAI,CAAC,EAAO,IAAQ,EAAO,OAAS,GAAM,CACxC,GAAI,GAAU,EAAS,cAAc,OACrC,EAAQ,UAAY,EAAW,GAC/B,EAAW,OAAO,GAClB,EAAO,GAAO,KAKb,ECxLT,GAAI,IAEJ,aAAuB,CACrB,GAAI,GAAS,KACT,EAAW,KACf,MAAO,CACL,MAAO,CAAC,CAAE,iBAAkB,IAAU,EAAO,eAAiB,YAAoB,GAAO,eACzF,cAAe,CAAC,CAAC,EAAO,cAAgB,kBAAoB,GAAO,WAAa,EAAO,UAAU,gBAAkB,EACnH,SAAU,UAAyB,CACjC,MAAO,oBAAsB,IAAU,0BAA4B,MAErE,gBAAiB,UAAgC,CAC/C,GAAI,GAAkB,GAEtB,GAAI,CACF,GAAI,GAAO,OAAO,eAAe,GAAI,UAAW,CAE9C,IAAK,UAAe,CAClB,EAAkB,MAGtB,EAAO,iBAAiB,sBAAuB,KAAM,QACrD,EAGF,MAAO,MAET,SAAU,UAAyB,CACjC,MAAO,kBAAoB,OAKjC,aAAsB,CACpB,MAAK,KACH,IAAU,MAGL,GCrCT,GAAI,IAEJ,YAAoB,EAAO,CACzB,GAAI,GAAO,IAAU,OAAS,GAAK,EAC/B,EAAY,EAAK,UAEjB,EAAU,KACV,EAAS,KACT,EAAW,EAAO,UAAU,SAC5B,EAAK,GAAa,EAAO,UAAU,UACnC,EAAS,CACX,IAAK,GACL,QAAS,IAEP,EAAc,EAAO,OAAO,MAC5B,EAAe,EAAO,OAAO,OAC7B,EAAU,EAAG,MAAM,+BAEnB,EAAO,EAAG,MAAM,wBAChB,EAAO,EAAG,MAAM,2BAChB,EAAS,CAAC,GAAQ,EAAG,MAAM,8BAC3B,EAAU,IAAa,QACvB,EAAQ,IAAa,WAErB,EAAc,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAEzJ,MAAI,CAAC,GAAQ,GAAS,EAAQ,OAAS,EAAY,QAAQ,EAAc,IAAM,IAAiB,GAC9F,GAAO,EAAG,MAAM,uBACX,GAAM,GAAO,CAAC,EAAG,EAAG,WACzB,EAAQ,IAIN,GAAW,CAAC,GACd,GAAO,GAAK,UACZ,EAAO,QAAU,IAGf,IAAQ,GAAU,IACpB,GAAO,GAAK,MACZ,EAAO,IAAM,IAIR,EAGT,YAAmB,EAAW,CAC5B,MAAI,KAAc,QAChB,GAAY,IAGT,IACH,IAAS,GAAW,IAGf,GCzDT,GAAI,IAEJ,aAAuB,CACrB,GAAI,GAAS,KAEb,YAAoB,CAClB,GAAI,GAAK,EAAO,UAAU,UAAU,cACpC,MAAO,GAAG,QAAQ,WAAa,GAAK,EAAG,QAAQ,UAAY,GAAK,EAAG,QAAQ,WAAa,EAG1F,MAAO,CACL,OAAQ,CAAC,CAAC,EAAO,UAAU,UAAU,MAAM,SAC3C,SAAU,IACV,UAAW,+CAA+C,KAAK,EAAO,UAAU,YAIpF,aAAsB,CACpB,MAAK,KACH,IAAU,MAGL,GCpBT,GAAI,IAAyB,UAAkC,CAC7D,GAAI,GAAS,KACb,MAAO,OAAO,GAAO,gBAAmB,aAG1C,GAAe,CACb,KAAM,SACN,OAAQ,UAAkB,CACxB,GAAI,GAAS,KACb,GAAO,EAAQ,CACb,OAAQ,CACN,SAAU,KACV,eAAgB,UAA0B,CACpC,CAAC,GAAU,EAAO,WAAa,CAAC,EAAO,aAC3C,GAAO,OAAO,SAAW,GAAI,gBAAe,SAAU,EAAS,CAC7D,GAAI,GAAQ,EAAO,MACf,EAAS,EAAO,OAChB,EAAW,EACX,EAAY,EAChB,EAAQ,QAAQ,SAAU,EAAM,CAC9B,GAAI,GAAiB,EAAK,eACtB,EAAc,EAAK,YACnB,EAAS,EAAK,OACd,GAAU,IAAW,EAAO,IAChC,GAAW,EAAc,EAAY,MAAS,GAAe,IAAM,GAAgB,WACnF,EAAY,EAAc,EAAY,OAAU,GAAe,IAAM,GAAgB,aAGnF,KAAa,GAAS,IAAc,IACtC,EAAO,OAAO,kBAGlB,EAAO,OAAO,SAAS,QAAQ,EAAO,MAExC,eAAgB,UAA0B,CACpC,EAAO,OAAO,UAAY,EAAO,OAAO,SAAS,WAAa,EAAO,IACvE,GAAO,OAAO,SAAS,UAAU,EAAO,IACxC,EAAO,OAAO,SAAW,OAG7B,cAAe,UAAyB,CAClC,CAAC,GAAU,EAAO,WAAa,CAAC,EAAO,aAC3C,GAAO,KAAK,gBACZ,EAAO,KAAK,YAEd,yBAA0B,UAAoC,CACxD,CAAC,GAAU,EAAO,WAAa,CAAC,EAAO,aAC3C,EAAO,KAAK,0BAKpB,GAAI,CACF,KAAM,SAAc,EAAQ,CAC1B,GAAI,GAAS,KAEb,GAAI,EAAO,OAAO,gBAAkB,KAA0B,CAC5D,EAAO,OAAO,iBACd,OAIF,EAAO,iBAAiB,SAAU,EAAO,OAAO,eAEhD,EAAO,iBAAiB,oBAAqB,EAAO,OAAO,2BAE7D,QAAS,SAAiB,EAAQ,CAChC,GAAI,GAAS,KACb,EAAO,OAAO,iBACd,EAAO,oBAAoB,SAAU,EAAO,OAAO,eACnD,EAAO,oBAAoB,oBAAqB,EAAO,OAAO,6BCzEpE,aAAoB,CAAE,UAAW,OAAO,QAAU,SAAU,EAAQ,CAAE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,GAAI,GAAS,UAAU,GAAI,OAAS,KAAO,GAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,IAAQ,GAAO,GAAO,EAAO,IAAY,MAAO,IAAkB,GAAS,MAAM,KAAM,WAIhT,GAAI,IAAW,CACb,OAAQ,SAAgB,EAAQ,EAAS,CACnC,IAAY,QACd,GAAU,IAGZ,GAAI,GAAS,KACT,EAAS,KACT,EAAe,EAAO,kBAAoB,EAAO,uBACjD,EAAW,GAAI,GAAa,SAAU,EAAW,CAInD,GAAI,EAAU,SAAW,EAAG,CAC1B,EAAO,KAAK,iBAAkB,EAAU,IACxC,OAGF,GAAI,GAAiB,UAA0B,CAC7C,EAAO,KAAK,iBAAkB,EAAU,KAGtC,EAAO,sBACT,EAAO,sBAAsB,GAE7B,EAAO,WAAW,EAAgB,KAGtC,EAAS,QAAQ,EAAQ,CACvB,WAAY,MAAO,GAAQ,YAAe,YAAc,GAAO,EAAQ,WACvE,UAAW,MAAO,GAAQ,WAAc,YAAc,GAAO,EAAQ,UACrE,cAAe,MAAO,GAAQ,eAAkB,YAAc,GAAO,EAAQ,gBAE/E,EAAO,SAAS,UAAU,KAAK,IAEjC,KAAM,UAAgB,CACpB,GAAI,GAAS,KACb,GAAI,GAAC,EAAO,QAAQ,UAAY,CAAC,EAAO,OAAO,UAE/C,IAAI,EAAO,OAAO,eAGhB,OAFI,GAAmB,EAAO,IAAI,UAEzB,EAAI,EAAG,EAAI,EAAiB,OAAQ,GAAK,EAChD,EAAO,SAAS,OAAO,EAAiB,IAK5C,EAAO,SAAS,OAAO,EAAO,IAAI,GAAI,CACpC,UAAW,EAAO,OAAO,uBAG3B,EAAO,SAAS,OAAO,EAAO,WAAW,GAAI,CAC3C,WAAY,OAGhB,QAAS,UAAmB,CAC1B,GAAI,GAAS,KACb,EAAO,SAAS,UAAU,QAAQ,SAAU,EAAU,CACpD,EAAS,eAEX,EAAO,SAAS,UAAY,KAGhC,GAAe,CACb,KAAM,WACN,OAAQ,CACN,SAAU,GACV,eAAgB,GAChB,qBAAsB,IAExB,OAAQ,UAAkB,CACxB,GAAI,GAAS,KACb,GAAkB,EAAQ,CACxB,SAAU,GAAS,GAAI,GAAU,CAC/B,UAAW,QAIjB,GAAI,CACF,KAAM,SAAc,EAAQ,CAC1B,EAAO,SAAS,QAElB,QAAS,SAAiB,EAAQ,CAChC,EAAO,SAAS,aCvFtB,EAAe,CACb,UAAW,SAAmB,EAAgB,CAC5C,GAAI,GAAW,KACX,CAAC,EAAS,SACd,OAAO,KAAK,EAAS,SAAS,QAAQ,SAAU,EAAY,CAC1D,GAAI,GAAS,EAAS,QAAQ,GAE1B,EAAO,QACT,GAAO,EAAgB,EAAO,WAIpC,WAAY,SAAoB,EAAe,CACzC,IAAkB,QACpB,GAAgB,IAGlB,GAAI,GAAW,KACX,CAAC,EAAS,SACd,OAAO,KAAK,EAAS,SAAS,QAAQ,SAAU,EAAY,CAC1D,GAAI,GAAS,EAAS,QAAQ,GAC1B,EAAe,EAAc,IAAe,GAE5C,EAAO,IAAM,EAAS,IACxB,OAAO,KAAK,EAAO,IAAI,QAAQ,SAAU,EAAiB,CACxD,EAAS,GAAG,EAAiB,EAAO,GAAG,MAKvC,EAAO,QACT,EAAO,OAAO,KAAK,GAAU,OC/BrC,GAAe,CACb,GAAI,SAAY,EAAQ,EAAS,EAAU,CACzC,GAAI,GAAO,KACX,GAAI,MAAO,IAAY,WAAY,MAAO,GAC1C,GAAI,GAAS,EAAW,UAAY,OACpC,SAAO,MAAM,KAAK,QAAQ,SAAU,EAAO,CACpC,EAAK,gBAAgB,IAAQ,GAAK,gBAAgB,GAAS,IAChE,EAAK,gBAAgB,GAAO,GAAQ,KAE/B,GAET,KAAM,SAAc,EAAQ,EAAS,EAAU,CAC7C,GAAI,GAAO,KACX,GAAI,MAAO,IAAY,WAAY,MAAO,GAE1C,YAAuB,CACrB,EAAK,IAAI,EAAQ,GAEb,EAAY,gBACd,MAAO,GAAY,eAGrB,OAAS,GAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAGzB,EAAQ,MAAM,EAAM,GAGtB,SAAY,eAAiB,EACtB,EAAK,GAAG,EAAQ,EAAa,IAEtC,MAAO,SAAe,EAAS,EAAU,CACvC,GAAI,GAAO,KACX,GAAI,MAAO,IAAY,WAAY,MAAO,GAC1C,GAAI,GAAS,EAAW,UAAY,OAEpC,MAAI,GAAK,mBAAmB,QAAQ,GAAW,GAC7C,EAAK,mBAAmB,GAAQ,GAG3B,GAET,OAAQ,SAAgB,EAAS,CAC/B,GAAI,GAAO,KACX,GAAI,CAAC,EAAK,mBAAoB,MAAO,GACrC,GAAI,GAAQ,EAAK,mBAAmB,QAAQ,GAE5C,MAAI,IAAS,GACX,EAAK,mBAAmB,OAAO,EAAO,GAGjC,GAET,IAAK,SAAa,EAAQ,EAAS,CACjC,GAAI,GAAO,KACX,MAAK,GAAK,iBACV,EAAO,MAAM,KAAK,QAAQ,SAAU,EAAO,CACrC,MAAO,IAAY,YACrB,EAAK,gBAAgB,GAAS,GACrB,EAAK,gBAAgB,IAC9B,EAAK,gBAAgB,GAAO,QAAQ,SAAU,EAAc,EAAO,CAC7D,KAAiB,GAAW,EAAa,gBAAkB,EAAa,iBAAmB,IAC7F,EAAK,gBAAgB,GAAO,OAAO,EAAO,OAK3C,GAET,KAAM,UAAgB,CACpB,GAAI,GAAO,KACX,GAAI,CAAC,EAAK,gBAAiB,MAAO,GAKlC,OAJI,GACA,EACA,EAEK,EAAQ,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACpF,EAAK,GAAS,UAAU,GAGtB,MAAO,GAAK,IAAO,UAAY,MAAM,QAAQ,EAAK,IACpD,GAAS,EAAK,GACd,EAAO,EAAK,MAAM,EAAG,EAAK,QAC1B,EAAU,GAEV,GAAS,EAAK,GAAG,OACjB,EAAO,EAAK,GAAG,KACf,EAAU,EAAK,GAAG,SAAW,GAG/B,EAAK,QAAQ,GACb,GAAI,GAAc,MAAM,QAAQ,GAAU,EAAS,EAAO,MAAM,KAChE,SAAY,QAAQ,SAAU,EAAO,CAC/B,EAAK,oBAAsB,EAAK,mBAAmB,QACrD,EAAK,mBAAmB,QAAQ,SAAU,EAAc,CACtD,EAAa,MAAM,EAAS,CAAC,GAAO,OAAO,MAI3C,EAAK,iBAAmB,EAAK,gBAAgB,IAC/C,EAAK,gBAAgB,GAAO,QAAQ,SAAU,EAAc,CAC1D,EAAa,MAAM,EAAS,OAI3B,IC1GI,aAAsB,CACnC,GAAI,GAAS,KACT,EACA,EACA,EAAM,EAAO,IAcjB,MAZW,GAAO,OAAO,OAAU,aAAe,EAAO,OAAO,QAAU,KACxE,EAAQ,EAAO,OAAO,MAEtB,EAAQ,EAAI,GAAG,YAGb,MAAO,GAAO,OAAO,QAAW,aAAe,EAAO,OAAO,SAAW,KAC1E,EAAS,EAAO,OAAO,OAEvB,EAAS,EAAI,GAAG,aAGd,MAAU,GAAK,EAAO,gBAAkB,IAAW,GAAK,EAAO,eAKnE,GAAQ,EAAQ,SAAS,EAAI,IAAI,iBAAmB,EAAG,IAAM,SAAS,EAAI,IAAI,kBAAoB,EAAG,IACrG,EAAS,EAAS,SAAS,EAAI,IAAI,gBAAkB,EAAG,IAAM,SAAS,EAAI,IAAI,mBAAqB,EAAG,IACnG,OAAO,MAAM,IAAQ,GAAQ,GAC7B,OAAO,MAAM,IAAS,GAAS,GACnC,GAAO,EAAQ,CACb,MAAO,EACP,OAAQ,EACR,KAAM,EAAO,eAAiB,EAAQ,KC9B3B,aAAwB,CACrC,GAAI,GAAS,KAEb,WAA2B,GAAU,CACnC,MAAI,GAAO,eACF,GAIF,CACL,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB,YAAe,gBACf,IAGJ,WAAmC,GAAM,GAAO,CAC9C,MAAO,YAAW,GAAK,iBAAiB,EAAkB,MAAW,GAGvE,GAAI,GAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAa,EAAO,KACpB,EAAM,EAAO,aACb,EAAW,EAAO,SAClB,EAAY,EAAO,SAAW,EAAO,QAAQ,QAC7C,EAAuB,EAAY,EAAO,QAAQ,OAAO,OAAS,EAAO,OAAO,OAChF,EAAS,EAAW,SAAS,IAAM,EAAO,OAAO,YACjD,EAAe,EAAY,EAAO,QAAQ,OAAO,OAAS,EAAO,OACjE,EAAW,GACX,EAAa,GACb,EAAkB,GAClB,EAAe,EAAO,mBAEtB,MAAO,IAAiB,YAC1B,GAAe,EAAO,mBAAmB,KAAK,IAGhD,GAAI,GAAc,EAAO,kBAErB,MAAO,IAAgB,YACzB,GAAc,EAAO,kBAAkB,KAAK,IAG9C,GAAI,GAAyB,EAAO,SAAS,OACzC,GAA2B,EAAO,WAAW,OAC7C,GAAe,EAAO,aACtB,EAAgB,CAAC,EACjB,GAAgB,EAChB,GAAQ,EAEZ,GAAI,MAAO,IAAe,YAI1B,CAAI,MAAO,KAAiB,UAAY,GAAa,QAAQ,MAAQ,GACnE,IAAe,WAAW,GAAa,QAAQ,IAAK,KAAO,IAAM,GAGnE,EAAO,YAAc,CAAC,GAElB,EAAK,EAAO,IAAI,CAClB,WAAY,GACZ,aAAc,GACd,UAAW,KACL,EAAO,IAAI,CACjB,YAAa,GACb,aAAc,GACd,UAAW,KAEb,GAAI,IAEA,EAAO,gBAAkB,GAC3B,CAAI,KAAK,MAAM,EAAe,EAAO,mBAAqB,EAAe,EAAO,OAAO,gBACrF,GAAyB,EAEzB,GAAyB,KAAK,KAAK,EAAe,EAAO,iBAAmB,EAAO,gBAGjF,EAAO,gBAAkB,QAAU,EAAO,sBAAwB,OACpE,IAAyB,KAAK,IAAI,GAAwB,EAAO,cAAgB,EAAO,mBAU5F,OALI,IACA,GAAkB,EAAO,gBACzB,GAAe,GAAyB,GACxC,GAAiB,KAAK,MAAM,EAAe,EAAO,iBAE7C,GAAI,EAAG,GAAI,EAAc,IAAK,EAAG,CACxC,GAAY,EACZ,GAAI,IAAQ,EAAO,GAAG,IAEtB,GAAI,EAAO,gBAAkB,EAAG,CAE9B,GAAI,IAAqB,OACrB,GAAS,OACT,GAAM,OAEV,GAAI,EAAO,sBAAwB,OAAS,EAAO,eAAiB,EAAG,CACrE,GAAI,IAAa,KAAK,MAAM,GAAK,GAAO,eAAiB,EAAO,kBAC5D,GAAoB,GAAI,EAAO,gBAAkB,EAAO,eAAiB,GACzE,GAAiB,KAAe,EAAI,EAAO,eAAiB,KAAK,IAAI,KAAK,KAAM,GAAe,GAAa,GAAkB,EAAO,gBAAkB,IAAkB,EAAO,gBACpL,GAAM,KAAK,MAAM,GAAoB,IACrC,GAAS,GAAoB,GAAM,GAAiB,GAAa,EAAO,eACxE,GAAqB,GAAS,GAAM,GAAyB,GAC7D,GAAM,IAAI,CACR,4BAA6B,GAC7B,yBAA0B,GAC1B,iBAAkB,GAClB,gBAAiB,GACjB,MAAO,SAEA,GAAO,sBAAwB,SACxC,IAAS,KAAK,MAAM,GAAI,IACxB,GAAM,GAAI,GAAS,GAEf,IAAS,IAAkB,KAAW,IAAkB,KAAQ,GAAkB,IACpF,KAAO,EAEH,IAAO,IACT,IAAM,EACN,IAAU,KAId,IAAM,KAAK,MAAM,GAAI,IACrB,GAAS,GAAI,GAAM,IAGrB,GAAM,IAAI,EAAkB,cAAe,KAAQ,EAAI,EAAO,cAAgB,EAAO,aAAe,KAAO,IAG7G,GAAI,GAAM,IAAI,aAAe,OAE7B,IAAI,EAAO,gBAAkB,OAAQ,CACnC,GAAI,IAAc,iBAAiB,GAAM,IACrC,GAAmB,GAAM,GAAG,MAAM,UAClC,GAAyB,GAAM,GAAG,MAAM,gBAU5C,GARI,IACF,IAAM,GAAG,MAAM,UAAY,QAGzB,IACF,IAAM,GAAG,MAAM,gBAAkB,QAG/B,EAAO,aACT,GAAY,EAAO,eAAiB,GAAM,WAAW,IAAQ,GAAM,YAAY,QAC1E,CAEL,GAAI,IAAQ,EAA0B,GAAa,SAC/C,GAAc,EAA0B,GAAa,gBACrD,GAAe,EAA0B,GAAa,iBACtD,GAAa,EAA0B,GAAa,eACpD,GAAc,EAA0B,GAAa,gBACrD,GAAY,GAAY,iBAAiB,cAE7C,GAAI,IAAa,KAAc,aAC7B,GAAY,GAAQ,GAAa,OAC5B,CACL,GAAI,IAAU,GAAM,GAChB,GAAc,GAAQ,YACtB,GAAc,GAAQ,YAC1B,GAAY,GAAQ,GAAc,GAAe,GAAa,GAAe,IAAc,KAI3F,IACF,IAAM,GAAG,MAAM,UAAY,IAGzB,IACF,IAAM,GAAG,MAAM,gBAAkB,IAG/B,EAAO,cAAc,IAAY,KAAK,MAAM,SAEhD,IAAa,GAAc,GAAO,cAAgB,GAAK,IAAgB,EAAO,cAC1E,EAAO,cAAc,IAAY,KAAK,MAAM,KAE5C,EAAO,KACT,GAAO,IAAG,MAAM,EAAkB,UAAY,GAAY,MAI1D,EAAO,KACT,GAAO,IAAG,gBAAkB,IAG9B,EAAgB,KAAK,IAEjB,EAAO,eACT,GAAgB,EAAgB,GAAY,EAAI,GAAgB,EAAI,GAChE,KAAkB,GAAK,KAAM,GAAG,GAAgB,EAAgB,EAAa,EAAI,IACjF,KAAM,GAAG,GAAgB,EAAgB,EAAa,EAAI,IAC1D,KAAK,IAAI,GAAiB,EAAI,KAAM,GAAgB,GACpD,EAAO,cAAc,GAAgB,KAAK,MAAM,IAChD,GAAQ,EAAO,iBAAmB,GAAG,EAAS,KAAK,GACvD,EAAW,KAAK,IAEZ,GAAO,cAAc,GAAgB,KAAK,MAAM,IAC/C,IAAQ,KAAK,IAAI,EAAO,OAAO,mBAAoB,KAAU,EAAO,OAAO,iBAAmB,GAAG,EAAS,KAAK,GACpH,EAAW,KAAK,GAChB,EAAgB,EAAgB,GAAY,IAG9C,EAAO,aAAe,GAAY,GAClC,GAAgB,GAChB,IAAS,GAGX,EAAO,YAAc,KAAK,IAAI,EAAO,YAAa,GAAc,EAChE,GAAI,IAQJ,GANI,GAAO,GAAa,GAAO,SAAW,SAAW,EAAO,SAAW,cACrE,EAAW,IAAI,CACb,MAAO,EAAO,YAAc,EAAO,aAAe,OAIlD,EAAO,eAAgB,CACzB,GAAI,IAEJ,EAAW,IAAK,IAAkB,GAAI,GAAgB,EAAkB,UAAY,EAAO,YAAc,EAAO,aAAe,KAAM,KAGvI,GAAI,EAAO,gBAAkB,EAAG,CAC9B,GAAI,IAMJ,GAJA,EAAO,YAAe,IAAY,EAAO,cAAgB,GACzD,EAAO,YAAc,KAAK,KAAK,EAAO,YAAc,EAAO,iBAAmB,EAAO,aACrF,EAAW,IAAK,IAAmB,GAAI,GAAiB,EAAkB,UAAY,EAAO,YAAc,EAAO,aAAe,KAAM,KAEnI,EAAO,eAAgB,CACzB,GAAgB,GAEhB,OAAS,IAAK,EAAG,GAAK,EAAS,OAAQ,IAAM,EAAG,CAC9C,GAAI,IAAiB,EAAS,IAC1B,EAAO,cAAc,IAAiB,KAAK,MAAM,KACjD,EAAS,IAAM,EAAO,YAAc,EAAS,IAAI,GAAc,KAAK,IAG1E,EAAW,IAKf,GAAI,CAAC,EAAO,eAAgB,CAC1B,GAAgB,GAEhB,OAAS,IAAM,EAAG,GAAM,EAAS,OAAQ,IAAO,EAAG,CACjD,GAAI,IAAkB,EAAS,IAC3B,EAAO,cAAc,IAAkB,KAAK,MAAM,KAElD,EAAS,KAAQ,EAAO,YAAc,GACxC,GAAc,KAAK,IAIvB,EAAW,GAEP,KAAK,MAAM,EAAO,YAAc,GAAc,KAAK,MAAM,EAAS,EAAS,OAAS,IAAM,GAC5F,EAAS,KAAK,EAAO,YAAc,GAMvC,GAFI,EAAS,SAAW,GAAG,GAAW,CAAC,IAEnC,EAAO,eAAiB,EAAG,CAC7B,GAAI,IAEA,GAAM,EAAO,gBAAkB,EAAM,aAAe,EAAkB,eAC1E,EAAO,OAAO,SAAU,GAAG,GAAY,CACrC,MAAK,GAAO,QAER,KAAe,EAAO,OAAS,EAFP,KAO3B,IAAK,IAAqB,GAAI,GAAmB,IAAO,GAAe,KAAM,KAGlF,GAAI,EAAO,gBAAkB,EAAO,qBAAsB,CACxD,GAAI,IAAgB,EACpB,EAAgB,QAAQ,SAAU,GAAgB,CAChD,IAAiB,GAAkB,GAAO,aAAe,EAAO,aAAe,KAEjF,IAAiB,EAAO,aACxB,GAAI,IAAU,GAAgB,EAC9B,EAAW,EAAS,IAAI,SAAU,GAAM,CACtC,MAAI,IAAO,EAAU,CAAC,EAClB,GAAO,GAAgB,GAAU,EAC9B,KAIX,GAAI,EAAO,yBAA0B,CACnC,GAAI,IAAiB,EAMrB,GALA,EAAgB,QAAQ,SAAU,GAAgB,CAChD,IAAkB,GAAkB,GAAO,aAAe,EAAO,aAAe,KAElF,IAAkB,EAAO,aAErB,GAAiB,EAAY,CAC/B,GAAI,IAAmB,GAAa,IAAkB,EACtD,EAAS,QAAQ,SAAU,GAAM,GAAW,CAC1C,EAAS,IAAa,GAAO,KAE/B,EAAW,QAAQ,SAAU,GAAM,GAAW,CAC5C,EAAW,IAAa,GAAO,MAKrC,GAAO,EAAQ,CACb,OAAQ,EACR,SAAU,EACV,WAAY,EACZ,gBAAiB,IAGf,IAAiB,GACnB,EAAO,KAAK,sBAGV,EAAS,SAAW,GAClB,GAAO,OAAO,eAAe,EAAO,gBACxC,EAAO,KAAK,yBAGV,EAAW,SAAW,IACxB,EAAO,KAAK,0BAGV,GAAO,qBAAuB,EAAO,wBACvC,EAAO,sBCzVI,YAA0B,EAAO,CAC9C,GAAI,GAAS,KACT,EAAe,GACf,EAAY,EAAO,SAAW,EAAO,OAAO,QAAQ,QACpD,EAAY,EACZ,EAEA,MAAO,IAAU,SACnB,EAAO,cAAc,GACZ,IAAU,IACnB,EAAO,cAAc,EAAO,OAAO,OAGrC,GAAI,GAAkB,SAAyB,EAAO,CACpD,MAAI,GACK,EAAO,OAAO,OAAO,SAAU,EAAI,CACxC,MAAO,UAAS,EAAG,aAAa,2BAA4B,MAAQ,IACnE,GAGE,EAAO,OAAO,GAAG,GAAO,IAIjC,GAAI,EAAO,OAAO,gBAAkB,QAAU,EAAO,OAAO,cAAgB,EAC1E,GAAI,EAAO,OAAO,eAChB,EAAO,cAAc,KAAK,SAAU,EAAO,CACzC,EAAa,KAAK,SAGpB,KAAK,EAAI,EAAG,EAAI,KAAK,KAAK,EAAO,OAAO,eAAgB,GAAK,EAAG,CAC9D,GAAI,GAAQ,EAAO,YAAc,EACjC,GAAI,EAAQ,EAAO,OAAO,QAAU,CAAC,EAAW,MAChD,EAAa,KAAK,EAAgB,QAItC,GAAa,KAAK,EAAgB,EAAO,cAI3C,IAAK,EAAI,EAAG,EAAI,EAAa,OAAQ,GAAK,EACxC,GAAI,MAAO,GAAa,IAAO,YAAa,CAC1C,GAAI,GAAS,EAAa,GAAG,aAC7B,EAAY,EAAS,EAAY,EAAS,EAK1C,GAAW,EAAO,WAAW,IAAI,SAAU,EAAY,MCjD9C,aAA8B,CAI3C,OAHI,GAAS,KACT,EAAS,EAAO,OAEX,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAO,GAAG,kBAAoB,EAAO,eAAiB,EAAO,GAAG,WAAa,EAAO,GAAG,UCJ5E,YAA8B,EAAW,CAClD,IAAc,QAChB,GAAY,MAAQ,KAAK,WAAa,GAGxC,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAS,EAAO,OAChB,EAAM,EAAO,aACjB,GAAI,EAAO,SAAW,EACtB,CAAI,MAAO,GAAO,GAAG,mBAAsB,aAAa,EAAO,qBAC/D,GAAI,GAAe,CAAC,EAChB,GAAK,GAAe,GAExB,EAAO,YAAY,EAAO,mBAC1B,EAAO,qBAAuB,GAC9B,EAAO,cAAgB,GAEvB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACzC,GAAI,GAAQ,EAAO,GACf,EAAiB,GAAgB,GAAO,eAAiB,EAAO,eAAiB,GAAK,EAAM,mBAAsB,GAAM,gBAAkB,EAAO,cAErJ,GAAI,EAAO,uBAAyB,EAAO,gBAAkB,EAAO,WAAY,CAC9E,GAAI,GAAc,CAAE,GAAe,EAAM,mBACrC,EAAa,EAAc,EAAO,gBAAgB,GAClD,EAAY,GAAe,GAAK,EAAc,EAAO,KAAO,GAAK,EAAa,GAAK,GAAc,EAAO,MAAQ,GAAe,GAAK,GAAc,EAAO,KAEzJ,GACF,GAAO,cAAc,KAAK,GAC1B,EAAO,qBAAqB,KAAK,GACjC,EAAO,GAAG,GAAG,SAAS,EAAO,oBAIjC,EAAM,SAAW,EAAM,CAAC,EAAgB,EAG1C,EAAO,cAAgB,GAAE,EAAO,gBCrCnB,YAAwB,EAAW,CAChD,GAAI,GAAS,KAEb,GAAI,MAAO,IAAc,YAAa,CACpC,GAAI,GAAa,EAAO,aAAe,GAAK,EAE5C,EAAY,GAAU,EAAO,WAAa,EAAO,UAAY,GAAc,EAG7E,GAAI,GAAS,EAAO,OAChB,EAAiB,EAAO,eAAiB,EAAO,eAChD,EAAW,EAAO,SAClB,EAAc,EAAO,YACrB,EAAQ,EAAO,MACf,EAAe,EACf,EAAS,EAET,IAAmB,EACrB,GAAW,EACX,EAAc,GACd,EAAQ,IAER,GAAY,GAAY,EAAO,gBAAkB,EACjD,EAAc,GAAY,EAC1B,EAAQ,GAAY,GAGtB,GAAO,EAAQ,CACb,SAAU,EACV,YAAa,EACb,MAAO,IAEL,GAAO,qBAAuB,EAAO,uBAAyB,EAAO,gBAAkB,EAAO,aAAY,EAAO,qBAAqB,GAEtI,GAAe,CAAC,GAClB,EAAO,KAAK,yBAGV,GAAS,CAAC,GACZ,EAAO,KAAK,mBAGV,IAAgB,CAAC,GAAe,GAAU,CAAC,IAC7C,EAAO,KAAK,YAGd,EAAO,KAAK,WAAY,GC/CX,aAA+B,CAC5C,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAc,EAAO,YACrB,EAAY,EAAO,UACnB,EAAY,EAAO,SAAW,EAAO,QAAQ,QACjD,EAAO,YAAY,EAAO,iBAAmB,IAAM,EAAO,eAAiB,IAAM,EAAO,eAAiB,IAAM,EAAO,0BAA4B,IAAM,EAAO,wBAA0B,IAAM,EAAO,yBACtM,GAAI,GAEA,EACF,EAAc,EAAO,WAAW,KAAK,IAAM,EAAO,WAAa,6BAAgC,EAAc,MAE7G,EAAc,EAAO,GAAG,GAI1B,EAAY,SAAS,EAAO,kBAExB,EAAO,MAET,CAAI,EAAY,SAAS,EAAO,qBAC9B,EAAW,SAAS,IAAM,EAAO,WAAa,SAAW,EAAO,oBAAsB,8BAAiC,EAAY,MAAO,SAAS,EAAO,2BAE1J,EAAW,SAAS,IAAM,EAAO,WAAa,IAAM,EAAO,oBAAsB,6BAAgC,EAAY,MAAO,SAAS,EAAO,4BAKxJ,GAAI,GAAY,EAAY,QAAQ,IAAM,EAAO,YAAY,GAAG,GAAG,SAAS,EAAO,gBAE/E,EAAO,MAAQ,EAAU,SAAW,GACtC,GAAY,EAAO,GAAG,GACtB,EAAU,SAAS,EAAO,iBAI5B,GAAI,GAAY,EAAY,QAAQ,IAAM,EAAO,YAAY,GAAG,GAAG,SAAS,EAAO,gBAE/E,EAAO,MAAQ,EAAU,SAAW,GACtC,GAAY,EAAO,GAAG,IACtB,EAAU,SAAS,EAAO,iBAGxB,EAAO,MAET,CAAI,EAAU,SAAS,EAAO,qBAC5B,EAAW,SAAS,IAAM,EAAO,WAAa,SAAW,EAAO,oBAAsB,8BAAiC,EAAU,KAAK,2BAA6B,MAAO,SAAS,EAAO,yBAE1L,EAAW,SAAS,IAAM,EAAO,WAAa,IAAM,EAAO,oBAAsB,6BAAgC,EAAU,KAAK,2BAA6B,MAAO,SAAS,EAAO,yBAGlL,EAAU,SAAS,EAAO,qBAC5B,EAAW,SAAS,IAAM,EAAO,WAAa,SAAW,EAAO,oBAAsB,8BAAiC,EAAU,KAAK,2BAA6B,MAAO,SAAS,EAAO,yBAE1L,EAAW,SAAS,IAAM,EAAO,WAAa,IAAM,EAAO,oBAAsB,6BAAgC,EAAU,KAAK,2BAA6B,MAAO,SAAS,EAAO,0BAIxL,EAAO,oBC3DM,YAA2B,EAAgB,CACxD,GAAI,GAAS,KACT,EAAY,EAAO,aAAe,EAAO,UAAY,CAAC,EAAO,UAC7D,EAAa,EAAO,WACpB,EAAW,EAAO,SAClB,EAAS,EAAO,OAChB,EAAgB,EAAO,YACvB,EAAoB,EAAO,UAC3B,EAAoB,EAAO,UAC3B,EAAc,EACd,EAEJ,GAAI,MAAO,IAAgB,YAAa,CACtC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,GAAK,EACtC,MAAO,GAAW,EAAI,IAAO,YAC3B,GAAa,EAAW,IAAM,EAAY,EAAW,EAAI,GAAM,GAAW,EAAI,GAAK,EAAW,IAAM,EACtG,EAAc,EACL,GAAa,EAAW,IAAM,EAAY,EAAW,EAAI,IAClE,GAAc,EAAI,GAEX,GAAa,EAAW,IACjC,GAAc,GAKd,EAAO,qBACL,GAAc,GAAK,MAAO,IAAgB,cAAa,GAAc,GAI7E,GAAI,EAAS,QAAQ,IAAc,EACjC,EAAY,EAAS,QAAQ,OACxB,CACL,GAAI,GAAO,KAAK,IAAI,EAAO,mBAAoB,GAC/C,EAAY,EAAO,KAAK,MAAO,GAAc,GAAQ,EAAO,gBAK9D,GAFI,GAAa,EAAS,QAAQ,GAAY,EAAS,OAAS,GAE5D,IAAgB,EAAe,CAC7B,IAAc,GAChB,GAAO,UAAY,EACnB,EAAO,KAAK,oBAGd,OAIF,GAAI,GAAY,SAAS,EAAO,OAAO,GAAG,GAAa,KAAK,4BAA8B,EAAa,IACvG,GAAO,EAAQ,CACb,UAAW,EACX,UAAW,EACX,cAAe,EACf,YAAa,IAEf,EAAO,KAAK,qBACZ,EAAO,KAAK,mBAER,IAAsB,GACxB,EAAO,KAAK,mBAGV,GAAO,aAAe,EAAO,OAAO,qBACtC,EAAO,KAAK,eCjED,YAA4B,EAAG,CAC5C,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAQ,GAAE,EAAE,QAAQ,QAAQ,IAAM,EAAO,YAAY,GACrD,EAAa,GACb,EAEJ,GAAI,GACF,OAAS,GAAI,EAAG,EAAI,EAAO,OAAO,OAAQ,GAAK,EAC7C,GAAI,EAAO,OAAO,KAAO,EAAO,CAC9B,EAAa,GACb,EAAa,EACb,OAKN,GAAI,GAAS,EACX,EAAO,aAAe,EAElB,EAAO,SAAW,EAAO,OAAO,QAAQ,QAC1C,EAAO,aAAe,SAAS,GAAE,GAAO,KAAK,2BAA4B,IAEzE,EAAO,aAAe,MAEnB,CACL,EAAO,aAAe,OACtB,EAAO,aAAe,OACtB,OAGE,EAAO,qBAAuB,EAAO,eAAiB,QAAa,EAAO,eAAiB,EAAO,aACpG,EAAO,sBCxBX,OAAe,CACb,WAAY,GACZ,aAAc,GACd,iBAAkB,GAClB,mBAAoB,GACpB,qBAAsB,GACtB,eAAgB,GAChB,oBAAqB,GACrB,kBAAmB,GACnB,mBAAoB,ICjBP,YAA4B,EAAM,CAC3C,IAAS,QACX,GAAO,KAAK,eAAiB,IAAM,KAGrC,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAM,EAAO,aACb,EAAY,EAAO,UACnB,EAAa,EAAO,WAExB,GAAI,EAAO,iBACT,MAAO,GAAM,CAAC,EAAY,EAG5B,GAAI,EAAO,QACT,MAAO,GAGT,GAAI,GAAmB,GAAa,EAAW,GAAI,GACnD,MAAI,IAAK,GAAmB,CAAC,GACtB,GAAoB,ECtBd,YAAsB,EAAW,EAAc,CAC5D,GAAI,GAAS,KACT,EAAM,EAAO,aACb,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAY,EAAO,UACnB,EAAW,EAAO,SAClB,EAAI,EACJ,EAAI,EACJ,EAAI,EAEJ,EAAO,eACT,EAAI,EAAM,CAAC,EAAY,EAEvB,EAAI,EAGF,EAAO,cACT,GAAI,KAAK,MAAM,GACf,EAAI,KAAK,MAAM,IAGb,EAAO,QACT,EAAU,EAAO,eAAiB,aAAe,aAAe,EAAO,eAAiB,CAAC,EAAI,CAAC,EACpF,EAAO,kBACjB,EAAW,UAAU,eAAiB,EAAI,OAAS,EAAI,OAAS,EAAI,OAGtE,EAAO,kBAAoB,EAAO,UAClC,EAAO,UAAY,EAAO,eAAiB,EAAI,EAE/C,GAAI,GACA,EAAiB,EAAO,eAAiB,EAAO,eAEhD,IAAmB,EACrB,EAAc,EAEd,EAAe,GAAY,EAAO,gBAAkB,EAGlD,IAAgB,GAClB,EAAO,eAAe,GAGxB,EAAO,KAAK,eAAgB,EAAO,UAAW,GC5CjC,aAAwB,CACrC,MAAO,CAAC,KAAK,SAAS,GCDT,aAAwB,CACrC,MAAO,CAAC,KAAK,SAAS,KAAK,SAAS,OAAS,GCDhC,YAAqB,EAAW,EAAO,EAAc,EAAiB,EAAU,CACzF,IAAc,QAChB,GAAY,GAGV,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGb,IAAoB,QACtB,GAAkB,IAGpB,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAY,EAAO,UAEvB,GAAI,EAAO,WAAa,EAAO,+BAC7B,MAAO,GAGT,GAAI,GAAe,EAAO,eACtB,EAAe,EAAO,eACtB,EAKJ,GAJI,GAAmB,EAAY,EAAc,EAAe,EAAsB,GAAmB,EAAY,EAAc,EAAe,EAAkB,EAAe,EAEnL,EAAO,eAAe,GAElB,EAAO,QAAS,CAClB,GAAI,GAAM,EAAO,eAEjB,GAAI,IAAU,EACZ,EAAU,EAAM,aAAe,aAAe,CAAC,UAG3C,EAAU,SAAU,CACtB,GAAI,GAEJ,EAAU,SAAU,GAAsB,GAAI,EAAoB,EAAM,OAAS,OAAS,CAAC,EAAc,EAAoB,SAAW,SAAU,QAElJ,GAAU,EAAM,aAAe,aAAe,CAAC,EAInD,MAAO,GAGT,MAAI,KAAU,EACZ,GAAO,cAAc,GACrB,EAAO,aAAa,GAEhB,GACF,GAAO,KAAK,wBAAyB,EAAO,GAC5C,EAAO,KAAK,mBAGd,GAAO,cAAc,GACrB,EAAO,aAAa,GAEhB,GACF,GAAO,KAAK,wBAAyB,EAAO,GAC5C,EAAO,KAAK,oBAGT,EAAO,WACV,GAAO,UAAY,GAEd,EAAO,mCACV,GAAO,kCAAoC,SAAuB,EAAG,CAC/D,CAAC,GAAU,EAAO,WAClB,EAAE,SAAW,MACjB,GAAO,WAAW,GAAG,oBAAoB,gBAAiB,EAAO,mCACjE,EAAO,WAAW,GAAG,oBAAoB,sBAAuB,EAAO,mCACvE,EAAO,kCAAoC,KAC3C,MAAO,GAAO,kCAEV,GACF,EAAO,KAAK,oBAKlB,EAAO,WAAW,GAAG,iBAAiB,gBAAiB,EAAO,mCAC9D,EAAO,WAAW,GAAG,iBAAiB,sBAAuB,EAAO,qCAIjE,GCtFT,OAAe,CACb,aAAc,GACd,aAAc,GACd,aAAc,GACd,aAAc,GACd,YAAa,ICVA,YAAuB,EAAU,EAAc,CAC5D,GAAI,GAAS,KAER,EAAO,OAAO,SACjB,EAAO,WAAW,WAAW,GAG/B,EAAO,KAAK,gBAAiB,EAAU,GCP1B,YAAyB,EAAc,EAAW,CAC3D,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACT,EAAc,EAAO,YACrB,EAAS,EAAO,OAChB,EAAgB,EAAO,cAC3B,GAAI,GAAO,QAEX,CAAI,EAAO,YACT,EAAO,mBAGT,GAAI,GAAM,EAQV,GANK,GACH,CAAI,EAAc,EAAe,EAAM,OAAgB,EAAc,EAAe,EAAM,OAAY,EAAM,SAG9G,EAAO,KAAK,mBAER,GAAgB,IAAgB,EAAe,CACjD,GAAI,IAAQ,QAAS,CACnB,EAAO,KAAK,6BACZ,OAGF,EAAO,KAAK,8BAER,IAAQ,OACV,EAAO,KAAK,4BAEZ,EAAO,KAAK,8BClCH,YAAuB,EAAc,EAAW,CACzD,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACT,EAAc,EAAO,YACrB,EAAgB,EAAO,cACvB,EAAS,EAAO,OAEpB,GADA,EAAO,UAAY,GACf,GAAO,QACX,GAAO,cAAc,GACrB,GAAI,GAAM,EAQV,GANK,GACH,CAAI,EAAc,EAAe,EAAM,OAAgB,EAAc,EAAe,EAAM,OAAY,EAAM,SAG9G,EAAO,KAAK,iBAER,GAAgB,IAAgB,EAAe,CACjD,GAAI,IAAQ,QAAS,CACnB,EAAO,KAAK,2BACZ,OAGF,EAAO,KAAK,4BAER,IAAQ,OACV,EAAO,KAAK,0BAEZ,EAAO,KAAK,4BC5BlB,OAAe,CACb,cAAe,GACf,gBAAiB,GACjB,cAAe,ICNF,YAAiB,EAAO,EAAO,EAAc,EAAU,EAAS,CAa7E,GAZI,IAAU,QACZ,GAAQ,GAGN,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGb,MAAO,IAAU,UAAY,MAAO,IAAU,SAChD,KAAM,IAAI,OAAM,2EAA6E,MAAO,GAAQ,YAG9G,GAAI,MAAO,IAAU,SAAU,CAK7B,GAAI,GAAgB,SAAS,EAAO,IAOhC,EAAgB,SAAS,GAE7B,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,sEAAwE,EAAQ,YAKlG,EAAQ,EAGV,GAAI,GAAS,KACT,EAAa,EACb,EAAa,GAAG,GAAa,GACjC,GAAI,GAAS,EAAO,OAChB,EAAW,EAAO,SAClB,EAAa,EAAO,WACpB,EAAgB,EAAO,cACvB,EAAc,EAAO,YACrB,EAAM,EAAO,aACb,EAAY,EAAO,UACnB,EAAU,EAAO,QAErB,GAAI,EAAO,WAAa,EAAO,gCAAkC,CAAC,GAAW,CAAC,GAAY,CAAC,EACzF,MAAO,GAGT,GAAI,GAAO,KAAK,IAAI,EAAO,OAAO,mBAAoB,GAClD,GAAY,EAAO,KAAK,MAAO,GAAa,GAAQ,EAAO,OAAO,gBAClE,IAAa,EAAS,QAAQ,IAAY,EAAS,OAAS,GAE3D,IAAe,EAAO,cAAgB,KAAQ,IAAiB,IAAM,GACxE,EAAO,KAAK,0BAGd,GAAI,IAAY,CAAC,EAAS,IAI1B,GAFA,EAAO,eAAe,IAElB,EAAO,oBACT,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,GAAK,EAAG,CAC7C,GAAI,IAAsB,CAAC,KAAK,MAAM,GAAY,KAC9C,GAAiB,KAAK,MAAM,EAAW,GAAK,KAC5C,GAAqB,KAAK,MAAM,EAAW,EAAI,GAAK,KAEpD,MAAO,GAAW,EAAI,IAAO,YAC3B,IAAuB,IAAkB,GAAsB,GAAsB,IAAqB,IAAkB,EAC9H,EAAa,EACJ,IAAuB,IAAkB,GAAsB,IACxE,GAAa,EAAI,GAEV,IAAuB,IAChC,GAAa,GAMnB,GAAI,EAAO,aAAe,IAAe,GACnC,EAAC,EAAO,gBAAkB,GAAY,EAAO,WAAa,GAAY,EAAO,gBAI7E,CAAC,EAAO,gBAAkB,GAAY,EAAO,WAAa,GAAY,EAAO,gBAC1E,IAAe,KAAO,GAAY,MAAO,GAIlD,GAAI,IAGJ,GAFI,EAAa,EAAa,GAAY,OAAgB,EAAa,EAAa,GAAY,OAAY,GAAY,QAEpH,GAAO,CAAC,KAAc,EAAO,WAAa,CAAC,GAAO,KAAc,EAAO,UACzE,SAAO,kBAAkB,GAErB,EAAO,YACT,EAAO,mBAGT,EAAO,sBAEH,EAAO,SAAW,SACpB,EAAO,aAAa,IAGlB,KAAc,SAChB,GAAO,gBAAgB,EAAc,IACrC,EAAO,cAAc,EAAc,KAG9B,GAGT,GAAI,EAAO,QAAS,CAClB,GAAI,IAAM,EAAO,eACb,GAAI,CAAC,GAMT,GAJI,GACF,IAAI,EAAU,YAAc,EAAU,YAAc,IAGlD,IAAU,EACZ,EAAU,GAAM,aAAe,aAAe,WAG1C,EAAU,SAAU,CACtB,GAAI,IAEJ,EAAU,SAAU,IAAsB,GAAI,GAAoB,GAAM,OAAS,OAAS,GAAG,GAAoB,SAAW,SAAU,SAEtI,GAAU,GAAM,aAAe,aAAe,GAIlD,MAAO,GAGT,MAAI,KAAU,EACZ,GAAO,cAAc,GACrB,EAAO,aAAa,IACpB,EAAO,kBAAkB,GACzB,EAAO,sBACP,EAAO,KAAK,wBAAyB,EAAO,GAC5C,EAAO,gBAAgB,EAAc,IACrC,EAAO,cAAc,EAAc,KAEnC,GAAO,cAAc,GACrB,EAAO,aAAa,IACpB,EAAO,kBAAkB,GACzB,EAAO,sBACP,EAAO,KAAK,wBAAyB,EAAO,GAC5C,EAAO,gBAAgB,EAAc,IAEhC,EAAO,WACV,GAAO,UAAY,GAEd,EAAO,+BACV,GAAO,8BAAgC,SAAuB,GAAG,CAC3D,CAAC,GAAU,EAAO,WAClB,GAAE,SAAW,MACjB,GAAO,WAAW,GAAG,oBAAoB,gBAAiB,EAAO,+BACjE,EAAO,WAAW,GAAG,oBAAoB,sBAAuB,EAAO,+BACvE,EAAO,8BAAgC,KACvC,MAAO,GAAO,8BACd,EAAO,cAAc,EAAc,OAIvC,EAAO,WAAW,GAAG,iBAAiB,gBAAiB,EAAO,+BAC9D,EAAO,WAAW,GAAG,iBAAiB,sBAAuB,EAAO,iCAIjE,GCrLM,YAAqB,EAAO,EAAO,EAAc,EAAU,CACpE,IAAU,QACZ,GAAQ,GAGN,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACT,EAAW,EAEf,MAAI,GAAO,OAAO,MAChB,IAAY,EAAO,cAGd,EAAO,QAAQ,EAAU,EAAO,EAAc,GCnBxC,YAAmB,EAAO,EAAc,EAAU,CAC3D,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAY,EAAO,UACnB,EAAU,EAAO,QACrB,GAAI,CAAC,EAAS,MAAO,GACrB,GAAI,GAAY,EAAO,YAAc,EAAO,mBAAqB,EAAI,EAAO,eAE5E,GAAI,EAAO,KAAM,CACf,GAAI,GAAa,EAAO,kBAAmB,MAAO,GAClD,EAAO,UAEP,EAAO,YAAc,EAAO,WAAW,GAAG,WAG5C,MAAO,GAAO,QAAQ,EAAO,YAAc,EAAW,EAAO,EAAc,GCvB9D,YAAmB,EAAO,EAAc,EAAU,CAC3D,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAY,EAAO,UACnB,EAAW,EAAO,SAClB,EAAa,EAAO,WACpB,EAAe,EAAO,aACtB,EAAU,EAAO,QACrB,GAAI,CAAC,EAAS,MAAO,GAErB,GAAI,EAAO,KAAM,CACf,GAAI,GAAa,EAAO,kBAAmB,MAAO,GAClD,EAAO,UAEP,EAAO,YAAc,EAAO,WAAW,GAAG,WAG5C,GAAI,GAAY,EAAe,EAAO,UAAY,CAAC,EAAO,UAE1D,WAAmB,EAAK,CACtB,MAAI,GAAM,EAAU,CAAC,KAAK,MAAM,KAAK,IAAI,IAClC,KAAK,MAAM,GAGpB,GAAI,GAAsB,EAAU,GAChC,EAAqB,EAAS,IAAI,SAAU,EAAK,CACnD,MAAO,GAAU,KAEf,EAAW,EAAS,EAAmB,QAAQ,GAAuB,GAEtE,MAAO,IAAa,aAAe,EAAO,SAC5C,EAAS,QAAQ,SAAU,EAAM,CAC3B,CAAC,GAAY,GAAuB,GAAM,GAAW,KAI7D,GAAI,GAEJ,MAAI,OAAO,IAAa,aACtB,GAAY,EAAW,QAAQ,GAC3B,EAAY,GAAG,GAAY,EAAO,YAAc,IAG/C,EAAO,QAAQ,EAAW,EAAO,EAAc,GCnDzC,YAAoB,EAAO,EAAc,EAAU,CAC5D,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAS,KACb,MAAO,GAAO,QAAQ,EAAO,YAAa,EAAO,EAAc,GCVlD,YAAwB,EAAO,EAAc,EAAU,EAAW,CAC3E,IAAU,QACZ,GAAQ,KAAK,OAAO,OAGlB,IAAiB,QACnB,GAAe,IAGb,IAAc,QAChB,GAAY,IAGd,GAAI,GAAS,KACT,EAAQ,EAAO,YACf,EAAO,KAAK,IAAI,EAAO,OAAO,mBAAoB,GAClD,EAAY,EAAO,KAAK,MAAO,GAAQ,GAAQ,EAAO,OAAO,gBAC7D,EAAY,EAAO,aAAe,EAAO,UAAY,CAAC,EAAO,UAEjE,GAAI,GAAa,EAAO,SAAS,GAAY,CAG3C,GAAI,GAAc,EAAO,SAAS,GAC9B,EAAW,EAAO,SAAS,EAAY,GAEvC,EAAY,EAAe,GAAW,GAAe,GACvD,IAAS,EAAO,OAAO,oBAEpB,CAGL,GAAI,GAAW,EAAO,SAAS,EAAY,GACvC,EAAe,EAAO,SAAS,GAE/B,EAAY,GAAa,GAAe,GAAY,GACtD,IAAS,EAAO,OAAO,gBAI3B,SAAQ,KAAK,IAAI,EAAO,GACxB,EAAQ,KAAK,IAAI,EAAO,EAAO,WAAW,OAAS,GAC5C,EAAO,QAAQ,EAAO,EAAO,EAAc,GCxCrC,aAA+B,CAC5C,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAgB,EAAO,gBAAkB,OAAS,EAAO,uBAAyB,EAAO,cACzF,EAAe,EAAO,aACtB,EAEJ,GAAI,EAAO,KAAM,CACf,GAAI,EAAO,UAAW,OACtB,EAAY,SAAS,GAAE,EAAO,cAAc,KAAK,2BAA4B,IAEzE,EAAO,eACL,EAAe,EAAO,aAAe,EAAgB,GAAK,EAAe,EAAO,OAAO,OAAS,EAAO,aAAe,EAAgB,EACxI,GAAO,UACP,EAAe,EAAW,SAAS,IAAM,EAAO,WAAa,6BAAgC,EAAY,WAAc,EAAO,oBAAsB,KAAK,GAAG,GAAG,QAC/J,GAAS,UAAY,CACnB,EAAO,QAAQ,MAGjB,EAAO,QAAQ,GAER,EAAe,EAAO,OAAO,OAAS,EAC/C,GAAO,UACP,EAAe,EAAW,SAAS,IAAM,EAAO,WAAa,6BAAgC,EAAY,WAAc,EAAO,oBAAsB,KAAK,GAAG,GAAG,QAC/J,GAAS,UAAY,CACnB,EAAO,QAAQ,MAGjB,EAAO,QAAQ,OAGjB,GAAO,QAAQ,GC3BnB,OAAe,CACb,QAAS,GACT,YAAa,GACb,UAAW,GACX,UAAW,GACX,WAAY,GACZ,eAAgB,GAChB,oBAAqB,ICZR,aAAsB,CACnC,GAAI,GAAS,KACT,EAAW,KACX,EAAS,EAAO,OAChB,EAAa,EAAO,WAExB,EAAW,SAAS,IAAM,EAAO,WAAa,IAAM,EAAO,qBAAqB,SAChF,GAAI,GAAS,EAAW,SAAS,IAAM,EAAO,YAE9C,GAAI,EAAO,uBAAwB,CACjC,GAAI,GAAiB,EAAO,eAAiB,EAAO,OAAS,EAAO,eAEpE,GAAI,IAAmB,EAAO,eAAgB,CAC5C,OAAS,GAAI,EAAG,EAAI,EAAgB,GAAK,EAAG,CAC1C,GAAI,GAAY,GAAE,EAAS,cAAc,QAAQ,SAAS,EAAO,WAAa,IAAM,EAAO,iBAC3F,EAAW,OAAO,GAGpB,EAAS,EAAW,SAAS,IAAM,EAAO,aAI1C,EAAO,gBAAkB,QAAU,CAAC,EAAO,cAAc,GAAO,aAAe,EAAO,QAC1F,EAAO,aAAe,KAAK,KAAK,WAAW,EAAO,cAAgB,EAAO,cAAe,KACxF,EAAO,cAAgB,EAAO,qBAE1B,EAAO,aAAe,EAAO,QAC/B,GAAO,aAAe,EAAO,QAG/B,GAAI,GAAgB,GAChB,EAAe,GACnB,EAAO,KAAK,SAAU,EAAI,EAAO,CAC/B,GAAI,GAAQ,GAAE,GAEV,EAAQ,EAAO,cACjB,EAAa,KAAK,GAGhB,EAAQ,EAAO,QAAU,GAAS,EAAO,OAAS,EAAO,cAC3D,EAAc,KAAK,GAGrB,EAAM,KAAK,0BAA2B,KAGxC,OAAS,GAAK,EAAG,EAAK,EAAa,OAAQ,GAAM,EAC/C,EAAW,OAAO,GAAE,EAAa,GAAI,UAAU,KAAO,SAAS,EAAO,sBAGxE,OAAS,GAAM,EAAc,OAAS,EAAG,GAAO,EAAG,GAAO,EACxD,EAAW,QAAQ,GAAE,EAAc,GAAK,UAAU,KAAO,SAAS,EAAO,sBCrD9D,aAAmB,CAChC,GAAI,GAAS,KACb,EAAO,KAAK,iBACZ,GAAI,GAAc,EAAO,YACrB,EAAS,EAAO,OAChB,EAAe,EAAO,aACtB,EAAiB,EAAO,eACxB,EAAiB,EAAO,eACxB,EAAW,EAAO,SAClB,EAAM,EAAO,aACb,EACJ,EAAO,eAAiB,GACxB,EAAO,eAAiB,GACxB,GAAI,GAAgB,CAAC,EAAS,GAC1B,EAAO,EAAgB,EAAO,eAElC,GAAI,EAAc,EAAc,CAC9B,EAAW,EAAO,OAAS,EAAe,EAAI,EAC9C,GAAY,EACZ,GAAI,GAAe,EAAO,QAAQ,EAAU,EAAG,GAAO,IAElD,GAAgB,IAAS,GAC3B,EAAO,aAAc,GAAM,CAAC,EAAO,UAAY,EAAO,WAAa,WAE5D,GAAe,EAAO,OAAS,EAAc,CAEtD,EAAW,CAAC,EAAO,OAAS,EAAc,EAC1C,GAAY,EAEZ,GAAI,GAAgB,EAAO,QAAQ,EAAU,EAAG,GAAO,IAEnD,GAAiB,IAAS,GAC5B,EAAO,aAAc,GAAM,CAAC,EAAO,UAAY,EAAO,WAAa,GAIvE,EAAO,eAAiB,EACxB,EAAO,eAAiB,EACxB,EAAO,KAAK,WCtCC,aAAuB,CACpC,GAAI,GAAS,KACT,EAAa,EAAO,WACpB,EAAS,EAAO,OAChB,EAAS,EAAO,OACpB,EAAW,SAAS,IAAM,EAAO,WAAa,IAAM,EAAO,oBAAsB,KAAO,EAAO,WAAa,IAAM,EAAO,iBAAiB,SAC1I,EAAO,WAAW,2BCHpB,OAAe,CACb,WAAY,GACZ,QAAS,GACT,YAAa,ICNA,YAAuB,EAAQ,CAC5C,GAAI,GAAS,KACb,GAAI,IAAO,QAAQ,OAAS,CAAC,EAAO,OAAO,eAAiB,EAAO,OAAO,eAAiB,EAAO,UAAY,EAAO,OAAO,SAC5H,IAAI,GAAK,EAAO,GAChB,EAAG,MAAM,OAAS,OAClB,EAAG,MAAM,OAAS,EAAS,mBAAqB,eAChD,EAAG,MAAM,OAAS,EAAS,eAAiB,YAC5C,EAAG,MAAM,OAAS,EAAS,WAAa,QCP3B,aAA2B,CACxC,GAAI,GAAS,KAET,EAAO,QAAQ,OAAS,EAAO,OAAO,eAAiB,EAAO,UAAY,EAAO,OAAO,SAI5F,GAAO,GAAG,MAAM,OAAS,ICL3B,OAAe,CACb,cAAe,GACf,gBAAiB,ICJJ,YAAqB,EAAQ,CAC1C,GAAI,GAAS,KACT,EAAa,EAAO,WACpB,EAAS,EAAO,OAMpB,GAJI,EAAO,MACT,EAAO,cAGL,MAAO,IAAW,UAAY,UAAY,GAC5C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAClC,EAAO,IAAI,EAAW,OAAO,EAAO,QAG1C,GAAW,OAAO,GAGhB,EAAO,MACT,EAAO,aAGH,EAAO,UAAY,EAAO,QAAQ,UACtC,EAAO,SCtBI,YAAsB,EAAQ,CAC3C,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAc,EAAO,YAErB,EAAO,MACT,EAAO,cAGT,GAAI,GAAiB,EAAc,EAEnC,GAAI,MAAO,IAAW,UAAY,UAAY,GAAQ,CACpD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAClC,EAAO,IAAI,EAAW,QAAQ,EAAO,IAG3C,EAAiB,EAAc,EAAO,WAEtC,GAAW,QAAQ,GAGjB,EAAO,MACT,EAAO,aAGH,EAAO,UAAY,EAAO,QAAQ,UACtC,EAAO,SAGT,EAAO,QAAQ,EAAgB,EAAG,IC9BrB,YAAkB,EAAO,EAAQ,CAC9C,GAAI,GAAS,KACT,EAAa,EAAO,WACpB,EAAS,EAAO,OAChB,EAAc,EAAO,YACrB,EAAoB,EAEpB,EAAO,MACT,IAAqB,EAAO,aAC5B,EAAO,cACP,EAAO,OAAS,EAAW,SAAS,IAAM,EAAO,aAGnD,GAAI,GAAa,EAAO,OAAO,OAE/B,GAAI,GAAS,EAAG,CACd,EAAO,aAAa,GACpB,OAGF,GAAI,GAAS,EAAY,CACvB,EAAO,YAAY,GACnB,OAMF,OAHI,GAAiB,EAAoB,EAAQ,EAAoB,EAAI,EACrE,EAAe,GAEV,EAAI,EAAa,EAAG,GAAK,EAAO,GAAK,EAAG,CAC/C,GAAI,GAAe,EAAO,OAAO,GAAG,GACpC,EAAa,SACb,EAAa,QAAQ,GAGvB,GAAI,MAAO,IAAW,UAAY,UAAY,GAAQ,CACpD,OAAS,GAAK,EAAG,EAAK,EAAO,OAAQ,GAAM,EACrC,EAAO,IAAK,EAAW,OAAO,EAAO,IAG3C,EAAiB,EAAoB,EAAQ,EAAoB,EAAO,OAAS,MAEjF,GAAW,OAAO,GAGpB,OAAS,GAAM,EAAG,EAAM,EAAa,OAAQ,GAAO,EAClD,EAAW,OAAO,EAAa,IAG7B,EAAO,MACT,EAAO,aAGH,EAAO,UAAY,EAAO,QAAQ,UACtC,EAAO,SAGL,EAAO,KACT,EAAO,QAAQ,EAAiB,EAAO,aAAc,EAAG,IAExD,EAAO,QAAQ,EAAgB,EAAG,IC3DvB,YAAqB,EAAe,CACjD,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAc,EAAO,YACrB,EAAoB,EAEpB,EAAO,MACT,IAAqB,EAAO,aAC5B,EAAO,cACP,EAAO,OAAS,EAAW,SAAS,IAAM,EAAO,aAGnD,GAAI,GAAiB,EACjB,EAEJ,GAAI,MAAO,IAAkB,UAAY,UAAY,GAAe,CAClE,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,GAAK,EAC7C,EAAgB,EAAc,GAC1B,EAAO,OAAO,IAAgB,EAAO,OAAO,GAAG,GAAe,SAC9D,EAAgB,GAAgB,IAAkB,GAGxD,EAAiB,KAAK,IAAI,EAAgB,OAE1C,GAAgB,EACZ,EAAO,OAAO,IAAgB,EAAO,OAAO,GAAG,GAAe,SAC9D,EAAgB,GAAgB,IAAkB,GACtD,EAAiB,KAAK,IAAI,EAAgB,GAGxC,EAAO,MACT,EAAO,aAGH,EAAO,UAAY,EAAO,QAAQ,UACtC,EAAO,SAGL,EAAO,KACT,EAAO,QAAQ,EAAiB,EAAO,aAAc,EAAG,IAExD,EAAO,QAAQ,EAAgB,EAAG,IC1CvB,aAA2B,CAIxC,OAHI,GAAS,KACT,EAAgB,GAEX,EAAI,EAAG,EAAI,EAAO,OAAO,OAAQ,GAAK,EAC7C,EAAc,KAAK,GAGrB,EAAO,YAAY,GCHrB,OAAe,CACb,YAAa,GACb,aAAc,GACd,SAAU,GACV,YAAa,GACb,gBAAiB,ICNnB,YAAwB,EAAU,EAAM,CAClC,IAAS,QACX,GAAO,MAGT,WAAuB,EAAI,CACzB,GAAI,CAAC,GAAM,IAAO,MAAiB,IAAO,KAAa,MAAO,MAC1D,EAAG,cAAc,GAAK,EAAG,cAC7B,GAAI,GAAQ,EAAG,QAAQ,GACvB,MAAO,IAAS,EAAc,EAAG,cAAc,MAGjD,MAAO,GAAc,GAGR,YAAsB,EAAO,CAC1C,GAAI,GAAS,KACT,EAAW,KACX,EAAS,KACT,EAAO,EAAO,gBACd,EAAS,EAAO,OAChB,EAAU,EAAO,QACjB,EAAU,EAAO,QACrB,GAAI,EAAC,GAED,IAAO,WAAa,EAAO,gCAI/B,IAAI,GAAI,EACJ,EAAE,eAAe,GAAI,EAAE,eAC3B,GAAI,GAAY,GAAE,EAAE,QAEpB,GAAI,IAAO,oBAAsB,WAC3B,CAAC,EAAU,QAAQ,EAAO,WAAW,SAG3C,GAAK,aAAe,EAAE,OAAS,aAC3B,GAAC,EAAK,cAAgB,SAAW,IAAK,EAAE,QAAU,IAClD,GAAC,EAAK,cAAgB,UAAY,IAAK,EAAE,OAAS,IAClD,IAAK,WAAa,EAAK,UAE3B,IAAI,GAAuB,CAAC,CAAC,EAAO,gBAAkB,EAAO,iBAAmB,GAE5E,GAAwB,EAAE,QAAU,EAAE,OAAO,YAAc,EAAM,MAAQ,EAAM,KAAK,IACtF,GAAY,GAAE,EAAM,KAAK,KAG3B,GAAI,GAAoB,EAAO,kBAAoB,EAAO,kBAAoB,IAAM,EAAO,eACvF,EAAiB,CAAC,CAAE,GAAE,QAAU,EAAE,OAAO,YAE7C,GAAI,EAAO,WAAc,GAAiB,GAAe,EAAmB,EAAE,QAAU,EAAU,QAAQ,GAAmB,IAAK,CAChI,EAAO,WAAa,GACpB,OAGF,GAAI,IAAO,cACL,CAAC,EAAU,QAAQ,EAAO,cAAc,IAG9C,GAAQ,SAAW,EAAE,OAAS,aAAe,EAAE,cAAc,GAAG,MAAQ,EAAE,MAC1E,EAAQ,SAAW,EAAE,OAAS,aAAe,EAAE,cAAc,GAAG,MAAQ,EAAE,MAC1E,GAAI,GAAS,EAAQ,SACjB,EAAS,EAAQ,SAEjB,EAAqB,EAAO,oBAAsB,EAAO,sBACzD,EAAqB,EAAO,oBAAsB,EAAO,sBAE7D,GAAI,GAAuB,IAAU,GAAsB,GAAU,EAAO,WAAa,GACvF,GAAI,IAAuB,UACzB,EAAM,qBAEN,QAmBJ,GAfA,GAAO,EAAM,CACX,UAAW,GACX,QAAS,GACT,oBAAqB,GACrB,YAAa,OACb,YAAa,SAEf,EAAQ,OAAS,EACjB,EAAQ,OAAS,EACjB,EAAK,eAAiB,KACtB,EAAO,WAAa,GACpB,EAAO,aACP,EAAO,eAAiB,OACpB,EAAO,UAAY,GAAG,GAAK,mBAAqB,IAEhD,EAAE,OAAS,aAAc,CAC3B,GAAI,GAAiB,GACjB,EAAU,GAAG,EAAK,oBAAoB,GAAiB,IAEvD,EAAS,eAAiB,GAAE,EAAS,eAAe,GAAG,EAAK,oBAAsB,EAAS,gBAAkB,EAAU,IACzH,EAAS,cAAc,OAGzB,GAAI,IAAuB,GAAkB,EAAO,gBAAkB,EAAO,yBAExE,GAAO,+BAAiC,KAAyB,CAAC,EAAU,GAAG,mBAClF,EAAE,iBAIN,EAAO,KAAK,aAAc,MC3Gb,YAAqB,EAAO,CACzC,GAAI,GAAW,KACX,EAAS,KACT,EAAO,EAAO,gBACd,EAAS,EAAO,OAChB,EAAU,EAAO,QACjB,EAAM,EAAO,aACb,EAAU,EAAO,QACrB,GAAI,EAAC,EACL,IAAI,GAAI,EAGR,GAFI,EAAE,eAAe,GAAI,EAAE,eAEvB,CAAC,EAAK,UAAW,CACf,EAAK,aAAe,EAAK,aAC3B,EAAO,KAAK,oBAAqB,GAGnC,OAGF,GAAI,IAAK,cAAgB,EAAE,OAAS,aACpC,IAAI,GAAc,EAAE,OAAS,aAAe,EAAE,eAAkB,GAAE,cAAc,IAAM,EAAE,eAAe,IACnG,EAAQ,EAAE,OAAS,YAAc,EAAY,MAAQ,EAAE,MACvD,EAAQ,EAAE,OAAS,YAAc,EAAY,MAAQ,EAAE,MAE3D,GAAI,EAAE,wBAAyB,CAC7B,EAAQ,OAAS,EACjB,EAAQ,OAAS,EACjB,OAGF,GAAI,CAAC,EAAO,eAAgB,CAE1B,EAAO,WAAa,GAEhB,EAAK,WACP,IAAO,EAAS,CACd,OAAQ,EACR,OAAQ,EACR,SAAU,EACV,SAAU,IAEZ,EAAK,eAAiB,MAGxB,OAGF,GAAI,EAAK,cAAgB,EAAO,qBAAuB,CAAC,EAAO,MAC7D,GAAI,EAAO,cAET,GAAI,EAAQ,EAAQ,QAAU,EAAO,WAAa,EAAO,gBAAkB,EAAQ,EAAQ,QAAU,EAAO,WAAa,EAAO,eAAgB,CAC9I,EAAK,UAAY,GACjB,EAAK,QAAU,GACf,gBAEO,EAAQ,EAAQ,QAAU,EAAO,WAAa,EAAO,gBAAkB,EAAQ,EAAQ,QAAU,EAAO,WAAa,EAAO,eACrI,OAIJ,GAAI,EAAK,cAAgB,EAAS,eAC5B,EAAE,SAAW,EAAS,eAAiB,GAAE,EAAE,QAAQ,GAAG,EAAK,mBAAoB,CACjF,EAAK,QAAU,GACf,EAAO,WAAa,GACpB,OAQJ,GAJI,EAAK,qBACP,EAAO,KAAK,YAAa,GAGvB,IAAE,eAAiB,EAAE,cAAc,OAAS,GAChD,GAAQ,SAAW,EACnB,EAAQ,SAAW,EACnB,GAAI,GAAQ,EAAQ,SAAW,EAAQ,OACnC,EAAQ,EAAQ,SAAW,EAAQ,OACvC,GAAI,IAAO,OAAO,WAAa,KAAK,KAAK,KAAK,IAAI,EAAO,GAAK,KAAK,IAAI,EAAO,IAAM,EAAO,OAAO,WAElG,IAAI,MAAO,GAAK,aAAgB,YAAa,CAC3C,GAAI,GAEA,EAAO,gBAAkB,EAAQ,WAAa,EAAQ,QAAU,EAAO,cAAgB,EAAQ,WAAa,EAAQ,OACtH,EAAK,YAAc,GAGf,EAAQ,EAAQ,EAAQ,GAAS,IACnC,GAAa,KAAK,MAAM,KAAK,IAAI,GAAQ,KAAK,IAAI,IAAU,IAAM,KAAK,GACvE,EAAK,YAAc,EAAO,eAAiB,EAAa,EAAO,WAAa,GAAK,EAAa,EAAO,YAe3G,GAVI,EAAK,aACP,EAAO,KAAK,oBAAqB,GAG/B,MAAO,GAAK,aAAgB,aAC1B,GAAQ,WAAa,EAAQ,QAAU,EAAQ,WAAa,EAAQ,SACtE,GAAK,YAAc,IAInB,EAAK,YAAa,CACpB,EAAK,UAAY,GACjB,OAGF,GAAI,EAAC,EAAK,YAIV,GAAO,WAAa,GAEhB,CAAC,EAAO,SAAW,EAAE,YACvB,EAAE,iBAGA,EAAO,0BAA4B,CAAC,EAAO,QAC7C,EAAE,kBAGC,EAAK,SACJ,GAAO,MACT,EAAO,UAGT,EAAK,eAAiB,EAAO,eAC7B,EAAO,cAAc,GAEjB,EAAO,WACT,EAAO,WAAW,QAAQ,qCAG5B,EAAK,oBAAsB,GAEvB,EAAO,YAAe,GAAO,iBAAmB,IAAQ,EAAO,iBAAmB,KACpF,EAAO,cAAc,IAGvB,EAAO,KAAK,kBAAmB,IAGjC,EAAO,KAAK,aAAc,GAC1B,EAAK,QAAU,GACf,GAAI,GAAO,EAAO,eAAiB,EAAQ,EAC3C,EAAQ,KAAO,EACf,GAAQ,EAAO,WACX,GAAK,GAAO,CAAC,GACjB,EAAO,eAAiB,EAAO,EAAI,OAAS,OAC5C,EAAK,iBAAmB,EAAO,EAAK,eACpC,GAAI,GAAsB,GACtB,EAAkB,EAAO,gBAgC7B,GA9BI,EAAO,qBACT,GAAkB,GAGhB,EAAO,GAAK,EAAK,iBAAmB,EAAO,eAC7C,GAAsB,GAClB,EAAO,YAAY,GAAK,iBAAmB,EAAO,eAAiB,EAAI,KAAK,IAAI,CAAC,EAAO,eAAiB,EAAK,eAAiB,EAAM,KAChI,EAAO,GAAK,EAAK,iBAAmB,EAAO,gBACpD,GAAsB,GAClB,EAAO,YAAY,GAAK,iBAAmB,EAAO,eAAiB,EAAI,KAAK,IAAI,EAAO,eAAiB,EAAK,eAAiB,EAAM,KAGtI,GACF,GAAE,wBAA0B,IAI1B,CAAC,EAAO,gBAAkB,EAAO,iBAAmB,QAAU,EAAK,iBAAmB,EAAK,gBAC7F,GAAK,iBAAmB,EAAK,gBAG3B,CAAC,EAAO,gBAAkB,EAAO,iBAAmB,QAAU,EAAK,iBAAmB,EAAK,gBAC7F,GAAK,iBAAmB,EAAK,gBAG3B,CAAC,EAAO,gBAAkB,CAAC,EAAO,gBACpC,GAAK,iBAAmB,EAAK,gBAI3B,EAAO,UAAY,EACrB,GAAI,KAAK,IAAI,GAAQ,EAAO,WAAa,EAAK,oBAC5C,GAAI,CAAC,EAAK,mBAAoB,CAC5B,EAAK,mBAAqB,GAC1B,EAAQ,OAAS,EAAQ,SACzB,EAAQ,OAAS,EAAQ,SACzB,EAAK,iBAAmB,EAAK,eAC7B,EAAQ,KAAO,EAAO,eAAiB,EAAQ,SAAW,EAAQ,OAAS,EAAQ,SAAW,EAAQ,OACtG,YAEG,CACL,EAAK,iBAAmB,EAAK,eAC7B,OAIA,CAAC,EAAO,cAAgB,EAAO,SAE/B,IAAO,UAAY,EAAO,qBAAuB,EAAO,wBAC1D,GAAO,oBACP,EAAO,uBAGL,EAAO,UAEL,GAAK,WAAW,SAAW,GAC7B,EAAK,WAAW,KAAK,CACnB,SAAU,EAAQ,EAAO,eAAiB,SAAW,UACrD,KAAM,EAAK,iBAIf,EAAK,WAAW,KAAK,CACnB,SAAU,EAAQ,EAAO,eAAiB,WAAa,YACvD,KAAM,QAKV,EAAO,eAAe,EAAK,kBAE3B,EAAO,aAAa,EAAK,wBCpOZ,YAAoB,EAAO,CACxC,GAAI,GAAS,KACT,EAAO,EAAO,gBACd,EAAS,EAAO,OAChB,EAAU,EAAO,QACjB,EAAM,EAAO,aACb,EAAa,EAAO,WACpB,EAAa,EAAO,WACpB,EAAW,EAAO,SAClB,EAAU,EAAO,QACrB,GAAI,EAAC,EACL,IAAI,GAAI,EASR,GARI,EAAE,eAAe,GAAI,EAAE,eAEvB,EAAK,qBACP,EAAO,KAAK,WAAY,GAG1B,EAAK,oBAAsB,GAEvB,CAAC,EAAK,UAAW,CACf,EAAK,SAAW,EAAO,YACzB,EAAO,cAAc,IAGvB,EAAK,QAAU,GACf,EAAK,YAAc,GACnB,OAIE,EAAO,YAAc,EAAK,SAAW,EAAK,WAAc,GAAO,iBAAmB,IAAQ,EAAO,iBAAmB,KACtH,EAAO,cAAc,IAIvB,GAAI,GAAe,KACf,EAAW,EAAe,EAAK,eAgBnC,GAdI,EAAO,YACT,GAAO,mBAAmB,GAC1B,EAAO,KAAK,YAAa,GAErB,EAAW,KAAO,EAAe,EAAK,cAAgB,KACxD,EAAO,KAAK,wBAAyB,IAIzC,EAAK,cAAgB,KACrB,GAAS,UAAY,CACd,EAAO,WAAW,GAAO,WAAa,MAGzC,CAAC,EAAK,WAAa,CAAC,EAAK,SAAW,CAAC,EAAO,gBAAkB,EAAQ,OAAS,GAAK,EAAK,mBAAqB,EAAK,eAAgB,CACrI,EAAK,UAAY,GACjB,EAAK,QAAU,GACf,EAAK,YAAc,GACnB,OAGF,EAAK,UAAY,GACjB,EAAK,QAAU,GACf,EAAK,YAAc,GACnB,GAAI,GAQJ,GANI,EAAO,aACT,EAAa,EAAM,EAAO,UAAY,CAAC,EAAO,UAE9C,EAAa,CAAC,EAAK,iBAGjB,GAAO,QAIX,IAAI,EAAO,SAAU,CACnB,GAAI,EAAa,CAAC,EAAO,eAAgB,CACvC,EAAO,QAAQ,EAAO,aACtB,OAGF,GAAI,EAAa,CAAC,EAAO,eAAgB,CACnC,EAAO,OAAO,OAAS,EAAS,OAClC,EAAO,QAAQ,EAAS,OAAS,GAEjC,EAAO,QAAQ,EAAO,OAAO,OAAS,GAGxC,OAGF,GAAI,EAAO,iBAAkB,CAC3B,GAAI,EAAK,WAAW,OAAS,EAAG,CAC9B,GAAI,GAAgB,EAAK,WAAW,MAChC,EAAgB,EAAK,WAAW,MAChC,EAAW,EAAc,SAAW,EAAc,SAClD,EAAO,EAAc,KAAO,EAAc,KAC9C,EAAO,SAAW,EAAW,EAC7B,EAAO,UAAY,EAEf,KAAK,IAAI,EAAO,UAAY,EAAO,yBACrC,GAAO,SAAW,GAKhB,GAAO,KAAO,KAAQ,EAAc,KAAO,MAC7C,GAAO,SAAW,OAGpB,GAAO,SAAW,EAGpB,EAAO,UAAY,EAAO,8BAC1B,EAAK,WAAW,OAAS,EACzB,GAAI,IAAmB,IAAO,EAAO,sBACjC,GAAmB,EAAO,SAAW,GACrC,EAAc,EAAO,UAAY,GACjC,GAAK,GAAc,CAAC,GACxB,GAAI,IAAW,GACX,GACA,GAAe,KAAK,IAAI,EAAO,UAAY,GAAK,EAAO,4BACvD,GAEJ,GAAI,EAAc,EAAO,eACnB,EAAO,uBACL,GAAc,EAAO,eAAiB,CAAC,IACzC,GAAc,EAAO,eAAiB,IAGxC,GAAsB,EAAO,eAC7B,GAAW,GACX,EAAK,oBAAsB,IAE3B,EAAc,EAAO,eAGnB,EAAO,MAAQ,EAAO,gBAAgB,IAAe,YAChD,EAAc,EAAO,eAC1B,EAAO,uBACL,GAAc,EAAO,eAAiB,IACxC,GAAc,EAAO,eAAiB,IAGxC,GAAsB,EAAO,eAC7B,GAAW,GACX,EAAK,oBAAsB,IAE3B,EAAc,EAAO,eAGnB,EAAO,MAAQ,EAAO,gBAAgB,IAAe,YAChD,EAAO,eAAgB,CAGhC,OAFI,IAEK,GAAI,EAAG,GAAI,EAAS,OAAQ,IAAK,EACxC,GAAI,EAAS,IAAK,CAAC,EAAa,CAC9B,GAAY,GACZ,MAIA,KAAK,IAAI,EAAS,IAAa,GAAe,KAAK,IAAI,EAAS,GAAY,GAAK,IAAgB,EAAO,iBAAmB,OAC7H,EAAc,EAAS,IAEvB,EAAc,EAAS,GAAY,GAGrC,EAAc,CAAC,EAUjB,GAPI,IACF,EAAO,KAAK,gBAAiB,UAAY,CACvC,EAAO,YAKP,EAAO,WAAa,GAOtB,GANI,EACF,GAAmB,KAAK,IAAK,EAAC,EAAc,EAAO,WAAa,EAAO,UAEvE,GAAmB,KAAK,IAAK,GAAc,EAAO,WAAa,EAAO,UAGpE,EAAO,eAAgB,CAQzB,GAAI,IAAe,KAAK,IAAK,GAAM,CAAC,EAAc,GAAe,EAAO,WACpE,GAAmB,EAAO,gBAAgB,EAAO,aAEjD,GAAe,GACjB,GAAmB,EAAO,MACjB,GAAe,EAAI,GAC5B,GAAmB,EAAO,MAAQ,IAElC,GAAmB,EAAO,MAAQ,aAG7B,EAAO,eAAgB,CAChC,EAAO,iBACP,OAGE,EAAO,wBAA0B,GACnC,GAAO,eAAe,IACtB,EAAO,cAAc,IACrB,EAAO,aAAa,GACpB,EAAO,gBAAgB,GAAM,EAAO,gBACpC,EAAO,UAAY,GACnB,EAAW,cAAc,UAAY,CAC/B,CAAC,GAAU,EAAO,WAAa,CAAC,EAAK,qBACzC,GAAO,KAAK,kBACZ,EAAO,cAAc,EAAO,OAC5B,WAAW,UAAY,CACrB,EAAO,aAAa,IACpB,EAAW,cAAc,UAAY,CAC/B,CAAC,GAAU,EAAO,WACtB,EAAO,mBAER,OAEI,EAAO,SAChB,GAAO,eAAe,GACtB,EAAO,cAAc,IACrB,EAAO,aAAa,GACpB,EAAO,gBAAgB,GAAM,EAAO,gBAE/B,EAAO,WACV,GAAO,UAAY,GACnB,EAAW,cAAc,UAAY,CAC/B,CAAC,GAAU,EAAO,WACtB,EAAO,oBAIX,GAAO,KAAK,8BACZ,EAAO,eAAe,IAGxB,EAAO,oBACP,EAAO,8BACE,EAAO,eAAgB,CAChC,EAAO,iBACP,WACS,GAAO,UAChB,EAAO,KAAK,8BAGV,EAAC,EAAO,kBAAoB,GAAY,EAAO,eACjD,GAAO,iBACP,EAAO,oBACP,EAAO,uBAGT,OAOF,OAHI,IAAY,EACZ,GAAY,EAAO,gBAAgB,GAE9B,GAAI,EAAG,GAAI,EAAW,OAAQ,IAAK,GAAI,EAAO,mBAAqB,EAAI,EAAO,eAAgB,CACrG,GAAI,IAAa,GAAI,EAAO,mBAAqB,EAAI,EAAI,EAAO,eAE5D,MAAO,GAAW,GAAI,KAAgB,YACpC,GAAc,EAAW,KAAM,EAAa,EAAW,GAAI,KAC7D,IAAY,GACZ,GAAY,EAAW,GAAI,IAAc,EAAW,KAE7C,GAAc,EAAW,KAClC,IAAY,GACZ,GAAY,EAAW,EAAW,OAAS,GAAK,EAAW,EAAW,OAAS,IAKnF,GAAI,IAAS,GAAa,EAAW,KAAc,GAC/C,GAAY,GAAY,EAAO,mBAAqB,EAAI,EAAI,EAAO,eAEvE,GAAI,EAAW,EAAO,aAAc,CAElC,GAAI,CAAC,EAAO,WAAY,CACtB,EAAO,QAAQ,EAAO,aACtB,OAGE,EAAO,iBAAmB,QAC5B,CAAI,IAAS,EAAO,gBAAiB,EAAO,QAAQ,GAAY,IAAgB,EAAO,QAAQ,KAG7F,EAAO,iBAAmB,QAC5B,CAAI,GAAQ,EAAI,EAAO,gBAAiB,EAAO,QAAQ,GAAY,IAAgB,EAAO,QAAQ,SAE/F,CAEL,GAAI,CAAC,EAAO,YAAa,CACvB,EAAO,QAAQ,EAAO,aACtB,OAGF,GAAI,IAAoB,EAAO,YAAe,GAAE,SAAW,EAAO,WAAW,QAAU,EAAE,SAAW,EAAO,WAAW,QAEjH,GAQM,EAAE,SAAW,EAAO,WAAW,OACxC,EAAO,QAAQ,GAAY,IAE3B,EAAO,QAAQ,IAVX,GAAO,iBAAmB,QAC5B,EAAO,QAAQ,GAAY,IAGzB,EAAO,iBAAmB,QAC5B,EAAO,QAAQ,QC3TR,aAAoB,CACjC,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAK,EAAO,GAChB,GAAI,KAAM,EAAG,cAAgB,GAE7B,CAAI,EAAO,aACT,EAAO,gBAIT,GAAI,GAAiB,EAAO,eACxB,EAAiB,EAAO,eACxB,EAAW,EAAO,SAEtB,EAAO,eAAiB,GACxB,EAAO,eAAiB,GACxB,EAAO,aACP,EAAO,eACP,EAAO,sBAEF,GAAO,gBAAkB,QAAU,EAAO,cAAgB,IAAM,EAAO,OAAS,CAAC,EAAO,aAAe,CAAC,EAAO,OAAO,eACzH,EAAO,QAAQ,EAAO,OAAO,OAAS,EAAG,EAAG,GAAO,IAEnD,EAAO,QAAQ,EAAO,YAAa,EAAG,GAAO,IAG3C,EAAO,UAAY,EAAO,SAAS,SAAW,EAAO,SAAS,QAChE,EAAO,SAAS,MAIlB,EAAO,eAAiB,EACxB,EAAO,eAAiB,EAEpB,EAAO,OAAO,eAAiB,IAAa,EAAO,UACrD,EAAO,iBCpCI,YAAiB,EAAG,CACjC,GAAI,GAAS,KACT,CAAC,EAAO,SAEP,EAAO,YACN,GAAO,OAAO,eAAe,EAAE,iBAE/B,EAAO,OAAO,0BAA4B,EAAO,WACnD,GAAE,kBACF,EAAE,6BCTO,aAAoB,CACjC,GAAI,GAAS,KACT,EAAY,EAAO,UACnB,EAAe,EAAO,aACtB,EAAU,EAAO,QACrB,GAAI,EAAC,EACL,GAAO,kBAAoB,EAAO,UAE9B,EAAO,eACL,EACF,EAAO,UAAY,EAAU,YAAc,EAAU,YAAc,EAAU,WAE7E,EAAO,UAAY,CAAC,EAAU,WAGhC,EAAO,UAAY,CAAC,EAAU,UAI5B,EAAO,YAAc,IAAI,GAAO,UAAY,GAChD,EAAO,oBACP,EAAO,sBACP,GAAI,GACA,EAAiB,EAAO,eAAiB,EAAO,eAEhD,IAAmB,EACrB,EAAc,EAEd,EAAe,GAAO,UAAY,EAAO,gBAAkB,EAGzD,IAAgB,EAAO,UACzB,EAAO,eAAe,EAAe,CAAC,EAAO,UAAY,EAAO,WAGlE,EAAO,KAAK,eAAgB,EAAO,UAAW,KC5BhD,GAAI,IAAqB,GAEzB,aAA8B,EAE9B,aAAwB,CACtB,GAAI,GAAS,KACT,EAAW,KACX,EAAS,EAAO,OAChB,EAAc,EAAO,YACrB,EAAK,EAAO,GACZ,EAAY,EAAO,UACnB,EAAS,EAAO,OAChB,EAAU,EAAO,QACrB,EAAO,aAAe,GAAa,KAAK,GACxC,EAAO,YAAc,GAAY,KAAK,GACtC,EAAO,WAAa,GAAW,KAAK,GAEhC,EAAO,SACT,GAAO,SAAW,GAAS,KAAK,IAGlC,EAAO,QAAU,GAAQ,KAAK,GAC9B,GAAI,GAAU,CAAC,CAAC,EAAO,OAEvB,GAAI,CAAC,EAAQ,OAAS,EAAQ,cAC5B,EAAG,iBAAiB,EAAY,MAAO,EAAO,aAAc,IAC5D,EAAS,iBAAiB,EAAY,KAAM,EAAO,YAAa,GAChE,EAAS,iBAAiB,EAAY,IAAK,EAAO,WAAY,QACzD,CACL,GAAI,EAAQ,MAAO,CACjB,GAAI,GAAkB,EAAY,QAAU,cAAgB,EAAQ,iBAAmB,EAAO,iBAAmB,CAC/G,QAAS,GACT,QAAS,IACP,GACJ,EAAG,iBAAiB,EAAY,MAAO,EAAO,aAAc,GAC5D,EAAG,iBAAiB,EAAY,KAAM,EAAO,YAAa,EAAQ,gBAAkB,CAClF,QAAS,GACT,QAAS,GACP,GACJ,EAAG,iBAAiB,EAAY,IAAK,EAAO,WAAY,GAEpD,EAAY,QACd,EAAG,iBAAiB,EAAY,OAAQ,EAAO,WAAY,GAGxD,IACH,GAAS,iBAAiB,aAAc,IACxC,GAAqB,IAIrB,GAAO,eAAiB,CAAC,EAAO,KAAO,CAAC,EAAO,SAAW,EAAO,eAAiB,CAAC,EAAQ,OAAS,EAAO,MAC7G,GAAG,iBAAiB,YAAa,EAAO,aAAc,IACtD,EAAS,iBAAiB,YAAa,EAAO,YAAa,GAC3D,EAAS,iBAAiB,UAAW,EAAO,WAAY,KAKxD,GAAO,eAAiB,EAAO,2BACjC,EAAG,iBAAiB,QAAS,EAAO,QAAS,IAG3C,EAAO,SACT,EAAU,iBAAiB,SAAU,EAAO,UAI1C,EAAO,qBACT,EAAO,GAAG,EAAO,KAAO,EAAO,QAAU,0CAA4C,wBAAyB,GAAU,IAExH,EAAO,GAAG,iBAAkB,GAAU,IAI1C,aAAwB,CACtB,GAAI,GAAS,KACT,EAAW,KACX,EAAS,EAAO,OAChB,EAAc,EAAO,YACrB,EAAK,EAAO,GACZ,EAAY,EAAO,UACnB,EAAS,EAAO,OAChB,EAAU,EAAO,QACjB,EAAU,CAAC,CAAC,EAAO,OAEvB,GAAI,CAAC,EAAQ,OAAS,EAAQ,cAC5B,EAAG,oBAAoB,EAAY,MAAO,EAAO,aAAc,IAC/D,EAAS,oBAAoB,EAAY,KAAM,EAAO,YAAa,GACnE,EAAS,oBAAoB,EAAY,IAAK,EAAO,WAAY,QAC5D,CACL,GAAI,EAAQ,MAAO,CACjB,GAAI,GAAkB,EAAY,QAAU,gBAAkB,EAAQ,iBAAmB,EAAO,iBAAmB,CACjH,QAAS,GACT,QAAS,IACP,GACJ,EAAG,oBAAoB,EAAY,MAAO,EAAO,aAAc,GAC/D,EAAG,oBAAoB,EAAY,KAAM,EAAO,YAAa,GAC7D,EAAG,oBAAoB,EAAY,IAAK,EAAO,WAAY,GAEvD,EAAY,QACd,EAAG,oBAAoB,EAAY,OAAQ,EAAO,WAAY,GAI9D,GAAO,eAAiB,CAAC,EAAO,KAAO,CAAC,EAAO,SAAW,EAAO,eAAiB,CAAC,EAAQ,OAAS,EAAO,MAC7G,GAAG,oBAAoB,YAAa,EAAO,aAAc,IACzD,EAAS,oBAAoB,YAAa,EAAO,YAAa,GAC9D,EAAS,oBAAoB,UAAW,EAAO,WAAY,KAK3D,GAAO,eAAiB,EAAO,2BACjC,EAAG,oBAAoB,QAAS,EAAO,QAAS,IAG9C,EAAO,SACT,EAAU,oBAAoB,SAAU,EAAO,UAIjD,EAAO,IAAI,EAAO,KAAO,EAAO,QAAU,0CAA4C,wBAAyB,IAGjH,OAAe,CACb,aAAc,GACd,aAAc,ICrID,aAAyB,CACtC,GAAI,GAAS,KACT,EAAc,EAAO,YACrB,EAAc,EAAO,YACrB,EAAuB,EAAO,aAC9B,EAAe,IAAyB,OAAS,EAAI,EACrD,EAAS,EAAO,OAChB,EAAM,EAAO,IACb,EAAc,EAAO,YACzB,GAAI,GAAC,GAAe,GAAe,OAAO,KAAK,GAAa,SAAW,GAEvE,IAAI,GAAa,EAAO,cAAc,EAAa,EAAO,OAAO,gBAAiB,EAAO,IACzF,GAAI,GAAC,GAAc,EAAO,oBAAsB,GAChD,IAAI,GAAuB,IAAc,GAAc,EAAY,GAAc,OAE7E,GACF,CAAC,gBAAiB,eAAgB,iBAAkB,qBAAsB,mBAAmB,QAAQ,SAAU,EAAO,CACpH,GAAI,IAAa,EAAqB,GAClC,MAAO,KAAe,aAE1B,CAAI,IAAU,iBAAoB,MAAe,QAAU,KAAe,QACxE,EAAqB,GAAS,OACrB,IAAU,gBACnB,EAAqB,GAAS,WAAW,IAEzC,EAAqB,GAAS,SAAS,GAAY,OAKzD,GAAI,GAAmB,GAAwB,EAAO,eAClD,EAAc,EAAO,gBAAkB,EACvC,EAAa,EAAiB,gBAAkB,EAChD,EAAa,EAAO,QAEpB,GAAe,CAAC,EAClB,GAAI,YAAY,EAAO,uBAAyB,YAAc,EAAO,uBAAyB,mBAC9F,EAAO,wBACE,CAAC,GAAe,GACzB,GAAI,SAAS,EAAO,uBAAyB,YAEzC,GAAiB,qBAAuB,EAAiB,sBAAwB,UAAY,CAAC,EAAiB,qBAAuB,EAAO,sBAAwB,WACvK,EAAI,SAAS,EAAO,uBAAyB,mBAG/C,EAAO,wBAGT,GAAI,GAAmB,EAAiB,WAAa,EAAiB,YAAc,EAAO,UACvF,EAAc,EAAO,MAAS,GAAiB,gBAAkB,EAAO,eAAiB,GAEzF,GAAoB,GACtB,EAAO,kBAGT,GAAO,EAAO,OAAQ,GACtB,GAAI,GAAY,EAAO,OAAO,QAC9B,GAAO,EAAQ,CACb,eAAgB,EAAO,OAAO,eAC9B,eAAgB,EAAO,OAAO,eAC9B,eAAgB,EAAO,OAAO,iBAG5B,GAAc,CAAC,EACjB,EAAO,UACE,CAAC,GAAc,GACxB,EAAO,SAGT,EAAO,kBAAoB,EAC3B,EAAO,KAAK,oBAAqB,GAE7B,GAAe,GACjB,GAAO,cACP,EAAO,aACP,EAAO,eACP,EAAO,QAAQ,EAAc,EAAe,EAAO,aAAc,EAAG,KAGtE,EAAO,KAAK,aAAc,KC/Eb,YAAuB,EAAa,EAAM,EAAa,CAKpE,GAJI,IAAS,QACX,GAAO,UAGL,GAAC,GAAe,IAAS,aAAe,CAAC,GAC7C,IAAI,GAAa,GACb,EAAS,KACT,EAAgB,IAAS,SAAW,EAAO,YAAc,EAAY,aACrE,EAAS,OAAO,KAAK,GAAa,IAAI,SAAU,EAAO,CACzD,GAAI,MAAO,IAAU,UAAY,EAAM,QAAQ,OAAS,EAAG,CACzD,GAAI,GAAW,WAAW,EAAM,OAAO,IACnC,EAAQ,EAAgB,EAC5B,MAAO,CACL,MAAO,EACP,MAAO,GAIX,MAAO,CACL,MAAO,EACP,MAAO,KAGX,EAAO,KAAK,SAAU,EAAG,EAAG,CAC1B,MAAO,UAAS,EAAE,MAAO,IAAM,SAAS,EAAE,MAAO,MAGnD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACzC,GAAI,GAAY,EAAO,GACnB,EAAQ,EAAU,MAClB,EAAQ,EAAU,MAElB,IAAS,SACP,EAAO,WAAW,eAAiB,EAAQ,OAAO,SACpD,GAAa,GAEN,GAAS,EAAY,aAC9B,GAAa,GAIjB,MAAO,IAAc,OCzCvB,OAAe,CACb,cAAe,GACf,cAAe,ICJjB,YAAwB,EAAS,EAAQ,CACvC,GAAI,GAAgB,GACpB,SAAQ,QAAQ,SAAU,EAAM,CAC1B,MAAO,IAAS,SAClB,OAAO,KAAK,GAAM,QAAQ,SAAU,EAAY,CAC1C,EAAK,IACP,EAAc,KAAK,EAAS,KAGvB,MAAO,IAAS,UACzB,EAAc,KAAK,EAAS,KAGzB,EAGM,aAAsB,CACnC,GAAI,GAAS,KACT,EAAa,EAAO,WACpB,EAAS,EAAO,OAChB,EAAM,EAAO,IACb,EAAM,EAAO,IACb,EAAS,EAAO,OAChB,EAAU,EAAO,QAEjB,EAAW,GAAe,CAAC,cAAe,EAAO,UAAW,CAC9D,iBAAkB,EAAQ,eAAiB,CAAC,EAAQ,OACnD,CACD,YAAa,EAAO,UACnB,CACD,WAAc,EAAO,YACpB,CACD,IAAO,GACN,CACD,SAAY,EAAO,gBAAkB,GACpC,CACD,kBAAmB,EAAO,gBAAkB,GAAK,EAAO,sBAAwB,UAC/E,CACD,QAAW,EAAO,SACjB,CACD,IAAO,EAAO,KACb,CACD,WAAY,EAAO,UACjB,EAAO,wBACX,EAAW,KAAK,MAAM,EAAY,GAClC,EAAI,SAAS,GAAG,OAAO,GAAY,KAAK,MACxC,EAAO,uBC9CM,aAAyB,CACtC,GAAI,GAAS,KACT,EAAM,EAAO,IACb,EAAa,EAAO,WACxB,EAAI,YAAY,EAAW,KAAK,MAChC,EAAO,uBCHT,OAAe,CACb,WAAY,GACZ,cAAe,ICFF,YAAmB,EAAS,EAAK,EAAQ,EAAO,EAAkB,EAAU,CACzF,GAAI,GAAS,KACT,EAEJ,YAAmB,CACb,GAAU,IAGhB,GAAI,GAAY,GAAE,GAAS,OAAO,WAAW,GAEzC,CAAC,GAAc,EAAC,EAAQ,UAAY,CAAC,IACnC,EACF,GAAQ,GAAI,GAAO,MACnB,EAAM,OAAS,EACf,EAAM,QAAU,EAEZ,GACF,GAAM,MAAQ,GAGZ,GACF,GAAM,OAAS,GAGb,GACF,GAAM,IAAM,IAOhB,IClCW,aAAyB,CACtC,GAAI,GAAS,KACb,EAAO,aAAe,EAAO,IAAI,KAAK,OAEtC,YAAmB,CACb,MAAO,IAAW,aAAe,IAAW,MAAQ,CAAC,GAAU,EAAO,WACtE,GAAO,eAAiB,QAAW,GAAO,cAAgB,GAE1D,EAAO,eAAiB,EAAO,aAAa,QAC1C,GAAO,OAAO,qBAAqB,EAAO,SAC9C,EAAO,KAAK,iBAIhB,OAAS,GAAI,EAAG,EAAI,EAAO,aAAa,OAAQ,GAAK,EAAG,CACtD,GAAI,GAAU,EAAO,aAAa,GAClC,EAAO,UAAU,EAAS,EAAQ,YAAc,EAAQ,aAAa,OAAQ,EAAQ,QAAU,EAAQ,aAAa,UAAW,EAAQ,OAAS,EAAQ,aAAa,SAAU,GAAM,ICdzL,OAAe,CACb,UAAW,GACX,cAAe,ICJjB,aAAyB,CACvB,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAY,EAAO,SACnB,EAAoB,EAAO,OAAO,OAAS,GAAK,EAAO,mBAAqB,EAAO,aAAgB,GAAO,OAAO,OAAS,GAAK,EAAO,OAAO,GAAG,YAAc,EAAO,OAAO,OAE5K,EAAO,oBAAsB,EAAO,mBAAqB,EAC3D,EAAO,SAAW,GAAqB,EAAO,KAE9C,EAAO,SAAW,EAAO,SAAS,SAAW,EAG/C,EAAO,eAAiB,CAAC,EAAO,SAChC,EAAO,eAAiB,CAAC,EAAO,SAE5B,IAAc,EAAO,UAAU,EAAO,KAAK,EAAO,SAAW,OAAS,UAEtE,GAAa,IAAc,EAAO,UACpC,GAAO,MAAQ,GACX,EAAO,YAAY,EAAO,WAAW,UAI7C,OAAe,CACb,cAAe,ICxBjB,EAAe,CACb,KAAM,GACN,UAAW,aACX,kBAAmB,YACnB,aAAc,EACd,MAAO,IACP,QAAS,GACT,qBAAsB,GACtB,eAAgB,GAChB,OAAQ,GACR,eAAgB,GAChB,QAAS,GACT,kBAAmB,wDAEnB,MAAO,KACP,OAAQ,KAER,+BAAgC,GAEhC,UAAW,KACX,IAAK,KAEL,mBAAoB,GACpB,mBAAoB,GAEpB,SAAU,GACV,iBAAkB,GAClB,sBAAuB,EACvB,uBAAwB,GACxB,4BAA6B,EAC7B,8BAA+B,EAC/B,eAAgB,GAChB,wBAAyB,IAEzB,WAAY,GAEZ,eAAgB,GAEhB,iBAAkB,GAElB,OAAQ,QAGR,YAAa,OACb,gBAAiB,SAEjB,aAAc,EACd,cAAe,EACf,gBAAiB,EACjB,oBAAqB,SACrB,eAAgB,EAChB,mBAAoB,EACpB,eAAgB,GAChB,qBAAsB,GACtB,mBAAoB,EAEpB,kBAAmB,EAEnB,oBAAqB,GACrB,yBAA0B,GAE1B,cAAe,GAEf,aAAc,GAEd,WAAY,EACZ,WAAY,GACZ,cAAe,GACf,YAAa,GACb,WAAY,GACZ,gBAAiB,GACjB,aAAc,IACd,aAAc,GACd,eAAgB,GAChB,UAAW,EACX,yBAA0B,GAC1B,yBAA0B,GAC1B,8BAA+B,GAC/B,oBAAqB,GAErB,kBAAmB,GAEnB,WAAY,GACZ,gBAAiB,IAEjB,oBAAqB,GACrB,sBAAuB,GAEvB,WAAY,GAEZ,cAAe,GACf,yBAA0B,GAC1B,oBAAqB,GAErB,cAAe,GACf,oBAAqB,GAErB,KAAM,GACN,qBAAsB,EACtB,aAAc,KACd,uBAAwB,GACxB,kBAAmB,GAEnB,eAAgB,GAChB,eAAgB,GAChB,aAAc,KAEd,UAAW,GACX,eAAgB,oBAChB,kBAAmB,KAEnB,iBAAkB,GAElB,uBAAwB,oBAExB,WAAY,eACZ,gBAAiB,+BACjB,iBAAkB,sBAClB,0BAA2B,gCAC3B,kBAAmB,uBACnB,oBAAqB,yBACrB,eAAgB,oBAChB,wBAAyB,8BACzB,eAAgB,oBAChB,wBAAyB,8BACzB,aAAc,iBAEd,mBAAoB,GAEpB,aAAc,ICjIhB,WAA2B,EAAQ,EAAO,CAAE,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAAE,GAAI,GAAa,EAAM,GAAI,EAAW,WAAa,EAAW,YAAc,GAAO,EAAW,aAAe,GAAU,SAAW,IAAY,GAAW,SAAW,IAAM,OAAO,eAAe,EAAQ,EAAW,IAAK,IAE7S,WAAsB,EAAa,EAAY,EAAa,CAAE,MAAI,IAAY,EAAkB,EAAY,UAAW,GAAiB,GAAa,EAAkB,EAAa,GAAqB,EA0BzM,GAAI,GAAa,CACf,QAAS,EACT,cAAe,GACf,OAAQ,GACR,UAAW,GACX,WAAY,GACZ,MAAO,GACP,KAAM,GACN,WAAY,GACZ,aAAc,GACd,OAAQ,GACR,YAAa,GACb,cAAe,GACf,QAAS,GACT,OAAQ,IAEN,EAAmB,GAEnB,EAAsB,UAAY,CACpC,YAAkB,CAIhB,OAHI,GACA,EAEK,EAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAczB,GAXI,EAAK,SAAW,GAAK,EAAK,GAAG,aAAe,OAAO,UAAU,SAAS,KAAK,EAAK,IAAI,MAAM,EAAG,MAAQ,SACvG,EAAS,EAAK,GAEd,GAAK,EAAK,GACV,EAAS,EAAK,IAGX,GAAQ,GAAS,IACtB,EAAS,GAAO,GAAI,GAChB,GAAM,CAAC,EAAO,IAAI,GAAO,GAAK,GAE9B,EAAO,IAAM,GAAE,EAAO,IAAI,OAAS,EAAG,CACxC,GAAI,GAAU,GACd,UAAE,EAAO,IAAI,KAAK,SAAU,EAAa,CACvC,GAAI,GAAY,GAAO,GAAI,EAAQ,CACjC,GAAI,IAEN,EAAQ,KAAK,GAAI,GAAO,MAEnB,EAIT,GAAI,GAAS,KACb,EAAO,WAAa,GACpB,EAAO,QAAU,KACjB,EAAO,OAAS,GAAU,CACxB,UAAW,EAAO,YAEpB,EAAO,QAAU,KACjB,EAAO,gBAAkB,GACzB,EAAO,mBAAqB,GAExB,MAAO,GAAO,SAAY,aAC5B,GAAO,QAAU,IAGnB,OAAO,KAAK,EAAO,SAAS,QAAQ,SAAU,EAAY,CACxD,GAAI,GAAS,EAAO,QAAQ,GAE5B,GAAI,EAAO,OAAQ,CACjB,GAAI,GAAkB,OAAO,KAAK,EAAO,QAAQ,GAC7C,EAAe,EAAO,OAAO,GASjC,GARI,MAAO,IAAiB,UAAY,IAAiB,MAErD,EAAC,aAAc,aAAc,aAAa,QAAQ,IAAoB,GAAK,EAAO,KAAqB,IACzG,GAAO,GAAmB,CACxB,KAAM,KAIN,CAAE,KAAmB,IAAU,WAAa,KAAe,OAE3D,EAAO,KAAqB,IAC9B,GAAO,GAAmB,CACxB,QAAS,KAIT,MAAO,GAAO,IAAqB,UAAY,CAAE,YAAa,GAAO,KACvE,GAAO,GAAiB,QAAU,IAG/B,EAAO,IAAkB,GAAO,GAAmB,CACtD,QAAS,QAKf,GAAI,GAAe,GAAO,GAAI,GAC9B,SAAO,UAAU,GAEjB,EAAO,OAAS,GAAO,GAAI,EAAc,EAAkB,GAC3D,EAAO,eAAiB,GAAO,GAAI,EAAO,QAC1C,EAAO,aAAe,GAAO,GAAI,GAE7B,EAAO,QAAU,EAAO,OAAO,IACjC,OAAO,KAAK,EAAO,OAAO,IAAI,QAAQ,SAAU,EAAW,CACzD,EAAO,GAAG,EAAW,EAAO,OAAO,GAAG,MAItC,EAAO,QAAU,EAAO,OAAO,OACjC,EAAO,MAAM,EAAO,OAAO,OAI7B,EAAO,EAAI,GAEX,GAAO,EAAQ,CACb,QAAS,EAAO,OAAO,QACvB,GAAI,EAEJ,WAAY,GAEZ,OAAQ,KACR,WAAY,GACZ,SAAU,GACV,gBAAiB,GAEjB,aAAc,UAAwB,CACpC,MAAO,GAAO,OAAO,YAAc,cAErC,WAAY,UAAsB,CAChC,MAAO,GAAO,OAAO,YAAc,YAGrC,YAAa,EACb,UAAW,EAEX,YAAa,GACb,MAAO,GAEP,UAAW,EACX,kBAAmB,EACnB,SAAU,EACV,SAAU,EACV,UAAW,GAEX,eAAgB,EAAO,OAAO,eAC9B,eAAgB,EAAO,OAAO,eAE9B,YAAa,UAAuB,CAClC,GAAI,GAAQ,CAAC,aAAc,YAAa,WAAY,eAChD,EAAU,CAAC,YAAa,YAAa,WAEzC,MAAI,GAAO,QAAQ,eACjB,GAAU,CAAC,cAAe,cAAe,cAG3C,EAAO,iBAAmB,CACxB,MAAO,EAAM,GACb,KAAM,EAAM,GACZ,IAAK,EAAM,GACX,OAAQ,EAAM,IAEhB,EAAO,mBAAqB,CAC1B,MAAO,EAAQ,GACf,KAAM,EAAQ,GACd,IAAK,EAAQ,IAER,EAAO,QAAQ,OAAS,CAAC,EAAO,OAAO,cAAgB,EAAO,iBAAmB,EAAO,sBAEjG,gBAAiB,CACf,UAAW,OACX,QAAS,OACT,oBAAqB,OACrB,eAAgB,OAChB,YAAa,OACb,iBAAkB,OAClB,eAAgB,OAChB,mBAAoB,OAEpB,kBAAmB,EAAO,OAAO,kBAEjC,cAAe,KACf,aAAc,OAEd,WAAY,GACZ,oBAAqB,OACrB,aAAc,OACd,YAAa,QAGf,WAAY,GAEZ,eAAgB,EAAO,OAAO,eAC9B,QAAS,CACP,OAAQ,EACR,OAAQ,EACR,SAAU,EACV,SAAU,EACV,KAAM,GAGR,aAAc,GACd,aAAc,IAGhB,EAAO,aACP,EAAO,KAAK,WAER,EAAO,OAAO,MAChB,EAAO,OAIF,EAGT,GAAI,GAAS,EAAO,UAEpB,SAAO,OAAS,UAAkB,CAChC,GAAI,GAAS,KACT,EAAO,SACX,GAAO,QAAU,GAEb,EAAO,OAAO,YAChB,EAAO,gBAGT,EAAO,KAAK,YAGd,EAAO,QAAU,UAAmB,CAClC,GAAI,GAAS,KACT,CAAC,EAAO,SACZ,GAAO,QAAU,GAEb,EAAO,OAAO,YAChB,EAAO,kBAGT,EAAO,KAAK,aAGd,EAAO,YAAc,SAAqB,EAAU,EAAO,CACzD,GAAI,GAAS,KACb,EAAW,KAAK,IAAI,KAAK,IAAI,EAAU,GAAI,GAC3C,GAAI,GAAM,EAAO,eACb,EAAM,EAAO,eACb,EAAW,GAAM,GAAO,EAAW,EACvC,EAAO,YAAY,EAAS,MAAO,IAAU,YAAc,EAAI,GAC/D,EAAO,oBACP,EAAO,uBAGT,EAAO,qBAAuB,UAAgC,CAC5D,GAAI,GAAS,KACb,GAAI,GAAC,EAAO,OAAO,cAAgB,CAAC,EAAO,IAC3C,IAAI,GAAU,EAAO,GAAG,UAAU,MAAM,KAAK,OAAO,SAAU,EAAW,CACvE,MAAO,GAAU,QAAQ,sBAAwB,GAAK,EAAU,QAAQ,EAAO,OAAO,0BAA4B,IAEpH,EAAO,KAAK,oBAAqB,EAAQ,KAAK,QAGhD,EAAO,gBAAkB,SAAyB,EAAS,CACzD,GAAI,GAAS,KACb,MAAO,GAAQ,UAAU,MAAM,KAAK,OAAO,SAAU,EAAW,CAC9D,MAAO,GAAU,QAAQ,kBAAoB,GAAK,EAAU,QAAQ,EAAO,OAAO,cAAgB,IACjG,KAAK,MAGV,EAAO,kBAAoB,UAA6B,CACtD,GAAI,GAAS,KACb,GAAI,GAAC,EAAO,OAAO,cAAgB,CAAC,EAAO,IAC3C,IAAI,GAAU,GACd,EAAO,OAAO,KAAK,SAAU,EAAS,CACpC,GAAI,GAAa,EAAO,gBAAgB,GACxC,EAAQ,KAAK,CACX,QAAS,EACT,WAAY,IAEd,EAAO,KAAK,cAAe,EAAS,KAEtC,EAAO,KAAK,gBAAiB,KAG/B,EAAO,qBAAuB,UAAgC,CAC5D,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAS,EAAO,OAChB,EAAa,EAAO,WACpB,EAAa,EAAO,KACpB,EAAc,EAAO,YACrB,EAAM,EAEV,GAAI,EAAO,eAAgB,CAIzB,OAHI,GAAY,EAAO,GAAa,gBAChC,EAEK,EAAI,EAAc,EAAG,EAAI,EAAO,OAAQ,GAAK,EAChD,EAAO,IAAM,CAAC,GAChB,IAAa,EAAO,GAAG,gBACvB,GAAO,EACH,EAAY,GAAY,GAAY,KAI5C,OAAS,GAAK,EAAc,EAAG,GAAM,EAAG,GAAM,EACxC,EAAO,IAAO,CAAC,GACjB,IAAa,EAAO,GAAI,gBACxB,GAAO,EACH,EAAY,GAAY,GAAY,SAI5C,QAAS,GAAM,EAAc,EAAG,EAAM,EAAO,OAAQ,GAAO,EACtD,EAAW,GAAO,EAAW,GAAe,GAC9C,IAAO,GAKb,MAAO,IAGT,EAAO,OAAS,UAAkB,CAChC,GAAI,GAAS,KACb,GAAI,CAAC,GAAU,EAAO,UAAW,OACjC,GAAI,GAAW,EAAO,SAClB,EAAS,EAAO,OAEhB,EAAO,aACT,EAAO,gBAGT,EAAO,aACP,EAAO,eACP,EAAO,iBACP,EAAO,sBAEP,YAAwB,CACtB,GAAI,GAAiB,EAAO,aAAe,EAAO,UAAY,GAAK,EAAO,UACtE,EAAe,KAAK,IAAI,KAAK,IAAI,EAAgB,EAAO,gBAAiB,EAAO,gBACpF,EAAO,aAAa,GACpB,EAAO,oBACP,EAAO,sBAGT,GAAI,GAEA,EAAO,OAAO,SAChB,KAEI,EAAO,OAAO,YAChB,EAAO,oBAGT,CAAK,GAAO,OAAO,gBAAkB,QAAU,EAAO,OAAO,cAAgB,IAAM,EAAO,OAAS,CAAC,EAAO,OAAO,eAChH,EAAa,EAAO,QAAQ,EAAO,OAAO,OAAS,EAAG,EAAG,GAAO,IAEhE,EAAa,EAAO,QAAQ,EAAO,YAAa,EAAG,GAAO,IAGvD,GACH,KAIA,EAAO,eAAiB,IAAa,EAAO,UAC9C,EAAO,gBAGT,EAAO,KAAK,WAGd,EAAO,gBAAkB,SAAyB,EAAc,EAAY,CACtE,IAAe,QACjB,GAAa,IAGf,GAAI,GAAS,KACT,EAAmB,EAAO,OAAO,UAOrC,MALK,IAEH,GAAe,IAAqB,aAAe,WAAa,cAG9D,IAAiB,GAAoB,IAAiB,cAAgB,IAAiB,YAI3F,GAAO,IAAI,YAAY,GAAK,EAAO,OAAO,uBAAyB,GAAkB,SAAS,GAAK,EAAO,OAAO,uBAAyB,GAC1I,EAAO,uBACP,EAAO,OAAO,UAAY,EAC1B,EAAO,OAAO,KAAK,SAAU,EAAS,CAChC,IAAiB,WACnB,EAAQ,MAAM,MAAQ,GAEtB,EAAQ,MAAM,OAAS,KAG3B,EAAO,KAAK,mBACR,GAAY,EAAO,UAChB,GAGT,EAAO,MAAQ,SAAe,EAAI,CAChC,GAAI,GAAS,KACb,GAAI,EAAO,QAAS,MAAO,GAE3B,GAAI,GAAM,GAAE,GAAM,EAAO,OAAO,IAGhC,GAFA,EAAK,EAAI,GAEL,CAAC,EACH,MAAO,GAGT,EAAG,OAAS,EAEZ,GAAI,GAAqB,UAA8B,CACrD,MAAO,IAAO,GAAO,OAAO,cAAgB,IAAI,OAAO,MAAM,KAAK,KAAK,MAGrE,EAAa,UAAsB,CACrC,GAAI,GAAM,EAAG,YAAc,EAAG,WAAW,cAAe,CACtD,GAAI,GAAM,GAAE,EAAG,WAAW,cAAc,MAExC,SAAI,SAAW,SAAU,EAAS,CAChC,MAAO,GAAI,SAAS,IAGf,EAGT,MAAO,GAAI,SAAS,MAIlB,EAAa,IAEjB,GAAI,EAAW,SAAW,GAAK,EAAO,OAAO,eAAgB,CAC3D,GAAI,GAAW,KACX,EAAU,EAAS,cAAc,OACrC,EAAa,GAAE,GACf,EAAQ,UAAY,EAAO,OAAO,aAClC,EAAI,OAAO,GACX,EAAI,SAAS,IAAM,EAAO,OAAO,YAAY,KAAK,SAAU,EAAS,CACnE,EAAW,OAAO,KAItB,UAAO,EAAQ,CACb,IAAK,EACL,GAAI,EACJ,WAAY,EACZ,UAAW,EAAW,GACtB,QAAS,GAET,IAAK,EAAG,IAAI,gBAAkB,OAAS,EAAI,IAAI,eAAiB,MAChE,aAAc,EAAO,OAAO,YAAc,cAAiB,GAAG,IAAI,gBAAkB,OAAS,EAAI,IAAI,eAAiB,OACtH,SAAU,EAAW,IAAI,aAAe,gBAEnC,IAGT,EAAO,KAAO,SAAc,EAAI,CAC9B,GAAI,GAAS,KACb,GAAI,EAAO,YAAa,MAAO,GAC/B,GAAI,GAAU,EAAO,MAAM,GAC3B,MAAI,KAAY,IAChB,GAAO,KAAK,cAER,EAAO,OAAO,aAChB,EAAO,gBAIT,EAAO,aAEH,EAAO,OAAO,MAChB,EAAO,aAIT,EAAO,aAEP,EAAO,eAEH,EAAO,OAAO,eAChB,EAAO,gBAIL,EAAO,OAAO,YAAc,EAAO,SACrC,EAAO,gBAGL,EAAO,OAAO,eAChB,EAAO,gBAIL,EAAO,OAAO,KAChB,EAAO,QAAQ,EAAO,OAAO,aAAe,EAAO,aAAc,EAAG,EAAO,OAAO,mBAAoB,GAAO,IAE7G,EAAO,QAAQ,EAAO,OAAO,aAAc,EAAG,EAAO,OAAO,mBAAoB,GAAO,IAIzF,EAAO,eAEP,EAAO,YAAc,GAErB,EAAO,KAAK,QACZ,EAAO,KAAK,cACL,GAGT,EAAO,QAAU,SAAiB,EAAgB,EAAa,CACzD,IAAmB,QACrB,GAAiB,IAGf,IAAgB,QAClB,GAAc,IAGhB,GAAI,GAAS,KACT,EAAS,EAAO,OAChB,EAAM,EAAO,IACb,EAAa,EAAO,WACpB,EAAS,EAAO,OAEpB,MAAI,OAAO,GAAO,QAAW,aAAe,EAAO,WAInD,GAAO,KAAK,iBAEZ,EAAO,YAAc,GAErB,EAAO,eAEH,EAAO,MACT,EAAO,cAIL,GACF,GAAO,gBACP,EAAI,WAAW,SACf,EAAW,WAAW,SAElB,GAAU,EAAO,QACnB,EAAO,YAAY,CAAC,EAAO,kBAAmB,EAAO,iBAAkB,EAAO,eAAgB,EAAO,gBAAgB,KAAK,MAAM,WAAW,SAAS,WAAW,4BAInK,EAAO,KAAK,WAEZ,OAAO,KAAK,EAAO,iBAAiB,QAAQ,SAAU,EAAW,CAC/D,EAAO,IAAI,KAGT,IAAmB,IACrB,GAAO,IAAI,GAAG,OAAS,KACvB,GAAY,IAGd,EAAO,UAAY,IACZ,MAGT,EAAO,eAAiB,SAAwB,EAAa,CAC3D,GAAO,EAAkB,IAG3B,EAAO,cAAgB,SAAuB,EAAQ,CAC/C,EAAO,UAAU,SAAS,GAAO,UAAU,QAAU,IAC1D,GAAI,GAAO,EAAO,MAAQ,OAAO,KAAK,EAAO,UAAU,SAAS,OAAS,IAAM,KAC/E,EAAO,UAAU,QAAQ,GAAQ,GAGnC,EAAO,IAAM,SAAa,EAAQ,CAChC,MAAI,OAAM,QAAQ,GAChB,GAAO,QAAQ,SAAU,EAAG,CAC1B,MAAO,GAAO,cAAc,KAEvB,GAGT,GAAO,cAAc,GACd,IAGT,EAAa,EAAQ,KAAM,CAAC,CAC1B,IAAK,mBACL,IAAK,UAAe,CAClB,MAAO,KAER,CACD,IAAK,WACL,IAAK,UAAe,CAClB,MAAO,OAIJ,KAGT,OAAO,KAAK,GAAY,QAAQ,SAAU,EAAgB,CACxD,OAAO,KAAK,EAAW,IAAiB,QAAQ,SAAU,EAAa,CACrE,EAAO,UAAU,GAAe,EAAW,GAAgB,OAG/D,EAAO,IAAI,CAAC,GAAQ,KACpB,MAAe,EC/nBf,KAAM,IAAe,gBACf,GAAe,YACf,GAA0B,oBAE1B,GAAqB,UACrB,GAAsB,SACtB,GAAsB,iBACtB,GAAuB,kBAEvB,GAA2B,qBAE3B,GAA+B,IAuNrC,OAhNoB,GAAiC,CACnD,KAAM,GAAkC,EAAU,cAAc,IAAI,aAE9D,EAAiB,EAAU,cAAc,IAAI,sBAC7C,EAAmB,EAAU,cAAc,IAAI,wBAE/C,EAA2C,EAAU,cACzD,IAAI,kBAEA,EAAsC,MAAM,KAChD,EAAuB,iBAAiB,IAAI,oBAGxC,EAAkC,EAAiB,cACvD,IAAI,qBAEA,EAAkC,MAAM,KAC5C,EAAiB,iBAAiB,IAAI,oBAGlC,EAAiC,MAAM,KAC3C,EAAiB,iBAAiB,IAAI,kBAIxC,GAAI,GAAoC,KACpC,EAAkB,GAGtB,KAAM,GAAS,GAAI,GAAW,EAAiB,CAC7C,QAAS,GACT,MAAO,GACP,cAAe,OACf,gBAAiB,GACjB,KAAM,GACN,eAAgB,GAEhB,gBAAiB,IAMb,EAA2B,IAA6C,CAE5E,EAAe,UAAU,OAAO,IAGhC,EAAiB,GACjB,EAAe,UAAU,IAAI,KAQ/B,EAAO,GAAG,cAAgB,IAAsB,CAC9C,KAAM,CAAE,UAAW,GAAsB,GAQzC,GAAI,EAPqC,UAAW,IAAW,KAAW,KAOhD,GAAqB,EAAiB,CAC9D,EAAkB,GAClB,OAGF,KAAM,IAAkB,EAAe,GAGvC,EAAwB,IAGxB,GAAkC,CAChC,YAAa,EACb,YAAa,OAOjB,KAAM,GAAqB,IAA4B,CACrD,KAAM,GAAgB,GAAM,cAE5B,GAAI,IAAkB,EAAgB,OAEtC,EAAkB,GAGlB,EAAwB,GAExB,KAAM,IAAqB,EAAe,UAAW,IAAW,KAAW,GAG3E,EAAO,QAAQ,GAAoB,KAO/B,EAAkB,IAAY,CAElC,EAAO,SAEP,EAAU,UAAU,IAAI,IACxB,EAAiB,UAAU,IAAI,IAE/B,EAAc,UAAU,OAAO,IAC/B,EAAc,UAAU,IAAI,IAE5B,EAAe,UAAU,OAAO,IAChC,EAAe,UAAU,IAAI,KAOzB,EAAkB,IAAY,CAElC,EAAO,UAEP,EAAU,UAAU,OAAO,IAC3B,EAAiB,UAAU,OAAO,IAElC,EAAc,UAAU,OAAO,IAC/B,EAAc,UAAU,IAAI,IAE5B,EAAe,UAAU,OAAO,IAChC,EAAe,UAAU,IAAI,KAMzB,EAAuB,IAAY,CACvC,KAAM,CAAE,YAAa,IAAgB,EAG/B,EAAqB,EAAe,OAAO,CAAC,GAAK,KAAS,CAC9D,KAAM,CAAE,UAAU,GAAK,wBAIvB,MAFiB,IAAM,IAGtB,GAGH,GAAI,KAAK,MAAM,GAAc,GAAa,CACxC,IACA,OAGF,KAGI,EAAsB,IAAY,CAEtC,EAAc,MAAM,YAAY,GAA0B,KAE1D,GAAI,IAAgB,EAGpB,EAAa,QAAS,GAAU,CAC9B,KAAM,CAAE,WAAW,EAAM,wBAEnB,GAAgB,KAAK,KAAK,IAE5B,GAAgB,IAClB,IAAgB,MAKpB,EAAc,MAAM,YAAY,GAA0B,GAAG,SAGzD,GAAsB,IAAY,CACtC,CAAC,GAAkB,EACnB,EAAe,UAAU,IAAI,IAG7B,EAAe,QAAS,IAAW,CACjC,GAAO,iBAAiB,QAAS,KAGnC,IACA,KAIF,OAAO,iBACL,SACA,KAAS,IAAM,CACb,IACA,KACC,MAGL,M,wBClOF,GAAe,IAAM,CAGnB,CAFe,GAAG,SAAS,uBAAuB,YAE5C,QAAS,GAAY,CAEzB,KAAM,GAAQ,GAAI,OAAQ,EAAS,CAEjC,aAAc,aACd,YAAa,cACb,gBAAiB,QCFvB,GAAe,IAAM,C,MAEnB,KAAM,GAAuB,SAAS,cAAc,sBAE9C,EAA2B,EAAQ,cAAc,qBACjD,EAA0B,EAAQ,cAAc,mBAChD,EAA0B,EAAQ,cAAc,mBAChD,EAAoC,EAAQ,cAAc,yBAC1D,EAAmC,SAAS,cAAc,wBAC1D,EAA2B,EAAQ,cAAc,oBACjD,EAAyB,SAAS,cAAc,qBAChD,EAA4B,SAAS,cAAc,4BACnD,EAA6B,EAAQ,cAAc,6BACnD,EAAwB,EAAQ,cAAc,mBAC9C,EAA2B,SAAS,cAAc,uBAElD,EAAe,UAAO,kBAAc,0BAAE,QAIxC,GACF,GAAO,GAAG,EAAY,CACpB,MAAQ,GAAU,CAChB,EAAM,iBACN,EAAW,UAAU,OAAO,GAAW,QACvC,EAAY,UAAU,OAAO,GAAW,WACxC,EAAgB,WAMtB,GAAO,GAAG,EAAa,CACrB,MAAQ,GAAU,CAChB,EAAM,iBACN,EAAW,UAAU,OAAO,GAAW,QACvC,EAAY,UAAU,OAAO,GAAW,WACxC,EAAc,UAAU,OAAO,GAAW,WAI9C,KAAM,GAAgB,IAAM,CAC1B,EAAW,UAAU,OAAO,GAAW,QACvC,EAAY,UAAU,OAAO,GAAW,WACxC,EAAc,UAAU,OAAO,GAAW,SAI5C,GAAO,GAAG,SAAS,KAAM,CACvB,QAAU,GAAU,CACd,EAAM,MAAQ,UAChB,OAKN,GAAO,GAAG,SAAU,CAClB,MAAQ,GAAU,CAGZ,MADK,GAAM,cAAiB,YAAc,CAAC,EAAM,eAAe,SAAS,IAE3E,OAON,GAAO,GAAG,EAAgB,CACxB,MAAO,IAAM,CACX,EAAU,UAAU,OAAO,GAAW,QACjC,GAAK,UAAU,EAAW,QAAQ,SACrC,EAAa,UAAU,IAAI,GAAW,WAM5C,GAAO,GAAG,EAAW,CACnB,MAAO,IAAM,CACX,EAAU,UAAU,OAAO,GAAW,QACjC,GAAK,UAAU,EAAW,QAAQ,SACrC,EAAa,UAAU,OAAO,GAAW,WAM/C,KAAM,GAAc,CAAC,EAAO,IAAU,CACpC,EAAM,iBACN,KAAM,IAAM,GAAG,OAAO,SAAS,SAAS,EAAa,mBAAmB,IACxE,OAAO,SAAS,KAAO,IAGzB,GAAO,GAAG,EAAM,CACd,OAAS,GAAU,CACjB,KAAM,GAAyB,EAAgB,MAC/C,EAAY,EAAO,MAIvB,GAAO,GAAG,EAAS,CACjB,OAAS,GAAU,CACjB,KAAM,GAAwB,EAAe,MAC7C,EAAY,EAAO,OCmBzB,GAzHa,GAA2B,C,MACtC,KAAM,GAAS,EAAU,cAAc,kBACjC,EAAgB,UAAO,kBAAc,0BAAE,QAEvC,EAAS,IAAM,C,MACnB,KAAM,GAAqB,SAAS,cAAc,iBAC5C,EAAY,MAAK,YAAL,EAAO,WAAO,0BAAE,UAElC,MAAM,GACN,GAAM,MAAN,EAAQ,UAAU,OAAO,aACzB,SAAS,oBAAoB,kBAAmB,IAG5C,EAAkB,GAAsB,CAC5C,KAAM,GAAU,EAAU,QAAQ,WAC5B,EAAe,EAAU,QAAQ,gBAEvC,GAAI,IAAY,MAAO,CACrB,KAAM,IAAgB,EAAc,eACpC,GAAI,GAAe,CACjB,KAAM,GAAc,OAAY,IAC1B,GAAc,EAAM,cAE1B,GAAI,IAAe,GAAe,IAAiB,OAAQ,CACzD,EAAM,iBACN,KAAM,IAAc,GAAY,KAChC,OAAO,SAAS,KAAO,GAAG,GAAY,OACpC,GAAY,QAAQ,KAAO,EAAI,IAAM,MACpC,MAAiB,QAEb,KAAe,IAAiB,SACvC,GAAM,iBACN,OAAO,SAAS,KAAO,GAAY,MAGvC,OAGE,EAAU,UAAU,SAAS,QAC/B,GAAU,UAAU,IAAI,eAAgB,YAAa,YAErD,EAAU,UAAY,GAGtB,WAAW,IAAM,CACf,EAAU,UAAU,OAAO,eAAgB,YAAa,YAExD,EAAU,UAAY,wBACrB,OAGL,EAAM,iBAEN,KAAM,GAAO,EAAU,QAAQ,YACzB,EAAc,EAAU,QAAQ,eAChC,EAAY,OAAO,EAAU,QAAQ,cACrC,EAAO,EAAU,QAAQ,eACzB,EAAS,EAAU,QAAQ,UAC3B,EAAY,EAAU,QAAQ,YAC9B,EAAa,EAAU,QAAQ,cAC/B,EAAqB,EAAU,QAAQ,sBACvC,EAAW,EAAU,QAAQ,YAC7B,GAAa,EAAU,QAAQ,gBA+BrC,GA5BA,SAAS,cACP,GAAI,aAAY,WAAY,CAC1B,OAAQ,CACN,OACA,UACA,KAAM,CACJ,cACA,YACA,QAAS,CACP,OACA,OAAQ,GAER,YAAa,IAAM,IAErB,SACA,UAAW,mBACX,qBACA,YACA,aACA,WAAY,CACV,GAAI,EACJ,KAAM,SAOX,OAAO,UAMV,GAAM,MAAN,EAAQ,UAAU,IAAI,iBAND,CAErB,KAAM,GAAY,SADkB,cAAc,iBAC1B,QAAQ,UAEhC,MAAM,GAKR,SAAS,iBAAiB,kBAAmB,IAG/C,EAAU,iBAAiB,QAAS,GAGpC,SAAS,iBAAiB,aAAc,IAAM,CAC5C,WAAW,IAAM,CACf,GAAM,MAAN,EAAQ,UAAU,OAAO,aAErB,EAAU,UAAU,SAAS,QAC/B,GAAU,UAAU,OAAO,eAAgB,YAAa,YAExD,EAAU,UAAY,yBAEvB,MCvHP,KAAM,IAAwB,GAE9B,OAAe,IAAM,CACnB,KAAM,GAAc,SAAS,cAAc,2BACrC,EAAiB,EAAY,cAAc,wBACjD,GAAI,CAAC,GAAe,CAAC,EAAgB,OAGrC,KAAM,GAA6B,EADI,wBACe,IAEhD,EAA4B,OAAO,YAEnC,EACJ,EAA6B,EAA4B,GAWrD,EAAwB,IAAM,CAClC,WAAW,IAAM,CACf,OAAO,SAAS,CACd,IAAK,EACL,SAAU,YAEX,MAGL,OAAO,0BAA4B,GCjBrC,GAhBmB,GAAgC,CACjD,KAAM,GAAM,SAAS,cAA2B,cAC1C,EAAY,SAAS,cAA2B,qBAChD,EAAO,SAAS,cAA2B,QAC3C,EAAU,SAAS,cAA2B,eAE9C,EAAa,IAAM,CACvB,EAAK,UAAU,OAAO,mBACtB,EAAI,UAAU,OAAO,UACrB,EAAQ,UAAU,OAAO,WACzB,GAAS,MAAT,EAAW,UAAU,IAAI,GAAW,SAGtC,EAAU,iBAAiB,QAAS,ICrBtC,KAAM,IAAgB,mBAChB,GAAkB,qBAClB,GAAkB,eAClB,GAAoB,iBAGpB,GAAe,YACf,GAAa,OACb,GAAe,SAsErB,OApE6B,IAAM,CAEjC,KAAM,GAAY,SAAS,eAAe,IAEpC,EAAuB,IAAM,CACjC,EAAU,UAAU,IAAI,KAEpB,EAA0B,IAAM,CACpC,EAAU,UAAU,OAAO,KAIvB,EAAc,SAAS,eAAe,IAEtC,EAAyB,IAAM,CACnC,EAAY,UAAU,IAAI,KAEtB,EAA4B,IAAM,CACtC,EAAY,UAAU,OAAO,KAIzB,EAAc,SAAS,eAAe,IAC5C,EAAY,UAAU,IAAI,IAE1B,KAAM,GAAkB,IAAM,CAC5B,EAAY,UAAU,OAAO,IAC7B,EAAY,UAAU,IAAI,KAEtB,EAAkB,IAAM,CAC5B,EAAY,UAAU,OAAO,IAC7B,EAAY,UAAU,IAAI,KAItB,EAAgB,SAAS,eAAe,IAC9C,EAAc,UAAU,IAAI,IAE5B,KAAM,GAAoB,IAAM,CAC9B,EAAc,UAAU,OAAO,IAC/B,EAAc,UAAU,IAAI,KAExB,EAAoB,IAAM,CAC9B,EAAc,UAAU,OAAO,IAC/B,EAAc,UAAU,IAAI,KAI9B,EAAU,iBAAiB,QAAS,IAAM,CACxC,IACA,IAEI,GACF,KACA,OAKJ,EAAY,iBAAiB,QAAS,IAAM,CAC1C,IACA,IAEA,IACA,OCtDJ,GArB0B,IAAM,CAG9B,CAF6B,GAAG,SAAS,uBAAuB,0BAE5C,QAAS,GAAY,CACvC,KAAM,GAAa,EAAQ,iBAAiB,mBAEtC,EAAU,EAAQ,iBAAoC,yBAE5D,EAAW,QAAS,GAAW,CAC7B,EAAO,iBAAiB,QAAS,IAAM,CACrC,EAAQ,QAAS,GAAW,CAC1B,EAAO,cAAc,YACnB,oDACA,oCCJZ,GAAgB,GAA2B,CACzC,KAAM,GAAQ,CAAC,GAAG,EAAU,uBAAuB,gBAC7C,EAAS,CAAC,GAAG,EAAU,uBAAuB,aAC9C,EAAU,SAAS,cAAc,cACjC,EAAU,SAAS,cAAc,mBAEjC,EAAY,IAAM,CACtB,EAAM,QAAS,GAAsB,CACnC,KAAM,CAAE,UAAW,EAAK,QAClB,EAAQ,SAAS,eAAe,GACtC,EAAK,UAAU,OAAO,GAAW,SACjC,EAAM,UAAU,OAAO,GAAW,QAClC,EAAK,aAAa,gBAAiB,WAErC,EAAU,UAAU,OAAO,GAAW,SACtC,GAAO,MAAP,EAAS,UAAU,OAAO,GAAW,SACrC,GAAO,MAAP,EAAS,UAAU,OAAO,YAGtB,EAAY,GAAsB,CACtC,KAAM,CAAE,UAAW,EAAK,QAClB,EAAQ,SAAS,eAAe,GACtC,EAAK,UAAU,IAAI,GAAW,SAC9B,EAAM,UAAU,IAAI,GAAW,QAC/B,EAAK,aAAa,gBAAiB,QACnC,EAAU,UAAU,IAAI,GAAW,SACnC,GAAO,MAAP,EAAS,UAAU,IAAI,GAAW,SAClC,GAAO,MAAP,EAAS,UAAU,IAAI,YAGnB,EAAc,GAAsB,CACpC,EAAK,UAAU,SAAS,GAAW,SACrC,IAEA,KACA,EAAS,KAIb,EAAO,QAAS,GAAsB,CACpC,KAAM,CAAE,UAAW,EAAK,QAClB,EAAQ,SAAS,eAAe,GAClC,GACF,EAAK,iBAAiB,QAAU,GAAU,CACxC,EAAM,iBACN,EAAM,UAAU,OAAO,GAAW,QAClC,EAAK,UAAU,OAAO,GAAW,SACjC,EAAK,aACH,gBACA,EAAK,aAAa,mBAAqB,OAAS,QAAU,QAG5D,MAGJ,SAAS,KAAK,iBAAiB,YAAc,GAAU,CACrD,GAAI,EAAK,UAAU,SAAS,GAAW,SAAU,CAC/C,KAAM,GAAyB,EAAM,SAAe,GAAK,YAAL,EAAO,QACrD,EAA6B,EAAK,SAAe,GAAK,YAAL,EAAO,QAC1D,CAAC,GAA0B,CAAC,GAC9B,GAAM,UAAU,OAAO,GAAW,QAClC,EAAK,UAAU,OAAO,GAAW,SACjC,EAAK,aAAa,gBAAiB,eAM3C,EAAM,QAAS,GAAsB,CACnC,GAAO,GAAG,EAAM,CACd,MAAQ,GAAU,CAChB,EAAM,iBACN,EAAW,QAKjB,KAAM,GAAW,SAAS,cAAc,gBACxC,SAAS,KAAK,iBAAiB,YAAc,GAAU,CACjD,EAAS,UAAU,SAAS,GAAW,UAEpC,CADqB,EAAS,SAAe,GAAK,YAAL,EAAO,SAEvD,OAKN,OAAO,UAAa,GAAU,CAC5B,GAAI,EAAS,UAAU,SAAS,GAAW,SAAU,CACnD,KAAM,CAAE,OAAQ,EACZ,IAAQ,UACV,MAKF,GAAO,uBACT,QAAO,SAAW,IAAM,CAClB,SAAS,gBAAgB,UAAY,KACvC,OCxFR,GAZkB,GAAsB,CACtC,EAAK,iBAAiB,QAAU,GAAU,CACxC,EAAM,iBACN,EAAK,UAAU,OAAO,GAAW,QACjC,SAAS,eAAe,EAAK,QAAQ,QAAQ,UAAU,OAAO,GAAW,QACzE,EAAK,aACH,gBACA,EAAK,aAAa,mBAAqB,OAAS,QAAU,WCfjD,YAAmB,EAAM,CACtC,GAAI,GAAQ,KACV,MAAO,QAGT,GAAI,EAAK,aAAe,kBAAmB,CACzC,GAAI,GAAgB,EAAK,cACzB,MAAO,IAAgB,EAAc,aAAe,OAGtD,MAAO,GCRT,YAAmB,EAAM,CACvB,GAAI,GAAa,GAAU,GAAM,QACjC,MAAO,aAAgB,IAAc,YAAgB,SAGvD,YAAuB,EAAM,CAC3B,GAAI,GAAa,GAAU,GAAM,YACjC,MAAO,aAAgB,IAAc,YAAgB,aAGvD,YAAsB,EAAM,CAE1B,GAAI,MAAO,aAAe,YACxB,MAAO,GAGT,GAAI,GAAa,GAAU,GAAM,WACjC,MAAO,aAAgB,IAAc,YAAgB,YCnBhD,GAAI,IAAM,KAAK,IACX,GAAM,KAAK,IACX,GAAQ,KAAK,MCAT,YAA+B,EAAS,EAAc,CAC/D,IAAiB,QACnB,GAAe,IAGjB,GAAI,GAAO,EAAQ,wBACf,EAAS,EACT,EAAS,EAEb,GAAI,GAAc,IAAY,EAAc,CAC1C,GAAI,GAAe,EAAQ,aACvB,EAAc,EAAQ,YAGtB,EAAc,GAChB,GAAS,GAAM,EAAK,OAAS,GAAe,GAG1C,EAAe,GACjB,GAAS,GAAM,EAAK,QAAU,GAAgB,GAIlD,MAAO,CACL,MAAO,EAAK,MAAQ,EACpB,OAAQ,EAAK,OAAS,EACtB,IAAK,EAAK,IAAM,EAChB,MAAO,EAAK,MAAQ,EACpB,OAAQ,EAAK,OAAS,EACtB,KAAM,EAAK,KAAO,EAClB,EAAG,EAAK,KAAO,EACf,EAAG,EAAK,IAAM,GChCH,YAAyB,EAAM,CAC5C,GAAI,GAAM,GAAU,GAChB,EAAa,EAAI,YACjB,EAAY,EAAI,YACpB,MAAO,CACL,WAAY,EACZ,UAAW,GCPA,YAA8B,EAAS,CACpD,MAAO,CACL,WAAY,EAAQ,WACpB,UAAW,EAAQ,WCCR,YAAuB,EAAM,CAC1C,MAAI,KAAS,GAAU,IAAS,CAAC,GAAc,GACtC,GAAgB,GAEhB,GAAqB,GCRjB,YAAqB,EAAS,CAC3C,MAAO,GAAW,GAAQ,UAAY,IAAI,cAAgB,KCA7C,YAA4B,EAAS,CAElD,MAAS,KAAU,GAAW,EAAQ,cACtC,EAAQ,WAAa,OAAO,UAAU,gBCDzB,YAA6B,EAAS,CAQnD,MAAO,IAAsB,GAAmB,IAAU,KAAO,GAAgB,GAAS,WCV7E,YAA0B,EAAS,CAChD,MAAO,IAAU,GAAS,iBAAiB,GCD9B,YAAwB,EAAS,CAE9C,GAAI,GAAoB,GAAiB,GACrC,EAAW,EAAkB,SAC7B,EAAY,EAAkB,UAC9B,EAAY,EAAkB,UAElC,MAAO,6BAA6B,KAAK,EAAW,EAAY,GCClE,YAAyB,EAAS,CAChC,GAAI,GAAO,EAAQ,wBACf,EAAS,GAAM,EAAK,OAAS,EAAQ,aAAe,EACpD,EAAS,GAAM,EAAK,QAAU,EAAQ,cAAgB,EAC1D,MAAO,KAAW,GAAK,IAAW,EAKrB,YAA0B,EAAyB,EAAc,EAAS,CACnF,IAAY,QACd,GAAU,IAGZ,GAAI,GAA0B,GAAc,GACxC,EAAuB,GAAc,IAAiB,GAAgB,GACtE,EAAkB,GAAmB,GACrC,EAAO,GAAsB,EAAyB,GACtD,EAAS,CACX,WAAY,EACZ,UAAW,GAET,EAAU,CACZ,EAAG,EACH,EAAG,GAGL,MAAI,IAA2B,CAAC,GAA2B,CAAC,IACtD,KAAY,KAAkB,QAClC,GAAe,KACb,GAAS,GAAc,IAGrB,GAAc,GAChB,GAAU,GAAsB,EAAc,IAC9C,EAAQ,GAAK,EAAa,WAC1B,EAAQ,GAAK,EAAa,WACjB,GACT,GAAQ,EAAI,GAAoB,KAI7B,CACL,EAAG,EAAK,KAAO,EAAO,WAAa,EAAQ,EAC3C,EAAG,EAAK,IAAM,EAAO,UAAY,EAAQ,EACzC,MAAO,EAAK,MACZ,OAAQ,EAAK,QCpDF,YAAuB,EAAS,CAC7C,GAAI,GAAa,GAAsB,GAGnC,EAAQ,EAAQ,YAChB,EAAS,EAAQ,aAErB,MAAI,MAAK,IAAI,EAAW,MAAQ,IAAU,GACxC,GAAQ,EAAW,OAGjB,KAAK,IAAI,EAAW,OAAS,IAAW,GAC1C,GAAS,EAAW,QAGf,CACL,EAAG,EAAQ,WACX,EAAG,EAAQ,UACX,MAAO,EACP,OAAQ,GCnBG,YAAuB,EAAS,CAC7C,MAAI,IAAY,KAAa,OACpB,EAMP,EAAQ,cACR,EAAQ,YACR,IAAa,GAAW,EAAQ,KAAO,OAEvC,GAAmB,GCXR,YAAyB,EAAM,CAC5C,MAAI,CAAC,OAAQ,OAAQ,aAAa,QAAQ,GAAY,KAAU,EAEvD,EAAK,cAAc,KAGxB,GAAc,IAAS,GAAe,GACjC,EAGF,GAAgB,GAAc,ICHxB,YAA2B,EAAS,EAAM,CACvD,GAAI,GAEA,IAAS,QACX,GAAO,IAGT,GAAI,GAAe,GAAgB,GAC/B,EAAS,IAAmB,IAAwB,EAAQ,gBAAkB,KAAO,OAAS,EAAsB,MACpH,EAAM,GAAU,GAChB,EAAS,EAAS,CAAC,GAAK,OAAO,EAAI,gBAAkB,GAAI,GAAe,GAAgB,EAAe,IAAM,EAC7G,EAAc,EAAK,OAAO,GAC9B,MAAO,GAAS,EAChB,EAAY,OAAO,GAAkB,GAAc,KCvBtC,YAAwB,EAAS,CAC9C,MAAO,CAAC,QAAS,KAAM,MAAM,QAAQ,GAAY,KAAa,ECKhE,YAA6B,EAAS,CACpC,MAAI,CAAC,GAAc,IACnB,GAAiB,GAAS,WAAa,QAC9B,KAGF,EAAQ,aAKjB,YAA4B,EAAS,CACnC,GAAI,GAAY,UAAU,UAAU,cAAc,QAAQ,aAAe,GACrE,EAAO,UAAU,UAAU,QAAQ,aAAe,GAEtD,GAAI,GAAQ,GAAc,GAAU,CAElC,GAAI,GAAa,GAAiB,GAElC,GAAI,EAAW,WAAa,QAC1B,MAAO,MAIX,GAAI,GAAc,GAAc,GAMhC,IAJI,GAAa,IACf,GAAc,EAAY,MAGrB,GAAc,IAAgB,CAAC,OAAQ,QAAQ,QAAQ,GAAY,IAAgB,GAAG,CAC3F,GAAI,GAAM,GAAiB,GAI3B,GAAI,EAAI,YAAc,QAAU,EAAI,cAAgB,QAAU,EAAI,UAAY,SAAW,CAAC,YAAa,eAAe,QAAQ,EAAI,cAAgB,IAAM,GAAa,EAAI,aAAe,UAAY,GAAa,EAAI,QAAU,EAAI,SAAW,OAC5O,MAAO,GAEP,EAAc,EAAY,WAI9B,MAAO,MAKM,YAAyB,EAAS,CAI/C,OAHI,GAAS,GAAU,GACnB,EAAe,GAAoB,GAEhC,GAAgB,GAAe,IAAiB,GAAiB,GAAc,WAAa,UACjG,EAAe,GAAoB,GAGrC,MAAI,IAAiB,IAAY,KAAkB,QAAU,GAAY,KAAkB,QAAU,GAAiB,GAAc,WAAa,UACxI,EAGF,GAAgB,GAAmB,IAAY,EClEjD,GAAI,IAAM,MACN,GAAS,SACT,GAAQ,QACR,GAAO,OACP,GAAO,OACP,GAAiB,CAAC,GAAK,GAAQ,GAAO,IACtC,GAAQ,QACR,GAAM,MACN,GAAkB,kBAClB,GAAW,WACX,GAAS,SACT,GAAY,YACZ,GAAmC,GAAe,OAAO,SAAU,EAAK,EAAW,CAC5F,MAAO,GAAI,OAAO,CAAC,EAAY,IAAM,GAAO,EAAY,IAAM,MAC7D,IACQ,GAA0B,GAAG,OAAO,GAAgB,CAAC,KAAO,OAAO,SAAU,EAAK,EAAW,CACtG,MAAO,GAAI,OAAO,CAAC,EAAW,EAAY,IAAM,GAAO,EAAY,IAAM,MACxE,IAEQ,GAAa,aACb,GAAO,OACP,GAAY,YAEZ,GAAa,aACb,GAAO,OACP,GAAY,YAEZ,GAAc,cACd,GAAQ,QACR,GAAa,aACb,GAAiB,CAAC,GAAY,GAAM,GAAW,GAAY,GAAM,GAAW,GAAa,GAAO,IC5B3G,YAAe,EAAW,CACxB,GAAI,GAAM,GAAI,KACV,EAAU,GAAI,KACd,EAAS,GACb,EAAU,QAAQ,SAAU,EAAU,CACpC,EAAI,IAAI,EAAS,KAAM,KAGzB,WAAc,EAAU,CACtB,EAAQ,IAAI,EAAS,MACrB,GAAI,GAAW,GAAG,OAAO,EAAS,UAAY,GAAI,EAAS,kBAAoB,IAC/E,EAAS,QAAQ,SAAU,EAAK,CAC9B,GAAI,CAAC,EAAQ,IAAI,GAAM,CACrB,GAAI,GAAc,EAAI,IAAI,GAEtB,GACF,EAAK,MAIX,EAAO,KAAK,GAGd,SAAU,QAAQ,SAAU,EAAU,CAC/B,EAAQ,IAAI,EAAS,OAExB,EAAK,KAGF,EAGM,YAAwB,EAAW,CAEhD,GAAI,GAAmB,GAAM,GAE7B,MAAO,IAAe,OAAO,SAAU,EAAK,EAAO,CACjD,MAAO,GAAI,OAAO,EAAiB,OAAO,SAAU,EAAU,CAC5D,MAAO,GAAS,QAAU,MAE3B,IC1CU,YAAkB,EAAI,CACnC,GAAI,GACJ,MAAO,WAAY,CACjB,MAAK,IACH,GAAU,GAAI,SAAQ,SAAU,EAAS,CACvC,QAAQ,UAAU,KAAK,UAAY,CACjC,EAAU,OACV,EAAQ,UAKP,GCZI,YAAqB,EAAW,CAC7C,GAAI,GAAS,EAAU,OAAO,SAAU,EAAQ,EAAS,CACvD,GAAI,GAAW,EAAO,EAAQ,MAC9B,SAAO,EAAQ,MAAQ,EAAW,OAAO,OAAO,GAAI,EAAU,EAAS,CACrE,QAAS,OAAO,OAAO,GAAI,EAAS,QAAS,EAAQ,SACrD,KAAM,OAAO,OAAO,GAAI,EAAS,KAAM,EAAQ,QAC5C,EACE,GACN,IAEH,MAAO,QAAO,KAAK,GAAQ,IAAI,SAAU,EAAK,CAC5C,MAAO,GAAO,KCGlB,GAAI,IAAwB,+GACxB,GAAsB,gIACtB,GAAkB,CACpB,UAAW,SACX,UAAW,GACX,SAAU,YAGZ,aAA4B,CAC1B,OAAS,GAAO,UAAU,OAAQ,EAAO,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAC/E,EAAK,GAAQ,UAAU,GAGzB,MAAO,CAAC,EAAK,KAAK,SAAU,EAAS,CACnC,MAAO,CAAE,IAAW,MAAO,GAAQ,uBAA0B,cAI1D,YAAyB,EAAkB,CAC5C,IAAqB,QACvB,GAAmB,IAGrB,GAAI,GAAoB,EACpB,EAAwB,EAAkB,iBAC1C,EAAmB,IAA0B,OAAS,GAAK,EAC3D,EAAyB,EAAkB,eAC3C,EAAiB,IAA2B,OAAS,GAAkB,EAC3E,MAAO,UAAsB,EAAW,EAAQ,EAAS,CACnD,IAAY,QACd,GAAU,GAGZ,GAAI,GAAQ,CACV,UAAW,SACX,iBAAkB,GAClB,QAAS,OAAO,OAAO,GAAI,GAAiB,GAC5C,cAAe,GACf,SAAU,CACR,UAAW,EACX,OAAQ,GAEV,WAAY,GACZ,OAAQ,IAEN,EAAmB,GACnB,EAAc,GACd,EAAW,CACb,MAAO,EACP,WAAY,SAAoB,EAAkB,CAChD,GAAI,IAAU,MAAO,IAAqB,WAAa,EAAiB,EAAM,SAAW,EACzF,IACA,EAAM,QAAU,OAAO,OAAO,GAAI,EAAgB,EAAM,QAAS,IACjE,EAAM,cAAgB,CACpB,UAAW,GAAU,GAAa,GAAkB,GAAa,EAAU,eAAiB,GAAkB,EAAU,gBAAkB,GAC1I,OAAQ,GAAkB,IAI5B,GAAI,IAAmB,GAAe,GAAY,GAAG,OAAO,EAAkB,EAAM,QAAQ,aAO5F,GALA,EAAM,iBAAmB,GAAiB,OAAO,SAAU,GAAG,CAC5D,MAAO,IAAE,UAIP,GAAuC,wBAiC3C,WACO,EAAS,UAOlB,YAAa,UAAuB,CAClC,GAAI,GAIJ,IAAI,GAAkB,EAAM,SACxB,GAAY,EAAgB,UAC5B,GAAS,EAAgB,OAG7B,GAAI,EAAC,GAAiB,GAAW,IASjC,GAAM,MAAQ,CACZ,UAAW,GAAiB,GAAW,GAAgB,IAAS,EAAM,QAAQ,WAAa,SAC3F,OAAQ,GAAc,KAOxB,EAAM,MAAQ,GACd,EAAM,UAAY,EAAM,QAAQ,UAKhC,EAAM,iBAAiB,QAAQ,SAAU,GAAU,CACjD,MAAO,GAAM,cAAc,GAAS,MAAQ,OAAO,OAAO,GAAI,GAAS,QAIzE,OAFI,GAAkB,EAEb,GAAQ,EAAG,GAAQ,EAAM,iBAAiB,OAAQ,KAAS,CAUlE,GAAI,EAAM,QAAU,GAAM,CACxB,EAAM,MAAQ,GACd,GAAQ,GACR,SAGF,GAAI,IAAwB,EAAM,iBAAiB,IAC/C,GAAK,GAAsB,GAC3B,GAAyB,GAAsB,QAC/C,GAAW,KAA2B,OAAS,GAAK,GACpD,GAAO,GAAsB,KAE7B,MAAO,KAAO,YAChB,GAAQ,GAAG,CACT,MAAO,EACP,QAAS,GACT,KAAM,GACN,SAAU,KACN,OAMZ,OAAQ,GAAS,UAAY,CAC3B,MAAO,IAAI,SAAQ,SAAU,EAAS,CACpC,EAAS,cACT,EAAQ,OAGZ,QAAS,UAAmB,CAC1B,IACA,EAAc,KAIlB,GAAI,CAAC,GAAiB,EAAW,GAK/B,MAAO,GAGT,EAAS,WAAW,GAAS,KAAK,SAAU,EAAO,CAC7C,CAAC,GAAe,EAAQ,eAC1B,EAAQ,cAAc,KAQ1B,YAA8B,CAC5B,EAAM,iBAAiB,QAAQ,SAAU,EAAO,CAC9C,GAAI,GAAO,EAAM,KACb,GAAgB,EAAM,QACtB,GAAU,KAAkB,OAAS,GAAK,GAC1C,EAAS,EAAM,OAEnB,GAAI,MAAO,IAAW,WAAY,CAChC,GAAI,IAAY,EAAO,CACrB,MAAO,EACP,KAAM,EACN,SAAU,EACV,QAAS,KAGP,GAAS,UAAkB,GAE/B,EAAiB,KAAK,IAAa,OAKzC,YAAkC,CAChC,EAAiB,QAAQ,SAAU,EAAI,CACrC,MAAO,OAET,EAAmB,GAGrB,MAAO,IAGJ,GAAI,IAA4B,KC9PnC,GAAU,CACZ,QAAS,IAGX,YAAgB,EAAM,CACpB,GAAI,GAAQ,EAAK,MACb,EAAW,EAAK,SAChB,EAAU,EAAK,QACf,EAAkB,EAAQ,OAC1B,EAAS,IAAoB,OAAS,GAAO,EAC7C,EAAkB,EAAQ,OAC1B,EAAS,IAAoB,OAAS,GAAO,EAC7C,EAAS,GAAU,EAAM,SAAS,QAClC,EAAgB,GAAG,OAAO,EAAM,cAAc,UAAW,EAAM,cAAc,QAEjF,MAAI,IACF,EAAc,QAAQ,SAAU,EAAc,CAC5C,EAAa,iBAAiB,SAAU,EAAS,OAAQ,MAIzD,GACF,EAAO,iBAAiB,SAAU,EAAS,OAAQ,IAG9C,UAAY,CACb,GACF,EAAc,QAAQ,SAAU,EAAc,CAC5C,EAAa,oBAAoB,SAAU,EAAS,OAAQ,MAI5D,GACF,EAAO,oBAAoB,SAAU,EAAS,OAAQ,KAM5D,OAAe,CACb,KAAM,iBACN,QAAS,GACT,MAAO,QACP,GAAI,UAAc,GAClB,OAAQ,GACR,KAAM,IC9CO,YAA0B,EAAW,CAClD,MAAO,GAAU,MAAM,KAAK,GCFf,YAAsB,EAAW,CAC9C,MAAO,GAAU,MAAM,KAAK,GCDf,YAAkC,EAAW,CAC1D,MAAO,CAAC,MAAO,UAAU,QAAQ,IAAc,EAAI,IAAM,ICG5C,YAAwB,EAAM,CAC3C,GAAI,GAAY,EAAK,UACjB,EAAU,EAAK,QACf,EAAY,EAAK,UACjB,EAAgB,EAAY,GAAiB,GAAa,KAC1D,EAAY,EAAY,GAAa,GAAa,KAClD,EAAU,EAAU,EAAI,EAAU,MAAQ,EAAI,EAAQ,MAAQ,EAC9D,EAAU,EAAU,EAAI,EAAU,OAAS,EAAI,EAAQ,OAAS,EAChE,EAEJ,OAAQ,OACD,IACH,EAAU,CACR,EAAG,EACH,EAAG,EAAU,EAAI,EAAQ,QAE3B,UAEG,IACH,EAAU,CACR,EAAG,EACH,EAAG,EAAU,EAAI,EAAU,QAE7B,UAEG,IACH,EAAU,CACR,EAAG,EAAU,EAAI,EAAU,MAC3B,EAAG,GAEL,UAEG,IACH,EAAU,CACR,EAAG,EAAU,EAAI,EAAQ,MACzB,EAAG,GAEL,cAGA,EAAU,CACR,EAAG,EAAU,EACb,EAAG,EAAU,GAInB,GAAI,GAAW,EAAgB,GAAyB,GAAiB,KAEzE,GAAI,GAAY,KAAM,CACpB,GAAI,GAAM,IAAa,IAAM,SAAW,QAExC,OAAQ,OACD,IACH,EAAQ,GAAY,EAAQ,GAAa,GAAU,GAAO,EAAI,EAAQ,GAAO,GAC7E,UAEG,IACH,EAAQ,GAAY,EAAQ,GAAa,GAAU,GAAO,EAAI,EAAQ,GAAO,GAC7E,gBAMN,MAAO,GClET,YAAuB,EAAM,CAC3B,GAAI,GAAQ,EAAK,MACb,EAAO,EAAK,KAKhB,EAAM,cAAc,GAAQ,GAAe,CACzC,UAAW,EAAM,MAAM,UACvB,QAAS,EAAM,MAAM,OACrB,SAAU,WACV,UAAW,EAAM,YAKrB,OAAe,CACb,KAAM,gBACN,QAAS,GACT,MAAO,OACP,GAAI,GACJ,KAAM,ICdJ,GAAa,CACf,IAAK,OACL,MAAO,OACP,OAAQ,OACR,KAAM,QAKR,YAA2B,EAAM,CAC/B,GAAI,GAAI,EAAK,EACT,EAAI,EAAK,EACT,EAAM,OACN,EAAM,EAAI,kBAAoB,EAClC,MAAO,CACL,EAAG,GAAM,EAAI,GAAO,GAAO,EAC3B,EAAG,GAAM,EAAI,GAAO,GAAO,GAIxB,YAAqB,EAAO,CACjC,GAAI,GAEA,EAAS,EAAM,OACf,EAAa,EAAM,WACnB,EAAY,EAAM,UAClB,EAAY,EAAM,UAClB,EAAU,EAAM,QAChB,EAAW,EAAM,SACjB,EAAkB,EAAM,gBACxB,EAAW,EAAM,SACjB,EAAe,EAAM,aACrB,EAAU,EAAM,QAChB,EAAa,EAAQ,EACrB,EAAI,IAAe,OAAS,EAAI,EAChC,EAAa,EAAQ,EACrB,EAAI,IAAe,OAAS,EAAI,EAEhC,EAAQ,MAAO,IAAiB,WAAa,EAAa,CAC5D,EAAG,EACH,EAAG,IACA,CACH,EAAG,EACH,EAAG,GAGL,EAAI,EAAM,EACV,EAAI,EAAM,EACV,GAAI,GAAO,EAAQ,eAAe,KAC9B,GAAO,EAAQ,eAAe,KAC9B,GAAQ,GACR,EAAQ,GACR,GAAM,OAEV,GAAI,EAAU,CACZ,GAAI,IAAe,GAAgB,GAC/B,GAAa,eACb,GAAY,cAchB,GAZI,KAAiB,GAAU,IAC7B,IAAe,GAAmB,GAE9B,GAAiB,IAAc,WAAa,UAAY,IAAa,YACvE,IAAa,eACb,GAAY,gBAKhB,GAAe,GAEX,IAAc,IAAQ,KAAc,IAAQ,IAAc,KAAU,IAAc,GAAK,CACzF,EAAQ,GACR,GAAI,IAAU,GAAW,KAAiB,IAAO,GAAI,eAAiB,GAAI,eAAe,OACzF,GAAa,IACb,GAAK,GAAU,EAAW,OAC1B,GAAK,EAAkB,EAAI,GAG7B,GAAI,IAAc,IAAS,KAAc,IAAO,IAAc,KAAW,IAAc,GAAK,CAC1F,GAAQ,GACR,GAAI,IAAU,GAAW,KAAiB,IAAO,GAAI,eAAiB,GAAI,eAAe,MACzF,GAAa,IACb,GAAK,GAAU,EAAW,MAC1B,GAAK,EAAkB,EAAI,IAI/B,GAAI,IAAe,OAAO,OAAO,CAC/B,SAAU,GACT,GAAY,IAEX,GAAQ,IAAiB,GAAO,GAAkB,CACpD,EAAG,EACH,EAAG,IACA,CACH,EAAG,EACH,EAAG,GAML,GAHA,EAAI,GAAM,EACV,EAAI,GAAM,EAEN,EAAiB,CACnB,GAAI,IAEJ,MAAO,QAAO,OAAO,GAAI,GAAe,IAAiB,GAAI,GAAe,GAAS,GAAO,IAAM,GAAI,GAAe,IAAS,EAAO,IAAM,GAAI,GAAe,UAAa,IAAI,kBAAoB,IAAM,EAAI,aAAe,EAAI,OAAS,EAAI,MAAQ,eAAiB,EAAI,OAAS,EAAI,SAAU,KAGnS,MAAO,QAAO,OAAO,GAAI,GAAe,GAAkB,GAAI,EAAgB,GAAS,GAAO,EAAI,KAAO,GAAI,EAAgB,IAAS,EAAO,EAAI,KAAO,GAAI,EAAgB,UAAY,GAAI,IAG9L,YAAuB,EAAO,CAC5B,GAAI,GAAQ,EAAM,MACd,EAAU,EAAM,QAChB,EAAwB,EAAQ,gBAChC,EAAkB,IAA0B,OAAS,GAAO,EAC5D,EAAoB,EAAQ,SAC5B,EAAW,IAAsB,OAAS,GAAO,EACjD,EAAwB,EAAQ,aAChC,EAAe,IAA0B,OAAS,GAAO,EAE7D,GAAI,GAAuC,MAU3C,GAAI,GAAe,CACjB,UAAW,GAAiB,EAAM,WAClC,UAAW,GAAa,EAAM,WAC9B,OAAQ,EAAM,SAAS,OACvB,WAAY,EAAM,MAAM,OACxB,gBAAiB,EACjB,QAAS,EAAM,QAAQ,WAAa,SAGlC,EAAM,cAAc,eAAiB,MACvC,GAAM,OAAO,OAAS,OAAO,OAAO,GAAI,EAAM,OAAO,OAAQ,GAAY,OAAO,OAAO,GAAI,EAAc,CACvG,QAAS,EAAM,cAAc,cAC7B,SAAU,EAAM,QAAQ,SACxB,SAAU,EACV,aAAc,OAId,EAAM,cAAc,OAAS,MAC/B,GAAM,OAAO,MAAQ,OAAO,OAAO,GAAI,EAAM,OAAO,MAAO,GAAY,OAAO,OAAO,GAAI,EAAc,CACrG,QAAS,EAAM,cAAc,MAC7B,SAAU,WACV,SAAU,GACV,aAAc,OAIlB,EAAM,WAAW,OAAS,OAAO,OAAO,GAAI,EAAM,WAAW,OAAQ,CACnE,wBAAyB,EAAM,YAKnC,OAAe,CACb,KAAM,gBACN,QAAS,GACT,MAAO,cACP,GAAI,GACJ,KAAM,IC/KR,YAAqB,EAAM,CACzB,GAAI,GAAQ,EAAK,MACjB,OAAO,KAAK,EAAM,UAAU,QAAQ,SAAU,EAAM,CAClD,GAAI,GAAQ,EAAM,OAAO,IAAS,GAC9B,EAAa,EAAM,WAAW,IAAS,GACvC,EAAU,EAAM,SAAS,GAEzB,CAAC,GAAc,IAAY,CAAC,GAAY,IAO5C,QAAO,OAAO,EAAQ,MAAO,GAC7B,OAAO,KAAK,GAAY,QAAQ,SAAU,EAAM,CAC9C,GAAI,GAAQ,EAAW,GAEnB,IAAU,GACZ,EAAQ,gBAAgB,GAExB,EAAQ,aAAa,EAAM,IAAU,GAAO,GAAK,QAMzD,YAAgB,EAAO,CACrB,GAAI,GAAQ,EAAM,MACd,EAAgB,CAClB,OAAQ,CACN,SAAU,EAAM,QAAQ,SACxB,KAAM,IACN,IAAK,IACL,OAAQ,KAEV,MAAO,CACL,SAAU,YAEZ,UAAW,IAEb,cAAO,OAAO,EAAM,SAAS,OAAO,MAAO,EAAc,QACzD,EAAM,OAAS,EAEX,EAAM,SAAS,OACjB,OAAO,OAAO,EAAM,SAAS,MAAM,MAAO,EAAc,OAGnD,UAAY,CACjB,OAAO,KAAK,EAAM,UAAU,QAAQ,SAAU,EAAM,CAClD,GAAI,GAAU,EAAM,SAAS,GACzB,EAAa,EAAM,WAAW,IAAS,GACvC,EAAkB,OAAO,KAAK,EAAM,OAAO,eAAe,GAAQ,EAAM,OAAO,GAAQ,EAAc,IAErG,EAAQ,EAAgB,OAAO,SAAU,EAAO,EAAU,CAC5D,SAAM,GAAY,GACX,GACN,IAEC,CAAC,GAAc,IAAY,CAAC,GAAY,IAI5C,QAAO,OAAO,EAAQ,MAAO,GAC7B,OAAO,KAAK,GAAY,QAAQ,SAAU,EAAW,CACnD,EAAQ,gBAAgB,SAOhC,OAAe,CACb,KAAM,cACN,QAAS,GACT,MAAO,QACP,GAAI,GACJ,OAAQ,GACR,SAAU,CAAC,kBC/EN,YAAiC,EAAW,EAAO,EAAQ,CAChE,GAAI,GAAgB,GAAiB,GACjC,EAAiB,CAAC,GAAM,IAAK,QAAQ,IAAkB,EAAI,GAAK,EAEhE,EAAO,MAAO,IAAW,WAAa,EAAO,OAAO,OAAO,GAAI,EAAO,CACxE,UAAW,KACP,EACF,EAAW,EAAK,GAChB,EAAW,EAAK,GAEpB,SAAW,GAAY,EACvB,EAAY,IAAY,GAAK,EACtB,CAAC,GAAM,IAAO,QAAQ,IAAkB,EAAI,CACjD,EAAG,EACH,EAAG,GACD,CACF,EAAG,EACH,EAAG,GAIP,YAAgB,EAAO,CACrB,GAAI,GAAQ,EAAM,MACd,EAAU,EAAM,QAChB,EAAO,EAAM,KACb,EAAkB,EAAQ,OAC1B,EAAS,IAAoB,OAAS,CAAC,EAAG,GAAK,EAC/C,EAAO,UAAkB,SAAU,EAAK,EAAW,CACrD,SAAI,GAAa,GAAwB,EAAW,EAAM,MAAO,GAC1D,GACN,IACC,EAAwB,EAAK,EAAM,WACnC,EAAI,EAAsB,EAC1B,EAAI,EAAsB,EAE1B,EAAM,cAAc,eAAiB,MACvC,GAAM,cAAc,cAAc,GAAK,EACvC,EAAM,cAAc,cAAc,GAAK,GAGzC,EAAM,cAAc,GAAQ,EAI9B,OAAe,CACb,KAAM,SACN,QAAS,GACT,MAAO,OACP,SAAU,CAAC,iBACX,GAAI,ICpDF,GAAO,CACT,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,UAEQ,YAA8B,EAAW,CACtD,MAAO,GAAU,QAAQ,yBAA0B,SAAU,EAAS,CACpE,MAAO,IAAK,KCRhB,GAAI,IAAO,CACT,MAAO,MACP,IAAK,SAEQ,YAAuC,EAAW,CAC/D,MAAO,GAAU,QAAQ,aAAc,SAAU,EAAS,CACxD,MAAO,IAAK,KCHD,YAAyB,EAAS,CAC/C,GAAI,GAAM,GAAU,GAChB,EAAO,GAAmB,GAC1B,EAAiB,EAAI,eACrB,EAAQ,EAAK,YACb,EAAS,EAAK,aACd,EAAI,EACJ,EAAI,EAMR,MAAI,IACF,GAAQ,EAAe,MACvB,EAAS,EAAe,OASnB,iCAAiC,KAAK,UAAU,YACnD,GAAI,EAAe,WACnB,EAAI,EAAe,YAIhB,CACL,MAAO,EACP,OAAQ,EACR,EAAG,EAAI,GAAoB,GAC3B,EAAG,GC9BQ,YAAyB,EAAS,CAC/C,GAAI,GAEA,EAAO,GAAmB,GAC1B,EAAY,GAAgB,GAC5B,EAAQ,GAAwB,EAAQ,gBAAkB,KAAO,OAAS,EAAsB,KAChG,EAAQ,GAAI,EAAK,YAAa,EAAK,YAAa,EAAO,EAAK,YAAc,EAAG,EAAO,EAAK,YAAc,GACvG,EAAS,GAAI,EAAK,aAAc,EAAK,aAAc,EAAO,EAAK,aAAe,EAAG,EAAO,EAAK,aAAe,GAC5G,EAAI,CAAC,EAAU,WAAa,GAAoB,GAChD,EAAI,CAAC,EAAU,UAEnB,MAAI,IAAiB,GAAQ,GAAM,YAAc,OAC/C,IAAK,GAAI,EAAK,YAAa,EAAO,EAAK,YAAc,GAAK,GAGrD,CACL,MAAO,EACP,OAAQ,EACR,EAAG,EACH,EAAG,GCzBQ,YAAkB,EAAQ,EAAO,CAC9C,GAAI,GAAW,EAAM,aAAe,EAAM,cAE1C,GAAI,EAAO,SAAS,GAClB,MAAO,GAEJ,GAAI,GAAY,GAAa,GAAW,CACzC,GAAI,GAAO,EAEX,EAAG,CACD,GAAI,GAAQ,EAAO,WAAW,GAC5B,MAAO,GAIT,EAAO,EAAK,YAAc,EAAK,WACxB,GAIb,MAAO,GCrBM,YAA0B,EAAM,CAC7C,MAAO,QAAO,OAAO,GAAI,EAAM,CAC7B,KAAM,EAAK,EACX,IAAK,EAAK,EACV,MAAO,EAAK,EAAI,EAAK,MACrB,OAAQ,EAAK,EAAI,EAAK,SCU1B,YAAoC,EAAS,CAC3C,GAAI,GAAO,GAAsB,GACjC,SAAK,IAAM,EAAK,IAAM,EAAQ,UAC9B,EAAK,KAAO,EAAK,KAAO,EAAQ,WAChC,EAAK,OAAS,EAAK,IAAM,EAAQ,aACjC,EAAK,MAAQ,EAAK,KAAO,EAAQ,YACjC,EAAK,MAAQ,EAAQ,YACrB,EAAK,OAAS,EAAQ,aACtB,EAAK,EAAI,EAAK,KACd,EAAK,EAAI,EAAK,IACP,EAGT,YAAoC,EAAS,EAAgB,CAC3D,MAAO,KAAmB,GAAW,GAAiB,GAAgB,IAAY,GAAU,GAAkB,GAA2B,GAAkB,GAAiB,GAAgB,GAAmB,KAMjN,YAA4B,EAAS,CACnC,GAAI,GAAkB,GAAkB,GAAc,IAClD,EAAoB,CAAC,WAAY,SAAS,QAAQ,GAAiB,GAAS,WAAa,EACzF,EAAiB,GAAqB,GAAc,GAAW,GAAgB,GAAW,EAE9F,MAAK,IAAU,GAKR,EAAgB,OAAO,SAAU,EAAgB,CACtD,MAAO,IAAU,IAAmB,GAAS,EAAgB,IAAmB,GAAY,KAAoB,SALzG,GAWI,YAAyB,EAAS,EAAU,EAAc,CACvE,GAAI,GAAsB,IAAa,kBAAoB,GAAmB,GAAW,GAAG,OAAO,GAC/F,EAAkB,GAAG,OAAO,EAAqB,CAAC,IAClD,EAAsB,EAAgB,GACtC,EAAe,EAAgB,OAAO,SAAU,EAAS,EAAgB,CAC3E,GAAI,GAAO,GAA2B,EAAS,GAC/C,SAAQ,IAAM,GAAI,EAAK,IAAK,EAAQ,KACpC,EAAQ,MAAQ,GAAI,EAAK,MAAO,EAAQ,OACxC,EAAQ,OAAS,GAAI,EAAK,OAAQ,EAAQ,QAC1C,EAAQ,KAAO,GAAI,EAAK,KAAM,EAAQ,MAC/B,GACN,GAA2B,EAAS,IACvC,SAAa,MAAQ,EAAa,MAAQ,EAAa,KACvD,EAAa,OAAS,EAAa,OAAS,EAAa,IACzD,EAAa,EAAI,EAAa,KAC9B,EAAa,EAAI,EAAa,IACvB,ECpEM,aAA8B,CAC3C,MAAO,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,GCJK,YAA4B,EAAe,CACxD,MAAO,QAAO,OAAO,GAAI,KAAsB,GCFlC,YAAyB,EAAO,EAAM,CACnD,MAAO,GAAK,OAAO,SAAU,EAAS,EAAK,CACzC,SAAQ,GAAO,EACR,GACN,ICMU,YAAwB,EAAO,EAAS,CACjD,IAAY,QACd,GAAU,IAGZ,GAAI,GAAW,EACX,EAAqB,EAAS,UAC9B,EAAY,IAAuB,OAAS,EAAM,UAAY,EAC9D,EAAoB,EAAS,SAC7B,EAAW,IAAsB,OAAS,GAAkB,EAC5D,EAAwB,EAAS,aACjC,EAAe,IAA0B,OAAS,GAAW,EAC7D,EAAwB,EAAS,eACjC,EAAiB,IAA0B,OAAS,GAAS,EAC7D,EAAuB,EAAS,YAChC,EAAc,IAAyB,OAAS,GAAQ,EACxD,EAAmB,EAAS,QAC5B,EAAU,IAAqB,OAAS,EAAI,EAC5C,EAAgB,GAAmB,MAAO,IAAY,SAAW,EAAU,GAAgB,EAAS,KACpG,EAAa,IAAmB,GAAS,GAAY,GACrD,EAAa,EAAM,MAAM,OACzB,GAAU,EAAM,SAAS,EAAc,EAAa,GACpD,GAAqB,GAAgB,GAAU,IAAW,GAAU,GAAQ,gBAAkB,GAAmB,EAAM,SAAS,QAAS,EAAU,GACnJ,EAAsB,GAAsB,EAAM,SAAS,WAC3D,GAAgB,GAAe,CACjC,UAAW,EACX,QAAS,EACT,SAAU,WACV,UAAW,IAET,GAAmB,GAAiB,OAAO,OAAO,GAAI,EAAY,KAClE,GAAoB,IAAmB,GAAS,GAAmB,EAGnE,GAAkB,CACpB,IAAK,GAAmB,IAAM,GAAkB,IAAM,EAAc,IACpE,OAAQ,GAAkB,OAAS,GAAmB,OAAS,EAAc,OAC7E,KAAM,GAAmB,KAAO,GAAkB,KAAO,EAAc,KACvE,MAAO,GAAkB,MAAQ,GAAmB,MAAQ,EAAc,OAExE,GAAa,EAAM,cAAc,OAErC,GAAI,IAAmB,IAAU,GAAY,CAC3C,GAAI,IAAS,GAAW,GACxB,OAAO,KAAK,IAAiB,QAAQ,SAAU,GAAK,CAClD,GAAI,IAAW,CAAC,GAAO,IAAQ,QAAQ,KAAQ,EAAI,EAAI,GACnD,GAAO,CAAC,GAAK,IAAQ,QAAQ,KAAQ,EAAI,IAAM,IACnD,GAAgB,KAAQ,GAAO,IAAQ,KAI3C,MAAO,ICzDM,YAA8B,EAAO,EAAS,CACvD,IAAY,QACd,GAAU,IAGZ,GAAI,GAAW,EACX,EAAY,EAAS,UACrB,EAAW,EAAS,SACpB,EAAe,EAAS,aACxB,EAAU,EAAS,QACnB,EAAiB,EAAS,eAC1B,EAAwB,EAAS,sBACjC,EAAwB,IAA0B,OAAS,GAAgB,EAC3E,EAAY,GAAa,GACzB,EAAa,EAAY,EAAiB,GAAsB,GAAoB,OAAO,SAAU,EAAW,CAClH,MAAO,IAAa,KAAe,IAChC,GACD,EAAoB,EAAW,OAAO,SAAU,EAAW,CAC7D,MAAO,GAAsB,QAAQ,IAAc,IAGjD,EAAkB,SAAW,GAC/B,GAAoB,GAQtB,GAAI,GAAY,EAAkB,OAAO,SAAU,EAAK,EAAW,CACjE,SAAI,GAAa,GAAe,EAAO,CACrC,UAAW,EACX,SAAU,EACV,aAAc,EACd,QAAS,IACR,GAAiB,IACb,GACN,IACH,MAAO,QAAO,KAAK,GAAW,KAAK,SAAU,EAAG,EAAG,CACjD,MAAO,GAAU,GAAK,EAAU,KCpCpC,YAAuC,EAAW,CAChD,GAAI,GAAiB,KAAe,GAClC,MAAO,GAGT,GAAI,GAAoB,GAAqB,GAC7C,MAAO,CAAC,GAA8B,GAAY,EAAmB,GAA8B,IAGrG,YAAc,EAAM,CAClB,GAAI,GAAQ,EAAK,MACb,EAAU,EAAK,QACf,EAAO,EAAK,KAEhB,GAAI,GAAM,cAAc,GAAM,MAoC9B,QAhCI,GAAoB,EAAQ,SAC5B,EAAgB,IAAsB,OAAS,GAAO,EACtD,EAAmB,EAAQ,QAC3B,EAAe,IAAqB,OAAS,GAAO,EACpD,EAA8B,EAAQ,mBACtC,EAAU,EAAQ,QAClB,EAAW,EAAQ,SACnB,EAAe,EAAQ,aACvB,EAAc,EAAQ,YACtB,EAAwB,EAAQ,eAChC,EAAiB,IAA0B,OAAS,GAAO,EAC3D,EAAwB,EAAQ,sBAChC,EAAqB,EAAM,QAAQ,UACnC,EAAgB,GAAiB,GACjC,GAAkB,IAAkB,EACpC,GAAqB,GAAgC,KAAmB,CAAC,EAAiB,CAAC,GAAqB,IAAuB,GAA8B,IACrK,EAAa,CAAC,GAAoB,OAAO,IAAoB,OAAO,SAAU,GAAK,GAAW,CAChG,MAAO,IAAI,OAAO,GAAiB,MAAe,GAAO,GAAqB,EAAO,CACnF,UAAW,GACX,SAAU,EACV,aAAc,EACd,QAAS,EACT,eAAgB,EAChB,sBAAuB,IACpB,KACJ,IACC,GAAgB,EAAM,MAAM,UAC5B,GAAa,EAAM,MAAM,OACzB,GAAY,GAAI,KAChB,GAAqB,GACrB,GAAwB,EAAW,GAE9B,GAAI,EAAG,GAAI,EAAW,OAAQ,KAAK,CAC1C,GAAI,IAAY,EAAW,IAEvB,GAAiB,GAAiB,IAElC,GAAmB,GAAa,MAAe,GAC/C,GAAa,CAAC,GAAK,IAAQ,QAAQ,KAAmB,EACtD,GAAM,GAAa,QAAU,SAC7B,GAAW,GAAe,EAAO,CACnC,UAAW,GACX,SAAU,EACV,aAAc,EACd,YAAa,EACb,QAAS,IAEP,GAAoB,GAAa,GAAmB,GAAQ,GAAO,GAAmB,GAAS,GAE/F,GAAc,IAAO,GAAW,KAClC,IAAoB,GAAqB,KAG3C,GAAI,IAAmB,GAAqB,IACxC,GAAS,GAUb,GARI,GACF,GAAO,KAAK,GAAS,KAAmB,GAGtC,GACF,GAAO,KAAK,GAAS,KAAsB,EAAG,GAAS,KAAqB,GAG1E,GAAO,MAAM,SAAU,GAAO,CAChC,MAAO,MACL,CACF,GAAwB,GACxB,GAAqB,GACrB,MAGF,GAAU,IAAI,GAAW,IAG3B,GAAI,GAqBF,OAnBI,IAAiB,EAAiB,EAAI,EAEtC,GAAQ,SAAe,GAAI,CAC7B,GAAI,IAAmB,EAAW,KAAK,SAAU,GAAW,CAC1D,GAAI,IAAS,GAAU,IAAI,IAE3B,GAAI,GACF,MAAO,IAAO,MAAM,EAAG,IAAI,MAAM,SAAU,GAAO,CAChD,MAAO,QAKb,GAAI,GACF,UAAwB,GACjB,SAIF,GAAK,GAAgB,GAAK,EAAG,KAAM,CAC1C,GAAI,IAAO,GAAM,IAEjB,GAAI,KAAS,QAAS,MAItB,EAAM,YAAc,IACtB,GAAM,cAAc,GAAM,MAAQ,GAClC,EAAM,UAAY,GAClB,EAAM,MAAQ,KAKlB,OAAe,CACb,KAAM,OACN,QAAS,GACT,MAAO,OACP,GAAI,GACJ,iBAAkB,CAAC,UACnB,KAAM,CACJ,MAAO,KChJI,YAAoB,EAAM,CACvC,MAAO,KAAS,IAAM,IAAM,ICAvB,YAAgB,EAAK,EAAO,EAAK,CACtC,MAAO,IAAQ,EAAK,GAAQ,EAAO,IAE9B,YAAwB,EAAK,EAAO,EAAK,CAC9C,GAAI,GAAI,GAAO,EAAK,EAAO,GAC3B,MAAO,GAAI,EAAM,EAAM,ECMzB,YAAyB,EAAM,CAC7B,GAAI,GAAQ,EAAK,MACb,EAAU,EAAK,QACf,EAAO,EAAK,KACZ,EAAoB,EAAQ,SAC5B,EAAgB,IAAsB,OAAS,GAAO,EACtD,EAAmB,EAAQ,QAC3B,EAAe,IAAqB,OAAS,GAAQ,EACrD,EAAW,EAAQ,SACnB,EAAe,EAAQ,aACvB,EAAc,EAAQ,YACtB,EAAU,EAAQ,QAClB,EAAkB,EAAQ,OAC1B,EAAS,IAAoB,OAAS,GAAO,EAC7C,EAAwB,EAAQ,aAChC,EAAe,IAA0B,OAAS,EAAI,EACtD,EAAW,GAAe,EAAO,CACnC,SAAU,EACV,aAAc,EACd,QAAS,EACT,YAAa,IAEX,EAAgB,GAAiB,EAAM,WACvC,GAAY,GAAa,EAAM,WAC/B,GAAkB,CAAC,GACnB,EAAW,GAAyB,GACpC,GAAU,GAAW,GACrB,GAAgB,EAAM,cAAc,cACpC,GAAgB,EAAM,MAAM,UAC5B,GAAa,EAAM,MAAM,OACzB,GAAoB,MAAO,IAAiB,WAAa,EAAa,OAAO,OAAO,GAAI,EAAM,MAAO,CACvG,UAAW,EAAM,aACb,EACF,GAA8B,MAAO,KAAsB,SAAW,CACxE,SAAU,GACV,QAAS,IACP,OAAO,OAAO,CAChB,SAAU,EACV,QAAS,GACR,IACC,GAAsB,EAAM,cAAc,OAAS,EAAM,cAAc,OAAO,EAAM,WAAa,KACjG,GAAO,CACT,EAAG,EACH,EAAG,GAGL,GAAI,EAAC,GAIL,IAAI,EAAe,CACjB,GAAI,IAEA,GAAW,IAAa,IAAM,GAAM,GACpC,GAAU,IAAa,IAAM,GAAS,GACtC,GAAM,IAAa,IAAM,SAAW,QACpC,GAAS,GAAc,GACvB,GAAM,GAAS,EAAS,IACxB,GAAM,GAAS,EAAS,IACxB,GAAW,EAAS,CAAC,GAAW,IAAO,EAAI,EAC3C,GAAS,KAAc,GAAQ,GAAc,IAAO,GAAW,IAC/D,GAAS,KAAc,GAAQ,CAAC,GAAW,IAAO,CAAC,GAAc,IAGjE,GAAe,EAAM,SAAS,MAC9B,GAAY,GAAU,GAAe,GAAc,IAAgB,CACrE,MAAO,EACP,OAAQ,GAEN,GAAqB,EAAM,cAAc,oBAAsB,EAAM,cAAc,oBAAoB,QAAU,KACjH,GAAkB,GAAmB,IACrC,GAAkB,GAAmB,IAMrC,GAAW,GAAO,EAAG,GAAc,IAAM,GAAU,KACnD,GAAY,GAAkB,GAAc,IAAO,EAAI,GAAW,GAAW,GAAkB,GAA4B,SAAW,GAAS,GAAW,GAAkB,GAA4B,SACxM,GAAY,GAAkB,CAAC,GAAc,IAAO,EAAI,GAAW,GAAW,GAAkB,GAA4B,SAAW,GAAS,GAAW,GAAkB,GAA4B,SACzM,GAAoB,EAAM,SAAS,OAAS,GAAgB,EAAM,SAAS,OAC3E,GAAe,GAAoB,IAAa,IAAM,GAAkB,WAAa,EAAI,GAAkB,YAAc,EAAI,EAC7H,GAAuB,IAAwB,IAAuB,KAAO,OAAS,GAAoB,KAAc,KAAO,GAAwB,EACvJ,GAAY,GAAS,GAAY,GAAsB,GACvD,GAAY,GAAS,GAAY,GACjC,GAAkB,GAAO,EAAS,GAAQ,GAAK,IAAa,GAAK,GAAQ,EAAS,GAAQ,GAAK,IAAa,IAChH,GAAc,GAAY,GAC1B,GAAK,GAAY,GAAkB,GAGrC,GAAI,EAAc,CAChB,GAAI,IAEA,GAAY,IAAa,IAAM,GAAM,GAErC,GAAW,IAAa,IAAM,GAAS,GAEvC,GAAU,GAAc,IAExB,GAAO,KAAY,IAAM,SAAW,QAEpC,GAAO,GAAU,EAAS,IAE1B,GAAO,GAAU,EAAS,IAE1B,GAAe,CAAC,GAAK,IAAM,QAAQ,KAAmB,GAEtD,GAAwB,IAAyB,IAAuB,KAAO,OAAS,GAAoB,MAAa,KAAO,GAAyB,EAEzJ,GAAa,GAAe,GAAO,GAAU,GAAc,IAAQ,GAAW,IAAQ,GAAuB,GAA4B,QAEzI,GAAa,GAAe,GAAU,GAAc,IAAQ,GAAW,IAAQ,GAAuB,GAA4B,QAAU,GAE5I,GAAmB,GAAU,GAAe,GAAe,GAAY,GAAS,IAAc,GAAO,EAAS,GAAa,GAAM,GAAS,EAAS,GAAa,IAEpK,GAAc,IAAW,GACzB,GAAK,IAAW,GAAmB,GAGrC,EAAM,cAAc,GAAQ,IAI9B,OAAe,CACb,KAAM,kBACN,QAAS,GACT,MAAO,OACP,GAAI,GACJ,iBAAkB,CAAC,WCjIjB,GAAkB,SAAyB,EAAS,EAAO,CAC7D,SAAU,MAAO,IAAY,WAAa,EAAQ,OAAO,OAAO,GAAI,EAAM,MAAO,CAC/E,UAAW,EAAM,aACb,EACC,GAAmB,MAAO,IAAY,SAAW,EAAU,GAAgB,EAAS,MAG7F,YAAe,EAAM,CACnB,GAAI,GAEA,EAAQ,EAAK,MACb,EAAO,EAAK,KACZ,EAAU,EAAK,QACf,EAAe,EAAM,SAAS,MAC9B,EAAgB,EAAM,cAAc,cACpC,EAAgB,GAAiB,EAAM,WACvC,EAAO,GAAyB,GAChC,EAAa,CAAC,GAAM,IAAO,QAAQ,IAAkB,EACrD,EAAM,EAAa,SAAW,QAElC,GAAI,GAAC,GAAgB,CAAC,GAItB,IAAI,GAAgB,GAAgB,EAAQ,QAAS,GACjD,EAAY,GAAc,GAC1B,EAAU,IAAS,IAAM,GAAM,GAC/B,EAAU,IAAS,IAAM,GAAS,GAClC,EAAU,EAAM,MAAM,UAAU,GAAO,EAAM,MAAM,UAAU,GAAQ,EAAc,GAAQ,EAAM,MAAM,OAAO,GAC9G,EAAY,EAAc,GAAQ,EAAM,MAAM,UAAU,GACxD,EAAoB,GAAgB,GACpC,GAAa,EAAoB,IAAS,IAAM,EAAkB,cAAgB,EAAI,EAAkB,aAAe,EAAI,EAC3H,GAAoB,EAAU,EAAI,EAAY,EAG9C,EAAM,EAAc,GACpB,GAAM,GAAa,EAAU,GAAO,EAAc,GAClD,GAAS,GAAa,EAAI,EAAU,GAAO,EAAI,GAC/C,GAAS,GAAO,EAAK,GAAQ,IAE7B,GAAW,EACf,EAAM,cAAc,GAAS,GAAwB,GAAI,EAAsB,IAAY,GAAQ,EAAsB,aAAe,GAAS,GAAQ,IAG3J,YAAgB,EAAO,CACrB,GAAI,GAAQ,EAAM,MACd,EAAU,EAAM,QAChB,EAAmB,EAAQ,QAC3B,EAAe,IAAqB,OAAS,sBAAwB,EAErE,GAAgB,MAKhB,OAAO,IAAiB,UAC1B,GAAe,EAAM,SAAS,OAAO,cAAc,GAE/C,CAAC,IAWH,CAAC,GAAS,EAAM,SAAS,OAAQ,IAQrC,GAAM,SAAS,MAAQ,IAIzB,OAAe,CACb,KAAM,QACN,QAAS,GACT,MAAO,OACP,GAAI,GACJ,OAAQ,GACR,SAAU,CAAC,iBACX,iBAAkB,CAAC,oBChGrB,YAAwB,EAAU,EAAM,EAAkB,CACxD,MAAI,KAAqB,QACvB,GAAmB,CACjB,EAAG,EACH,EAAG,IAIA,CACL,IAAK,EAAS,IAAM,EAAK,OAAS,EAAiB,EACnD,MAAO,EAAS,MAAQ,EAAK,MAAQ,EAAiB,EACtD,OAAQ,EAAS,OAAS,EAAK,OAAS,EAAiB,EACzD,KAAM,EAAS,KAAO,EAAK,MAAQ,EAAiB,GAIxD,YAA+B,EAAU,CACvC,MAAO,CAAC,GAAK,GAAO,GAAQ,IAAM,KAAK,SAAU,EAAM,CACrD,MAAO,GAAS,IAAS,IAI7B,YAAc,EAAM,CAClB,GAAI,GAAQ,EAAK,MACb,EAAO,EAAK,KACZ,EAAgB,EAAM,MAAM,UAC5B,EAAa,EAAM,MAAM,OACzB,EAAmB,EAAM,cAAc,gBACvC,EAAoB,GAAe,EAAO,CAC5C,eAAgB,cAEd,EAAoB,GAAe,EAAO,CAC5C,YAAa,KAEX,EAA2B,GAAe,EAAmB,GAC7D,EAAsB,GAAe,EAAmB,EAAY,GACpE,EAAoB,GAAsB,GAC1C,EAAmB,GAAsB,GAC7C,EAAM,cAAc,GAAQ,CAC1B,yBAA0B,EAC1B,oBAAqB,EACrB,kBAAmB,EACnB,iBAAkB,GAEpB,EAAM,WAAW,OAAS,OAAO,OAAO,GAAI,EAAM,WAAW,OAAQ,CACnE,+BAAgC,EAChC,sBAAuB,IAK3B,OAAe,CACb,KAAM,OACN,QAAS,GACT,MAAO,OACP,iBAAkB,CAAC,mBACnB,GAAI,ICjDF,GAAmB,CAAC,GAAgB,GAAe,GAAe,GAAa,GAAQ,GAAM,GAAiB,GAAO,IACrH,GAA4B,GAAgB,CAC9C,iBAAkB,KCLhB,GAAc,2LACd,GAAY,YACZ,GAAgB,gBAChB,GAAiB,iBACjB,GAAc,cACd,GAAkB,kBAClB,GAAgB,CAClB,QAAS,GACT,QAAS,IAEP,GAA0B,UAAmC,CAC/D,MAAO,UAAS,MAGlB,YAAwB,EAAK,EAAK,CAChC,MAAO,GAAG,eAAe,KAAK,EAAK,GAErC,YAAiC,EAAO,EAAO,EAAc,CAC3D,GAAI,MAAM,QAAQ,GAAQ,CACxB,GAAI,GAAI,EAAM,GACd,MAAO,IAAY,OAAM,QAAQ,GAAgB,EAAa,GAAS,GAGzE,MAAO,GAET,YAAgB,EAAO,EAAM,CAC3B,GAAI,GAAM,GAAG,SAAS,KAAK,GAC3B,MAAO,GAAI,QAAQ,aAAe,GAAK,EAAI,QAAQ,EAAO,KAAO,GAEnE,YAAgC,EAAO,EAAM,CAC3C,MAAO,OAAO,IAAU,WAAa,EAAM,MAAM,OAAQ,GAAQ,EAEnE,YAAkB,EAAI,EAAI,CAExB,GAAI,IAAO,EACT,MAAO,GAGT,GAAI,GACJ,MAAO,UAAU,EAAK,CACpB,aAAa,GACb,EAAU,WAAW,UAAY,CAC/B,EAAG,IACF,IAGP,YAA0B,EAAK,EAAM,CACnC,GAAI,GAAQ,OAAO,OAAO,GAAI,GAC9B,SAAK,QAAQ,SAAU,EAAK,CAC1B,MAAO,GAAM,KAER,EAET,YAAuB,EAAO,CAC5B,MAAO,GAAM,MAAM,OAAO,OAAO,SAEnC,YAA0B,EAAO,CAC/B,MAAO,GAAG,OAAO,GAEnB,YAAsB,EAAK,EAAO,CAC5B,EAAI,QAAQ,KAAW,IACzB,EAAI,KAAK,GAGb,YAAgB,EAAK,CACnB,MAAO,GAAI,OAAO,SAAU,EAAM,EAAO,CACvC,MAAO,GAAI,QAAQ,KAAU,IAGjC,YAA0B,EAAW,CACnC,MAAO,GAAU,MAAM,KAAK,GAE9B,YAAmB,EAAO,CACxB,MAAO,GAAG,MAAM,KAAK,GAEvB,YAA8B,EAAK,CACjC,MAAO,QAAO,KAAK,GAAK,OAAO,SAAU,EAAK,EAAK,CACjD,MAAI,GAAI,KAAS,QACf,GAAI,GAAO,EAAI,IAGV,GACN,IAGL,aAAe,CACb,MAAO,UAAS,cAAc,OAEhC,YAAmB,EAAO,CACxB,MAAO,CAAC,UAAW,YAAY,KAAK,SAAU,EAAM,CAClD,MAAO,IAAO,EAAO,KAGzB,YAAoB,EAAO,CACzB,MAAO,IAAO,EAAO,YAEvB,YAAsB,EAAO,CAC3B,MAAO,IAAO,EAAO,cAEvB,YAA4B,EAAO,CACjC,MAAO,CAAC,CAAE,IAAS,EAAM,QAAU,EAAM,OAAO,YAAc,GAEhE,YAA4B,EAAO,CACjC,MAAI,IAAU,GACL,CAAC,GAGN,GAAW,GACN,GAAU,GAGf,MAAM,QAAQ,GACT,EAGF,GAAU,SAAS,iBAAiB,IAE7C,YAA+B,EAAK,EAAO,CACzC,EAAI,QAAQ,SAAU,EAAI,CACpB,GACF,GAAG,MAAM,mBAAqB,EAAQ,QAI5C,YAA4B,EAAK,EAAO,CACtC,EAAI,QAAQ,SAAU,EAAI,CACpB,GACF,EAAG,aAAa,aAAc,KAIpC,YAA0B,EAAmB,CAC3C,GAAI,GAEA,EAAoB,GAAiB,GACrC,EAAU,EAAkB,GAGhC,MAAO,IAAW,MAAS,GAAwB,EAAQ,gBAAkB,MAAQ,EAAsB,KAAO,EAAQ,cAAgB,SAE5I,YAA0C,EAAgB,EAAO,CAC/D,GAAI,GAAU,EAAM,QAChB,EAAU,EAAM,QACpB,MAAO,GAAe,MAAM,SAAU,EAAM,CAC1C,GAAI,GAAa,EAAK,WAClB,EAAc,EAAK,YACnB,EAAQ,EAAK,MACb,EAAoB,EAAM,kBAC1B,EAAgB,GAAiB,EAAY,WAC7C,EAAa,EAAY,cAAc,OAE3C,GAAI,CAAC,EACH,MAAO,GAGT,GAAI,GAAc,IAAkB,SAAW,EAAW,IAAI,EAAI,EAC9D,EAAiB,IAAkB,MAAQ,EAAW,OAAO,EAAI,EACjE,EAAe,IAAkB,QAAU,EAAW,KAAK,EAAI,EAC/D,EAAgB,IAAkB,OAAS,EAAW,MAAM,EAAI,EAChE,EAAa,EAAW,IAAM,EAAU,EAAc,EACtD,EAAgB,EAAU,EAAW,OAAS,EAAiB,EAC/D,EAAc,EAAW,KAAO,EAAU,EAAe,EACzD,GAAe,EAAU,EAAW,MAAQ,EAAgB,EAChE,MAAO,IAAc,GAAiB,GAAe,KAGzD,YAAqC,EAAK,EAAQ,EAAU,CAC1D,GAAI,GAAS,EAAS,gBAGtB,CAAC,gBAAiB,uBAAuB,QAAQ,SAAU,EAAO,CAChE,EAAI,GAAQ,EAAO,KAQvB,YAAwB,EAAQ,EAAO,CAGrC,OAFI,GAAS,EAEN,GAAQ,CACb,GAAI,GAEJ,GAAI,EAAO,SAAS,GAClB,MAAO,GAGT,EAAS,EAAO,aAAe,MAAiB,GAAsB,EAAO,gBAAkB,KAAzD,OAAyE,EAAoB,KAGrI,MAAO,GAGT,GAAI,IAAe,CACjB,QAAS,IAEP,GAAoB,EAQxB,aAAgC,CAC1B,GAAa,SAIjB,IAAa,QAAU,GAEnB,OAAO,aACT,SAAS,iBAAiB,YAAa,KAS3C,aAA+B,CAC7B,GAAI,GAAM,YAAY,MAElB,EAAM,GAAoB,IAC5B,IAAa,QAAU,GACvB,SAAS,oBAAoB,YAAa,KAG5C,GAAoB,EAStB,aAAwB,CACtB,GAAI,GAAgB,SAAS,cAE7B,GAAI,GAAmB,GAAgB,CACrC,GAAI,GAAW,EAAc,OAEzB,EAAc,MAAQ,CAAC,EAAS,MAAM,WACxC,EAAc,QAIpB,aAAoC,CAClC,SAAS,iBAAiB,aAAc,GAAsB,IAC9D,OAAO,iBAAiB,OAAQ,IAGlC,GAAI,IAAY,MAAO,SAAW,aAAe,MAAO,WAAa,YACjE,GAAS,GACb,CAAC,CAAC,OAAO,SAAW,GAEpB,YAAiC,EAAQ,CACvC,GAAI,GAAM,IAAW,UAAY,aAAe,IAChD,MAAO,CAAC,EAAS,qBAAuB,EAAM,0CAA2C,sCAAsC,KAAK,KAEtI,YAAe,EAAO,CACpB,GAAI,GAAgB,aAChB,EAAsB,YAC1B,MAAO,GAAM,QAAQ,EAAe,KAAK,QAAQ,EAAqB,IAAI,OAG5E,YAAuB,EAAS,CAC9B,MAAO,IAAM;AAAA;AAAA;AAAA,MAA2B,GAAM,GAAW;AAAA;AAAA;AAAA,KAG3D,YAA6B,EAAS,CACpC,MAAO,CAAC,GAAc,GACtB,uDACA,mBACA,mBAGF,GAAI,IAMJ,aAAgC,CAC9B,GAAkB,GAAI,KAExB,YAAkB,EAAW,EAAS,CACpC,GAAI,GAAa,CAAC,GAAgB,IAAI,GAAU,CAC9C,GAAI,GAEJ,GAAgB,IAAI,GAEnB,GAAW,SAAS,KAAK,MAAM,EAAU,GAAoB,KAGlE,YAAmB,EAAW,EAAS,CACrC,GAAI,GAAa,CAAC,GAAgB,IAAI,GAAU,CAC9C,GAAI,GAEJ,GAAgB,IAAI,GAEnB,GAAY,SAAS,MAAM,MAAM,EAAW,GAAoB,KAGrE,YAAyB,EAAS,CAChC,GAAI,GAAoB,CAAC,EACrB,EAAqB,OAAO,UAAU,SAAS,KAAK,KAAa,mBAAqB,CAAC,EAAQ,iBACnG,GAAU,EAAmB,CAAC,qBAAsB,IAAM,OAAO,GAAW,IAAK,qEAAsE,2BAA2B,KAAK,MACvL,GAAU,EAAoB,CAAC,0EAA2E,sEAAsE,KAAK,MAGvL,GAAI,IAAc,CAChB,YAAa,GACb,aAAc,GACd,kBAAmB,GACnB,OAAQ,IAEN,GAAc,CAChB,UAAW,GACX,UAAW,OACX,MAAO,GACP,QAAS,GACT,QAAS,GACT,SAAU,IACV,KAAM,UACN,MAAO,GACP,OAAQ,MAEN,GAAe,OAAO,OAAO,CAC/B,SAAU,GACV,KAAM,CACJ,QAAS,OACT,SAAU,QAEZ,MAAO,EACP,SAAU,CAAC,IAAK,KAChB,uBAAwB,KACxB,YAAa,GACb,iBAAkB,GAClB,YAAa,GACb,kBAAmB,EACnB,oBAAqB,EACrB,eAAgB,GAChB,OAAQ,CAAC,EAAG,IACZ,cAAe,UAAyB,GACxC,eAAgB,UAA0B,GAC1C,SAAU,UAAoB,GAC9B,UAAW,UAAqB,GAChC,SAAU,UAAoB,GAC9B,OAAQ,UAAkB,GAC1B,QAAS,UAAmB,GAC5B,OAAQ,UAAkB,GAC1B,QAAS,UAAmB,GAC5B,UAAW,UAAqB,GAChC,YAAa,UAAuB,GACpC,eAAgB,UAA0B,GAC1C,UAAW,MACX,QAAS,GACT,cAAe,GACf,OAAQ,KACR,aAAc,GACd,MAAO,GACP,QAAS,mBACT,cAAe,MACd,GAAa,IACZ,GAAc,OAAO,KAAK,IAC1B,GAAkB,SAAyB,EAAc,CAM3D,GAAI,GAAO,OAAO,KAAK,GACvB,EAAK,QAAQ,SAAU,EAAK,CAC1B,GAAa,GAAO,EAAa,MAGrC,YAAgC,EAAa,CAC3C,GAAI,GAAU,EAAY,SAAW,GACjC,EAAc,EAAQ,OAAO,SAAU,EAAK,EAAQ,CACtD,GAAI,GAAO,EAAO,KACd,EAAe,EAAO,aAE1B,GAAI,EAAM,CACR,GAAI,GAEJ,EAAI,GAAQ,EAAY,KAAU,OAAY,EAAY,GAAS,GAAQ,GAAa,KAAU,KAAO,EAAQ,EAGnH,MAAO,IACN,IACH,MAAO,QAAO,OAAO,GAAI,EAAa,GAExC,YAA+B,EAAW,EAAS,CACjD,GAAI,GAAW,EAAU,OAAO,KAAK,GAAuB,OAAO,OAAO,GAAI,GAAc,CAC1F,QAAS,MACJ,GACH,EAAQ,EAAS,OAAO,SAAU,EAAK,EAAK,CAC9C,GAAI,GAAiB,GAAU,aAAa,cAAgB,IAAQ,IAAI,OAExE,GAAI,CAAC,EACH,MAAO,GAGT,GAAI,IAAQ,UACV,EAAI,GAAO,MAEX,IAAI,CACF,EAAI,GAAO,KAAK,MAAM,QACtB,CACA,EAAI,GAAO,EAIf,MAAO,IACN,IACH,MAAO,GAET,YAAuB,EAAW,EAAO,CACvC,GAAI,GAAM,OAAO,OAAO,GAAI,EAAO,CACjC,QAAS,GAAuB,EAAM,QAAS,CAAC,KAC/C,EAAM,iBAAmB,GAAK,GAAsB,EAAW,EAAM,UACxE,SAAI,KAAO,OAAO,OAAO,GAAI,GAAa,KAAM,EAAI,MACpD,EAAI,KAAO,CACT,SAAU,EAAI,KAAK,WAAa,OAAS,EAAM,YAAc,EAAI,KAAK,SACtE,QAAS,EAAI,KAAK,UAAY,OAAS,EAAM,YAAc,KAAO,cAAgB,EAAI,KAAK,SAEtF,EAET,YAAuB,EAAc,EAAS,CACxC,IAAiB,QACnB,GAAe,IAGb,IAAY,QACd,GAAU,IAGZ,GAAI,GAAO,OAAO,KAAK,GACvB,EAAK,QAAQ,SAAU,EAAM,CAC3B,GAAI,GAAiB,GAAiB,GAAc,OAAO,KAAK,KAC5D,EAAqB,CAAC,GAAe,EAAgB,GAErD,GACF,GAAqB,EAAQ,OAAO,SAAU,EAAQ,CACpD,MAAO,GAAO,OAAS,IACtB,SAAW,GAGhB,GAAS,EAAoB,CAAC,IAAM,EAAO,IAAK,uEAAwE,4DAA6D;AAAA;AAAA,EAAQ;AAAA,EAAgE,0DAA0D,KAAK,QAIhU,GAAI,IAAY,UAAqB,CACnC,MAAO,aAGT,YAAiC,EAAS,EAAM,CAC9C,EAAQ,MAAe,EAGzB,YAA4B,EAAO,CACjC,GAAI,GAAQ,KAEZ,MAAI,KAAU,GACZ,EAAM,UAAY,GAElB,GAAM,UAAY,GAEd,GAAU,GACZ,EAAM,YAAY,GAElB,GAAwB,EAAO,IAI5B,EAGT,YAAoB,EAAS,EAAO,CAC9B,GAAU,EAAM,SAClB,IAAwB,EAAS,IACjC,EAAQ,YAAY,EAAM,UACjB,MAAO,GAAM,SAAY,YAClC,CAAI,EAAM,UACR,GAAwB,EAAS,EAAM,SAEvC,EAAQ,YAAc,EAAM,SAIlC,YAAqB,EAAQ,CAC3B,GAAI,GAAM,EAAO,kBACb,EAAc,GAAU,EAAI,UAChC,MAAO,CACL,IAAK,EACL,QAAS,EAAY,KAAK,SAAU,EAAM,CACxC,MAAO,GAAK,UAAU,SAAS,MAEjC,MAAO,EAAY,KAAK,SAAU,EAAM,CACtC,MAAO,GAAK,UAAU,SAAS,KAAgB,EAAK,UAAU,SAAS,MAEzE,SAAU,EAAY,KAAK,SAAU,EAAM,CACzC,MAAO,GAAK,UAAU,SAAS,OAIrC,YAAgB,EAAU,CACxB,GAAI,GAAS,KACT,EAAM,KACV,EAAI,UAAY,GAChB,EAAI,aAAa,aAAc,UAC/B,EAAI,aAAa,WAAY,MAC7B,GAAI,GAAU,KACd,EAAQ,UAAY,GACpB,EAAQ,aAAa,aAAc,UACnC,GAAW,EAAS,EAAS,OAC7B,EAAO,YAAY,GACnB,EAAI,YAAY,GAChB,EAAS,EAAS,MAAO,EAAS,OAElC,WAAkB,EAAW,EAAW,CACtC,GAAI,GAAe,GAAY,GAC3B,EAAM,EAAa,IACnB,EAAU,EAAa,QACvB,EAAQ,EAAa,MAErB,EAAU,MACZ,EAAI,aAAa,aAAc,EAAU,OAEzC,EAAI,gBAAgB,cAGlB,MAAO,GAAU,WAAc,SACjC,EAAI,aAAa,iBAAkB,EAAU,WAE7C,EAAI,gBAAgB,kBAGlB,EAAU,QACZ,EAAI,aAAa,eAAgB,IAEjC,EAAI,gBAAgB,gBAGtB,EAAI,MAAM,SAAW,MAAO,GAAU,UAAa,SAAW,EAAU,SAAW,KAAO,EAAU,SAEhG,EAAU,KACZ,EAAI,aAAa,OAAQ,EAAU,MAEnC,EAAI,gBAAgB,QAGlB,GAAU,UAAY,EAAU,SAAW,EAAU,YAAc,EAAU,YAC/E,GAAW,EAAS,EAAS,OAG3B,EAAU,MACP,EAEM,EAAU,QAAU,EAAU,OACvC,GAAI,YAAY,GAChB,EAAI,YAAY,GAAmB,EAAU,SAH7C,EAAI,YAAY,GAAmB,EAAU,QAKtC,GACT,EAAI,YAAY,GAIpB,MAAO,CACL,OAAQ,EACR,SAAU,GAKd,GAAO,QAAU,GAEjB,GAAI,IAAY,EACZ,GAAqB,GAErB,GAAmB,GACvB,YAAqB,EAAW,EAAa,CAC3C,GAAI,GAAQ,GAAc,EAAW,OAAO,OAAO,GAAI,GAAc,GAAuB,GAAqB,MAI7G,EACA,EACA,EACA,EAAqB,GACrB,EAAgC,GAChC,EAAe,GACf,EAAsB,GACtB,EACA,EACA,EACA,EAAY,GACZ,EAAuB,GAAS,GAAa,EAAM,qBACnD,EAIA,EAAK,KACL,EAAiB,KACjB,GAAU,GAAO,EAAM,SACvB,GAAQ,CAEV,UAAW,GAEX,UAAW,GAEX,YAAa,GAEb,UAAW,GAEX,QAAS,IAEP,EAAW,CAEb,GAAI,EACJ,UAAW,EACX,OAAQ,KACR,eAAgB,EAChB,MAAO,EACP,MAAO,GACP,QAAS,GAET,mBAAoB,GACpB,SAAU,GACV,WAAY,GACZ,KAAM,GACN,KAAM,GACN,sBAAuB,GACvB,OAAQ,GACR,QAAS,GACT,QAAS,GACT,QAAS,IAMX,GAAI,CAAC,EAAM,OAKT,MAAO,GAMT,GAAI,IAAgB,EAAM,OAAO,GAC7B,GAAS,GAAc,OACvB,GAAW,GAAc,SAE7B,GAAO,aAAa,kBAAmB,IACvC,GAAO,GAAK,SAAW,EAAS,GAChC,EAAS,OAAS,GAClB,EAAU,OAAS,EACnB,GAAO,OAAS,EAChB,GAAI,IAAe,GAAQ,IAAI,SAAU,GAAQ,CAC/C,MAAO,IAAO,GAAG,KAEf,GAAkB,EAAU,aAAa,iBAC7C,YACA,KACA,KACA,GAAW,WAAY,CAAC,IAEpB,EAAM,cACR,KAKF,GAAO,iBAAiB,aAAc,UAAY,CAC5C,EAAS,MAAM,aAAe,EAAS,MAAM,WAC/C,EAAS,uBAGb,GAAO,iBAAiB,aAAc,UAAY,CAC5C,EAAS,MAAM,aAAe,EAAS,MAAM,QAAQ,QAAQ,eAAiB,GAChF,KAAc,iBAAiB,YAAa,KAGzC,EAIP,aAAsC,CACpC,GAAI,IAAQ,EAAS,MAAM,MAC3B,MAAO,OAAM,QAAQ,IAAS,GAAQ,CAAC,GAAO,GAGhD,aAAoC,CAClC,MAAO,MAA6B,KAAO,OAG7C,aAAgC,CAC9B,GAAI,IAGJ,MAAO,CAAC,CAAG,KAAwB,EAAS,MAAM,SAAW,MAAQ,GAAsB,SAG7F,aAA4B,CAC1B,MAAO,IAAiB,EAG1B,aAAuB,CACrB,GAAI,IAAS,KAAmB,WAChC,MAAO,IAAS,GAAiB,IAAU,SAG7C,aAAsC,CACpC,MAAO,IAAY,IAGrB,YAAkB,GAAQ,CAIxB,MAAI,GAAS,MAAM,WAAa,CAAC,EAAS,MAAM,WAAa,GAAa,SAAW,GAAoB,EAAiB,OAAS,QAC1H,EAGF,GAAwB,EAAS,MAAM,MAAO,GAAS,EAAI,EAAG,GAAa,OAGpF,YAAsB,GAAU,CAC1B,KAAa,QACf,IAAW,IAGb,GAAO,MAAM,cAAgB,EAAS,MAAM,aAAe,CAAC,GAAW,GAAK,OAC5E,GAAO,MAAM,OAAS,GAAK,EAAS,MAAM,OAG5C,YAAoB,GAAM,GAAM,GAAuB,CAWrD,GAVI,KAA0B,QAC5B,IAAwB,IAG1B,GAAa,QAAQ,SAAU,GAAa,CACtC,GAAY,KACd,GAAY,IAAM,MAAM,GAAa,MAIrC,GAAuB,CACzB,GAAI,IAEH,IAAkB,EAAS,OAAO,IAAM,MAAM,GAAiB,KAIpE,aAAsC,CACpC,GAAI,IAAO,EAAS,MAAM,KAE1B,GAAI,EAAC,GAAK,QAIV,IAAI,IAAO,QAAU,GAAK,QACtB,GAAK,GAAO,GACZ,GAAQ,GAAiB,EAAS,MAAM,eAAiB,GAC7D,GAAM,QAAQ,SAAU,GAAM,CAC5B,GAAI,IAAe,GAAK,aAAa,IAErC,GAAI,EAAS,MAAM,UACjB,GAAK,aAAa,GAAM,GAAe,GAAe,IAAM,GAAK,QAC5D,CACL,GAAI,IAAY,IAAgB,GAAa,QAAQ,GAAI,IAAI,OAEzD,GACF,GAAK,aAAa,GAAM,IAExB,GAAK,gBAAgB,QAM7B,aAAuC,CACrC,GAAI,MAAmB,CAAC,EAAS,MAAM,KAAK,UAI5C,IAAI,IAAQ,GAAiB,EAAS,MAAM,eAAiB,GAC7D,GAAM,QAAQ,SAAU,GAAM,CACxB,EAAS,MAAM,YACjB,GAAK,aAAa,gBAAiB,EAAS,MAAM,WAAa,KAAS,KAAqB,OAAS,SAEtG,GAAK,gBAAgB,oBAK3B,aAA4C,CAC1C,KAAc,oBAAoB,YAAa,GAC/C,GAAqB,GAAmB,OAAO,SAAU,GAAU,CACjE,MAAO,MAAa,IAIxB,YAAyB,GAAO,CAE9B,GAAI,KAAa,SACX,IAAgB,GAAM,OAAS,cAKrC,IAAI,IAAe,GAAM,cAAgB,GAAM,eAAe,IAAM,GAAM,OAE1E,GAAI,IAAS,MAAM,aAAe,GAAe,GAAQ,KAKzD,IAAI,GAAiB,EAAS,MAAM,eAAiB,GAAW,KAAK,SAAU,GAAI,CACjF,MAAO,IAAe,GAAI,OAM1B,GAJI,GAAa,SAIb,EAAS,MAAM,WAAa,EAAS,MAAM,QAAQ,QAAQ,UAAY,EACzE,WAGF,IAAW,iBAAkB,CAAC,EAAU,KAGtC,EAAS,MAAM,cAAgB,IACjC,GAAS,qBACT,EAAS,OAIT,EAAgC,GAChC,WAAW,UAAY,CACrB,EAAgC,KAK7B,EAAS,MAAM,WAClB,QAKN,aAAuB,CACrB,EAAe,GAGjB,aAAwB,CACtB,EAAe,GAGjB,aAA4B,CAC1B,GAAI,IAAM,KACV,GAAI,iBAAiB,YAAa,GAAiB,IACnD,GAAI,iBAAiB,WAAY,GAAiB,IAClD,GAAI,iBAAiB,aAAc,GAAc,IACjD,GAAI,iBAAiB,YAAa,GAAa,IAGjD,aAA+B,CAC7B,GAAI,IAAM,KACV,GAAI,oBAAoB,YAAa,GAAiB,IACtD,GAAI,oBAAoB,WAAY,GAAiB,IACrD,GAAI,oBAAoB,aAAc,GAAc,IACpD,GAAI,oBAAoB,YAAa,GAAa,IAGpD,YAA2B,GAAU,GAAU,CAC7C,GAAgB,GAAU,UAAY,CAChC,CAAC,EAAS,MAAM,WAAa,GAAO,YAAc,GAAO,WAAW,SAAS,KAC/E,OAKN,YAA0B,GAAU,GAAU,CAC5C,GAAgB,GAAU,IAG5B,YAAyB,GAAU,GAAU,CAC3C,GAAI,IAAM,KAA6B,IAEvC,YAAkB,GAAO,CACnB,GAAM,SAAW,IACnB,IAA4B,GAAK,SAAU,IAC3C,MAMJ,GAAI,KAAa,EACf,MAAO,MAGT,GAA4B,GAAK,SAAU,GAC3C,GAA4B,GAAK,MAAO,IACxC,EAA+B,GAGjC,YAAY,GAAW,GAAS,GAAS,CACnC,KAAY,QACd,IAAU,IAGZ,GAAI,IAAQ,GAAiB,EAAS,MAAM,eAAiB,GAC7D,GAAM,QAAQ,SAAU,GAAM,CAC5B,GAAK,iBAAiB,GAAW,GAAS,IAC1C,EAAU,KAAK,CACb,KAAM,GACN,UAAW,GACX,QAAS,GACT,QAAS,OAKf,aAAwB,CAClB,MACF,IAAG,aAAc,GAAW,CAC1B,QAAS,KAEX,GAAG,WAAY,GAAc,CAC3B,QAAS,MAIb,GAAc,EAAS,MAAM,SAAS,QAAQ,SAAU,GAAW,CACjE,GAAI,KAAc,SAMlB,OAFA,GAAG,GAAW,IAEN,QACD,aACH,GAAG,aAAc,IACjB,UAEG,QACH,GAAG,GAAS,WAAa,OAAQ,IACjC,UAEG,UACH,GAAG,WAAY,IACf,SAKR,aAA2B,CACzB,EAAU,QAAQ,SAAU,GAAM,CAChC,GAAI,IAAO,GAAK,KACZ,GAAY,GAAK,UACjB,GAAU,GAAK,QACf,GAAU,GAAK,QACnB,GAAK,oBAAoB,GAAW,GAAS,MAE/C,EAAY,GAGd,YAAmB,GAAO,CACxB,GAAI,IAEA,GAA0B,GAE9B,GAAI,GAAC,EAAS,MAAM,WAAa,GAAuB,KAAU,GAIlE,IAAI,IAAe,KAAoB,IAAqB,KAAO,OAAS,GAAkB,QAAU,QACxG,EAAmB,GACnB,EAAgB,GAAM,cACtB,KAEI,CAAC,EAAS,MAAM,WAAa,GAAa,KAK5C,GAAmB,QAAQ,SAAU,GAAU,CAC7C,MAAO,IAAS,MAKhB,GAAM,OAAS,SAAY,GAAS,MAAM,QAAQ,QAAQ,cAAgB,GAAK,IAAuB,EAAS,MAAM,cAAgB,IAAS,EAAS,MAAM,UAC/J,GAA0B,GAE1B,GAAa,IAGX,GAAM,OAAS,SACjB,GAAqB,CAAC,IAGpB,IAA2B,CAAC,IAC9B,GAAa,KAIjB,YAAqB,GAAO,CAC1B,GAAI,IAAS,GAAM,OACf,GAAgC,KAAmB,SAAS,KAAW,GAAO,SAAS,IAE3F,GAAI,KAAM,OAAS,aAAe,IAIlC,IAAI,IAAiB,KAAsB,OAAO,IAAQ,IAAI,SAAU,GAAQ,CAC9E,GAAI,IAEA,GAAW,GAAO,OAClB,GAAS,IAAwB,GAAS,iBAAmB,KAAO,OAAS,GAAsB,MAEvG,MAAI,IACK,CACL,WAAY,GAAO,wBACnB,YAAa,GACb,MAAO,GAIJ,OACN,OAAO,SAEN,GAAiC,GAAgB,KACnD,MACA,GAAa,MAIjB,YAAsB,GAAO,CAC3B,GAAI,IAAa,GAAuB,KAAU,EAAS,MAAM,QAAQ,QAAQ,UAAY,GAAK,EAElG,GAAI,IAIJ,IAAI,EAAS,MAAM,YAAa,CAC9B,EAAS,sBAAsB,IAC/B,OAGF,GAAa,KAGf,YAA0B,GAAO,CAC3B,EAAS,MAAM,QAAQ,QAAQ,WAAa,GAAK,GAAM,SAAW,MAKlE,EAAS,MAAM,aAAe,GAAM,eAAiB,GAAO,SAAS,GAAM,gBAI/E,GAAa,IAGf,YAAgC,GAAO,CACrC,MAAO,IAAa,QAAU,OAA+B,GAAM,KAAK,QAAQ,UAAY,EAAI,GAGlG,aAAgC,CAC9B,KACA,GAAI,IAAmB,EAAS,MAC5B,GAAgB,GAAiB,cACjC,GAAY,GAAiB,UAC7B,GAAS,GAAiB,OAC1B,GAAyB,GAAiB,uBAC1C,GAAiB,GAAiB,eAClC,GAAQ,KAAyB,GAAY,IAAQ,MAAQ,KAC7D,GAAoB,GAAyB,CAC/C,sBAAuB,GACvB,eAAgB,GAAuB,gBAAkB,MACvD,EACA,GAAgB,CAClB,KAAM,UACN,QAAS,GACT,MAAO,cACP,SAAU,CAAC,iBACX,GAAI,SAAY,GAAO,CACrB,GAAI,IAAQ,GAAM,MAElB,GAAI,KAAwB,CAC1B,GAAI,IAAwB,KACxB,GAAM,GAAsB,IAEhC,CAAC,YAAa,mBAAoB,WAAW,QAAQ,SAAU,GAAM,CAC/D,KAAS,YACX,GAAI,aAAa,iBAAkB,GAAM,WAErC,GAAM,WAAW,OAAO,eAAiB,IAC3C,GAAI,aAAa,QAAU,GAAM,IAEjC,GAAI,gBAAgB,QAAU,MAIpC,GAAM,WAAW,OAAS,MAI5B,GAAY,CAAC,CACf,KAAM,SACN,QAAS,CACP,OAAQ,KAET,CACD,KAAM,kBACN,QAAS,CACP,QAAS,CACP,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,KAGV,CACD,KAAM,OACN,QAAS,CACP,QAAS,IAEV,CACD,KAAM,gBACN,QAAS,CACP,SAAU,CAAC,KAEZ,IAEC,MAA0B,IAC5B,GAAU,KAAK,CACb,KAAM,QACN,QAAS,CACP,QAAS,GACT,QAAS,KAKf,GAAU,KAAK,MAAM,GAAY,KAAiB,KAAO,OAAS,GAAc,YAAc,IAC9F,EAAS,eAAiB,GAAa,GAAmB,GAAQ,OAAO,OAAO,GAAI,GAAe,CACjG,UAAW,GACX,cAAe,EACf,UAAW,MAIf,aAAiC,CAC3B,EAAS,gBACX,GAAS,eAAe,UACxB,EAAS,eAAiB,MAI9B,aAAiB,CACf,GAAI,IAAW,EAAS,MAAM,SAC1B,GAMA,GAAO,KAEP,EAAS,MAAM,aAAe,KAAa,IAA2B,KAAa,SACrF,GAAa,GAAK,WAElB,GAAa,GAAuB,GAAU,CAAC,KAK5C,GAAW,SAAS,KACvB,GAAW,YAAY,IAGzB,EAAS,MAAM,UAAY,GAC3B,KASF,aAA+B,CAC7B,MAAO,IAAU,GAAO,iBAAiB,sBAG3C,YAAsB,GAAO,CAC3B,EAAS,qBAEL,IACF,GAAW,YAAa,CAAC,EAAU,KAGrC,KACA,GAAI,IAAQ,GAAS,IAEjB,GAAwB,KACxB,GAAa,GAAsB,GACnC,GAAa,GAAsB,GAEnC,GAAa,SAAW,KAAe,QAAU,IACnD,IAAQ,IAGN,GACF,EAAc,WAAW,UAAY,CACnC,EAAS,QACR,IAEH,EAAS,OAIb,YAAsB,GAAO,CAI3B,GAHA,EAAS,qBACT,GAAW,cAAe,CAAC,EAAU,KAEjC,CAAC,EAAS,MAAM,UAAW,CAC7B,KACA,OAOF,GAAI,IAAS,MAAM,QAAQ,QAAQ,eAAiB,GAAK,EAAS,MAAM,QAAQ,QAAQ,UAAY,GAAK,CAAC,aAAc,aAAa,QAAQ,GAAM,OAAS,GAAK,GAIjK,IAAI,IAAQ,GAAS,IAEjB,GACF,EAAc,WAAW,UAAY,CAC/B,EAAS,MAAM,WACjB,EAAS,QAEV,IAIH,EAA6B,sBAAsB,UAAY,CAC7D,EAAS,UAQf,aAAkB,CAChB,EAAS,MAAM,UAAY,GAG7B,aAAmB,CAGjB,EAAS,OACT,EAAS,MAAM,UAAY,GAG7B,aAA8B,CAC5B,aAAa,GACb,aAAa,GACb,qBAAqB,GAGvB,YAAkB,GAAc,CAM9B,GAAI,GAAS,MAAM,YAInB,IAAW,iBAAkB,CAAC,EAAU,KACxC,KACA,GAAI,IAAY,EAAS,MACrB,GAAY,GAAc,EAAW,OAAO,OAAO,GAAI,GAAW,GAAqB,IAAe,CACxG,iBAAkB,MAEpB,EAAS,MAAQ,GACjB,KAEI,GAAU,sBAAwB,GAAU,qBAC9C,MACA,EAAuB,GAAS,GAAa,GAAU,sBAIrD,GAAU,eAAiB,CAAC,GAAU,cACxC,GAAiB,GAAU,eAAe,QAAQ,SAAU,GAAM,CAChE,GAAK,gBAAgB,mBAEd,GAAU,eACnB,EAAU,gBAAgB,iBAG5B,KACA,KAEI,IACF,GAAS,GAAW,IAGlB,EAAS,gBACX,MAKA,KAAsB,QAAQ,SAAU,GAAc,CAGpD,sBAAsB,GAAa,OAAO,eAAe,gBAI7D,GAAW,gBAAiB,CAAC,EAAU,MAGzC,YAAoB,GAAS,CAC3B,EAAS,SAAS,CAChB,QAAS,KAIb,aAAgB,CAOd,GAAI,IAAmB,EAAS,MAAM,UAClC,GAAc,EAAS,MAAM,YAC7B,GAAa,CAAC,EAAS,MAAM,UAC7B,GAA0B,GAAa,SAAW,CAAC,EAAS,MAAM,MAClE,GAAW,GAAwB,EAAS,MAAM,SAAU,EAAG,GAAa,UAEhF,GAAI,MAAoB,IAAe,IAAc,KAOjD,MAAmB,aAAa,aAIpC,IAAW,SAAU,CAAC,GAAW,IAE7B,EAAS,MAAM,OAAO,KAAc,IAmBxC,IAfA,EAAS,MAAM,UAAY,GAEvB,MACF,IAAO,MAAM,WAAa,WAG5B,KACA,KAEK,EAAS,MAAM,WAClB,IAAO,MAAM,WAAa,QAKxB,KAAwB,CAC1B,GAAI,IAAyB,KACzB,GAAM,GAAuB,IAC7B,GAAU,GAAuB,QAErC,GAAsB,CAAC,GAAK,IAAU,GAGxC,EAAgB,UAAyB,CACvC,GAAI,IAEJ,GAAI,GAAC,EAAS,MAAM,WAAa,GASjC,IALA,EAAsB,GAEjB,GAAO,aACZ,GAAO,MAAM,WAAa,EAAS,MAAM,eAErC,MAA0B,EAAS,MAAM,UAAW,CACtD,GAAI,IAAyB,KACzB,GAAO,GAAuB,IAC9B,GAAW,GAAuB,QAEtC,GAAsB,CAAC,GAAM,IAAW,IACxC,GAAmB,CAAC,GAAM,IAAW,WAGvC,KACA,KACA,GAAa,GAAkB,GAG9B,IAAyB,EAAS,iBAAmB,MAAgB,GAAuB,cAC7F,GAAW,UAAW,CAAC,IAEnB,EAAS,MAAM,WAAa,MAC9B,GAAiB,GAAU,UAAY,CACrC,EAAS,MAAM,QAAU,GACzB,GAAW,UAAW,CAAC,QAK7B,MAGF,aAAgB,CAOd,GAAI,IAAkB,CAAC,EAAS,MAAM,UAClC,GAAc,EAAS,MAAM,YAC7B,GAAa,CAAC,EAAS,MAAM,UAC7B,GAAW,GAAwB,EAAS,MAAM,SAAU,EAAG,GAAa,UAEhF,GAAI,MAAmB,IAAe,KAItC,IAAW,SAAU,CAAC,GAAW,IAE7B,EAAS,MAAM,OAAO,KAAc,IAiBxC,IAbA,EAAS,MAAM,UAAY,GAC3B,EAAS,MAAM,QAAU,GACzB,EAAsB,GACtB,EAAqB,GAEjB,MACF,IAAO,MAAM,WAAa,UAG5B,KACA,KACA,GAAa,IAET,KAAwB,CAC1B,GAAI,IAAyB,KACzB,GAAM,GAAuB,IAC7B,GAAU,GAAuB,QAEjC,EAAS,MAAM,WACjB,IAAsB,CAAC,GAAK,IAAU,IACtC,GAAmB,CAAC,GAAK,IAAU,WAIvC,KACA,KAEI,EAAS,MAAM,UACb,MACF,GAAkB,GAAU,EAAS,SAGvC,EAAS,WAIb,YAA+B,GAAO,CAMpC,KAAc,iBAAiB,YAAa,GAC5C,GAAa,GAAoB,GACjC,EAAqB,IAGvB,aAAmB,CAUjB,EAJa,MAAM,WACjB,EAAS,OAGP,EAAC,EAAS,MAAM,WAIpB,MAIA,KAAsB,QAAQ,SAAU,GAAc,CACpD,GAAa,OAAO,YAGlB,GAAO,YACT,GAAO,WAAW,YAAY,IAGhC,GAAmB,GAAiB,OAAO,SAAU,GAAG,CACtD,MAAO,MAAM,IAEf,EAAS,MAAM,UAAY,GAC3B,GAAW,WAAY,CAAC,KAG1B,aAAmB,CAMb,EAAS,MAAM,aAInB,GAAS,qBACT,EAAS,UACT,KACA,MAAO,GAAU,OACjB,EAAS,MAAM,YAAc,GAC7B,GAAW,YAAa,CAAC,MAI7B,YAAe,EAAS,EAAe,CACjC,IAAkB,QACpB,GAAgB,IAGlB,GAAI,GAAU,GAAa,QAAQ,OAAO,EAAc,SAAW,IAQnE,KACA,GAAI,GAAc,OAAO,OAAO,GAAI,EAAe,CACjD,QAAS,IAEP,EAAW,GAAmB,GAGlC,GAAI,GAAuC,QAM3C,GAAI,GAAY,EAAS,OAAO,SAAU,EAAK,EAAW,CACxD,GAAI,GAAW,GAAa,GAAY,EAAW,GAEnD,MAAI,IACF,EAAI,KAAK,GAGJ,GACN,IACH,MAAO,IAAU,GAAW,EAAU,GAAK,EAG7C,GAAM,aAAe,GACrB,GAAM,gBAAkB,GACxB,GAAM,aAAe,GACrB,GAAI,IAAU,SAAiB,EAAO,CACpC,GAAI,GAAO,IAAU,OAAS,GAAK,EAC/B,EAA8B,EAAK,QACnC,EAAW,EAAK,SAEpB,GAAiB,QAAQ,SAAU,EAAU,CAC3C,GAAI,GAAa,GAMjB,GAJI,GACF,GAAa,GAAmB,GAA+B,EAAS,YAAc,EAA8B,EAAS,SAAW,EAA4B,QAGlK,CAAC,EAAY,CACf,GAAI,GAAmB,EAAS,MAAM,SACtC,EAAS,SAAS,CAChB,SAAU,IAEZ,EAAS,OAEJ,EAAS,MAAM,aAClB,EAAS,SAAS,CAChB,SAAU,QAWhB,GAAsB,OAAO,OAAO,GAAI,GAAa,CACvD,OAAQ,SAAgB,EAAM,CAC5B,GAAI,GAAQ,EAAK,MACb,EAAgB,CAClB,OAAQ,CACN,SAAU,EAAM,QAAQ,SACxB,KAAM,IACN,IAAK,IACL,OAAQ,KAEV,MAAO,CACL,SAAU,YAEZ,UAAW,IAEb,OAAO,OAAO,EAAM,SAAS,OAAO,MAAO,EAAc,QACzD,EAAM,OAAS,EAEX,EAAM,SAAS,OACjB,OAAO,OAAO,EAAM,SAAS,MAAM,MAAO,EAAc,UAO1D,GAAkB,SAAyB,EAAgB,EAAe,CAC5E,GAAI,GAEA,IAAkB,QACpB,GAAgB,IAQlB,GAAI,GAAsB,EACtB,EAAa,GACb,EAAiB,GACjB,EACA,EAAY,EAAc,UAC1B,EAA4B,GAC5B,EAAgB,GAEpB,YAA6B,CAC3B,EAAiB,EAAoB,IAAI,SAAU,EAAU,CAC3D,MAAO,IAAiB,EAAS,MAAM,eAAiB,EAAS,aAChE,OAAO,SAAU,EAAK,GAAM,CAC7B,MAAO,GAAI,OAAO,KACjB,IAGL,YAAyB,CACvB,EAAa,EAAoB,IAAI,SAAU,EAAU,CACvD,MAAO,GAAS,YAIpB,WAAyB,EAAW,CAClC,EAAoB,QAAQ,SAAU,GAAU,CAC1C,EACF,GAAS,SAET,GAAS,YAKf,WAA2B,EAAW,CACpC,MAAO,GAAoB,IAAI,SAAU,GAAU,CACjD,GAAI,IAAmB,GAAS,SAEhC,UAAS,SAAW,SAAU,GAAO,CACnC,GAAiB,IAEb,GAAS,YAAc,GACzB,EAAU,SAAS,KAIhB,UAAY,CACjB,GAAS,SAAW,MAM1B,WAAyB,EAAW,GAAQ,CAC1C,GAAI,IAAQ,EAAe,QAAQ,IAEnC,GAAI,KAAW,EAIf,GAAgB,GAChB,GAAI,IAAiB,IAAa,IAAI,OAAO,WAAW,OAAO,SAAU,GAAK,GAAM,CAClF,UAAI,IAAQ,EAAoB,IAAO,MAAM,IACtC,IACN,IACH,EAAU,SAAS,OAAO,OAAO,GAAI,GAAe,CAClD,uBAAwB,MAAO,IAAc,wBAA2B,WAAa,GAAc,uBAAyB,UAAY,CACtI,GAAI,IAEJ,MAAQ,IAAoB,EAAW,MAAW,KAAO,OAAS,GAAkB,6BAK1F,EAAgB,IAChB,IACA,IACA,GAAI,GAAS,CACX,GAAI,UAAc,CAChB,MAAO,CACL,UAAW,UAAqB,CAC9B,EAAgB,KAElB,SAAU,UAAoB,CAC5B,EAAgB,MAElB,eAAgB,SAAwB,GAAU,CAC5C,GAAS,MAAM,cAAgB,CAAC,GAClC,GAAgB,GAChB,EAAgB,OAGpB,OAAQ,SAAgB,GAAU,CAC5B,GAAS,MAAM,cAAgB,CAAC,GAClC,GAAgB,GAChB,EAAgB,GAAU,EAAW,MAGzC,UAAW,SAAmB,GAAU,GAAO,CAC7C,EAAgB,GAAU,GAAM,mBAKpC,EAAY,GAAM,KAAO,OAAO,OAAO,GAAI,GAAiB,EAAe,CAAC,cAAe,CAC7F,QAAS,CAAC,GAAQ,OAAO,EAAc,SAAW,IAClD,cAAe,EACf,cAAe,OAAO,OAAO,GAAI,EAAc,cAAe,CAC5D,UAAW,GAAG,OAAS,IAAwB,EAAc,gBAAkB,KAAO,OAAS,EAAsB,YAAc,GAAI,CAAC,UAGxI,GAAe,EAAU,KAE7B,EAAU,KAAO,SAAU,EAAQ,CAIjC,GAHA,KAGI,CAAC,GAAiB,GAAU,KAC9B,MAAO,GAAgB,EAAW,EAAW,IAK/C,GAAI,KAAiB,GAAU,MAK/B,IAAI,MAAO,IAAW,SACpB,MAAO,GAAW,IAAW,EAAgB,EAAW,EAAW,IAIrE,GAAI,EAAoB,QAAQ,IAAW,EAAG,CAC5C,GAAI,IAAM,EAAO,UACjB,MAAO,GAAgB,EAAW,IAIpC,GAAI,EAAW,QAAQ,IAAW,EAChC,MAAO,GAAgB,EAAW,KAItC,EAAU,SAAW,UAAY,CAC/B,GAAI,GAAQ,EAAW,GAEvB,GAAI,CAAC,EACH,MAAO,GAAU,KAAK,GAGxB,GAAI,IAAQ,EAAW,QAAQ,GAC/B,EAAU,KAAK,EAAW,GAAQ,IAAM,IAG1C,EAAU,aAAe,UAAY,CACnC,GAAI,GAAO,EAAW,EAAW,OAAS,GAE1C,GAAI,CAAC,EACH,MAAO,GAAU,KAAK,GAGxB,GAAI,IAAQ,EAAW,QAAQ,GAC3B,GAAS,EAAW,GAAQ,IAAM,EACtC,EAAU,KAAK,KAGjB,GAAI,IAAmB,EAAU,SAEjC,SAAU,SAAW,SAAU,EAAO,CACpC,EAAY,EAAM,WAAa,EAC/B,GAAiB,IAGnB,EAAU,aAAe,SAAU,EAAe,CAChD,EAAgB,IAChB,EAA0B,QAAQ,SAAU,GAAI,CAC9C,MAAO,QAET,EAAsB,EACtB,EAAgB,IAChB,IACA,IACA,EAA4B,EAAkB,GAC9C,EAAU,SAAS,CACjB,cAAe,KAInB,EAA4B,EAAkB,GACvC,GAGL,GAAsB,CACxB,UAAW,aACX,QAAS,QACT,MAAO,SAOT,YAAkB,EAAS,EAAO,CAMhC,GAAI,GAAY,GACZ,EAAsB,GACtB,EAAW,GACX,EAAS,EAAM,OACf,EAAc,GAAiB,EAAO,CAAC,WACvC,EAAc,OAAO,OAAO,GAAI,EAAa,CAC/C,QAAS,SACT,MAAO,KAEL,EAAa,OAAO,OAAO,CAC7B,MAAO,GAAa,OACnB,EAAa,CACd,aAAc,KAEZ,EAAc,GAAM,EAAS,GAC7B,EAAwB,GAAiB,GAE7C,WAAmB,EAAO,CACxB,GAAI,GAAC,EAAM,QAAU,GAIrB,IAAI,GAAa,EAAM,OAAO,QAAQ,GAEtC,GAAI,EAAC,EAQL,IAAI,IAAU,EAAW,aAAa,uBAAyB,EAAM,SAAW,GAAa,QAE7F,GAAI,GAAW,QAIX,IAAM,OAAS,cAAgB,MAAO,GAAW,OAAU,YAI3D,IAAM,OAAS,cAAgB,GAAQ,QAAQ,GAAoB,EAAM,OAAS,GAItF,IAAI,IAAW,GAAM,EAAY,GAE7B,IACF,GAAsB,EAAoB,OAAO,QAIrD,WAAY,EAAM,EAAW,GAAS,GAAS,CACzC,KAAY,QACd,IAAU,IAGZ,EAAK,iBAAiB,EAAW,GAAS,IAC1C,EAAU,KAAK,CACb,KAAM,EACN,UAAW,EACX,QAAS,GACT,QAAS,KAIb,WAA2B,EAAU,CACnC,GAAI,GAAY,EAAS,UACzB,EAAG,EAAW,aAAc,EAAW,IACvC,EAAG,EAAW,YAAa,GAC3B,EAAG,EAAW,UAAW,GACzB,EAAG,EAAW,QAAS,GAGzB,YAAgC,CAC9B,EAAU,QAAQ,SAAU,EAAM,CAChC,GAAI,GAAO,EAAK,KACZ,GAAY,EAAK,UACjB,GAAU,EAAK,QACf,EAAU,EAAK,QACnB,EAAK,oBAAoB,GAAW,GAAS,KAE/C,EAAY,GAGd,WAAwB,EAAU,CAChC,GAAI,GAAkB,EAAS,QAC3B,GAAiB,EAAS,OAC1B,GAAkB,EAAS,QAE/B,EAAS,QAAU,SAAU,EAA6B,CACpD,IAAgC,QAClC,GAA8B,IAG5B,GACF,EAAoB,QAAQ,SAAU,GAAU,CAC9C,GAAS,YAIb,EAAsB,GACtB,IACA,KAGF,EAAS,OAAS,UAAY,CAC5B,KACA,EAAoB,QAAQ,SAAU,EAAU,CAC9C,MAAO,GAAS,WAElB,EAAW,IAGb,EAAS,QAAU,UAAY,CAC7B,KACA,EAAoB,QAAQ,SAAU,EAAU,CAC9C,MAAO,GAAS,YAElB,EAAW,IAGb,EAAkB,GAGpB,SAAsB,QAAQ,GACvB,EAGT,GAAI,IAAc,CAChB,KAAM,cACN,aAAc,GACd,GAAI,SAAY,EAAU,CACxB,GAAI,GAGJ,GAAI,CAAG,IAAwB,EAAS,MAAM,SAAW,MAAQ,EAAsB,SAKrF,MAAO,GAGT,GAAI,GAAe,GAAY,EAAS,QACpC,EAAM,EAAa,IACnB,EAAU,EAAa,QAEvB,EAAW,EAAS,MAAM,YAAc,KAA0B,KACtE,MAAO,CACL,SAAU,UAAoB,CACxB,GACF,GAAI,aAAa,EAAU,EAAI,mBAC/B,EAAI,aAAa,mBAAoB,IACrC,EAAI,MAAM,SAAW,SACrB,EAAS,SAAS,CAChB,MAAO,GACP,UAAW,iBAIjB,QAAS,UAAmB,CAC1B,GAAI,EAAU,CACZ,GAAI,GAAqB,EAAI,MAAM,mBAC/B,EAAW,OAAO,EAAmB,QAAQ,KAAM,KAIvD,EAAQ,MAAM,gBAAkB,KAAK,MAAM,EAAW,IAAM,KAC5D,EAAS,MAAM,mBAAqB,EACpC,GAAmB,CAAC,GAAW,aAGnC,OAAQ,UAAkB,CACpB,GACF,GAAS,MAAM,mBAAqB,QAGxC,OAAQ,UAAkB,CACpB,GACF,GAAmB,CAAC,GAAW,cAOzC,aAAiC,CAC/B,GAAI,GAAW,KACf,SAAS,UAAY,GACrB,GAAmB,CAAC,GAAW,UACxB,EAGT,GAAI,IAAc,CAChB,QAAS,EACT,QAAS,GAEP,GAAkB,GAEtB,YAA0B,EAAM,CAC9B,GAAI,GAAU,EAAK,QACf,EAAU,EAAK,QACnB,GAAc,CACZ,QAAS,EACT,QAAS,GAIb,YAAgC,EAAK,CACnC,EAAI,iBAAiB,YAAa,IAGpC,YAAmC,EAAK,CACtC,EAAI,oBAAoB,YAAa,IAGvC,GAAI,IAAe,CACjB,KAAM,eACN,aAAc,GACd,GAAI,SAAY,EAAU,CACxB,GAAI,GAAY,EAAS,UACrB,EAAM,GAAiB,EAAS,MAAM,eAAiB,GACvD,EAAmB,GACnB,EAAgB,GAChB,EAAc,GACd,EAAY,EAAS,MAEzB,YAAgC,CAC9B,MAAO,GAAS,MAAM,eAAiB,WAAa,EAAS,MAAM,UAGrE,YAAuB,CACrB,EAAI,iBAAiB,YAAa,GAGpC,YAA0B,CACxB,EAAI,oBAAoB,YAAa,GAGvC,YAAuC,CACrC,EAAmB,GACnB,EAAS,SAAS,CAChB,uBAAwB,OAE1B,EAAmB,GAGrB,WAAqB,EAAO,CAG1B,GAAI,GAAwB,EAAM,OAAS,EAAU,SAAS,EAAM,QAAU,GAC1E,EAAe,EAAS,MAAM,aAC9B,GAAU,EAAM,QAChB,GAAU,EAAM,QAChB,EAAO,EAAU,wBACjB,GAAY,GAAU,EAAK,KAC3B,GAAY,GAAU,EAAK,IAE3B,IAAyB,CAAC,EAAS,MAAM,cAC3C,EAAS,SAAS,CAEhB,uBAAwB,UAAkC,CACxD,GAAI,IAAO,EAAU,wBACjB,GAAI,GACJ,GAAI,GAEJ,IAAiB,WACnB,IAAI,GAAK,KAAO,GAChB,GAAI,GAAK,IAAM,IAGjB,GAAI,IAAM,IAAiB,aAAe,GAAK,IAAM,GACjD,GAAQ,IAAiB,WAAa,GAAK,MAAQ,GACnD,GAAS,IAAiB,aAAe,GAAK,OAAS,GACvD,GAAO,IAAiB,WAAa,GAAK,KAAO,GACrD,MAAO,CACL,MAAO,GAAQ,GACf,OAAQ,GAAS,GACjB,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,OAOhB,YAAkB,CACZ,EAAS,MAAM,cACjB,IAAgB,KAAK,CACnB,SAAU,EACV,IAAK,IAEP,GAAuB,IAI3B,YAAmB,CACjB,GAAkB,GAAgB,OAAO,SAAU,EAAM,CACvD,MAAO,GAAK,WAAa,IAGvB,GAAgB,OAAO,SAAU,EAAM,CACzC,MAAO,GAAK,MAAQ,IACnB,SAAW,GACZ,GAA0B,GAI9B,MAAO,CACL,SAAU,EACV,UAAW,EACX,eAAgB,UAA0B,CACxC,EAAY,EAAS,OAEvB,cAAe,SAAuB,EAAG,EAAO,CAC9C,GAAI,IAAe,EAAM,aAErB,GAIA,KAAiB,QAAa,EAAU,eAAiB,IAC3D,KAEI,GACF,KAEI,EAAS,MAAM,WAAa,CAAC,GAAiB,CAAC,KACjD,KAGF,KACA,OAIN,QAAS,UAAmB,CACtB,EAAS,MAAM,cAAgB,CAAC,GAC9B,IACF,GAAY,IACZ,EAAc,IAGX,KACH,MAIN,UAAW,SAAmB,EAAG,EAAO,CAClC,GAAa,IACf,IAAc,CACZ,QAAS,EAAM,QACf,QAAS,EAAM,UAInB,EAAgB,EAAM,OAAS,SAEjC,SAAU,UAAoB,CACxB,EAAS,MAAM,cACjB,KACA,IACA,EAAc,QAOxB,YAAkB,EAAO,EAAU,CACjC,GAAI,GAEJ,MAAO,CACL,cAAe,OAAO,OAAO,GAAI,EAAM,cAAe,CACpD,UAAW,GAAG,OAAU,KAAuB,EAAM,gBAAkB,KAAO,OAAS,EAAqB,YAAc,IAAI,OAAO,SAAU,EAAM,CACnJ,GAAI,GAAO,EAAK,KAChB,MAAO,KAAS,EAAS,OACvB,CAAC,OAKX,GAAI,IAAoB,CACtB,KAAM,oBACN,aAAc,GACd,GAAI,SAAY,EAAU,CACxB,GAAI,GAAY,EAAS,UAEzB,YAAqB,CACnB,MAAO,CAAC,CAAC,EAAS,MAAM,kBAG1B,GAAI,GACA,EAAkB,GAClB,EAAmB,GACnB,EAAkB,GAClB,EAAW,CACb,KAAM,yBACN,QAAS,GACT,MAAO,aACP,GAAI,SAAY,EAAO,CACrB,GAAI,GAAQ,EAAM,MAEd,KACE,GAAgB,QAAQ,EAAM,aAAe,IAC/C,GAAkB,IAGhB,IAAc,EAAM,WAAa,EAAgB,QAAQ,EAAM,aAAe,IAChF,GAAgB,KAAK,EAAM,WAC3B,EAAS,SAAS,CAEhB,uBAAwB,UAAkC,CACxD,MAAO,GAAwB,EAAM,eAK3C,EAAY,EAAM,aAKxB,WAAiC,EAAW,CAC1C,MAAO,IAA4B,GAAiB,GAAY,EAAU,wBAAyB,GAAU,EAAU,kBAAmB,GAG5I,WAA0B,EAAc,CACtC,EAAmB,GACnB,EAAS,SAAS,GAClB,EAAmB,GAGrB,YAAuB,CAChB,GACH,EAAiB,GAAS,EAAS,MAAO,IAI9C,MAAO,CACL,SAAU,EACV,cAAe,EACf,UAAW,SAAmB,EAAG,EAAO,CACtC,GAAI,GAAa,GAAQ,CACvB,GAAI,GAAQ,GAAU,EAAS,UAAU,kBACrC,EAAa,EAAM,KAAK,SAAU,GAAM,CAC1C,MAAO,IAAK,KAAO,GAAK,EAAM,SAAW,GAAK,MAAQ,GAAK,EAAM,SAAW,GAAK,IAAM,GAAK,EAAM,SAAW,GAAK,OAAS,GAAK,EAAM,UAEpI,EAAQ,EAAM,QAAQ,GAC1B,EAAkB,EAAQ,GAAK,EAAQ,IAG3C,SAAU,UAAoB,CAC5B,EAAkB,OAK1B,YAAqC,EAAsB,EAAc,EAAa,EAAiB,CAErG,GAAI,EAAY,OAAS,GAAK,IAAyB,KACrD,MAAO,GAIT,GAAI,EAAY,SAAW,GAAK,GAAmB,GAAK,EAAY,GAAG,KAAO,EAAY,GAAG,MAC3F,MAAO,GAAY,IAAoB,EAGzC,OAAQ,OACD,UACA,SACH,CACE,GAAI,GAAY,EAAY,GACxB,EAAW,EAAY,EAAY,OAAS,GAC5C,EAAQ,IAAyB,MACjC,EAAM,EAAU,IAChB,EAAS,EAAS,OAClB,EAAO,EAAQ,EAAU,KAAO,EAAS,KACzC,EAAQ,EAAQ,EAAU,MAAQ,EAAS,MAC3C,EAAQ,EAAQ,EAChB,EAAS,EAAS,EACtB,MAAO,CACL,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,OAAQ,OAIT,WACA,QACH,CACE,GAAI,GAAU,KAAK,IAAI,MAAM,KAAM,EAAY,IAAI,SAAU,GAAO,CAClE,MAAO,IAAM,QAEX,EAAW,KAAK,IAAI,MAAM,KAAM,EAAY,IAAI,SAAU,GAAO,CACnE,MAAO,IAAM,SAEX,EAAe,EAAY,OAAO,SAAU,GAAM,CACpD,MAAO,KAAyB,OAAS,GAAK,OAAS,EAAU,GAAK,QAAU,IAE9E,EAAO,EAAa,GAAG,IACvB,EAAU,EAAa,EAAa,OAAS,GAAG,OAChD,GAAQ,EACR,GAAS,EAET,EAAS,GAAS,GAElB,GAAU,EAAU,EAExB,MAAO,CACL,IAAK,EACL,OAAQ,EACR,KAAM,GACN,MAAO,GACP,MAAO,EACP,OAAQ,YAMV,MAAO,IAKf,GAAI,IAAS,CACX,KAAM,SACN,aAAc,GACd,GAAI,SAAY,EAAU,CACxB,GAAI,GAAY,EAAS,UACrB,EAAS,EAAS,OAEtB,YAAwB,CACtB,MAAO,GAAS,eAAiB,EAAS,eAAe,MAAM,SAAS,UAAY,EAGtF,WAAqB,EAAO,CAC1B,MAAO,GAAS,MAAM,SAAW,IAAQ,EAAS,MAAM,SAAW,EAGrE,GAAI,GAAc,KACd,EAAc,KAElB,YAA0B,CACxB,GAAI,GAAiB,EAAY,aAAe,IAAe,wBAA0B,KACrF,EAAiB,EAAY,UAAY,EAAO,wBAA0B,KAE1E,IAAkB,GAAkB,EAAa,IAAmB,GAAkB,GAAkB,EAAa,KACnH,EAAS,gBACX,EAAS,eAAe,SAI5B,EAAc,EACd,EAAc,EAEV,EAAS,MAAM,WACjB,sBAAsB,GAI1B,MAAO,CACL,QAAS,UAAmB,CACtB,EAAS,MAAM,QACjB,QAOV,YAA2B,EAAO,EAAO,CACvC,MAAI,IAAS,EACJ,EAAM,MAAQ,EAAM,KAAO,EAAM,QAAU,EAAM,OAAS,EAAM,SAAW,EAAM,QAAU,EAAM,OAAS,EAAM,KAGlH,GAGT,GAAM,gBAAgB,CACpB,OAAQ,KAGV,OAAe,GCh6Ef,GAXiB,GAA8B,CAC7C,GAAM,EAAQ,CAEZ,UAAW,GACX,QAAS,QACT,YAAa,GACb,MAAO,GACP,MAAO,QCTX,GAAgB,GAA2B,CACzC,KAAM,GAAS,CAAC,GAAG,EAAU,uBAAuB,oBACpD,GAAI,GAGJ,WAAuC,EAAa,EAAM,CACxD,GAAI,CAAC,GAAQ,OAAO,KAAK,GAAM,SAAW,EACxC,MAAO,iDAAiD,IAG1D,KAAM,GAAiB,GADH,eACW,OAAO,KAAK,UAAU,IAC/C,EAAa,KAAK,OAAO,aAAa,MAAM,KAAM,IAClD,EAAmB,mBAAmB,gBAAgB,mBAAmB,MAC/E,MAAO,iDAAiD,cAAwB,IAGlF,EAAO,QAAS,GAAyB,CACvC,EAAQ,iBAAiB,QAAU,GAAU,CAC3C,KAAM,GAAM,EAAQ,QAAQ,UACtB,EAAS,EAAQ,QAAQ,gBACzB,EAAe,CACnB,yBAA0B,GAAG,EAAQ,QAAQ,sCAC7C,4BAA6B,GAAG,EAAQ,QAAQ,yCAChD,MAAO,GAAG,EAAQ,QAAQ,uBAC1B,OAAQ,GAAG,EAAQ,QAAQ,wBAC3B,cAAe,GAAG,EAAQ,QAAQ,sBAGpC,GAAI,IAAQ,QACV,EAAM,iBACN,UAAU,UAAU,UAAU,GAC9B,OAAO,SAAS,KAAO,EAAQ,cAAc,KAAK,aACzC,IAAQ,SAAU,CAC3B,EAAM,iBACN,KAAM,GAAc,EAAQ,QAAQ,aACpC,EAAM,EAA8B,EAAa,GACjD,OAAO,SAAS,KAAO,QCpC/B,GAAgB,GAA2B,CACzC,GAAI,GAEJ,WAAuC,EAAa,EAAM,CACxD,GAAI,CAAC,GAAQ,OAAO,KAAK,GAAM,SAAW,EACxC,MAAO,iDAAiD,IAG1D,KAAM,GAAiB,GADH,eACW,OAAO,KAAK,UAAU,IAC/C,EAAa,KAAK,OAAO,aAAa,MAAM,KAAM,IAClD,EAAmB,mBAAmB,gBAAgB,mBAAmB,MAC/E,MAAO,iDAAiD,cAAwB,IAGlF,OAAO,iBAAiB,OAAQ,IAAM,CACpC,GAAI,EAAW,CAEb,KAAM,GAAM,EAAU,QAAQ,UACxB,EAAU,EAAU,QAAQ,gBAC5B,EAAU,EAAU,QAAQ,aAC5B,EAAe,CACnB,yBAA0B,GAAG,EAAU,QAAQ,sCAC/C,4BAA6B,GAAG,EAAU,QAAQ,yCAClD,MAAO,GAAG,EAAU,QAAQ,uBAC5B,OAAQ,GAAG,EAAU,QAAQ,wBAC7B,cAAe,GAAG,EAAU,QAAQ,sBAEtC,GAAI,IAAQ,QACV,UAAU,UAAU,UAAU,GAC9B,OAAO,SAAS,KAAO,UACd,IAAQ,SAAU,CAC3B,KAAM,GAAc,EAAU,QAAQ,aACtC,EAAM,EAA8B,EAAa,GACjD,OAAO,SAAS,KAAO,MACd,KAAQ,QAAU,IAAQ,WACnC,QAAO,SAAS,KAAO,OCzC/B;AAAA;AAAA;AAAA;AAAA;AAAA,GAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAeA,GAAI,IAAW,UAAW,CACtB,UAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,OAAS,GAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAAK,CACjD,EAAI,UAAU,GACd,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAE,GAAK,EAAE,IAE9E,MAAO,IAEJ,GAAS,MAAM,KAAM,YAGhC,aAA0B,CACtB,OAAS,GAAI,EAAG,EAAI,EAAG,EAAK,UAAU,OAAQ,EAAI,EAAI,IAAK,GAAK,UAAU,GAAG,OAC7E,OAAS,GAAI,MAAM,GAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,IACzC,OAAS,GAAI,UAAU,GAAI,EAAI,EAAG,EAAK,EAAE,OAAQ,EAAI,EAAI,IAAK,IAC1D,EAAE,GAAK,EAAE,GACjB,MAAO,GAQX,GAAI,IAAW,CACX,iBAAkB,qBAClB,KAAM,SACN,SAAU,aACV,gBAAiB,oBACjB,aAAc,iBACd,mBAAoB,uBACpB,WAAY,eACZ,UAAW,cACX,cAAe,kBACf,YAAa,gBACb,WAAY,eACZ,YAAa,gBACb,UAAW,cACX,SAAU,aACV,QAAS,YACT,gBAAiB,oBACjB,gBAAiB,oBACjB,YAAa,gBACb,WAAY,eACZ,WAAY,eACZ,YAAa,gBACb,eAAgB,mBAChB,aAAc,iBACd,SAAU,aACV,cAAe,kBACf,aAAc,kBAGd,GAA2B,CAC3B,KAAM,WACN,OAAQ,OACR,MAAO,IACP,WAAY,qBACZ,OAAQ,OACR,MAAO,OACP,SAAU,GACV,WAAY,gBACZ,iBAAkB,IAClB,UAAW,GACX,uBAAwB,IACxB,eAAgB,GAChB,cAAe,EACf,cAAe,IACf,WAAY,EACZ,qBAAsB,GACtB,kBAAmB,GACnB,aAAc,WACd,kBAAmB,GACnB,qBAAsB,EACtB,eAAgB,GAChB,gBAAiB,GACjB,oBAAqB,GACrB,cAAe,GACf,SAAU,GACV,aAAc,GACd,WAAY,GACZ,cAAe,GACf,iBAAkB,GAClB,KAAM,GACN,OAAQ,GACR,SAAU,GACV,UAAW,GACX,SAAU,GACV,kBAAmB,GACnB,iBAAkB,GAClB,WAAY,GACZ,yBAA0B,GAC1B,gBAAiB,eACjB,wBAAyB,GACzB,QAAS,EACT,wBAAyB,GACzB,SAAU,GACV,aAAc,GACd,SAAU,GACV,SAAU,GACV,MAAO,EACP,YAAa,OACb,aAAc,OACd,eAAgB,OAChB,gBAAiB,OACjB,SAAU,GACV,QAAS,GACT,gBAAiB,cACjB,eAAgB,GAChB,YAAa,GACb,WAAY,GACZ,QAAS,GACT,UAAW,GACX,WAAY,GACZ,aAAc,GACd,SAAU,OACV,eAAgB,CACZ,SAAU,GACV,cAAe,GACf,SAAU,IAEd,QAAS,GACT,QAAS,CACL,aAAc,gBACd,eAAgB,kBAChB,cAAe,iBACf,UAAW,aACX,SAAU,WACV,UAAW,aACX,mBAAoB,sCAI5B,aAA2B,CACtB,WAAY,CACT,GAAI,MAAO,QAAO,aAAgB,WAC9B,MAAO,GACX,WAAqB,EAAO,EAAQ,CAChC,EAAS,GAAU,CACf,QAAS,GACT,WAAY,GACZ,OAAQ,MAEZ,GAAI,GAAM,SAAS,YAAY,eAC/B,SAAI,gBAAgB,EAAO,EAAO,QAAS,EAAO,WAAY,EAAO,QAC9D,EAEX,OAAO,YAAc,MAExB,UAAY,CACJ,QAAQ,UAAU,SACnB,SAAQ,UAAU,QACd,QAAQ,UAAU,mBACd,QAAQ,UAAU,0BAItC,GAAI,IAAyB,UAAY,CACrC,WAAiB,EAAU,CACvB,YAAK,kBAAoB,CACrB,qBACA,2BACA,YACA,cAEJ,KAAK,SAAW,KAAK,aAAa,GAClC,KAAK,aAAe,KAAK,cAClB,KAEX,SAAQ,aAAe,UAAY,CAC/B,MAAO,uCAAuC,QAAQ,QAAS,SAAU,EAAG,CACxE,GAAI,GAAK,KAAK,SAAW,GAAM,EAAG,EAAI,GAAK,IAAM,EAAK,EAAI,EAAO,EACjE,MAAO,GAAE,SAAS,OAG1B,EAAQ,UAAU,aAAe,SAAU,EAAU,EAAS,CAE1D,GADI,IAAY,QAAU,GAAU,UAChC,MAAO,IAAa,SACpB,MAAO,GAEX,EAAU,GAAW,SACrB,GAAI,GAAK,EAAS,UAAU,EAAG,GAC/B,MAAI,KAAO,IACA,EAAQ,cAAc,GAGtB,EAAQ,iBAAiB,IAGxC,EAAQ,UAAU,MAAQ,SAAU,EAAM,CACtC,MAAK,MAAK,SAGV,CAAI,KAAK,SAAS,SAAW,OACzB,GAAG,QAAQ,KAAK,KAAK,SAAU,GAG/B,EAAK,KAAK,SAAU,GAEjB,MARI,MAUf,EAAQ,UAAU,oBAAsB,SAAU,EAAI,EAAa,EAAO,CAEtE,GAAI,GAAW,EAAY,QAAQ,aAAc,SAAU,EAAG,EAAQ,CAClE,MAAO,GAAO,gBAEd,KAAK,kBAAkB,QAAQ,KAAc,GAC7C,GAAG,MAAM,EAAS,OAAO,GAAG,cAAgB,EAAS,MAAM,IAAM,EACjE,EAAG,MAAM,SAAW,GAAY,EAChC,EAAG,MAAM,MAAQ,GAAY,EAC7B,EAAG,MAAM,KAAO,GAAY,EAC5B,EAAG,MAAM,IAAM,GAAY,GAG3B,EAAG,MAAM,GAAY,GAG7B,EAAQ,UAAU,YAAc,UAAY,CACxC,MAAI,MAAK,UAAY,KAAK,SAAS,SAAW,OACnC,KAAK,SAAS,GAGd,KAAK,UAGpB,EAAQ,UAAU,eAAiB,SAAU,EAAO,EAAW,CAC3D,GAAI,GAAiB,EAAU,MAAM,KACrC,MAAO,GACF,MAAM,KACN,OAAO,SAAU,EAAG,CAAE,MAAO,KAC7B,MAAM,SAAU,EAAG,CACpB,MAAO,GAAe,QAAQ,KAAO,MAG7C,EAAQ,UAAU,KAAO,SAAU,EAAM,EAAO,CAC5C,MAAI,KAAU,OACL,KAAK,aAGH,KAAK,aAAa,aAAa,GAF3B,GAIf,MAAK,MAAM,SAAU,EAAI,CACrB,EAAG,aAAa,EAAM,KAEnB,OAEX,EAAQ,UAAU,KAAO,SAAU,EAAU,CACzC,MAAO,IAAI,KAAK,aAAa,EAAU,KAAK,YAEhD,EAAQ,UAAU,MAAQ,UAAY,CAClC,MAAI,MAAK,UAAY,KAAK,SAAS,SAAW,OACnC,GAAI,KAAK,SAAS,IAGlB,GAAI,KAAK,WAGxB,EAAQ,UAAU,GAAK,SAAU,EAAO,CACpC,MAAO,IAAI,KAAK,SAAS,KAE7B,EAAQ,UAAU,OAAS,UAAY,CACnC,MAAO,IAAI,KAAK,SAAS,gBAE7B,EAAQ,UAAU,IAAM,UAAY,CAChC,MAAO,MAAK,eAEhB,EAAQ,UAAU,WAAa,SAAU,EAAY,CACjD,GAAI,GAAQ,EAAW,MAAM,KAC7B,YAAK,MAAM,SAAU,EAAI,CACrB,EAAM,QAAQ,SAAU,EAAM,CAAE,MAAO,GAAG,gBAAgB,OAEvD,MAEX,EAAQ,UAAU,KAAO,SAAU,EAAW,CAC1C,GAAI,CAAC,KAAK,aACN,MAAO,MAEX,GAAI,GAAU,SAAS,cAAc,OACrC,SAAQ,UAAY,EACpB,KAAK,aAAa,WAAW,aAAa,EAAS,KAAK,cACxD,KAAK,aAAa,WAAW,YAAY,KAAK,cAC9C,EAAQ,YAAY,KAAK,cAClB,MAEX,EAAQ,UAAU,SAAW,SAAU,EAAY,CAC/C,MAAI,KAAe,QAAU,GAAa,IAC1C,KAAK,MAAM,SAAU,EAAI,CAErB,EAAW,MAAM,KAAK,QAAQ,SAAU,EAAW,CAC3C,GACA,EAAG,UAAU,IAAI,OAItB,MAEX,EAAQ,UAAU,YAAc,SAAU,EAAY,CAClD,YAAK,MAAM,SAAU,EAAI,CAErB,EAAW,MAAM,KAAK,QAAQ,SAAU,EAAW,CAC3C,GACA,EAAG,UAAU,OAAO,OAIzB,MAEX,EAAQ,UAAU,SAAW,SAAU,EAAW,CAC9C,MAAK,MAAK,aAGH,KAAK,aAAa,UAAU,SAAS,GAFjC,IAIf,EAAQ,UAAU,aAAe,SAAU,EAAW,CAClD,MAAK,MAAK,aAGH,KAAK,aAAa,aAAa,GAF3B,IAIf,EAAQ,UAAU,YAAc,SAAU,EAAW,CACjD,MAAK,MAAK,aAGV,CAAI,KAAK,SAAS,GACd,KAAK,YAAY,GAGjB,KAAK,SAAS,GAEX,MARI,MAUf,EAAQ,UAAU,IAAM,SAAU,EAAU,EAAO,CAC/C,GAAI,GAAQ,KACZ,YAAK,MAAM,SAAU,EAAI,CACrB,EAAM,oBAAoB,EAAI,EAAU,KAErC,MAGX,EAAQ,UAAU,GAAK,SAAU,EAAQ,EAAU,CAC/C,GAAI,GAAQ,KACZ,MAAK,MAAK,SAGV,GAAO,MAAM,KAAK,QAAQ,SAAU,EAAO,CAClC,MAAM,QAAQ,EAAQ,eAAe,KACtC,GAAQ,eAAe,GAAS,IAEpC,EAAQ,eAAe,GAAO,KAAK,GACnC,EAAM,SAAS,iBAAiB,EAAM,MAAM,KAAK,GAAI,KAElD,MATI,MAYf,EAAQ,UAAU,KAAO,SAAU,EAAO,EAAU,CAChD,GAAI,GAAQ,KACZ,YAAK,GAAG,EAAO,UAAY,CACvB,EAAM,IAAI,GACV,EAAS,KAEN,MAEX,EAAQ,UAAU,IAAM,SAAU,EAAO,CACrC,GAAI,GAAQ,KACZ,MAAK,MAAK,SAGV,QAAO,KAAK,EAAQ,gBAAgB,QAAQ,SAAU,EAAW,CACzD,EAAM,eAAe,EAAO,IAC5B,GAAQ,eAAe,GAAW,QAAQ,SAAU,EAAU,CAC1D,EAAM,SAAS,oBAAoB,EAAU,MAAM,KAAK,GAAI,KAEhE,EAAQ,eAAe,GAAa,MAGrC,MAVI,MAYf,EAAQ,UAAU,QAAU,SAAU,EAAO,EAAQ,CACjD,GAAI,CAAC,KAAK,aACN,MAAO,MAEX,GAAI,GAAc,GAAI,aAAY,EAAM,MAAM,KAAK,GAAI,CACnD,OAAQ,GAAU,OAEtB,YAAK,aAAa,cAAc,GACzB,MAGX,EAAQ,UAAU,KAAO,SAAU,EAAK,CACpC,GAAI,GAAQ,KACZ,aAAM,GACD,KAAK,SAAU,EAAK,CAAE,MAAO,GAAI,SACjC,KAAK,SAAU,EAAM,CACtB,EAAM,SAAS,UAAY,IAExB,MAEX,EAAQ,UAAU,KAAO,SAAU,EAAM,CACrC,MAAI,KAAS,OACJ,KAAK,aAGH,KAAK,aAAa,UAFd,GAIf,MAAK,MAAM,SAAU,EAAI,CACrB,EAAG,UAAY,IAEZ,OAEX,EAAQ,UAAU,OAAS,SAAU,EAAM,CACvC,YAAK,MAAM,SAAU,EAAI,CACjB,MAAO,IAAS,SAChB,EAAG,mBAAmB,YAAa,GAGnC,EAAG,YAAY,KAGhB,MAEX,EAAQ,UAAU,QAAU,SAAU,EAAM,CACxC,YAAK,MAAM,SAAU,EAAI,CACrB,EAAG,mBAAmB,aAAc,KAEjC,MAEX,EAAQ,UAAU,OAAS,UAAY,CACnC,YAAK,MAAM,SAAU,EAAI,CACrB,EAAG,WAAW,YAAY,KAEvB,MAEX,EAAQ,UAAU,MAAQ,UAAY,CAClC,YAAK,MAAM,SAAU,EAAI,CACrB,EAAG,UAAY,KAEZ,MAEX,EAAQ,UAAU,UAAY,SAAU,EAAW,CAC/C,MAAI,KAAc,OACd,UAAS,KAAK,UAAY,EAC1B,SAAS,gBAAgB,UAAY,EAC9B,MAGC,OAAO,aACX,SAAS,gBAAgB,WACzB,SAAS,KAAK,WACd,GAGZ,EAAQ,UAAU,WAAa,SAAU,EAAY,CACjD,MAAI,KAAe,OACf,UAAS,KAAK,WAAa,EAC3B,SAAS,gBAAgB,WAAa,EAC/B,MAGC,OAAO,aACX,SAAS,gBAAgB,YACzB,SAAS,KAAK,YACd,GAGZ,EAAQ,UAAU,OAAS,UAAY,CACnC,GAAI,CAAC,KAAK,aACN,MAAO,CACH,KAAM,EACN,IAAK,GAGb,GAAI,GAAO,KAAK,aAAa,wBACzB,EAAiB,GAAI,QAAQ,QAAQ,WAEzC,MAAO,CACH,KAAM,EAAK,KAAO,WAAW,GAAkB,KAAK,aACpD,IAAK,EAAK,IAAM,KAAK,cAG7B,EAAQ,UAAU,MAAQ,UAAY,CAClC,MAAK,MAAK,aAGF,KAAK,aAAa,cACtB,OAAO,iBAAiB,KAAK,cAHtB,IAMf,EAAQ,UAAU,MAAQ,UAAY,CAClC,GAAI,GAAQ,KAAK,QACjB,MAAQ,MAAK,aAAa,YACtB,WAAW,EAAM,aACjB,WAAW,EAAM,eAGzB,EAAQ,UAAU,OAAS,UAAY,CACnC,GAAI,GAAQ,KAAK,QACjB,MAAQ,MAAK,aAAa,aACtB,WAAW,EAAM,YACjB,WAAW,EAAM,gBAEzB,EAAQ,eAAiB,GAClB,KAEX,YAAa,EAAU,CACnB,YACO,GAAI,IAAQ,GAGvB,GAAI,IAAwB,CACxB,MACA,UACA,UACA,aACA,OACA,QACA,SACA,YACA,aACA,SACA,QACA,SACA,cACA,WACA,QACA,mBACA,YACA,cACA,kBACA,oBACA,gBACA,SACA,mBACA,aAGJ,YAAuB,EAAM,CAEzB,MAAI,KAAS,OACF,MAEX,GAAO,EAAK,QAAQ,QAAS,IAC7B,EAAO,EAAK,OAAO,GAAG,cAAgB,EAAK,MAAM,GACjD,EAAO,EAAK,QAAQ,YAAa,SAAU,EAAG,CAAE,MAAO,GAAE,GAAG,gBACrD,GAEX,GAAI,IAAQ,CAIR,QAAS,SAAU,EAAI,EAAW,EAAS,EAAe,CAClD,IAAY,QAAU,GAAU,GACpC,GAAI,GAAO,GAAI,GACX,EAAS,EAAK,KAAK,iBAAmB,EAC1C,GAAI,EAAC,EAGL,IAAI,GAAoB,EAAO,MAAM,KAErC,GAAI,EAAkB,GAElB,OADI,GAAS,OAAO,WACX,EAAI,EAAG,EAAI,EAAkB,OAAQ,IAAK,CAC/C,GAAI,GAAS,EAAkB,GAC3B,EAAkB,SAAS,EAAO,MAAM,KAAK,GAAI,IACrD,GAAI,EAAkB,EAAQ,CAC1B,EAAS,EACT,MAGA,IAAM,EAAkB,OAAS,GACjC,GAAS,GAIrB,GAAI,GAAO,EAAO,MAAM,KACpB,EAAQ,SAAS,EAAK,GAAI,IAC1B,EAAS,SAAS,EAAK,GAAI,IAC3B,EAAS,EAAU,QACnB,EAAU,EAAU,SAAW,EAC/B,EAAW,KAAK,IAAI,EAAQ,GAC5B,EAAY,KAAK,IAAI,EAAS,GAC9B,GAAQ,KAAK,IAAI,EAAW,EAAO,EAAY,GACnD,MAAO,CAAE,MAAO,EAAQ,GAAO,OAAQ,EAAS,MAOpD,aAAc,SAAU,EAAI,EAAW,EAAK,EAAQ,EAAW,CAC3D,GAAI,EAAC,EAGL,IAAI,GAAO,GAAI,GAAI,KAAK,OAAO,QAC/B,GAAI,EAAC,EAAK,MAGV,IAAI,GAAgB,EAAU,MAAM,wBAChC,EAAS,EAAc,MAEvB,EAAU,EAAU,SAAY,GAAM,GACtC,EAAU,EAAK,QACf,EAAW,EAAK,SAChB,EAAU,EAAK,QACf,EAAK,GAAS,GAAW,EACzB,EAAK,SAAS,KACb,YAAW,EAAQ,cAAgB,GACnC,YAAW,EAAQ,aAAe,GACnC,GAAI,QAAQ,aACZ,EAAc,KACd,EAAK,GAAU,GAAY,EAC3B,EAAK,SAAS,IACb,YAAW,EAAQ,aAAe,GAClC,YAAW,EAAQ,YAAc,GAClC,GAAI,QAAQ,YACZ,EACA,EAAM,EAAU,EAAU,MAC1B,EAAM,EAAW,EAAU,OAC3B,EAAY,eACX,IAAK,IACN,OACC,IAAK,IACN,kBACA,EACA,KACA,EACA,OACJ,MAAO,MAEX,gBAAiB,SAAU,EAAa,EAAc,EAAgB,EAAiB,EAAK,EAAa,CACrG,GAAI,GAAQ,EAAc,UAAY,EAAc,IAAM,GAC1D,MAAO,yDAA8D,EAAc,eAAiB,EAAiB,aAAe,EAAe,gBAAkB,EAAkB;AAAA,gEAA4E,EAAQ,SAAY,EAAM;AAAA,yBAEjS,aAAc,SAAU,EAAO,EAAK,EAAS,EAAQ,EAAO,EAAS,CACjE,GAAI,GAAa,EAAS,WAAc,EAAS,IAAO,GACpD,EAAY,EAAQ,UAAa,EAAQ,IAAO,GAChD,EAAY,QAAU,EAAU,IAAM,EAAa,KAAO,EAAY,2CAAgD,EAAQ,UAAc,EAAM,OAClJ,EAAY,GAChB,GAAI,EAAS,CACT,GAAI,GAAY,MAAO,IAAY,SAAW,KAAK,MAAM,GAAW,EACpE,EAAY,EAAU,IAAI,SAAU,EAAQ,CACxC,GAAI,GAAQ,GACZ,cAAO,KAAK,GAAQ,QAAQ,SAAU,EAAK,CAEvC,GAAS,IAAM,EAAM,KAAQ,EAAO,GAAO,MAExC,WAAa,EAAQ,eAGpC,MAAO,GAAK,EAAY,GAG5B,iBAAkB,SAAU,EAAS,CAIjC,OAHI,GAAU,GACV,EAAQ,GACR,EAAM,GACD,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACrC,GAAI,GAAO,EAAQ,GAAG,MAAM,KAExB,EAAK,KAAO,IACZ,EAAK,OAAO,EAAG,GAEnB,EAAM,KAAK,EAAK,IAChB,EAAQ,KAAK,EAAK,IAGtB,OADI,GAAS,OAAO,WACX,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAChC,GAAI,SAAS,EAAQ,GAAI,IAAM,EAAQ,CACnC,EAAM,EAAM,GACZ,MAGR,MAAO,IAEX,cAAe,SAAU,EAAK,CAY1B,MAXI,GAAC,GAKD,CAAC,EAAI,UAML,EAAI,eAAiB,IAM7B,qBAAsB,SAAU,EAAS,EAAU,EAAgB,EAAiB,EAAU,CAC1F,GAAI,GAAa,GACjB,MAAI,IAAY,EAAS,QACrB,EAAa,iBAER,GAAY,EAAS,MAC1B,EAAa,eAGb,EAAa,eAEV,6BAAgC,EAAa,YAAgB,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAAsQ,EAAkB;AAAA;AAAA;AAAA;AAAA,6BAA2I,EAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAA8hB,IAAY,IAAM;AAAA,0DAAkE,EAAU;AAAA,iBAE1oC,qBAAsB,SAAU,EAAW,CACvC,GAAI,GAAW,EAAU,iBAAiB,sNACtC,EAAkB,GAAG,OAAO,KAAK,EAAU,SAAU,EAAS,CAC9D,GAAI,GAAQ,OAAO,iBAAiB,GACpC,MAAO,GAAM,UAAY,QAAU,EAAM,aAAe,WAE5D,MAAO,IASX,kBAAmB,SAAU,EAAO,EAAY,EAA0B,EAAc,CACpF,GAAI,GAAkB,GAClB,EAA0B,GAAe,GAAuB,GACpE,SAAG,QAAQ,KAAK,EAAO,SAAU,EAAM,CAEnC,OADI,GAAY,GACP,EAAI,EAAG,EAAI,EAAK,WAAW,OAAQ,IAAK,CAC7C,GAAI,GAAO,EAAK,WAAW,GAC3B,GAAI,EAAK,UAAW,CAChB,GAAI,GAAc,GAAc,EAAK,MACjC,EAAQ,GACR,EAAwB,QAAQ,GAAe,IAC/C,GAAQ,GAER,GACA,GAAU,GAAS,EAAK,QAIpC,GAAI,GAAc,GAAI,GAClB,EAAM,EAAY,KAAK,OAAO,QAAQ,KAAK,OAC3C,EAAQ,EAAY,KAAK,SACzB,EAAQ,EACN,EAAY,KAAK,GACjB,EAAY,KAAK,OAAO,QAAQ,KAAK,OAC3C,EAAU,MAAQ,EACd,GAA4B,CAAC,EAAU,SACvC,GAAU,QAAU,GAAS,GAAO,IAExC,EAAU,IAAM,GAAO,GAAS,GAChC,EAAgB,KAAK,KAElB,GAEX,SAAU,UAAY,CAClB,MAAO,4BAA4B,KAAK,UAAU,YAUtD,QAAS,SAAU,EAAK,EAAc,EAAO,CACzC,GAAI,CAAC,EAAK,CACN,GAAI,EACA,MAAO,CACH,MAAO,IAIX,QAAQ,MAAM,0DACT,GAAQ,GACT,kIACJ,OAGR,GAAI,GAAU,EAAI,MAAM,gHACpB,EAAQ,EAAI,MAAM,0EAClB,EAAS,EAAI,MAAM,4EACvB,GAAI,EACA,MAAO,CACH,QAAS,GAGZ,GAAI,EACL,MAAO,CACH,MAAO,GAGV,GAAI,EACL,MAAO,CACH,OAAQ,KASpB,GAAO,EACP,GAA8B,UAAY,CAC1C,WAAsB,EAAS,EAAS,CAmBpC,GAlBA,KAAK,SAAW,GAChB,KAAK,MAAQ,EAEb,KAAK,QAAU,GAEf,KAAK,WAAa,GAElB,KAAK,OAAS,GACd,KAAK,kBAAoB,GAEzB,KAAK,cAAgB,EACrB,KAAK,iBAAmB,EACxB,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,KAAK,uBAAyB,CAC1B,IAAK,EACL,OAAQ,GAER,CAAC,EACD,MAAO,MASX,GAPA,KACA,KAAK,KAAO,GACZ,KAAK,GAAK,EACV,KAAK,KAAO,GAAI,GAChB,KAAK,iBAAiB,GACtB,KAAK,eAED,KAAK,SAAS,SACd,KAAK,SAAS,YAAc,QAC5B,CAAC,MAAM,QAAQ,KAAK,SAAS,WAC7B,KAAM,uEAEV,YAAK,aAAe,KAAK,WACzB,KAAK,oBAEL,KAAK,OACL,KAAK,kBACE,KAEX,SAAa,UAAU,iBAAmB,SAAU,EAAS,CAGzD,GADA,KAAK,SAAW,GAAS,GAAS,GAAI,IAA2B,GAC7D,KAAK,SAAS,UACd,MAAO,MAAK,SAAS,UAAa,WAChC,KAAK,SAAS,WACd,GAAM,WAAY,CACpB,GAAI,GAAiB,GAAS,GAAS,GAAI,KAAK,SAAS,gBAAiB,KAAK,SAAS,gBACxF,KAAK,SAAW,GAAS,GAAS,GAAI,KAAK,UAAW,KAG9D,EAAa,UAAU,kBAAoB,UAAY,CAC/C,KAAK,SAAS,mBACd,MAAK,SAAS,iBAAmB,IAEhC,KAAK,SAAS,UACf,MAAK,SAAS,aAAe,IAGjC,KAAK,eAAiB,KAAK,SAAS,eAGhC,KAAK,SAAS,SACd,MAAK,eAAiB,IAErB,KAAK,SAAS,WACf,MAAK,SAAS,UAAY,SAAS,MAGvC,KAAK,SAAS,QAAU,KAAK,IAAI,KAAK,SAAS,QAAS,KAAK,aAAa,SAE9E,EAAa,UAAU,KAAO,UAAY,CACtC,GAAI,GAAQ,KACZ,KAAK,kBAAkB,KAAK,cAC5B,KAAK,iBACL,KAAK,KAAK,QAAQ,GAAS,KAAM,CAC7B,SAAU,OAEV,KAAK,SAAS,UACd,KAAK,WAET,WAAW,UAAY,CACnB,EAAM,aACN,EAAM,cACN,EAAM,sBACP,IACH,KAAK,QACD,KAAK,SAAS,YACd,KAAK,aAEJ,KAAK,SAAS,SACf,KAAK,0BAGb,EAAa,UAAU,uBAAyB,UAAY,CAkBxD,OAjBI,GAAQ,KACR,EAAU,SAAU,EAAO,CAC3B,GAAI,GAAU,EAAO,MAAM,GACvB,EAAW,GAAI,GAGf,EAAO,GAAQ,eACnB,EACK,KAAK,aAAc,GACnB,GAAG,uBAAyB,EAAM,SAAU,EAAG,CAChD,EAAE,iBACF,GAAI,GAAmB,EAAM,SAAS,OAAS,EAC/C,EAAM,YAAY,EAAkB,MAGxC,EAAS,KAEJ,EAAQ,EAAG,EAAQ,KAAK,MAAM,OAAQ,IAC3C,EAAQ,IAShB,EAAa,UAAU,aAAe,UAAY,CAC9C,GAAI,GAAQ,KACZ,KAAK,SAAS,QAAQ,QAAQ,SAAU,EAAQ,CAC5C,EAAM,QAAQ,KAAK,GAAI,GAAO,EAAO,QAG7C,EAAa,UAAU,gBAAkB,UAAY,CAC5C,KAAK,SAAS,WAGV,KAAK,SAAS,aAAe,sBAClC,QAAQ,KAAK,iBAAmB,KAAK,SAAS,WAAa,gDAH3D,QAAQ,MAAM,uCAMtB,EAAa,UAAU,aAAe,SAAU,EAAO,CACnD,MAAO,IAAI,KAAK,eAAe,KAEnC,EAAa,UAAU,eAAiB,SAAU,EAAO,CACrD,MAAO,YAAc,KAAK,KAAO,IAAM,GAE3C,EAAa,UAAU,UAAY,SAAU,EAAI,CAC7C,MAAO,GAAK,IAAM,KAAK,MAE3B,EAAa,UAAU,eAAiB,SAAU,EAAI,CAClD,MAAO,IAAI,IAAM,KAAK,UAAU,KAEpC,EAAa,UAAU,2BAA6B,UAAY,CACxD,KAAK,aAAa,OAAS,EAC3B,KAAK,MAAM,SAAS,kBAGpB,KAAK,MAAM,YAAY,mBAG/B,EAAa,UAAU,eAAiB,UAAY,CAChD,GAAI,GAAQ,KACR,EAAY,KAAK,YAAc,KAAK,WAAW,MACnD,GAAI,GAGJ,IAAI,GAAW,GACX,EAAc,GAEd,KAAK,SAAS,UACd,GAAW,6BAAkC,KAAK,UAAU,WAAa,iBAAqB,KAAK,SAAS,QAAQ,cAAmB,8BAAmC,KAAK,SAAS,SAAW;AAAA,4CAA8D,KAAK,UAAU,WAAa,iBAAqB,KAAK,SAAS,QAAQ,UAAe,8BAAmC,KAAK,SAAS,SAAW,cAEnZ,KAAK,SAAS,kBAAoB,YAClC,GACI,oEAER,GAAI,GAAa,GACb,KAAK,SAAS,mBAEd,IAAc,qBAElB,GAAI,GAAiB,KAAK,SAAS,eAC7B,oBAAsB,KAAK,SAAS,eAAiB,IACrD,GACF,EAAkB,KAAK,SAAS,gBAC9B,qBAAuB,KAAK,SAAS,gBAAkB,IACvD,GACF,EAAqB,gBAAkB,KAAK,SAAS,SAAW,IAAO,UAAS,OAAS,KAAK,SAAS,UAAY,YAAc,IACjI,EAAY,KAAK,SAAS,UAAY,KAAK,SAAS,cAClD,qCAA0C,KAAK,SAAS,QAAQ,aAAkB,SAAa,KAAK,UAAU,YAAc,uCAC5H,GACF,EAAe,KAAK,SAAS,iBAC3B,qCAA0C,KAAK,SAAS,QAAQ,eAAoB,SAAa,KAAK,UAAU,eAAiB,0CACjI,GACF,EAAW;AAAA,sBAA4B,EAAqB,SAAa,KAAK,UAAU,gBAAkB,qCAA4C,EAAiB,IAAM,EAAkB;AAAA;AAAA,uBAAwD,KAAK,UAAU,eAAiB;AAAA;AAAA,uBAA8D,KAAK,UAAU,YAAc,uDAA2D,EAAa;AAAA;AAAA,yBAAqC,KAAK,UAAU,cAAgB;AAAA,2BAAyD,KAAK,UAAU,YAAc;AAAA;AAAA,kBAAqE,EAAW;AAAA;AAAA,2BAAuD,KAAK,UAAU,cAAgB;AAAA,sBAA4D,EAAe;AAAA,sBAA2B,EAAY;AAAA;AAAA,sBAAwD,MAAK,SAAS,kBAAoB,YACp8B,EACA,IAAM;AAAA,2BAAiC,KAAK,UAAU,iBAAmB;AAAA,sBAAuD,MAAK,SAAS,kBAAoB,eAClK,EACA,IAAM;AAAA;AAAA;AAAA;AAAA,UACZ,GAAI,KAAK,SAAS,WAAW,OAAO,GAChC,SAAS,OAAS,KAAK,SAAS,WAChC,GAAI,KAAK,SAAS,WAAW,IAAI,WAAY,YAEjD,KAAK,MAAQ,KAAK,eAAe,YACjC,KAAK,cAAgB,KAAK,eAAe,iBACzC,KAAK,UAAY,KAAK,eAAe,eACrC,KAAK,WAAa,KAAK,eAAe,gBACtC,KAAK,OAAS,KAAK,eAAe,YAClC,KAAK,SAAW,KAAK,eAAe,cACpC,KAAK,SAAW,KAAK,eAAe,cACpC,KAAK,UAAU,IAAI,sBAAuB,KAAK,SAAS,iBAAmB,MAC3E,GAAI,GAAkB,KAAK,SAAS,KAAO,IAC3C,KAAK,6BACD,KAAK,SAAS,YACd,IAAmB,YAEvB,KAAK,MAAM,SAAS,GACpB,KAAK,OAAO,IAAI,6BAA8B,KAAK,SAAS,QAC5D,KAAK,OAAO,IAAI,sBAAuB,KAAK,SAAS,MAAQ,MACzD,KAAK,SAAS,UACd,KAAK,SAAS,OAAO,UAAa,KAAK,UAAU,eAAiB,gDAAwD,KAAK,SAAS,QAAQ,SAAc,+CAElK,KAAK,UACL,GAAI,QAAQ,GAAG,mBAAqB,KAAK,KAAO,+BAAiC,KAAK,KAAM,UAAY,CACpG,EAAM,oBAEV,KAAK,WACL,KAAK,qBACL,KAAK,iBACL,KAAK,gBAET,EAAa,UAAU,gBAAkB,UAAY,CACjD,GAAI,KAAK,SAAU,CACf,GAAI,GAAqB,KAAK,aAAa,KAAK,OAC5C,EAAmB,EAAmB,iBAC1C,KAAK,uBAAyB,KAAK,4BACnC,GAAI,GAAK,KAAK,uBAAwB,EAAQ,EAAG,IAAK,EAAS,EAAG,OAKlE,GAJA,KAAK,iBAAmB,GAAM,QAAQ,KAAK,MAAM,KAAK,OAAQ,KAAK,MAAO,EAAQ,EAAQ,GAAoB,KAAK,SAAS,cACxH,GACA,KAAK,iBAAiB,KAAK,MAAO,KAAK,kBAEvC,KAAK,gBAAkB,CAAC,KAAK,oBAAqB,CAClD,GAAI,GAAW,KAAK,kBAAkB,KAAK,kBAC3C,KAAK,MACA,KAAK,6BACL,QACA,KAAK,QAAS,GAEvB,KAAK,KAAK,QAAQ,GAAS,mBAGnC,EAAa,UAAU,iBAAmB,SAAU,EAAO,EAAW,CAClE,GAAI,GAAe,KAAK,kBAAkB,GACtC,EAAe,KAAK,aAAa,GACrC,EAAa,KAAK,kBAAkB,KAAK,QAAS,IA4CtD,EAAa,UAAU,aAAe,SAAU,EAAO,EAAO,CAO1D,GANI,KAAK,MAAQ,EAAM,OAAS,GAC5B,MAAK,MAAQ,EAAM,OAAS,GAE5B,EAAM,SAAW,GACjB,MAAK,MAAQ,GAEb,CAAC,EAAM,OAAQ,CACf,KAAK,eACL,OAEJ,GAAI,GAAa,KAAK,aAAa,GAAO,IAC1C,KAAK,aAAe,EACpB,KAAK,iBACL,KAAK,OAAO,QACZ,KAAK,kBAAoB,GACzB,GAAI,GAAS,EAEb,KAAK,aAAa,KAAK,SAAU,EAAa,EAAW,CACrD,MAAI,GAAY,MAAQ,EACpB,GAAS,EACF,IAEJ,KAEX,KAAK,kBAAoB,KAAK,mBAAmB,EAAQ,IACzD,KAAK,YAAY,EAAQ,IACzB,KAAK,aAAa,GAAQ,SAAS,cACnC,KAAK,MAAQ,EACb,KAAK,qBAAqB,GAC1B,KAAK,KAAK,QAAQ,GAAS,eAG/B,EAAa,UAAU,SAAW,UAAY,CAG1C,GADA,KAAK,MAAQ,GACR,KAAK,SAAS,QA0Bf,MAAO,MAAK,SAAS,WAAa,GAzBlC,GAAI,KAAK,SAAS,WAAa,OAC3B,KAAK,MAAM,KAAK,KAAK,YAEhB,KAAK,SAAS,SACnB,GAAI,MAAO,MAAK,SAAS,UAAa,SAClC,GAAI,KAAK,SAAS,aAAc,CAC5B,GAAI,GAAe,GAAI,KAAK,SAAS,cACrC,KAAK,MAAQ,EACR,KAAK,KAAK,SAAS,UACnB,UAGL,MAAK,MAAQ,KAAK,GAAG,iBAAiB,KAAK,SAAS,cAIxD,MAAK,MAAQ,KAAK,SAAS,aAI/B,MAAK,MAAQ,KAAK,GAAG,SAEzB,MAAO,IAAM,kBAAkB,KAAK,MAAO,KAAK,SAAS,WAAY,KAAK,SAAS,yBAA0B,KAAK,SAAS,eAMnI,EAAa,UAAU,oBAAsB,UAAY,CACrD,MAAQ,MAAK,SAAS,eAClB,SAAS,OAAS,KAAK,SAAS,WAExC,EAAa,UAAU,cAAgB,UAAY,CAC/C,GAAI,EAAC,KAAK,sBAGV,MAAK,iBAAmB,WAAW,GAAI,QAAQ,QAAQ,cACvD,GAAI,GAAW,SAAS,gBAAgB,wBACpC,EAAiB,OAAO,WAAa,EAAS,MAClD,GAAI,SAAS,MAAM,IAAI,gBAAiB,EAAiB,KAAK,iBAAmB,MACjF,GAAI,SAAS,MAAM,SAAS,qBAEhC,EAAa,UAAU,eAAiB,UAAY,CAC5C,CAAC,KAAK,uBAGV,IAAI,SAAS,MAAM,IAAI,gBAAiB,KAAK,iBAAmB,MAChE,GAAI,SAAS,MAAM,YAAY,qBA8BnC,EAAa,UAAU,YAAc,SAAU,EAAO,EAAS,CAC3D,GAAI,GAAQ,KAGZ,GAFI,IAAU,QAAU,GAAQ,KAAK,SAAS,OAE1C,MAAK,SAET,MAAK,SAAW,GAChB,KAAK,MAAM,YAAY,iBACvB,KAAK,gBAEL,KAAK,WAAW,SAAS,WACzB,GAAI,GAAyB,KAAK,0BAA0B,EAAO,GACnE,KAAK,kBAAoB,EACzB,GAAI,GAAQ,GACZ,EAAuB,QAAQ,SAAU,EAAM,CAC3C,EAAQ,EAAS,aAAe,EAAO,8BAE3C,KAAK,OAAO,OAAO,GACnB,KAAK,QAAQ,GACb,GAAI,GAAY,GAChB,KAAK,uBAAyB,KAAK,4BACnC,GAAI,GAAK,KAAK,uBAAwB,EAAM,EAAG,IAAK,EAAS,EAAG,OAC3D,KAAK,SAAS,mBACf,KAAK,0BAA0B,EAAK,GAExC,GAAI,GAAmB,KAAK,aAAa,GAAO,iBAC5C,KAAK,gBAAkB,GACvB,MAAK,iBAAmB,GAAM,QAAQ,EAAS,KAAK,MAAO,EAAM,EAAQ,GAAoB,KAAK,SAAS,cAC3G,EAAY,GAAM,aAAa,EAAS,KAAK,MAAO,EAAK,EAAQ,KAAK,mBAEtE,EAAC,KAAK,gBAAkB,CAAC,IACzB,MAAK,MAAM,SAAS,KAAK,SAAS,YAClC,KAAK,aAAa,GAAO,YAAY,gBAEzC,GAAI,GAAU,KAAK,SAAS,eACtB,IACA,KAAK,SAAS,iBACpB,WAAW,UAAY,CACnB,EAAM,MAAM,SAAS,uBACtB,GACH,KAAK,MAAQ,EACb,KAAK,KAAK,QAAQ,GAAS,YAE3B,KAAK,aAAa,GAAO,SAAS,cAClC,KAAK,WAAa,GAElB,KAAK,cAAgB,GAAI,QAAQ,YACjC,WAAW,UAAY,CAGnB,GAAI,EAAM,gBAAkB,EAAW,CACnC,GAAI,GAAiB,EAAM,aAAa,GACxC,EAAe,IAAI,YAAa,GAChC,WAAW,UAAY,CACnB,EACK,SAAS,2CACT,IAAI,sBAAuB,EAAM,SAAS,uBAAyB,MACxE,EAAM,MAAM,SAAS,wBAEzB,WAAW,UAAY,CACnB,EAAe,IAAI,YAAa,yBACjC,KAEP,WAAW,UAAY,CACnB,EAAM,UAAU,SAAS,MACzB,EAAM,WAAW,SAAS,eAC3B,IACH,WAAW,UAAY,CACf,EAAM,SAAS,WACf,SAAS,OAAS,EAAM,SAAS,WACjC,EAAM,aAEX,EAAM,SAAS,iBAAmB,IAEjC,EAAC,EAAM,gBAAkB,CAAC,IAC1B,WAAW,UAAY,CACnB,EAAM,MAAM,SAAS,eACtB,EAAM,SAAS,kBAGtB,EAAM,MAAM,EAAO,GAAO,GAAO,IACjC,EAAM,KAAK,QAAQ,GAAS,aAE5B,SAAS,OAAS,KAAK,SAAS,WAChC,GAAI,QAAQ,SAAS,WAS7B,EAAa,UAAU,0BAA4B,UAAY,CAC3D,GAAI,KAAK,SAAS,kBACd,MAAO,CACH,IAAK,EACL,OAAQ,GAGhB,GAAI,GAAM,KAAK,SAAS,MAAM,cAAgB,EAC1C,EAAU,KAAK,MAAM,KAAK,+BAA+B,MACzD,EAAgB,KAAK,SAAS,sBAC7B,GAAW,EAAQ,cACpB,EACA,EAAiB,KAAK,MAAM,KAAK,mBAAmB,MACpD,EAAc,EAAiB,EAAe,aAAe,EAC7D,EAAS,EAAc,EAC3B,MAAO,CACH,IAAK,EACL,OAAQ,IAGhB,EAAa,UAAU,0BAA4B,SAAU,EAAK,EAAQ,CAClE,IAAQ,QAAU,GAAM,GACxB,IAAW,QAAU,GAAS,GAClC,KAAK,SAAS,IAAI,MAAO,EAAM,MAAM,IAAI,SAAU,EAAS,OAEhE,EAAa,UAAU,SAAW,UAAY,CAC1C,GAAI,GAAQ,KAEZ,WAAW,UAAY,CACnB,EAAM,MAAM,YAAY,iBACpB,EAAM,SAAS,cAAgB,GAC/B,GAAM,MAAM,GAAG,sCAAuC,UAAY,CAC9D,EAAM,MAAM,YAAY,iBACxB,aAAa,EAAM,gBAEnB,EAAM,eAAiB,WAAW,UAAY,CAC1C,EAAM,MAAM,SAAS,kBACtB,EAAM,SAAS,iBAEtB,EAAM,MAAM,QAAQ,kBAEzB,KAAK,SAAS,gBAErB,EAAa,UAAU,gBAAkB,SAAU,EAAM,CACrD,GAAI,KAAK,SAAS,qBACd,GAAI,CACA,YAAY,CACR,SAAU,CAAC,EAAK,cAGxB,CACI,QAAQ,KAAK,wJAQzB,EAAa,UAAU,QAAU,UAAY,CACzC,GAAI,KAAK,SAAS,QAAS,CACvB,GAAI,GAAc;AAAA,4BAAiG,KAAK,UAAU,sBAAwB,gCAAsC,MAAK,MAAQ,GAAK;AAAA,4BAA4C,KAAK,UAAU,kBAAoB,4BAAiC,KAAK,aAAa,OAAS,iBAC7V,KAAK,MAAM,KAAK,KAAK,SAAS,iBAAiB,OAAO,KAO9D,EAAa,UAAU,QAAU,SAAU,EAAO,CAC9C,GAAI,GACA,EAOJ,GANI,KAAK,aAAa,GAAO,WACzB,EAAa,KAAK,aAAa,GAAO,WAGtC,EAAU,KAAK,aAAa,GAAO,QAEnC,CAAC,EACD,GAAI,EAAS,CAGT,GAAI,GAAK,EAAQ,UAAU,EAAG,GAC1B,KAAO,KAAO,IAAO,MACrB,CAAI,KAAK,SAAS,yBACd,CAAC,KAAK,SAAS,QACf,EAAU,GAAI,KAAK,OACd,GAAG,GACH,KAAK,GACL,QACA,OAGL,EAAU,GAAI,GAAS,QAAQ,YAKvC,GAAU,GAGlB,GAAI,KAAK,SAAS,kBAAoB,WAC9B,EACA,KAAK,MAAM,KAAK,gBAAgB,KAAK,GAGrC,KAAK,MAAM,KAAK,gBAAgB,KAAK,OAGxC,CACD,GAAI,GAAe,GAAI,KAAK,eAAe,IACvC,EACA,EAAa,KAAK,GAGlB,EAAa,OAAO,4BAAgC,EAAU,UAIlE,MAAO,IAAY,aAAe,IAAY,MAC9C,CAAI,IAAY,GACZ,KAAK,MACA,KAAK,KAAK,SAAS,iBACnB,SAAS,iBAGd,KAAK,MACA,KAAK,KAAK,SAAS,iBACnB,YAAY,kBAGzB,KAAK,KAAK,QAAQ,GAAS,mBAAoB,CAC3C,MAAO,KAQf,EAAa,UAAU,QAAU,SAAU,EAAO,CAC9C,OAAS,GAAI,EAAG,GAAK,KAAK,SAAS,SAC3B,KAAK,KAAK,aAAa,OAAS,GADI,IAIxC,KAAK,YAAY,EAAQ,EAAG,IAEhC,OAAS,GAAI,EAAG,GAAK,KAAK,SAAS,SAC3B,IAAQ,EAAI,GADwB,IAIxC,KAAK,YAAY,EAAQ,EAAG,KAGpC,EAAa,UAAU,kBAAoB,SAAU,EAAW,CAC5D,MAAK,GAEE,SAAW,EAAU,MAAQ;AAAA,gCAAwC,EAAU,MAAQ,EAAI;AAAA,+BAAuC,EAAU,OAAS,EAAI;AAAA,yBAAiC,EAAU,OAAS,KADzM,IAGf,EAAa,UAAU,kBAAoB,SAAU,EAAW,CAC5D,MAAK,GAEE,SAAW,EAAU,MAAQ;AAAA,yBAAiC,EAAU,OAAS,KAD7E,IAGf,EAAa,UAAU,qBAAuB,SAAU,EAAe,EAAO,EAAK,CAC/E,GAAI,GAIJ,GAHK,KAAK,SAAS,SACf,GAAe,GAAI,KAAK,OAAO,GAAG,IAElC,EAAc,CACd,GAAI,GAAe,OAOnB,GANK,KAAK,SAAS,aAIf,EAAe,EAAa,KAAK,KAAK,SAAS,cAH/C,EAAe,EAAa,KAAK,OAAO,QAAQ,KAAK,OAKrD,CAAC,EACD,MAAO,GACX,GAAI,GAAW,KAAK,kBAAkB,KAAK,kBACvC,EAAkB,QAAU,EAAM,WAAc,EAAW,+BAAqC,EAAe,OACnH,SAAc,SAAS,kBACvB,KAAK,MAAM,SAAS,0BACb,EAEX,MAAO,IAEX,EAAa,UAAU,aAAe,SAAU,EAAK,EAAe,EAAO,CACvE,GAAI,GAAqB,KAAK,aAAa,GACvC,EAAM,EAAmB,IAAK,EAAS,EAAmB,OAAQ,EAAQ,EAAmB,MAAO,EAAU,EAAmB,QAGjI,EAAa,GACb,EAAU,EAAM,QAAU,EAAM,IAAM,GACtC,KAAK,gCACL,EAAa,KAAK,qBAAqB,EAAe,EAAO,GAG7D,EAAa,GAAM,aAAa,EAAO,EAAK,EAAS,EAAQ,EAAO,GAExE,GAAI,GAAY,iCAAqC,EAAa,aAClE,EAAc,QAAQ,IAE1B,EAAa,UAAU,kBAAoB,SAAU,EAAQ,EAA2B,EAAQ,EAAS,CACrG,GAAI,GAAc,EAAO,KAAK,cAAc,QACxC,GAAM,cAAc,EAAY,QAChC,EACA,IAGA,GAAY,GAAG,mBAAoB,UAAY,CAC3C,GAAU,MAEd,EAAY,GAAG,WAAY,UAAY,CACnC,GAAW,QAYvB,EAAa,UAAU,eAAiB,SAAU,EAAc,EAAO,EAAO,EAAO,EAAc,EAA2B,CAC1H,GAAI,GAAQ,KACZ,KAAK,kBAAkB,EAAc,EAA2B,UAAY,CACxE,EAAM,qBAAqB,EAAc,EAAO,EAAO,EAAO,IAC/D,UAAY,CACX,EAAa,SAAS,4BACtB,EAAa,KAAK,8BACd,EAAM,SAAS,QAAQ,mBACvB,cAGZ,EAAa,UAAU,qBAAuB,SAAU,EAAe,EAAO,EAAO,EAAO,EAAc,CACtG,GAAI,GAAQ,KACR,EAAqB,KAAK,aAAa,GAGvC,EAAS,GACT,KAAK,aAAa,KAAwB,SAC1C,CAAC,EAAmB,OAClB,EACA,EACN,WAAW,UAAY,CACnB,EAAc,SAAS,4BACvB,EAAM,KAAK,QAAQ,GAAS,cAAe,CACvC,MAAO,EACP,MAAO,GAAS,EAChB,aAAc,KAEnB,IAEP,EAAa,UAAU,8BAAgC,UAAY,CAC/D,MAAO,CAAC,CAAE,EAAC,KAAK,YACZ,KAAK,gBACL,KAAK,mBAGb,EAAa,UAAU,kBAAoB,SAAU,EAAO,CACxD,GAAI,GAAQ,KACZ,EAAM,QAAQ,SAAU,EAAS,EAAO,CACpC,EAAQ,iBAAmB,GAAM,QAAQ,EAAQ,IAAK,CAAC,CAAC,EAAQ,MAAO,GACnE,EAAQ,kBACR,EAAM,SAAS,mBACf,CAAC,EAAQ,QACT,EAAQ,iBAAiB,SACzB,GAAQ,OAAS,wBAA0B,EAAQ,iBAAiB,QAAQ,GAAK,yBAU7F,EAAa,UAAU,YAAc,SAAU,EAAO,EAAK,CACvD,GAAI,GAAQ,KACR,EAAqB,KAAK,aAAa,GACvC,EAAgB,GAAI,KAAK,eAAe,IACxC,EAAS,EAAmB,OAAQ,EAAS,EAAmB,OAAQ,EAAQ,EAAmB,MAAO,EAAU,EAAmB,QACvI,EAAM,EAAmB,IACzB,EAAQ,EAAmB,MAC3B,EAAc,GAAS,MAAO,IAAU,SAAW,KAAK,MAAM,GAAS,EAC3E,GAAI,EAAmB,WAAY,CAC/B,GAAI,GAAY,EAAmB,WAAW,MAAM,KACpD,EAAM,GAAM,iBAAiB,IAAc,EAE/C,GAAI,GAAY,EAAmB,iBAC/B,EAAe,GACf,EAAS,CAAC,CAAC,EAAmB,OAC9B,EAAe,CAAC,KAAK,WAErB,GAAQ,EASZ,GARI,GACA,CAAI,KAAK,gBAAkB,KAAK,iBAC5B,GAAQ,KAAK,SAAS,uBAAyB,GAG/C,GAAQ,KAAK,SAAS,iBAAmB,IAG7C,CAAC,EAAc,SAAS,aAAc,CACtC,GAAI,EAAW,CACX,GAAI,IAAK,KAAK,uBAAwB,EAAQ,GAAG,IAAK,GAAS,GAAG,OAC9D,GAAY,GAAM,QAAQ,KAAK,MAAM,GAAQ,KAAK,MAAO,EAAQ,GAAQ,GAAa,KAAK,SAAS,cACxG,EAAe,KAAK,kBAAkB,IAE1C,GAAI,EAAQ,CACR,GAAI,IAAS,GAAM,gBAAgB,KAAK,SAAS,YAAa,KAAK,SAAS,aAAc,KAAK,SAAS,eAAgB,KAAK,SAAS,gBAAiB,EAAK,EAAmB,aAC/K,EAAc,QAAQ,YAEjB,EAAQ,CACb,GAAI,IAAW,GACX,GAAoB,GACpB,KAAK,gBACL,KAAK,iBACL,IACA,IAAW,KAAK,qBAAqB,EAAe,EAAO,KAE/D,GAAI,IAAS,GAAM,qBAAqB,EAAQ,IAAY,GAAI,EAAc,KAAK,SAAS,QAAQ,UAAc,GAClH,EAAc,QAAQ,YAEjB,EAAW,CAChB,GAAI,IAAS,sCAA2C,EAAe,WACvE,EAAc,QAAQ,YAGtB,KAAK,aAAa,EAAK,EAAe,GAClC,GAAU,EAAS,CACnB,GAAI,IAAO,EAAc,KAAK,cAC9B,KAAK,gBAAgB,IAGzB,IAAU,IACV,KAAK,KAAK,QAAQ,GAAS,SAAU,CACjC,MAAO,EACP,IAAK,EACL,WAAY,EACZ,UAAW,CAAC,CAAC,IAGrB,KAAK,KAAK,QAAQ,GAAS,iBAAkB,CAAE,MAAO,IAClD,KAAK,YACL,KAAK,SAAS,kBAAoB,YAClC,KAAK,QAAQ,GAIrB,GAAI,IAAS,EAGT,IAAS,CAAC,GAAI,SAAS,MAAM,SAAS,iBACtC,IAAS,IAGT,KAAK,iCACL,YAAW,UAAY,CACnB,EACK,YAAY,2CACZ,WAAW,UACjB,KAAK,SAAS,uBAAyB,KACrC,EAAc,SAAS,cACxB,WAAW,UAAY,CACnB,GAAI,EAAM,aAAa,KAAwB,QAAS,CACpD,GAAI,IAAM,EAAmB,IACzB,GAAU,GAAM,QAAU,GAAM,IAAM,GAI1C,GAHA,EACK,KAAK,gBACL,OAAO,GAAM,aAAa,EAAO,EAAK,GAAS,EAAQ,EAAO,EAAmB,UAClF,GAAU,EAAS,CACnB,GAAI,IAAO,EAAc,KAAK,cAC9B,EAAM,gBAAgB,KAG1B,GAAM,aAAa,KAAwB,SAC1C,EAAM,aAAa,KAAwB,SACxC,IACJ,GAAM,eAAe,EAAe,EAAO,GAAO,GAAQ,GAAM,IAEhE,EAAM,kBAAkB,EAAe,CAAC,CAAE,IAAa,EAAU,OAAS,CAAC,GAAS,UAAY,CAC5F,EAAM,4BAA4B,EAAO,EAAe,KACzD,UAAY,CACX,EAAM,4BAA4B,EAAO,EAAe,QAGjE,KAAK,SAAS,uBAAyB,MAIlD,EAAc,SAAS,aACnB,EAAC,KAAK,iCACL,KAAK,aAAa,KAAwB,SAAW,CAAC,IACvD,KAAK,eAAe,EAAe,EAAO,GAAO,GAAQ,EAAc,CAAC,CAAE,IAAa,EAAU,OAAS,CAAC,IAG1G,EAAC,KAAK,gBAAkB,CAAC,KAAK,mBAC/B,EAAc,SAAS,iBACvB,CAAC,KAAK,YACN,WAAW,UAAY,CACnB,EAAc,SAAS,gBACxB,KAAK,SAAS,kBAIrB,KAAK,WAAa,GACd,IAAQ,IACR,CAAK,EAAc,SAAS,gBASxB,KAAK,QAAQ,GARb,EACK,KAAK,cACL,QACA,GAAG,mBAAoB,UAAY,CACpC,EAAM,QAAQ,OAe9B,EAAa,UAAU,4BAA8B,SAAU,EAAO,EAAe,EAAO,CACxF,GAAI,GAAQ,KACZ,WAAW,UAAY,CACnB,EAAc,KAAK,iBAAiB,SACpC,EAAc,YAAY,kBAC1B,EAAM,MAAM,YAAY,0BACxB,EAAM,oBAAsB,GAC5B,EAAM,QAAQ,IACf,EAAQ,MAEf,EAAa,UAAU,0BAA4B,SAAU,EAAO,EAAW,EAAe,CAC1F,GAAI,GAAQ,KACR,IAAkB,QAAU,GAAgB,GAChD,GAAI,GAAyB,GAEzB,EAAwB,KAAK,IAAI,EAAe,GACpD,EAAwB,KAAK,IAAI,EAAuB,KAAK,aAAa,QAC1E,GAAI,GAAgB,WAAa,KAAK,KAAO,IAAM,EACnD,GAAI,KAAK,aAAa,QAAU,EAC5B,YAAK,aAAa,QAAQ,SAAU,EAAU,EAAO,CACjD,EAAuB,KAAK,WAAa,EAAM,KAAO,IAAM,KAEzD,EAEX,GAAI,EAAS,MAAK,aAAa,OAAS,GAAK,EAAG,CAC5C,OAAS,GAAM,EAAO,EAAM,EAAQ,EAAwB,GAAK,GAAO,EAAG,IACvE,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAM,GAG/D,OADI,GAAwB,EAAuB,OAC1C,EAAM,EAAG,EAAM,EAAwB,EAAuB,IACnE,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAO,GAAQ,EAAM,QAG7E,CACD,OAAS,GAAM,EAAO,GAAO,KAAK,aAAa,OAAS,GACpD,EAAM,EAAQ,EAAwB,EAAG,IACzC,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAM,GAG/D,OADI,GAAwB,EAAuB,OAC1C,EAAM,EAAG,EAAM,EAAwB,EAAuB,IACnE,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAO,GAAQ,EAAM,IAGlF,MAAI,MAAK,SAAS,MACd,CAAI,IAAU,KAAK,aAAa,OAAS,EACrC,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAM,GAEtD,IAAU,GACf,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAO,MAAK,aAAa,OAAS,KAG3F,EAAuB,QAAQ,KAAmB,IAClD,EAAuB,KAAK,WAAa,KAAK,KAAO,IAAM,GAExD,GAEX,EAAa,UAAU,mBAAqB,SAAU,EAAO,EAAW,CACpE,GAAI,GAAQ,KACR,EAAyB,KAAK,0BAA0B,EAAO,EAAW,KAAK,SAAS,yBAC5F,SAAuB,QAAQ,SAAU,EAAM,CACvC,EAAM,kBAAkB,QAAQ,KAAU,IAC1C,EAAM,OAAO,OAAO,YAAe,EAAO,8BAGlD,KAAK,kBAAkB,QAAQ,SAAU,EAAM,CACvC,EAAuB,QAAQ,KAAU,IACzC,GAAI,IAAM,GAAM,WAGjB,GAKX,EAAa,UAAU,sBAAwB,UAAY,CACvD,GAAI,GAAY,EAChB,GAAI,CACA,GAAI,GAAgB,KAAK,MACpB,KAAK,eACL,QACA,KAAK,MACV,EAAY,SAAS,EAAc,MAAM,KAAK,KAAO,OAEzD,CACI,EAAY,EAEhB,MAAO,IAEX,EAAa,UAAU,iBAAmB,SAAU,EAAO,CACvD,GAAI,KAAK,SAAS,SAAU,CACxB,GAAI,GAAqB,KAAK,aAAa,GACvC,EAAkB,EAAmB,cAAgB,IACrD,EAAmB,cAAgB,QACvC,GAAI,EACA,KAAK,MAAM,SAAS,wBAEnB,CACD,GAAI,GAAY,KAAK,eAAe,eACpC,KAAK,MAAM,YAAY,oBACvB,EAAU,KAAK,OAAQ,EAAmB,aACtC,EAAmB,KACnB,EAAmB,UACnB,EAAU,KAAK,WAAY,EAAmB,aAK9D,EAAa,UAAU,mBAAqB,SAAU,EAAW,EAAkB,EAAmB,CAClG,GAAI,GAAQ,KACR,KAAK,YACL,EAAkB,SAAS,qBAE/B,WAAW,UAAY,CAEnB,EAAM,MAAM,SAAS,eACrB,EAAM,MACD,KAAK,YACL,YAAY,+BACb,IAAc,OAEd,GAAiB,SAAS,iBAC1B,EAAkB,SAAS,kBAI3B,GAAiB,SAAS,iBAC1B,EAAkB,SAAS,kBAG/B,WAAW,UAAY,CACnB,EAAM,MAAM,KAAK,YAAY,YAAY,cACzC,EAAiB,SAAS,cAE1B,EAAM,MAAM,YAAY,gBACzB,KACJ,KAAK,WAAa,KAAK,SAAS,WAAa,IAepD,EAAa,UAAU,MAAQ,SAAU,EAAO,EAAW,EAAW,EAAW,CAC7E,GAAI,GAAQ,KACR,EAAY,KAAK,wBAGrB,GAFA,KAAK,kBAAoB,KAAK,mBAAmB,EAAO,GAEpD,OAAK,YAAc,IAAc,GAGrC,IAAI,GAAuB,KAAK,aAAa,OAC7C,GAAI,CAAC,KAAK,OAAQ,CACV,KAAK,SAAS,SACd,KAAK,qBAAqB,GAE9B,GAAI,GAAmB,KAAK,aAAa,GACrC,EAAsB,KAAK,aAAa,GACxC,EAAqB,KAAK,aAAa,GACvC,EAAY,EAAmB,iBAGnC,GAFA,KAAK,MAAM,KAAK,qBAAsB,KAAK,aAAa,IACxD,KAAK,iBAAiB,GAClB,EAAW,CACX,GAAI,GAAK,KAAK,uBAAwB,EAAQ,EAAG,IAAK,EAAS,EAAG,OAC9D,EAAY,GAAM,QAAQ,KAAK,MAAM,GAAQ,KAAK,MAAO,EAAQ,EAAQ,GAAa,KAAK,SAAS,cACxG,KAAK,iBAAiB,EAAO,GAmBjC,GAjBA,KAAK,KAAK,QAAQ,GAAS,YAAa,CACpC,UAAW,EACX,MAAO,EACP,UAAW,CAAC,CAAC,EACb,UAAW,CAAC,CAAC,IAEjB,KAAK,OAAS,GACd,aAAa,KAAK,gBAClB,KAAK,aAAa,GACb,GACD,CAAI,EAAQ,EACR,EAAY,OAEP,EAAQ,GACb,GAAY,SAGhB,CAAC,EACD,KAAK,mBAAmB,EAAW,EAAkB,OAEpD,CACD,KAAK,MACA,KAAK,YACL,YAAY,0CACjB,GAAI,GAAY,OACZ,EAAY,OACZ,EAAuB,EACvB,GAAY,EAAQ,EACpB,EAAY,EAAQ,EAChB,KAAU,GAAK,IAAc,EAAuB,GAK/C,IAAU,EAAuB,GACtC,IAAc,IAEd,GAAY,EACZ,EAAY,EAAuB,IAIvC,GAAY,EACZ,EAAY,GAEZ,IAAc,OACd,KAAK,aAAa,GAAW,SAAS,iBAGtC,KAAK,aAAa,GAAW,SAAS,iBAE1C,EAAiB,SAAS,cAGzB,KAAK,WAIN,WAAW,UAAY,CACnB,EAAM,YAAY,EAAO,IAErB,EAAM,SAAS,kBAAoB,YACnC,EAAM,QAAQ,IAEnB,KAAK,SAAS,MAAQ,GAAM,GAAY,EAAI,KAAK,SAAS,aAT7D,KAAK,YAAY,EAAO,IAW5B,WAAW,UAAY,CACnB,EAAM,OAAS,GACf,EAAoB,YAAY,qBAChC,EAAM,KAAK,QAAQ,GAAS,WAAY,CACpC,UAAW,EACX,MAAO,EACP,UAAW,EACX,UAAW,KAEf,MAAK,WAAa,KAAK,SAAS,MAAQ,IAAM,KAAQ,GAAY,EAAI,KAAK,SAAS,aAE5F,KAAK,MAAQ,IAEjB,EAAa,UAAU,qBAAuB,SAAU,EAAO,CAC3D,KAAK,eAAe,sBAAsB,KAAK,EAAQ,EAAI,KAE/D,EAAa,UAAU,mBAAqB,UAAY,CACpD,KAAK,eAAe,kBAAkB,KAAK,KAAK,aAAa,OAAS,KAE1E,EAAa,UAAU,aAAe,SAAU,EAAM,CAClD,MAAI,GAAK,iBACE,QAEF,EAAK,OACH,SAGA,SAGf,EAAa,UAAU,UAAY,SAAU,EAAa,EAAW,EAAG,CACpE,GAAI,GAAY,EAAU,MAAQ,EAAY,MAC1C,EAAY,EAAU,MAAQ,EAAY,MAC1C,EAAa,GAcjB,GAbI,KAAK,eACL,EAAa,GAGT,KAAK,IAAI,GAAa,GACtB,MAAK,eAAiB,aACtB,EAAa,IAER,KAAK,IAAI,GAAa,IAC3B,MAAK,eAAiB,WACtB,EAAa,IAGjB,EAAC,EAGL,IAAI,GAAgB,KAAK,aAAa,KAAK,OAC3C,GAAI,KAAK,iBAAmB,aAAc,CACtC,GAAM,MAAgC,EAAE,iBAExC,KAAK,MAAM,SAAS,eAEpB,KAAK,aAAa,EAAe,EAAW,GAE5C,GAAI,GAAQ,EAAc,MAAM,YAC5B,EAAoB,EAAQ,GAAM,IAClC,EAAS,EAAmB,KAAK,IAAK,EAAY,GAAM,KAC5D,KAAK,aAAa,KAAK,MAAM,KAAK,kBAAkB,QAAS,CAAC,EAAQ,EAAY,EAAQ,GAC1F,KAAK,aAAa,KAAK,MAAM,KAAK,kBAAkB,QAAS,EAAQ,EAAY,EAAQ,WAEpF,KAAK,iBAAmB,YACzB,KAAK,SAAS,aAAc,CAC5B,GAAM,MAAgC,EAAE,iBACxC,KAAK,WAAW,SAAS,wBACzB,GAAI,GAAU,EAAI,KAAK,IAAI,GAAa,OAAO,YAC/C,KAAK,UAAU,IAAI,UAAW,GAC9B,GAAI,GAAQ,EAAI,KAAK,IAAI,GAAc,QAAO,WAAa,GAC3D,KAAK,aAAa,EAAe,EAAG,EAAW,EAAO,GAClD,KAAK,IAAI,GAAa,KACtB,KAAK,MACA,SAAS,iBACT,YAAY,yBAKjC,EAAa,UAAU,SAAW,SAAU,EAAW,EAAa,EAAO,CACvE,GAAI,GAAQ,KACR,EAEA,KAAK,SAAS,OAAS,YACvB,KAAK,MAAM,SAAS,YAGxB,WAAW,UAAY,CACnB,EAAM,WAAW,YAAY,wBAC7B,EAAM,MACD,YAAY,6BACZ,SAAS,sBACd,GAAI,GAAe,GACnB,GAAI,EAAM,iBAAmB,aAAc,CACvC,EAAW,EAAU,MAAQ,EAAY,MACzC,GAAI,GAAc,KAAK,IAAI,EAAU,MAAQ,EAAY,OACrD,EAAW,GACX,EAAc,EAAM,SAAS,eAC7B,GAAM,cAAc,IACpB,EAAe,IAEV,EAAW,GAChB,EAAc,EAAM,SAAS,gBAC7B,GAAM,cAAc,IACpB,EAAe,YAGd,EAAM,iBAAmB,WAE9B,GADA,EAAW,KAAK,IAAI,EAAU,MAAQ,EAAY,OAC9C,EAAM,SAAS,UACf,EAAM,SAAS,cACf,EAAW,IAAK,CAChB,EAAM,eACN,WAGA,GAAM,UAAU,IAAI,UAAW,GAIvC,GADA,EAAM,MAAM,KAAK,YAAY,WAAW,SACpC,GACA,KAAK,IAAI,EAAU,MAAQ,EAAY,OAAS,EAAG,CAEnD,GAAI,GAAS,GAAI,EAAM,QACnB,EAAM,gBAAgB,IACtB,EAAM,KAAK,QAAQ,GAAS,aAGpC,EAAM,eAAiB,SAG3B,WAAW,UAAY,CACf,CAAC,EAAM,MAAM,SAAS,gBACtB,EAAM,SAAS,OAAS,YACxB,EAAM,MAAM,YAAY,aAE7B,KAAK,SAAS,MAAQ,MAE7B,EAAa,UAAU,YAAc,UAAY,CAC7C,GAAI,GAAQ,KACR,EAAc,GACd,EAAY,GACZ,EAAU,GACV,EAAY,GACZ,KAAK,SAAS,aACd,MAAK,OAAO,GAAG,gBAAiB,SAAU,EAAG,CACzC,EAAM,mBAAqB,GAC3B,GAAI,GAAQ,EAAM,aAAa,EAAM,OAChC,IAAI,EAAE,QAAQ,SAAS,YACxB,EAAM,MAAM,SAAS,EAAE,UACvB,CAAC,EAAM,MAAM,SAAS,cACtB,CAAC,EAAM,QACP,EAAE,QAAQ,SAAW,GACrB,GAAY,GACZ,EAAM,YAAc,QACpB,EAAM,mBACN,EAAc,CACV,MAAO,EAAE,QAAQ,GAAG,MACpB,MAAO,EAAE,QAAQ,GAAG,UAIhC,KAAK,OAAO,GAAG,eAAgB,SAAU,EAAG,CACpC,GACA,EAAM,cAAgB,SACtB,EAAE,QAAQ,SAAW,GACrB,GAAY,CACR,MAAO,EAAE,QAAQ,GAAG,MACpB,MAAO,EAAE,QAAQ,GAAG,OAExB,EAAM,UAAU,EAAa,EAAW,GACxC,EAAU,MAGlB,KAAK,OAAO,GAAG,cAAe,SAAU,EAAO,CAC3C,GAAI,EAAM,cAAgB,QAAS,CAC/B,GAAI,EACA,EAAU,GACV,EAAM,SAAS,EAAW,EAAa,WAElC,EAAW,CAChB,GAAI,GAAS,GAAI,EAAM,QACnB,EAAM,gBAAgB,IACtB,EAAM,KAAK,QAAQ,GAAS,aAGpC,EAAM,YAAc,OACpB,EAAY,QAK5B,EAAa,UAAU,WAAa,UAAY,CAC5C,GAAI,GAAQ,KACR,EAAc,GACd,EAAY,GACZ,EAAY,GACZ,EAAU,GACV,KAAK,SAAS,YACd,MAAK,MAAM,GAAG,eAAgB,SAAU,EAAG,CACvC,EAAM,mBAAqB,GAC3B,GAAI,GAAQ,EAAM,aAAa,EAAM,OACjC,IAAI,EAAE,QAAQ,SAAS,YACvB,EAAM,MAAM,SAAS,EAAE,UACnB,CAAC,EAAM,MAAM,SAAS,cAAgB,CAAC,EAAM,QAC7C,GAAE,iBACG,EAAM,QACP,GAAM,mBACN,EAAc,CACV,MAAO,EAAE,MACT,MAAO,EAAE,OAEb,EAAY,GAEZ,EAAM,MAAM,MAAM,YAAc,EAChC,EAAM,MAAM,MAAM,YAAc,EAEhC,EAAM,MACD,YAAY,WACZ,SAAS,eACd,EAAM,KAAK,QAAQ,GAAS,eAK5C,GAAI,QAAQ,GAAG,sBAAwB,KAAK,KAAM,SAAU,EAAG,CACvD,GAAa,EAAM,UACnB,GAAU,GACV,EAAY,CACR,MAAO,EAAE,MACT,MAAO,EAAE,OAEb,EAAM,UAAU,EAAa,GAC7B,EAAM,KAAK,QAAQ,GAAS,aAGpC,GAAI,QAAQ,GAAG,oBAAsB,KAAK,KAAM,SAAU,EAAO,CAC7D,GAAI,EAAC,EAAM,SAGX,IAAI,GAAS,GAAI,EAAM,QACnB,EACA,GAAU,GACV,EAAM,SAAS,EAAW,EAAa,GACvC,EAAM,KAAK,QAAQ,GAAS,UAEvB,EAAM,gBAAgB,IAC3B,EAAM,KAAK,QAAQ,GAAS,aAG5B,GACA,GAAY,GACZ,EAAM,MAAM,YAAY,eAAe,SAAS,iBAKhE,EAAa,UAAU,mBAAqB,UAAY,CACpD,GAAI,GAAQ,KACZ,KAAK,OAAO,GAAG,WAAY,SAAU,EAAO,CACpC,CAAC,EAAM,oBACP,EAAM,gBAAgB,GAAI,EAAM,UAChC,EAAM,KAAK,QAAQ,GAAS,gBAIxC,EAAa,UAAU,iBAAmB,UAAY,CAClD,GAAI,GAAa,KAAK,MAAQ,EAC1B,EAAa,KAAK,MAAQ,EAC1B,KAAK,SAAS,MAAQ,KAAK,aAAa,OAAS,GACjD,CAAI,KAAK,QAAU,EACf,EAAa,KAAK,aAAa,OAAS,EAEnC,KAAK,QAAU,KAAK,aAAa,OAAS,GAC/C,GAAa,IAGrB,KAAK,MAAM,KAAK,YAAY,YAAY,+BACpC,EAAa,IACb,KAAK,aAAa,GAAY,SAAS,iBAE3C,KAAK,aAAa,GAAY,SAAS,kBAW3C,EAAa,UAAU,cAAgB,SAAU,EAAW,CACxD,GAAI,GAAQ,KACR,EAAQ,KAAK,SAAS,KACtB,GAAa,KAAK,aAAa,OAAS,GACxC,GAAQ,IAEP,KAAK,QACN,CAAI,KAAK,MAAQ,EAAI,KAAK,aAAa,OACnC,MAAK,QACL,KAAK,KAAK,QAAQ,GAAS,gBAAiB,CACxC,MAAO,KAAK,QAEhB,KAAK,MAAM,KAAK,MAAO,CAAC,CAAC,EAAW,GAAO,SAGvC,EACA,MAAK,MAAQ,EACb,KAAK,KAAK,QAAQ,GAAS,gBAAiB,CACxC,MAAO,KAAK,QAEhB,KAAK,MAAM,KAAK,MAAO,CAAC,CAAC,EAAW,GAAO,SAEtC,KAAK,SAAS,mBAAqB,CAAC,GACzC,MAAK,MAAM,SAAS,gBACpB,WAAW,UAAY,CACnB,EAAM,MAAM,YAAY,iBACzB,QAenB,EAAa,UAAU,cAAgB,SAAU,EAAW,CACxD,GAAI,GAAQ,KACR,EAAQ,KAAK,SAAS,KACtB,GAAa,KAAK,aAAa,OAAS,GACxC,GAAQ,IAEP,KAAK,QACN,CAAI,KAAK,MAAQ,EACb,MAAK,QACL,KAAK,KAAK,QAAQ,GAAS,gBAAiB,CACxC,MAAO,KAAK,MACZ,UAAW,IAEf,KAAK,MAAM,KAAK,MAAO,CAAC,CAAC,EAAW,GAAO,SAGvC,EACA,MAAK,MAAQ,KAAK,aAAa,OAAS,EACxC,KAAK,KAAK,QAAQ,GAAS,gBAAiB,CACxC,MAAO,KAAK,MACZ,UAAW,IAEf,KAAK,MAAM,KAAK,MAAO,CAAC,CAAC,EAAW,GAAO,SAEtC,KAAK,SAAS,mBAAqB,CAAC,GACzC,MAAK,MAAM,SAAS,eACpB,WAAW,UAAY,CACnB,EAAM,MAAM,YAAY,gBACzB,QAKnB,EAAa,UAAU,SAAW,UAAY,CAC1C,GAAI,GAAQ,KACZ,GAAI,QAAQ,GAAG,oBAAsB,KAAK,KAAM,SAAU,EAAG,CACrD,EAAM,UACN,EAAM,SAAS,SAAW,IAC1B,EAAE,UAAY,IACd,GAAE,iBACE,EAAM,SAAS,mBACf,EAAM,MAAM,SAAS,kBACrB,EAAM,MAAM,SAAS,sBACrB,EAAM,MAAM,YAAY,sBAGxB,EAAM,gBAGV,EAAM,UAAY,EAAM,aAAa,OAAS,GAC1C,GAAE,UAAY,IACd,GAAE,iBACF,EAAM,iBAEN,EAAE,UAAY,IACd,GAAE,iBACF,EAAM,qBAKtB,EAAa,UAAU,MAAQ,UAAY,CACvC,GAAI,GAAQ,KACZ,KAAK,eAAe,WAAW,GAAG,WAAY,UAAY,CACtD,EAAM,kBAEV,KAAK,eAAe,WAAW,GAAG,WAAY,UAAY,CACtD,EAAM,mBAGd,EAAa,UAAU,aAAe,SAAU,EAAO,CAEnD,GAAI,CAAC,KAAK,SAAS,MAAQ,KAAK,SAAS,iBAAkB,CACvD,GAAI,GAAQ,KAAK,eAAe,WAC5B,EAAQ,KAAK,eAAe,WAC5B,EAAQ,IAAM,KAAK,aAAa,OAChC,EAAM,KAAK,WAAY,YAAY,SAAS,YAG5C,EAAM,WAAW,YAAY,YAAY,YAEzC,IAAU,EACV,EAAM,KAAK,WAAY,YAAY,SAAS,YAG5C,EAAM,WAAW,YAAY,YAAY,cAIrD,EAAa,UAAU,aAAe,SAAU,EAAK,EAAQ,EAAQ,EAAQ,EAAQ,CAC7E,IAAW,QAAU,GAAS,GAC9B,IAAW,QAAU,GAAS,GAClC,EAAI,IAAI,YAAa,eACjB,EACA,OACA,EACA,oBACA,EACA,KACA,EACA,SAER,EAAa,UAAU,WAAa,UAAY,CAC5C,GAAI,GAAQ,KACR,EAAW,EACf,KAAK,MAAM,GAAG,WAAY,SAAU,EAAG,CACnC,GAAI,GAAC,EAAE,QAAU,EAAM,aAAa,OAAS,GAG7C,GAAE,iBACF,GAAI,GAAM,GAAI,QAAO,UACjB,EAAM,EAAW,KAGrB,GAAW,EACP,EAAE,OAAS,EACX,EAAM,gBAED,EAAE,OAAS,GAChB,EAAM,qBAIlB,EAAa,UAAU,eAAiB,SAAU,EAAQ,CACtD,MAAQ,GAAO,SAAS,aACpB,EAAO,SAAS,YAChB,EAAO,SAAS,gBAExB,EAAa,UAAU,gBAAkB,SAAU,EAAQ,CACvD,GAAI,GAAa,KAAK,aAAa,KAAK,OACnC,KAAK,yBACL,MACL,MAAQ,GAAO,SAAS,oBACpB,EAAO,SAAS,yBACf,GAAc,EAAW,SAAS,EAAO,QAMlD,EAAa,UAAU,eAAiB,UAAY,CAChD,GAAI,GAAQ,KACZ,KAAK,eAAe,eAAe,GAAG,WAAY,UAAY,CAC1D,EAAM,WAAW,YAAY,aAC7B,EAAM,qBAGd,EAAa,UAAU,gBAAkB,UAAY,CACjD,OAAS,GAAQ,EAAG,EAAQ,KAAK,MAAM,OAAQ,IAAS,CACpD,GAAI,GAAU,KAAK,MAAM,GACrB,EAAW,GAAI,GACnB,EAAS,IAAI,uBAAyB,EAAS,KAAK,iBAG5D,EAAa,UAAU,UAAY,UAAY,CAC3C,GAAI,GAAQ,KACZ,KAAK,WAAW,MAAM,MAAM,CACxB,cAAe,KAEnB,GAAI,QAAQ,GAAG,oBAAsB,KAAK,KAAM,SAAU,EAAG,CACzD,GAAI,EAAC,EAAM,SAGX,IAAI,GAAe,EAAE,MAAQ,OAAS,EAAE,UAAY,EACpD,GAAI,EAAC,EAGL,IAAI,GAAe,GAAM,qBAAqB,EAAM,WAAW,OAC3D,EAAmB,EAAa,GAChC,EAAkB,EAAa,EAAa,OAAS,GACrD,EAAE,SACE,SAAS,gBAAkB,GAC3B,GAAgB,QAChB,EAAE,kBAIF,SAAS,gBAAkB,GAC3B,GAAiB,QACjB,EAAE,uBAKlB,EAAa,UAAU,mBAAqB,UAAY,CACpD,GAAI,GAAQ,KACZ,GAAI,EAAC,KAAK,SAAS,SAEnB,IAAI,GAAY,GAChB,KAAK,eAAe,YAAY,GAAG,WAAY,UAAY,CACvD,EAAM,iBAEN,KAAK,SAAS,YAGd,MAAK,MAAM,GAAG,eAAgB,SAAU,EAAG,CACvC,GAAI,GAAS,GAAI,EAAE,QACf,EAAM,eAAe,GACrB,EAAY,GAGZ,EAAY,KAGpB,KAAK,MAAM,GAAG,eAAgB,UAAY,CACtC,EAAY,KAEhB,KAAK,MAAM,GAAG,aAAc,SAAU,EAAG,CACrC,GAAI,GAAS,GAAI,EAAE,QACf,EAAM,eAAe,IAAW,GAC3B,GAAM,MAAM,SAAS,gBACtB,EAAM,qBAiB1B,EAAa,UAAU,aAAe,SAAU,EAAO,CACnD,GAAI,GAAQ,KACZ,GAAI,CAAC,KAAK,UAAa,CAAC,KAAK,SAAS,UAAY,CAAC,EAC/C,MAAO,GAEX,KAAK,KAAK,QAAQ,GAAS,aACvB,KAAK,SAAS,qBAAuB,CAAC,KAAK,SAAS,eACpD,GAAI,QAAQ,UAAU,KAAK,eAE/B,GAAI,GAAc,KAAK,MAAM,KAAK,OAC9B,EACJ,GAAI,KAAK,gBAAkB,EAAa,CACpC,GAAI,GAAK,KAAK,uBAAwB,EAAQ,EAAG,IAAK,EAAS,EAAG,OAC9D,EAAK,KAAK,aAAa,KAAK,OAAQ,EAAmB,EAAG,iBAAkB,EAAS,EAAG,OACxF,EAAY,GAAM,QAAQ,EAAa,KAAK,MAAO,EAAQ,EAAQ,GAAoB,GAAU,KAAK,SAAS,cACnH,EAAY,GAAM,aAAa,EAAa,KAAK,MAAO,EAAO,EAAQ,GAEvE,KAAK,gBAAkB,EACvB,MAAK,MAAM,SAAS,iCACpB,KAAK,aAAa,KAAK,OAClB,SAAS,yBACT,IAAI,sBAAuB,KAAK,SAAS,uBAAyB,MAClE,IAAI,YAAa,IAGtB,MAAK,MAAM,SAAS,iBAGpB,KAAK,MAAM,YAAY,uBAK3B,KAAK,iBACL,KAAK,WAAa,GAClB,KAAK,oBAAsB,GAC3B,KAAK,eAAiB,KAAK,SAAS,eACpC,aAAa,KAAK,gBAClB,KAAK,eAAiB,GACtB,GAAI,QAAQ,YAAY,SACxB,KAAK,MAAM,YAAY,iCAEvB,KAAK,UAAU,YAAY,MAAM,IAAI,UAAW,GAChD,GAAI,GAAgB,KAAK,gBAAkB,EACrC,KAAK,IAAI,KAAK,SAAS,uBAAwB,KAAK,SAAS,kBAC7D,KAAK,SAAS,iBACpB,YAAK,WAAW,YAAY,cAE5B,WAAW,UAAY,CACf,EAAM,gBAAkB,GACxB,EAAM,MAAM,YAAY,sBAE5B,EAAM,WAAW,YAAY,WAE7B,EAAM,iBAEN,EAAM,UACD,WAAW,SACX,IAAI,sBAAuB,EAAM,SAAS,iBAAmB,MAClE,EAAM,MAAM,YAAY,cAAgB,EAAM,SAAS,YACvD,EAAM,aAAa,EAAM,OAAO,YAAY,yBAC5C,EAAM,OAAO,QACT,EAAM,UACN,EAAM,KAAK,QAAQ,GAAS,WAAY,CACpC,SAAU,IAGd,EAAM,WAAW,OACjB,EAAM,WAAW,MAAM,OAE3B,EAAM,SAAW,IAClB,EAAgB,KACZ,EAAgB,KAE3B,EAAa,UAAU,YAAc,UAAY,CAC7C,KAAK,QAAQ,QAAQ,SAAU,EAAQ,CACnC,GAAI,CACA,EAAO,YAEX,CACI,QAAQ,KAAK,0EAIzB,EAAa,UAAU,eAAiB,SAAU,EAAS,CACvD,KAAK,QAAQ,QAAQ,SAAU,EAAQ,CACnC,GAAI,CACI,EACA,EAAO,UAGP,EAAO,cAAgB,EAAO,oBAGtC,CACI,QAAQ,KAAK,0EAkBzB,EAAa,UAAU,QAAU,SAAU,EAAc,CAChD,KAAK,SAAS,SACf,KAAK,kBAEL,EACA,KAAK,aAAe,EAGpB,KAAK,aAAe,KAAK,WAE7B,KAAK,iBACL,KAAK,yBACL,KAAK,KAAK,QAAQ,GAAS,eAE/B,EAAa,UAAU,eAAiB,UAAY,CAChD,KAAK,kBAAkB,KAAK,cAC5B,KAAK,qBACL,KAAK,8BAET,EAAa,UAAU,eAAiB,UAAY,CAChD,KAAK,eAAe,IACf,KAAK,SAAS,SACf,KAAK,kBAET,GAAI,QAAQ,IAAI,aAAe,KAAK,MACpC,KAAK,KAAK,IAAI,OACd,KAAK,WAAW,UAepB,EAAa,UAAU,QAAU,UAAY,CACzC,GAAI,GAAe,KAAK,aAAa,IACrC,MAAI,GACA,WAAW,KAAK,eAAe,KAAK,MAAO,GAG3C,KAAK,iBAEF,GAEJ,KAGX,YAAsB,EAAI,EAAS,CAC/B,MAAO,IAAI,IAAa,EAAI,GAGhC,OAAe,GC3qFf;AAAA;AAAA;AAAA;AAAA;AAAA,GAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAeA,GAAI,IAAW,UAAW,CACtB,UAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,OAAS,GAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAAK,CACjD,EAAI,UAAU,GACd,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAE,GAAK,EAAE,IAE9E,MAAO,IAEJ,GAAS,MAAM,KAAM,YAG5B,GAAgB,CAChB,mBAAoB,GACpB,oBAAqB,GACrB,kBAAmB,GACnB,mBAAoB,GACpB,wBAAyB,GACzB,qBAAsB,GACtB,QAAS,GACT,aAAc,GACd,eAAgB,IAQhB,GAAW,CACX,iBAAkB,qBAClB,KAAM,SACN,SAAU,aACV,gBAAiB,oBACjB,aAAc,iBACd,mBAAoB,uBACpB,WAAY,eACZ,UAAW,cACX,cAAe,kBACf,YAAa,gBACb,WAAY,eACZ,YAAa,gBACb,UAAW,cACX,SAAU,aACV,QAAS,YACT,gBAAiB,oBACjB,gBAAiB,oBACjB,YAAa,gBACb,WAAY,eACZ,WAAY,eACZ,YAAa,gBACb,eAAgB,mBAChB,aAAc,iBACd,SAAU,aACV,cAAe,kBACf,aAAc,kBAGd,GAAQ,SAAU,EAAK,CACvB,MAAO,QAAO,KAAK,GACd,IAAI,SAAU,EAAG,CAClB,MAAO,oBAAmB,GAAK,IAAM,mBAAmB,EAAI,MAE3D,KAAK,MAEV,GAAiB,SAAU,EAAK,CAChC,GAAI,GAAU,EACT,MAAM,GACN,MAAM,KACN,IAAI,SAAU,EAAG,CAAE,MAAO,GAAE,MAAM,OAClC,OAAO,SAAU,EAAK,EAAM,CAC7B,GAAI,GAAK,EAAK,IAAI,oBAAqB,EAAM,EAAG,GAAI,EAAQ,EAAG,GAC/D,SAAI,GAAO,EACJ,GACR,IACH,MAAO,IAEP,GAAmB,SAAU,EAAW,EAA6B,CACrE,GAAI,CAAC,EAAU,QACX,MAAO,GACX,GAAI,GAAiB,EAAU,QAAQ,GACjC,GAAe,EAAU,QAAQ,IACjC,GAEF,EAA6B,CAC7B,MAAO,SACP,SAAU,EACV,KAAM,EACN,YAAa,GAEb,EAAuB,GAA+B,GACtD,EAAsB,GAAS,GAAS,GAAS,GAAI,GAA6B,GAAuB,GACzG,EAAgB,IAAM,GAAM,GAChC,MAAO,IAEP,GAAoB,SAAU,EAAK,CACnC,MAAO,GAAI,SAAS,yBAEpB,GAAoB,SAAU,EAAe,EAAW,CACxD,GAAI,CAAC,GAAa,CAAC,EAAU,MACzB,MAAO,GACX,GAAI,GAAY,EAAU,MAAM,IAAM,GAClC,EAAsB,GAAiB,OAAO,KAAK,GAAe,SAAW,EAC3E,IAAM,GAAM,GACZ,GAEF,EAAc,EAAU,MAAM,GAAG,MAAM,KAAK,OAAS,GACrD,EAAwB,EAAY,MAAM,KAAK,IAAM,GACrD,EAAO,EAAsB,MAAM,KAAK,GACxC,EAAY,EAAU,MAAM,KAAO,EACnC,GACA,GAAY,EAAU,QAAQ,IAAM,EAAM,KAE9C,EACI,EAAU,IAAM,IAAM,IAAM,EAAU,MAAM,GAAK,GAAa,GAElE,GAAI,GAAoB,sBAAyB,GAAY,MAAQ,EAAO,IAAM,EAAsB,EACxG,MAAO,IA4BP,GAAuB,UAAY,CACnC,WAAe,EAAU,CAErB,YAAK,KAAO,EACZ,KAAK,SAAW,GAAS,GAAS,GAAI,IAAgB,KAAK,KAAK,UACzD,KAEX,SAAM,UAAU,KAAO,UAAY,CAC/B,GAAI,GAAQ,KAMZ,KAAK,KAAK,KAAK,GAAG,GAAS,SAAW,SAAU,KAAK,WAAW,KAAK,OACrE,KAAK,KAAK,KAAK,GAAG,GAAS,YAAc,SAAU,UAAY,CAC3D,GAAI,GAAM,EAAM,KAAK,aAAa,EAAM,KAAK,OAC7C,EAAM,uBAAuB,KAEjC,KAAK,KAAK,KAAK,GAAG,GAAS,cAAgB,SAAU,KAAK,gBAAgB,KAAK,OAE/E,KAAK,KAAK,KAAK,GAAG,GAAS,YAAc,SAAU,KAAK,cAAc,KAAK,OAE3E,KAAK,KAAK,KAAK,GAAG,GAAS,WAAa,SAAU,KAAK,aAAa,KAAK,QAO7E,EAAM,UAAU,gBAAkB,SAAU,EAAO,CAC/C,GAAI,GAAQ,KACR,EAAK,EAAM,OAAQ,EAAe,EAAG,aAAc,EAAQ,EAAG,MAE9D,KAAK,SAAS,oBACd,GACA,IAAU,KAAK,KAAK,OAEpB,WAAW,UAAY,CACnB,EAAM,iBAAiB,IACxB,KAGH,CAAC,GACD,KAAK,SAAS,sBACd,IAAU,KAAK,KAAK,OACpB,KAAK,iBAAiB,IAU9B,EAAM,UAAU,WAAa,SAAU,EAAO,CAC1C,GAAI,GAAK,EAAM,OAAQ,EAAQ,EAAG,MAAO,EAAM,EAAG,IAAK,EAAa,EAAG,WAAY,EAAY,EAAG,UAC7F,GAED,MAAK,aAAa,KAAK,KAAK,aAAa,GAAQ,CAC7C,IAAK,EACL,SAAU,YACV,MAAO,EACP,WAAY,IAGhB,KAAK,wBAAwB,EAAK,KAY1C,EAAM,UAAU,cAAgB,SAAU,EAAO,CAC7C,GAAI,KAAK,KAAK,WAAY,CACtB,GAAI,GAAY,EAAM,OAAO,UAC7B,KAAK,WAAW,KAYxB,EAAM,UAAU,aAAe,SAAU,EAAO,CAC5C,GAAI,GAAQ,KACR,EAAK,EAAM,OAAQ,EAAQ,EAAG,MAAO,EAAY,EAAG,UAEpD,EAAS,KAAK,KAAK,aAAa,GAChC,KAAK,SAAS,sBAAwB,IAAU,GAC5C,EAAO,SAAS,gBAChB,WAAW,UAAY,CACnB,EAAM,iBAAiB,IACxB,MAIf,EAAM,UAAU,iBAAmB,SAAU,EAAO,CAChD,GAAI,GAAS,KAAK,KAAK,aAAa,GAChC,EAAqB,KAAK,KAAK,aAAa,GAC5C,EAAmB,OACnB,KAAK,uBAAuB,EAAQ,IAGpC,KAAK,UAAU,IAOvB,EAAM,UAAU,UAAY,SAAU,EAAO,CACzC,KAAK,aAAa,EAAO,SAM7B,EAAM,UAAU,WAAa,SAAU,EAAO,CAC1C,KAAK,aAAa,EAAO,UAE7B,EAAM,UAAU,aAAe,SAAU,EAAK,EAAU,EAAO,EAAY,CACvE,GAAI,GAAQ,GACR,EAAY,KAAK,KAAK,aAAa,GAClC,kBAAoB,GACrB,EAAqB,KAAK,KAAK,aAAa,GAC5C,EAAa,EAAmB,OAAS,EAAmB,IAChE,EAAa,EAAa,UAAY,EAAa,IAAM,GACzD,GAAI,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BACxB,GAAI,EAAU,QAAS,CACnB,GAAI,GAAU,aAAe,EACzB,EAAgB,GAAiB,EAAW,KAAK,SAAS,qBAC1D,EAAuB,GAAkB,GACzC,EAAa,EACX,8BACA,qBACN,EAAQ,+BAAmC,EAAU,sCAAyC,EAAW,KAAQ,EAAa,SAAY,EAAa,SAAY,GAAU,QAAQ,GAAK,GAAiB,KAAQ,EAAoB,qBAElO,EAAU,MAAO,CACtB,GAAI,GAAU,WAAa,EACvB,EAAe,GAAkB,KAAK,SAAS,kBAAmB,GACtE,EAAQ,+BAAmC,EAAU,oCAAuC,EAAW,KAAQ,EAAa,kCAAsC,GAAU,MAAM,GAAK,GAAgB,KAAQ,EAAoB,qBAE9N,EAAU,OAAQ,CACvB,GAAI,GAAW,YAAc,EACzB,EAAe,GAAM,KAAK,SAAS,oBACvC,EAAe,EAAe,IAAM,EAAe,GACnD,EAAQ,gCAAqC,EAAW,yCAA8C,GAAU,OAAO,GAAK,GAAgB,KAAQ,EAAa,kDAAqD,EAAW,yBAA8B,EAAoB,qBAE9Q,EAAU,MAAO,CAEtB,OADI,GAAmB,GACd,EAAI,EAAG,EAAI,EAAW,OAAO,OAAQ,IAC1C,GAAoB,gBAAmB,EAAW,OAAO,GAAG,IAAM,WAAe,EAAW,OAAO,GAAG,KAAO,KAEjH,GAAI,EAAW,OASX,OARI,IAAU,SAAU,GAAG,CACvB,GAAI,IAAkB,GAClB,GAAQ,EAAW,OAAO,IAC9B,OAAO,KAAK,IAAS,IAAI,QAAQ,SAAU,GAAK,CAC5C,IAAmB,GAAM,KAAQ,GAAM,IAAO,OAElD,GAAoB,UAAY,GAAkB,KAE7C,EAAI,EAAG,EAAI,EAAW,OAAO,OAAQ,IAC1C,GAAQ,GAGhB,GAAI,IAAoB,GACpB,EAAoB,EAAW,YAAc,GACjD,OAAO,KAAK,GAAqB,IAAI,QAAQ,SAAU,GAAK,CACxD,IAAqB,GAAM,KAAQ,EAAkB,IAAO,OAEhE,EAAQ,0CAA8C,MAAK,SAAS,SAAW,KAAK,SAAS,aACvF,KAAK,SAAS,aAAe,IAC7B,IAAM,IAAO,MAAK,SAAS,QAAU,YAAc,IAAM,KAAQ,GAAoB;AAAA,kBAAwB,EAAmB;AAAA;AAAA,sBAE1I,MAAO,IAQX,EAAM,UAAU,aAAe,SAAU,EAAI,EAAa,CACtD,GAAI,GACA,EAAY,KAAK,aAAa,EAAY,IAAK,EAAY,SAAU,EAAY,MAAO,EAAY,YACxG,EAAG,KAAK,kBAAkB,OAAO,GACjC,GAAI,GAAgB,EAAG,KAAK,oBAAoB,QAMhD,GALI,EAAY,YACZ,EAAc,GAAG,qBAAsB,SAAU,EAAG,CAChD,EAAE,oBAGN,KAAK,SAAS,SAAa,IAAK,KAAK,KAAK,aAAa,EAAY,OAAO,oBAAsB,MAAQ,IAAO,OAAS,OAAS,EAAG,OACpI,GAAI,CACA,MAAO,SAAQ,EAAc,MAAO,KAAK,SAAS,qBAEtD,CACI,QAAQ,MAAM,wDAI1B,EAAM,UAAU,wBAA0B,SAAU,EAAK,EAAO,CAC5D,GAAI,GAAQ,KACR,EAAgB,KAAK,KACpB,aAAa,GACb,KAAK,oBACL,QACD,EAAY,KAAK,KAAK,aAAa,GAAO,kBAAoB,GAClE,GAAI,KAAK,SAAS,yBACd,GAAI,EAAU,MACV,EAAc,GAAG,QAAS,UAAY,CAClC,EAAM,KAAK,0BAGV,EAAU,MACf,GAAI,CAEA,GAAI,OAAM,OAAO,EAAc,OAAO,GAAG,QAAS,UAAY,CAC1D,EAAM,KAAK,uBAGnB,CACI,QAAQ,MAAM,mFAGb,EAAU,OACf,GAAI,CACA,OAAO,IAAM,OAAO,KAAO,GAE3B,OAAO,IAAI,KAAK,CACZ,GAAI,EAAc,KAAK,MACvB,QAAS,SAAU,EAAO,CACtB,EAAM,KAAK,MAAO,UAAY,CAC1B,EAAM,KAAK,0BAK3B,CACI,QAAQ,MAAM,2FAK9B,EAAM,UAAU,aAAe,SAAU,EAAO,EAAQ,CACpD,GAAI,GAAgB,KAAK,KACpB,aAAa,GACb,KAAK,oBACL,QACD,EAAY,KAAK,KAAK,aAAa,GAAO,kBAAoB,GAClE,GAAI,EAAC,EAAc,OAEnB,GAAI,EAAU,QACV,GAAI,CACA,EAAc,MAAM,cAAc,YAAY,8BAAuC,EAAS,oBAA0B,WAErH,EAAP,CACI,QAAQ,MAAM,kBAAoB,WAGjC,EAAU,MACf,GAAI,CACA,GAAI,OAAM,OAAO,EAAc,OAAO,UAE1C,CACI,QAAQ,MAAM,mFAGb,EAAU,MACf,GAAI,KAAK,SAAS,QACd,GAAI,CACA,QAAQ,EAAc,OAAO,UAEjC,CACI,QAAQ,MAAM,0DAIlB,GAAc,MAAM,aAGnB,EAAU,OACf,GAAI,CACA,OAAO,IAAM,OAAO,KAAO,GAE3B,OAAO,IAAI,KAAK,CACZ,GAAI,EAAc,KAAK,MACvB,QAAS,SAAU,EAAO,CACtB,EAAM,aAIlB,CACI,QAAQ,MAAM,2FAI1B,EAAM,UAAU,uBAAyB,SAAU,EAAK,EAAW,CAC/D,GAAI,GAAQ,KAEZ,GAAK,EAAI,SAAS,mBAwCT,GACL,KAAK,UAAU,KAAK,KAAK,eAvCpB,EAAI,SAAS,gBAmCd,KAAK,UAAU,KAAK,KAAK,WAnCM,CAC/B,EAAI,SAAS,gBACb,GAAI,GAAQ,OACR,EAAO,KAAK,KAAK,aAAa,KAAK,KAAK,OAAO,IAC/C,EAAQ,KAAK,KAAK,aAAa,KAAK,KAAK,OAAO,MAChD,GACA,GACI,MAAO,IAAU,SAAW,KAAK,MAAM,GAAS,GAExD,GAAI,GAAkB,KAAK,aAAa,EAAK,CACzC,IAAK,EACL,SAAU,GACV,MAAO,KAAK,KAAK,MACjB,WAAY,IAEhB,KAAK,wBAAwB,EAAM,KAAK,KAAK,OAC7C,GAAI,GAAW,EAAI,KAAK,cAAc,QAAQ,MAE9C,EAAI,KAAK,kBAAkB,QAAQ,OAAO,GAC1C,EAAI,SAAS,oBACb,GACI,EAAgB,MAAM,UAAY,CAC9B,EAAgB,GAAG,iBAAkB,UAAY,CAC7C,EAAM,4BAA4B,EAAK,EAAM,KAAK,WAG9D,EAAI,KAAK,oBACJ,QACA,GAAG,qCAAsC,UAAY,CACtD,WAAW,UAAY,CACnB,EAAM,4BAA4B,EAAK,EAAM,KAAK,QACnD,QAWnB,EAAM,UAAU,4BAA8B,SAAU,EAAK,EAAO,CAChE,EAAI,SAAS,mBACb,KAAK,UAAU,IAEnB,EAAM,UAAU,QAAU,UAAY,CAClC,KAAK,KAAK,KAAK,IAAI,aACnB,KAAK,KAAK,KAAK,IAAI,WAEhB,KAGX,GAAe,GC/gBf,GAAgB,GAAc,CAC5B,GAAa,EAAW,CACtB,QAAS,CAAC,IACV,MAAO,IACP,SAAU,GACV,WAAY,GACZ,cAAe,GACf,qBAAsB,IACtB,qBAAsB,GACtB,eAAgB,CAAE,SAAU,MAM9B,SADsB,iBAAiB,gBAClC,QAAS,GAAQ,EAAI,UAAU,IAAI,eAAgB,WCL1D,GAVmB,GAAc,CAC/B,KAAM,CAAE,aAAc,OAEhB,EAAe,IAAM,CACzB,EAAU,KAAK,KAAK,MAAM,EAAU,QAAQ,aAG9C,EAAU,iBAAiB,QAAS,ICctC,GArBmB,GAAc,CAC/B,KAAM,CAAE,aAAc,OAEtB,SAAS,iBAAiB,YAAa,IAAM,CACvC,EAAU,UAAU,SAAS,WAC/B,CAAI,EAAU,UAAU,SAAS,aAC1B,EAAU,UAAU,SAAS,eAChC,GAAU,KAAK,KAAK,MAAM,EAAU,QAAQ,gBAC5C,EAAU,UAAU,IAAI,eAG1B,EAAU,UAAU,OAAO,iBAK5B,EAAU,UAAU,SAAS,WAChC,EAAU,KAAK,KAAK,MAAM,EAAU,QAAQ,iBCDhD,GAhBiC,GAAc,CAC7C,KAAM,CAAE,aAAc,OAEhB,EAAe,IAAM,CACzB,KAAM,GAAQ,EAAU,cAAc,iCAElC,EACF,EAAU,KAAK,KAAK,MAAM,EAAM,QAAQ,wBAExC,EAAU,KAAK,KAAK,MAAM,EAAU,QAAQ,2BAIhD,EAAU,iBAAiB,QAAS,ICOtC,GApB0B,GAAc,CACtC,KAAM,CAAE,aAAc,OAEtB,EAAU,iBAAiB,KAAK,QAAS,GAAW,CAClD,KAAM,GAAO,EAAO,aAAa,QAC3B,EAAU,EAAO,YAAY,QAAQ,gBAAiB,IAEtD,EAAY,EAAU,QAAQ,iBACjC,QAAQ,OAAQ,GAChB,QAAQ,QAAS,GACjB,OAEG,EAAe,IAAM,CACzB,EAAU,KAAK,KAAK,MAAM,KAG5B,EAAO,iBAAiB,QAAS,M,wBCpBrC,GAAe,IAAM,CAKnB,GAAI,CAJ0B,GACrB,OAAO,WAAW,GAAY,SAGd,sBAAuB,CAE9C,KAAM,GAAS,GAAI,OAAO,sBACrB,CAEL,KAAM,GAAU,GAAI,OAAO,qBCyB/B,GAhC8B,GAAc,CAC1C,KAAM,GAAQ,EAAU,cAAc,iCAChC,CAAE,MAAO,EAAU,QAIpB,eAF2B,QAAQ,KAAQ,QAG9C,EAAU,UAAU,IAAI,YAG1B,EAAM,iBAAiB,QAAS,IAAM,CACpC,eAAe,QAAQ,EAAI,QAC3B,EAAU,UAAU,OAAO,cAI7B,KAAM,GAAW,IACR,OAAO,iBAAmB,IAI7B,EAAoB,SAAS,cAAc,2BAC3C,EAAW,EAAkB,QAAQ,MACrC,EAAiB,EAAkB,QAAQ,YAE7C,KAAc,EAChB,EAAkB,MAAM,gBAAkB,OAAO,KAEjD,EAAkB,MAAM,gBAAkB,OAAO,MCIrD,GAhCiC,GAAc,CAC7C,KAAM,GAAQ,EAAU,cAAc,iCAChC,CAAE,MAAO,EAAU,QAIpB,eAF2B,QAAQ,KAAQ,QAG9C,EAAU,UAAU,OAAO,UAI7B,KAAM,GAAW,IACR,OAAO,iBAAmB,IAI7B,EAAoB,SAAS,cAAc,gCAC3C,EAAW,EAAkB,QAAQ,MACrC,EAAiB,EAAkB,QAAQ,YAE7C,KAAc,EAChB,EAAkB,MAAM,gBAAkB,OAAO,KAEjD,EAAkB,MAAM,gBAAkB,OAAO,KAGnD,EAAM,iBAAiB,QAAS,IAAM,CACpC,eAAe,QAAQ,EAAI,QAC3B,EAAU,UAAU,IAAI,aCyB5B,GA1D8B,GAA2B,CACvD,KAAM,GAAa,EAAU,iBAA8B,qBACrD,EAAU,EAAU,iBAA8B,oBAElD,EAAY,IAAM,CACtB,EAAW,QAAS,GAAS,CAC3B,EAAK,UAAU,IAAI,2BAEnB,EADoB,iBAAiB,SAC9B,QAAS,GAAU,CACpB,GACF,GAAM,QAEN,EAAM,YAAc,OAI1B,EAAQ,QAAS,GAAS,EAAK,UAAU,OAAO,4BAG5C,EAAkB,IAAM,CAC5B,KAAM,CAAE,QAAS,OAAO,SACxB,GAAI,CAAC,EAAM,OACX,KAAM,GAAa,MAAM,KAAK,GAAS,KAAM,GAAS,EAAK,cAAc,WAAW,QACpF,GAAI,CAAC,EAAY,OAEjB,IAEA,KAAM,GAAgB,EAAU,cAA2B,GACvD,GAAiB,GACnB,GAAc,UAAU,OAAO,2BAC/B,EAAW,UAAU,IAAI,0BAGzB,EAD6B,iBAAiB,SACvC,QAAS,GAAU,CACpB,GACF,EAAM,WAMd,EAAQ,QAAS,GAAS,CACxB,EAAK,iBAAiB,QAAU,GAAU,C,MACxC,EAAM,iBACN,KAAM,GAAO,KAAK,cAA2B,QAAI,0BAAE,aAAa,QAC5D,GAGF,SAAQ,aAAa,KAAM,GAAI,GAC/B,SAKN,OAAO,iBAAiB,aAAc,GACtC,KCvDF;AAAA;AAAA;AAAA;AAAA,GAMA,YAAiB,EAAQ,EAAgB,CACvC,GAAI,GAAO,OAAO,KAAK,GAEvB,GAAI,OAAO,sBAAuB,CAChC,GAAI,GAAU,OAAO,sBAAsB,GAEvC,GACF,GAAU,EAAQ,OAAO,SAAU,EAAK,CACtC,MAAO,QAAO,yBAAyB,EAAQ,GAAK,cAIxD,EAAK,KAAK,MAAM,EAAM,GAGxB,MAAO,GAGT,YAAwB,EAAQ,CAC9B,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,GAAI,GAAS,UAAU,IAAM,KAAO,UAAU,GAAK,GAE/C,EAAI,EACN,GAAQ,OAAO,GAAS,IAAM,QAAQ,SAAU,EAAK,CACnD,GAAgB,EAAQ,EAAK,EAAO,MAE7B,OAAO,0BAChB,OAAO,iBAAiB,EAAQ,OAAO,0BAA0B,IAEjE,GAAQ,OAAO,IAAS,QAAQ,SAAU,EAAK,CAC7C,OAAO,eAAe,EAAQ,EAAK,OAAO,yBAAyB,EAAQ,MAKjF,MAAO,GAGT,YAAiB,EAAK,CAGpB,MAAI,OAAO,SAAW,YAAc,MAAO,QAAO,UAAa,SAC7D,GAAU,SAAU,EAAK,CACvB,MAAO,OAAO,IAGhB,GAAU,SAAU,EAAK,CACvB,MAAO,IAAO,MAAO,SAAW,YAAc,EAAI,cAAgB,QAAU,IAAQ,OAAO,UAAY,SAAW,MAAO,IAItH,GAAQ,GAGjB,YAAyB,EAAU,EAAa,CAC9C,GAAI,CAAE,aAAoB,IACxB,KAAM,IAAI,WAAU,qCAIxB,YAA2B,EAAQ,EAAO,CACxC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAI,GAAa,EAAM,GACvB,EAAW,WAAa,EAAW,YAAc,GACjD,EAAW,aAAe,GACtB,SAAW,IAAY,GAAW,SAAW,IACjD,OAAO,eAAe,EAAQ,EAAW,IAAK,IAIlD,YAAsB,EAAa,EAAY,EAAa,CAC1D,MAAI,IAAY,GAAkB,EAAY,UAAW,GACrD,GAAa,GAAkB,EAAa,GACzC,EAGT,YAAyB,EAAK,EAAK,EAAO,CACxC,MAAI,KAAO,GACT,OAAO,eAAe,EAAK,EAAK,CAC9B,MAAO,EACP,WAAY,GACZ,aAAc,GACd,SAAU,KAGZ,EAAI,GAAO,EAGN,EAGT,YAAmB,EAAU,EAAY,CACvC,GAAI,MAAO,IAAe,YAAc,IAAe,KACrD,KAAM,IAAI,WAAU,sDAGtB,EAAS,UAAY,OAAO,OAAO,GAAc,EAAW,UAAW,CACrE,YAAa,CACX,MAAO,EACP,SAAU,GACV,aAAc,MAGd,GAAY,GAAgB,EAAU,GAG5C,YAAyB,EAAG,CAC1B,UAAkB,OAAO,eAAiB,OAAO,eAAiB,SAAyB,EAAG,CAC5F,MAAO,GAAE,WAAa,OAAO,eAAe,IAEvC,GAAgB,GAGzB,YAAyB,EAAG,EAAG,CAC7B,UAAkB,OAAO,gBAAkB,SAAyB,EAAG,EAAG,CACxE,SAAE,UAAY,EACP,GAGF,GAAgB,EAAG,GAG5B,aAAqC,CAEnC,GADI,MAAO,UAAY,aAAe,CAAC,QAAQ,WAC3C,QAAQ,UAAU,KAAM,MAAO,GACnC,GAAI,MAAO,QAAU,WAAY,MAAO,GAExC,GAAI,CACF,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,GAAI,UAAY,KACnE,QACP,CACA,MAAO,IAIX,YAAgC,EAAM,CACpC,GAAI,IAAS,OACX,KAAM,IAAI,gBAAe,6DAG3B,MAAO,GAGT,YAAoC,EAAM,EAAM,CAC9C,GAAI,GAAS,OAAO,IAAS,UAAY,MAAO,IAAS,YACvD,MAAO,GACF,GAAI,IAAS,OAClB,KAAM,IAAI,WAAU,4DAGtB,MAAO,IAAuB,GAGhC,YAAsB,EAAS,CAC7B,GAAI,GAA4B,KAEhC,MAAO,WAAgC,CACrC,GAAI,GAAQ,GAAgB,GACxB,EAEJ,GAAI,EAA2B,CAC7B,GAAI,GAAY,GAAgB,MAAM,YAEtC,EAAS,QAAQ,UAAU,EAAO,UAAW,OAE7C,GAAS,EAAM,MAAM,KAAM,WAG7B,MAAO,IAA2B,KAAM,IAI5C,YAAwB,EAAQ,EAAU,CACxC,KAAO,CAAC,OAAO,UAAU,eAAe,KAAK,EAAQ,IACnD,GAAS,GAAgB,GACrB,IAAW,OAAf,CAGF,MAAO,GAGT,aAAgB,CACd,MAAI,OAAO,UAAY,aAAe,QAAQ,IAC5C,GAAO,QAAQ,IAEf,GAAO,SAAc,EAAQ,EAAU,EAAU,CAC/C,GAAI,GAAO,GAAe,EAAQ,GAElC,GAAI,EAAC,EACL,IAAI,GAAO,OAAO,yBAAyB,EAAM,GAEjD,MAAI,GAAK,IACA,EAAK,IAAI,KAAK,UAAU,OAAS,EAAI,EAAS,GAGhD,EAAK,QAIT,GAAK,MAAM,KAAM,WAG1B,GAAI,IAAW,CAUb,KAAM,SAON,QAAS,EAOT,QAAS,EAWT,QAAS,EAOT,IAAK,GAOL,SAAU,GAOV,WAAY,GAOZ,SAAU,GAUV,MAAO,GAOP,eAAgB,GAOhB,cAAe,IAWf,SAAU,GAOV,WAAY,GAOZ,WAAY,GAOZ,kBAAmB,IAOnB,OAAQ,GAOR,eAAgB,IAOhB,oBAAqB,oCAOrB,kBAAmB,GAOnB,SAAU,GAWV,UAAW,MAcX,KAAM,EAON,aAAc,EAWd,YAAa,GAQb,QAAS,CACP,UAAW,mBACX,SAAU,kBACV,UAAW,CACT,IAAK,aACL,IAAK,cAEP,KAAM,CACJ,OAAQ,gBACR,SAAU,mBAEZ,MAAO,CACL,MAAO,sBACP,OAAQ,wBAEV,MAAO,CACL,SAAU,0BAEZ,IAAK,CACH,OAAQ,2BAWd,YAAc,EAAK,CACjB,QAAQ,MAAM,iBAAiB,OAAO,IAUxC,YAAe,EAAO,CACpB,MAAO,UAAS,GAUlB,YAAiB,EAAO,CACtB,MAAO,YAAW,GASpB,YAAkB,EAAO,CACvB,MAAO,OAAO,IAAU,SAW1B,YAAkB,EAAO,CACvB,GAAI,GAAO,GAAQ,GAEnB,MAAO,KAAS,YAAc,IAAS,UAAY,CAAC,CAAC,EASvD,WAAoB,EAAO,CACzB,MAAO,OAAO,IAAU,WAS1B,WAAqB,EAAO,CAC1B,MAAO,OAAO,IAAU,YAS1B,WAAiB,EAAO,CACtB,MAAO,GAAM,cAAgB,MAa/B,WAAe,EAAO,EAAY,EAAQ,CACxC,GAAI,GAAa,GAEjB,OAAS,KAAQ,GACX,EAAW,EAAW,IACxB,EAAW,GAAQ,EAAW,GAAM,EAAO,EAAY,GAEvD,GAAK,gCAIT,OAAS,KAAS,GACZ,EAAW,EAAW,GAAO,QAC/B,EAAW,GAAO,QAItB,MAAO,GAWT,WAAgB,EAAK,EAAM,EAAY,CACrC,OAAO,eAAe,EAAK,EAAM,GASnC,WAAkB,EAAK,CACrB,MAAO,QAAO,KAAK,GAAK,OAAO,OAAO,SAAU,EAAG,EAAG,CACpD,SAAE,GAAK,EAAI,GACJ,EAAE,GAAI,GACZ,IAUL,WAAsB,EAAU,EAAU,CACxC,GAAI,GAAU,OAAO,OAAO,GAAI,EAAU,GAM1C,GAAI,EAAS,eAAe,WAAY,CACtC,EAAQ,QAAU,OAAO,OAAO,GAAI,EAAS,QAAS,EAAS,SAC/D,GAAI,GAAa,CAAC,YAAa,OAAQ,QAAS,QAAS,OACzD,EAAW,QAAQ,SAAU,EAAU,CACjC,EAAS,QAAQ,eAAe,IAClC,GAAQ,QAAQ,GAAY,GAAe,GAAe,GAAI,EAAS,QAAQ,IAAY,EAAS,QAAQ,OAKlH,MAAI,GAAS,eAAe,gBAC1B,GAAQ,YAAc,OAAO,OAAO,GAAI,EAAS,YAAa,EAAS,cAGlE,EAGT,GAAI,IAAyB,UAAY,CAMvC,YAAqB,CACnB,GAAI,GAAS,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAEjF,GAAgB,KAAM,GAEtB,KAAK,OAAS,EACd,KAAK,IAAM,EAAO,eAUpB,UAAa,EAAW,CAAC,CACvB,IAAK,KACL,MAAO,SAAY,EAAO,EAAS,CACjC,GAAI,EAAQ,GAAQ,CAClB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,KAAK,GAAG,EAAM,GAAI,GAGpB,OAIG,KAAK,IAAI,KAAK,KAAK,OAAQ,IAC9B,MAAK,OAAO,GAAS,IAIvB,GAAI,GAAQ,KAAK,OAAO,GAAO,KAAK,GAAW,EAE/C,MAAO,CACL,OAAQ,UAAkB,CACxB,MAAO,MAAK,OAAO,GAAO,OAW/B,CACD,IAAK,OACL,MAAO,SAAc,EAAO,EAAS,CACnC,GAAI,EAAQ,GAAQ,CAClB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,KAAK,KAAK,EAAM,GAAI,GAGtB,OAIE,CAAC,KAAK,IAAI,KAAK,KAAK,OAAQ,IAKhC,KAAK,OAAO,GAAO,QAAQ,SAAU,EAAM,CACzC,EAAK,GAAW,UAKf,KAGL,GAAuB,UAAY,CAOrC,WAAe,EAAU,CACvB,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAElF,GAAgB,KAAM,GAEtB,KAAK,GAAK,GACV,KAAK,GAAK,GACV,KAAK,GAAK,GAAI,IACd,KAAK,SAAW,GAChB,KAAK,SAAW,EAChB,KAAK,SAAW,EAAa,GAAU,GACvC,KAAK,MAAQ,KAAK,SAAS,QAU7B,UAAa,EAAO,CAAC,CACnB,IAAK,QACL,MAAO,UAAmB,CACxB,GAAI,GAAa,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAErF,YAAK,GAAG,KAAK,gBAET,GAAS,GACX,KAAK,GAAK,EAAM,KAAM,EAAY,KAAK,IAEvC,GAAK,6CAGP,KAAK,GAAG,KAAK,eAEN,OASR,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,GAAI,GAAe,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAEvF,MAAI,GAAQ,GACV,KAAK,GAAK,EAEV,GAAK,6CAGA,OASR,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,GAAI,GAAW,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GACnF,YAAK,SAAW,EAAa,KAAK,SAAU,GAExC,EAAS,eAAe,YAC1B,MAAK,MAAQ,EAAS,SAGxB,KAAK,GAAG,KAAK,UAEN,OAgBR,CACD,IAAK,KACL,MAAO,SAAY,EAAS,CAC1B,YAAK,GAAG,IAAI,KAAK,GAEV,OASR,CACD,IAAK,OACL,MAAO,SAAc,EAAU,CAC7B,YAAK,GAAG,WAAW,UAEnB,KAAK,GAAG,KAAK,KAAK,GAEX,OAQR,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,YAAK,GAAG,KAAK,WAEN,OASR,CACD,IAAK,OACL,MAAO,UAAgB,CACrB,GAAI,GAAW,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAEnF,MAAI,IACF,MAAK,SAAS,SAAW,GAG3B,KAAK,GAAG,KAAK,QAEN,OAQR,CACD,IAAK,QACL,MAAO,UAAiB,CACtB,YAAK,GAAG,KAAK,SAEN,OAQR,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,YAAK,SAAW,GACT,OAQR,CACD,IAAK,SACL,MAAO,UAAkB,CACvB,YAAK,SAAW,GACT,OAUR,CACD,IAAK,KACL,MAAO,SAAY,EAAO,EAAS,CACjC,YAAK,GAAG,GAAG,EAAO,GAEX,OASR,CACD,IAAK,SACL,MAAO,SAAgB,EAAM,CAC3B,MAAO,MAAK,SAAS,OAAS,IAQ/B,CACD,IAAK,WACL,IAAK,UAAe,CAClB,MAAO,MAAK,IASd,IAAK,SAAa,EAAG,CACf,GAAS,GACX,KAAK,GAAK,EAEV,GAAK,2CASR,CACD,IAAK,QACL,IAAK,UAAe,CAClB,MAAO,MAAK,IAQd,IAAK,SAAa,EAAG,CACnB,KAAK,GAAK,GAAM,KAQjB,CACD,IAAK,OACL,IAAK,UAAe,CAClB,MAAO,MAAK,SAAS,OAQtB,CACD,IAAK,WACL,IAAK,UAAe,CAClB,MAAO,MAAK,IAQd,IAAK,SAAa,EAAQ,CACxB,KAAK,GAAK,CAAC,CAAC,MAIT,KAGT,YAAc,EAAO,EAAY,EAAQ,CACvC,GAAI,GAAM,CAMR,MAAO,UAAiB,CACtB,KAAK,GAAK,IAQZ,KAAM,SAAc,EAAM,CACxB,GAAI,GAAQ,KAEP,EAAM,UACT,EAAC,EAAM,SAAS,mBAAqB,EAAM,UAC3C,KAAK,KAAO,EACZ,EAAO,KAAK,aAAc,KAAK,MAC/B,KAAK,YACL,EAAO,KAAK,MAAO,KAAK,MACxB,EAAW,WAAW,MAAM,UAAY,CAClC,EAAM,WACR,EAAO,KAAK,YAAa,EAAM,MAG7B,EAAM,SACR,EAAO,KAAK,UAAW,EAAM,MAG3B,EAAM,YACR,GAAM,GAAK,GACX,EAAO,KAAK,aAAc,EAAM,OAGlC,EAAO,KAAK,YAAa,EAAM,MAC/B,EAAM,aAUZ,UAAW,UAAqB,CAC9B,GAAI,GAAO,KAAK,KACZ,EAAS,KAAK,OACd,EAAQ,EAAK,MACb,EAAY,EAAK,UAEjB,EAAW,EAGf,GAAI,IAAc,IAAK,CAGrB,GAAI,EAAM,SAAS,OAAS,GAAM,GAAS,EAAQ,CACjD,EAAM,MAAQ,EACd,OAGF,EAAM,MAAQ,EACd,OAKF,GAAI,IAAc,KAAO,IAAU,IAAK,CACtC,EAAM,MAAQ,EACd,OAKF,GAAI,IAAc,KAAO,IAAU,IAAK,CACtC,EAAM,MAAQ,EACd,OASF,GALI,IAAc,KAChB,GAAW,EAAM,SAAS,SAAW,GAInC,IAAc,KAAO,IAAc,KAAO,IAAU,IAAK,CAC3D,GAAI,GAAQ,EAAsB,GAE9B,EAAQ,GACV,MAAK,GAAK,IAGZ,EAAM,MAAQ,EAAsB,EAAO,GAC3C,OAIF,GAAI,IAAc,KAAO,IAAc,KAAO,IAAU,IAAK,CAC3D,GAAI,GAAS,EAAuB,GAEhC,EAAS,GACX,MAAK,GAAK,IAGZ,EAAM,MAAQ,EAAuB,EAAQ,GAC7C,OAGF,GAAK,8BAA8B,OAAO,GAAW,OAAO,EAAO,qBAQrE,QAAS,UAAmB,CAC1B,MAAO,GAAM,OAAS,GAQxB,MAAO,UAAiB,CACtB,MAAO,GAAM,OAAS,KAAK,QAS7B,SAAU,UAAoB,CAC5B,GAAI,GAAY,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,OAEpF,MAAK,GAIA,KAAK,GAKN,IAAc,KACT,KAAK,KAAK,YAAc,KAAO,KAAK,KAAK,QAAU,IAIxD,IAAc,KACT,KAAK,KAAK,YAAc,KAAO,KAAK,KAAK,QAAU,IAGrD,KAAK,KAAK,YAAc,EAbtB,GAJA,KAAK,IAyBhB,QAAS,UAAmB,CAC1B,MAAO,GAAM,OAAO,WAAa,EAAM,SAAS,UAAY,UAAY,EAAM,SAAS,QAU3F,WAA+B,EAAU,CACvC,GAAI,GAAQ,EAAM,MAElB,MAAI,GAAM,OAAO,YACR,EAAQ,EAGV,EAAS,GAAW,EAAQ,GAYrC,WAA+B,EAAO,EAAU,CAC9C,GAAI,GAAS,EAAI,OAEjB,MAAI,IAAS,EACJ,EAGL,EAAM,OAAO,YACR,EAAS,GAAS,GAGvB,EAAM,SAAS,OAGb,EAAI,WAAa,CAAC,EAAI,QACjB,EAGF,EAGL,EAAI,UACC,EAGF,KAAK,MAAM,EAAS,GAAY,EAUzC,WAAgC,EAAU,CACxC,GAAI,GAAQ,EAAM,MAElB,GAAI,EAAM,OAAO,YACf,MAAO,GAAQ,EAKjB,GAAI,GAAO,KAAK,KAAK,EAAQ,GAC7B,MAAQ,GAAO,GAAK,EAYtB,WAAgC,EAAO,EAAU,CAC/C,GAAI,GAAS,EAAI,OAEjB,MAAI,IAAS,EACJ,EAGL,EAAM,OAAO,YACR,EAAS,GAAS,GAGvB,EAAM,SAAS,OAGb,EAAI,WAAa,EAAI,UAChB,EAGF,KAAK,MAAM,EAAS,GAAY,EAGlC,EAGT,SAAO,EAAK,OAAQ,CAMlB,IAAK,UAAe,CAClB,MAAO,MAAK,IAQd,IAAK,SAAa,EAAO,CACvB,GAAI,GAAO,EAAM,OAAO,GACxB,KAAK,GAAK,CACR,UAAW,EAAM,OAAO,EAAG,GAC3B,MAAO,EAAO,GAAM,GAAQ,GAAM,GAAQ,EAAO,MAIvD,EAAO,EAAK,SAAU,CAOpB,IAAK,UAAe,CAClB,GAAI,GAAW,EAAM,SACjB,EAAS,EAAW,KAAK,OAAO,OAIpC,MAAI,MAAK,UACA,EAAS,EAAK,IAAM,EAAS,SAAW,GAAK,GAAM,EAAS,SAG9D,EAAS,KAGpB,EAAO,EAAK,SAAU,CAMpB,IAAK,UAAe,CAClB,MAAO,MAAK,MAGT,EAQT,aAAe,CACb,MAAO,IAAI,QAAO,UAepB,YAAkB,EAAM,EAAM,CAC5B,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC9E,EAAS,EAAS,EAAM,EACxB,EAAW,EAEX,EAAQ,UAAiB,CAC3B,EAAW,EAAQ,UAAY,GAAQ,EAAI,KAC3C,EAAU,KACV,EAAS,EAAK,MAAM,EAAS,GACxB,GAAS,GAAU,EAAO,OAG7B,EAAY,UAAqB,CACnC,GAAI,GAAK,KACL,CAAC,GAAY,EAAQ,UAAY,IAAO,GAAW,GACvD,GAAI,GAAY,EAAQ,GAAK,GAC7B,SAAU,KACV,EAAO,UAEH,GAAa,GAAK,EAAY,EAC5B,IACF,cAAa,GACb,EAAU,MAGZ,EAAW,EACX,EAAS,EAAK,MAAM,EAAS,GACxB,GAAS,GAAU,EAAO,OACtB,CAAC,GAAW,EAAQ,WAAa,IAC1C,GAAU,WAAW,EAAO,IAGvB,GAGT,SAAU,OAAS,UAAY,CAC7B,aAAa,GACb,EAAW,EACX,EAAU,EAAU,EAAO,MAGtB,EAGT,GAAI,IAAc,CAChB,IAAK,CAAC,aAAc,eACpB,IAAK,CAAC,cAAe,eAEvB,YAAe,EAAO,EAAY,EAAQ,CACxC,GAAI,GAAO,CAQT,MAAO,SAAe,EAAQ,CAC5B,OAAS,GAAI,EAAG,EAAM,EAAO,OAAQ,EAAI,EAAK,IAAK,CACjD,GAAI,GAAQ,EAAO,GAAG,MAClB,EAAY,EAAW,UAAU,MAEjC,IAAM,EACR,EAAM,GAAY,GAAW,IAAM,GAAG,OAAO,KAAK,MAAQ,EAAG,MAE7D,EAAM,GAAY,GAAW,IAAM,GAGjC,IAAM,EAAO,OAAS,EACxB,EAAM,GAAY,GAAW,IAAM,GAAG,OAAO,KAAK,MAAQ,EAAG,MAE7D,EAAM,GAAY,GAAW,IAAM,KAWzC,OAAQ,SAAgB,EAAQ,CAC9B,OAAS,GAAI,EAAG,EAAM,EAAO,OAAQ,EAAI,EAAK,IAAK,CACjD,GAAI,GAAQ,EAAO,GAAG,MACtB,EAAM,WAAa,GACnB,EAAM,YAAc,MAI1B,SAAO,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,MAAO,IAAM,EAAM,SAAS,QAGhC,EAAO,EAAM,OAAQ,CAOnB,IAAK,UAAe,CAClB,MAAO,GAAK,MAAQ,EAAW,MAAM,UAGzC,EAAO,EAAM,WAAY,CAOvB,IAAK,UAAe,CAClB,GAAI,GAAU,EAAM,SAAS,QAC7B,MAAO,GAAK,MAAS,GAAU,GAAK,KASxC,EAAO,GAAG,CAAC,cAAe,UAAW,GAAS,UAAY,CACxD,EAAK,MAAM,EAAW,KAAK,QAAQ,WAClC,KAMH,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAK,OAAO,EAAW,KAAK,QAAQ,YAE/B,EAST,YAAkB,EAAM,CACtB,GAAI,GAAQ,EAAK,WAAY,CAI3B,OAHI,GAAI,EAAK,WAAW,WACpB,EAAU,GAEP,EAAG,EAAI,EAAE,YACV,EAAE,WAAa,GAAK,IAAM,GAC5B,EAAQ,KAAK,GAIjB,MAAO,GAGT,MAAO,GAST,YAAiB,EAAU,CACzB,MAAO,OAAM,UAAU,MAAM,KAAK,GAGpC,GAAI,IAAiB,0BACrB,YAAe,EAAO,EAAY,EAAQ,CACxC,GAAI,GAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,KAAO,EAAM,SAClB,KAAK,MAAQ,KAAK,KAAK,cAAc,IACrC,KAAK,iBAMP,cAAe,UAAyB,CACtC,KAAK,OAAS,GAAQ,KAAK,QAAQ,UAAU,OAAO,SAAU,EAAO,CACnE,MAAO,CAAC,EAAM,UAAU,SAAS,EAAM,SAAS,QAAQ,MAAM,WAIpE,SAAO,EAAM,OAAQ,CAMnB,IAAK,UAAe,CAClB,MAAO,GAAK,IAQd,IAAK,SAAa,EAAG,CACf,GAAS,IACX,GAAI,SAAS,cAAc,IAGzB,IAAM,KACR,EAAK,GAAK,EAEV,GAAK,gDAIX,EAAO,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,MAAO,GAAK,IAQd,IAAK,SAAa,EAAG,CACnB,EAAK,GAAK,KAGd,EAAO,EAAM,UAAW,CAMtB,IAAK,UAAe,CAClB,MAAO,GAAK,MAAM,SAAS,MAO/B,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAK,kBAEA,EAGT,YAAe,EAAO,EAAY,EAAQ,CACxC,GAAI,GAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,MAAQ,EAAM,SAAS,OAGhC,SAAO,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,MAAO,GAAK,IASd,IAAK,SAAa,EAAO,CACnB,GAAS,GACX,GAAM,OAAS,GAAM,EAAM,QAC3B,EAAM,MAAQ,GAAM,EAAM,QAE1B,EAAQ,GAAM,GAGhB,EAAK,GAAK,KAGd,EAAO,EAAM,WAAY,CAMvB,IAAK,UAAe,CAClB,GAAI,GAAQ,EAAK,MACb,EAAU,EAAM,SAAS,QAE7B,MAAI,IAAS,GACJ,EAAM,OAAS,EAAU,EAAM,MAAQ,EAGzC,EAAQ,EAAI,KAQvB,EAAO,GAAG,CAAC,SAAU,UAAW,UAAY,CAC1C,EAAK,UAEA,EAGT,YAAe,EAAO,EAAY,EAAQ,CACxC,GAAI,GAAO,CAMT,MAAO,UAAiB,CACtB,KAAK,GAAK,GASZ,KAAM,UAAgB,CACpB,GAAI,GAAQ,KAER,EAAS,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,EACjF,KAAK,OAAS,EACd,EAAO,KAAK,OAAQ,CAClB,SAAU,KAAK,QAEjB,EAAW,WAAW,MAAM,UAAY,CACtC,EAAO,KAAK,aAAc,CACxB,SAAU,EAAM,YAKxB,SAAO,EAAM,SAAU,CAMrB,IAAK,UAAe,CAClB,MAAO,GAAK,IAQd,IAAK,SAAa,EAAO,CACvB,EAAK,GAAM,EAAY,GAAwB,EAAf,GAAM,MAG1C,EAAO,EAAM,YAAa,CAMxB,IAAK,UAAe,CAClB,MAAO,GAAW,MAAM,WAAa,EAAM,SAG/C,EAAO,EAAM,QAAS,CAMpB,IAAK,UAAe,CAClB,GAAI,GAAS,KAAK,OACd,EAAY,KAAK,UAErB,MAAI,GAAW,UAAU,GAAG,OACnB,EAAY,EAGd,EAAY,KASvB,EAAO,GAAG,CAAC,eAAgB,OAAQ,UAAY,CAC7C,EAAK,SAEA,EAGT,YAAgB,EAAO,EAAY,EAAQ,CACzC,GAAI,GAAQ,CAMV,YAAa,UAAuB,CAIlC,OAHI,GAAQ,GAAG,OAAO,KAAK,WAAY,MACnC,EAAS,EAAW,KAAK,OAEpB,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAG,MAAM,MAAQ,GAS5B,aAAc,UAAwB,CACpC,EAAW,KAAK,QAAQ,MAAM,MAAQ,GAAG,OAAO,KAAK,YAAa,OAQpE,OAAQ,UAAkB,CAGxB,OAFI,GAAS,EAAW,KAAK,OAEpB,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAG,MAAM,MAAQ,GAG1B,EAAW,KAAK,QAAQ,MAAM,MAAQ,KAG1C,SAAO,EAAO,SAAU,CAMtB,IAAK,UAAe,CAClB,MAAO,GAAW,KAAK,OAAO,UAGlC,EAAO,EAAO,QAAS,CAMrB,IAAK,UAAe,CAClB,MAAO,GAAW,KAAK,MAAM,eAGjC,EAAO,EAAO,cAAe,CAM3B,IAAK,UAAe,CAClB,MAAO,GAAM,WAAa,EAAM,OAAS,EAAW,KAAK,KAAO,EAAW,OAAO,QAGtF,EAAO,EAAO,aAAc,CAM1B,IAAK,UAAe,CAClB,MAAO,GAAM,MAAQ,EAAM,SAAS,QAAU,EAAW,KAAK,SAAW,EAAW,KAAK,YAU7F,EAAO,GAAG,CAAC,eAAgB,SAAU,UAAW,UAAY,CAC1D,EAAM,cACN,EAAM,iBAOR,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAM,WAED,EAGT,YAAgB,EAAO,EAAY,EAAQ,CACzC,GAAI,GAAQ,CAOV,MAAO,UAAiB,CACtB,EAAO,KAAK,gBACZ,KAAK,YACL,KAAK,cACL,EAAO,KAAK,gBAQd,UAAW,UAAqB,CAC9B,EAAW,KAAK,KAAK,UAAU,IAAI,EAAM,SAAS,QAAQ,KAAK,EAAM,SAAS,QAQhF,YAAa,UAAuB,CAClC,GAAI,GAAU,EAAM,SAAS,QACzB,EAAQ,EAAW,KAAK,OAAO,EAAM,OAErC,GACF,GAAM,UAAU,IAAI,EAAQ,MAAM,QAClC,GAAS,GAAO,QAAQ,SAAU,EAAS,CACzC,EAAQ,UAAU,OAAO,EAAQ,MAAM,YAU7C,cAAe,UAAyB,CACtC,GAAI,GAAwB,EAAM,SAAS,QACvC,EAAO,EAAsB,KAC7B,EAAQ,EAAsB,MAClC,EAAW,KAAK,KAAK,UAAU,OAAO,EAAK,EAAM,SAAS,OAC1D,EAAW,KAAK,OAAO,QAAQ,SAAU,EAAS,CAChD,EAAQ,UAAU,OAAO,EAAM,YAUrC,SAAO,GAAG,CAAC,UAAW,UAAW,UAAY,CAC3C,EAAM,kBAQR,EAAO,GAAG,CAAC,SAAU,UAAW,UAAY,CAC1C,EAAM,UAOR,EAAO,GAAG,aAAc,UAAY,CAClC,EAAM,gBAED,EAGT,YAAiB,EAAO,EAAY,EAAQ,CAC1C,GAAI,GAAS,CAIX,MAAO,UAAiB,CACtB,KAAK,MAAQ,GAET,EAAM,OAAO,aACf,MAAK,MAAQ,KAAK,YAStB,QAAS,UAAmB,CAC1B,GAAI,GAAQ,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC5E,EAAS,EAAW,KAAK,OACzB,EAAkB,EAAM,SACxB,EAAU,EAAgB,QAC1B,EAAU,EAAgB,QAC1B,EAAe,EAAgB,aAEnC,GAAI,EAAO,OAAS,EAMlB,OALI,GAAkB,CAAC,CAAC,CAAC,EAAM,SAAS,KACpC,EAAa,EAAU,EAAkB,KAAK,MAAM,EAAU,GAC9D,EAAS,EAAO,MAAM,EAAG,GAAY,UACrC,EAAU,EAAO,MAAM,EAAa,IAE/B,EAAI,EAAG,EAAI,KAAK,IAAI,EAAc,KAAK,MAAM,EAAU,EAAO,SAAU,IAAK,CACpF,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,GAAI,GAAQ,EAAO,GAAG,UAAU,IAChC,EAAM,UAAU,IAAI,EAAQ,MAAM,OAClC,EAAM,KAAK,GAGb,OAAS,IAAK,EAAG,GAAK,EAAQ,OAAQ,KAAM,CAC1C,GAAI,IAAS,EAAQ,IAAI,UAAU,IAEnC,GAAO,UAAU,IAAI,EAAQ,MAAM,OAEnC,EAAM,QAAQ,KAKpB,MAAO,IAQT,OAAQ,UAAkB,CAUxB,OATI,GAAQ,KAAK,MACb,EAAmB,EAAW,KAC9B,EAAU,EAAiB,QAC3B,EAAS,EAAiB,OAC1B,EAAO,KAAK,MAAM,EAAM,OAAS,GACjC,EAAU,EAAM,MAAM,EAAG,GAAM,UAC/B,EAAS,EAAM,MAAM,EAAO,IAAI,UAChC,EAAQ,GAAG,OAAO,EAAW,MAAM,WAAY,MAE1C,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAQ,YAAY,EAAO,IAG7B,OAAS,GAAM,EAAG,EAAM,EAAQ,OAAQ,IACtC,EAAQ,aAAa,EAAQ,GAAM,EAAO,IAG5C,OAAS,GAAM,EAAG,EAAM,EAAM,OAAQ,IACpC,EAAM,GAAK,MAAM,MAAQ,GAS7B,OAAQ,UAAkB,CAGxB,OAFI,GAAQ,KAAK,MAER,EAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAW,KAAK,QAAQ,YAAY,EAAM,MAIhD,SAAO,EAAQ,OAAQ,CAMrB,IAAK,UAAe,CAClB,MAAQ,GAAW,MAAM,WAAa,EAAW,KAAK,OAAS,EAAO,MAAM,UAQhF,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAO,SACP,EAAO,QACP,EAAO,WAOT,EAAO,GAAG,eAAgB,UAAY,CAChC,EAAM,OAAO,aACf,EAAO,WAQX,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,WAEF,EAGT,GAAI,IAA4B,UAAY,CAI1C,YAAwB,CACtB,GAAI,GAAY,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAEpF,GAAgB,KAAM,GAEtB,KAAK,UAAY,EAanB,UAAa,EAAc,CAAC,CAC1B,IAAK,KACL,MAAO,SAAY,EAAQ,EAAI,EAAS,CACtC,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE9E,GAAS,IACX,GAAS,CAAC,IAGZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,KAAK,UAAU,EAAO,IAAM,EAC5B,EAAG,iBAAiB,EAAO,GAAI,KAAK,UAAU,EAAO,IAAK,KAY7D,CACD,IAAK,MACL,MAAO,SAAa,EAAQ,EAAI,CAC9B,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE9E,GAAS,IACX,GAAS,CAAC,IAGZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAG,oBAAoB,EAAO,GAAI,KAAK,UAAU,EAAO,IAAK,KAShE,CACD,IAAK,UACL,MAAO,UAAmB,CACxB,MAAO,MAAK,cAIT,KAGT,YAAiB,EAAO,EAAY,EAAQ,CAM1C,GAAI,GAAS,GAAI,IACb,EAAS,CAIX,MAAO,UAAiB,CACtB,KAAK,QASP,KAAM,UAAgB,CACpB,EAAO,GAAG,SAAU,OAAQ,GAAS,UAAY,CAC/C,EAAO,KAAK,WACX,EAAM,SAAS,YAQpB,OAAQ,UAAkB,CACxB,EAAO,IAAI,SAAU,UAQzB,SAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,SACP,EAAO,YAEF,EAGT,GAAI,IAAmB,CAAC,MAAO,OAC3B,GAAmB,CACrB,IAAK,IACL,IAAK,IACL,IAAK,KAEP,YAAoB,EAAO,EAAY,EAAQ,CAC7C,GAAI,GAAY,CAMd,MAAO,UAAiB,CACtB,KAAK,MAAQ,EAAM,SAAS,WAS9B,QAAS,SAAiB,EAAS,CACjC,GAAI,GAAQ,EAAQ,MAAM,EAAG,GAE7B,MAAI,MAAK,GAAG,OACH,EAAQ,MAAM,GAAO,KAAK,GAAiB,IAG7C,GAST,GAAI,SAAY,EAAW,CACzB,MAAO,MAAK,QAAU,GAQxB,SAAU,UAAoB,CAC5B,EAAW,KAAK,KAAK,UAAU,IAAI,EAAM,SAAS,QAAQ,UAAU,KAAK,SAQ3E,YAAa,UAAuB,CAClC,EAAW,KAAK,KAAK,UAAU,OAAO,EAAM,SAAS,QAAQ,UAAU,KAAK,UAGhF,SAAO,EAAW,QAAS,CAMzB,IAAK,UAAe,CAClB,MAAO,GAAU,IASnB,IAAK,SAAa,EAAO,CACnB,GAAiB,QAAQ,GAAS,GACpC,EAAU,GAAK,EAEf,GAAK,6CAUX,EAAO,GAAG,CAAC,UAAW,UAAW,UAAY,CAC3C,EAAU,gBAOZ,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAU,UAQZ,EAAO,GAAG,CAAC,eAAgB,UAAW,UAAY,CAChD,EAAU,aAEL,EAUT,YAAc,EAAO,EAAY,CAC/B,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,MAAI,GAAW,UAAU,GAAG,OACnB,CAAC,EAGH,IAYb,YAAc,EAAO,EAAY,CAC/B,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,GAAI,GAAa,KAAK,MAAM,EAAY,EAAW,MAAM,YACzD,MAAO,GAAY,EAAW,KAAK,MAAQ,IAYjD,YAAe,EAAO,EAAY,CAChC,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,MAAO,GAAY,EAAW,OAAO,KAAO,IAalD,YAAkB,EAAO,EAAY,CACnC,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,GAAI,EAAM,SAAS,SAAW,EAAG,CAC/B,GAAI,GAAO,EAAW,KAAK,MAE3B,MAAI,IAAS,GACJ,EAAY,EAAK,OAGnB,EAAY,EAGrB,MAAO,KAYb,YAAmB,EAAO,EAAY,CACpC,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,GAAI,GAAM,EAAW,KAAK,MACtB,EAAQ,EAAW,MAAM,MACzB,EAAU,EAAM,SAAS,QACzB,EAAa,EAAW,MAAM,WAElC,MAAI,KAAY,SACP,EAAa,GAAQ,EAAI,EAAa,GAGxC,EAAY,EAAa,EAAU,EAAM,IAatD,YAAkB,EAAO,EAAY,EAAQ,CAQ3C,GAAI,GAAe,CAAC,GAAK,GAAM,GAAS,IAAU,OAAO,EAAM,GAAI,CAAC,KACpE,MAAO,CAOL,OAAQ,SAAgB,EAAW,CACjC,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,IAAK,CAC5C,GAAI,GAAc,EAAa,GAE3B,EAAW,IAAgB,EAAW,IAAc,QACtD,EAAY,EAAY,EAAO,EAAY,GAAQ,OAAO,GAE1D,GAAK,kFAIT,MAAO,KAKb,YAAoB,EAAO,EAAY,EAAQ,CAC7C,GAAI,GAAY,CAOd,IAAK,SAAa,EAAO,CACvB,GAAI,GAAY,GAAQ,EAAO,GAAY,OAAO,GAC9C,EAAc,eAAe,OAAO,GAAK,EAAW,iBACxD,EAAW,KAAK,QAAQ,MAAM,aAAe,EAE7C,EAAW,KAAK,QAAQ,MAAM,gBAAkB,EAEhD,EAAW,KAAK,QAAQ,MAAM,UAAY,GAQ5C,OAAQ,UAAkB,CACxB,EAAW,KAAK,QAAQ,MAAM,UAAY,IAM5C,cAAe,UAAyB,CACtC,GAAI,GAAS,EAAW,MAAM,OAC1B,EAAQ,EAAM,MACd,EAAU,EAAM,SAAS,QAE7B,MAAI,GAAW,IAAI,SAAS,MAAQ,EAAW,IAAI,SAAS,MACnD,EAAU,GAAQ,GAInB,GAAQ,GAAW,GAM7B,kBAAmB,UAA6B,CAC9C,GAAI,GAAiB,EAAW,MAAM,WAAa,EAAM,SAAS,QAElE,MAAI,GAAW,IAAI,SAAS,MAAQ,EAAW,IAAI,SAAS,MAEnD,EAAiB,GAGnB,IASX,SAAO,GAAG,OAAQ,SAAU,EAAS,CACnC,GAAI,CAAC,EAAM,OAAO,aAAe,CAAC,EAAW,IAAI,WAC/C,MAAO,GAAU,IAAI,EAAQ,UAG/B,EAAW,WAAW,MAAM,UAAY,CACtC,EAAO,KAAK,kBACZ,EAAU,IAAI,EAAW,MAAM,WAAa,EAAM,SAEpD,GAAI,GAAa,EAAW,MAAM,WAAa,EAAW,UAAU,gBACpE,MAAO,GAAU,IAAI,EAAa,EAAW,UAAU,uBAOzD,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAU,WAEL,EAGT,YAAqB,EAAO,EAAY,EAAQ,CAO9C,GAAI,GAAW,GACX,EAAa,CAOf,QAAS,SAAiB,EAAU,CAClC,GAAI,GAAW,EAAM,SAErB,MAAI,GACK,GAAG,OAAO,EAAU,SAAS,OAAO,EAAS,qBAG/C,GAAG,OAAO,EAAU,KAAK,OAAO,KAAK,SAAU,OAAO,OAAO,EAAS,sBAS/E,IAAK,UAAe,CAClB,GAAI,GAAW,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,YACnF,EAAW,KAAK,QAAQ,MAAM,WAAa,KAAK,QAAQ,IAQ1D,OAAQ,UAAkB,CACxB,EAAW,KAAK,QAAQ,MAAM,WAAa,IAS7C,MAAO,SAAe,EAAU,CAC9B,WAAW,UAAY,CACrB,KACC,KAAK,WAQV,OAAQ,UAAkB,CACxB,EAAW,GACX,KAAK,OAQP,QAAS,UAAmB,CAC1B,EAAW,GACX,KAAK,QAGT,SAAO,EAAY,WAAY,CAO7B,IAAK,UAAe,CAClB,GAAI,GAAW,EAAM,SAErB,MAAI,GAAM,OAAO,WAAa,EAAW,IAAI,OACpC,EAAS,eAGX,EAAS,qBAQpB,EAAO,GAAG,OAAQ,UAAY,CAC5B,EAAW,QASb,EAAO,GAAG,CAAC,eAAgB,SAAU,kBAAmB,UAAY,CAClE,EAAW,YAOb,EAAO,GAAG,MAAO,UAAY,CAC3B,EAAW,WAOb,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAW,WAEN,EAST,GAAI,IAAkB,GAEtB,GAAI,CACF,GAAI,IAAO,OAAO,eAAe,GAAI,UAAW,CAC9C,IAAK,UAAe,CAClB,GAAkB,MAGtB,OAAO,iBAAiB,cAAe,KAAM,IAC7C,OAAO,oBAAoB,cAAe,KAAM,SAChD,EAEF,GAAI,IAAoB,GAEpB,GAAe,CAAC,aAAc,aAC9B,GAAc,CAAC,YAAa,aAC5B,GAAa,CAAC,WAAY,cAAe,UAAW,cACpD,GAAe,CAAC,YAAa,YAAa,UAAW,cACzD,YAAgB,EAAO,EAAY,EAAQ,CAMzC,GAAI,GAAS,GAAI,IACb,EAAW,EACX,EAAc,EACd,EAAc,EACd,EAAW,GACX,EAAU,GAAoB,CAChC,QAAS,IACP,GACA,EAAQ,CAMV,MAAO,UAAiB,CACtB,KAAK,kBASP,MAAO,SAAe,EAAO,CAC3B,GAAI,CAAC,GAAY,CAAC,EAAM,SAAU,CAChC,KAAK,UACL,GAAI,GAAQ,KAAK,QAAQ,GACzB,EAAW,KACX,EAAc,GAAM,EAAM,OAC1B,EAAc,GAAM,EAAM,OAC1B,KAAK,gBACL,KAAK,eACL,EAAO,KAAK,iBAShB,KAAM,SAAc,EAAO,CACzB,GAAI,CAAC,EAAM,SAAU,CACnB,GAAI,GAAkB,EAAM,SACxB,EAAa,EAAgB,WAC7B,EAAa,EAAgB,WAC7B,EAAU,EAAgB,QAC1B,EAAQ,KAAK,QAAQ,GACrB,EAAU,GAAM,EAAM,OAAS,EAC/B,GAAU,GAAM,EAAM,OAAS,EAC/B,GAAQ,KAAK,IAAI,GAAW,GAC5B,EAAQ,KAAK,IAAI,IAAW,GAC5B,GAAkB,KAAK,KAAK,GAAQ,GACpC,GAAgB,KAAK,KAAK,GAG9B,GAFA,EAAW,KAAK,KAAK,GAAgB,IAEjC,EAAW,IAAM,KAAK,GAAK,EAC7B,EAAM,kBACN,EAAW,KAAK,KAAK,EAAU,GAAQ,IACvC,EAAW,KAAK,KAAK,UAAU,IAAI,EAAQ,UAC3C,EAAO,KAAK,kBAEZ,OAAO,KAWb,IAAK,SAAa,EAAO,CACvB,GAAI,CAAC,EAAM,SAAU,CACnB,GAAI,GAAmB,EAAM,SACzB,EAAW,EAAiB,SAC5B,EAAa,EAAiB,WAC9B,EAAU,EAAiB,QAC3B,EAAQ,KAAK,QAAQ,GACrB,EAAY,KAAK,UAAU,GAC3B,GAAgB,EAAM,MAAQ,EAC9B,GAAW,EAAW,IAAM,KAAK,GACrC,KAAK,SAED,GAAgB,GAAa,GAAW,EAC1C,EAAW,IAAI,KAAK,EAAW,UAAU,QAAQ,GAAG,OAAO,EAAU,OAC5D,GAAgB,CAAC,GAAa,GAAW,EAClD,EAAW,IAAI,KAAK,EAAW,UAAU,QAAQ,GAAG,OAAO,EAAU,OAGrE,EAAW,KAAK,OAGlB,EAAW,KAAK,KAAK,UAAU,OAAO,EAAQ,UAC9C,KAAK,kBACL,KAAK,iBACL,EAAO,KAAK,eAShB,eAAgB,UAA0B,CACxC,GAAI,GAAQ,KAER,EAAmB,EAAM,SACzB,EAAiB,EAAiB,eAClC,EAAgB,EAAiB,cAEjC,GACF,EAAO,GAAG,GAAa,GAAI,EAAW,KAAK,QAAS,SAAU,EAAO,CACnE,EAAM,MAAM,IACX,GAGD,GACF,EAAO,GAAG,GAAa,GAAI,EAAW,KAAK,QAAS,SAAU,EAAO,CACnE,EAAM,MAAM,IACX,IASP,iBAAkB,UAA4B,CAC5C,EAAO,IAAI,GAAa,GAAI,EAAW,KAAK,QAAS,GACrD,EAAO,IAAI,GAAa,GAAI,EAAW,KAAK,QAAS,IAQvD,cAAe,UAAyB,CACtC,GAAI,GAAS,KAEb,EAAO,GAAG,GAAa,EAAW,KAAK,QAAS,GAAS,SAAU,EAAO,CACxE,EAAO,KAAK,IACX,EAAM,SAAS,UAAW,IAQ/B,gBAAiB,UAA2B,CAC1C,EAAO,IAAI,GAAa,EAAW,KAAK,QAAS,IAQnD,aAAc,UAAwB,CACpC,GAAI,GAAS,KAEb,EAAO,GAAG,GAAY,EAAW,KAAK,QAAS,SAAU,EAAO,CAC9D,EAAO,IAAI,MASf,eAAgB,UAA0B,CACxC,EAAO,IAAI,GAAY,EAAW,KAAK,UAQzC,QAAS,SAAiB,EAAO,CAC/B,MAAI,IAAa,QAAQ,EAAM,MAAQ,GAC9B,EAGF,EAAM,QAAQ,IAAM,EAAM,eAAe,IAQlD,UAAW,SAAmB,EAAO,CACnC,GAAI,GAAW,EAAM,SAErB,MAAI,IAAa,QAAQ,EAAM,MAAQ,GAC9B,EAAS,cAGX,EAAS,gBAQlB,OAAQ,UAAkB,CACxB,SAAW,GACX,EAAW,WAAW,SACf,MAQT,QAAS,UAAmB,CAC1B,SAAW,GACX,EAAW,WAAW,UACf,OAQX,SAAO,GAAG,cAAe,UAAY,CACnC,EAAW,KAAK,KAAK,UAAU,IAAI,EAAM,SAAS,QAAQ,aAO5D,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAM,mBACN,EAAM,kBACN,EAAM,iBACN,EAAO,YAEF,EAGT,YAAiB,EAAO,EAAY,EAAQ,CAM1C,GAAI,GAAS,GAAI,IACb,EAAS,CAMX,MAAO,UAAiB,CACtB,KAAK,QAQP,KAAM,UAAgB,CACpB,EAAO,GAAG,YAAa,EAAW,KAAK,QAAS,KAAK,YAQvD,OAAQ,UAAkB,CACxB,EAAO,IAAI,YAAa,EAAW,KAAK,UAQ1C,UAAW,SAAmB,EAAO,CACnC,EAAM,mBAQV,SAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,SACP,EAAO,YAEF,EAGT,YAAkB,EAAO,EAAY,EAAQ,CAM3C,GAAI,GAAS,GAAI,IASb,EAAW,GASX,EAAY,GACZ,EAAU,CAMZ,MAAO,UAAiB,CAOtB,KAAK,GAAK,EAAW,KAAK,QAAQ,iBAAiB,KACnD,KAAK,QAQP,KAAM,UAAgB,CACpB,EAAO,GAAG,QAAS,EAAW,KAAK,QAAS,KAAK,QAQnD,OAAQ,UAAkB,CACxB,EAAO,IAAI,QAAS,EAAW,KAAK,UAStC,MAAO,SAAe,EAAO,CACvB,GACF,GAAM,kBACN,EAAM,mBASV,OAAQ,UAAkB,CAGxB,GAFA,EAAY,GAER,CAAC,EAAU,CACb,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,IACrC,KAAK,MAAM,GAAG,UAAY,GAG5B,EAAW,GAGb,MAAO,OAQT,OAAQ,UAAkB,CAGxB,GAFA,EAAY,GAER,EAAU,CACZ,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,IACrC,KAAK,MAAM,GAAG,UAAY,GAG5B,EAAW,GAGb,MAAO,QAGX,SAAO,EAAS,QAAS,CAMvB,IAAK,UAAe,CAClB,MAAO,GAAQ,MAQnB,EAAO,GAAG,aAAc,UAAY,CAClC,EAAQ,WAOV,EAAO,GAAG,YAAa,UAAY,CACjC,EAAW,WAAW,MAAM,UAAY,CACtC,EAAQ,aAQZ,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAQ,SACR,EAAQ,SACR,EAAO,YAEF,EAGT,GAAI,IAAe,kCACf,GAAoB,8BACpB,GAA6B,GAAG,OAAO,GAAmB,0BAC1D,GAAyB,GAAG,OAAO,GAAmB,0BAC1D,YAAmB,EAAO,EAAY,EAAQ,CAM5C,GAAI,GAAS,GAAI,IACb,EAAU,GAAoB,CAChC,QAAS,IACP,GACA,EAAW,CAOb,MAAO,UAAiB,CAOtB,KAAK,GAAK,EAAW,KAAK,KAAK,iBAAiB,IAQhD,KAAK,GAAK,EAAW,KAAK,KAAK,iBAAiB,IAQhD,KAAK,eAAiB,CACpB,SAAU,EAAW,KAAK,KAAK,iBAAiB,IAChD,KAAM,EAAW,KAAK,KAAK,iBAAiB,KAE9C,KAAK,eAQP,UAAW,UAAqB,CAC9B,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,IAClC,KAAK,SAAS,KAAK,GAAG,GAAG,WAS7B,aAAc,UAAwB,CACpC,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,IAClC,KAAK,YAAY,KAAK,GAAG,GAAG,WAUhC,SAAU,SAAkB,EAAU,CACpC,GAAI,GAAW,EAAM,SACjB,EAAO,EAAS,EAAM,OAEtB,CAAC,GAIL,GAAK,UAAU,IAAI,EAAS,QAAQ,IAAI,QACxC,GAAS,GAAM,QAAQ,SAAU,EAAS,CACxC,EAAQ,UAAU,OAAO,EAAS,QAAQ,IAAI,YAUlD,YAAa,SAAqB,EAAU,CAC1C,GAAI,GAAO,EAAS,EAAM,OAC1B,GAAS,MAAmC,EAAK,UAAU,OAAO,EAAM,SAAS,QAAQ,IAAI,SAM/F,cAAe,UAAyB,CACtC,GAAI,GAAM,SAAS,OAInB,IAAI,GAAO,EAAS,eAAe,KAC/B,EAAW,EAAS,eAAe,SACvC,KAAK,gBAAgB,EAAM,GAEvB,EAAM,QAAU,GAClB,KAAK,aAAa,GAGhB,EAAM,QAAU,EAAW,IAAI,QACjC,KAAK,aAAa,KAStB,gBAAiB,UAA2B,CAG1C,OAFI,GAAW,EAAM,SAEZ,EAAO,UAAU,OAAQ,EAAQ,GAAI,OAAM,GAAO,EAAO,EAAG,EAAO,EAAM,IAChF,EAAM,GAAQ,UAAU,GAG1B,EAAM,QAAQ,SAAU,EAAM,CAC5B,GAAQ,GAAM,QAAQ,SAAU,EAAS,CACvC,EAAQ,UAAU,OAAO,EAAS,QAAQ,MAAM,eAUtD,aAAc,UAAwB,CAGpC,OAFI,GAAW,EAAM,SAEZ,EAAQ,UAAU,OAAQ,EAAQ,GAAI,OAAM,GAAQ,EAAQ,EAAG,EAAQ,EAAO,IACrF,EAAM,GAAS,UAAU,GAG3B,EAAM,QAAQ,SAAU,EAAM,CAC5B,GAAQ,GAAM,QAAQ,SAAU,EAAS,CACvC,EAAQ,UAAU,IAAI,EAAS,QAAQ,MAAM,eAUnD,YAAa,UAAuB,CAClC,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,IAClC,KAAK,KAAK,KAAK,GAAG,GAAG,WASzB,eAAgB,UAA0B,CACxC,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,IAClC,KAAK,OAAO,KAAK,GAAG,GAAG,WAU3B,KAAM,SAAc,EAAU,CAC5B,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAO,GAAG,QAAS,EAAS,GAAI,KAAK,OACrC,EAAO,GAAG,aAAc,EAAS,GAAI,KAAK,MAAO,IAUrD,OAAQ,SAAgB,EAAU,CAChC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAO,IAAI,CAAC,QAAS,cAAe,EAAS,KAYjD,MAAO,SAAe,EAAO,CACvB,CAAC,IAAqB,EAAM,OAAS,cACvC,EAAM,iBAGR,GAAI,GAAY,EAAM,cAAc,aAAa,kBACjD,EAAW,IAAI,KAAK,EAAW,UAAU,QAAQ,MAGrD,SAAO,EAAU,QAAS,CAMxB,IAAK,UAAe,CAClB,MAAO,GAAS,MASpB,EAAO,GAAG,CAAC,cAAe,cAAe,UAAY,CACnD,EAAS,cAMX,EAAO,GAAG,CAAC,cAAe,OAAQ,UAAY,CAC5C,EAAS,kBAOX,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAS,iBACT,EAAS,eACT,EAAO,YAEF,EAGT,YAAmB,EAAO,EAAY,EAAQ,CAM5C,GAAI,GAAS,GAAI,IACb,EAAW,CAMb,MAAO,UAAiB,CAClB,EAAM,SAAS,UACjB,KAAK,QAST,KAAM,UAAgB,CACpB,EAAO,GAAG,QAAS,SAAU,KAAK,QAQpC,OAAQ,UAAkB,CACxB,EAAO,IAAI,QAAS,WAStB,MAAO,SAAe,EAAO,CAC3B,GAAI,GAAW,EAAM,SAAS,SAC1B,EAAe,CACjB,WAAY,IACZ,UAAW,KAGT,CAAC,aAAc,aAAa,SAAS,EAAM,OAC7C,EAAW,IAAI,KAAK,EAAW,UAAU,QAAQ,GAAG,OAAO,GAAU,OAAO,EAAa,EAAM,WAUrG,SAAO,GAAG,CAAC,UAAW,UAAW,UAAY,CAC3C,EAAS,WAOX,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAS,UAOX,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,YAEF,EAGT,YAAmB,EAAO,EAAY,EAAQ,CAM5C,GAAI,GAAS,GAAI,IACb,EAAW,CAMb,MAAO,UAAiB,CACtB,KAAK,SACL,KAAK,QAED,EAAM,SAAS,YACjB,KAAK,QAST,OAAQ,UAAkB,CACxB,KAAK,GAAK,IAQZ,QAAS,UAAmB,CAC1B,KAAK,GAAK,IASZ,MAAO,UAAiB,CACtB,GAAI,GAAQ,KAER,CAAC,KAAK,IAIV,MAAK,SAED,EAAM,SAAS,UACb,EAAY,KAAK,KACnB,MAAK,GAAK,YAAY,UAAY,CAChC,EAAM,OAEN,EAAW,IAAI,KAAK,KAEpB,EAAM,QAEN,EAAO,KAAK,aACX,KAAK,SAUd,KAAM,UAAgB,CACpB,KAAK,GAAK,cAAc,KAAK,KAQ/B,KAAM,UAAgB,CACpB,GAAI,GAAS,KAEb,EAAO,GAAG,YAAa,EAAW,KAAK,KAAM,UAAY,CACnD,EAAO,IACT,EAAO,SAGX,EAAO,GAAG,WAAY,EAAW,KAAK,KAAM,UAAY,CAClD,EAAO,IACT,EAAO,WAUb,OAAQ,UAAkB,CACxB,EAAO,IAAI,CAAC,YAAa,YAAa,EAAW,KAAK,QAG1D,SAAO,EAAU,OAAQ,CAOvB,IAAK,UAAe,CAClB,GAAI,GAAW,EAAW,KAAK,OAAO,EAAM,OAAO,aAAa,uBAEhE,MACS,IADL,GAIS,EAAM,SAAS,aAShC,EAAO,GAAG,CAAC,UAAW,UAAW,UAAY,CAC3C,EAAS,WAWX,EAAO,GAAG,CAAC,aAAc,cAAe,UAAW,UAAY,CAC7D,EAAS,SAEX,EAAO,GAAG,CAAC,QAAS,WAAY,UAAY,CAC1C,EAAS,UACT,EAAS,SASX,EAAO,GAAG,CAAC,YAAa,aAAc,UAAY,CAChD,EAAS,UASX,EAAO,GAAG,CAAC,QAAS,UAAY,CAC9B,EAAS,SACT,EAAS,UAOX,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAS,UAOX,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,YAEF,EAUT,YAAyB,EAAQ,CAC/B,MAAI,IAAS,GACJ,EAAS,GAEhB,IAAK,wCAGA,IAGT,YAAsB,EAAO,EAAY,EAAQ,CAM/C,GAAI,GAAS,GAAI,IAOb,EAAW,EAAM,SASjB,EAAS,GAAgB,EAAS,aAOlC,EAAW,OAAO,OAAO,GAAI,GAC7B,EAAc,CAOhB,MAAO,SAAe,EAAQ,CAC5B,GAAI,MAAO,QAAO,YAAe,aAC/B,OAAS,KAAS,GAChB,GAAI,EAAO,eAAe,IACpB,OAAO,WAAW,eAAe,OAAO,EAAO,QAAQ,QACzD,MAAO,GAAO,GAMtB,MAAO,KAQX,cAAO,OAAO,EAAU,EAAY,MAAM,IAM1C,EAAO,GAAG,SAAU,OAAQ,GAAS,UAAY,CAC/C,EAAM,SAAW,EAAa,EAAU,EAAY,MAAM,KACzD,EAAM,SAAS,WAMlB,EAAO,GAAG,SAAU,UAAY,CAC9B,EAAS,GAAgB,GACzB,EAAW,OAAO,OAAO,GAAI,KAO/B,EAAO,GAAG,UAAW,UAAY,CAC/B,EAAO,IAAI,SAAU,UAEhB,EAGT,GAAI,IAAa,CAEf,KAAM,GACN,UAAW,GACX,WAAY,GACZ,UAAW,GACX,KAAM,GACN,MAAO,GACP,KAAM,GACN,KAAM,GACN,OAAQ,GACR,OAAQ,GACR,MAAO,GACP,IAAK,GAEL,MAAO,GACP,OAAQ,GACR,QAAS,GACT,SAAU,GACV,SAAU,GACV,SAAU,GACV,YAAa,IAGX,GAAqB,SAAU,EAAO,CACxC,GAAU,EAAO,GAEjB,GAAI,GAAS,GAAa,GAE1B,YAAiB,CACf,UAAgB,KAAM,GAEf,EAAO,MAAM,KAAM,WAG5B,UAAa,EAAO,CAAC,CACnB,IAAK,QACL,MAAO,UAAiB,CACtB,GAAI,GAAa,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GACrF,MAAO,IAAK,GAAgB,EAAM,WAAY,QAAS,MAAM,KAAK,KAAM,OAAO,OAAO,GAAI,GAAY,QAInG,GACP,IC/yHF,GAAgB,GAA2B,CACzC,KAAM,CAAE,aAAc,OAGhB,EAAiB,IAAM,CAC3B,KAAM,GAAS,SAAS,iBAA8B,mBACtD,GAAI,GAAY,EAEhB,EAAO,QAAS,GAAU,CACxB,KAAM,GAAc,EAAM,aACtB,EAAc,GAChB,GAAY,KAIhB,EAAO,QAAS,GAAU,CAExB,EAAM,MAAM,OAAS,GAAG,SAKtB,EAAc,GAAkB,CACpC,OAAO,SAAS,KAAO,SAAS,EAAQ,KAIpC,EAAwB,IAAc,CAC1C,KAAM,CAAE,QAAS,OAAO,SACxB,GAAI,EAAM,CACR,KAAM,GAAQ,SAAS,EAAK,QAAQ,UAAW,IAAK,IAAM,EAC1D,MAAO,QAAO,MAAM,GAAS,EAAI,EAEnC,MAAO,IAIH,EAAuB,GAAwB,CAEnD,EAD6B,iBAAiB,iBACnC,QAAQ,CAAC,EAAY,IAAU,CACxC,KAAM,GAAQ,EAAW,cAAgC,SACrD,GACF,CAAI,IAAU,EACZ,EAAM,OAGN,EAAM,YAAc,MAOtB,EAAkB,IAAM,CAC5B,KAAM,GAAc,EAAU,cAA2B,yBACzD,GAAI,EAAa,CACf,KAAM,GAAgB,EAAY,QAAQ,cACtC,GACF,EAAU,KAAK,KAAK,MAAM,MAM1B,EAAmB,IAAM,OAAO,YAAc,IAE9C,EAAS,EAAU,iBAAiB,mBAG1C,GAAI,KAAsB,EAAO,OAAS,EAAG,CAC3C,KAAM,GAAQ,GAAI,IAAM,EAAW,CACjC,KAAM,WACN,IAAK,GACL,KAAM,GACN,QAAS,MAGX,EAAM,GAAG,aAAc,IAAM,CAC3B,EAAW,EAAM,OACjB,EAAoB,EAAM,SAG5B,EAAM,GAAG,YAAa,IAAM,CAC1B,MAGF,EAAM,QAEN,IACA,OAAO,iBAAiB,SAAU,IAAM,CAClC,IACF,IAGA,EAAO,QAAS,GAAU,CACxB,KAAM,GAAe,EACrB,EAAa,MAAM,OAAS,OAMlC,EAAoB,aACX,EAAO,QAAU,EAAG,CAC7B,KAAM,GAAe,EAAU,cAAc,UACzC,GACF,EAAa,UAAU,IAAI,OAE7B,KAAM,GAAiB,EAAU,cAAc,mBAC3C,GACF,EAAe,UAAU,IAAI,UAE/B,KAAM,GAAgB,EAAU,cAAc,kBAC1C,GACF,EAAc,UAAU,IAAI,UAE9B,EAAU,UAAU,IAAI,WC1G5B,GANuB,GAAY,CAC7B,EAAQ,QAAQ,YAClB,GAAQ,KAAO,EAAQ,QAAQ,a,oWCmBnC,KAAM,IAAe,CAAC,CAAE,cAAa,cAA8C,CACjF,KAAM,CACJ,WACA,OACA,aACA,YACA,UACA,SACA,OAAO,SACP,SACA,SACA,cACE,EAEE,EAAU,KAAU,MAAO,QAAQ,IAAY,CACnD,gBAAiB,EACjB,eAAgB,EAChB,gBAAiB,CAAC,CAAC,EACnB,gBAAiB,CAAC,CAAC,IAGf,EAAgB,IAAY,CAC5B,GAAc,GAElB,KAGF,MAAI,GAEA,qBAAG,UAAW,EAAS,KAAM,EAAM,OAAQ,EAAQ,QAAS,GACzD,GAML,0BACE,UAAW,EACX,SAAU,EAEV,KAAM,EACN,QAAS,EAAa,cACT,GAEZ,IAiBP,OAZiC,GAAwB,C,GAAxB,CAAE,SAAK,EAAK,EAAK,KAAjB,WAC/B,MACE,iBAAC,GAAY,CAAC,YAAa,GACxB,IAAK,YAAL,EAAO,SAAU,gBAAC,GAAO,CAAC,KAAM,EAAM,OAAQ,UAAU,gBAEzD,4BAAO,GAEN,IAAK,YAAL,EAAO,SAAU,gBAAC,GAAO,CAAC,KAAM,EAAM,OAAQ,UAAU,kBCnE/D,KAAM,IAAU,iBACV,GAAY,mBA2DlB,OAzD+B,CAAC,CAC9B,OAAO,GAAU,KACjB,QACA,OACA,YAAY,GACZ,YACA,cAAc,IACd,oBACI,CACJ,KAAM,GAAa,IACb,IAAS,GAAU,KAAa,GAChC,IAAS,GAAU,QAAgB,WACnC,IAAS,GAAU,MAAc,WACjC,IAAS,GAAU,QAAgB,wBAChC,GAGH,EAAc,IACd,IAAS,GAAU,KAAa,GAChC,IAAS,GAAU,QAAgB,kBACnC,IAAS,GAAU,MAAc,aACjC,IAAS,GAAU,QAAgB,eAChC,GAGH,EAAe,IACf,IAAS,GAAU,KAAa,eAChC,IAAS,GAAU,SACnB,IAAS,GAAU,MAAc,qBACjC,IAAS,GAAU,QAAgB,oBAChC,GAGH,EAAW,IACX,IAAS,GAAU,MACnB,IAAS,GAAU,SACnB,IAAS,GAAU,OACnB,IAAS,GAAU,QAAgB,EAChC,GAGT,MACE,sCACe,SAAS,IACtB,UAAW,+BACT,EAAY,MAAQ,eAClB,OAAgB,KAEpB,gBAAC,GAAO,CAAC,KAAM,IAAe,UAAW,yBAAyB,QAClE,qCAAK,UAAU,uBAA0B,GACtC,GAAS,wBAAM,UAAU,kBAAkB,I,KAC3C,KC41BT,GAx5BiC,CAAC,CAAE,OAAM,YAAW,mBAAoB,CACvE,OAAQ,OAOD,mBACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,qOAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,yFAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,iNAKL,kBACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,iTACF,KAAK,YAEP,wBACE,SAAS,UACT,SAAS,UACT,EAAE,8DACF,KAAK,YAEP,wBACE,SAAS,UACT,SAAS,UACT,EAAE,uCACF,KAAK,YAEP,wBACE,SAAS,UACT,SAAS,UACT,EAAE,8KACF,KAAK,iBAKR,aACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,+qDAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,8KAKL,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,wBACE,SAAS,UACT,SAAS,UACT,EAAE,4VACF,KAAK,YAEP,wBACE,SAAS,UACT,SAAS,UACT,EAAE,8JACF,KAAK,iBAWR,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oOACF,KAAK,YACJ,IACH,wBACE,EAAE,gGACF,KAAK,YACJ,IACH,wBACE,EAAE,4HACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,uLACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,wNACF,KAAK,YACJ,IACH,wBACE,EAAE,4HACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,kHACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBAAM,EAAE,8DAA8D,KAAK,YAAa,KACrF,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,qHACF,KAAK,YACJ,IACH,wBACE,EAAE,2HACF,KAAK,YACJ,IACH,wBACE,EAAE,gPACF,KAAK,YACJ,IACH,wBACE,EAAE,2IACF,KAAK,YACJ,IACH,wBACE,EAAE,kIACF,KAAK,YACJ,IACH,wBACE,EAAE,iPACF,KAAK,YACJ,IACH,wBACE,EAAE,kPACF,KAAK,YACJ,IACH,wBACE,EAAE,kPACF,KAAK,YACJ,IACH,wBACE,EAAE,mPACF,KAAK,YACJ,IACH,wBACE,EAAE,kPACF,KAAK,YACJ,IACH,wBACE,EAAE,sJACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,qOACF,KAAK,YACJ,IACH,wBACE,EAAE,4HACF,KAAK,YACJ,IACH,wBACE,EAAE,uGACF,KAAK,YACJ,IACH,wBACE,EAAE,kGACF,KAAK,YACJ,IACH,wBACE,EAAE,oGACF,KAAK,YACJ,IACH,wBACE,EAAE,0EACF,KAAK,YACJ,IACH,wBACE,EAAE,2SACF,KAAK,YACJ,IACH,wBAAM,EAAE,oDAAoD,KAAK,YAAa,IAC9E,wBAAM,EAAE,iDAAiD,KAAK,YAAa,IAC3E,wBAAM,EAAE,oDAAoD,KAAK,YAAa,IAC9E,wBAAM,EAAE,mDAAmD,KAAK,YAAa,IAC7E,wBAAM,EAAE,kDAAkD,KAAK,YAAa,IAC5E,wBAAM,EAAE,oDAAoD,KAAK,YAAa,IAC9E,wBAAM,EAAE,mDAAmD,KAAK,YAAa,IAC7E,wBAAM,EAAE,iDAAiD,KAAK,YAAa,IAC3E,wBAAM,EAAE,oDAAoD,KAAK,YAAa,IAC9E,wBAAM,EAAE,kDAAkD,KAAK,YAAa,IAC5E,wBAAM,EAAE,iDAAiD,KAAK,YAAa,IAC3E,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,yFACF,KAAK,YACJ,IACH,wBACE,EAAE,yFACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,uHACF,KAAK,YACJ,IACH,wBACE,EAAE,8FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,sHACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,wFACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,2FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,0FACF,KAAK,YACJ,IACH,wBACE,EAAE,2FACF,KAAK,YACJ,IACH,wBACE,EAAE,0ZACF,KAAK,YACJ,IACH,wBACE,EAAE,mHACF,KAAK,YACJ,IACH,wBACE,EAAE,kHACF,KAAK,YACJ,IACH,wBACE,EAAE,0HACF,KAAK,YACJ,IACH,wBACE,EAAE,4GACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,uHACF,KAAK,YACJ,IACH,wBACE,EAAE,8FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,sHACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,mFACF,KAAK,YACJ,IACH,wBACE,EAAE,gIACF,KAAK,YACJ,IACH,wBACE,EAAE,iHACF,KAAK,YACJ,IACH,wBACE,EAAE,oFACF,KAAK,YACJ,IACH,wBACE,EAAE,sXACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,mOACF,KAAK,YACJ,IACH,wBACE,EAAE,4HACF,KAAK,YACJ,IACH,wBACE,EAAE,uGACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,4FACF,KAAK,YACJ,IACH,wBACE,EAAE,kHACF,KAAK,YACJ,IACH,wBACE,EAAE,oIACF,KAAK,YACJ,IACH,wBACE,EAAE,mvCACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,mOACF,KAAK,YACJ,IACH,wBACE,EAAE,sGACF,KAAK,YACJ,IACH,wBACE,EAAE,sGACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,mLACF,KAAK,YACJ,IACH,wBACE,EAAE,+YACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,mJACF,KAAK,YACJ,IACH,wBACE,EAAE,+KACF,KAAK,YACJ,IACH,wBACE,EAAE,kJACF,KAAK,YACJ,IACH,wBACE,EAAE,iLACF,KAAK,YACJ,IACH,wBACE,EAAE,oJACF,KAAK,YACJ,IACH,wBACE,EAAE,kLACF,KAAK,YACJ,IACH,wBACE,EAAE,oJACF,KAAK,YACJ,IACH,wBACE,EAAE,mLACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACT,IACD,wBACE,EAAE,oHACF,KAAK,YACJ,IACH,wBACE,EAAE,4JACF,KAAK,YACJ,IACH,wBACE,EAAE,+KACF,KAAK,YACJ,IACH,wBACE,EAAE,gLACF,KAAK,YACJ,IACH,wBACE,EAAE,0KACF,KAAK,YACJ,IACH,wBACE,EAAE,iLACF,KAAK,YACJ,KACA,IACL,4BACG,IACD,4BAAU,GAAG,qBACV,IACD,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,UAAW,KACnC,UAKf,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,2BACV,wBACE,EAAE,oHACF,KAAK,YAEP,wBACE,EAAE,8FACF,KAAK,YAEP,wBACE,EAAE,yFACF,KAAK,YAEP,wBACE,EAAE,oRACF,KAAK,aAGT,4BACE,4BAAU,GAAG,qBACX,wBAAM,MAAM,KAAK,OAAO,KAAK,KAAK,iBAKvC,eACH,MACE,sCACE,UAAW,EACX,QAAQ,YACR,MAAM,8BACF,GAEJ,qBAAG,SAAS,yBACV,wBAAM,EAAE,UAAU,EAAE,UAAU,MAAM,OAAO,OAAO,OAAO,KAAK,UAC9D,wBAAM,EAAE,UAAU,EAAE,KAAK,MAAM,OAAO,OAAO,OAAO,KAAK,YACzD,wBAAM,EAAE,4DAA4D,KAAK,aAE3E,4BACE,4BAAU,GAAG,mBACX,wBAAM,MAAM,KAAK,OAAO,KAAK,GAAG,KAAK,KAAK,qBAQlD,MAAO,QCx3Bb,GAf8B,CAAC,CAAE,OAAM,UAAS,MAAK,MAAK,YAAW,QAEjE,mCACa,EACX,QAAS,EAAO,kBACC,EAEjB,wBAAyB,CAAE,OAAQ,GACnC,UAAW,EACX,GAAI,EACJ,MAAM,+BCEZ,GAxBgC,CAAC,CAC/B,iBACA,YACA,cACA,YAAY,GACZ,QACA,UAGE,uBAAK,UAAW,GACd,yBAAO,UAAU,OAAO,QAAS,GAC9B,GAEH,0BAAQ,KAAM,EAAM,MAAO,EAAa,SAAU,EAAgB,UAAU,mBACzE,EAAM,IAAK,GACV,0BAAQ,IAAK,EAAK,KAAM,MAAO,EAAK,MAAQ,IACzC,EAAK,UCHlB,GAlBgC,CAAC,CAAE,eAE/B,uBACE,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAUN,OCuFX,GAvFsD,CAAC,CACrD,YACA,QACA,QACA,YACA,SACA,cACA,WACA,SACA,YACA,WACA,UACI,CACJ,GAAI,CAAC,EAAW,MAAO,MAEvB,KAAM,CAAE,YAAa,EAEf,EAAgB,CAAC,EAAe,IAAgB,CACpD,KAAM,CAAE,aAAc,OACtB,EAAU,KAAK,KAAK,MAAM,IAC1B,OAAO,SAAS,KAAO,GAGzB,MACE,wBAAK,UAAU,SACb,qBAAG,UAAU,iBAAiB,GAE7B,EAAM,IAAK,GAAS,CAEnB,GAAI,GAAc,GAAG,iBAAsB,YAAsB,EAAK,YAElE,GACF,IAAe,SAAS,KAG1B,GAAI,GAAqB,GACrB,OAAO,IAAc,EAEvB,IAAe,aAAa,eAAsB,cAAsB,YAAmB,IAC3F,EAAqB,mBAGrB,IAAe,SAAS,IACxB,EAAqB,iBAGvB,KAAM,GAAgB,uCAAuC,iCAA2C,EAAK,sBAAsB,EAAK,+BAA+B,OAEvK,MACE,wBAAK,UAAU,iBAAiB,IAAK,GACnC,0BACE,KAAK,SACL,UAAU,wDAAuD,cACrD,iBACZ,QAAS,IAAM,CACb,EAAc,EAAe,IAC9B,iBACe,GAEhB,2BACE,gBAAC,GAAI,CACH,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,IAAK,EAAS,IACd,IAAK,EAAS,IACd,UAAU,4CAGd,uBAAK,UAAU,yBACb,wBAAM,UAAU,yFACb,EAAK,OAER,2BACE,wBAAM,UAAU,8BAA8B,EAAK,UACnD,wBAAM,UAAU,qJACb,EAAK,mBCP1B,GA9EwC,CAAC,CAAE,eAAgB,CACzD,KAAM,CACJ,eACA,cACA,iBACA,kBACA,wBACA,cACA,iBACE,EAAU,QAER,EAAqB,IAEvB,wBAAM,UAAU,yEACb,GACC,wBAAM,UAAU,gIACb,GAGL,gBAAC,GAAI,CACH,KAAK,UACL,QAAQ,YACR,IAAI,UACJ,IACE,khBAEF,UAAU,gFAMZ,EAAsB,IAExB,wBAAM,UAAU,yEACb,GACC,wBAAM,UAAU,kJACb,GAGL,gBAAC,GAAI,CACH,KAAK,UACL,QAAQ,YACR,IAAI,UACJ,IACE,khBAEF,UAAU,gEAMlB,sBAAU,IAAM,CACd,GAAM,EAAW,CACf,UAAW,GACX,QAAS;AAAA,gEACiD;AAAA,mCAC7B;AAAA,mBAChB,cACX,EAAwB,SAAW;AAAA,YAE/B;AAAA;AAAA;AAAA,QAIN,QAAS,QACT,YAAa,GACb,YAAa,GACb,MAAO,GACP,MAAO,KACP,OAAQ,QAET,IAEI,EAAgB,IAAuB,KC1EhD,GAVgC,GAAoC,CAClE,GAAI,CAAC,EAAY,MAAO,GAExB,KAAM,CAAE,cAAa,cAAe,EAEpC,MAAI,CAAC,GAAe,CAAC,EAAmB,GAEjC,EAAc,GCkBvB,GAhB+B,CAAQ,CACrC,QACA,aACA,kBAEO,EACL,aAAc,GAAuB,GACrC,UAAW,GACX,cAAe,GACf,QACA,aACA,SAAU,GACV,iBCrBG,KAAM,IAAiB,iBACjB,GAAsB,sBACtB,GAAgB,gBAChB,GAAe,eACf,GAAgB,gBAChB,GAAoB,oBAYpB,GACX,GAEO,EACL,UACA,KAAM,KASG,GACX,GAEO,EACL,UACA,KAAM,KASG,GAAsB,GAC1B,EACL,UACA,KAAM,KASG,GAA0B,GAC9B,EACL,UACA,KAAM,KASG,GAAqB,GACzB,EACL,UACA,KAAM,KASG,GAAyB,GAC7B,EACL,UACA,KAAM,KCaV,OArEgB,CAAQ,EAAqB,IAAwC,CACnF,KAAM,CAAE,QAAS,EAEjB,OAAQ,OACD,IAAe,CAClB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,aAAc,GAAuB,EAAQ,YAC7C,MAAO,CAAC,GAAG,EAAM,MAAO,GAAG,EAAQ,MACnC,WAAY,EAAQ,WACpB,SAAU,SAIT,IAAc,CACjB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,aAAc,GAAuB,EAAQ,YAC7C,MAAO,EAAQ,KACf,WAAY,EAAQ,WACpB,SAAU,SAIT,IAAgB,CACnB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,UAAW,QAIV,IAAqB,CACxB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,cAAe,QAId,IAAe,CAClB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,SAAU,QAIT,IAAmB,CACtB,KAAM,CAAE,WAAY,EAEpB,MAAO,QAAP,wBACK,GAAK,CACR,aAAc,YAKhB,MAAO,KChBb,KAAM,IAAe,EACf,GAAgB,GAmdtB,OAjdsB,CAAQ,CAC5B,MACA,cAAc,QACd,eACA,gBACA,cACA,gBACA,eACA,oBACA,cACA,sBACA,WACA,iBACA,iBACA,uBAAuB,GACvB,WACA,YACA,WACA,OACA,gBACA,4BACiC,CACjC,KAAM,CACJ,CAAE,eAAc,aAAW,iBAAe,SAAO,cAAY,YAAU,iBACvE,IACE,iBACF,GACA,GAAuB,CACrB,MAAO,EACP,WAAY,EACZ,aAAc,GAAuB,MAGnC,CAAC,GAAO,IAAY,eAAS,GAC7B,CAAC,GAAc,IAAmB,eAAiC,QAGnE,GAAwB,CAAC,CAAE,cAAgD,CAC3E,IACF,GAAS,GAA0B,MAIjC,GAA4B,CAAC,CAAE,cAAgD,CAC/E,IACF,GAAS,GAAyB,MAIhC,GAAe,IAA4B,C,OAC/C,GAAS,GAAkB,KAEvB,SAAK,YAAL,GAAO,QAAI,4BAAE,UACf,IAAS,GAAsB,GAAM,KAAK,UAE1C,EAAY,GAAM,KAAK,WAKrB,GAAwB,KAAO,KAAsC,CAKzE,GAAS,GAAmB,KAE5B,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,SACjB,GAAc,GACf,MAAO,GAAY,EACnB,OAAQ,EACR,YAAa,EACb,cACA,gBACA,0BACG,OAKT,GAAgB,GAAS,QAAQ,cACjC,GAA0B,UACnB,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAmB,OAK1B,GAAgB,SAA2B,CAC/C,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,SACjB,GAAc,GACf,MAAO,GAAW,WAClB,OAAQ,GAAM,OACd,cACA,gBACA,0BACG,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAAsC,SAA2B,CACrE,GAAS,GAAmB,KAE5B,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAkB,GAAe,GAAY,GACrE,OAAQ,EACR,cACA,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,aAAc,GACX,OAKT,GAAgB,GAAS,QAAQ,cACjC,GAA0B,UACnB,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAmB,OAK1B,GAAuC,SAA2B,CACtE,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAgB,GAAW,WACnD,OAAQ,GAAM,OACd,cACA,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,aAAc,GACX,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAAoC,SAA2B,CACnE,GAAS,GAAmB,KAE5B,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAkB,GAAe,GAAY,GACrE,OAAQ,EACR,cACA,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,aAAc,GACX,OAKT,GAAgB,GAAS,QAAQ,cACjC,GAA0B,UACnB,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAmB,OAK1B,GAAqC,SAA2B,CACpE,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAgB,GAAW,WACnD,OAAQ,GAAM,OACd,cACA,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,aAAc,GACX,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAAqC,SAA2B,CACpE,GAAS,GAAmB,KAE5B,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAkB,GAAe,GAAY,GACrE,OAAQ,EACR,cACA,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,aAAc,GACX,OAKT,GAAgB,GAAS,QAAQ,cACjC,GAA0B,UACnB,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAmB,OAK1B,GAAsC,SAA2B,CACrE,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,EAAiB,GAAgB,GAAW,WACnD,OAAQ,GAAM,OACd,cACA,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,aAAc,GACX,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAA2B,SAA2B,CAC1D,GAAS,GAAmB,KAE5B,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,GAAkB,GACzB,OAAQ,EACR,cACA,WACA,YACA,aAAc,GACX,OAKT,GAAgB,GAAS,QAAQ,cACjC,GAA0B,UACnB,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAmB,OAK1B,GAA4B,SAA2B,CAC3D,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,MAAO,GACP,OAAQ,GAAM,OACd,cACA,WACA,YACA,aAAc,GACX,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAAmC,SAA2B,CAClE,GAAI,GAAC,GAAgB,IAAa,IAElC,IAAS,GAAuB,KAEhC,GAAI,CACF,KAAM,IAAY,KAAM,IAAU,CAChC,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,WACA,OACA,cACA,MAAO,GAAW,WAClB,OAAQ,GAAM,OACd,aAAc,GAAM,QACjB,OAKT,GAAsB,UACf,GAAP,CACA,GAAY,W,CAEZ,GAAS,GAAuB,QAK9B,GAAmB,KAAO,KAAsC,CAGpE,GAFA,GAAM,iBAEF,GAAW,OAEf,KAAM,IAA8B,GAAM,OAAO,GAEjD,GAAI,CAAC,GAAW,CACd,QAAQ,MAAM,OAAO,0BACrB,OAGF,KAAM,IAAa,GAAU,MAAM,OACnC,GAAS,IAEL,EAAY,UAAU,SAAS,KACjC,OAAO,QAAQ,aAAa,KAAM,GAAI,UAAU,MAM9C,EACF,KAEA,GAAsB,KAI1B,sBAAU,IAAM,CAEd,GAAI,GAAC,GAAe,CAAC,GAErB,SAAY,iBAAiB,SAAU,IAEhC,IAAM,CACX,EAAY,oBAAoB,SAAU,MAE3C,CAAC,IAEG,CACL,eACA,aACA,iBACA,MAAO,GACP,SACA,YACA,yBACA,iBACA,uCACA,wCACA,qCACA,sCACA,sCACA,uCACA,4BACA,6BACA,oCACA,YACA,gBACA,kBCteJ,GA/CuB,IAAc,CACnC,KAAM,GAA6C,eAwCnD,MAAO,CACL,YAfkB,IAAY,CAC9B,KAAM,CAAE,OAAM,gBAAiB,GAAS,OAAO,SAE3C,CAAC,IAAI,YAAJ,EAAM,QAAS,CAAC,EAAgB,SAErC,GAAK,MAAM,SAAW,GACtB,EAAK,MAAM,SAAW,GACtB,EAAK,MAAM,SAAW,GACtB,EAAK,MAAM,SAAW,GACtB,EAAK,MAAM,aAAe,GAE1B,EAAgB,QAAU,KAK1B,YAxCkB,IAAY,CAC9B,KAAM,CAAE,OAAM,gBAAiB,GAAS,OAAO,SAE/C,GAAI,CAAC,IAAI,YAAJ,EAAM,QAAS,EAAgB,QAAS,OAE7C,KAAM,GAAiB,OAAO,WAAa,EAAK,YAC1C,EACJ,SAAS,OAAO,iBAAiB,GAAM,iBAAiB,iBAAkB,KAAO,EAQnF,EAAK,MAAM,SAAW,WACtB,EAAK,MAAM,SAAW,SACtB,EAAK,MAAM,SAAW,WACtB,EAAK,MAAM,SAAW,SACtB,EAAK,MAAM,aAAe,GAAG,EAAmB,MAEhD,EAAgB,QAAU,MC1B9B,KAAM,IAAoB,CAAC,CAAE,iBAA0C,CACrE,KAAM,CAAC,EAAa,GAAkB,SAA0B,IAEhE,GAAI,GAA2B,KAE/B,KAAM,GAAkB,GAA+B,CACrD,EAAW,GAAI,gBAAe,CAAC,CAAC,KAAyB,CACvD,GAAI,CAAC,EAAe,OACpB,KAAM,CAAE,eAAgB,EAEpB,GACF,EAAe,KAInB,EAAS,QAAQ,IAGnB,iBAAU,IAAM,CACd,GAAI,GAAC,OAAO,gBAAkB,CAAC,GAE/B,MAAI,IACF,EAAS,aAGX,EAAe,GAER,IAAM,CACP,GACF,EAAS,eAGZ,CAAC,IAEG,GAGT,OAAe,KCJf,GA1BoB,IAAc,CAChC,KAAM,CAAC,EAAU,GAAe,eAAS,GAEnC,EAAY,IAAY,CAC5B,KAAM,GAAS,OAAO,YAAc,IAEpC,EAAY,IAGd,sBAAU,IAAM,CACd,KAAM,GAAiB,KAAS,IAAM,IAAa,KAEnD,cAAO,iBAAiB,SAAU,GAElC,IAEO,IAAM,CACX,OAAO,oBAAoB,SAAU,KAEtC,IAEI,CACL,aCIJ,GA/BwB,CAAC,CAAE,MAAK,mBAAkB,oBAAoB,MAAwB,CAC5F,KAAM,GAAuB,aAAO,GAE9B,EAAe,GAAuB,C,MACtC,CAAC,EAAqB,SAEtB,OAAG,YAAH,EAAK,WAAO,0BAAE,SAAS,EAAM,UAEjC,KAOF,gBAAU,IAAM,CACd,EAAqB,QAAU,GAC9B,CAAC,IAEJ,gBAAU,IAAM,CAEd,GAAI,EAAC,EAAI,QAET,cAAO,iBAAiB,QAAS,GAE1B,IAAM,CACX,SAAS,oBAAoB,QAAS,KAEvC,CAAC,KCpCC,KAAM,IAAwB,mCCqBrC,OAZmC,CAAC,CAAE,WAC/B,IAAK,YAAL,EAAO,QAGV,sBAAI,UAAU,uBACX,EAAM,IAAK,GACV,gBAAC,GAAQ,eAAC,IAAK,EAAK,IAAQ,MALP,KCN7B,KAAM,IAAmC,CAAC,CAAE,QAAO,QAAO,MAAK,YACzD,CAAC,GAAS,CAAC,EAAY,KAGzB,sBAAI,UAAU,+CAA8C,cAAc,eAAe,KACvF,qBAAG,UAAU,oCAAoC,KAAM,EAAK,OAAQ,GAClE,uBAAK,UAAU,qIACZ,GAIF,GAAS,uBAAK,UAAU,eAAe,wBAAyB,CAAE,OAAQ,OAMnF,OAAe,WAAK,ICwCpB,GAlDgD,CAAC,CAC/C,MACA,QACA,UACA,MAAO,EACP,WAAY,EACZ,eACA,iBACI,CACJ,KAAM,CAAE,eAAc,gBAAe,QAAO,gBAAe,YAAa,GAAc,CACpF,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,MACxC,cAAe,QACf,cAAe,CAAE,WACjB,eACA,oBACA,gBAGI,EAAa,CAAC,IAAK,YAAL,EAAO,QAE3B,MACE,wBAAK,UAAU,yBACX,IAAY,IACZ,uBAAK,UAAW,GAAG,EAAa,OAAS,UACvC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,uCACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAKpD,gBAAC,GAAS,CAAC,MAAO,IAEjB,GACC,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,EAAc,iCACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,uBCjCrB,GAZmC,CAAC,CAAE,WAC/B,IAAK,YAAL,EAAO,QAGV,sBAAI,UAAU,uBACX,EAAM,IAAK,GACV,gBAAC,GAAQ,eAAC,IAAK,EAAK,IAAQ,MALP,KCJ7B,KAAM,IAAqC,CAAC,CAAE,OAAM,OAAM,OAAM,YAE5D,sBACE,UAAU,2GAA0G,cACxG,eAEZ,gBAAC,GAAQ,CAAC,KAAM,EAAM,KAAM,IAC5B,gBAAC,GAAQ,iBAAK,IACd,gBAAC,GAAU,iBAAK,KAKtB,OAAe,WAAK,ICJpB,GATkC,CAAC,CAAE,OAAM,UAEvC,uBAAK,UAAU,qDACb,uBAAK,UAAU,uBAAuB,GACrC,GAAQ,uBAAK,UAAU,gDAAgD,ICU9E,GAhB+C,CAAC,CAC9C,QACA,iBACA,4BAGE,uBAAK,UAAU,6DACb,uBAAK,UAAU,8BAA8B,wBAAyB,CAAE,OAAQ,KAE/E,GAA0B,uBAAK,UAAU,gBAAgB,GAEzD,GAAkB,uBAAK,UAAU,gBAAgB,ICDxD,GATmD,CAAC,CAAE,QAAO,UAAW,CACtE,KAAM,GAAU,KAAU,oCAAqC,CAC7D,gBAAiB,IAAS,SAC1B,qBAAsB,IAAS,YAGjC,MAAO,wBAAK,UAAW,GAAU,IC+CnC,GAjDkD,CAAC,CACjD,MACA,UACA,MAAO,EACP,eACA,WAAY,EACZ,QACA,iBACA,QACA,iBACI,CACJ,KAAM,CAAE,eAAc,gBAAe,QAAO,iBAAkB,GAAc,CAC1E,MACA,aAAc,EACd,cAAe,CAAE,kBACjB,eACA,oBACA,gBAGF,MACE,wBAAK,UAAU,yBACb,sBAAI,UAAU,2CAA2C,GAEzD,uBAAK,UAAU,+DACb,wBAAM,UAAU,iBAAiB,EAAQ,QACzC,wBACE,UAAU,wCAEV,wBAAyB,CAAE,OAAQ,KAAK,EAAQ,YAIpD,gBAAC,GAAS,CAAC,MAAO,IAEjB,GACC,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,EAAc,mCACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,uBCnDN,YAAuC,EAAQ,EAAU,CACtE,GAAI,GAAU,KAAM,MAAO,GAC3B,GAAI,GAAS,GACT,EAAa,OAAO,KAAK,GACzB,EAAK,EACT,IAAK,EAAI,EAAG,EAAI,EAAW,OAAQ,IAEjC,EADM,EAAW,GACb,IAAS,QAAQ,IAAQ,IAC7B,GAAO,GAAO,EAAO,IAEvB,MAAO,GCVM,aAAoB,CACjC,UAAW,OAAO,OAAS,OAAO,OAAO,OAAS,SAAU,EAAQ,CAClE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,GAAI,GAAS,UAAU,GACvB,OAAS,KAAO,GACV,OAAO,UAAU,eAAe,KAAK,EAAQ,IAC/C,GAAO,GAAO,EAAO,IAI3B,MAAO,IAEF,GAAS,MAAM,KAAM,WCTvB,GAAI,IAAc,kBAId,GAAiB,2BAIjB,GAAc,qBAKd,GAAa,wBAKb,GAAqB,oBCRzB,YAAmB,EAAK,EAAO,CAClC,MAAI,OAAO,IAAQ,WACf,EAAI,GAEC,GACL,GAAI,QAAU,GAEX,ECLJ,YAAwB,EAAc,EAAU,CACnD,GAAI,GAAM,eAAS,UAAY,CAAE,MAAQ,CAErC,MAAO,EAEP,SAAU,EAEV,OAAQ,IACA,UAAU,CACV,MAAO,GAAI,UAEX,SAAQ,EAAO,CACf,GAAI,GAAO,EAAI,MACX,IAAS,GACT,GAAI,MAAQ,EACZ,EAAI,SAAS,EAAO,SAI7B,GAEP,SAAI,SAAW,EACR,EAAI,OCrBR,YAAsB,EAAM,EAAc,CAC7C,MAAO,IAAe,GAAgB,KAAM,SAAU,EAAU,CAAE,MAAO,GAAK,QAAQ,SAAU,EAAK,CAAE,MAAO,IAAU,EAAK,OCf1H,GAAI,IAAc,CACvB,MAAO,MACP,OAAQ,MACR,QAAS,EACT,SAAU,SACV,SAAU,QACV,IAAK,MACL,KAAM,OAGJ,GAAe,SAAsB,EAAM,CAC7C,GAAI,GAAW,EAAK,SACpB,MAAoB,iBAAoB,WAAgB,KAAmB,gBAAoB,MAAO,CACpG,IAAK,cACL,mBAAoB,GACpB,wBAAyB,GACzB,MAAO,KACL,EAAU,GAAyB,gBAAoB,MAAO,CAChE,IAAK,aACL,mBAAoB,GACpB,wBAAyB,GACzB,MAAO,OAIX,GAAa,UAET,GACJ,GAAa,aAAe,CAC1B,SAAU,MAEZ,OAAe,KCjBX,GAAgB,SAAS,EAAG,EAAG,CAC/B,UAAgB,OAAO,gBAClB,CAAE,UAAW,aAAgB,QAAS,SAAU,EAAG,EAAG,CAAE,EAAE,UAAY,IACvE,SAAU,EAAG,EAAG,CAAE,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAE,GAAK,EAAE,KACzF,GAAc,EAAG,IAGrB,YAAmB,EAAG,EAAG,CAC5B,GAAI,MAAO,IAAM,YAAc,IAAM,KACjC,KAAM,IAAI,WAAU,uBAAyB,OAAO,GAAK,iCAC7D,GAAc,EAAG,GACjB,YAAc,CAAE,KAAK,YAAc,EACnC,EAAE,UAAY,IAAM,KAAO,OAAO,OAAO,GAAM,GAAG,UAAY,EAAE,UAAW,GAAI,IAG5E,GAAI,IAAW,UAAW,CAC7B,UAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,OAAS,GAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAAK,CACjD,EAAI,UAAU,GACd,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAE,GAAK,EAAE,IAE9E,MAAO,IAEJ,GAAS,MAAM,KAAM,YAGzB,YAAgB,EAAG,EAAG,CACzB,GAAI,GAAI,GACR,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAM,EAAE,QAAQ,GAAK,GAC9E,GAAE,GAAK,EAAE,IACb,GAAI,GAAK,MAAQ,MAAO,QAAO,uBAA0B,WACrD,OAAS,GAAI,EAAG,EAAI,OAAO,sBAAsB,GAAI,EAAI,EAAE,OAAQ,IAC3D,EAAE,QAAQ,EAAE,IAAM,GAAK,OAAO,UAAU,qBAAqB,KAAK,EAAG,EAAE,KACvE,GAAE,EAAE,IAAM,EAAE,EAAE,KAE1B,MAAO,GAGJ,YAAoB,EAAY,EAAQ,EAAK,EAAM,CACtD,GAAI,GAAI,UAAU,OAAQ,EAAI,EAAI,EAAI,EAAS,IAAS,KAAO,EAAO,OAAO,yBAAyB,EAAQ,GAAO,EAAM,EAC3H,GAAI,MAAO,UAAY,UAAY,MAAO,SAAQ,UAAa,WAAY,EAAI,QAAQ,SAAS,EAAY,EAAQ,EAAK,OACpH,QAAS,GAAI,EAAW,OAAS,EAAG,GAAK,EAAG,IAAS,GAAI,EAAW,KAAI,GAAK,GAAI,EAAI,EAAE,GAAK,EAAI,EAAI,EAAE,EAAQ,EAAK,GAAK,EAAE,EAAQ,KAAS,GAChJ,MAAO,GAAI,GAAK,GAAK,OAAO,eAAe,EAAQ,EAAK,GAAI,EAGzD,YAAiB,EAAY,EAAW,CAC3C,MAAO,UAAU,EAAQ,EAAK,CAAE,EAAU,EAAQ,EAAK,IAGpD,YAAoB,EAAa,EAAe,CACnD,GAAI,MAAO,UAAY,UAAY,MAAO,SAAQ,UAAa,WAAY,MAAO,SAAQ,SAAS,EAAa,GAG7G,YAAmB,EAAS,EAAY,EAAG,EAAW,CACzD,WAAe,EAAO,CAAE,MAAO,aAAiB,GAAI,EAAQ,GAAI,GAAE,SAAU,EAAS,CAAE,EAAQ,KAC/F,MAAO,IAAK,IAAM,GAAI,UAAU,SAAU,EAAS,EAAQ,CACvD,WAAmB,EAAO,CAAE,GAAI,CAAE,EAAK,EAAU,KAAK,UAAkB,EAAP,CAAY,EAAO,IACpF,WAAkB,EAAO,CAAE,GAAI,CAAE,EAAK,EAAU,MAAS,UAAkB,EAAP,CAAY,EAAO,IACvF,WAAc,EAAQ,CAAE,EAAO,KAAO,EAAQ,EAAO,OAAS,EAAM,EAAO,OAAO,KAAK,EAAW,GAClG,EAAM,GAAY,EAAU,MAAM,EAAS,GAAc,KAAK,UAI/D,YAAqB,EAAS,EAAM,CACvC,GAAI,GAAI,CAAE,MAAO,EAAG,KAAM,UAAW,CAAE,GAAI,EAAE,GAAK,EAAG,KAAM,GAAE,GAAI,MAAO,GAAE,IAAO,KAAM,GAAI,IAAK,IAAM,EAAG,EAAG,EAAG,EAC/G,MAAO,GAAI,CAAE,KAAM,EAAK,GAAI,MAAS,EAAK,GAAI,OAAU,EAAK,IAAM,MAAO,SAAW,YAAe,GAAE,OAAO,UAAY,UAAW,CAAE,MAAO,QAAU,EACvJ,WAAc,EAAG,CAAE,MAAO,UAAU,EAAG,CAAE,MAAO,GAAK,CAAC,EAAG,KACzD,WAAc,EAAI,CACd,GAAI,EAAG,KAAM,IAAI,WAAU,mCAC3B,KAAO,GAAG,GAAI,CACV,GAAI,EAAI,EAAG,GAAM,GAAI,EAAG,GAAK,EAAI,EAAE,OAAY,EAAG,GAAK,EAAE,OAAc,IAAI,EAAE,SAAc,EAAE,KAAK,GAAI,GAAK,EAAE,OAAS,CAAE,GAAI,EAAE,KAAK,EAAG,EAAG,KAAK,KAAM,MAAO,GAE3J,OADI,EAAI,EAAG,GAAG,GAAK,CAAC,EAAG,GAAK,EAAG,EAAE,QACzB,EAAG,QACF,OAAQ,GAAG,EAAI,EAAI,UACnB,GAAG,SAAE,QAAgB,CAAE,MAAO,EAAG,GAAI,KAAM,QAC3C,GAAG,EAAE,QAAS,EAAI,EAAG,GAAI,EAAK,CAAC,GAAI,aACnC,GAAG,EAAK,EAAE,IAAI,MAAO,EAAE,KAAK,MAAO,iBAEpC,GAAM,EAAI,EAAE,KAAM,IAAI,EAAE,OAAS,GAAK,EAAE,EAAE,OAAS,KAAQ,GAAG,KAAO,GAAK,EAAG,KAAO,GAAI,CAAE,EAAI,EAAG,SACjG,GAAI,EAAG,KAAO,GAAM,EAAC,GAAM,EAAG,GAAK,EAAE,IAAM,EAAG,GAAK,EAAE,IAAM,CAAE,EAAE,MAAQ,EAAG,GAAI,MAC9E,GAAI,EAAG,KAAO,GAAK,EAAE,MAAQ,EAAE,GAAI,CAAE,EAAE,MAAQ,EAAE,GAAI,EAAI,EAAI,MAC7D,GAAI,GAAK,EAAE,MAAQ,EAAE,GAAI,CAAE,EAAE,MAAQ,EAAE,GAAI,EAAE,IAAI,KAAK,GAAK,MACvD,EAAE,IAAI,EAAE,IAAI,MAChB,EAAE,KAAK,MAAO,SAEtB,EAAK,EAAK,KAAK,EAAS,SACnB,EAAP,CAAY,EAAK,CAAC,EAAG,GAAI,EAAI,SAAK,CAAU,EAAI,EAAI,EACtD,GAAI,EAAG,GAAK,EAAG,KAAM,GAAG,GAAI,MAAO,CAAE,MAAO,EAAG,GAAK,EAAG,GAAK,OAAQ,KAAM,KAI3E,GAAI,IAAkB,OAAO,OAAU,SAAS,EAAG,EAAG,EAAG,EAAI,CAC5D,IAAO,QAAW,GAAK,GAC3B,GAAI,GAAO,OAAO,yBAAyB,EAAG,GAC1C,EAAC,GAAS,QAAS,GAAO,CAAC,EAAE,WAAa,EAAK,UAAY,EAAK,gBAChE,GAAO,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,MAAO,GAAE,MAE1D,OAAO,eAAe,EAAG,EAAI,IAC3B,SAAS,EAAG,EAAG,EAAG,EAAI,CACpB,IAAO,QAAW,GAAK,GAC3B,EAAE,GAAM,EAAE,IAGP,YAAsB,EAAG,EAAG,CAC/B,OAAS,KAAK,GAAO,IAAM,WAAa,CAAC,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAgB,EAAG,EAAG,GAGxG,YAAkB,EAAG,CACxB,GAAI,GAAI,MAAO,SAAW,YAAc,OAAO,SAAU,EAAI,GAAK,EAAE,GAAI,EAAI,EAC5E,GAAI,EAAG,MAAO,GAAE,KAAK,GACrB,GAAI,GAAK,MAAO,GAAE,QAAW,SAAU,MAAO,CAC1C,KAAM,UAAY,CACd,MAAI,IAAK,GAAK,EAAE,QAAQ,GAAI,QACrB,CAAE,MAAO,GAAK,EAAE,KAAM,KAAM,CAAC,KAG5C,KAAM,IAAI,WAAU,EAAI,0BAA4B,mCAGjD,YAAgB,EAAG,EAAG,CACzB,GAAI,GAAI,MAAO,SAAW,YAAc,EAAE,OAAO,UACjD,GAAI,CAAC,EAAG,MAAO,GACf,GAAI,GAAI,EAAE,KAAK,GAAI,EAAG,EAAK,GAAI,EAC/B,GAAI,CACA,KAAQ,KAAM,QAAU,KAAM,IAAM,CAAE,GAAI,EAAE,QAAQ,MAAM,EAAG,KAAK,EAAE,aAEjE,EAAP,CAAgB,EAAI,CAAE,MAAO,UAC7B,CACI,GAAI,CACI,GAAK,CAAC,EAAE,MAAS,GAAI,EAAE,SAAY,EAAE,KAAK,UAElD,CAAU,GAAI,EAAG,KAAM,GAAE,OAE7B,MAAO,GAIJ,aAAoB,CACvB,OAAS,GAAK,GAAI,EAAI,EAAG,EAAI,UAAU,OAAQ,IAC3C,EAAK,EAAG,OAAO,GAAO,UAAU,KACpC,MAAO,GAIJ,aAA0B,CAC7B,OAAS,GAAI,EAAG,EAAI,EAAG,EAAK,UAAU,OAAQ,EAAI,EAAI,IAAK,GAAK,UAAU,GAAG,OAC7E,OAAS,GAAI,MAAM,GAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,IACzC,OAAS,GAAI,UAAU,GAAI,EAAI,EAAG,EAAK,EAAE,OAAQ,EAAI,EAAI,IAAK,IAC1D,EAAE,GAAK,EAAE,GACjB,MAAO,GAGJ,YAAuB,EAAI,EAAM,EAAM,CAC1C,GAAI,GAAQ,UAAU,SAAW,EAAG,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAI,EAAG,IACxE,IAAM,CAAE,KAAK,MACR,IAAI,GAAK,MAAM,UAAU,MAAM,KAAK,EAAM,EAAG,IAClD,EAAG,GAAK,EAAK,IAGrB,MAAO,GAAG,OAAO,GAAM,MAAM,UAAU,MAAM,KAAK,IAG/C,YAAiB,EAAG,CACvB,MAAO,gBAAgB,IAAW,MAAK,EAAI,EAAG,MAAQ,GAAI,IAAQ,GAG/D,YAA0B,EAAS,EAAY,EAAW,CAC7D,GAAI,CAAC,OAAO,cAAe,KAAM,IAAI,WAAU,wCAC/C,GAAI,GAAI,EAAU,MAAM,EAAS,GAAc,IAAK,EAAG,EAAI,GAC3D,MAAO,GAAI,GAAI,EAAK,QAAS,EAAK,SAAU,EAAK,UAAW,EAAE,OAAO,eAAiB,UAAY,CAAE,MAAO,OAAS,EACpH,WAAc,EAAG,CAAM,EAAE,IAAI,GAAE,GAAK,SAAU,EAAG,CAAE,MAAO,IAAI,SAAQ,SAAU,EAAG,EAAG,CAAE,EAAE,KAAK,CAAC,EAAG,EAAG,EAAG,IAAM,GAAK,EAAO,EAAG,OAC9H,WAAgB,EAAG,EAAG,CAAE,GAAI,CAAE,EAAK,EAAE,GAAG,UAAc,EAAP,CAAY,EAAO,EAAE,GAAG,GAAI,IAC3E,WAAc,EAAG,CAAE,EAAE,gBAAiB,IAAU,QAAQ,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAS,GAAU,EAAO,EAAE,GAAG,GAAI,GACnH,WAAiB,EAAO,CAAE,EAAO,OAAQ,GACzC,WAAgB,EAAO,CAAE,EAAO,QAAS,GACzC,WAAgB,EAAG,EAAG,CAAM,EAAE,GAAI,EAAE,QAAS,EAAE,QAAQ,EAAO,EAAE,GAAG,GAAI,EAAE,GAAG,KAGzE,YAA0B,EAAG,CAChC,GAAI,GAAG,EACP,MAAO,GAAI,GAAI,EAAK,QAAS,EAAK,QAAS,SAAU,EAAG,CAAE,KAAM,KAAO,EAAK,UAAW,EAAE,OAAO,UAAY,UAAY,CAAE,MAAO,OAAS,EAC1I,WAAc,EAAG,EAAG,CAAE,EAAE,GAAK,EAAE,GAAK,SAAU,EAAG,CAAE,MAAQ,GAAI,CAAC,GAAK,CAAE,MAAO,GAAQ,EAAE,GAAG,IAAK,KAAM,IAAM,UAAa,EAAI,EAAE,GAAK,GAAO,GAGxI,YAAuB,EAAG,CAC7B,GAAI,CAAC,OAAO,cAAe,KAAM,IAAI,WAAU,wCAC/C,GAAI,GAAI,EAAE,OAAO,eAAgB,EACjC,MAAO,GAAI,EAAE,KAAK,GAAM,GAAI,MAAO,KAAa,WAAa,GAAS,GAAK,EAAE,OAAO,YAAa,EAAI,GAAI,EAAK,QAAS,EAAK,SAAU,EAAK,UAAW,EAAE,OAAO,eAAiB,UAAY,CAAE,MAAO,OAAS,GAC9M,WAAc,EAAG,CAAE,EAAE,GAAK,EAAE,IAAM,SAAU,EAAG,CAAE,MAAO,IAAI,SAAQ,SAAU,EAAS,EAAQ,CAAE,EAAI,EAAE,GAAG,GAAI,EAAO,EAAS,EAAQ,EAAE,KAAM,EAAE,UAChJ,WAAgB,EAAS,EAAQ,EAAG,EAAG,CAAE,QAAQ,QAAQ,GAAG,KAAK,SAAS,EAAG,CAAE,EAAQ,CAAE,MAAO,EAAG,KAAM,KAAS,IAG/G,YAA8B,EAAQ,EAAK,CAC9C,MAAI,QAAO,eAAkB,OAAO,eAAe,EAAQ,MAAO,CAAE,MAAO,IAAiB,EAAO,IAAM,EAClG,EAGX,GAAI,IAAqB,OAAO,OAAU,SAAS,EAAG,EAAG,CACrD,OAAO,eAAe,EAAG,UAAW,CAAE,WAAY,GAAM,MAAO,KAC9D,SAAS,EAAG,EAAG,CAChB,EAAE,QAAa,GAGZ,YAAsB,EAAK,CAC9B,GAAI,GAAO,EAAI,WAAY,MAAO,GAClC,GAAI,GAAS,GACb,GAAI,GAAO,KAAM,OAAS,KAAK,GAAS,IAAM,WAAa,OAAO,UAAU,eAAe,KAAK,EAAK,IAAI,GAAgB,EAAQ,EAAK,GACtI,UAAmB,EAAQ,GACpB,EAGJ,YAAyB,EAAK,CACjC,MAAQ,IAAO,EAAI,WAAc,EAAM,CAAE,QAAS,GAG/C,YAAgC,EAAU,EAAO,EAAM,EAAG,CAC7D,GAAI,IAAS,KAAO,CAAC,EAAG,KAAM,IAAI,WAAU,iDAC5C,GAAI,MAAO,IAAU,WAAa,IAAa,GAAS,CAAC,EAAI,CAAC,EAAM,IAAI,GAAW,KAAM,IAAI,WAAU,4EACvG,MAAO,KAAS,IAAM,EAAI,IAAS,IAAM,EAAE,KAAK,GAAY,EAAI,EAAE,MAAQ,EAAM,IAAI,GAGjF,YAAgC,EAAU,EAAO,EAAO,EAAM,EAAG,CACpE,GAAI,IAAS,IAAK,KAAM,IAAI,WAAU,kCACtC,GAAI,IAAS,KAAO,CAAC,EAAG,KAAM,IAAI,WAAU,iDAC5C,GAAI,MAAO,IAAU,WAAa,IAAa,GAAS,CAAC,EAAI,CAAC,EAAM,IAAI,GAAW,KAAM,IAAI,WAAU,2EACvG,MAAQ,KAAS,IAAM,EAAE,KAAK,EAAU,GAAS,EAAI,EAAE,MAAQ,EAAQ,EAAM,IAAI,EAAU,GAAS,EAGjG,YAA+B,EAAO,EAAU,CACnD,GAAI,IAAa,MAAS,MAAO,IAAa,UAAY,MAAO,IAAa,WAAa,KAAM,IAAI,WAAU,0CAC/G,MAAO,OAAO,IAAU,WAAa,IAAa,EAAQ,EAAM,IAAI,GCrPxE,YAAc,EAAG,CACb,MAAO,GAEX,YAA2B,EAAU,EAAY,CACzC,IAAe,QAAU,GAAa,IAC1C,GAAI,GAAS,GACT,EAAW,GACX,EAAS,CACT,KAAM,UAAY,CACd,GAAI,EACA,KAAM,IAAI,OAAM,oGAEpB,MAAI,GAAO,OACA,EAAO,EAAO,OAAS,GAE3B,GAEX,UAAW,SAAU,EAAM,CACvB,GAAI,GAAO,EAAW,EAAM,GAC5B,SAAO,KAAK,GACL,UAAY,CACf,EAAS,EAAO,OAAO,SAAU,EAAG,CAAE,MAAO,KAAM,MAG3D,iBAAkB,SAAU,EAAI,CAE5B,IADA,EAAW,GACJ,EAAO,QAAQ,CAClB,GAAI,GAAM,EACV,EAAS,GACT,EAAI,QAAQ,GAEhB,EAAS,CACL,KAAM,SAAU,EAAG,CAAE,MAAO,GAAG,IAC/B,OAAQ,UAAY,CAAE,MAAO,MAGrC,aAAc,SAAU,EAAI,CACxB,EAAW,GACX,GAAI,GAAe,GACnB,GAAI,EAAO,OAAQ,CACf,GAAI,GAAM,EACV,EAAS,GACT,EAAI,QAAQ,GACZ,EAAe,EAEnB,GAAI,GAAe,UAAY,CAC3B,GAAI,GAAM,EACV,EAAe,GACf,EAAI,QAAQ,IAEZ,EAAQ,UAAY,CAAE,MAAO,SAAQ,UAAU,KAAK,IACxD,IACA,EAAS,CACL,KAAM,SAAU,EAAG,CACf,EAAa,KAAK,GAClB,KAEJ,OAAQ,SAAU,EAAQ,CACtB,SAAe,EAAa,OAAO,GAC5B,MAKvB,MAAO,GAEJ,YAAsB,EAAU,EAAY,CAC/C,MAAI,KAAe,QAAU,GAAa,IACnC,GAAkB,EAAU,GAGhC,YAA6B,EAAS,CACrC,IAAY,QAAU,GAAU,IACpC,GAAI,GAAS,GAAkB,MAC/B,SAAO,QAAU,GAAS,CAAE,MAAO,GAAM,IAAK,IAAS,GAChD,EC3EJ,GAAI,IAAc,GAAa,GAAI,SAAU,EAAM,CACxD,GAAI,GAAS,EAAK,OACd,EAAgB,EAAK,cACzB,MAAO,CACL,OAAQ,EACR,cAAe,KAGR,GAAa,KACb,GAAe,KACf,GAAgB,GAAoB,CAC7C,MAAO,KCJL,GAAa,GACb,GAAyB,aAAiB,SAAqB,EAAO,EAAW,CACnF,GAAI,GAEA,EAAkB,aAClB,EAAe,EAAgB,GAC/B,EAAc,EAAgB,GAE9B,EAAW,WACX,EAAW,SAAa,IACxB,EAAyB,SAAa,MACtC,EAAW,EAAM,SACjB,EAAW,EAAM,SACjB,EAAgB,EAAM,cACtB,EAAkB,EAAM,gBACxB,EAAa,EAAM,WACnB,EAAY,EAAM,UAClB,EAAqB,EAAM,mBAC3B,EAAQ,EAAM,MACd,GAAY,EAAM,UAClB,GAAY,EAAM,UAClB,EAAqB,EAAM,mBAC3B,GAAgB,EAAM,OACtB,GAAS,KAAkB,OAAS,GAAa,GACjD,GAAY,EAAM,GAClB,GAAY,KAAc,OAAS,MAAQ,GAC3C,GAAmB,EAAM,UACzB,GAAiB,KAAqB,OAAS,GAAK,GACpD,GAAU,EAAM,QAChB,GAAoB,EAAM,YAC1B,GAAe,EAAM,aACrB,GAAuB,EAAM,aAC7B,GAAyB,EAAM,eAE/B,GAAmB,WAAe,IAClC,GAAK,GAAiB,GAGtB,GAAe,cAAkB,UAAY,CAC/C,EAAuB,QAAU,EAAuB,SAAW,UAAY,SAAS,cAEpF,EAAS,SAAW,IACtB,GAAqB,EAAS,SAGhC,EAAS,QAAU,IAClB,CAAC,KACA,GAAiB,cAAkB,UAAY,CACjD,EAAS,QAAU,GAEf,IACF,GAAuB,EAAS,UAEjC,CAAC,KACJ,gBAAU,UAAY,CACf,GAGH,GAAuB,QAAU,OAElC,IACH,GAAI,IAAc,cAAkB,SAAU,GAAY,CACxD,GAAI,IAAgB,EAAuB,QAE3C,GAAI,IAAiB,GAAc,MAAO,CACxC,GAAI,IAAmB,MAAO,KAAsB,WAAa,GAAkB,IAAiB,GAEpG,GAAI,GAAkB,CACpB,GAAI,IAAqB,MAAO,KAAqB,SAAW,GAAmB,OACnF,EAAuB,QAAU,KAE7B,GAGF,QAAQ,UAAU,KAAK,UAAY,CACjC,MAAO,IAAc,MAAM,MAG7B,GAAc,MAAM,OAIzB,CAAC,KAEA,GAAU,cAAkB,SAAU,GAAO,CAC3C,EAAS,SACX,GAAY,UAAU,KAEvB,IACC,GAAS,GAAW,UAGpB,GAAiB,cAAkB,SAAU,GAAa,CACxD,EAAS,UAAY,IACvB,GAAS,QAAU,GACnB,EAAY,MAEb,IAgBC,GAAY,GAAU,GAAY,GAAI,EAAU,IAA4B,GAAY,WAAY,EAAU,IAAyB,EAAO,GAAY,IAE1J,GAAmB,IAAkB,GACrC,GAAmB,IAAoB,IAAkB,OACzD,GAAY,GAAa,CAAC,EAAW,KACzC,MAAoB,iBAAoB,WAAgB,KAAM,IAAoB,CAGlF,gBAAoB,MAAO,CACzB,IAAK,cACL,mBAAoB,GACpB,SAAU,EAAW,GAAK,EAC1B,MAAO,KAET,EAAkC,gBAAoB,MAAO,CAC3D,IAAK,gBACL,mBAAoB,GACpB,SAAU,EAAW,GAAK,EAC1B,MAAO,KACJ,MAAO,CAAC,GAAyB,gBAAoB,GAAS,CACjE,GAAI,GACJ,QAAS,GACT,SAAU,EACV,SAAU,EACV,gBAAiB,EACjB,WAAY,EACZ,UAAW,EACX,UAAW,GACX,OAAQ,GACR,aAAc,GACd,eAAgB,GAChB,YAAa,GACb,aAAc,KACC,gBAAoB,GAAW,GAAS,CACvD,IAAK,IACJ,GAAW,CACZ,UAAW,GACX,OAAQ,GACR,QAAS,KACP,GAAW,IAAiC,gBAAoB,MAAO,CACzE,mBAAoB,GACpB,SAAU,EAAW,GAAK,EAC1B,MAAO,QAGX,GAAU,UAoBN,GACJ,GAAU,aAAe,CACvB,SAAU,OACV,SAAU,GACV,YAAa,GACb,aAAc,OACd,cAAe,GACf,UAAW,GACX,gBAAiB,GACjB,WAAY,GACZ,mBAAoB,OACpB,mBAAoB,OACpB,MAAO,OACP,UAAW,OACX,UAAW,OACX,OAAQ,OACR,GAAI,MACJ,UAAW,GACX,aAAc,OACd,eAAgB,QAElB,OAAe,GC/MA,YAAyB,EAAG,EAAG,CAC5C,UAAkB,OAAO,eAAiB,OAAO,eAAe,OAAS,SAAyB,EAAG,EAAG,CACtG,SAAE,UAAY,EACP,GAEF,GAAgB,EAAG,GCJb,YAAwB,EAAU,EAAY,CAC3D,EAAS,UAAY,OAAO,OAAO,EAAW,WAC9C,EAAS,UAAU,YAAc,EACjC,GAAe,EAAU,GCJZ,YAAiB,EAAK,CAGnC,MAAO,IAAwB,MAAO,SAArB,YAA2C,MAAO,QAAO,UAA1B,SAAqC,SAAU,EAAK,CAClG,MAAO,OAAO,IACZ,SAAU,EAAK,CACjB,MAAO,IAAqB,MAAO,SAArB,YAA+B,EAAI,cAAgB,QAAU,IAAQ,OAAO,UAAY,SAAW,MAAO,IACvH,GAAQ,GCNE,YAAsB,EAAO,EAAM,CAChD,GAAI,GAAQ,KAAW,UAAY,IAAU,KAAM,MAAO,GAC1D,GAAI,GAAO,EAAM,OAAO,aACxB,GAAI,IAAS,OAAW,CACtB,GAAI,GAAM,EAAK,KAAK,EAAO,GAAQ,WACnC,GAAI,GAAQ,KAAS,SAAU,MAAO,GACtC,KAAM,IAAI,WAAU,gDAEtB,MAAQ,KAAS,SAAW,OAAS,QAAQ,GCPhC,YAAwB,EAAK,CAC1C,GAAI,GAAM,GAAY,EAAK,UAC3B,MAAO,IAAQ,KAAS,SAAW,EAAM,OAAO,GCHnC,YAAyB,EAAK,EAAK,EAAO,CACvD,SAAM,GAAc,GAChB,IAAO,GACT,OAAO,eAAe,EAAK,EAAK,CAC9B,MAAO,EACP,WAAY,GACZ,aAAc,GACd,SAAU,KAGZ,EAAI,GAAO,EAEN,ECTT,YAAwB,EAAoB,EAA2B,CAWrE,WAAwB,EAAkB,CACxC,MAAO,GAAiB,aAAe,EAAiB,MAAQ,YAGlE,MAAO,UAAc,EAAkB,CAOrC,GAAI,GAAmB,GACnB,EAEJ,YAAsB,CACpB,EAAQ,EAAmB,EAAiB,IAAI,SAAU,EAAU,CAClE,MAAO,GAAS,SAElB,EAA0B,GAG5B,GAAI,GAA0B,SAAU,EAAgB,CACtD,GAAe,EAAY,GAE3B,YAAsB,CACpB,MAAO,GAAe,MAAM,KAAM,YAAc,KAIlD,EAAW,KAAO,UAAgB,CAChC,MAAO,IAGT,GAAI,GAAS,EAAW,UAExB,SAAO,kBAAoB,UAA6B,CACtD,EAAiB,KAAK,MACtB,KAGF,EAAO,mBAAqB,UAA8B,CACxD,KAGF,EAAO,qBAAuB,UAAgC,CAC5D,GAAI,GAAQ,EAAiB,QAAQ,MACrC,EAAiB,OAAO,EAAO,GAC/B,KAGF,EAAO,OAAS,UAAkB,CAChC,MAAoB,iBAAoB,EAAkB,KAAK,QAG1D,GACP,iBAEF,UAAgB,EAAY,cAAe,cAAgB,EAAe,GAAoB,KAEvF,GAIX,OAAe,GC7EX,GAAkB,SAAU,EAAM,CAGlC,GAAI,EAAK,WAAa,KAAK,aACvB,MAAO,GAEX,GAAI,GAAgB,OAAO,iBAAiB,EAAM,MAClD,MAAI,CAAC,GAAiB,CAAC,EAAc,iBAC1B,GAEH,EAAc,iBAAiB,aAAe,QAAU,EAAc,iBAAiB,gBAAkB,UAEjH,GAAgB,SAAU,EAAM,CAEhC,MAAO,GAAK,YAAc,EAAK,WAAW,WAAa,KAAK,uBAEpD,EAAK,WAAW,KAClB,EAAK,YAEX,GAAY,SAAU,EAAM,CAE5B,MAAO,KAAS,UAAa,GAAQ,EAAK,WAAa,KAAK,eAE5D,GAAoB,SAAU,EAAM,EAAa,CACjD,MAAO,CAAC,GAAQ,GAAU,IAAU,CAAC,GAAgB,IAAS,EAAY,GAAc,KAEjF,GAAkB,SAAU,EAAiB,EAAM,CAC1D,GAAI,GAAS,EAAgB,IAAI,GACjC,GAAI,IAAW,OACX,MAAO,GAEX,GAAI,GAAS,GAAkB,EAAM,GAAgB,KAAK,OAAW,IACrE,SAAgB,IAAI,EAAM,GACnB,GAEP,GAA6B,SAAU,EAAM,EAAa,CAC1D,MAAO,IAAQ,CAAC,GAAU,GAAS,GAAmB,GAAQ,EAAY,GAAc,IAAS,GAAS,IAEnG,GAA2B,SAAU,EAAO,EAAM,CACzD,GAAI,GAAS,EAAM,IAAI,GACvB,GAAI,IAAW,OACX,MAAO,GAEX,GAAI,GAAS,GAA2B,EAAM,GAAyB,KAAK,OAAW,IACvF,SAAM,IAAI,EAAM,GACT,GAEA,GAAa,SAAU,EAAM,CAEpC,MAAO,GAAK,SAEL,GAAsB,SAAU,EAAM,CAAE,MAAO,GAAK,UAAY,UAChE,GAAqB,SAAU,EAAM,CAAE,MAAO,GAAK,UAAY,SAC/D,GAAiB,SAAU,EAAM,CACxC,MAAO,IAAmB,IAAS,EAAK,OAAS,SAE1C,GAAiB,SAAU,EAAM,CACxC,MAAO,CAAG,KAAmB,IAAS,GAAoB,KAAW,GAAK,OAAS,UAAY,EAAK,YAE7F,GAAqB,SAAU,EAAM,CAC5C,GAAI,GAAY,EAAK,aAAa,IAClC,MAAO,CAAC,CAAC,GAAM,OAAQ,IAAI,SAAS,IAE7B,GAAU,SAAU,EAAM,CAAE,GAAI,GAAI,MAAO,SAAQ,GAAU,IAAK,GAAW,MAAW,MAAQ,IAAO,OAAS,OAAS,EAAG,cAC5H,GAAc,SAAU,EAAM,CAAE,MAAO,CAAC,GAAQ,IAChD,GAAY,SAAU,EAAG,CAAE,MAAO,SAAQ,ICjEjD,GAAoB,SAAU,EAAM,EAAO,CAC3C,MAAO,GACF,OAAO,IACP,OAAO,SAAU,EAAI,CAAE,MAAO,GAAG,OAAS,EAAK,OAC/C,OAAO,SAAU,EAAI,CAAE,MAAO,GAAG,UAAY,IAAM,GAEjD,GAAc,SAAU,EAAM,EAAO,CAC5C,MAAI,IAAe,IAAS,EAAK,KACtB,GAAkB,EAAM,GAE5B,GAMA,GAAe,SAAU,EAAO,CAEvC,GAAI,GAAY,GAAI,KACpB,SAAM,QAAQ,SAAU,EAAM,CAAE,MAAO,GAAU,IAAI,GAAY,EAAM,MAEhE,EAAM,OAAO,SAAU,EAAM,CAAE,MAAO,GAAU,IAAI,MCrBpD,GAAiB,SAAU,EAAO,CACzC,MAAI,GAAM,IAAM,EAAM,OAAS,EACpB,GAAY,EAAM,GAAI,GAE1B,EAAM,IAEN,GAAgB,SAAU,EAAO,EAAO,CAC/C,MAAI,GAAM,OAAS,EACR,EAAM,QAAQ,GAAY,EAAM,GAAQ,IAE5C,GCRA,GAAY,YASZ,GAAW,SAAU,EAAY,EAAY,EAAe,EAAU,CAC7E,GAAI,GAAM,EAAW,OACjB,EAAa,EAAW,GACxB,EAAY,EAAW,EAAM,GAC7B,EAAY,GAAQ,GAExB,GAAI,KAAiB,EAAW,QAAQ,IAAkB,GAG1D,IAAI,GAAc,IAAkB,OAAY,EAAW,QAAQ,GAAiB,GAChF,EAAY,EAAW,EAAW,QAAQ,GAAY,EACtD,EAAiB,EAAW,EAAW,QAAQ,GAAY,GAC3D,EAAY,EAAc,EAC1B,EAAiB,EAAW,QAAQ,GACpC,EAAgB,EAAW,QAAQ,GACnC,EAAiB,GAAa,GAC9B,EAAiB,IAAkB,OAAY,EAAe,QAAQ,GAAiB,GACvF,EAAqB,EAAkB,GAAW,EAAe,QAAQ,GAAY,GACrF,EAAkB,GAAc,EAAY,GAC5C,GAAiB,GAAc,EAAY,EAAM,GAErD,GAAI,IAAgB,IAAM,IAAmB,GACzC,MAAO,IAGX,GAAI,CAAC,GAAa,GAAkB,EAChC,MAAO,GAGX,GAAI,GAAe,GAAkB,GAAa,KAAK,IAAI,GAAa,EACpE,MAAO,IAGX,GAAI,GAAe,GAAiB,GAAa,KAAK,IAAI,GAAa,EACnE,MAAO,GAGX,GAAI,GAAa,KAAK,IAAI,GAAsB,EAC5C,MAAO,GAGX,GAAI,GAAe,EACf,MAAO,IAGX,GAAI,EAAc,EACd,MAAO,GAGX,GAAI,EACA,MAAI,MAAK,IAAI,GAAa,EACf,EAEH,GAAM,EAAiB,GAAa,IC9DzC,GAAU,SAAU,EAAG,CAE9B,OADI,GAAM,MAAM,EAAE,QACT,EAAI,EAAG,EAAI,EAAE,OAAQ,EAAE,EAC5B,EAAI,GAAK,EAAE,GAEf,MAAO,IAEA,GAAU,SAAU,EAAG,CAAE,MAAQ,OAAM,QAAQ,GAAK,EAAI,CAAC,ICTzD,GAAU,SAAU,EAAG,EAAG,CACjC,GAAI,GAAU,EAAE,SAAW,EAAE,SACzB,EAAY,EAAE,MAAQ,EAAE,MAC5B,GAAI,EAAS,CACT,GAAI,CAAC,EAAE,SACH,MAAO,GAEX,GAAI,CAAC,EAAE,SACH,MAAO,GAGf,MAAO,IAAW,GAEX,GAAkB,SAAU,EAAO,EAAgB,EAAY,CACtE,MAAO,IAAQ,GACV,IAAI,SAAU,EAAM,EAAO,CAAE,MAAQ,CACtC,KAAM,EACN,MAAO,EACP,SAAU,GAAc,EAAK,WAAa,GAAO,GAAK,SAAW,IAAI,WAAa,EAAI,GAAM,EAAK,YAEhG,OAAO,SAAU,EAAM,CAAE,MAAO,CAAC,GAAkB,EAAK,UAAY,IACpE,KAAK,KCnBH,GAAY,CACnB,iBACA,iBACA,mBACA,gBAGA,UACA,aACA,UACA,SACA,SACA,QACA,kBACA,kBACA,aACA,oBACA,eCjBA,GAAiB,GAAU,KAAK,KAChC,GAAsB,GAAG,OAAO,GAAgB,wBAChD,GAA6B,SAAU,EAAQ,EAAY,CAC3D,GAAI,GACJ,MAAO,IAAU,IAAK,EAAO,cAAgB,MAAQ,IAAO,OAAS,OAAS,EAAG,WAAa,EAAO,UAAU,OAAO,SAAU,EAAK,EAAO,CACxI,MAAO,GAAI,OAAO,EAAM,QAAQ,EAAa,GAAsB,IAAkB,CAAC,GAAS,GAAI,GAA2B,KAC/H,KAEI,GAAgB,SAAU,EAAS,EAAY,CACtD,MAAO,GAAQ,OAAO,SAAU,EAAK,EAAQ,CACzC,MAAO,GAAI,OAEX,GAA2B,EAAQ,GAEnC,EAAO,WACD,GAAQ,EAAO,WAAW,iBAAiB,KAAiB,OAAO,SAAU,EAAM,CAAE,MAAO,KAAS,IACrG,KACP,KAMI,GAA0B,SAAU,EAAQ,CACnD,GAAI,GAAc,EAAO,iBAAiB,IAAI,OAAO,GAAY,MACjE,MAAO,IAAQ,GACV,IAAI,SAAU,EAAM,CAAE,MAAO,IAAc,CAAC,MAC5C,OAAO,SAAU,EAAK,EAAO,CAAE,MAAO,GAAI,OAAO,IAAW,KCrB1D,GAAkB,SAAU,EAAO,EAAiB,CAC3D,MAAO,IAAQ,GACV,OAAO,SAAU,EAAM,CAAE,MAAO,IAAgB,EAAiB,KACjE,OAAO,SAAU,EAAM,CAAE,MAAO,IAAe,MAE7C,GAAsB,SAAU,EAAO,EAAO,CACrD,MAAI,KAAU,QAAU,GAAQ,GAAI,MAC7B,GAAQ,GAAO,OAAO,SAAU,EAAM,CAAE,MAAO,IAAyB,EAAO,MAM/E,GAAmB,SAAU,EAAU,EAAiB,EAAY,CAC3E,MAAO,IAAgB,GAAgB,GAAc,EAAU,GAAa,GAAkB,GAAM,IAM7F,GAAsB,SAAU,EAAU,EAAiB,CAClE,MAAO,IAAgB,GAAgB,GAAc,GAAW,GAAkB,KAO3E,GAAuB,SAAU,EAAS,EAAiB,CAClE,MAAO,IAAgB,GAAwB,GAAU,IAKlD,GAAW,SAAU,EAAO,EAAS,CAC5C,MAAS,GAAM,WACT,GAAS,EAAM,WAAY,GAC3B,OAAO,eAAe,GAAO,SAAS,KAAK,EAAO,KACpD,GAAQ,EAAM,UAAU,KAAK,SAAU,EAAO,CAAE,MAAO,IAAS,EAAO,MCtC3E,GAAe,SAAU,EAAO,CAGhC,OAFI,GAAY,GAAI,KAChB,EAAI,EAAM,OACL,EAAI,EAAG,EAAI,EAAG,GAAK,EACxB,OAAS,GAAI,EAAI,EAAG,EAAI,EAAG,GAAK,EAAG,CAC/B,GAAI,GAAW,EAAM,GAAG,wBAAwB,EAAM,IAEjD,GAAW,KAAK,gCAAkC,GACnD,EAAU,IAAI,GAEb,GAAW,KAAK,4BAA8B,GAC/C,EAAU,IAAI,GAK1B,MAAO,GAAM,OAAO,SAAU,EAAG,EAAO,CAAE,MAAO,CAAC,EAAU,IAAI,MAOhE,GAAe,SAAU,EAAM,CAC/B,MAAO,GAAK,WAAa,GAAa,EAAK,YAAc,GAOlD,GAAsB,SAAU,EAAM,CAC7C,GAAI,GAAQ,GAAQ,GACpB,MAAO,GAAM,OAAO,SAAS,OAAO,SAAU,EAAK,EAAa,CAC5D,GAAI,GAAQ,EAAY,aAAa,IACrC,SAAI,KAAK,MAAM,EAAM,EACf,GAAa,GAAQ,GAAa,GAAa,iBAAiB,IAAI,OAAO,GAAa,MAAO,OAAO,EAAO,YAAa,OAAO,GAAgB,oBACjJ,CAAC,IACA,GACR,KChDH,GAA+B,SAAU,EAAY,CACrD,MAAO,GAAW,cACZ,EAAW,cAAc,WACrB,GAA6B,EAAW,cAAc,YACtD,EAAW,cACf,QAKC,GAAmB,UAAY,CACtC,MAAQ,UAAS,cACX,SAAS,cAAc,WACnB,GAA6B,SAAS,cAAc,YACpD,SAAS,cACb,QCZN,GAAa,SAAU,EAAM,EAAS,CACtC,MAAI,KAAY,QAAU,GAAU,IACpC,EAAQ,KAAK,GACT,EAAK,YACL,GAAW,EAAK,WAAW,MAAQ,EAAK,WAAY,GAEjD,GAQA,GAAkB,SAAU,EAAO,EAAO,CAIjD,OAHI,GAAW,GAAW,GACtB,EAAW,GAAW,GAEjB,EAAI,EAAG,EAAI,EAAS,OAAQ,GAAK,EAAG,CACzC,GAAI,GAAgB,EAAS,GAC7B,GAAI,EAAS,QAAQ,IAAkB,EACnC,MAAO,GAGf,MAAO,IAEA,GAAqB,SAAU,EAAmB,EAAW,EAAc,CAClF,GAAI,GAAiB,GAAQ,GACzB,EAAc,GAAQ,GACtB,EAAgB,EAAe,GAC/B,EAAY,GAChB,SAAY,OAAO,SAAS,QAAQ,SAAU,EAAO,CACjD,EAAY,GAAgB,GAAa,EAAO,IAAU,EAC1D,EAAa,OAAO,SAAS,QAAQ,SAAU,EAAU,CACrD,GAAI,GAAS,GAAgB,EAAe,GACxC,GACA,CAAI,CAAC,GAAa,GAAS,EAAQ,GAC/B,EAAY,EAGZ,EAAY,GAAgB,EAAQ,QAM7C,GAOA,GAA0B,SAAU,EAAS,EAAiB,CACrE,MAAO,GAAQ,OAAO,SAAU,EAAK,EAAM,CAAE,MAAO,GAAI,OAAO,GAAqB,EAAM,KAAsB,KClDhH,GAAkB,SAAU,EAAgB,CAC5C,MAAO,UAAU,EAAM,CAAE,GAAI,GAE7B,MAAO,GAAK,WAAa,CAAC,CAAG,IAAK,GAAW,MAAW,MAAQ,IAAO,OAAS,OAAS,EAAG,YAAc,EAAe,QAAQ,IAAS,IAE1I,GAAe,SAAU,EAAU,EAAU,CAC7C,GAAI,GAAQ,GAAI,KAEhB,SAAS,QAAQ,SAAU,EAAQ,CAAE,MAAO,GAAM,IAAI,EAAO,KAAM,KAE5D,EAAS,IAAI,SAAU,EAAM,CAAE,MAAO,GAAM,IAAI,KAAU,OAAO,KAOjE,GAAgB,SAAU,EAAS,EAAU,CACpD,GAAI,GAAgB,UAAY,KAC5B,EAAU,GAAoB,GAAS,OAAO,IAC9C,EAAe,GAAmB,GAAiB,EAAS,EAAS,GACrE,EAAkB,GAAI,KACtB,EAAe,GAAoB,EAAS,GAC5C,EAAgB,GAAiB,EAAS,GAAiB,OAAO,SAAU,EAAI,CAChF,GAAI,GAAO,EAAG,KACd,MAAO,IAAY,KAEvB,GAAI,GAAC,EAAc,IACf,GAAgB,EACZ,CAAC,EAAc,KAIvB,IAAI,GAAa,GAAoB,CAAC,GAAe,GAAiB,IAAI,SAAU,EAAI,CACpF,GAAI,GAAO,EAAG,KACd,MAAO,KAEP,EAAuB,GAAa,EAAY,GAChD,EAAa,EAAqB,IAAI,SAAU,EAAI,CACpD,GAAI,GAAO,EAAG,KACd,MAAO,KAEP,EAAQ,GAAS,EAAY,EAAY,EAAe,GAC5D,GAAI,IAAU,GAAW,CACrB,GAAI,GAAgB,GAAoB,EAAa,IAAI,SAAU,EAAI,CACnE,GAAI,GAAO,EAAG,KACd,MAAO,MACP,OAAO,GAAgB,GAAwB,EAAS,KAC5D,MAAO,CACH,KAAM,GAAiB,EAAc,OAC/B,GAAe,GACf,GAAe,GAAoB,KAGjD,MAAI,KAAU,OACH,EAEJ,EAAqB,KC/DrB,GAAU,SAAU,EAAQ,EAAc,CAC7C,SAAW,IACX,EAAO,MAAM,GAEb,iBAAmB,IAAU,EAAO,eACpC,EAAO,cAAc,SAGzB,GAAa,EACb,GAAe,GAQR,GAAW,SAAU,EAAS,EAAU,EAAS,CACpD,IAAY,QAAU,GAAU,IACpC,GAAI,GAAY,GAAc,EAAS,GACvC,GAAI,KAGA,EAAW,CACX,GAAI,GAAa,EAAG,CAEhB,QAAQ,MAAM,qJAEd,GAAe,GACf,WAAW,UAAY,CACnB,GAAe,IAChB,GACH,OAEJ,KACA,GAAQ,EAAU,KAAM,EAAQ,cAChC,OC1BR,GAAe,GCFJ,GAAgB,UAAY,CACnC,GAAI,GAAgB,UAAY,KAChC,MAAK,GAIE,GAAQ,SAAS,iBAAiB,IAAI,OAAO,GAAa,OAAO,KAAK,SAAU,EAAM,CAAE,MAAO,IAAS,EAAM,KAH1G,ICRX,GAAe,SAAU,EAAO,CAAE,MAAO,KAAU,SAAS,eAC5D,GAAoB,SAAU,EAAS,CACvC,MAAO,SAAQ,GAAQ,EAAQ,iBAAiB,WAAW,KAAK,SAAU,EAAM,CAAE,MAAO,IAAa,OAK/F,GAAc,SAAU,EAAS,CACxC,GAAI,GAAgB,UAAY,KAChC,MAAI,CAAC,GAAkB,EAAc,SAAW,EAAc,QAAQ,WAC3D,GAEJ,GAAoB,GAAS,KAAK,SAAU,EAAM,CAAE,MAAO,IAAS,EAAM,IAAkB,GAAkB,MCR9G,GAAkB,SAAU,EAAS,CAC5C,GAAI,GAAU,GAAoB,GAAS,OAAO,IAC9C,EAAe,GAAmB,EAAS,EAAS,GACpD,EAAkB,GAAI,KACtB,EAAa,GAAiB,CAAC,GAAe,EAAiB,IAC/D,EAAgB,GAAiB,EAAS,GACzC,OAAO,SAAU,EAAI,CACtB,GAAI,GAAO,EAAG,KACd,MAAO,IAAY,KAElB,IAAI,SAAU,EAAI,CACnB,GAAI,GAAO,EAAG,KACd,MAAO,KAEX,MAAO,GAAW,IAAI,SAAU,EAAI,CAChC,GAAI,GAAO,EAAG,KAAM,EAAQ,EAAG,MAC/B,MAAQ,CACJ,KAAM,EACN,MAAO,EACP,SAAU,EAAc,QAAQ,IAAS,EACzC,MAAO,GAAQ,OAOhB,GAAiB,KCnCrB,YAAqB,EAAQ,CAElC,GAAI,GAAU,OACV,EAAe,EAAQ,aAEvB,MAAO,IAAiB,YAC1B,EAAa,GAEb,WAAW,EAAQ,GAGhB,GAAI,IAAa,SAAoB,EAAM,EAAO,CACvD,GAAI,GAAM,GACV,SAAI,GAAQ,EACL,GCNL,GAAc,UAAuB,CACvC,MAAO,WAAY,SAAS,gBAAkB,SAAS,MAGrD,GAAc,UAAuB,CACvC,MAAO,OAAiB,MAGtB,GAAiB,KACjB,GAAkB,KAClB,GAAsB,KACtB,GAAwB,GAExB,GAAmB,UAA4B,CACjD,MAAO,IAGL,GAAmB,SAA0B,EAAe,CAC9D,MAAQ,IAAe,WAAa,IAAkB,IAGpD,GAAe,SAAsB,EAAc,EAAiB,CACtE,GAAsB,CACpB,aAAc,EACd,gBAAiB,IAIjB,GAAsB,SAA6B,EAAS,CAC9D,MAAO,KAAuB,GAAoB,kBAAoB,GAGxE,YAAmB,EAAY,EAAK,EAAM,EAAU,CAClD,GAAI,GAAY,KACZ,EAAI,EAER,EAAG,CACD,GAAI,GAAO,EAAS,GAEpB,GAAI,EAAK,MACH,EAAK,KAAK,QAAQ,gBACpB,GAAY,WAEL,EAAK,SAAU,CACxB,GAAI,IAAM,EAER,OAGF,EAAY,SAEZ,aAEM,IAAK,KAAU,GAErB,GACF,GAAU,KAAK,SAAW,GAI9B,GAAI,IAAa,SAAoB,EAAK,CACxC,MAAO,IAAO,WAAa,GAAM,EAAI,QAAU,GAG7C,GAAkB,SAAyB,EAAkB,CAC/D,MAAI,GAEK,QAAQ,IAIV,KAA0B,aAG/B,GAAc,WAAqB,EAAO,EAAI,EAAU,CAC1D,MAAO,IACP,GAAG,OAAS,GAAU,EAAC,EAAG,eAAiB,EAAS,SAAS,EAAG,iBAC7D,EAAG,YAAc,EAAY,EAAO,EAAG,WAAY,KAGpD,GAAa,SAAoB,EAAe,EAAa,CAC/D,MAAO,GAAY,KAAK,SAAU,EAAM,CACtC,MAAO,IAAY,EAAe,EAAM,MAIxC,GAAe,UAAwB,CACzC,GAAI,GAAS,GAEb,GAAI,GAAgB,CAClB,GAAI,GAAkB,GAClB,EAAW,EAAgB,SAC3B,EAAkB,EAAgB,gBAClC,EAAY,EAAgB,UAC5B,EAAS,EAAgB,OACzB,EAAa,EAAgB,WAC7B,EAAe,EAAgB,aAC/B,EAAc,GAAY,IAAuB,GAAoB,gBACrE,EAAgB,UAAY,SAAS,cAEzC,GAAI,EAAa,CACf,GAAI,GAAc,CAAC,GAAa,OAAO,EAAO,IAAI,IAAY,OAAO,UA2BrE,GAzBI,EAAC,GAAiB,GAAiB,KACjC,IAAmB,GAAgB,IAAe,CAAC,MAAiB,CAAC,IAAmB,IACtF,IAAe,CACnB,IAAY,IACZ,GAAiB,GAAW,EAAe,IAAgB,GAAoB,EAAe,KAC5F,CAAI,UAAY,CAAC,IAAmB,GAAiB,CAAC,EAEhD,GAAc,MAChB,EAAc,OAGhB,SAAS,KAAK,SAEd,GAAS,GAAgB,EAAa,GAAiB,CACrD,aAAc,IAEhB,GAAsB,KAI1B,GAAwB,GACxB,GAAkB,UAAY,SAAS,eAIvC,SAAU,CACZ,GAAI,GAAmB,UAAY,SAAS,cACxC,EAAW,GAAgB,GAC3B,EAAe,EAAS,IAAI,SAAU,EAAM,CAC9C,GAAI,GAAO,EAAK,KAChB,MAAO,KACN,QAAQ,GAEP,EAAe,IAEjB,GAAS,OAAO,SAAU,EAAO,CAC/B,GAAI,GAAQ,EAAM,MACd,EAAO,EAAM,KACjB,MAAO,IAAS,EAAK,QAAQ,iBAC5B,QAAQ,SAAU,EAAO,CAC1B,GAAI,GAAO,EAAM,KACjB,MAAO,GAAK,gBAAgB,cAE9B,GAAU,EAAc,EAAS,OAAQ,EAAI,GAC7C,GAAU,EAAc,GAAI,GAAI,MAMxC,MAAO,IAGL,GAAS,SAAgB,EAAO,CAC9B,MAAkB,GAEpB,GAAM,kBACN,EAAM,mBAIN,GAAS,UAAkB,CAC7B,MAAO,IAAY,KAGjB,GAAU,SAAiB,EAAO,CAEpC,GAAI,GAAS,EAAM,OACf,EAAc,EAAM,cAEnB,EAAY,SAAS,IACxB,GAAa,EAAa,IAI1B,GAAe,UAAwB,CACzC,MAAO,OAGL,GAAY,SAAmB,EAAO,CACxC,GAAI,GAAW,EAAM,SACrB,MAAoB,iBAAoB,MAAO,CAC7C,OAAQ,GACR,QAAS,IACR,IAGL,GAAU,UAEN,GAEJ,GAAI,IAAe,UAAwB,CACzC,GAAwB,OAExB,WAAW,UAAY,CACrB,GAAwB,aACvB,IAGD,GAAgB,UAAyB,CAC3C,SAAS,iBAAiB,UAAW,IACrC,SAAS,iBAAiB,WAAY,IACtC,OAAO,iBAAiB,OAAQ,KAG9B,GAAgB,UAAyB,CAC3C,SAAS,oBAAoB,UAAW,IACxC,SAAS,oBAAoB,WAAY,IACzC,OAAO,oBAAoB,OAAQ,KAGrC,YAA4B,EAAW,CACrC,MAAO,GAAU,OAAO,SAAU,EAAO,CACvC,GAAI,GAAW,EAAM,SACrB,MAAO,CAAC,IAIZ,YAAmC,EAAO,CACxC,GAAI,GAAO,EAAM,MAAM,IAAI,GAEvB,GAAQ,CAAC,IACX,KAGF,GAAI,GAAW,GACX,EAAW,GAAY,GAAQ,EAAK,KAAO,EAAS,GACxD,GAAiB,EAEb,GAAY,CAAC,GACf,GAAS,iBAEJ,EAAM,OAAO,SAAU,EAAO,CACjC,GAAI,GAAK,EAAM,GACf,MAAO,KAAO,EAAS,KACtB,QAED,EAAS,YAAY,CAAC,IAItB,EACF,IAAkB,KAEd,EAAC,GAAY,EAAS,WAAa,EAAK,WAC1C,EAAK,eAGP,GAAa,IACb,GAAY,KAEZ,MACA,GAAkB,MAKtB,GAAY,iBAAiB,IAC7B,GAAW,aAAa,IACxB,GAAa,aAAa,SAAU,EAAI,CACtC,MAAO,GAAG,CACR,gBAAiB,GACjB,YAAa,OAGjB,OAAe,GAAe,GAAoB,IAA2B,ICtQzE,GAAoC,aAAiB,SAAgC,EAAO,EAAK,CACnG,MAAoB,iBAAoB,GAAa,GAAS,CAC5D,QAAS,GACT,IAAK,GACJ,MAGD,GAAO,cAAyB,GAChC,GAAU,GAAK,QACf,GAAY,GAA8B,GAAM,CAAC,YAErD,GAAqB,UAAgE,GACrF,OAAe,GCxBf,GAAe,GCFf,aAAoB,CAAE,UAAW,OAAO,QAAU,SAAU,EAAQ,CAAE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,GAAI,GAAS,UAAU,GAAI,OAAS,KAAO,GAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,IAAQ,GAAO,GAAO,EAAO,IAAY,MAAO,IAAkB,GAAS,MAAM,KAAM,WAIhT,GAAI,IAAa,CACf,SAAU,SAAkB,EAAK,EAAU,CACzC,EAAI,EAAW,WAAa,eAAe,KAAK,OAAO,WAAW,eAC9D,EAAI,IAAM,EAAI,GAAG,UAAY,UAAU,GAAI,GAAG,SAAW,IAE/D,OAAQ,UAAkB,CAExB,GAAI,GAAS,KACT,EAAS,EAAO,OAAO,WACvB,EAAW,EAAO,WAAW,SACjC,GAAI,GAAO,OAAO,KAClB,IAAI,GAAqB,EAAO,WAC5B,EAAU,EAAmB,QAC7B,EAAU,EAAmB,QAE7B,GAAW,EAAQ,OAAS,GAC9B,CAAI,EAAO,YACT,EAAS,EAAS,IAElB,EAAS,EAAS,IAGhB,EAAO,OAAO,eAAiB,EAAO,SACxC,EAAQ,EAAO,SAAW,WAAa,eAAe,EAAO,YAI7D,GAAW,EAAQ,OAAS,GAC9B,CAAI,EAAO,MACT,EAAS,EAAS,IAElB,EAAS,EAAS,IAGhB,EAAO,OAAO,eAAiB,EAAO,SACxC,EAAQ,EAAO,SAAW,WAAa,eAAe,EAAO,cAInE,YAAa,SAAqB,EAAG,CACnC,GAAI,GAAS,KAEb,EADE,iBACE,IAAO,aAAe,CAAC,EAAO,OAAO,OACzC,EAAO,aAET,YAAa,SAAqB,EAAG,CACnC,GAAI,GAAS,KAEb,EADE,iBACE,IAAO,OAAS,CAAC,EAAO,OAAO,OACnC,EAAO,aAET,KAAM,UAAgB,CACpB,GAAI,GAAS,KACT,EAAS,EAAO,OAAO,WAK3B,GAJA,EAAO,OAAO,WAAa,GAA0B,EAAO,IAAK,EAAO,OAAO,WAAY,EAAO,OAAO,eAAgB,CACvH,OAAQ,qBACR,OAAQ,uBAEN,EAAE,GAAO,QAAU,EAAO,QAC9B,IAAI,GACA,EAEA,EAAO,QACT,GAAU,GAAE,EAAO,QAEf,EAAO,OAAO,mBAAqB,MAAO,GAAO,QAAW,UAAY,EAAQ,OAAS,GAAK,EAAO,IAAI,KAAK,EAAO,QAAQ,SAAW,GAC1I,GAAU,EAAO,IAAI,KAAK,EAAO,UAIjC,EAAO,QACT,GAAU,GAAE,EAAO,QAEf,EAAO,OAAO,mBAAqB,MAAO,GAAO,QAAW,UAAY,EAAQ,OAAS,GAAK,EAAO,IAAI,KAAK,EAAO,QAAQ,SAAW,GAC1I,GAAU,EAAO,IAAI,KAAK,EAAO,UAIjC,GAAW,EAAQ,OAAS,GAC9B,EAAQ,GAAG,QAAS,EAAO,WAAW,aAGpC,GAAW,EAAQ,OAAS,GAC9B,EAAQ,GAAG,QAAS,EAAO,WAAW,aAGxC,GAAO,EAAO,WAAY,CACxB,QAAS,EACT,OAAQ,GAAW,EAAQ,GAC3B,QAAS,EACT,OAAQ,GAAW,EAAQ,KAGxB,EAAO,SACN,IAAS,EAAQ,SAAS,EAAO,WACjC,GAAS,EAAQ,SAAS,EAAO,cAGzC,QAAS,UAAmB,CAC1B,GAAI,GAAS,KACT,EAAsB,EAAO,WAC7B,EAAU,EAAoB,QAC9B,EAAU,EAAoB,QAE9B,GAAW,EAAQ,QACrB,GAAQ,IAAI,QAAS,EAAO,WAAW,aACvC,EAAQ,YAAY,EAAO,OAAO,WAAW,gBAG3C,GAAW,EAAQ,QACrB,GAAQ,IAAI,QAAS,EAAO,WAAW,aACvC,EAAQ,YAAY,EAAO,OAAO,WAAW,kBAInD,GAAe,CACb,KAAM,aACN,OAAQ,CACN,WAAY,CACV,OAAQ,KACR,OAAQ,KACR,YAAa,GACb,cAAe,yBACf,YAAa,uBACb,UAAW,uBAGf,OAAQ,UAAkB,CACxB,GAAI,GAAS,KACb,GAAkB,EAAQ,CACxB,WAAY,GAAS,GAAI,OAG7B,GAAI,CACF,KAAM,SAAc,EAAQ,CAC1B,EAAO,WAAW,OAClB,EAAO,WAAW,UAEpB,OAAQ,SAAgB,EAAQ,CAC9B,EAAO,WAAW,UAEpB,SAAU,SAAkB,EAAQ,CAClC,EAAO,WAAW,UAEpB,QAAS,SAAiB,EAAQ,CAChC,EAAO,WAAW,WAEpB,iBAAkB,SAAuB,EAAQ,CAC/C,GAAI,GAAsB,EAAO,WAC7B,EAAU,EAAoB,QAC9B,EAAU,EAAoB,QAE9B,GACF,EAAQ,EAAO,QAAU,cAAgB,YAAY,EAAO,OAAO,WAAW,WAG5E,GACF,EAAQ,EAAO,QAAU,cAAgB,YAAY,EAAO,OAAO,WAAW,YAGlF,MAAO,SAAe,EAAQ,EAAG,CAC/B,GAAI,GAAsB,EAAO,WAC7B,EAAU,EAAoB,QAC9B,EAAU,EAAoB,QAC9B,EAAW,EAAE,OAEjB,GAAI,EAAO,OAAO,WAAW,aAAe,CAAC,GAAE,GAAU,GAAG,IAAY,CAAC,GAAE,GAAU,GAAG,GAAU,CAChG,GAAI,EAAO,YAAc,EAAO,OAAO,YAAc,EAAO,OAAO,WAAW,WAAc,GAAO,WAAW,KAAO,GAAY,EAAO,WAAW,GAAG,SAAS,IAAY,OAC3K,GAAI,GAEA,EACF,EAAW,EAAQ,SAAS,EAAO,OAAO,WAAW,aAC5C,GACT,GAAW,EAAQ,SAAS,EAAO,OAAO,WAAW,cAGnD,IAAa,GACf,EAAO,KAAK,kBAEZ,EAAO,KAAK,kBAGV,GACF,EAAQ,YAAY,EAAO,OAAO,WAAW,aAG3C,GACF,EAAQ,YAAY,EAAO,OAAO,WAAW,iBC/LvD,YAAkB,EAAG,CACnB,MAAO,OAAO,IAAM,UAAY,IAAM,MAAQ,EAAE,aAAe,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,EAAG,MAAQ,SAGpH,YAAgB,EAAQ,EAAK,CAC3B,GAAI,GAAW,CAAC,YAAa,cAAe,aAC5C,OAAO,KAAK,GAAK,OAAO,SAAU,EAAK,CACrC,MAAO,GAAS,QAAQ,GAAO,IAC9B,QAAQ,SAAU,EAAK,CACpB,MAAO,GAAO,IAAS,YAAa,EAAO,GAAO,EAAI,GAAc,GAAS,EAAI,KAAS,GAAS,EAAO,KAAS,OAAO,KAAK,EAAI,IAAM,OAAS,EAChJ,EAAI,GAAK,WAAY,EAAO,GAAO,EAAI,GAAU,GAAO,EAAO,GAAM,EAAI,IAE7E,EAAO,GAAO,EAAI,KAKxB,YAAyB,EAAQ,CAC/B,MAAI,KAAW,QACb,GAAS,IAGJ,EAAO,YAAc,MAAO,GAAO,WAAW,QAAW,aAAe,MAAO,GAAO,WAAW,QAAW,YAGrH,YAAyB,EAAQ,CAC/B,MAAI,KAAW,QACb,GAAS,IAGJ,EAAO,YAAc,MAAO,GAAO,WAAW,IAAO,YAG9D,YAAwB,EAAQ,CAC9B,MAAI,KAAW,QACb,GAAS,IAGJ,EAAO,WAAa,MAAO,GAAO,UAAU,IAAO,YAG5D,YAAuB,EAAY,CAC7B,IAAe,QACjB,GAAa,IAGf,GAAI,GAAU,EAAW,MAAM,KAAK,IAAI,SAAU,EAAG,CACnD,MAAO,GAAE,SACR,OAAO,SAAU,EAAG,CACrB,MAAO,CAAC,CAAC,IAEP,EAAS,GACb,SAAQ,QAAQ,SAAU,EAAG,CACvB,EAAO,QAAQ,GAAK,GAAG,EAAO,KAAK,KAElC,EAAO,KAAK,KCtDrB,GAAI,IAAa,CAAC,OAAQ,aAAc,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,oBAAqB,yBAA0B,0BAA2B,+BAAgC,iCAAkC,kBAAmB,2BAA4B,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,gBAAiB,iBAAkB,mBAAoB,uBAAwB,kBAAmB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,yBAA0B,cAAe,gBAAiB,2BAA4B,uBAAwB,iBAAkB,sBAAuB,QAAS,wBAAyB,gBAAiB,0BAA2B,oBAAqB,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,kBAAmB,mBAAoB,4BAA6B,oBAAqB,sBAAuB,iBAAkB,0BAA2B,iBAAkB,0BAA2B,eAAgB,qBAAsB,WAAY,iBAAkB,uBAC/3D,OAAQ,WAAY,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,UAAW,WAAY,OAAQ,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,QCG7O,YAAmB,EAAK,CAClB,IAAQ,QACV,GAAM,IAGR,GAAI,GAAS,CACX,GAAI,IAEF,EAAS,GACT,EAAe,GACnB,GAAO,EAAQ,YACf,GAAO,EAAQ,oBACf,EAAO,aAAe,GACtB,EAAO,KAAO,GACd,GAAI,GAAO,GACP,EAAgB,GAAW,IAAI,SAAU,EAAK,CAChD,MAAO,GAAI,QAAQ,IAAK,MAE1B,cAAO,KAAK,GAAK,QAAQ,SAAU,EAAK,CAClC,EAAc,QAAQ,IAAQ,EAC5B,GAAS,EAAI,IACf,GAAO,GAAO,GACd,EAAa,GAAO,GACpB,GAAO,EAAO,GAAM,EAAI,IACxB,GAAO,EAAa,GAAM,EAAI,KAE9B,GAAO,GAAO,EAAI,GAClB,EAAa,GAAO,EAAI,IAEjB,EAAI,OAAO,aAAe,GAAK,MAAO,GAAI,IAAS,WAC5D,EAAO,GAAK,EAAI,GAAG,cAAgB,EAAI,OAAO,IAAM,EAAI,GAExD,EAAK,GAAO,EAAI,KAGpB,CAAC,aAAc,aAAc,aAAa,QAAQ,SAAU,EAAK,CAC3D,EAAO,KAAS,IAAM,GAAO,GAAO,IACpC,EAAO,KAAS,IAAO,MAAO,GAAO,KAEpC,CACL,OAAQ,EACR,aAAc,EACd,KAAM,EACN,OAAQ,GC5CZ,YAAoB,EAAc,CAChC,MAAO,IAAI,GAAO,GAGpB,YAAqB,EAAM,EAAc,CACvC,GAAI,GAAK,EAAK,GACV,EAAS,EAAK,OACd,EAAS,EAAK,OACd,EAAe,EAAK,aACpB,EAAc,EAAK,YACnB,EAAS,EAAK,OAEd,GAAgB,IAAiB,GAAU,GAC7C,GAAO,OAAO,WAAW,OAAS,EAClC,EAAO,eAAe,WAAW,OAAS,EAC1C,EAAO,OAAO,WAAW,OAAS,EAClC,EAAO,eAAe,WAAW,OAAS,GAGxC,GAAgB,IAAiB,GACnC,GAAO,OAAO,WAAW,GAAK,EAC9B,EAAO,eAAe,WAAW,GAAK,GAGpC,GAAe,IAAiB,GAClC,GAAO,OAAO,UAAU,GAAK,EAC7B,EAAO,eAAe,UAAU,GAAK,GAGvC,EAAO,KAAK,GC7Bd,YAA0B,EAAQ,EAAc,CAC9C,GAAI,GAAsB,EAAa,cAEvC,GAAI,EAAa,YAAa,CAC5B,GAAI,GAAa,0BAA+B,EAAa,aACzD,EAAuB,IAAc,GAAa,YAAc,EAAa,YAAY,GAAc,OAEvG,GAAwB,EAAqB,eAC/C,GAAsB,EAAqB,eAI/C,GAAI,GAAe,KAAK,KAAK,WAAW,EAAa,cAAgB,EAAqB,KAC1F,UAAgB,EAAa,qBAEzB,EAAe,EAAO,QACxB,GAAe,EAAO,QAGjB,EAGT,YAAoB,EAAQ,EAAQ,EAAc,CAChD,GAAI,GAAiB,EAAO,IAAI,SAAU,EAAO,EAAO,CACtD,MAAoB,gBAAmB,EAAO,CAC5C,OAAQ,EACR,0BAA2B,MAI/B,WAAwB,EAAO,EAAO,EAAU,CAC9C,MAAoB,gBAAmB,EAAO,CAC5C,IAAK,EAAM,IAAM,cAAgB,EAAQ,IAAM,EAC/C,UAAY,GAAM,MAAM,WAAa,IAAM,IAAM,EAAa,sBAIlE,GAAI,EAAa,uBAAwB,CACvC,GAAI,GAAiB,EAAa,eAAiB,EAAe,OAAS,EAAa,eAExF,GAAI,IAAmB,EAAa,eAClC,OAAS,GAAI,EAAG,EAAI,EAAgB,GAAK,EAAG,CAC1C,GAAI,GAA0B,gBAAoB,MAAO,CACvD,UAAW,EAAa,WAAa,IAAM,EAAa,kBAE1D,EAAe,KAAK,IAKtB,EAAa,gBAAkB,QAAU,CAAC,EAAa,cACzD,GAAa,aAAe,EAAe,QAG7C,GAAI,GAAe,GAAiB,EAAgB,GAChD,EAAgB,GAChB,EAAe,GACnB,SAAe,QAAQ,SAAU,EAAO,EAAO,CACzC,EAAQ,GACV,EAAa,KAAK,EAAe,EAAO,EAAO,YAG7C,EAAQ,EAAe,QAAU,GAAS,EAAe,OAAS,GACpE,EAAc,KAAK,EAAe,EAAO,EAAO,aAIhD,GACF,GAAO,aAAe,GAGjB,GAAG,OAAO,EAAe,EAAgB,GCxElD,YAA0B,EAAc,EAAW,EAAU,EAAa,CACxE,GAAI,GAAO,GACX,GAAI,CAAC,EAAW,MAAO,GAEvB,GAAI,GAAS,SAAgB,EAAK,CAC5B,EAAK,QAAQ,GAAO,GAAG,EAAK,KAAK,IAGnC,EAAkB,EAAY,IAAI,SAAU,EAAO,CACrD,MAAO,GAAM,MAEX,EAAe,EAAS,IAAI,SAAU,EAAO,CAC/C,MAAO,GAAM,MAEX,EAAgB,KAAK,MAAQ,EAAa,KAAK,KAAK,EAAO,YAC3D,EAAY,SAAW,EAAS,QAAQ,EAAO,YACnD,GAAI,GAAc,GAAW,OAAO,SAAU,EAAK,CACjD,MAAO,GAAI,KAAO,MACjB,IAAI,SAAU,EAAK,CACpB,MAAO,GAAI,QAAQ,IAAK,MAE1B,SAAY,QAAQ,SAAU,EAAK,CACjC,GAAI,IAAO,IAAgB,IAAO,GAChC,GAAI,GAAS,EAAa,KAAS,GAAS,EAAU,IAAO,CAC3D,GAAI,GAAU,OAAO,KAAK,EAAa,IACnC,EAAU,OAAO,KAAK,EAAU,IAEhC,EAAQ,SAAW,EAAQ,OAC7B,EAAO,GAEP,GAAQ,QAAQ,SAAU,EAAQ,CAC5B,EAAa,GAAK,KAAY,EAAU,GAAK,IAC/C,EAAO,KAGX,EAAQ,QAAQ,SAAU,EAAQ,CAC5B,EAAa,GAAK,KAAY,EAAU,GAAK,IAAS,EAAO,UAG5D,GAAa,KAAS,EAAU,IACzC,EAAO,KAIN,EC7CT,YAAyB,EAAG,CAC1B,GAAI,GAAS,GACb,0BAAuB,GAAG,QAAQ,SAAU,EAAO,CAC7C,EAAM,MAAQ,EAAM,KAAK,cAAgB,cAC3C,EAAO,KAAK,GACH,EAAM,OAAS,EAAM,MAAM,UACpC,GAAgB,EAAM,MAAM,UAAU,QAAQ,SAAU,EAAO,CAC7D,MAAO,GAAO,KAAK,OAIlB,EAGT,YAAqB,EAAG,CACtB,GAAI,GAAS,GACT,EAAQ,CACV,kBAAmB,GACnB,gBAAiB,GACjB,gBAAiB,GACjB,cAAe,IAEjB,0BAAuB,GAAG,QAAQ,SAAU,EAAO,CACjD,GAAI,EAAM,MAAQ,EAAM,KAAK,cAAgB,cAC3C,EAAO,KAAK,WACH,EAAM,OAAS,EAAM,MAAM,MAAQ,EAAM,EAAM,MAAM,MAC9D,EAAM,EAAM,MAAM,MAAM,KAAK,WACpB,EAAM,OAAS,EAAM,MAAM,SAAU,CAC9C,GAAI,GAAc,GAAgB,EAAM,MAAM,UAE1C,EAAY,OAAS,EACvB,EAAY,QAAQ,SAAU,EAAO,CACnC,MAAO,GAAO,KAAK,KAGrB,EAAM,iBAAiB,KAAK,OAG9B,GAAM,iBAAiB,KAAK,KAGzB,CACL,OAAQ,EACR,MAAO,GC3CX,YAAsB,EAAM,CAC1B,GAAI,GAAS,EAAK,OACd,EAAS,EAAK,OACd,EAAe,EAAK,aACpB,EAAgB,EAAK,cACrB,EAAS,EAAK,OACd,EAAS,EAAK,OACd,EAAc,EAAK,YACnB,EAAe,EAAK,aACpB,EAAe,EAAc,OAAO,SAAU,GAAK,CACrD,MAAO,MAAQ,YAAc,KAAQ,cAEnC,EAAgB,EAAO,OACvB,EAAa,EAAO,WACpB,EAAa,EAAO,WACpB,EAAY,EAAO,UACnB,EAAU,EAAO,QACjB,EAAS,EAAO,OAChB,EACA,EACA,GACA,GACA,EAEA,EAAc,SAAS,WAAa,EAAa,QAAU,EAAa,OAAO,QAAU,EAAc,QAAU,CAAC,EAAc,OAAO,QACzI,GAAiB,IAGf,EAAc,SAAS,eAAiB,EAAa,YAAc,EAAa,WAAW,SAAW,EAAc,YAAc,CAAC,EAAc,WAAW,SAC9J,GAAqB,IAGnB,EAAc,SAAS,eAAiB,EAAa,YAAe,GAAa,WAAW,IAAM,IAAkB,GAAc,YAAc,EAAc,aAAe,KAAU,GAAc,CAAC,EAAW,IACnN,IAAqB,IAGnB,EAAc,SAAS,cAAgB,EAAa,WAAc,GAAa,UAAU,IAAM,IAAiB,GAAc,WAAa,EAAc,YAAc,KAAU,GAAa,CAAC,EAAU,IAC3M,IAAoB,IAGlB,EAAc,SAAS,eAAiB,EAAa,YAAe,GAAa,WAAW,QAAU,IAAY,GAAa,WAAW,QAAU,IAAY,GAAc,YAAc,EAAc,aAAe,KAAU,GAAc,CAAC,EAAW,QAAU,CAAC,EAAW,QACrR,GAAqB,IAGvB,GAAI,IAAgB,SAAuB,GAAK,CAC1C,CAAC,EAAO,KACZ,GAAO,IAAK,UAER,KAAQ,aACV,GAAc,IAAK,OAAS,OAC5B,EAAc,IAAK,OAAS,OAC5B,EAAO,IAAK,OAAS,OACrB,EAAO,IAAK,OAAS,QAErB,GAAc,IAAK,GAAK,OACxB,EAAO,IAAK,GAAK,UA2BrB,GAvBA,EAAa,QAAQ,SAAU,GAAK,CAClC,GAAI,GAAS,EAAc,MAAS,GAAS,EAAa,KACxD,GAAO,EAAc,IAAM,EAAa,SACnC,CACL,GAAI,IAAW,EAAa,IAEvB,MAAa,IAAQ,KAAa,KAAW,MAAQ,cAAgB,KAAQ,cAAgB,KAAQ,aACpG,KAAa,IACf,GAAc,IAGhB,EAAc,IAAO,EAAa,OAKpC,EAAc,SAAS,aAAe,GAAW,EAAc,QAAQ,QACzE,GAAQ,OAAS,EACjB,EAAQ,OAAO,KACN,EAAc,SAAS,aAAe,EAAO,MAAQ,EAAO,OAAO,KAAK,SACjF,EAAO,KAAK,OAGV,EAAgB,CAClB,GAAI,IAAc,EAAO,OACrB,IAAa,EAAO,OAAO,IAG7B,GACF,GAAO,WAAW,QAAU,EAAc,WAAW,SAGnD,IACE,IAAc,GAAc,WAAW,GAAK,GAChD,EAAW,OACX,EAAW,SACX,EAAW,UAGT,IACE,IAAa,GAAc,UAAU,GAAK,GAC9C,EAAU,OACV,EAAU,aACV,EAAU,gBAGR,GACE,IAAQ,GAAc,WAAW,OAAS,GAC1C,GAAQ,GAAc,WAAW,OAAS,GAC9C,EAAW,OACX,EAAW,UAGT,EAAc,SAAS,mBACzB,GAAO,eAAiB,EAAa,gBAGnC,EAAc,SAAS,mBACzB,GAAO,eAAiB,EAAa,gBAGnC,EAAc,SAAS,cACzB,EAAO,gBAAgB,EAAa,UAAW,IAGjD,EAAO,SC5HT,YAA6B,EAAQ,CAC/B,CAAC,GAAU,EAAO,WAAa,CAAC,EAAO,OAAO,SAAW,EAAO,OAAO,SAAW,CAAC,EAAO,OAAO,QAAQ,SAC7G,GAAO,eACP,EAAO,iBACP,EAAO,sBAEH,EAAO,MAAQ,EAAO,OAAO,KAAK,SACpC,EAAO,KAAK,OAGV,EAAO,UAAY,EAAO,OAAO,UAAY,EAAO,OAAO,SAAS,SACtE,EAAO,SAAS,gBAIpB,YAAuB,EAAQ,EAAQ,EAAa,CAClD,GAAI,GAEJ,GAAI,CAAC,EAAa,MAAO,MACzB,GAAI,GAAQ,EAAO,eAAkB,GAAO,GAAI,EAAK,EAAO,aAAe,QAAU,QAAU,EAAY,OAAS,KAAM,GAAQ,CAChI,IAAK,EAAY,OAAS,MAE5B,MAAO,GAAO,OAAO,SAAU,EAAO,EAAO,CAC3C,MAAO,IAAS,EAAY,MAAQ,GAAS,EAAY,KACxD,IAAI,SAAU,EAAO,CACtB,MAAoB,gBAAmB,EAAO,CAC5C,OAAQ,EACR,MAAO,MC3Bb,YAAmC,EAAU,EAAM,CAEjD,MAAI,OAAO,SAAW,YAAoB,gBAAU,EAAU,GACvD,sBAAgB,EAAU,GCLnC,GAAI,IAAY,CAAC,YAAa,MAAO,aAAc,WAAY,YAE/D,aAAoB,CAAE,UAAW,OAAO,QAAU,SAAU,EAAQ,CAAE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,GAAI,GAAS,UAAU,GAAI,OAAS,KAAO,GAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,IAAQ,GAAO,GAAO,EAAO,IAAY,MAAO,IAAkB,GAAS,MAAM,KAAM,WAEhT,YAAuC,EAAQ,EAAU,CAAE,GAAI,GAAU,KAAM,MAAO,GAAI,GAAI,GAAS,GAAQ,EAAa,OAAO,KAAK,GAAa,EAAK,EAAG,IAAK,EAAI,EAAG,EAAI,EAAW,OAAQ,IAA4B,EAAf,EAAW,GAAQ,IAAS,QAAQ,IAAQ,IAAa,GAAO,GAAO,EAAO,IAAQ,MAAO,GAY1S,GAAI,IAAsB,iBAAW,SAAU,EAAO,EAAe,CACnE,GAAI,GAAO,IAAU,OAAS,GAAK,EAC/B,EAAY,EAAK,UACjB,EAAW,EAAK,IAChB,EAAM,IAAa,OAAS,MAAQ,EACpC,EAAkB,EAAK,WACvB,EAAa,IAAoB,OAAS,MAAQ,EAClD,EAAW,EAAK,SAChB,EAAW,EAAK,SAChB,EAAO,GAA8B,EAAM,IAE3C,EAAiB,GAEjB,EAAY,eAAS,oBACrB,EAAmB,EAAU,GAC7B,EAAsB,EAAU,GAEhC,EAAa,eAAS,MACtB,EAAc,EAAW,GACzB,EAAiB,EAAW,GAE5B,GAAa,eAAS,IACtB,GAAoB,GAAW,GAC/B,EAAuB,GAAW,GAElC,GAAiB,aAAO,IACxB,GAAc,aAAO,MACrB,GAAY,aAAO,MACnB,GAAqB,aAAO,MAC5B,GAAY,aAAO,MACnB,GAAY,aAAO,MACnB,GAAY,aAAO,MACnB,GAAkB,aAAO,MACzB,GAAiB,aAAO,MAExB,GAAa,GAAU,GACvB,GAAe,GAAW,OAC1B,GAAe,GAAW,aAC1B,GAAY,GAAW,KACvB,GAAS,GAAW,OAEpB,GAAe,GAAY,GAC3B,GAAS,GAAa,OACtB,GAAQ,GAAa,MAErB,GAAqB,UAA8B,CACrD,EAAqB,CAAC,KASxB,GANA,OAAO,OAAO,GAAa,GAAI,CAC7B,kBAAmB,SAA2B,GAAQ,GAAS,CAC7D,EAAoB,OAIpB,CAAC,GAAY,SAEf,QAAO,OAAO,GAAa,GAAI,IAC/B,EAAiB,GACjB,GAAU,QAAU,GAAW,IAE/B,GAAU,QAAQ,WAAa,UAAY,GAE3C,GAAU,QAAQ,YAAc,UAAY,GAExC,GAAa,MACf,IAAU,QAAQ,aAAe,GAAiB,GAAQ,KAGxD,GAAU,QAAQ,SAAW,GAAU,QAAQ,OAAO,QAAQ,SAAS,CACzE,GAAU,QAAQ,QAAQ,OAAS,GACnC,GAAI,IAAa,CACf,MAAO,GACP,eAAgB,EAChB,qBAAsB,IAExB,GAAO,GAAU,QAAQ,OAAO,QAAS,IACzC,GAAO,GAAU,QAAQ,eAAe,QAAS,IAKjD,GAAU,SACZ,GAAU,QAAQ,GAAG,oBAAqB,IAG5C,GAAI,IAAe,UAAwB,CACrC,GAAkB,CAAC,IAAU,CAAC,GAAU,SAC5C,OAAO,KAAK,IAAQ,QAAQ,SAAU,GAAW,CAC/C,GAAU,QAAQ,GAAG,GAAW,GAAO,QAIvC,GAAe,UAAwB,CACrC,CAAC,IAAU,CAAC,GAAU,SAC1B,OAAO,KAAK,IAAQ,QAAQ,SAAU,GAAW,CAC/C,GAAU,QAAQ,IAAI,GAAW,GAAO,QAI5C,gBAAU,UAAY,CACpB,MAAO,WAAY,CACb,GAAU,SAAS,GAAU,QAAQ,IAAI,oBAAqB,OAItE,gBAAU,UAAY,CAChB,CAAC,GAAe,SAAW,GAAU,SACvC,IAAU,QAAQ,oBAClB,GAAe,QAAU,MAI7B,GAA0B,UAAY,CAKpC,GAJI,GACF,GAAc,QAAU,GAAY,SAGlC,EAAC,GAAY,QACjB,UAAY,CACV,GAAI,GAAY,QAChB,OAAQ,GAAU,QAClB,OAAQ,GAAU,QAClB,aAAc,GAAgB,QAC9B,YAAa,GAAe,QAC5B,OAAQ,GAAU,SACjB,IACC,GAAU,EAAS,GAAU,SAE1B,UAAY,CACb,GAAU,SAAW,CAAC,GAAU,QAAQ,WAC1C,GAAU,QAAQ,QAAQ,GAAM,MAGnC,IAEH,GAA0B,UAAY,CACpC,KACA,GAAI,IAAgB,GAAiB,GAAc,GAAmB,QAAS,GAAQ,GAAU,SACjG,UAAmB,QAAU,GAC7B,GAAU,QAAU,GAEhB,GAAc,QAAU,GAAU,SAAW,CAAC,GAAU,QAAQ,WAClE,GAAa,CACX,OAAQ,GAAU,QAClB,OAAQ,GACR,aAAc,GACd,cAAe,GACf,OAAQ,GAAU,QAClB,OAAQ,GAAU,QAClB,YAAa,GAAe,QAC5B,aAAc,GAAgB,UAI3B,UAAY,CACjB,QAIJ,GAA0B,UAAY,CACpC,GAAoB,GAAU,UAC7B,CAAC,IAEJ,aAAwB,CACtB,MAAI,IAAa,QACR,GAAc,GAAU,QAAS,GAAQ,GAG9C,CAAC,GAAa,MAAQ,GAAU,SAAW,GAAU,QAAQ,UACxD,GAAO,IAAI,SAAU,GAAO,CACjC,MAAoB,gBAAmB,GAAO,CAC5C,OAAQ,GAAU,YAKjB,GAAW,GAAU,QAAS,GAAQ,IAG/C,MAAoB,iBAAoB,EAAK,GAAS,CACpD,IAAK,GACL,UAAW,GAAc,GAAK,EAAoB,GAAY,IAAM,EAAY,MAC/E,IAAY,GAAM,mBAAoB,GAAgB,KAA8B,gBAAoB,WAAgB,KAAmB,gBAAoB,MAAO,CACvK,IAAK,GACL,UAAW,uBACI,gBAAoB,MAAO,CAC1C,IAAK,GACL,UAAW,wBACR,GAAe,KAA8B,gBAAoB,MAAO,CAC3E,IAAK,GACL,UAAW,qBACT,GAAgB,KAA8B,gBAAoB,MAAO,CAC3E,IAAK,GACL,UAAW,sBACI,gBAAoB,EAAY,CAC/C,UAAW,kBACV,GAAM,iBAAkB,KAAgB,GAAM,gBAAiB,GAAM,oBAE1E,GAAO,YAAc,SCvNrB,GAAI,IAAY,CAAC,MAAO,WAAY,YAAa,SAAU,OAAQ,gBAEnE,aAAoB,CAAE,UAAW,OAAO,QAAU,SAAU,EAAQ,CAAE,OAAS,GAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CAAE,GAAI,GAAS,UAAU,GAAI,OAAS,KAAO,GAAc,OAAO,UAAU,eAAe,KAAK,EAAQ,IAAQ,GAAO,GAAO,EAAO,IAAY,MAAO,IAAkB,GAAS,MAAM,KAAM,WAEhT,YAAuC,EAAQ,EAAU,CAAE,GAAI,GAAU,KAAM,MAAO,GAAI,GAAI,GAAS,GAAQ,EAAa,OAAO,KAAK,GAAa,EAAK,EAAG,IAAK,EAAI,EAAG,EAAI,EAAW,OAAQ,IAA4B,EAAf,EAAW,GAAQ,IAAS,QAAQ,IAAQ,IAAa,GAAO,GAAO,EAAO,IAAQ,MAAO,GAK1S,GAAI,IAA2B,iBAAW,SAAU,EAAO,EAAa,CACtE,GAAI,GAAO,IAAU,OAAS,GAAK,EAC/B,EAAW,EAAK,IAChB,EAAM,IAAa,OAAS,MAAQ,EACpC,EAAW,EAAK,SAChB,EAAiB,EAAK,UACtB,EAAY,IAAmB,OAAS,GAAK,EAC7C,EAAS,EAAK,OACd,EAAO,EAAK,KACZ,EAAe,EAAK,aACpB,EAAO,GAA8B,EAAM,IAE3C,EAAa,aAAO,MAEpB,EAAY,eAAS,gBACrB,EAAe,EAAU,GACzB,EAAkB,EAAU,GAEhC,WAAuB,GAAQ,EAAI,GAAY,CACzC,IAAO,EAAW,SACpB,EAAgB,IAIpB,GAA0B,UAAY,CAKpC,GAJI,GACF,GAAY,QAAU,EAAW,SAG/B,GAAC,EAAW,SAAW,CAAC,GAI5B,IAAI,EAAO,UAAW,CAChB,IAAiB,gBACnB,EAAgB,gBAGlB,OAGF,SAAO,GAAG,cAAe,GAElB,UAAY,CACb,CAAC,GACL,EAAO,IAAI,cAAe,OAG9B,GAA0B,UAAY,CAChC,GAAU,EAAW,SACvB,EAAgB,EAAO,gBAAgB,EAAW,WAEnD,CAAC,IACJ,GAAI,GAEA,MAAO,IAAa,YACtB,GAAY,CACV,SAAU,EAAa,QAAQ,wBAA0B,GAAK,EAAa,QAAQ,kCAAoC,EACvH,UAAW,EAAa,QAAQ,yBAA2B,EAC3D,YAAa,EAAa,QAAQ,2BAA6B,EAC/D,OAAQ,EAAa,QAAQ,sBAAwB,GAAK,EAAa,QAAQ,gCAAkC,EACjH,OAAQ,EAAa,QAAQ,sBAAwB,GAAK,EAAa,QAAQ,gCAAkC,IAIrH,GAAI,IAAiB,UAA0B,CAC7C,MAAO,OAAO,IAAa,WAAa,EAAS,GAAa,GAGhE,MAAoB,iBAAoB,EAAK,GAAS,CACpD,IAAK,EACL,UAAW,GAAc,GAAK,EAAgB,GAAY,IAAM,EAAY,KAC5E,0BAA2B,GAC1B,GAAO,EAAoB,gBAAoB,MAAO,CACvD,UAAW,wBACX,mBAAoB,MAAO,IAAS,SAAW,EAAO,QACrD,MAAoB,QAEzB,GAAY,YAAc,cCtFnB,KAAM,IAAqC,aACrC,GAAqB,kBAErB,GAAmB,CAC9B,YAAa,eACb,WAAY,cACZ,eAAgB,mBAIlB,GAAY,IAAZ,UAAY,EAAe,CACzB,cACA,kBACA,gBACA,wBACA,kBACA,YACA,mBACA,mCARU,QAAe,KAWpB,KAAM,IAA+B,ICI5C,OAlBoB,CAAC,CAAE,OAAM,WAA6B,CACxD,GAAI,CAAC,EAAM,MAAO,MAElB,KAAM,CAAE,UAAS,QAAS,EAEpB,EAAU,IAAO,YAAP,EAAU,GAAgB,aAAc,OAExD,MAAO,CACL,YAAa,GAAO,YAAP,EAAU,GAAgB,aACvC,MAAO,GAAO,YAAP,EAAU,GAAgB,OACjC,IAAK,EAAU,GAAO,YAAP,EAAU,GAAgB,KAAO,EAChD,OAAQ,GAAO,YAAP,EAAU,GAAgB,QAClC,KAAM,EAAU,QAAU,MAC1B,OAAQ,GAAO,YAAP,EAAU,GAAgB,QAClC,mBAAoB,IC4VxB,GA7UoB,CAAC,CAAE,eAAc,oBAAoC,CACvE,KAAM,CAAE,cAAa,eAAgB,KAE/B,EAAoB,aAAmB,GACvC,EAA2B,aAAgB,IAC3C,EAAY,aAAgB,IAC5B,EAAe,aAAgB,IAG/B,EAAmB,aAAuB,MAC1C,EAAuB,aAAuB,MAE9C,CAAC,EAAqB,GAA0B,eAAsB,MAEtE,CAAC,EAAQ,GAAa,eAAS,IAC/B,CAAC,EAAW,GAAgB,eAAS,IACrC,CAAC,EAAW,GAAgB,eAAS,IACrC,CAAC,GAAuB,IAA4B,eAAS,GAC7D,CAAC,EAAuB,IAA4B,eAAS,IAC7D,CAAC,GAAmB,IAAuB,eAA2C,MACtF,CAAC,GAAuB,IAC5B,eAA2C,MACvC,CAAC,GAAyB,IAA8B,eAAS,GACjE,CAAC,GAAqB,IAA0B,eAAS,GAKzD,GAAiC,cAAQ,IAAM,CACnD,GAAI,CAAC,EAAqB,MAAO,MAEjC,KAAM,CAAE,YAAY,EAEpB,MAAO,CACL,YAAa,IAAO,YAAP,GAAU,GAAiB,aACxC,WAAY,IAAO,YAAP,GAAU,GAAiB,YACvC,eAAgB,IAAO,YAAP,GAAU,GAAiB,kBAE5C,CAAC,IAKE,GAAuB,CAAC,GAAc,KAAiC,CAG3E,GAFA,GAAM,iBAEF,CAAC,IAAiB,YAAjB,EAAmB,SAAS,OAMjC,KAAM,IAAuB,GAAiB,EAE9C,EAAkB,QAAQ,QAAQ,GAAsB,EAAG,IAE3D,GAAyB,IACzB,EAAa,KAMT,GAAoB,cAAQ,IAAM,CACtC,GAAI,CAAC,EAAqB,MAAO,MAEjC,KAAM,IAAe,EAAoB,iBAAiB,IAAI,MACxD,GAAkB,MAAM,KAAK,IAAgB,IAEnD,MAAK,KAAe,YAAf,GAAiB,QAEY,GAAgB,IAAI,CAAC,GAAM,KAC3D,IAAK,iBAAiB,QAAU,IAAM,GAAqB,GAAG,KAQ9D,GAAK,UAAU,OAAO,uBAEf,GAAY,CAAE,KAAM,GAA2B,aAbnB,MAiBpC,CAAC,IAKE,GAAyB,IAAY,CACrC,CAAC,EAAU,SAAW,EAAa,SAEvC,EAAa,KAMT,GAAuB,IAAY,CACnC,CAAC,GAEL,GAAU,IACV,EAAa,MAMT,GAAmB,IAA+B,CACtD,GAAI,CAAC,IAAiB,YAAjB,EAAmB,UAAW,CAAC,IAAwB,YAAxB,EAA0B,SAAS,OAEvE,KAAM,CAAE,OAAK,SAAS,GAQtB,GAAI,OAAQ,SAAW,KAAQ,OAAS,KAAS,SAMjD,OAFA,GAAM,iBAEE,QACD,SAAU,CACb,KACA,WAEG,YAAa,CAChB,EAAkB,QAAQ,YAE1B,UAEG,aAAc,CACjB,EAAkB,QAAQ,YAE1B,cAGA,QAOA,GAAyB,IAAY,CACzC,KAAM,IAAY,GAAgB,YAAhB,EAAkB,QAEpC,GAAI,CAAC,GAAW,CACd,GAAuB,GACvB,OAIF,KAAM,IAAuB,GAAU,aACvC,GAAuB,KAMnB,GAA6B,IAAY,CAC7C,KAAM,IAAgB,GAAoB,YAApB,EAAsB,QAE5C,GAAI,CAAC,GAAe,CAClB,GAA2B,GAC3B,OAIF,KAAM,IAAuB,GAAc,aAC3C,GAA2B,KAM7B,sBAAU,IAAM,CACV,CAAC,KAAqB,YAArB,GAAuB,UAE5B,GAAqB,QAAU,GAAsB,QAErD,OACC,CAAC,KAKJ,gBAAU,IAAM,CACV,CAAC,KAAiB,YAAjB,GAAmB,UAExB,GAAiB,QAAU,GAAkB,QAE7C,OACC,CAAC,KAMJ,gBAAU,IAAM,CACV,CAAC,GAEL,GAAkB,QAAU,IAC3B,CAAC,IAQJ,gBAAU,IAAM,CACV,CAAC,GAGL,OAAO,WAAW,IAAM,CACtB,EAAU,KACT,KACF,CAAC,IAMJ,gBAAU,IAAM,CAOd,GAFA,EAAU,QAAU,EAEhB,EAAQ,CACV,IACA,EAAa,IAEb,OAGF,KACC,CAAC,IAMJ,gBAAU,IAAM,CACd,EAAa,QAAU,GACtB,CAAC,IAKJ,gBAAU,IAAM,CACd,GAAI,GAAU,CAAC,GAAa,CAAC,EAAW,CACtC,OAAO,WAAW,IAAM,CACtB,GAAyB,KACxB,IAEH,OAGF,GAAyB,KACxB,CAAC,EAAQ,EAAW,IAMvB,gBAAU,IAAM,CACd,EAAyB,QAAU,GAClC,CAAC,IAMJ,gBAAU,IAAM,CACd,GAAI,CAAC,IAAY,YAAZ,EAAc,SAAS,OAE5B,KAAM,CAAE,QAAS,IAAmB,EAE9B,CAAE,WAAY,IAAuB,GACrC,CAAE,WAAY,IAAqB,GAEnC,GAAwB,GAAiB,cAC7C,IAAI,MAGF,CAAC,IAEL,EAAuB,KACtB,CAAC,IAKJ,gBAAU,IAAM,CACd,KAAM,IAAiB,KAAS,IAAM,CACpC,KACA,MACC,KAEH,cAAO,iBAAiB,UAAW,IACnC,OAAO,iBAAiB,SAAU,IAE3B,IAAM,CACX,OAAO,oBAAoB,UAAW,IACtC,OAAO,oBAAoB,SAAU,MAEtC,IAEI,CACL,0BACA,YACA,SACA,YACA,SACA,gBACA,wBACA,yBACA,2BACA,2BACA,uBACA,yBCnTJ,GA9CoC,CAAC,CACnC,YACA,eACA,oBACA,OACA,eACI,CACJ,KAAM,GAAU,KAAU,wBAAyB,CACjD,uBAAwB,IAAS,QACjC,8BAA+B,IAAS,QACxC,sBAAuB,IAAS,WAChC,sBAAuB,IAAS,SAG5B,EACJ,uBAAK,UAAU,iBAAiB,QAAQ,YAAY,MAAM,8BACxD,wBAAM,EAAE,wJAIN,EACJ,uBAAK,UAAU,iBAAiB,QAAQ,YAAY,MAAM,8BACxD,wBAAM,EAAE,4FAIZ,MACE,2BACE,IAAK,EACL,UAAW,EACX,KAAK,SACL,QAAS,EAAY,aACT,EACZ,MACG,EAEI,CACC,iBAAkB,GAAG,OAFvB,MAML,IAAS,QAAU,EAAY,IC2BtC,GAhEkB,CAAC,CACjB,WACA,qBACA,0BACA,kBACA,OACA,wBAEA,yBACW,CACX,KAAM,GAAsB,aAAuB,MAEnD,sBAAU,IAAM,CACd,GAAI,CAAC,GAAY,CAAC,IAAmB,YAAnB,EAAqB,SAAS,OAEhD,KAAM,GAAU,SAAS,uBAAuB,eAGhD,GAFe,MAAM,KAAK,GAEtB,QAAS,GAAY,CACvB,GAAM,EAAS,CAEb,UAAW,GACX,QAAS,QACT,YAAa,GACb,YAAa,GACb,MAAO,GACP,MAAO,SAIX,EAAwB,IACvB,CAAC,EAAU,IAGZ,uBAAK,UAAU,6BACZ,EAAK,OAAS,MACb,gBAAC,GAAS,CAAC,KAAM,EAAM,cAAe,EAAU,oBAAqB,IAErE,gBAAC,GAAS,CACR,KAAM,EACN,mBAAoB,EACpB,cAAe,EACf,gBAAiB,EACjB,iBAAkB,IAA0B,EAAK,mBACjD,oBAAqB,IAGxB,CAAC,CAAC,IAAI,YAAJ,EAAM,cACP,uBAAK,UAAU,kCAAkC,IAAK,GACpD,uBAAK,UAAU,OACb,uBAAK,UAAU,qBACb,uBACE,UAAU,6BAEV,wBAAyB,CAAE,OAAQ,EAAK,oBCLxD,GArDmC,CAAC,CAAE,OAAM,gBAAe,yBAA0B,CACnF,KAAM,CAAE,cAAa,QAAO,MAAK,UAAW,EAEtC,CAAC,EAAY,GAAiB,eAAS,IACvC,CAAC,EAAU,GAAe,eAAS,IAEnC,EAAS,aAAyB,MAElC,EAAa,KAAU,2BAA4B,CACvD,gCAAiC,CAAC,IAG9B,EAAe,IAAY,CAC/B,EAAY,KAQd,sBAAU,IAAM,CACV,CAAC,GAAiB,GAEtB,EAAc,KACb,CAAC,IAEJ,gBAAU,IAAM,CACV,CAAC,GAAY,CAAC,GAElB,EAAoB,IACnB,CAAC,EAAe,IAGjB,gCACG,CAAC,GAAY,gBAAC,GAAM,MAEnB,IAAc,IACd,uBACE,UAAW,EACX,IAAK,EACL,UAAU,QACV,IAAK,EACL,IAAK,EACL,OAAQ,EACR,MAAO,EACP,OAAQ,M,oCC3Dd,GAAY,OAAO,eACnB,GAAa,OAAO,iBACpB,GAAoB,OAAO,0BAC3B,GAAsB,OAAO,sBAC7B,GAAe,OAAO,UAAU,eAChC,GAAe,OAAO,UAAU,qBAChC,GAAkB,CAAC,EAAK,EAAK,IAAU,IAAO,GAAM,GAAU,EAAK,EAAK,CAAE,WAAY,GAAM,aAAc,GAAM,SAAU,GAAM,UAAW,EAAI,GAAO,EACtJ,GAAiB,CAAC,EAAG,IAAM,CAC7B,OAAS,KAAQ,IAAM,GAAI,IACrB,GAAa,KAAK,EAAG,IACvB,GAAgB,EAAG,EAAM,EAAE,IAC/B,GAAI,GACF,OAAS,KAAQ,IAAoB,GAC/B,GAAa,KAAK,EAAG,IACvB,GAAgB,EAAG,EAAM,EAAE,IAEjC,MAAO,IAEL,GAAgB,CAAC,EAAG,IAAM,GAAW,EAAG,GAAkB,IAO9D,YAA2B,EAAW,EAAO,CAC3C,GAAI,GAAI,EACR,GAAI,EAAU,UAAY,EAAM,QAC9B,MAAO,GAET,KAAM,GAAa,IAAK,EAAU,OAAS,KAAO,OAAS,EAAG,aAAe,GACvE,EAAS,IAAK,EAAM,OAAS,KAAO,OAAS,EAAG,aAAe,GACrE,MAAO,GAAS,QAAU,EAAK,OAAS,EAAS,MAAQ,EAAK,IAEhE,YAA4B,EAAO,GAAI,CACrC,MAAO,IAAc,GAAe,GAAI,GAAO,CAC7C,OAAQ,EACR,MAAO,EACP,WAAY,GAAc,GAAe,GAAI,EAAK,YAAa,CAC7D,SAAU,EACV,MAAO,EACP,IAAK,MAIX,YAA2B,EAAW,EAAO,CAC3C,MAAO,GAAU,UAAY,EAAM,SAAW,CAAC,GAAQ,GAAmB,EAAU,MAAO,GAAmB,EAAM,OAEtH,YAA4B,EAAW,EAAO,CAC5C,GAAI,GAAI,EAAI,EAAI,EAChB,MAAO,GAAU,KAAO,EAAM,IAAM,EAAU,YAAc,EAAM,WAAe,IAAK,EAAU,OAAS,KAAO,OAAS,EAAG,SAAa,IAAK,EAAM,OAAS,KAAO,OAAS,EAAG,QAAY,IAAK,EAAU,OAAS,KAAO,OAAS,EAAG,UAAc,IAAK,EAAM,OAAS,KAAO,OAAS,EAAG,SAAW,EAAU,kBAAoB,EAAM,iBAAmB,EAAU,QAAU,EAAM,MAE1X,GAAI,IAAe,CACjB,QAAS,GACT,GAAI,GACJ,UAAW,GACX,gBAAiB,GACjB,MAAO,GACP,MAAO,GACP,QAAS,OACT,KAAM,GACN,QAAS,IAAM,GAEf,QAAS,IAAM,GAEf,OAAQ,IAAM,GAEd,QAAS,IAAM,GAEf,MAAO,IAAM,GAEb,cAAe,IAAM,GAErB,qBAAsB,IAAM,GAE5B,wBAAyB,IAAM,IAG7B,GAAY,CACd,QAAS,UACT,GAAI,UACJ,UAAW,UACX,gBAAiB,UACjB,MAAO,UACP,MAAO,UACP,QAAS,SAAgB,CAAC,OAAQ,UAClC,KAAM,YAAmB,QACzB,QAAS,QACT,QAAS,QACT,OAAQ,QACR,QAAS,QACT,MAAO,QACP,cAAe,QACf,qBAAsB,QACtB,wBAAyB,SAEvB,GAAW,aAAc,YAAgB,CAC3C,YAAY,EAAO,CACjB,MAAM,GACN,KAAK,cAAiB,GAAU,CAC9B,GAAI,GAAI,EACR,MAAQ,GAAM,GAAK,KAAK,OAAO,UAAY,KAAO,OAAS,EAAG,KAAK,EAAI,IAEzE,KAAK,cAAiB,GAAU,CAC9B,GAAI,GAAI,EACR,MAAQ,GAAM,GAAK,KAAK,OAAO,UAAY,KAAO,OAAS,EAAG,KAAK,EAAI,IAEzE,KAAK,oBAAuB,GAAU,CACpC,GAAI,GAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAEhC,OADC,GAAM,GAAK,KAAK,OAAO,gBAAkB,MAAgB,EAAG,KAAK,EAAI,GAC9D,EAAM,UACP,IAAS,YAAY,MACvB,GAAM,GAAK,KAAK,OAAO,QAAU,MAAgB,EAAG,KAAK,EAAI,GAC9D,UACG,IAAS,YAAY,QACvB,GAAM,GAAK,KAAK,OAAO,SAAW,MAAgB,EAAG,KAAK,EAAI,GAC/D,UACG,IAAS,YAAY,OACvB,GAAM,GAAK,KAAK,OAAO,UAAY,MAAgB,EAAG,KAAK,EAAI,GAChE,iBAIN,KAAK,2BAA8B,GAAU,CAC3C,GAAI,GAAI,EACR,MAAQ,GAAM,GAAK,KAAK,OAAO,uBAAyB,KAAO,OAAS,EAAG,KAAK,EAAI,IAEtF,KAAK,8BAAiC,GAAU,CAC9C,GAAI,GAAI,EACR,MAAQ,GAAM,GAAK,KAAK,OAAO,0BAA4B,KAAO,OAAS,EAAG,KAAK,EAAI,IAEzF,KAAK,aAAe,IAAM,CACxB,GAAI,MAAO,WAAa,YACtB,OACF,KAAM,GAAa,GAAc,GAAe,GAAI,KAAK,MAAM,MAAO,CACpE,QAAS,KAAK,MAAM,UAEtB,KAAK,eAAiB,GAAc,KAAK,UAAW,GACpD,KAAK,eAAe,GAAG,QAAS,KAAK,eACrC,KAAK,eAAe,GAAG,QAAS,KAAK,eACrC,KAAK,eAAe,GAAG,cAAe,KAAK,qBAC3C,KAAK,eAAe,GAAG,qBAAsB,KAAK,4BAClD,KAAK,eAAe,GAAG,wBAAyB,KAAK,+BACjD,MAAK,MAAM,OAAS,KAAK,MAAM,UACjC,KAAK,eAAe,YAAY,KAAM,GAAW,CAC3C,KAAK,MAAM,OACb,EAAO,aAAa,QAAS,KAAK,MAAM,OACtC,KAAK,MAAM,SACb,EAAO,aAAa,UAAW,KAAK,MAAM,YAIlD,KAAK,YAAc,IAAM,CACvB,GAAI,GACJ,MAAQ,GAAK,KAAK,iBAAmB,KAAO,OAAS,EAAG,UAAU,KAAK,KAAK,eAE9E,KAAK,aAAe,IAAM,CACxB,GAAI,GACH,GAAK,KAAK,iBAAmB,MAAgB,EAAG,YAAY,KAAM,GAAW,CACxE,KAAK,MAAM,GACb,EAAO,aAAa,KAAM,KAAK,MAAM,IAErC,EAAO,gBAAgB,MACrB,KAAK,MAAM,gBACb,EAAO,aAAa,QAAS,KAAK,MAAM,iBAExC,EAAO,gBAAgB,SACrB,KAAK,MAAM,MAAQ,KAAK,MAAM,KAAK,MACrC,EAAO,aAAa,QAAS,KAAK,MAAM,KAAK,MAAM,YAEnD,EAAO,gBAAgB,SACrB,KAAK,MAAM,MAAQ,KAAK,MAAM,KAAK,OACrC,EAAO,aAAa,SAAU,KAAK,MAAM,KAAK,OAAO,YAErD,EAAO,gBAAgB,UACrB,KAAK,MAAM,MACb,EAAO,aAAa,QAAS,KAAK,MAAM,OAExC,EAAO,aAAa,QAAS,wBAC3B,KAAK,MAAM,QACb,EAAO,aAAa,UAAW,KAAK,MAAM,SAE1C,EAAO,gBAAgB,cAG7B,KAAK,kBAAoB,IAChB,KAAK,eAEd,KAAK,YAAc,IAAM,CACvB,GAAI,GAAI,EAAI,EAAI,EAChB,GAAI,MAAO,MAAK,MAAM,SAAY,aAAe,KAAK,MAAM,UAAY,KAAM,CAC3E,GAAK,KAAK,iBAAmB,MAAgB,EAAG,YACjD,OAEF,GAAI,GAAW,GACf,KAAM,GAAO,CACX,QAAS,KAAK,MAAM,SAWtB,GATK,IAAK,KAAK,MAAM,OAAS,KAAO,OAAS,EAAG,aAC/C,GAAW,KAAK,MAAM,KAAK,WAAW,WAAa,EAC/C,SAAW,MAAK,MAAM,KAAK,YAC7B,GAAK,aAAe,KAAK,MAAM,KAAK,WAAW,OAE7C,OAAS,MAAK,MAAM,KAAK,YAC3B,GAAK,WAAa,KAAK,MAAM,KAAK,WAAW,MAG7C,EAAU,CACX,GAAK,KAAK,iBAAmB,MAAgB,EAAG,cAAc,GAC/D,OAED,GAAK,KAAK,iBAAmB,MAAgB,EAAG,aAAa,IAEhE,KAAK,aAAgB,GAAc,CACjC,KAAK,UAAY,GAEnB,KAAK,UAAY,KACjB,KAAK,eAAiB,KAExB,mBAAoB,CAClB,KAAK,eAEP,mBAAmB,EAAW,CACxB,GAAmB,EAAW,KAAK,QACrC,KAAK,eAEH,GAAkB,EAAW,KAAK,QACpC,KAAK,cAEH,GAAkB,EAAW,KAAK,QACpC,KAAK,cAGT,sBAAuB,CACrB,GAAI,GACH,GAAK,KAAK,iBAAmB,MAAgB,EAAG,UAEnD,QAAS,CACP,MAAuB,iBAAoB,MAAO,CAChD,UAAW,KAAK,MAAM,UACtB,MAAO,KAAK,MAAM,OACD,gBAAoB,MAAO,CAC5C,GAAI,KAAK,MAAM,GACf,UAAW,KAAK,MAAM,gBACtB,IAAK,KAAK,kBAIZ,GAAU,GACd,GAAQ,UAAY,GACpB,GAAQ,aAAe,GACvB,GAAQ,YAAc,CACpB,UAAW,GACX,MAAO,EACP,QAAS,EACT,OAAQ,EACR,UAAW,EACX,KAAM,GAER,GAAI,IAAkB,GC/OtB,KAAM,IAAe,IAuLrB,OArLmC,CAAC,CAClC,OACA,qBACA,kBACA,mBACA,gBACA,yBACI,CACJ,KAAM,CAAE,MAAK,eAAgB,EAEvB,CAAC,EAAY,GAAiB,eAAuB,MACrD,EAAkB,aAAuB,MAgB/C,GAAgB,CACd,IAAK,EACL,iBAZ2B,IAAY,CACnC,CAAC,IAAkB,YAAlB,EAAoB,UAEzB,EAAmB,QAAQ,SAU3B,kBAAmB,GAAmB,IAGxC,KAAM,GAAiB,KAAU,6BAA8B,CAC7D,gCAAiC,CAAC,IAG9B,EAAa,IAAY,CAWzB,EAF2B,OAAO,mBAElB,GAEpB,EAAW,OAAO,cAKd,EAAc,IAAY,C,MAC9B,GAAI,CAAC,OAAU,YAAV,EAAY,UAAM,0BAAE,IAAK,CAAC,IAAkB,YAAlB,EAAoB,SAAS,OAE5D,KAAM,GACJ,EAAmB,QAAQ,iBAAiB,wBAE1C,CAAC,IAAgB,YAAhB,EAAkB,SAIvB,EAAiB,QAAS,GAAU,CAClC,KAAM,IAAS,EAAM,cAAc,UAC7B,GAAgB,0BAElB,KAAM,YAAN,GAAQ,gBAAiB,GAAO,IAAI,WAAW,KACjD,GAAO,cAAc,YACnB,oDACA,OASR,sBAAU,IAAM,CACV,CAAC,IAAU,YAAV,EAAY,SAEjB,KACC,CAAC,IAKJ,gBAAU,IAAM,CACV,CAAC,IAAU,YAAV,EAAY,SAAU,CAAC,GAAmB,CAAC,GAGhD,OAAO,WAAW,IAAM,CACtB,EAAW,OAAO,aACjB,KACF,CAAC,EAAY,EAAiB,IAKjC,gBAAU,IAAM,CACd,GAAI,CAAC,IAAU,YAAV,EAAY,QAAQ,OAEzB,KAAM,GAA8B,EAAW,OAAO,EAEtD,GAAI,CAAC,EAAiB,CACpB,EAAS,SAAW,GACpB,OAGF,EAAS,SAAW,GACnB,CAAC,EAAY,IAKhB,gBAAU,IAAM,CACV,CAAC,IAAU,YAAV,EAAY,SAAU,GAE3B,KACC,CAAC,EAAiB,EAAY,IAKjC,gBAAU,IAAM,CACd,GAAI,CAAC,IAAU,YAAV,EAAY,QAAQ,OAEzB,KAAM,GAA8B,EAAW,OAAO,EAEtD,GAAI,CAAC,GAAmB,CAAC,EAAe,CACtC,EAAS,SAAW,GAOpB,WAAW,IAAM,CACf,EAAS,QACR,IAKH,IAEA,OAGF,EAAS,SAAW,GACnB,CAAC,EAAY,EAAe,IAE/B,gBAAU,IAAM,CACV,CAAC,EAAgB,SAAW,CAAC,GAEjC,EAAoB,IACnB,CAAC,EAAe,IAGjB,uBAAK,IAAK,EAAiB,UAAU,8BAClC,CAAC,GAAc,gBAAC,GAAM,MAEvB,gBAAC,GAAO,CACN,UAAW,EACX,gBAAgB,oCAChB,QAAS,EACT,MAAO,EACP,QAAU,GAAU,EAAc,GAClC,KAAM,CACJ,OAAQ,OACR,MAAO,QAET,QAAS,MCzLjB,GANgC,CAAC,CAAE,cAAe,CAChD,KAAM,GAAa,GAAY,SAE/B,MAAO,wBAAK,UAAW,kCAAkC,OCM3D,MAAe,CAAC,KAsHhB,OApHwB,IAAM,CAC5B,KAAM,GAAe,aAAuB,MACtC,EAAqB,aAAuB,MAC5C,EAAgB,aAA0B,MAC1C,EAAgB,aAA0B,MAE1C,CAAC,EAAgB,GAAqB,eAAqB,MAE3D,CAAE,YAAa,KAEf,CACJ,wBACA,yBACA,uBACA,sBACA,0BACA,0BACA,sBACA,YACA,SACA,YACA,QACA,iBACE,GAAY,CAAE,eAAc,mBAE1B,GAAgB,KAAU,WAAY,CAC1C,iBAAkB,EAClB,oBAAqB,EACrB,mBAAoB,CAAC,GAAU,CAAC,IAG5B,EAAsB,IAA6B,CACvD,KAAM,CAAE,eAAe,GAAO,OAE1B,MAAO,KAAe,WAE1B,IAAW,OAAS,EAAc,QAClC,GAAW,OAAS,EAAc,UAGpC,MACE,iBAAC,GAAS,CAAC,SAAU,CAAC,EAAQ,IAAK,GAChC,CAAC,CAAC,IAAK,YAAL,EAAO,SACR,uBACE,UAAW,GACX,gBAAiB,EACjB,MACE,CACE,cAAe,GAAG,MAClB,8BAA+B,GAAG,MAClC,0BAA2B,GAAG,OAGlC,SAAU,GACV,KAAK,eACL,IAAK,GAEL,uBAAK,UAAU,2BACb,gBAAC,GAAM,CACL,UAAU,mBACV,QAAS,IAAK,YAAL,EAAO,QAAS,EAEzB,aAAc,GACd,KAAI,GACJ,gBAAiB,GACjB,eAAc,GACd,aAAc,EACd,MAAO,GACP,SAAU,GAEV,uBAAK,KAAK,kBAAkB,UAAU,oBACpC,gBAAC,GAAU,CACT,UAAW,IAAY,YAAZ,GAAc,YACzB,KAAK,QACL,aAAc,KAIjB,EAAM,IAAK,IACV,gBAAC,GAAW,CAAC,IAAK,GAAK,oBACpB,CAAC,CAAE,eACF,gBAAC,GAAS,CACR,SAAU,GACV,mBAAoB,EACpB,KAAM,GACN,sBAAuB,EACvB,gBAAiB,EACjB,wBAAyB,EACzB,oBAAqB,MAM5B,EAAM,OAAS,GACd,gCACE,gBAAC,GAAU,CACT,UAAW,IAAY,YAAZ,GAAc,eACzB,UAAW,EACX,KAAK,aAEP,gBAAC,GAAU,CACT,UAAW,IAAY,YAAZ,GAAc,WACzB,UAAW,EACX,KAAK,eClGzB,GAZmC,CAAC,CAAE,QAAO,YAAW,eACjD,IAAK,YAAL,EAAO,QAGV,uBAAK,UAAU,OACZ,EAAM,IAAK,GACV,gBAAC,GAAU,CAAC,KAAM,EAAM,IAAK,EAAK,GAAI,UAAW,EAAW,UAAW,MALlD,KCiB7B,GAjBwC,CAAC,CAAE,OAAM,cAAa,eAAc,qBAAsB,CAChG,KAAM,GAAU,KACd,sGACA,CACE,sBAAuB,IAAgB,EAAK,OAIhD,MACE,2BACE,0BAAQ,UAAW,EAAS,QAAS,IAAM,EAAgB,EAAK,KAAM,GAAe,KAAK,UACvF,EAAK,SCXd,KAAM,IAA8B,CAAC,CAAE,OAAM,YAAW,eAAgB,CACtE,KAAM,CAAE,cAAe,EAEvB,MACE,wBAAK,UAAU,iBACb,qBAAG,KAAM,EAAK,IAAK,UAAU,uDAC1B,GAAa,uBAAK,UAAU,yBAAyB,EAAK,MAC3D,uBAAK,UAAU,uFAEb,wBAAM,wBAAyB,CAAE,OAAQ,EAAK,SAC9C,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,0CAQtB,OAAe,WAAK,IC4GpB,GArIqC,CAAC,CACpC,MACA,MAAO,EACP,MAAO,EACP,aACA,WAAY,EACZ,eACA,cACA,iBACA,YACA,aAAc,EACd,YACA,kBACI,CACJ,KAAM,CACJ,gBACA,eACA,WACA,eACA,QACA,QACA,YACA,yBACA,iBACE,GAAc,CAChB,MACA,YAAa,WACb,eACA,eACA,oBACA,cACA,oBACE,GAAuB,GAAgB,EAAc,kCAGnD,GAAa,CAAC,GAAc,KAA+B,CAC/D,KAAM,IAAkB,GAAI,iBAAgB,OAAO,SAAS,QAC5D,GAAgB,IAAI,WAAY,IAC9B,KAAiB,IAAM,CAAC,GAAgB,IAAI,iBAC3C,GAAgB,IAAI,eAAgB,IAEvC,OAAO,QAAQ,aAAa,KAAM,KAAM,IAAI,GAAgB,eAGxD,GAAoB,IAAwB,CAKhD,GAAS,IAET,GAAsB,IAEtB,GAAW,GAAO,IAGd,GAAwB,IAAsD,C,OAClF,KAAM,IAAQ,QAAK,YAAL,GAAO,UAAM,4BAAE,MAEzB,CAAC,IAAS,KAAU,IAExB,GAAiB,KAGnB,MACE,wBAAK,UAAU,mBACZ,GACC,uBAAK,UAAU,OACb,uBAAK,UAAU,yBAEb,gBAAC,GAAM,CACL,MAAO,EACP,UAAW,GAAG,GACZ,EACA,8CAEF,KAAK,SACL,UAAU,8BACV,YAAa,EACb,eAAgB,KAElB,uBAAK,UAAU,kBACb,wBAAM,UAAU,QACb,GAAG,GAAgB,EAAc,+CAEpC,sBAAI,UAAU,qCACX,EAAW,IAAK,IACf,gBAAC,GAAc,CACb,IAAK,GAAS,aACd,KAAM,GACN,YAAa,EACb,aAAc,EACd,gBAAiB,UAQ/B,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACX,IAAY,CAAC,IAAK,YAAL,EAAO,UACpB,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,EACN,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAKpD,gBAAC,GAAS,CAAC,MAAO,EAAO,UAAW,EAAW,UAAW,MAI7D,GACC,uBAAK,UAAU,YACb,uBAAK,UAAU,yBACb,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,EAAc,iCACrC,KAAK,SACL,UAAW,EACX,QAAS,QCxEvB,GAtDoC,CAAC,CAAE,UAAS,YAAW,kBAAmB,CAC5E,KAAM,CAAC,EAAU,GAAe,eAAkB,IAC5C,CAAC,EAAU,GAAe,eAAkB,IAE5C,EAAS,SAAS,cAAc,UAEhC,EAAiB,GAAY,CAAC,EAC9B,EAAa,CAAC,GAAY,CAAC,EAE3B,EAAwB,SAAY,CACxC,GAAI,CACF,KAAM,OAAM,GAAW,KAAM,GAAa,CACpC,EAAS,GACX,WAAW,IAAM,CACf,EAAO,IAAM,EAAS,IACtB,SAAS,KAAK,YAAY,GAE1B,EAAY,KACX,EAAU,KACJ,EAAS,QAAU,KAC5B,EAAY,WAGhB,CAIA,EAAY,MAIhB,sBAAU,IAAM,CACd,KACC,IAGD,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,8BACZ,GAAc,gBAAC,GAAM,MACrB,GACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,gBACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,eAGjD,GAAkB,kDCvDtB,KAAM,IAAwB,sBC6BrC,OAhBmC,CAAC,CAAE,QAAO,QAAO,kBAAiB,qBAEjE,gCACE,uBAAK,UAAU,kBAEb,wBAAM,wBAAyB,CAAE,OAAQ,MAE3C,sBAAI,UAAU,uBACX,EAAM,IAAK,GACV,gBAAC,GAAQ,eAAC,IAAK,EAAK,GAAI,gBAAiB,EAAiB,gBAAiB,GAAqB,OChB1G,KAAM,IAAqF,CAAC,CAC1F,QACA,MACA,SACA,aACA,OACA,YACA,kBACA,qBACI,CACJ,GAAI,CAAC,GAAS,CAAC,EAAK,MAAO,MAE3B,KAAM,GAAoB,GAAgB,EAAiB,wBAE3D,MACE,uBAAI,UAAU,gDACZ,qBAAG,UAAU,oCAAoC,KAAM,EAAK,OAAQ,GAClE,uBAAK,UAAU,2JACZ,GAED,GAAmB,GAAe,qBAAG,UAAU,qCAAqC,GACrF,GACC,uBAAK,UAAU,QACb,qBAAG,UAAU,0CAA0C,GACvD,uBAAK,UAAU,qFACZ,EAAU,mBASzB,OAAe,WAAK,IClCb,KAAM,IAAoC,CAAC,CAAE,YAAW,WAAY,CACzE,GAAI,CAAC,EAAW,MAAO,MAEvB,KAAM,GAAgB,SAChB,EAAgB,+iBAEtB,MACE,wBAAK,UAAU,QACb,qBAAG,UAAU,iBAAiB,GAC7B,EAAU,IAAI,CAAC,EAAM,IAEpB,uBAAK,UAAU,yBAAyB,IAAK,GAC3C,gBAAC,GAAI,CACH,KAAK,cACL,QAAQ,YACR,IAAK,EACL,IAAK,EACL,UAAU,8BAEZ,qBAAG,UAAU,0BAA0B,KAAM,EAAK,IAAK,OAAQ,EAAK,QAClE,qBAAG,UAAU,uBAAuB,EAAK,YCuGrD,OArHoC,CAAC,CACnC,MACA,QACA,WAAY,EACZ,aAAc,EACd,cACA,YACA,WACA,kBACA,eACA,2BACI,CACJ,KAAM,CACJ,eACA,gBACA,QACA,wBACA,gBACA,WACA,YACA,MAAO,EACP,aAAc,IACZ,GAAc,CAChB,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,MACxC,cAAe,QACf,aAAc,GACd,oBACA,cACA,WACA,eACA,0BAGI,GAAkB,EAAM,OAAS,GAAK,GAAgB,IAAc,GACpE,EAAqB,EAAM,SAAW,GAAK,IAAc,GACzD,GAAY,EAAM,SAAW,GAAK,EAClC,GAAe,CAAE,mBAAiB,4BAExC,gBAAU,IAAM,CACV,GACF,QAAO,QAAQ,aAAa,KAAM,KAAM,UAAU,KAClD,EAAsB,KAEvB,IAEH,KAAM,IAAW,IAAM,CACrB,OAAO,QAAQ,aAAa,KAAM,KAAM,UAAU,KAClD,KAGF,MACE,wBACE,UACG,IAAmB,CAAC,GACrB,GACC,IAAa,CAAC,GAAa,CAAC,GAC5B,GAAgB,CAAC,EACd,kBACA,aAGN,uBAAK,UAAU,OACb,uBAAK,UAAU,UAAU,EAAY,gBAAC,GAAM,MAAM,MAClD,uBAAK,UAAU,yBACZ,GACC,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,GAAa,gBAAiB,uBACpD,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAKnD,IAAa,CAAC,GAAa,CAAC,EAC3B,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,GAAa,gBAAiB,oBACpD,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAGhD,KAEH,IAAmB,CAAC,EACnB,gBAAC,GAAS,CACR,MAAO,EACP,WAAY,EACZ,gBAAiB,GACjB,MAAO,GAAgB,GAAa,gBAAiB,yBACrD,gBAAiB,IAEjB,KAEH,GACC,gBAAC,GAAS,CACR,UAAW,EACX,MAAO,GAAgB,GAAa,yBAA0B,uBAGjE,GAAgB,CAAC,GAAa,GAC7B,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,GAAa,gBAAiB,yBACrD,KAAK,SACL,UAAW,EACX,QAAS,KAET,SC/Fd,KAAM,IAAwB,wBACxB,GAAoB,oBACpB,GAAe,YACf,GAAkB,eAClB,GAAc,WACd,GAAe,YAEf,GAAkD,CAAC,CAAE,cAEvD,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBAAyB,KAM1C,GAA0B,CAAC,CAC/B,KACA,aACA,WACA,cACA,UACA,UACA,eACA,aAGE,sBAAI,UAAU,iCACZ,0BAAQ,KAAK,SAAS,GAAI,EAAE,cAAe,EAAY,UAAU,8BAC/D,gBAAC,GAAI,CACH,KAAM,EACN,QAAS,EACT,IAAK,EACL,IAAK,EACL,UAAU,yEAEZ,uBACE,UAAW,IAAa,iBAAmB,GAAK,cAEhD,wBAAyB,CAAE,OAAQ,GAAgB,EAAc,QAgH3E,OAzG0D,CAAC,CAAE,eAAc,eAAgB,CACzF,KAAM,GAA6B,CAAC,EAAe,IAAkB,CACnE,OAAO,eAAe,QACpB,IAAS,YACL,iBAAiB,cACjB,iBAAiB,UACrB,IAKE,EAAyB,GAAgB,CAC7C,KAAM,GAAM,GAAI,KAAI,OAAO,SAAS,MACpC,EAAI,aAAa,IAAI,MAAO,GAC5B,OAAO,QAAQ,aAAa,KAAM,GAAI,EAAI,aAG5C,gBAAU,IAAM,CAEd,KAAM,GAAoB,SAAS,eAAe,IAC5C,EAAgB,SAAS,eAAe,IAExC,EAAc,SAAS,eAAe,IACtC,EAAU,SAAS,eAAe,IAGlC,EAAe,IAAM,CACzB,EAAkB,UAAU,OAAO,IACnC,EAAc,UAAU,IAAI,KAGxB,EAAW,IAAM,CACrB,EAAc,UAAU,OAAO,IAC/B,EAAkB,UAAU,IAAI,KAI5B,EAAsB,IAAM,CAChC,EAAY,UAAU,IAAI,IAC1B,EAAQ,UAAU,OAAO,IACzB,KAGI,EAAkB,IAAM,CAC5B,EAAQ,UAAU,IAAI,IACtB,EAAY,UAAU,OAAO,IAC7B,KAIF,EAAY,iBAAiB,QAAS,IAAM,CAC1C,IACA,EAA2B,YAAkB,QAC7C,EAA2B,QAAc,SACzC,EAAsB,cAGxB,EAAQ,iBAAiB,QAAS,IAAM,CACtC,IACA,EAA2B,QAAc,QACzC,EAA2B,YAAkB,SAC7C,EAAsB,UAKxB,KAAM,GAAW,GADE,iBAAgB,OAAO,SAAS,QAC3B,IAAI,OAExB,IAAa,OACf,IACS,KAAa,YAAc,CAAC,IACrC,KAED,IAEH,KAAM,CAAE,OAAM,gBAAiB,EAE/B,MACE,iBAAC,GAAe,KACd,sBAAI,UAAU,sBACZ,gBAAC,GAAG,CACF,GAAI,GACJ,WAAY,OAAO,KACnB,SAAU,EAAK,KACf,YAAa,EAAK,QAClB,QAAS,EAAK,IACd,QAAS,EAAK,IACd,aAAc,EACd,QAAQ,0BAEV,gBAAC,GAAG,CACF,GAAI,GACJ,WAAY,OAAO,KACnB,SAAU,EAAa,KACvB,YAAa,EAAa,QAC1B,QAAS,EAAa,IACtB,QAAS,EAAa,IACtB,aAAc,EACd,QAAQ,0BCxKX,KAAM,IAAqB,GAAkB,CAClD,gBAAU,IAAM,CAGd,KAAM,GAAW,SAAS,eAAe,4BAA4B,MAAU,KAAQ,MACjF,EAAW,SAAS,eAAe,yBAAyB,MAAU,KAAQ,MAC9E,EAAa,SAAS,eAC1B,8BAA8B,MAAU,KAAQ,MAI5C,EAAkB,SAAS,eAAe,0BAA0B,KACpE,EAAe,SAAS,eAAe,uBAAuB,MAAU,KAGxE,EAAa,SAAS,eAAe,wBAAwB,MAAU,KAIvE,EAA4B,IAAM,CACtC,EAAW,UAAU,OAAO,cAC5B,EAAS,UAAU,OAAO,SAC1B,EAAS,UAAU,OAAO,QAC1B,EAAW,UAAU,OAAO,UAC5B,EAAW,UAAU,OAAO,UAG9B,EAAS,iBAAiB,QAAS,IAAM,CACvC,MAIE,GACF,EAAgB,iBAAiB,QAAS,IAAM,CAC9C,MAIA,GACF,EAAa,iBAAiB,QAAS,IAAM,CAC3C,OAGH,KCnCL,OAJoD,CAAC,CAAE,WAAU,MAAK,YAC7D,uBAAK,UAAW,UAAU,eAAiB,KAAW,GCiB/D,GAlBgE,CAAC,CAAE,cAE/D,uBAAK,UAAU,OACb,uBAAK,UAAU,6CACb,uBAAK,UAAU,sBACb,uBAAK,UAAU,gBACb,uBAAK,UAAU,+EACb,gBAAC,GAAa,CAAC,IAAI,KAAK,OAAO,KAC5B,QCEjB,GAV8C,CAAC,CAAE,cAE7C,uBAAK,UAAU,OACb,gBAAC,GAAa,CAAC,IAAI,KAAK,OAAO,KAC5B,IC8BT,GA7BgE,CAAC,CAC/D,YACA,eACA,UACI,CACJ,KAAM,CAAE,aAAc,EAEtB,MACE,wBACE,GAAI,4BAA4B,MAAU,KAAQ,KAClD,UAAU,0BAEV,0BAAQ,KAAK,SAAS,GAAI,yBAAyB,MAAU,KAAQ,MACnE,2BACG,GAAgB,EAAc,iCAC/B,gBAAC,GAAI,CACH,KAAM,EAAU,KAChB,QAAS,EAAU,QACnB,IAAK,EAAU,IACf,IAAK,EAAU,IACf,UAAU,oCACV,GAAI,8BAA8B,MAAU,KAAQ,WClBhE,GAR0E,CAAC,CAAE,UAEzE,uBAAK,GAAI,0BAA0B,IAAQ,UAAU,2BACnD,uBAAK,UAAU,oCCoBrB,GApB0E,CAAC,CAAE,YAAW,UAAW,CACjG,KAAM,CAAE,SAAU,EAElB,MACE,2BACE,KAAK,SACL,GAAI,uBAAuB,MAAU,IACrC,UAAU,6GAEV,gBAAC,GAAI,CACH,KAAM,EAAM,KACZ,QAAS,EAAM,QACf,IAAK,EAAM,IACX,IAAK,EAAM,IACX,UAAU,gCCflB,GAJgD,CAAC,CAAE,cAC1C,uBAAK,UAAU,sDAAsD,GC0C9E,GAlCsD,CAAC,CACrD,mBAAmB,GACnB,OACA,KACA,OACA,gBACA,iBACA,QACA,oBACI,CAEJ,KAAM,GAAa,GAAG,KAAQ,IAE9B,MACE,yBAAM,UAAU,eAAe,MAAM,IACnC,yBACE,UAAU,eACV,KAAK,WACL,GAAI,EACJ,KAAM,EACN,MAAO,EACP,eAAgB,EAChB,SAAU,IAEZ,yBACE,QAAS,EACT,UAAW,GAAG,EAAmB,oBAAsB,iBAEtD,KCgBT,GA1C4E,CAAC,CAC3E,UACA,OACA,oBACI,CACJ,KAAM,GAAgB,EAAQ,MAAM,EAAG,GACjC,EAAkB,EAAQ,GAAG,MAC7B,EAAgB,EAAQ,GAAG,MAC3B,EAAkB,EAAQ,GAAG,MAC7B,EAAc,EAAQ,GAAG,MAEzB,EAAW,CACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,GAGL,MACE,yBAAM,UAAW,gBAAgB,MAAU,KACxC,EAAS,IAAK,GAAS,CACtB,KAAM,GAAY,GAAqB,EAAK,OAE5C,MACE,iBAAC,GAAW,CAAC,IAAK,GAChB,gBAAC,GAAc,CACb,KAAM,EACN,GAAI,GAAG,MAAU,IACjB,KAAM,EACN,cAAe,EACf,eAAgB,EAAK,UACrB,MAAO,EAAK,KACZ,eAAgB,SCA9B,GAjCoE,CAAC,CACnE,UACA,OACA,oBACI,CACJ,KAAM,GAAgB,EAAQ,MAAM,EAAG,GACjC,EAAU,EAAQ,GAAG,MAErB,EAAW,CAAC,GAAG,EAAe,GAAG,GAEvC,MACE,yBAAM,UAAW,gBAAgB,MAAU,KACxC,EAAS,IAAK,GAAS,CACtB,KAAM,GAAY,GAAqB,EAAK,OAE5C,MACE,iBAAC,GAAW,CAAC,IAAK,GAChB,gBAAC,GAAc,CACb,KAAM,EACN,GAAI,GAAG,MAAU,IACjB,KAAM,EACN,cAAe,EACf,eAAgB,EAAK,UACrB,MAAO,EAAK,KACZ,eAAgB,SCxB9B,KAAM,IAAwB,wBACxB,GAAsB,sBAiC5B,OA/BoE,CAAC,CACnE,OACA,UACA,YACA,oBAGE,uBAAK,GAAI,wBAAwB,MAAU,IAAQ,UAAU,UAC3D,uBAAK,GAAI,GAAuB,UAAW,IACzC,gBAAC,GAAwB,CAAC,KAAM,IAChC,gBAAC,GAAwB,CAAC,UAAW,EAAW,KAAM,KAExD,uBAAK,GAAI,GAAqB,UAAW,IACtC,IAAS,YACR,gBAAC,GAAyB,CACxB,KAAM,YACN,QAAS,EACT,eAAgB,IAGlB,gBAAC,GAAqB,CACpB,KAAM,QACN,QAAS,EACT,eAAgB,MCP5B,GApBoD,CAAC,CACnD,UACA,YACA,eACA,OACA,oBAGE,uBAAK,GAAI,WAAW,MAAU,IAAQ,UAAU,aAC9C,gBAAC,GAAmB,CAAC,UAAW,EAAW,aAAc,EAAc,KAAM,IAC7E,gBAAC,GAAqB,CACpB,QAAS,EACT,UAAW,EACX,KAAM,EACN,eAAgB,KC2ExB,GArFwF,CAAC,CACvF,YACA,OACA,OACA,WACA,OACA,UACA,oBACI,CACJ,KAAM,GAAc,aAAO,MACrB,CAAC,EAAQ,GAAa,eAAS,IAErC,gBAAU,IAAM,CACd,KAAM,GAA8B,GAAU,CACxC,EAAY,SAAW,CAAC,EAAY,QAAQ,SAAS,EAAM,SAC7D,EAAU,KAId,gBAAS,iBAAiB,QAAS,GAE5B,IAAM,CACX,SAAS,oBAAoB,QAAS,KAEvC,IAGH,KAAM,GAAiB,IAAM,CAC3B,EAAU,CAAC,IAGb,MACE,wBAAK,UAAU,4DAA4D,IAAK,GAE9E,uBACE,GAAI,4BAA4B,KAAY,KAAQ,IACpD,UAAW,6BAA6B,qBAExC,uBAAK,UAAU,qBACb,0BACE,KAAK,SACL,QAAS,EACT,GAAI,yBAAyB,KAAY,KAAQ,KAEhD,EACD,gBAAC,GAAI,CACH,KAAM,EAAU,KAChB,QAAS,EAAU,QACnB,IAAK,EAAU,IACf,IAAK,EAAU,IACf,UAAW,qCAAqC,EAAS,aAAe,KACxE,GAAI,8BAA8B,KAAY,KAAQ,SAO9D,uBACE,GAAI,oBAAoB,KAAY,KAAQ,IAC5C,UAAW,yBAAyB,KAAY,EAAS,QAAU,YAElE,EAAQ,IAAK,GAAS,CACrB,KAAM,GAAY,GAAqB,EAAK,OAE5C,MACE,iBAAC,GAAW,CAAC,IAAK,GAChB,gBAAC,GAAc,CACb,iBAAgB,GAChB,KAAM,EACN,GAAI,GAAG,KAAY,IACnB,KAAM,EACN,cAAe,EACf,eAAgB,EAAK,UACrB,MAAO,EAAK,KACZ,eAAgB,UCWhC,GAvF8E,CAAC,CAC7E,UACA,YACA,OACA,oBACI,CAEJ,KAAM,CAAE,aAAc,EAGhB,EAAoB,EAAQ,MAAM,EAAG,GAGrC,EAAsB,EAAQ,GAAG,MACjC,EAAoB,EAAQ,GAAG,MAC/B,EAAmB,EAAQ,GAAG,MAC9B,EAAkB,EAAQ,GAAG,MAG7B,EAAyB,EAAQ,GAAG,KACpC,EAAuB,EAAQ,GAAG,KAClC,EAAsB,EAAQ,GAAG,KACjC,EAAqB,EAAQ,GAAG,KAEtC,MACE,yBAAM,UAAW,gBAAgB,MAAW,wBACzC,EAAkB,IAAK,GAAS,CAC/B,KAAM,GAAY,GAAqB,EAAK,OAE5C,MACE,iBAAC,GAAW,CAAC,IAAK,GAChB,gBAAC,GAAc,CACb,KAAM,EACN,GAAI,GAAG,MAAW,IAClB,KAAM,EACN,cAAe,EACf,eAAgB,EAAK,UACrB,MAAO,EAAK,KACZ,eAAgB,OAMxB,gBAAC,GAA+B,CAC9B,UAAW,EACX,KAAM,EACN,KAAM,EACN,SAAU,GACV,KAAM,EACN,QAAS,EACT,eAAgB,IAGlB,gBAAC,GAA+B,CAC9B,UAAW,EACX,KAAM,EACN,KAAM,EACN,SAAU,GACV,KAAM,EACN,QAAS,EACT,eAAgB,IAGlB,gBAAC,GAA+B,CAC9B,UAAW,EACX,KAAM,EACN,KAAM,GACN,SAAU,GACV,KAAM,EACN,QAAS,EACT,eAAgB,IAGlB,gBAAC,GAA+B,CAC9B,UAAW,EACX,KAAM,EACN,KAAM,GACN,SAAU,GACV,KAAM,EACN,QAAS,EACT,eAAgB,MC9BxB,GAnDsE,CAAC,CACrE,UACA,YACA,OACA,oBACI,CAEJ,KAAM,CAAE,aAAc,EAGhB,EAAoB,EAAQ,MAAM,EAAG,GAGrC,EAAc,EAAQ,GAAG,MAGzB,EAAiB,EAAQ,GAAG,KAElC,MACE,yBAAM,UAAW,gBAAgB,MAAW,wBACzC,EAAkB,IAAK,GAAS,CAC/B,KAAM,GAAY,GAAqB,EAAK,OAE5C,MACE,iBAAC,GAAW,CAAC,IAAK,GAChB,gBAAC,GAAc,CACb,KAAM,EACN,GAAI,GAAG,MAAW,IAClB,KAAM,EACN,cAAe,EACf,eAAgB,EAAK,UACrB,MAAO,EAAK,KACZ,eAAgB,OAMxB,gBAAC,GAA+B,CAC9B,UAAW,EACX,KAAM,EACN,KAAM,GACN,SAAU,GACV,KAAM,EACN,QAAS,EACT,eAAgB,MCtBxB,GA3BsD,CAAC,CACrD,UACA,YACA,OACA,oBAGE,uBAAK,GAAI,WAAW,MAAW,IAAQ,UAAU,mBAC9C,IAAS,YACR,gBAAC,GAA0B,CACzB,QAAS,EACT,UAAW,EACX,KAAM,EACN,eAAgB,IAGlB,gBAAC,GAAsB,CACrB,QAAS,EACT,UAAW,EACX,KAAM,EACN,eAAgB,KCS1B,GA7BgE,CAAC,CAC/D,YACA,aACA,eACA,cAAc,OACV,CACJ,KAAM,CAAE,iBAAkB,EAE1B,MACE,iBAAC,GAAa,CAAC,IAAI,KAAK,OAAO,KAC7B,uBAAK,UAAU,sDAAqD,cAAc,SAAS,KACzF,gBAAC,GAAI,CACH,KAAM,EAAc,KACpB,QAAS,EAAc,QACvB,IAAK,EAAc,IACnB,IAAK,EAAc,IACnB,UAAU,yDAEZ,uBAAK,UAAU,sBAAsB,KAAK,QAAO,YAAW,aACzD,GAAgB,EAAc,uCAC9B,EAAa,KAAO,IACpB,EAAa,wBAAM,UAAU,kBAAkB,IAAI,MAAwB,KAC3E,GAAgB,EAAc,2CCVzC,GAbgD,CAAC,CAAE,eAAc,OAAM,cAAc,OAEjF,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,GACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,YAAe,KCLvB,KAAM,IAAyC,CAAC,CAC9C,MACA,QACA,WAAY,EACZ,eACA,cACA,UACA,WACA,iBACA,WACA,YACA,eACI,CACJ,KAAM,CACJ,eACA,gBACA,QACA,sCACA,uCACA,qCACA,sCACA,qCACA,sCACA,WACA,aACA,MAAO,IACL,cAAc,CAChB,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,oBACxC,cAAe,QACf,aAAc,GACd,oBACA,cACA,cAAe,CAAE,WACjB,qBAAsB,GACtB,WACA,iBACA,WACA,cAII,GAAiB,IAAK,YAAL,EAAO,UAAW,GAAK,GAGxC,GACJ,OAAO,aAAa,QAAQ,gCAAkC,KAC1D,GACJ,OAAO,aAAa,QAAQ,+BAAiC,KAGzD,GAAgB,IAChB,IAAqC,CAAC,GACjC,EAEL,GACK,GAGF,EAGT,iBAAU,IAAM,CACV,IAAqC,CAAC,IACxC,IAEE,IACF,KAGE,CAAC,IAAqC,CAAC,IACzC,KAED,CAAC,GAAkC,KAGpC,wCACG,GAAY,oBAAC,YAAW,CAAC,aAAc,EAAc,KAAK,0BAE1D,IACC,oBAAC,YAAW,CAAC,aAAc,EAAc,KAAK,6BAG/C,GACC,2BAAK,UAAU,oBACb,oBAAC,OAAM,OAGT,wCACE,oBAAC,gBAAe,CAAC,KAAM,QAAQ,KAAM,aAAc,EAAc,UAAW,IAC5E,oBAAC,YAAW,CACV,KAAM,QAAQ,KACd,aAAc,EACd,MAAO,EACP,UAAW,KAKhB,GACC,oBAAC,OAAM,CACL,SAAS,YACT,MAAO,gBAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,KACT,WAAY,oBAAoB,QAAQ,WAOlD,OAAe,KCwgBf,GA1kB8C,CAAC,CAC7C,UACA,MACA,aACA,eACA,cACA,UACA,WACA,YACA,gBACI,CACJ,GAAc,CACZ,MACA,YAAa,SAAS,cAAc,IAAI,MACxC,cACA,cAAe,CAAE,WACjB,qBAAsB,KAIxB,KAAM,CAAE,cAAa,OAAQ,EACvB,CAAC,EAAW,GAAc,eAAS,IAGnC,EAA+B,GAAgC,GAC/D,CAAC,EAAuB,GAA4B,eAAS,GAG7D,CAAC,EAAoB,GAAyB,eAAc,IAG5D,CAAC,GAAoB,IAAyB,eAAS,EAAW,aAClE,CAAC,EAAmB,IAAwB,eAAS,EAAW,YAGhE,CAAC,GAAc,IAAmB,eAAkB,IACpD,CAAC,GAAe,IAAoB,eAAkB,IAGtD,CAAC,GAAuB,IAA4B,eAAkB,IACtE,CAAC,GAAU,IAAe,eAAkB,IAG5C,CAAC,GAAY,IAAiB,eAAiB,IAC/C,CAAC,GAAyB,IAA8B,eAAkB,IAG1E,GAAkB,QAIlB,GAAa,EAAmB,OAAS,EAEzC,GAAa,GACb,GAAiB,GACjB,GAAkB,GAClB,GAAqB,IAAyB,CAAC,GAC/C,GAAkB,CAAC,IAAgB,GAEnC,GACJ,CAAC,IAAgB,IAAc,KAAuB,EAGlD,GAAwB,GAA2B,IACnD,GAAuB,GAA2B,IAIxD,GAAkB,IAGlB,KAAM,IAAwC,MAC5C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,EAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAuC,MAC3C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,EAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAsC,MAC1C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,EAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAyC,MAC7C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,EAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAAwC,MAC5C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,EAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAAuC,MAC3C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,EAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,GAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAA0B,IAA+C,CAC7E,KAAM,CAAE,WAAS,UAAU,GAAM,OAC3B,GAAc,GACd,GAAgB,GAGhB,GAA2B,OAAH,wBACzB,GAAqB,EACvB,IAAc,KAEjB,EAAyB,IAGzB,GAAoB,GAAa,IACjC,KAAM,IAAQ,EAAY,KAAO,GAAY,GAGzC,IAAyB,CAAC,IAC5B,GAAqC,GAA0B,IAG7D,IACF,GAAoC,GAA0B,IAG5D,CAAC,IAAyB,CAAC,IAC7B,GAAsC,GAA0B,KAI9D,GAAc,IAAM,CACpB,IAAyB,CAAC,IAC5B,GAAqC,GAEnC,IACF,GAAoC,GAGlC,CAAC,IAAyB,CAAC,IAC7B,GAAsC,IAK1C,gBAAU,IAAM,CACd,MACC,CAAC,GAAsB,KAG1B,KAAM,IAAmB,IACnB,IAAyB,CAAC,GACrB,GAAsC,EAAuB,IAElE,GACK,GAAqC,EAAuB,IAG9D,GAAuC,EAAuB,IAGjE,GAAe,IAAM,CACrB,EACF,GAAW,IACX,MAEA,GAAW,IACX,EAAW,WAAa,KACxB,EAAW,KACX,GAAgB,QAIpB,MACE,iCACE,uBAAK,UAAU,aACb,gBAAC,GAAmB,KAClB,gBAAC,GAAsB,CACrB,WAAY,GACZ,cAAe,GACf,qBAAsB,GACtB,aAAc,EACd,KAAM,GACN,UAAW,IAGb,gBAAC,GAAa,CACZ,QAAS,EACT,UAAW,EACX,aAAc,EACd,KAAM,GACN,eAAgB,KAElB,gBAAC,GAAc,CACb,QAAS,EACT,UAAW,EACX,KAAM,GACN,eAAgB,MAInB,IACC,gBAAC,GAAmB,CAClB,UAAW,EACX,WAAY,GACZ,aAAc,EACd,YAAY,0BAKlB,uBAAK,UAAU,kBAAkB,GAAG,eAClC,uBAAK,UAAU,OACb,uBAAK,UAAU,8BACZ,IACC,gBAAC,GAAe,CACd,KAAM,GACN,aAAc,EACd,UAAW,IAIf,0BACE,KAAK,SACL,QAAS,GAAY,cACR,EAAY,mBAAqB,kBAC9C,UAAW,GAAG,EAAa,YAAc,wCAExC,EACC,gBAAC,GAAI,CACH,KAAM,EAAY,KAClB,QAAS,EAAY,QACrB,IAAK,EAAY,IACjB,IAAK,EAAY,IACjB,UAAU,gDAGZ,gBAAC,GAAI,CACH,KAAM,EAAI,KACV,QAAS,EAAI,QACb,IAAK,EAAI,IACT,IAAK,EAAI,IACT,UAAU,gDAGb,EACG,GAAgB,EAAc,0BAC9B,GAAgB,EAAc,4BAKvC,EACC,gCACG,IACC,uBAAK,UAAU,OACb,uBAAK,UAAU,8BACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,YAAY,0BAKpB,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,gBAAC,GAAM,CACL,QAAS,EACT,KAAM,GACN,aAAc,EACd,YAAa,EACb,IAAK,GAA2B,IAA6B,IAC7D,IAAK,GAA2B,IAA6B,IAC7D,gBAAe,GACf,MAAO,EACP,QAAO,GACP,UAAS,QAMjB,gBAAC,GAAU,KACR,IACC,uBAAK,UAAW,oBAAoB,GAAa,OAAS,MACxD,gBAAC,GAAM,OAIV,IACC,gBAAC,GAAW,CACV,aAAc,EACd,KAAK,wBACL,YAAY,qBAIf,IACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,YAAY,wBAIf,IACC,gBAAC,GAAW,CACV,KAAM,GACN,aAAc,EACd,MAAO,EACP,UAAW,IAId,IACC,gBAAC,GAAM,CACL,SAAS,UACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,QAAS,IAAM,GAAgB,EAAW,YAC1C,WAAY,oBAAoB,KAChC,UAAW,SChnB3B,KAAM,IAA6C,CAAC,CAClD,MACA,QACA,WAAY,EACZ,eACA,cACA,UACA,WACA,iBACA,WACA,YACA,eACI,CACJ,KAAM,CACJ,eACA,gBACA,QACA,sCACA,uCACA,qCACA,sCACA,qCACA,sCACA,WACA,aACA,MAAO,IACL,cAAc,CAChB,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,wBACxC,cAAe,QACf,aAAc,GACd,oBACA,cACA,cAAe,CAAE,WACjB,qBAAsB,GACtB,WACA,iBACA,WACA,cAII,GAAiB,IAAK,YAAL,EAAO,UAAW,GAAK,GAGxC,GACJ,OAAO,aAAa,QAAQ,gCAAkC,KAC1D,GACJ,OAAO,aAAa,QAAQ,+BAAiC,KAGzD,GAAgB,IAChB,IAAqC,CAAC,GACjC,EAEL,GACK,GAGF,EAGT,iBAAU,IAAM,CACV,IAAqC,CAAC,IACxC,IAEE,IACF,KAGE,CAAC,IAAqC,CAAC,IACzC,KAED,CAAC,GAAkC,KAGpC,wCACG,GAAY,oBAAC,YAAW,CAAC,aAAc,EAAc,KAAK,0BAE1D,IACC,oBAAC,YAAW,CAAC,aAAc,EAAc,KAAK,6BAG/C,GACC,2BAAK,UAAU,oBACb,oBAAC,OAAM,OAGT,wCACE,oBAAC,gBAAe,CACd,KAAM,QAAQ,SACd,aAAc,EACd,UAAW,IAEb,oBAAC,YAAW,CACV,KAAM,QAAQ,SACd,aAAc,EACd,MAAO,EACP,UAAW,KAKhB,GACC,oBAAC,OAAM,CACL,SAAS,YACT,MAAO,gBAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,KACT,WAAY,oBAAoB,QAAQ,eAOlD,OAAe,KChHf,KAAM,IAAkE,CAAC,CAAE,kBAEvE,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,oCACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,UAAU,YAMZ,GAAkC,CAAC,CAAE,OAAM,eAAc,YAAW,aAAc,CACtF,KAAM,CAAE,aAAc,EAEtB,MACE,wBAAK,UAAU,QAAO,cAAc,wBAAwB,KAC1D,uBACE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAUV,uBAAK,UAAU,uCACb,uBACE,IAAI,qCACJ,UAAU,qDACV,IAAI,iBAGR,uBAAK,UAAU,iDACb,sBAAI,UAAU,sIACX,GACC,EACA,IAAS,YACL,mCACA,kCAGR,uBAAK,UAAU,8CACb,gBAAC,GAAI,CACH,KAAM,EAAU,KAChB,QAAS,EAAU,QACnB,IAAK,EAAU,IACf,IAAK,EAAU,IACf,UAAU,oDAEZ,uBAAK,UAAU,8BACZ,GACC,EACA,IAAS,YACL,kCACA,gCACH,IACH,0BACE,KAAK,SACL,QAAS,EACT,UAAU,YAAW,cACR,2BAA2B,KAEvC,GAAgB,EAAc,4CAmD/C,OAzCwD,CAAC,CAAE,OAAM,eAAc,eAAgB,CAC7F,KAAM,CAAC,EAAwB,GAA6B,eAAyB,CACnF,IAAK,EACL,IAAK,IAGD,EAAuB,GAAa,CACxC,KAAM,GAAyB,CAC7B,IAAK,EAAS,OAAO,SACrB,IAAK,EAAS,OAAO,WAGvB,EAA0B,GAC1B,OAAO,aAAa,QAAQ,GAA8B,KAAK,UAAU,KAGrE,EAAqB,IAAM,CAC3B,UAAU,aACZ,UAAU,YAAY,mBAAmB,IAIvC,EAAsB,EAAuB,MAAQ,GAAK,EAAuB,MAAQ,EAM/F,MAJA,gBAAU,IAAM,CACd,KACC,IAEE,UAAU,YACV,EAGH,gBAAC,GAAO,CACN,KAAM,EACN,aAAc,EACd,UAAW,EACX,QAAS,IAPoB,KADE,gBAAC,GAAuB,CAAC,aAAc,KC7F5E,GAnBqC,CAAC,CAAE,QAAO,OAAM,eAAc,eAC5D,IAAK,YAAL,EAAO,QAGV,oCAAiB,iBAAiB,KAC/B,EAAM,IAAK,GACV,gBAAC,GAAe,eACd,IAAK,EAAK,GACV,aAAc,EAAK,aACnB,KAAM,EACN,aAAc,EACd,UAAW,GACP,MAXe,KCE7B,KAAM,IAAmC,CAAC,CACxC,KACA,QACA,MACA,aACA,eACA,mBACA,mBACA,iBACA,mBACA,SACA,eACA,OACA,YACA,kBACI,CACJ,GAAI,CAAC,GAAS,CAAC,EAAK,MAAO,MAE3B,KAAM,GAAoB,IAAmB,GACvC,EAAoB,IAAS,YAG7B,EAAuB,IAAqB,gBAC5C,CAAE,aAAY,QAAM,gBAAc,YAAW,gBAAc,WAAS,aAAa,EAEvF,MACE,2BACE,uBAAK,UAAU,8EACb,qBACE,KAAM,EACN,MAAO,EACP,OAAQ,EAAM,cACD,eAAe,IAC5B,UAAU,4DAEV,uBAAK,UAAU,iDACb,uBAAK,UAAU,mBACb,uBAAK,UAAU,0BACb,sBAAI,UAAU,oHACX,EACD,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,kDAIhB,uBAAK,UAAW,GAAG,EAAoB,OAAS,oCAC9C,gBAAC,GAAI,CACH,KAAM,EAAU,KAChB,QAAS,EAAU,QACnB,IAAK,EAAU,IACf,IAAK,EAAU,IACf,UAAU,oDAEZ,uBAAK,UAAU,8BACZ,E,IAAa,EAAc,IAC3B,GAAgB,EAAc,iCAGlC,GACC,uBAAK,UAAU,wBACb,gBAAC,GAAK,CACJ,KAAM,GAAU,QAChB,MAAO,GAAgB,EAAc,kCACrC,KAAM,EACN,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,UAAS,OAKjB,uBAAK,UAAU,6DACb,uBAAK,UAAU,0BACZ,EACC,gCACE,gBAAC,GAAI,CACH,KAAM,GAAS,KACf,QAAS,GAAS,QAClB,IAAK,GAAS,IACd,IAAK,GAAS,IACd,UAAU,oDAEZ,uBAAK,UAAU,8BACZ,GAAgB,EAAc,uBAInC,gCACE,gBAAC,GAAI,CACH,KAAM,EAAoB,GAAK,KAAO,GAAa,KACnD,QAAS,EAAoB,GAAK,QAAU,GAAa,QACzD,IAAK,EAAoB,GAAK,IAAM,GAAa,IACjD,IAAK,EAAoB,GAAK,IAAM,GAAa,IACjD,UAAU,oDAEZ,uBAAK,UAAU,8BACZ,EACG,GAAgB,EAAc,mBAC9B,GAAgB,EAAc,mBAK1C,uBAAK,UAAU,0BACb,gBAAC,GAAI,CACH,KAAM,EAAuB,GAAa,KAAO,GAAQ,KACzD,QAAS,EAAuB,GAAa,QAAU,GAAQ,QAC/D,IAAK,EAAuB,GAAa,IAAM,GAAQ,IACvD,IAAK,EAAuB,GAAa,IAAM,GAAQ,IACvD,UAAU,oDAEZ,uBAAK,UAAU,8BACZ,IAGJ,EACC,uBAAK,UAAU,mCACZ,GAAgB,EAAc,4BAGjC,uBAAK,UAAU,mCACZ,EACG,GAAgB,EAAc,yBAC9B,GAAgB,EAAc,6BAWpD,OAAe,WAAK,I,YCrIpB,KAAM,IAAsB,IAExB,uBAAK,UAAU,sEACb,uBAAK,UAAU,0BACb,uBACE,IAAI,oBACJ,IAAI,iFACJ,MAAM,QACN,OAAO,YA2LjB,OApLsE,CAAC,CACrE,OACA,aACA,gBACA,uBACA,eACA,eACI,CACJ,KAAM,GAAkB,SAAgC,MAGlD,EAAoB,GAAgB,EAAc,8BAClD,EAAmB,EAAW,OAAS,EACvC,EAAgB,CACpB,sBAAuB,CAAE,QAAS,OAG9B,EAAe,IACZ,IAAS,YAAmB,GAAuB,GAGtD,EAAuB,GAAU,CACrC,EAAc,GACV,IAAU,IACZ,EAAqB,KAMnB,EAAsB,KAAO,IAAU,CAC3C,OAAO,SAAS,KAAO,eAGvB,GAAI,GACA,EACJ,GAAI,CACF,EAAU,KAAM,IAAmB,GACnC,EAAS,KAAM,UAAU,EAAQ,UAC1B,GAAP,CACA,QAAQ,KAAK,IACb,EAAqB,IACrB,OAGF,OAAO,aAAa,QAAQ,GAA6B,KAAK,UAAU,IAGxE,EAAqB,IACrB,EAAc,GAGV,EAAgB,SAClB,EAAgB,QAAQ,SAOtB,EAAsB,KAAO,IAAwD,CACzF,KAAM,GAAkB,EAAM,UAG9B,GAFA,OAAO,SAAS,KAAO,eAEnB,EAAiB,CACnB,EAAM,iBACN,GAAI,GACA,GACJ,GAAI,CACF,EAAU,KAAM,IAAmB,GACnC,GAAS,KAAM,UAAU,EAAQ,UAC1B,GAAP,CACA,QAAQ,KAAK,IACb,EAAqB,IACrB,OAGF,OAAO,aAAa,QAAQ,GAA6B,KAAK,UAAU,KAGxE,EAAqB,IAGjB,EAAgB,SAClB,EAAgB,QAAQ,UAMxB,EAAU,CAAC,EAAQ,IAAqB,CAIxC,KAAW,gBAAkB,IAAW,cAC1C,EAAqB,IAEvB,KAGF,MACE,wBAAK,UAAU,aACb,wBAAM,UAAW,GAAG,sBAAkC,OAAO,OAAO,WAAU,IAC5E,yBAAO,UAAU,UAAU,QAAQ,SAChC,GAEH,uBAAK,UAAU,wBACb,gBAAC,MAAkB,CACjB,MAAO,EACP,SAAU,EACV,SAAU,EACV,cAAe,EACf,uBAAwB,EACxB,QAAS,GAER,CAAC,CAAE,gBAAe,cAAa,4BAC9B,uBAAK,UAAU,qBACb,yCACM,EAAc,CAAE,YAAa,IAAoB,CACrD,KAAK,OACL,KAAK,QACL,GAAG,QACH,aAAa,MAAK,cACL,gBAAgB,IAC7B,UAAU,wBAGX,GACC,0BACE,KAAK,SACL,GAAI,OAAO,iBACX,UAAU,0BAEV,uBAAK,MAAM,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM,8BAC5C,wBACE,SAAS,UACT,SAAS,UACT,EAAE,8fACF,KAAK,cAKb,uBAAK,UAAU,mCACZ,EAAY,IAAK,IAAe,CAC/B,KAAM,IAAQ,CACZ,gBAAiB,GAAW,OAAS,UAAY,WAGnD,MACE,wCACM,EAAuB,GAAY,CAAE,WAAQ,CACjD,IAAK,GAAW,QAChB,UAAU,4BAET,GAAW,eAKjB,EAAY,OAAS,GAAK,gBAAC,GAAmB,UAMzD,0BACE,IAAK,EACL,KAAK,SACL,UAAU,gCAA+B,cAC5B,iBAAiB,IAC9B,QAAS,GAER,GAAgB,EAAc,oBCjNzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAeA,YAAmB,EAAS,EAAY,EAAG,EAAW,CAClD,WAAe,EAAO,CAAE,MAAO,aAAiB,GAAI,EAAQ,GAAI,GAAE,SAAU,EAAS,CAAE,EAAQ,KAC/F,MAAO,IAAK,IAAM,GAAI,UAAU,SAAU,EAAS,EAAQ,CACvD,WAAmB,EAAO,CAAE,GAAI,CAAE,EAAK,EAAU,KAAK,UAAkB,EAAP,CAAY,EAAO,IACpF,WAAkB,EAAO,CAAE,GAAI,CAAE,EAAK,EAAU,MAAS,UAAkB,EAAP,CAAY,EAAO,IACvF,WAAc,EAAQ,CAAE,EAAO,KAAO,EAAQ,EAAO,OAAS,EAAM,EAAO,OAAO,KAAK,EAAW,GAClG,EAAM,GAAY,EAAU,MAAM,EAAS,GAAc,KAAK,UAQtE,GAAI,IAAgB,WAAe,EAAG,EAAG,CACvC,GAAI,IAAM,EAAG,MAAO,GAEpB,GAAI,GAAK,GAAK,MAAO,IAAK,UAAY,MAAO,IAAK,SAAU,CAC1D,GAAI,EAAE,cAAgB,EAAE,YAAa,MAAO,GAE5C,GAAI,GAAQ,EAAG,EACf,GAAI,MAAM,QAAQ,GAAI,CAEpB,GADA,EAAS,EAAE,OACP,GAAU,EAAE,OAAQ,MAAO,GAC/B,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,EAAM,EAAE,GAAI,EAAE,IAAK,MAAO,GACjC,MAAO,GAKT,GAAI,EAAE,cAAgB,OAAQ,MAAO,GAAE,SAAW,EAAE,QAAU,EAAE,QAAU,EAAE,MAC5E,GAAI,EAAE,UAAY,OAAO,UAAU,QAAS,MAAO,GAAE,YAAc,EAAE,UACrE,GAAI,EAAE,WAAa,OAAO,UAAU,SAAU,MAAO,GAAE,aAAe,EAAE,WAIxE,GAFA,EAAO,OAAO,KAAK,GACnB,EAAS,EAAK,OACV,IAAW,OAAO,KAAK,GAAG,OAAQ,MAAO,GAE7C,IAAK,EAAI,EAAQ,MAAQ,GACvB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAK,EAAG,EAAK,IAAK,MAAO,GAEhE,IAAK,EAAI,EAAQ,MAAQ,GAAI,CAC3B,GAAI,GAAM,EAAK,GAEf,GAAI,CAAC,EAAM,EAAE,GAAM,EAAE,IAAO,MAAO,GAGrC,MAAO,GAIT,MAAO,KAAI,GAAK,IAAI,GAkBtB,KAAM,IAAa,uBAInB,GAAI,IACH,UAAU,EAAc,CACrB,EAAa,EAAa,YAAiB,GAAK,cAChD,EAAa,EAAa,QAAa,GAAK,UAC5C,EAAa,EAAa,QAAa,GAAK,UAC5C,EAAa,EAAa,QAAa,GAAK,YAC7C,IAAiB,IAAe,KAoBnC,QAAa,CAUT,YAAY,CAAE,SAAQ,qBAAoB,UAAS,SAAQ,KAAK,GAAY,WAAU,YAAY,GAAI,SAAQ,QAAO,SAAQ,UAAU,EAAG,MAAM,0CAA2C,WAAY,CAkBnM,GAjBA,KAAK,UAAY,GACjB,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,OAAS,GACd,KAAK,OAAS,EACd,KAAK,mBAAqB,EAC1B,KAAK,QAAU,EACf,KAAK,OAAS,EACd,KAAK,GAAK,GAAM,GAChB,KAAK,SAAW,EAChB,KAAK,UAAY,EACjB,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,QAAU,EACf,KAAK,IAAM,EACX,KAAK,QAAU,EACX,GAAO,SAAU,CACjB,GAAI,CAAC,GAAc,KAAK,QAAS,GAAO,SAAS,SAC7C,KAAM,IAAI,OAAM,2DAA2D,KAAK,UAAU,KAAK,gBAAgB,KAAK,UAAU,GAAO,SAAS,YAElJ,MAAO,IAAO,SAElB,GAAO,SAAW,QAElB,UAAU,CACV,MAAO,CACH,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,GAAI,KAAK,GACT,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,IAAK,KAAK,IACV,mBAAoB,KAAK,uBAG7B,SAAS,CACT,MAAI,MAAK,OAAO,OACL,GAAa,QAEpB,KAAK,KACE,GAAa,QAEpB,KAAK,QACE,GAAa,QAEjB,GAAa,eAEpB,SAAS,CACT,MAAO,MAAK,MAAQ,CAAC,KAAK,SAAW,KAAK,OAAO,QAAU,KAAK,QAAU,EAQ9E,WAAY,CACR,GAAI,GAAM,KAAK,IACf,UAAO,iCACH,KAAK,QACL,IAAO,QAAQ,KAAK,UAEpB,KAAK,SACL,IAAO,YAAY,KAAK,WAExB,KAAK,QACL,IAAO,WAAW,KAAK,UAEvB,KAAK,UAAU,OAAS,GACxB,IAAO,cAAc,KAAK,UAAU,KAAK,QAEzC,KAAK,UACL,IAAO,aAAa,KAAK,YAEzB,KAAK,QACL,IAAO,WAAW,KAAK,UAEvB,KAAK,SACL,IAAO,MAAM,KAAK,WAElB,KAAK,QACL,IAAO,YAAY,KAAK,OAAO,KAAK,QAEpC,KAAK,oBACL,IAAO,yBAAyB,KAAK,sBAElC,EAEX,cAAe,CACX,KAAM,GAAS,SAAS,eAAe,KAAK,IACxC,GACA,EAAO,SAOf,MAAO,CACH,MAAO,MAAK,cAQhB,aAAc,CACV,MAAO,IAAI,SAAQ,CAAC,EAAS,IAAW,CACpC,KAAK,aAAc,GAAQ,CAClB,EAID,EAAO,EAAI,OAHX,EAAQ,OAAO,YAQ/B,cAAc,EAAM,CAChB,YAAK,UACE,OAAO,KAAK,cAAc,GAMrC,aAAa,EAAI,CACb,KAAK,UAAU,KAAK,GACpB,KAAK,UAKT,WAAY,CACR,GAAI,GAAI,EACR,GAAI,SAAS,eAAe,KAAK,IAAK,CAElC,KAAK,WACL,OAEJ,KAAM,GAAS,CACX,IAAK,KAAK,OACV,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,UAAW,KAAK,UAAU,QAAU,KAAK,UACzC,EAAG,KAAK,QACR,OAAQ,KAAK,OACb,SAAU,KAAK,SACf,OAAQ,KAAK,OACb,mBAAoB,KAAK,oBAG7B,OAAO,KAAK,GAAQ,QAEnB,GAAQ,CAAC,EAAO,IAAQ,MAAO,GAAO,IAChC,IAAM,GAAK,QAAW,KAA4B,OAAS,OAAO,UAAY,MAAQ,IAAO,OAAS,OAAS,EAAG,QAAU,MAAQ,IAAO,OAAS,OAAS,EAAG,gBAIlK,CAAC,GAAM,CAEJ,GAAI,GAAG,EAAG,EAAG,EAAI,iCAAkC,EAAI,SAAU,EAAI,gBAAiB,EAAI,SAAU,EAAI,SAAU,EAAI,OAEtH,EAAI,EAAE,IAAO,GAAE,GAAK,IAEpB,KAAM,GAAI,EAAE,MAAS,GAAE,KAAO,IAAK,EAAI,GAAI,KAAO,EAAI,GAAI,iBAAmB,GAAI,IAEjF,GAAM,GAAI,GAAI,SAAQ,CAAC,GAAG,IAAM,GAAU,KAAM,OAAQ,OAAQ,WAAa,CACzE,GAAI,IACJ,KAAO,GAAI,EAAE,cAAc,UAC3B,EAAE,GAAK,KAAK,GACZ,EAAE,IAAI,YAAa,CAAC,GAAG,GAAK,IAE5B,IAAK,IAAK,GACN,EAAE,IAAI,EAAE,QAAQ,SAAW,IAAM,IAAM,GAAE,GAAG,eAAgB,EAAE,IAClE,EAAE,IAAI,WAAY,EAAI,SAAW,GACjC,EAAE,IAAM,KAAK,IAAM,IAAM,EACzB,EAAE,GAAK,GACP,EAAE,QAAU,IAAO,EAAI,EAAE,MAAM,EAAI,qBAEnC,EAAE,MAAQ,KAAK,OAAW,KAAK,EAAE,cAAc,oBAAsB,MAAQ,KAAO,OAAS,OAAS,GAAG,QAAU,GACnH,EAAE,KAAK,OAAO,OAGlB,EAAE,GAAK,QAAQ,KAAK,EAAI,8BAA+B,GAAM,EAAE,GAAK,CAAC,MAAM,IAAM,EAAE,IAAI,KAAM,KAAI,KAAK,IAAM,EAAE,GAAG,GAAG,GAAG,MACxH,GAMP,KAAM,GAAkB,KAAK,UAAU,IAAK,GAAY,KAAK,cAAc,IAEtE,EAAgB,QACjB,EAAgB,KAAK,KAAK,cAAc,SAE5C,QAAQ,IAAI,GAAiB,KAAK,IAAM,KAAK,WAAa,GAAU,CAChE,KAAM,GAAQ,GAAI,YAAW,QAAS,CAAE,UACxC,KAAK,kBAAkB,KAM/B,OAAQ,CACJ,KAAK,eACL,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,OAAS,GACd,KAAK,aAAe,KAExB,uBAAwB,CAChB,KAAK,QACL,KAAK,QAGb,kBAAkB,EAAG,CAEjB,GADA,KAAK,OAAO,KAAK,GACb,KAAK,OAAO,QAAU,KAAK,QAAS,CACpC,KAAM,GAAQ,KAAK,OAAO,OAAS,KAAK,IAAI,EAAG,KAAK,OAAO,QAC3D,QAAQ,MAAM,kDAAkD,SAChE,WAAW,IAAM,CACb,KAAK,eACL,KAAK,aACN,OAGH,MAAK,aAAe,EACpB,KAAK,WAGb,UAAW,CACP,KAAK,KAAO,GACZ,KAAK,QAAU,GACf,KAAK,UAAU,QAAS,GAAO,CAC3B,EAAG,KAAK,gBAEZ,KAAK,UAAY,GAErB,SAAU,CAEN,GADA,KAAK,wBACD,KAAK,KACL,KAAK,eAEJ,CAED,GAAI,OAAO,QAAU,OAAO,OAAO,MAAQ,OAAO,OAAO,KAAK,QAAS,CACnE,QAAQ,KAAK,wJAEb,KAAK,WACL,OAEA,KAAK,SAEL,MAAK,QAAU,GACf,KAAK,eCpYrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gFAgBA,GAAI,IAAgB,SAAS,EAAG,EAAG,CAC/B,UAAgB,OAAO,gBAClB,CAAE,UAAW,aAAgB,QAAS,SAAU,EAAG,EAAG,CAAE,EAAE,UAAY,IACvE,SAAU,EAAG,EAAG,CAAE,OAAS,KAAK,GAAO,EAAE,eAAe,IAAI,GAAE,GAAK,EAAE,KAClE,GAAc,EAAG,IAG5B,YAAmB,EAAG,EAAG,CACrB,GAAc,EAAG,GACjB,YAAc,CAAE,KAAK,YAAc,EACnC,EAAE,UAAY,IAAM,KAAO,OAAO,OAAO,GAAM,GAAG,UAAY,EAAE,UAAW,GAAI,IAGnF,GAAI,IAAW,UAAW,CACtB,UAAW,OAAO,QAAU,SAAkB,EAAG,CAC7C,OAAS,GAAG,EAAI,EAAG,EAAI,UAAU,OAAQ,EAAI,EAAG,IAAK,CACjD,EAAI,UAAU,GACd,OAAS,KAAK,GAAO,OAAO,UAAU,eAAe,KAAK,EAAG,IAAI,GAAE,GAAK,EAAE,IAE9E,MAAO,IAEJ,GAAS,MAAM,KAAM,YA0BhC,YAAgB,EAAO,EAAO,CAE1B,OAAS,KAAY,GAAM,UACvB,EAAM,UAAU,GAAY,EAAM,UAAU,GAMpD,GAAI,IAAiC,UAAY,CAC7C,YAA2B,CAMvB,GAAO,EAAiB,OAAO,KAAK,aAExC,MAAO,MAsBX,YAAmB,EAAQ,CACvB,MAAO,QAAO,KAAK,GACd,OAAO,SAAU,EAAK,EAAK,CAC5B,MAAI,GAAO,IACP,EAAI,KAAK,EAAM,IAAM,EAAO,IAEzB,GACR,IACE,KAAK,KAMd,YAAsB,EAAQ,CAC1B,MAAO,GAAS,EAAS,KAAO,OAKpC,GAAI,IAA6B,SAAU,EAAQ,CAC/C,GAAU,EAAa,GAMvB,WAAqB,EAAU,EAAS,CACpC,GAAI,GAAQ,EAAO,KAAK,OAAS,KACjC,SAAM,SAAW,EACjB,EAAM,QAAU,EAChB,EAAM,QAAU,KAChB,EAAM,KAAO,KACb,EAAM,MAAQ,KACd,EAAM,SAAW,GACjB,EAAM,MAAQ,KACd,EAAM,OAAO,EAAS,UACf,EAKX,SAAY,UAAU,MAAQ,UAAY,CACtC,GAAI,GAAQ,KACR,EACA,EACA,EAAK,KAAK,SAAS,qBACnB,EAAK,OAAO,KAAK,QAAQ,MAAM,KAAM,EAAQ,EAAG,GAAI,EAAQ,EAAG,GAC/D,EAAY,SAAS,EAAO,IAAM,IAAM,SAAS,EAAO,IAC5D,KAAK,KAAO,SAAS,cAAc,OAC/B,KAAK,UACL,KAAK,OAET,KAAK,WAAW,mBAAmB,YAAY,KAAK,MAEpD,KAAK,uBAAyB,OAAO,KAAK,MAAM,YAAY,KAAK,SAAU,iBAAkB,UAAY,CACrG,EAAwB,IAE5B,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,YAAa,UAAY,CACjE,EAAsB,GACtB,EAAwB,KAE5B,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,cAAe,UAAY,CAOnE,OAAO,KAAK,MAAM,QAAQ,EAAI,cAAe,EAAM,YAInD,GAAa,KAEb,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,aAAc,SAAU,EAAG,CACnE,EAAE,oBAGV,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,QAAS,SAAU,EAAG,CAE9D,GADA,EAAsB,GAClB,CAAC,EAAuB,CAWxB,GAJA,OAAO,KAAK,MAAM,QAAQ,EAAI,QAAS,EAAM,UAC7C,OAAO,KAAK,MAAM,QAAQ,EAAI,eAAgB,EAAM,UAGhD,EAAG,iBAAkB,CAErB,GAAI,GAAO,EAAG,aACV,EAAc,EAAM,SAAS,YACjC,EAAG,SAAS,UAAU,GAEtB,WAAW,UAAY,CACnB,EAAG,SAAS,UAAU,GAElB,IAAS,MAAQ,EAAG,SAAS,UAAY,GACzC,EAAG,SAAS,QAAQ,EAAO,IAEhC,KAGP,EAAE,aAAe,GACb,EAAE,iBACF,EAAE,qBAId,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,YAAa,UAAY,CAOjE,OAAO,KAAK,MAAM,QAAQ,EAAI,YAAa,EAAM,YAErD,OAAO,KAAK,MAAM,eAAe,KAAK,KAAM,WAAY,UAAY,CAOhE,OAAO,KAAK,MAAM,QAAQ,EAAI,WAAY,EAAM,aAMxD,EAAY,UAAU,SAAW,UAAY,CACrC,KAAK,MAAQ,KAAK,KAAK,YACvB,MAAK,OACL,OAAO,KAAK,MAAM,eAAe,KAAK,wBACtC,OAAO,KAAK,MAAM,uBAAuB,KAAK,MAC9C,KAAK,KAAK,WAAW,YAAY,KAAK,MACtC,KAAK,KAAO,OAMpB,EAAY,UAAU,KAAO,UAAY,CACrC,GAAI,KAAK,SAAU,CACf,GAAI,GAAM,KAAK,kBAAkB,KAAK,SACtC,KAAK,KAAK,MAAM,IAAM,EAAI,EAAI,KAC9B,KAAK,KAAK,MAAM,KAAO,EAAI,EAAI,OAMvC,EAAY,UAAU,KAAO,UAAY,CACjC,KAAK,MACL,MAAK,KAAK,MAAM,QAAU,QAE9B,KAAK,SAAW,IAKpB,EAAY,UAAU,KAAO,UAAY,CACjC,KAAK,MACL,MAAK,KAAK,UAAY,KAAK,WAC3B,KAAK,KAAK,MAAM,QAAU,KAAK,WAAW,KAAK,kBAAkB,KAAK,UACtE,KAAK,KAAK,UACL,MAAK,MAAM,IAAM,KAAK,sBAAwB,IAC3C,KAAK,kBACT,MAAO,MAAK,MAAM,OAAU,aAAe,KAAK,MAAM,QAAU,GAChE,KAAK,KAAK,MAAQ,KAAK,SAAS,qBAAqB,WAGrD,KAAK,KAAK,MAAQ,KAAK,MAAM,MAEjC,KAAK,KAAK,MAAM,QAAU,IAE9B,KAAK,SAAW,IAEpB,EAAY,UAAU,gBAAkB,UAAY,CAChD,GAAI,GAAK,KAAK,SAAS,qBACnB,EAAY,EAAG,YAAY,KAAK,MAAM,MACtC,EAAW,CACX,SAAU,WACV,IAAK,GAAa,KAAK,YAAY,IACnC,KAAM,GAAa,KAAK,YAAY,IACpC,MAAO,KAAK,MAAM,UAClB,YAAa,GAAa,KAAK,MAAM,UACrC,cAAe,KAAK,MAAM,WAC1B,cAAe,KAAK,MAAM,WAC1B,aAAc,KAAK,MAAM,UACzB,kBAAmB,KAAK,MAAM,eAC9B,aAAc,SACd,MAAO,GAAa,KAAK,MAAM,OAC/B,cAAe,GAAa,KAAK,MAAM,iBAE3C,MAAO;AAAA,mBAAuB,OAAO,EAAW,aAAe,OAAO,GAAU,GAAW;AAAA,8BAAqD,OAAO,KAAK,MAAM,KAAM;AAAA;AAAA,IAE5K,EAAY,UAAU,oBAAsB,UAAY,CAEpD,GAAI,GAAM,MAAK,MAAM,oBAAsB,OAAO,MAAM,KACpD,EAAU,SAAS,EAAG,GAAG,QAAQ,aAAc,IAAK,IACpD,EAAU,SAAS,EAAG,GAAG,QAAQ,aAAc,IAAK,IACpD,EAAa,GACjB,GAAI,KAAK,SAAS,qBAAqB,uBACnC,EAAa,CACT,MAAO,GAAa,KAAK,MAAM,OAC/B,OAAQ,GAAa,KAAK,MAAM,aAGnC,CACD,GAAI,GAAK,CACL,GAAK,EACL,GAAK,EAAU,KAAK,MAAM,MAC1B,GAAK,EAAU,KAAK,MAAM,OAC1B,GAAK,GACN,EAAK,EAAG,GAAI,EAAK,EAAG,GAAI,EAAK,EAAG,GAAI,EAAK,EAAG,GAC/C,EAAa,CACT,KAAM,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,QAAQ,OAAO,EAAI,QAG1F,GAAI,GAAgC,KAAK,MAAM,IACzC,CAAE,MAAO,OAAQ,OAAQ,QACzB,GACF,EAAU,GAAU,GAAS,GAAS,CAAE,SAAU,WAAY,IAAK,GAAa,GAAU,KAAM,GAAa,IAAY,GAAa,IAC1I,MAAO,aAAc,OAAO,KAAK,MAAM,KAAM,8BAAkC,OAAO,KAAK,MAAM,IAAK,aAAe,OAAO,EAAS,QAQzI,EAAY,UAAU,SAAW,SAAU,EAAM,CAC7C,KAAK,MAAQ,EACb,GAAI,GAAQ,KAAK,IAAI,EAAG,EAAK,MAAQ,GACrC,EAAQ,KAAK,IAAI,KAAK,QAAQ,OAAS,EAAG,GAC1C,KAAK,MAAQ,KAAK,MAAM,IAClB,GAAS,GAAS,GAAI,KAAK,QAAQ,IAAS,CAAE,IAAK,KAAK,MAAM,MAAS,KAAK,QAAQ,GAC1F,KAAK,YAAc,KAAK,MAAM,YAAc,CAAC,EAAG,GAChD,KAAK,YAAc,KAAK,MAAM,YAAc,CACxC,KAAK,MAAM,KAAK,MAAM,OAAS,GAC/B,KAAK,MAAM,KAAK,MAAM,MAAQ,IAElC,KAAK,WACD,KAAK,SAAS,qBAAqB,kBAC/B,IACC,MAAK,MAAM,WAAa,WAAa,IAOlD,EAAY,UAAU,UAAY,SAAU,EAAQ,CAChD,KAAK,QAAU,GAQnB,EAAY,UAAU,WAAa,SAAU,EAAK,CAC9C,MAAO,IAAU,CACb,UAAW,GAAG,OAAO,KAAK,SAAS,qBAAqB,aACxD,IAAK,GAAa,EAAI,GACtB,KAAM,GAAa,EAAI,GACvB,MAAO,GAAa,KAAK,MAAM,OAC/B,OAAQ,GAAa,KAAK,MAAM,QAChC,OAAQ,UACR,SAAU,WACV,sBAAuB,OACvB,qBAAsB,OACtB,mBAAoB,OACpB,iBAAkB,OAClB,cAAe,UASvB,EAAY,UAAU,kBAAoB,SAAU,EAAQ,CACxD,GAAI,GAAM,KAAK,gBAAgB,qBAAqB,GACpD,SAAI,EAAI,KAAK,MAAM,EAAI,EAAI,KAAK,YAAY,IAC5C,EAAI,EAAI,KAAK,MAAM,EAAI,EAAI,KAAK,YAAY,IACrC,GAEJ,GACT,IAqBE,GAAyB,UAAY,CAMrC,WAAiB,EAAkB,CAC/B,KAAK,iBAAmB,EACxB,KAAK,KAAO,KAAK,iBAAiB,SAClC,KAAK,gBAAkB,KAAK,iBAAiB,wBAC7C,KAAK,eAAiB,KAAK,iBAAiB,mBAC5C,KAAK,SAAW,GAChB,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,aAAe,GAAI,IAAY,KAAM,KAAK,iBAAiB,aAQpE,SAAQ,UAAU,QAAU,UAAY,CACpC,MAAO,MAAK,SAAS,QAQzB,EAAQ,UAAU,WAAa,UAAY,CACvC,MAAO,MAAK,UAShB,EAAQ,UAAU,UAAY,UAAY,CACtC,MAAO,MAAK,SAQhB,EAAQ,UAAU,OAAS,UAAY,CACnC,MAAO,MAAK,MAQhB,EAAQ,UAAU,mBAAqB,UAAY,CAC/C,MAAO,MAAK,kBAQhB,EAAQ,UAAU,UAAY,UAAY,CAGtC,OAFI,GAAS,GAAI,QAAO,KAAK,aAAa,KAAK,QAAS,KAAK,SACzD,EAAU,KAAK,aACV,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAChC,EAAO,OAAO,EAAQ,GAAG,eAE7B,MAAO,IAOX,EAAQ,UAAU,OAAS,UAAY,CACnC,KAAK,aAAa,OAAO,MACzB,KAAK,SAAW,GAChB,MAAO,MAAK,UAShB,EAAQ,UAAU,UAAY,SAAU,EAAQ,CAC5C,GAAI,KAAK,sBAAsB,GAC3B,MAAO,GAEX,GAAI,CAAC,KAAK,QACN,KAAK,QAAU,EAAO,cACtB,KAAK,2BAGD,KAAK,eAAgB,CACrB,GAAI,GAAI,KAAK,SAAS,OAAS,EAC3B,EAAO,MAAK,QAAQ,MAAS,GAAI,GAAK,EAAO,cAAc,OAAS,EACpE,EAAO,MAAK,QAAQ,MAAS,GAAI,GAAK,EAAO,cAAc,OAAS,EACxE,KAAK,QAAU,GAAI,QAAO,KAAK,OAAO,EAAK,GAC3C,KAAK,mBAGb,EAAO,QAAU,GACjB,KAAK,SAAS,KAAK,GACnB,GAAI,GAAS,KAAK,SAAS,OACvB,EAAK,KAAK,iBAAiB,aAC/B,GAAI,IAAO,MAAQ,KAAK,KAAK,UAAY,EAEjC,EAAO,WAAa,KAAK,MACzB,EAAO,OAAO,KAAK,cAGlB,EAAS,KAAK,gBAEf,EAAO,WAAa,KAAK,MACzB,EAAO,OAAO,KAAK,cAGlB,IAAW,KAAK,gBAErB,OAAS,GAAI,EAAG,EAAI,EAAQ,IACxB,KAAK,SAAS,GAAG,OAAO,UAI5B,GAAO,OAAO,MAElB,MAAO,IASX,EAAQ,UAAU,wBAA0B,SAAU,EAAQ,CAC1D,MAAO,MAAK,QAAQ,SAAS,EAAO,gBAKxC,EAAQ,UAAU,iBAAmB,UAAY,CAC7C,GAAI,GAAS,GAAI,QAAO,KAAK,aAAa,KAAK,QAAS,KAAK,SAC7D,KAAK,QAAU,KAAK,iBAAiB,kBAAkB,IAK3D,EAAQ,UAAU,WAAa,UAAY,CACvC,GAAI,GAAS,KAAK,SAAS,OACvB,EAAK,KAAK,iBAAiB,aAC/B,GAAI,IAAO,MAAQ,KAAK,KAAK,UAAY,EAAI,CACzC,KAAK,aAAa,OAClB,OAEJ,GAAI,EAAS,KAAK,gBAAiB,CAE/B,KAAK,aAAa,OAClB,OAEJ,GAAI,GAAY,KAAK,iBAAiB,YAAY,OAC9C,EAAO,KAAK,iBAAiB,gBAAgB,KAAK,SAAU,GAChE,KAAK,aAAa,UAAU,KAAK,SACjC,KAAK,aAAa,SAAS,GAC3B,KAAK,aAAa,QAQtB,EAAQ,UAAU,sBAAwB,SAAU,EAAQ,CACxD,GAAI,KAAK,SAAS,QACd,MAAO,MAAK,SAAS,QAAQ,KAAY,GAGzC,OAAS,GAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IACtC,GAAI,IAAW,KAAK,SAAS,GACzB,MAAO,GAInB,MAAO,IAEJ,KAqBP,GAAY,SAAU,EAAS,EAAM,EAAK,CAC1C,MAAI,GAAQ,KAAU,OACX,EAAQ,GAGR,GAGX,GAAiC,SAAU,EAAQ,CACnD,GAAU,EAAiB,GAO3B,WAAyB,EAAK,EAAS,EAAS,CACxC,IAAY,QAAU,GAAU,IAChC,IAAY,QAAU,GAAU,IACpC,GAAI,GAAQ,EAAO,KAAK,OAAS,KACjC,SAAM,QAAU,EAChB,EAAM,SAAW,GACjB,EAAM,UAAY,GAClB,EAAM,WAAa,GACnB,EAAM,WAAa,KACnB,EAAM,OAAS,GACf,EAAM,YAAc,EAAM,QAAQ,aAAgB,UAAY,CAAE,MAAO,IACvE,EAAM,QAAU,EAAM,QAAQ,QAAU,OAAO,OAAO,KAAK,OAAO,YAAc,EAChF,EAAM,UAAY,EAAM,QAAQ,UAAY,GAC5C,EAAM,gBAAkB,EAAM,QAAQ,oBAAsB,EAC5D,EAAM,SAAW,EAAM,QAAQ,SAAW,KAC1C,EAAM,QAAU,EAAM,QAAQ,QAAU,GACxC,EAAM,OAAS,EAAM,QAAQ,OAAS,GACtC,EAAM,aAAe,GAAU,EAAM,QAAS,cAAe,IAC7D,EAAM,eAAiB,GAAU,EAAM,QAAS,gBAAiB,IACjE,EAAM,cAAgB,GAAU,EAAM,QAAS,eAAgB,IAC/D,EAAM,mBAAqB,GAAU,EAAM,QAAS,oBAAqB,IACzE,EAAM,WAAa,EAAM,QAAQ,WAAa,EAAgB,WAC9D,EAAM,gBAAkB,EAAM,QAAQ,gBAAkB,EAAgB,gBACxE,EAAM,YAAc,EAAM,QAAQ,YAAc,EAAgB,YAChE,EAAM,YAAc,EAAM,QAAQ,YAAc,EAAgB,WAChE,EAAM,WAAa,EAAM,QAAQ,WAAa,EAAgB,WAC9D,EAAM,aAAe,EAAM,QAAQ,aAAe,EAAgB,cAClE,EAAM,cAAgB,EAAM,QAAQ,cAAgB,UAChD,UAAU,UAAU,cAAc,QAAQ,UAAY,IAEtD,GAAM,WAAa,EAAM,cAE7B,EAAM,eACN,EAAM,WAAW,EAAS,IAC1B,EAAM,OAAO,GACN,EAMX,SAAgB,UAAU,MAAQ,UAAY,CAC1C,GAAI,GAAQ,KACZ,KAAK,WAAa,KAAK,SACvB,KAAK,OAAS,GACd,KAAK,UACL,KAAK,UAAY,KAAK,SAAS,UAE/B,KAAK,WAAa,CACd,OAAO,KAAK,MAAM,YAAY,KAAK,SAAU,eAAgB,UAAY,CACrE,GAAI,GAAM,EAAM,SAGZ,EAAU,EAAI,SAAW,EACzB,EAAU,KAAK,IAAI,EAAI,SAAW,IAAK,EAAI,SAAS,EAAI,gBAAgB,SACxE,EAAO,KAAK,IAAI,KAAK,IAAI,EAAM,SAAS,UAAW,GAAU,GAC7D,EAAM,WAAa,GACnB,GAAM,UAAY,EAClB,EAAM,eAAe,OAG7B,OAAO,KAAK,MAAM,YAAY,KAAK,SAAU,OAAQ,UAAY,CAC7D,EAAM,cAUlB,EAAgB,UAAU,SAAW,UAAY,CAE7C,OAAS,GAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IAClC,KAAK,SAAS,GAAG,WAAa,KAAK,YACnC,KAAK,SAAS,GAAG,OAAO,KAAK,YAIrC,OAAS,GAAI,EAAG,EAAI,KAAK,UAAU,OAAQ,IACvC,KAAK,UAAU,GAAG,SAEtB,KAAK,UAAY,GAEjB,OAAS,GAAI,EAAG,EAAI,KAAK,WAAW,OAAQ,IACxC,OAAO,KAAK,MAAM,eAAe,KAAK,WAAW,IAErD,KAAK,WAAa,GAClB,KAAK,WAAa,KAClB,KAAK,OAAS,IAMlB,EAAgB,UAAU,KAAO,UAAY,GAI7C,EAAgB,UAAU,aAAe,UAAY,CACjD,GAAI,OAAK,QAAQ,OAAS,GAG1B,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAAK,CAC9C,GAAI,GAAO,KAAK,YAAY,GAC5B,KAAK,QAAQ,KAAK,EAAgB,iBAAiB,CAC/C,IAAK,KAAK,WAAc,GAAI,GAAK,IAAM,KAAK,gBAC5C,OAAQ,EACR,MAAO,OAOnB,EAAgB,UAAU,gBAAkB,SAAU,EAAS,CAG3D,OAFI,GAAU,KAAK,aACf,EAAS,GAAI,QAAO,KAAK,aACpB,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAE5B,GAAQ,GAAG,cAAgB,CAAC,KAAK,oBACjC,EAAO,OAAO,EAAQ,GAAG,eAGjC,KAAK,SAAS,UAAU,EAAQ,IAOpC,EAAgB,UAAU,YAAc,UAAY,CAChD,MAAO,MAAK,WAOhB,EAAgB,UAAU,YAAc,SAAU,EAAU,CACxD,KAAK,UAAY,GAOrB,EAAgB,UAAU,sBAAwB,UAAY,CAC1D,MAAO,MAAK,iBAOhB,EAAgB,UAAU,sBAAwB,SAAU,EAAoB,CAC5E,KAAK,gBAAkB,GAO3B,EAAgB,UAAU,WAAa,UAAY,CAC/C,MAAO,MAAK,UAOhB,EAAgB,UAAU,WAAa,SAAU,EAAS,CACtD,KAAK,SAAW,GAEpB,EAAgB,UAAU,UAAY,UAAY,CAC9C,MAAO,MAAK,SAEhB,EAAgB,UAAU,UAAY,SAAU,EAAQ,CACpD,KAAK,QAAU,GAOnB,EAAgB,UAAU,UAAY,UAAY,CAC9C,MAAO,MAAK,SAOhB,EAAgB,UAAU,UAAY,SAAU,EAAQ,CACpD,KAAK,QAAU,GAOnB,EAAgB,UAAU,SAAW,UAAY,CAC7C,MAAO,MAAK,QAOhB,EAAgB,UAAU,SAAW,SAAU,EAAO,CAClD,KAAK,OAAS,GAOlB,EAAgB,UAAU,eAAiB,UAAY,CACnD,MAAO,MAAK,cAOhB,EAAgB,UAAU,eAAiB,SAAU,EAAa,CAC9D,KAAK,aAAe,GAOxB,EAAgB,UAAU,iBAAmB,UAAY,CACrD,MAAO,MAAK,gBAOhB,EAAgB,UAAU,iBAAmB,SAAU,EAAe,CAClE,KAAK,eAAiB,GAO1B,EAAgB,UAAU,gBAAkB,UAAY,CACpD,MAAO,MAAK,eAOhB,EAAgB,UAAU,gBAAkB,SAAU,EAAc,CAChE,KAAK,cAAgB,GAOzB,EAAgB,UAAU,qBAAuB,UAAY,CACzD,MAAO,MAAK,oBAOhB,EAAgB,UAAU,qBAAuB,SAAU,EAAmB,CAC1E,KAAK,mBAAqB,GAO9B,EAAgB,UAAU,kBAAoB,UAAY,CACtD,MAAO,MAAK,iBAOhB,EAAgB,UAAU,kBAAoB,SAAU,EAAgB,CACpE,KAAK,gBAAkB,GAO3B,EAAgB,UAAU,aAAe,UAAY,CACjD,MAAO,MAAK,YAOhB,EAAgB,UAAU,aAAe,SAAU,EAAW,CAC1D,KAAK,WAAa,GAOtB,EAAgB,UAAU,cAAgB,UAAY,CAClD,MAAO,MAAK,aAOhB,EAAgB,UAAU,cAAgB,SAAU,EAAY,CAC5D,KAAK,YAAc,GAOvB,EAAgB,UAAU,cAAgB,UAAY,CAClD,MAAO,MAAK,aAOhB,EAAgB,UAAU,cAAgB,SAAU,EAAY,CAC5D,KAAK,YAAc,GAOvB,EAAgB,UAAU,eAAiB,UAAY,CACnD,MAAO,MAAK,cAOhB,EAAgB,UAAU,eAAiB,SAAU,EAAa,CAC9D,KAAK,aAAe,GAOxB,EAAgB,UAAU,gBAAkB,UAAY,CACpD,MAAO,MAAK,eAOhB,EAAgB,UAAU,gBAAkB,SAAU,EAAc,CAChE,KAAK,cAAgB,GAOzB,EAAgB,UAAU,WAAa,UAAY,CAC/C,MAAO,MAAK,UAOhB,EAAgB,UAAU,gBAAkB,UAAY,CACpD,MAAO,MAAK,SAAS,QAOzB,EAAgB,UAAU,YAAc,UAAY,CAChD,MAAO,MAAK,WAOhB,EAAgB,UAAU,iBAAmB,UAAY,CACrD,MAAO,MAAK,UAAU,QAS1B,EAAgB,UAAU,UAAY,SAAU,EAAQ,EAAQ,CAC5D,KAAK,cAAc,GACd,GACD,KAAK,WAUb,EAAgB,UAAU,WAAa,SAAU,EAAS,EAAQ,CAC9D,OAAS,KAAO,GACR,OAAO,UAAU,eAAe,KAAK,EAAS,IAC9C,KAAK,cAAc,EAAQ,IAG9B,GACD,KAAK,WAQb,EAAgB,UAAU,cAAgB,SAAU,EAAQ,CACxD,GAAI,GAAQ,KAER,EAAO,gBACP,OAAO,KAAK,MAAM,YAAY,EAAQ,UAAW,UAAY,CACrD,EAAM,QACN,GAAO,QAAU,GACjB,EAAM,aAIlB,EAAO,QAAU,GACjB,KAAK,SAAS,KAAK,IAWvB,EAAgB,UAAU,aAAe,SAAU,EAAQ,EAAQ,CAC/D,GAAI,GAAU,KAAK,cAAc,GACjC,MAAI,CAAC,GAAU,GACX,KAAK,UAEF,GAUX,EAAgB,UAAU,cAAgB,SAAU,EAAS,EAAQ,CAEjE,OADI,GAAU,GACL,EAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACrC,GAAI,GAAI,KAAK,cAAc,EAAQ,IACnC,EAAU,GAAW,EAEzB,MAAI,CAAC,GAAU,GACX,KAAK,UAEF,GAQX,EAAgB,UAAU,cAAgB,SAAU,EAAQ,CACxD,GAAI,GAAQ,GACZ,GAAI,KAAK,SAAS,QACd,EAAQ,KAAK,SAAS,QAAQ,OAG9B,QAAS,GAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IACtC,GAAI,IAAW,KAAK,SAAS,GAAI,CAC7B,EAAQ,EACR,MAIZ,MAAI,KAAU,GAEH,GAEX,GAAO,OAAO,MACd,KAAK,SAAS,OAAO,EAAO,GACrB,KAMX,EAAgB,UAAU,aAAe,UAAY,CACjD,KAAK,eAAe,IACpB,KAAK,SAAW,IAMpB,EAAgB,UAAU,QAAU,UAAY,CAC5C,GAAI,GAAc,KAAK,UAAU,QACjC,KAAK,UAAY,GACjB,KAAK,eAAe,IACpB,KAAK,UAGL,WAAW,UAAY,CACnB,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IACpC,EAAY,GAAG,UAEpB,IASP,EAAgB,UAAU,kBAAoB,SAAU,EAAQ,CAC5D,GAAI,GAAa,KAAK,gBAElB,EAAK,GAAI,QAAO,KAAK,OAAO,EAAO,eAAe,MAAO,EAAO,eAAe,OAC/E,EAAK,GAAI,QAAO,KAAK,OAAO,EAAO,eAAe,MAAO,EAAO,eAAe,OAE/E,EAAQ,EAAW,qBAAqB,GAC5C,EAAM,GAAK,KAAK,UAChB,EAAM,GAAK,KAAK,UAChB,GAAI,GAAQ,EAAW,qBAAqB,GAC5C,EAAM,GAAK,KAAK,UAChB,EAAM,GAAK,KAAK,UAEhB,GAAI,GAAK,EAAW,qBAAqB,GACrC,EAAK,EAAW,qBAAqB,GAEzC,SAAO,OAAO,GACd,EAAO,OAAO,GACP,GAKX,EAAgB,UAAU,QAAU,UAAY,CAC5C,KAAK,gBAAgB,IAQzB,EAAgB,UAAU,eAAiB,SAAU,EAAM,CAEvD,OAAS,GAAI,EAAG,EAAI,KAAK,UAAU,OAAQ,IACvC,KAAK,UAAU,GAAG,SAEtB,KAAK,UAAY,GAEjB,OAAS,GAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IAAK,CAC3C,GAAI,GAAS,KAAK,SAAS,GAC3B,EAAO,QAAU,GACb,GACA,EAAO,OAAO,QAY1B,EAAgB,UAAU,uBAAyB,SAAU,EAAI,EAAI,CACjE,GAAI,GAAI,KACJ,EAAS,GAAG,MAAQ,EAAG,OAAS,KAAK,GAAM,IAC3C,EAAS,GAAG,MAAQ,EAAG,OAAS,KAAK,GAAM,IAC3C,EAAI,KAAK,IAAI,EAAO,GAAK,KAAK,IAAI,EAAO,GACzC,KAAK,IAAK,EAAG,MAAQ,KAAK,GAAM,KAC5B,KAAK,IAAK,EAAG,MAAQ,KAAK,GAAM,KAChC,KAAK,IAAI,EAAO,GAChB,KAAK,IAAI,EAAO,GACpB,EAAI,EAAI,KAAK,MAAM,KAAK,KAAK,GAAI,KAAK,KAAK,EAAI,IACnD,MAAO,GAAI,GASf,EAAgB,UAAU,kBAAoB,SAAU,EAAQ,EAAQ,CACpE,MAAO,GAAO,SAAS,EAAO,gBAOlC,EAAgB,UAAU,qBAAuB,SAAU,EAAQ,CAG/D,OAFI,GAAW,IACX,EAAiB,KACZ,EAAI,EAAG,EAAI,KAAK,UAAU,OAAQ,IAAK,CAC5C,GAAI,GAAU,KAAK,UAAU,GACzB,EAAS,EAAQ,YACrB,GAAI,EAAQ,CACR,GAAI,GAAI,KAAK,uBAAuB,EAAQ,EAAO,eAC/C,EAAI,GACJ,GAAW,EACX,EAAiB,IAI7B,GAAI,GAAkB,EAAe,wBAAwB,GACzD,EAAe,UAAU,OAExB,CACD,GAAI,GAAU,GAAI,IAAQ,MAC1B,EAAQ,UAAU,GAClB,KAAK,UAAU,KAAK,KAU5B,EAAgB,UAAU,gBAAkB,SAAU,EAAQ,CAC1D,GAAI,GAAQ,KACZ,GAAI,EAAC,KAAK,OAIV,CAAI,IAAW,GACX,QAAO,KAAK,MAAM,QAAQ,KAAM,kBAAmB,MAC/C,MAAO,MAAK,gBAAmB,aAC/B,cAAa,KAAK,gBAClB,MAAO,MAAK,iBAUpB,OAHI,GAAY,GAAI,QAAO,KAAK,aAAa,KAAK,SAAS,YAAY,eAAgB,KAAK,SAAS,YAAY,gBAC7G,EAAS,KAAK,kBAAkB,GAChC,EAAQ,KAAK,IAAI,EAAS,KAAK,WAAY,KAAK,SAAS,QACpD,EAAI,EAAQ,EAAI,EAAO,IAAK,CACjC,GAAI,GAAS,KAAK,SAAS,GACvB,CAAC,EAAO,SAAW,KAAK,kBAAkB,EAAQ,IAC9C,EAAC,KAAK,eACL,KAAK,eAAiB,EAAO,eAC9B,KAAK,qBAAqB,GAItC,GAAI,EAAQ,KAAK,SAAS,OACtB,KAAK,eAAiB,OAAO,WAAW,UAAY,CAChD,EAAM,gBAAgB,IACvB,OAEF,CACD,MAAO,MAAK,eACZ,OAAO,KAAK,MAAM,QAAQ,KAAM,gBAAiB,MACjD,OAAS,GAAI,EAAG,EAAI,KAAK,UAAU,OAAQ,IACvC,KAAK,UAAU,GAAG,gBAY9B,EAAgB,WAAa,SAAU,EAAS,EAAW,CAIvD,OAHI,GAAQ,EACR,EAAQ,EAAQ,OAChB,EAAK,EACF,IAAO,GACV,EAAK,KAAK,MAAM,EAAK,IACrB,IAEJ,SAAQ,KAAK,IAAI,EAAO,GACjB,CACH,KAAM,EAAM,WACZ,MAAO,EACP,MAAO,KASf,EAAgB,iBAAmB,SAAU,EAAW,CACpD,MAAO,IAAS,CAAE,UAAW,QAAS,SAAU,GAAI,eAAgB,OAAQ,eAAgB,EAAU,OAAQ,WAAY,OAAQ,UAAW,SAAU,WAAY,mBAAoB,mBAAoB,OAAS,IAKxN,EAAgB,WAAa,IAI7B,EAAgB,cAAgB,IAIhC,EAAgB,WAAa,cAI7B,EAAgB,gBAAkB,MAIlC,EAAgB,YAAc,CAAC,GAAI,GAAI,GAAI,GAAI,IACxC,GACT,ICplCF,GAnSqB,GAAU,CAC7B,KAAM,CACJ,UACA,MACA,MACA,kBACA,eACA,cACA,OACA,QACA,UACA,aACE,EAGE,EAAgB,IACb,OAAO,WAAa,IAGvB,EAAc,IAAM,CAExB,KAAM,GAAQ,OAAO,WACf,EAAS,OAAO,YAGtB,MAAI,GAAQ,GAMd,GAAI,GAEJ,MAAI,MAAiB,IACnB,EAAY,QAEZ,EAAY,QAGd,gBAAU,IAAM,CACd,KAAM,GAAS,GAAI,IAAO,CACxB,OAAQ,0CACR,QAAS,WAGL,EAAS,CACb,IAAK,QACL,IAAK,QAGP,EACG,OACA,KAAK,IAAM,CACV,KAAM,GAAc,CAClB,SAAU,EACV,UAAW,EACX,QAAS,GACT,MAAO,KACP,OAAQ,EACR,eAII,EAAM,GAAI,QAAO,OAAO,KAAK,IAAI,SAAS,eAAe,OAAQ,CACrE,SACA,KAAM,EACN,eAAgB,GAChB,kBAAmB,GACnB,YAAa,GACb,kBAAmB,GACnB,eAAgB,KAGZ,GAAgB,CACpB,CACE,UAAW,QACX,IAAK,uBACL,OAAQ,GACR,MAAO,GACP,QAAS,OACT,WAAY,KAIhB,GAAI,IAEC,IAMH,GAAa,GAAI,QAAO,OAAO,KAAK,WAAW,CAC7C,YAAa,GAAI,QAAO,OAAO,KAAK,KAAK,EAAG,GAC5C,eAAgB,KAPlB,GAAa,GAAI,QAAO,OAAO,KAAK,WAAW,CAC7C,YAAa,GAAI,QAAO,OAAO,KAAK,KAAK,IAAK,KAC9C,eAAgB,KAUpB,KAAM,GAAa,EACb,GAAU,GAAU,YAAV,EAAY,IAAK,IAAa,CAC5C,KAAM,IAAS,GAAI,QAAO,OAAO,KAAK,OAAO,CAC3C,SAAU,CAAE,IAAK,GAAS,SAAU,IAAK,GAAS,WAClD,MAAO,GAAS,MAChB,KAAM,IAAS,OAAS,sBAAwB,0BAChD,QAGF,GAAO,YAAY,QAAS,IAAM,CAEhC,KAAM,IAAU;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKR,GAAS;AAAA;AAAA,wDAGX,GAAS,kBAAoB,GAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAc3B,GAAS,8BACpB,GAAS,2DAET,EAAa;AAAA;AAAA,uDAIT,GAAS,cAAgB,GAAK;AAAA;AAAA,oBAG5B,EAAa;AAAA;AAAA;AAAA;AAAA,oBAIb,GAAS;AAAA;AAAA;AAAA,yBAGJ,GAAS,gDAEpB,IAAS,OACL,EAAa,mBACb,GAAS,iBACT,EAAa,wBACb,EAAa;AAAA;AAAA,YAMb,GAAiB,GAAO,cAC9B,EAAI,MAAM,IAEV,GAAW,WAAW,IACtB,GAAW,KAAK,EAAK,MAIvB,KAAM,IAAkB,SAAS,eAAe,6BAChD,MAAI,KACF,GAAgB,iBAAiB,QAAS,IAAM,CAE1C,UAAU,YACZ,UAAU,YAAY,mBACnB,IAAa,CACZ,KAAM,IAAU,CACd,IAAK,GAAS,OAAO,SACrB,IAAK,GAAS,OAAO,WAIjB,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,KAEb,IAAU,CACT,QAAQ,MAAM,+BAAgC,MAIlD,QAAQ,MAAM,mDAKb,KAIH,GAAgB,GAAI,IAAgB,EAAK,GAAS,CACtD,OAAQ,GACR,SAAU,GACV,QAAS,KAGX,GAAI,EAAiB,CA6BnB,GA3BA,UAAU,YAAY,mBACnB,IAAa,CACZ,KAAM,IAAU,CACd,MACA,OAII,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,KAEb,IAAU,CACT,QAAQ,MAAM,+BAAgC,MAI9C,GAAO,EAAK,CACd,KAAM,IAAU,CACd,MACA,OAII,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,IAKd,KAAM,IAAiB,GAAQ,MAAM,EAAG,GAClC,GAAS,GAAI,QAAO,OAAO,KAAK,aACtC,GAAO,OAAO,IAAc,YAAd,GAAgB,eAC9B,EAAI,UAAU,QACT,CACL,KAAM,IAAS,GAAI,QAAO,OAAO,KAAK,aACtC,GAAQ,QAAS,IAAW,CAC1B,GAAO,OAAO,GAAO,iBAGvB,EAAI,UAAU,OAGjB,MAAO,GAAU,CAEhB,QAAQ,MAAM,8CAA4B,MAE7C,CAAC,EAAO,EAAS,IAEb,uBAAK,GAAG,MAAM,UAAU,cAAc,MAAO,CAAE,UAAW,EAAW,MAAO,WCjBrF,GA/QgB,GAAU,CACxB,KAAM,CACJ,UACA,MACA,MACA,kBACA,eACA,cACA,OACA,QACA,UACA,aACE,EAGE,EAAgB,IACb,OAAO,WAAa,IAG7B,sBAAU,IAAM,CACd,KAAM,GAAS,GAAI,IAAO,CACxB,OAAQ,0CACR,QAAS,WAGL,EAAS,CACb,IAAK,QACL,IAAK,QAGP,EACG,OACA,KAAK,IAAM,CACV,KAAM,GAAc,CAClB,SAAU,EACV,UAAW,EACX,QAAS,GACT,MAAO,KACP,OAAQ,EACR,eAII,EAAM,GAAI,QAAO,OAAO,KAAK,IAAI,SAAS,eAAe,UAAW,CACxE,SACA,KAAM,EACN,eAAgB,GAChB,kBAAmB,GACnB,YAAa,GACb,kBAAmB,GACnB,eAAgB,KAGZ,EAAgB,CACpB,CACE,UAAW,QACX,IAAK,uBACL,OAAQ,GACR,MAAO,GACP,QAAS,OACT,WAAY,KAIhB,GAAI,GAEC,IAMH,EAAa,GAAI,QAAO,OAAO,KAAK,WAAW,CAC7C,YAAa,GAAI,QAAO,OAAO,KAAK,KAAK,EAAG,GAC5C,eAAgB,KAPlB,EAAa,GAAI,QAAO,OAAO,KAAK,WAAW,CAC7C,YAAa,GAAI,QAAO,OAAO,KAAK,KAAK,IAAK,KAC9C,eAAgB,KAUpB,KAAM,IAAa,EACb,GAAU,IAAU,YAAV,GAAY,IAAK,IAAa,CAC5C,KAAM,IAAS,GAAI,QAAO,OAAO,KAAK,OAAO,CAC3C,SAAU,CAAE,IAAK,GAAS,SAAU,IAAK,GAAS,WAClD,MAAO,GAAS,MAChB,KAAM,IAAS,OAAS,sBAAwB,0BAChD,QAGF,GAAO,YAAY,QAAS,IAAM,CAEhC,KAAM,IAAU;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKR,GAAS;AAAA;AAAA,wDAGX,GAAS,kBAAoB,GAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAc3B,GAAS,8BACpB,GAAS,2DAET,EAAa;AAAA;AAAA,uDAIT,GAAS,cAAgB,GAAK;AAAA;AAAA,oBAG5B,EAAa;AAAA;AAAA;AAAA;AAAA,oBAIb,GAAS;AAAA;AAAA;AAAA,yBAGJ,GAAS,gDAEpB,IAAS,OACL,EAAa,mBACb,GAAS,iBACT,EAAa,wBACb,EAAa;AAAA;AAAA,YAMb,GAAiB,GAAO,cAC9B,EAAI,MAAM,IAEV,EAAW,WAAW,IACtB,EAAW,KAAK,EAAK,MAIvB,KAAM,IAAkB,SAAS,eAAe,yBAChD,MAAI,KACF,GAAgB,iBAAiB,QAAS,IAAM,CAE1C,UAAU,YACZ,UAAU,YAAY,mBACnB,IAAa,CACZ,KAAM,IAAU,CACd,IAAK,GAAS,OAAO,SACrB,IAAK,GAAS,OAAO,WAIjB,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,KAEb,IAAU,CACT,QAAQ,MAAM,+BAAgC,MAIlD,QAAQ,MAAM,mDAKb,KAIH,EAAgB,GAAI,IAAgB,EAAK,GAAS,CACtD,OAAQ,EACR,SAAU,GACV,QAAS,KAGX,GAAI,EAAiB,CA6BnB,GA3BA,UAAU,YAAY,mBACnB,IAAa,CACZ,KAAM,IAAU,CACd,MACA,OAII,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,KAEb,IAAU,CACT,QAAQ,MAAM,+BAAgC,MAI9C,GAAO,EAAK,CACd,KAAM,IAAU,CACd,MACA,OAII,GAAa,GAAI,QAAO,OAAO,KAAK,OAAO,CAC/C,SAAU,GACV,MAAO,EAAa,2BACpB,KAAM,CACJ,IAAK,4BACL,WAAY,GAAI,QAAO,OAAO,KAAK,KAAK,GAAI,KAE9C,QAIF,EAAI,UAAU,IACd,EAAI,QAAQ,IAKd,KAAM,IAAiB,GAAQ,MAAM,EAAG,GAClC,GAAS,GAAI,QAAO,OAAO,KAAK,aACtC,GAAO,OAAO,IAAc,YAAd,GAAgB,eAC9B,EAAI,UAAU,QACT,CACL,KAAM,IAAS,GAAI,QAAO,OAAO,KAAK,aACtC,GAAQ,QAAS,IAAW,CAC1B,GAAO,OAAO,GAAO,iBAGvB,EAAI,UAAU,OAGjB,MAAO,GAAU,CAEhB,QAAQ,MAAM,8CAA4B,MAE7C,CAAC,EAAO,EAAS,IAEb,uBAAK,GAAG,SAAS,UAAU,cAAc,MAAO,CAAE,UAAW,QAAS,MAAO,WC4XtF,GA9kBsD,CAAC,CACrD,UACA,MACA,aACA,eACA,cACA,UACA,WACA,YACA,aACA,sBACI,CACJ,GAAc,CACZ,MACA,YAAa,SAAS,cAAc,IAAI,MACxC,cACA,cAAe,CAAE,WACjB,qBAAsB,KAIxB,KAAM,CAAE,cAAa,OAAQ,EACvB,CAAC,EAAW,GAAc,eAAS,IAGnC,EAA+B,GAAgC,GAC/D,CAAC,EAAuB,GAA4B,eAAS,GAG7D,CAAC,EAAoB,IAAyB,eAAc,IAG5D,CAAC,GAAoB,GAAyB,eAAS,EAAW,aAClE,CAAC,GAAmB,IAAwB,eAAS,EAAW,YAGhE,CAAC,GAAc,IAAmB,eAAkB,IACpD,CAAC,GAAe,IAAoB,eAAkB,IAGtD,CAAC,GAAuB,IAA4B,eAAkB,IACtE,CAAC,GAAU,IAAe,eAAkB,IAG5C,CAAC,GAAY,IAAiB,eAAiB,IAC/C,CAAC,GAAyB,IAA8B,eAAkB,IAG1E,GAAkB,YAIlB,GAAa,EAAmB,OAAS,EAEzC,GAAa,GACb,GAAiB,GACjB,GAAkB,GAClB,GAAqB,IAAyB,CAAC,GAC/C,GAAkB,CAAC,IAAgB,GAEnC,GACJ,CAAC,IAAgB,IAAc,KAAuB,GAGlD,GAAwB,GAA2B,IACnD,GAAuB,GAA2B,IAIxD,GAAkB,IAElB,KAAM,IAAwB,EAAmB,GAAK,kBAChD,GAAkB,EAAa,YAAc,mBAG7C,GAAwC,MAC5C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,GAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAuC,MAC3C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,GAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAsC,MAC1C,GACA,KACkB,C,OAClB,GAAgB,IAChB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,UACA,MAAO,QAAS,KAAQ,qBAAI,GAC5B,OAAQ,EACR,cACA,aAAc,IACX,QAMT,GAAsB,GAAS,QAAQ,MAGvC,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAgB,IAChB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAgB,IAChB,GAAyB,MAKvB,GAAyC,MAC7C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAAqB,IAC/B,UAAW,GAAqB,IAChC,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,GAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAAwC,MAC5C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA8B,IACnE,UAAW,GAA2B,IAA8B,IACpE,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,GAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAAuC,MAC3C,GACA,KACkB,CAClB,GAAiB,IACjB,GAAyB,IAEzB,GAAI,CACF,KAAM,IAAW,KAAM,IAAU,CAC/B,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,OAAD,QAClB,SAAU,GAA2B,IAA6B,IAClE,UAAW,GAA2B,IAA6B,IACnE,UACA,MAAO,IAAS,EAAW,WAC3B,OAAQ,EAAmB,OAC3B,cACA,aAAc,IACX,QAMH,GAAY,EACZ,GAAe,GAAS,QAAQ,KAChC,GAAkB,GAAU,OAAO,IAEzC,GAAsB,IAGtB,KAAM,IAA6B,GAAS,QAAQ,WAC9C,CAAE,eAAa,eAAe,GAEpC,EAAsB,IACtB,GAAqB,UACd,GAAP,CACA,GAAiB,IACjB,GAAY,IACZ,QAAQ,MAAM,W,CAEd,GAAiB,IACjB,GAAyB,MAKvB,GAA0B,IAA+C,CAC7E,KAAM,CAAE,WAAS,UAAU,GAAM,OAC3B,GAAc,GACd,GAAgB,GAGhB,GAA2B,OAAH,wBACzB,GAAqB,EACvB,IAAc,KAEjB,EAAyB,IAGzB,GAAoB,GAAa,IACjC,KAAM,IAAQ,EAAY,KAAO,GAAY,GAGzC,IAAyB,CAAC,IAC5B,GAAqC,GAA0B,IAG7D,IACF,GAAoC,GAA0B,IAG5D,CAAC,IAAyB,CAAC,IAC7B,GAAsC,GAA0B,KAI9D,GAAc,IAAM,CACpB,IAAyB,CAAC,IAC5B,GAAqC,GAEnC,IACF,GAAoC,GAGlC,CAAC,IAAyB,CAAC,IAC7B,GAAsC,IAK1C,gBAAU,IAAM,CACd,MACC,CAAC,GAAsB,KAG1B,KAAM,IAAmB,IACnB,IAAyB,CAAC,GACrB,GAAsC,EAAuB,IAElE,GACK,GAAqC,EAAuB,IAG9D,GAAuC,EAAuB,IAGjE,GAAe,IAAM,CACrB,EACF,GAAW,IACX,MAEA,GAAW,IACX,EAAW,WAAa,KACxB,EAAW,KACX,GAAgB,QAIpB,MACE,iCACE,uBAAK,UAAU,aACb,gBAAC,GAAmB,KAClB,gBAAC,GAAsB,CACrB,WAAY,GACZ,cAAe,GACf,qBAAsB,GACtB,aAAc,EACd,KAAM,GACN,UAAW,IAGb,gBAAC,GAAa,CACZ,QAAS,EACT,UAAW,EACX,aAAc,EACd,KAAM,GACN,eAAgB,KAElB,gBAAC,GAAc,CACb,QAAS,EACT,UAAW,EACX,KAAM,GACN,eAAgB,MAInB,IACC,gBAAC,GAAmB,CAClB,UAAW,EACX,WAAY,GACZ,aAAc,EACd,YAAY,6BAKlB,uBAAK,UAAU,kBAAkB,GAAG,eAClC,uBAAK,UAAU,OACb,uBAAK,UAAU,8BACZ,IACC,gBAAC,GAAe,CACd,KAAM,GACN,aAAc,EACd,UAAW,IAIf,0BACE,KAAK,SACL,QAAS,GACT,UAAW,GAAG,MAAmB,uBAAyC,cAC7D,EAAY,wBAA0B,wBAElD,EACC,gBAAC,GAAI,CACH,KAAM,EAAY,KAClB,QAAS,EAAY,QACrB,IAAK,EAAY,IACjB,IAAK,EAAY,IACjB,UAAU,gDAGZ,gBAAC,GAAI,CACH,KAAM,EAAI,KACV,QAAS,EAAI,QACb,IAAK,EAAI,IACT,IAAK,EAAI,IACT,UAAU,gDAGb,EACG,GAAgB,EAAc,0BAC9B,GAAgB,EAAc,4BAKvC,EACC,gCACG,IACC,uBAAK,UAAU,OACb,uBAAK,UAAU,8BACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,YAAY,6BAKpB,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,gBAAC,GAAW,CACV,QAAS,EACT,aAAc,EACd,YAAa,EACb,IAAK,GAA2B,IAA6B,IAC7D,IAAK,GAA2B,IAA6B,IAC7D,gBAAe,GACf,MAAO,EACP,QAAO,GACP,UAAS,GACT,qBAAoB,QAM5B,gBAAC,GAAU,KACR,IACC,uBAAK,UAAW,oBAAoB,GAAa,OAAS,MACxD,gBAAC,GAAM,OAIV,IACC,gBAAC,GAAW,CACV,aAAc,EACd,KAAK,wBACL,YAAY,wBAIf,IACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,YAAY,2BAIf,IACC,gBAAC,GAAW,CACV,KAAM,GACN,aAAc,EACd,MAAO,EACP,UAAW,IAId,IACC,gBAAC,GAAM,CACL,SAAS,UACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,QAAS,IAAM,GAAgB,EAAW,YAC1C,WAAY,oBAAoB,KAChC,UAAW,SC7hB3B,GA7FyD,CAAC,CACxD,MACA,QACA,WAAY,EACZ,eACA,cACA,UACA,WACA,iBACA,iBACA,WACA,YACA,eACI,CACJ,KAAM,CACJ,eACA,gBACA,QACA,2BACA,4BACA,WACA,aACA,MAAO,IACL,GAAc,CAChB,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,MACxC,cAAe,QACf,aAAc,GACd,oBACA,cACA,cAAe,CAAE,WACjB,qBAAsB,GACtB,WACA,iBACA,iBACA,WACA,cAGI,EAAiB,IAAK,YAAL,EAAO,UAAW,GAAK,GAE9C,sBAAU,IAAM,CACd,KACC,IAGD,2BACG,GACC,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,yBACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAInD,GACC,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAInD,GACC,uBAAK,UAAU,yCACb,gBAAC,GAAM,OAGT,gBAAC,GAAW,CACV,KAAM,YACN,aAAc,EACd,MAAO,EACP,UAAW,IAId,GACC,gBAAC,GAAM,CACL,SAAS,UACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,uCCrFrB,KAAM,IAAa,aAyCnB,OAvCmC,CAAC,CAAE,WAAU,YAAW,gBAAiB,CAC1E,KAAM,GAAa,CAAE,IAAK,EAAU,IAAK,GASnC,EAAa,CACjB,KAAM,GACN,OAAQ,EACR,UAAW,UACX,iBAAkB,GAClB,OAZgB,CAChB,CACE,YAAa,MACb,QAAS,CAAC,CAAE,WAAY,WAatB,EAAU,IAAY,CAC1B,KAAM,GAAM,GAAI,QAAO,KAAK,IAAI,SAAS,eAAe,IAA4B,GAGpF,GAAI,QAAO,KAAK,OAAO,CACrB,SAAU,EACV,MACA,KAAM,KAIV,sBAAU,IAAM,CACd,KACC,IAGD,uBAAK,GAAI,GAAY,UAAU,oCAAmC,cAAa,gBCuDnF,GA7FqD,CAAC,CACpD,MACA,QACA,WAAY,EACZ,eACA,cACA,UACA,WACA,iBACA,iBACA,WACA,YACA,eACI,CACJ,KAAM,CACJ,eACA,gBACA,QACA,2BACA,4BACA,WACA,aACA,MAAO,IACL,GAAc,CAChB,MACA,aAAc,EACd,YAAa,SAAS,cAAc,IAAI,MACxC,cAAe,QACf,aAAc,GACd,oBACA,cACA,cAAe,CAAE,WACjB,qBAAsB,GACtB,WACA,iBACA,iBACA,WACA,cAGI,EAAiB,IAAK,YAAL,EAAO,UAAW,GAAK,GAE9C,sBAAU,IAAM,CACd,KACC,IAGD,2BACG,GACC,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,yBACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAInD,GACC,uBAAK,UAAU,QACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,4BACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAInD,GACC,uBAAK,UAAU,yCACb,gBAAC,GAAM,OAGT,gBAAC,GAAW,CACV,KAAM,QACN,aAAc,EACd,MAAO,EACP,UAAW,IAId,GACC,gBAAC,GAAM,CACL,SAAS,UACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,mCC5BrB,GAxD4C,CAAC,CAAE,eAAc,YAAW,cAAe,CACrF,KAAM,CAAC,EAAU,GAAe,eAAiC,GAAuB,MAQlF,EAAmB,GAAuC,CAC9D,EAAS,GACT,EAAY,IAGR,CAAE,OAAM,QAAS,EAEvB,MACE,wBAAK,UAAU,uBACb,0BACE,KAAK,SAAQ,cACA,OAAO,GAAuB,OAC3C,UAAW,oCACT,IAAa,GAAuB,KAAO,YAAc,KAE3D,QAAS,IAAM,EAAgB,GAAuB,OAEtD,gBAAC,GAAI,CACH,KAAM,EAAK,KACX,QAAS,EAAK,QACd,IAAK,EAAK,IACV,IAAK,EAAK,IACV,UAAU,oDAEX,GAAgB,EAAc,iBAEjC,0BACE,KAAK,SAAQ,cACA,OAAO,GAAuB,OAC3C,UAAW,+BACT,IAAa,GAAuB,KAAO,YAAc,KAE3D,QAAS,IAAM,EAAgB,GAAuB,OAEtD,gBAAC,GAAI,CACH,KAAM,EAAK,KACX,QAAS,EAAK,QACd,IAAK,EAAK,IACV,IAAK,EAAK,IACV,UAAU,oDAEX,GAAgB,EAAc,mBCzCvC,KAAM,IAAsC,CAAC,CAAE,OAAM,kBAEjD,uBAAK,UAAU,uBACb,wBAAM,UAAU,aACb,GACC,EACA,IAAS,GAAuB,KAAO,eAAiB,iBAEpD,I,QACA,IACR,wBAAM,wBAAyB,CAAE,OAAQ,GAAgB,EAAc,IAAS,GAAuB,KAAO,oBAAsB,yBAMpI,GAAwC,CAAC,CAC7C,QACA,eACA,OACA,YACA,UACA,0BACI,CACJ,GAAI,CAAC,EAAO,MAAO,MAEnB,KAAM,CAAE,cAAe,EAEvB,MACE,iCACE,gBAAC,GAAS,CAAC,KAAM,EAAM,aAAc,IAErC,uBAAK,UAAU,eAAc,UAAU,EAAI,cAAe,eAAe,KACvE,uBAAK,UAAU,uBACb,uBAAK,UAAU,oBACb,uBAAK,UAAU,sFACf,uBAAK,UAAU,+CACZ,GAAgB,EAAc,aAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,QAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,SAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,cAEjC,uBAAK,UAAU,gFAInB,uBAAK,UAAU,sBACZ,EAAM,IAAK,GAAS,CACnB,KAAM,GAAoB,GAAG,IAAU,EAAK,kBAAkB,IAE9D,MACE,sBACE,KAAM,EACN,UAAU,oBAAmB,cACjB,mBACZ,IAAK,EAAK,GACV,MAAO,EAAK,OAEZ,uBAAK,UAAU,oBACb,uBAAK,UAAU,+CACb,2BACE,gBAAC,GAAO,CAAC,KAAM,EAAK,KAAM,UAAU,gCACpC,wBAAM,UAAU,yEACb,EAAK,QAGV,uBAAK,UAAU,kCACb,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,wCAIhB,uBACE,UAAU,oBAAmB,aACjB,GAAgB,EAAc,aAEzC,EAAK,a,IAAe,EAAK,YAE5B,uBACE,UAAU,oBAAmB,aACjB,GAAgB,EAAc,QAEzC,IAAS,GAAuB,KAAO,EAAK,WAAa,EAAK,eAEjE,uBACE,UAAU,oBAAmB,aACjB,GAAgB,EAAc,SAEzC,IAAS,GAAuB,KAAO,EAAK,YAAc,EAAK,gBAElE,uBACE,UAAU,gCAA+B,aAC7B,GAAgB,EAAc,cAEzC,EAAK,cAER,uBAAK,UAAU,mDACb,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,+CAahC,OAAe,WAAK,ICtGpB,GAlCkD,CAAC,CACjD,6BACA,YACA,eACI,CACJ,GAAI,CAAC,EAA2B,UAAW,MAAO,MAElD,KAAM,CAAE,cAAe,EAEvB,MACE,wBAAK,UAAU,SACb,qBAAG,UAAU,iBAAiB,EAA2B,OAEzD,qBAAG,UAAU,OAAO,wBAAyB,CAAE,OAAQ,EAA2B,SAClF,wBAAM,UAAU,qDACd,qBACE,KAAM,GAAG,EAA2B,KAAK,OAAO,IAChD,OAAQ,EAA2B,KAAK,OAAM,cAClC,kBAEX,EAA2B,KAAK,WAEnC,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,yCCjBpB,KAAM,IAAsB,sBACtB,GAAc,cACd,GAAc,cAEd,GAA0C,CAAC,CAAE,cAE/C,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,6CACb,uBAAK,UAAU,sBACb,uBAAK,UAAU,gBACb,uBAAK,UAAU,oEACb,uBAAK,UAAU,8BAA8B,SAqT7D,OA3S0E,CAAC,CACzE,MACA,cACA,eACA,UACA,UACA,cACA,QACA,YACA,6BACA,YACA,UACA,eACI,CACJ,KAAM,CAAE,YAAa,EAEf,CAAC,EAAsB,GAAqB,eAAiB,GAG7D,CAAC,EAAW,GAAgB,eAAiC,GAAuB,MAGpF,CAAC,EAAe,IAAoB,eAAkB,IACtD,CAAC,GAAY,GAAiB,eAAiC,GAI/D,CAAC,GAAW,IAAgB,eAAiB,GAC7C,CAAC,GAAgB,IAAgB,eAAkB,GACnD,CAAC,GAAe,IACpB,eAAkC,uBAE9B,CAAC,GAAiB,IAAsB,eAA6B,GACrE,CAAC,GAAiB,IAAsB,eAAiB,EAAQ,EAAQ,OAAS,GAAG,OASrF,GAAa,IAAwB,CACzC,KAAM,IAAoB,GAAG,KAE7B,GAAU,CACR,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,CACnB,KAAM,GACN,mBAIH,KAAM,IAAoB,CACzB,GAAI,GAAW,QAAQ,KAAK,OAAS,EACnC,GAAiB,IACjB,EAAc,GAAW,QAAQ,MACjC,GAAa,GAAW,QAAQ,SAChC,GAAmB,GAAW,QAAQ,SACtC,GAAa,GAAW,QAAQ,aAChC,GAAiB,GAAW,QAAQ,aAAa,qBACjD,EAAkB,GAAW,QAAQ,eAErC,UAAiB,IACX,GAAI,OAAM,qCAGnB,MAAO,IAAU,CAChB,GAAiB,OAejB,GAAgB,CAAC,GAAqB,KAAwB,CAClE,KAAM,IAAoB,GAAG,MAAe,KAE5C,GAAU,CACR,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,CACnB,KAAM,GACN,mBAIH,KAAM,IAAoB,CACzB,GAAI,GAAW,QAAQ,KAAK,OAAS,EACnC,GAAiB,IACjB,EAAc,GAAW,QAAQ,MACjC,GAAa,GAAW,QAAQ,SAChC,GAAmB,GAAW,QAAQ,SACtC,GAAa,GAAW,QAAQ,aAChC,GAAiB,GAAW,QAAQ,aAAa,qBACjD,EAAkB,GAAW,QAAQ,eAErC,UAAiB,IACX,GAAI,OAAM,yCAGnB,MAAO,IAAU,CAChB,GAAiB,OAgBjB,GAAoB,IAAwB,CAChD,GAAa,IACb,GAAU,IACV,OAAO,QAAQ,aAAa,KAAM,GAAI,SAAS,OAY3C,GAAoB,IAAwB,CAChD,GAAmB,IACnB,GAAc,GAAW,IACzB,OAAO,QAAQ,aAAa,KAAM,GAAI,SAAS,QAAe,OAI1D,GAAe,CAAC,GAChB,GAAsB,IAAO,GAAe,uBAAyB,iBACrE,GAAuB,IAAO,GAAe,OAAS,eAItD,GAAY,GACZ,GAAc,GAAI,QAAO,cACzB,GAAoB,GAAc,GAIlC,GAAc,IADN,GAAI,QAAO,WAAa,IACN,MAAM,IAIhC,GAAY,IAAI,GADN,QAAO,UACG,aAAa,MAAM,IAGvC,GAAqB,GAAG,WACxB,GAAqB,GAAG,MAAe,MAAe,KAKtD,GAAuB,IAEzB,2BACG,EACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,cACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,UAAU,UAGZ,gBAAC,GAAU,CACT,MAAO,GACP,aAAc,EACd,KAAM,EACN,UAAW,EACX,QAAS,EACT,qBAAsB,KAOhC,MACE,iCACE,gBAAC,GAAW,KACV,wBAAM,GAAI,GAAmB,cAAe,GAAqB,OAAO,OAAO,WAAU,IACvF,uBAAK,UAAU,oCACb,uBAAK,UAAU,oBACb,yBAAO,QAAS,GAAa,UAAU,eACpC,GAAgB,EAAc,cAC/B,uBAAK,UAAU,YACb,yBACE,GAAI,GACJ,KAAM,GAAW,cACJ,GACb,KAAK,OACL,UAAW,8BAA8B,QAAyB,OAClE,MAAO,GACP,IAAK,GACL,IAAK,GACL,SAAW,IAAU,CACnB,GAAiB,GAAM,OAAO,UAGlC,uBAAK,UAAU,wEACb,gBAAC,GAAI,CACH,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,IAAK,EAAS,IACd,IAAK,EAAS,IACd,UAAU,gEAKjB,IACC,uBAAK,UAAU,2CACZ,GAAgB,EAAc,MAKrC,uBAAK,UAAU,YACb,yBAAO,QAAS,GAAa,UAAU,eACpC,GAAgB,EAAc,eAC/B,0BACE,GAAI,GACJ,KAAM,GAAW,cACJ,GACb,UAAU,6BACV,SAAW,IAAU,CACnB,GAAiB,GAAM,OAAO,SAG/B,GAAgB,IAAI,CAAC,GAAM,KAGxB,0BAAQ,MAAO,GAAK,MAAO,IAAK,GAAO,SAAU,GAAK,YACnD,GAAK,aAWxB,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,gBAAC,GAAS,CAAC,aAAc,EAAc,UAAW,EAAW,SAAU,IACtE,QAIP,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,gBAAC,GAAc,CACb,UAAW,EAAU,UACrB,MAAO,EAAU,MACjB,MAAO,EAAU,MACjB,UAAW,EACX,OAAQ,EAAU,OAClB,YAAa,EACb,SAAU,IAEZ,gBAAC,GAAY,CACX,2BAA4B,EAC5B,UAAW,GACX,UAAW,SC1TzB,KAAM,IAAwC,CAAC,CAAE,QAAO,eAAc,UAAW,CAC/E,GAAI,CAAC,EAAO,MAAO,MAEnB,KAAM,GAAY,GACZ,EAAQ,EAER,wBAAM,MAAO,CAAE,KAAM,YACnB,uBACE,MAAM,KACN,OAAO,KACP,QAAQ,UACR,KAAK,OACL,MAAM,8BAEN,wBACE,EAAE,sEACF,KAAK,cAMX,EAAQ,EAER,wBAAM,MAAO,CAAE,KAAM,YACnB,uBACE,MAAM,KACN,OAAO,KACP,QAAQ,UACR,KAAK,OACL,MAAM,8BAEN,wBACE,EAAE,gEACF,KAAK,cAOb,wBAAM,MAAO,CAAE,KAAM,YACnB,uBACE,MAAM,6BACN,MAAM,KACN,OAAO,KACP,QAAQ,WACR,KAAK,QAEL,wBAAM,EAAE,8DAA8D,KAAK,cAMnF,MACE,wBAAK,UAAU,eAAc,UAAU,EAAI,cAAe,eAAe,KACvE,uBAAK,UAAU,uBACb,uBAAK,UAAU,yBACb,uBAAK,UAAU,sFACf,uBAAK,UAAU,+CACZ,GAAgB,EAAc,aAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,QAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,SAEjC,uBAAK,UAAU,+CACZ,GAAgB,EAAc,gBAKrC,uBAAK,UAAU,sBACZ,EAAM,IAAK,GAER,uBAAK,UAAU,iDACb,uBAAK,UAAU,+CACb,2BACE,gBAAC,GAAO,CAAC,KAAM,EAAK,KAAM,UAAU,gCACpC,wBAAM,UAAU,iBAAiB,EAAK,QAExC,uBAAK,UAAU,6DACZ,EAAS,EAAK,SAInB,uBACE,UAAU,oBAAmB,aACjB,GAAgB,EAAc,aAEzC,EAAK,a,IAAe,EAAK,YAE5B,uBAAK,UAAU,oBAAmB,aAAa,GAAgB,EAAc,QAC1E,IAAS,GAAuB,KAAO,EAAK,WAAa,EAAK,eAEjE,uBAAK,UAAU,oBAAmB,aAAa,GAAgB,EAAc,SAC1E,IAAS,GAAuB,KAAO,EAAK,YAAc,EAAK,gBAElE,uBACE,UAAU,gCAA+B,aAC7B,GAAgB,EAAc,cAEzC,EAAK,mBAUtB,OAAe,WAAK,ICzFpB,GAlCkD,CAAC,CACjD,6BACA,YACA,eACI,CACJ,GAAI,CAAC,EAA2B,UAAW,MAAO,MAElD,KAAM,CAAE,cAAe,EAEvB,MACE,wBAAK,UAAU,SACb,qBAAG,UAAU,iBAAiB,EAA2B,OAEzD,qBAAG,UAAU,OAAO,wBAAyB,CAAE,OAAQ,EAA2B,SAClF,wBAAM,UAAU,qDACd,qBACE,KAAM,GAAG,EAA2B,KAAK,OAAO,IAChD,OAAQ,EAA2B,KAAK,OAAM,cAClC,kBAEX,EAA2B,KAAK,WAEnC,gBAAC,GAAI,CACH,KAAM,EAAW,KACjB,QAAS,EAAW,QACpB,IAAK,EAAW,IAChB,IAAK,EAAW,IAChB,UAAU,yCClBpB,KAAM,IAAsB,sBACtB,GAAc,cACd,GAAc,cAEd,GAA0C,CAAC,CAAE,cAE/C,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,6CACb,uBAAK,UAAU,sBACb,uBAAK,UAAU,gBACb,uBAAK,UAAU,oEACb,uBAAK,UAAU,8BAA8B,SAwS7D,OA9R0E,CAAC,CACzE,MACA,cACA,eACA,UACA,UACA,cACA,QACA,YACA,6BACA,YACA,UACA,YACA,UACI,CACJ,KAAM,CAAE,YAAa,EAEf,CAAC,EAAsB,GAAqB,eAAiB,GAG7D,CAAC,GAAa,eAAiC,GAAuB,MAGtE,CAAC,EAAe,IAAoB,eAAkB,IACtD,CAAC,GAAY,GAAiB,eAAiC,GAI/D,CAAC,GAAW,IAAgB,eAAiB,GAC7C,CAAC,GAAgB,IAAgB,eAAkB,GACnD,CAAC,GAAe,IACpB,eAAkC,uBAE9B,CAAC,GAAiB,IAAsB,eAA6B,GACrE,CAAC,GAAiB,IAAsB,eAAiB,EAAQ,EAAQ,OAAS,GAAG,OASrF,GAAa,IAAwB,CACzC,KAAM,IAAoB,GAAG,KAE7B,GAAU,CACR,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,CACnB,KAAM,GACN,cACA,KAAM,QAIT,KAAM,IAAoB,CACzB,GAAI,GAAW,QAAQ,KAAK,OAAS,EACnC,GAAiB,IACjB,EAAc,GAAW,QAAQ,MACjC,GAAa,GAAW,QAAQ,SAChC,GAAmB,GAAW,QAAQ,SACtC,GAAa,GAAW,QAAQ,aAChC,GAAiB,GAAW,QAAQ,aAAa,qBACjD,EAAkB,GAAW,QAAQ,eAErC,UAAiB,IACX,GAAI,OAAM,qCAGnB,MAAO,IAAU,CAChB,GAAiB,OAejB,GAAgB,CAAC,GAAqB,KAAwB,CAClE,KAAM,IAAoB,GAAG,MAAe,KAE5C,GAAU,CACR,SAAU,CACR,OAAQ,OACR,IAAK,EACL,KAAM,KAAK,UAAU,CACnB,KAAM,GACN,cACA,KAAM,QAIT,KAAM,IAAoB,CACzB,GAAI,GAAW,QAAQ,KAAK,OAAS,EACnC,GAAiB,IACjB,EAAc,GAAW,QAAQ,MACjC,GAAa,GAAW,QAAQ,SAChC,GAAmB,GAAW,QAAQ,SACtC,GAAa,GAAW,QAAQ,aAChC,GAAiB,GAAW,QAAQ,aAAa,qBACjD,EAAkB,GAAW,QAAQ,eAErC,UAAiB,IACX,GAAI,OAAM,yCAGnB,MAAO,IAAU,CAChB,GAAiB,OAgBjB,GAAoB,IAAwB,CAChD,GAAa,IACb,GAAU,IACV,OAAO,QAAQ,aAAa,KAAM,GAAI,SAAS,OAY3C,GAAoB,IAAwB,CAChD,GAAmB,IACnB,GAAc,GAAW,IACzB,OAAO,QAAQ,aAAa,KAAM,GAAI,SAAS,QAAe,OAI1D,GAAe,CAAC,GAChB,GAAsB,IAAO,GAAe,uBAAyB,iBACrE,GAAuB,IAAO,GAAe,OAAS,eAItD,GAAY,GACZ,GAAc,GAAI,QAAO,cACzB,GAAoB,GAAc,GAIlC,GAAc,IADN,GAAI,QAAO,WAAa,IACN,MAAM,IAIhC,GAAY,IAAI,GADN,QAAO,UACG,aAAa,MAAM,IAGvC,GAAqB,GAAG,WACxB,GAAqB,GAAG,MAAe,MAAe,KAE5D,MACE,iCACE,gBAAC,GAAW,KACV,wBAAM,GAAI,GAAmB,cAAe,GAAqB,OAAO,OAAO,WAAU,IACvF,uBAAK,UAAU,oCACb,uBAAK,UAAU,oBACb,yBAAO,QAAS,GAAa,UAAU,eACpC,GAAgB,EAAc,cAC/B,uBAAK,UAAU,YACb,yBACE,GAAI,GACJ,KAAM,GAAW,cACJ,GACb,KAAK,OACL,UAAW,8BAA8B,QAAyB,OAClE,MAAO,GACP,IAAK,GACL,IAAK,GACL,SAAW,IAAU,CACnB,GAAiB,GAAM,OAAO,UAGlC,uBAAK,UAAU,wEACb,gBAAC,GAAI,CACH,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,IAAK,EAAS,IACd,IAAK,EAAS,IACd,UAAU,gEAKjB,IACC,uBAAK,UAAU,2CACZ,GAAgB,EAAc,MAKrC,uBAAK,UAAU,YACb,yBAAO,QAAS,GAAa,UAAU,eACpC,GAAgB,EAAc,eAC/B,0BACE,GAAI,GACJ,KAAM,GAAW,cACJ,GACb,UAAU,6BACV,SAAW,IAAU,CACnB,GAAiB,GAAM,OAAO,SAG/B,GAAgB,IAAI,CAAC,GAAM,KAGxB,0BAAQ,MAAO,GAAK,MAAO,IAAK,GAAO,SAAU,GAAK,YACnD,GAAK,aAWxB,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,2BACG,EACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,cACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,UAAU,UAGZ,gBAAC,GAAU,CAAC,MAAO,GAAY,aAAc,EAAc,KAAM,QAM3E,uBAAK,UAAU,aACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,gBAAC,GAAc,CACb,UAAW,EAAU,UACrB,MAAO,EAAU,MACjB,MAAO,EAAU,MACjB,UAAW,EACX,OAAQ,EAAU,OAClB,YAAa,EACb,SAAU,EACV,KAAM,IAER,gBAAC,GAAY,CACX,2BAA4B,EAC5B,UAAW,GACX,UAAW,SC/TzB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,YAAe,EAAG,CAChB,MAAO,GAAI,GAAM,EAEnB,KAAM,IAAM,CAAC,EAAG,EAAG,IAAM,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,GAClD,YAAa,EAAG,CACd,MAAO,IAAI,GAAM,EAAI,MAAO,EAAG,KAEjC,YAAa,EAAG,CACd,MAAO,IAAI,GAAM,EAAI,MAAO,EAAG,KAEjC,YAAa,EAAG,CACd,MAAO,IAAI,GAAM,EAAI,KAAM,EAAG,KAEhC,YAAa,EAAG,CACd,MAAO,IAAI,GAAM,EAAI,MAAQ,IAAK,EAAG,GAEvC,YAAa,EAAG,CACd,MAAO,IAAI,GAAM,EAAI,KAAM,EAAG,KAGhC,KAAM,IAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IACrJ,GAAM,CAAC,GAAG,oBACV,GAAK,GAAK,GAAI,EAAI,IAClB,GAAK,GAAK,GAAK,GAAI,MAAS,GAAK,GAAI,EAAI,IACzC,GAAK,GAAO,GAAI,MAAS,IAAQ,GAAI,IACrC,GAAU,GAAK,GAAG,EAAE,IAAM,GAAG,EAAE,IAAM,GAAG,EAAE,IAAM,GAAG,EAAE,GAC3D,YAAkB,EAAK,CACrB,GAAI,GAAM,EAAI,OACV,EACJ,MAAI,GAAI,KAAO,KACb,CAAI,IAAQ,GAAK,IAAQ,EACvB,EAAM,CACJ,EAAG,IAAM,GAAM,EAAI,IAAM,GACzB,EAAG,IAAM,GAAM,EAAI,IAAM,GACzB,EAAG,IAAM,GAAM,EAAI,IAAM,GACzB,EAAG,IAAQ,EAAI,GAAM,EAAI,IAAM,GAAK,KAE7B,KAAQ,GAAK,IAAQ,IAC9B,GAAM,CACJ,EAAG,GAAM,EAAI,KAAO,EAAI,GAAM,EAAI,IAClC,EAAG,GAAM,EAAI,KAAO,EAAI,GAAM,EAAI,IAClC,EAAG,GAAM,EAAI,KAAO,EAAI,GAAM,EAAI,IAClC,EAAG,IAAQ,EAAK,GAAM,EAAI,KAAO,EAAI,GAAM,EAAI,IAAO,OAIrD,EAET,KAAM,IAAQ,CAAC,EAAG,IAAM,EAAI,IAAM,EAAE,GAAK,GACzC,YAAmB,EAAG,CACpB,GAAI,GAAI,GAAQ,GAAK,GAAK,GAC1B,MAAO,GACH,IAAM,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,EAAE,EAAE,GAAK,GAAM,EAAE,EAAG,GAC5C,OAGN,KAAM,IAAS,+GACf,YAAkB,EAAG,EAAG,EAAG,CACzB,KAAM,GAAI,EAAI,KAAK,IAAI,EAAG,EAAI,GACxB,EAAI,CAAC,EAAG,EAAK,GAAI,EAAI,IAAM,KAAO,EAAI,EAAI,KAAK,IAAI,KAAK,IAAI,EAAI,EAAG,EAAI,EAAG,GAAI,IACpF,MAAO,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,IAExB,YAAkB,EAAG,EAAG,EAAG,CACzB,KAAM,GAAI,CAAC,EAAG,EAAK,GAAI,EAAI,IAAM,IAAM,EAAI,EAAI,EAAI,KAAK,IAAI,KAAK,IAAI,EAAG,EAAI,EAAG,GAAI,GACnF,MAAO,CAAC,EAAE,GAAI,EAAE,GAAI,EAAE,IAExB,YAAkB,EAAG,EAAG,EAAG,CACzB,KAAM,GAAM,GAAS,EAAG,EAAG,IAC3B,GAAI,GAMJ,IALI,EAAI,EAAI,GACV,GAAI,EAAK,GAAI,GACb,GAAK,EACL,GAAK,GAEF,EAAI,EAAG,EAAI,EAAG,IACjB,EAAI,IAAM,EAAI,EAAI,EAClB,EAAI,IAAM,EAEZ,MAAO,GAET,YAAkB,EAAG,EAAG,EAAG,EAAG,EAAK,CACjC,MAAI,KAAM,EACC,GAAI,GAAK,EAAM,GAAI,EAAI,EAAI,GAElC,IAAM,EACA,GAAI,GAAK,EAAI,EAEf,GAAI,GAAK,EAAI,EAEvB,YAAiB,EAAG,CAClB,KAAM,GAAQ,IACR,EAAI,EAAE,EAAI,EACV,EAAI,EAAE,EAAI,EACV,EAAI,EAAE,EAAI,EACV,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAM,KAAK,IAAI,EAAG,EAAG,GACrB,EAAK,GAAM,GAAO,EACxB,GAAI,GAAG,EAAG,EACV,MAAI,KAAQ,GACV,GAAI,EAAM,EACV,EAAI,EAAI,GAAM,EAAK,GAAI,EAAM,GAAO,EAAK,GAAM,GAC/C,EAAI,GAAS,EAAG,EAAG,EAAG,EAAG,GACzB,EAAI,EAAI,GAAK,IAER,CAAC,EAAI,EAAG,GAAK,EAAG,GAEzB,YAAe,EAAG,EAAG,EAAG,EAAG,CACzB,MACE,OAAM,QAAQ,GACV,EAAE,EAAE,GAAI,EAAE,GAAI,EAAE,IAChB,EAAE,EAAG,EAAG,IACZ,IAAI,IAER,YAAiB,EAAG,EAAG,EAAG,CACxB,MAAO,IAAM,GAAU,EAAG,EAAG,GAE/B,YAAiB,EAAG,EAAG,EAAG,CACxB,MAAO,IAAM,GAAU,EAAG,EAAG,GAE/B,YAAiB,EAAG,EAAG,EAAG,CACxB,MAAO,IAAM,GAAU,EAAG,EAAG,GAE/B,YAAa,EAAG,CACd,MAAQ,GAAI,IAAM,KAAO,IAE3B,YAAkB,EAAK,CACrB,KAAM,GAAI,GAAO,KAAK,GACtB,GAAI,GAAI,IACJ,EACJ,GAAI,CAAC,EACH,OAEE,EAAE,KAAO,GACX,GAAI,EAAE,GAAK,GAAI,CAAC,EAAE,IAAM,GAAI,CAAC,EAAE,KAEjC,KAAM,GAAI,GAAI,CAAC,EAAE,IACX,EAAK,CAAC,EAAE,GAAK,IACb,EAAK,CAAC,EAAE,GAAK,IACnB,MAAI,GAAE,KAAO,MACX,EAAI,GAAQ,EAAG,EAAI,GACV,EAAE,KAAO,MAClB,EAAI,GAAQ,EAAG,EAAI,GAEnB,EAAI,GAAQ,EAAG,EAAI,GAEd,CACL,EAAG,EAAE,GACL,EAAG,EAAE,GACL,EAAG,EAAE,GACL,EAAG,GAGP,YAAgB,EAAG,EAAK,CACtB,GAAI,GAAI,GAAQ,GAChB,EAAE,GAAK,GAAI,EAAE,GAAK,GAClB,EAAI,GAAQ,GACZ,EAAE,EAAI,EAAE,GACR,EAAE,EAAI,EAAE,GACR,EAAE,EAAI,EAAE,GAEV,YAAmB,EAAG,CACpB,GAAI,CAAC,EACH,OAEF,KAAM,GAAI,GAAQ,GACZ,EAAI,EAAE,GACN,EAAI,GAAI,EAAE,IACV,EAAI,GAAI,EAAE,IAChB,MAAO,GAAE,EAAI,IACT,QAAQ,MAAM,OAAO,OAAO,GAAI,EAAE,MAClC,OAAO,MAAM,OAAO,MAG1B,KAAM,IAAM,CACV,EAAG,OACH,EAAG,QACH,EAAG,KACH,EAAG,MACH,EAAG,KACH,EAAG,SACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,QACH,EAAG,KACH,EAAG,WACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,OACH,EAAG,KACH,EAAG,QACH,EAAG,MAEC,GAAU,CACd,OAAQ,SACR,YAAa,SACb,KAAM,OACN,UAAW,SACX,KAAM,SACN,MAAO,SACP,OAAQ,SACR,MAAO,IACP,aAAc,SACd,GAAI,KACJ,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,SAAU,SACV,QAAS,SACT,IAAK,SACL,YAAa,SACb,QAAS,SACT,QAAS,SACT,KAAM,OACN,IAAK,KACL,MAAO,OACP,QAAS,SACT,KAAM,SACN,KAAM,OACN,KAAM,SACN,OAAQ,SACR,QAAS,SACT,SAAU,SACV,OAAQ,SACR,MAAO,SACP,IAAK,SACL,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,MAAO,SACP,MAAO,SACP,IAAK,OACL,OAAQ,SACR,OAAQ,SACR,SAAU,OACV,OAAQ,SACR,OAAQ,SACR,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,OAAQ,SACR,QAAS,SACT,UAAW,SACX,IAAK,SACL,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,IAAK,SACL,QAAS,SACT,OAAQ,SACR,QAAS,SACT,MAAO,SACP,KAAM,SACN,MAAO,SACP,OAAQ,SACR,UAAW,SACX,QAAS,SACT,WAAY,SACZ,IAAK,SACL,KAAM,SACN,MAAO,SACP,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,KAAM,SACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,MAAO,SACP,MAAO,SACP,QAAS,SACT,IAAK,SACL,KAAM,OACN,QAAS,SACT,IAAK,SACL,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,IAAK,KACL,MAAO,SACP,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,UAAW,OACX,IAAK,SACL,SAAU,SACV,WAAY,SACZ,QAAS,SACT,SAAU,SACV,QAAS,SACT,WAAY,SACZ,KAAM,KACN,OAAQ,SACR,KAAM,SACN,QAAS,SACT,MAAO,SACP,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,UAAW,SACX,QAAS,SACT,KAAM,SACN,IAAK,SACL,KAAM,SACN,QAAS,SACT,MAAO,SACP,YAAa,SACb,GAAI,SACJ,SAAU,SACV,MAAO,SACP,UAAW,SACX,MAAO,SACP,UAAW,SACX,MAAO,SACP,QAAS,SACT,MAAO,SACP,OAAQ,SACR,MAAO,SACP,IAAK,SACL,KAAM,SACN,KAAM,SACN,KAAM,SACN,SAAU,OACV,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,OAAQ,SACR,GAAI,SACJ,MAAO,SACP,IAAK,SACL,KAAM,SACN,UAAW,SACX,GAAI,SACJ,MAAO,UAET,aAAkB,CAChB,KAAM,GAAW,GACX,EAAO,OAAO,KAAK,IACnB,EAAQ,OAAO,KAAK,IAC1B,GAAI,GAAG,EAAG,EAAG,EAAI,EACjB,IAAK,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CAEhC,IADA,EAAK,EAAK,EAAK,GACV,EAAI,EAAG,EAAI,EAAM,OAAQ,IAC5B,EAAI,EAAM,GACV,EAAK,EAAG,QAAQ,EAAG,GAAI,IAEzB,EAAI,SAAS,GAAQ,GAAK,IAC1B,EAAS,GAAM,CAAC,GAAK,GAAK,IAAM,GAAK,EAAI,IAAM,EAAI,KAErD,MAAO,GAGT,GAAI,IACJ,YAAmB,EAAK,CACjB,IACH,IAAQ,KACR,GAAM,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,KAAM,GAAI,GAAM,EAAI,eACpB,MAAO,IAAK,CACV,EAAG,EAAE,GACL,EAAG,EAAE,GACL,EAAG,EAAE,GACL,EAAG,EAAE,SAAW,EAAI,EAAE,GAAK,KAI/B,KAAM,IAAS,uGACf,YAAkB,EAAK,CACrB,KAAM,GAAI,GAAO,KAAK,GACtB,GAAI,GAAI,IACJ,EAAG,EAAG,EACV,GAAI,EAAC,EAGL,IAAI,EAAE,KAAO,EAAG,CACd,KAAM,GAAI,CAAC,EAAE,GACb,EAAI,EAAE,GAAK,GAAI,GAAK,GAAI,EAAI,IAAK,EAAG,KAEtC,SAAI,CAAC,EAAE,GACP,EAAI,CAAC,EAAE,GACP,EAAI,CAAC,EAAE,GACP,EAAI,IAAO,GAAE,GAAK,GAAI,GAAK,GAAI,EAAG,EAAG,MACrC,EAAI,IAAO,GAAE,GAAK,GAAI,GAAK,GAAI,EAAG,EAAG,MACrC,EAAI,IAAO,GAAE,GAAK,GAAI,GAAK,GAAI,EAAG,EAAG,MAC9B,CACL,EACA,EAAG,EACH,EAAG,EACH,EAAG,IAGP,YAAmB,EAAG,CACpB,MAAO,IACL,GAAE,EAAI,IACF,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,EAAE,MACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAIjC,KAAM,IAAK,GAAK,GAAK,SAAY,EAAI,MAAQ,KAAK,IAAI,EAAG,EAAM,KAAO,MAAQ,KACxE,GAAO,GAAK,GAAK,OAAU,EAAI,MAAQ,KAAK,IAAK,GAAI,MAAS,MAAO,KAC3E,YAAqB,EAAM,EAAM,EAAG,CAClC,KAAM,GAAI,GAAK,GAAI,EAAK,IAClB,EAAI,GAAK,GAAI,EAAK,IAClB,EAAI,GAAK,GAAI,EAAK,IACxB,MAAO,CACL,EAAG,GAAI,GAAG,EAAI,EAAK,IAAK,GAAI,EAAK,IAAM,KACvC,EAAG,GAAI,GAAG,EAAI,EAAK,IAAK,GAAI,EAAK,IAAM,KACvC,EAAG,GAAI,GAAG,EAAI,EAAK,IAAK,GAAI,EAAK,IAAM,KACvC,EAAG,EAAK,EAAI,EAAK,GAAK,EAAI,EAAK,IAInC,YAAgB,EAAG,EAAG,EAAO,CAC3B,GAAI,EAAG,CACL,GAAI,GAAM,GAAQ,GAClB,EAAI,GAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,GAAK,EAAI,GAAK,EAAO,IAAM,EAAI,IAAM,IACvE,EAAM,GAAQ,GACd,EAAE,EAAI,EAAI,GACV,EAAE,EAAI,EAAI,GACV,EAAE,EAAI,EAAI,IAGd,YAAe,EAAG,EAAO,CACvB,MAAO,IAAI,OAAO,OAAO,GAAS,GAAI,GAExC,YAAoB,EAAO,CACzB,GAAI,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAC9B,MAAI,OAAM,QAAQ,GACZ,EAAM,QAAU,GAClB,GAAI,CAAC,EAAG,EAAM,GAAI,EAAG,EAAM,GAAI,EAAG,EAAM,GAAI,EAAG,KAC3C,EAAM,OAAS,GACjB,GAAE,EAAI,GAAI,EAAM,MAIpB,GAAI,GAAM,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACvC,EAAE,EAAI,GAAI,EAAE,IAEP,EAET,YAAuB,EAAK,CAC1B,MAAI,GAAI,OAAO,KAAO,IACb,GAAS,GAEX,GAAS,GAElB,QAAY,CACV,YAAY,EAAO,CACjB,GAAI,YAAiB,IACnB,MAAO,GAET,KAAM,GAAO,MAAO,GACpB,GAAI,GACA,IAAS,SACX,EAAI,GAAW,GACN,IAAS,UAClB,GAAI,GAAS,IAAU,GAAU,IAAU,GAAc,IAE3D,KAAK,KAAO,EACZ,KAAK,OAAS,CAAC,CAAC,KAEd,QAAQ,CACV,MAAO,MAAK,UAEV,MAAM,CACR,GAAI,GAAI,GAAM,KAAK,MACnB,MAAI,IACF,GAAE,EAAI,GAAI,EAAE,IAEP,KAEL,KAAI,EAAK,CACX,KAAK,KAAO,GAAW,GAEzB,WAAY,CACV,MAAO,MAAK,OAAS,GAAU,KAAK,MAAQ,OAE9C,WAAY,CACV,MAAO,MAAK,OAAS,GAAU,KAAK,MAAQ,OAE9C,WAAY,CACV,MAAO,MAAK,OAAS,GAAU,KAAK,MAAQ,OAE9C,IAAI,EAAO,EAAQ,CACjB,GAAI,EAAO,CACT,KAAM,GAAK,KAAK,IACV,EAAK,EAAM,IACjB,GAAI,GACJ,KAAM,GAAI,IAAW,EAAK,GAAM,EAC1B,EAAI,EAAI,EAAI,EACZ,EAAI,EAAG,EAAI,EAAG,EACd,EAAO,IAAI,IAAM,GAAK,EAAK,GAAI,GAAM,GAAI,EAAI,IAAM,GAAK,EAC9D,EAAK,EAAI,EACT,EAAG,EAAI,IAAO,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,GACtC,EAAG,EAAI,IAAO,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,GACtC,EAAG,EAAI,IAAO,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,GACtC,EAAG,EAAI,EAAI,EAAG,EAAK,GAAI,GAAK,EAAG,EAC/B,KAAK,IAAM,EAEb,MAAO,MAET,YAAY,EAAO,EAAG,CACpB,MAAI,IACF,MAAK,KAAO,GAAY,KAAK,KAAM,EAAM,KAAM,IAE1C,KAET,OAAQ,CACN,MAAO,IAAI,IAAM,KAAK,KAExB,MAAM,EAAG,CACP,YAAK,KAAK,EAAI,GAAI,GACX,KAET,QAAQ,EAAO,CACb,KAAM,GAAM,KAAK,KACjB,SAAI,GAAK,EAAI,EACN,KAET,WAAY,CACV,KAAM,GAAM,KAAK,KACX,EAAM,GAAM,EAAI,EAAI,GAAM,EAAI,EAAI,IAAO,EAAI,EAAI,KACvD,SAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EACjB,KAET,QAAQ,EAAO,CACb,KAAM,GAAM,KAAK,KACjB,SAAI,GAAK,EAAI,EACN,KAET,QAAS,CACP,KAAM,GAAI,KAAK,KACf,SAAE,EAAI,IAAM,EAAE,EACd,EAAE,EAAI,IAAM,EAAE,EACd,EAAE,EAAI,IAAM,EAAE,EACP,KAET,QAAQ,EAAO,CACb,UAAO,KAAK,KAAM,EAAG,GACd,KAET,OAAO,EAAO,CACZ,UAAO,KAAK,KAAM,EAAG,CAAC,GACf,KAET,SAAS,EAAO,CACd,UAAO,KAAK,KAAM,EAAG,GACd,KAET,WAAW,EAAO,CAChB,UAAO,KAAK,KAAM,EAAG,CAAC,GACf,KAET,OAAO,EAAK,CACV,UAAO,KAAK,KAAM,GACX,MAIX,YAAmB,EAAO,CACxB,MAAO,IAAI,IAAM,GCzkBnB;AAAA;AAAA;AAAA;AAAA;AAAA,GAYI,aAAgB,EAIhB,KAAM,IAAO,KAAI,CACjB,GAAI,GAAK,EACT,MAAO,IAAI,QAMX,YAAuB,EAAO,CAC9B,MAAO,KAAU,MAAQ,MAAO,IAAU,YAM1C,YAAiB,EAAO,CACxB,GAAI,MAAM,SAAW,MAAM,QAAQ,GAC/B,MAAO,GAEX,KAAM,GAAO,OAAO,UAAU,SAAS,KAAK,GAC5C,MAAI,GAAK,MAAM,EAAG,KAAO,WAAa,EAAK,MAAM,MAAQ,SASzD,YAAkB,EAAO,CACzB,MAAO,KAAU,MAAQ,OAAO,UAAU,SAAS,KAAK,KAAW,kBAKnE,YAAwB,EAAO,CAC/B,MAAQ,OAAO,IAAU,UAAY,YAAiB,UAAW,SAAS,CAAC,GAM3E,YAAyB,EAAO,EAAc,CAC9C,MAAO,IAAe,GAAS,EAAQ,EAMvC,YAAwB,EAAO,EAAc,CAC7C,MAAO,OAAO,IAAU,YAAc,EAAe,EAEzD,KAAM,IAAe,CAAC,EAAO,IAAY,MAAO,IAAU,UAAY,EAAM,SAAS,KAAO,WAAW,GAAS,IAAM,CAAC,EAAQ,EACzH,GAAc,CAAC,EAAO,IAAY,MAAO,IAAU,UAAY,EAAM,SAAS,KAAO,WAAW,GAAS,IAAM,EAAY,CAAC,EAO9H,YAAkB,EAAI,EAAM,EAAS,CACrC,GAAI,GAAM,MAAO,GAAG,MAAS,WACzB,MAAO,GAAG,MAAM,EAAS,GAGjC,YAAc,EAAU,EAAI,EAAS,EAAS,CAC1C,GAAI,GAAG,EAAK,EACZ,GAAI,GAAQ,GAER,GADA,EAAM,EAAS,OACX,EACA,IAAI,EAAI,EAAM,EAAG,GAAK,EAAG,IACrB,EAAG,KAAK,EAAS,EAAS,GAAI,OAGlC,KAAI,EAAI,EAAG,EAAI,EAAK,IAChB,EAAG,KAAK,EAAS,EAAS,GAAI,WAG/B,GAAS,GAGhB,IAFA,EAAO,OAAO,KAAK,GACnB,EAAM,EAAK,OACP,EAAI,EAAG,EAAI,EAAK,IAChB,EAAG,KAAK,EAAS,EAAS,EAAK,IAAK,EAAK,IASjD,YAAwB,EAAI,EAAI,CAChC,GAAI,GAAG,EAAM,EAAI,EACjB,GAAI,CAAC,GAAM,CAAC,GAAM,EAAG,SAAW,EAAG,OAC/B,MAAO,GAEX,IAAI,EAAI,EAAG,EAAO,EAAG,OAAQ,EAAI,EAAM,EAAE,EAGrC,GAFA,EAAK,EAAG,GACR,EAAK,EAAG,GACJ,EAAG,eAAiB,EAAG,cAAgB,EAAG,QAAU,EAAG,MACvD,MAAO,GAGf,MAAO,GAKP,YAAe,EAAQ,CACvB,GAAI,GAAQ,GACR,MAAO,GAAO,IAAI,IAEtB,GAAI,GAAS,GAAS,CAClB,KAAM,GAAS,OAAO,OAAO,MACvB,EAAO,OAAO,KAAK,GACnB,EAAO,EAAK,OAClB,GAAI,GAAI,EACR,KAAM,EAAI,EAAM,EAAE,EACd,EAAO,EAAK,IAAM,GAAM,EAAO,EAAK,KAExC,MAAO,GAEX,MAAO,GAEX,YAAoB,EAAK,CACrB,MAAO,CACH,YACA,YACA,eACF,QAAQ,KAAS,GAMnB,YAAiB,EAAK,EAAQ,EAAQ,EAAS,CAC/C,GAAI,CAAC,GAAW,GACZ,OAEJ,KAAM,GAAO,EAAO,GACd,EAAO,EAAO,GAChB,GAAS,IAAS,GAAS,GAE3B,GAAM,EAAM,EAAM,GAElB,EAAO,GAAO,GAAM,GAG5B,YAAe,EAAQ,EAAQ,EAAS,CACpC,KAAM,GAAU,GAAQ,GAAU,EAAS,CACvC,GAEE,EAAO,EAAQ,OACrB,GAAI,CAAC,GAAS,GACV,MAAO,GAEX,EAAU,GAAW,GACrB,KAAM,GAAS,EAAQ,QAAU,GACjC,GAAI,GACJ,OAAQ,GAAI,EAAG,EAAI,EAAM,EAAE,EAAE,CAEzB,GADA,EAAU,EAAQ,GACd,CAAC,GAAS,GACV,SAEJ,KAAM,GAAO,OAAO,KAAK,GACzB,OAAQ,GAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAE,EAC3C,EAAO,EAAK,GAAI,EAAQ,EAAS,GAGzC,MAAO,GAEX,YAAiB,EAAQ,EAAQ,CAE7B,MAAO,IAAM,EAAQ,EAAQ,CACzB,OAAQ,KAMZ,YAAmB,EAAK,EAAQ,EAAQ,CACxC,GAAI,CAAC,GAAW,GACZ,OAEJ,KAAM,GAAO,EAAO,GACd,EAAO,EAAO,GAChB,GAAS,IAAS,GAAS,GAC3B,GAAQ,EAAM,GACN,OAAO,UAAU,eAAe,KAAK,EAAQ,IACrD,GAAO,GAAO,GAAM,IAKxB,YAAqB,EAAO,EAAO,EAAU,EAAS,CAClD,IAAU,QACV,QAAQ,KAAK,EAAQ,MAAQ,EAAW,gCAAkC,EAAU,aAI5F,KAAM,IAAe,CAEjB,GAAK,GAAI,EAET,EAAI,GAAI,EAAE,EACV,EAAI,GAAI,EAAE,GAIV,YAAmB,EAAK,CACxB,KAAM,GAAQ,EAAI,MAAM,KAClB,EAAO,GACb,GAAI,GAAM,GACV,SAAW,KAAQ,GACf,GAAO,EACH,EAAI,SAAS,MACb,EAAM,EAAI,MAAM,EAAG,IAAM,IAEzB,GAAK,KAAK,GACV,EAAM,IAGd,MAAO,GAEX,YAAyB,EAAK,CAC1B,KAAM,GAAO,GAAU,GACvB,MAAQ,IAAM,CACV,SAAW,KAAK,GAAK,CACjB,GAAI,IAAM,GACN,MAEJ,EAAM,GAAO,EAAI,GAErB,MAAO,IAGf,YAA0B,EAAK,EAAK,CAEhC,MAAO,IADuB,IAAS,IAAa,GAAO,GAAgB,KAC3D,GAIhB,YAAqB,EAAK,CAC1B,MAAO,GAAI,OAAO,GAAG,cAAgB,EAAI,MAAM,GAEnD,KAAM,IAAW,GAAQ,MAAO,IAAU,YACpC,GAAc,GAAQ,MAAO,IAAU,WAEvC,GAAY,CAAC,EAAG,IAAI,CACtB,GAAI,EAAE,OAAS,EAAE,KACb,MAAO,GAEX,SAAW,KAAQ,GACf,GAAI,CAAC,EAAE,IAAI,GACP,MAAO,GAGf,MAAO,IAKP,YAAuB,EAAG,CAC1B,MAAO,GAAE,OAAS,WAAa,EAAE,OAAS,SAAW,EAAE,OAAS,cAMhE,KAAM,IAAK,KAAK,GACd,GAAM,EAAI,GACV,GAAQ,GAAM,GACd,GAAW,OAAO,kBAClB,GAAc,GAAK,IACnB,GAAU,GAAK,EACf,GAAa,GAAK,EAClB,GAAgB,GAAK,EAAI,EACzB,GAAQ,KAAK,MACb,GAAO,KAAK,KAClB,YAAsB,EAAG,EAAG,EAAS,CACjC,MAAO,MAAK,IAAI,EAAI,GAAK,EAIzB,YAAiB,EAAO,CACxB,KAAM,GAAe,KAAK,MAAM,GAChC,EAAQ,GAAa,EAAO,EAAc,EAAQ,KAAQ,EAAe,EACzE,KAAM,GAAY,KAAK,IAAI,GAAI,KAAK,MAAM,GAAM,KAC1C,EAAW,EAAQ,EAEzB,MAAO,IAD0B,EAAI,EAAI,GAAY,EAAI,EAAI,GAAY,EAAI,EAAI,IAC3D,EAKtB,YAAoB,EAAO,CAC3B,KAAM,GAAS,GACT,EAAO,KAAK,KAAK,GACvB,GAAI,GACJ,IAAI,EAAI,EAAG,EAAI,EAAM,IACb,EAAQ,IAAM,GACd,GAAO,KAAK,GACZ,EAAO,KAAK,EAAQ,IAG5B,MAAI,KAAU,GAAO,IACjB,EAAO,KAAK,GAEhB,EAAO,KAAK,CAAC,EAAG,IAAI,EAAI,GAAG,MACpB,EAEX,YAAkB,EAAG,CACjB,MAAO,CAAC,MAAM,WAAW,KAAO,SAAS,GAE7C,YAAqB,EAAG,EAAS,CAC7B,KAAM,GAAU,KAAK,MAAM,GAC3B,MAAO,GAAU,GAAW,GAAK,EAAU,GAAW,EAItD,YAA4B,EAAO,EAAQ,EAAU,CACrD,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,IACtC,EAAQ,EAAM,GAAG,GACZ,MAAM,IACP,GAAO,IAAM,KAAK,IAAI,EAAO,IAAK,GAClC,EAAO,IAAM,KAAK,IAAI,EAAO,IAAK,IAI9C,YAAmB,EAAS,CACxB,MAAO,GAAW,IAAK,KAE3B,YAAmB,EAAS,CACxB,MAAO,GAAW,KAAM,IAQxB,YAAwB,EAAG,CAC3B,GAAI,CAAC,GAAe,GAChB,OAEJ,GAAI,GAAI,EACJ,EAAI,EACR,KAAM,KAAK,MAAM,EAAI,GAAK,IAAM,GAC5B,GAAK,GACL,IAEJ,MAAO,GAGX,YAA2B,EAAa,EAAY,CAChD,KAAM,GAAsB,EAAW,EAAI,EAAY,EACjD,EAAsB,EAAW,EAAI,EAAY,EACjD,EAA2B,KAAK,KAAK,EAAsB,EAAsB,EAAsB,GAC7G,GAAI,GAAQ,KAAK,MAAM,EAAqB,GAC5C,MAAI,GAAQ,IAAO,IACf,IAAS,IAEN,CACH,QACA,SAAU,GAGlB,YAA+B,EAAK,EAAK,CACrC,MAAO,MAAK,KAAK,KAAK,IAAI,EAAI,EAAI,EAAI,EAAG,GAAK,KAAK,IAAI,EAAI,EAAI,EAAI,EAAG,IAKtE,YAAoB,EAAG,EAAG,CAC1B,MAAQ,GAAI,EAAI,IAAS,GAAM,GAK/B,YAAyB,EAAG,CAC5B,MAAQ,GAAI,GAAM,IAAO,GAIzB,YAAuB,EAAO,EAAO,EAAK,EAAuB,CACjE,KAAM,GAAI,GAAgB,GACpB,EAAI,GAAgB,GACpB,EAAI,GAAgB,GACpB,EAAe,GAAgB,EAAI,GACnC,EAAa,GAAgB,EAAI,GACjC,EAAe,GAAgB,EAAI,GACnC,EAAa,GAAgB,EAAI,GACvC,MAAO,KAAM,GAAK,IAAM,GAAK,GAAyB,IAAM,GAAK,EAAe,GAAc,EAAe,EAQ7G,YAAqB,EAAO,EAAK,EAAK,CACtC,MAAO,MAAK,IAAI,EAAK,KAAK,IAAI,EAAK,IAKnC,YAAqB,EAAO,CAC5B,MAAO,IAAY,EAAO,OAAQ,OAQlC,YAAoB,EAAO,EAAO,EAAK,EAAU,KAAM,CACvD,MAAO,IAAS,KAAK,IAAI,EAAO,GAAO,GAAW,GAAS,KAAK,IAAI,EAAO,GAAO,EAGtF,YAAiB,EAAO,EAAO,EAAK,CAChC,EAAM,GAAQ,CAAC,GAAQ,EAAM,GAAS,GACtC,GAAI,GAAK,EAAM,OAAS,EACpB,EAAK,EACL,EACJ,KAAM,EAAK,EAAK,GACZ,EAAM,EAAK,GAAM,EACb,EAAI,GACJ,EAAK,EAEL,EAAK,EAGb,MAAO,CACH,KACA,MAUJ,KAAM,IAAe,CAAC,EAAO,EAAK,EAAO,IAAO,GAAQ,EAAO,EAAO,EAAQ,GAAQ,CAClF,KAAM,GAAK,EAAM,GAAO,GACxB,MAAO,GAAK,GAAS,IAAO,GAAS,EAAM,EAAQ,GAAG,KAAS,GAC9D,GAAQ,EAAM,GAAO,GAAO,GAO3B,GAAgB,CAAC,EAAO,EAAK,IAAQ,GAAQ,EAAO,EAAQ,GAAQ,EAAM,GAAO,IAAQ,GAO/F,YAAwB,EAAQ,EAAK,EAAK,CAC1C,GAAI,GAAQ,EACR,EAAM,EAAO,OACjB,KAAM,EAAQ,GAAO,EAAO,GAAS,GACjC,IAEJ,KAAM,EAAM,GAAS,EAAO,EAAM,GAAK,GACnC,IAEJ,MAAO,GAAQ,GAAK,EAAM,EAAO,OAAS,EAAO,MAAM,EAAO,GAAO,EAEzE,KAAM,IAAc,CAChB,OACA,MACA,QACA,SACA,WAEJ,YAA2B,EAAO,EAAU,CACxC,GAAI,EAAM,SAAU,CAChB,EAAM,SAAS,UAAU,KAAK,GAC9B,OAEJ,OAAO,eAAe,EAAO,WAAY,CACrC,aAAc,GACd,WAAY,GACZ,MAAO,CACH,UAAW,CACP,MAIZ,GAAY,QAAS,GAAM,CACvB,KAAM,GAAS,UAAY,GAAY,GACjC,EAAO,EAAM,GACnB,OAAO,eAAe,EAAO,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,SAAU,EAAM,CACZ,KAAM,GAAM,EAAK,MAAM,KAAM,GAC7B,SAAM,SAAS,UAAU,QAAS,GAAS,CACnC,MAAO,GAAO,IAAY,YAC1B,EAAO,GAAQ,GAAG,KAGnB,OAKvB,YAA6B,EAAO,EAAU,CAC1C,KAAM,GAAO,EAAM,SACnB,GAAI,CAAC,EACD,OAEJ,KAAM,GAAY,EAAK,UACjB,EAAQ,EAAU,QAAQ,GAIhC,IAHc,IACV,EAAU,OAAO,EAAO,GAExB,IAAU,OAAS,IAGvB,IAAY,QAAS,GAAM,CACvB,MAAO,GAAM,KAEjB,MAAO,GAAM,UAIb,YAAsB,EAAO,CAC7B,KAAM,GAAM,GAAI,KAAI,GACpB,MAAI,GAAI,OAAS,EAAM,OACZ,EAEJ,MAAM,KAAK,GAGtB,YAAoB,EAAW,EAAW,EAAY,CAClD,MAAO,GAAY,IAAM,EAAY,MAAQ,EAI9C,KAAM,IAAmB,UAAW,CACnC,MAAI,OAAO,SAAW,YACX,SAAS,EAAU,CACtB,MAAO,MAGR,OAAO,yBAKd,YAAmB,EAAI,EAAS,CAChC,GAAI,GAAY,GACZ,EAAU,GACd,MAAO,aAAY,EAAM,CAErB,EAAY,EACP,GACD,GAAU,GACV,GAAiB,KAAK,OAAQ,IAAI,CAC9B,EAAU,GACV,EAAG,MAAM,EAAS,OAO9B,YAAkB,EAAI,EAAO,CAC7B,GAAI,GACJ,MAAO,aAAY,EAAM,CACrB,MAAI,GACA,cAAa,GACb,EAAU,WAAW,EAAI,EAAO,IAEhC,EAAG,MAAM,KAAM,GAEZ,GAMX,KAAM,IAAsB,GAAQ,IAAU,QAAU,OAAS,IAAU,MAAQ,QAAU,SAIvF,GAAiB,CAAC,EAAO,EAAO,IAAM,IAAU,QAAU,EAAQ,IAAU,MAAQ,EAAO,GAAQ,GAAO,EAI1G,GAAS,CAAC,EAAO,EAAM,EAAO,IAE7B,IADO,GAAM,OAAS,SACJ,EAAQ,IAAU,SAAY,GAAO,GAAS,EAAI,EAK3E,YAA0C,EAAM,EAAQ,EAAoB,CAC5E,KAAM,GAAa,EAAO,OAC1B,GAAI,GAAQ,EACR,EAAQ,EACZ,GAAI,EAAK,QAAS,CACd,KAAM,CAAE,SAAS,WAAa,EACxB,EAAO,EAAO,KACd,CAAE,MAAM,MAAM,aAAa,cAAgB,EAAO,gBACpD,GACA,GAAQ,GAAY,KAAK,IACzB,GAAa,EAAS,EAAO,KAAM,GAAK,GACxC,EAAqB,EAAa,GAAa,EAAQ,EAAM,EAAO,iBAAiB,IAAM,IAAK,EAAG,EAAa,IAEhH,EACA,EAAQ,GAAY,KAAK,IACzB,GAAa,EAAS,EAAO,KAAM,EAAK,IAAM,GAAK,EACnD,EAAqB,EAAI,GAAa,EAAQ,EAAM,EAAO,iBAAiB,GAAM,IAAM,GAAK,GAAI,EAAO,GAAc,EAEtH,EAAQ,EAAa,EAG7B,MAAO,CACH,QACA,SAQJ,YAA6B,EAAM,CACnC,KAAM,CAAE,SAAS,SAAS,gBAAkB,EACtC,EAAY,CACd,KAAM,EAAO,IACb,KAAM,EAAO,IACb,KAAM,EAAO,IACb,KAAM,EAAO,KAEjB,GAAI,CAAC,EACD,SAAK,aAAe,EACb,GAEX,KAAM,GAAU,EAAa,OAAS,EAAO,KAAO,EAAa,OAAS,EAAO,KAAO,EAAa,OAAS,EAAO,KAAO,EAAa,OAAS,EAAO,IACzJ,cAAO,OAAO,EAAc,GACrB,EAGX,KAAM,IAAU,GAAI,IAAM,GAAK,IAAM,EAC/B,GAAY,CAAC,EAAG,EAAG,IAAI,CAAE,MAAK,IAAI,EAAG,GAAM,IAAK,IAAM,KAAK,IAAK,GAAI,GAAK,GAAM,IAC/E,GAAa,CAAC,EAAG,EAAG,IAAI,KAAK,IAAI,EAAG,IAAM,GAAK,KAAK,IAAK,GAAI,GAAK,GAAM,GAAK,EAKzE,GAAU,CAChB,OAAS,GAAI,EACb,WAAa,GAAI,EAAI,EACrB,YAAc,GAAI,CAAC,EAAK,GAAI,GAC5B,cAAgB,GAAK,IAAK,IAAO,EAAI,GAAM,EAAI,EAAI,IAAQ,GAAE,EAAK,GAAI,GAAK,GAC3E,YAAc,GAAI,EAAI,EAAI,EAC1B,aAAe,GAAK,IAAK,GAAK,EAAI,EAAI,EACtC,eAAiB,GAAK,IAAK,IAAO,EAAI,GAAM,EAAI,EAAI,EAAI,GAAQ,KAAK,GAAK,EAAI,EAAI,GAClF,YAAc,GAAI,EAAI,EAAI,EAAI,EAC9B,aAAe,GAAI,CAAG,KAAK,GAAK,EAAI,EAAI,EAAI,GAC5C,eAAiB,GAAK,IAAK,IAAO,EAAI,GAAM,EAAI,EAAI,EAAI,EAAI,IAAS,KAAK,GAAK,EAAI,EAAI,EAAI,GAC3F,YAAc,GAAI,EAAI,EAAI,EAAI,EAAI,EAClC,aAAe,GAAK,IAAK,GAAK,EAAI,EAAI,EAAI,EAAI,EAC9C,eAAiB,GAAK,IAAK,IAAO,EAAI,GAAM,EAAI,EAAI,EAAI,EAAI,EAAI,GAAQ,KAAK,GAAK,EAAI,EAAI,EAAI,EAAI,GAClG,WAAa,GAAI,CAAC,KAAK,IAAI,EAAI,IAAW,EAC1C,YAAc,GAAI,KAAK,IAAI,EAAI,IAC/B,cAAgB,GAAI,IAAQ,MAAK,IAAI,GAAK,GAAK,GAC/C,WAAa,GAAI,IAAM,EAAI,EAAI,KAAK,IAAI,EAAG,GAAM,GAAI,IACrD,YAAc,GAAI,IAAM,EAAI,EAAI,CAAC,KAAK,IAAI,EAAG,IAAM,GAAK,EACxD,cAAgB,GAAI,GAAO,GAAK,EAAI,EAAI,GAAM,GAAM,KAAK,IAAI,EAAG,GAAM,GAAI,EAAI,IAAM,GAAO,EAAC,KAAK,IAAI,EAAG,IAAO,GAAI,EAAI,IAAM,GAC7H,WAAa,GAAI,GAAK,EAAI,EAAI,CAAE,MAAK,KAAK,EAAI,EAAI,GAAK,GACvD,YAAc,GAAI,KAAK,KAAK,EAAK,IAAK,GAAK,GAC3C,cAAgB,GAAK,IAAK,IAAO,EAAI,IAAQ,MAAK,KAAK,EAAI,EAAI,GAAK,GAAK,GAAO,MAAK,KAAK,EAAK,IAAK,GAAK,GAAK,GAC9G,cAAgB,GAAI,GAAO,GAAK,EAAI,GAAU,EAAG,KAAO,IACxD,eAAiB,GAAI,GAAO,GAAK,EAAI,GAAW,EAAG,KAAO,IAC1D,iBAAkB,EAAG,CACjB,KAAM,GAAI,MACJ,EAAI,IACV,MAAO,IAAO,GAAK,EAAI,EAAI,GAAM,GAAM,GAAU,EAAI,EAAG,EAAG,GAAK,GAAM,GAAM,GAAW,EAAI,EAAI,EAAG,EAAG,IAEzG,WAAY,EAAG,CACX,KAAM,GAAI,QACV,MAAO,GAAI,EAAM,IAAI,GAAK,EAAI,IAElC,YAAa,EAAG,CACZ,KAAM,GAAI,QACV,MAAQ,IAAK,GAAK,EAAM,IAAI,GAAK,EAAI,GAAK,GAE9C,cAAe,EAAG,CACd,GAAI,GAAI,QACR,MAAK,IAAK,IAAO,EACN,GAAO,GAAI,EAAO,MAAK,OAAS,GAAK,EAAI,IAE7C,GAAQ,KAAK,GAAK,EAAO,MAAK,OAAS,GAAK,EAAI,GAAK,IAEhE,aAAe,GAAI,EAAI,GAAQ,cAAc,EAAI,GACjD,cAAe,EAAG,CACd,KAAM,GAAI,OACJ,EAAI,KACV,MAAI,GAAI,EAAI,EACD,EAAI,EAAI,EAEf,EAAI,EAAI,EACD,EAAK,IAAK,IAAM,GAAK,EAAI,IAEhC,EAAI,IAAM,EACH,EAAK,IAAK,KAAO,GAAK,EAAI,MAE9B,EAAK,IAAK,MAAQ,GAAK,EAAI,SAEtC,gBAAkB,GAAI,EAAI,GAAM,GAAQ,aAAa,EAAI,GAAK,GAAM,GAAQ,cAAc,EAAI,EAAI,GAAK,GAAM,IAGjH,YAA6B,EAAO,CAChC,GAAI,GAAS,MAAO,IAAU,SAAU,CACpC,KAAM,GAAO,EAAM,WACnB,MAAO,KAAS,0BAA4B,IAAS,0BAEzD,MAAO,GAEX,YAAe,EAAO,CAClB,MAAO,IAAoB,GAAS,EAAQ,GAAI,IAAM,GAE1D,YAAuB,EAAO,CAC1B,MAAO,IAAoB,GAAS,EAAQ,GAAI,IAAM,GAAO,SAAS,IAAK,OAAO,IAAK,YAG3F,KAAM,IAAU,CACZ,IACA,IACA,cACA,SACA,WAEE,GAAS,CACX,QACA,cACA,mBAEJ,YAAiC,EAAU,CACvC,EAAS,IAAI,YAAa,CACtB,MAAO,OACP,SAAU,IACV,OAAQ,eACR,GAAI,OACJ,KAAM,OACN,KAAM,OACN,GAAI,OACJ,KAAM,SAEV,EAAS,SAAS,YAAa,CAC3B,UAAW,GACX,WAAY,GACZ,YAAc,GAAO,IAAS,cAAgB,IAAS,cAAgB,IAAS,OAEpF,EAAS,IAAI,aAAc,CACvB,OAAQ,CACJ,KAAM,QACN,WAAY,IAEhB,QAAS,CACL,KAAM,SACN,WAAY,MAGpB,EAAS,SAAS,aAAc,CAC5B,UAAW,cAEf,EAAS,IAAI,cAAe,CACxB,OAAQ,CACJ,UAAW,CACP,SAAU,MAGlB,OAAQ,CACJ,UAAW,CACP,SAAU,IAGlB,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,KAAM,eAEV,QAAS,CACL,KAAM,UACN,SAAU,KAItB,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,GAAI,eAER,QAAS,CACL,KAAM,UACN,OAAQ,SACR,GAAK,GAAI,EAAI,OAOjC,YAA8B,EAAU,CACpC,EAAS,IAAI,SAAU,CACnB,YAAa,GACb,QAAS,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,KAKlB,KAAM,IAAY,GAAI,KACtB,YAAyB,EAAQ,EAAS,CACtC,EAAU,GAAW,GACrB,KAAM,GAAW,EAAS,KAAK,UAAU,GACzC,GAAI,GAAY,GAAU,IAAI,GAC9B,MAAK,IACD,GAAY,GAAI,MAAK,aAAa,EAAQ,GAC1C,GAAU,IAAI,EAAU,IAErB,EAEX,YAAsB,EAAK,EAAQ,EAAS,CACxC,MAAO,IAAgB,EAAQ,GAAS,OAAO,GAGnD,KAAM,IAAa,CAClB,OAAQ,EAAO,CACR,MAAO,IAAQ,GAAU,EAAQ,GAAK,GAE7C,QAAS,EAAW,EAAO,EAAO,CAC3B,GAAI,IAAc,EACd,MAAO,IAEX,KAAM,GAAS,KAAK,MAAM,QAAQ,OAClC,GAAI,GACA,EAAQ,EACZ,GAAI,EAAM,OAAS,EAAG,CAClB,KAAM,GAAU,KAAK,IAAI,KAAK,IAAI,EAAM,GAAG,OAAQ,KAAK,IAAI,EAAM,EAAM,OAAS,GAAG,QAChF,GAAU,MAAQ,EAAU,OAC5B,GAAW,cAEf,EAAQ,GAAe,EAAW,GAEtC,KAAM,GAAW,GAAM,KAAK,IAAI,IAC1B,EAAa,MAAM,GAAY,EAAI,KAAK,IAAI,KAAK,IAAI,GAAK,KAAK,MAAM,GAAW,IAAK,GACrF,EAAU,CACZ,WACA,sBAAuB,EACvB,sBAAuB,GAE3B,cAAO,OAAO,EAAS,KAAK,QAAQ,MAAM,QACnC,GAAa,EAAW,EAAQ,IAE9C,YAAa,EAAW,EAAO,EAAO,CAC/B,GAAI,IAAc,EACd,MAAO,IAEX,KAAM,GAAS,EAAM,GAAO,aAAe,EAAY,KAAK,IAAI,GAAI,KAAK,MAAM,GAAM,KACrF,MAAI,CACA,EACA,EACA,EACA,EACA,GACA,IACF,SAAS,IAAW,EAAQ,GAAM,EAAM,OAC/B,GAAW,QAAQ,KAAK,KAAM,EAAW,EAAO,GAEpD,KAGf,YAAwB,EAAW,EAAO,CACtC,GAAI,GAAQ,EAAM,OAAS,EAAI,EAAM,GAAG,MAAQ,EAAM,GAAG,MAAQ,EAAM,GAAG,MAAQ,EAAM,GAAG,MAC3F,MAAI,MAAK,IAAI,IAAU,GAAK,IAAc,KAAK,MAAM,IACjD,GAAQ,EAAY,KAAK,MAAM,IAE5B,EAEV,GAAI,IAAQ,CACT,eAGJ,YAA4B,EAAU,CAClC,EAAS,IAAI,QAAS,CAClB,QAAS,GACT,OAAQ,GACR,QAAS,GACT,YAAa,GACpB,OAAQ,QACR,MAAO,EACA,KAAM,CACF,QAAS,GACT,UAAW,EACX,gBAAiB,GACjB,UAAW,GACX,WAAY,EACZ,UAAW,CAAC,EAAM,IAAU,EAAQ,UACpC,UAAW,CAAC,EAAM,IAAU,EAAQ,MACpC,OAAQ,IAEZ,OAAQ,CACJ,QAAS,GACT,KAAM,GACN,WAAY,EACZ,MAAO,GAEX,MAAO,CACH,QAAS,GACT,KAAM,GACN,QAAS,CACL,IAAK,EACL,OAAQ,IAGhB,MAAO,CACH,YAAa,EACb,YAAa,GACb,OAAQ,GACR,gBAAiB,EACjB,gBAAiB,GACjB,QAAS,EACT,QAAS,GACT,SAAU,GACV,gBAAiB,EACjB,YAAa,EACb,SAAU,GAAM,WAAW,OAC3B,MAAO,GACP,MAAO,GACP,MAAO,SACP,WAAY,OACZ,kBAAmB,GACnB,cAAe,4BACf,gBAAiB,KAGzB,EAAS,MAAM,cAAe,QAAS,GAAI,SAC3C,EAAS,MAAM,aAAc,QAAS,GAAI,eAC1C,EAAS,MAAM,eAAgB,QAAS,GAAI,eAC5C,EAAS,MAAM,cAAe,QAAS,GAAI,SAC3C,EAAS,SAAS,QAAS,CACvB,UAAW,GACX,YAAc,GAAO,CAAC,EAAK,WAAW,WAAa,CAAC,EAAK,WAAW,UAAY,IAAS,YAAc,IAAS,SAChH,WAAa,GAAO,IAAS,cAAgB,IAAS,kBAAoB,IAAS,SAEvF,EAAS,SAAS,SAAU,CACxB,UAAW,UAEf,EAAS,SAAS,cAAe,CAC7B,YAAc,GAAO,IAAS,mBAAqB,IAAS,WAC5D,WAAa,GAAO,IAAS,oBAIrC,KAAM,IAAY,OAAO,OAAO,MAC1B,GAAc,OAAO,OAAO,MACjC,YAAoB,EAAM,EAAK,CAC5B,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAO,EAAI,MAAM,KACvB,OAAQ,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAG,EAAE,EAAE,CACvC,KAAM,GAAI,EAAK,GACf,EAAO,EAAK,IAAO,GAAK,GAAK,OAAO,OAAO,OAE/C,MAAO,GAEX,YAAa,EAAM,EAAO,EAAQ,CAC9B,MAAI,OAAO,IAAU,SACV,GAAM,GAAW,EAAM,GAAQ,GAEnC,GAAM,GAAW,EAAM,IAAK,GAEtC,QAAe,CACZ,YAAY,EAAc,EAAU,CAChC,KAAK,UAAY,OACjB,KAAK,gBAAkB,kBACvB,KAAK,YAAc,kBACnB,KAAK,MAAQ,OACb,KAAK,SAAW,GAChB,KAAK,iBAAoB,GAAU,EAAQ,MAAM,SAAS,sBAC1D,KAAK,SAAW,GAChB,KAAK,OAAS,CACV,YACA,WACA,QACA,aACA,aAEJ,KAAK,KAAO,CACR,OAAQ,qDACR,KAAM,GACN,MAAO,SACP,WAAY,IACZ,OAAQ,MAEZ,KAAK,MAAQ,GACb,KAAK,qBAAuB,CAAC,EAAK,IAAU,GAAc,EAAQ,iBAClE,KAAK,iBAAmB,CAAC,EAAK,IAAU,GAAc,EAAQ,aAC9D,KAAK,WAAa,CAAC,EAAK,IAAU,GAAc,EAAQ,OACxD,KAAK,UAAY,IACjB,KAAK,YAAc,CACf,KAAM,UACN,UAAW,GACX,iBAAkB,IAEtB,KAAK,oBAAsB,GAC3B,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,MAAQ,OACb,KAAK,OAAS,GACd,KAAK,SAAW,GAChB,KAAK,wBAA0B,GAC/B,KAAK,SAAS,GACd,KAAK,MAAM,GAElB,IAAI,EAAO,EAAQ,CACZ,MAAO,IAAI,KAAM,EAAO,GAE/B,IAAI,EAAO,CACJ,MAAO,IAAW,KAAM,GAE/B,SAAS,EAAO,EAAQ,CACjB,MAAO,IAAI,GAAa,EAAO,GAEnC,SAAS,EAAO,EAAQ,CACpB,MAAO,IAAI,GAAW,EAAO,GAEpC,MAAM,EAAO,EAAM,EAAa,EAAY,CACrC,KAAM,GAAc,GAAW,KAAM,GAC/B,EAAoB,GAAW,KAAM,GACrC,EAAc,IAAM,EAC1B,OAAO,iBAAiB,EAAa,EAChC,GAAc,CACX,MAAO,EAAY,GACnB,SAAU,KAEb,GAAO,CACJ,WAAY,GACZ,KAAO,CACH,KAAM,GAAQ,KAAK,GACb,EAAS,EAAkB,GACjC,MAAI,IAAS,GACF,OAAO,OAAO,GAAI,EAAQ,GAE9B,GAAe,EAAO,IAEjC,IAAK,EAAO,CACR,KAAK,GAAe,MAKpC,MAAM,EAAU,CACZ,EAAS,QAAS,GAAQ,EAAM,QAGxC,GAAI,IAA2B,GAAI,IAAS,CACxC,YAAc,GAAO,CAAC,EAAK,WAAW,MACtC,WAAa,GAAO,IAAS,SAC7B,MAAO,CACH,UAAW,eAEf,YAAa,CACT,YAAa,GACb,WAAY,KAEjB,CACC,GACA,GACA,KAQA,YAAsB,EAAM,CAC5B,MAAI,CAAC,GAAQ,GAAc,EAAK,OAAS,GAAc,EAAK,QACjD,KAEH,GAAK,MAAQ,EAAK,MAAQ,IAAM,IAAO,GAAK,OAAS,EAAK,OAAS,IAAM,IAAM,EAAK,KAAO,MAAQ,EAAK,OAIhH,YAAsB,EAAK,EAAM,EAAI,EAAS,EAAQ,CACtD,GAAI,GAAY,EAAK,GACrB,MAAK,IACD,GAAY,EAAK,GAAU,EAAI,YAAY,GAAQ,MACnD,EAAG,KAAK,IAER,EAAY,GACZ,GAAU,GAEP,EAKX,YAAsB,EAAK,EAAM,EAAe,EAAO,CACnD,EAAQ,GAAS,GACjB,GAAI,GAAO,EAAM,KAAO,EAAM,MAAQ,GAClC,EAAK,EAAM,eAAiB,EAAM,gBAAkB,GACpD,EAAM,OAAS,GACf,GAAO,EAAM,KAAO,GACpB,EAAK,EAAM,eAAiB,GAC5B,EAAM,KAAO,GAEjB,EAAI,OACJ,EAAI,KAAO,EACX,GAAI,GAAU,EACd,KAAM,GAAO,EAAc,OAC3B,GAAI,GAAG,EAAG,EAAM,EAAO,EACvB,IAAI,EAAI,EAAG,EAAI,EAAM,IAGjB,GAFA,EAAQ,EAAc,GAEK,GAAU,MAAQ,CAAC,GAAQ,GAClD,EAAU,GAAa,EAAK,EAAM,EAAI,EAAS,WACxC,GAAQ,GAGf,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,IACtC,EAAc,EAAM,GAEa,GAAgB,MAAQ,CAAC,GAAQ,IAC9D,GAAU,GAAa,EAAK,EAAM,EAAI,EAAS,IAK/D,EAAI,UACJ,KAAM,GAAQ,EAAG,OAAS,EAC1B,GAAI,EAAQ,EAAc,OAAQ,CAC9B,IAAI,EAAI,EAAG,EAAI,EAAO,IAClB,MAAO,GAAK,EAAG,IAEnB,EAAG,OAAO,EAAG,GAEjB,MAAO,GASP,YAAqB,EAAO,EAAO,EAAO,CAC1C,KAAM,GAAmB,EAAM,wBACzB,EAAY,IAAU,EAAI,KAAK,IAAI,EAAQ,EAAG,IAAO,EAC3D,MAAO,MAAK,MAAO,GAAQ,GAAa,GAAoB,EAAmB,EAI/E,YAAqB,EAAQ,EAAK,CAClC,EAAM,GAAO,EAAO,WAAW,MAC/B,EAAI,OAGJ,EAAI,iBACJ,EAAI,UAAU,EAAG,EAAG,EAAO,MAAO,EAAO,QACzC,EAAI,UAER,YAAmB,EAAK,EAAS,EAAG,EAAG,CAEnC,GAAgB,EAAK,EAAS,EAAG,EAAG,MAGxC,YAAyB,EAAK,EAAS,EAAG,EAAG,EAAG,CAC5C,GAAI,GAAM,EAAS,EAAS,EAAM,EAAc,EAAO,EAAU,EACjE,KAAM,GAAQ,EAAQ,WAChB,EAAW,EAAQ,SACnB,EAAS,EAAQ,OACvB,GAAI,GAAO,IAAY,GAAK,GAC5B,GAAI,GAAS,MAAO,IAAU,UAC1B,GAAO,EAAM,WACT,IAAS,6BAA+B,IAAS,8BAA8B,CAC/E,EAAI,OACJ,EAAI,UAAU,EAAG,GACjB,EAAI,OAAO,GACX,EAAI,UAAU,EAAO,CAAC,EAAM,MAAQ,EAAG,CAAC,EAAM,OAAS,EAAG,EAAM,MAAO,EAAM,QAC7E,EAAI,UACJ,OAGR,GAAI,QAAM,IAAW,GAAU,GAI/B,QADA,EAAI,YACG,WAGK,EACA,EAAI,QAAQ,EAAG,EAAG,EAAI,EAAG,EAAQ,EAAG,EAAG,IAEvC,EAAI,IAAI,EAAG,EAAG,EAAQ,EAAG,IAE7B,EAAI,YACJ,UACC,WACD,EAAQ,EAAI,EAAI,EAAI,EACpB,EAAI,OAAO,EAAI,KAAK,IAAI,GAAO,EAAO,EAAI,KAAK,IAAI,GAAO,GAC1D,GAAO,GACP,EAAI,OAAO,EAAI,KAAK,IAAI,GAAO,EAAO,EAAI,KAAK,IAAI,GAAO,GAC1D,GAAO,GACP,EAAI,OAAO,EAAI,KAAK,IAAI,GAAO,EAAO,EAAI,KAAK,IAAI,GAAO,GAC1D,EAAI,YACJ,UACC,cAQD,EAAe,EAAS,KACxB,EAAO,EAAS,EAChB,EAAU,KAAK,IAAI,EAAM,IAAc,EACvC,EAAW,KAAK,IAAI,EAAM,IAAe,GAAI,EAAI,EAAI,EAAe,GACpE,EAAU,KAAK,IAAI,EAAM,IAAc,EACvC,EAAW,KAAK,IAAI,EAAM,IAAe,GAAI,EAAI,EAAI,EAAe,GACpE,EAAI,IAAI,EAAI,EAAU,EAAI,EAAS,EAAc,EAAM,GAAI,EAAM,IACjE,EAAI,IAAI,EAAI,EAAU,EAAI,EAAS,EAAc,EAAM,GAAS,GAChE,EAAI,IAAI,EAAI,EAAU,EAAI,EAAS,EAAc,EAAK,EAAM,IAC5D,EAAI,IAAI,EAAI,EAAU,EAAI,EAAS,EAAc,EAAM,GAAS,EAAM,IACtE,EAAI,YACJ,UACC,OACD,GAAI,CAAC,EAAU,CACX,EAAO,KAAK,QAAU,EACtB,EAAQ,EAAI,EAAI,EAAI,EACpB,EAAI,KAAK,EAAI,EAAO,EAAI,EAAM,EAAI,EAAO,EAAI,GAC7C,MAEJ,GAAO,OACc,UACrB,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,YACJ,UACC,WACD,GAAO,OACc,QACrB,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,UACC,OACD,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,GAAO,GACP,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAW,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GACxC,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,EAAI,OAAO,EAAI,EAAU,EAAI,GAC7B,UACC,OACD,EAAU,EAAI,EAAI,EAAI,KAAK,IAAI,GAAO,EACtC,EAAU,KAAK,IAAI,GAAO,EAC1B,EAAI,OAAO,EAAI,EAAS,EAAI,GAC5B,EAAI,OAAO,EAAI,EAAS,EAAI,GAC5B,UACC,OACD,EAAI,OAAO,EAAG,GACd,EAAI,OAAO,EAAI,KAAK,IAAI,GAAQ,GAAI,EAAI,EAAI,GAAS,EAAI,KAAK,IAAI,GAAO,GACzE,UACC,GACD,EAAI,YACJ,MAER,EAAI,OACA,EAAQ,YAAc,GACtB,EAAI,UASR,YAAwB,EAAO,EAAM,EAAQ,CAC7C,SAAS,GAAU,GACZ,CAAC,GAAQ,GAAS,EAAM,EAAI,EAAK,KAAO,GAAU,EAAM,EAAI,EAAK,MAAQ,GAAU,EAAM,EAAI,EAAK,IAAM,GAAU,EAAM,EAAI,EAAK,OAAS,EAErJ,YAAkB,EAAK,EAAM,CACzB,EAAI,OACJ,EAAI,YACJ,EAAI,KAAK,EAAK,KAAM,EAAK,IAAK,EAAK,MAAQ,EAAK,KAAM,EAAK,OAAS,EAAK,KACzE,EAAI,OAER,YAAoB,EAAK,CACrB,EAAI,UAIJ,YAAwB,EAAK,EAAU,EAAQ,EAAM,EAAM,CAC3D,GAAI,CAAC,EACD,MAAO,GAAI,OAAO,EAAO,EAAG,EAAO,GAEvC,GAAI,IAAS,SAAU,CACnB,KAAM,GAAY,GAAS,EAAI,EAAO,GAAK,EAC3C,EAAI,OAAO,EAAU,EAAS,GAC9B,EAAI,OAAO,EAAU,EAAO,OACrB,KAAS,SAAY,CAAC,CAAC,EAC9B,EAAI,OAAO,EAAS,EAAG,EAAO,GAE9B,EAAI,OAAO,EAAO,EAAG,EAAS,GAElC,EAAI,OAAO,EAAO,EAAG,EAAO,GAI5B,YAAwB,EAAK,EAAU,EAAQ,EAAM,CACrD,GAAI,CAAC,EACD,MAAO,GAAI,OAAO,EAAO,EAAG,EAAO,GAEvC,EAAI,cAAc,EAAO,EAAS,KAAO,EAAS,KAAM,EAAO,EAAS,KAAO,EAAS,KAAM,EAAO,EAAO,KAAO,EAAO,KAAM,EAAO,EAAO,KAAO,EAAO,KAAM,EAAO,EAAG,EAAO,GAEvL,YAAuB,EAAK,EAAM,CAC1B,EAAK,aACL,EAAI,UAAU,EAAK,YAAY,GAAI,EAAK,YAAY,IAEnD,GAAc,EAAK,WACpB,EAAI,OAAO,EAAK,UAEhB,EAAK,OACL,GAAI,UAAY,EAAK,OAErB,EAAK,WACL,GAAI,UAAY,EAAK,WAErB,EAAK,cACL,GAAI,aAAe,EAAK,cAGhC,YAAsB,EAAK,EAAG,EAAG,EAAM,EAAM,CACzC,GAAI,EAAK,eAAiB,EAAK,UAAW,CAOtC,KAAM,GAAU,EAAI,YAAY,GAC1B,EAAO,EAAI,EAAQ,sBACnB,EAAQ,EAAI,EAAQ,uBACpB,EAAM,EAAI,EAAQ,wBAClB,EAAS,EAAI,EAAQ,yBACrB,EAAc,EAAK,cAAiB,GAAM,GAAU,EAAI,EAC9D,EAAI,YAAc,EAAI,UACtB,EAAI,YACJ,EAAI,UAAY,EAAK,iBAAmB,EACxC,EAAI,OAAO,EAAM,GACjB,EAAI,OAAO,EAAO,GAClB,EAAI,UAGZ,YAAsB,EAAK,EAAM,CAC7B,KAAM,GAAW,EAAI,UACrB,EAAI,UAAY,EAAK,MACrB,EAAI,SAAS,EAAK,KAAM,EAAK,IAAK,EAAK,MAAO,EAAK,QACnD,EAAI,UAAY,EAIhB,YAAoB,EAAK,EAAM,EAAG,EAAG,EAAM,EAAO,GAAI,CACtD,KAAM,GAAQ,GAAQ,GAAQ,EAAO,CACjC,GAEE,EAAS,EAAK,YAAc,GAAK,EAAK,cAAgB,GAC5D,GAAI,GAAG,EAIP,IAHA,EAAI,OACJ,EAAI,KAAO,EAAK,OAChB,GAAc,EAAK,GACf,EAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAC3B,EAAO,EAAM,GACT,EAAK,UACL,GAAa,EAAK,EAAK,UAEvB,GACI,GAAK,aACL,GAAI,YAAc,EAAK,aAEtB,GAAc,EAAK,cACpB,GAAI,UAAY,EAAK,aAEzB,EAAI,WAAW,EAAM,EAAG,EAAG,EAAK,WAEpC,EAAI,SAAS,EAAM,EAAG,EAAG,EAAK,UAC9B,GAAa,EAAK,EAAG,EAAG,EAAM,GAC9B,GAAK,OAAO,EAAK,YAErB,EAAI,UAMJ,YAA4B,EAAK,EAAM,CACvC,KAAM,CAAE,IAAI,IAAI,IAAI,IAAI,UAAY,EAEpC,EAAI,IAAI,EAAI,EAAO,QAAS,EAAI,EAAO,QAAS,EAAO,QAAS,CAAC,GAAS,GAAI,IAE9E,EAAI,OAAO,EAAG,EAAI,EAAI,EAAO,YAE7B,EAAI,IAAI,EAAI,EAAO,WAAY,EAAI,EAAI,EAAO,WAAY,EAAO,WAAY,GAAI,GAAS,IAE1F,EAAI,OAAO,EAAI,EAAI,EAAO,YAAa,EAAI,GAE3C,EAAI,IAAI,EAAI,EAAI,EAAO,YAAa,EAAI,EAAI,EAAO,YAAa,EAAO,YAAa,GAAS,EAAG,IAEhG,EAAI,OAAO,EAAI,EAAG,EAAI,EAAO,UAE7B,EAAI,IAAI,EAAI,EAAI,EAAO,SAAU,EAAI,EAAO,SAAU,EAAO,SAAU,EAAG,CAAC,GAAS,IAEpF,EAAI,OAAO,EAAI,EAAO,QAAS,GAGnC,KAAM,IAAc,uCACd,GAAa,wEAWf,YAAsB,EAAO,EAAM,CACnC,KAAM,GAAW,IAAK,GAAO,MAAM,IACnC,GAAI,CAAC,GAAW,EAAQ,KAAO,SAC3B,MAAO,GAAO,IAGlB,OADA,EAAQ,CAAC,EAAQ,GACV,EAAQ,QACN,KACD,MAAO,OACN,IACD,GAAS,IACT,MAER,MAAO,GAAO,EAElB,KAAM,IAAgB,GAAI,CAAC,GAAK,EAChC,YAA2B,EAAO,EAAO,CACrC,KAAM,GAAM,GACN,EAAW,GAAS,GACpB,EAAO,EAAW,OAAO,KAAK,GAAS,EACvC,EAAO,GAAS,GAAS,EAAY,GAAO,GAAe,EAAM,GAAO,EAAM,EAAM,KAAW,GAAO,EAAM,GAAQ,IAAI,EAC9H,SAAW,KAAQ,GACf,EAAI,GAAQ,GAAa,EAAK,IAElC,MAAO,GASP,YAAgB,EAAO,CACvB,MAAO,IAAkB,EAAO,CAC5B,IAAK,IACL,MAAO,IACP,OAAQ,IACR,KAAM,MASV,YAAuB,EAAO,CAC9B,MAAO,IAAkB,EAAO,CAC5B,UACA,WACA,aACA,gBAUJ,YAAmB,EAAO,CAC1B,KAAM,GAAM,GAAO,GACnB,SAAI,MAAQ,EAAI,KAAO,EAAI,MAC3B,EAAI,OAAS,EAAI,IAAM,EAAI,OACpB,EAQP,YAAgB,EAAS,EAAU,CACnC,EAAU,GAAW,GACrB,EAAW,GAAY,GAAS,KAChC,GAAI,GAAO,GAAe,EAAQ,KAAM,EAAS,MAC7C,MAAO,IAAS,UAChB,GAAO,SAAS,EAAM,KAE1B,GAAI,GAAQ,GAAe,EAAQ,MAAO,EAAS,OAC/C,GAAS,CAAE,IAAK,GAAO,MAAM,KAC7B,SAAQ,KAAK,kCAAoC,EAAQ,KACzD,EAAQ,QAEZ,KAAM,GAAO,CACT,OAAQ,GAAe,EAAQ,OAAQ,EAAS,QAChD,WAAY,GAAa,GAAe,EAAQ,WAAY,EAAS,YAAa,GAClF,OACA,QACA,OAAQ,GAAe,EAAQ,OAAQ,EAAS,QAChD,OAAQ,IAEZ,SAAK,OAAS,GAAa,GACpB,EAYP,YAAiB,EAAQ,EAAS,EAAO,EAAM,CAC/C,GAAI,GAAY,GACZ,EAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EAEzC,GADA,EAAQ,EAAO,GACX,IAAU,QAGV,KAAY,QAAa,MAAO,IAAU,YAC1C,GAAQ,EAAM,GACd,EAAY,IAEZ,IAAU,QAAa,GAAQ,IAC/B,GAAQ,EAAM,EAAQ,EAAM,QAC5B,EAAY,IAEZ,IAAU,QACV,MAAI,IAAQ,CAAC,GACT,GAAK,UAAY,IAEd,EASf,YAAmB,EAAQ,EAAO,EAAa,CAC/C,KAAM,CAAE,MAAM,OAAS,EACjB,EAAS,GAAY,EAAQ,GAAM,GAAO,GAC1C,EAAW,CAAC,EAAO,IAAM,GAAe,IAAU,EAAI,EAAI,EAAQ,EACxE,MAAO,CACH,IAAK,EAAS,EAAK,CAAC,KAAK,IAAI,IAC7B,IAAK,EAAS,EAAK,IAG3B,YAAuB,EAAe,EAAS,CAC3C,MAAO,QAAO,OAAO,OAAO,OAAO,GAAgB,GAYnD,YAAyB,EAAQ,EAAW,CAC5C,IACD,EAAY,EAAU,EAAY,IAAI,EAAO,GAAI,CAChD,KAAM,GAAkB,GAAc,EAClC,MAAO,IAAa,aACpB,GAAW,GAAS,YAAa,IAErC,KAAM,GAAQ,EACT,OAAO,aAAc,SACtB,WAAY,GACZ,QAAS,EACT,YAAa,EACb,UAAW,EACX,WAAY,EACZ,SAAW,GAAQ,GAAgB,CAC3B,EACA,GAAG,GACJ,EAAU,EAAiB,IAEtC,MAAO,IAAI,OAAM,EAAO,CAGpB,eAAgB,EAAQ,EAAM,CAC1B,aAAO,GAAO,GACd,MAAO,GAAO,MACd,MAAO,GAAO,GAAG,GACV,IAIX,IAAK,EAAQ,EAAM,CACf,MAAO,IAAQ,EAAQ,EAAM,IAAI,GAAqB,EAAM,EAAU,EAAQ,KAKlF,yBAA0B,EAAQ,EAAM,CACpC,MAAO,SAAQ,yBAAyB,EAAO,QAAQ,GAAI,IAI/D,gBAAkB,CACd,MAAO,SAAQ,eAAe,EAAO,KAIzC,IAAK,EAAQ,EAAM,CACf,MAAO,IAAqB,GAAQ,SAAS,IAIjD,QAAS,EAAQ,CACb,MAAO,IAAqB,IAIhC,IAAK,EAAQ,EAAM,EAAO,CACtB,KAAM,GAAU,EAAO,UAAa,GAAO,SAAW,KACtD,SAAO,GAAQ,EAAQ,GAAQ,EAC/B,MAAO,GAAO,MACP,MAWf,YAAwB,EAAO,EAAS,EAAU,EAAoB,CACtE,KAAM,GAAQ,CACV,WAAY,GACZ,OAAQ,EACR,SAAU,EACV,UAAW,EACX,OAAQ,GAAI,KACZ,aAAc,GAAa,EAAO,GAClC,WAAa,GAAM,GAAe,EAAO,EAAK,EAAU,GACxD,SAAW,GAAQ,GAAe,EAAM,SAAS,GAAQ,EAAS,EAAU,IAEhF,MAAO,IAAI,OAAM,EAAO,CAGpB,eAAgB,EAAQ,EAAM,CAC1B,aAAO,GAAO,GACd,MAAO,GAAM,GACN,IAIX,IAAK,EAAQ,EAAM,EAAU,CACzB,MAAO,IAAQ,EAAQ,EAAM,IAAI,GAAoB,EAAQ,EAAM,KAKvE,yBAA0B,EAAQ,EAAM,CACpC,MAAO,GAAO,aAAa,QAAU,QAAQ,IAAI,EAAO,GAAQ,CAC5D,WAAY,GACZ,aAAc,IACd,OAAY,QAAQ,yBAAyB,EAAO,IAI5D,gBAAkB,CACd,MAAO,SAAQ,eAAe,IAIlC,IAAK,EAAQ,EAAM,CACf,MAAO,SAAQ,IAAI,EAAO,IAI9B,SAAW,CACP,MAAO,SAAQ,QAAQ,IAI3B,IAAK,EAAQ,EAAM,EAAO,CACtB,SAAM,GAAQ,EACd,MAAO,GAAO,GACP,MAMf,YAAsB,EAAO,EAAW,CACxC,WAAY,GACZ,UAAW,IACZ,CACC,KAAM,CAAE,cAAa,EAAS,WAAa,aAAY,EAAS,UAAY,WAAU,EAAS,SAAa,EAC5G,MAAO,CACH,QAAS,EACT,WAAY,EACZ,UAAW,EACX,aAAc,GAAW,GAAe,EAAc,IAAI,EAC1D,YAAa,GAAW,GAAc,EAAa,IAAI,GAG/D,KAAM,IAAU,CAAC,EAAQ,IAAO,EAAS,EAAS,GAAY,GAAQ,EAChE,GAAmB,CAAC,EAAM,IAAQ,GAAS,IAAU,IAAS,YAAe,QAAO,eAAe,KAAW,MAAQ,EAAM,cAAgB,QAClJ,YAAiB,EAAQ,EAAM,EAAS,CACpC,GAAI,OAAO,UAAU,eAAe,KAAK,EAAQ,GAC7C,MAAO,GAAO,GAElB,KAAM,GAAQ,IAEd,SAAO,GAAQ,EACR,EAEX,YAA6B,EAAQ,EAAM,EAAU,CACjD,KAAM,CAAE,SAAS,WAAW,YAAY,aAAc,GAAiB,EACvE,GAAI,GAAQ,EAAO,GAEnB,MAAI,IAAW,IAAU,EAAY,aAAa,IAC9C,GAAQ,GAAmB,EAAM,EAAO,EAAQ,IAEhD,GAAQ,IAAU,EAAM,QACxB,GAAQ,GAAc,EAAM,EAAO,EAAQ,EAAY,cAEvD,GAAiB,EAAM,IAEvB,GAAQ,GAAe,EAAO,EAAU,GAAa,EAAU,GAAO,IAEnE,EAEX,YAA4B,EAAM,EAAU,EAAQ,EAAU,CAC1D,KAAM,CAAE,SAAS,WAAW,YAAY,UAAY,EACpD,GAAI,EAAO,IAAI,GACX,KAAM,IAAI,OAAM,uBAAyB,MAAM,KAAK,GAAQ,KAAK,MAAQ,KAAO,GAEpF,EAAO,IAAI,GACX,GAAI,GAAQ,EAAS,EAAU,GAAa,GAC5C,SAAO,OAAO,GACV,GAAiB,EAAM,IAEvB,GAAQ,GAAkB,EAAO,QAAS,EAAQ,EAAM,IAErD,EAEX,YAAuB,EAAM,EAAO,EAAQ,EAAa,CACrD,KAAM,CAAE,SAAS,WAAW,YAAY,aAAc,GAAiB,EACvE,GAAI,MAAO,GAAS,OAAU,aAAe,EAAY,GACrD,MAAO,GAAM,EAAS,MAAQ,EAAM,QACjC,GAAI,GAAS,EAAM,IAAK,CAE3B,KAAM,GAAM,EACN,EAAS,EAAO,QAAQ,OAAQ,GAAI,IAAM,GAChD,EAAQ,GACR,SAAW,KAAQ,GAAI,CACnB,KAAM,GAAW,GAAkB,EAAQ,EAAQ,EAAM,GACzD,EAAM,KAAK,GAAe,EAAU,EAAU,GAAa,EAAU,GAAO,KAGpF,MAAO,GAEX,YAAyB,EAAU,EAAM,EAAO,CAC5C,MAAO,IAAW,GAAY,EAAS,EAAM,GAAS,EAE1D,KAAM,IAAW,CAAC,EAAK,IAAS,IAAQ,GAAO,EAAS,MAAO,IAAQ,SAAW,GAAiB,EAAQ,GAAO,OAClH,YAAmB,EAAK,EAAc,EAAK,EAAgB,EAAO,CAC9D,SAAW,KAAU,GAAa,CAC9B,KAAM,GAAQ,GAAS,EAAK,GAC5B,GAAI,EAAO,CACP,EAAI,IAAI,GACR,KAAM,GAAW,GAAgB,EAAM,UAAW,EAAK,GACvD,GAAI,MAAO,IAAa,aAAe,IAAa,GAAO,IAAa,EAGpE,MAAO,WAEJ,IAAU,IAAS,MAAO,IAAmB,aAAe,IAAQ,EAG3E,MAAO,MAGf,MAAO,GAEX,YAA2B,EAAc,EAAU,EAAM,EAAO,CAC5D,KAAM,GAAa,EAAS,YACtB,EAAW,GAAgB,EAAS,UAAW,EAAM,GACrD,EAAY,CACd,GAAG,EACH,GAAG,GAED,EAAM,GAAI,KAChB,EAAI,IAAI,GACR,GAAI,GAAM,GAAiB,EAAK,EAAW,EAAM,GAAY,EAAM,GAInE,MAHI,KAAQ,MAGR,MAAO,IAAa,aAAe,IAAa,GAChD,GAAM,GAAiB,EAAK,EAAW,EAAU,EAAK,GAClD,IAAQ,MACD,GAGR,GAAgB,MAAM,KAAK,GAAM,CACpC,IACD,EAAY,EAAU,IAAI,GAAa,EAAU,EAAM,IAE9D,YAA0B,EAAK,EAAW,EAAK,EAAU,EAAM,CAC3D,KAAM,GACF,EAAM,GAAU,EAAK,EAAW,EAAK,EAAU,GAEnD,MAAO,GAEX,YAAsB,EAAU,EAAM,EAAO,CACzC,KAAM,GAAS,EAAS,aAClB,IAAQ,IACV,GAAO,GAAQ,IAEnB,KAAM,GAAS,EAAO,GACtB,MAAI,IAAQ,IAAW,GAAS,GAErB,EAEJ,GAAU,GAErB,YAA8B,EAAM,EAAU,EAAQ,EAAO,CACzD,GAAI,GACJ,SAAW,KAAU,GAEjB,GADA,EAAQ,GAAS,GAAQ,EAAQ,GAAO,GACpC,MAAO,IAAU,YACjB,MAAO,IAAiB,EAAM,GAAS,GAAkB,EAAQ,EAAO,EAAM,GAAS,EAInG,YAAkB,EAAK,EAAQ,CAC3B,SAAW,KAAS,GAAO,CACvB,GAAI,CAAC,EACD,SAEJ,KAAM,GAAQ,EAAM,GACpB,GAAI,MAAO,IAAU,YACjB,MAAO,IAInB,YAA8B,EAAQ,CAClC,GAAI,GAAO,EAAO,MAClB,MAAK,IACD,GAAO,EAAO,MAAQ,GAAyB,EAAO,UAEnD,EAEX,YAAkC,EAAQ,CACtC,KAAM,GAAM,GAAI,KAChB,SAAW,KAAS,GAChB,SAAW,KAAO,QAAO,KAAK,GAAO,OAAQ,GAAI,CAAC,EAAE,WAAW,MAC3D,EAAI,IAAI,GAGhB,MAAO,OAAM,KAAK,GAEtB,YAAqC,EAAM,EAAM,EAAO,EAAO,CAC3D,KAAM,CAAE,UAAY,EACd,CAAE,MAAK,KAAS,KAAK,SACrB,EAAS,GAAI,OAAM,GACzB,GAAI,GAAG,EAAM,EAAO,EACpB,IAAI,EAAI,EAAG,EAAO,EAAO,EAAI,EAAM,EAAE,EACjC,EAAQ,EAAI,EACZ,EAAO,EAAK,GACZ,EAAO,GAAK,CACR,EAAG,EAAO,MAAM,GAAiB,EAAM,GAAM,IAGrD,MAAO,GAGX,KAAM,IAAU,OAAO,SAAW,MAC5B,GAAW,CAAC,EAAQ,IAAI,EAAI,EAAO,QAAU,CAAC,EAAO,GAAG,MAAQ,EAAO,GACvE,GAAgB,GAAY,IAAc,IAAM,IAAM,IAC5D,YAAqB,EAAY,EAAa,EAAY,EAAG,CAIzD,KAAM,GAAW,EAAW,KAAO,EAAc,EAC3C,EAAU,EACV,EAAO,EAAW,KAAO,EAAc,EACvC,EAAM,GAAsB,EAAS,GACrC,EAAM,GAAsB,EAAM,GACxC,GAAI,GAAM,EAAO,GAAM,GACnB,EAAM,EAAO,GAAM,GAEvB,EAAM,MAAM,GAAO,EAAI,EACvB,EAAM,MAAM,GAAO,EAAI,EACvB,KAAM,GAAK,EAAI,EACT,EAAK,EAAI,EACf,MAAO,CACH,SAAU,CACN,EAAG,EAAQ,EAAI,EAAM,GAAK,EAAI,EAAS,GACvC,EAAG,EAAQ,EAAI,EAAM,GAAK,EAAI,EAAS,IAE3C,KAAM,CACF,EAAG,EAAQ,EAAI,EAAM,GAAK,EAAI,EAAS,GACvC,EAAG,EAAQ,EAAI,EAAM,GAAK,EAAI,EAAS,KAM/C,YAAwB,EAAQ,EAAQ,EAAI,CAC5C,KAAM,GAAY,EAAO,OACzB,GAAI,GAAQ,EAAO,EAAM,EAAkB,EACvC,EAAa,GAAS,EAAQ,GAClC,OAAQ,GAAI,EAAG,EAAI,EAAY,EAAG,EAAE,EAGhC,GAFA,EAAe,EACf,EAAa,GAAS,EAAQ,EAAI,GAC9B,GAAC,GAAgB,CAAC,GAGtB,IAAI,GAAa,EAAO,GAAI,EAAG,IAAU,CACrC,EAAG,GAAK,EAAG,EAAI,GAAK,EACpB,SAKJ,EAHS,EAAG,GAAK,EAAO,GACxB,EAAQ,EAAG,EAAI,GAAK,EAAO,GAC3B,EAAmB,KAAK,IAAI,EAAQ,GAAK,KAAK,IAAI,EAAO,GACrD,KAAoB,IAGxB,GAAO,EAAI,KAAK,KAAK,GACrB,EAAG,GAAK,EAAS,EAAO,EAAO,GAC/B,EAAG,EAAI,GAAK,EAAQ,EAAO,EAAO,KAG1C,YAAyB,EAAQ,EAAI,EAAY,IAAK,CAClD,KAAM,GAAY,GAAa,GACzB,EAAY,EAAO,OACzB,GAAI,GAAO,EAAa,EACpB,EAAa,GAAS,EAAQ,GAClC,OAAQ,GAAI,EAAG,EAAI,EAAW,EAAE,EAAE,CAI9B,GAHA,EAAc,EACd,EAAe,EACf,EAAa,GAAS,EAAQ,EAAI,GAC9B,CAAC,EACD,SAEJ,KAAM,GAAS,EAAa,GACtB,EAAS,EAAa,GACxB,GACA,GAAS,GAAS,EAAY,IAAc,EAC5C,EAAa,MAAM,KAAe,EAAS,EAC3C,EAAa,MAAM,KAAe,EAAS,EAAQ,EAAG,IAEtD,GACA,GAAS,GAAW,GAAa,GAAU,EAC3C,EAAa,MAAM,KAAe,EAAS,EAC3C,EAAa,MAAM,KAAe,EAAS,EAAQ,EAAG,KAS9D,YAA6B,EAAQ,EAAY,IAAK,CACtD,KAAM,GAAY,GAAa,GACzB,EAAY,EAAO,OACnB,EAAS,MAAM,GAAW,KAAK,GAC/B,EAAK,MAAM,GAEjB,GAAI,GAAG,EAAa,EAChB,EAAa,GAAS,EAAQ,GAClC,IAAI,EAAI,EAAG,EAAI,EAAW,EAAE,EAIxB,GAHA,EAAc,EACd,EAAe,EACf,EAAa,GAAS,EAAQ,EAAI,GAC9B,EAAC,EAGL,IAAI,EAAY,CACZ,KAAM,GAAa,EAAW,GAAa,EAAa,GAExD,EAAO,GAAK,IAAe,EAAK,GAAW,GAAa,EAAa,IAAc,EAAa,EAEpG,EAAG,GAAM,EAA2B,EAA6B,GAAK,EAAO,EAAI,MAAQ,GAAK,EAAO,IAAM,EAAK,GAAO,EAAI,GAAK,EAAO,IAAM,EAA5F,EAAO,EAAI,GAArC,EAAO,GAElC,GAAe,EAAQ,EAAQ,GAC/B,GAAgB,EAAQ,EAAI,GAEhC,YAAyB,EAAI,EAAK,EAAK,CACnC,MAAO,MAAK,IAAI,KAAK,IAAI,EAAI,GAAM,GAEvC,YAAyB,EAAQ,EAAM,CACnC,GAAI,GAAG,EAAM,EAAO,EAAQ,EACxB,EAAa,GAAe,EAAO,GAAI,GAC3C,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EAIzC,EAHa,EACb,EAAS,EACT,EAAa,EAAI,EAAO,GAAK,GAAe,EAAO,EAAI,GAAI,GACvD,EAAC,GAGL,GAAQ,EAAO,GACX,GACA,GAAM,KAAO,GAAgB,EAAM,KAAM,EAAK,KAAM,EAAK,OACzD,EAAM,KAAO,GAAgB,EAAM,KAAM,EAAK,IAAK,EAAK,SAExD,GACA,GAAM,KAAO,GAAgB,EAAM,KAAM,EAAK,KAAM,EAAK,OACzD,EAAM,KAAO,GAAgB,EAAM,KAAM,EAAK,IAAK,EAAK,UAMhE,YAAoC,EAAQ,EAAS,EAAM,EAAM,EAAW,CAC5E,GAAI,GAAG,EAAM,EAAO,EAKpB,GAHI,EAAQ,UACR,GAAS,EAAO,OAAQ,GAAK,CAAC,EAAG,OAEjC,EAAQ,yBAA2B,WACnC,GAAoB,EAAQ,OACzB,CACH,GAAI,GAAO,EAAO,EAAO,EAAO,OAAS,GAAK,EAAO,GACrD,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EACzC,EAAQ,EAAO,GACf,EAAgB,GAAY,EAAM,EAAO,EAAO,KAAK,IAAI,EAAI,EAAG,EAAQ,GAAO,EAAI,IAAM,GAAO,EAAQ,SACxG,EAAM,KAAO,EAAc,SAAS,EACpC,EAAM,KAAO,EAAc,SAAS,EACpC,EAAM,KAAO,EAAc,KAAK,EAChC,EAAM,KAAO,EAAc,KAAK,EAChC,EAAO,EAGX,EAAQ,iBACR,GAAgB,EAAQ,GAY5B,aAA2B,CAC3B,MAAO,OAAO,SAAW,aAAe,MAAO,WAAa,YAI5D,YAAwB,EAAS,CACjC,GAAI,GAAS,EAAQ,WACrB,MAAI,IAAU,EAAO,aAAe,uBAChC,GAAS,EAAO,MAEb,EAKP,YAAuB,EAAY,EAAM,EAAgB,CACzD,GAAI,GACJ,MAAI,OAAO,IAAe,SACtB,GAAgB,SAAS,EAAY,IACjC,EAAW,QAAQ,OAAS,IAE5B,GAAgB,EAAgB,IAAM,EAAK,WAAW,KAG1D,EAAgB,EAEb,EAEX,KAAM,IAAoB,GAAU,EAAQ,cAAc,YAAY,iBAAiB,EAAS,MAChG,YAAkB,EAAI,EAAU,CAC5B,MAAO,IAAiB,GAAI,iBAAiB,GAEjD,KAAM,IAAY,CACd,MACA,QACA,SACA,QAEJ,YAA4B,EAAQ,EAAO,EAAQ,CAC/C,KAAM,GAAS,GACf,EAAS,EAAS,IAAM,EAAS,GACjC,OAAQ,GAAI,EAAG,EAAI,EAAG,IAAI,CACtB,KAAM,GAAM,GAAU,GACtB,EAAO,GAAO,WAAW,EAAO,EAAQ,IAAM,EAAM,KAAY,EAEpE,SAAO,MAAQ,EAAO,KAAO,EAAO,MACpC,EAAO,OAAS,EAAO,IAAM,EAAO,OAC7B,EAEX,KAAM,IAAe,CAAC,EAAG,EAAG,IAAU,GAAI,GAAK,EAAI,IAAO,EAAC,GAAU,CAAC,EAAO,YAKzE,YAA2B,EAAG,EAAQ,CACtC,KAAM,GAAU,EAAE,QACZ,EAAS,GAAW,EAAQ,OAAS,EAAQ,GAAK,EAClD,CAAE,UAAU,WAAa,EAC/B,GAAI,GAAM,GACN,EAAG,EACP,GAAI,GAAa,EAAS,EAAS,EAAE,QACjC,EAAI,EACJ,EAAI,MACD,CACH,KAAM,GAAO,EAAO,wBACpB,EAAI,EAAO,QAAU,EAAK,KAC1B,EAAI,EAAO,QAAU,EAAK,IAC1B,EAAM,GAEV,MAAO,CACH,IACA,IACA,OAQJ,YAA6B,EAAO,EAAO,CAC3C,GAAI,UAAY,GACZ,MAAO,GAEX,KAAM,CAAE,SAAS,2BAA6B,EACxC,EAAQ,GAAiB,GACzB,EAAY,EAAM,YAAc,aAChC,EAAW,GAAmB,EAAO,WACrC,EAAU,GAAmB,EAAO,SAAU,SAC9C,CAAE,IAAI,IAAI,OAAS,GAAkB,EAAO,GAC5C,EAAU,EAAS,KAAQ,IAAO,EAAQ,MAC1C,EAAU,EAAS,IAAO,IAAO,EAAQ,KAC/C,GAAI,CAAE,QAAQ,UAAY,EAC1B,MAAI,IACA,IAAS,EAAS,MAAQ,EAAQ,MAClC,GAAU,EAAS,OAAS,EAAQ,QAEjC,CACH,EAAG,KAAK,MAAO,GAAI,GAAW,EAAQ,EAAO,MAAQ,GACrD,EAAG,KAAK,MAAO,GAAI,GAAW,EAAS,EAAO,OAAS,IAG/D,YAA0B,EAAQ,EAAO,EAAQ,CAC7C,GAAI,GAAU,EACd,GAAI,IAAU,QAAa,IAAW,OAAW,CAC7C,KAAM,GAAY,GAAe,GACjC,GAAI,CAAC,EACD,EAAQ,EAAO,YACf,EAAS,EAAO,iBACb,CACH,KAAM,GAAO,EAAU,wBACjB,EAAiB,GAAiB,GAClC,EAAkB,GAAmB,EAAgB,SAAU,SAC/D,EAAmB,GAAmB,EAAgB,WAC5D,EAAQ,EAAK,MAAQ,EAAiB,MAAQ,EAAgB,MAC9D,EAAS,EAAK,OAAS,EAAiB,OAAS,EAAgB,OACjE,EAAW,GAAc,EAAe,SAAU,EAAW,eAC7D,EAAY,GAAc,EAAe,UAAW,EAAW,iBAGvE,MAAO,CACH,QACA,SACA,SAAU,GAAY,GACtB,UAAW,GAAa,IAGhC,KAAM,IAAU,GAAI,KAAK,MAAM,EAAI,IAAM,GAEzC,YAAwB,EAAQ,EAAS,EAAU,EAAa,CAC5D,KAAM,GAAQ,GAAiB,GACzB,EAAU,GAAmB,EAAO,UACpC,EAAW,GAAc,EAAM,SAAU,EAAQ,gBAAkB,GACnE,EAAY,GAAc,EAAM,UAAW,EAAQ,iBAAmB,GACtE,EAAgB,GAAiB,EAAQ,EAAS,GACxD,GAAI,CAAE,QAAQ,UAAY,EAC1B,GAAI,EAAM,YAAc,cAAe,CACnC,KAAM,GAAU,GAAmB,EAAO,SAAU,SAC9C,EAAW,GAAmB,EAAO,WAC3C,GAAS,EAAS,MAAQ,EAAQ,MAClC,GAAU,EAAS,OAAS,EAAQ,OAExC,SAAQ,KAAK,IAAI,EAAG,EAAQ,EAAQ,OACpC,EAAS,KAAK,IAAI,EAAG,EAAc,EAAQ,EAAc,EAAS,EAAQ,QAC1E,EAAQ,GAAO,KAAK,IAAI,EAAO,EAAU,EAAc,WACvD,EAAS,GAAO,KAAK,IAAI,EAAQ,EAAW,EAAc,YACtD,GAAS,CAAC,GAGV,GAAS,GAAO,EAAQ,IAGxB,KAD+B,QAAa,IAAa,SACvC,GAAe,EAAc,QAAU,EAAS,EAAc,QAChF,GAAS,EAAc,OACvB,EAAQ,GAAO,KAAK,MAAM,EAAS,KAEhC,CACH,QACA,UAQJ,YAAqB,EAAO,EAAY,EAAY,CACpD,KAAM,GAAa,GAAc,EAC3B,EAAe,KAAK,MAAM,EAAM,OAAS,GACzC,EAAc,KAAK,MAAM,EAAM,MAAQ,GAC7C,EAAM,OAAS,KAAK,MAAM,EAAM,QAChC,EAAM,MAAQ,KAAK,MAAM,EAAM,OAC/B,KAAM,GAAS,EAAM,OAQrB,MAJI,GAAO,OAAU,IAAc,CAAC,EAAO,MAAM,QAAU,CAAC,EAAO,MAAM,QACrE,GAAO,MAAM,OAAS,GAAG,EAAM,WAC/B,EAAO,MAAM,MAAQ,GAAG,EAAM,WAE9B,EAAM,0BAA4B,GAAc,EAAO,SAAW,GAAgB,EAAO,QAAU,EACnG,GAAM,wBAA0B,EAChC,EAAO,OAAS,EAChB,EAAO,MAAQ,EACf,EAAM,IAAI,aAAa,EAAY,EAAG,EAAG,EAAY,EAAG,GACjD,IAEJ,GAMP,KAAM,IAA+B,UAAW,CAChD,GAAI,GAAmB,GACvB,GAAI,CACA,KAAM,GAAU,IACR,UAAW,CACX,SAAmB,GACZ,KAGf,OAAO,iBAAiB,OAAQ,KAAM,GACtC,OAAO,oBAAoB,OAAQ,KAAM,QAC3C,EAGF,MAAO,MAUP,YAAsB,EAAS,EAAU,CACzC,KAAM,GAAQ,GAAS,EAAS,GAC1B,EAAU,GAAS,EAAM,MAAM,qBACrC,MAAO,GAAU,CAAC,EAAQ,GAAK,OAK/B,YAAsB,EAAI,EAAI,EAAG,EAAM,CACvC,MAAO,CACH,EAAG,EAAG,EAAI,EAAK,GAAG,EAAI,EAAG,GACzB,EAAG,EAAG,EAAI,EAAK,GAAG,EAAI,EAAG,IAK7B,YAA+B,EAAI,EAAI,EAAG,EAAM,CAChD,MAAO,CACH,EAAG,EAAG,EAAI,EAAK,GAAG,EAAI,EAAG,GACzB,EAAG,IAAS,SAAW,EAAI,GAAM,EAAG,EAAI,EAAG,EAAI,IAAS,QAAU,EAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAI,EAAI,EAAG,EAAI,EAAG,GAK9G,YAA8B,EAAI,EAAI,EAAG,EAAM,CAC/C,KAAM,GAAM,CACR,EAAG,EAAG,KACN,EAAG,EAAG,MAEJ,EAAM,CACR,EAAG,EAAG,KACN,EAAG,EAAG,MAEJ,EAAI,GAAa,EAAI,EAAK,GAC1B,EAAI,GAAa,EAAK,EAAK,GAC3B,EAAI,GAAa,EAAK,EAAI,GAC1B,EAAI,GAAa,EAAG,EAAG,GACvB,EAAI,GAAa,EAAG,EAAG,GAC7B,MAAO,IAAa,EAAG,EAAG,GAG9B,KAAM,IAAwB,SAAS,EAAO,EAAO,CACjD,MAAO,CACH,EAAG,EAAG,CACF,MAAO,GAAQ,EAAQ,EAAQ,GAEnC,SAAU,EAAG,CACT,EAAQ,GAEZ,UAAW,EAAO,CACd,MAAI,KAAU,SACH,EAEJ,IAAU,QAAU,OAAS,SAExC,MAAO,EAAG,EAAO,CACb,MAAO,GAAI,GAEf,WAAY,EAAG,EAAW,CACtB,MAAO,GAAI,KAIjB,GAAwB,UAAW,CACrC,MAAO,CACH,EAAG,EAAG,CACF,MAAO,IAEX,SAAU,EAAG,GACb,UAAW,EAAO,CACd,MAAO,IAEX,MAAO,EAAG,EAAO,CACb,MAAO,GAAI,GAEf,WAAY,EAAG,EAAY,CACvB,MAAO,MAInB,YAAuB,EAAK,EAAO,EAAO,CACtC,MAAO,GAAM,GAAsB,EAAO,GAAS,KAEvD,YAA+B,EAAK,EAAW,CAC3C,GAAI,GAAO,EACP,KAAc,OAAS,IAAc,QACrC,GAAQ,EAAI,OAAO,MACnB,EAAW,CACP,EAAM,iBAAiB,aACvB,EAAM,oBAAoB,cAE9B,EAAM,YAAY,YAAa,EAAW,aAC1C,EAAI,kBAAoB,GAGhC,YAA8B,EAAK,EAAU,CACrC,IAAa,QACb,OAAO,GAAI,kBACX,EAAI,OAAO,MAAM,YAAY,YAAa,EAAS,GAAI,EAAS,KAIxE,YAAoB,EAAU,CAC1B,MAAI,KAAa,QACN,CACH,QAAS,GACT,QAAS,GACT,UAAW,IAGZ,CACH,QAAS,GACT,QAAS,CAAC,EAAG,IAAI,EAAI,EACrB,UAAY,GAAI,GAGxB,YAA0B,CAAE,QAAQ,MAAM,QAAQ,OAAO,SAAU,CAC/D,MAAO,CACH,MAAO,EAAQ,EACf,IAAK,EAAM,EACX,KAAM,GAAS,GAAM,EAAQ,GAAK,IAAU,EAC5C,SAGR,YAAoB,EAAS,EAAQ,EAAQ,CACzC,KAAM,CAAE,WAAW,MAAO,EAAa,IAAK,GAAc,EACpD,CAAE,UAAU,aAAe,GAAW,GACtC,EAAQ,EAAO,OACrB,GAAI,CAAE,QAAQ,MAAM,QAAU,EAC1B,EAAG,EACP,GAAI,EAAM,CAGN,IAFA,GAAS,EACT,GAAO,EACH,EAAI,EAAG,EAAO,EAAO,EAAI,GACpB,EAAQ,EAAU,EAAO,EAAQ,GAAO,IAAY,EAAY,GADtC,EAAE,EAIjC,IACA,IAEJ,GAAS,EACT,GAAO,EAEX,MAAI,GAAM,GACN,IAAO,GAEJ,CACH,QACA,MACA,OACA,MAAO,EAAQ,OAGtB,YAAuB,EAAS,EAAQ,EAAQ,CAC7C,GAAI,CAAC,EACD,MAAO,CACH,GAGR,KAAM,CAAE,WAAW,MAAO,EAAa,IAAK,GAAc,EACpD,EAAQ,EAAO,OACf,CAAE,UAAU,UAAU,aAAe,GAAW,GAChD,CAAE,QAAQ,MAAM,OAAO,SAAW,GAAW,EAAS,EAAQ,GAC9D,EAAS,GACf,GAAI,GAAS,GACT,EAAW,KACX,EAAO,GAAO,GAClB,KAAM,GAAgB,IAAI,EAAQ,EAAY,GAAW,IAAU,EAAQ,EAAY,MAAe,EAChG,GAAc,IAAI,EAAQ,EAAU,KAAW,GAAK,EAAQ,EAAU,GAAW,GACjF,GAAc,IAAI,GAAU,IAC5B,GAAa,IAAI,CAAC,GAAU,KAClC,OAAQ,IAAI,EAAO,GAAO,EAAO,IAAK,EAAK,EAAE,GAEzC,GADQ,EAAO,GAAI,GACf,IAAM,MAGV,GAAQ,EAAU,GAAM,IACpB,IAAU,IAGd,GAAS,EAAQ,EAAO,EAAY,GAChC,IAAa,MAAQ,MACrB,GAAW,EAAQ,EAAO,KAAgB,EAAI,GAAI,IAElD,IAAa,MAAQ,MACrB,GAAO,KAAK,GAAiB,CACzB,MAAO,EACP,IAAK,GACL,OACA,QACA,WAEJ,EAAW,MAEf,GAAO,GACP,GAAY,IAEhB,MAAI,KAAa,MACb,EAAO,KAAK,GAAiB,CACzB,MAAO,EACP,MACA,OACA,QACA,WAGD,EAEV,YAAwB,EAAM,EAAQ,CACnC,KAAM,GAAS,GACT,EAAW,EAAK,SACtB,OAAQ,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAI,CACpC,KAAM,GAAM,GAAc,EAAS,GAAI,EAAK,OAAQ,GAChD,EAAI,QACJ,EAAO,KAAK,GAAG,GAGvB,MAAO,GAEV,YAAyB,EAAQ,EAAO,EAAM,EAAU,CACrD,GAAI,GAAQ,EACR,EAAM,EAAQ,EAClB,GAAI,GAAQ,CAAC,EACT,KAAM,EAAQ,GAAS,CAAC,EAAO,GAAO,MAClC,IAGR,KAAM,EAAQ,GAAS,EAAO,GAAO,MACjC,IAMJ,IAJA,GAAS,EACL,GACA,IAAO,GAEL,EAAM,GAAS,EAAO,EAAM,GAAO,MACrC,IAEJ,UAAO,EACA,CACH,QACA,OAGP,YAAuB,EAAQ,EAAO,EAAK,EAAM,CAC9C,KAAM,GAAQ,EAAO,OACf,EAAS,GACf,GAAI,GAAO,EACP,EAAO,EAAO,GACd,EACJ,IAAI,EAAM,EAAQ,EAAG,GAAO,EAAK,EAAE,EAAI,CACnC,KAAM,GAAM,EAAO,EAAM,GACrB,EAAI,MAAQ,EAAI,KACX,EAAK,MACN,GAAO,GACP,EAAO,KAAK,CACR,MAAO,EAAQ,EACf,IAAM,GAAM,GAAK,EACjB,SAEJ,EAAQ,EAAO,EAAI,KAAO,EAAM,MAGpC,GAAO,EACH,EAAK,MACL,GAAQ,IAGhB,EAAO,EAEX,MAAI,KAAS,MACT,EAAO,KAAK,CACR,MAAO,EAAQ,EACf,IAAK,EAAO,EACZ,SAGD,EAEV,YAA0B,EAAM,EAAgB,CAC7C,KAAM,GAAS,EAAK,OACd,EAAW,EAAK,QAAQ,SACxB,EAAQ,EAAO,OACrB,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAO,CAAC,CAAC,EAAK,MACd,CAAE,QAAQ,OAAS,GAAgB,EAAQ,EAAO,EAAM,GAC9D,GAAI,IAAa,GACb,MAAO,IAAc,EAAM,CACvB,CACI,QACA,MACA,SAEL,EAAQ,GAEf,KAAM,GAAM,EAAM,EAAQ,EAAM,EAAQ,EAClC,EAAe,CAAC,CAAC,EAAK,WAAa,IAAU,GAAK,IAAQ,EAAQ,EACxE,MAAO,IAAc,EAAM,GAAc,EAAQ,EAAO,EAAK,GAAe,EAAQ,GAEvF,YAAuB,EAAM,EAAU,EAAQ,EAAgB,CAC5D,MAAI,CAAC,GAAkB,CAAC,EAAe,YAAc,CAAC,EAC3C,EAEJ,GAAgB,EAAM,EAAU,EAAQ,GAElD,YAAyB,EAAM,EAAU,EAAQ,EAAgB,CAC9D,KAAM,GAAe,EAAK,OAAO,aAC3B,EAAY,GAAU,EAAK,SAC3B,CAAE,cAAe,EAAe,QAAS,CAAE,aAAiB,EAC5D,EAAQ,EAAO,OACf,EAAS,GACf,GAAI,GAAY,EACZ,EAAQ,EAAS,GAAG,MACpB,EAAI,EACR,WAAkB,EAAG,EAAG,EAAG,EAAI,CAC3B,KAAM,IAAM,EAAW,GAAK,EAC5B,GAAI,IAAM,EAIV,KADA,GAAK,EACC,EAAO,EAAI,GAAO,MACpB,GAAK,GAET,KAAM,EAAO,EAAI,GAAO,MACpB,GAAK,GAEL,EAAI,IAAU,EAAI,GAClB,GAAO,KAAK,CACR,MAAO,EAAI,EACX,IAAK,EAAI,EACT,KAAM,EACN,MAAO,IAEX,EAAY,EACZ,EAAQ,EAAI,IAGpB,SAAW,KAAW,GAAS,CAC3B,EAAQ,EAAW,EAAQ,EAAQ,MACnC,GAAI,GAAO,EAAO,EAAQ,GACtB,EACJ,IAAI,EAAI,EAAQ,EAAG,GAAK,EAAQ,IAAK,IAAI,CACrC,KAAM,GAAK,EAAO,EAAI,GACtB,EAAQ,GAAU,EAAe,WAAW,GAAc,EAAc,CACpE,KAAM,UACN,GAAI,EACJ,GAAI,EACJ,YAAc,GAAI,GAAK,EACvB,YAAa,EAAI,EACjB,mBAEA,GAAa,EAAO,IACpB,EAAS,EAAO,EAAI,EAAG,EAAQ,KAAM,GAEzC,EAAO,EACP,EAAY,EAEZ,EAAQ,EAAI,GACZ,EAAS,EAAO,EAAI,EAAG,EAAQ,KAAM,GAG7C,MAAO,GAEX,YAAmB,EAAS,CACxB,MAAO,CACH,gBAAiB,EAAQ,gBACzB,eAAgB,EAAQ,eACxB,WAAY,EAAQ,WACpB,iBAAkB,EAAQ,iBAC1B,gBAAiB,EAAQ,gBACzB,YAAa,EAAQ,YACrB,YAAa,EAAQ,aAG7B,YAAsB,EAAO,EAAW,CACpC,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAQ,GACR,EAAW,SAAS,EAAK,EAAO,CAClC,MAAK,IAAoB,GAGpB,GAAM,SAAS,IAChB,EAAM,KAAK,GAER,EAAM,QAAQ,IALV,GAOf,MAAO,MAAK,UAAU,EAAO,KAAc,KAAK,UAAU,EAAW,GClrFzE;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,QAAe,CACX,aAAa,CACT,KAAK,SAAW,KAChB,KAAK,QAAU,GAAI,KACnB,KAAK,SAAW,GAChB,KAAK,UAAY,OAExB,QAAQ,EAAO,EAAO,EAAM,EAAM,CAC3B,KAAM,GAAY,EAAM,UAAU,GAC5B,EAAW,EAAM,SACvB,EAAU,QAAS,GAAK,EAAG,CACnB,QACA,QAAS,EAAM,QACf,WACA,YAAa,KAAK,IAAI,EAAO,EAAM,MAAO,MAGzD,UAAW,CACA,KAAK,UAGT,MAAK,SAAW,GAChB,KAAK,SAAW,GAAiB,KAAK,OAAQ,IAAI,CAC9C,KAAK,UACL,KAAK,SAAW,KACZ,KAAK,UACL,KAAK,cAIpB,QAAQ,EAAO,KAAK,MAAO,CACpB,GAAI,GAAY,EAChB,KAAK,QAAQ,QAAQ,CAAC,EAAO,IAAQ,CACjC,GAAI,CAAC,EAAM,SAAW,CAAC,EAAM,MAAM,OAC/B,OAEJ,KAAM,GAAQ,EAAM,MACpB,GAAI,GAAI,EAAM,OAAS,EACnB,EAAO,GACP,EACJ,KAAM,GAAK,EAAG,EAAE,EACZ,EAAO,EAAM,GACT,EAAK,QACD,GAAK,OAAS,EAAM,UACpB,GAAM,SAAW,EAAK,QAE1B,EAAK,KAAK,GACV,EAAO,IAEP,GAAM,GAAK,EAAM,EAAM,OAAS,GAChC,EAAM,OAGV,GACA,GAAM,OACN,KAAK,QAAQ,EAAO,EAAO,EAAM,aAEhC,EAAM,QACP,GAAM,QAAU,GAChB,KAAK,QAAQ,EAAO,EAAO,EAAM,YACjC,EAAM,QAAU,IAEpB,GAAa,EAAM,SAEvB,KAAK,UAAY,EACb,IAAc,GACd,MAAK,SAAW,IAG3B,UAAU,EAAO,CACV,KAAM,GAAS,KAAK,QACpB,GAAI,GAAQ,EAAO,IAAI,GACvB,MAAK,IACD,GAAQ,CACJ,QAAS,GACT,QAAS,GACT,MAAO,GACP,UAAW,CACP,SAAU,GACV,SAAU,KAGlB,EAAO,IAAI,EAAO,IAEf,EAEd,OAAO,EAAO,EAAO,EAAI,CAClB,KAAK,UAAU,GAAO,UAAU,GAAO,KAAK,GAEnD,IAAI,EAAO,EAAO,CACP,CAAC,GAAS,CAAC,EAAM,QAGrB,KAAK,UAAU,GAAO,MAAM,KAAK,GAAG,GAE3C,IAAI,EAAO,CACJ,MAAO,MAAK,UAAU,GAAO,MAAM,OAAS,EAEnD,MAAM,EAAO,CACN,KAAM,GAAQ,KAAK,QAAQ,IAAI,GAC3B,CAAC,GAGL,GAAM,QAAU,GAChB,EAAM,MAAQ,KAAK,MACnB,EAAM,SAAW,EAAM,MAAM,OAAO,CAAC,EAAK,IAAM,KAAK,IAAI,EAAK,EAAI,WAAY,GAC9E,KAAK,YAET,QAAQ,EAAO,CACX,GAAI,CAAC,KAAK,SACN,MAAO,GAEX,KAAM,GAAQ,KAAK,QAAQ,IAAI,GAC/B,MAAI,GAAC,GAAS,CAAC,EAAM,SAAW,CAAC,EAAM,MAAM,QAKpD,KAAK,EAAO,CACL,KAAM,GAAQ,KAAK,QAAQ,IAAI,GAC/B,GAAI,CAAC,GAAS,CAAC,EAAM,MAAM,OACvB,OAEJ,KAAM,GAAQ,EAAM,MACpB,GAAI,GAAI,EAAM,OAAS,EACvB,KAAM,GAAK,EAAG,EAAE,EACZ,EAAM,GAAG,SAEb,EAAM,MAAQ,GACd,KAAK,QAAQ,EAAO,EAAO,KAAK,MAAO,YAE9C,OAAO,EAAO,CACP,MAAO,MAAK,QAAQ,OAAO,IAGnC,GAAI,IAA2B,GAAI,IAEnC,KAAM,IAAc,cACd,GAAgB,CAClB,QAAS,EAAM,EAAI,EAAQ,CACvB,MAAO,GAAS,GAAM,EAAK,GAElC,MAAO,EAAM,EAAI,EAAQ,CAClB,KAAM,GAAK,GAAM,GAAQ,IACnB,EAAK,EAAG,OAAS,GAAM,GAAM,IACnC,MAAO,IAAM,EAAG,MAAQ,EAAG,IAAI,EAAI,GAAQ,YAAc,GAE7D,OAAQ,EAAM,EAAI,EAAQ,CACtB,MAAO,GAAQ,GAAK,GAAQ,IAGpC,QAAgB,CACZ,YAAY,EAAK,EAAQ,EAAM,EAAG,CAC9B,KAAM,GAAe,EAAO,GAC5B,EAAK,GAAQ,CACT,EAAI,GACJ,EACA,EACA,EAAI,OAER,KAAM,GAAO,GAAQ,CACjB,EAAI,KACJ,EACA,IAEJ,KAAK,QAAU,GACf,KAAK,IAAM,EAAI,IAAM,GAAc,EAAI,MAAQ,MAAO,IACtD,KAAK,QAAU,GAAQ,EAAI,SAAW,GAAQ,OAC9C,KAAK,OAAS,KAAK,MAAM,KAAK,MAAS,GAAI,OAAS,IACpD,KAAK,UAAY,KAAK,OAAS,KAAK,MAAM,EAAI,UAC9C,KAAK,MAAQ,CAAC,CAAC,EAAI,KACnB,KAAK,QAAU,EACf,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,IAAM,EACX,KAAK,UAAY,OAErB,QAAS,CACL,MAAO,MAAK,QAEhB,OAAO,EAAK,EAAI,EAAM,CAClB,GAAI,KAAK,QAAS,CACd,KAAK,QAAQ,IACb,KAAM,GAAe,KAAK,QAAQ,KAAK,OACjC,EAAU,EAAO,KAAK,OACtB,EAAS,KAAK,UAAY,EAChC,KAAK,OAAS,EACd,KAAK,UAAY,KAAK,MAAM,KAAK,IAAI,EAAQ,EAAI,WACjD,KAAK,QAAU,EACf,KAAK,MAAQ,CAAC,CAAC,EAAI,KACnB,KAAK,IAAM,GAAQ,CACf,EAAI,GACJ,EACA,EACA,EAAI,OAER,KAAK,MAAQ,GAAQ,CACjB,EAAI,KACJ,EACA,KAIZ,QAAS,CACD,KAAK,SACL,MAAK,KAAK,KAAK,OACf,KAAK,QAAU,GACf,KAAK,QAAQ,KAGrB,KAAK,EAAM,CACP,KAAM,GAAU,EAAO,KAAK,OACtB,EAAW,KAAK,UAChB,EAAO,KAAK,MACZ,EAAO,KAAK,MACZ,EAAO,KAAK,MACZ,EAAK,KAAK,IAChB,GAAI,GAEJ,GADA,KAAK,QAAU,IAAS,GAAO,IAAQ,EAAU,GAC7C,CAAC,KAAK,QAAS,CACf,KAAK,QAAQ,GAAQ,EACrB,KAAK,QAAQ,IACb,OAEJ,GAAI,EAAU,EAAG,CACb,KAAK,QAAQ,GAAQ,EACrB,OAEJ,EAAS,EAAU,EAAW,EAC9B,EAAS,GAAQ,EAAS,EAAI,EAAI,EAAS,EAC3C,EAAS,KAAK,QAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,KAC9C,KAAK,QAAQ,GAAQ,KAAK,IAAI,EAAM,EAAI,GAE5C,MAAO,CACH,KAAM,GAAW,KAAK,WAAc,MAAK,UAAY,IACrD,MAAO,IAAI,SAAQ,CAAC,EAAK,IAAM,CAC3B,EAAS,KAAK,CACV,MACA,UAIZ,QAAQ,EAAU,CACd,KAAM,GAAS,EAAW,MAAQ,MAC5B,EAAW,KAAK,WAAa,GACnC,OAAQ,GAAI,EAAG,EAAI,EAAS,OAAQ,IAChC,EAAS,GAAG,MAKxB,QAAiB,CACb,YAAY,EAAO,EAAO,CACtB,KAAK,OAAS,EACd,KAAK,YAAc,GAAI,KACvB,KAAK,UAAU,GAEnB,UAAU,EAAQ,CACd,GAAI,CAAC,GAAS,GACV,OAEJ,KAAM,GAAmB,OAAO,KAAK,cAC/B,EAAgB,KAAK,YAC3B,OAAO,oBAAoB,GAAQ,QAAS,GAAM,CAC9C,KAAM,GAAM,EAAO,GACnB,GAAI,CAAC,GAAS,GACV,OAEJ,KAAM,GAAW,GACjB,SAAW,KAAU,GACjB,EAAS,GAAU,EAAI,GAE1B,IAAQ,EAAI,aAAe,EAAI,YAAc,CAC1C,IACD,QAAS,GAAO,CACX,KAAS,GAAO,CAAC,EAAc,IAAI,KACnC,EAAc,IAAI,EAAM,OAK3C,gBAAgB,EAAQ,EAAQ,CACzB,KAAM,GAAa,EAAO,QACpB,EAAU,GAAqB,EAAQ,GAC7C,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAa,KAAK,kBAAkB,EAAS,GACnD,MAAI,GAAW,SACX,GAAS,EAAO,QAAQ,YAAa,GAAY,KAAK,IAAI,CACtD,EAAO,QAAU,GAClB,IAAI,IAGJ,EAEd,kBAAkB,EAAQ,EAAQ,CAC3B,KAAM,GAAgB,KAAK,YACrB,EAAa,GACb,EAAU,EAAO,aAAgB,GAAO,YAAc,IACtD,EAAQ,OAAO,KAAK,GACpB,EAAO,KAAK,MAClB,GAAI,GACJ,IAAI,EAAI,EAAM,OAAS,EAAG,GAAK,EAAG,EAAE,EAAE,CAClC,KAAM,GAAO,EAAM,GACnB,GAAI,EAAK,OAAO,KAAO,IACnB,SAEJ,GAAI,IAAS,UAAW,CACpB,EAAW,KAAK,GAAG,KAAK,gBAAgB,EAAQ,IAChD,SAEJ,KAAM,GAAQ,EAAO,GACrB,GAAI,GAAY,EAAQ,GACxB,KAAM,GAAM,EAAc,IAAI,GAC9B,GAAI,EACA,GAAI,GAAO,EAAU,SAAU,CAC3B,EAAU,OAAO,EAAK,EAAO,GAC7B,aAEA,GAAU,SAGlB,GAAI,CAAC,GAAO,CAAC,EAAI,SAAU,CACvB,EAAO,GAAQ,EACf,SAEJ,EAAQ,GAAQ,EAAY,GAAI,IAAU,EAAK,EAAQ,EAAM,GAC7D,EAAW,KAAK,GAEpB,MAAO,GAEd,OAAO,EAAQ,EAAQ,CAChB,GAAI,KAAK,YAAY,OAAS,EAAG,CAC7B,OAAO,OAAO,EAAQ,GACtB,OAEJ,KAAM,GAAa,KAAK,kBAAkB,EAAQ,GAClD,GAAI,EAAW,OACX,UAAS,IAAI,KAAK,OAAQ,GACnB,IAInB,YAAkB,EAAY,EAAY,CACtC,KAAM,GAAU,GACV,EAAO,OAAO,KAAK,GACzB,OAAQ,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAI,CAChC,KAAM,GAAO,EAAW,EAAK,IACzB,GAAQ,EAAK,UACb,EAAQ,KAAK,EAAK,QAG1B,MAAO,SAAQ,IAAI,GAEvB,YAA8B,EAAQ,EAAY,CAC9C,GAAI,CAAC,EACD,OAEJ,GAAI,GAAU,EAAO,QACrB,GAAI,CAAC,EAAS,CACV,EAAO,QAAU,EACjB,OAEJ,MAAI,GAAQ,SACR,GAAO,QAAU,EAAU,OAAO,OAAO,GAAI,EAAS,CAClD,QAAS,GACT,YAAa,MAGd,EAGX,YAAmB,EAAO,EAAiB,CACvC,KAAM,GAAO,GAAS,EAAM,SAAW,GACjC,EAAU,EAAK,QACf,EAAM,EAAK,MAAQ,OAAY,EAAkB,EACjD,EAAM,EAAK,MAAQ,OAAY,EAAkB,EACvD,MAAO,CACH,MAAO,EAAU,EAAM,EACvB,IAAK,EAAU,EAAM,GAG7B,YAAqB,EAAQ,EAAQ,EAAiB,CAClD,GAAI,IAAoB,GACpB,MAAO,GAEX,KAAM,GAAI,GAAU,EAAQ,GACtB,EAAI,GAAU,EAAQ,GAC5B,MAAO,CACH,IAAK,EAAE,IACP,MAAO,EAAE,IACT,OAAQ,EAAE,MACV,KAAM,EAAE,OAGhB,YAAgB,EAAO,CACnB,GAAI,GAAG,EAAG,EAAG,EACb,MAAI,IAAS,GACT,GAAI,EAAM,IACV,EAAI,EAAM,MACV,EAAI,EAAM,OACV,EAAI,EAAM,MAEV,EAAI,EAAI,EAAI,EAAI,EAEb,CACH,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,EACN,SAAU,IAAU,IAG5B,YAAiC,EAAO,EAAe,CACnD,KAAM,GAAO,GACP,EAAW,EAAM,uBAAuB,GAC9C,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAS,OAAQ,EAAI,EAAM,EAAE,EAC3C,EAAK,KAAK,EAAS,GAAG,OAE1B,MAAO,GAEX,YAAoB,EAAO,EAAO,EAAS,EAAU,GAAI,CACrD,KAAM,GAAO,EAAM,KACb,EAAa,EAAQ,OAAS,SACpC,GAAI,GAAG,EAAM,EAAc,EAC3B,GAAI,IAAU,KAGd,KAAI,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAE,EAAE,CAEzC,GADA,EAAe,CAAC,EAAK,GACjB,IAAiB,EAAS,CAC1B,GAAI,EAAQ,IACR,SAEJ,MAEJ,EAAa,EAAM,OAAO,GACtB,GAAe,IAAgB,IAAc,IAAU,GAAK,GAAK,KAAW,GAAK,KACjF,IAAS,GAGjB,MAAO,IAEX,YAAkC,EAAM,CACpC,KAAM,GAAO,OAAO,KAAK,GACnB,EAAQ,GAAI,OAAM,EAAK,QAC7B,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAE,EACvC,EAAM,EAAK,GACX,EAAM,GAAK,CACP,EAAG,EACH,EAAG,EAAK,IAGhB,MAAO,GAEX,YAAmB,EAAO,EAAM,CAC5B,KAAM,GAAU,GAAS,EAAM,QAAQ,QACvC,MAAO,IAAW,IAAY,QAAa,EAAK,QAAU,OAE9D,YAAqB,EAAY,EAAY,EAAM,CAC/C,MAAO,GAAG,EAAW,MAAM,EAAW,MAAM,EAAK,OAAS,EAAK,OAEnE,YAAuB,EAAO,CAC1B,KAAM,CAAE,MAAM,MAAM,aAAa,cAAgB,EAAM,gBACvD,MAAO,CACH,IAAK,EAAa,EAAM,OAAO,kBAC/B,IAAK,EAAa,EAAM,OAAO,mBAGvC,YAA0B,EAAQ,EAAU,EAAY,CACpD,KAAM,GAAW,EAAO,IAAc,GAAO,GAAY,IACzD,MAAO,GAAS,IAAgB,GAAS,GAAc,IAE3D,YAA6B,EAAO,EAAQ,EAAU,EAAM,CACxD,SAAW,KAAQ,GAAO,wBAAwB,GAAM,UAAU,CAC9D,KAAM,GAAQ,EAAM,EAAK,OACzB,GAAI,GAAY,EAAQ,GAAK,CAAC,GAAY,EAAQ,EAC9C,MAAO,GAAK,MAGpB,MAAO,MAEX,YAAsB,EAAY,EAAQ,CACtC,KAAM,CAAE,QAAQ,YAAa,GAAU,EACjC,EAAS,EAAM,SAAY,GAAM,QAAU,IAC3C,CAAE,SAAS,SAAS,MAAO,GAAkB,EAC7C,EAAQ,EAAO,KACf,EAAQ,EAAO,KACf,EAAM,GAAY,EAAQ,EAAQ,GAClC,EAAO,EAAO,OACpB,GAAI,GACJ,OAAQ,GAAI,EAAG,EAAI,EAAM,EAAE,EAAE,CACzB,KAAM,GAAO,EAAO,GACd,EAAG,GAAQ,GAAS,GAAQ,GAAW,EACvC,EAAa,EAAK,SAAY,GAAK,QAAU,IACnD,EAAQ,EAAW,GAAS,GAAiB,EAAQ,EAAK,GAC1D,EAAM,GAAgB,EACtB,EAAM,KAAO,GAAoB,EAAO,EAAQ,GAAM,EAAK,MAC3D,EAAM,QAAU,GAAoB,EAAO,EAAQ,GAAO,EAAK,MAC/D,KAAM,IAAe,EAAM,eAAkB,GAAM,cAAgB,IACnE,GAAa,GAAgB,GAGrC,YAAyB,EAAO,EAAM,CAClC,KAAM,GAAS,EAAM,OACrB,MAAO,QAAO,KAAK,GAAQ,OAAQ,GAAM,EAAO,GAAK,OAAS,GAAM,QAExE,YAA8B,EAAQ,EAAO,CACzC,MAAO,IAAc,EAAQ,CACzB,OAAQ,GACR,QAAS,OACT,aAAc,EACd,QACA,KAAM,UACN,KAAM,YAGd,YAA2B,EAAQ,EAAO,EAAS,CAC/C,MAAO,IAAc,EAAQ,CACzB,OAAQ,GACR,UAAW,EACX,OAAQ,OACR,IAAK,OACL,UACA,QACA,KAAM,UACN,KAAM,SAGd,YAAqB,EAAM,EAAO,CAC9B,KAAM,GAAe,EAAK,WAAW,MAC/B,EAAO,EAAK,QAAU,EAAK,OAAO,KACxC,GAAI,EAAC,EAGL,GAAQ,GAAS,EAAK,QACtB,SAAW,KAAU,GAAM,CACvB,KAAM,GAAS,EAAO,QACtB,GAAI,CAAC,GAAU,EAAO,KAAU,QAAa,EAAO,GAAM,KAAkB,OACxE,OAEJ,MAAO,GAAO,GAAM,GAChB,EAAO,GAAM,gBAAkB,QAAa,EAAO,GAAM,cAAc,KAAkB,QACzF,MAAO,GAAO,GAAM,cAAc,KAI9C,KAAM,IAAsB,GAAO,IAAS,SAAW,IAAS,OAC1D,GAAmB,CAAC,EAAQ,IAAS,EAAS,EAAS,OAAO,OAAO,GAAI,GACzE,GAAc,CAAC,EAAU,EAAM,IAAQ,GAAY,CAAC,EAAK,QAAU,EAAK,UAAY,CAClF,KAAM,GAAwB,EAAO,IACrC,OAAQ,MAEhB,QAAwB,OAChB,UAAW,SACX,oBAAqB,WACrB,iBAAkB,KACzB,YAAY,EAAO,EAAa,CACzB,KAAK,MAAQ,EACb,KAAK,KAAO,EAAM,IAClB,KAAK,MAAQ,EACb,KAAK,gBAAkB,GACvB,KAAK,YAAc,KAAK,UACxB,KAAK,MAAQ,KAAK,YAAY,KAC9B,KAAK,QAAU,OACd,KAAK,SAAW,GACjB,KAAK,MAAQ,OACb,KAAK,YAAc,OACnB,KAAK,eAAiB,OACtB,KAAK,WAAa,OAClB,KAAK,WAAa,OAClB,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,KAAK,SAAW,OAChB,KAAK,UAAY,GACjB,KAAK,mBAAqB,WAAW,mBACrC,KAAK,gBAAkB,WAAW,gBAClC,KAAK,aAET,YAAa,CACT,KAAM,GAAO,KAAK,YAClB,KAAK,YACL,KAAK,aACL,EAAK,SAAW,GAAU,EAAK,OAAQ,GACvC,KAAK,cACD,KAAK,QAAQ,MAAQ,CAAC,KAAK,MAAM,gBAAgB,WACjD,QAAQ,KAAK,sKAGrB,YAAY,EAAc,CAClB,KAAK,QAAU,GACf,GAAY,KAAK,aAErB,KAAK,MAAQ,EAEjB,YAAa,CACT,KAAM,GAAQ,KAAK,MACb,EAAO,KAAK,YACZ,EAAU,KAAK,aACf,EAAW,CAAC,EAAM,EAAG,EAAG,IAAI,IAAS,IAAM,EAAI,IAAS,IAAM,EAAI,EAClE,EAAM,EAAK,QAAU,GAAe,EAAQ,QAAS,GAAgB,EAAO,MAC5E,EAAM,EAAK,QAAU,GAAe,EAAQ,QAAS,GAAgB,EAAO,MAC5E,EAAM,EAAK,QAAU,GAAe,EAAQ,QAAS,GAAgB,EAAO,MAC5E,EAAY,EAAK,UACjB,EAAM,EAAK,QAAU,EAAS,EAAW,EAAK,EAAK,GACnD,EAAM,EAAK,QAAU,EAAS,EAAW,EAAK,EAAK,GACzD,EAAK,OAAS,KAAK,cAAc,GACjC,EAAK,OAAS,KAAK,cAAc,GACjC,EAAK,OAAS,KAAK,cAAc,GACjC,EAAK,OAAS,KAAK,cAAc,GACjC,EAAK,OAAS,KAAK,cAAc,GAErC,YAAa,CACT,MAAO,MAAK,MAAM,KAAK,SAAS,KAAK,OAEzC,SAAU,CACN,MAAO,MAAK,MAAM,eAAe,KAAK,OAE7C,cAAc,EAAS,CAChB,MAAO,MAAK,MAAM,OAAO,GAEhC,eAAe,EAAO,CACf,KAAM,GAAO,KAAK,YAClB,MAAO,KAAU,EAAK,OAAS,EAAK,OAAS,EAAK,OAEtD,OAAQ,CACJ,KAAK,QAAQ,SAEpB,UAAW,CACJ,KAAM,GAAO,KAAK,YACd,KAAK,OACL,GAAoB,KAAK,MAAO,MAEhC,EAAK,UACL,GAAY,GAGvB,YAAa,CACN,KAAM,GAAU,KAAK,aACf,EAAO,EAAQ,MAAS,GAAQ,KAAO,IACvC,EAAQ,KAAK,MACnB,GAAI,GAAS,GACT,KAAK,MAAQ,GAAyB,WAC/B,IAAU,EAAM,CACvB,GAAI,EAAO,CACP,GAAoB,EAAO,MAC3B,KAAM,GAAO,KAAK,YAClB,GAAY,GACZ,EAAK,QAAU,GAEf,GAAQ,OAAO,aAAa,IAC5B,GAAkB,EAAM,MAE5B,KAAK,UAAY,GACjB,KAAK,MAAQ,GAGrB,aAAc,CACV,KAAM,GAAO,KAAK,YAClB,KAAK,aACD,KAAK,oBACL,GAAK,QAAU,GAAI,MAAK,oBAGhC,sBAAsB,EAAkB,CACpC,KAAM,GAAO,KAAK,YACZ,EAAU,KAAK,aACrB,GAAI,GAAe,GACnB,KAAK,aACL,KAAM,GAAa,EAAK,SACxB,EAAK,SAAW,GAAU,EAAK,OAAQ,GACnC,EAAK,QAAU,EAAQ,OACvB,GAAe,GACf,GAAY,GACZ,EAAK,MAAQ,EAAQ,OAEzB,KAAK,gBAAgB,GACjB,IAAgB,IAAe,EAAK,WACpC,GAAa,KAAM,EAAK,SAGnC,WAAY,CACL,KAAM,GAAS,KAAK,MAAM,OACpB,EAAY,EAAO,iBAAiB,KAAK,OACzC,EAAS,EAAO,gBAAgB,KAAK,aAAc,EAAW,IACpE,KAAK,QAAU,EAAO,eAAe,EAAQ,KAAK,cAClD,KAAK,SAAW,KAAK,QAAQ,QAC7B,KAAK,gBAAkB,GAE9B,MAAM,EAAO,EAAO,CACb,KAAM,CAAE,YAAa,EAAO,MAAO,GAAU,KACvC,CAAE,SAAS,YAAc,EACzB,EAAQ,EAAO,KACrB,GAAI,GAAS,IAAU,GAAK,IAAU,EAAK,OAAS,GAAO,EAAK,QAC5D,EAAO,EAAQ,GAAK,EAAK,QAAQ,EAAQ,GACzC,EAAG,EAAK,EACZ,GAAI,KAAK,WAAa,GAClB,EAAK,QAAU,EACf,EAAK,QAAU,GACf,EAAS,MACN,CACC,GAAQ,EAAK,IACb,EAAS,KAAK,eAAe,EAAM,EAAM,EAAO,GACzC,GAAS,EAAK,IACrB,EAAS,KAAK,gBAAgB,EAAM,EAAM,EAAO,GAEjD,EAAS,KAAK,mBAAmB,EAAM,EAAM,EAAO,GAExD,KAAM,GAA6B,IAAI,EAAI,KAAW,MAAQ,GAAQ,EAAI,GAAS,EAAK,GACxF,IAAI,EAAI,EAAG,EAAI,EAAO,EAAE,EACpB,EAAK,QAAQ,EAAI,GAAS,EAAM,EAAO,GACnC,GACI,MACA,GAAS,IAEb,EAAO,GAGf,EAAK,QAAU,EAEf,GACA,GAAa,KAAM,GAG9B,mBAAmB,EAAM,EAAM,EAAO,EAAO,CACtC,KAAM,CAAE,SAAS,UAAY,EACvB,EAAQ,EAAO,KACf,EAAQ,EAAO,KACf,EAAS,EAAO,YAChB,EAAc,IAAW,EACzB,EAAS,GAAI,OAAM,GACzB,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAO,EAAI,EAAM,EAAE,EACjC,EAAQ,EAAI,EACZ,EAAO,GAAK,EACP,GAAQ,GAAe,EAAO,MAAM,EAAO,GAAQ,IACnD,GAAQ,EAAO,MAAM,EAAK,GAAQ,IAG3C,MAAO,GAEd,eAAe,EAAM,EAAM,EAAO,EAAO,CAClC,KAAM,CAAE,SAAS,UAAY,EACvB,EAAS,GAAI,OAAM,GACzB,GAAI,GAAG,EAAM,EAAO,EACpB,IAAI,EAAI,EAAG,EAAO,EAAO,EAAI,EAAM,EAAE,EACjC,EAAQ,EAAI,EACZ,EAAO,EAAK,GACZ,EAAO,GAAK,CACR,EAAG,EAAO,MAAM,EAAK,GAAI,GACzB,EAAG,EAAO,MAAM,EAAK,GAAI,IAGjC,MAAO,GAEd,gBAAgB,EAAM,EAAM,EAAO,EAAO,CACnC,KAAM,CAAE,SAAS,UAAY,EACvB,CAAE,WAAU,IAAM,WAAU,KAAS,KAAK,SAC1C,EAAS,GAAI,OAAM,GACzB,GAAI,GAAG,EAAM,EAAO,EACpB,IAAI,EAAI,EAAG,EAAO,EAAO,EAAI,EAAM,EAAE,EACjC,EAAQ,EAAI,EACZ,EAAO,EAAK,GACZ,EAAO,GAAK,CACR,EAAG,EAAO,MAAM,GAAiB,EAAM,GAAW,GAClD,EAAG,EAAO,MAAM,GAAiB,EAAM,GAAW,IAG1D,MAAO,GAEd,UAAU,EAAO,CACV,MAAO,MAAK,YAAY,QAAQ,GAEvC,eAAe,EAAO,CACf,MAAO,MAAK,YAAY,KAAK,GAEpC,WAAW,EAAO,EAAQ,EAAM,CACzB,KAAM,GAAQ,KAAK,MACb,EAAO,KAAK,YACZ,EAAQ,EAAO,EAAM,MACrB,EAAQ,CACV,KAAM,GAAwB,EAAO,IACrC,OAAQ,EAAO,QAAQ,EAAM,MAAM,eAEvC,MAAO,IAAW,EAAO,EAAO,EAAK,MAAO,CACxC,SAGX,sBAAsB,EAAO,EAAO,EAAQ,EAAO,CAC5C,KAAM,GAAc,EAAO,EAAM,MACjC,GAAI,GAAQ,IAAgB,KAAO,IAAM,EACzC,KAAM,GAAS,GAAS,EAAO,QAAQ,EAAM,MACzC,GAAS,GACT,GAAM,OAAS,EACf,EAAQ,GAAW,EAAO,EAAa,KAAK,YAAY,QAE5D,EAAM,IAAM,KAAK,IAAI,EAAM,IAAK,GAChC,EAAM,IAAM,KAAK,IAAI,EAAM,IAAK,GAEvC,UAAU,EAAO,EAAU,CACpB,KAAM,GAAO,KAAK,YACZ,EAAU,EAAK,QACf,EAAS,EAAK,SAAW,IAAU,EAAK,OACxC,EAAO,EAAQ,OACf,EAAa,KAAK,eAAe,GACjC,EAAQ,GAAY,EAAU,EAAM,KAAK,OACzC,EAAQ,CACV,IAAK,OAAO,kBACZ,IAAK,OAAO,mBAEV,CAAE,IAAK,EAAW,IAAK,GAAc,GAAc,GACzD,GAAI,GAAG,EACP,YAAiB,CACb,EAAS,EAAQ,GACjB,KAAM,GAAa,EAAO,EAAW,MACrC,MAAO,CAAC,GAAe,EAAO,EAAM,QAAU,EAAW,GAAc,EAAW,EAEtF,IAAI,EAAI,EAAG,EAAI,GACP,QAGJ,MAAK,sBAAsB,EAAO,EAAO,EAAQ,GAC7C,IALa,EAAE,EACnB,CAQJ,GAAI,GACA,IAAI,EAAI,EAAO,EAAG,GAAK,EAAG,EAAE,EACxB,GAAI,KAGJ,MAAK,sBAAsB,EAAO,EAAO,EAAQ,GACjD,OAGR,MAAO,GAEX,mBAAmB,EAAO,CACtB,KAAM,GAAS,KAAK,YAAY,QAC1B,EAAS,GACf,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EACzC,EAAQ,EAAO,GAAG,EAAM,MACpB,GAAe,IACf,EAAO,KAAK,GAGpB,MAAO,GAEd,gBAAiB,CACV,MAAO,GAEd,iBAAiB,EAAO,CACjB,KAAM,GAAO,KAAK,YACZ,EAAS,EAAK,OACd,EAAS,EAAK,OACd,EAAS,KAAK,UAAU,GAC9B,MAAO,CACH,MAAO,EAAS,GAAK,EAAO,iBAAiB,EAAO,EAAO,OAAS,GACpE,MAAO,EAAS,GAAK,EAAO,iBAAiB,EAAO,EAAO,OAAS,IAG/E,QAAQ,EAAM,CACP,KAAM,GAAO,KAAK,YAClB,KAAK,OAAO,GAAQ,WACpB,EAAK,MAAQ,GAAO,GAAe,KAAK,QAAQ,KAAM,GAAY,EAAK,OAAQ,EAAK,OAAQ,KAAK,oBAExG,OAAO,EAAM,EACV,MAAO,CACH,KAAM,GAAM,KAAK,KACX,EAAQ,KAAK,MACb,EAAO,KAAK,YACZ,EAAW,EAAK,MAAQ,GACxB,EAAO,EAAM,UACb,EAAS,GACT,EAAQ,KAAK,YAAc,EAC3B,EAAQ,KAAK,YAAc,EAAS,OAAS,EAC7C,EAA0B,KAAK,QAAQ,wBAC7C,GAAI,GAIJ,IAHI,EAAK,SACL,EAAK,QAAQ,KAAK,EAAK,EAAM,EAAO,GAEpC,EAAI,EAAO,EAAI,EAAQ,EAAO,EAAE,EAAE,CAClC,KAAM,GAAU,EAAS,GACrB,EAAQ,QAGZ,CAAI,EAAQ,QAAU,EAClB,EAAO,KAAK,GAEZ,EAAQ,KAAK,EAAK,IAG1B,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAC5B,EAAO,GAAG,KAAK,EAAK,GAG/B,SAAS,EAAO,EAAQ,CACjB,KAAM,GAAO,EAAS,SAAW,UACjC,MAAO,KAAU,QAAa,KAAK,YAAY,QAAU,KAAK,6BAA6B,GAAQ,KAAK,0BAA0B,GAAS,EAAG,GAErJ,WAAW,EAAO,EAAQ,EAAM,CACzB,KAAM,GAAU,KAAK,aACrB,GAAI,GACJ,GAAI,GAAS,GAAK,EAAQ,KAAK,YAAY,KAAK,OAAQ,CACpD,KAAM,GAAU,KAAK,YAAY,KAAK,GACtC,EAAU,EAAQ,UAAa,GAAQ,SAAW,GAAkB,KAAK,aAAc,EAAO,IAC9F,EAAQ,OAAS,KAAK,UAAU,GAChC,EAAQ,IAAM,EAAQ,KAAK,GAC3B,EAAQ,MAAQ,EAAQ,UAAY,MAEpC,GAAU,KAAK,UAAa,MAAK,SAAW,GAAqB,KAAK,MAAM,aAAc,KAAK,QAC/F,EAAQ,QAAU,EAClB,EAAQ,MAAQ,EAAQ,aAAe,KAAK,MAEhD,SAAQ,OAAS,CAAC,CAAC,EACnB,EAAQ,KAAO,EACR,EAEd,6BAA6B,EAAM,CAC5B,MAAO,MAAK,uBAAuB,KAAK,mBAAmB,GAAI,GAEtE,0BAA0B,EAAO,EAAM,CAChC,MAAO,MAAK,uBAAuB,KAAK,gBAAgB,GAAI,EAAM,GAEzE,uBAAuB,EAAa,EAAO,UAAW,EAAO,CACtD,KAAM,GAAS,IAAS,SAClB,EAAQ,KAAK,gBACb,EAAW,EAAc,IAAM,EAC/B,EAAS,EAAM,GACf,EAAU,KAAK,qBAAuB,GAAQ,GACpD,GAAI,EACA,MAAO,IAAiB,EAAQ,GAEpC,KAAM,GAAS,KAAK,MAAM,OACpB,EAAY,EAAO,wBAAwB,KAAK,MAAO,GACvD,EAAW,EAAS,CACtB,GAAG,SACH,QACA,EACA,IACA,CACA,EACA,IAEE,EAAS,EAAO,gBAAgB,KAAK,aAAc,GACnD,EAAQ,OAAO,KAAK,YAAkB,IACtC,EAAU,IAAI,KAAK,WAAW,EAAO,EAAQ,GAC7C,EAAS,EAAO,oBAAoB,EAAQ,EAAO,EAAS,GAClE,MAAI,GAAO,SACP,GAAO,QAAU,EACjB,EAAM,GAAY,OAAO,OAAO,GAAiB,EAAQ,KAEtD,EAEd,mBAAmB,EAAO,EAAY,EAAQ,CACvC,KAAM,GAAQ,KAAK,MACb,EAAQ,KAAK,gBACb,EAAW,aAAa,IACxB,EAAS,EAAM,GACrB,GAAI,EACA,MAAO,GAEX,GAAI,GACJ,GAAI,EAAM,QAAQ,YAAc,GAAO,CACnC,KAAM,GAAS,KAAK,MAAM,OACpB,EAAY,EAAO,0BAA0B,KAAK,MAAO,GACzD,EAAS,EAAO,gBAAgB,KAAK,aAAc,GACzD,EAAU,EAAO,eAAe,EAAQ,KAAK,WAAW,EAAO,EAAQ,IAE3E,KAAM,GAAa,GAAI,IAAW,EAAO,GAAW,EAAQ,YAC5D,MAAI,IAAW,EAAQ,YACnB,GAAM,GAAY,OAAO,OAAO,IAE7B,EAEd,iBAAiB,EAAS,CACnB,GAAI,EAAC,EAAQ,QAGb,MAAO,MAAK,gBAAmB,MAAK,eAAiB,OAAO,OAAO,GAAI,IAE9E,eAAe,EAAM,EAAe,CAC7B,MAAO,CAAC,GAAiB,GAAmB,IAAS,KAAK,MAAM,oBAEvE,kBAAkB,EAAO,EAAM,CACxB,KAAM,GAAY,KAAK,0BAA0B,EAAO,GAClD,EAA0B,KAAK,eAC/B,EAAgB,KAAK,iBAAiB,GACtC,EAAiB,KAAK,eAAe,EAAM,IAAkB,IAAkB,EACrF,YAAK,oBAAoB,EAAe,EAAM,GACvC,CACH,gBACA,kBAGX,cAAc,EAAS,EAAO,EAAY,EAAM,CACrC,GAAmB,GACnB,OAAO,OAAO,EAAS,GAEvB,KAAK,mBAAmB,EAAO,GAAM,OAAO,EAAS,GAGhE,oBAAoB,EAAe,EAAM,EAAY,CAC1C,GAAiB,CAAC,GAAmB,IACrC,KAAK,mBAAmB,OAAW,GAAM,OAAO,EAAe,GAG1E,UAAU,EAAS,EAAO,EAAM,EAAQ,CACjC,EAAQ,OAAS,EACjB,KAAM,GAAU,KAAK,SAAS,EAAO,GACrC,KAAK,mBAAmB,EAAO,EAAM,GAAQ,OAAO,EAAS,CACzD,QAAS,CAAC,GAAU,KAAK,iBAAiB,IAAY,IAG9D,iBAAiB,EAAS,EAAc,EAAO,CAC3C,KAAK,UAAU,EAAS,EAAO,SAAU,IAE7C,cAAc,EAAS,EAAc,EAAO,CACxC,KAAK,UAAU,EAAS,EAAO,SAAU,IAEhD,0BAA2B,CACpB,KAAM,GAAU,KAAK,YAAY,QAC7B,GACA,KAAK,UAAU,EAAS,OAAW,SAAU,IAGxD,uBAAwB,CACjB,KAAM,GAAU,KAAK,YAAY,QAC7B,GACA,KAAK,UAAU,EAAS,OAAW,SAAU,IAGxD,gBAAgB,EAAkB,CAC3B,KAAM,GAAO,KAAK,MACZ,EAAW,KAAK,YAAY,KAClC,SAAW,CAAC,EAAQ,EAAM,IAAS,MAAK,UACpC,KAAK,GAAQ,EAAM,GAEvB,KAAK,UAAY,GACjB,KAAM,GAAU,EAAS,OACnB,EAAU,EAAK,OACf,EAAQ,KAAK,IAAI,EAAS,GAC5B,GACA,KAAK,MAAM,EAAG,GAEd,EAAU,EACV,KAAK,gBAAgB,EAAS,EAAU,EAAS,GAC1C,EAAU,GACjB,KAAK,gBAAgB,EAAS,EAAU,GAGnD,gBAAgB,EAAO,EAAO,EAAmB,GAAM,CAChD,KAAM,GAAO,KAAK,YACZ,EAAO,EAAK,KACZ,EAAM,EAAQ,EACpB,GAAI,GACJ,KAAM,GAAQ,GAAM,CAEhB,IADA,EAAI,QAAU,EACV,EAAI,EAAI,OAAS,EAAG,GAAK,EAAK,IAC9B,EAAI,GAAK,EAAI,EAAI,IAIzB,IADA,EAAK,GACD,EAAI,EAAO,EAAI,EAAK,EAAE,EACtB,EAAK,GAAK,GAAI,MAAK,gBAEnB,KAAK,UACL,EAAK,EAAK,SAEd,KAAK,MAAM,EAAO,GACd,GACA,KAAK,eAAe,EAAM,EAAO,EAAO,SAGhD,eAAe,EAAS,EAAO,EAAO,EAAM,EAC/C,gBAAgB,EAAO,EAAO,CACvB,KAAM,GAAO,KAAK,YAClB,GAAI,KAAK,SAAU,CACf,KAAM,GAAU,EAAK,QAAQ,OAAO,EAAO,GACvC,EAAK,UACL,GAAY,EAAM,GAG1B,EAAK,KAAK,OAAO,EAAO,GAE/B,MAAM,EAAM,CACL,GAAI,KAAK,SACL,KAAK,UAAU,KAAK,OACjB,CACH,KAAM,CAAC,EAAQ,EAAM,GAAQ,EAC7B,KAAK,GAAQ,EAAM,GAEvB,KAAK,MAAM,aAAa,KAAK,CACzB,KAAK,MACL,GAAG,IAGX,aAAc,CACV,KAAM,GAAQ,UAAU,OACxB,KAAK,MAAM,CACP,kBACA,KAAK,aAAa,KAAK,OAAS,EAChC,IAGR,YAAa,CACT,KAAK,MAAM,CACP,kBACA,KAAK,YAAY,KAAK,OAAS,EAC/B,IAGR,cAAe,CACX,KAAK,MAAM,CACP,kBACA,EACA,IAGR,cAAc,EAAO,EAAO,CACpB,GACA,KAAK,MAAM,CACP,kBACA,EACA,IAGR,KAAM,GAAW,UAAU,OAAS,EAChC,GACA,KAAK,MAAM,CACP,kBACA,EACA,IAIZ,gBAAiB,CACb,KAAK,MAAM,CACP,kBACA,EACA,UAAU,UAKtB,YAA2B,EAAO,EAAM,CACpC,GAAI,CAAC,EAAM,OAAO,KAAM,CACpB,KAAM,GAAe,EAAM,wBAAwB,GACnD,GAAI,GAAS,GACb,OAAQ,GAAI,EAAG,EAAO,EAAa,OAAQ,EAAI,EAAM,IACjD,EAAS,EAAO,OAAO,EAAa,GAAG,WAAW,mBAAmB,IAEzE,EAAM,OAAO,KAAO,GAAa,EAAO,KAAK,CAAC,EAAG,IAAI,EAAI,IAE7D,MAAO,GAAM,OAAO,KAEvB,YAA8B,EAAM,CACjC,KAAM,GAAQ,EAAK,OACb,EAAS,GAAkB,EAAO,EAAK,MAC7C,GAAI,GAAM,EAAM,QACZ,EAAG,EAAM,EAAM,EACnB,KAAM,GAAmB,IAAI,CACrB,IAAS,OAAS,IAAS,QAG3B,IAAQ,IACR,GAAM,KAAK,IAAI,EAAK,KAAK,IAAI,EAAO,IAAS,IAEjD,EAAO,IAEX,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EACzC,EAAO,EAAM,iBAAiB,EAAO,IACrC,IAGJ,IADA,EAAO,OACH,EAAI,EAAG,EAAO,EAAM,MAAM,OAAQ,EAAI,EAAM,EAAE,EAC9C,EAAO,EAAM,gBAAgB,GAC7B,IAEJ,MAAO,GAEV,YAAkC,EAAO,EAAO,EAAS,EAAY,CAClE,KAAM,GAAY,EAAQ,aAC1B,GAAI,GAAM,EACV,MAAI,IAAc,GACd,GAAO,EAAM,IAAM,EAAQ,mBAC3B,EAAQ,EAAQ,eAEhB,GAAO,EAAY,EACnB,EAAQ,GAEL,CACH,MAAO,EAAO,EACd,QACA,MAAO,EAAM,OAAO,GAAS,EAAO,GAG3C,YAAmC,EAAO,EAAO,EAAS,EAAY,CACnE,KAAM,GAAS,EAAM,OACf,EAAO,EAAO,GACpB,GAAI,GAAO,EAAQ,EAAI,EAAO,EAAQ,GAAK,KACvC,EAAO,EAAQ,EAAO,OAAS,EAAI,EAAO,EAAQ,GAAK,KAC3D,KAAM,GAAU,EAAQ,mBACpB,IAAS,MACT,GAAO,EAAQ,KAAS,KAAO,EAAM,IAAM,EAAM,MAAQ,EAAO,IAEhE,IAAS,MACT,GAAO,EAAO,EAAO,GAEzB,KAAM,GAAQ,EAAQ,GAAO,KAAK,IAAI,EAAM,IAAS,EAAI,EAEzD,MAAO,CACH,MAAO,KAFO,IAAI,EAAO,GAAQ,EAAI,EAEvB,EACd,MAAO,EAAQ,cACf,SAGR,YAAuB,EAAO,EAAM,EAAQ,EAAG,CAC3C,KAAM,GAAa,EAAO,MAAM,EAAM,GAAI,GACpC,EAAW,EAAO,MAAM,EAAM,GAAI,GAClC,EAAM,KAAK,IAAI,EAAY,GAC3B,EAAM,KAAK,IAAI,EAAY,GACjC,GAAI,GAAW,EACX,EAAS,EACT,KAAK,IAAI,GAAO,KAAK,IAAI,IACzB,GAAW,EACX,EAAS,GAEb,EAAK,EAAO,MAAQ,EACpB,EAAK,QAAU,CACX,WACA,SACA,MAAO,EACP,IAAK,EACL,MACA,OAGR,YAAoB,EAAO,EAAM,EAAQ,EAAG,CACxC,MAAI,IAAQ,GACR,GAAc,EAAO,EAAM,EAAQ,GAEnC,EAAK,EAAO,MAAQ,EAAO,MAAM,EAAO,GAErC,EAEX,YAA+B,EAAM,EAAM,EAAO,EAAO,CACrD,KAAM,GAAS,EAAK,OACd,EAAS,EAAK,OACd,EAAS,EAAO,YAChB,EAAc,IAAW,EACzB,EAAS,GACf,GAAI,GAAG,EAAM,EAAM,EACnB,IAAI,EAAI,EAAO,EAAO,EAAQ,EAAO,EAAI,EAAM,EAAE,EAC7C,EAAQ,EAAK,GACb,EAAO,GACP,EAAK,EAAO,MAAQ,GAAe,EAAO,MAAM,EAAO,GAAI,GAC3D,EAAO,KAAK,GAAW,EAAO,EAAM,EAAQ,IAEhD,MAAO,GAEX,YAAoB,EAAQ,CACxB,MAAO,IAAU,EAAO,WAAa,QAAa,EAAO,SAAW,OAExE,YAAiB,EAAM,EAAQ,EAAY,CACvC,MAAI,KAAS,EACF,GAAK,GAER,GAAO,eAAiB,EAAI,IAAO,GAAO,KAAO,EAAa,EAAI,IAE9E,YAAqB,EAAY,CAC7B,GAAI,GAAS,EAAO,EAAK,EAAK,EAC9B,MAAI,GAAW,WACX,GAAU,EAAW,KAAO,EAAW,EACvC,EAAQ,OACR,EAAM,SAEN,GAAU,EAAW,KAAO,EAAW,EACvC,EAAQ,SACR,EAAM,OAEN,EACA,GAAM,MACN,EAAS,SAET,GAAM,QACN,EAAS,OAEN,CACH,QACA,MACA,UACA,MACA,UAGR,YAA0B,EAAY,EAAS,EAAO,EAAO,CACzD,GAAI,GAAO,EAAQ,cACnB,KAAM,GAAM,GACZ,GAAI,CAAC,EAAM,CACP,EAAW,cAAgB,EAC3B,OAEJ,GAAI,IAAS,GAAM,CACf,EAAW,cAAgB,CACvB,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,IAEV,OAEJ,KAAM,CAAE,QAAQ,MAAM,UAAU,MAAM,UAAY,GAAY,GAC1D,IAAS,UAAY,GACrB,GAAW,mBAAqB,GAC3B,GAAM,MAAQ,KAAO,EACtB,EAAO,EACC,GAAM,SAAW,KAAO,EAChC,EAAO,EAEP,GAAI,GAAU,EAAQ,EAAO,EAAK,IAAY,GAC9C,EAAO,IAGf,EAAI,GAAU,EAAM,EAAO,EAAK,IAAY,GAC5C,EAAW,cAAgB,EAE/B,YAAmB,EAAM,EAAG,EAAG,EAAS,CACpC,MAAI,GACA,GAAO,GAAK,EAAM,EAAG,GACrB,EAAO,GAAS,EAAM,EAAG,IAEzB,EAAO,GAAS,EAAM,EAAG,GAEtB,EAEX,YAAc,EAAM,EAAI,EAAI,CACxB,MAAO,KAAS,EAAK,EAAK,IAAS,EAAK,EAAK,EAEjD,YAAkB,EAAG,EAAO,EAAK,CAC7B,MAAO,KAAM,QAAU,EAAQ,IAAM,MAAQ,EAAM,EAEvD,YAA0B,EAAY,CAAE,iBAAkB,EAAO,CAC7D,EAAW,cAAgB,IAAkB,OAAS,IAAU,EAAI,IAAO,EAAI,EAEnF,gBAA4B,GAAkB,OACnC,IAAK,YACR,UAAW,CACX,mBAAoB,GACpB,gBAAiB,MACjB,mBAAoB,GACpB,cAAe,GACf,QAAS,GACT,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,OACA,QACA,mBAKZ,WAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,WACN,OAAQ,GACR,KAAM,CACF,OAAQ,KAGhB,QAAS,CACL,KAAM,SACN,YAAa,MAI5B,mBAAmB,EAAM,EAAM,EAAO,EAAO,CACtC,MAAO,IAAsB,EAAM,EAAM,EAAO,GAEvD,eAAe,EAAM,EAAM,EAAO,EAAO,CAClC,MAAO,IAAsB,EAAM,EAAM,EAAO,GAEvD,gBAAgB,EAAM,EAAM,EAAO,EAAO,CACnC,KAAM,CAAE,SAAS,UAAY,EACvB,CAAE,WAAU,IAAM,WAAU,KAAS,KAAK,SAC1C,EAAW,EAAO,OAAS,IAAM,EAAW,EAC5C,EAAW,EAAO,OAAS,IAAM,EAAW,EAC5C,EAAS,GACf,GAAI,GAAG,EAAM,EAAM,EACnB,IAAI,EAAI,EAAO,EAAO,EAAQ,EAAO,EAAI,EAAM,EAAE,EAC7C,EAAM,EAAK,GACX,EAAO,GACP,EAAK,EAAO,MAAQ,EAAO,MAAM,GAAiB,EAAK,GAAW,GAClE,EAAO,KAAK,GAAW,GAAiB,EAAK,GAAW,EAAM,EAAQ,IAE1E,MAAO,GAEd,sBAAsB,EAAO,EAAO,EAAQ,EAAO,CAC5C,MAAM,sBAAsB,EAAO,EAAO,EAAQ,GAClD,KAAM,GAAS,EAAO,QAClB,GAAU,IAAU,KAAK,YAAY,QACrC,GAAM,IAAM,KAAK,IAAI,EAAM,IAAK,EAAO,KACvC,EAAM,IAAM,KAAK,IAAI,EAAM,IAAK,EAAO,MAGlD,gBAAiB,CACV,MAAO,GAEd,iBAAiB,EAAO,CACjB,KAAM,GAAO,KAAK,YACZ,CAAE,SAAS,UAAY,EACvB,EAAS,KAAK,UAAU,GACxB,EAAS,EAAO,QAChB,EAAQ,GAAW,GAAU,IAAM,EAAO,MAAQ,KAAO,EAAO,IAAM,IAAM,GAAK,EAAO,iBAAiB,EAAO,EAAO,OAC7H,MAAO,CACH,MAAO,GAAK,EAAO,iBAAiB,EAAO,EAAO,OAClD,SAGR,YAAa,CACT,KAAK,oBAAsB,GAC3B,MAAM,aACN,KAAM,GAAO,KAAK,YAClB,EAAK,MAAQ,KAAK,aAAa,MAEnC,OAAO,EAAM,CACT,KAAM,GAAO,KAAK,YAClB,KAAK,eAAe,EAAK,KAAM,EAAG,EAAK,KAAK,OAAQ,GAExD,eAAe,EAAM,EAAO,EAAO,EAAM,CACrC,KAAM,GAAQ,IAAS,QACjB,CAAE,QAAQ,YAAa,CAAE,WAAe,KACxC,EAAO,EAAO,eACd,EAAa,EAAO,eACpB,EAAQ,KAAK,YACb,CAAE,gBAAgB,kBAAoB,KAAK,kBAAkB,EAAO,GAC1E,OAAQ,GAAI,EAAO,EAAI,EAAQ,EAAO,IAAI,CACtC,KAAM,GAAS,KAAK,UAAU,GACxB,EAAU,GAAS,GAAc,EAAO,EAAO,OAAS,CAC1D,OACA,KAAM,GACN,KAAK,yBAAyB,GAC5B,EAAU,KAAK,yBAAyB,EAAG,GAC3C,EAAS,GAAO,SAAW,IAAI,EAAO,MACtC,GAAa,CACf,aACA,KAAM,EAAQ,KACd,mBAAoB,CAAC,GAAS,GAAW,EAAO,UAAY,IAAU,EAAM,MAAQ,IAAU,EAAM,QACpG,EAAG,EAAa,EAAQ,KAAO,EAAQ,OACvC,EAAG,EAAa,EAAQ,OAAS,EAAQ,KACzC,OAAQ,EAAa,EAAQ,KAAO,KAAK,IAAI,EAAQ,MACrD,MAAO,EAAa,KAAK,IAAI,EAAQ,MAAQ,EAAQ,MAErD,GACA,IAAW,QAAU,GAAiB,KAAK,0BAA0B,EAAG,EAAK,GAAG,OAAS,SAAW,IAExG,KAAM,IAAU,GAAW,SAAW,EAAK,GAAG,QAC9C,GAAiB,GAAY,GAAS,EAAO,GAC7C,GAAiB,GAAY,GAAS,EAAM,OAC5C,KAAK,cAAc,EAAK,GAAI,EAAG,GAAY,IAGtD,WAAW,EAAM,EAAW,CACrB,KAAM,CAAE,UAAY,KAAK,YACnB,EAAW,EAAO,wBAAwB,KAAK,OAAO,OAAQ,GAAO,EAAK,WAAW,QAAQ,SAC7F,EAAU,EAAO,QAAQ,QACzB,EAAS,GACT,EAAY,GAAO,CACrB,KAAM,GAAS,EAAK,WAAW,UAAU,GACnC,EAAM,GAAU,EAAO,EAAK,OAAO,MACzC,GAAI,GAAc,IAAQ,MAAM,GAC5B,MAAO,IAGf,SAAW,KAAQ,GACf,GAAI,MAAc,QAAa,EAAS,KAGpC,MAAY,IAAS,EAAO,QAAQ,EAAK,SAAW,IAAM,IAAY,QAAa,EAAK,QAAU,SAClG,EAAO,KAAK,EAAK,OAEjB,EAAK,QAAU,GACf,MAGR,MAAK,GAAO,QACR,EAAO,KAAK,QAET,EAEd,eAAe,EAAO,CACf,MAAO,MAAK,WAAW,OAAW,GAAO,OAEhD,eAAe,EAAc,EAAM,EAAW,CACvC,KAAM,GAAS,KAAK,WAAW,EAAc,GACvC,EAAQ,IAAS,OAAY,EAAO,QAAQ,GAAQ,GAC1D,MAAO,KAAU,GAAK,EAAO,OAAS,EAAI,EAEjD,WAAY,CACL,KAAM,GAAO,KAAK,QACZ,EAAO,KAAK,YACZ,EAAS,EAAK,OACd,EAAS,GACf,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAK,KAAK,OAAQ,EAAI,EAAM,EAAE,EAC5C,EAAO,KAAK,EAAO,iBAAiB,KAAK,UAAU,GAAG,EAAO,MAAO,IAExE,KAAM,GAAe,EAAK,aAE1B,MAAO,CACH,IAFQ,GAAgB,GAAqB,GAG7C,SACA,MAAO,EAAO,YACd,IAAK,EAAO,UACZ,WAAY,KAAK,iBACjB,MAAO,EACP,QAAS,EAAK,QACd,MAAO,EAAe,EAAI,EAAK,mBAAqB,EAAK,eAGpE,yBAAyB,EAAO,CACzB,KAAM,CAAE,YAAa,CAAE,SAAS,WAAW,MAAO,GAAkB,QAAS,CAAE,KAAM,EAAY,iBAAqB,KAChH,EAAa,GAAa,EAC1B,EAAS,KAAK,UAAU,GACxB,EAAS,EAAO,QAChB,EAAW,GAAW,GAC5B,GAAI,GAAQ,EAAO,EAAO,MACtB,EAAQ,EACR,EAAS,EAAW,KAAK,WAAW,EAAQ,EAAQ,GAAY,EAChE,EAAM,EACN,IAAW,GACX,GAAQ,EAAS,EACjB,EAAS,GAET,GACA,GAAQ,EAAO,SACf,EAAS,EAAO,OAAS,EAAO,SAC5B,IAAU,GAAK,GAAK,KAAW,GAAK,EAAO,SAC3C,GAAQ,GAEZ,GAAS,GAEb,KAAM,GAAa,CAAC,GAAc,IAAc,CAAC,EAAW,EAAY,EACxE,GAAI,GAAO,EAAO,iBAAiB,GAOnC,GANI,KAAK,MAAM,kBAAkB,GAC7B,EAAO,EAAO,iBAAiB,EAAQ,GAEvC,EAAO,EAEX,EAAO,EAAO,EACV,KAAK,IAAI,GAAQ,EAAc,CAC/B,EAAO,GAAQ,EAAM,EAAQ,GAAc,EACvC,IAAU,GACV,IAAQ,EAAO,GAEnB,KAAM,IAAa,EAAO,mBAAmB,GACvC,GAAW,EAAO,mBAAmB,GACrC,EAAM,KAAK,IAAI,GAAY,IAC3B,GAAM,KAAK,IAAI,GAAY,IACjC,EAAO,KAAK,IAAI,KAAK,IAAI,EAAM,IAAM,GACrC,EAAO,EAAO,EACV,GAAY,CAAC,GACb,GAAO,QAAQ,EAAO,MAAM,cAAc,GAAgB,EAAO,iBAAiB,GAAQ,EAAO,iBAAiB,IAG1H,GAAI,IAAS,EAAO,iBAAiB,GAAa,CAC9C,KAAM,IAAW,GAAK,GAAQ,EAAO,qBAAqB,GAAc,EACxE,GAAQ,GACR,GAAQ,GAEZ,MAAO,CACH,OACA,OACA,OACA,OAAQ,EAAO,EAAO,GAGjC,yBAAyB,EAAO,EAAO,CAChC,KAAM,GAAQ,EAAM,MACd,EAAU,KAAK,QACf,EAAW,EAAQ,SACnB,EAAkB,GAAe,EAAQ,gBAAiB,KAChE,GAAI,GAAQ,EACZ,GAAI,EAAM,QAAS,CACf,KAAM,GAAa,EAAW,KAAK,eAAe,GAAS,EAAM,WAC3D,EAAQ,EAAQ,eAAiB,OAAS,GAA0B,EAAO,EAAO,EAAS,GAAc,GAAyB,EAAO,EAAO,EAAS,GACzJ,EAAa,KAAK,eAAe,KAAK,MAAO,KAAK,YAAY,MAAO,EAAW,EAAQ,QAC9F,EAAS,EAAM,MAAQ,EAAM,MAAQ,EAAa,EAAM,MAAQ,EAChE,EAAO,KAAK,IAAI,EAAiB,EAAM,MAAQ,EAAM,WAErD,GAAS,EAAM,iBAAiB,KAAK,UAAU,GAAO,EAAM,MAAO,GACnE,EAAO,KAAK,IAAI,EAAiB,EAAM,IAAM,EAAM,OAEvD,MAAO,CACH,KAAM,EAAS,EAAO,EACtB,KAAM,EAAS,EAAO,EACtB,SACA,QAGR,MAAO,CACH,KAAM,GAAO,KAAK,YACZ,EAAS,EAAK,OACd,EAAQ,EAAK,KACb,EAAO,EAAM,OACnB,GAAI,GAAI,EACR,KAAM,EAAI,EAAM,EAAE,EACV,KAAK,UAAU,GAAG,EAAO,QAAU,MACnC,EAAM,GAAG,KAAK,KAAK,OAMnC,gBAA+B,GAAkB,OACtC,IAAK,eACR,UAAW,CACX,mBAAoB,GACpB,gBAAiB,QACjB,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,cACA,mBAKZ,WAAY,CACZ,OAAQ,CACJ,EAAG,CACC,KAAM,UAEV,EAAG,CACC,KAAM,YAIlB,YAAa,CACT,KAAK,oBAAsB,GAC3B,MAAM,aAEb,mBAAmB,EAAM,EAAM,EAAO,EAAO,CACtC,KAAM,GAAS,MAAM,mBAAmB,EAAM,EAAM,EAAO,GAC3D,OAAQ,GAAI,EAAG,EAAI,EAAO,OAAQ,IAC9B,EAAO,GAAG,QAAU,KAAK,0BAA0B,EAAI,GAAO,OAElE,MAAO,GAEd,eAAe,EAAM,EAAM,EAAO,EAAO,CAClC,KAAM,GAAS,MAAM,eAAe,EAAM,EAAM,EAAO,GACvD,OAAQ,GAAI,EAAG,EAAI,EAAO,OAAQ,IAAI,CAClC,KAAM,GAAO,EAAK,EAAQ,GAC1B,EAAO,GAAG,QAAU,GAAe,EAAK,GAAI,KAAK,0BAA0B,EAAI,GAAO,QAE1F,MAAO,GAEd,gBAAgB,EAAM,EAAM,EAAO,EAAO,CACnC,KAAM,GAAS,MAAM,gBAAgB,EAAM,EAAM,EAAO,GACxD,OAAQ,GAAI,EAAG,EAAI,EAAO,OAAQ,IAAI,CAClC,KAAM,GAAO,EAAK,EAAQ,GAC1B,EAAO,GAAG,QAAU,GAAe,GAAQ,EAAK,GAAK,CAAC,EAAK,EAAG,KAAK,0BAA0B,EAAI,GAAO,QAE5G,MAAO,GAEd,gBAAiB,CACV,KAAM,GAAO,KAAK,YAAY,KAC9B,GAAI,GAAM,EACV,OAAQ,GAAI,EAAK,OAAS,EAAG,GAAK,EAAG,EAAE,EACnC,EAAM,KAAK,IAAI,EAAK,EAAK,GAAG,KAAK,KAAK,0BAA0B,IAAM,GAE1E,MAAO,GAAM,GAAK,EAEzB,iBAAiB,EAAO,CACjB,KAAM,GAAO,KAAK,YACZ,EAAS,KAAK,MAAM,KAAK,QAAU,GACnC,CAAE,SAAS,UAAY,EACvB,EAAS,KAAK,UAAU,GACxB,EAAI,EAAO,iBAAiB,EAAO,GACnC,EAAI,EAAO,iBAAiB,EAAO,GACnC,EAAI,EAAO,QACjB,MAAO,CACH,MAAO,EAAO,IAAU,GACxB,MAAO,IAAM,EAAI,KAAO,EAAK,GAAI,KAAO,EAAI,IAAM,KAG1D,OAAO,EAAM,CACT,KAAM,GAAS,KAAK,YAAY,KAChC,KAAK,eAAe,EAAQ,EAAG,EAAO,OAAQ,GAElD,eAAe,EAAQ,EAAO,EAAO,EAAM,CACvC,KAAM,GAAQ,IAAS,QACjB,CAAE,SAAS,UAAY,KAAK,YAC5B,CAAE,gBAAgB,kBAAoB,KAAK,kBAAkB,EAAO,GACpE,EAAQ,EAAO,KACf,EAAQ,EAAO,KACrB,OAAQ,GAAI,EAAO,EAAI,EAAQ,EAAO,IAAI,CACtC,KAAM,GAAQ,EAAO,GACf,EAAS,CAAC,GAAS,KAAK,UAAU,GAClC,EAAa,GACb,EAAS,EAAW,GAAS,EAAQ,EAAO,mBAAmB,IAAO,EAAO,iBAAiB,EAAO,IACrG,EAAS,EAAW,GAAS,EAAQ,EAAO,eAAiB,EAAO,iBAAiB,EAAO,IAClG,EAAW,KAAO,MAAM,IAAW,MAAM,GACrC,GACA,GAAW,QAAU,GAAiB,KAAK,0BAA0B,EAAG,EAAM,OAAS,SAAW,GAC9F,GACA,GAAW,QAAQ,OAAS,IAGpC,KAAK,cAAc,EAAO,EAAG,EAAY,IAGpD,0BAA0B,EAAO,EAAM,CAChC,KAAM,GAAS,KAAK,UAAU,GAC9B,GAAI,GAAS,MAAM,0BAA0B,EAAO,GAChD,EAAO,SACP,GAAS,OAAO,OAAO,GAAI,EAAQ,CAC/B,QAAS,MAGjB,KAAM,GAAS,EAAO,OACtB,MAAI,KAAS,UACT,GAAO,OAAS,GAEpB,EAAO,QAAU,GAAe,GAAU,EAAO,QAAS,GACnD,GAIf,YAA2B,EAAU,EAAe,EAAQ,CACxD,GAAI,GAAS,EACT,EAAS,EACT,EAAU,EACV,EAAU,EACd,GAAI,EAAgB,GAAK,CACrB,KAAM,GAAa,EACb,EAAW,EAAa,EACxB,EAAS,KAAK,IAAI,GAClB,EAAS,KAAK,IAAI,GAClB,EAAO,KAAK,IAAI,GAChB,EAAO,KAAK,IAAI,GAChB,EAAU,CAAC,GAAO,EAAG,KAAI,GAAc,GAAO,EAAY,EAAU,IAAQ,EAAI,KAAK,IAAI,EAAG,EAAI,EAAQ,GAAG,GAAI,GAC/G,EAAU,CAAC,GAAO,EAAG,KAAI,GAAc,GAAO,EAAY,EAAU,IAAQ,GAAK,KAAK,IAAI,EAAG,EAAI,EAAQ,GAAG,GAAI,GAChH,EAAO,EAAQ,EAAG,EAAQ,GAC1B,EAAO,EAAQ,GAAS,EAAQ,GAChC,EAAO,EAAQ,GAAI,EAAQ,GAC3B,GAAO,EAAQ,GAAK,GAAS,EAAQ,GAC3C,EAAU,GAAO,GAAQ,EACzB,EAAU,GAAO,IAAQ,EACzB,EAAU,CAAE,GAAO,GAAQ,EAC3B,EAAU,CAAE,GAAO,IAAQ,EAE/B,MAAO,CACH,SACA,SACA,UACA,WAGR,gBAAiC,GAAkB,OACxC,IAAK,iBACR,UAAW,CACX,mBAAoB,GACpB,gBAAiB,MACjB,UAAW,CACP,cAAe,GACf,aAAc,IAElB,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,gBACA,WACA,cACA,cACA,aACA,IACA,IACA,SACA,cACA,aAIZ,OAAQ,MACR,SAAU,EACV,cAAe,IACf,OAAQ,OACR,QAAS,EACT,UAAW,WAER,aAAc,CACjB,YAAc,GAAO,IAAS,UAC9B,WAAa,GAAO,IAAS,WAAa,CAAC,EAAK,WAAW,eAAiB,CAAC,EAAK,WAAW,0BAE7F,WAAY,CACZ,YAAa,EACb,QAAS,CACL,OAAQ,CACJ,OAAQ,CACJ,eAAgB,EAAO,CACnB,KAAM,GAAO,EAAM,KACnB,GAAI,EAAK,OAAO,QAAU,EAAK,SAAS,OAAQ,CAC5C,KAAM,CAAE,OAAQ,CAAE,aAAa,UAAc,EAAM,OAAO,QAC1D,MAAO,GAAK,OAAO,IAAI,CAAC,EAAO,IAAI,CAE/B,KAAM,GAAQ,EADK,eAAe,GACf,WAAW,SAAS,GACvC,MAAO,CACH,KAAM,EACN,UAAW,EAAM,gBACjB,YAAa,EAAM,YACnB,UAAW,EACX,UAAW,EAAM,YACjB,WAAY,EACZ,OAAQ,CAAC,EAAM,kBAAkB,GACjC,MAAO,KAInB,MAAO,KAGf,QAAS,EAAG,EAAY,EAAQ,CAC5B,EAAO,MAAM,qBAAqB,EAAW,OAC7C,EAAO,MAAM,aAK7B,YAAY,EAAO,EAAa,CAC5B,MAAM,EAAO,GACb,KAAK,oBAAsB,GAC3B,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,QAAU,OACf,KAAK,QAAU,OAEnB,YAAa,EAChB,MAAM,EAAO,EAAO,CACb,KAAM,GAAO,KAAK,aAAa,KACzB,EAAO,KAAK,YAClB,GAAI,KAAK,WAAa,GAClB,EAAK,QAAU,MACZ,CACH,GAAI,GAAU,GAAI,CAAC,EAAK,GACxB,GAAI,GAAS,EAAK,IAAS,CACvB,KAAM,CAAE,MAAK,SAAa,KAAK,SAC/B,EAAU,GAAI,CAAC,GAAiB,EAAK,GAAI,GAE7C,GAAI,GAAG,EACP,IAAI,EAAI,EAAO,EAAO,EAAQ,EAAO,EAAI,EAAM,EAAE,EAC7C,EAAK,QAAQ,GAAK,EAAO,IAIxC,cAAe,CACR,MAAO,IAAU,KAAK,QAAQ,SAAW,IAEhD,mBAAoB,CACb,MAAO,IAAU,KAAK,QAAQ,eAErC,qBAAsB,CACf,GAAI,GAAM,GACN,EAAM,CAAC,GACX,OAAQ,GAAI,EAAG,EAAI,KAAK,MAAM,KAAK,SAAS,OAAQ,EAAE,EAClD,GAAI,KAAK,MAAM,iBAAiB,IAAM,KAAK,MAAM,eAAe,GAAG,OAAS,KAAK,MAAO,CACpF,KAAM,GAAa,KAAK,MAAM,eAAe,GAAG,WAC1C,EAAW,EAAW,eACtB,EAAgB,EAAW,oBACjC,EAAM,KAAK,IAAI,EAAK,GACpB,EAAM,KAAK,IAAI,EAAK,EAAW,GAGvC,MAAO,CACH,SAAU,EACV,cAAe,EAAM,GAGhC,OAAO,EAAM,CACN,KAAM,GAAQ,KAAK,MACb,CAAE,aAAe,EACjB,EAAO,KAAK,YACZ,EAAO,EAAK,KACZ,EAAU,KAAK,oBAAsB,KAAK,aAAa,GAAQ,KAAK,QAAQ,QAC5E,EAAU,KAAK,IAAK,MAAK,IAAI,EAAU,MAAO,EAAU,QAAU,GAAW,EAAG,GAChF,EAAS,KAAK,IAAI,GAAa,KAAK,QAAQ,OAAQ,GAAU,GAC9D,EAAc,KAAK,eAAe,KAAK,OACvC,CAAE,gBAAgB,YAAc,KAAK,sBACrC,CAAE,SAAS,SAAS,UAAU,WAAa,GAAkB,EAAU,EAAe,GACtF,EAAY,GAAU,MAAQ,GAAW,EACzC,EAAa,GAAU,OAAS,GAAW,EAC3C,GAAY,KAAK,IAAI,KAAK,IAAI,EAAU,GAAa,EAAG,GACxD,GAAc,GAAY,KAAK,QAAQ,OAAQ,IAC/C,EAAc,KAAK,IAAI,GAAc,EAAQ,GAC7C,GAAgB,IAAc,GAAe,KAAK,gCACxD,KAAK,QAAU,EAAU,GACzB,KAAK,QAAU,EAAU,GACzB,EAAK,MAAQ,KAAK,iBAClB,KAAK,YAAc,GAAc,GAAe,KAAK,qBAAqB,KAAK,OAC/E,KAAK,YAAc,KAAK,IAAI,KAAK,YAAc,GAAe,EAAa,GAC3E,KAAK,eAAe,EAAM,EAAG,EAAK,OAAQ,GAEjD,eAAe,EAAG,EAAO,CAClB,KAAM,GAAO,KAAK,QACZ,EAAO,KAAK,YACZ,EAAgB,KAAK,oBAC3B,MAAI,IAAS,EAAK,UAAU,eAAiB,CAAC,KAAK,MAAM,kBAAkB,IAAM,EAAK,QAAQ,KAAO,MAAQ,EAAK,KAAK,GAAG,OAC/G,EAEJ,KAAK,uBAAuB,EAAK,QAAQ,GAAK,EAAgB,IAEzE,eAAe,EAAM,EAAO,EAAO,EAAM,CACrC,KAAM,GAAQ,IAAS,QACjB,EAAQ,KAAK,MACb,EAAY,EAAM,UAElB,EAAgB,EADH,QACQ,UACrB,EAAW,GAAU,KAAO,EAAU,OAAS,EAC/C,EAAW,GAAU,IAAM,EAAU,QAAU,EAC/C,EAAe,GAAS,EAAc,aACtC,EAAc,EAAe,EAAI,KAAK,YACtC,EAAc,EAAe,EAAI,KAAK,YACtC,CAAE,gBAAgB,kBAAoB,KAAK,kBAAkB,EAAO,GAC1E,GAAI,GAAa,KAAK,eAClB,GACJ,IAAI,GAAI,EAAG,GAAI,EAAO,EAAE,GACpB,GAAc,KAAK,eAAe,GAAG,GAEzC,IAAI,GAAI,EAAO,GAAI,EAAQ,EAAO,EAAE,GAAE,CAClC,KAAM,IAAgB,KAAK,eAAe,GAAG,GACvC,EAAM,EAAK,IACX,GAAa,CACf,EAAG,EAAU,KAAK,QAClB,EAAG,EAAU,KAAK,QAClB,aACA,SAAU,EAAa,GACvB,iBACA,cACA,eAEA,GACA,IAAW,QAAU,GAAiB,KAAK,0BAA0B,GAAG,EAAI,OAAS,SAAW,IAEpG,GAAc,GACd,KAAK,cAAc,EAAK,GAAG,GAAY,IAG/C,gBAAiB,CACb,KAAM,GAAO,KAAK,YACZ,EAAW,EAAK,KACtB,GAAI,GAAQ,EACR,EACJ,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAI,CAChC,KAAM,GAAQ,EAAK,QAAQ,GACvB,IAAU,MAAQ,CAAC,MAAM,IAAU,KAAK,MAAM,kBAAkB,IAAM,CAAC,EAAS,GAAG,QACnF,IAAS,KAAK,IAAI,IAG1B,MAAO,GAEX,uBAAuB,EAAO,CAC1B,KAAM,GAAQ,KAAK,YAAY,MAC/B,MAAI,GAAQ,GAAK,CAAC,MAAM,GACb,GAAO,MAAK,IAAI,GAAS,GAE7B,EAEX,iBAAiB,EAAO,CACpB,KAAM,GAAO,KAAK,YACZ,EAAQ,KAAK,MACb,EAAS,EAAM,KAAK,QAAU,GAC9B,EAAQ,GAAa,EAAK,QAAQ,GAAQ,EAAM,QAAQ,QAC9D,MAAO,CACH,MAAO,EAAO,IAAU,GACxB,SAGR,kBAAkB,EAAM,CACpB,GAAI,GAAM,EACV,KAAM,GAAQ,KAAK,MACnB,GAAI,GAAG,EAAM,EAAM,EAAY,EAC/B,GAAI,CAAC,GACD,IAAI,EAAI,EAAG,EAAO,EAAM,KAAK,SAAS,OAAQ,EAAI,EAAM,EAAE,EACtD,GAAI,EAAM,iBAAiB,GAAI,CAC3B,EAAO,EAAM,eAAe,GAC5B,EAAO,EAAK,KACZ,EAAa,EAAK,WAClB,OAIZ,GAAI,CAAC,EACD,MAAO,GAEX,IAAI,EAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAE,EACvC,EAAU,EAAW,0BAA0B,GAC3C,EAAQ,cAAgB,SACxB,GAAM,KAAK,IAAI,EAAK,EAAQ,aAAe,EAAG,EAAQ,kBAAoB,IAGlF,MAAO,GAEX,aAAa,EAAM,CACf,GAAI,GAAM,EACV,OAAQ,GAAI,EAAG,EAAO,EAAK,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC7C,KAAM,GAAU,KAAK,0BAA0B,GAC/C,EAAM,KAAK,IAAI,EAAK,EAAQ,QAAU,EAAG,EAAQ,aAAe,GAEpE,MAAO,GAEd,qBAAqB,EAAc,CAC5B,GAAI,GAAmB,EACvB,OAAQ,GAAI,EAAG,EAAI,EAAc,EAAE,EAC3B,KAAK,MAAM,iBAAiB,IAC5B,IAAoB,KAAK,eAAe,IAGhD,MAAO,GAEd,eAAe,EAAc,CACtB,MAAO,MAAK,IAAI,GAAe,KAAK,MAAM,KAAK,SAAS,GAAc,OAAQ,GAAI,GAEzF,+BAAgC,CACzB,MAAO,MAAK,qBAAqB,KAAK,MAAM,KAAK,SAAS,SAAW,GAI7E,gBAA6B,GAAkB,OACpC,IAAK,aACR,UAAW,CACX,mBAAoB,OACpB,gBAAiB,QACjB,SAAU,GACV,SAAU,UAEV,WAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,YAEV,QAAS,CACL,KAAM,YAIlB,YAAa,CACT,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,MAAM,aAEV,OAAO,EAAM,CACT,KAAM,GAAO,KAAK,YACZ,CAAE,QAAS,EAAO,KAAM,EAAS,GAAK,YAAc,EACpD,EAAqB,KAAK,MAAM,oBACtC,GAAI,CAAE,QAAQ,SAAW,GAAiC,EAAM,EAAQ,GACxE,KAAK,WAAa,EAClB,KAAK,WAAa,EACd,GAAoB,IACpB,GAAQ,EACR,EAAQ,EAAO,QAEnB,EAAK,OAAS,KAAK,MACnB,EAAK,cAAgB,KAAK,MAC1B,EAAK,WAAa,CAAC,CAAC,EAAS,WAC7B,EAAK,OAAS,EACd,KAAM,GAAU,KAAK,6BAA6B,GAC7C,KAAK,QAAQ,UACd,GAAQ,YAAc,GAE1B,EAAQ,QAAU,KAAK,QAAQ,QAC/B,KAAK,cAAc,EAAM,OAAW,CAChC,SAAU,CAAC,EACX,WACD,GACH,KAAK,eAAe,EAAQ,EAAO,EAAO,GAE9C,eAAe,EAAQ,EAAO,EAAO,EAAM,CACvC,KAAM,GAAQ,IAAS,QACjB,CAAE,SAAS,SAAS,WAAW,YAAc,KAAK,YAClD,CAAE,gBAAgB,kBAAoB,KAAK,kBAAkB,EAAO,GACpE,EAAQ,EAAO,KACf,EAAQ,EAAO,KACf,CAAE,WAAW,WAAa,KAAK,QAC/B,EAAe,GAAS,GAAY,EAAW,OAAO,kBACtD,EAAe,KAAK,MAAM,qBAAuB,GAAS,IAAS,OACnE,GAAM,EAAQ,EACd,GAAc,EAAO,OAC3B,GAAI,GAAa,EAAQ,GAAK,KAAK,UAAU,EAAQ,GACrD,OAAQ,IAAI,EAAG,GAAI,GAAa,EAAE,GAAE,CAChC,KAAM,IAAQ,EAAO,IACf,GAAa,EAAe,GAAQ,GAC1C,GAAI,GAAI,GAAS,IAAK,GAAK,CACvB,GAAW,KAAO,GAClB,SAEJ,KAAM,IAAS,KAAK,UAAU,IACxB,GAAW,GAAc,GAAO,IAChC,GAAS,GAAW,GAAS,EAAO,iBAAiB,GAAO,GAAQ,IACpE,GAAS,GAAW,GAAS,GAAS,GAAW,EAAO,eAAiB,EAAO,iBAAiB,EAAW,KAAK,WAAW,EAAQ,GAAQ,GAAY,GAAO,GAAQ,IAC7K,GAAW,KAAO,MAAM,KAAW,MAAM,KAAW,GACpD,GAAW,KAAO,GAAI,GAAK,KAAK,IAAI,GAAO,GAAS,EAAW,IAAU,EACrE,GACA,IAAW,OAAS,GACpB,GAAW,IAAM,EAAS,KAAK,KAE/B,GACA,IAAW,QAAU,GAAiB,KAAK,0BAA0B,GAAG,GAAM,OAAS,SAAW,IAEjG,GACD,KAAK,cAAc,GAAO,GAAG,GAAY,GAE7C,EAAa,IAGxB,gBAAiB,CACV,KAAM,GAAO,KAAK,YACZ,EAAU,EAAK,QACf,EAAS,EAAQ,SAAW,EAAQ,QAAQ,aAAe,EAC3D,EAAO,EAAK,MAAQ,GAC1B,GAAI,CAAC,EAAK,OACN,MAAO,GAEX,KAAM,GAAa,EAAK,GAAG,KAAK,KAAK,0BAA0B,IACzD,EAAY,EAAK,EAAK,OAAS,GAAG,KAAK,KAAK,0BAA0B,EAAK,OAAS,IAC1F,MAAO,MAAK,IAAI,EAAQ,EAAY,GAAa,EAErD,MAAO,CACH,KAAM,GAAO,KAAK,YAClB,EAAK,QAAQ,oBAAoB,KAAK,MAAM,UAAW,EAAK,OAAO,MACnE,MAAM,QAId,gBAAkC,GAAkB,OACzC,IAAK,kBACR,UAAW,CACX,gBAAiB,MACjB,UAAW,CACP,cAAe,GACf,aAAc,IAElB,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,aACA,WACA,cACA,iBAIZ,UAAW,IACX,WAAY,SAEZ,WAAY,CACZ,YAAa,EACb,QAAS,CACL,OAAQ,CACJ,OAAQ,CACJ,eAAgB,EAAO,CACnB,KAAM,GAAO,EAAM,KACnB,GAAI,EAAK,OAAO,QAAU,EAAK,SAAS,OAAQ,CAC5C,KAAM,CAAE,OAAQ,CAAE,aAAa,UAAc,EAAM,OAAO,QAC1D,MAAO,GAAK,OAAO,IAAI,CAAC,EAAO,IAAI,CAE/B,KAAM,GAAQ,EADK,eAAe,GACf,WAAW,SAAS,GACvC,MAAO,CACH,KAAM,EACN,UAAW,EAAM,gBACjB,YAAa,EAAM,YACnB,UAAW,EACX,UAAW,EAAM,YACjB,WAAY,EACZ,OAAQ,CAAC,EAAM,kBAAkB,GACjC,MAAO,KAInB,MAAO,KAGf,QAAS,EAAG,EAAY,EAAQ,CAC5B,EAAO,MAAM,qBAAqB,EAAW,OAC7C,EAAO,MAAM,YAIzB,OAAQ,CACJ,EAAG,CACC,KAAM,eACN,WAAY,CACR,QAAS,IAEb,YAAa,GACb,KAAM,CACF,SAAU,IAEd,YAAa,CACT,QAAS,IAEb,WAAY,KAIxB,YAAY,EAAO,EAAa,CAC5B,MAAM,EAAO,GACb,KAAK,YAAc,OACnB,KAAK,YAAc,OAEvB,iBAAiB,EAAO,CACpB,KAAM,GAAO,KAAK,YACZ,EAAQ,KAAK,MACb,EAAS,EAAM,KAAK,QAAU,GAC9B,EAAQ,GAAa,EAAK,QAAQ,GAAO,EAAG,EAAM,QAAQ,QAChE,MAAO,CACH,MAAO,EAAO,IAAU,GACxB,SAGR,gBAAgB,EAAM,EAAM,EAAO,EAAO,CACtC,MAAO,IAA4B,KAAK,MAAM,EAAM,EAAM,EAAO,GAErE,OAAO,EAAM,CACT,KAAM,GAAO,KAAK,YAAY,KAC9B,KAAK,gBACL,KAAK,eAAe,EAAM,EAAG,EAAK,OAAQ,GAEjD,WAAY,CACL,KAAM,GAAO,KAAK,YACZ,EAAQ,CACV,IAAK,OAAO,kBACZ,IAAK,OAAO,mBAEhB,SAAK,KAAK,QAAQ,CAAC,EAAS,IAAQ,CAChC,KAAM,GAAS,KAAK,UAAU,GAAO,EACjC,CAAC,MAAM,IAAW,KAAK,MAAM,kBAAkB,IAC3C,GAAS,EAAM,KACf,GAAM,IAAM,GAEZ,EAAS,EAAM,KACf,GAAM,IAAM,MAIjB,EAEd,eAAgB,CACT,KAAM,GAAQ,KAAK,MACb,EAAY,EAAM,UAClB,EAAO,EAAM,QACb,EAAU,KAAK,IAAI,EAAU,MAAQ,EAAU,KAAM,EAAU,OAAS,EAAU,KAClF,EAAc,KAAK,IAAI,EAAU,EAAG,GACpC,EAAc,KAAK,IAAI,EAAK,iBAAmB,EAAc,IAAM,EAAK,iBAAmB,EAAG,GAC9F,EAAgB,GAAc,GAAe,EAAM,yBACzD,KAAK,YAAc,EAAc,EAAe,KAAK,MACrD,KAAK,YAAc,KAAK,YAAc,EAE1C,eAAe,EAAM,EAAO,EAAO,EAAM,CACrC,KAAM,GAAQ,IAAS,QACjB,EAAQ,KAAK,MAEb,EAAgB,EADH,QACQ,UACrB,EAAQ,KAAK,YAAY,OACzB,EAAU,EAAM,QAChB,EAAU,EAAM,QAChB,EAAoB,EAAM,cAAc,GAAK,GAAM,GACzD,GAAI,GAAQ,EACR,EACJ,KAAM,GAAe,IAAM,KAAK,uBAChC,IAAI,EAAI,EAAG,EAAI,EAAO,EAAE,EACpB,GAAS,KAAK,cAAc,EAAG,EAAM,GAEzC,IAAI,EAAI,EAAO,EAAI,EAAQ,EAAO,IAAI,CAClC,KAAM,GAAM,EAAK,GACjB,GAAI,GAAa,EACb,GAAW,EAAQ,KAAK,cAAc,EAAG,EAAM,GAC/C,GAAc,EAAM,kBAAkB,GAAK,EAAM,8BAA8B,KAAK,UAAU,GAAG,GAAK,EAC1G,EAAQ,GACJ,GACI,GAAc,cACd,IAAc,GAEd,EAAc,eACd,GAAa,GAAW,IAGhC,KAAM,GAAa,CACf,EAAG,EACH,EAAG,EACH,YAAa,EACb,eACA,aACA,YACA,QAAS,KAAK,0BAA0B,EAAG,EAAI,OAAS,SAAW,IAEvE,KAAK,cAAc,EAAK,EAAG,EAAY,IAG/C,sBAAuB,CACnB,KAAM,GAAO,KAAK,YAClB,GAAI,GAAQ,EACZ,SAAK,KAAK,QAAQ,CAAC,EAAS,IAAQ,CAC5B,CAAC,MAAM,KAAK,UAAU,GAAO,IAAM,KAAK,MAAM,kBAAkB,IAChE,MAGD,EAEd,cAAc,EAAO,EAAM,EAAc,CAClC,MAAO,MAAK,MAAM,kBAAkB,GAAS,GAAU,KAAK,0BAA0B,EAAO,GAAM,OAAS,GAAgB,GAIpI,gBAA4B,GAAmB,OACpC,IAAK,YACR,UAAW,CACX,OAAQ,EACR,SAAU,EACV,cAAe,IACf,OAAQ,QAIhB,gBAA8B,GAAkB,OACrC,IAAK,cACR,UAAW,CACX,mBAAoB,OACpB,gBAAiB,QACjB,UAAW,IACX,SAAU,GACV,SAAU,CACN,KAAM,CACF,KAAM,iBAId,WAAY,CACZ,YAAa,EACb,OAAQ,CACJ,EAAG,CACC,KAAM,kBAIrB,iBAAiB,EAAO,CACjB,KAAM,GAAS,KAAK,YAAY,OAC1B,EAAS,KAAK,UAAU,GAC9B,MAAO,CACH,MAAO,EAAO,YAAY,GAC1B,MAAO,GAAK,EAAO,iBAAiB,EAAO,EAAO,QAG1D,gBAAgB,EAAM,EAAM,EAAO,EAAO,CACtC,MAAO,IAA4B,KAAK,MAAM,EAAM,EAAM,EAAO,GAErE,OAAO,EAAM,CACT,KAAM,GAAO,KAAK,YACZ,EAAO,EAAK,QACZ,EAAS,EAAK,MAAQ,GACtB,EAAS,EAAK,OAAO,YAE3B,GADA,EAAK,OAAS,EACV,IAAS,SAAU,CACnB,KAAM,GAAU,KAAK,6BAA6B,GAC7C,KAAK,QAAQ,UACd,GAAQ,YAAc,GAE1B,KAAM,GAAa,CACf,MAAO,GACP,UAAW,EAAO,SAAW,EAAO,OACpC,WAEJ,KAAK,cAAc,EAAM,OAAW,EAAY,GAEpD,KAAK,eAAe,EAAQ,EAAG,EAAO,OAAQ,GAElD,eAAe,EAAQ,EAAO,EAAO,EAAM,CACvC,KAAM,GAAQ,KAAK,YAAY,OACzB,EAAQ,IAAS,QACvB,OAAQ,GAAI,EAAO,EAAI,EAAQ,EAAO,IAAI,CACtC,KAAM,GAAQ,EAAO,GACf,EAAU,KAAK,0BAA0B,EAAG,EAAM,OAAS,SAAW,GACtE,EAAgB,EAAM,yBAAyB,EAAG,KAAK,UAAU,GAAG,GACpE,EAAI,EAAQ,EAAM,QAAU,EAAc,EAC1C,EAAI,EAAQ,EAAM,QAAU,EAAc,EAC1C,EAAa,CACf,EACA,IACA,MAAO,EAAc,MACrB,KAAM,MAAM,IAAM,MAAM,GACxB,WAEJ,KAAK,cAAc,EAAO,EAAG,EAAY,KAKrD,gBAAgC,GAAkB,OACvC,IAAK,gBACR,UAAW,CACX,mBAAoB,GACpB,gBAAiB,QACjB,SAAU,GACV,KAAM,UAEN,WAAY,CACZ,YAAa,CACT,KAAM,SAEV,OAAQ,CACJ,EAAG,CACC,KAAM,UAEV,EAAG,CACC,KAAM,YAIrB,iBAAiB,EAAO,CACjB,KAAM,GAAO,KAAK,YACZ,EAAS,KAAK,MAAM,KAAK,QAAU,GACnC,CAAE,SAAS,UAAY,EACvB,EAAS,KAAK,UAAU,GACxB,EAAI,EAAO,iBAAiB,EAAO,GACnC,EAAI,EAAO,iBAAiB,EAAO,GACzC,MAAO,CACH,MAAO,EAAO,IAAU,GACxB,MAAO,IAAM,EAAI,KAAO,EAAI,KAGpC,OAAO,EAAM,CACT,KAAM,GAAO,KAAK,YACZ,CAAE,KAAM,EAAS,IAAQ,EACzB,EAAqB,KAAK,MAAM,oBACtC,GAAI,CAAE,QAAQ,SAAW,GAAiC,EAAM,EAAQ,GAOxE,GANA,KAAK,WAAa,EAClB,KAAK,WAAa,EACd,GAAoB,IACpB,GAAQ,EACR,EAAQ,EAAO,QAEf,KAAK,QAAQ,SAAU,CACvB,KAAM,CAAE,QAAS,EAAO,YAAc,EACtC,EAAK,OAAS,KAAK,MACnB,EAAK,cAAgB,KAAK,MAC1B,EAAK,WAAa,CAAC,CAAC,EAAS,WAC7B,EAAK,OAAS,EACd,KAAM,GAAU,KAAK,6BAA6B,GAClD,EAAQ,QAAU,KAAK,QAAQ,QAC/B,KAAK,cAAc,EAAM,OAAW,CAChC,SAAU,CAAC,EACX,WACD,GAEP,KAAK,eAAe,EAAQ,EAAO,EAAO,GAE9C,aAAc,CACV,KAAM,CAAE,YAAc,KAAK,QACvB,CAAC,KAAK,oBAAsB,GAC5B,MAAK,mBAAqB,KAAK,MAAM,SAAS,WAAW,SAE7D,MAAM,cAEV,eAAe,EAAQ,EAAO,EAAO,EAAM,CACvC,KAAM,GAAQ,IAAS,QACjB,CAAE,SAAS,SAAS,WAAW,YAAc,KAAK,YAClD,EAAY,KAAK,0BAA0B,EAAO,GAClD,EAAgB,KAAK,iBAAiB,GACtC,EAAiB,KAAK,eAAe,EAAM,GAC3C,EAAQ,EAAO,KACf,EAAQ,EAAO,KACf,CAAE,WAAW,WAAa,KAAK,QAC/B,EAAe,GAAS,GAAY,EAAW,OAAO,kBACtD,GAAe,KAAK,MAAM,qBAAuB,GAAS,IAAS,OACzE,GAAI,IAAa,EAAQ,GAAK,KAAK,UAAU,EAAQ,GACrD,OAAQ,GAAI,EAAO,EAAI,EAAQ,EAAO,EAAE,EAAE,CACtC,KAAM,IAAQ,EAAO,GACf,GAAS,KAAK,UAAU,GACxB,GAAa,GAAe,GAAQ,GACpC,GAAW,GAAc,GAAO,IAChC,GAAS,GAAW,GAAS,EAAO,iBAAiB,GAAO,GAAQ,GACpE,GAAS,GAAW,GAAS,GAAS,GAAW,EAAO,eAAiB,EAAO,iBAAiB,EAAW,KAAK,WAAW,EAAQ,GAAQ,GAAY,GAAO,GAAQ,GAC7K,GAAW,KAAO,MAAM,KAAW,MAAM,KAAW,GACpD,GAAW,KAAO,EAAI,GAAK,KAAK,IAAI,GAAO,GAAS,GAAW,IAAU,EACrE,GACA,IAAW,OAAS,GACpB,GAAW,IAAM,EAAS,KAAK,IAE/B,GACA,IAAW,QAAU,GAAiB,KAAK,0BAA0B,EAAG,GAAM,OAAS,SAAW,IAEjG,IACD,KAAK,cAAc,GAAO,EAAG,GAAY,GAE7C,GAAa,GAEjB,KAAK,oBAAoB,EAAe,EAAM,GAErD,gBAAiB,CACV,KAAM,GAAO,KAAK,YACZ,EAAO,EAAK,MAAQ,GAC1B,GAAI,CAAC,KAAK,QAAQ,SAAU,CACxB,GAAI,GAAM,EACV,OAAQ,GAAI,EAAK,OAAS,EAAG,GAAK,EAAG,EAAE,EACnC,EAAM,KAAK,IAAI,EAAK,EAAK,GAAG,KAAK,KAAK,0BAA0B,IAAM,GAE1E,MAAO,GAAM,GAAK,EAEtB,KAAM,GAAU,EAAK,QACf,EAAS,EAAQ,SAAW,EAAQ,QAAQ,aAAe,EACjE,GAAI,CAAC,EAAK,OACN,MAAO,GAEX,KAAM,GAAa,EAAK,GAAG,KAAK,KAAK,0BAA0B,IACzD,EAAY,EAAK,EAAK,OAAS,GAAG,KAAK,KAAK,0BAA0B,EAAK,OAAS,IAC1F,MAAO,MAAK,IAAI,EAAQ,EAAY,GAAa,GAIzD,GAAI,IAA2B,OAAO,OAAO,CAC7C,UAAW,KACX,cAAe,GACf,iBAAkB,GAClB,mBAAoB,GACpB,eAAgB,GAChB,cAAe,GACf,oBAAqB,GACrB,gBAAiB,GACjB,kBAAmB,KAOf,aAAoB,CACpB,KAAM,IAAI,OAAM,mFAOhB,QAAsB,OAUb,UAAS,EAAS,CACvB,OAAO,OAAO,GAAgB,UAAW,GAE7C,QACA,YAAY,EAAQ,CAChB,KAAK,QAAU,GAAW,GAG9B,MAAO,EACP,SAAU,CACN,MAAO,MAEX,OAAQ,CACJ,MAAO,MAEX,QAAS,CACL,MAAO,MAEX,KAAM,CACF,MAAO,MAEX,MAAO,CACH,MAAO,MAEX,SAAU,CACN,MAAO,MAEX,OAAQ,CACJ,MAAO,OAGf,GAAI,IAAW,CACX,MAAO,IAGX,YAAsB,EAAS,EAAM,EAAO,EAAW,CACnD,KAAM,CAAE,aAAa,OAAO,WAAa,EACnC,EAAS,EAAW,YAAY,OACtC,GAAI,GAAU,IAAS,EAAO,MAAQ,IAAS,KAAO,GAAW,EAAK,OAAQ,CAC1E,KAAM,GAAe,EAAO,eAAiB,GAAgB,GAC7D,GAAK,GAEE,GAAI,EAAW,eAAgB,CAClC,KAAM,GAAK,EAAK,GACV,EAAQ,MAAO,GAAG,UAAa,YAAc,EAAG,SAAS,GAC/D,GAAI,EAAO,CACP,KAAM,GAAQ,EAAa,EAAM,EAAM,EAAQ,GACzC,EAAM,EAAa,EAAM,EAAM,EAAQ,GAC7C,MAAO,CACH,GAAI,EAAM,GACV,GAAI,EAAI,UAThB,OAAO,GAAa,EAAM,EAAM,GAcxC,MAAO,CACH,GAAI,EACJ,GAAI,EAAK,OAAS,GAGzB,YAAkC,EAAO,EAAM,EAAU,EAAS,EAAW,CAC1E,KAAM,GAAW,EAAM,+BACjB,EAAQ,EAAS,GACvB,OAAQ,GAAI,EAAG,EAAO,EAAS,OAAQ,EAAI,EAAM,EAAE,EAAE,CACjD,KAAM,CAAE,QAAQ,QAAU,EAAS,GAC7B,CAAE,KAAK,MAAQ,GAAa,EAAS,GAAI,EAAM,EAAO,GAC5D,OAAQ,GAAI,EAAI,GAAK,EAAI,EAAE,EAAE,CACzB,KAAM,GAAU,EAAK,GAChB,EAAQ,MACT,EAAQ,EAAS,EAAO,KAKvC,YAAkC,EAAM,CACrC,KAAM,GAAO,EAAK,QAAQ,OAAS,GAC7B,EAAO,EAAK,QAAQ,OAAS,GACnC,MAAO,UAAS,EAAK,EAAK,CACtB,KAAM,GAAS,EAAO,KAAK,IAAI,EAAI,EAAI,EAAI,GAAK,EAC1C,EAAS,EAAO,KAAK,IAAI,EAAI,EAAI,EAAI,GAAK,EAChD,MAAO,MAAK,KAAK,KAAK,IAAI,EAAQ,GAAK,KAAK,IAAI,EAAQ,KAG/D,YAA2B,EAAO,EAAU,EAAM,EAAkB,EAAkB,CACnF,KAAM,GAAQ,GACd,MAAI,CAAC,GAAoB,CAAC,EAAM,cAAc,IAe9C,GAAyB,EAAO,EAAM,EAZf,SAAS,EAAS,EAAc,EAAO,CACtD,CAAC,GAAoB,CAAC,GAAe,EAAS,EAAM,UAAW,IAG/D,EAAQ,QAAQ,EAAS,EAAG,EAAS,EAAG,IACxC,EAAM,KAAK,CACP,UACA,eACA,WAIoD,IACzD,EAEV,YAA+B,EAAO,EAAU,EAAM,EAAkB,CACrE,GAAI,GAAQ,GACZ,WAAwB,EAAS,EAAc,EAAO,CAClD,KAAM,CAAE,aAAa,YAAc,EAAQ,SAAS,CAChD,aACA,YACD,GACG,CAAE,SAAW,GAAkB,EAAS,CAC1C,EAAG,EAAS,EACZ,EAAG,EAAS,IAEZ,GAAc,EAAO,EAAY,IACjC,EAAM,KAAK,CACP,UACA,eACA,UAIZ,UAAyB,EAAO,EAAM,EAAU,GACzC,EAEV,YAAkC,EAAO,EAAU,EAAM,EAAW,EAAkB,EAAkB,CACrG,GAAI,GAAQ,GACZ,KAAM,GAAiB,GAAyB,GAChD,GAAI,GAAc,OAAO,kBACzB,WAAwB,EAAS,EAAc,EAAO,CAClD,KAAM,GAAU,EAAQ,QAAQ,EAAS,EAAG,EAAS,EAAG,GACxD,GAAI,GAAa,CAAC,EACd,OAEJ,KAAM,GAAS,EAAQ,eAAe,GAEtC,GAAI,CADgB,EAAC,CAAC,GAAoB,EAAM,cAAc,KAC1C,CAAC,EACjB,OAEJ,KAAM,GAAW,EAAe,EAAU,GACtC,EAAW,EACX,GAAQ,CACJ,CACI,UACA,eACA,UAGR,EAAc,GACP,IAAa,GACpB,EAAM,KAAK,CACP,UACA,eACA,UAIZ,UAAyB,EAAO,EAAM,EAAU,GACzC,EAEV,YAAyB,EAAO,EAAU,EAAM,EAAW,EAAkB,EAAkB,CAC5F,MAAI,CAAC,GAAoB,CAAC,EAAM,cAAc,GACnC,GAEJ,IAAS,KAAO,CAAC,EAAY,GAAsB,EAAO,EAAU,EAAM,GAAoB,GAAyB,EAAO,EAAU,EAAM,EAAW,EAAkB,GAErL,YAAsB,EAAO,EAAU,EAAM,EAAW,EAAkB,CACvE,KAAM,GAAQ,GACR,EAAc,IAAS,IAAM,WAAa,WAChD,GAAI,GAAiB,GAWrB,MAVA,IAAyB,EAAO,EAAM,EAAU,CAAC,EAAS,EAAc,IAAQ,CACxE,EAAQ,GAAa,EAAS,GAAO,IACrC,GAAM,KAAK,CACP,UACA,eACA,UAEJ,EAAiB,GAAkB,EAAQ,QAAQ,EAAS,EAAG,EAAS,EAAG,MAG/E,GAAa,CAAC,EACP,GAEJ,EAEV,GAAI,IAAc,CACf,4BACA,MAAO,CACV,MAAO,EAAO,EAAG,EAAS,EAAkB,CACjC,KAAM,GAAW,GAAoB,EAAG,GAClC,EAAO,EAAQ,MAAQ,IACvB,EAAmB,EAAQ,kBAAoB,GAC/C,EAAQ,EAAQ,UAAY,GAAkB,EAAO,EAAU,EAAM,EAAkB,GAAoB,GAAgB,EAAO,EAAU,EAAM,GAAO,EAAkB,GAC3K,EAAW,GACjB,MAAK,GAAM,OAGX,GAAM,+BAA+B,QAAS,GAAO,CACjD,KAAM,GAAQ,EAAM,GAAG,MACjB,EAAU,EAAK,KAAK,GACtB,GAAW,CAAC,EAAQ,MACpB,EAAS,KAAK,CACV,UACA,aAAc,EAAK,MACnB,YAIL,GAbI,IAetB,QAAS,EAAO,EAAG,EAAS,EAAkB,CACnC,KAAM,GAAW,GAAoB,EAAG,GAClC,EAAO,EAAQ,MAAQ,KACvB,EAAmB,EAAQ,kBAAoB,GACrD,GAAI,GAAQ,EAAQ,UAAY,GAAkB,EAAO,EAAU,EAAM,EAAkB,GAAoB,GAAgB,EAAO,EAAU,EAAM,GAAO,EAAkB,GAC/K,GAAI,EAAM,OAAS,EAAG,CAClB,KAAM,GAAe,EAAM,GAAG,aACxB,EAAO,EAAM,eAAe,GAAc,KAChD,EAAQ,GACR,OAAQ,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC9B,EAAM,KAAK,CACP,QAAS,EAAK,GACd,eACA,MAAO,IAInB,MAAO,IAElB,MAAO,EAAO,EAAG,EAAS,EAAkB,CACjC,KAAM,GAAW,GAAoB,EAAG,GAClC,EAAO,EAAQ,MAAQ,KACvB,EAAmB,EAAQ,kBAAoB,GACrD,MAAO,IAAkB,EAAO,EAAU,EAAM,EAAkB,IAE7E,QAAS,EAAO,EAAG,EAAS,EAAkB,CACnC,KAAM,GAAW,GAAoB,EAAG,GAClC,EAAO,EAAQ,MAAQ,KACvB,EAAmB,EAAQ,kBAAoB,GACrD,MAAO,IAAgB,EAAO,EAAU,EAAM,EAAQ,UAAW,EAAkB,IAE9F,EAAG,EAAO,EAAG,EAAS,EAAkB,CAC7B,KAAM,GAAW,GAAoB,EAAG,GACxC,MAAO,IAAa,EAAO,EAAU,IAAK,EAAQ,UAAW,IAExE,EAAG,EAAO,EAAG,EAAS,EAAkB,CAC7B,KAAM,GAAW,GAAoB,EAAG,GACxC,MAAO,IAAa,EAAO,EAAU,IAAK,EAAQ,UAAW,MAKzE,KAAM,IAAmB,CACrB,OACA,MACA,QACA,UAEJ,YAA0B,EAAO,EAAU,CACvC,MAAO,GAAM,OAAQ,GAAI,EAAE,MAAQ,GAEvC,YAAqC,EAAO,EAAM,CAC9C,MAAO,GAAM,OAAQ,GAAI,GAAiB,QAAQ,EAAE,OAAS,IAAM,EAAE,IAAI,OAAS,GAEtF,YAAsB,EAAO,EAAS,CAClC,MAAO,GAAM,KAAK,CAAC,EAAG,IAAI,CACtB,KAAM,GAAK,EAAU,EAAI,EACnB,EAAK,EAAU,EAAI,EACzB,MAAO,GAAG,SAAW,EAAG,OAAS,EAAG,MAAQ,EAAG,MAAQ,EAAG,OAAS,EAAG,SAG9E,YAAmB,EAAO,CACtB,KAAM,GAAc,GACpB,GAAI,GAAG,EAAM,EAAK,EAAK,EAAO,EAC9B,IAAI,EAAI,EAAG,EAAQ,IAAS,IAAI,OAAQ,EAAI,EAAM,EAAE,EAChD,EAAM,EAAM,GACX,CAAE,SAAU,EAAM,QAAS,CAAE,QAAQ,cAAa,IAAU,EAC7D,EAAY,KAAK,CACb,MAAO,EACP,MACA,MACA,WAAY,EAAI,eAChB,OAAQ,EAAI,OACZ,MAAO,GAAS,EAAM,EACtB,gBAGR,MAAO,GAEX,YAAqB,EAAS,CAC1B,KAAM,GAAS,GACf,SAAW,KAAQ,GAAQ,CACvB,KAAM,CAAE,QAAQ,MAAM,eAAiB,EACvC,GAAI,CAAC,GAAS,CAAC,GAAiB,SAAS,GACrC,SAEJ,KAAM,GAAS,EAAO,IAAW,GAAO,GAAS,CAC7C,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,KAAM,IAEV,EAAO,QACP,EAAO,QAAU,EAErB,MAAO,GAEV,YAAuB,EAAS,EAAQ,CACrC,KAAM,GAAS,GAAY,GACrB,CAAE,eAAe,iBAAmB,EAC1C,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAQ,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC5C,EAAS,EAAQ,GACjB,KAAM,CAAE,YAAc,EAAO,IACvB,EAAQ,EAAO,EAAO,OACtB,EAAS,GAAS,EAAO,YAAc,EAAM,OAC/C,EAAO,WACP,GAAO,MAAQ,EAAS,EAAS,EAAe,GAAY,EAAO,eACnE,EAAO,OAAS,GAEhB,GAAO,MAAQ,EACf,EAAO,OAAS,EAAS,EAAS,EAAgB,GAAY,EAAO,iBAG7E,MAAO,GAEX,YAA0B,EAAO,CAC7B,KAAM,GAAc,GAAU,GACxB,EAAW,GAAa,EAAY,OAAQ,GAAO,EAAK,IAAI,UAAW,IACvE,EAAO,GAAa,GAAiB,EAAa,QAAS,IAC3D,EAAQ,GAAa,GAAiB,EAAa,UACnD,EAAM,GAAa,GAAiB,EAAa,OAAQ,IACzD,EAAS,GAAa,GAAiB,EAAa,WACpD,EAAmB,GAA4B,EAAa,KAC5D,EAAiB,GAA4B,EAAa,KAChE,MAAO,CACH,WACA,WAAY,EAAK,OAAO,GACxB,eAAgB,EAAM,OAAO,GAAgB,OAAO,GAAQ,OAAO,GACnE,UAAW,GAAiB,EAAa,aACzC,SAAU,EAAK,OAAO,GAAO,OAAO,GACpC,WAAY,EAAI,OAAO,GAAQ,OAAO,IAG9C,YAAwB,EAAY,EAAW,EAAG,EAAG,CACjD,MAAO,MAAK,IAAI,EAAW,GAAI,EAAU,IAAM,KAAK,IAAI,EAAW,GAAI,EAAU,IAErF,YAA0B,EAAY,EAAY,CAC9C,EAAW,IAAM,KAAK,IAAI,EAAW,IAAK,EAAW,KACrD,EAAW,KAAO,KAAK,IAAI,EAAW,KAAM,EAAW,MACvD,EAAW,OAAS,KAAK,IAAI,EAAW,OAAQ,EAAW,QAC3D,EAAW,MAAQ,KAAK,IAAI,EAAW,MAAO,EAAW,OAE7D,YAAoB,EAAW,EAAQ,EAAQ,EAAQ,CACnD,KAAM,CAAE,MAAM,OAAS,EACjB,EAAa,EAAU,WAC7B,GAAI,CAAC,GAAS,GAAM,CACZ,EAAO,MACP,GAAU,IAAQ,EAAO,MAE7B,KAAM,GAAQ,EAAO,EAAO,QAAU,CAClC,KAAM,EACN,MAAO,GAEX,EAAM,KAAO,KAAK,IAAI,EAAM,KAAM,EAAO,WAAa,EAAI,OAAS,EAAI,OACvE,EAAO,KAAO,EAAM,KAAO,EAAM,MACjC,EAAU,IAAQ,EAAO,KAEzB,EAAI,YACJ,GAAiB,EAAY,EAAI,cAErC,KAAM,GAAW,KAAK,IAAI,EAAG,EAAO,WAAa,GAAe,EAAY,EAAW,OAAQ,UACzF,EAAY,KAAK,IAAI,EAAG,EAAO,YAAc,GAAe,EAAY,EAAW,MAAO,WAC1F,EAAe,IAAa,EAAU,EACtC,EAAgB,IAAc,EAAU,EAC9C,SAAU,EAAI,EACd,EAAU,EAAI,EACP,EAAO,WAAa,CACvB,KAAM,EACN,MAAO,GACP,CACA,KAAM,EACN,MAAO,GAGf,YAA0B,EAAW,CACjC,KAAM,GAAa,EAAU,WAC7B,WAAmB,EAAK,CACpB,KAAM,GAAS,KAAK,IAAI,EAAW,GAAO,EAAU,GAAM,GAC1D,SAAU,IAAQ,EACX,EAEX,EAAU,GAAK,EAAU,OACzB,EAAU,GAAK,EAAU,QACzB,EAAU,SACV,EAAU,UAEd,YAAoB,EAAY,EAAW,CACvC,KAAM,GAAa,EAAU,WAC7B,WAA4B,EAAW,CACnC,KAAM,GAAS,CACX,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,GAEZ,SAAU,QAAS,GAAM,CACrB,EAAO,GAAO,KAAK,IAAI,EAAU,GAAM,EAAW,MAE/C,EAEX,MAAoB,GAAb,EAAgC,CACnC,OACA,SACoB,CACpB,MACA,WAGR,YAAkB,EAAO,EAAW,EAAQ,EAAQ,CAChD,KAAM,GAAa,GACnB,GAAI,GAAG,EAAM,EAAQ,EAAK,EAAO,EACjC,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAQ,EAAG,EAAI,EAAM,EAAE,EAAE,CACrD,EAAS,EAAM,GACf,EAAM,EAAO,IACb,EAAI,OAAO,EAAO,OAAS,EAAU,EAAG,EAAO,QAAU,EAAU,EAAG,GAAW,EAAO,WAAY,IACpG,KAAM,CAAE,OAAO,SAAW,GAAW,EAAW,EAAQ,EAAQ,GAChE,GAAS,GAAQ,EAAW,OAC5B,EAAU,GAAW,EAChB,EAAI,UACL,EAAW,KAAK,GAGxB,MAAO,IAAS,GAAS,EAAY,EAAW,EAAQ,IAAW,EAEvE,YAAoB,EAAK,EAAM,EAAK,EAAO,EAAQ,CAC/C,EAAI,IAAM,EACV,EAAI,KAAO,EACX,EAAI,MAAQ,EAAO,EACnB,EAAI,OAAS,EAAM,EACnB,EAAI,MAAQ,EACZ,EAAI,OAAS,EAEjB,YAAoB,EAAO,EAAW,EAAQ,EAAQ,CAClD,KAAM,GAAc,EAAO,QAC3B,GAAI,CAAE,IAAI,KAAO,EACjB,SAAW,KAAU,GAAM,CACvB,KAAM,GAAM,EAAO,IACb,EAAQ,EAAO,EAAO,QAAU,CAClC,MAAO,EACP,OAAQ,EACR,OAAQ,GAEN,EAAS,EAAO,YAAc,EAAM,QAAU,EACpD,GAAI,EAAO,WAAY,CACnB,KAAM,GAAQ,EAAU,EAAI,EACtB,EAAS,EAAM,MAAQ,EAAI,OAC7B,GAAQ,EAAM,QACd,GAAI,EAAM,OAEV,EAAI,SACJ,GAAW,EAAK,EAAY,KAAM,EAAG,EAAO,WAAa,EAAY,MAAQ,EAAY,KAAM,GAE/F,GAAW,EAAK,EAAU,KAAO,EAAM,OAAQ,EAAG,EAAO,GAE7D,EAAM,MAAQ,EACd,EAAM,QAAU,EAChB,EAAI,EAAI,WACL,CACH,KAAM,GAAS,EAAU,EAAI,EACvB,EAAQ,EAAM,MAAQ,EAAI,MAC5B,GAAQ,EAAM,QACd,GAAI,EAAM,OAEV,EAAI,SACJ,GAAW,EAAK,EAAG,EAAY,IAAK,EAAO,EAAO,YAAc,EAAY,OAAS,EAAY,KAEjG,GAAW,EAAK,EAAG,EAAU,IAAM,EAAM,OAAQ,EAAO,GAE5D,EAAM,MAAQ,EACd,EAAM,QAAU,EAChB,EAAI,EAAI,OAGhB,EAAU,EAAI,EACd,EAAU,EAAI,EAElB,GAAI,IAAU,CACb,OAAQ,EAAO,EAAM,CACT,EAAM,OACP,GAAM,MAAQ,IAElB,EAAK,SAAW,EAAK,UAAY,GACjC,EAAK,SAAW,EAAK,UAAY,MACjC,EAAK,OAAS,EAAK,QAAU,EAC7B,EAAK,QAAU,EAAK,SAAW,UAAW,CACtC,MAAO,CACH,CACI,EAAG,EACH,KAAM,EAAW,CACb,EAAK,KAAK,OAK1B,EAAM,MAAM,KAAK,IAExB,UAAW,EAAO,EAAY,CACvB,KAAM,GAAQ,EAAM,MAAQ,EAAM,MAAM,QAAQ,GAAc,GAC1D,IAAU,IACV,EAAM,MAAM,OAAO,EAAO,IAGrC,UAAW,EAAO,EAAM,EAAS,CAC1B,EAAK,SAAW,EAAQ,SACxB,EAAK,SAAW,EAAQ,SACxB,EAAK,OAAS,EAAQ,QAE7B,OAAQ,EAAO,EAAO,EAAQ,EAAY,CACnC,GAAI,CAAC,EACD,OAEJ,KAAM,GAAU,GAAU,EAAM,QAAQ,OAAO,SACzC,EAAiB,KAAK,IAAI,EAAQ,EAAQ,MAAO,GACjD,EAAkB,KAAK,IAAI,EAAS,EAAQ,OAAQ,GACpD,EAAQ,GAAiB,EAAM,OAC/B,EAAgB,EAAM,SACtB,EAAkB,EAAM,WAC9B,GAAK,EAAM,MAAQ,GAAM,CACjB,MAAO,GAAI,cAAiB,YAC5B,EAAI,iBAGZ,KAAM,GAA0B,EAAc,OAAO,CAAC,EAAO,IAAO,EAAK,IAAI,SAAW,EAAK,IAAI,QAAQ,UAAY,GAAQ,EAAQ,EAAQ,EAAG,IAAM,EAChJ,EAAS,OAAO,OAAO,CACzB,WAAY,EACZ,YAAa,EACb,UACA,iBACA,kBACA,aAAc,EAAiB,EAAI,EACnC,cAAe,EAAkB,IAE/B,EAAa,OAAO,OAAO,GAAI,GACrC,GAAiB,EAAY,GAAU,IACvC,KAAM,GAAY,OAAO,OAAO,CAC5B,aACA,EAAG,EACH,EAAG,EACH,EAAG,EAAQ,KACX,EAAG,EAAQ,KACZ,GACG,EAAS,GAAc,EAAc,OAAO,GAAkB,GACpE,GAAS,EAAM,SAAU,EAAW,EAAQ,GAC5C,GAAS,EAAe,EAAW,EAAQ,GACvC,GAAS,EAAiB,EAAW,EAAQ,IAC7C,GAAS,EAAe,EAAW,EAAQ,GAE/C,GAAiB,GACjB,GAAW,EAAM,WAAY,EAAW,EAAQ,GAChD,EAAU,GAAK,EAAU,EACzB,EAAU,GAAK,EAAU,EACzB,GAAW,EAAM,eAAgB,EAAW,EAAQ,GACpD,EAAM,UAAY,CACd,KAAM,EAAU,KAChB,IAAK,EAAU,IACf,MAAO,EAAU,KAAO,EAAU,EAClC,OAAQ,EAAU,IAAM,EAAU,EAClC,OAAQ,EAAU,EAClB,MAAO,EAAU,GAErB,GAAK,EAAM,UAAY,GAAS,CAC5B,KAAM,GAAM,EAAO,IACnB,OAAO,OAAO,EAAK,EAAM,WACzB,EAAI,OAAO,EAAU,EAAG,EAAU,EAAG,CACjC,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,QAMxB,QAAmB,CAClB,eAAe,EAAQ,EAAa,EACpC,eAAe,EAAS,CACjB,MAAO,GAEd,iBAAiB,EAAO,EAAM,EAAU,EACxC,oBAAoB,EAAO,EAAM,EAAU,EAC3C,qBAAsB,CACf,MAAO,GAEd,eAAe,EAAS,EAAO,EAAQ,EAAa,CAC7C,SAAQ,KAAK,IAAI,EAAG,GAAS,EAAQ,OACrC,EAAS,GAAU,EAAQ,OACpB,CACH,QACA,OAAQ,KAAK,IAAI,EAAG,EAAc,KAAK,MAAM,EAAQ,GAAe,IAG/E,WAAW,EAAQ,CACZ,MAAO,GAEd,aAAa,EAAQ,GAItB,gBAA4B,GAAa,CACrC,eAAe,EAAM,CACjB,MAAO,IAAQ,EAAK,YAAc,EAAK,WAAW,OAAS,KAE/D,aAAa,EAAQ,CACjB,EAAO,QAAQ,UAAY,IAInC,KAAM,IAAc,WACb,GAAc,CACjB,WAAY,YACZ,UAAW,YACX,SAAU,UACV,aAAc,aACd,YAAa,YACb,YAAa,YACb,UAAW,UACX,aAAc,WACd,WAAY,YAEV,GAAiB,GAAQ,IAAU,MAAQ,IAAU,GAC1D,YAAoB,EAAQ,EAAa,CACtC,KAAM,GAAQ,EAAO,MACf,EAAe,EAAO,aAAa,UACnC,EAAc,EAAO,aAAa,SAcxC,GAbA,EAAO,IAAe,CAClB,QAAS,CACL,OAAQ,EACR,MAAO,EACP,MAAO,CACH,QAAS,EAAM,QACf,OAAQ,EAAM,OACd,MAAO,EAAM,SAIzB,EAAM,QAAU,EAAM,SAAW,QACjC,EAAM,UAAY,EAAM,WAAa,aACjC,GAAc,GAAc,CAC5B,KAAM,GAAe,GAAa,EAAQ,SACtC,IAAiB,QACjB,GAAO,MAAQ,GAGvB,GAAI,GAAc,GACd,GAAI,EAAO,MAAM,SAAW,GACxB,EAAO,OAAS,EAAO,MAAS,IAAe,OAC5C,CACH,KAAM,GAAgB,GAAa,EAAQ,UACvC,IAAkB,QAClB,GAAO,OAAS,GAI5B,MAAO,GAEX,KAAM,IAAuB,GAA+B,CACxD,QAAS,IACT,GACJ,YAAqB,EAAM,EAAM,EAAU,CACvC,EAAK,iBAAiB,EAAM,EAAU,IAE1C,YAAwB,EAAO,EAAM,EAAU,CAC3C,EAAM,OAAO,oBAAoB,EAAM,EAAU,IAErD,YAAyB,EAAO,EAAO,CACnC,KAAM,GAAO,GAAY,EAAM,OAAS,EAAM,KACxC,CAAE,IAAI,KAAO,GAAoB,EAAO,GAC9C,MAAO,CACH,OACA,QACA,OAAQ,EACR,EAAG,IAAM,OAAY,EAAI,KACzB,EAAG,IAAM,OAAY,EAAI,MAGjC,YAA0B,EAAU,EAAQ,CACxC,SAAW,KAAQ,GACf,GAAI,IAAS,GAAU,EAAK,SAAS,GACjC,MAAO,GAInB,YAA8B,EAAO,EAAM,EAAU,CACjD,KAAM,GAAS,EAAM,OACf,EAAW,GAAI,kBAAkB,GAAU,CAC7C,GAAI,GAAU,GACd,SAAW,KAAS,GAChB,EAAU,GAAW,GAAiB,EAAM,WAAY,GACxD,EAAU,GAAW,CAAC,GAAiB,EAAM,aAAc,GAE3D,GACA,MAGR,SAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,KAEN,EAEX,YAA8B,EAAO,EAAM,EAAU,CACjD,KAAM,GAAS,EAAM,OACf,EAAW,GAAI,kBAAkB,GAAU,CAC7C,GAAI,GAAU,GACd,SAAW,KAAS,GAChB,EAAU,GAAW,GAAiB,EAAM,aAAc,GAC1D,EAAU,GAAW,CAAC,GAAiB,EAAM,WAAY,GAEzD,GACA,MAGR,SAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,KAEN,EAEX,KAAM,IAAqB,GAAI,KAC/B,GAAI,IAAsB,EAC1B,aAA0B,CACtB,KAAM,GAAM,OAAO,iBACf,IAAQ,IAGZ,IAAsB,EACtB,GAAmB,QAAQ,CAAC,EAAQ,IAAQ,CACpC,EAAM,0BAA4B,GAClC,OAIZ,YAAuC,EAAO,EAAQ,CAC7C,GAAmB,MACpB,OAAO,iBAAiB,SAAU,IAEtC,GAAmB,IAAI,EAAO,GAElC,YAAyC,EAAO,CAC5C,GAAmB,OAAO,GACrB,GAAmB,MACpB,OAAO,oBAAoB,SAAU,IAG7C,YAA8B,EAAO,EAAM,EAAU,CACjD,KAAM,GAAS,EAAM,OACf,EAAY,GAAU,GAAe,GAC3C,GAAI,CAAC,EACD,OAEJ,KAAM,GAAS,GAAU,CAAC,EAAO,IAAS,CACtC,KAAM,GAAI,EAAU,YACpB,EAAS,EAAO,GACZ,EAAI,EAAU,aACd,KAEL,QACG,EAAW,GAAI,gBAAgB,GAAU,CAC3C,KAAM,GAAQ,EAAQ,GAChB,EAAQ,EAAM,YAAY,MAC1B,EAAS,EAAM,YAAY,OAC7B,IAAU,GAAK,IAAW,GAG9B,EAAO,EAAO,KAElB,SAAS,QAAQ,GACjB,GAA8B,EAAO,GAC9B,EAEX,YAAyB,EAAO,EAAM,EAAU,CACxC,GACA,EAAS,aAET,IAAS,UACT,GAAgC,GAGxC,YAA8B,EAAO,EAAM,EAAU,CACjD,KAAM,GAAS,EAAM,OACf,EAAQ,GAAW,GAAQ,CACzB,EAAM,MAAQ,MACd,EAAS,GAAgB,EAAO,KAErC,GACH,UAAY,EAAQ,EAAM,GACnB,EAEV,gBAA0B,GAAa,CACvC,eAAe,EAAQ,EAAa,CAC7B,KAAM,GAAU,GAAU,EAAO,YAAc,EAAO,WAAW,MACjE,MAAI,IAAW,EAAQ,SAAW,EAC9B,IAAW,EAAQ,GACZ,GAEJ,KAEd,eAAe,EAAS,CACjB,KAAM,GAAS,EAAQ,OACvB,GAAI,CAAC,EAAO,IACR,MAAO,GAEX,KAAM,GAAU,EAAO,IAAa,QACpC,CACI,SACA,SACF,QAAS,GAAO,CACd,KAAM,GAAQ,EAAQ,GAClB,GAAc,GACd,EAAO,gBAAgB,GAEvB,EAAO,aAAa,EAAM,KAGlC,KAAM,GAAQ,EAAQ,OAAS,GAC/B,cAAO,KAAK,GAAO,QAAS,GAAM,CAC9B,EAAO,MAAM,GAAO,EAAM,KAE9B,EAAO,MAAQ,EAAO,MACtB,MAAO,GAAO,IACP,GAEd,iBAAiB,EAAO,EAAM,EAAU,CACjC,KAAK,oBAAoB,EAAO,GAChC,KAAM,GAAU,EAAM,UAAa,GAAM,SAAW,IAM9C,EAAU,CAJZ,OAAQ,GACR,OAAQ,GACR,OAAQ,IAEa,IAAS,GAClC,EAAQ,GAAQ,EAAQ,EAAO,EAAM,GAE5C,oBAAoB,EAAO,EAAM,CAC1B,KAAM,GAAU,EAAM,UAAa,GAAM,SAAW,IAC9C,EAAQ,EAAQ,GACtB,GAAI,CAAC,EACD,OAQJ,CANiB,CACb,OAAQ,GACR,OAAQ,GACR,OAAQ,IAEa,IAAS,IAC1B,EAAO,EAAM,GACrB,EAAQ,GAAQ,OAEpB,qBAAsB,CAClB,MAAO,QAAO,iBAErB,eAAe,EAAQ,EAAO,EAAQ,EAAa,CAC5C,MAAO,IAAe,EAAQ,EAAO,EAAQ,GAEpD,WAAW,EAAQ,CACZ,KAAM,GAAY,GAAe,GACjC,MAAO,CAAC,CAAE,IAAa,EAAU,cAIzC,YAAyB,EAAQ,CAC7B,MAAI,CAAC,MAAqB,MAAO,kBAAoB,aAAe,YAAkB,iBAC3E,GAEJ,GAGX,QAAc,OACH,UAAW,SACX,eAAgB,OACvB,EACA,EACA,OAAS,GACT,QACA,YACA,gBAAgB,EAAkB,CAC9B,KAAM,CAAE,IAAI,KAAO,KAAK,SAAS,CAC7B,IACA,KACD,GACH,MAAO,CACH,IACA,KAGR,UAAW,CACP,MAAO,IAAS,KAAK,IAAM,GAAS,KAAK,GAE7C,SAAS,EAAO,EAAO,CACnB,KAAM,GAAQ,KAAK,YACnB,GAAI,CAAC,GAAS,CAAC,EAEX,MAAO,MAEX,KAAM,GAAM,GACZ,SAAM,QAAS,GAAO,CAClB,EAAI,GAAQ,EAAM,IAAS,EAAM,GAAM,SAAW,EAAM,GAAM,IAAM,KAAK,KAEtE,GAIf,YAAkB,EAAO,EAAO,CAC5B,KAAM,GAAW,EAAM,QAAQ,MACzB,EAAqB,GAAkB,GACvC,EAAa,KAAK,IAAI,EAAS,eAAiB,EAAoB,GACpE,EAAe,EAAS,MAAM,QAAU,GAAgB,GAAS,GACjE,EAAkB,EAAa,OAC/B,EAAQ,EAAa,GACrB,EAAO,EAAa,EAAkB,GACtC,EAAW,GACjB,GAAI,EAAkB,EAClB,UAAW,EAAO,EAAU,EAAc,EAAkB,GACrD,EAEX,KAAM,GAAU,GAAiB,EAAc,EAAO,GACtD,GAAI,EAAkB,EAAG,CACrB,GAAI,GAAG,EACP,KAAM,GAAkB,EAAkB,EAAI,KAAK,MAAO,GAAO,GAAU,GAAkB,IAAM,KAEnG,IADA,GAAK,EAAO,EAAU,EAAS,GAAc,GAAmB,EAAI,EAAQ,EAAiB,GACzF,EAAI,EAAG,EAAO,EAAkB,EAAG,EAAI,EAAM,IAC7C,GAAK,EAAO,EAAU,EAAS,EAAa,GAAI,EAAa,EAAI,IAErE,UAAK,EAAO,EAAU,EAAS,EAAM,GAAc,GAAmB,EAAM,OAAS,EAAO,GACrF,EAEX,UAAK,EAAO,EAAU,GACf,EAEX,YAA2B,EAAO,CAC9B,KAAM,GAAS,EAAM,QAAQ,OACvB,EAAa,EAAM,YACnB,EAAW,EAAM,QAAU,EAAc,GAAS,EAAI,GACtD,EAAW,EAAM,WAAa,EACpC,MAAO,MAAK,MAAM,KAAK,IAAI,EAAU,IAExC,YAA0B,EAAc,EAAO,EAAY,CACxD,KAAM,GAAmB,GAAe,GAClC,EAAU,EAAM,OAAS,EAC/B,GAAI,CAAC,EACD,MAAO,MAAK,IAAI,EAAS,GAE7B,KAAM,GAAU,GAAW,GAC3B,OAAQ,GAAI,EAAG,EAAO,EAAQ,OAAS,EAAG,EAAI,EAAM,IAAI,CACpD,KAAM,GAAS,EAAQ,GACvB,GAAI,EAAS,EACT,MAAO,GAGf,MAAO,MAAK,IAAI,EAAS,GAE5B,YAAyB,EAAO,CAC7B,KAAM,GAAS,GACf,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,IAClC,EAAM,GAAG,OACT,EAAO,KAAK,GAGpB,MAAO,GAEV,YAAoB,EAAO,EAAU,EAAc,EAAS,CACzD,GAAI,GAAQ,EACR,EAAO,EAAa,GACpB,EAEJ,IADA,EAAU,KAAK,KAAK,GAChB,EAAI,EAAG,EAAI,EAAM,OAAQ,IACrB,IAAM,GACN,GAAS,KAAK,EAAM,IACpB,IACA,EAAO,EAAa,EAAQ,IAIvC,YAAc,EAAO,EAAU,EAAS,EAAY,EAAU,CAC3D,KAAM,GAAQ,GAAe,EAAY,GACnC,EAAM,KAAK,IAAI,GAAe,EAAU,EAAM,QAAS,EAAM,QACnE,GAAI,GAAQ,EACR,EAAQ,EAAG,EAOf,IANA,EAAU,KAAK,KAAK,GAChB,GACA,GAAS,EAAW,EACpB,EAAU,EAAS,KAAK,MAAM,EAAS,IAE3C,EAAO,EACD,EAAO,GACT,IACA,EAAO,KAAK,MAAM,EAAQ,EAAQ,GAEtC,IAAI,EAAI,KAAK,IAAI,EAAO,GAAI,EAAI,EAAK,IAC7B,IAAM,GACN,GAAS,KAAK,EAAM,IACpB,IACA,EAAO,KAAK,MAAM,EAAQ,EAAQ,IAI7C,YAAwB,EAAK,CAC1B,KAAM,GAAM,EAAI,OAChB,GAAI,GAAG,EACP,GAAI,EAAM,EACN,MAAO,GAEX,IAAI,EAAO,EAAI,GAAI,EAAI,EAAG,EAAI,EAAK,EAAE,EACjC,GAAI,EAAI,GAAK,EAAI,EAAI,KAAO,EACxB,MAAO,GAGf,MAAO,GAGX,KAAM,IAAgB,GAAQ,IAAU,OAAS,QAAU,IAAU,QAAU,OAAS,EAClF,GAAiB,CAAC,EAAO,EAAM,IAAS,IAAS,OAAS,IAAS,OAAS,EAAM,GAAQ,EAAS,EAAM,GAAQ,EACjH,GAAgB,CAAC,EAAa,IAAgB,KAAK,IAAI,GAAiB,EAAa,GAC1F,YAAgB,EAAK,EAAU,CAC5B,KAAM,GAAS,GACT,EAAY,EAAI,OAAS,EACzB,EAAM,EAAI,OAChB,GAAI,GAAI,EACR,KAAM,EAAI,EAAK,GAAK,EAChB,EAAO,KAAK,EAAI,KAAK,MAAM,KAE/B,MAAO,GAEV,YAA6B,EAAO,EAAO,EAAiB,CACzD,KAAM,GAAS,EAAM,MAAM,OACrB,EAAa,KAAK,IAAI,EAAO,EAAS,GACtC,EAAQ,EAAM,YACd,EAAM,EAAM,UACZ,EAAU,KAChB,GAAI,GAAY,EAAM,gBAAgB,GAClC,EACJ,GAAI,KACA,CAAI,IAAW,EACX,EAAS,KAAK,IAAI,EAAY,EAAO,EAAM,GACpC,IAAU,EACjB,EAAU,GAAM,gBAAgB,GAAK,GAAa,EAElD,EAAU,GAAY,EAAM,gBAAgB,EAAa,IAAM,EAEnE,GAAa,EAAa,EAAQ,EAAS,CAAC,EACxC,EAAY,EAAQ,GAAW,EAAY,EAAM,IAIzD,MAAO,GAEV,YAAwB,EAAQ,EAAQ,CACrC,GAAK,EAAS,GAAQ,CAClB,KAAM,GAAK,EAAM,GACX,EAAQ,EAAG,OAAS,EAC1B,GAAI,GACJ,GAAI,EAAQ,EAAQ,CAChB,IAAI,EAAI,EAAG,EAAI,EAAO,EAAE,EACpB,MAAO,GAAM,KAAK,EAAG,IAEzB,EAAG,OAAO,EAAG,MAIxB,YAA2B,EAAS,CACjC,MAAO,GAAQ,UAAY,EAAQ,WAAa,EAEnD,YAAwB,EAAS,EAAU,CACxC,GAAI,CAAC,EAAQ,QACT,MAAO,GAEX,KAAM,GAAO,GAAO,EAAQ,KAAM,GAC5B,EAAU,GAAU,EAAQ,SAElC,MAAO,IADe,EAAQ,MAAQ,EAAQ,KAAK,OAAS,GAC7C,EAAK,WAAa,EAAQ,OAE7C,YAA4B,EAAQ,EAAO,CACvC,MAAO,IAAc,EAAQ,CACzB,QACA,KAAM,UAGd,YAA2B,EAAQ,EAAO,EAAM,CAC5C,MAAO,IAAc,EAAQ,CACzB,OACA,QACA,KAAM,SAGd,YAAoB,EAAO,EAAU,EAAS,CACzC,GAAI,GAAM,GAAmB,GAC9B,MAAI,IAAW,IAAa,SAAW,CAAC,GAAW,IAAa,UAC5D,GAAM,GAAa,IAEhB,EAEX,YAAmB,EAAO,EAAQ,EAAU,EAAO,CAC/C,KAAM,CAAE,MAAM,OAAO,SAAS,QAAQ,SAAW,EAC3C,CAAE,YAAY,UAAY,EAChC,GAAI,GAAW,EACX,EAAU,EAAQ,EACtB,KAAM,GAAS,EAAS,EAClB,EAAQ,EAAQ,EACtB,GAAI,EAAM,eAAgB,CAEtB,GADA,EAAS,GAAe,EAAO,EAAM,GACjC,GAAS,GAAW,CACpB,KAAM,GAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,GACvB,EAAS,EAAO,GAAgB,iBAAiB,IAAS,EAAS,MAC5D,KAAa,SACpB,EAAU,GAAU,OAAS,EAAU,KAAO,EAAI,EAAS,EAE3D,EAAS,GAAe,EAAO,EAAU,GAE7C,EAAW,EAAQ,MAChB,CACH,GAAI,GAAS,GAAW,CACpB,KAAM,GAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,GACvB,EAAS,EAAO,GAAgB,iBAAiB,IAAS,EAAQ,MAC3D,KAAa,SACpB,EAAU,GAAU,KAAO,EAAU,OAAS,EAAI,EAAQ,EAE1D,EAAS,GAAe,EAAO,EAAU,GAE7C,EAAS,GAAe,EAAO,EAAQ,GACvC,EAAW,IAAa,OAAS,CAAC,GAAU,GAEhD,MAAO,CACH,SACA,SACA,WACA,YAGR,gBAAoB,GAAQ,CACxB,YAAY,EAAI,CACZ,QACC,KAAK,GAAK,EAAI,GACd,KAAK,KAAO,EAAI,KAChB,KAAK,QAAU,OACf,KAAK,IAAM,EAAI,IACf,KAAK,MAAQ,EAAI,MACjB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,OAAS,OACf,KAAK,SAAW,CACZ,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,GAEX,KAAK,SAAW,OAChB,KAAK,UAAY,OACjB,KAAK,WAAa,OAClB,KAAK,cAAgB,OACrB,KAAK,YAAc,OACnB,KAAK,aAAe,OACpB,KAAK,KAAO,OACZ,KAAK,cAAgB,OACtB,KAAK,IAAM,OACX,KAAK,IAAM,OACX,KAAK,OAAS,OACb,KAAK,MAAQ,GACb,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,YAAc,KACpB,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,kBAAoB,GACxB,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,eAAiB,GACtB,KAAK,SAAW,OAChB,KAAK,SAAW,OAChB,KAAK,cAAgB,OACrB,KAAK,cAAgB,OACrB,KAAK,aAAe,EACpB,KAAK,aAAe,EACpB,KAAK,OAAS,GACd,KAAK,kBAAoB,GACzB,KAAK,SAAW,OAEvB,KAAK,EAAS,CACP,KAAK,QAAU,EAAQ,WAAW,KAAK,cACvC,KAAK,KAAO,EAAQ,KACpB,KAAK,SAAW,KAAK,MAAM,EAAQ,KACnC,KAAK,SAAW,KAAK,MAAM,EAAQ,KACnC,KAAK,cAAgB,KAAK,MAAM,EAAQ,cACxC,KAAK,cAAgB,KAAK,MAAM,EAAQ,cAE/C,MAAM,EAAK,EAAO,CACX,MAAO,GAEd,eAAgB,CACT,GAAI,CAAE,WAAW,WAAW,gBAAgB,iBAAmB,KAC/D,SAAW,GAAgB,EAAU,OAAO,mBAC5C,EAAW,GAAgB,EAAU,OAAO,mBAC5C,EAAgB,GAAgB,EAAe,OAAO,mBACtD,EAAgB,GAAgB,EAAe,OAAO,mBAC/C,CACH,IAAK,GAAgB,EAAU,GAC/B,IAAK,GAAgB,EAAU,GAC/B,WAAY,GAAe,GAC3B,WAAY,GAAe,IAGtC,UAAU,EAAU,CACb,GAAI,CAAE,MAAM,MAAM,aAAa,cAAgB,KAAK,gBAChD,EACJ,GAAI,GAAc,EACd,MAAO,CACH,MACA,OAGR,KAAM,GAAQ,KAAK,0BACnB,OAAQ,GAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EAC5C,EAAQ,EAAM,GAAG,WAAW,UAAU,KAAM,GACvC,GACD,GAAM,KAAK,IAAI,EAAK,EAAM,MAEzB,GACD,GAAM,KAAK,IAAI,EAAK,EAAM,MAGlC,SAAM,GAAc,EAAM,EAAM,EAAM,EACtC,EAAM,GAAc,EAAM,EAAM,EAAM,EAC/B,CACH,IAAK,GAAgB,EAAK,GAAgB,EAAK,IAC/C,IAAK,GAAgB,EAAK,GAAgB,EAAK,KAG1D,YAAa,CACN,MAAO,CACH,KAAM,KAAK,aAAe,EAC1B,IAAK,KAAK,YAAc,EACxB,MAAO,KAAK,cAAgB,EAC5B,OAAQ,KAAK,eAAiB,GAGzC,UAAW,CACJ,MAAO,MAAK,MAEnB,WAAY,CACL,KAAM,GAAO,KAAK,MAAM,KACxB,MAAO,MAAK,QAAQ,QAAW,MAAK,eAAiB,EAAK,QAAU,EAAK,UAAY,EAAK,QAAU,GAE3G,cAAc,EAAY,KAAK,MAAM,UAAW,CAEzC,MADc,MAAK,aAAgB,MAAK,YAAc,KAAK,mBAAmB,IAGlF,cAAe,CACX,KAAK,OAAS,GACd,KAAK,kBAAoB,GAE7B,cAAe,CACX,GAAS,KAAK,QAAQ,aAAc,CAChC,OAGX,OAAO,EAAU,EAAW,EAAS,CAC9B,KAAM,CAAE,cAAc,QAAQ,MAAO,GAAc,KAAK,QAClD,EAAa,EAAS,WAC5B,KAAK,eACL,KAAK,SAAW,EAChB,KAAK,UAAY,EACjB,KAAK,SAAW,EAAU,OAAO,OAAO,CACpC,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,GACT,GACH,KAAK,MAAQ,KACb,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,sBACL,KAAK,gBACL,KAAK,qBACL,KAAK,WAAa,KAAK,eAAiB,KAAK,MAAQ,EAAQ,KAAO,EAAQ,MAAQ,KAAK,OAAS,EAAQ,IAAM,EAAQ,OACnH,KAAK,mBACN,MAAK,mBACL,KAAK,sBACL,KAAK,kBACL,KAAK,OAAS,GAAU,KAAM,EAAO,GACrC,KAAK,kBAAoB,IAE7B,KAAK,mBACL,KAAK,MAAQ,KAAK,cAAgB,GAClC,KAAK,kBACL,KAAM,GAAkB,EAAa,KAAK,MAAM,OAChD,KAAK,sBAAsB,EAAkB,GAAO,KAAK,MAAO,GAAc,KAAK,OACnF,KAAK,YACL,KAAK,+BACL,KAAK,yBACL,KAAK,8BACD,EAAS,SAAY,GAAS,UAAY,EAAS,SAAW,SAC9D,MAAK,MAAQ,GAAS,KAAM,KAAK,OACjC,KAAK,YAAc,KACnB,KAAK,iBAEL,GACA,KAAK,sBAAsB,KAAK,OAEpC,KAAK,YACL,KAAK,MACL,KAAK,WACL,KAAK,cAEZ,WAAY,CACL,GAAI,GAAgB,KAAK,QAAQ,QAC7B,EAAY,EACZ,KAAK,eACL,GAAa,KAAK,KAClB,EAAW,KAAK,OAEhB,GAAa,KAAK,IAClB,EAAW,KAAK,OAChB,EAAgB,CAAC,GAErB,KAAK,YAAc,EACnB,KAAK,UAAY,EACjB,KAAK,eAAiB,EACtB,KAAK,QAAU,EAAW,EAC1B,KAAK,eAAiB,KAAK,QAAQ,cAEvC,aAAc,CACV,GAAS,KAAK,QAAQ,YAAa,CAC/B,OAGR,qBAAsB,CAClB,GAAS,KAAK,QAAQ,oBAAqB,CACvC,OAGR,eAAgB,CACR,KAAK,eACL,MAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,EACZ,KAAK,MAAQ,KAAK,OAElB,MAAK,OAAS,KAAK,UACnB,KAAK,IAAM,EACX,KAAK,OAAS,KAAK,QAEvB,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,aAAe,EACpB,KAAK,cAAgB,EAEzB,oBAAqB,CACjB,GAAS,KAAK,QAAQ,mBAAoB,CACtC,OAGR,WAAW,EAAM,CACb,KAAK,MAAM,cAAc,EAAM,KAAK,cACpC,GAAS,KAAK,QAAQ,GAAO,CACzB,OAGR,kBAAmB,CACf,KAAK,WAAW,oBAEpB,qBAAsB,EACtB,iBAAkB,CACd,KAAK,WAAW,mBAEpB,kBAAmB,CACf,KAAK,WAAW,oBAEvB,YAAa,CACN,MAAO,GAEX,iBAAkB,CACd,KAAK,WAAW,mBAEpB,6BAA8B,CAC1B,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,OAGX,mBAAmB,EAAO,CACnB,KAAM,GAAW,KAAK,QAAQ,MAC9B,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,IACtC,EAAO,EAAM,GACb,EAAK,MAAQ,GAAS,EAAS,SAAU,CACrC,EAAK,MACL,EACA,GACD,MAGX,4BAA6B,CACzB,GAAS,KAAK,QAAQ,2BAA4B,CAC9C,OAGR,8BAA+B,CAC3B,GAAS,KAAK,QAAQ,6BAA8B,CAChD,OAGR,wBAAyB,CACrB,KAAM,GAAU,KAAK,QACf,EAAW,EAAQ,MACnB,EAAW,GAAc,KAAK,MAAM,OAAQ,EAAQ,MAAM,eAC1D,EAAc,EAAS,aAAe,EACtC,EAAc,EAAS,YAC7B,GAAI,GAAgB,EAChB,EAAW,EAAW,EAC1B,GAAI,CAAC,KAAK,cAAgB,CAAC,EAAS,SAAW,GAAe,GAAe,GAAY,GAAK,CAAC,KAAK,eAAgB,CAChH,KAAK,cAAgB,EACrB,OAEJ,KAAM,GAAa,KAAK,iBAClB,EAAgB,EAAW,OAAO,MAClC,EAAiB,EAAW,QAAQ,OACpC,EAAW,GAAY,KAAK,MAAM,MAAQ,EAAe,EAAG,KAAK,UACvE,EAAY,EAAQ,OAAS,KAAK,SAAW,EAAW,EAAY,GAAW,GAC3E,EAAgB,EAAI,GACpB,GAAY,EAAY,GAAY,GAAQ,OAAS,GAAM,IAC3D,EAAY,KAAK,UAAY,GAAkB,EAAQ,MAAQ,EAAS,QAAU,GAAe,EAAQ,MAAO,KAAK,MAAM,QAAQ,MACnI,EAAmB,KAAK,KAAK,EAAgB,EAAgB,EAAiB,GAC9E,EAAgB,GAAU,KAAK,IAAI,KAAK,KAAK,GAAa,GAAW,QAAQ,OAAS,GAAK,EAAW,GAAI,IAAK,KAAK,KAAK,GAAY,EAAY,EAAkB,GAAI,IAAM,KAAK,KAAK,GAAY,EAAiB,EAAkB,GAAI,MAC1O,EAAgB,KAAK,IAAI,EAAa,KAAK,IAAI,EAAa,KAEhE,KAAK,cAAgB,EAEzB,6BAA8B,CAC1B,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,OAGR,eAAgB,EAChB,WAAY,CACR,GAAS,KAAK,QAAQ,UAAW,CAC7B,OAGR,KAAM,CACF,KAAM,GAAU,CACZ,MAAO,EACP,OAAQ,GAEN,CAAE,QAAQ,QAAS,CAAE,MAAO,EAAW,MAAO,EAAY,KAAM,IAAiB,KACjF,EAAU,KAAK,aACf,EAAe,KAAK,eAC1B,GAAI,EAAS,CACT,KAAM,GAAc,GAAe,EAAW,EAAM,QAAQ,MAQ5D,GAPI,EACA,GAAQ,MAAQ,KAAK,SACrB,EAAQ,OAAS,GAAkB,GAAY,GAE/C,GAAQ,OAAS,KAAK,UACtB,EAAQ,MAAQ,GAAkB,GAAY,GAE9C,EAAS,SAAW,KAAK,MAAM,OAAQ,CACvC,KAAM,CAAE,QAAQ,OAAO,SAAS,WAAa,KAAK,iBAC5C,EAAc,EAAS,QAAU,EACjC,EAAe,GAAU,KAAK,eAC9B,EAAM,KAAK,IAAI,GACf,EAAM,KAAK,IAAI,GACrB,GAAI,EAAc,CACd,KAAM,GAAc,EAAS,OAAS,EAAI,EAAM,EAAO,MAAQ,EAAM,EAAQ,OAC7E,EAAQ,OAAS,KAAK,IAAI,KAAK,UAAW,EAAQ,OAAS,EAAc,OACtE,CACH,KAAM,GAAa,EAAS,OAAS,EAAI,EAAM,EAAO,MAAQ,EAAM,EAAQ,OAC5E,EAAQ,MAAQ,KAAK,IAAI,KAAK,SAAU,EAAQ,MAAQ,EAAa,GAEzE,KAAK,kBAAkB,EAAO,EAAM,EAAK,IAGjD,KAAK,iBACD,EACA,MAAK,MAAQ,KAAK,QAAU,EAAM,MAAQ,KAAK,SAAS,KAAO,KAAK,SAAS,MAC7E,KAAK,OAAS,EAAQ,QAEtB,MAAK,MAAQ,EAAQ,MACrB,KAAK,OAAS,KAAK,QAAU,EAAM,OAAS,KAAK,SAAS,IAAM,KAAK,SAAS,QAGtF,kBAAkB,EAAO,EAAM,EAAK,EAAK,CACrC,KAAM,CAAE,MAAO,CAAE,QAAQ,WAAa,YAAc,KAAK,QACnD,EAAY,KAAK,gBAAkB,EACnC,EAAmB,IAAa,OAAS,KAAK,OAAS,IAC7D,GAAI,KAAK,eAAgB,CACrB,KAAM,GAAa,KAAK,gBAAgB,GAAK,KAAK,KAC5C,EAAc,KAAK,MAAQ,KAAK,gBAAgB,KAAK,MAAM,OAAS,GAC1E,GAAI,GAAc,EACd,EAAe,EACf,EACI,EACA,GAAc,EAAM,EAAM,MAC1B,EAAe,EAAM,EAAK,QAE1B,GAAc,EAAM,EAAM,OAC1B,EAAe,EAAM,EAAK,OAEvB,IAAU,QACjB,EAAe,EAAK,MACb,IAAU,MACjB,EAAc,EAAM,MACb,IAAU,SACjB,GAAc,EAAM,MAAQ,EAC5B,EAAe,EAAK,MAAQ,GAEhC,KAAK,YAAc,KAAK,IAAK,GAAc,EAAa,GAAW,KAAK,MAAS,MAAK,MAAQ,GAAa,GAC3G,KAAK,aAAe,KAAK,IAAK,GAAe,EAAc,GAAW,KAAK,MAAS,MAAK,MAAQ,GAAc,OAC5G,CACH,GAAI,GAAa,EAAK,OAAS,EAC3B,EAAgB,EAAM,OAAS,EAC/B,IAAU,QACV,GAAa,EACb,EAAgB,EAAM,QACf,IAAU,OACjB,GAAa,EAAK,OAClB,EAAgB,GAEpB,KAAK,WAAa,EAAa,EAC/B,KAAK,cAAgB,EAAgB,GAGhD,gBAAiB,CACN,KAAK,UACL,MAAK,SAAS,KAAO,KAAK,IAAI,KAAK,YAAa,KAAK,SAAS,MAC9D,KAAK,SAAS,IAAM,KAAK,IAAI,KAAK,WAAY,KAAK,SAAS,KAC5D,KAAK,SAAS,MAAQ,KAAK,IAAI,KAAK,aAAc,KAAK,SAAS,OAChE,KAAK,SAAS,OAAS,KAAK,IAAI,KAAK,cAAe,KAAK,SAAS,SAG1E,UAAW,CACP,GAAS,KAAK,QAAQ,SAAU,CAC5B,OAGX,cAAe,CACR,KAAM,CAAE,OAAO,YAAc,KAAK,QAClC,MAAO,KAAa,OAAS,IAAa,UAAY,IAAS,IAEtE,YAAa,CACN,MAAO,MAAK,QAAQ,SAE3B,sBAAsB,EAAO,CACtB,KAAK,8BACL,KAAK,mBAAmB,GACxB,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,IAClC,GAAc,EAAM,GAAG,QACvB,GAAM,OAAO,EAAG,GAChB,IACA,KAGR,KAAK,6BAEZ,gBAAiB,CACV,GAAI,GAAa,KAAK,YACtB,GAAI,CAAC,EAAY,CACb,KAAM,GAAa,KAAK,QAAQ,MAAM,WACtC,GAAI,GAAQ,KAAK,MACb,EAAa,EAAM,QACnB,GAAQ,GAAO,EAAO,IAE1B,KAAK,YAAc,EAAa,KAAK,mBAAmB,EAAO,EAAM,OAAQ,KAAK,QAAQ,MAAM,eAEpG,MAAO,GAEd,mBAAmB,EAAO,EAAQ,EAAe,CAC1C,KAAM,CAAE,MAAM,kBAAmB,GAAY,KACvC,EAAS,GACT,EAAU,GACV,EAAY,KAAK,MAAM,EAAS,GAAc,EAAQ,IAC5D,GAAI,GAAkB,EAClB,EAAmB,EACnB,EAAG,EAAG,EAAM,EAAO,EAAU,EAAY,EAAO,GAAY,GAAO,EAAQ,GAC/E,IAAI,EAAI,EAAG,EAAI,EAAQ,GAAK,EAAU,CAUlC,GATA,EAAQ,EAAM,GAAG,MACjB,EAAW,KAAK,wBAAwB,GACxC,EAAI,KAAO,EAAa,EAAS,OACjC,EAAQ,EAAO,GAAc,EAAO,IAAe,CAC/C,KAAM,GACN,GAAI,IAER,GAAa,EAAS,WACtB,GAAQ,EAAS,EACb,CAAC,GAAc,IAAU,CAAC,GAAQ,GAClC,GAAQ,GAAa,EAAK,EAAM,KAAM,EAAM,GAAI,GAAO,GACvD,EAAS,WACF,GAAQ,GACf,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EACxC,GAAe,EAAM,GACjB,CAAC,GAAc,KAAgB,CAAC,GAAQ,KACxC,IAAQ,GAAa,EAAK,EAAM,KAAM,EAAM,GAAI,GAAO,IACvD,GAAU,IAItB,EAAO,KAAK,IACZ,EAAQ,KAAK,GACb,EAAkB,KAAK,IAAI,GAAO,GAClC,EAAmB,KAAK,IAAI,EAAQ,GAExC,GAAe,EAAQ,GACvB,KAAM,IAAS,EAAO,QAAQ,GACxB,GAAU,EAAQ,QAAQ,GAC1B,GAAW,IAAO,EAChB,MAAO,EAAO,KAAQ,EACtB,OAAQ,EAAQ,KAAQ,IAEhC,MAAO,CACH,MAAO,GAAQ,GACf,KAAM,GAAQ,EAAS,GACvB,OAAQ,GAAQ,IAChB,QAAS,GAAQ,IACjB,SACA,WAGX,iBAAiB,EAAO,CACjB,MAAO,GAEd,iBAAiB,EAAO,EAAO,CACxB,MAAO,KAEd,iBAAiB,EAAO,EACxB,gBAAgB,EAAO,CAChB,KAAM,GAAQ,KAAK,MACnB,MAAI,GAAQ,GAAK,EAAQ,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiB,EAAM,GAAO,OAEjD,mBAAmB,EAAS,CACjB,KAAK,gBACL,GAAU,EAAI,GAElB,KAAM,GAAQ,KAAK,YAAc,EAAU,KAAK,QAChD,MAAO,IAAY,KAAK,eAAiB,GAAY,KAAK,MAAO,EAAO,GAAK,GAEpF,mBAAmB,EAAO,CACnB,KAAM,GAAW,GAAQ,KAAK,aAAe,KAAK,QAClD,MAAO,MAAK,eAAiB,EAAI,EAAU,EAElD,cAAe,CACR,MAAO,MAAK,iBAAiB,KAAK,gBAEzC,cAAe,CACR,KAAM,CAAE,MAAM,OAAS,KACvB,MAAO,GAAM,GAAK,EAAM,EAAI,EAAM,EAAM,GAAK,EAAM,EAAI,EAAM,EAEpE,WAAW,EAAO,CACX,KAAM,GAAQ,KAAK,OAAS,GAC5B,GAAI,GAAS,GAAK,EAAQ,EAAM,OAAQ,CACpC,KAAM,GAAO,EAAM,GACnB,MAAO,GAAK,UAAa,GAAK,SAAW,GAAkB,KAAK,aAAc,EAAO,IAEzF,MAAO,MAAK,UAAa,MAAK,SAAW,GAAmB,KAAK,MAAM,aAAc,OAE5F,WAAY,CACL,KAAM,GAAc,KAAK,QAAQ,MAC3B,EAAM,GAAU,KAAK,eACrB,EAAM,KAAK,IAAI,KAAK,IAAI,IACxB,EAAM,KAAK,IAAI,KAAK,IAAI,IACxB,EAAa,KAAK,iBAClB,EAAU,EAAY,iBAAmB,EACzC,EAAI,EAAa,EAAW,OAAO,MAAQ,EAAU,EACrD,EAAI,EAAa,EAAW,QAAQ,OAAS,EAAU,EAC7D,MAAO,MAAK,eAAiB,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAAM,EAAI,EAE9G,YAAa,CACN,KAAM,GAAU,KAAK,QAAQ,QAC7B,MAAI,KAAY,OACL,CAAC,CAAC,EAEN,KAAK,0BAA0B,OAAS,EAEtD,sBAAsB,EAAW,CAC1B,KAAM,GAAO,KAAK,KACZ,EAAQ,KAAK,MACb,EAAU,KAAK,QACf,CAAE,OAAO,WAAW,UAAY,EAChC,EAAS,EAAK,OACd,EAAe,KAAK,eAEpB,EAAc,KADD,MACO,OAAU,GAAS,EAAI,GAC3C,EAAK,GAAkB,GACvB,EAAQ,GACR,EAAa,EAAO,WAAW,KAAK,cACpC,EAAY,EAAW,QAAU,EAAW,MAAQ,EACpD,EAAgB,EAAY,EAC5B,EAAmB,SAAS,GAAO,CACrC,MAAO,IAAY,EAAO,GAAO,IAErC,GAAI,IAAa,GAAG,EAAW,GAC3B,GAAK,GAAK,GAAK,GAAK,GAAI,GAAI,GAAI,GACpC,GAAI,IAAa,MACb,GAAc,EAAiB,KAAK,QACpC,GAAM,KAAK,OAAS,EACpB,GAAM,GAAc,EACpB,GAAK,EAAiB,EAAU,KAAO,EACvC,GAAK,EAAU,eACR,IAAa,SACpB,GAAc,EAAiB,KAAK,KACpC,GAAK,EAAU,IACf,GAAK,EAAiB,EAAU,QAAU,EAC1C,GAAM,GAAc,EACpB,GAAM,KAAK,IAAM,UACV,IAAa,OACpB,GAAc,EAAiB,KAAK,OACpC,GAAM,KAAK,MAAQ,EACnB,GAAM,GAAc,EACpB,GAAK,EAAiB,EAAU,MAAQ,EACxC,GAAK,EAAU,cACR,IAAa,QACpB,GAAc,EAAiB,KAAK,MACpC,GAAK,EAAU,KACf,GAAK,EAAiB,EAAU,OAAS,EACzC,GAAM,GAAc,EACpB,GAAM,KAAK,KAAO,UACX,IAAS,IAAK,CACrB,GAAI,IAAa,SACb,GAAc,EAAkB,GAAU,IAAM,EAAU,QAAU,EAAI,YACjE,GAAS,GAAW,CAC3B,KAAM,IAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,IACvB,GAAc,EAAiB,KAAK,MAAM,OAAO,IAAgB,iBAAiB,KAEtF,GAAK,EAAU,IACf,GAAK,EAAU,OACf,GAAM,GAAc,EACpB,GAAM,GAAM,UACL,IAAS,IAAK,CACrB,GAAI,IAAa,SACb,GAAc,EAAkB,GAAU,KAAO,EAAU,OAAS,WAC7D,GAAS,GAAW,CAC3B,KAAM,IAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,IACvB,GAAc,EAAiB,KAAK,MAAM,OAAO,IAAgB,iBAAiB,KAEtF,GAAM,GAAc,EACpB,GAAM,GAAM,EACZ,GAAK,EAAU,KACf,GAAK,EAAU,MAEnB,KAAM,IAAQ,GAAe,EAAQ,MAAM,cAAe,GACpD,GAAO,KAAK,IAAI,EAAG,KAAK,KAAK,EAAc,KACjD,IAAI,GAAI,EAAG,GAAI,EAAa,IAAK,GAAK,CAClC,KAAM,IAAU,KAAK,WAAW,IAC1B,GAAc,EAAK,WAAW,IAC9B,GAAoB,EAAO,WAAW,IACtC,GAAY,GAAY,UACxB,GAAY,GAAY,MACxB,GAAa,GAAkB,MAAQ,GACvC,GAAmB,GAAkB,WACrC,GAAY,GAAY,UACxB,GAAY,GAAY,UACxB,GAAiB,GAAY,gBAAkB,GAC/C,GAAuB,GAAY,qBAEzC,EADY,GAAoB,KAAM,GAAG,GACrC,IAAc,QAGlB,IAAmB,GAAY,EAAO,EAAW,IAC7C,EACA,GAAM,GAAM,GAAK,GAAK,GAEtB,GAAM,GAAM,GAAK,GAAK,GAE1B,EAAM,KAAK,CACP,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MAAO,GACP,MAAO,GACP,cACA,oBACA,aACA,aACA,kBACA,2BAGR,YAAK,aAAe,EACpB,KAAK,aAAe,GACb,EAEd,mBAAmB,EAAW,CACvB,KAAM,GAAO,KAAK,KACZ,EAAU,KAAK,QACf,CAAE,WAAW,MAAO,GAAiB,EACrC,EAAe,KAAK,eACpB,EAAQ,KAAK,MACb,CAAE,QAAQ,aAAa,UAAU,UAAY,EAC7C,EAAK,GAAkB,EAAQ,MAC/B,EAAiB,EAAK,EACtB,EAAkB,EAAS,CAAC,EAAU,EACtC,EAAW,CAAC,GAAU,KAAK,eAC3B,EAAQ,GACd,GAAI,GAAG,GAAM,GAAM,EAAO,GAAG,GAAG,GAAW,GAAO,GAAM,GAAY,GAAW,GAC3E,GAAe,SACnB,GAAI,IAAa,MACb,GAAI,KAAK,OAAS,EAClB,GAAY,KAAK,kCACV,IAAa,SACpB,GAAI,KAAK,IAAM,EACf,GAAY,KAAK,kCACV,IAAa,OAAQ,CAC5B,KAAM,IAAM,KAAK,wBAAwB,GACzC,GAAY,GAAI,UAChB,GAAI,GAAI,UACD,IAAa,QAAS,CAC7B,KAAM,IAAM,KAAK,wBAAwB,GACzC,GAAY,GAAI,UAChB,GAAI,GAAI,UACD,IAAS,IAAK,CACrB,GAAI,IAAa,SACb,GAAK,GAAU,IAAM,EAAU,QAAU,EAAI,UACtC,GAAS,GAAW,CAC3B,KAAM,IAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,IACvB,GAAI,KAAK,MAAM,OAAO,IAAgB,iBAAiB,IAAS,EAEpE,GAAY,KAAK,kCACV,IAAS,IAAK,CACrB,GAAI,IAAa,SACb,GAAK,GAAU,KAAO,EAAU,OAAS,EAAI,UACtC,GAAS,GAAW,CAC3B,KAAM,IAAiB,OAAO,KAAK,GAAU,GACvC,GAAQ,EAAS,IACvB,GAAI,KAAK,MAAM,OAAO,IAAgB,iBAAiB,IAE3D,GAAY,KAAK,wBAAwB,GAAI,UAE7C,IAAS,KACT,CAAI,IAAU,QACV,GAAe,MACR,IAAU,OACjB,IAAe,WAGvB,KAAM,IAAa,KAAK,iBACxB,IAAI,EAAI,EAAG,GAAO,EAAM,OAAQ,EAAI,GAAM,EAAE,EAAE,CAC1C,GAAO,EAAM,GACb,EAAQ,GAAK,MACb,KAAM,IAAc,EAAY,WAAW,KAAK,WAAW,IAC3D,GAAQ,KAAK,gBAAgB,GAAK,EAAY,YAC9C,GAAO,KAAK,wBAAwB,GACpC,GAAa,GAAK,WAClB,GAAY,GAAQ,GAAS,EAAM,OAAS,EAC5C,KAAM,IAAY,GAAY,EACxB,GAAQ,GAAY,MACpB,GAAc,GAAY,gBAC1B,GAAc,GAAY,gBAChC,GAAI,IAAgB,GAChB,EACA,IAAI,GACA,KAAc,SACd,CAAI,IAAM,GAAO,EACb,GAAiB,KAAK,QAAQ,QAAoB,OAAV,QACjC,IAAM,EACb,GAAiB,KAAK,QAAQ,QAAmB,QAAT,OAExC,GAAgB,UAGpB,IAAa,MACT,IAAe,QAAU,IAAa,EACtC,GAAa,CAAC,GAAY,GAAa,GAAa,EAC7C,IAAe,SACtB,GAAa,CAAC,GAAW,QAAQ,OAAS,EAAI,GAAY,GAAa,GAEvE,GAAa,CAAC,GAAW,QAAQ,OAAS,GAAa,EAGvD,IAAe,QAAU,IAAa,EACtC,GAAa,GAAa,EACnB,IAAe,SACtB,GAAa,GAAW,QAAQ,OAAS,EAAI,GAAY,GAEzD,GAAa,GAAW,QAAQ,OAAS,GAAY,GAGzD,GACA,KAAc,IAEd,IAAa,GAAK,CAAC,GAAY,mBAC/B,KAAK,GAAa,EAAI,KAAK,IAAI,KAGnC,IAAI,GACJ,GAAc,GAAI,IAAa,GAAa,GAEhD,GAAI,IACJ,GAAI,GAAY,kBAAmB,CAC/B,KAAM,IAAe,GAAU,GAAY,iBACrC,GAAS,GAAW,QAAQ,GAC5B,GAAQ,GAAW,OAAO,GAChC,GAAI,IAAM,GAAa,GAAa,IAChC,GAAO,EAAI,GAAa,KAC5B,OAAO,QACE,SACD,IAAO,GAAS,EAChB,UACC,SACD,IAAO,GACP,MAER,OAAO,QACE,SACD,IAAQ,GAAQ,EAChB,UACC,QACD,IAAQ,GACR,MAER,GAAW,CACP,QACA,OACA,MAAO,GAAQ,GAAa,MAC5B,OAAQ,GAAS,GAAa,OAC9B,MAAO,GAAY,eAG3B,EAAM,KAAK,CACP,QACA,QACA,cACA,QAAS,CACL,WACA,SACA,eACA,eACA,UAAW,GACX,gBACA,YAAa,CACT,GACA,IAEJ,eAIZ,MAAO,GAEX,yBAA0B,CACtB,KAAM,CAAE,WAAW,SAAW,KAAK,QAEnC,GADiB,CAAC,GAAU,KAAK,eAE7B,MAAO,KAAa,MAAQ,OAAS,QAEzC,GAAI,GAAQ,SACZ,MAAI,GAAM,QAAU,QAChB,EAAQ,OACD,EAAM,QAAU,MACvB,EAAQ,QACD,EAAM,QAAU,SACvB,GAAQ,SAEL,EAEX,wBAAwB,EAAI,CACxB,KAAM,CAAE,WAAW,MAAO,CAAE,aAAa,SAAS,YAAgB,KAAK,QACjE,EAAa,KAAK,iBAClB,EAAiB,EAAK,EACtB,EAAS,EAAW,OAAO,MACjC,GAAI,GACA,EACJ,MAAI,KAAa,OACT,EACA,GAAI,KAAK,MAAQ,EACb,IAAe,OACf,EAAY,OACL,IAAe,SACtB,GAAY,SACZ,GAAK,EAAS,GAEd,GAAY,QACZ,GAAK,IAGT,GAAI,KAAK,MAAQ,EACb,IAAe,OACf,EAAY,QACL,IAAe,SACtB,GAAY,SACZ,GAAK,EAAS,GAEd,GAAY,OACZ,EAAI,KAAK,OAGV,IAAa,QAChB,EACA,GAAI,KAAK,KAAO,EACZ,IAAe,OACf,EAAY,QACL,IAAe,SACtB,GAAY,SACZ,GAAK,EAAS,GAEd,GAAY,OACZ,GAAK,IAGT,GAAI,KAAK,KAAO,EACZ,IAAe,OACf,EAAY,OACL,IAAe,SACtB,GAAY,SACZ,GAAK,EAAS,GAEd,GAAY,QACZ,EAAI,KAAK,QAIjB,EAAY,QAET,CACH,YACA,KAGX,mBAAoB,CACb,GAAI,KAAK,QAAQ,MAAM,OACnB,OAEJ,KAAM,GAAQ,KAAK,MACb,EAAW,KAAK,QAAQ,SAC9B,GAAI,IAAa,QAAU,IAAa,QACpC,MAAO,CACH,IAAK,EACL,KAAM,KAAK,KACX,OAAQ,EAAM,OACd,MAAO,KAAK,OAGpB,GAAI,IAAa,OAAS,IAAa,SACnC,MAAO,CACH,IAAK,KAAK,IACV,KAAM,EACN,OAAQ,KAAK,OACb,MAAO,EAAM,OAI5B,gBAAiB,CACV,KAAM,CAAE,MAAM,QAAS,CAAE,mBAAqB,OAAO,MAAM,QAAQ,UAAY,KAC3E,GACA,GAAI,OACJ,EAAI,UAAY,EAChB,EAAI,SAAS,EAAM,EAAK,EAAO,GAC/B,EAAI,WAGZ,qBAAqB,EAAO,CACxB,KAAM,GAAO,KAAK,QAAQ,KAC1B,GAAI,CAAC,KAAK,cAAgB,CAAC,EAAK,QAC5B,MAAO,GAGX,KAAM,GAAQ,KADK,MACC,UAAW,GAAI,EAAE,QAAU,GAC/C,MAAI,IAAS,EAEF,EADW,WAAW,KAAK,WAAW,IACjC,UAET,EAEd,SAAS,EAAW,CACb,KAAM,GAAO,KAAK,QAAQ,KACpB,EAAM,KAAK,IACX,EAAQ,KAAK,gBAAmB,MAAK,eAAiB,KAAK,sBAAsB,IACvF,GAAI,GAAG,EACP,KAAM,GAAW,CAAC,EAAI,EAAI,IAAQ,CAC1B,CAAC,EAAM,OAAS,CAAC,EAAM,OAG3B,GAAI,OACJ,EAAI,UAAY,EAAM,MACtB,EAAI,YAAc,EAAM,MACxB,EAAI,YAAY,EAAM,YAAc,IACpC,EAAI,eAAiB,EAAM,iBAC3B,EAAI,YACJ,EAAI,OAAO,EAAG,EAAG,EAAG,GACpB,EAAI,OAAO,EAAG,EAAG,EAAG,GACpB,EAAI,SACJ,EAAI,YAER,GAAI,EAAK,QACL,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC1C,KAAM,GAAO,EAAM,GACf,EAAK,iBACL,EAAS,CACL,EAAG,EAAK,GACR,EAAG,EAAK,IACT,CACC,EAAG,EAAK,GACR,EAAG,EAAK,IACT,GAEH,EAAK,WACL,EAAS,CACL,EAAG,EAAK,IACR,EAAG,EAAK,KACT,CACC,EAAG,EAAK,IACR,EAAG,EAAK,KACT,CACC,MAAO,EAAK,UACZ,MAAO,EAAK,UACZ,WAAY,EAAK,eACjB,iBAAkB,EAAK,wBAM9C,YAAa,CACN,KAAM,CAAE,QAAQ,MAAM,QAAS,CAAE,SAAS,SAAa,KACjD,EAAa,EAAO,WAAW,KAAK,cACpC,EAAY,EAAO,QAAU,EAAW,MAAQ,EACtD,GAAI,CAAC,EACD,OAEJ,KAAM,GAAgB,EAAK,WAAW,KAAK,WAAW,IAAI,UACpD,EAAc,KAAK,aACzB,GAAI,GAAI,EAAI,EAAI,EACZ,KAAK,eACL,GAAK,GAAY,EAAO,KAAK,KAAM,GAAa,EAAY,EAC5D,EAAK,GAAY,EAAO,KAAK,MAAO,GAAiB,EAAgB,EACrE,EAAK,EAAK,GAEV,GAAK,GAAY,EAAO,KAAK,IAAK,GAAa,EAAY,EAC3D,EAAK,GAAY,EAAO,KAAK,OAAQ,GAAiB,EAAgB,EACtE,EAAK,EAAK,GAEd,EAAI,OACJ,EAAI,UAAY,EAAW,MAC3B,EAAI,YAAc,EAAW,MAC7B,EAAI,YACJ,EAAI,OAAO,EAAI,GACf,EAAI,OAAO,EAAI,GACf,EAAI,SACJ,EAAI,UAEX,WAAW,EAAW,CAEf,GAAI,CAAC,KADoB,QAAQ,MAChB,QACb,OAEJ,KAAM,GAAM,KAAK,IACX,EAAO,KAAK,oBACd,GACA,GAAS,EAAK,GAElB,KAAM,GAAQ,KAAK,cAAc,GACjC,SAAW,KAAQ,GAAM,CACrB,KAAM,GAAoB,EAAK,QACzB,EAAW,EAAK,KAChB,EAAQ,EAAK,MACb,EAAI,EAAK,WACf,GAAW,EAAK,EAAO,EAAG,EAAG,EAAU,GAEvC,GACA,GAAW,GAGtB,WAAY,CACL,KAAM,CAAE,MAAM,QAAS,CAAE,WAAW,QAAQ,YAAgB,KAC5D,GAAI,CAAC,EAAM,QACP,OAEJ,KAAM,GAAO,GAAO,EAAM,MACpB,EAAU,GAAU,EAAM,SAC1B,EAAQ,EAAM,MACpB,GAAI,GAAS,EAAK,WAAa,EAC3B,IAAa,UAAY,IAAa,UAAY,GAAS,GAC3D,IAAU,EAAQ,OACd,GAAQ,EAAM,OACd,IAAU,EAAK,WAAc,GAAM,KAAK,OAAS,KAGrD,GAAU,EAAQ,IAEtB,KAAM,CAAE,SAAS,SAAS,WAAW,YAAc,GAAU,KAAM,EAAQ,EAAU,GACrF,GAAW,EAAK,EAAM,KAAM,EAAG,EAAG,EAAM,CACpC,MAAO,EAAM,MACb,WACA,WACA,UAAW,GAAW,EAAO,EAAU,GACvC,aAAc,SACd,YAAa,CACT,EACA,KAIZ,KAAK,EAAW,CACR,CAAC,KAAK,cAGV,MAAK,iBACL,KAAK,SAAS,GACd,KAAK,aACL,KAAK,YACL,KAAK,WAAW,IAEvB,SAAU,CACH,KAAM,GAAO,KAAK,QACZ,EAAK,EAAK,OAAS,EAAK,MAAM,GAAK,EACnC,EAAK,GAAe,EAAK,MAAQ,EAAK,KAAK,EAAG,IAC9C,EAAK,GAAe,EAAK,QAAU,EAAK,OAAO,EAAG,GACxD,MAAI,CAAC,KAAK,cAAgB,KAAK,OAAS,GAAM,UAAU,KAC7C,CACH,CACI,EAAG,EACH,KAAO,GAAY,CACf,KAAK,KAAK,MAKnB,CACH,CACI,EAAG,EACH,KAAO,GAAY,CACf,KAAK,iBACL,KAAK,SAAS,GACd,KAAK,cAGb,CACI,EAAG,EACH,KAAM,IAAI,CACN,KAAK,eAGb,CACI,EAAG,EACH,KAAO,GAAY,CACf,KAAK,WAAW,MAKnC,wBAAwB,EAAM,CACvB,KAAM,GAAQ,KAAK,MAAM,+BACnB,EAAS,KAAK,KAAO,SACrB,EAAS,GACf,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC1C,KAAM,GAAO,EAAM,GACf,EAAK,KAAY,KAAK,IAAO,EAAC,GAAQ,EAAK,OAAS,IACpD,EAAO,KAAK,GAGpB,MAAO,GAEd,wBAAwB,EAAO,CACxB,KAAM,GAAO,KAAK,QAAQ,MAAM,WAAW,KAAK,WAAW,IAC3D,MAAO,IAAO,EAAK,MAE1B,YAAa,CACN,KAAM,GAAW,KAAK,wBAAwB,GAAG,WACjD,MAAQ,MAAK,eAAiB,KAAK,MAAQ,KAAK,QAAU,GAIlE,QAAoB,CAChB,YAAY,EAAM,EAAO,EAAS,CAC9B,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,MAAQ,OAAO,OAAO,MAE/B,UAAU,EAAM,CACZ,MAAO,QAAO,UAAU,cAAc,KAAK,KAAK,KAAK,UAAW,EAAK,WAE5E,SAAS,EAAM,CACR,KAAM,GAAQ,OAAO,eAAe,GACpC,GAAI,GACA,GAAkB,IAClB,GAAc,KAAK,SAAS,IAEhC,KAAM,GAAQ,KAAK,MACb,EAAK,EAAK,GACV,EAAQ,KAAK,MAAQ,IAAM,EACjC,GAAI,CAAC,EACD,KAAM,IAAI,OAAM,2BAA6B,GAEjD,MAAI,KAAM,IAGV,GAAM,GAAM,EACZ,GAAiB,EAAM,EAAO,GAC1B,KAAK,UACL,YAAkB,EAAK,GAAI,EAAK,YAE7B,EAEd,IAAI,EAAI,CACD,MAAO,MAAK,MAAM,GAEzB,WAAW,EAAM,CACV,KAAM,GAAQ,KAAK,MACb,EAAK,EAAK,GACV,EAAQ,KAAK,MACf,IAAM,IACN,MAAO,GAAM,GAEb,GAAS,IAAM,IAAS,IACxB,OAAO,IAAS,GAAO,GACnB,KAAK,UACL,MAAO,IAAU,KAKjC,YAA0B,EAAM,EAAO,EAAa,CAChD,KAAM,GAAe,GAAM,OAAO,OAAO,MAAO,CAC5C,EAAc,OAAa,GAAe,GAC1C,OAAa,GACb,EAAK,WAET,OAAa,EAAO,GAChB,EAAK,eACL,GAAc,EAAO,EAAK,eAE1B,EAAK,aACL,YAAkB,EAAO,EAAK,aAGtC,YAAuB,EAAO,EAAQ,CAClC,OAAO,KAAK,GAAQ,QAAS,GAAW,CACpC,KAAM,GAAgB,EAAS,MAAM,KAC/B,EAAa,EAAc,MAC3B,EAAc,CAChB,GACF,OAAO,GAAe,KAAK,KACvB,EAAQ,EAAO,GAAU,MAAM,KAC/B,EAAa,EAAM,MACnB,EAAc,EAAM,KAAK,KAC/B,SAAe,EAAa,EAAY,EAAa,KAG7D,YAA2B,EAAO,CAC9B,MAAO,MAAQ,IAAS,YAAc,GAG1C,QAAe,CACX,aAAa,CACT,KAAK,YAAc,GAAI,IAAc,GAAmB,WAAY,IACpE,KAAK,SAAW,GAAI,IAAc,GAAS,YAC3C,KAAK,QAAU,GAAI,IAAc,OAAQ,WACzC,KAAK,OAAS,GAAI,IAAc,GAAO,UACvC,KAAK,iBAAmB,CACpB,KAAK,YACL,KAAK,OACL,KAAK,UAGhB,OAAO,EAAM,CACN,KAAK,MAAM,WAAY,GAE3B,UAAU,EAAM,CACZ,KAAK,MAAM,aAAc,GAEhC,kBAAkB,EAAM,CACjB,KAAK,MAAM,WAAY,EAAM,KAAK,aAEzC,eAAe,EAAM,CACd,KAAK,MAAM,WAAY,EAAM,KAAK,UAEzC,cAAc,EAAM,CACb,KAAK,MAAM,WAAY,EAAM,KAAK,SAEzC,aAAa,EAAM,CACZ,KAAK,MAAM,WAAY,EAAM,KAAK,QAEzC,cAAc,EAAI,CACX,MAAO,MAAK,KAAK,EAAI,KAAK,YAAa,cAE9C,WAAW,EAAI,CACR,MAAO,MAAK,KAAK,EAAI,KAAK,SAAU,WAE3C,UAAU,EAAI,CACP,MAAO,MAAK,KAAK,EAAI,KAAK,QAAS,UAE1C,SAAS,EAAI,CACN,MAAO,MAAK,KAAK,EAAI,KAAK,OAAQ,SAEzC,qBAAqB,EAAM,CACpB,KAAK,MAAM,aAAc,EAAM,KAAK,aAE3C,kBAAkB,EAAM,CACjB,KAAK,MAAM,aAAc,EAAM,KAAK,UAE3C,iBAAiB,EAAM,CAChB,KAAK,MAAM,aAAc,EAAM,KAAK,SAE3C,gBAAgB,EAAM,CACf,KAAK,MAAM,aAAc,EAAM,KAAK,QAE3C,MAAM,EAAQ,EAAM,EAAe,CAC5B,CACI,GAAG,GACL,QAAS,GAAM,CACb,KAAM,GAAM,GAAiB,KAAK,oBAAoB,GAClD,GAAiB,EAAI,UAAU,IAAQ,IAAQ,KAAK,SAAW,EAAI,GACnE,KAAK,MAAM,EAAQ,EAAK,GAExB,GAAK,EAAM,GAAO,CACd,KAAM,GAAU,GAAiB,KAAK,oBAAoB,GAC1D,KAAK,MAAM,EAAQ,EAAS,OAK/C,MAAM,EAAQ,EAAU,EAAW,CAC5B,KAAM,GAAc,GAAY,GAChC,GAAS,EAAU,SAAW,GAAc,GAAI,GAChD,EAAS,GAAQ,GACjB,GAAS,EAAU,QAAU,GAAc,GAAI,GAEtD,oBAAoB,EAAM,CACnB,OAAQ,GAAI,EAAG,EAAI,KAAK,iBAAiB,OAAQ,IAAI,CACjD,KAAM,GAAM,KAAK,iBAAiB,GAClC,GAAI,EAAI,UAAU,GACd,MAAO,GAGf,MAAO,MAAK,QAEnB,KAAK,EAAI,EAAe,EAAM,CACvB,KAAM,GAAO,EAAc,IAAI,GAC/B,GAAI,IAAS,OACT,KAAM,IAAI,OAAM,IAAM,EAAK,yBAA2B,EAAO,KAEjE,MAAO,IAGf,GAAI,IAA2B,GAAI,IAEnC,QAAoB,CAChB,aAAa,CACT,KAAK,MAAQ,GAEpB,OAAO,EAAO,EAAM,EAAM,EAAQ,CACvB,IAAS,cACT,MAAK,MAAQ,KAAK,mBAAmB,EAAO,IAC5C,KAAK,QAAQ,KAAK,MAAO,EAAO,YAEpC,KAAM,GAAc,EAAS,KAAK,aAAa,GAAO,OAAO,GAAU,KAAK,aAAa,GACnF,EAAS,KAAK,QAAQ,EAAa,EAAO,EAAM,GACtD,MAAI,KAAS,gBACT,MAAK,QAAQ,EAAa,EAAO,QACjC,KAAK,QAAQ,KAAK,MAAO,EAAO,cAE7B,EAEd,QAAQ,EAAa,EAAO,EAAM,EAAM,CACjC,EAAO,GAAQ,GACf,SAAW,KAAc,GAAY,CACjC,KAAM,GAAS,EAAW,OACpB,EAAS,EAAO,GAChB,EAAS,CACX,EACA,EACA,EAAW,SAEf,GAAI,GAAS,EAAQ,EAAQ,KAAY,IAAS,EAAK,WACnD,MAAO,GAGf,MAAO,GAEX,YAAa,CACJ,GAAc,KAAK,SACpB,MAAK,UAAY,KAAK,OACtB,KAAK,OAAS,QAGzB,aAAa,EAAO,CACb,GAAI,KAAK,OACL,MAAO,MAAK,OAEhB,KAAM,GAAc,KAAK,OAAS,KAAK,mBAAmB,GAC1D,YAAK,oBAAoB,GAClB,EAEX,mBAAmB,EAAO,EAAK,CAC3B,KAAM,GAAS,GAAS,EAAM,OACxB,EAAU,GAAe,EAAO,SAAW,EAAO,QAAQ,QAAS,IACnE,EAAU,GAAW,GAC3B,MAAO,KAAY,IAAS,CAAC,EAAM,GAAK,GAAkB,EAAO,EAAS,EAAS,GAE1F,oBAAoB,EAAO,CACpB,KAAM,GAAsB,KAAK,WAAa,GACxC,EAAc,KAAK,OACnB,EAAO,CAAC,EAAG,IAAI,EAAE,OAAQ,GAAI,CAAC,EAAE,KAAM,GAAI,EAAE,OAAO,KAAO,EAAE,OAAO,KACzE,KAAK,QAAQ,EAAK,EAAqB,GAAc,EAAO,QAC5D,KAAK,QAAQ,EAAK,EAAa,GAAsB,EAAO,UAGnE,YAAoB,EAAQ,CACzB,KAAM,GAAW,GACX,EAAU,GACV,EAAO,OAAO,KAAK,GAAS,QAAQ,OAC1C,OAAQ,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC5B,EAAQ,KAAK,GAAS,UAAU,EAAK,KAEzC,KAAM,GAAQ,EAAO,SAAW,GAChC,OAAQ,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAI,CACjC,KAAM,GAAS,EAAM,GACjB,EAAQ,QAAQ,KAAY,IAC5B,GAAQ,KAAK,GACb,EAAS,EAAO,IAAM,IAG9B,MAAO,CACH,UACA,YAGR,YAAiB,EAAS,EAAK,CAC3B,MAAI,CAAC,GAAO,IAAY,GACb,KAEP,IAAY,GACL,GAEJ,EAEX,YAA2B,EAAO,CAAE,UAAU,YAAa,EAAS,EAAK,CACrE,KAAM,GAAS,GACT,EAAU,EAAM,aACtB,SAAW,KAAU,GAAQ,CACzB,KAAM,GAAK,EAAO,GACZ,EAAO,GAAQ,EAAQ,GAAK,GAC9B,IAAS,MAGb,EAAO,KAAK,CACR,SACA,QAAS,GAAW,EAAM,OAAQ,CAC9B,SACA,MAAO,EAAS,IACjB,EAAM,KAGjB,MAAO,GAEX,YAAoB,EAAQ,CAAE,SAAS,SAAU,EAAM,EAAS,CAC5D,KAAM,GAAO,EAAO,gBAAgB,GAC9B,EAAS,EAAO,gBAAgB,EAAM,GAC5C,MAAI,IAAS,EAAO,UAChB,EAAO,KAAK,EAAO,UAEhB,EAAO,eAAe,EAAQ,EAAS,CAC1C,IACD,CACC,WAAY,GACZ,UAAW,GACX,QAAS,KAIjB,YAAsB,EAAM,EAAS,CACjC,KAAM,GAAkB,YAAkB,IAAS,GAEnD,MAAO,IADyB,UAAY,IAAI,IAAS,IACnC,WAAa,EAAQ,WAAa,EAAgB,WAAa,IAEzF,YAAmC,EAAI,EAAW,CAC9C,GAAI,GAAO,EACX,MAAI,KAAO,UACP,EAAO,EACA,IAAO,WACd,GAAO,IAAc,IAAM,IAAM,KAE9B,EAEX,YAAmC,EAAM,EAAW,CAChD,MAAO,KAAS,EAAY,UAAY,UAE5C,YAAuB,EAAI,CACvB,GAAI,IAAO,KAAO,IAAO,KAAO,IAAO,IACnC,MAAO,GAGf,YAA0B,EAAU,CAChC,GAAI,IAAa,OAAS,IAAa,SACnC,MAAO,IAEX,GAAI,IAAa,QAAU,IAAa,QACpC,MAAO,IAGf,YAAuB,KAAO,EAAc,CACxC,GAAI,GAAc,GACd,MAAO,GAEX,SAAW,KAAQ,GAAa,CAC5B,KAAM,GAAO,EAAK,MAAQ,GAAiB,EAAK,WAAa,EAAG,OAAS,GAAK,GAAc,EAAG,GAAG,eAClG,GAAI,EACA,MAAO,GAGf,KAAM,IAAI,OAAM,6BAA6B,wDAEjD,YAA4B,EAAI,EAAM,EAAS,CAC3C,GAAI,EAAQ,EAAO,YAAc,EAC7B,MAAO,CACH,QAIZ,YAAkC,EAAI,EAAQ,CAC1C,GAAI,EAAO,MAAQ,EAAO,KAAK,SAAU,CACrC,KAAM,GAAU,EAAO,KAAK,SAAS,OAAQ,GAAI,EAAE,UAAY,GAAM,EAAE,UAAY,GACnF,GAAI,EAAQ,OACR,MAAO,IAAmB,EAAI,IAAK,EAAQ,KAAO,GAAmB,EAAI,IAAK,EAAQ,IAG9F,MAAO,GAEX,YAA0B,EAAQ,EAAS,CACvC,KAAM,GAAgB,GAAU,EAAO,OAAS,CAC5C,OAAQ,IAEN,EAAe,EAAQ,QAAU,GACjC,EAAiB,GAAa,EAAO,KAAM,GAC3C,EAAS,OAAO,OAAO,MAC7B,cAAO,KAAK,GAAc,QAAS,GAAK,CACpC,KAAM,GAAY,EAAa,GAC/B,GAAI,CAAC,GAAS,GACV,MAAO,SAAQ,MAAM,0CAA0C,KAEnE,GAAI,EAAU,OACV,MAAO,SAAQ,KAAK,kDAAkD,KAE1E,KAAM,GAAO,GAAc,EAAI,EAAW,GAAyB,EAAI,GAAS,UAAgB,EAAU,OACpG,EAAY,GAA0B,EAAM,GAC5C,EAAsB,EAAc,QAAU,GACpD,EAAO,GAAM,GAAQ,OAAO,OAAO,MAAO,CACtC,CACI,QAEJ,EACA,EAAoB,GACpB,EAAoB,OAG5B,EAAO,KAAK,SAAS,QAAS,GAAU,CACpC,KAAM,GAAO,EAAQ,MAAQ,EAAO,KAC9B,EAAY,EAAQ,WAAa,GAAa,EAAM,GAEpD,EAAsB,IADM,IAAS,IACC,QAAU,GACtD,OAAO,KAAK,GAAqB,QAAS,GAAY,CAClD,KAAM,GAAO,GAA0B,EAAW,GAC5C,EAAK,EAAQ,EAAO,WAAa,EACvC,EAAO,GAAM,EAAO,IAAO,OAAO,OAAO,MACzC,GAAQ,EAAO,GAAK,CAChB,CACI,QAEJ,EAAa,GACb,EAAoB,SAIhC,OAAO,KAAK,GAAQ,QAAS,GAAM,CAC/B,KAAM,GAAQ,EAAO,GACrB,GAAQ,EAAO,CACX,UAAgB,EAAM,MACtB,aAGD,EAEX,YAAqB,EAAQ,CACzB,KAAM,GAAU,EAAO,SAAY,GAAO,QAAU,IACpD,EAAQ,QAAU,GAAe,EAAQ,QAAS,IAClD,EAAQ,OAAS,GAAiB,EAAQ,GAE9C,YAAkB,EAAM,CACpB,SAAO,GAAQ,GACf,EAAK,SAAW,EAAK,UAAY,GACjC,EAAK,OAAS,EAAK,QAAU,GACtB,EAEX,YAAoB,EAAQ,CACxB,SAAS,GAAU,GACnB,EAAO,KAAO,GAAS,EAAO,MAC9B,GAAY,GACL,EAEX,KAAM,IAAW,GAAI,KACf,GAAa,GAAI,KACvB,YAAoB,EAAU,EAAU,CACpC,GAAI,GAAO,GAAS,IAAI,GACxB,MAAK,IACD,GAAO,IACP,GAAS,IAAI,EAAU,GACvB,GAAW,IAAI,IAEZ,EAEX,KAAM,IAAa,CAAC,EAAK,EAAK,IAAM,CAChC,KAAM,GAAO,GAAiB,EAAK,GAC/B,IAAS,QACT,EAAI,IAAI,IAGhB,QAAa,CACT,YAAY,EAAO,CACf,KAAK,QAAU,GAAW,GAC1B,KAAK,YAAc,GAAI,KACvB,KAAK,eAAiB,GAAI,QAE1B,WAAW,CACX,MAAO,MAAK,QAAQ,YAEpB,OAAO,CACP,MAAO,MAAK,QAAQ,QAEpB,MAAK,EAAM,CACX,KAAK,QAAQ,KAAO,KAEpB,OAAO,CACP,MAAO,MAAK,QAAQ,QAEpB,MAAK,EAAM,CACX,KAAK,QAAQ,KAAO,GAAS,MAE7B,UAAU,CACV,MAAO,MAAK,QAAQ,WAEpB,SAAQ,EAAS,CACjB,KAAK,QAAQ,QAAU,KAEvB,UAAU,CACV,MAAO,MAAK,QAAQ,QAExB,QAAS,CACL,KAAM,GAAS,KAAK,QACpB,KAAK,aACL,GAAY,GAEhB,YAAa,CACT,KAAK,YAAY,QACjB,KAAK,eAAe,QAE3B,iBAAiB,EAAa,CACvB,MAAO,IAAW,EAAa,IAAI,CAC3B,CACI,YAAY,IACZ,MAInB,0BAA0B,EAAa,EAAY,CAC5C,MAAO,IAAW,GAAG,gBAA0B,IAAc,IAAI,CACzD,CACI,YAAY,iBAA2B,IACvC,eAAe,KAEnB,CACI,YAAY,IACZ,MAInB,wBAAwB,EAAa,EAAa,CAC3C,MAAO,IAAW,GAAG,KAAe,IAAe,IAAI,CAC/C,CACI,YAAY,cAAwB,IACpC,YAAY,IACZ,YAAY,IACZ,MAInB,gBAAgB,EAAQ,CACjB,KAAM,GAAK,EAAO,GACZ,EAAO,KAAK,KAClB,MAAO,IAAW,GAAG,YAAe,IAAM,IAAI,CACtC,CACI,WAAW,IACX,GAAG,EAAO,wBAA0B,MAIvD,cAAc,EAAW,EAAY,CAC9B,KAAM,GAAc,KAAK,YACzB,GAAI,GAAQ,EAAY,IAAI,GAC5B,MAAI,EAAC,GAAS,IACV,GAAQ,GAAI,KACZ,EAAY,IAAI,EAAW,IAExB,EAEd,gBAAgB,EAAW,EAAU,EAAY,CAC1C,KAAM,CAAE,UAAU,QAAU,KACtB,EAAQ,KAAK,cAAc,EAAW,GACtC,EAAS,EAAM,IAAI,GACzB,GAAI,EACA,MAAO,GAEX,KAAM,GAAS,GAAI,KACnB,EAAS,QAAS,GAAO,CACjB,GACA,GAAO,IAAI,GACX,EAAK,QAAS,GAAM,GAAW,EAAQ,EAAW,KAEtD,EAAK,QAAS,GAAM,GAAW,EAAQ,EAAS,IAChD,EAAK,QAAS,GAAM,GAAW,EAAQ,GAAU,IAAS,GAAI,IAC9D,EAAK,QAAS,GAAM,GAAW,EAAQ,GAAU,IACjD,EAAK,QAAS,GAAM,GAAW,EAAQ,GAAa,MAExD,KAAM,GAAQ,MAAM,KAAK,GACzB,MAAI,GAAM,SAAW,GACjB,EAAM,KAAK,OAAO,OAAO,OAEzB,GAAW,IAAI,IACf,EAAM,IAAI,EAAU,GAEjB,EAEd,mBAAoB,CACb,KAAM,CAAE,UAAU,QAAU,KAC5B,MAAO,CACH,EACA,GAAU,IAAS,GACnB,YAAkB,IAAS,GAC3B,CACI,QAEJ,GACA,IAGX,oBAAoB,EAAQ,EAAO,EAAS,EAAW,CAChD,IACD,CACC,KAAM,GAAS,CACX,QAAS,IAEP,CAAE,WAAW,eAAiB,GAAY,KAAK,eAAgB,EAAQ,GAC7E,GAAI,GAAU,EACd,GAAI,GAAY,EAAU,GAAQ,CAC9B,EAAO,QAAU,GACjB,EAAU,GAAW,GAAW,IAAY,EAC5C,KAAM,GAAc,KAAK,eAAe,EAAQ,EAAS,GACzD,EAAU,GAAe,EAAU,EAAS,GAEhD,SAAW,KAAQ,GACf,EAAO,GAAQ,EAAQ,GAE3B,MAAO,GAEd,eAAe,EAAQ,EAAS,EAAW,CACpC,IACD,EAAoB,CACnB,KAAM,CAAE,YAAc,GAAY,KAAK,eAAgB,EAAQ,GAC/D,MAAO,IAAS,GAAW,GAAe,EAAU,EAAS,OAAW,GAAsB,GAGtG,YAAqB,EAAe,EAAQ,EAAU,CAClD,GAAI,GAAQ,EAAc,IAAI,GACzB,GACD,GAAQ,GAAI,KACZ,EAAc,IAAI,EAAQ,IAE9B,KAAM,GAAW,EAAS,OAC1B,GAAI,GAAS,EAAM,IAAI,GACvB,MAAK,IAED,GAAS,CACL,SAFa,GAAgB,EAAQ,GAGrC,YAAa,EAAS,OAAQ,GAAI,CAAC,EAAE,cAAc,SAAS,WAEhE,EAAM,IAAI,EAAU,IAEjB,EAEX,KAAM,IAAe,GAAQ,GAAS,IAAU,OAAO,oBAAoB,GAAO,OAAO,CAAC,EAAK,IAAM,GAAO,GAAW,EAAM,IAAO,IACpI,YAAqB,EAAO,EAAO,CAC/B,KAAM,CAAE,eAAe,eAAiB,GAAa,GACrD,SAAW,KAAQ,GAAM,CACrB,KAAM,GAAa,EAAa,GAC1B,EAAY,EAAY,GACxB,EAAS,IAAa,IAAe,EAAM,GACjD,GAAI,GAAe,IAAW,IAAU,GAAY,KAAW,GAAa,GAAQ,GAChF,MAAO,GAGf,MAAO,GAGX,GAAI,IAAU,QAEd,KAAM,IAAkB,CACpB,MACA,SACA,OACA,QACA,aAEJ,YAA8B,EAAU,EAAM,CAC1C,MAAO,KAAa,OAAS,IAAa,UAAY,GAAgB,QAAQ,KAAc,IAAM,IAAS,IAE/G,YAAuB,EAAI,EAAI,CAC3B,MAAO,UAAS,EAAG,EAAG,CAClB,MAAO,GAAE,KAAQ,EAAE,GAAM,EAAE,GAAM,EAAE,GAAM,EAAE,GAAM,EAAE,IAG3D,YAA8B,EAAS,CACnC,KAAM,GAAQ,EAAQ,MAChB,EAAmB,EAAM,QAAQ,UACvC,EAAM,cAAc,eACpB,GAAS,GAAoB,EAAiB,WAAY,CACtD,GACD,GAEP,YAA6B,EAAS,CAClC,KAAM,GAAQ,EAAQ,MAChB,EAAmB,EAAM,QAAQ,UACvC,GAAS,GAAoB,EAAiB,WAAY,CACtD,GACD,GAEN,YAAmB,EAAM,CACtB,MAAI,OAAqB,MAAO,IAAS,SACrC,EAAO,SAAS,eAAe,GACxB,GAAQ,EAAK,QACpB,GAAO,EAAK,IAEZ,GAAQ,EAAK,QACb,GAAO,EAAK,QAET,EAEX,KAAM,IAAY,GACZ,GAAY,GAAM,CACpB,KAAM,GAAS,GAAU,GACzB,MAAO,QAAO,OAAO,IAAW,OAAQ,GAAI,EAAE,SAAW,GAAQ,OAErE,YAAyB,EAAK,EAAO,EAAM,CACvC,KAAM,GAAO,OAAO,KAAK,GACzB,SAAW,KAAO,GAAK,CACnB,KAAM,GAAS,CAAC,EAChB,GAAI,GAAU,EAAO,CACjB,KAAM,GAAQ,EAAI,GAClB,MAAO,GAAI,GACP,GAAO,GAAK,EAAS,IACrB,GAAI,EAAS,GAAQ,KAKpC,YAA4B,EAAG,EAAW,EAAa,EAAS,CAC7D,MAAI,CAAC,GAAe,EAAE,OAAS,WACpB,KAEP,EACO,EAEJ,EAEX,YAAwB,EAAM,CAC1B,KAAM,CAAE,SAAS,UAAY,EAC7B,GAAI,GAAU,EACV,MAAO,CACH,KAAM,EAAO,KACb,MAAO,EAAO,MACd,IAAK,EAAO,IACZ,OAAQ,EAAO,QAI3B,QAAY,OACD,UAAW,SACX,WAAY,SACZ,WAAY,SACZ,UAAW,SACX,SAAU,SACV,UAAW,SACX,aAAY,EAAO,CACtB,GAAS,IAAI,GAAG,GAChB,WAEG,eAAc,EAAO,CACxB,GAAS,OAAO,GAAG,GACnB,KAEJ,YAAY,EAAM,EAAW,CACzB,KAAM,GAAS,KAAK,OAAS,GAAI,IAAO,GAClC,EAAgB,GAAU,GAC1B,EAAgB,GAAS,GAC/B,GAAI,EACA,KAAM,IAAI,OAAM,4CAA+C,EAAc,GAAK,kDAA2D,EAAc,OAAO,GAAK,oBAE3K,KAAM,GAAU,EAAO,eAAe,EAAO,oBAAqB,KAAK,cACvE,KAAK,SAAW,GAAK,GAAO,UAAY,GAAgB,IACxD,KAAK,SAAS,aAAa,GAC3B,KAAM,GAAU,KAAK,SAAS,eAAe,EAAe,EAAQ,aAC9D,EAAS,GAAW,EAAQ,OAC5B,EAAS,GAAU,EAAO,OAC1B,EAAQ,GAAU,EAAO,MA6B/B,GA5BA,KAAK,GAAK,KACV,KAAK,IAAM,EACX,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,SAAW,EAChB,KAAK,aAAe,KAAK,YACzB,KAAK,QAAU,GACf,KAAK,UAAY,GACjB,KAAK,QAAU,OACf,KAAK,MAAQ,GACb,KAAK,wBAA0B,OAC/B,KAAK,UAAY,OACjB,KAAK,QAAU,GACf,KAAK,WAAa,OAClB,KAAK,WAAa,GACjB,KAAK,qBAAuB,OAC7B,KAAK,gBAAkB,GACvB,KAAK,OAAS,GACd,KAAK,SAAW,GAAI,IACpB,KAAK,SAAW,GAChB,KAAK,eAAiB,GACtB,KAAK,SAAW,GAChB,KAAK,oBAAsB,OAC3B,KAAK,SAAW,OAChB,KAAK,UAAY,GAAU,GAAO,KAAK,OAAO,GAAO,EAAQ,aAAe,GAC5E,KAAK,aAAe,GACpB,GAAU,KAAK,IAAM,KACjB,CAAC,GAAW,CAAC,EAAQ,CACrB,QAAQ,MAAM,qEACd,OAEJ,GAAS,OAAO,KAAM,WAAY,IAClC,GAAS,OAAO,KAAM,WAAY,IAClC,KAAK,cACD,KAAK,UACL,KAAK,YAGT,cAAc,CACd,KAAM,CAAE,QAAS,CAAE,cAAc,uBAAyB,QAAQ,SAAS,gBAAkB,KAC7F,MAAK,IAAc,GAGf,GAAuB,EAChB,EAEJ,EAAS,EAAQ,EAAS,KALtB,KAOX,OAAO,CACP,MAAO,MAAK,OAAO,QAEnB,MAAK,EAAM,CACX,KAAK,OAAO,KAAO,KAEnB,UAAU,CACV,MAAO,MAAK,YAEZ,SAAQ,EAAS,CACjB,KAAK,OAAO,QAAU,KAEtB,WAAW,CACX,MAAO,IAEd,aAAc,CACP,YAAK,cAAc,cACf,KAAK,QAAQ,WACb,KAAK,SAEL,GAAY,KAAM,KAAK,QAAQ,kBAEnC,KAAK,aACL,KAAK,cAAc,aACZ,KAEX,OAAQ,CACJ,UAAY,KAAK,OAAQ,KAAK,KACvB,KAEX,MAAO,CACH,UAAS,KAAK,MACP,KAEd,OAAO,EAAO,EAAQ,CACV,GAAS,QAAQ,MAGlB,KAAK,kBAAoB,CACrB,QACA,UAJJ,KAAK,QAAQ,EAAO,GAQ5B,QAAQ,EAAO,EAAQ,CACnB,KAAM,GAAU,KAAK,QACf,EAAS,KAAK,OACd,EAAc,EAAQ,qBAAuB,KAAK,YAClD,EAAU,KAAK,SAAS,eAAe,EAAQ,EAAO,EAAQ,GAC9D,EAAW,EAAQ,kBAAoB,KAAK,SAAS,sBACrD,EAAO,KAAK,MAAQ,SAAW,SAIrC,KAHK,MAAQ,EAAQ,MACrB,KAAK,OAAS,EAAQ,OACtB,KAAK,aAAe,KAAK,YACrB,EAAC,GAAY,KAAM,EAAU,KAGjC,MAAK,cAAc,SAAU,CACzB,KAAM,IAEV,GAAS,EAAQ,SAAU,CACvB,KACA,GACD,MACC,KAAK,UACD,KAAK,UAAU,IACf,KAAK,UAIjB,qBAAsB,CAElB,KAAM,GAAgB,KADD,QACS,QAAU,GACxC,GAAK,EAAe,CAAC,EAAa,IAAS,CACvC,EAAY,GAAK,IAG5B,qBAAsB,CACf,KAAM,GAAU,KAAK,QACf,EAAY,EAAQ,OACpB,EAAS,KAAK,OACd,EAAU,OAAO,KAAK,GAAQ,OAAO,CAAC,EAAK,IAC7C,GAAI,GAAM,GACH,GACR,IACH,GAAI,GAAQ,GACR,GACA,GAAQ,EAAM,OAAO,OAAO,KAAK,GAAW,IAAK,GAAK,CAClD,KAAM,GAAe,EAAU,GACzB,EAAO,GAAc,EAAI,GACzB,EAAW,IAAS,IACpB,EAAe,IAAS,IAC9B,MAAO,CACH,QAAS,EACT,UAAW,EAAW,YAAc,EAAe,SAAW,OAC9D,MAAO,EAAW,eAAiB,EAAe,WAAa,cAI3E,GAAK,EAAQ,GAAO,CAChB,KAAM,GAAe,EAAK,QACpB,EAAK,EAAa,GAClB,EAAO,GAAc,EAAI,GACzB,EAAY,GAAe,EAAa,KAAM,EAAK,OACrD,GAAa,WAAa,QAAa,GAAqB,EAAa,SAAU,KAAU,GAAqB,EAAK,aACvH,GAAa,SAAW,EAAK,WAEjC,EAAQ,GAAM,GACd,GAAI,GAAQ,KACZ,GAAI,IAAM,IAAU,EAAO,GAAI,OAAS,EACpC,EAAQ,EAAO,OACZ,CACH,KAAM,GAAa,GAAS,SAAS,GACrC,EAAQ,GAAI,GAAW,CACnB,KACA,KAAM,EACN,IAAK,KAAK,IACV,MAAO,OAEX,EAAO,EAAM,IAAM,EAEvB,EAAM,KAAK,EAAc,KAE7B,GAAK,EAAS,CAAC,EAAY,IAAK,CACvB,GACD,MAAO,GAAO,KAGtB,GAAK,EAAS,GAAQ,CAClB,GAAQ,UAAU,KAAM,EAAO,EAAM,SACrC,GAAQ,OAAO,KAAM,KAGhC,iBAAkB,CACX,KAAM,GAAW,KAAK,UAChB,EAAU,KAAK,KAAK,SAAS,OAC7B,EAAU,EAAS,OAEzB,GADA,EAAS,KAAK,CAAC,EAAG,IAAI,EAAE,MAAQ,EAAE,OAC9B,EAAU,EAAS,CACnB,OAAQ,GAAI,EAAS,EAAI,EAAS,EAAE,EAChC,KAAK,oBAAoB,GAE7B,EAAS,OAAO,EAAS,EAAU,GAEvC,KAAK,gBAAkB,EAAS,MAAM,GAAG,KAAK,GAAc,QAAS,UAE5E,6BAA8B,CACvB,KAAM,CAAE,UAAW,EAAW,KAAM,CAAE,aAAiB,KACnD,EAAS,OAAS,EAAS,QAC3B,MAAO,MAAK,QAEhB,EAAS,QAAQ,CAAC,EAAM,IAAQ,CACxB,EAAS,OAAQ,GAAI,IAAM,EAAK,UAAU,SAAW,GACrD,KAAK,oBAAoB,KAIrC,0BAA2B,CACvB,KAAM,GAAiB,GACjB,EAAW,KAAK,KAAK,SAC3B,GAAI,GAAG,EAEP,IADA,KAAK,8BACD,EAAI,EAAG,EAAO,EAAS,OAAQ,EAAI,EAAM,IAAI,CAC7C,KAAM,GAAU,EAAS,GACzB,GAAI,GAAO,KAAK,eAAe,GAC/B,KAAM,GAAO,EAAQ,MAAQ,KAAK,OAAO,KAWzC,GAVI,EAAK,MAAQ,EAAK,OAAS,GAC3B,MAAK,oBAAoB,GACzB,EAAO,KAAK,eAAe,IAE/B,EAAK,KAAO,EACZ,EAAK,UAAY,EAAQ,WAAa,GAAa,EAAM,KAAK,SAC9D,EAAK,MAAQ,EAAQ,OAAS,EAC9B,EAAK,MAAQ,EACb,EAAK,MAAQ,GAAK,EAAQ,MAC1B,EAAK,QAAU,KAAK,iBAAiB,GACjC,EAAK,WACL,EAAK,WAAW,YAAY,GAC5B,EAAK,WAAW,iBACb,CACH,KAAM,GAAkB,GAAS,cAAc,GACzC,CAAE,qBAAqB,mBAAqB,YAAkB,GACpE,OAAO,OAAO,EAAiB,CAC3B,gBAAiB,GAAS,WAAW,GACrC,mBAAoB,GAAsB,GAAS,WAAW,KAElE,EAAK,WAAa,GAAI,GAAgB,KAAM,GAC5C,EAAe,KAAK,EAAK,aAGjC,YAAK,kBACE,EAEd,gBAAiB,CACV,GAAK,KAAK,KAAK,SAAU,CAAC,EAAS,IAAe,CAC9C,KAAK,eAAe,GAAc,WAAW,SAC9C,MAEV,OAAQ,CACD,KAAK,iBACL,KAAK,cAAc,SAEvB,OAAO,EAAM,CACT,KAAM,GAAS,KAAK,OACpB,EAAO,SACP,KAAM,GAAU,KAAK,SAAW,EAAO,eAAe,EAAO,oBAAqB,KAAK,cACjF,EAAgB,KAAK,oBAAsB,CAAC,EAAQ,UAK1D,GAJA,KAAK,gBACL,KAAK,sBACL,KAAK,uBACL,KAAK,SAAS,aACV,KAAK,cAAc,eAAgB,CACnC,OACA,WAAY,OACT,GACH,OAEJ,KAAM,GAAiB,KAAK,2BAC5B,KAAK,cAAc,wBACnB,GAAI,GAAa,EACjB,OAAQ,GAAI,EAAG,EAAO,KAAK,KAAK,SAAS,OAAQ,EAAI,EAAM,IAAI,CAC3D,KAAM,CAAE,cAAgB,KAAK,eAAe,GACtC,EAAQ,CAAC,GAAiB,EAAe,QAAQ,KAAgB,GACvE,EAAW,sBAAsB,GACjC,EAAa,KAAK,IAAI,CAAC,EAAW,iBAAkB,GAExD,EAAa,KAAK,YAAc,EAAQ,OAAO,YAAc,EAAa,EAC1E,KAAK,cAAc,GACd,GACD,GAAK,EAAiB,GAAa,CAC/B,EAAW,UAGnB,KAAK,gBAAgB,GACrB,KAAK,cAAc,cAAe,CAC9B,SAEJ,KAAK,QAAQ,KAAK,GAAc,IAAK,SACrC,KAAM,CAAE,UAAU,cAAgB,KAC9B,EACA,KAAK,cAAc,EAAY,IACxB,EAAQ,QACf,KAAK,mBAAmB,EAAS,EAAS,IAE9C,KAAK,SAEZ,eAAgB,CACT,GAAK,KAAK,OAAS,GAAQ,CACvB,GAAQ,UAAU,KAAM,KAE5B,KAAK,sBACL,KAAK,sBAEZ,qBAAsB,CACf,KAAM,GAAU,KAAK,QACf,EAAiB,GAAI,KAAI,OAAO,KAAK,KAAK,aAC1C,EAAY,GAAI,KAAI,EAAQ,QAC9B,EAAC,GAAU,EAAgB,IAAc,CAAC,CAAC,KAAK,uBAAyB,EAAQ,aACjF,MAAK,eACL,KAAK,cAGhB,sBAAuB,CAChB,KAAM,CAAE,kBAAoB,KACtB,EAAU,KAAK,0BAA4B,GACjD,SAAW,CAAE,SAAS,QAAQ,UAAY,GAAQ,CAC9C,KAAM,GAAO,IAAW,kBAAoB,CAAC,EAAQ,EACrD,GAAgB,EAAgB,EAAO,IAGlD,wBAAyB,CAClB,KAAM,GAAe,KAAK,aAC1B,GAAI,CAAC,GAAgB,CAAC,EAAa,OAC/B,OAEJ,KAAK,aAAe,GACpB,KAAM,GAAe,KAAK,KAAK,SAAS,OAClC,EAAW,GAAM,GAAI,KAAI,EAAa,OAAQ,GAAI,EAAE,KAAO,GAAK,IAAI,CAAC,EAAG,IAAI,EAAI,IAAM,EAAE,OAAO,GAAG,KAAK,OACvG,EAAY,EAAQ,GAC1B,OAAQ,GAAI,EAAG,EAAI,EAAc,IAC7B,GAAI,CAAC,GAAU,EAAW,EAAQ,IAC9B,OAGR,MAAO,OAAM,KAAK,GAAW,IAAK,GAAI,EAAE,MAAM,MAAM,IAAK,GAAK,EACtD,OAAQ,EAAE,GACV,MAAO,CAAC,EAAE,GACV,MAAO,CAAC,EAAE,MAGzB,cAAc,EAAY,CACnB,GAAI,KAAK,cAAc,eAAgB,CACnC,WAAY,OACT,GACH,OAEJ,GAAQ,OAAO,KAAM,KAAK,MAAO,KAAK,OAAQ,GAC9C,KAAM,GAAO,KAAK,UACZ,EAAS,EAAK,OAAS,GAAK,EAAK,QAAU,EACjD,KAAK,QAAU,GACf,GAAK,KAAK,MAAQ,GAAM,CAChB,GAAU,EAAI,WAAa,aAG3B,GAAI,WACJ,EAAI,YAER,KAAK,QAAQ,KAAK,GAAG,EAAI,aAC1B,MACH,KAAK,QAAQ,QAAQ,CAAC,EAAM,IAAQ,CAChC,EAAK,KAAO,IAEhB,KAAK,cAAc,eAE1B,gBAAgB,EAAM,CACf,GAAI,KAAK,cAAc,uBAAwB,CAC3C,OACA,WAAY,OACT,GAGP,QAAQ,GAAI,EAAG,EAAO,KAAK,KAAK,SAAS,OAAQ,EAAI,EAAM,EAAE,EACzD,KAAK,eAAe,GAAG,WAAW,YAEtC,OAAQ,GAAI,EAAG,EAAO,KAAK,KAAK,SAAS,OAAQ,EAAI,EAAM,EAAE,EACzD,KAAK,eAAe,EAAG,GAAW,GAAQ,EAAK,CAC3C,aAAc,IACb,GAET,KAAK,cAAc,sBAAuB,CACtC,UAGX,eAAe,EAAO,EAAM,CACrB,KAAM,GAAO,KAAK,eAAe,GAC3B,EAAO,CACT,OACA,QACA,OACA,WAAY,IAEZ,KAAK,cAAc,sBAAuB,KAAU,IAGxD,GAAK,WAAW,QAAQ,GACxB,EAAK,WAAa,GAClB,KAAK,cAAc,qBAAsB,IAE7C,QAAS,CACD,KAAK,cAAc,eAAgB,CACnC,WAAY,OACT,IAGP,CAAI,GAAS,IAAI,MACT,KAAK,UAAY,CAAC,GAAS,QAAQ,OACnC,GAAS,MAAM,MAGnB,MAAK,OACL,GAAqB,CACjB,MAAO,SAInB,MAAO,CACH,GAAI,GACJ,GAAI,KAAK,kBAAmB,CACxB,KAAM,CAAE,QAAQ,UAAY,KAAK,kBACjC,KAAK,QAAQ,EAAO,GACpB,KAAK,kBAAoB,KAM7B,GAJA,KAAK,QACD,KAAK,OAAS,GAAK,KAAK,QAAU,GAGlC,KAAK,cAAc,aAAc,CACjC,WAAY,OACT,GACH,OAEJ,KAAM,GAAS,KAAK,QACpB,IAAI,EAAI,EAAG,EAAI,EAAO,QAAU,EAAO,GAAG,GAAK,EAAG,EAAE,EAChD,EAAO,GAAG,KAAK,KAAK,WAGxB,IADA,KAAK,gBACC,EAAI,EAAO,OAAQ,EAAE,EACvB,EAAO,GAAG,KAAK,KAAK,WAExB,KAAK,cAAc,aAE1B,uBAAuB,EAAe,CAC/B,KAAM,GAAW,KAAK,gBAChB,EAAS,GACf,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAS,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC7C,KAAM,GAAO,EAAS,GAClB,EAAC,GAAiB,EAAK,UACvB,EAAO,KAAK,GAGpB,MAAO,GAEd,8BAA+B,CACxB,MAAO,MAAK,uBAAuB,IAE1C,eAAgB,CACT,GAAI,KAAK,cAAc,qBAAsB,CACzC,WAAY,OACT,GACH,OAEJ,KAAM,GAAW,KAAK,+BACtB,OAAQ,GAAI,EAAS,OAAS,EAAG,GAAK,EAAG,EAAE,EACvC,KAAK,aAAa,EAAS,IAE/B,KAAK,cAAc,qBAE1B,aAAa,EAAM,CACZ,KAAM,GAAM,KAAK,IACX,EAAO,EAAK,MACZ,EAAU,CAAC,EAAK,SAChB,EAAO,GAAe,IAAS,KAAK,UACpC,EAAO,CACT,OACA,MAAO,EAAK,MACZ,WAAY,IAEZ,KAAK,cAAc,oBAAqB,KAAU,IAGlD,IACA,GAAS,EAAK,CACV,KAAM,EAAK,OAAS,GAAQ,EAAI,EAAK,KAAO,EAAK,KACjD,MAAO,EAAK,QAAU,GAAQ,KAAK,MAAQ,EAAK,MAAQ,EAAK,MAC7D,IAAK,EAAK,MAAQ,GAAQ,EAAI,EAAK,IAAM,EAAK,IAC9C,OAAQ,EAAK,SAAW,GAAQ,KAAK,OAAS,EAAK,OAAS,EAAK,SAGzE,EAAK,WAAW,OACZ,GACA,GAAW,GAEf,EAAK,WAAa,GAClB,KAAK,cAAc,mBAAoB,IAE9C,cAAc,EAAO,CACd,MAAO,IAAe,EAAO,KAAK,UAAW,KAAK,aAEtD,0BAA0B,EAAG,EAAM,EAAS,EAAkB,CAC1D,KAAM,GAAS,GAAY,MAAM,GACjC,MAAI,OAAO,IAAW,WACX,EAAO,KAAM,EAAG,EAAS,GAE7B,GAEX,eAAe,EAAc,CACzB,KAAM,GAAU,KAAK,KAAK,SAAS,GAC7B,EAAW,KAAK,UACtB,GAAI,GAAO,EAAS,OAAQ,GAAI,GAAK,EAAE,WAAa,GAAS,MAC7D,MAAK,IACD,GAAO,CACH,KAAM,KACN,KAAM,GACN,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,QAAS,KACT,QAAS,KACT,MAAO,GAAW,EAAQ,OAAS,EACnC,MAAO,EACP,SAAU,EACV,QAAS,GACT,QAAS,IAEb,EAAS,KAAK,IAEX,EAEX,YAAa,CACT,MAAO,MAAK,UAAa,MAAK,SAAW,GAAc,KAAM,CACzD,MAAO,KACP,KAAM,WAGd,wBAAyB,CACrB,MAAO,MAAK,+BAA+B,OAE/C,iBAAiB,EAAc,CAC3B,KAAM,GAAU,KAAK,KAAK,SAAS,GACnC,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAO,KAAK,eAAe,GACjC,MAAO,OAAO,GAAK,QAAW,UAAY,CAAC,EAAK,OAAS,CAAC,EAAQ,OAEtE,qBAAqB,EAAc,EAAS,CACxC,KAAM,GAAO,KAAK,eAAe,GACjC,EAAK,OAAS,CAAC,EAEnB,qBAAqB,EAAO,CACxB,KAAK,eAAe,GAAS,CAAC,KAAK,eAAe,GAEtD,kBAAkB,EAAO,CACrB,MAAO,CAAC,KAAK,eAAe,GAEnC,kBAAkB,EAAc,EAAW,EAAS,CAC7C,KAAM,GAAO,EAAU,OAAS,OAC1B,EAAO,KAAK,eAAe,GAC3B,EAAQ,EAAK,WAAW,mBAAmB,OAAW,GACxD,GAAQ,GACR,GAAK,KAAK,GAAW,OAAS,CAAC,EAC/B,KAAK,UAEL,MAAK,qBAAqB,EAAc,GACxC,EAAM,OAAO,EAAM,CACf,YAEJ,KAAK,OAAQ,GAAM,EAAI,eAAiB,EAAe,EAAO,SAGtE,KAAK,EAAc,EAAW,CAC1B,KAAK,kBAAkB,EAAc,EAAW,IAEpD,KAAK,EAAc,EAAW,CAC1B,KAAK,kBAAkB,EAAc,EAAW,IAEvD,oBAAoB,EAAc,CAC3B,KAAM,GAAO,KAAK,UAAU,GACxB,GAAQ,EAAK,YACb,EAAK,WAAW,WAEpB,MAAO,MAAK,UAAU,GAE1B,OAAQ,CACJ,GAAI,GAAG,EAGP,IAFA,KAAK,OACL,GAAS,OAAO,MACZ,EAAI,EAAG,EAAO,KAAK,KAAK,SAAS,OAAQ,EAAI,EAAM,EAAE,EACrD,KAAK,oBAAoB,GAGjC,SAAU,CACN,KAAK,cAAc,iBACnB,KAAM,CAAE,SAAS,OAAS,KAC1B,KAAK,QACL,KAAK,OAAO,aACR,GACA,MAAK,eACL,GAAY,EAAQ,GACpB,KAAK,SAAS,eAAe,GAC7B,KAAK,OAAS,KACd,KAAK,IAAM,MAEf,MAAO,IAAU,KAAK,IACtB,KAAK,cAAc,gBAEvB,iBAAiB,EAAM,CACnB,MAAO,MAAK,OAAO,UAAU,GAAG,GAEvC,YAAa,CACN,KAAK,iBACD,KAAK,QAAQ,WACb,KAAK,uBAEL,KAAK,SAAW,GAG3B,gBAAiB,CACV,KAAM,GAAY,KAAK,WACjB,EAAW,KAAK,SAChB,EAAO,CAAC,EAAM,IAAW,CAC3B,EAAS,iBAAiB,KAAM,EAAM,GACtC,EAAU,GAAQ,GAEhB,EAAW,CAAC,EAAG,EAAG,IAAI,CACxB,EAAE,QAAU,EACZ,EAAE,QAAU,EACZ,KAAK,cAAc,IAEvB,GAAK,KAAK,QAAQ,OAAS,GAAO,EAAK,EAAM,IAEpD,sBAAuB,CACX,KAAK,sBACN,MAAK,qBAAuB,IAEhC,KAAM,GAAY,KAAK,qBACjB,EAAW,KAAK,SAChB,EAAO,CAAC,EAAM,IAAW,CAC3B,EAAS,iBAAiB,KAAM,EAAM,GACtC,EAAU,GAAQ,GAEhB,EAAU,CAAC,EAAM,IAAW,CAC1B,EAAU,IACV,GAAS,oBAAoB,KAAM,EAAM,GACzC,MAAO,GAAU,KAGnB,EAAW,CAAC,EAAO,IAAS,CAC1B,KAAK,QACL,KAAK,OAAO,EAAO,IAG3B,GAAI,GACJ,KAAM,GAAW,IAAI,CACjB,EAAQ,SAAU,GAClB,KAAK,SAAW,GAChB,KAAK,SACL,EAAK,SAAU,GACf,EAAK,SAAU,IAEnB,EAAW,IAAI,CACX,KAAK,SAAW,GAChB,EAAQ,SAAU,GAClB,KAAK,QACL,KAAK,QAAQ,EAAG,GAChB,EAAK,SAAU,IAEf,EAAS,WAAW,KAAK,QACzB,IAEA,IAGX,cAAe,CACR,GAAK,KAAK,WAAY,CAAC,EAAU,IAAO,CACpC,KAAK,SAAS,oBAAoB,KAAM,EAAM,KAElD,KAAK,WAAa,GAClB,GAAK,KAAK,qBAAsB,CAAC,EAAU,IAAO,CAC9C,KAAK,SAAS,oBAAoB,KAAM,EAAM,KAElD,KAAK,qBAAuB,OAEhC,iBAAiB,EAAO,EAAM,EAAS,CACnC,KAAM,GAAS,EAAU,MAAQ,SACjC,GAAI,GAAM,EAAM,EAAG,EAKnB,IAJI,IAAS,WACT,GAAO,KAAK,eAAe,EAAM,GAAG,cACpC,EAAK,WAAW,IAAM,EAAS,wBAE/B,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC1C,EAAO,EAAM,GACb,KAAM,GAAa,GAAQ,KAAK,eAAe,EAAK,cAAc,WAC9D,GACA,EAAW,EAAS,cAAc,EAAK,QAAS,EAAK,aAAc,EAAK,QAIvF,mBAAoB,CACb,MAAO,MAAK,SAAW,GAE9B,kBAAkB,EAAgB,CAC3B,KAAM,GAAa,KAAK,SAAW,GAC7B,EAAS,EAAe,IAAI,CAAC,CAAE,eAAe,WAAW,CAC3D,KAAM,GAAO,KAAK,eAAe,GACjC,GAAI,CAAC,EACD,KAAM,IAAI,OAAM,6BAA+B,GAEnD,MAAO,CACH,eACA,QAAS,EAAK,KAAK,GACnB,WAIJ,CADa,GAAe,EAAQ,IAEpC,MAAK,QAAU,EACf,KAAK,WAAa,KAClB,KAAK,mBAAmB,EAAQ,IAG3C,cAAc,EAAM,EAAM,EAAQ,CAC3B,MAAO,MAAK,SAAS,OAAO,KAAM,EAAM,EAAM,GAErD,gBAAgB,EAAU,CACnB,MAAO,MAAK,SAAS,OAAO,OAAQ,GAAI,EAAE,OAAO,KAAO,GAAU,SAAW,EAEpF,mBAAmB,EAAQ,EAAY,EAAQ,CACxC,KAAM,GAAe,KAAK,QAAQ,MAC5B,EAAO,CAAC,EAAG,IAAI,EAAE,OAAQ,GAAI,CAAC,EAAE,KAAM,GAAI,EAAE,eAAiB,EAAE,cAAgB,EAAE,QAAU,EAAE,QAC7F,EAAc,EAAK,EAAY,GAC/B,EAAY,EAAS,EAAS,EAAK,EAAQ,GAC7C,EAAY,QACZ,KAAK,iBAAiB,EAAa,EAAa,KAAM,IAEtD,EAAU,QAAU,EAAa,MACjC,KAAK,iBAAiB,EAAW,EAAa,KAAM,IAG/D,cAAc,EAAG,EAAQ,CAClB,KAAM,GAAO,CACT,MAAO,EACP,SACA,WAAY,GACZ,YAAa,KAAK,cAAc,IAE9B,EAAe,GAAU,GAAO,QAAQ,QAAU,KAAK,QAAQ,QAAQ,SAAS,EAAE,OAAO,MAC/F,GAAI,KAAK,cAAc,cAAe,EAAM,KAAiB,GACzD,OAEJ,KAAM,GAAU,KAAK,aAAa,EAAG,EAAQ,EAAK,aAClD,SAAK,WAAa,GAClB,KAAK,cAAc,aAAc,EAAM,GACnC,IAAW,EAAK,UAChB,KAAK,SAEF,KAEd,aAAa,EAAG,EAAQ,EAAa,CAC9B,KAAM,CAAE,QAAS,EAAa,GAAK,WAAa,KAC1C,EAAmB,EACnB,EAAS,KAAK,mBAAmB,EAAG,EAAY,EAAa,GAC7D,EAAU,GAAc,GACxB,EAAY,GAAmB,EAAG,KAAK,WAAY,EAAa,GAClE,GACA,MAAK,WAAa,KAClB,GAAS,EAAQ,QAAS,CACtB,EACA,EACA,MACD,MACC,GACA,GAAS,EAAQ,QAAS,CACtB,EACA,EACA,MACD,OAGX,KAAM,GAAU,CAAC,GAAe,EAAQ,GACxC,MAAI,IAAW,IACX,MAAK,QAAU,EACf,KAAK,mBAAmB,EAAQ,EAAY,IAEhD,KAAK,WAAa,EACX,EAEd,mBAAmB,EAAG,EAAY,EAAa,EAAkB,CAC1D,GAAI,EAAE,OAAS,WACX,MAAO,GAEX,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAe,KAAK,QAAQ,MAClC,MAAO,MAAK,0BAA0B,EAAG,EAAa,KAAM,EAAc,IAGlF,aAA6B,CACzB,MAAO,IAAK,GAAM,UAAY,GAAQ,EAAM,SAAS,cAGzD,YAAiB,EAAK,EAAS,EAAU,CACrC,KAAM,CAAE,aAAa,cAAc,IAAI,IAAI,cAAc,eAAiB,EAC1E,GAAI,GAAc,EAAc,EAGhC,EAAI,YACJ,EAAI,IAAI,EAAG,EAAG,EAAa,EAAa,EAAa,EAAW,GAC5D,EAAc,EACd,GAAc,EAAc,EAC5B,EAAI,IAAI,EAAG,EAAG,EAAa,EAAW,EAAa,EAAa,EAAa,KAE7E,EAAI,IAAI,EAAG,EAAG,EAAa,EAAW,GAAS,EAAa,IAEhE,EAAI,YACJ,EAAI,OAER,YAAyB,EAAO,CAC5B,MAAO,IAAkB,EAAO,CAC5B,aACA,WACA,aACA,aAKJ,YAA6B,EAAK,EAAa,EAAa,EAAY,CACxE,KAAM,GAAI,GAAgB,EAAI,QAAQ,cAChC,EAAiB,GAAc,GAAe,EAC9C,EAAa,KAAK,IAAI,EAAe,EAAa,EAAc,GAQhE,EAAqB,GAAM,CAC7B,KAAM,GAAiB,GAAc,KAAK,IAAI,EAAe,IAAQ,EAAa,EAClF,MAAO,IAAY,EAAK,EAAG,KAAK,IAAI,EAAe,KAEvD,MAAO,CACH,WAAY,EAAkB,EAAE,YAChC,SAAU,EAAkB,EAAE,UAC9B,WAAY,GAAY,EAAE,WAAY,EAAG,GACzC,SAAU,GAAY,EAAE,SAAU,EAAG,IAKzC,YAAoB,EAAG,EAAO,EAAG,EAAG,CACpC,MAAO,CACH,EAAG,EAAI,EAAI,KAAK,IAAI,GACpB,EAAG,EAAI,EAAI,KAAK,IAAI,IAgBxB,YAAiB,EAAK,EAAS,EAAQ,EAAS,EAAK,EAAU,CAC/D,KAAM,CAAE,IAAI,IAAI,WAAY,EAAQ,cAAc,YAAa,GAAY,EACrE,EAAc,KAAK,IAAI,EAAQ,YAAc,EAAU,EAAS,EAAa,GAC7E,EAAc,EAAS,EAAI,EAAS,EAAU,EAAS,EAAc,EAC3E,GAAI,GAAgB,EACpB,KAAM,GAAQ,EAAM,EACpB,GAAI,EAAS,CAIT,KAAM,IAAuB,EAAS,EAAI,EAAS,EAAU,EACvD,GAAuB,EAAc,EAAI,EAAc,EAAU,EACjE,GAAsB,IAAuB,IAAwB,EACrE,GAAgB,KAAuB,EAAI,EAAQ,GAAsB,IAAqB,GAAW,EAC/G,EAAiB,GAAQ,IAAiB,EAE9C,KAAM,GAAO,KAAK,IAAI,KAAO,EAAQ,EAAc,EAAS,IAAM,EAC5D,EAAe,GAAQ,GAAQ,EAC/B,EAAa,EAAQ,EAAc,EACnC,GAAW,EAAM,EAAc,EAC/B,CAAE,cAAa,WAAW,cAAa,aAAc,GAAoB,EAAS,EAAa,EAAa,GAAW,GACvH,GAA2B,EAAc,GACzC,GAAyB,EAAc,EACvC,GAA0B,EAAa,GAAa,GACpD,GAAwB,GAAW,EAAW,GAC9C,GAA2B,EAAc,GACzC,GAAyB,EAAc,GACvC,GAA0B,EAAa,GAAa,GACpD,GAAwB,GAAW,GAAW,GAEpD,GADA,EAAI,YACA,EAAU,CAEV,KAAM,IAAyB,IAA0B,IAAyB,EAIlF,GAHA,EAAI,IAAI,EAAG,EAAG,EAAa,GAAyB,IACpD,EAAI,IAAI,EAAG,EAAG,EAAa,GAAuB,IAE9C,EAAW,EAAG,CACd,KAAM,IAAU,GAAW,GAAwB,GAAuB,EAAG,GAC7E,EAAI,IAAI,GAAQ,EAAG,GAAQ,EAAG,EAAU,GAAuB,GAAW,IAG9E,KAAM,IAAK,GAAW,GAAwB,GAAU,EAAG,GAG3D,GAFA,EAAI,OAAO,GAAG,EAAG,GAAG,GAEhB,GAAW,EAAG,CACd,KAAM,IAAU,GAAW,GAAwB,GAAuB,EAAG,GAC7E,EAAI,IAAI,GAAQ,EAAG,GAAQ,EAAG,GAAU,GAAW,GAAS,GAAwB,KAAK,IAG7F,KAAM,IAAyB,IAAW,GAAW,EAAe,GAAa,GAAa,IAAgB,EAI9G,GAHA,EAAI,IAAI,EAAG,EAAG,EAAa,GAAW,GAAW,EAAa,GAAuB,IACrF,EAAI,IAAI,EAAG,EAAG,EAAa,GAAuB,EAAa,GAAa,EAAa,IAErF,GAAa,EAAG,CAChB,KAAM,IAAU,GAAW,GAA0B,GAAyB,EAAG,GACjF,EAAI,IAAI,GAAQ,EAAG,GAAQ,EAAG,GAAY,GAA0B,KAAK,GAAI,EAAa,IAG9F,KAAM,IAAK,GAAW,GAA0B,EAAY,EAAG,GAG/D,GAFA,EAAI,OAAO,GAAG,EAAG,GAAG,GAEhB,GAAa,EAAG,CAChB,KAAM,IAAU,GAAW,GAA0B,GAAyB,EAAG,GACjF,EAAI,IAAI,GAAQ,EAAG,GAAQ,EAAG,GAAY,EAAa,GAAS,SAEjE,CACH,EAAI,OAAO,EAAG,GACd,KAAM,IAAc,KAAK,IAAI,IAA2B,EAAc,EAChE,GAAc,KAAK,IAAI,IAA2B,EAAc,EACtE,EAAI,OAAO,GAAa,IACxB,KAAM,IAAY,KAAK,IAAI,IAAyB,EAAc,EAC5D,GAAY,KAAK,IAAI,IAAyB,EAAc,EAClE,EAAI,OAAO,GAAW,IAE1B,EAAI,YAER,YAAiB,EAAK,EAAS,EAAQ,EAAS,EAAU,CACtD,KAAM,CAAE,cAAc,aAAa,iBAAmB,EACtD,GAAI,GAAW,EAAQ,SACvB,GAAI,EAAa,CACb,GAAQ,EAAK,EAAS,EAAQ,EAAS,EAAU,GACjD,OAAQ,GAAI,EAAG,EAAI,EAAa,EAAE,EAC9B,EAAI,OAEH,MAAM,IACP,GAAW,EAAc,GAAgB,IAAO,KAGxD,UAAQ,EAAK,EAAS,EAAQ,EAAS,EAAU,GACjD,EAAI,OACG,EAEX,YAAoB,EAAK,EAAS,EAAQ,EAAS,EAAU,CACzD,KAAM,CAAE,cAAc,aAAa,gBAAgB,WAAa,EAC1D,CAAE,cAAc,kBAAkB,aAAa,oBAAsB,EACrE,EAAQ,EAAQ,cAAgB,QACtC,GAAI,CAAC,EACD,OAEJ,EAAI,YAAY,GAAc,IAC9B,EAAI,eAAiB,EACjB,EACA,GAAI,UAAY,EAAc,EAC9B,EAAI,SAAW,GAAmB,SAElC,GAAI,UAAY,EAChB,EAAI,SAAW,GAAmB,SAEtC,GAAI,GAAW,EAAQ,SACvB,GAAI,EAAa,CACb,GAAQ,EAAK,EAAS,EAAQ,EAAS,EAAU,GACjD,OAAQ,GAAI,EAAG,EAAI,EAAa,EAAE,EAC9B,EAAI,SAEH,MAAM,IACP,GAAW,EAAc,GAAgB,IAAO,KAGpD,GACA,GAAQ,EAAK,EAAS,GAErB,GACD,IAAQ,EAAK,EAAS,EAAQ,EAAS,EAAU,GACjD,EAAI,UAGZ,gBAAyB,GAAQ,OACtB,IAAK,YACL,UAAW,CACd,YAAa,SACb,YAAa,OACb,WAAY,GACZ,iBAAkB,EAClB,gBAAiB,OACjB,aAAc,EACd,YAAa,EACb,OAAQ,EACR,QAAS,EACT,MAAO,OACP,SAAU,UAEP,eAAgB,CACnB,gBAAiB,yBAEd,aAAc,CACjB,YAAa,GACb,WAAa,GAAO,IAAS,cAEjC,cACA,SACA,YACA,YACA,YACA,YACA,WACA,YAAY,EAAI,CACZ,QACA,KAAK,QAAU,OACf,KAAK,cAAgB,OACrB,KAAK,WAAa,OAClB,KAAK,SAAW,OAChB,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,YAAc,EACnB,KAAK,YAAc,EACf,GACA,OAAO,OAAO,KAAM,GAG5B,QAAQ,EAAQ,EAAQ,EAAkB,CACtC,KAAM,GAAQ,KAAK,SAAS,CACxB,IACA,KACD,GACG,CAAE,QAAQ,YAAc,GAAkB,EAAO,CACnD,EAAG,EACH,EAAG,IAED,CAAE,aAAa,WAAW,cAAc,cAAc,iBAAmB,KAAK,SAAS,CACzF,aACA,WACA,cACA,cACA,iBACD,GACG,EAAW,MAAK,QAAQ,QAAU,KAAK,QAAQ,aAAe,EAE9D,EAAgB,GADgB,EAAe,EAAW,IACxB,IAAO,GAAc,EAAO,EAAY,GAC1E,EAAe,GAAW,EAAU,EAAc,EAAS,EAAc,GAC/E,MAAO,IAAiB,EAE5B,eAAe,EAAkB,CAC7B,KAAM,CAAE,IAAI,IAAI,aAAa,WAAW,cAAc,eAAiB,KAAK,SAAS,CACjF,IACA,IACA,aACA,WACA,cACA,eACD,GACG,CAAE,SAAS,WAAa,KAAK,QAC7B,EAAa,GAAa,GAAY,EACtC,EAAc,GAAc,EAAc,EAAU,GAAU,EACpE,MAAO,CACH,EAAG,EAAI,KAAK,IAAI,GAAa,EAC7B,EAAG,EAAI,KAAK,IAAI,GAAa,GAGrC,gBAAgB,EAAkB,CAC9B,MAAO,MAAK,eAAe,GAE/B,KAAK,EAAK,CACN,KAAM,CAAE,UAAU,iBAAmB,KAC/B,EAAU,GAAQ,QAAU,GAAK,EACjC,EAAW,GAAQ,SAAW,GAAK,EACnC,EAAW,EAAQ,SAGzB,GAFA,KAAK,YAAc,EAAQ,cAAgB,QAAU,IAAO,EAC5D,KAAK,YAAc,EAAgB,GAAM,KAAK,MAAM,EAAgB,IAAO,EACvE,IAAkB,GAAK,KAAK,YAAc,GAAK,KAAK,YAAc,EAClE,OAEJ,EAAI,OACJ,KAAM,GAAa,MAAK,WAAa,KAAK,UAAY,EACtD,EAAI,UAAU,KAAK,IAAI,GAAa,EAAQ,KAAK,IAAI,GAAa,GAClE,KAAM,GAAM,EAAI,KAAK,IAAI,KAAK,IAAI,GAAI,GAAiB,IACjD,EAAe,EAAS,EAC9B,EAAI,UAAY,EAAQ,gBACxB,EAAI,YAAc,EAAQ,YAC1B,GAAQ,EAAK,KAAM,EAAc,EAAS,GAC1C,GAAW,EAAK,KAAM,EAAc,EAAS,GAC7C,EAAI,WAIZ,YAAkB,EAAK,EAAS,EAAQ,EAAS,CAC7C,EAAI,QAAU,GAAe,EAAM,eAAgB,EAAQ,gBAC3D,EAAI,YAAY,GAAe,EAAM,WAAY,EAAQ,aACzD,EAAI,eAAiB,GAAe,EAAM,iBAAkB,EAAQ,kBACpE,EAAI,SAAW,GAAe,EAAM,gBAAiB,EAAQ,iBAC7D,EAAI,UAAY,GAAe,EAAM,YAAa,EAAQ,aAC1D,EAAI,YAAc,GAAe,EAAM,YAAa,EAAQ,aAEhE,YAAgB,EAAK,EAAU,EAAQ,CACnC,EAAI,OAAO,EAAO,EAAG,EAAO,GAE/B,YAAuB,EAAS,CAC7B,MAAI,GAAQ,QACD,GAEP,EAAQ,SAAW,EAAQ,yBAA2B,WAC/C,GAEJ,GAEX,YAAkB,EAAQ,EAAS,EAAS,GAAI,CAC5C,KAAM,GAAQ,EAAO,OACf,CAAE,MAAO,EAAc,EAAI,IAAK,EAAY,EAAQ,GAAO,EAC3D,CAAE,MAAO,EAAe,IAAK,GAAgB,EAC7C,EAAQ,KAAK,IAAI,EAAa,GAC9B,EAAM,KAAK,IAAI,EAAW,GAC1B,EAAU,EAAc,GAAgB,EAAY,GAAgB,EAAc,GAAc,EAAY,EAClH,MAAO,CACH,QACA,QACA,KAAM,EAAQ,KACd,KAAM,EAAM,GAAS,CAAC,EAAU,EAAQ,EAAM,EAAQ,EAAM,GAGnE,YAAqB,EAAK,EAAM,EAAS,EAAQ,CAC9C,KAAM,CAAE,SAAS,WAAa,EACxB,CAAE,QAAQ,QAAQ,OAAO,QAAU,GAAS,EAAQ,EAAS,GAC7D,EAAa,GAAc,GACjC,GAAI,CAAE,OAAM,GAAO,WAAa,GAAU,GACtC,EAAG,EAAO,EACd,IAAI,EAAI,EAAG,GAAK,EAAM,EAAE,EAEpB,EADQ,EAAQ,GAAS,GAAU,EAAO,EAAI,IAAM,GAChD,GAAM,MAEH,CAAI,EACP,GAAI,OAAO,EAAM,EAAG,EAAM,GAC1B,EAAO,IAEP,EAAW,EAAK,EAAM,EAAO,EAAS,EAAQ,SAElD,EAAO,GAEX,MAAI,IACA,GAAQ,EAAQ,GAAS,GAAU,EAAO,IAAM,GAChD,EAAW,EAAK,EAAM,EAAO,EAAS,EAAQ,UAE3C,CAAC,CAAC,EAEZ,YAAyB,EAAK,EAAM,EAAS,EAAQ,CAClD,KAAM,GAAS,EAAK,OACd,CAAE,QAAQ,QAAQ,QAAU,GAAS,EAAQ,EAAS,GACtD,CAAE,OAAM,GAAO,WAAa,GAAU,GAC5C,GAAI,GAAO,EACP,EAAS,EACT,EAAG,EAAO,EAAO,EAAM,EAAM,EACjC,KAAM,IAAc,GAAS,GAAS,GAAU,EAAO,EAAQ,IAAU,EACnE,GAAQ,IAAI,CACV,IAAS,GACT,GAAI,OAAO,EAAM,GACjB,EAAI,OAAO,EAAM,GACjB,EAAI,OAAO,EAAM,KAOzB,IAJI,GACA,GAAQ,EAAO,GAAW,IAC1B,EAAI,OAAO,EAAM,EAAG,EAAM,IAE1B,EAAI,EAAG,GAAK,EAAM,EAAE,EAAE,CAEtB,GADA,EAAQ,EAAO,GAAW,IACtB,EAAM,KACN,SAEJ,KAAM,GAAI,EAAM,EACV,GAAI,EAAM,EACV,GAAS,EAAI,EACf,KAAW,EACX,CAAI,GAAI,EACJ,EAAO,GACA,GAAI,GACX,GAAO,IAEX,EAAQ,GAAS,EAAO,GAAK,EAAE,GAE/B,MACA,EAAI,OAAO,EAAG,IACd,EAAQ,GACR,EAAS,EACT,EAAO,EAAO,IAElB,EAAQ,GAEZ,KAEH,YAA2B,EAAM,CAC9B,KAAM,GAAO,EAAK,QACZ,EAAa,EAAK,YAAc,EAAK,WAAW,OAEtD,MAAO,CADc,EAAK,YAAc,CAAC,EAAK,OAAS,CAAC,EAAK,SAAW,EAAK,yBAA2B,YAAc,CAAC,EAAK,SAAW,CAAC,EACnH,GAAkB,GAE1C,YAAiC,EAAS,CACvC,MAAI,GAAQ,QACD,GAEP,EAAQ,SAAW,EAAQ,yBAA2B,WAC/C,GAEJ,GAEX,YAA6B,EAAK,EAAM,EAAO,EAAO,CAClD,GAAI,GAAO,EAAK,MACX,GACD,GAAO,EAAK,MAAQ,GAAI,QACpB,EAAK,KAAK,EAAM,EAAO,IACvB,EAAK,aAGb,GAAS,EAAK,EAAK,SACnB,EAAI,OAAO,GAEf,YAA0B,EAAK,EAAM,EAAO,EAAO,CAC/C,KAAM,CAAE,WAAW,WAAa,EAC1B,EAAgB,GAAkB,GACxC,SAAW,KAAW,GAClB,GAAS,EAAK,EAAS,EAAQ,OAC/B,EAAI,YACA,EAAc,EAAK,EAAM,EAAS,CAClC,QACA,IAAK,EAAQ,EAAQ,KAErB,EAAI,YAER,EAAI,SAGZ,KAAM,IAAY,MAAO,SAAW,WACpC,YAAc,EAAK,EAAM,EAAO,EAAO,CAC/B,IAAa,CAAC,EAAK,QAAQ,QAC3B,GAAoB,EAAK,EAAM,EAAO,GAEtC,GAAiB,EAAK,EAAM,EAAO,GAG3C,gBAA0B,GAAQ,OACvB,IAAK,aACR,UAAW,CACX,eAAgB,OAChB,WAAY,GACZ,iBAAkB,EAClB,gBAAiB,QACjB,YAAa,EACb,gBAAiB,GACjB,uBAAwB,UACxB,KAAM,GACN,SAAU,GACV,QAAS,GACT,QAAS,SAET,eAAgB,CAChB,gBAAiB,kBACjB,YAAa,qBAEV,aAAc,CACjB,YAAa,GACb,WAAa,GAAO,IAAS,cAAgB,IAAS,QAE1D,YAAY,EAAI,CACZ,QACA,KAAK,SAAW,GAChB,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,UAAY,OACjB,KAAK,MAAQ,OACb,KAAK,QAAU,OACf,KAAK,UAAY,OACjB,KAAK,WAAa,GAClB,KAAK,eAAiB,GACtB,KAAK,cAAgB,OACjB,GACA,OAAO,OAAO,KAAM,GAG5B,oBAAoB,EAAW,EAAW,CACtC,KAAM,GAAU,KAAK,QACrB,GAAK,GAAQ,SAAW,EAAQ,yBAA2B,aAAe,CAAC,EAAQ,SAAW,CAAC,KAAK,eAAgB,CAChH,KAAM,GAAO,EAAQ,SAAW,KAAK,MAAQ,KAAK,UAClD,GAA2B,KAAK,QAAS,EAAS,EAAW,EAAM,GACnE,KAAK,eAAiB,OAG1B,QAAO,EAAQ,CACf,KAAK,QAAU,EACf,MAAO,MAAK,UACZ,MAAO,MAAK,MACZ,KAAK,eAAiB,MAEtB,SAAS,CACT,MAAO,MAAK,WAEZ,WAAW,CACX,MAAO,MAAK,WAAc,MAAK,UAAY,GAAiB,KAAM,KAAK,QAAQ,UAEtF,OAAQ,CACD,KAAM,GAAW,KAAK,SAChB,EAAS,KAAK,OACpB,MAAO,GAAS,QAAU,EAAO,EAAS,GAAG,OAEpD,MAAO,CACA,KAAM,GAAW,KAAK,SAChB,EAAS,KAAK,OACd,EAAQ,EAAS,OACvB,MAAO,IAAS,EAAO,EAAS,EAAQ,GAAG,KAElD,YAAY,EAAO,EAAU,CACtB,KAAM,GAAU,KAAK,QACf,EAAQ,EAAM,GACd,EAAS,KAAK,OACd,EAAW,GAAe,KAAM,CAClC,WACA,MAAO,EACP,IAAK,IAET,GAAI,CAAC,EAAS,OACV,OAEJ,KAAM,GAAS,GACT,EAAe,GAAwB,GAC7C,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAO,EAAS,OAAQ,EAAI,EAAM,EAAE,EAAE,CAC7C,KAAM,CAAE,QAAQ,OAAS,EAAS,GAC5B,EAAK,EAAO,GACZ,EAAK,EAAO,GAClB,GAAI,IAAO,EAAI,CACX,EAAO,KAAK,GACZ,SAEJ,KAAM,GAAI,KAAK,IAAK,GAAQ,EAAG,IAAc,GAAG,GAAY,EAAG,KACzD,EAAe,EAAa,EAAI,EAAI,EAAG,EAAQ,SACrD,EAAa,GAAY,EAAM,GAC/B,EAAO,KAAK,GAEhB,MAAO,GAAO,SAAW,EAAI,EAAO,GAAK,EAEhD,YAAY,EAAK,EAAS,EAAQ,CAE3B,MAAO,IADiC,MACnB,EAAK,KAAM,EAAS,GAEhD,KAAK,EAAK,EAAO,EAAO,CACjB,KAAM,GAAW,KAAK,SAChB,EAAgB,GAAkB,MACxC,GAAI,GAAO,KAAK,MAChB,EAAQ,GAAS,EACjB,EAAQ,GAAS,KAAK,OAAO,OAAS,EACtC,SAAW,KAAW,GAClB,GAAQ,EAAc,EAAK,KAAM,EAAS,CACtC,QACA,IAAK,EAAQ,EAAQ,IAG7B,MAAO,CAAC,CAAC,EAEhB,KAAK,EAAK,EAAW,EAAO,EAAO,CAC5B,KAAM,GAAU,KAAK,SAAW,GAE5B,MADgB,QAAU,IACnB,QAAU,EAAQ,aACzB,GAAI,OACJ,GAAK,EAAK,KAAM,EAAO,GACvB,EAAI,WAEJ,KAAK,UACL,MAAK,eAAiB,GACtB,KAAK,MAAQ,SAKzB,YAAmB,EAAI,EAAK,EAAM,EAAkB,CAChD,KAAM,GAAU,EAAG,QACb,EAAG,GAAO,GAAW,EAAG,SAAS,CACnC,GACD,GACH,MAAO,MAAK,IAAI,EAAM,GAAS,EAAQ,OAAS,EAAQ,UAE5D,gBAA2B,GAAQ,OACxB,IAAK,QACZ,OACA,KACA,WAGS,UAAW,CAChB,YAAa,EACb,UAAW,EACX,iBAAkB,EAClB,YAAa,EACb,WAAY,SACZ,OAAQ,EACR,SAAU,SAIL,eAAgB,CACrB,gBAAiB,kBACjB,YAAa,eAEjB,YAAY,EAAI,CACZ,QACA,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,KAAO,OACR,GACA,OAAO,OAAO,KAAM,GAG5B,QAAQ,EAAQ,EAAQ,EAAkB,CACtC,KAAM,GAAU,KAAK,QACf,CAAE,IAAI,KAAO,KAAK,SAAS,CAC7B,IACA,KACD,GACH,MAAO,MAAK,IAAI,EAAS,EAAG,GAAK,KAAK,IAAI,EAAS,EAAG,GAAK,KAAK,IAAI,EAAQ,UAAY,EAAQ,OAAQ,GAE5G,SAAS,EAAQ,EAAkB,CAC/B,MAAO,IAAU,KAAM,EAAQ,IAAK,GAExC,SAAS,EAAQ,EAAkB,CAC/B,MAAO,IAAU,KAAM,EAAQ,IAAK,GAExC,eAAe,EAAkB,CAC7B,KAAM,CAAE,IAAI,KAAO,KAAK,SAAS,CAC7B,IACA,KACD,GACH,MAAO,CACH,IACA,KAGR,KAAK,EAAS,CACV,EAAU,GAAW,KAAK,SAAW,GACrC,GAAI,GAAS,EAAQ,QAAU,EAC/B,EAAS,KAAK,IAAI,EAAQ,GAAU,EAAQ,aAAe,GAC3D,KAAM,GAAc,GAAU,EAAQ,aAAe,EACrD,MAAQ,GAAS,GAAe,EAEpC,KAAK,EAAK,EAAM,CACZ,KAAM,GAAU,KAAK,QACjB,KAAK,MAAQ,EAAQ,OAAS,IAAO,CAAC,GAAe,KAAM,EAAM,KAAK,KAAK,GAAW,IAG1F,GAAI,YAAc,EAAQ,YAC1B,EAAI,UAAY,EAAQ,YACxB,EAAI,UAAY,EAAQ,gBACxB,GAAU,EAAK,EAAS,KAAK,EAAG,KAAK,IAEzC,UAAW,CACP,KAAM,GAAU,KAAK,SAAW,GAEhC,MAAO,GAAQ,OAAS,EAAQ,WAIxC,YAAsB,EAAK,EAAkB,CACzC,KAAM,CAAE,IAAI,IAAI,OAAO,QAAQ,UAAa,EAAI,SAAS,CACrD,IACA,IACA,OACA,QACA,UACD,GACH,GAAI,GAAM,EAAO,EAAK,EAAQ,EAC9B,MAAI,GAAI,WACJ,GAAO,EAAS,EAChB,EAAO,KAAK,IAAI,EAAG,GACnB,EAAQ,KAAK,IAAI,EAAG,GACpB,EAAM,EAAI,EACV,EAAS,EAAI,GAEb,GAAO,EAAQ,EACf,EAAO,EAAI,EACX,EAAQ,EAAI,EACZ,EAAM,KAAK,IAAI,EAAG,GAClB,EAAS,KAAK,IAAI,EAAG,IAElB,CACH,OACA,MACA,QACA,UAGR,YAAqB,EAAM,EAAO,EAAK,EAAK,CACxC,MAAO,GAAO,EAAI,GAAY,EAAO,EAAK,GAE9C,YAA0B,EAAK,EAAM,EAAM,CACvC,KAAM,GAAQ,EAAI,QAAQ,YACpB,EAAO,EAAI,cACX,EAAI,GAAO,GACjB,MAAO,CACH,EAAG,GAAY,EAAK,IAAK,EAAE,IAAK,EAAG,GACnC,EAAG,GAAY,EAAK,MAAO,EAAE,MAAO,EAAG,GACvC,EAAG,GAAY,EAAK,OAAQ,EAAE,OAAQ,EAAG,GACzC,EAAG,GAAY,EAAK,KAAM,EAAE,KAAM,EAAG,IAG7C,YAA2B,EAAK,EAAM,EAAM,CACxC,KAAM,CAAE,sBAAwB,EAAI,SAAS,CACzC,uBAEE,EAAQ,EAAI,QAAQ,aACpB,EAAI,GAAc,GAClB,EAAO,KAAK,IAAI,EAAM,GACtB,EAAO,EAAI,cACX,EAAe,GAAsB,GAAS,GACpD,MAAO,CACH,QAAS,GAAY,CAAC,GAAgB,EAAK,KAAO,EAAK,KAAM,EAAE,QAAS,EAAG,GAC3E,SAAU,GAAY,CAAC,GAAgB,EAAK,KAAO,EAAK,MAAO,EAAE,SAAU,EAAG,GAC9E,WAAY,GAAY,CAAC,GAAgB,EAAK,QAAU,EAAK,KAAM,EAAE,WAAY,EAAG,GACpF,YAAa,GAAY,CAAC,GAAgB,EAAK,QAAU,EAAK,MAAO,EAAE,YAAa,EAAG,IAG/F,YAAuB,EAAK,CACxB,KAAM,GAAS,GAAa,GACtB,EAAQ,EAAO,MAAQ,EAAO,KAC9B,EAAS,EAAO,OAAS,EAAO,IAChC,EAAS,GAAiB,EAAK,EAAQ,EAAG,EAAS,GACnD,EAAS,GAAkB,EAAK,EAAQ,EAAG,EAAS,GAC1D,MAAO,CACH,MAAO,CACH,EAAG,EAAO,KACV,EAAG,EAAO,IACV,EAAG,EACH,EAAG,EACH,UAEJ,MAAO,CACH,EAAG,EAAO,KAAO,EAAO,EACxB,EAAG,EAAO,IAAM,EAAO,EACvB,EAAG,EAAQ,EAAO,EAAI,EAAO,EAC7B,EAAG,EAAS,EAAO,EAAI,EAAO,EAC9B,OAAQ,CACJ,QAAS,KAAK,IAAI,EAAG,EAAO,QAAU,KAAK,IAAI,EAAO,EAAG,EAAO,IAChE,SAAU,KAAK,IAAI,EAAG,EAAO,SAAW,KAAK,IAAI,EAAO,EAAG,EAAO,IAClE,WAAY,KAAK,IAAI,EAAG,EAAO,WAAa,KAAK,IAAI,EAAO,EAAG,EAAO,IACtE,YAAa,KAAK,IAAI,EAAG,EAAO,YAAc,KAAK,IAAI,EAAO,EAAG,EAAO,OAKxF,YAAiB,EAAK,EAAG,EAAG,EAAkB,CAC1C,KAAM,GAAQ,IAAM,KACd,EAAQ,IAAM,KAEd,EAAS,GAAO,CADL,IAAS,IACS,GAAa,EAAK,GACrD,MAAO,IAAW,IAAS,GAAW,EAAG,EAAO,KAAM,EAAO,SAAY,IAAS,GAAW,EAAG,EAAO,IAAK,EAAO,SAEvH,YAAmB,EAAQ,CACvB,MAAO,GAAO,SAAW,EAAO,UAAY,EAAO,YAAc,EAAO,YAE3E,YAA2B,EAAK,EAAM,CACnC,EAAI,KAAK,EAAK,EAAG,EAAK,EAAG,EAAK,EAAG,EAAK,GAE1C,YAAqB,EAAM,EAAQ,EAAU,GAAI,CAC7C,KAAM,GAAI,EAAK,IAAM,EAAQ,EAAI,CAAC,EAAS,EACrC,EAAI,EAAK,IAAM,EAAQ,EAAI,CAAC,EAAS,EACrC,EAAK,GAAK,EAAI,EAAK,IAAM,EAAQ,EAAI,EAAQ,EAAI,EAAS,GAAK,EAC/D,EAAK,GAAK,EAAI,EAAK,IAAM,EAAQ,EAAI,EAAQ,EAAI,EAAS,GAAK,EACrE,MAAO,CACH,EAAG,EAAK,EAAI,EACZ,EAAG,EAAK,EAAI,EACZ,EAAG,EAAK,EAAI,EACZ,EAAG,EAAK,EAAI,EACZ,OAAQ,EAAK,QAGrB,gBAAyB,GAAQ,OACtB,IAAK,YACR,UAAW,CACX,cAAe,QACf,YAAa,EACb,aAAc,EACd,cAAe,OACf,WAAY,cAEZ,eAAgB,CAChB,gBAAiB,kBACjB,YAAa,eAEjB,YAAY,EAAI,CACZ,QACA,KAAK,QAAU,OACf,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,cAAgB,OACjB,GACA,OAAO,OAAO,KAAM,GAG5B,KAAK,EAAK,CACN,KAAM,CAAE,gBAAgB,QAAS,CAAE,cAAc,oBAAwB,KACnE,CAAE,QAAQ,SAAW,GAAc,MACnC,EAAc,GAAU,EAAM,QAAU,GAAqB,GACnE,EAAI,OACA,GAAM,IAAM,EAAM,GAAK,EAAM,IAAM,EAAM,IACzC,GAAI,YACJ,EAAY,EAAK,GAAY,EAAO,EAAe,IACnD,EAAI,OACJ,EAAY,EAAK,GAAY,EAAO,CAAC,EAAe,IACpD,EAAI,UAAY,EAChB,EAAI,KAAK,YAEb,EAAI,YACJ,EAAY,EAAK,GAAY,EAAO,IACpC,EAAI,UAAY,EAChB,EAAI,OACJ,EAAI,UAER,QAAQ,EAAQ,EAAQ,EAAkB,CACtC,MAAO,IAAQ,KAAM,EAAQ,EAAQ,GAEzC,SAAS,EAAQ,EAAkB,CAC/B,MAAO,IAAQ,KAAM,EAAQ,KAAM,GAEvC,SAAS,EAAQ,EAAkB,CAC/B,MAAO,IAAQ,KAAM,KAAM,EAAQ,GAEvC,eAAe,EAAkB,CAC7B,KAAM,CAAE,IAAI,IAAI,OAAO,cAAiB,KAAK,SAAS,CAClD,IACA,IACA,OACA,cACD,GACH,MAAO,CACH,EAAG,EAAc,GAAI,GAAQ,EAAI,EACjC,EAAG,EAAa,EAAK,GAAI,GAAQ,GAGzC,SAAS,EAAM,CACX,MAAO,KAAS,IAAM,KAAK,MAAQ,EAAI,KAAK,OAAS,GAI7D,GAAI,IAAwB,OAAO,OAAO,CAC1C,UAAW,KACX,WAAY,GACZ,WAAY,GACZ,YAAa,GACb,aAAc,KAGd,KAAM,IAAgB,CAClB,oBACA,oBACA,oBACA,oBACA,oBACA,qBACA,sBAGE,GAAoC,GAAc,IAAK,GAAQ,EAAM,QAAQ,OAAQ,SAAS,QAAQ,IAAK,WACjH,YAAwB,EAAG,CACvB,MAAO,IAAc,EAAI,GAAc,QAE3C,YAA4B,EAAG,CAC3B,MAAO,IAAkB,EAAI,GAAkB,QAEnD,YAAgC,EAAS,EAAG,CACxC,SAAQ,YAAc,GAAe,GACrC,EAAQ,gBAAkB,GAAmB,GACtC,EAAE,EAEb,YAAiC,EAAS,EAAG,CACzC,SAAQ,gBAAkB,EAAQ,KAAK,IAAI,IAAI,GAAe,MACvD,EAEX,YAAkC,EAAS,EAAG,CAC1C,SAAQ,gBAAkB,EAAQ,KAAK,IAAI,IAAI,GAAmB,MAC3D,EAEX,YAAsB,EAAO,CACzB,GAAI,GAAI,EACR,MAAO,CAAC,EAAS,IAAe,CAC5B,KAAM,GAAa,EAAM,eAAe,GAAc,WAClD,YAAsB,IACtB,EAAI,GAAwB,EAAS,GAC9B,YAAsB,IAC7B,EAAI,GAAyB,EAAS,GAC/B,GACP,GAAI,GAAuB,EAAS,KAIhD,YAAmC,EAAa,CAC5C,GAAI,GACJ,IAAI,IAAK,GACL,GAAI,EAAY,GAAG,aAAe,EAAY,GAAG,gBAC7C,MAAO,GAGf,MAAO,GAEX,YAAkC,EAAY,CAC1C,MAAO,IAAe,GAAW,aAAe,EAAW,iBAE/D,GAAI,IAAgB,CAChB,GAAI,SACJ,SAAU,CACN,QAAS,GACT,cAAe,IAEnB,aAAc,EAAO,EAAO,EAAS,CACjC,GAAI,CAAC,EAAQ,QACT,OAEJ,KAAM,CAAE,KAAM,CAAE,YAAc,QAAS,GAAkB,EAAM,OACzD,CAAE,YAAc,EACtB,GAAI,CAAC,EAAQ,eAAkB,IAA0B,IAAa,GAAyB,IAAiB,GAAY,GAA0B,IAClJ,OAEJ,KAAM,GAAY,GAAa,GAC/B,EAAS,QAAQ,KAIzB,YAAwB,EAAM,EAAO,EAAO,EAAgB,EAAS,CACpE,KAAM,GAAU,EAAQ,SAAW,EAChC,GAAI,GAAW,EACX,MAAO,GAAK,MAAM,EAAO,EAAQ,GAErC,KAAM,GAAY,GACZ,EAAe,GAAQ,GAAM,GAAU,GAC7C,GAAI,GAAe,EACnB,KAAM,GAAW,EAAQ,EAAQ,EACjC,GAAI,GAAI,EACJ,EAAG,EAAc,EAAS,EAAM,EAEpC,IADA,EAAU,KAAkB,EAAK,GAC7B,EAAI,EAAG,EAAI,EAAU,EAAG,IAAI,CAC5B,GAAI,GAAO,EACP,EAAO,EACP,GACJ,KAAM,IAAgB,KAAK,MAAO,GAAI,GAAK,GAAe,EAAI,EACxD,EAAc,KAAK,IAAI,KAAK,MAAO,GAAI,GAAK,GAAe,EAAG,GAAS,EACvE,GAAiB,EAAc,GACrC,IAAI,GAAI,GAAe,GAAI,EAAa,KACpC,GAAQ,EAAK,IAAG,EAChB,GAAQ,EAAK,IAAG,EAEpB,GAAQ,GACR,GAAQ,GACR,KAAM,IAAY,KAAK,MAAM,EAAI,GAAe,EAAI,EAC9C,GAAU,KAAK,IAAI,KAAK,MAAO,GAAI,GAAK,GAAe,EAAG,GAAS,EACnE,CAAE,EAAG,GAAU,EAAG,IAAa,EAAK,GAE1C,IADA,EAAU,EAAO,GACb,GAAI,GAAW,GAAI,GAAS,KAC5B,EAAO,GAAM,KAAK,IAAK,IAAU,GAAS,GAAK,IAAG,EAAI,IAAY,IAAU,EAAK,IAAG,GAAM,GAAO,KAC7F,EAAO,GACP,GAAU,EACV,EAAe,EAAK,IACpB,EAAQ,IAGhB,EAAU,KAAkB,EAC5B,EAAI,EAER,SAAU,KAAkB,EAAK,GAC1B,EAEX,YAA0B,EAAM,EAAO,EAAO,EAAgB,CAC1D,GAAI,GAAO,EACP,EAAS,EACT,EAAG,EAAO,EAAG,EAAG,EAAO,EAAU,EAAU,EAAY,EAAM,EACjE,KAAM,GAAY,GACZ,EAAW,EAAQ,EAAQ,EAC3B,GAAO,EAAK,GAAO,EAEnB,EAAK,EADO,GAAU,EACV,GAClB,IAAI,EAAI,EAAO,EAAI,EAAQ,EAAO,EAAE,EAAE,CAClC,EAAQ,EAAK,GACb,EAAK,GAAM,EAAI,IAAQ,EAAK,EAC5B,EAAI,EAAM,EACV,KAAM,IAAS,EAAI,EACnB,GAAI,KAAW,EACP,EAAI,EACJ,GAAO,EACP,EAAW,GACJ,EAAI,GACX,GAAO,EACP,EAAW,GAEf,EAAQ,GAAS,EAAO,EAAM,GAAK,EAAE,MAClC,CACH,KAAM,IAAY,EAAI,EACtB,GAAI,CAAC,GAAc,IAAa,CAAC,GAAc,GAAW,CACtD,KAAM,IAAqB,KAAK,IAAI,EAAU,GACxC,GAAqB,KAAK,IAAI,EAAU,GAC1C,KAAuB,GAAc,KAAuB,IAC5D,EAAU,KAAK,IACR,EAAK,IACR,EAAG,IAGP,KAAuB,GAAc,KAAuB,IAC5D,EAAU,KAAK,IACR,EAAK,IACR,EAAG,IAIX,EAAI,GAAK,KAAc,GACvB,EAAU,KAAK,EAAK,KAExB,EAAU,KAAK,GACf,EAAQ,GACR,EAAS,EACT,EAAO,EAAO,EACd,EAAW,EAAW,EAAa,GAG3C,MAAO,GAEX,YAA+B,EAAS,CACpC,GAAI,EAAQ,WAAY,CACpB,KAAM,GAAO,EAAQ,MACrB,MAAO,GAAQ,WACf,MAAO,GAAQ,MACf,OAAO,eAAe,EAAS,OAAQ,CACnC,aAAc,GACd,WAAY,GACZ,SAAU,GACV,MAAO,KAInB,YAA4B,EAAO,CAC/B,EAAM,KAAK,SAAS,QAAS,GAAU,CACnC,GAAsB,KAG9B,YAAmD,EAAM,EAAQ,CAC7D,KAAM,GAAa,EAAO,OAC1B,GAAI,GAAQ,EACR,EACJ,KAAM,CAAE,UAAY,EACd,CAAE,MAAM,MAAM,aAAa,cAAgB,EAAO,gBACxD,MAAI,IACA,GAAQ,GAAY,GAAa,EAAQ,EAAO,KAAM,GAAK,GAAI,EAAG,EAAa,IAE/E,EACA,EAAQ,GAAY,GAAa,EAAQ,EAAO,KAAM,GAAK,GAAK,EAAG,EAAO,GAAc,EAExF,EAAQ,EAAa,EAElB,CACH,QACA,SAGR,GAAI,IAAoB,CACpB,GAAI,aACJ,SAAU,CACN,UAAW,UACX,QAAS,IAEb,qBAAsB,CAAC,EAAO,EAAM,IAAU,CAC1C,GAAI,CAAC,EAAQ,QAAS,CAClB,GAAmB,GACnB,OAEJ,KAAM,GAAiB,EAAM,MAC7B,EAAM,KAAK,SAAS,QAAQ,CAAC,EAAS,IAAe,CACjD,KAAM,CAAE,QAAQ,aAAe,EACzB,EAAO,EAAM,eAAe,GAC5B,EAAO,GAAS,EAAQ,KAO9B,GANI,GAAQ,CACR,EACA,EAAM,QAAQ,cACX,KAGH,CAAC,EAAK,WAAW,mBACjB,OAEJ,KAAM,GAAQ,EAAM,OAAO,EAAK,SAIhC,GAHI,EAAM,OAAS,UAAY,EAAM,OAAS,QAG1C,EAAM,QAAQ,QACd,OAEJ,GAAI,CAAE,QAAQ,SAAW,GAA0C,EAAM,GACzE,KAAM,GAAY,EAAQ,WAAa,EAAI,EAC3C,GAAI,GAAS,EAAW,CACpB,GAAsB,GACtB,OAEA,GAAc,IACd,GAAQ,MAAQ,EAChB,MAAO,GAAQ,KACf,OAAO,eAAe,EAAS,OAAQ,CACnC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACZ,MAAO,MAAK,YAEhB,IAAK,SAAS,EAAG,CACb,KAAK,MAAQ,MAIzB,GAAI,GACJ,OAAO,EAAQ,eACN,OACD,EAAY,GAAe,EAAM,EAAO,EAAO,EAAgB,GAC/D,UACC,UACD,EAAY,GAAiB,EAAM,EAAO,EAAO,GACjD,cAEA,KAAM,IAAI,OAAM,qCAAqC,EAAQ,cAErE,EAAQ,WAAa,KAG7B,QAAS,EAAO,CACZ,GAAmB,KAI3B,YAAmB,EAAM,EAAQ,EAAU,CACvC,KAAM,GAAW,EAAK,SAChB,EAAS,EAAK,OACd,EAAU,EAAO,OACjB,EAAQ,GACd,SAAW,KAAW,GAAS,CAC3B,GAAI,CAAE,QAAQ,OAAS,EACvB,EAAM,GAAgB,EAAO,EAAK,GAClC,KAAM,GAAS,GAAW,EAAU,EAAO,GAAQ,EAAO,GAAM,EAAQ,MACxE,GAAI,CAAC,EAAO,SAAU,CAClB,EAAM,KAAK,CACP,OAAQ,EACR,OAAQ,EACR,MAAO,EAAO,GACd,IAAK,EAAO,KAEhB,SAEJ,KAAM,GAAiB,GAAe,EAAQ,GAC9C,SAAW,KAAO,GAAe,CAC7B,KAAM,GAAY,GAAW,EAAU,EAAQ,EAAI,OAAQ,EAAQ,EAAI,KAAM,EAAI,MAC3E,EAAc,GAAc,EAAS,EAAQ,GACnD,SAAW,KAAc,GACrB,EAAM,KAAK,CACP,OAAQ,EACR,OAAQ,EACR,MAAO,EACF,GAAW,GAAS,EAAQ,EAAW,QAAS,KAAK,MAE1D,IAAK,EACA,GAAW,GAAS,EAAQ,EAAW,MAAO,KAAK,SAMxE,MAAO,GAEX,YAAoB,EAAU,EAAO,EAAM,EAAM,CAC7C,GAAI,EACA,OAEJ,GAAI,GAAQ,EAAM,GACd,EAAM,EAAK,GACf,MAAI,KAAa,SACb,GAAQ,GAAgB,GACxB,EAAM,GAAgB,IAEnB,CACH,WACA,QACA,OAGR,YAA6B,EAAU,EAAM,CACzC,KAAM,CAAE,IAAG,KAAO,IAAG,MAAU,GAAY,GACrC,EAAa,EAAK,OAClB,EAAS,GACf,SAAK,SAAS,QAAQ,CAAC,CAAE,QAAQ,SAAS,CACtC,EAAM,GAAgB,EAAO,EAAK,GAClC,KAAM,GAAQ,EAAW,GACnB,EAAO,EAAW,GACpB,IAAM,KACN,GAAO,KAAK,CACR,EAAG,EAAM,EACT,MAEJ,EAAO,KAAK,CACR,EAAG,EAAK,EACR,OAEG,IAAM,MACb,GAAO,KAAK,CACR,IACA,EAAG,EAAM,IAEb,EAAO,KAAK,CACR,IACA,EAAG,EAAK,OAIb,EAEX,YAAyB,EAAO,EAAK,EAAQ,CACzC,KAAM,EAAM,EAAO,IAAM,CACrB,KAAM,GAAQ,EAAO,GACrB,GAAI,CAAC,MAAM,EAAM,IAAM,CAAC,MAAM,EAAM,GAChC,MAGR,MAAO,GAEX,YAAkB,EAAG,EAAG,EAAM,EAAI,CAC9B,MAAI,IAAK,EACE,EAAG,EAAE,GAAO,EAAE,IAElB,EAAI,EAAE,GAAQ,EAAI,EAAE,GAAQ,EAGvC,YAA6B,EAAU,EAAM,CACzC,GAAI,GAAS,GACT,EAAQ,GACZ,MAAI,IAAQ,GACR,GAAQ,GACR,EAAS,GAET,EAAS,GAAoB,EAAU,GAEpC,EAAO,OAAS,GAAI,IAAY,CACnC,SACA,QAAS,CACL,QAAS,GAEb,QACA,UAAW,IACV,KAET,YAA0B,EAAQ,CAC9B,MAAO,IAAU,EAAO,OAAS,GAGrC,YAAwB,EAAS,EAAO,EAAW,CAE/C,GAAI,GAAO,EADY,GACL,KAClB,KAAM,GAAU,CACZ,GAEJ,GAAI,GACJ,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,IAAS,IAAS,EAAQ,QAAQ,KAAU,IAAG,CACjD,GAAI,CAAC,GAAe,GAChB,MAAO,GAGX,GADA,EAAS,EAAQ,GACb,CAAC,EACD,MAAO,GAEX,GAAI,EAAO,QACP,MAAO,GAEX,EAAQ,KAAK,GACb,EAAO,EAAO,KAElB,MAAO,GAEV,YAAqB,EAAM,EAAO,EAAO,CACrC,KAAM,GAAO,GAAgB,GAC9B,GAAI,GAAS,GACT,MAAO,OAAM,EAAK,OAAS,GAAQ,EAEvC,GAAI,GAAS,WAAW,GACxB,MAAI,IAAe,IAAW,KAAK,MAAM,KAAY,EAC1C,GAAkB,EAAK,GAAI,EAAO,EAAQ,GAE9C,CACH,SACA,QACA,MACA,QACA,SACF,QAAQ,IAAS,GAAK,EAE5B,YAA2B,EAAS,EAAO,EAAQ,EAAO,CAItD,MAHI,KAAY,KAAO,IAAY,MAC/B,GAAS,EAAQ,GAEjB,IAAW,GAAS,EAAS,GAAK,GAAU,EACrC,GAEJ,EAEV,YAAyB,EAAM,EAAO,CACnC,GAAI,GAAQ,KACZ,MAAI,KAAS,QACT,EAAQ,EAAM,OACP,IAAS,MAChB,EAAQ,EAAM,IACP,GAAS,GAChB,EAAQ,EAAM,iBAAiB,EAAK,OAC7B,EAAM,cACb,GAAQ,EAAM,gBAEX,EAEV,YAAyB,EAAM,EAAO,EAAY,CAC/C,GAAI,GACJ,MAAI,KAAS,QACT,EAAQ,EACD,IAAS,MAChB,EAAQ,EAAM,QAAQ,QAAU,EAAM,IAAM,EAAM,IAC3C,GAAS,GAChB,EAAQ,EAAK,MAEb,EAAQ,EAAM,eAEX,EAEV,YAAyB,EAAM,CAC5B,KAAM,GAAU,EAAK,QACf,EAAa,EAAQ,KAC3B,GAAI,GAAO,GAAe,GAAc,EAAW,OAAQ,GAI3D,MAHI,KAAS,QACT,GAAO,CAAC,CAAC,EAAQ,iBAEjB,IAAS,IAAS,IAAS,KACpB,GAEP,IAAS,GACF,SAEJ,EAGX,YAAyB,EAAQ,CAC7B,KAAM,CAAE,QAAQ,QAAQ,QAAU,EAC5B,EAAS,GACT,EAAW,EAAK,SAChB,EAAe,EAAK,OACpB,EAAa,GAAc,EAAO,GACxC,EAAW,KAAK,GAAoB,CAChC,EAAG,KACH,EAAG,EAAM,QACV,IACH,OAAQ,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAI,CACpC,KAAM,GAAU,EAAS,GACzB,OAAQ,GAAI,EAAQ,MAAO,GAAK,EAAQ,IAAK,IACzC,GAAe,EAAQ,EAAa,GAAI,GAGhD,MAAO,IAAI,IAAY,CACnB,SACA,QAAS,KAGhB,YAAuB,EAAO,EAAO,CAClC,KAAM,GAAQ,GACR,EAAQ,EAAM,wBAAwB,QAC5C,OAAQ,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAI,CACjC,KAAM,GAAO,EAAM,GACnB,GAAI,EAAK,QAAU,EACf,MAEC,EAAK,QACN,EAAM,QAAQ,EAAK,SAG3B,MAAO,GAEV,YAAwB,EAAQ,EAAa,EAAY,CACtD,KAAM,GAAY,GAClB,OAAQ,GAAI,EAAG,EAAI,EAAW,OAAQ,IAAI,CACtC,KAAM,GAAO,EAAW,GAClB,CAAE,QAAQ,OAAO,SAAW,GAAU,EAAM,EAAa,KAC/D,GAAI,GAAC,GAAS,GAAS,IAGvB,GAAI,EACA,EAAU,QAAQ,WAElB,EAAO,KAAK,GACR,CAAC,EACD,OAIZ,EAAO,KAAK,GAAG,GAElB,YAAmB,EAAM,EAAa,EAAU,CAC7C,KAAM,GAAQ,EAAK,YAAY,EAAa,GAC5C,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAa,EAAM,GACnB,EAAW,EAAK,SAChB,EAAa,EAAK,OACxB,GAAI,GAAQ,GACR,EAAO,GACX,OAAQ,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAI,CACpC,KAAM,GAAU,EAAS,GACnB,EAAa,EAAW,EAAQ,OAAO,GACvC,EAAY,EAAW,EAAQ,KAAK,GAC1C,GAAI,GAAW,EAAY,EAAY,GAAY,CAC/C,EAAQ,IAAe,EACvB,EAAO,IAAe,EACtB,OAGR,MAAO,CACH,QACA,OACA,SAIR,QAAgB,CACZ,YAAY,EAAK,CACb,KAAK,EAAI,EAAK,EACd,KAAK,EAAI,EAAK,EACd,KAAK,OAAS,EAAK,OAEvB,YAAY,EAAK,EAAQ,EAAM,CAC3B,KAAM,CAAE,IAAI,IAAI,UAAY,KAC5B,SAAS,GAAU,CACf,MAAO,EACP,IAAK,IAET,EAAI,IAAI,EAAG,EAAG,EAAQ,EAAO,IAAK,EAAO,MAAO,IACzC,CAAC,EAAK,OAEjB,YAAY,EAAO,CACf,KAAM,CAAE,IAAI,IAAI,UAAY,KACtB,EAAQ,EAAM,MACpB,MAAO,CACH,EAAG,EAAI,KAAK,IAAI,GAAS,EACzB,EAAG,EAAI,KAAK,IAAI,GAAS,EACzB,UAKZ,YAAoB,EAAQ,CACxB,KAAM,CAAE,QAAQ,OAAO,QAAU,EACjC,GAAI,GAAe,GACf,MAAO,IAAe,EAAO,GAEjC,GAAI,IAAS,QACT,MAAO,IAAgB,GAE3B,GAAI,IAAS,QACT,MAAO,GAEX,KAAM,GAAW,GAAgB,GACjC,MAAI,aAAoB,IACb,EAEJ,GAAoB,EAAU,GAExC,YAAwB,EAAO,EAAO,CACnC,KAAM,GAAO,EAAM,eAAe,GAElC,MAAO,IADiB,EAAM,iBAAiB,GAC9B,EAAK,QAAU,KAEpC,YAAyB,EAAQ,CAE7B,MAAI,GADiB,OAAS,IACpB,yBACC,GAAwB,GAE5B,GAAsB,GAEjC,YAA+B,EAAQ,CACnC,KAAM,CAAE,QAAO,GAAK,QAAU,EACxB,EAAQ,GAAgB,EAAM,GACpC,GAAI,GAAe,GAAQ,CACvB,KAAM,GAAa,EAAM,eACzB,MAAO,CACH,EAAG,EAAa,EAAQ,KACxB,EAAG,EAAa,KAAO,GAG/B,MAAO,MAEX,YAAiC,EAAQ,CACrC,KAAM,CAAE,QAAQ,QAAU,EACpB,EAAU,EAAM,QAChB,EAAS,EAAM,YAAY,OAC3B,EAAQ,EAAQ,QAAU,EAAM,IAAM,EAAM,IAC5C,EAAQ,GAAgB,EAAM,EAAO,GACrC,EAAS,GACf,GAAI,EAAQ,KAAK,SAAU,CACvB,KAAM,GAAS,EAAM,yBAAyB,EAAG,GACjD,MAAO,IAAI,IAAU,CACjB,EAAG,EAAO,EACV,EAAG,EAAO,EACV,OAAQ,EAAM,8BAA8B,KAGpD,OAAQ,GAAI,EAAG,EAAI,EAAQ,EAAE,EACzB,EAAO,KAAK,EAAM,yBAAyB,EAAG,IAElD,MAAO,GAGX,YAAmB,EAAK,EAAQ,EAAM,CAClC,KAAM,GAAS,GAAW,GACpB,CAAE,OAAO,QAAQ,QAAU,EAC3B,EAAW,EAAK,QAChB,EAAa,EAAS,KACtB,EAAQ,EAAS,gBACjB,CAAE,QAAO,EAAQ,QAAO,GAAW,GAAc,GACnD,GAAU,EAAK,OAAO,QACtB,IAAS,EAAK,GACd,GAAO,EAAK,CACR,OACA,SACA,QACA,QACA,OACA,QACA,SAEJ,GAAW,IAGnB,YAAgB,EAAK,EAAK,CACtB,KAAM,CAAE,OAAO,SAAS,QAAQ,QAAQ,OAAO,SAAW,EACpD,EAAW,EAAK,MAAQ,QAAU,EAAI,KAC5C,EAAI,OACA,IAAa,KAAO,IAAU,GAC9B,IAAa,EAAK,EAAQ,EAAK,KAC/B,GAAK,EAAK,CACN,OACA,SACA,MAAO,EACP,QACA,aAEJ,EAAI,UACJ,EAAI,OACJ,GAAa,EAAK,EAAQ,EAAK,SAEnC,GAAK,EAAK,CACN,OACA,SACA,MAAO,EACP,QACA,aAEJ,EAAI,UAER,YAAsB,EAAK,EAAQ,EAAO,CACtC,KAAM,CAAE,WAAW,UAAY,EAC/B,GAAI,GAAQ,GACR,EAAW,GACf,EAAI,YACJ,SAAW,KAAW,GAAS,CAC3B,KAAM,CAAE,QAAQ,OAAS,EACnB,EAAa,EAAO,GACpB,EAAY,EAAO,GAAgB,EAAO,EAAK,IACjD,EACA,GAAI,OAAO,EAAW,EAAG,EAAW,GACpC,EAAQ,IAER,GAAI,OAAO,EAAW,EAAG,GACzB,EAAI,OAAO,EAAW,EAAG,EAAW,IAExC,EAAW,CAAC,CAAC,EAAO,YAAY,EAAK,EAAS,CAC1C,KAAM,IAEN,EACA,EAAI,YAEJ,EAAI,OAAO,EAAU,EAAG,GAGhC,EAAI,OAAO,EAAO,QAAQ,EAAG,GAC7B,EAAI,YACJ,EAAI,OAER,YAAc,EAAK,EAAK,CACpB,KAAM,CAAE,OAAO,SAAS,WAAW,QAAQ,SAAW,EAChD,EAAW,GAAU,EAAM,EAAQ,GACzC,SAAW,CAAE,OAAQ,EAAM,OAAQ,EAAM,QAAQ,QAAU,GAAS,CAChE,KAAM,CAAE,MAAO,CAAE,kBAAiB,GAAW,IAAQ,EAC/C,EAAW,IAAW,GAC5B,EAAI,OACJ,EAAI,UAAY,EAChB,GAAW,EAAK,EAAO,GAAY,GAAW,EAAU,EAAO,IAC/D,EAAI,YACJ,KAAM,GAAW,CAAC,CAAC,EAAK,YAAY,EAAK,GACzC,GAAI,GACJ,GAAI,EAAU,CACN,EACA,EAAI,YAEJ,GAAmB,EAAK,EAAQ,EAAK,GAEzC,KAAM,GAAa,CAAC,CAAC,EAAO,YAAY,EAAK,EAAK,CAC9C,KAAM,EACN,QAAS,KAEb,EAAO,GAAY,EACd,GACD,GAAmB,EAAK,EAAQ,EAAO,GAG/C,EAAI,YACJ,EAAI,KAAK,EAAO,UAAY,WAC5B,EAAI,WAGZ,YAAoB,EAAK,EAAO,EAAQ,CACpC,KAAM,CAAE,MAAM,UAAY,EAAM,MAAM,UAChC,CAAE,WAAW,QAAQ,OAAS,GAAU,GAC1C,IAAa,KACb,GAAI,YACJ,EAAI,KAAK,EAAO,EAAK,EAAM,EAAO,EAAS,GAC3C,EAAI,QAGZ,YAA4B,EAAK,EAAQ,EAAO,EAAU,CACtD,KAAM,GAAoB,EAAO,YAAY,EAAO,GAChD,GACA,EAAI,OAAO,EAAkB,EAAG,EAAkB,GAI1D,GAAI,IAAQ,CACR,GAAI,SACJ,oBAAqB,EAAO,EAAO,EAAS,CACxC,KAAM,GAAS,GAAM,KAAK,UAAY,IAAI,OACpC,EAAU,GAChB,GAAI,GAAM,EAAG,EAAM,EACnB,IAAI,EAAI,EAAG,EAAI,EAAO,EAAE,EACpB,EAAO,EAAM,eAAe,GAC5B,EAAO,EAAK,QACZ,EAAS,KACL,GAAQ,EAAK,SAAW,YAAgB,KACxC,GAAS,CACL,QAAS,EAAM,iBAAiB,GAChC,MAAO,EACP,KAAM,GAAY,EAAM,EAAG,GAC3B,QACA,KAAM,EAAK,WAAW,QAAQ,UAC9B,MAAO,EAAK,OACZ,SAGR,EAAK,QAAU,EACf,EAAQ,KAAK,GAEjB,IAAI,EAAI,EAAG,EAAI,EAAO,EAAE,EAEpB,EADS,EAAQ,GACb,GAAC,GAAU,EAAO,OAAS,KAG/B,GAAO,KAAO,GAAe,EAAS,EAAG,EAAQ,aAGzD,WAAY,EAAO,EAAO,EAAS,CAC/B,KAAM,GAAO,EAAQ,WAAa,aAC5B,EAAW,EAAM,+BACjB,EAAO,EAAM,UACnB,OAAQ,GAAI,EAAS,OAAS,EAAG,GAAK,EAAG,EAAE,EAAE,CACzC,KAAM,GAAS,EAAS,GAAG,QACvB,CAAC,GAGL,GAAO,KAAK,oBAAoB,EAAM,EAAO,MACzC,GAAQ,EAAO,MACf,GAAU,EAAM,IAAK,EAAQ,MAIzC,mBAAoB,EAAO,EAAO,EAAS,CACvC,GAAI,EAAQ,WAAa,qBACrB,OAEJ,KAAM,GAAW,EAAM,+BACvB,OAAQ,GAAI,EAAS,OAAS,EAAG,GAAK,EAAG,EAAE,EAAE,CACzC,KAAM,GAAS,EAAS,GAAG,QACvB,GAAiB,IACjB,GAAU,EAAM,IAAK,EAAQ,EAAM,aAI/C,kBAAmB,EAAO,EAAM,EAAS,CACrC,KAAM,GAAS,EAAK,KAAK,QACrB,CAAC,GAAiB,IAAW,EAAQ,WAAa,qBAGtD,GAAU,EAAM,IAAK,EAAQ,EAAM,YAEvC,SAAU,CACN,UAAW,GACX,SAAU,sBAIlB,KAAM,IAAa,CAAC,EAAW,IAAW,CACtC,GAAI,CAAE,YAAW,EAAW,WAAU,GAAc,EACpD,MAAI,GAAU,eACV,GAAY,KAAK,IAAI,EAAW,GAChC,EAAW,EAAU,iBAAmB,KAAK,IAAI,EAAU,IAExD,CACH,WACA,YACA,WAAY,KAAK,IAAI,EAAU,KAGjC,GAAa,CAAC,EAAG,IAAI,IAAM,MAAQ,IAAM,MAAQ,EAAE,eAAiB,EAAE,cAAgB,EAAE,QAAU,EAAE,MAC1G,gBAAqB,GAAQ,CAC5B,YAAY,EAAO,CACZ,QACA,KAAK,OAAS,GACd,KAAK,eAAiB,GAC7B,KAAK,aAAe,KACb,KAAK,aAAe,GACpB,KAAK,MAAQ,EAAO,MACpB,KAAK,QAAU,EAAO,QACtB,KAAK,IAAM,EAAO,IAClB,KAAK,YAAc,OACnB,KAAK,YAAc,OACnB,KAAK,WAAa,OAClB,KAAK,UAAY,OACjB,KAAK,SAAW,OAChB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,SAAW,OAChB,KAAK,SAAW,OAChB,KAAK,OAAS,OACd,KAAK,SAAW,OAEpB,OAAO,EAAU,EAAW,EAAS,CACjC,KAAK,SAAW,EAChB,KAAK,UAAY,EACjB,KAAK,SAAW,EAChB,KAAK,gBACL,KAAK,cACL,KAAK,MAET,eAAgB,CACR,KAAK,eACL,MAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,KAAK,SAAS,KAC1B,KAAK,MAAQ,KAAK,OAElB,MAAK,OAAS,KAAK,UACnB,KAAK,IAAM,KAAK,SAAS,IACzB,KAAK,OAAS,KAAK,QAG3B,aAAc,CACV,KAAM,GAAY,KAAK,QAAQ,QAAU,GACzC,GAAI,GAAc,GAAS,EAAU,eAAgB,CACjD,KAAK,OACN,OAAS,GACR,EAAU,QACV,GAAc,EAAY,OAAQ,GAAO,EAAU,OAAO,EAAM,KAAK,MAAM,QAE3E,EAAU,MACV,GAAc,EAAY,KAAK,CAAC,EAAG,IAAI,EAAU,KAAK,EAAG,EAAG,KAAK,MAAM,QAEvE,KAAK,QAAQ,SACb,EAAY,UAEhB,KAAK,YAAc,EAEvB,KAAM,CACF,KAAM,CAAE,UAAU,OAAS,KAC3B,GAAI,CAAC,EAAQ,QAAS,CAClB,KAAK,MAAQ,KAAK,OAAS,EAC3B,OAEJ,KAAM,GAAY,EAAQ,OACpB,EAAY,GAAO,EAAU,MAC7B,EAAW,EAAU,KACrB,EAAc,KAAK,sBACnB,CAAE,WAAW,cAAgB,GAAW,EAAW,GACzD,GAAI,GAAO,EACX,EAAI,KAAO,EAAU,OACjB,KAAK,eACL,GAAQ,KAAK,SACb,EAAS,KAAK,SAAS,EAAa,EAAU,EAAU,GAAc,IAEtE,GAAS,KAAK,UACd,EAAQ,KAAK,SAAS,EAAa,EAAW,EAAU,GAAc,IAE1E,KAAK,MAAQ,KAAK,IAAI,EAAO,EAAQ,UAAY,KAAK,UACtD,KAAK,OAAS,KAAK,IAAI,EAAQ,EAAQ,WAAa,KAAK,WAEhE,SAAS,EAAa,EAAU,EAAU,EAAY,CAC/C,KAAM,CAAE,MAAM,WAAW,QAAS,CAAE,OAAQ,CAAE,aAAmB,KAC3D,EAAW,KAAK,eAAiB,GACjC,EAAa,KAAK,WAAa,CACjC,GAEE,EAAa,EAAa,EAChC,GAAI,GAAc,EAClB,EAAI,UAAY,OAChB,EAAI,aAAe,SACnB,GAAI,GAAM,GACN,EAAM,CAAC,EACX,YAAK,YAAY,QAAQ,CAAC,EAAY,IAAI,CACtC,KAAM,GAAY,EAAW,EAAW,EAAI,EAAI,YAAY,EAAW,MAAM,MACzE,KAAM,GAAK,EAAW,EAAW,OAAS,GAAK,EAAY,EAAI,EAAU,IACzE,IAAe,EACf,EAAW,EAAW,OAAU,GAAI,EAAI,EAAI,IAAM,EAClD,GAAO,EACP,KAEJ,EAAS,GAAK,CACV,KAAM,EACN,MACA,MACA,MAAO,EACP,OAAQ,GAEZ,EAAW,EAAW,OAAS,IAAM,EAAY,IAE9C,EAEX,SAAS,EAAa,EAAW,EAAU,EAAa,CACpD,KAAM,CAAE,MAAM,YAAY,QAAS,CAAE,OAAQ,CAAE,aAAmB,KAC5D,EAAW,KAAK,eAAiB,GACjC,EAAc,KAAK,YAAc,GACjC,EAAc,EAAY,EAChC,GAAI,GAAa,EACb,EAAkB,EAClB,EAAmB,EACnB,EAAO,EACP,EAAM,EACV,YAAK,YAAY,QAAQ,CAAC,EAAY,IAAI,CACtC,KAAM,CAAE,aAAY,eAAgB,GAAkB,EAAU,EAAW,EAAK,EAAY,GACxF,EAAI,GAAK,EAAmB,GAAa,EAAI,EAAU,GACvD,IAAc,EAAkB,EAChC,EAAY,KAAK,CACb,MAAO,EACP,OAAQ,IAEZ,GAAQ,EAAkB,EAC1B,IACA,EAAkB,EAAmB,GAEzC,EAAS,GAAK,CACV,OACA,IAAK,EACL,MACA,MAAO,GACP,OAAQ,IAEZ,EAAkB,KAAK,IAAI,EAAiB,IAC5C,GAAoB,GAAa,IAErC,GAAc,EACd,EAAY,KAAK,CACb,MAAO,EACP,OAAQ,IAEL,EAEX,gBAAiB,CACb,GAAI,CAAC,KAAK,QAAQ,QACd,OAEJ,KAAM,GAAc,KAAK,sBACnB,CAAE,eAAgB,EAAW,QAAS,CAAE,QAAQ,OAAQ,CAAE,WAAa,QAAY,KACnF,EAAY,GAAc,EAAK,KAAK,KAAM,KAAK,OACrD,GAAI,KAAK,eAAgB,CACrB,GAAI,GAAM,EACN,EAAO,GAAe,EAAO,KAAK,KAAO,EAAS,KAAK,MAAQ,KAAK,WAAW,IACnF,SAAW,KAAU,GACb,IAAQ,EAAO,KACf,GAAM,EAAO,IACb,EAAO,GAAe,EAAO,KAAK,KAAO,EAAS,KAAK,MAAQ,KAAK,WAAW,KAEnF,EAAO,KAAO,KAAK,IAAM,EAAc,EACvC,EAAO,KAAO,EAAU,WAAW,EAAU,EAAE,GAAO,EAAO,OAC7D,GAAQ,EAAO,MAAQ,MAExB,CACH,GAAI,GAAM,EACN,EAAM,GAAe,EAAO,KAAK,IAAM,EAAc,EAAS,KAAK,OAAS,KAAK,YAAY,GAAK,QACtG,SAAW,KAAU,GACb,EAAO,MAAQ,GACf,GAAM,EAAO,IACb,EAAM,GAAe,EAAO,KAAK,IAAM,EAAc,EAAS,KAAK,OAAS,KAAK,YAAY,GAAK,SAEtG,EAAO,IAAM,EACb,EAAO,MAAQ,KAAK,KAAO,EAC3B,EAAO,KAAO,EAAU,WAAW,EAAU,EAAE,EAAO,MAAO,EAAO,OACpE,GAAO,EAAO,OAAS,GAInC,cAAe,CACX,MAAO,MAAK,QAAQ,WAAa,OAAS,KAAK,QAAQ,WAAa,SAExE,MAAO,CACH,GAAI,KAAK,QAAQ,QAAS,CACtB,KAAM,GAAM,KAAK,IACjB,GAAS,EAAK,MACd,KAAK,QACL,GAAW,IAGtB,OAAQ,CACD,KAAM,CAAE,QAAS,EAAO,cAAc,aAAa,OAAS,KACtD,CAAE,QAAQ,OAAQ,GAAe,EACjC,EAAe,SACf,EAAY,GAAc,EAAK,IAAK,KAAK,KAAM,KAAK,OACpD,EAAY,GAAO,EAAU,MAC7B,CAAE,WAAa,EACf,EAAW,EAAU,KACrB,EAAe,EAAW,EAChC,GAAI,GACJ,KAAK,YACL,EAAI,UAAY,EAAU,UAAU,QACpC,EAAI,aAAe,SACnB,EAAI,UAAY,GAChB,EAAI,KAAO,EAAU,OACrB,KAAM,CAAE,WAAW,YAAY,cAAgB,GAAW,EAAW,GAC/D,EAAgB,SAAS,GAAG,GAAG,GAAY,CAC7C,GAAI,MAAM,IAAa,GAAY,GAAK,MAAM,IAAc,EAAY,EACpE,OAEJ,EAAI,OACJ,KAAM,IAAY,GAAe,GAAW,UAAW,GAQvD,GAPA,EAAI,UAAY,GAAe,GAAW,UAAW,GACrD,EAAI,QAAU,GAAe,GAAW,QAAS,QACjD,EAAI,eAAiB,GAAe,GAAW,eAAgB,GAC/D,EAAI,SAAW,GAAe,GAAW,SAAU,SACnD,EAAI,UAAY,GAChB,EAAI,YAAc,GAAe,GAAW,YAAa,GACzD,EAAI,YAAY,GAAe,GAAW,SAAU,KAChD,EAAU,cAAe,CACzB,KAAM,IAAc,CAChB,OAAQ,EAAY,KAAK,MAAQ,EACjC,WAAY,GAAW,WACvB,SAAU,GAAW,SACrB,YAAa,IAEX,GAAU,EAAU,MAAM,GAAG,EAAW,GACxC,GAAU,GAAI,EACpB,GAAgB,EAAK,GAAa,GAAS,GAAS,EAAU,iBAAmB,OAC9E,CACH,KAAM,IAAU,GAAI,KAAK,IAAK,GAAW,GAAa,EAAG,GACnD,GAAW,EAAU,WAAW,GAAG,GACnC,GAAe,GAAc,GAAW,cAC9C,EAAI,YACA,OAAO,OAAO,IAAc,KAAM,IAAI,KAAM,GAC5C,GAAmB,EAAK,CACpB,EAAG,GACH,EAAG,GACH,EAAG,EACH,EAAG,EACH,OAAQ,KAGZ,EAAI,KAAK,GAAU,GAAS,EAAU,GAE1C,EAAI,OACA,KAAc,GACd,EAAI,SAGZ,EAAI,WAEF,GAAW,SAAS,GAAG,GAAG,GAAY,CACxC,GAAW,EAAK,GAAW,KAAM,GAAG,GAAI,EAAa,EAAG,EAAW,CAC/D,cAAe,GAAW,OAC1B,UAAW,EAAU,UAAU,GAAW,cAG5C,GAAe,KAAK,eACpB,EAAc,KAAK,sBACrB,GACA,EAAS,CACL,EAAG,GAAe,EAAO,KAAK,KAAO,EAAS,KAAK,MAAQ,EAAW,IACtE,EAAG,KAAK,IAAM,EAAU,EACxB,KAAM,GAGV,EAAS,CACL,EAAG,KAAK,KAAO,EACf,EAAG,GAAe,EAAO,KAAK,IAAM,EAAc,EAAS,KAAK,OAAS,EAAY,GAAG,QACxF,KAAM,GAGd,GAAsB,KAAK,IAAK,EAAK,eACrC,KAAM,IAAa,EAAa,EAChC,KAAK,YAAY,QAAQ,CAAC,GAAY,KAAI,CACtC,EAAI,YAAc,GAAW,UAC7B,EAAI,UAAY,GAAW,UAC3B,KAAM,IAAY,EAAI,YAAY,GAAW,MAAM,MAC7C,GAAY,EAAU,UAAU,GAAW,WAAc,IAAW,UAAY,EAAU,YAC1F,GAAQ,EAAW,EAAe,GACxC,GAAI,IAAI,EAAO,EACX,GAAI,EAAO,EACf,EAAU,SAAS,KAAK,OACpB,GACI,GAAI,GAAK,GAAI,GAAQ,EAAU,KAAK,OACpC,IAAI,EAAO,GAAK,GAChB,EAAO,OACP,GAAI,EAAO,EAAI,GAAe,EAAO,KAAK,KAAO,EAAS,KAAK,MAAQ,EAAW,EAAO,QAEtF,GAAI,GAAK,GAAI,GAAa,KAAK,QACtC,IAAI,EAAO,EAAI,GAAI,EAAY,EAAO,MAAM,MAAQ,EACpD,EAAO,OACP,GAAI,EAAO,EAAI,GAAe,EAAO,KAAK,IAAM,EAAc,EAAS,KAAK,OAAS,EAAY,EAAO,MAAM,SAElH,KAAM,IAAQ,EAAU,EAAE,IAI1B,GAHA,EAAc,GAAO,GAAG,IACxB,GAAI,GAAO,GAAW,GAAI,EAAW,EAAc,GAAe,GAAI,GAAQ,KAAK,MAAO,EAAK,KAC/F,GAAS,EAAU,EAAE,IAAI,GAAG,IACxB,GACA,EAAO,GAAK,GAAQ,UACb,MAAO,IAAW,MAAS,SAAU,CAC5C,KAAM,IAAiB,EAAU,WACjC,EAAO,GAAK,GAA0B,GAAY,QAElD,GAAO,GAAK,KAGpB,GAAqB,KAAK,IAAK,EAAK,eAE3C,WAAY,CACL,KAAM,GAAO,KAAK,QACZ,EAAY,EAAK,MACjB,EAAY,GAAO,EAAU,MAC7B,EAAe,GAAU,EAAU,SACzC,GAAI,CAAC,EAAU,QACX,OAEJ,KAAM,GAAY,GAAc,EAAK,IAAK,KAAK,KAAM,KAAK,OACpD,EAAM,KAAK,IACX,EAAW,EAAU,SACrB,EAAe,EAAU,KAAO,EAChC,EAA6B,EAAa,IAAM,EACtD,GAAI,GACA,EAAO,KAAK,KACZ,EAAW,KAAK,MACpB,GAAI,KAAK,eACL,EAAW,KAAK,IAAI,GAAG,KAAK,YAC5B,EAAI,KAAK,IAAM,EACf,EAAO,GAAe,EAAK,MAAO,EAAM,KAAK,MAAQ,OAClD,CACH,KAAM,GAAY,KAAK,YAAY,OAAO,CAAC,EAAK,IAAO,KAAK,IAAI,EAAK,EAAK,QAAS,GACnF,EAAI,EAA6B,GAAe,EAAK,MAAO,KAAK,IAAK,KAAK,OAAS,EAAY,EAAK,OAAO,QAAU,KAAK,uBAE/H,KAAM,GAAI,GAAe,EAAU,EAAM,EAAO,GAChD,EAAI,UAAY,EAAU,UAAU,GAAmB,IACvD,EAAI,aAAe,SACnB,EAAI,YAAc,EAAU,MAC5B,EAAI,UAAY,EAAU,MAC1B,EAAI,KAAO,EAAU,OACrB,GAAW,EAAK,EAAU,KAAM,EAAG,EAAG,GAE7C,qBAAsB,CACf,KAAM,GAAY,KAAK,QAAQ,MACzB,EAAY,GAAO,EAAU,MAC7B,EAAe,GAAU,EAAU,SACzC,MAAO,GAAU,QAAU,EAAU,WAAa,EAAa,OAAS,EAE/E,iBAAiB,EAAG,EAAG,CAChB,GAAI,GAAG,EAAQ,EACf,GAAI,GAAW,EAAG,KAAK,KAAM,KAAK,QAAU,GAAW,EAAG,KAAK,IAAK,KAAK,SAErE,IADA,EAAK,KAAK,eACN,EAAI,EAAG,EAAI,EAAG,OAAQ,EAAE,EAExB,GADA,EAAS,EAAG,GACR,GAAW,EAAG,EAAO,KAAM,EAAO,KAAO,EAAO,QAAU,GAAW,EAAG,EAAO,IAAK,EAAO,IAAM,EAAO,QACxG,MAAO,MAAK,YAAY,GAIpC,MAAO,MAEd,YAAY,EAAG,CACR,KAAM,GAAO,KAAK,QAClB,GAAI,CAAC,GAAW,EAAE,KAAM,GACpB,OAEJ,KAAM,GAAc,KAAK,iBAAiB,EAAE,EAAG,EAAE,GACjD,GAAI,EAAE,OAAS,aAAe,EAAE,OAAS,WAAY,CACjD,KAAM,GAAW,KAAK,aAChB,EAAW,GAAW,EAAU,GAClC,GAAY,CAAC,GACb,GAAS,EAAK,QAAS,CACnB,EACA,EACA,MACD,MAEP,KAAK,aAAe,EAChB,GAAe,CAAC,GAChB,GAAS,EAAK,QAAS,CACnB,EACA,EACA,MACD,UAEA,IACP,GAAS,EAAK,QAAS,CACnB,EACA,EACA,MACD,OAIf,YAA2B,EAAU,EAAW,EAAK,EAAY,EAAa,CAC1E,KAAM,GAAY,GAAmB,EAAY,EAAU,EAAW,GAChE,EAAa,GAAoB,EAAa,EAAY,EAAU,YAC1E,MAAO,CACH,YACA,cAGR,YAA4B,EAAY,EAAU,EAAW,EAAK,CAC9D,GAAI,GAAiB,EAAW,KAChC,MAAI,IAAkB,MAAO,IAAmB,UAC5C,GAAiB,EAAe,OAAO,CAAC,EAAG,IAAI,EAAE,OAAS,EAAE,OAAS,EAAI,IAEtE,EAAW,EAAU,KAAO,EAAI,EAAI,YAAY,GAAgB,MAE3E,YAA6B,EAAa,EAAY,EAAgB,CAClE,GAAI,GAAa,EACjB,MAAI,OAAO,GAAW,MAAS,UAC3B,GAAa,GAA0B,EAAY,IAEhD,EAEX,YAAmC,EAAY,EAAgB,CAC3D,KAAM,GAAc,EAAW,KAAO,EAAW,KAAK,OAAS,GAAM,EACrE,MAAO,GAAiB,EAE5B,YAAoB,EAAM,EAAM,CAI5B,MAHK,QAAS,aAAe,IAAS,aAAgB,GAAK,SAAW,EAAK,UAGvE,EAAK,SAAY,KAAS,SAAW,IAAS,YAKtD,GAAI,IAAgB,CAChB,GAAI,SACP,SAAU,GACP,MAAO,EAAO,EAAO,EAAS,CAC1B,KAAM,GAAS,EAAM,OAAS,GAAI,IAAO,CACrC,IAAK,EAAM,IACX,UACA,UAEJ,GAAQ,UAAU,EAAO,EAAQ,GACjC,GAAQ,OAAO,EAAO,IAE1B,KAAM,EAAO,CACT,GAAQ,UAAU,EAAO,EAAM,QAC/B,MAAO,GAAM,QAEjB,aAAc,EAAO,EAAO,EAAS,CACjC,KAAM,GAAS,EAAM,OACrB,GAAQ,UAAU,EAAO,EAAQ,GACjC,EAAO,QAAU,GAErB,YAAa,EAAO,CAChB,KAAM,GAAS,EAAM,OACrB,EAAO,cACP,EAAO,kBAEX,WAAY,EAAO,EAAM,CAChB,EAAK,QACN,EAAM,OAAO,YAAY,EAAK,QAGtC,SAAU,CACN,QAAS,GACT,SAAU,MACV,MAAO,SACP,SAAU,GACV,QAAS,GACT,OAAQ,IACR,QAAS,EAAG,EAAY,EAAQ,CAC5B,KAAM,GAAQ,EAAW,aACnB,EAAK,EAAO,MACd,EAAG,iBAAiB,GACpB,GAAG,KAAK,GACR,EAAW,OAAS,IAEpB,GAAG,KAAK,GACR,EAAW,OAAS,KAG5B,QAAS,KACT,QAAS,KACT,OAAQ,CACJ,MAAQ,GAAM,EAAI,MAAM,QAAQ,MAChC,SAAU,GACV,QAAS,GACT,eAAgB,EAAO,CACnB,KAAM,GAAW,EAAM,KAAK,SACtB,CAAE,OAAQ,CAAE,gBAAgB,aAAa,YAAY,QAAQ,kBAAkB,iBAAqB,EAAM,OAAO,QACvH,MAAO,GAAM,yBAAyB,IAAK,GAAO,CAC9C,KAAM,GAAQ,EAAK,WAAW,SAAS,EAAgB,EAAI,QACrD,EAAc,GAAU,EAAM,aACpC,MAAO,CACH,KAAM,EAAS,EAAK,OAAO,MAC3B,UAAW,EAAM,gBACjB,UAAW,EACX,OAAQ,CAAC,EAAK,QACd,QAAS,EAAM,eACf,SAAU,EAAM,WAChB,eAAgB,EAAM,iBACtB,SAAU,EAAM,gBAChB,UAAY,GAAY,MAAQ,EAAY,QAAU,EACtD,YAAa,EAAM,YACnB,WAAY,GAAc,EAAM,WAChC,SAAU,EAAM,SAChB,UAAW,GAAa,EAAM,UAC9B,aAAc,GAAoB,IAAgB,EAAM,cACxD,aAAc,EAAK,QAExB,QAGX,MAAO,CACH,MAAQ,GAAM,EAAI,MAAM,QAAQ,MAChC,QAAS,GACT,SAAU,SACV,KAAM,KAGd,YAAa,CACT,YAAc,GAAO,CAAC,EAAK,WAAW,MACtC,OAAQ,CACJ,YAAc,GAAO,CAAC,CACd,iBACA,SACA,QACF,SAAS,MAK3B,gBAAoB,GAAQ,CAC3B,YAAY,EAAO,CACZ,QACA,KAAK,MAAQ,EAAO,MACpB,KAAK,QAAU,EAAO,QACtB,KAAK,IAAM,EAAO,IAClB,KAAK,SAAW,OAChB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,SAAW,OAChB,KAAK,OAAS,OACd,KAAK,SAAW,OAEpB,OAAO,EAAU,EAAW,CACxB,KAAM,GAAO,KAAK,QAGlB,GAFA,KAAK,KAAO,EACZ,KAAK,IAAM,EACP,CAAC,EAAK,QAAS,CACf,KAAK,MAAQ,KAAK,OAAS,KAAK,MAAQ,KAAK,OAAS,EACtD,OAEJ,KAAK,MAAQ,KAAK,MAAQ,EAC1B,KAAK,OAAS,KAAK,OAAS,EAC5B,KAAM,GAAY,GAAQ,EAAK,MAAQ,EAAK,KAAK,OAAS,EAC1D,KAAK,SAAW,GAAU,EAAK,SAC/B,KAAM,GAAW,EAAY,GAAO,EAAK,MAAM,WAAa,KAAK,SAAS,OACtE,KAAK,eACL,KAAK,OAAS,EAEd,KAAK,MAAQ,EAGrB,cAAe,CACX,KAAM,GAAM,KAAK,QAAQ,SACzB,MAAO,KAAQ,OAAS,IAAQ,SAEpC,UAAU,EAAQ,CACd,KAAM,CAAE,MAAM,OAAO,SAAS,QAAQ,WAAa,KAC7C,EAAQ,EAAQ,MACtB,GAAI,GAAW,EACX,EAAU,EAAQ,EACtB,MAAI,MAAK,eACL,GAAS,GAAe,EAAO,EAAM,GACrC,EAAS,EAAM,EACf,EAAW,EAAQ,GAEnB,CAAI,EAAQ,WAAa,OACrB,GAAS,EAAO,EAChB,EAAS,GAAe,EAAO,EAAQ,GACvC,EAAW,GAAK,KAEhB,GAAS,EAAQ,EACjB,EAAS,GAAe,EAAO,EAAK,GACpC,EAAW,GAAK,IAEpB,EAAW,EAAS,GAEjB,CACH,SACA,SACA,WACA,YAGR,MAAO,CACH,KAAM,GAAM,KAAK,IACX,EAAO,KAAK,QAClB,GAAI,CAAC,EAAK,QACN,OAEJ,KAAM,GAAW,GAAO,EAAK,MAEvB,EAAS,EADa,WACA,EAAI,KAAK,SAAS,IACxC,CAAE,SAAS,SAAS,WAAW,YAAc,KAAK,UAAU,GAClE,GAAW,EAAK,EAAK,KAAM,EAAG,EAAG,EAAU,CACvC,MAAO,EAAK,MACZ,WACA,WACA,UAAW,GAAmB,EAAK,OACnC,aAAc,SACd,YAAa,CACT,EACA,MAKhB,YAAqB,EAAO,EAAW,CACnC,KAAM,GAAQ,GAAI,IAAM,CACpB,IAAK,EAAM,IACX,QAAS,EACT,UAEJ,GAAQ,UAAU,EAAO,EAAO,GAChC,GAAQ,OAAO,EAAO,GACtB,EAAM,WAAa,EAEvB,GAAI,IAAe,CACf,GAAI,QACP,SAAU,GACP,MAAO,EAAO,EAAO,EAAS,CAC1B,GAAY,EAAO,IAEvB,KAAM,EAAO,CACT,KAAM,GAAa,EAAM,WACzB,GAAQ,UAAU,EAAO,GACzB,MAAO,GAAM,YAEjB,aAAc,EAAO,EAAO,EAAS,CACjC,KAAM,GAAQ,EAAM,WACpB,GAAQ,UAAU,EAAO,EAAO,GAChC,EAAM,QAAU,GAEpB,SAAU,CACN,MAAO,SACP,QAAS,GACT,KAAM,CACF,OAAQ,QAEZ,SAAU,GACV,QAAS,GACT,SAAU,MACV,KAAM,GACN,OAAQ,KAEZ,cAAe,CACX,MAAO,SAEX,YAAa,CACT,YAAa,GACb,WAAY,KAIpB,KAAM,IAAM,GAAI,SAChB,GAAI,IAAkB,CAClB,GAAI,WACJ,MAAO,EAAO,EAAO,EAAS,CAC1B,KAAM,GAAQ,GAAI,IAAM,CACpB,IAAK,EAAM,IACX,UACA,UAEJ,GAAQ,UAAU,EAAO,EAAO,GAChC,GAAQ,OAAO,EAAO,GACtB,GAAI,IAAI,EAAO,IAEnB,KAAM,EAAO,CACT,GAAQ,UAAU,EAAO,GAAI,IAAI,IACjC,GAAI,OAAO,IAEf,aAAc,EAAO,EAAO,EAAS,CACjC,KAAM,GAAQ,GAAI,IAAI,GACtB,GAAQ,UAAU,EAAO,EAAO,GAChC,EAAM,QAAU,GAEpB,SAAU,CACN,MAAO,SACP,QAAS,GACT,KAAM,CACF,OAAQ,UAEZ,SAAU,GACV,QAAS,EACT,SAAU,MACV,KAAM,GACN,OAAQ,MAEZ,cAAe,CACX,MAAO,SAEX,YAAa,CACT,YAAa,GACb,WAAY,KAIpB,KAAM,IAAc,CACnB,QAAS,EAAO,CACT,GAAI,CAAC,EAAM,OACP,MAAO,GAEX,GAAI,GAAG,EACH,EAAI,EACJ,EAAI,EACJ,EAAQ,EACZ,IAAI,EAAI,EAAG,EAAM,EAAM,OAAQ,EAAI,EAAK,EAAE,EAAE,CACxC,KAAM,GAAK,EAAM,GAAG,QACpB,GAAI,GAAM,EAAG,WAAY,CACrB,KAAM,GAAM,EAAG,kBACf,GAAK,EAAI,EACT,GAAK,EAAI,EACT,EAAE,GAGV,MAAO,CACH,EAAG,EAAI,EACP,EAAG,EAAI,IAGlB,QAAS,EAAO,EAAe,CACxB,GAAI,CAAC,EAAM,OACP,MAAO,GAEX,GAAI,GAAI,EAAc,EAClB,EAAI,EAAc,EAClB,EAAc,OAAO,kBACrB,EAAG,EAAK,EACZ,IAAI,EAAI,EAAG,EAAM,EAAM,OAAQ,EAAI,EAAK,EAAE,EAAE,CACxC,KAAM,GAAK,EAAM,GAAG,QACpB,GAAI,GAAM,EAAG,WAAY,CACrB,KAAM,GAAS,EAAG,iBACZ,EAAI,GAAsB,EAAe,GAC3C,EAAI,GACJ,GAAc,EACd,EAAiB,IAI7B,GAAI,EAAgB,CAChB,KAAM,GAAK,EAAe,kBAC1B,EAAI,EAAG,EACP,EAAI,EAAG,EAEX,MAAO,CACH,IACA,OAIZ,YAAsB,EAAM,EAAQ,CAChC,MAAI,IACA,CAAI,GAAQ,GACR,MAAM,UAAU,KAAK,MAAM,EAAM,GAEjC,EAAK,KAAK,IAGX,EAEV,YAAuB,EAAK,CACzB,MAAK,OAAO,IAAQ,UAAY,YAAe,UAAW,EAAI,QAAQ;AAAA,GAAQ,GACnE,EAAI,MAAM;AAAA,GAEd,EAEV,YAA2B,EAAO,EAAM,CACrC,KAAM,CAAE,UAAU,eAAe,SAAW,EACtC,EAAa,EAAM,eAAe,GAAc,WAChD,CAAE,QAAQ,SAAW,EAAW,iBAAiB,GACvD,MAAO,CACH,QACA,QACA,OAAQ,EAAW,UAAU,GAC7B,IAAK,EAAM,KAAK,SAAS,GAAc,KAAK,GAC5C,eAAgB,EAChB,QAAS,EAAW,aACpB,UAAW,EACX,eACA,WAGP,YAAwB,EAAS,EAAS,CACvC,KAAM,GAAM,EAAQ,MAAM,IACpB,CAAE,OAAO,SAAS,SAAW,EAC7B,CAAE,WAAW,aAAe,EAC5B,EAAW,GAAO,EAAQ,UAC1B,EAAY,GAAO,EAAQ,WAC3B,EAAa,GAAO,EAAQ,YAC5B,EAAiB,EAAM,OACvB,EAAkB,EAAO,OACzB,EAAoB,EAAK,OACzB,EAAU,GAAU,EAAQ,SAClC,GAAI,GAAS,EAAQ,OACjB,EAAQ,EACR,EAAqB,EAAK,OAAO,CAAC,EAAO,KAAW,EAAQ,GAAS,OAAO,OAAS,GAAS,MAAM,OAAS,GAAS,MAAM,OAAQ,GAKxI,GAJA,GAAsB,EAAQ,WAAW,OAAS,EAAQ,UAAU,OAChE,GACA,IAAU,EAAiB,EAAU,WAAc,GAAiB,GAAK,EAAQ,aAAe,EAAQ,mBAExG,EAAoB,CACpB,KAAM,GAAiB,EAAQ,cAAgB,KAAK,IAAI,EAAW,EAAS,YAAc,EAAS,WACnG,GAAU,EAAoB,EAAkB,GAAqB,GAAqB,EAAS,WAAc,GAAqB,GAAK,EAAQ,YAEnJ,GACA,IAAU,EAAQ,gBAAkB,EAAkB,EAAW,WAAc,GAAkB,GAAK,EAAQ,eAElH,GAAI,IAAe,EACnB,KAAM,IAAe,SAAS,EAAM,CAChC,EAAQ,KAAK,IAAI,EAAO,EAAI,YAAY,GAAM,MAAQ,KAE1D,SAAI,OACJ,EAAI,KAAO,EAAU,OACrB,GAAK,EAAQ,MAAO,IACpB,EAAI,KAAO,EAAS,OACpB,GAAK,EAAQ,WAAW,OAAO,EAAQ,WAAY,IACnD,GAAe,EAAQ,cAAgB,EAAW,EAAI,EAAQ,WAAa,EAC3E,GAAK,EAAO,GAAW,CACnB,GAAK,EAAS,OAAQ,IACtB,GAAK,EAAS,MAAO,IACrB,GAAK,EAAS,MAAO,MAEzB,GAAe,EACf,EAAI,KAAO,EAAW,OACtB,GAAK,EAAQ,OAAQ,IACrB,EAAI,UACJ,GAAS,EAAQ,MACV,CACH,QACA,UAGR,YAAyB,EAAO,EAAM,CAClC,KAAM,CAAE,IAAI,UAAY,EACxB,MAAI,GAAI,EAAS,EACN,MACA,EAAI,EAAM,OAAS,EAAS,EAC5B,SAEJ,SAEX,YAA6B,EAAQ,EAAO,EAAS,EAAM,CACvD,KAAM,CAAE,IAAI,SAAW,EACjB,EAAQ,EAAQ,UAAY,EAAQ,aAI1C,GAHI,IAAW,QAAU,EAAI,EAAQ,EAAQ,EAAM,OAG/C,IAAW,SAAW,EAAI,EAAQ,EAAQ,EAC1C,MAAO,GAGf,YAAyB,EAAO,EAAS,EAAM,EAAQ,CACnD,KAAM,CAAE,IAAI,SAAW,EACjB,CAAE,MAAO,EAAa,UAAW,CAAE,OAAO,UAAc,EAC9D,GAAI,GAAS,SACb,MAAI,KAAW,SACX,EAAS,GAAM,GAAO,GAAS,EAAI,OAAS,QACrC,GAAK,EAAQ,EACpB,EAAS,OACF,GAAK,EAAa,EAAQ,GACjC,GAAS,SAET,GAAoB,EAAQ,EAAO,EAAS,IAC5C,GAAS,UAEN,EAEV,YAA4B,EAAO,EAAS,EAAM,CAC/C,KAAM,GAAS,EAAK,QAAU,EAAQ,QAAU,GAAgB,EAAO,GACvE,MAAO,CACH,OAAQ,EAAK,QAAU,EAAQ,QAAU,GAAgB,EAAO,EAAS,EAAM,GAC/E,UAGR,YAAgB,EAAM,EAAQ,CAC1B,GAAI,CAAE,IAAI,SAAW,EACrB,MAAI,KAAW,QACX,GAAK,EACE,IAAW,UAClB,IAAK,EAAQ,GAEV,EAEX,YAAgB,EAAM,EAAQ,EAAgB,CAC1C,GAAI,CAAE,IAAI,UAAY,EACtB,MAAI,KAAW,MACX,GAAK,EACE,IAAW,SAClB,GAAK,EAAS,EAEd,GAAK,EAAS,EAEX,EAEV,YAA4B,EAAS,EAAM,EAAW,EAAO,CAC1D,KAAM,CAAE,YAAY,eAAe,gBAAkB,EAC/C,CAAE,SAAS,UAAY,EACvB,EAAiB,EAAY,EAC7B,CAAE,UAAU,WAAW,aAAa,eAAiB,GAAc,GACzE,GAAI,GAAI,GAAO,EAAM,GACrB,KAAM,GAAI,GAAO,EAAM,EAAQ,GAC/B,MAAI,KAAW,SACP,IAAW,OACX,GAAK,EACE,IAAW,SAClB,IAAK,GAEF,IAAW,OAClB,GAAK,KAAK,IAAI,EAAS,GAAc,EAC9B,IAAW,SAClB,IAAK,KAAK,IAAI,EAAU,GAAe,GAEpC,CACH,EAAG,GAAY,EAAG,EAAG,EAAM,MAAQ,EAAK,OACxC,EAAG,GAAY,EAAG,EAAG,EAAM,OAAS,EAAK,SAGjD,YAAqB,EAAS,EAAO,EAAS,CAC1C,KAAM,GAAU,GAAU,EAAQ,SAClC,MAAO,KAAU,SAAW,EAAQ,EAAI,EAAQ,MAAQ,EAAI,IAAU,QAAU,EAAQ,EAAI,EAAQ,MAAQ,EAAQ,MAAQ,EAAQ,EAAI,EAAQ,KAEnJ,YAAiC,EAAU,CACxC,MAAO,IAAa,GAAI,GAAc,IAE1C,YAA8B,EAAQ,EAAS,EAAc,CACzD,MAAO,IAAc,EAAQ,CACzB,UACA,eACA,KAAM,YAGd,YAA2B,EAAW,EAAS,CAC3C,KAAM,GAAW,GAAW,EAAQ,SAAW,EAAQ,QAAQ,SAAW,EAAQ,QAAQ,QAAQ,UAClG,MAAO,GAAW,EAAU,SAAS,GAAY,EAErD,KAAM,IAAmB,CACrB,YAAa,GACb,MAAO,EAAc,CACjB,GAAI,EAAa,OAAS,EAAG,CACzB,KAAM,GAAO,EAAa,GACpB,EAAS,EAAK,MAAM,KAAK,OACzB,EAAa,EAAS,EAAO,OAAS,EAC5C,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,MAAO,GAAK,QAAQ,OAAS,GAC1B,GAAI,EAAK,MACZ,MAAO,GAAK,MACT,GAAI,EAAa,GAAK,EAAK,UAAY,EAC1C,MAAO,GAAO,EAAK,WAG3B,MAAO,IAEX,WAAY,GACZ,WAAY,GACZ,YAAa,GACb,MAAO,EAAa,CAChB,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,MAAO,GAAY,MAAQ,KAAO,EAAY,gBAAkB,EAAY,eAEhF,GAAI,GAAQ,EAAY,QAAQ,OAAS,GACrC,GACA,IAAS,MAEb,KAAM,GAAQ,EAAY,eAC1B,MAAK,IAAc,IACf,IAAS,GAEN,GAEX,WAAY,EAAa,CAErB,KAAM,GAAU,EADS,MAAM,eAAe,EAAY,cACrC,WAAW,SAAS,EAAY,WACrD,MAAO,CACH,YAAa,EAAQ,YACrB,gBAAiB,EAAQ,gBACzB,YAAa,EAAQ,YACrB,WAAY,EAAQ,WACpB,iBAAkB,EAAQ,iBAC1B,aAAc,IAGtB,gBAAkB,CACd,MAAO,MAAK,QAAQ,WAExB,gBAAiB,EAAa,CAE1B,KAAM,GAAU,EADS,MAAM,eAAe,EAAY,cACrC,WAAW,SAAS,EAAY,WACrD,MAAO,CACH,WAAY,EAAQ,WACpB,SAAU,EAAQ,WAG1B,WAAY,GACZ,UAAW,GACX,aAAc,GACd,OAAQ,GACR,YAAa,IAEhB,YAAoC,EAAW,EAAM,EAAK,EAAK,CAC5D,KAAM,GAAS,EAAU,GAAM,KAAK,EAAK,GACzC,MAAI,OAAO,IAAW,YACX,GAAiB,GAAM,KAAK,EAAK,GAErC,EAEX,gBAAsB,GAAQ,OACtB,aAAc,GAClB,YAAY,EAAO,CACf,QACA,KAAK,QAAU,EACf,KAAK,QAAU,GACf,KAAK,eAAiB,OACtB,KAAK,MAAQ,OACb,KAAK,kBAAoB,OACzB,KAAK,cAAgB,GACrB,KAAK,YAAc,OACnB,KAAK,SAAW,OAChB,KAAK,MAAQ,EAAO,MACpB,KAAK,QAAU,EAAO,QACtB,KAAK,WAAa,OAClB,KAAK,MAAQ,OACb,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,UAAY,OACjB,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,EAAI,OACT,KAAK,EAAI,OACT,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,YAAc,OACnB,KAAK,iBAAmB,OACxB,KAAK,gBAAkB,OAE3B,WAAW,EAAS,CAChB,KAAK,QAAU,EACf,KAAK,kBAAoB,OACzB,KAAK,SAAW,OAEvB,oBAAqB,CACd,KAAM,GAAS,KAAK,kBACpB,GAAI,EACA,MAAO,GAEX,KAAM,GAAQ,KAAK,MACb,EAAU,KAAK,QAAQ,WAAW,KAAK,cACvC,EAAO,EAAQ,SAAW,EAAM,QAAQ,WAAa,EAAQ,WAC7D,EAAa,GAAI,IAAW,KAAK,MAAO,GAC9C,MAAI,GAAK,YACL,MAAK,kBAAoB,OAAO,OAAO,IAEpC,EAEd,YAAa,CACN,MAAO,MAAK,UAAa,MAAK,SAAW,GAAqB,KAAK,MAAM,aAAc,KAAM,KAAK,gBAEtG,SAAS,EAAS,EAAS,CACvB,KAAM,CAAE,aAAe,EACjB,EAAc,GAA2B,EAAW,cAAe,KAAM,GACzE,EAAQ,GAA2B,EAAW,QAAS,KAAM,GAC7D,EAAa,GAA2B,EAAW,aAAc,KAAM,GAC7E,GAAI,GAAQ,GACZ,SAAQ,GAAa,EAAO,GAAc,IAC1C,EAAQ,GAAa,EAAO,GAAc,IAC1C,EAAQ,GAAa,EAAO,GAAc,IACnC,EAEX,cAAc,EAAc,EAAS,CACjC,MAAO,IAAwB,GAA2B,EAAQ,UAAW,aAAc,KAAM,IAErG,QAAQ,EAAc,EAAS,CAC3B,KAAM,CAAE,aAAe,EACjB,EAAY,GAClB,UAAK,EAAe,GAAU,CAC1B,KAAM,GAAW,CACb,OAAQ,GACR,MAAO,GACP,MAAO,IAEL,EAAS,GAAkB,EAAW,GAC5C,GAAa,EAAS,OAAQ,GAAc,GAA2B,EAAQ,cAAe,KAAM,KACpG,GAAa,EAAS,MAAO,GAA2B,EAAQ,QAAS,KAAM,IAC/E,GAAa,EAAS,MAAO,GAAc,GAA2B,EAAQ,aAAc,KAAM,KAClG,EAAU,KAAK,KAEZ,EAEX,aAAa,EAAc,EAAS,CAChC,MAAO,IAAwB,GAA2B,EAAQ,UAAW,YAAa,KAAM,IAEpG,UAAU,EAAc,EAAS,CAC7B,KAAM,CAAE,aAAe,EACjB,EAAe,GAA2B,EAAW,eAAgB,KAAM,GAC3E,EAAS,GAA2B,EAAW,SAAU,KAAM,GAC/D,EAAc,GAA2B,EAAW,cAAe,KAAM,GAC/E,GAAI,GAAQ,GACZ,SAAQ,GAAa,EAAO,GAAc,IAC1C,EAAQ,GAAa,EAAO,GAAc,IAC1C,EAAQ,GAAa,EAAO,GAAc,IACnC,EAEd,aAAa,EAAS,CACf,KAAM,GAAS,KAAK,QACd,EAAO,KAAK,MAAM,KAClB,EAAc,GACd,EAAmB,GACnB,EAAkB,GACxB,GAAI,GAAe,GACf,EAAG,EACP,IAAI,EAAI,EAAG,EAAM,EAAO,OAAQ,EAAI,EAAK,EAAE,EACvC,EAAa,KAAK,GAAkB,KAAK,MAAO,EAAO,KAE3D,MAAI,GAAQ,QACR,GAAe,EAAa,OAAO,CAAC,EAAS,EAAO,IAAQ,EAAQ,OAAO,EAAS,EAAO,EAAO,KAElG,EAAQ,UACR,GAAe,EAAa,KAAK,CAAC,EAAG,IAAI,EAAQ,SAAS,EAAG,EAAG,KAEpE,GAAK,EAAe,GAAU,CAC1B,KAAM,GAAS,GAAkB,EAAQ,UAAW,GACpD,EAAY,KAAK,GAA2B,EAAQ,aAAc,KAAM,IACxE,EAAiB,KAAK,GAA2B,EAAQ,kBAAmB,KAAM,IAClF,EAAgB,KAAK,GAA2B,EAAQ,iBAAkB,KAAM,MAEpF,KAAK,YAAc,EACnB,KAAK,iBAAmB,EACxB,KAAK,gBAAkB,EACvB,KAAK,WAAa,EACX,EAEX,OAAO,EAAS,EAAQ,CACpB,KAAM,GAAU,KAAK,QAAQ,WAAW,KAAK,cACvC,EAAS,KAAK,QACpB,GAAI,GACA,EAAe,GACnB,GAAI,CAAC,EAAO,OACJ,KAAK,UAAY,GACjB,GAAa,CACT,QAAS,QAGd,CACH,KAAM,GAAW,GAAY,EAAQ,UAAU,KAAK,KAAM,EAAQ,KAAK,gBACvE,EAAe,KAAK,aAAa,GACjC,KAAK,MAAQ,KAAK,SAAS,EAAc,GACzC,KAAK,WAAa,KAAK,cAAc,EAAc,GACnD,KAAK,KAAO,KAAK,QAAQ,EAAc,GACvC,KAAK,UAAY,KAAK,aAAa,EAAc,GACjD,KAAK,OAAS,KAAK,UAAU,EAAc,GAC3C,KAAM,GAAO,KAAK,MAAQ,GAAe,KAAM,GACzC,EAAkB,OAAO,OAAO,GAAI,EAAU,GAC9C,EAAY,GAAmB,KAAK,MAAO,EAAS,GACpD,EAAkB,GAAmB,EAAS,EAAiB,EAAW,KAAK,OACrF,KAAK,OAAS,EAAU,OACxB,KAAK,OAAS,EAAU,OACxB,EAAa,CACT,QAAS,EACT,EAAG,EAAgB,EACnB,EAAG,EAAgB,EACnB,MAAO,EAAK,MACZ,OAAQ,EAAK,OACb,OAAQ,EAAS,EACjB,OAAQ,EAAS,GAGzB,KAAK,cAAgB,EACrB,KAAK,SAAW,OACZ,GACA,KAAK,qBAAqB,OAAO,KAAM,GAEvC,GAAW,EAAQ,UACnB,EAAQ,SAAS,KAAK,KAAM,CACxB,MAAO,KAAK,MACZ,QAAS,KACT,WAIZ,UAAU,EAAc,EAAK,EAAM,EAAS,CACxC,KAAM,GAAgB,KAAK,iBAAiB,EAAc,EAAM,GAChE,EAAI,OAAO,EAAc,GAAI,EAAc,IAC3C,EAAI,OAAO,EAAc,GAAI,EAAc,IAC3C,EAAI,OAAO,EAAc,GAAI,EAAc,IAE/C,iBAAiB,EAAc,EAAM,EAAS,CAC1C,KAAM,CAAE,SAAS,UAAY,KACvB,CAAE,YAAY,gBAAkB,EAChC,CAAE,UAAU,WAAW,aAAa,eAAiB,GAAc,GACnE,CAAE,EAAG,EAAM,EAAG,GAAS,EACvB,CAAE,QAAQ,UAAY,EAC5B,GAAI,GAAI,EAAI,GAAI,GAAI,EAAI,GACxB,MAAI,KAAW,SACX,GAAK,EAAM,EAAS,EAChB,IAAW,OACX,GAAK,EACL,EAAK,EAAK,EACV,GAAK,EAAK,EACV,GAAK,EAAK,GAEV,GAAK,EAAM,EACX,EAAK,EAAK,EACV,GAAK,EAAK,EACV,GAAK,EAAK,GAEd,GAAK,GAEL,CAAI,IAAW,OACX,EAAK,EAAM,KAAK,IAAI,EAAS,GAAc,EACpC,IAAW,QAClB,EAAK,EAAM,EAAQ,KAAK,IAAI,EAAU,GAAe,EAErD,EAAK,KAAK,OAEV,IAAW,MACX,IAAK,EACL,EAAK,GAAK,EACV,EAAK,EAAK,EACV,GAAK,EAAK,GAEV,IAAK,EAAM,EACX,EAAK,GAAK,EACV,EAAK,EAAK,EACV,GAAK,EAAK,GAEd,GAAK,IAEF,CACH,KACA,KACA,MACA,MACA,KACA,OAGR,UAAU,EAAI,EAAK,EAAS,CACxB,KAAM,GAAQ,KAAK,MACb,EAAS,EAAM,OACrB,GAAI,GAAW,EAAc,EAC7B,GAAI,EAAQ,CACR,KAAM,GAAY,GAAc,EAAQ,IAAK,KAAK,EAAG,KAAK,OAQ1D,IAPA,EAAG,EAAI,GAAY,KAAM,EAAQ,WAAY,GAC7C,EAAI,UAAY,EAAU,UAAU,EAAQ,YAC5C,EAAI,aAAe,SACnB,EAAY,GAAO,EAAQ,WAC3B,EAAe,EAAQ,aACvB,EAAI,UAAY,EAAQ,WACxB,EAAI,KAAO,EAAU,OACjB,EAAI,EAAG,EAAI,EAAQ,EAAE,EACrB,EAAI,SAAS,EAAM,GAAI,EAAU,EAAE,EAAG,GAAI,EAAG,EAAI,EAAU,WAAa,GACxE,EAAG,GAAK,EAAU,WAAa,EAC3B,EAAI,IAAM,GACV,GAAG,GAAK,EAAQ,kBAAoB,IAKvD,cAAc,EAAK,EAAI,EAAG,EAAW,EAAS,CACvC,KAAM,GAAa,KAAK,YAAY,GAC9B,EAAkB,KAAK,iBAAiB,GACxC,CAAE,YAAY,YAAc,EAC5B,EAAW,GAAO,EAAQ,UAC1B,EAAS,GAAY,KAAM,OAAQ,GACnC,EAAY,EAAU,EAAE,GACxB,EAAU,EAAY,EAAS,WAAc,GAAS,WAAa,GAAa,EAAI,EACpF,EAAS,EAAG,EAAI,EACtB,GAAI,EAAQ,cAAe,CACvB,KAAM,GAAc,CAChB,OAAQ,KAAK,IAAI,EAAU,GAAa,EACxC,WAAY,EAAgB,WAC5B,SAAU,EAAgB,SAC1B,YAAa,GAEX,EAAU,EAAU,WAAW,EAAW,GAAY,EAAW,EACjE,EAAU,EAAS,EAAY,EACrC,EAAI,YAAc,EAAQ,mBAC1B,EAAI,UAAY,EAAQ,mBACxB,GAAU,EAAK,EAAa,EAAS,GACrC,EAAI,YAAc,EAAW,YAC7B,EAAI,UAAY,EAAW,gBAC3B,GAAU,EAAK,EAAa,EAAS,OAClC,CACH,EAAI,UAAY,GAAS,EAAW,aAAe,KAAK,IAAI,GAAG,OAAO,OAAO,EAAW,cAAgB,EAAW,aAAe,EAClI,EAAI,YAAc,EAAW,YAC7B,EAAI,YAAY,EAAW,YAAc,IACzC,EAAI,eAAiB,EAAW,kBAAoB,EACpD,KAAM,GAAS,EAAU,WAAW,EAAW,GACzC,EAAS,EAAU,WAAW,EAAU,MAAM,EAAW,GAAI,EAAW,GACxE,EAAe,GAAc,EAAW,cAC1C,OAAO,OAAO,GAAc,KAAM,IAAI,KAAM,GAC5C,GAAI,YACJ,EAAI,UAAY,EAAQ,mBACxB,GAAmB,EAAK,CACpB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,OAAQ,IAEZ,EAAI,OACJ,EAAI,SACJ,EAAI,UAAY,EAAW,gBAC3B,EAAI,YACJ,GAAmB,EAAK,CACpB,EAAG,EACH,EAAG,EAAS,EACZ,EAAG,EAAW,EACd,EAAG,EAAY,EACf,OAAQ,IAEZ,EAAI,QAEJ,GAAI,UAAY,EAAQ,mBACxB,EAAI,SAAS,EAAQ,EAAQ,EAAU,GACvC,EAAI,WAAW,EAAQ,EAAQ,EAAU,GACzC,EAAI,UAAY,EAAW,gBAC3B,EAAI,SAAS,EAAQ,EAAS,EAAG,EAAW,EAAG,EAAY,IAGnE,EAAI,UAAY,KAAK,gBAAgB,GAEzC,SAAS,EAAI,EAAK,EAAS,CACvB,KAAM,CAAE,QAAU,KACZ,CAAE,cAAc,YAAY,gBAAgB,YAAY,WAAW,cAAgB,EACnF,EAAW,GAAO,EAAQ,UAChC,GAAI,GAAiB,EAAS,WAC1B,EAAe,EACnB,KAAM,GAAY,GAAc,EAAQ,IAAK,KAAK,EAAG,KAAK,OACpD,EAAiB,SAAS,GAAM,CAClC,EAAI,SAAS,GAAM,EAAU,EAAE,EAAG,EAAI,GAAe,EAAG,EAAI,EAAiB,GAC7E,EAAG,GAAK,EAAiB,GAEvB,EAA0B,EAAU,UAAU,GACpD,GAAI,GAAU,GAAW,GAAO,EAAG,GAAG,GAAM,GAQ5C,IAPA,EAAI,UAAY,EAChB,EAAI,aAAe,SACnB,EAAI,KAAO,EAAS,OACpB,EAAG,EAAI,GAAY,KAAM,EAAyB,GAClD,EAAI,UAAY,EAAQ,UACxB,GAAK,KAAK,WAAY,GACtB,EAAe,GAAiB,IAA4B,QAAU,IAAc,SAAW,EAAW,EAAI,EAAa,EAAW,EAAI,EAAa,EACnJ,EAAI,EAAG,GAAO,EAAK,OAAQ,EAAI,GAAM,EAAE,EAAE,CAUzC,IATA,EAAW,EAAK,GAChB,GAAY,KAAK,gBAAgB,GACjC,EAAI,UAAY,GAChB,GAAK,EAAS,OAAQ,GACtB,GAAQ,EAAS,MACb,GAAiB,GAAM,QACvB,MAAK,cAAc,EAAK,EAAI,EAAG,EAAW,GAC1C,EAAiB,KAAK,IAAI,EAAS,WAAY,IAE/C,GAAI,EAAG,GAAO,GAAM,OAAQ,GAAI,GAAM,EAAE,GACxC,EAAe,GAAM,KACrB,EAAiB,EAAS,WAE9B,GAAK,EAAS,MAAO,GAEzB,EAAe,EACf,EAAiB,EAAS,WAC1B,GAAK,KAAK,UAAW,GACrB,EAAG,GAAK,EAEZ,WAAW,EAAI,EAAK,EAAS,CACzB,KAAM,GAAS,KAAK,OACd,EAAS,EAAO,OACtB,GAAI,GAAY,EAChB,GAAI,EAAQ,CACR,KAAM,GAAY,GAAc,EAAQ,IAAK,KAAK,EAAG,KAAK,OAQ1D,IAPA,EAAG,EAAI,GAAY,KAAM,EAAQ,YAAa,GAC9C,EAAG,GAAK,EAAQ,gBAChB,EAAI,UAAY,EAAU,UAAU,EAAQ,aAC5C,EAAI,aAAe,SACnB,EAAa,GAAO,EAAQ,YAC5B,EAAI,UAAY,EAAQ,YACxB,EAAI,KAAO,EAAW,OAClB,EAAI,EAAG,EAAI,EAAQ,EAAE,EACrB,EAAI,SAAS,EAAO,GAAI,EAAU,EAAE,EAAG,GAAI,EAAG,EAAI,EAAW,WAAa,GAC1E,EAAG,GAAK,EAAW,WAAa,EAAQ,eAIpD,eAAe,EAAI,EAAK,EAAa,EAAS,CAC1C,KAAM,CAAE,SAAS,UAAY,KACvB,CAAE,IAAI,KAAO,EACb,CAAE,QAAQ,UAAY,EACtB,CAAE,UAAU,WAAW,aAAa,eAAiB,GAAc,EAAQ,cACjF,EAAI,UAAY,EAAQ,gBACxB,EAAI,YAAc,EAAQ,YAC1B,EAAI,UAAY,EAAQ,YACxB,EAAI,YACJ,EAAI,OAAO,EAAI,EAAS,GACpB,IAAW,OACX,KAAK,UAAU,EAAI,EAAK,EAAa,GAEzC,EAAI,OAAO,EAAI,EAAQ,EAAU,GACjC,EAAI,iBAAiB,EAAI,EAAO,EAAG,EAAI,EAAO,EAAI,GAC9C,IAAW,UAAY,IAAW,SAClC,KAAK,UAAU,EAAI,EAAK,EAAa,GAEzC,EAAI,OAAO,EAAI,EAAO,EAAI,EAAS,GACnC,EAAI,iBAAiB,EAAI,EAAO,EAAI,EAAQ,EAAI,EAAQ,EAAa,EAAI,GACrE,IAAW,UACX,KAAK,UAAU,EAAI,EAAK,EAAa,GAEzC,EAAI,OAAO,EAAI,EAAY,EAAI,GAC/B,EAAI,iBAAiB,EAAG,EAAI,EAAQ,EAAG,EAAI,EAAS,GAChD,IAAW,UAAY,IAAW,QAClC,KAAK,UAAU,EAAI,EAAK,EAAa,GAEzC,EAAI,OAAO,EAAG,EAAI,GAClB,EAAI,iBAAiB,EAAG,EAAG,EAAI,EAAS,GACxC,EAAI,YACJ,EAAI,OACA,EAAQ,YAAc,GACtB,EAAI,SAGf,uBAAuB,EAAS,CACzB,KAAM,GAAQ,KAAK,MACb,EAAQ,KAAK,YACb,EAAQ,GAAS,EAAM,EACvB,EAAQ,GAAS,EAAM,EAC7B,GAAI,GAAS,EAAO,CAChB,KAAM,GAAW,GAAY,EAAQ,UAAU,KAAK,KAAM,KAAK,QAAS,KAAK,gBAC7E,GAAI,CAAC,EACD,OAEJ,KAAM,GAAO,KAAK,MAAQ,GAAe,KAAM,GACzC,EAAkB,OAAO,OAAO,GAAI,EAAU,KAAK,OACnD,EAAY,GAAmB,EAAO,EAAS,GAC/C,EAAQ,GAAmB,EAAS,EAAiB,EAAW,GAClE,GAAM,MAAQ,EAAM,GAAK,EAAM,MAAQ,EAAM,IAC7C,MAAK,OAAS,EAAU,OACxB,KAAK,OAAS,EAAU,OACxB,KAAK,MAAQ,EAAK,MAClB,KAAK,OAAS,EAAK,OACnB,KAAK,OAAS,EAAS,EACvB,KAAK,OAAS,EAAS,EACvB,KAAK,qBAAqB,OAAO,KAAM,KAItD,aAAc,CACP,MAAO,CAAC,CAAC,KAAK,QAElB,KAAK,EAAK,CACN,KAAM,GAAU,KAAK,QAAQ,WAAW,KAAK,cAC7C,GAAI,GAAU,KAAK,QACnB,GAAI,CAAC,EACD,OAEJ,KAAK,uBAAuB,GAC5B,KAAM,GAAc,CAChB,MAAO,KAAK,MACZ,OAAQ,KAAK,QAEX,EAAK,CACP,EAAG,KAAK,EACR,EAAG,KAAK,GAEZ,EAAU,KAAK,IAAI,GAAW,KAAO,EAAI,EACzC,KAAM,GAAU,GAAU,EAAQ,SAC5B,EAAoB,KAAK,MAAM,QAAU,KAAK,WAAW,QAAU,KAAK,KAAK,QAAU,KAAK,UAAU,QAAU,KAAK,OAAO,OAC9H,EAAQ,SAAW,GACnB,GAAI,OACJ,EAAI,YAAc,EAClB,KAAK,eAAe,EAAI,EAAK,EAAa,GAC1C,GAAsB,EAAK,EAAQ,eACnC,EAAG,GAAK,EAAQ,IAChB,KAAK,UAAU,EAAI,EAAK,GACxB,KAAK,SAAS,EAAI,EAAK,GACvB,KAAK,WAAW,EAAI,EAAK,GACzB,GAAqB,EAAK,EAAQ,eAClC,EAAI,WAGf,mBAAoB,CACb,MAAO,MAAK,SAAW,GAE9B,kBAAkB,EAAgB,EAAe,CAC1C,KAAM,GAAa,KAAK,QAClB,EAAS,EAAe,IAAI,CAAC,CAAE,eAAe,WAAW,CAC3D,KAAM,GAAO,KAAK,MAAM,eAAe,GACvC,GAAI,CAAC,EACD,KAAM,IAAI,OAAM,kCAAoC,GAExD,MAAO,CACH,eACA,QAAS,EAAK,KAAK,GACnB,WAGF,EAAU,CAAC,GAAe,EAAY,GACtC,EAAkB,KAAK,iBAAiB,EAAQ,GAClD,IAAW,IACX,MAAK,QAAU,EACf,KAAK,eAAiB,EACtB,KAAK,oBAAsB,GAC3B,KAAK,OAAO,KAGvB,YAAY,EAAG,EAAQ,EAAc,GAAM,CACpC,GAAI,GAAU,KAAK,oBACf,MAAO,GAEX,KAAK,oBAAsB,GAC3B,KAAM,GAAU,KAAK,QACf,EAAa,KAAK,SAAW,GAC7B,EAAS,KAAK,mBAAmB,EAAG,EAAY,EAAQ,GACxD,EAAkB,KAAK,iBAAiB,EAAQ,GAChD,EAAU,GAAU,CAAC,GAAe,EAAQ,IAAe,EACjE,MAAI,IACA,MAAK,QAAU,EACX,GAAQ,SAAW,EAAQ,WAC3B,MAAK,eAAiB,CAClB,EAAG,EAAE,EACL,EAAG,EAAE,GAET,KAAK,OAAO,GAAM,KAGnB,EAEd,mBAAmB,EAAG,EAAY,EAAQ,EAAa,CAChD,KAAM,GAAU,KAAK,QACrB,GAAI,EAAE,OAAS,WACX,MAAO,GAEX,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,GAAS,KAAK,MAAM,0BAA0B,EAAG,EAAQ,KAAM,EAAS,GAC9E,MAAI,GAAQ,SACR,EAAO,UAEJ,EAEd,iBAAiB,EAAQ,EAAG,CACrB,KAAM,CAAE,SAAS,SAAS,WAAa,KACjC,EAAW,GAAY,EAAQ,UAAU,KAAK,KAAM,EAAQ,GAClE,MAAO,KAAa,IAAU,KAAW,EAAS,GAAK,IAAW,EAAS,IAGnF,GAAI,IAAiB,CACjB,GAAI,UACJ,SAAU,GACV,eACA,UAAW,EAAO,EAAO,EAAS,CAC1B,GACA,GAAM,QAAU,GAAI,IAAQ,CACxB,QACA,cAIZ,aAAc,EAAO,EAAO,EAAS,CAC7B,EAAM,SACN,EAAM,QAAQ,WAAW,IAGjC,MAAO,EAAO,EAAO,EAAS,CACtB,EAAM,SACN,EAAM,QAAQ,WAAW,IAGjC,UAAW,EAAO,CACd,KAAM,GAAU,EAAM,QACtB,GAAI,GAAW,EAAQ,cAAe,CAClC,KAAM,GAAO,CACT,WAEJ,GAAI,EAAM,cAAc,oBAAqB,IACtC,EACH,WAAY,OACT,GACH,OAEJ,EAAQ,KAAK,EAAM,KACnB,EAAM,cAAc,mBAAoB,KAGhD,WAAY,EAAO,EAAM,CACrB,GAAI,EAAM,QAAS,CACf,KAAM,GAAmB,EAAK,OAC1B,EAAM,QAAQ,YAAY,EAAK,MAAO,EAAkB,EAAK,cAC7D,GAAK,QAAU,MAI3B,SAAU,CACN,QAAS,GACT,SAAU,KACV,SAAU,UACV,gBAAiB,kBACjB,WAAY,OACZ,UAAW,CACP,OAAQ,QAEZ,aAAc,EACd,kBAAmB,EACnB,WAAY,OACZ,UAAW,OACX,YAAa,EACb,SAAU,GACV,UAAW,OACX,YAAa,OACb,cAAe,EACf,gBAAiB,EACjB,WAAY,CACR,OAAQ,QAEZ,YAAa,OACb,QAAS,EACT,aAAc,EACd,UAAW,EACX,aAAc,EACd,UAAW,CAAC,EAAK,IAAO,EAAK,SAAS,KACtC,SAAU,CAAC,EAAK,IAAO,EAAK,SAAS,KACrC,mBAAoB,OACpB,cAAe,GACf,WAAY,EACZ,YAAa,gBACb,YAAa,EACb,UAAW,CACP,SAAU,IACV,OAAQ,gBAEZ,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,QACA,SACA,SACA,WAGR,QAAS,CACL,OAAQ,SACR,SAAU,MAGlB,UAAW,IAEf,cAAe,CACX,SAAU,OACV,WAAY,OACZ,UAAW,QAEf,YAAa,CACT,YAAc,GAAO,IAAS,UAAY,IAAS,YAAc,IAAS,WAC1E,WAAY,GACZ,UAAW,CACP,YAAa,GACb,WAAY,IAEhB,UAAW,CACP,UAAW,IAEf,WAAY,CACR,UAAW,cAGnB,uBAAwB,CACpB,gBAIJ,GAAuB,OAAO,OAAO,CACzC,UAAW,KACX,OAAQ,GACR,WAAY,GACZ,OAAQ,GACR,OAAQ,GACR,SAAU,GACV,MAAO,GACP,QAAS,KAGT,KAAM,IAAc,CAAC,EAAQ,EAAK,EAAO,IACrC,CAAI,MAAO,IAAQ,SACf,GAAQ,EAAO,KAAK,GAAO,EAC3B,EAAY,QAAQ,CAChB,QACA,MAAO,KAEJ,MAAM,IACb,GAAQ,MAEL,GAEX,YAAwB,EAAQ,EAAK,EAAO,EAAa,CACrD,KAAM,GAAQ,EAAO,QAAQ,GAC7B,GAAI,IAAU,GACV,MAAO,IAAY,EAAQ,EAAK,EAAO,GAE3C,KAAM,GAAO,EAAO,YAAY,GAChC,MAAO,KAAU,EAAO,EAAQ,EAEpC,KAAM,IAAa,CAAC,EAAO,IAAM,IAAU,KAAO,KAAO,GAAY,KAAK,MAAM,GAAQ,EAAG,GAC3F,YAA2B,EAAO,CAC9B,KAAM,GAAS,KAAK,YACpB,MAAI,IAAS,GAAK,EAAQ,EAAO,OACtB,EAAO,GAEX,EAEX,gBAA4B,GAAM,OACvB,IAAK,iBACR,UAAW,CACX,MAAO,CACH,SAAU,KAGlB,YAAY,EAAI,CACZ,MAAM,GACL,KAAK,YAAc,OACpB,KAAK,YAAc,EACnB,KAAK,aAAe,GAExB,KAAK,EAAc,CACf,KAAM,GAAQ,KAAK,aACnB,GAAI,EAAM,OAAQ,CACd,KAAM,GAAS,KAAK,YACpB,SAAW,CAAE,QAAQ,UAAY,GACzB,EAAO,KAAW,GAClB,EAAO,OAAO,EAAO,GAG7B,KAAK,aAAe,GAExB,MAAM,KAAK,GAEf,MAAM,EAAK,EAAO,CACd,GAAI,GAAc,GACd,MAAO,MAEX,KAAM,GAAS,KAAK,YACpB,SAAQ,SAAS,IAAU,EAAO,KAAW,EAAM,EAAQ,GAAe,EAAQ,EAAK,GAAe,EAAO,GAAM,KAAK,cACjH,GAAW,EAAO,EAAO,OAAS,GAE7C,qBAAsB,CAClB,KAAM,CAAE,aAAa,cAAgB,KAAK,gBAC1C,GAAI,CAAE,MAAM,OAAS,KAAK,UAAU,IAChC,KAAK,QAAQ,SAAW,SACnB,IACD,GAAM,GAEL,GACD,GAAM,KAAK,YAAY,OAAS,IAGxC,KAAK,IAAM,EACX,KAAK,IAAM,EAEf,YAAa,CACT,KAAM,GAAM,KAAK,IACX,EAAM,KAAK,IACX,EAAS,KAAK,QAAQ,OACtB,EAAQ,GACd,GAAI,GAAS,KAAK,YAClB,EAAS,IAAQ,GAAK,IAAQ,EAAO,OAAS,EAAI,EAAS,EAAO,MAAM,EAAK,EAAM,GACnF,KAAK,YAAc,KAAK,IAAI,EAAO,OAAU,GAAS,EAAI,GAAI,GAC9D,KAAK,YAAc,KAAK,IAAO,GAAS,GAAM,GAC9C,OAAQ,GAAQ,EAAK,GAAS,EAAK,IAC/B,EAAM,KAAK,CACP,UAGR,MAAO,GAEX,iBAAiB,EAAO,CACpB,MAAO,IAAkB,KAAK,KAAM,GAE3C,WAAY,CACL,MAAM,YACD,KAAK,gBACN,MAAK,eAAiB,CAAC,KAAK,gBAGpC,iBAAiB,EAAO,CACpB,MAAI,OAAO,IAAU,UACjB,GAAQ,KAAK,MAAM,IAEhB,IAAU,KAAO,IAAM,KAAK,mBAAoB,GAAQ,KAAK,aAAe,KAAK,aAE5F,gBAAgB,EAAO,CACnB,KAAM,GAAQ,KAAK,MACnB,MAAI,GAAQ,GAAK,EAAQ,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiB,EAAM,GAAO,OAE9C,iBAAiB,EAAO,CACpB,MAAO,MAAK,MAAM,KAAK,YAAc,KAAK,mBAAmB,GAAS,KAAK,aAE/E,cAAe,CACX,MAAO,MAAK,QAIpB,YAAyB,EAAmB,EAAW,CACnD,KAAM,GAAQ,GACR,EAAc,MACd,CAAE,SAAS,OAAO,MAAM,MAAM,YAAY,QAAQ,WAAW,YAAY,iBAAmB,EAC5F,EAAO,GAAQ,EACf,EAAY,EAAW,EACvB,CAAE,IAAK,EAAO,IAAK,GAAU,EAC7B,EAAa,CAAC,GAAc,GAC5B,GAAa,CAAC,GAAc,GAC5B,GAAe,CAAC,GAAc,GAC9B,EAAc,GAAO,GAAS,GAAY,GAChD,GAAI,IAAU,GAAS,GAAO,GAAQ,EAAY,GAAQ,EACtD,GAAQ,GAAS,GAAS,GAC9B,GAAI,GAAU,GAAe,CAAC,GAAc,CAAC,GACzC,MAAO,CACH,CACI,MAAO,GAEX,CACI,MAAO,IAInB,GAAY,KAAK,KAAK,EAAO,IAAW,KAAK,MAAM,EAAO,IACtD,GAAY,GACZ,IAAU,GAAQ,GAAY,GAAU,EAAY,GAAQ,GAE3D,GAAc,IACf,IAAS,KAAK,IAAI,GAAI,GACtB,GAAU,KAAK,KAAK,GAAU,IAAU,IAExC,IAAW,QACX,IAAU,KAAK,MAAM,EAAO,IAAW,GACvC,GAAU,KAAK,KAAK,EAAO,IAAW,IAEtC,IAAU,EACV,GAAU,GAEV,GAAc,IAAc,GAAQ,GAAa,GAAM,GAAO,EAAM,GAAU,KAC9E,IAAY,KAAK,MAAM,KAAK,IAAK,GAAM,GAAO,GAAS,IACvD,GAAW,GAAM,GAAO,GACxB,GAAU,EACV,GAAU,GACH,GACP,IAAU,EAAa,EAAM,GAC7B,GAAU,GAAa,EAAM,GAC7B,GAAY,EAAQ,EACpB,GAAW,IAAU,IAAW,IAEhC,IAAa,IAAU,IAAW,GAC9B,GAAa,GAAW,KAAK,MAAM,IAAY,GAAU,KACzD,GAAY,KAAK,MAAM,IAEvB,GAAY,KAAK,KAAK,KAG9B,KAAM,IAAgB,KAAK,IAAI,GAAe,IAAU,GAAe,KACvE,GAAS,KAAK,IAAI,GAAI,GAAc,GAAa,GAAgB,GACjE,GAAU,KAAK,MAAM,GAAU,IAAU,GACzC,GAAU,KAAK,MAAM,GAAU,IAAU,GACzC,GAAI,IAAI,EAgBR,IAfI,GACA,CAAI,GAAiB,KAAY,EAC7B,GAAM,KAAK,CACP,MAAO,IAEP,GAAU,GACV,KAEA,GAAa,KAAK,MAAO,IAAU,GAAI,IAAW,IAAU,GAAQ,EAAK,GAAkB,EAAK,EAAY,KAC5G,MAEG,GAAU,GACjB,MAGF,GAAI,GAAW,EAAE,GAAE,CACrB,KAAM,IAAY,KAAK,MAAO,IAAU,GAAI,IAAW,IAAU,GACjE,GAAI,IAAc,GAAY,EAC1B,MAEJ,EAAM,KAAK,CACP,MAAO,KAGf,MAAI,KAAc,GAAiB,KAAY,EACvC,EAAM,QAAU,GAAa,EAAM,EAAM,OAAS,GAAG,MAAO,EAAK,GAAkB,EAAK,EAAY,IACpG,EAAM,EAAM,OAAS,GAAG,MAAQ,EAEhC,EAAM,KAAK,CACP,MAAO,IAGR,EAAC,IAAc,KAAY,IAClC,EAAM,KAAK,CACP,MAAO,KAGR,EAEX,YAA2B,EAAO,EAAY,CAAE,aAAa,eAAgB,CACzE,KAAM,GAAM,GAAU,GAChB,EAAS,GAAa,KAAK,IAAI,GAAO,KAAK,IAAI,KAAS,KACxD,EAAS,IAAO,EAAc,IAAK,GAAO,OAChD,MAAO,MAAK,IAAI,EAAa,EAAO,GAExC,gBAA8B,GAAM,CAChC,YAAY,EAAI,CACZ,MAAM,GACL,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,YAAc,EAEvB,MAAM,EAAK,EAAO,CAId,MAHI,IAAc,IAGb,OAAO,IAAQ,UAAY,YAAe,UAAW,CAAC,SAAS,CAAC,GAC1D,KAEJ,CAAC,EAEZ,wBAAyB,CACrB,KAAM,CAAE,eAAiB,KAAK,QACxB,CAAE,aAAa,cAAgB,KAAK,gBAC1C,GAAI,CAAE,MAAM,OAAS,KACrB,KAAM,GAAU,GAAI,EAAM,EAAa,EAAM,EACvC,EAAU,GAAI,EAAM,EAAa,EAAM,EAC7C,GAAI,EAAa,CACb,KAAM,GAAU,GAAK,GACf,EAAU,GAAK,GACjB,EAAU,GAAK,EAAU,EACzB,EAAO,GACA,EAAU,GAAK,EAAU,GAChC,EAAO,GAGf,GAAI,IAAQ,EAAK,CACb,GAAI,GAAS,IAAQ,EAAI,EAAI,KAAK,IAAI,EAAM,KAC5C,EAAO,EAAM,GACR,GACD,EAAO,EAAM,GAGrB,KAAK,IAAM,EACX,KAAK,IAAM,EAEf,cAAe,CACX,KAAM,GAAW,KAAK,QAAQ,MAC9B,GAAI,CAAE,gBAAgB,YAAc,EAChC,EACJ,MAAI,GACA,GAAW,KAAK,KAAK,KAAK,IAAM,GAAY,KAAK,MAAM,KAAK,IAAM,GAAY,EAC1E,EAAW,KACX,SAAQ,KAAK,UAAU,KAAK,sBAAsB,mCAA0C,8BAC5F,EAAW,MAGf,GAAW,KAAK,mBAChB,EAAgB,GAAiB,IAEjC,GACA,GAAW,KAAK,IAAI,EAAe,IAEhC,EAEd,kBAAmB,CACZ,MAAO,QAAO,kBAElB,YAAa,CACT,KAAM,GAAO,KAAK,QACZ,EAAW,EAAK,MACtB,GAAI,GAAW,KAAK,eACpB,EAAW,KAAK,IAAI,EAAG,GACvB,KAAM,GAA0B,CAC5B,WACA,OAAQ,EAAK,OACb,IAAK,EAAK,IACV,IAAK,EAAK,IACV,UAAW,EAAS,UACpB,KAAM,EAAS,SACf,MAAO,EAAS,MAChB,UAAW,KAAK,aAChB,WAAY,KAAK,eACjB,YAAa,EAAS,aAAe,EACrC,cAAe,EAAS,gBAAkB,IAExC,EAAY,KAAK,QAAU,KAC3B,EAAQ,GAAgB,EAAyB,GACvD,MAAI,GAAK,SAAW,SAChB,GAAmB,EAAO,KAAM,SAEhC,EAAK,QACL,GAAM,UACN,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEhB,MAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEb,EAEd,WAAY,CACL,KAAM,GAAQ,KAAK,MACnB,GAAI,GAAQ,KAAK,IACb,EAAM,KAAK,IAEf,GADA,MAAM,YACF,KAAK,QAAQ,QAAU,EAAM,OAAQ,CACrC,KAAM,GAAU,GAAM,GAAS,KAAK,IAAI,EAAM,OAAS,EAAG,GAAK,EAC/D,GAAS,EACT,GAAO,EAEX,KAAK,YAAc,EACnB,KAAK,UAAY,EACjB,KAAK,YAAc,EAAM,EAE7B,iBAAiB,EAAO,CACpB,MAAO,IAAa,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,SAIjF,gBAA0B,GAAgB,OAC/B,IAAK,eACR,UAAW,CACX,MAAO,CACH,SAAU,GAAM,WAAW,UAGnC,qBAAsB,CAClB,KAAM,CAAE,MAAM,OAAS,KAAK,UAAU,IACtC,KAAK,IAAM,GAAe,GAAO,EAAM,EACvC,KAAK,IAAM,GAAe,GAAO,EAAM,EACvC,KAAK,yBAEZ,kBAAmB,CACZ,KAAM,GAAa,KAAK,eAClB,EAAS,EAAa,KAAK,MAAQ,KAAK,OACxC,EAAc,GAAU,KAAK,QAAQ,MAAM,aAC3C,EAAS,GAAa,KAAK,IAAI,GAAe,KAAK,IAAI,KAAiB,KACxE,EAAW,KAAK,wBAAwB,GAC9C,MAAO,MAAK,KAAK,EAAS,KAAK,IAAI,GAAI,EAAS,WAAa,IAEjE,iBAAiB,EAAO,CACpB,MAAO,KAAU,KAAO,IAAM,KAAK,mBAAoB,GAAQ,KAAK,aAAe,KAAK,aAE5F,iBAAiB,EAAO,CACpB,MAAO,MAAK,YAAc,KAAK,mBAAmB,GAAS,KAAK,aAIxE,KAAM,IAAc,GAAI,KAAK,MAAM,GAAM,IACnC,GAAiB,CAAC,EAAG,IAAI,KAAK,IAAI,GAAI,GAAW,GAAK,GAC5D,YAAiB,EAAS,CAEtB,MAAO,GADkB,KAAK,IAAI,GAAI,GAAW,MAC/B,EAEtB,YAAe,EAAK,EAAK,EAAU,CAC/B,KAAM,GAAY,KAAK,IAAI,GAAI,GACzB,EAAQ,KAAK,MAAM,EAAM,GAE/B,MAAO,MADU,KAAK,EAAM,GACf,EAEjB,YAAkB,EAAK,EAAK,CACxB,KAAM,GAAQ,EAAM,EACpB,GAAI,GAAW,GAAW,GAC1B,KAAM,GAAM,EAAK,EAAK,GAAY,IAC9B,IAEJ,KAAM,GAAM,EAAK,EAAK,GAAY,IAC9B,IAEJ,MAAO,MAAK,IAAI,EAAU,GAAW,IAExC,YAAuB,EAAmB,CAAE,MAAM,OAAQ,CACvD,EAAM,GAAgB,EAAkB,IAAK,GAC7C,KAAM,GAAQ,GACR,EAAS,GAAW,GAC1B,GAAI,GAAM,GAAS,EAAK,GACpB,EAAY,EAAM,EAAI,KAAK,IAAI,GAAI,KAAK,IAAI,IAAQ,EACxD,KAAM,GAAW,KAAK,IAAI,GAAI,GACxB,EAAO,EAAS,EAAM,KAAK,IAAI,GAAI,GAAU,EAC7C,EAAQ,KAAK,MAAO,GAAM,GAAQ,GAAa,EAC/C,EAAS,KAAK,MAAO,GAAM,GAAQ,EAAW,IAAM,EAAW,GACrE,GAAI,GAAc,KAAK,MAAO,GAAQ,GAAU,KAAK,IAAI,GAAI,IACzD,EAAQ,GAAgB,EAAkB,IAAK,KAAK,MAAO,GAAO,EAAS,EAAc,KAAK,IAAI,GAAI,IAAQ,GAAa,GAC/H,KAAM,EAAQ,GACV,EAAM,KAAK,CACP,QACA,MAAO,GAAQ,GACf,gBAEA,GAAe,GACf,EAAc,EAAc,GAAK,GAAK,GAEtC,IAEA,GAAe,IACf,KACA,EAAc,EACd,EAAY,GAAO,EAAI,EAAI,GAE/B,EAAQ,KAAK,MAAO,GAAO,EAAS,EAAc,KAAK,IAAI,GAAI,IAAQ,GAAa,EAExF,KAAM,GAAW,GAAgB,EAAkB,IAAK,GACxD,SAAM,KAAK,CACP,MAAO,EACP,MAAO,GAAQ,GACf,gBAEG,EAEX,gBAA+B,GAAM,OAC1B,IAAK,oBACR,UAAW,CACX,MAAO,CACH,SAAU,GAAM,WAAW,YAC3B,MAAO,CACH,QAAS,MAIrB,YAAY,EAAI,CACZ,MAAM,GACL,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACpB,KAAK,YAAc,EAEvB,MAAM,EAAK,EAAO,CACd,KAAM,GAAQ,GAAgB,UAAU,MAAM,MAAM,KAAM,CACtD,EACA,IAEJ,GAAI,IAAU,EAAG,CACb,KAAK,MAAQ,GACb,OAEJ,MAAO,IAAe,IAAU,EAAQ,EAAI,EAAQ,KAExD,qBAAsB,CAClB,KAAM,CAAE,MAAM,OAAS,KAAK,UAAU,IACtC,KAAK,IAAM,GAAe,GAAO,KAAK,IAAI,EAAG,GAAO,KACpD,KAAK,IAAM,GAAe,GAAO,KAAK,IAAI,EAAG,GAAO,KAChD,KAAK,QAAQ,aACb,MAAK,MAAQ,IAEb,KAAK,OAAS,KAAK,MAAQ,KAAK,eAAiB,CAAC,GAAe,KAAK,WACtE,MAAK,IAAM,IAAQ,GAAe,KAAK,IAAK,GAAK,GAAe,KAAK,IAAK,IAAM,GAAe,KAAK,IAAK,IAE7G,KAAK,yBAET,wBAAyB,CACrB,KAAM,CAAE,aAAa,cAAgB,KAAK,gBAC1C,GAAI,GAAM,KAAK,IACX,EAAM,KAAK,IACf,KAAM,GAAU,GAAI,EAAM,EAAa,EAAM,EACvC,EAAU,GAAI,EAAM,EAAa,EAAM,EACzC,IAAQ,GACR,CAAI,GAAO,EACP,GAAO,GACP,EAAO,KAEP,GAAO,GAAe,EAAK,KAC3B,EAAO,GAAe,EAAK,MAG/B,GAAO,GACP,EAAO,GAAe,EAAK,KAE3B,GAAO,GACP,EAAO,GAAe,EAAK,IAE/B,KAAK,IAAM,EACX,KAAK,IAAM,EAEf,YAAa,CACT,KAAM,GAAO,KAAK,QACZ,EAAoB,CACtB,IAAK,KAAK,SACV,IAAK,KAAK,UAER,EAAQ,GAAc,EAAmB,MAC/C,MAAI,GAAK,SAAW,SAChB,GAAmB,EAAO,KAAM,SAEhC,EAAK,QACL,GAAM,UACN,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEhB,MAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEb,EAEd,iBAAiB,EAAO,CACjB,MAAO,KAAU,OAAY,IAAM,GAAa,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,QAE5G,WAAY,CACL,KAAM,GAAQ,KAAK,IACnB,MAAM,YACN,KAAK,YAAc,GAAM,GACzB,KAAK,YAAc,GAAM,KAAK,KAAO,GAAM,GAE/C,iBAAiB,EAAO,CAIpB,MAHI,KAAU,QAAa,IAAU,IACjC,GAAQ,KAAK,KAEb,IAAU,MAAQ,MAAM,GACjB,IAEJ,KAAK,mBAAmB,IAAU,KAAK,IAAM,EAAK,IAAM,GAAS,KAAK,aAAe,KAAK,aAErG,iBAAiB,EAAO,CACpB,KAAM,GAAU,KAAK,mBAAmB,GACxC,MAAO,MAAK,IAAI,GAAI,KAAK,YAAc,EAAU,KAAK,cAI9D,YAA+B,EAAM,CACjC,KAAM,GAAW,EAAK,MACtB,GAAI,EAAS,SAAW,EAAK,QAAS,CAClC,KAAM,GAAU,GAAU,EAAS,iBACnC,MAAO,IAAe,EAAS,MAAQ,EAAS,KAAK,KAAM,cAAsB,EAAQ,OAE7F,MAAO,GAEX,YAA0B,EAAK,EAAM,EAAO,CACxC,SAAQ,GAAQ,GAAS,EAAQ,CAC7B,GAEG,CACH,EAAG,GAAa,EAAK,EAAK,OAAQ,GAClC,EAAG,EAAM,OAAS,EAAK,YAG/B,YAAyB,EAAO,EAAK,EAAM,EAAK,EAAK,CACjD,MAAI,KAAU,GAAO,IAAU,EACpB,CACH,MAAO,EAAM,EAAO,EACpB,IAAK,EAAM,EAAO,GAEf,EAAQ,GAAO,EAAQ,EACvB,CACH,MAAO,EAAM,EACb,IAAK,GAGN,CACH,MAAO,EACP,IAAK,EAAM,GAGlB,YAA4B,EAAO,CAChC,KAAM,GAAO,CACT,EAAG,EAAM,KAAO,EAAM,SAAS,KAC/B,EAAG,EAAM,MAAQ,EAAM,SAAS,MAChC,EAAG,EAAM,IAAM,EAAM,SAAS,IAC9B,EAAG,EAAM,OAAS,EAAM,SAAS,QAE/B,EAAS,OAAO,OAAO,GAAI,GAC3B,EAAa,GACb,EAAU,GACV,EAAa,EAAM,aAAa,OAChC,EAAiB,EAAM,QAAQ,YAC/B,EAAkB,EAAe,kBAAoB,GAAK,EAAa,EAC7E,OAAQ,GAAI,EAAG,EAAI,EAAY,IAAI,CAC/B,KAAM,GAAO,EAAe,WAAW,EAAM,qBAAqB,IAClE,EAAQ,GAAK,EAAK,QAClB,KAAM,GAAgB,EAAM,iBAAiB,EAAG,EAAM,YAAc,EAAQ,GAAI,GAC1E,EAAS,GAAO,EAAK,MACrB,EAAW,GAAiB,EAAM,IAAK,EAAQ,EAAM,aAAa,IACxE,EAAW,GAAK,EAChB,KAAM,GAAe,GAAgB,EAAM,cAAc,GAAK,GACxD,EAAQ,KAAK,MAAM,GAAU,IAC7B,EAAU,GAAgB,EAAO,EAAc,EAAG,EAAS,EAAG,EAAG,KACjE,EAAU,GAAgB,EAAO,EAAc,EAAG,EAAS,EAAG,GAAI,KACxE,GAAa,EAAQ,EAAM,EAAc,EAAS,GAEtD,EAAM,eAAe,EAAK,EAAI,EAAO,EAAG,EAAO,EAAI,EAAK,EAAG,EAAK,EAAI,EAAO,EAAG,EAAO,EAAI,EAAK,GAC9F,EAAM,iBAAmB,GAAqB,EAAO,EAAY,GAErE,YAAsB,EAAQ,EAAM,EAAO,EAAS,EAAS,CACzD,KAAM,GAAM,KAAK,IAAI,KAAK,IAAI,IACxB,EAAM,KAAK,IAAI,KAAK,IAAI,IAC9B,GAAI,GAAI,EACJ,EAAI,EACJ,EAAQ,MAAQ,EAAK,EACrB,GAAK,GAAK,EAAI,EAAQ,OAAS,EAC/B,EAAO,EAAI,KAAK,IAAI,EAAO,EAAG,EAAK,EAAI,IAChC,EAAQ,IAAM,EAAK,GAC1B,GAAK,GAAQ,IAAM,EAAK,GAAK,EAC7B,EAAO,EAAI,KAAK,IAAI,EAAO,EAAG,EAAK,EAAI,IAEvC,EAAQ,MAAQ,EAAK,EACrB,GAAK,GAAK,EAAI,EAAQ,OAAS,EAC/B,EAAO,EAAI,KAAK,IAAI,EAAO,EAAG,EAAK,EAAI,IAChC,EAAQ,IAAM,EAAK,GAC1B,GAAK,GAAQ,IAAM,EAAK,GAAK,EAC7B,EAAO,EAAI,KAAK,IAAI,EAAO,EAAG,EAAK,EAAI,IAG/C,YAA8B,EAAO,EAAO,EAAU,CAClD,KAAM,GAAgB,EAAM,YACtB,CAAE,QAAQ,kBAAkB,UAAU,QAAU,EAChD,EAAqB,EAAM,iBAAiB,EAAO,EAAgB,EAAQ,EAAS,GACpF,EAAQ,KAAK,MAAM,GAAU,GAAgB,EAAmB,MAAQ,MACxE,EAAI,GAAU,EAAmB,EAAG,EAAK,EAAG,GAC5C,EAAY,GAAqB,GACjC,EAAO,GAAiB,EAAmB,EAAG,EAAK,EAAG,GAC5D,MAAO,CACH,QAAS,GACT,EAAG,EAAmB,EACtB,EACA,YACA,OACA,IAAK,EACL,MAAO,EAAO,EAAK,EACnB,OAAQ,EAAI,EAAK,GAGzB,YAAyB,EAAM,EAAM,CACjC,GAAI,CAAC,EACD,MAAO,GAEX,KAAM,CAAE,OAAO,MAAM,QAAQ,UAAY,EAczC,MAAO,CAbc,IAAe,CAChC,EAAG,EACH,EAAG,GACJ,IAAS,GAAe,CACvB,EAAG,EACH,EAAG,GACJ,IAAS,GAAe,CACvB,EAAG,EACH,EAAG,GACJ,IAAS,GAAe,CACvB,EAAG,EACH,EAAG,GACJ,IAGP,YAA8B,EAAO,EAAY,EAAS,CACtD,KAAM,GAAQ,GACR,EAAa,EAAM,aAAa,OAChC,EAAO,EAAM,QACb,CAAE,oBAAoB,WAAa,EAAK,YACxC,EAAW,CACb,MAAO,GAAsB,GAAQ,EACrC,gBAAiB,EAAoB,GAAK,EAAa,GAE3D,GAAI,GACJ,OAAQ,GAAI,EAAG,EAAI,EAAY,IAAI,CAC/B,EAAS,QAAU,EAAQ,GAC3B,EAAS,KAAO,EAAW,GAC3B,KAAM,GAAO,GAAqB,EAAO,EAAG,GAC5C,EAAM,KAAK,GACP,IAAY,QACZ,GAAK,QAAU,GAAgB,EAAM,GACjC,EAAK,SACL,GAAO,IAInB,MAAO,GAEX,YAA8B,EAAO,CACjC,MAAI,KAAU,GAAK,IAAU,IAClB,SACA,EAAQ,IACR,OAEJ,QAEX,YAA0B,EAAG,EAAG,EAAO,CACnC,MAAI,KAAU,QACV,GAAK,EACE,IAAU,UACjB,IAAK,EAAI,GAEN,EAEX,YAAmB,EAAG,EAAG,EAAO,CAC5B,MAAI,KAAU,IAAM,IAAU,IAC1B,GAAK,EAAI,EACF,GAAQ,KAAO,EAAQ,KAC9B,IAAK,GAEF,EAEX,YAA2B,EAAK,EAAM,EAAM,CACxC,KAAM,CAAE,OAAO,MAAM,QAAQ,UAAY,EACnC,CAAE,iBAAmB,EAC3B,GAAI,CAAC,GAAc,GAAgB,CAC/B,KAAM,GAAe,GAAc,EAAK,cAClC,EAAU,GAAU,EAAK,iBAC/B,EAAI,UAAY,EAChB,KAAM,GAAe,EAAO,EAAQ,KAC9B,EAAc,EAAM,EAAQ,IAC5B,EAAgB,EAAQ,EAAO,EAAQ,MACvC,EAAiB,EAAS,EAAM,EAAQ,OAC1C,OAAO,OAAO,GAAc,KAAM,GAAI,IAAM,GAC5C,GAAI,YACJ,GAAmB,EAAK,CACpB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,OAAQ,IAEZ,EAAI,QAEJ,EAAI,SAAS,EAAc,EAAa,EAAe,IAInE,YAAyB,EAAO,EAAY,CACxC,KAAM,CAAE,MAAM,QAAS,CAAE,gBAAoB,EAC7C,OAAQ,GAAI,EAAa,EAAG,GAAK,EAAG,IAAI,CACpC,KAAM,GAAO,EAAM,iBAAiB,GACpC,GAAI,CAAC,EAAK,QACN,SAEJ,KAAM,GAAc,EAAY,WAAW,EAAM,qBAAqB,IACtE,GAAkB,EAAK,EAAa,GACpC,KAAM,GAAS,GAAO,EAAY,MAC5B,CAAE,IAAI,IAAI,aAAe,EAC/B,GAAW,EAAK,EAAM,aAAa,GAAI,EAAG,EAAI,EAAO,WAAa,EAAG,EAAQ,CACzE,MAAO,EAAY,MACnB,UAAW,EACX,aAAc,YAI1B,YAAwB,EAAO,EAAQ,EAAU,EAAY,CACzD,KAAM,CAAE,OAAS,EACjB,GAAI,EACA,EAAI,IAAI,EAAM,QAAS,EAAM,QAAS,EAAQ,EAAG,QAC9C,CACH,GAAI,GAAgB,EAAM,iBAAiB,EAAG,GAC9C,EAAI,OAAO,EAAc,EAAG,EAAc,GAC1C,OAAQ,GAAI,EAAG,EAAI,EAAY,IAC3B,EAAgB,EAAM,iBAAiB,EAAG,GAC1C,EAAI,OAAO,EAAc,EAAG,EAAc,IAItD,YAAwB,EAAO,EAAc,EAAQ,EAAY,EAAY,CACzE,KAAM,GAAM,EAAM,IACZ,EAAW,EAAa,SACxB,CAAE,QAAQ,aAAe,EAC3B,CAAC,GAAY,CAAC,GAAc,CAAC,GAAS,CAAC,GAAa,EAAS,GAGjE,GAAI,OACJ,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,YAAY,EAAW,MAC3B,EAAI,eAAiB,EAAW,WAChC,EAAI,YACJ,GAAe,EAAO,EAAQ,EAAU,GACxC,EAAI,YACJ,EAAI,SACJ,EAAI,WAER,YAAiC,EAAQ,EAAO,EAAO,CACnD,MAAO,IAAc,EAAQ,CACzB,QACA,QACA,KAAM,eAGd,gBAAgC,GAAgB,OACrC,IAAK,qBACR,UAAW,CACX,QAAS,GACT,QAAS,GACT,SAAU,YACV,WAAY,CACR,QAAS,GACT,UAAW,EACX,WAAY,GACZ,iBAAkB,GAEtB,KAAM,CACF,SAAU,IAEd,WAAY,EACZ,MAAO,CACH,kBAAmB,GACnB,SAAU,GAAM,WAAW,SAE/B,YAAa,CACT,cAAe,OACf,gBAAiB,EACjB,QAAS,GACT,KAAM,CACF,KAAM,IAEV,SAAU,EAAO,CACb,MAAO,IAEX,QAAS,EACT,kBAAmB,WAGpB,eAAgB,CACnB,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,eAEZ,aAAc,CACjB,WAAY,CACR,UAAW,SAGnB,YAAY,EAAI,CACZ,MAAM,GACL,KAAK,QAAU,OACf,KAAK,QAAU,OACf,KAAK,YAAc,OACnB,KAAK,aAAe,GACrB,KAAK,iBAAmB,GAE5B,eAAgB,CACZ,KAAM,GAAU,KAAK,SAAW,GAAU,GAAsB,KAAK,SAAW,GAC1E,EAAI,KAAK,MAAQ,KAAK,SAAW,EAAQ,MACzC,EAAI,KAAK,OAAS,KAAK,UAAY,EAAQ,OACjD,KAAK,QAAU,KAAK,MAAM,KAAK,KAAO,EAAI,EAAI,EAAQ,MACtD,KAAK,QAAU,KAAK,MAAM,KAAK,IAAM,EAAI,EAAI,EAAQ,KACrD,KAAK,YAAc,KAAK,MAAM,KAAK,IAAI,EAAG,GAAK,GAEnD,qBAAsB,CAClB,KAAM,CAAE,MAAM,OAAS,KAAK,UAAU,IACtC,KAAK,IAAM,GAAe,IAAQ,CAAC,MAAM,GAAO,EAAM,EACtD,KAAK,IAAM,GAAe,IAAQ,CAAC,MAAM,GAAO,EAAM,EACtD,KAAK,yBAEZ,kBAAmB,CACZ,MAAO,MAAK,KAAK,KAAK,YAAc,GAAsB,KAAK,UAEnE,mBAAmB,EAAO,CACtB,GAAgB,UAAU,mBAAmB,KAAK,KAAM,GACxD,KAAK,aAAe,KAAK,YAAY,IAAI,CAAC,EAAO,IAAQ,CACrD,KAAM,GAAQ,GAAS,KAAK,QAAQ,YAAY,SAAU,CACtD,EACA,GACD,MACH,MAAO,IAAS,IAAU,EAAI,EAAQ,KACvC,OAAO,CAAC,EAAG,IAAI,KAAK,MAAM,kBAAkB,IAEnD,KAAM,CACF,KAAM,GAAO,KAAK,QACd,EAAK,SAAW,EAAK,YAAY,QACjC,GAAmB,MAEnB,KAAK,eAAe,EAAG,EAAG,EAAG,GAGrC,eAAe,EAAc,EAAe,EAAa,EAAgB,CACrE,KAAK,SAAW,KAAK,MAAO,GAAe,GAAiB,GAC5D,KAAK,SAAW,KAAK,MAAO,GAAc,GAAkB,GAC5D,KAAK,aAAe,KAAK,IAAI,KAAK,YAAc,EAAG,KAAK,IAAI,EAAc,EAAe,EAAa,IAE1G,cAAc,EAAO,CACjB,KAAM,GAAkB,GAAO,MAAK,aAAa,QAAU,GACrD,EAAa,KAAK,QAAQ,YAAc,EAC9C,MAAO,IAAgB,EAAQ,EAAkB,GAAU,IAE/D,8BAA8B,EAAO,CACjC,GAAI,GAAc,GACd,MAAO,KAEX,KAAM,GAAgB,KAAK,YAAe,MAAK,IAAM,KAAK,KAC1D,MAAI,MAAK,QAAQ,QACL,MAAK,IAAM,GAAS,EAExB,GAAQ,KAAK,KAAO,EAEhC,8BAA8B,EAAU,CACpC,GAAI,GAAc,GACd,MAAO,KAEX,KAAM,GAAiB,EAAY,MAAK,YAAe,MAAK,IAAM,KAAK,MACvE,MAAO,MAAK,QAAQ,QAAU,KAAK,IAAM,EAAiB,KAAK,IAAM,EAEzE,qBAAqB,EAAO,CACxB,KAAM,GAAc,KAAK,cAAgB,GACzC,GAAI,GAAS,GAAK,EAAQ,EAAY,OAAQ,CAC1C,KAAM,GAAa,EAAY,GAC/B,MAAO,IAAwB,KAAK,aAAc,EAAO,IAGjE,iBAAiB,EAAO,EAAoB,EAAkB,EAAG,CAC7D,KAAM,GAAQ,KAAK,cAAc,GAAS,GAAU,EACpD,MAAO,CACH,EAAG,KAAK,IAAI,GAAS,EAAqB,KAAK,QAC/C,EAAG,KAAK,IAAI,GAAS,EAAqB,KAAK,QAC/C,SAGR,yBAAyB,EAAO,EAAO,CACnC,MAAO,MAAK,iBAAiB,EAAO,KAAK,8BAA8B,IAE3E,gBAAgB,EAAO,CACnB,MAAO,MAAK,yBAAyB,GAAS,EAAG,KAAK,gBAE1D,sBAAsB,EAAO,CACzB,KAAM,CAAE,OAAO,MAAM,QAAQ,UAAY,KAAK,iBAAiB,GAC/D,MAAO,CACH,OACA,MACA,QACA,UAGX,gBAAiB,CACV,KAAM,CAAE,kBAAkB,KAAM,CAAE,aAAiB,KAAK,QACxD,GAAI,EAAiB,CACjB,KAAM,GAAM,KAAK,IACjB,EAAI,OACJ,EAAI,YACJ,GAAe,KAAM,KAAK,8BAA8B,KAAK,WAAY,EAAU,KAAK,aAAa,QACrG,EAAI,YACJ,EAAI,UAAY,EAChB,EAAI,OACJ,EAAI,WAGf,UAAW,CACJ,KAAM,GAAM,KAAK,IACX,EAAO,KAAK,QACZ,CAAE,aAAa,OAAO,UAAY,EAClC,EAAa,KAAK,aAAa,OACrC,GAAI,GAAG,EAAQ,EAef,GAdI,EAAK,YAAY,SACjB,GAAgB,KAAM,GAEtB,EAAK,SACL,KAAK,MAAM,QAAQ,CAAC,EAAM,IAAQ,CAC9B,GAAI,IAAU,EAAG,CACb,EAAS,KAAK,8BAA8B,EAAK,OACjD,KAAM,GAAU,KAAK,WAAW,GAC1B,EAAc,EAAK,WAAW,GAC9B,EAAoB,EAAO,WAAW,GAC5C,GAAe,KAAM,EAAa,EAAQ,EAAY,MAI9D,EAAW,QAAS,CAEpB,IADA,EAAI,OACA,EAAI,EAAa,EAAG,GAAK,EAAG,IAAI,CAChC,KAAM,GAAc,EAAW,WAAW,KAAK,qBAAqB,IAC9D,CAAE,QAAQ,aAAe,EAC3B,CAAC,GAAa,CAAC,GAGnB,GAAI,UAAY,EAChB,EAAI,YAAc,EAClB,EAAI,YAAY,EAAY,YAC5B,EAAI,eAAiB,EAAY,iBACjC,EAAS,KAAK,8BAA8B,EAAK,MAAM,QAAU,KAAK,IAAM,KAAK,KACjF,EAAW,KAAK,iBAAiB,EAAG,GACpC,EAAI,YACJ,EAAI,OAAO,KAAK,QAAS,KAAK,SAC9B,EAAI,OAAO,EAAS,EAAG,EAAS,GAChC,EAAI,UAER,EAAI,WAGf,YAAa,EACb,YAAa,CACN,KAAM,GAAM,KAAK,IACX,EAAO,KAAK,QACZ,EAAW,EAAK,MACtB,GAAI,CAAC,EAAS,QACV,OAEJ,KAAM,GAAa,KAAK,cAAc,GACtC,GAAI,GAAQ,EACZ,EAAI,OACJ,EAAI,UAAU,KAAK,QAAS,KAAK,SACjC,EAAI,OAAO,GACX,EAAI,UAAY,SAChB,EAAI,aAAe,SACnB,KAAK,MAAM,QAAQ,CAAC,EAAM,IAAQ,CAC9B,GAAI,IAAU,GAAK,CAAC,EAAK,QACrB,OAEJ,KAAM,GAAc,EAAS,WAAW,KAAK,WAAW,IAClD,EAAW,GAAO,EAAY,MAEpC,GADA,EAAS,KAAK,8BAA8B,KAAK,MAAM,GAAO,OAC1D,EAAY,kBAAmB,CAC/B,EAAI,KAAO,EAAS,OACpB,EAAQ,EAAI,YAAY,EAAK,OAAO,MACpC,EAAI,UAAY,EAAY,cAC5B,KAAM,GAAU,GAAU,EAAY,iBACtC,EAAI,SAAS,CAAC,EAAQ,EAAI,EAAQ,KAAM,CAAC,EAAS,EAAS,KAAO,EAAI,EAAQ,IAAK,EAAQ,EAAQ,MAAO,EAAS,KAAO,EAAQ,QAEtI,GAAW,EAAK,EAAK,MAAO,EAAG,CAAC,EAAQ,EAAU,CAC9C,MAAO,EAAY,UAG3B,EAAI,UAEX,WAAY,GAGb,KAAM,IAAY,CACd,YAAa,CACT,OAAQ,GACR,KAAM,EACN,MAAO,KAEX,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,IAEX,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,IAEX,KAAM,CACF,OAAQ,GACR,KAAM,KACN,MAAO,IAEX,IAAK,CACD,OAAQ,GACR,KAAM,MACN,MAAO,IAEX,KAAM,CACF,OAAQ,GACR,KAAM,OACN,MAAO,GAEX,MAAO,CACH,OAAQ,GACR,KAAM,OACN,MAAO,IAEX,QAAS,CACL,OAAQ,GACR,KAAM,OACN,MAAO,GAEX,KAAM,CACF,OAAQ,GACR,KAAM,SAGP,GAAyB,OAAO,KAAK,IAC3C,YAAgB,EAAG,EAAG,CACnB,MAAO,GAAI,EAEd,YAAe,EAAO,EAAO,CAC1B,GAAI,GAAc,GACd,MAAO,MAEX,KAAM,GAAU,EAAM,SAChB,CAAE,SAAS,QAAQ,cAAgB,EAAM,WAC/C,GAAI,GAAQ,EAOZ,MANI,OAAO,IAAW,YAClB,GAAQ,EAAO,IAEd,GAAe,IAChB,GAAQ,MAAO,IAAW,SAAW,EAAQ,MAAM,EAAQ,GAAU,EAAQ,MAAM,IAEnF,IAAU,KACH,KAEP,IACA,GAAQ,IAAU,QAAW,IAAS,IAAe,IAAe,IAAQ,EAAQ,QAAQ,EAAO,UAAW,GAAc,EAAQ,QAAQ,EAAO,IAEhJ,CAAC,GAEX,YAAmC,EAAS,EAAK,EAAK,EAAU,CAC7D,KAAM,GAAO,GAAM,OACnB,OAAQ,GAAI,GAAM,QAAQ,GAAU,EAAI,EAAO,EAAG,EAAE,EAAE,CAClD,KAAM,GAAW,GAAU,GAAM,IAC3B,EAAS,EAAS,MAAQ,EAAS,MAAQ,OAAO,iBACxD,GAAI,EAAS,QAAU,KAAK,KAAM,GAAM,GAAQ,GAAS,EAAS,QAAU,EACxE,MAAO,IAAM,GAGrB,MAAO,IAAM,EAAO,GAEvB,YAAoC,EAAO,EAAU,EAAS,EAAK,EAAK,CACrE,OAAQ,GAAI,GAAM,OAAS,EAAG,GAAK,GAAM,QAAQ,GAAU,IAAI,CAC3D,KAAM,GAAO,GAAM,GACnB,GAAI,GAAU,GAAM,QAAU,EAAM,SAAS,KAAK,EAAK,EAAK,IAAS,EAAW,EAC5E,MAAO,GAGf,MAAO,IAAM,EAAU,GAAM,QAAQ,GAAW,GAEnD,YAA4B,EAAM,CAC/B,OAAQ,GAAI,GAAM,QAAQ,GAAQ,EAAG,EAAO,GAAM,OAAQ,EAAI,EAAM,EAAE,EAClE,GAAI,GAAU,GAAM,IAAI,OACpB,MAAO,IAAM,GAIxB,YAAiB,EAAO,EAAM,EAAY,CACvC,GAAI,CAAC,EACD,EAAM,GAAQ,WACP,EAAW,OAAQ,CAC1B,KAAM,CAAE,KAAK,MAAQ,GAAQ,EAAY,GACnC,EAAY,EAAW,IAAO,EAAO,EAAW,GAAM,EAAW,GACvE,EAAM,GAAa,IAG1B,YAAuB,EAAO,EAAO,EAAK,EAAW,CAClD,KAAM,GAAU,EAAM,SAChB,EAAQ,CAAC,EAAQ,QAAQ,EAAM,GAAG,MAAO,GACzC,EAAO,EAAM,EAAM,OAAS,GAAG,MACrC,GAAI,GAAO,EACX,IAAI,EAAQ,EAAO,GAAS,EAAM,EAAQ,CAAC,EAAQ,IAAI,EAAO,EAAG,GAC7D,EAAQ,EAAI,GACR,GAAS,GACT,GAAM,GAAO,MAAQ,IAG7B,MAAO,GAEV,YAA6B,EAAO,EAAQ,EAAW,CACpD,KAAM,GAAQ,GACP,EAAM,GACP,EAAO,EAAO,OACpB,GAAI,GAAG,EACP,IAAI,EAAI,EAAG,EAAI,EAAM,EAAE,EACnB,EAAQ,EAAO,GACf,EAAI,GAAS,EACb,EAAM,KAAK,CACP,QACA,MAAO,KAGf,MAAO,KAAS,GAAK,CAAC,EAAY,EAAQ,GAAc,EAAO,EAAO,EAAK,GAE/E,gBAAwB,GAAM,OACnB,IAAK,aACR,UAAW,CAClB,OAAQ,OACD,SAAU,GACV,KAAM,CACF,OAAQ,GACR,KAAM,GACN,MAAO,GACP,WAAY,GACZ,QAAS,cACT,eAAgB,IAEpB,MAAO,CACd,OAAQ,OACG,SAAU,GACV,MAAO,CACH,QAAS,MAIxB,YAAY,EAAM,CACX,MAAM,GACL,KAAK,OAAS,CACX,KAAM,GACN,OAAQ,GACR,IAAK,IAER,KAAK,MAAQ,MACb,KAAK,WAAa,OACnB,KAAK,SAAW,GAChB,KAAK,YAAc,GACnB,KAAK,WAAa,OAEtB,KAAK,EAAW,EAAO,GAAI,CACvB,KAAM,GAAO,EAAU,MAAS,GAAU,KAAO,IAC1C,EAAU,KAAK,SAAW,GAAI,IAAS,MAAM,EAAU,SAAS,MACvE,EAAQ,KAAK,GACb,GAAQ,EAAK,eAAgB,EAAQ,WACrC,KAAK,WAAa,CACd,OAAQ,EAAK,OACb,MAAO,EAAK,MACZ,WAAY,EAAK,YAErB,MAAM,KAAK,GACX,KAAK,YAAc,EAAK,WAE/B,MAAM,EAAK,EAAO,CACX,MAAI,KAAQ,OACD,KAEJ,GAAM,KAAM,GAEvB,cAAe,CACX,MAAM,eACN,KAAK,OAAS,CACV,KAAM,GACN,OAAQ,GACR,IAAK,IAGb,qBAAsB,CAClB,KAAM,GAAU,KAAK,QACf,EAAU,KAAK,SACf,EAAO,EAAQ,KAAK,MAAQ,MAClC,GAAI,CAAE,MAAM,MAAM,aAAa,cAAgB,KAAK,gBAC3D,WAAsB,EAAQ,CACf,CAAC,GAAc,CAAC,MAAM,EAAO,MAC7B,GAAM,KAAK,IAAI,EAAK,EAAO,MAE3B,CAAC,GAAc,CAAC,MAAM,EAAO,MAC7B,GAAM,KAAK,IAAI,EAAK,EAAO,MAG/B,EAAC,GAAc,CAAC,IAChB,GAAa,KAAK,mBACd,GAAQ,SAAW,SAAW,EAAQ,MAAM,SAAW,WACvD,EAAa,KAAK,UAAU,MAGpC,EAAM,GAAe,IAAQ,CAAC,MAAM,GAAO,EAAM,CAAC,EAAQ,QAAQ,KAAK,MAAO,GAC9E,EAAM,GAAe,IAAQ,CAAC,MAAM,GAAO,EAAM,CAAC,EAAQ,MAAM,KAAK,MAAO,GAAQ,EACpF,KAAK,IAAM,KAAK,IAAI,EAAK,EAAM,GAC/B,KAAK,IAAM,KAAK,IAAI,EAAM,EAAG,GAEpC,iBAAkB,CACX,KAAM,GAAM,KAAK,qBACjB,GAAI,GAAM,OAAO,kBACb,EAAM,OAAO,kBACjB,MAAI,GAAI,QACJ,GAAM,EAAI,GACV,EAAM,EAAI,EAAI,OAAS,IAEpB,CACH,MACA,OAGX,YAAa,CACN,KAAM,GAAU,KAAK,QACf,EAAW,EAAQ,KACnB,EAAW,EAAQ,MACnB,EAAa,EAAS,SAAW,SAAW,KAAK,qBAAuB,KAAK,YAC/E,EAAQ,SAAW,SAAW,EAAW,QACzC,MAAK,IAAM,KAAK,UAAY,EAAW,GACvC,KAAK,IAAM,KAAK,UAAY,EAAW,EAAW,OAAS,IAE/D,KAAM,GAAM,KAAK,IACX,EAAM,KAAK,IACX,EAAQ,GAAe,EAAY,EAAK,GAC9C,YAAK,MAAQ,EAAS,MAAS,GAAS,SAAW,GAA0B,EAAS,QAAS,KAAK,IAAK,KAAK,IAAK,KAAK,kBAAkB,IAAQ,GAA2B,KAAM,EAAM,OAAQ,EAAS,QAAS,KAAK,IAAK,KAAK,MAClO,KAAK,WAAa,CAAC,EAAS,MAAM,SAAW,KAAK,QAAU,OAAS,OAAY,GAAmB,KAAK,OACzG,KAAK,YAAY,GACb,EAAQ,SACR,EAAM,UAEH,GAAoB,KAAM,EAAO,KAAK,YAEjD,eAAgB,CACR,KAAK,QAAQ,qBACb,KAAK,YAAY,KAAK,MAAM,IAAK,GAAO,CAAC,EAAK,QAGzD,YAAY,EAAa,GAAI,CACtB,GAAI,GAAQ,EACR,EAAM,EACN,EAAO,EACP,KAAK,QAAQ,QAAU,EAAW,QAClC,GAAQ,KAAK,mBAAmB,EAAW,IACvC,EAAW,SAAW,EACtB,EAAQ,EAAI,EAEZ,EAAS,MAAK,mBAAmB,EAAW,IAAM,GAAS,EAE/D,EAAO,KAAK,mBAAmB,EAAW,EAAW,OAAS,IAC1D,EAAW,SAAW,EACtB,EAAM,EAEN,EAAO,GAAO,KAAK,mBAAmB,EAAW,EAAW,OAAS,KAAO,GAGpF,KAAM,GAAQ,EAAW,OAAS,EAAI,GAAM,IAC5C,EAAQ,GAAY,EAAO,EAAG,GAC9B,EAAM,GAAY,EAAK,EAAG,GAC1B,KAAK,SAAW,CACZ,QACA,MACA,OAAQ,EAAK,GAAQ,EAAI,IAGpC,WAAY,CACL,KAAM,GAAU,KAAK,SACf,EAAM,KAAK,IACX,EAAM,KAAK,IACX,EAAU,KAAK,QACf,EAAW,EAAQ,KACnB,EAAQ,EAAS,MAAQ,GAA0B,EAAS,QAAS,EAAK,EAAK,KAAK,kBAAkB,IACtG,EAAW,GAAe,EAAQ,MAAM,SAAU,GAClD,EAAU,IAAU,OAAS,EAAS,WAAa,GACnD,EAAa,GAAS,IAAY,IAAY,GAC9C,EAAQ,GACd,GAAI,GAAQ,EACR,EAAM,EAKV,GAJI,GACA,GAAQ,CAAC,EAAQ,QAAQ,EAAO,UAAW,IAE/C,EAAQ,CAAC,EAAQ,QAAQ,EAAO,EAAa,MAAQ,GACjD,EAAQ,KAAK,EAAK,EAAK,GAAS,IAAS,EACzC,KAAM,IAAI,OAAM,EAAM,QAAU,EAAM,uCAAyC,EAAW,IAAM,GAEpG,KAAM,GAAa,EAAQ,MAAM,SAAW,QAAU,KAAK,oBAC3D,IAAI,EAAO,EAAO,EAAQ,EAAG,EAAO,EAAK,EAAO,CAAC,EAAQ,IAAI,EAAM,EAAU,GAAQ,IACjF,GAAQ,EAAO,EAAM,GAEzB,MAAI,KAAS,GAAO,EAAQ,SAAW,SAAW,IAAU,IACxD,GAAQ,EAAO,EAAM,GAElB,OAAO,KAAK,GAAO,KAAK,CAAC,EAAG,IAAI,EAAI,GAAG,IAAK,GAAI,CAAC,GAE/D,iBAAiB,EAAO,CACjB,KAAM,GAAU,KAAK,SACf,EAAW,KAAK,QAAQ,KAC9B,MAAI,GAAS,cACF,EAAQ,OAAO,EAAO,EAAS,eAEnC,EAAQ,OAAO,EAAO,EAAS,eAAe,UAE5D,OAAO,EAAO,EAAQ,CAEf,KAAM,GAAU,KADK,QACG,KAAK,eACvB,EAAO,KAAK,MACZ,EAAM,GAAU,EAAQ,GAC9B,MAAO,MAAK,SAAS,OAAO,EAAO,GAE1C,oBAAoB,EAAM,EAAO,EAAO,EAAQ,CACzC,KAAM,GAAU,KAAK,QACf,EAAY,EAAQ,MAAM,SAChC,GAAI,EACA,MAAO,IAAS,EAAW,CACvB,EACA,EACA,GACD,MAEP,KAAM,GAAU,EAAQ,KAAK,eACvB,EAAO,KAAK,MACZ,EAAY,KAAK,WACjB,EAAc,GAAQ,EAAQ,GAC9B,EAAc,GAAa,EAAQ,GACnC,EAAO,EAAM,GACb,EAAQ,GAAa,GAAe,GAAQ,EAAK,MACvD,MAAO,MAAK,SAAS,OAAO,EAAM,GAAW,GAAQ,EAAc,IAE1E,mBAAmB,EAAO,CACnB,GAAI,GAAG,EAAM,EACb,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EACxC,EAAO,EAAM,GACb,EAAK,MAAQ,KAAK,oBAAoB,EAAK,MAAO,EAAG,GAGhE,mBAAmB,EAAO,CACnB,MAAO,KAAU,KAAO,IAAO,GAAQ,KAAK,KAAQ,MAAK,IAAM,KAAK,KAE3E,iBAAiB,EAAO,CACjB,KAAM,GAAU,KAAK,SACf,EAAM,KAAK,mBAAmB,GACpC,MAAO,MAAK,mBAAoB,GAAQ,MAAQ,GAAO,EAAQ,QAEtE,iBAAiB,EAAO,CACjB,KAAM,GAAU,KAAK,SACf,EAAM,KAAK,mBAAmB,GAAS,EAAQ,OAAS,EAAQ,IACtE,MAAO,MAAK,IAAM,EAAO,MAAK,IAAM,KAAK,KAEhD,cAAc,EAAO,CACd,KAAM,GAAY,KAAK,QAAQ,MACzB,EAAiB,KAAK,IAAI,YAAY,GAAO,MAC7C,EAAQ,GAAU,KAAK,eAAiB,EAAU,YAAc,EAAU,aAC1E,EAAc,KAAK,IAAI,GACvB,EAAc,KAAK,IAAI,GACvB,EAAe,KAAK,wBAAwB,GAAG,KACrD,MAAO,CACH,EAAG,EAAiB,EAAc,EAAe,EACjD,EAAG,EAAiB,EAAc,EAAe,GAG5D,kBAAkB,EAAa,CACxB,KAAM,GAAW,KAAK,QAAQ,KACxB,EAAiB,EAAS,eAC1B,EAAS,EAAe,EAAS,OAAS,EAAe,YACzD,EAAe,KAAK,oBAAoB,EAAa,EAAG,GAAoB,KAAM,CACpF,GACD,KAAK,YAAa,GACf,EAAO,KAAK,cAAc,GAC1B,EAAW,KAAK,MAAM,KAAK,eAAiB,KAAK,MAAQ,EAAK,EAAI,KAAK,OAAS,EAAK,GAAK,EAChG,MAAO,GAAW,EAAI,EAAW,EAExC,mBAAoB,CACb,GAAI,GAAa,KAAK,OAAO,MAAQ,GACjC,EAAG,EACP,GAAI,EAAW,OACX,MAAO,GAEX,KAAM,GAAQ,KAAK,0BACnB,GAAI,KAAK,aAAe,EAAM,OAC1B,MAAO,MAAK,OAAO,KAAO,EAAM,GAAG,WAAW,mBAAmB,MAErE,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EACxC,EAAa,EAAW,OAAO,EAAM,GAAG,WAAW,mBAAmB,OAE1E,MAAO,MAAK,OAAO,KAAO,KAAK,UAAU,GAEhD,oBAAqB,CACd,KAAM,GAAa,KAAK,OAAO,QAAU,GACzC,GAAI,GAAG,EACP,GAAI,EAAW,OACX,MAAO,GAEX,KAAM,GAAS,KAAK,YACpB,IAAI,EAAI,EAAG,EAAO,EAAO,OAAQ,EAAI,EAAM,EAAE,EACzC,EAAW,KAAK,GAAM,KAAM,EAAO,KAEvC,MAAO,MAAK,OAAO,OAAS,KAAK,YAAc,EAAa,KAAK,UAAU,GAElF,UAAU,EAAQ,CACX,MAAO,IAAa,EAAO,KAAK,MAIxC,YAAqB,EAAO,EAAK,EAAS,CACtC,GAAI,GAAK,EACL,EAAK,EAAM,OAAS,EACpB,EAAY,EAAY,EAAY,EACpC,EACI,IAAO,EAAM,GAAI,KAAO,GAAO,EAAM,GAAI,KACxC,EAAE,KAAK,MAAQ,GAAa,EAAO,MAAO,IAE9C,CAAE,IAAK,EAAa,KAAM,GAAgB,EAAM,GAChD,CAAE,IAAK,EAAa,KAAM,GAAgB,EAAM,IAE7C,IAAO,EAAM,GAAI,MAAQ,GAAO,EAAM,GAAI,MACzC,EAAE,KAAK,MAAQ,GAAa,EAAO,OAAQ,IAE/C,CAAE,KAAM,EAAa,IAAK,GAAgB,EAAM,GAChD,CAAE,KAAM,EAAa,IAAK,GAAgB,EAAM,IAErD,KAAM,GAAO,EAAa,EAC1B,MAAO,GAAO,EAAc,GAAa,GAAe,GAAM,GAAc,EAAO,EAEvF,gBAA8B,GAAU,OAC7B,IAAK,mBACR,UAAW,GAAU,SAC5B,YAAY,EAAM,CACX,MAAM,GACL,KAAK,OAAS,GACd,KAAK,QAAU,OACf,KAAK,YAAc,OAE3B,aAAc,CACP,KAAM,GAAa,KAAK,yBAClB,EAAQ,KAAK,OAAS,KAAK,iBAAiB,GAClD,KAAK,QAAU,GAAY,EAAO,KAAK,KACvC,KAAK,YAAc,GAAY,EAAO,KAAK,KAAO,KAAK,QACvD,MAAM,YAAY,GAEzB,iBAAiB,EAAY,CACtB,KAAM,CAAE,MAAM,OAAS,KACjB,EAAQ,GACR,EAAQ,GACd,GAAI,GAAG,EAAM,EAAM,EAAM,EACzB,IAAI,EAAI,EAAG,EAAO,EAAW,OAAQ,EAAI,EAAM,EAAE,EAC7C,EAAO,EAAW,GACd,GAAQ,GAAO,GAAQ,GACvB,EAAM,KAAK,GAGnB,GAAI,EAAM,OAAS,EACf,MAAO,CACH,CACI,KAAM,EACN,IAAK,GAET,CACI,KAAM,EACN,IAAK,IAIjB,IAAI,EAAI,EAAG,EAAO,EAAM,OAAQ,EAAI,EAAM,EAAE,EACxC,EAAO,EAAM,EAAI,GACjB,EAAO,EAAM,EAAI,GACjB,EAAO,EAAM,GACT,KAAK,MAAO,GAAO,GAAQ,KAAO,GAClC,EAAM,KAAK,CACP,KAAM,EACN,IAAK,EAAK,GAAO,KAI7B,MAAO,GAEd,wBAAyB,CAClB,GAAI,GAAa,KAAK,OAAO,KAAO,GACpC,GAAI,EAAW,OACX,MAAO,GAEX,KAAM,GAAO,KAAK,oBACZ,EAAQ,KAAK,qBACnB,MAAI,GAAK,QAAU,EAAM,OACrB,EAAa,KAAK,UAAU,EAAK,OAAO,IAExC,EAAa,EAAK,OAAS,EAAO,EAEtC,EAAa,KAAK,OAAO,IAAM,EACxB,EAEd,mBAAmB,EAAO,CACnB,MAAQ,IAAY,KAAK,OAAQ,GAAS,KAAK,SAAW,KAAK,YAEtE,iBAAiB,EAAO,CACjB,KAAM,GAAU,KAAK,SACf,EAAU,KAAK,mBAAmB,GAAS,EAAQ,OAAS,EAAQ,IAC1E,MAAO,IAAY,KAAK,OAAQ,EAAU,KAAK,YAAc,KAAK,QAAS,KAInF,GAAI,IAAsB,OAAO,OAAO,CACxC,UAAW,KACX,cAAe,GACf,YAAa,GACb,iBAAkB,GAClB,kBAAmB,GACnB,UAAW,GACX,gBAAiB,KAGjB,KAAM,IAAgB,CAClB,GACA,GACA,GACA,ICzpWJ,YAAe,GAAG,IAGlB,OAAe,KCFf,KAAM,IAAsB,QAC5B,YAAsB,EAAK,EAAO,CAC1B,MAAO,IAAQ,WACf,EAAI,GACG,GACP,GAAI,QAAU,GAGtB,YAAoB,EAAO,EAAa,CACpC,KAAM,GAAU,EAAM,QAClB,GAAW,GACX,OAAO,OAAO,EAAS,GAG/B,YAAmB,EAAa,EAAY,CACxC,EAAY,OAAS,EAEzB,YAAqB,EAAa,EAAc,CAC5C,GAAI,GAAe,UAAU,OAAS,GAAK,UAAU,KAAO,OAAS,UAAU,GAAK,GACpF,KAAM,GAAgB,GACtB,EAAY,SAAW,EAAa,IAAK,GAAc,CAEnD,KAAM,GAAiB,EAAY,SAAS,KAAM,GAAU,EAAQ,KAAkB,EAAY,IAElG,MAAI,CAAC,GAAkB,CAAC,EAAY,MAAQ,EAAc,SAAS,GACxD,IACA,GAGX,GAAc,KAAK,GACnB,OAAO,OAAO,EAAgB,GACvB,KAGf,YAAmB,EAAM,CACrB,GAAI,GAAe,UAAU,OAAS,GAAK,UAAU,KAAO,OAAS,UAAU,GAAK,GACpF,KAAM,GAAW,CACb,OAAQ,GACR,SAAU,IAEd,UAAU,EAAU,EAAK,QACzB,GAAY,EAAU,EAAK,SAAU,GAC9B,EAOP,YAA2B,EAAO,EAAO,CACzC,MAAO,GAAM,0BAA0B,EAAM,YAAa,UAAW,CACjE,UAAW,IACZ,IAOH,YAA2B,EAAO,EAAO,CACzC,MAAO,GAAM,0BAA0B,EAAM,YAAa,UAAW,CACjE,UAAW,IACZ,IAOH,YAA4B,EAAO,EAAO,CAC1C,MAAO,GAAM,0BAA0B,EAAM,YAAa,QAAS,CAC/D,UAAW,IACZ,IAGP,YAAwB,EAAO,EAAK,CAChC,KAAM,CAAE,SAAQ,IAAM,QAAO,IAAM,SAAQ,GAAQ,eAAe,OAAO,OAAO,UAAU,UAAS,GAAK,kBAAkB,gBAAgB,GAAgB,EACpJ,EAAY,aAAO,MACnB,EAAW,eACX,EAAc,IAAI,CAChB,CAAC,EAAU,SACf,GAAS,QAAU,GAAI,IAAQ,EAAU,QAAS,CAC9C,OACA,KAAM,GAAU,EAAM,GACtB,QAAS,GAAW,IACb,GAEP,YAEJ,GAAa,EAAK,EAAS,WAEzB,EAAe,IAAI,CACrB,GAAa,EAAK,MACd,EAAS,SACT,GAAS,QAAQ,UACjB,EAAS,QAAU,OAG3B,sBAAU,IAAI,CACN,CAAC,GAAU,EAAS,SAAW,GAC/B,GAAW,EAAS,QAAS,IAElC,CACC,EACA,IAEJ,gBAAU,IAAI,CACN,CAAC,GAAU,EAAS,SACpB,GAAU,EAAS,QAAQ,OAAO,KAAM,EAAK,SAElD,CACC,EACA,EAAK,SAET,gBAAU,IAAI,CACN,CAAC,GAAU,EAAS,SAAW,EAAK,UACpC,GAAY,EAAS,QAAQ,OAAO,KAAM,EAAK,SAAU,IAE9D,CACC,EACA,EAAK,WAET,gBAAU,IAAI,CACN,CAAC,EAAS,SACd,CAAI,EACA,KACA,WAAW,IAEX,EAAS,QAAQ,OAAO,KAE7B,CACC,EACA,EACA,EAAK,OACL,EAAK,SACL,IAEJ,gBAAU,IAAI,CACN,CAAC,EAAS,SACd,KACA,WAAW,KACZ,CACC,IAEJ,gBAAU,IACN,KACO,IAAI,KACZ,IACkB,gBAAoB,SAAU,OAAO,OAAO,CAC7D,IAAK,EACL,KAAM,MACN,OAAQ,EACR,MAAO,GACR,GAAc,GAErB,KAAM,IAAsB,iBAAW,IAEvC,YAA0B,EAAM,EAAe,CAC3C,mBAAiB,GACI,iBAAW,CAAC,EAAO,IAAoB,gBAAoB,GAAO,OAAO,OAAO,GAAI,EAAO,CACxG,IAAK,EACL,KAAM,MAGlB,KAAM,IAAuB,GAAiB,OAAQ,IAChD,GAAsB,KACtB,GAAwB,KACxB,GAA2B,KAC3B,GAA4B,KAC5B,GAAyB,KACzB,GAAsB,KACtB,GAA0B,K,4BC9K5B,GAAuB,CACzB,iBAAkB,CAChB,IAAK,qBACL,MAAO,+BAET,SAAU,CACR,IAAK,WACL,MAAO,qBAET,YAAa,gBACb,iBAAkB,CAChB,IAAK,qBACL,MAAO,+BAET,SAAU,CACR,IAAK,WACL,MAAO,qBAET,YAAa,CACX,IAAK,eACL,MAAO,yBAET,OAAQ,CACN,IAAK,SACL,MAAO,mBAET,MAAO,CACL,IAAK,QACL,MAAO,kBAET,YAAa,CACX,IAAK,eACL,MAAO,yBAET,OAAQ,CACN,IAAK,SACL,MAAO,mBAET,aAAc,CACZ,IAAK,gBACL,MAAO,0BAET,QAAS,CACP,IAAK,UACL,MAAO,oBAET,YAAa,CACX,IAAK,eACL,MAAO,yBAET,OAAQ,CACN,IAAK,SACL,MAAO,mBAET,WAAY,CACV,IAAK,cACL,MAAO,wBAET,aAAc,CACZ,IAAK,gBACL,MAAO,2BAGP,GAAiB,SAAwB,EAAO,EAAO,EAAS,CAClE,GAAI,GACA,EAAa,GAAqB,GAQtC,MAPI,OAAO,IAAe,SACxB,EAAS,EACA,IAAU,EACnB,EAAS,EAAW,IAEpB,EAAS,EAAW,MAAM,QAAQ,YAAa,EAAM,YAEnD,GAAY,MAA8B,EAAQ,UAChD,EAAQ,YAAc,EAAQ,WAAa,EACtC,MAAQ,EAER,EAAS,OAGb,GAET,GAAe,GClFA,YAA2B,EAAM,CAC9C,MAAO,WAAY,CACjB,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAE9E,EAAQ,EAAQ,MAAQ,OAAO,EAAQ,OAAS,EAAK,aACrD,EAAS,EAAK,QAAQ,IAAU,EAAK,QAAQ,EAAK,cACtD,MAAO,ICLX,GAAI,IAAc,CAChB,KAAM,mBACN,KAAM,aACN,OAAQ,WACR,MAAO,cAEL,GAAc,CAChB,KAAM,iBACN,KAAM,cACN,OAAQ,YACR,MAAO,UAEL,GAAkB,CACpB,KAAM,yBACN,KAAM,yBACN,OAAQ,qBACR,MAAO,sBAEL,GAAa,CACf,KAAM,GAAkB,CACtB,QAAS,GACT,aAAc,SAEhB,KAAM,GAAkB,CACtB,QAAS,GACT,aAAc,SAEhB,SAAU,GAAkB,CAC1B,QAAS,GACT,aAAc,UAGlB,GAAe,GCjCX,GAAuB,CACzB,SAAU,qBACV,UAAW,mBACX,MAAO,eACP,SAAU,kBACV,SAAU,cACV,MAAO,KAEL,GAAiB,SAAwB,EAAO,EAAO,EAAW,EAAU,CAC9E,MAAO,IAAqB,IAE9B,GAAe,GCXA,YAAyB,EAAM,CAC5C,MAAO,UAAU,EAAY,EAAS,CACpC,GAAI,GAAU,GAAY,MAA8B,EAAQ,QAAU,OAAO,EAAQ,SAAW,aAChG,EACJ,GAAI,IAAY,cAAgB,EAAK,iBAAkB,CACrD,GAAI,GAAe,EAAK,wBAA0B,EAAK,aACnD,EAAQ,GAAY,MAA8B,EAAQ,MAAQ,OAAO,EAAQ,OAAS,EAC9F,EAAc,EAAK,iBAAiB,IAAU,EAAK,iBAAiB,OAC/D,CACL,GAAI,GAAgB,EAAK,aACrB,EAAS,GAAY,MAA8B,EAAQ,MAAQ,OAAO,EAAQ,OAAS,EAAK,aACpG,EAAc,EAAK,OAAO,IAAW,EAAK,OAAO,GAEnD,GAAI,GAAQ,EAAK,iBAAmB,EAAK,iBAAiB,GAAc,EAExE,MAAO,GAAY,ICdvB,GAAI,IAAY,CACd,OAAQ,CAAC,IAAK,KACd,YAAa,CAAC,KAAM,MACpB,KAAM,CAAC,gBAAiB,gBAEtB,GAAgB,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxB,YAAa,CAAC,KAAM,KAAM,KAAM,MAChC,KAAM,CAAC,cAAe,cAAe,cAAe,gBAOlD,GAAc,CAChB,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChE,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3F,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAEnH,GAAY,CACd,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvC,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5C,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxD,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAEvE,GAAkB,CACpB,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,SAET,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,SAET,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,UACT,UAAW,YACX,QAAS,UACT,MAAO,UAGP,GAA4B,CAC9B,OAAQ,CACN,GAAI,IACJ,GAAI,IACJ,SAAU,KACV,KAAM,IACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,YAET,YAAa,CACX,GAAI,KACJ,GAAI,KACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,YAET,KAAM,CACJ,GAAI,OACJ,GAAI,OACJ,SAAU,WACV,KAAM,OACN,QAAS,iBACT,UAAW,mBACX,QAAS,iBACT,MAAO,aAGP,GAAgB,SAAuB,EAAa,EAAU,CAChE,GAAI,GAAS,OAAO,GAShB,EAAS,EAAS,IACtB,GAAI,EAAS,IAAM,EAAS,GAC1B,OAAQ,EAAS,QACV,GACH,MAAO,GAAS,SACb,GACH,MAAO,GAAS,SACb,GACH,MAAO,GAAS,KAGtB,MAAO,GAAS,MAEd,GAAW,CACb,cAAe,GACf,IAAK,GAAgB,CACnB,OAAQ,GACR,aAAc,SAEhB,QAAS,GAAgB,CACvB,OAAQ,GACR,aAAc,OACd,iBAAkB,SAA0B,EAAS,CACnD,MAAO,GAAU,KAGrB,MAAO,GAAgB,CACrB,OAAQ,GACR,aAAc,SAEhB,IAAK,GAAgB,CACnB,OAAQ,GACR,aAAc,SAEhB,UAAW,GAAgB,CACzB,OAAQ,GACR,aAAc,OACd,iBAAkB,GAClB,uBAAwB,UAG5B,GAAe,GC9IA,YAAsB,EAAM,CACzC,MAAO,UAAU,EAAQ,CACvB,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC9E,EAAQ,EAAQ,MAChB,EAAe,GAAS,EAAK,cAAc,IAAU,EAAK,cAAc,EAAK,mBAC7E,EAAc,EAAO,MAAM,GAC/B,GAAI,CAAC,EACH,MAAO,MAET,GAAI,GAAgB,EAAY,GAC5B,EAAgB,GAAS,EAAK,cAAc,IAAU,EAAK,cAAc,EAAK,mBAC9E,EAAM,MAAM,QAAQ,GAAiB,GAAU,EAAe,SAAU,EAAS,CACnF,MAAO,GAAQ,KAAK,KACjB,GAAQ,EAAe,SAAU,EAAS,CAC7C,MAAO,GAAQ,KAAK,KAElB,EACJ,EAAQ,EAAK,cAAgB,EAAK,cAAc,GAAO,EACvD,EAAQ,EAAQ,cAAgB,EAAQ,cAAc,GAAS,EAC/D,GAAI,GAAO,EAAO,MAAM,EAAc,QACtC,MAAO,CACL,MAAO,EACP,KAAM,IAIZ,YAAiB,EAAQ,EAAW,CAClC,OAAS,KAAO,GACd,GAAI,EAAO,eAAe,IAAQ,EAAU,EAAO,IACjD,MAAO,GAKb,YAAmB,EAAO,EAAW,CACnC,OAAS,GAAM,EAAG,EAAM,EAAM,OAAQ,IACpC,GAAI,EAAU,EAAM,IAClB,MAAO,GCrCE,YAA6B,EAAM,CAChD,MAAO,UAAU,EAAQ,CACvB,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAC9E,EAAc,EAAO,MAAM,EAAK,cACpC,GAAI,CAAC,EAAa,MAAO,MACzB,GAAI,GAAgB,EAAY,GAC5B,EAAc,EAAO,MAAM,EAAK,cACpC,GAAI,CAAC,EAAa,MAAO,MACzB,GAAI,GAAQ,EAAK,cAAgB,EAAK,cAAc,EAAY,IAAM,EAAY,GAClF,EAAQ,EAAQ,cAAgB,EAAQ,cAAc,GAAS,EAC/D,GAAI,GAAO,EAAO,MAAM,EAAc,QACtC,MAAO,CACL,MAAO,EACP,KAAM,ICXZ,GAAI,IAA4B,wBAC5B,GAA4B,OAC5B,GAAmB,CACrB,OAAQ,UACR,YAAa,6DACb,KAAM,8DAEJ,GAAmB,CACrB,IAAK,CAAC,MAAO,YAEX,GAAuB,CACzB,OAAQ,WACR,YAAa,YACb,KAAM,kCAEJ,GAAuB,CACzB,IAAK,CAAC,KAAM,KAAM,KAAM,OAEtB,GAAqB,CACvB,OAAQ,eACR,YAAa,sDACb,KAAM,6FAEJ,GAAqB,CACvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtF,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QAE5F,GAAmB,CACrB,OAAQ,YACR,MAAO,2BACP,YAAa,kCACb,KAAM,gEAEJ,GAAmB,CACrB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnD,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAEjD,GAAyB,CAC3B,OAAQ,6DACR,IAAK,kFAEH,GAAyB,CAC3B,IAAK,CACH,GAAI,MACJ,GAAI,MACJ,SAAU,OACV,KAAM,OACN,QAAS,WACT,UAAW,aACX,QAAS,WACT,MAAO,WAGP,GAAQ,CACV,cAAe,GAAoB,CACjC,aAAc,GACd,aAAc,GACd,cAAe,SAAuB,EAAO,CAC3C,MAAO,UAAS,EAAO,OAG3B,IAAK,GAAa,CAChB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,QAAS,GAAa,CACpB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,MACnB,cAAe,SAAuB,EAAO,CAC3C,MAAO,GAAQ,KAGnB,MAAO,GAAa,CAClB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,IAAK,GAAa,CAChB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,UAAW,GAAa,CACtB,cAAe,GACf,kBAAmB,MACnB,cAAe,GACf,kBAAmB,SAGvB,GAAe,GCnFX,GAAS,CACX,KAAM,QACN,eAAgB,GAChB,WAAY,GACZ,eAAgB,GAChB,SAAU,GACV,MAAO,GACP,QAAS,CACP,aAAc,EACd,sBAAuB,IAG3B,GAAe,GC1BX,GAAuB,CACzB,iBAAkB,CAChB,IAAK,CACH,QAAS,gCACT,KAAM,2CACN,OAAQ,oCAEV,IAAK,CACH,QAAS,0CACT,KAAM,sDACN,OAAQ,8CAEV,KAAM,CACJ,QAAS,yCACT,KAAM,sDACN,OAAQ,8CAGZ,SAAU,CACR,IAAK,CACH,QAAS,UACT,KAAM,qBACN,OAAQ,cAEV,IAAK,CACH,QAAS,oBACT,KAAM,gCACN,OAAQ,wBAEV,KAAM,CACJ,QAAS,mBACT,KAAM,gCACN,OAAQ,wBAGZ,YAAa,CACX,KAAM,QACN,MAAO,CACL,QAAS,kBACT,KAAM,6BACN,OAAQ,uBAGZ,iBAAkB,CAChB,IAAK,CACH,QAAS,+BACT,KAAM,0CACN,OAAQ,mCAEV,IAAK,CACH,QAAS,yCACT,KAAM,qDACN,OAAQ,6CAEV,KAAM,CACJ,QAAS,wCACT,KAAM,qDACN,OAAQ,6CAGZ,SAAU,CACR,IAAK,CACH,QAAS,SACT,KAAM,oBACN,OAAQ,aAEV,IAAK,CACH,QAAS,mBACT,KAAM,+BACN,OAAQ,uBAEV,KAAM,CACJ,QAAS,kBACT,KAAM,+BACN,OAAQ,uBAGZ,YAAa,CACX,IAAK,CACH,QAAS,kCACT,KAAM,6CACN,OAAQ,sCAEV,IAAK,CACH,QAAS,4CACT,KAAM,wDACN,OAAQ,gDAEV,KAAM,CACJ,QAAS,2CACT,KAAM,wDACN,OAAQ,gDAGZ,OAAQ,CACN,IAAK,CACH,QAAS,SACT,KAAM,oBACN,OAAQ,aAEV,IAAK,CACH,QAAS,mBACT,KAAM,+BACN,OAAQ,uBAEV,KAAM,CACJ,QAAS,kBACT,KAAM,+BACN,OAAQ,uBAGZ,MAAO,CACL,IAAK,CACH,QAAS,MACT,KAAM,iBACN,OAAQ,UAEV,IAAK,CACH,QAAS,gBACT,KAAM,0BACN,OAAQ,oBAEV,KAAM,CACJ,QAAS,mBACT,KAAM,0BACN,OAAQ,wBAGZ,YAAa,CACX,IAAK,CACH,QAAS,oCACT,KAAM,+CACN,OAAQ,wCAEV,IAAK,CACH,QAAS,8CACT,KAAM,wDACN,OAAQ,kDAEV,KAAM,CACJ,QAAS,mDACT,KAAM,wDACN,OAAQ,wDAGZ,OAAQ,CACN,IAAK,CACH,QAAS,WACT,KAAM,sBACN,OAAQ,eAEV,IAAK,CACH,QAAS,qBACT,KAAM,+BACN,OAAQ,yBAEV,KAAM,CACJ,QAAS,0BACT,KAAM,+BACN,OAAQ,+BAGZ,aAAc,CACZ,IAAK,CACH,QAAS,yCACT,KAAM,qDACN,OAAQ,6CAEV,IAAK,CACH,QAAS,oDACT,KAAM,8DACN,OAAQ,wDAEV,KAAM,CACJ,QAAS,yDACT,KAAM,8DACN,OAAQ,8DAGZ,QAAS,CACP,IAAK,CACH,QAAS,gBACT,KAAM,4BACN,OAAQ,oBAEV,IAAK,CACH,QAAS,2BACT,KAAM,qCACN,OAAQ,+BAEV,KAAM,CACJ,QAAS,gCACT,KAAM,qCACN,OAAQ,qCAGZ,YAAa,CACX,IAAK,CACH,QAAS,+BACT,KAAM,2CACN,OAAQ,mCAEV,IAAK,CACH,QAAS,0CACT,KAAM,oDACN,OAAQ,8CAEV,KAAM,CACJ,QAAS,+CACT,KAAM,oDACN,OAAQ,oDAGZ,OAAQ,CACN,IAAK,CACH,QAAS,MACT,KAAM,kBACN,OAAQ,UAEV,IAAK,CACH,QAAS,iBACT,KAAM,2BACN,OAAQ,qBAEV,KAAM,CACJ,QAAS,sBACT,KAAM,2BACN,OAAQ,2BAGZ,WAAY,CACV,IAAK,CACH,QAAS,uBACT,KAAM,mCACN,OAAQ,2BAEV,IAAK,CACH,QAAS,kCACT,KAAM,4CACN,OAAQ,sCAEV,KAAM,CACJ,QAAS,uCACT,KAAM,4CACN,OAAQ,4CAGZ,aAAc,CACZ,IAAK,CACH,QAAS,YACT,KAAM,wBACN,OAAQ,gBAEV,IAAK,CACH,QAAS,uBACT,KAAM,iCACN,OAAQ,2BAEV,KAAM,CACJ,QAAS,4BACT,KAAM,iCACN,OAAQ,kCAIV,GAAiB,SAAwB,EAAO,EAAO,EAAS,CAClE,GAAI,GACA,EAAa,GAAqB,GAGlC,EAAW,OAAS,QACtB,EAAe,EAAW,MACjB,IAAU,EACnB,EAAe,EAAW,IACjB,EAAQ,GAAK,EAAQ,EAC9B,EAAe,EAAW,IAE1B,EAAe,EAAW,KAI5B,GAAI,GAAe,IAAY,KAA6B,OAAS,EAAQ,aAAe,GACxF,EAAa,GAAY,KAA6B,OAAS,EAAQ,WACvE,EACJ,MAAI,IAAe,IAAe,GAChC,EAAa,EAAa,KACjB,GAAe,IAAe,EACvC,EAAa,EAAa,OAE1B,EAAa,EAAa,QAErB,EAAW,QAAQ,YAAa,OAAO,KAEhD,GAAe,GCpSX,GAAc,CAChB,KAAM,qBACN,KAAM,eACN,OAAQ,aACR,MAAO,cAEL,GAAc,CAChB,KAAM,eACN,KAAM,YACN,OAAQ,UACR,MAAO,QAEL,GAAkB,CACpB,KAAM,wBACN,KAAM,wBACN,OAAQ,qBACR,MAAO,sBAEL,GAAa,CACf,KAAM,GAAkB,CACtB,QAAS,GACT,aAAc,SAEhB,KAAM,GAAkB,CACtB,QAAS,GACT,aAAc,SAEhB,SAAU,GAAkB,CAC1B,QAAS,GACT,aAAc,UAGlB,GAAe,GCjCX,GAAqB,CAAC,cAAU,kBAAW,cAAS,cAAU,eAAW,WAAS,UAClF,GAAuB,CACzB,SAAU,4BACV,UAAW,mBACX,MAAO,aACP,SAAU,iBACV,SAAU,SAAkB,EAAM,CAChC,GAAI,GAAM,EAAK,YACf,MAAO,MAAQ,GAAmB,GAAO,SAE3C,MAAO,KAEL,GAAiB,SAAwB,EAAO,EAAM,CACxD,GAAI,GAAS,GAAqB,GAClC,MAAI,OAAO,IAAW,WACb,EAAO,GAET,GAET,GAAe,GClBX,GAAY,CACd,OAAQ,CAAC,iBAAa,SACtB,YAAa,CAAC,iBAAa,SAC3B,KAAM,CAAC,0CAAyB,+BAE9B,GAAgB,CAClB,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxB,YAAa,CAAC,uBAAgB,uBAAgB,uBAAgB,wBAC9D,KAAM,CAAC,uBAAgB,uBAAgB,uBAAgB,yBAErD,GAAc,CAChB,OAAQ,CAAC,IAAK,OAAK,IAAK,IAAK,IAAK,SAAK,SAAK,IAAK,IAAK,SAAK,IAAK,KAChE,YAAa,CAAC,MAAO,SAAO,WAAO,MAAO,WAAO,WAAO,WAAO,MAAO,cAAO,cAAO,MAAO,OAC3F,KAAM,CAAC,QAAS,UAAQ,cAAU,QAAS,cAAU,cAAU,gBAAY,QAAS,kBAAQ,gBAAS,WAAY,aAE/G,GAAwB,CAC1B,OAAQ,CAAC,IAAK,OAAK,IAAK,IAAK,IAAK,SAAK,SAAK,IAAK,IAAK,SAAK,IAAK,KAChE,YAAa,CAAC,MAAO,SAAO,WAAO,MAAO,WAAO,WAAO,WAAO,MAAO,cAAO,cAAO,MAAO,OAC3F,KAAM,CAAC,QAAS,WAAS,cAAU,QAAS,cAAU,cAAU,gBAAY,QAAS,kBAAQ,gBAAS,YAAa,aAEjH,GAAY,CACd,OAAQ,CAAC,KAAM,KAAM,QAAM,KAAM,UAAM,QAAM,MAC7C,MAAO,CAAC,KAAM,KAAM,QAAM,KAAM,UAAM,QAAM,MAC5C,YAAa,CAAC,MAAO,MAAO,SAAO,WAAO,WAAO,SAAO,OACxD,KAAM,CAAC,cAAU,kBAAW,cAAS,cAAU,eAAW,WAAS,WAEjE,GAAkB,CACpB,OAAQ,CACN,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,OAET,YAAa,CACX,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,OAET,KAAM,CACJ,GAAI,YACJ,GAAI,YACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,QAGP,GAA4B,CAC9B,OAAQ,CACN,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,OAET,YAAa,CACX,GAAI,OACJ,GAAI,OACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,OAET,KAAM,CACJ,GAAI,YACJ,GAAI,YACJ,SAAU,cACV,KAAM,UACN,QAAS,UACT,UAAW,YACX,QAAS,aACT,MAAO,QAGP,GAAgB,SAAuB,EAAa,EAAU,CAChE,GAAI,GAAS,OAAO,GACpB,MAAO,GAAS,KAEd,GAAW,CACb,cAAe,GACf,IAAK,GAAgB,CACnB,OAAQ,GACR,aAAc,SAEhB,QAAS,GAAgB,CACvB,OAAQ,GACR,aAAc,OACd,iBAAkB,SAA0B,EAAS,CACnD,MAAO,GAAU,KAGrB,MAAO,GAAgB,CACrB,OAAQ,GACR,aAAc,OACd,iBAAkB,GAClB,uBAAwB,SAE1B,IAAK,GAAgB,CACnB,OAAQ,GACR,aAAc,SAEhB,UAAW,GAAgB,CACzB,OAAQ,GACR,aAAc,OACd,iBAAkB,GAClB,uBAAwB,UAG5B,GAAe,GC3HX,GAA4B,aAC5B,GAA4B,OAC5B,GAAmB,CACrB,OAAQ,6DACR,YAAa,6DACb,KAAM,oGAEJ,GAAmB,CACrB,IAAK,CAAC,UAAW,aAEf,GAAuB,CACzB,OAAQ,WACR,YAAa,6BACb,KAAM,8BAEJ,GAAuB,CACzB,IAAK,CAAC,KAAM,KAAM,KAAM,OAEtB,GAAqB,CACvB,OAAQ,qBACR,YAAa,iFACb,KAAM,gMAEJ,GAAqB,CACvB,OAAQ,CAAC,MAAO,SAAU,MAAO,MAAO,MAAO,SAAU,SAAU,MAAO,MAAO,SAAU,MAAO,OAClG,IAAK,CAAC,QAAS,UAAW,WAAY,QAAS,WAAY,qCAAsC,4BAA6B,QAAS,cAAe,cAAe,QAAS,UAE5K,GAAmB,CACrB,OAAQ,eACR,MAAO,oCACP,YAAa,8CACb,KAAM,gFAEJ,GAAmB,CACrB,OAAQ,CAAC,MAAO,MAAO,SAAU,MAAO,SAAU,MAAO,OACzD,IAAK,CAAC,OAAQ,OAAQ,UAAW,OAAQ,UAAW,UAAW,SAE7D,GAAyB,CAC3B,IAAK,+FAEH,GAAyB,CAC3B,IAAK,CACH,GAAI,QACJ,GAAI,QACJ,SAAU,cACV,KAAM,YACN,QAAS,WACT,UAAW,aACX,QAAS,YACT,MAAO,SAGP,GAAQ,CACV,cAAe,GAAoB,CACjC,aAAc,GACd,aAAc,GACd,cAAe,SAAuB,EAAO,CAC3C,MAAO,UAAS,EAAO,OAG3B,IAAK,GAAa,CAChB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,QAAS,GAAa,CACpB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,MACnB,cAAe,SAAuB,EAAO,CAC3C,MAAO,GAAQ,KAGnB,MAAO,GAAa,CAClB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,IAAK,GAAa,CAChB,cAAe,GACf,kBAAmB,OACnB,cAAe,GACf,kBAAmB,QAErB,UAAW,GAAa,CACtB,cAAe,GACf,kBAAmB,MACnB,cAAe,GACf,kBAAmB,SAGvB,GAAe,GCjFX,GAAS,CACX,KAAM,KACN,eAAgB,GAChB,WAAY,GACZ,eAAgB,GAChB,SAAU,GACV,MAAO,GACP,QAAS,CACP,aAAc,EACd,sBAAuB,IAG3B,GAAe,GCPf,YAAe,GAAe,GAAa,GAAc,GAAa,GAAO,GAAS,IAE/E,KAAM,IAAU,CACrB,WAAY,GACZ,oBAAqB,GACrB,OAAQ,QACR,QAAS,CACP,OAAQ,CACN,QAAS,IAEX,MAAO,CACL,QAAS,IAEX,QAAS,CACP,UAAW,CACT,MAAM,EAAS,CACb,GAAI,GAAQ,EAAQ,QAAQ,OAAS,GAErC,MAAI,IACF,IAAS,MAGP,EAAQ,OAAO,IAAM,MACvB,IAAS,KAAK,MAAM,EAAQ,OAAO,EAAI,KAAQ,KAE1C,MAKf,OAAQ,CACN,EAAG,CAAE,QAAS,IACd,EAAG,CACD,OAAQ,KAGZ,SAAU,CACR,KAAM,CAAE,YAAa,KACrB,MAAO,CACL,OAAQ,OAoXd,OA/WoD,CAAC,CACnD,cACA,cACA,eACA,eACA,eACI,CACJ,KAAM,GAAO,EAAU,MAAM,EAAG,IAC1B,EAAY,GAAI,MAAK,GACrB,EAAiB,GAAI,MAAK,GAC1B,EAAW,GAAI,MAAK,EAAe,YAAY,EAAe,cAAgB,IAC9E,EAAQ,GAAI,MAEZ,CAAC,EAAc,GAAmB,eAAS,IAC3C,CAAC,EAAc,GAAmB,eAAS,IAC3C,CAAC,EAAkB,GAAuB,eAAS,GACnD,CAAC,EAAgB,GAAqB,eAAS,GAC/C,CAAC,GAAqB,IAA0B,eACpD,EAAS,cAAc,MAAM,EAAG,KAE5B,CAAC,EAAmB,IAAwB,eAAS,EAAU,cAAc,MAAM,EAAG,KACtF,CAAC,GAAiB,IAAsB,eAAS,IACjD,CAAC,GAA0B,IAA+B,eAAS,IAEnE,GAAY,MAAO,GAAW,GAAW,KAAY,CACzD,KAAM,IAAc,GAAa,GAAI,QAAO,SAAS,MAAM,EAAG,IACxD,GAAY,CAChB,SAAU,IAAY,GACtB,OAAQ,IAAU,GAClB,cACA,UAAW,IAAa,EACxB,gBAAiB,GAGnB,GAAI,CAWF,KAAM,IAAU,KAAM,MAVI,OAAM,GAAG,OAAO,SAAS,oCAAqC,CACtF,OAAQ,OACR,QAAS,CACP,OAAQ,mBACR,eAAgB,mBAChB,2BAA4B,MAE9B,KAAM,KAAK,UAAU,OAGW,OAE5B,GAAW,GACX,GAAW,GACb,GAAQ,QAAQ,MAClB,OAAO,KAAK,GAAQ,QAAQ,MAAM,QAAS,IAAQ,CACjD,GAAS,KAAK,KAAK,MAAM,GAAQ,QAAQ,KAAK,IAAK,MAAQ,KAAQ,KACnE,KAAM,IAAU,GAAQ,QAAQ,KAAK,IAAK,KAEpC,GAAS,GADD,MAAK,GAAQ,QAAQ,KAAM,MACxB,mBAAmB,SACpC,GAAS,KAAK,MAIlB,EAAgB,IAChB,EAAgB,UACT,GAAP,CACA,QAAQ,MAAM,uBAAwB,MAKpC,GAAe,IAAc,CACjC,GAAI,IAAoB,GACpB,IAA4B,KAAc,IAC5C,IAAoB,GAGtB,GAAI,IAAS,GAAqB,EAC9B,GAAW,IAAuB,EAEhC,KAAc,GAAK,KAAc,IAErC,IAAS,EAAU,SAAS,MAAM,EAAG,IACrC,GAAW,EAAS,SAAS,MAAM,EAAG,IACtC,GAAmB,KAGrB,KAAM,IAAU,CACd,SAAU,GACV,OAAQ,GACR,UAAW,IAGT,IAA4B,KAAsB,EACpD,GAAU,GAAmB,GAAQ,IAErC,GAAU,IAGZ,EAAa,KAIX,EAAY,gBAAkB,QAChC,sBAAe,KAAM,IAErB,sBAAe,KAAM,IAGvB,KAAM,IAAwB,IAAU,CACtC,EAAoB,IAEpB,KAAM,IAAe,GADD,MAAK,IACI,cAAc,MAAM,EAAG,IACpD,GAAuB,IACvB,GAAU,EAAG,EAAmB,IAMhC,EALgB,CACd,SAAU,GAAqB,EAC/B,OAAQ,IAAgB,EACxB,UAAW,KAKT,GAAsB,IAAU,CACpC,EAAkB,IAElB,KAAM,IAAe,GADD,MAAK,IACI,cAAc,MAAM,EAAG,IACpD,GAAqB,IACrB,GAAU,EAAG,GAAc,IAM3B,EALgB,CACd,SAAU,IAAgB,EAC1B,OAAQ,IAAuB,EAC/B,UAAW,KAKT,GAAgB,IAAM,CAC1B,GAAmB,IACnB,GAA4B,KAG9B,gBAAU,IAAM,CACd,GAAU,GACV,EAAK,SAAS,GAAM,SAAS,iBAAiB,aAC9C,EAAK,SAAS,GAAuB,SAAS,iBAAiB,0BAC9D,IAEH,KAAM,IAAO,CACX,OAAQ,EACR,SAAU,CACR,CACE,KAAM,EACN,YAAa,UACb,qBAAsB,UACtB,iBAAkB,UAClB,gBAAiB,UACjB,QAAS,GACT,SAAU,MAKhB,MACE,wBAAK,UAAU,iCACb,sBAAI,UAAU,6BAA6B,EAAa,aACxD,uBAAK,UAAU,kBACb,uBAAK,UAAU,mBACb,uBAAK,UAAU,OACb,uBAAK,UAAU,aACb,uBAAK,UAAU,sCACb,uBAAK,UAAU,0DACb,sBACE,UAAU,uFACV,KAAK,WAEL,sBAAI,UAAU,gCAA+B,cAAa,WACxD,0BACE,KAAK,MACL,KAAK,SACL,UAAU,wGACV,UAAU,QAAO,gBACH,OACd,QAAS,IAAM,GAAY,IAE3B,wBACE,UAAU,qCAAoC,cAClC,uEAEX,EAAa,uBAIpB,sBAAI,UAAU,gCAA+B,cAAa,WACxD,0BACE,KAAK,MACL,KAAK,SACL,UAAU,8FACV,UAAU,QAAO,gBACH,QACd,QAAS,IAAM,GAAY,IAE3B,wBACE,UAAU,qCAAoC,cAClC,uEAEX,EAAa,wBAIpB,sBAAI,UAAU,gCAA+B,cAAa,WACxD,0BACE,KAAK,MACL,KAAK,SACL,UAAU,8FACV,UAAU,QAAO,gBACH,QACd,QAAS,IAAM,GAAY,IAE3B,wBACE,UAAU,qCAAoC,cAClC,uEAEX,EAAa,wBAIpB,sBAAI,UAAU,gCAA+B,cAAa,WACxD,0BACE,KAAK,MACL,KAAK,SACL,UAAU,8FACV,UAAU,QAAO,gBACH,QACd,QAAS,IAAM,CACb,GAAY,IACZ,OAGF,wBACE,UAAU,qCAAoC,cAClC,uEAEX,EAAa,wBAKtB,0BACE,UAAU,wGACV,KAAK,SAAQ,aACF,oBACX,SAAU,GAAE,cACA,kCAEZ,uBACE,KAAK,cACL,UAAU,sDACV,KAAK,MACL,QAAQ,aAER,wBAAM,EAAE,6FAGZ,0BACE,UAAU,wGACV,KAAK,SAAQ,aACF,gBACX,SAAU,GAAE,cACA,kCAEZ,uBACE,KAAK,cACL,UAAU,2CACV,KAAK,MACL,QAAQ,aAER,wBAAM,EAAE,+FAKhB,uBACE,UAAW,GACT,GAAkB,OAAS,iEAI7B,uBAAK,UAAU,yCACb,yBAAO,UAAU,kBAAkB,QAAQ,kBACzC,wBAAM,UAAU,yBAAyB,EAAa,oBAExD,gBAAC,KAAU,CACT,GAAG,iBACH,SAAU,EACV,UAAU,+EACV,SAAW,IAAU,CACnB,GAAqB,KAEvB,OAAO,KACP,WAAW,aACX,QAAS,EACT,SAAQ,GACR,0BAAyB,GACzB,KACE,uBACE,UAAU,qBACV,MAAM,KACN,OAAO,KACP,KAAK,OACL,MAAM,8BAEN,wBACE,EAAE,sIACF,KAAK,YAEP,wBACE,EAAE,iiBACF,KAAK,gBAMf,uBAAK,UAAU,yCACb,yBAAO,UAAU,kBAAkB,QAAQ,gBACzC,wBAAM,UAAU,yBAAyB,EAAa,kBAExD,gBAAC,KAAU,CACT,GAAG,eACH,SAAU,EACV,UAAU,+EACV,SAAW,IAAU,CACnB,GAAmB,KAErB,OAAO,KACP,WAAW,aACX,QAAS,EACT,SAAQ,GACR,0BAAyB,GACzB,KACE,uBACE,UAAU,qBACV,MAAM,KACN,OAAO,KACP,KAAK,OACL,MAAM,8BAEN,wBACE,EAAE,sIACF,KAAK,YAEP,wBACE,EAAE,iiBACF,KAAK,qBAWzB,uBAAK,UAAU,iBACb,gBAAC,GAAI,CAAC,QAAS,GAAS,KAAM,QChYtC,KAAM,IAAsC,CAAC,CAAE,eAAc,OAAM,WAE/D,uBAAK,UAAU,8BACb,4BAAO,GAAgB,EAAc,IACrC,4BAAO,IAKP,GAAuC,CAAC,CAC5C,QACA,eACA,YACA,gBACA,kBAGE,uBAAK,UAAU,yBACZ,EAAM,IAAK,GAER,uBACE,IAAK,cAAc,EAAK,KAAK,EAAK,aAAa,EAAK,OACpD,UAAU,8BAEV,qBAAG,UAAU,gCACX,4BAAO,GAAgB,EAAc,iBACrC,4BAAO,EAAK,OAEd,gBAAC,GAAS,CAAC,aAAc,EAAc,KAAK,eAAe,MAAO,EAAK,OACvE,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,0BACL,MAAO,EAAK,cAEd,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,2BACL,MAAO,EAAK,eAEd,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,yBACL,MAAO,EAAK,aAEd,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,0BACL,MAAO,EAAK,cAEd,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,2BACL,MAAO,EAAK,gBAEd,gBAAC,GAAS,CACR,aAAc,EACd,KAAK,4BACL,MAAO,EAAK,mBAMnB,GACC,uBAAK,UAAU,QACb,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,8BASjB,GAAwD,CAAC,CAC7D,QACA,YACA,YACA,iBAGE,uBACE,UAAW;AAAA;AAAA;AAAA;AAAA,UAIP,EAAc,OAAS;AAAA,SAG3B,uBAAK,UAAU,yCAAyC,GACxD,uBAAK,UAAU,qCACb,wBACE,UAAU;AAAA;AAAA;AAAA,0DAKT,GAEH,wBACE,UAAU;AAAA;AAAA;AAAA,0DAKT,KAOL,GAAwD,CAAC,CAC7D,QACA,SACA,SACA,iBAGE,uBACE,UAAW;AAAA;AAAA;AAAA;AAAA,UAIP,EAAc,OAAS;AAAA,SAG3B,wBACE,UAAW;AAAA;AAAA,gDAE6B;AAAA;AAAA,WAIvC,GAEH,wBACE,UAAW;AAAA;AAAA,gDAE6B;AAAA;AAAA,WAIvC,IAMH,GAAwC,CAAC,CAC7C,QACA,eACA,YACA,gBACA,kBAGE,uBAAK,UAAU,0BAEb,uBAAK,UAAU,kCACb,uBACE,UAAU;AAAA;AAAA;AAAA;AAAA,mBAMV,uBAAK,UAAU,6CACb,wBACE,UAAU;AAAA;AAAA;AAAA,8DAKT,GAAgB,EAAc,iBAEjC,wBACE,UAAU;AAAA;AAAA;AAAA,8DAKT,GAAgB,EAAc,mBAIrC,gBAAC,GAAkB,CACjB,MAAO,GAAgB,EAAc,0BACrC,UAAW,GAAgB,EAAc,sBACzC,UAAW,GAAgB,EAAc,uBACzC,YAAW,KAEb,gBAAC,GAAkB,CACjB,MAAO,GAAgB,EAAc,gCACrC,UAAW,GAAgB,EAAc,uBACzC,UAAW,GAAgB,EAAc,wBACzC,YAAW,KAEb,gBAAC,GAAkB,CACjB,MAAO,GAAgB,EAAc,gCACrC,UAAW,GAAgB,EAAc,uBACzC,UAAW,GAAgB,EAAc,2BAK5C,EAAM,IAAI,CAAC,EAAM,IAEd,uBACE,IAAK,aAAa,EAAK,KAAK,EAAK,aAAa,EAAK,OACnD,UAAU,gCAEV,uBACE,UAAW;AAAA;AAAA;AAAA,+CAGsB;AAAA;AAAA,iBAIjC,wBAAM,UAAU,gDAAgD,EAAK,MACrE,wBAAM,UAAU,gDAAgD,EAAK,OAEvE,gBAAC,GAAkB,CACjB,MAAO,EACP,OAAQ,EAAK,YACb,OAAQ,EAAK,aACb,YAAW,KAEb,gBAAC,GAAkB,CACjB,MAAO,EACP,OAAQ,EAAK,WACb,OAAQ,EAAK,YACb,YAAW,KAEb,gBAAC,GAAkB,CACjB,MAAO,EACP,OAAQ,EAAK,cACb,OAAQ,EAAK,mBAMrB,uBAAK,UAAU,kCACb,oCACa,QACX,UAAU;AAAA;AAAA;AAAA;AAAA,oBAMZ,oCACa,QACX,UAAU;AAAA;AAAA;AAAA;AAAA,oBAMZ,oCACa,QACX,UAAU;AAAA;AAAA;AAAA;AAAA,oBAMZ,oCACa,QACX,UAAU;AAAA;AAAA;AAAA,wDAOb,GACC,uBAAK,UAAU,SACb,gBAAC,GAAM,CACL,SAAS,YACT,MAAO,GAAgB,EAAc,YACrC,KAAK,SACL,UAAW,EACX,QAAS,EACT,WAAW,+BAqHvB,OA7GgE,CAAC,CAC/D,MACA,QACA,MAAO,EACP,WAAY,EACZ,eACA,cACA,UACA,cACA,YACA,YACA,eACI,CAEJ,KAAM,CACJ,eACA,gBACA,QACA,WACA,YACA,oCACE,GAAc,CAChB,MACA,aAAc,EACd,eACA,oBACA,cACA,cAAe,CAAE,WACjB,SAAU,EACV,KAAM,IAGF,CAAC,EAAW,IAAgB,eAAS,CACzC,SAAU,EACV,OAAQ,EACR,UAAW,MAGP,GAAoB,GAAS,CACjC,GAAa,IAGf,MACE,iCACG,GACC,gBAAC,GAAa,CACZ,aAAc,GACd,aAAc,EACd,YAAa,EACb,YAAa,EACb,UAAW,EACX,UAAW,IAGf,2BACG,CAAC,GACA,uBAAK,UAAU,iBACZ,GAAgB,EAAc,iBAAkB,IACjD,wBAAM,UAAU,aAAa,IAGhC,GACC,uBAAK,UAAU,SACb,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,cACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,gBAInD,EACC,uBAAK,UAAU,0CACb,gBAAC,GAAM,OAGT,2BACE,gBAAC,GAAc,CACb,MAAO,EACP,aAAc,EACd,UAAW,EACX,cAAe,EACf,aAAc,IAEhB,gBAAC,GAAe,CACd,MAAO,EACP,aAAc,EACd,UAAW,EACX,cAAe,EACf,aAAc,MAKtB,gBAAC,GAAc,CACb,UAAW,EAAU,UACrB,MAAO,EAAU,MACjB,MAAO,EAAU,MACjB,UAAW,EACX,OAAQ,EAAU,OAClB,YAAa,EACb,SAAU,EAAU,SACpB,OAAQ,EAAU,OAClB,UAAW,EAAU,UACrB,SAAU,MCpblB,KAAM,IAAwB,CAAC,CAAE,QAAO,kBACjC,EAGH,yBAAO,UAAU,iDACf,6BACE,0BACE,sBAAI,UAAU,OAAM,aAAY,UAChC,sBAAI,UAAU,QAAQ,EAAa,QACnC,sBAAI,UAAU,QAAQ,EAAa,WAIvC,yBAAO,UAAU,eACd,EAAM,IAAK,GACV,sBAAI,IAAK,EAAK,IACZ,sBAAI,UAAU,mDACZ,0BAAQ,UAAU,WAAW,EAAK,cAClC,wBAAM,UAAU,YAAY,EAAK,kBAEnC,mCAAgB,EAAa,QAAS,EAAK,cAC3C,mCAAgB,EAAa,SAAU,EAAK,mBApBnC,KA4BrB,OAAe,WAAK,ICmJpB,GAhLuC,CAAC,CACtC,MACA,OACA,eACA,gBACA,gBACA,cACA,OACA,cACA,eACI,CACJ,KAAM,CAAE,YAAa,EAGf,CAAC,EAAgB,GAAgB,eAAkB,GACnD,CAAC,EAAe,GACpB,eAAgD,uBAC5C,CAAC,EAAgB,GAAqB,eAAS,GAG/C,CAAC,EAAU,GAAe,eAAkB,IAC5C,CAAC,GAAO,IAAY,eAAS,GAC7B,CAAC,EAAiB,IAAsB,eAAkB,IAE1D,GAAS,CACb,KAAM,EACN,cACA,iBAKI,GAAY,GACZ,GAAc,GAAI,QAAO,cACzB,GAAoB,GAAc,GAIlC,GAAc,IADN,GAAI,QAAO,WAAa,IACN,MAAM,IAIhC,GAAY,IAAI,GADN,QAAO,UACG,aAAa,MAAM,IAGvC,GAAqB,GAAG,WACxB,GAAqB,GAAG,MAAe,MAAe,KAEtD,GAAc,IAAgB,CAClC,EAAkB,KAGd,GAAY,SAAY,CAC5B,KAAM,IAAW,KAAM,OAAM,EAAK,CAChC,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,2BAA4B,MAE9B,KAAM,KAAK,UAAU,MAEvB,GAAK,GAAS,GAKZ,SAAY,IACL,GAAS,OALhB,SAAmB,IACnB,EAAY,IACN,GAAI,OAAM,8BAOd,GAAW,IAAM,CACrB,EAAY,IACZ,GAAmB,IACnB,KACG,KAAM,IAAQ,CACT,GAAI,QAAQ,KAAK,OAAS,EAC5B,IAAS,GAAI,QAAQ,MACrB,EAAkB,GAAI,QAAQ,cAC9B,EAAa,GAAI,QAAQ,yBACzB,EAAiB,GAAI,QAAQ,aAAa,qBAC1C,OAAO,QAAQ,aAAa,KAAM,GAAI,SAAS,GAAI,QAAQ,iBAE3D,GAAmB,MAGtB,MAAO,IAAU,CAIhB,GAAmB,OAKnB,GAAe,EACrB,MACE,wBAAK,UAAU,aACb,uBAAK,UAAU,iFACb,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,uBAAK,UAAW,GAAe,0BAA4B,wBACzD,uBAAK,UAAU,UACb,uBAAK,UAAU,mBAAmB,GAAgB,EAAc,eAChE,yBAAO,QAAQ,aAAa,UAAU,sBACpC,uBAAK,UAAU,YACb,yBACE,KAAK,OACL,GAAG,aACH,KAAK,aACL,UAAU,oBACV,IAAK,GACL,IAAK,GACL,MAAO,EACP,SAAW,IAAU,CACnB,GAAW,GAAM,OAAO,UAI5B,uBAAK,UAAU,yEACb,gBAAC,GAAI,CACH,KAAM,EAAS,KACf,QAAS,EAAS,QAClB,IAAK,EAAS,IACd,IAAK,EAAS,IACd,UAAU,gEAKjB,IACC,uBAAK,UAAU,2CACZ,GAAgB,EAAc,KAIrC,0BACE,KAAK,SACL,QAAS,GACT,UAAW,oBAAoB,GAAe,OAAS,kBAEtD,GAAgB,EAAc,mBAMxC,EACC,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACZ,EACC,gBAAC,GAAK,CACJ,KAAM,GAAU,MAChB,KAAM,GAAgB,EAAc,gBACpC,eAAgB,CAAE,KAAM,QAAS,YAAa,aAC9C,UAAU,UAGZ,gBAAC,GAAI,CAAC,MAAO,GAAO,aAAc,MAKxC,gBAAC,GAAM,CAAC,UAAU,UAEpB,uBAAK,UAAU,OACb,uBAAK,UAAU,yBACb,qBAAG,KAAK,SAAS,KAAM,EAAe,UAAU,yCAC7C,GAAgB,EAAc,mBCrH3C,KAEA,KAAM,IAAY,GAAI,iBAAgB,OAAO,SAAS,QAItD,EAAK,OAAO,GAAoB,SAAS,cAAc,kCACvD,EAAK,OAAO,GAAQ,SAAS,cAAc,uBAC3C,EAAK,OAAO,GAAc,SAAS,cAAc,uBACjD,EAAK,OAAO,GAAmB,SAAS,cAAc,aACtD,EAAK,OAAO,GAAQ,SAAS,cAAc,eAC3C,EAAK,OAAO,GAAsB,SAAS,cAAc,6BACzD,EAAK,OAAO,GAAU,SAAS,cAAc,iBAC7C,EAAK,OAAO,GAAU,SAAS,cAAc,iBAC7C,EAAK,OAAO,GAAkB,SAAS,cAAc,yBACrD,EAAK,OAAO,GAAsB,SAAS,cAAc,6BACrD,GAAU,IAAI,aAChB,EAAK,OAAO,GAAU,SAAS,cAAc,SAI/C,EAAK,SAAS,GAAW,SAAS,iBAAiB,uBACnD,EAAK,SAAS,GAAS,SAAS,iBAAiB,uBACjD,EAAK,SAAS,GAAM,SAAS,iBAAiB,aAC9C,EAAK,SAAS,GAAY,SAAS,iBAAiB,mBACpD,EAAK,SAAS,GAAW,SAAS,iBAAiB,kBACnD,EAAK,SAAS,GAAuB,SAAS,iBAAiB,yBAC/D,EAAK,SAAS,GAAS,SAAS,iBAAiB,aACjD,EAAK,SAAS,GAAU,SAAS,iBAAiB,cAClD,EAAK,SAAS,GAAe,SAAS,iBAAiB,mBACvD,EAAK,SAAS,GAAU,SAAS,iBAAiB,iBAClD,EAAK,SAAS,GAAK,SAAS,iBAAiB,YAC7C,EAAK,SAAS,GAAc,SAAS,iBAAiB,qBACtD,EAAK,SAAS,GAAW,SAAS,iBAAiB,qBACnD,EAAK,SAAS,GAAQ,SAAS,iBAAiB,YAChD,EAAK,SAAS,GAAe,SAAS,iBAAiB,0BACvD,EAAK,SACH,GACA,SAAS,iBAAiB,oCAE5B,EAAK,SAAS,GAAkB,SAAS,iBAAiB,6BAC1D,EAAK,SAAS,GAAsB,SAAS,iBAAiB,6BAC9D,EAAK,SACH,GACA,SAAS,iBAAiB,mCAE5B,EAAK,SAAS,GAAyB,SAAS,iBAAiB,iCACjE,EAAK,SAAS,GAAe,SAAS,iBAAiB,uBAIvD,EAAO,OAAO,GAAwB,SAAS,cAAc,yBAC7D,EAAO,OAAO,GAA0B,SAAS,cAAc,2BAC/D,EAAO,OAAO,GAAa,SAAS,cAAc,qBAClD,EAAO,OAAO,GAAY,SAAS,cAAc,mBACjD,EAAO,OAAO,GAAY,SAAS,cAAc,oBACjD,EAAO,OAAO,GAAkB,SAAS,cAAc,2BACvD,EAAO,OAAO,GAAW,SAAS,cAAc,mBAChD,EAAO,OAAO,GAAgB,SAAS,cAAc,wBACrD,EAAO,OAAO,GAAuB,SAAS,cAAc,gCAC5D,EAAO,OAAO,GAAY,SAAS,cAAc,oBACjD,EAAO,OAAO,GAAmB,SAAS,cAAc,4BACxD,EAAO,OAAO,GAAmB,SAAS,cAAc,4BACxD,EAAO,OAAO,GAAqB,SAAS,cAAc,+BAC1D,EAAO,OAAO,GAAqB,SAAS,cAAc,8BAC1D,EAAO,OAAO,GAAe,SAAS,cAAc,yBAGpD,EAAO,SAAS,GAAiB,SAAS,iBAAiB,wBAAyB,IACpF,EAAO,SAAS,GAAgB,SAAS,iBAAiB,wBAGtD,OAAO,QACT,OAAO","file":"js/app.js","sourcesContent":["function getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const webkit = isWebKit();\n const css = getComputedStyle(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = currentWin.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = currentWin.frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const x = rect.left + scroll.scrollLeft - offsets.x;\n const y = rect.top + scroll.scrollTop - offsets.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle \\n \";\r\n },\r\n getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {\r\n var srcsetAttr = srcset ? \"srcset=\\\"\" + srcset + \"\\\"\" : '';\r\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\"\" : '';\r\n var imgMarkup = \"\";\r\n var sourceTag = '';\r\n if (sources) {\r\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\r\n sourceTag = sourceObj.map(function (source) {\r\n var attrs = '';\r\n Object.keys(source).forEach(function (key) {\r\n // Do not remove the first space as it is required to separate the attributes\r\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\r\n });\r\n return \"\";\r\n });\r\n }\r\n return \"\" + sourceTag + imgMarkup;\r\n },\r\n // Get src from responsive src\r\n getResponsiveSrc: function (srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n var src = '';\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var _src = srcItms[i].split(' ');\r\n // Manage empty space\r\n if (_src[0] === '') {\r\n _src.splice(0, 1);\r\n }\r\n rsSrc.push(_src[0]);\r\n rsWidth.push(_src[1]);\r\n }\r\n var wWidth = window.innerWidth;\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n return src;\r\n },\r\n isImageLoaded: function (img) {\r\n if (!img)\r\n return false;\r\n // During the onload event, IE correctly identifies any images that\r\n // weren’t downloaded as not complete. Others should too. Gecko-based\r\n // browsers act like NS4 in that they report this incorrectly.\r\n if (!img.complete) {\r\n return false;\r\n }\r\n // However, they do have two very useful properties: naturalWidth and\r\n // naturalHeight. These give the true size of the image. If it failed\r\n // to load, either of these should be zero.\r\n if (img.naturalWidth === 0) {\r\n return false;\r\n }\r\n // No other way of checking: assume it’s ok.\r\n return true;\r\n },\r\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n }\r\n else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n }\r\n else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n return \"
\\n
\\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
\\n \" + (dummyImg || '') + \"\\n \\n
\";\r\n },\r\n getFocusableElements: function (container) {\r\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\r\n var visibleElements = [].filter.call(elements, function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style.display !== 'none' && style.visibility !== 'hidden';\r\n });\r\n return visibleElements;\r\n },\r\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\r\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\r\n var dynamicElements = [];\r\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\r\n [].forEach.call(items, function (item) {\r\n var dynamicEl = {};\r\n for (var i = 0; i < item.attributes.length; i++) {\r\n var attr = item.attributes[i];\r\n if (attr.specified) {\r\n var dynamicAttr = convertToData(attr.name);\r\n var label = '';\r\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\r\n label = dynamicAttr;\r\n }\r\n if (label) {\r\n dynamicEl[label] = attr.value;\r\n }\r\n }\r\n }\r\n var currentItem = $LG(item);\r\n var alt = currentItem.find('img').first().attr('alt');\r\n var title = currentItem.attr('title');\r\n var thumb = exThumbImage\r\n ? currentItem.attr(exThumbImage)\r\n : currentItem.find('img').first().attr('src');\r\n dynamicEl.thumb = thumb;\r\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\r\n dynamicEl.subHtml = title || alt || '';\r\n }\r\n dynamicEl.alt = alt || title || '';\r\n dynamicElements.push(dynamicEl);\r\n });\r\n return dynamicElements;\r\n },\r\n isMobile: function () {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n },\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\r\n isVideo: function (src, isHTML5VIdeo, index) {\r\n if (!src) {\r\n if (isHTML5VIdeo) {\r\n return {\r\n html5: true,\r\n };\r\n }\r\n else {\r\n console.error('lightGallery :- data-src is not provided on slide item ' +\r\n (index + 1) +\r\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\r\n return;\r\n }\r\n }\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i);\r\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\r\n if (youtube) {\r\n return {\r\n youtube: youtube,\r\n };\r\n }\r\n else if (vimeo) {\r\n return {\r\n vimeo: vimeo,\r\n };\r\n }\r\n else if (wistia) {\r\n return {\r\n wistia: wistia,\r\n };\r\n }\r\n },\r\n};\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\r\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\r\n// Unique id for each gallery\r\nvar lgId = 0;\r\nvar LightGallery = /** @class */ (function () {\r\n function LightGallery(element, options) {\r\n this.lgOpened = false;\r\n this.index = 0;\r\n // lightGallery modules\r\n this.plugins = [];\r\n // false when lightGallery load first slide content;\r\n this.lGalleryOn = false;\r\n // True when a slide animation is in progress\r\n this.lgBusy = false;\r\n this.currentItemsInDom = [];\r\n // Scroll top value before lightGallery is opened\r\n this.prevScrollTop = 0;\r\n this.bodyPaddingRight = 0;\r\n this.isDummyImageRemoved = false;\r\n this.dragOrSwipeEnabled = false;\r\n this.mediaContainerPosition = {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n if (!element) {\r\n return this;\r\n }\r\n lgId++;\r\n this.lgId = lgId;\r\n this.el = element;\r\n this.LGel = $LG(element);\r\n this.generateSettings(options);\r\n this.buildModules();\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.settings.dynamic &&\r\n this.settings.dynamicEl !== undefined &&\r\n !Array.isArray(this.settings.dynamicEl)) {\r\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\r\n }\r\n this.galleryItems = this.getItems();\r\n this.normalizeSettings();\r\n // Gallery items\r\n this.init();\r\n this.validateLicense();\r\n return this;\r\n }\r\n LightGallery.prototype.generateSettings = function (options) {\r\n // lightGallery settings\r\n this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);\r\n if (this.settings.isMobile &&\r\n typeof this.settings.isMobile === 'function'\r\n ? this.settings.isMobile()\r\n : utils.isMobile()) {\r\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\r\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\r\n }\r\n };\r\n LightGallery.prototype.normalizeSettings = function () {\r\n if (this.settings.slideEndAnimation) {\r\n this.settings.hideControlOnEnd = false;\r\n }\r\n if (!this.settings.closable) {\r\n this.settings.swipeToClose = false;\r\n }\r\n // And reset it on close to get the correct value next time\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n // At the moment, Zoom from image doesn't support dynamic options\r\n // @todo add zoomFromOrigin support for dynamic images\r\n if (this.settings.dynamic) {\r\n this.zoomFromOrigin = false;\r\n }\r\n if (!this.settings.container) {\r\n this.settings.container = document.body;\r\n }\r\n // settings.preload should not be grater than $item.length\r\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\r\n };\r\n LightGallery.prototype.init = function () {\r\n var _this = this;\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.buildStructure();\r\n this.LGel.trigger(lGEvents.init, {\r\n instance: this,\r\n });\r\n if (this.settings.keyPress) {\r\n this.keyPress();\r\n }\r\n setTimeout(function () {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n _this.triggerPosterClick();\r\n }, 50);\r\n this.arrow();\r\n if (this.settings.mousewheel) {\r\n this.mousewheel();\r\n }\r\n if (!this.settings.dynamic) {\r\n this.openGalleryOnItemClick();\r\n }\r\n };\r\n LightGallery.prototype.openGalleryOnItemClick = function () {\r\n var _this = this;\r\n var _loop_1 = function (index) {\r\n var element = this_1.items[index];\r\n var $element = $LG(element);\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n // @todo manage all event listners - should have namespace that represent element\r\n var uuid = lgQuery.generateUUID();\r\n $element\r\n .attr('data-lg-id', uuid)\r\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\r\n e.preventDefault();\r\n var currentItemIndex = _this.settings.index || index;\r\n _this.openGallery(currentItemIndex, element);\r\n });\r\n };\r\n var this_1 = this;\r\n // Using for loop instead of using bubbling as the items can be any html element.\r\n for (var index = 0; index < this.items.length; index++) {\r\n _loop_1(index);\r\n }\r\n };\r\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\r\n LightGallery.prototype.buildModules = function () {\r\n var _this = this;\r\n this.settings.plugins.forEach(function (plugin) {\r\n _this.plugins.push(new plugin(_this, $LG));\r\n });\r\n };\r\n LightGallery.prototype.validateLicense = function () {\r\n if (!this.settings.licenseKey) {\r\n console.error('Please provide a valid license key');\r\n }\r\n else if (this.settings.licenseKey === '0000-0000-000-0000') {\r\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\r\n }\r\n };\r\n LightGallery.prototype.getSlideItem = function (index) {\r\n return $LG(this.getSlideItemId(index));\r\n };\r\n LightGallery.prototype.getSlideItemId = function (index) {\r\n return \"#lg-item-\" + this.lgId + \"-\" + index;\r\n };\r\n LightGallery.prototype.getIdName = function (id) {\r\n return id + \"-\" + this.lgId;\r\n };\r\n LightGallery.prototype.getElementById = function (id) {\r\n return $LG(\"#\" + this.getIdName(id));\r\n };\r\n LightGallery.prototype.manageSingleSlideClassName = function () {\r\n if (this.galleryItems.length < 2) {\r\n this.outer.addClass('lg-single-item');\r\n }\r\n else {\r\n this.outer.removeClass('lg-single-item');\r\n }\r\n };\r\n LightGallery.prototype.buildStructure = function () {\r\n var _this = this;\r\n var container = this.$container && this.$container.get();\r\n if (container) {\r\n return;\r\n }\r\n var controls = '';\r\n var subHtmlCont = '';\r\n // Create controls\r\n if (this.settings.controls) {\r\n controls = \"\\n \";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '
';\r\n }\r\n var addClasses = '';\r\n if (this.settings.allowMediaOverlap) {\r\n // Do not remove space before last single quote\r\n addClasses += 'lg-media-overlap ';\r\n }\r\n var ariaLabelledby = this.settings.ariaLabelledby\r\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\r\n : '';\r\n var ariaDescribedby = this.settings.ariaDescribedby\r\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\r\n : '';\r\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\r\n var closeIcon = this.settings.closable && this.settings.showCloseIcon\r\n ? \"\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"\"\r\n : '';\r\n var template = \"\\n
\\n
\\n\\n
\\n\\n
\\n
\\n
\\n \" + controls + \"\\n
\\n
\\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n
\\n
\\n
\\n \";\r\n $LG(this.settings.container).append(template);\r\n if (document.body !== this.settings.container) {\r\n $LG(this.settings.container).css('position', 'relative');\r\n }\r\n this.outer = this.getElementById('lg-outer');\r\n this.$lgComponents = this.getElementById('lg-components');\r\n this.$backdrop = this.getElementById('lg-backdrop');\r\n this.$container = this.getElementById('lg-container');\r\n this.$inner = this.getElementById('lg-inner');\r\n this.$content = this.getElementById('lg-content');\r\n this.$toolbar = this.getElementById('lg-toolbar');\r\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\r\n var outerClassNames = this.settings.mode + \" \";\r\n this.manageSingleSlideClassName();\r\n if (this.settings.enableDrag) {\r\n outerClassNames += 'lg-grab ';\r\n }\r\n this.outer.addClass(outerClassNames);\r\n this.$inner.css('transition-timing-function', this.settings.easing);\r\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\r\n if (this.settings.download) {\r\n this.$toolbar.append(\"\");\r\n }\r\n this.counter();\r\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\r\n _this.refreshOnResize();\r\n });\r\n this.hideBars();\r\n this.manageCloseGallery();\r\n this.toggleMaximize();\r\n this.initModules();\r\n };\r\n LightGallery.prototype.refreshOnResize = function () {\r\n if (this.lgOpened) {\r\n var currentGalleryItem = this.galleryItems[this.index];\r\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\r\n this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n if (__slideVideoInfo) {\r\n this.resizeVideoSlide(this.index, this.currentImageSize);\r\n }\r\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n this.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first()\r\n .attr('style', imgStyle);\r\n }\r\n this.LGel.trigger(lGEvents.containerResize);\r\n }\r\n };\r\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\r\n var lgVideoStyle = this.getVideoContStyle(imageSize);\r\n var currentSlide = this.getSlideItem(index);\r\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\r\n };\r\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see Demo\r\n */\r\n LightGallery.prototype.updateSlides = function (items, index) {\r\n if (this.index > items.length - 1) {\r\n this.index = items.length - 1;\r\n }\r\n if (items.length === 1) {\r\n this.index = 0;\r\n }\r\n if (!items.length) {\r\n this.closeGallery();\r\n return;\r\n }\r\n var currentSrc = this.galleryItems[index].src;\r\n this.galleryItems = items;\r\n this.updateControls();\r\n this.$inner.empty();\r\n this.currentItemsInDom = [];\r\n var _index = 0;\r\n // Find the current index based on source value of the slide\r\n this.galleryItems.some(function (galleryItem, itemIndex) {\r\n if (galleryItem.src === currentSrc) {\r\n _index = itemIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\r\n this.loadContent(_index, true);\r\n this.getSlideItem(_index).addClass('lg-current');\r\n this.index = _index;\r\n this.updateCurrentCounter(_index);\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n // Get gallery items based on multiple conditions\r\n LightGallery.prototype.getItems = function () {\r\n // Gallery items\r\n this.items = [];\r\n if (!this.settings.dynamic) {\r\n if (this.settings.selector === 'this') {\r\n this.items.push(this.el);\r\n }\r\n else if (this.settings.selector) {\r\n if (typeof this.settings.selector === 'string') {\r\n if (this.settings.selectWithin) {\r\n var selectWithin = $LG(this.settings.selectWithin);\r\n this.items = selectWithin\r\n .find(this.settings.selector)\r\n .get();\r\n }\r\n else {\r\n this.items = this.el.querySelectorAll(this.settings.selector);\r\n }\r\n }\r\n else {\r\n this.items = this.settings.selector;\r\n }\r\n }\r\n else {\r\n this.items = this.el.children;\r\n }\r\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\r\n }\r\n else {\r\n return this.settings.dynamicEl || [];\r\n }\r\n };\r\n LightGallery.prototype.shouldHideScrollbar = function () {\r\n return (this.settings.hideScrollbar &&\r\n document.body === this.settings.container);\r\n };\r\n LightGallery.prototype.hideScrollbar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\r\n var bodyRect = document.documentElement.getBoundingClientRect();\r\n var scrollbarWidth = window.innerWidth - bodyRect.width;\r\n $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\r\n $LG(document.body).addClass('lg-overlay-open');\r\n };\r\n LightGallery.prototype.resetScrollBar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\r\n $LG(document.body).removeClass('lg-overlay-open');\r\n };\r\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '

Image 1 title

Image 1 descriptions.

',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\r\n LightGallery.prototype.openGallery = function (index, element) {\r\n var _this = this;\r\n if (index === void 0) { index = this.settings.index; }\r\n // prevent accidental double execution\r\n if (this.lgOpened)\r\n return;\r\n this.lgOpened = true;\r\n this.outer.removeClass('lg-hide-items');\r\n this.hideScrollbar();\r\n // Add display block, but still has opacity 0\r\n this.$container.addClass('lg-show');\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\r\n this.currentItemsInDom = itemsToBeInsertedToDom;\r\n var items = '';\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n items = items + (\"
\");\r\n });\r\n this.$inner.append(items);\r\n this.addHtml(index);\r\n var transform = '';\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;\r\n if (!this.settings.allowMediaOverlap) {\r\n this.setMediaContainerPosition(top, bottom);\r\n }\r\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\r\n if (this.zoomFromOrigin && element) {\r\n this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);\r\n }\r\n if (!this.zoomFromOrigin || !transform) {\r\n this.outer.addClass(this.settings.startClass);\r\n this.getSlideItem(index).removeClass('lg-complete');\r\n }\r\n var timeout = this.settings.zoomFromOrigin\r\n ? 100\r\n : this.settings.backdropDuration;\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-components-open');\r\n }, timeout);\r\n this.index = index;\r\n this.LGel.trigger(lGEvents.beforeOpen);\r\n // add class lg-current to remove initial transition\r\n this.getSlideItem(index).addClass('lg-current');\r\n this.lGalleryOn = false;\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $LG(window).scrollTop();\r\n setTimeout(function () {\r\n // Need to check both zoomFromOrigin and transform values as we need to set set the\r\n // default opening animation if user missed to add the lg-size attribute\r\n if (_this.zoomFromOrigin && transform) {\r\n var currentSlide_1 = _this.getSlideItem(index);\r\n currentSlide_1.css('transform', transform);\r\n setTimeout(function () {\r\n currentSlide_1\r\n .addClass('lg-start-progress lg-start-end-progress')\r\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\r\n _this.outer.addClass('lg-zoom-from-image');\r\n });\r\n setTimeout(function () {\r\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\r\n }, 100);\r\n }\r\n setTimeout(function () {\r\n _this.$backdrop.addClass('in');\r\n _this.$container.addClass('lg-show-in');\r\n }, 10);\r\n setTimeout(function () {\r\n if (_this.settings.trapFocus &&\r\n document.body === _this.settings.container) {\r\n _this.trapFocus();\r\n }\r\n }, _this.settings.backdropDuration + 50);\r\n // lg-visible class resets gallery opacity to 1\r\n if (!_this.zoomFromOrigin || !transform) {\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-visible');\r\n }, _this.settings.backdropDuration);\r\n }\r\n // initiate slide function\r\n _this.slide(index, false, false, false);\r\n _this.LGel.trigger(lGEvents.afterOpen);\r\n });\r\n if (document.body === this.settings.container) {\r\n $LG('html').addClass('lg-on');\r\n }\r\n };\r\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\r\n LightGallery.prototype.getMediaContainerPosition = function () {\r\n if (this.settings.allowMediaOverlap) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n }\r\n var top = this.$toolbar.get().clientHeight || 0;\r\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\r\n var captionHeight = this.settings.defaultCaptionHeight ||\r\n (subHtml && subHtml.clientHeight) ||\r\n 0;\r\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\r\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\r\n var bottom = thumbHeight + captionHeight;\r\n return {\r\n top: top,\r\n bottom: bottom,\r\n };\r\n };\r\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\r\n if (top === void 0) { top = 0; }\r\n if (bottom === void 0) { bottom = 0; }\r\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\r\n };\r\n LightGallery.prototype.hideBars = function () {\r\n var _this = this;\r\n // Hide controllers if mouse doesn't move for some period\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n if (_this.settings.hideBarsDelay > 0) {\r\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n clearTimeout(_this.hideBarTimeout);\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBarTimeout = setTimeout(function () {\r\n _this.outer.addClass('lg-hide-items');\r\n }, _this.settings.hideBarsDelay);\r\n });\r\n _this.outer.trigger('mousemove.lg');\r\n }\r\n }, this.settings.showBarsAfter);\r\n };\r\n LightGallery.prototype.initPictureFill = function ($img) {\r\n if (this.settings.supportLegacyBrowser) {\r\n try {\r\n picturefill({\r\n elements: [$img.get()],\r\n });\r\n }\r\n catch (e) {\r\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n LightGallery.prototype.counter = function () {\r\n if (this.settings.counter) {\r\n var counterHtml = \"
\\n \" + (this.index + 1) + \" /\\n \" + this.galleryItems.length + \"
\";\r\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\r\n }\r\n };\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n LightGallery.prototype.addHtml = function (index) {\r\n var subHtml;\r\n var subHtmlUrl;\r\n if (this.galleryItems[index].subHtmlUrl) {\r\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\r\n }\r\n else {\r\n subHtml = this.galleryItems[index].subHtml;\r\n }\r\n if (!subHtmlUrl) {\r\n if (subHtml) {\r\n // get first letter of sub-html\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.settings.subHtmlSelectorRelative &&\r\n !this.settings.dynamic) {\r\n subHtml = $LG(this.items)\r\n .eq(index)\r\n .find(subHtml)\r\n .first()\r\n .html();\r\n }\r\n else {\r\n subHtml = $LG(subHtml).first().html();\r\n }\r\n }\r\n }\r\n else {\r\n subHtml = '';\r\n }\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n if (subHtmlUrl) {\r\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\r\n }\r\n else {\r\n this.outer.find('.lg-sub-html').html(subHtml);\r\n }\r\n }\r\n else {\r\n var currentSlide = $LG(this.getSlideItemId(index));\r\n if (subHtmlUrl) {\r\n currentSlide.load(subHtmlUrl);\r\n }\r\n else {\r\n currentSlide.append(\"
\" + subHtml + \"
\");\r\n }\r\n }\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .addClass('lg-empty-html');\r\n }\r\n else {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .removeClass('lg-empty-html');\r\n }\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\r\n index: index,\r\n });\r\n };\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\r\n LightGallery.prototype.preload = function (index) {\r\n for (var i = 1; i <= this.settings.preload; i++) {\r\n if (i >= this.galleryItems.length - index) {\r\n break;\r\n }\r\n this.loadContent(index + i, false);\r\n }\r\n for (var j = 1; j <= this.settings.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n this.loadContent(index - j, false);\r\n }\r\n };\r\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\r\n var $currentItem;\r\n if (!this.settings.dynamic) {\r\n $currentItem = $LG(this.items).eq(index);\r\n }\r\n if ($currentItem) {\r\n var _dummyImgSrc = void 0;\r\n if (!this.settings.exThumbImage) {\r\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\r\n }\r\n else {\r\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\r\n }\r\n if (!_dummyImgSrc)\r\n return '';\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n var dummyImgContent = \"\";\r\n $currentSlide.addClass('lg-first-slide');\r\n this.outer.addClass('lg-first-slide-loading');\r\n return dummyImgContent;\r\n }\r\n return '';\r\n };\r\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n // Use the thumbnail as dummy image which will be resized to actual image size and\r\n // displayed on top of actual image\r\n var imgContent = '';\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\r\n }\r\n else {\r\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\r\n }\r\n var imgMarkup = \" \" + imgContent + \"\";\r\n $currentSlide.prepend(imgMarkup);\r\n };\r\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\r\n var mediaObject = $slide.find('.lg-object').first();\r\n if (utils.isImageLoaded(mediaObject.get()) ||\r\n isHTML5VideoWithoutPoster) {\r\n onLoad();\r\n }\r\n else {\r\n mediaObject.on('load.lg error.lg', function () {\r\n onLoad && onLoad();\r\n });\r\n mediaObject.on('error.lg', function () {\r\n onError && onError();\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param $el Current slide item\r\n * @param index\r\n * @param delay Delay is 0 except first time\r\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\r\n * @param isFirstSlide\r\n */\r\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\r\n var _this = this;\r\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\r\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\r\n }, function () {\r\n currentSlide.addClass('lg-complete lg-complete_');\r\n currentSlide.html('' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '');\r\n });\r\n };\r\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n // Adding delay for video slides without poster for better performance and user experience\r\n // Videos should start playing once once the gallery is completely loaded\r\n var _speed = isFirstSlide &&\r\n this.getSlideType(currentGalleryItem) === 'video' &&\r\n !currentGalleryItem.poster\r\n ? speed\r\n : 0;\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete lg-complete_');\r\n _this.LGel.trigger(lGEvents.slideItemLoad, {\r\n index: index,\r\n delay: delay || 0,\r\n isFirstSlide: isFirstSlide,\r\n });\r\n }, _speed);\r\n };\r\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\r\n return !!(!this.lGalleryOn &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize);\r\n };\r\n // Add video slideInfo\r\n LightGallery.prototype.addSlideVideoInfo = function (items) {\r\n var _this = this;\r\n items.forEach(function (element, index) {\r\n element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);\r\n if (element.__slideVideoInfo &&\r\n _this.settings.loadYouTubePoster &&\r\n !element.poster &&\r\n element.__slideVideoInfo.youtube) {\r\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\r\n }\r\n });\r\n };\r\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\r\n LightGallery.prototype.loadContent = function (index, rec) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n var $currentSlide = $LG(this.getSlideItemId(index));\r\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n var src = currentGalleryItem.src;\r\n var video = currentGalleryItem.video;\r\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\r\n if (currentGalleryItem.responsive) {\r\n var srcDyItms = currentGalleryItem.responsive.split(',');\r\n src = utils.getResponsiveSrc(srcDyItms) || src;\r\n }\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n var lgVideoStyle = '';\r\n var iframe = !!currentGalleryItem.iframe;\r\n var isFirstSlide = !this.lGalleryOn;\r\n // delay for adding complete class. it is 0 except first time.\r\n var delay = 0;\r\n if (isFirstSlide) {\r\n if (this.zoomFromOrigin && this.currentImageSize) {\r\n delay = this.settings.startAnimationDuration + 10;\r\n }\r\n else {\r\n delay = this.settings.backdropDuration + 10;\r\n }\r\n }\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\r\n lgVideoStyle = this.getVideoContStyle(videoSize);\r\n }\r\n if (iframe) {\r\n var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (poster) {\r\n var dummyImg = '';\r\n var hasStartAnimation = isFirstSlide &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize;\r\n if (hasStartAnimation) {\r\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\r\n }\r\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (videoInfo) {\r\n var markup = \"
\";\r\n $currentSlide.prepend(markup);\r\n }\r\n else {\r\n this.setImgMarkup(src, $currentSlide, index);\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n this.initPictureFill($img);\r\n }\r\n }\r\n if (poster || videoInfo) {\r\n this.LGel.trigger(lGEvents.hasVideo, {\r\n index: index,\r\n src: src,\r\n html5Video: _html5Video,\r\n hasPoster: !!poster,\r\n });\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });\r\n if (this.lGalleryOn &&\r\n this.settings.appendSubHtmlTo === '.lg-item') {\r\n this.addHtml(index);\r\n }\r\n }\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n // Only for first slide and zoomFromOrigin is enabled\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n setTimeout(function () {\r\n $currentSlide\r\n .removeClass('lg-start-end-progress lg-start-progress')\r\n .removeAttr('style');\r\n }, this.settings.startAnimationDuration + 100);\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n setTimeout(function () {\r\n if (_this.getSlideType(currentGalleryItem) === 'image') {\r\n var alt = currentGalleryItem.alt;\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n $currentSlide\r\n .find('.lg-img-wrap')\r\n .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n _this.initPictureFill($img);\r\n }\r\n }\r\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\r\n (_this.getSlideType(currentGalleryItem) === 'video' &&\r\n poster)) {\r\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\r\n // load remaining slides once the slide is completely loaded\r\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n }, function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n });\r\n }\r\n }, this.settings.startAnimationDuration + 100);\r\n }\r\n }\r\n // SLide content has been added to dom\r\n $currentSlide.addClass('lg-loaded');\r\n if (!this.isFirstSlideWithZoomAnimation() ||\r\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\r\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\r\n }\r\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\r\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\r\n $currentSlide.hasClass('lg-complete_') &&\r\n !this.lGalleryOn) {\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete');\r\n }, this.settings.backdropDuration);\r\n }\r\n // Content loaded\r\n // Need to set lGalleryOn before calling preload function\r\n this.lGalleryOn = true;\r\n if (rec === true) {\r\n if (!$currentSlide.hasClass('lg-complete_')) {\r\n $currentSlide\r\n .find('.lg-object')\r\n .first()\r\n .on('load.lg error.lg', function () {\r\n _this.preload(index);\r\n });\r\n }\r\n else {\r\n this.preload(index);\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Remove dummy image content and load next slides\r\n * Called only for the first time if zoomFromOrigin animation is enabled\r\n * @param index\r\n * @param $currentSlide\r\n * @param speed\r\n */\r\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\r\n var _this = this;\r\n setTimeout(function () {\r\n $currentSlide.find('.lg-dummy-img').remove();\r\n $currentSlide.removeClass('lg-first-slide');\r\n _this.outer.removeClass('lg-first-slide-loading');\r\n _this.isDummyImageRemoved = true;\r\n _this.preload(index);\r\n }, speed + 300);\r\n };\r\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\r\n var _this = this;\r\n if (numberOfItems === void 0) { numberOfItems = 0; }\r\n var itemsToBeInsertedToDom = [];\r\n // Minimum 2 items should be there\r\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\r\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\r\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\r\n if (this.galleryItems.length <= 3) {\r\n this.galleryItems.forEach(function (_element, index) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\r\n });\r\n return itemsToBeInsertedToDom;\r\n }\r\n if (index < (this.galleryItems.length - 1) / 2) {\r\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\r\n }\r\n }\r\n else {\r\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\r\n idx < index + possibleNumberOfItems / 2; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\r\n }\r\n }\r\n if (this.settings.loop) {\r\n if (index === this.galleryItems.length - 1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\r\n }\r\n else if (index === 0) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\r\n }\r\n }\r\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\r\n }\r\n return itemsToBeInsertedToDom;\r\n };\r\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\r\n var _this = this;\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n if (_this.currentItemsInDom.indexOf(item) === -1) {\r\n _this.$inner.append(\"
\");\r\n }\r\n });\r\n this.currentItemsInDom.forEach(function (item) {\r\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\r\n $LG(\"#\" + item).remove();\r\n }\r\n });\r\n return itemsToBeInsertedToDom;\r\n };\r\n /**\r\n * Get previous index of the slide\r\n */\r\n LightGallery.prototype.getPreviousSlideIndex = function () {\r\n var prevIndex = 0;\r\n try {\r\n var currentItemId = this.outer\r\n .find('.lg-current')\r\n .first()\r\n .attr('id');\r\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\r\n }\r\n catch (error) {\r\n prevIndex = 0;\r\n }\r\n return prevIndex;\r\n };\r\n LightGallery.prototype.setDownloadValue = function (index) {\r\n if (this.settings.download) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\r\n currentGalleryItem.downloadUrl === 'false';\r\n if (hideDownloadBtn) {\r\n this.outer.addClass('lg-hide-download');\r\n }\r\n else {\r\n var $download = this.getElementById('lg-download');\r\n this.outer.removeClass('lg-hide-download');\r\n $download.attr('href', currentGalleryItem.downloadUrl ||\r\n currentGalleryItem.src);\r\n if (currentGalleryItem.download) {\r\n $download.attr('download', currentGalleryItem.download);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\r\n var _this = this;\r\n if (this.lGalleryOn) {\r\n previousSlideItem.addClass('lg-slide-progress');\r\n }\r\n setTimeout(function () {\r\n // remove all transitions\r\n _this.outer.addClass('lg-no-trans');\r\n _this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-next-slide');\r\n if (direction === 'prev') {\r\n //prevslide\r\n currentSlideItem.addClass('lg-prev-slide');\r\n previousSlideItem.addClass('lg-next-slide');\r\n }\r\n else {\r\n // next slide\r\n currentSlideItem.addClass('lg-next-slide');\r\n previousSlideItem.addClass('lg-prev-slide');\r\n }\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function () {\r\n _this.outer.find('.lg-item').removeClass('lg-current');\r\n currentSlideItem.addClass('lg-current');\r\n // reset all transitions\r\n _this.outer.removeClass('lg-no-trans');\r\n }, 50);\r\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\r\n };\r\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\r\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\r\n var _this = this;\r\n var prevIndex = this.getPreviousSlideIndex();\r\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\r\n // Prevent multiple call, Required for hsh plugin\r\n if (this.lGalleryOn && prevIndex === index) {\r\n return;\r\n }\r\n var numberOfGalleryItems = this.galleryItems.length;\r\n if (!this.lgBusy) {\r\n if (this.settings.counter) {\r\n this.updateCurrentCounter(index);\r\n }\r\n var currentSlideItem = this.getSlideItem(index);\r\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\r\n var currentGalleryItem = this.galleryItems[index];\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\r\n this.setDownloadValue(index);\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\r\n this.resizeVideoSlide(index, videoSize);\r\n }\r\n this.LGel.trigger(lGEvents.beforeSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: !!fromTouch,\r\n fromThumb: !!fromThumb,\r\n });\r\n this.lgBusy = true;\r\n clearTimeout(this.hideBarTimeout);\r\n this.arrowDisable(index);\r\n if (!direction) {\r\n if (index < prevIndex) {\r\n direction = 'prev';\r\n }\r\n else if (index > prevIndex) {\r\n direction = 'next';\r\n }\r\n }\r\n if (!fromTouch) {\r\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\r\n }\r\n else {\r\n this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-current lg-next-slide');\r\n var touchPrev = void 0;\r\n var touchNext = void 0;\r\n if (numberOfGalleryItems > 2) {\r\n touchPrev = index - 1;\r\n touchNext = index + 1;\r\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n else if (index === numberOfGalleryItems - 1 &&\r\n prevIndex === 0) {\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n }\r\n else {\r\n touchPrev = 0;\r\n touchNext = 1;\r\n }\r\n if (direction === 'prev') {\r\n this.getSlideItem(touchNext).addClass('lg-next-slide');\r\n }\r\n else {\r\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\r\n }\r\n currentSlideItem.addClass('lg-current');\r\n }\r\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\r\n if (!this.lGalleryOn) {\r\n this.loadContent(index, true);\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.loadContent(index, true);\r\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\r\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\r\n _this.addHtml(index);\r\n }\r\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n setTimeout(function () {\r\n _this.lgBusy = false;\r\n previousSlideItem_1.removeClass('lg-slide-progress');\r\n _this.LGel.trigger(lGEvents.afterSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: fromTouch,\r\n fromThumb: fromThumb,\r\n });\r\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n this.index = index;\r\n };\r\n LightGallery.prototype.updateCurrentCounter = function (index) {\r\n this.getElementById('lg-counter-current').html(index + 1 + '');\r\n };\r\n LightGallery.prototype.updateCounterTotal = function () {\r\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\r\n };\r\n LightGallery.prototype.getSlideType = function (item) {\r\n if (item.__slideVideoInfo) {\r\n return 'video';\r\n }\r\n else if (item.iframe) {\r\n return 'iframe';\r\n }\r\n else {\r\n return 'image';\r\n }\r\n };\r\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\r\n var distanceX = endCoords.pageX - startCoords.pageX;\r\n var distanceY = endCoords.pageY - startCoords.pageY;\r\n var allowSwipe = false;\r\n if (this.swipeDirection) {\r\n allowSwipe = true;\r\n }\r\n else {\r\n if (Math.abs(distanceX) > 15) {\r\n this.swipeDirection = 'horizontal';\r\n allowSwipe = true;\r\n }\r\n else if (Math.abs(distanceY) > 15) {\r\n this.swipeDirection = 'vertical';\r\n allowSwipe = true;\r\n }\r\n }\r\n if (!allowSwipe) {\r\n return;\r\n }\r\n var $currentSlide = this.getSlideItem(this.index);\r\n if (this.swipeDirection === 'horizontal') {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n // reset opacity and transition duration\r\n this.outer.addClass('lg-dragging');\r\n // move current slide\r\n this.setTranslate($currentSlide, distanceX, 0);\r\n // move next and prev slide with current slide\r\n var width = $currentSlide.get().offsetWidth;\r\n var slideWidthAmount = (width * 15) / 100;\r\n var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\r\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\r\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\r\n }\r\n else if (this.swipeDirection === 'vertical') {\r\n if (this.settings.swipeToClose) {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n this.$container.addClass('lg-dragging-vertical');\r\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\r\n this.$backdrop.css('opacity', opacity);\r\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\r\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\r\n if (Math.abs(distanceY) > 100) {\r\n this.outer\r\n .addClass('lg-hide-items')\r\n .removeClass('lg-components-open');\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\r\n var _this = this;\r\n var distance;\r\n // keep slide animation for any mode while dragg/swipe\r\n if (this.settings.mode !== 'lg-slide') {\r\n this.outer.addClass('lg-slide');\r\n }\r\n // set transition duration\r\n setTimeout(function () {\r\n _this.$container.removeClass('lg-dragging-vertical');\r\n _this.outer\r\n .removeClass('lg-dragging lg-hide-items')\r\n .addClass('lg-components-open');\r\n var triggerClick = true;\r\n if (_this.swipeDirection === 'horizontal') {\r\n distance = endCoords.pageX - startCoords.pageX;\r\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\r\n if (distance < 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToNextSlide(true);\r\n triggerClick = false;\r\n }\r\n else if (distance > 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToPrevSlide(true);\r\n triggerClick = false;\r\n }\r\n }\r\n else if (_this.swipeDirection === 'vertical') {\r\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\r\n if (_this.settings.closable &&\r\n _this.settings.swipeToClose &&\r\n distance > 100) {\r\n _this.closeGallery();\r\n return;\r\n }\r\n else {\r\n _this.$backdrop.css('opacity', 1);\r\n }\r\n }\r\n _this.outer.find('.lg-item').removeAttr('style');\r\n if (triggerClick &&\r\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\r\n // Trigger click if distance is less than 5 pix\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.swipeDirection = undefined;\r\n });\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function () {\r\n if (!_this.outer.hasClass('lg-dragging') &&\r\n _this.settings.mode !== 'lg-slide') {\r\n _this.outer.removeClass('lg-slide');\r\n }\r\n }, this.settings.speed + 100);\r\n };\r\n LightGallery.prototype.enableSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n var isSwiping = false;\r\n if (this.settings.enableSwipe) {\r\n this.$inner.on('touchstart.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if (($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n !_this.outer.hasClass('lg-zoomed') &&\r\n !_this.lgBusy &&\r\n e.touches.length === 1) {\r\n isSwiping = true;\r\n _this.touchAction = 'swipe';\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n }\r\n });\r\n this.$inner.on('touchmove.lg', function (e) {\r\n if (isSwiping &&\r\n _this.touchAction === 'swipe' &&\r\n e.touches.length === 1) {\r\n endCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords, e);\r\n isMoved = true;\r\n }\r\n });\r\n this.$inner.on('touchend.lg', function (event) {\r\n if (_this.touchAction === 'swipe') {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n }\r\n else if (isSwiping) {\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.touchAction = undefined;\r\n isSwiping = false;\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.enableDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (this.settings.enableDrag) {\r\n this.outer.on('mousedown.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if ($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n isDraging = true;\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.outer.get().scrollLeft += 1;\r\n _this.outer.get().scrollLeft -= 1;\r\n // *\r\n _this.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing');\r\n _this.LGel.trigger(lGEvents.dragStart);\r\n }\r\n }\r\n }\r\n });\r\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\r\n if (isDraging && _this.lgOpened) {\r\n isMoved = true;\r\n endCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords);\r\n _this.LGel.trigger(lGEvents.dragMove);\r\n }\r\n });\r\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var target = $LG(event.target);\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n _this.LGel.trigger(lGEvents.dragEnd);\r\n }\r\n else if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.triggerPosterClick = function () {\r\n var _this = this;\r\n this.$inner.on('click.lg', function (event) {\r\n if (!_this.dragOrSwipeEnabled &&\r\n _this.isPosterElement($LG(event.target))) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageSwipeClass = function () {\r\n var _touchNext = this.index + 1;\r\n var _touchPrev = this.index - 1;\r\n if (this.settings.loop && this.galleryItems.length > 2) {\r\n if (this.index === 0) {\r\n _touchPrev = this.galleryItems.length - 1;\r\n }\r\n else if (this.index === this.galleryItems.length - 1) {\r\n _touchNext = 0;\r\n }\r\n }\r\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\r\n if (_touchPrev > -1) {\r\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\r\n }\r\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\r\n };\r\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see Demo\r\n */\r\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index + 1 < this.galleryItems.length) {\r\n this.index++;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = 0;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-right-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see Demo\r\n *\r\n */\r\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index > 0) {\r\n this.index--;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = this.galleryItems.length - 1;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-left-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.keyPress = function () {\r\n var _this = this;\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (_this.lgOpened &&\r\n _this.settings.escKey === true &&\r\n e.keyCode === 27) {\r\n e.preventDefault();\r\n if (_this.settings.allowMediaOverlap &&\r\n _this.outer.hasClass('lg-can-toggle') &&\r\n _this.outer.hasClass('lg-components-open')) {\r\n _this.outer.removeClass('lg-components-open');\r\n }\r\n else {\r\n _this.closeGallery();\r\n }\r\n }\r\n if (_this.lgOpened && _this.galleryItems.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.arrow = function () {\r\n var _this = this;\r\n this.getElementById('lg-prev').on('click.lg', function () {\r\n _this.goToPrevSlide();\r\n });\r\n this.getElementById('lg-next').on('click.lg', function () {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n LightGallery.prototype.arrowDisable = function (index) {\r\n // Disable arrows if settings.hideControlOnEnd is true\r\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\r\n var $prev = this.getElementById('lg-prev');\r\n var $next = this.getElementById('lg-next');\r\n if (index + 1 === this.galleryItems.length) {\r\n $next.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $next.removeAttr('disabled').removeClass('disabled');\r\n }\r\n if (index === 0) {\r\n $prev.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $prev.removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n };\r\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\r\n if (scaleX === void 0) { scaleX = 1; }\r\n if (scaleY === void 0) { scaleY = 1; }\r\n $el.css('transform', 'translate3d(' +\r\n xValue +\r\n 'px, ' +\r\n yValue +\r\n 'px, 0px) scale3d(' +\r\n scaleX +\r\n ', ' +\r\n scaleY +\r\n ', 1)');\r\n };\r\n LightGallery.prototype.mousewheel = function () {\r\n var _this = this;\r\n var lastCall = 0;\r\n this.outer.on('wheel.lg', function (e) {\r\n if (!e.deltaY || _this.galleryItems.length < 2) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var now = new Date().getTime();\r\n if (now - lastCall < 1000) {\r\n return;\r\n }\r\n lastCall = now;\r\n if (e.deltaY > 0) {\r\n _this.goToNextSlide();\r\n }\r\n else if (e.deltaY < 0) {\r\n _this.goToPrevSlide();\r\n }\r\n });\r\n };\r\n LightGallery.prototype.isSlideElement = function (target) {\r\n return (target.hasClass('lg-outer') ||\r\n target.hasClass('lg-item') ||\r\n target.hasClass('lg-img-wrap'));\r\n };\r\n LightGallery.prototype.isPosterElement = function (target) {\r\n var playButton = this.getSlideItem(this.index)\r\n .find('.lg-video-play-button')\r\n .get();\r\n return (target.hasClass('lg-video-poster') ||\r\n target.hasClass('lg-video-play-button') ||\r\n (playButton && playButton.contains(target.get())));\r\n };\r\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\r\n LightGallery.prototype.toggleMaximize = function () {\r\n var _this = this;\r\n this.getElementById('lg-maximize').on('click.lg', function () {\r\n _this.$container.toggleClass('lg-inline');\r\n _this.refreshOnResize();\r\n });\r\n };\r\n LightGallery.prototype.invalidateItems = function () {\r\n for (var index = 0; index < this.items.length; index++) {\r\n var element = this.items[index];\r\n var $element = $LG(element);\r\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\r\n }\r\n };\r\n LightGallery.prototype.trapFocus = function () {\r\n var _this = this;\r\n this.$container.get().focus({\r\n preventScroll: true,\r\n });\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n var focusableEls = utils.getFocusableElements(_this.$container.get());\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n else {\r\n if (document.activeElement === lastFocusableEl) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageCloseGallery = function () {\r\n var _this = this;\r\n if (!this.settings.closable)\r\n return;\r\n var mousedown = false;\r\n this.getElementById('lg-close').on('click.lg', function () {\r\n _this.closeGallery();\r\n });\r\n if (this.settings.closeOnTap) {\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n this.outer.on('mousedown.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target)) {\r\n mousedown = true;\r\n }\r\n else {\r\n mousedown = false;\r\n }\r\n });\r\n this.outer.on('mousemove.lg', function () {\r\n mousedown = false;\r\n });\r\n this.outer.on('mouseup.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target) && mousedown) {\r\n if (!_this.outer.hasClass('lg-dragging')) {\r\n _this.closeGallery();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\r\n LightGallery.prototype.closeGallery = function (force) {\r\n var _this = this;\r\n if (!this.lgOpened || (!this.settings.closable && !force)) {\r\n return 0;\r\n }\r\n this.LGel.trigger(lGEvents.beforeClose);\r\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\r\n $LG(window).scrollTop(this.prevScrollTop);\r\n }\r\n var currentItem = this.items[this.index];\r\n var transform;\r\n if (this.zoomFromOrigin && currentItem) {\r\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\r\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\r\n var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\r\n transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\r\n }\r\n if (this.zoomFromOrigin && transform) {\r\n this.outer.addClass('lg-closing lg-zoom-from-image');\r\n this.getSlideItem(this.index)\r\n .addClass('lg-start-end-progress')\r\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\r\n .css('transform', transform);\r\n }\r\n else {\r\n this.outer.addClass('lg-hide-items');\r\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\r\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\r\n this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n // Unbind all events added by lightGallery\r\n // @todo\r\n //this.$el.off('.lg.tm');\r\n this.destroyModules();\r\n this.lGalleryOn = false;\r\n this.isDummyImageRemoved = false;\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n clearTimeout(this.hideBarTimeout);\r\n this.hideBarTimeout = false;\r\n $LG('html').removeClass('lg-on');\r\n this.outer.removeClass('lg-visible lg-components-open');\r\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\r\n this.$backdrop.removeClass('in').css('opacity', 0);\r\n var removeTimeout = this.zoomFromOrigin && transform\r\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\r\n : this.settings.backdropDuration;\r\n this.$container.removeClass('lg-show-in');\r\n // Once the closign animation is completed and gallery is invisible\r\n setTimeout(function () {\r\n if (_this.zoomFromOrigin && transform) {\r\n _this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n _this.$container.removeClass('lg-show');\r\n // Reset scrollbar\r\n _this.resetScrollBar();\r\n // Need to remove inline opacity as it is used in the stylesheet as well\r\n _this.$backdrop\r\n .removeAttr('style')\r\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\r\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\r\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\r\n _this.$inner.empty();\r\n if (_this.lgOpened) {\r\n _this.LGel.trigger(lGEvents.afterClose, {\r\n instance: _this,\r\n });\r\n }\r\n if (_this.$container.get()) {\r\n _this.$container.get().blur();\r\n }\r\n _this.lgOpened = false;\r\n }, removeTimeout + 100);\r\n return removeTimeout + 100;\r\n };\r\n LightGallery.prototype.initModules = function () {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n module.init();\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\r\n }\r\n });\r\n };\r\n LightGallery.prototype.destroyModules = function (destroy) {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n if (destroy) {\r\n module.destroy();\r\n }\r\n else {\r\n module.closeGallery && module.closeGallery();\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\r\n }\r\n });\r\n };\r\n /**\r\n * Refresh lightGallery with new set of children.\r\n *\r\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\r\n *\r\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\r\n * @see Demo\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // Delete or add children, then call\r\n * plugin.refresh();\r\n *\r\n */\r\n LightGallery.prototype.refresh = function (galleryItems) {\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n if (galleryItems) {\r\n this.galleryItems = galleryItems;\r\n }\r\n else {\r\n this.galleryItems = this.getItems();\r\n }\r\n this.updateControls();\r\n this.openGalleryOnItemClick();\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n LightGallery.prototype.updateControls = function () {\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.updateCounterTotal();\r\n this.manageSingleSlideClassName();\r\n };\r\n LightGallery.prototype.destroyGallery = function () {\r\n this.destroyModules(true);\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n $LG(window).off(\".lg.global\" + this.lgId);\r\n this.LGel.off('.lg');\r\n this.$container.remove();\r\n };\r\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\r\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\r\n * You can use refresh method most of the times.\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\r\n LightGallery.prototype.destroy = function () {\r\n var closeTimeout = this.closeGallery(true);\r\n if (closeTimeout) {\r\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\r\n }\r\n else {\r\n this.destroyGallery();\r\n }\r\n return closeTimeout;\r\n };\r\n return LightGallery;\r\n}());\n\nfunction lightGallery(el, options) {\r\n return new LightGallery(el, options);\r\n}\n\nexport default lightGallery;\n//# sourceMappingURL=lightgallery.es5.js.map\n","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar videoSettings = {\r\n autoplayFirstVideo: true,\r\n youTubePlayerParams: false,\r\n vimeoPlayerParams: false,\r\n wistiaPlayerParams: false,\r\n gotoNextSlideOnVideoEnd: true,\r\n autoplayVideoOnSlide: false,\r\n videojs: false,\r\n videojsTheme: '',\r\n videojsOptions: {},\r\n};\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar param = function (obj) {\r\n return Object.keys(obj)\r\n .map(function (k) {\r\n return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);\r\n })\r\n .join('&');\r\n};\r\nvar paramsToObject = function (url) {\r\n var paramas = url\r\n .slice(1)\r\n .split('&')\r\n .map(function (p) { return p.split('='); })\r\n .reduce(function (obj, pair) {\r\n var _a = pair.map(decodeURIComponent), key = _a[0], value = _a[1];\r\n obj[key] = value;\r\n return obj;\r\n }, {});\r\n return paramas;\r\n};\r\nvar getYouTubeParams = function (videoInfo, youTubePlayerParamsSettings) {\r\n if (!videoInfo.youtube)\r\n return '';\r\n var slideUrlParams = videoInfo.youtube[2]\r\n ? paramsToObject(videoInfo.youtube[2])\r\n : '';\r\n // For youtube first params gets priority if duplicates found\r\n var defaultYouTubePlayerParams = {\r\n wmode: 'opaque',\r\n autoplay: 0,\r\n mute: 1,\r\n enablejsapi: 1,\r\n };\r\n var playerParamsSettings = youTubePlayerParamsSettings || {};\r\n var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);\r\n var youTubeParams = \"?\" + param(youTubePlayerParams);\r\n return youTubeParams;\r\n};\r\nvar isYouTubeNoCookie = function (url) {\r\n return url.includes('youtube-nocookie.com');\r\n};\r\nvar getVimeoURLParams = function (defaultParams, videoInfo) {\r\n if (!videoInfo || !videoInfo.vimeo)\r\n return '';\r\n var urlParams = videoInfo.vimeo[2] || '';\r\n var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0\r\n ? '&' + param(defaultParams)\r\n : '';\r\n // Support private video\r\n var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';\r\n var urlWithHashWithParams = urlWithHash.split('?')[0] || '';\r\n var hash = urlWithHashWithParams.split('#')[0];\r\n var isPrivate = videoInfo.vimeo[1] !== hash;\r\n if (isPrivate) {\r\n urlParams = urlParams.replace(\"/\" + hash, '');\r\n }\r\n urlParams =\r\n urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';\r\n // For vimeo last params gets priority if duplicates found\r\n var vimeoPlayerParams = \"?autoplay=0&muted=1\" + (isPrivate ? \"&h=\" + hash : '') + defaultPlayerParams + urlParams;\r\n return vimeoPlayerParams;\r\n};\n\n/**\r\n * Video module for lightGallery\r\n * Supports HTML5, YouTube, Vimeo, wistia videos\r\n *\r\n *\r\n * @ref Wistia\r\n * https://wistia.com/support/integrations/wordpress(How to get url)\r\n * https://wistia.com/support/developers/embed-options#using-embed-options\r\n * https://wistia.com/support/developers/player-api\r\n * https://wistia.com/support/developers/construct-an-embed-code\r\n * http://jsfiddle.net/xvnm7xLm/\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video\r\n * https://wistia.com/support/embed-and-share/sharing-videos\r\n * https://private-sharing.wistia.com/medias/mwhrulrucj\r\n *\r\n * @ref Youtube\r\n * https://developers.google.com/youtube/player_parameters#enablejsapi\r\n * https://developers.google.com/youtube/iframe_api_reference\r\n * https://developer.chrome.com/blog/autoplay/#iframe-delegation\r\n *\r\n * @ref Vimeo\r\n * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url\r\n * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode\r\n * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters\r\n */\r\nvar Video = /** @class */ (function () {\r\n function Video(instance) {\r\n // get lightGallery core plugin instance\r\n this.core = instance;\r\n this.settings = __assign(__assign({}, videoSettings), this.core.settings);\r\n return this;\r\n }\r\n Video.prototype.init = function () {\r\n var _this = this;\r\n /**\r\n * Event triggered when video url found without poster\r\n * Append video HTML\r\n * Play if autoplayFirstVideo is true\r\n */\r\n this.core.LGel.on(lGEvents.hasVideo + \".video\", this.onHasVideo.bind(this));\r\n this.core.LGel.on(lGEvents.posterClick + \".video\", function () {\r\n var $el = _this.core.getSlideItem(_this.core.index);\r\n _this.loadVideoOnPosterClick($el);\r\n });\r\n this.core.LGel.on(lGEvents.slideItemLoad + \".video\", this.onSlideItemLoad.bind(this));\r\n // @desc fired immediately before each slide transition.\r\n this.core.LGel.on(lGEvents.beforeSlide + \".video\", this.onBeforeSlide.bind(this));\r\n // @desc fired immediately after each slide transition.\r\n this.core.LGel.on(lGEvents.afterSlide + \".video\", this.onAfterSlide.bind(this));\r\n };\r\n /**\r\n * @desc Event triggered when a slide is completely loaded\r\n *\r\n * @param {Event} event - lightGalley custom event\r\n */\r\n Video.prototype.onSlideItemLoad = function (event) {\r\n var _this = this;\r\n var _a = event.detail, isFirstSlide = _a.isFirstSlide, index = _a.index;\r\n // Should check the active slide as well as user may have moved to different slide before the first slide is loaded\r\n if (this.settings.autoplayFirstVideo &&\r\n isFirstSlide &&\r\n index === this.core.index) {\r\n // Delay is just for the transition effect on video load\r\n setTimeout(function () {\r\n _this.loadAndPlayVideo(index);\r\n }, 200);\r\n }\r\n // Should not call on first slide. should check only if the slide is active\r\n if (!isFirstSlide &&\r\n this.settings.autoplayVideoOnSlide &&\r\n index === this.core.index) {\r\n this.loadAndPlayVideo(index);\r\n }\r\n };\r\n /**\r\n * @desc Event triggered when video url or poster found\r\n * Append video HTML is poster is not given\r\n * Play if autoplayFirstVideo is true\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n */\r\n Video.prototype.onHasVideo = function (event) {\r\n var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;\r\n if (!hasPoster) {\r\n // All functions are called separately if poster exist in loadVideoOnPosterClick function\r\n this.appendVideos(this.core.getSlideItem(index), {\r\n src: src,\r\n addClass: 'lg-object',\r\n index: index,\r\n html5Video: html5Video,\r\n });\r\n // Automatically navigate to next slide once video reaches the end.\r\n this.gotoNextSlideOnVideoEnd(src, index);\r\n }\r\n };\r\n /**\r\n * @desc fired immediately before each slide transition.\r\n * Pause the previous video\r\n * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n * @param {number} prevIndex - Previous index of the slide.\r\n * @param {number} index - Current index of the slide\r\n */\r\n Video.prototype.onBeforeSlide = function (event) {\r\n if (this.core.lGalleryOn) {\r\n var prevIndex = event.detail.prevIndex;\r\n this.pauseVideo(prevIndex);\r\n }\r\n };\r\n /**\r\n * @desc fired immediately after each slide transition.\r\n * Play video if autoplayVideoOnSlide option is enabled.\r\n *\r\n * @param {Event} event - Javascript Event object.\r\n * @param {number} prevIndex - Previous index of the slide.\r\n * @param {number} index - Current index of the slide\r\n * @todo should check on onSlideLoad as well if video is not loaded on after slide\r\n */\r\n Video.prototype.onAfterSlide = function (event) {\r\n var _this = this;\r\n var _a = event.detail, index = _a.index, prevIndex = _a.prevIndex;\r\n // Do not call on first slide\r\n var $slide = this.core.getSlideItem(index);\r\n if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {\r\n if ($slide.hasClass('lg-complete')) {\r\n setTimeout(function () {\r\n _this.loadAndPlayVideo(index);\r\n }, 100);\r\n }\r\n }\r\n };\r\n Video.prototype.loadAndPlayVideo = function (index) {\r\n var $slide = this.core.getSlideItem(index);\r\n var currentGalleryItem = this.core.galleryItems[index];\r\n if (currentGalleryItem.poster) {\r\n this.loadVideoOnPosterClick($slide, true);\r\n }\r\n else {\r\n this.playVideo(index);\r\n }\r\n };\r\n /**\r\n * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\r\n * @param {number} index - Index of the slide\r\n */\r\n Video.prototype.playVideo = function (index) {\r\n this.controlVideo(index, 'play');\r\n };\r\n /**\r\n * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.\r\n * @param {number} index - Index of the slide\r\n */\r\n Video.prototype.pauseVideo = function (index) {\r\n this.controlVideo(index, 'pause');\r\n };\r\n Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {\r\n var video = '';\r\n var videoInfo = this.core.galleryItems[index]\r\n .__slideVideoInfo || {};\r\n var currentGalleryItem = this.core.galleryItems[index];\r\n var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;\r\n videoTitle = videoTitle ? 'title=\"' + videoTitle + '\"' : '';\r\n var commonIframeProps = \"allowtransparency=\\\"true\\\"\\n frameborder=\\\"0\\\"\\n scrolling=\\\"no\\\"\\n allowfullscreen\\n mozallowfullscreen\\n webkitallowfullscreen\\n oallowfullscreen\\n msallowfullscreen\";\r\n if (videoInfo.youtube) {\r\n var videoId = 'lg-youtube' + index;\r\n var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);\r\n var isYouTubeNoCookieURL = isYouTubeNoCookie(src);\r\n var youtubeURL = isYouTubeNoCookieURL\r\n ? '//www.youtube-nocookie.com/'\r\n : '//www.youtube.com/';\r\n video = \"\";\r\n }\r\n else if (videoInfo.vimeo) {\r\n var videoId = 'lg-vimeo' + index;\r\n var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);\r\n video = \"\";\r\n }\r\n else if (videoInfo.wistia) {\r\n var wistiaId = 'lg-wistia' + index;\r\n var playerParams = param(this.settings.wistiaPlayerParams);\r\n playerParams = playerParams ? '?' + playerParams : '';\r\n video = \"\";\r\n }\r\n else if (videoInfo.html5) {\r\n var html5VideoMarkup = '';\r\n for (var i = 0; i < html5Video.source.length; i++) {\r\n html5VideoMarkup += \"\";\r\n }\r\n if (html5Video.tracks) {\r\n var _loop_1 = function (i) {\r\n var trackAttributes = '';\r\n var track = html5Video.tracks[i];\r\n Object.keys(track || {}).forEach(function (key) {\r\n trackAttributes += key + \"=\\\"\" + track[key] + \"\\\" \";\r\n });\r\n html5VideoMarkup += \"\";\r\n };\r\n for (var i = 0; i < html5Video.tracks.length; i++) {\r\n _loop_1(i);\r\n }\r\n }\r\n var html5VideoAttrs_1 = '';\r\n var videoAttributes_1 = html5Video.attributes || {};\r\n Object.keys(videoAttributes_1 || {}).forEach(function (key) {\r\n html5VideoAttrs_1 += key + \"=\\\"\" + videoAttributes_1[key] + \"\\\" \";\r\n });\r\n video = \"\";\r\n }\r\n return video;\r\n };\r\n /**\r\n * @desc - Append videos to the slide\r\n *\r\n * @param {HTMLElement} el - slide element\r\n * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo\r\n */\r\n Video.prototype.appendVideos = function (el, videoParams) {\r\n var _a;\r\n var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);\r\n el.find('.lg-video-cont').append(videoHtml);\r\n var $videoElement = el.find('.lg-video-object').first();\r\n if (videoParams.html5Video) {\r\n $videoElement.on('mousedown.lg.video', function (e) {\r\n e.stopPropagation();\r\n });\r\n }\r\n if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {\r\n try {\r\n return videojs($videoElement.get(), this.settings.videojsOptions);\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included videojs');\r\n }\r\n }\r\n };\r\n Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {\r\n var _this = this;\r\n var $videoElement = this.core\r\n .getSlideItem(index)\r\n .find('.lg-video-object')\r\n .first();\r\n var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\r\n if (this.settings.gotoNextSlideOnVideoEnd) {\r\n if (videoInfo.html5) {\r\n $videoElement.on('ended', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n }\r\n else if (videoInfo.vimeo) {\r\n try {\r\n // https://github.com/vimeo/player.js/#ended\r\n new Vimeo.Player($videoElement.get()).on('ended', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');\r\n }\r\n }\r\n else if (videoInfo.wistia) {\r\n try {\r\n window._wq = window._wq || [];\r\n // @todo Event is gettign triggered multiple times\r\n window._wq.push({\r\n id: $videoElement.attr('id'),\r\n onReady: function (video) {\r\n video.bind('end', function () {\r\n _this.core.goToNextSlide();\r\n });\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');\r\n }\r\n }\r\n }\r\n };\r\n Video.prototype.controlVideo = function (index, action) {\r\n var $videoElement = this.core\r\n .getSlideItem(index)\r\n .find('.lg-video-object')\r\n .first();\r\n var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};\r\n if (!$videoElement.get())\r\n return;\r\n if (videoInfo.youtube) {\r\n try {\r\n $videoElement.get().contentWindow.postMessage(\"{\\\"event\\\":\\\"command\\\",\\\"func\\\":\\\"\" + action + \"Video\\\",\\\"args\\\":\\\"\\\"}\", '*');\r\n }\r\n catch (e) {\r\n console.error(\"lightGallery:- \" + e);\r\n }\r\n }\r\n else if (videoInfo.vimeo) {\r\n try {\r\n new Vimeo.Player($videoElement.get())[action]();\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');\r\n }\r\n }\r\n else if (videoInfo.html5) {\r\n if (this.settings.videojs) {\r\n try {\r\n videojs($videoElement.get())[action]();\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included videojs');\r\n }\r\n }\r\n else {\r\n $videoElement.get()[action]();\r\n }\r\n }\r\n else if (videoInfo.wistia) {\r\n try {\r\n window._wq = window._wq || [];\r\n // @todo Find a way to destroy wistia player instance\r\n window._wq.push({\r\n id: $videoElement.attr('id'),\r\n onReady: function (video) {\r\n video[action]();\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');\r\n }\r\n }\r\n };\r\n Video.prototype.loadVideoOnPosterClick = function ($el, forcePlay) {\r\n var _this = this;\r\n // check slide has poster\r\n if (!$el.hasClass('lg-video-loaded')) {\r\n // check already video element present\r\n if (!$el.hasClass('lg-has-video')) {\r\n $el.addClass('lg-has-video');\r\n var _html = void 0;\r\n var _src = this.core.galleryItems[this.core.index].src;\r\n var video = this.core.galleryItems[this.core.index].video;\r\n if (video) {\r\n _html =\r\n typeof video === 'string' ? JSON.parse(video) : video;\r\n }\r\n var videoJsPlayer_1 = this.appendVideos($el, {\r\n src: _src,\r\n addClass: '',\r\n index: this.core.index,\r\n html5Video: _html,\r\n });\r\n this.gotoNextSlideOnVideoEnd(_src, this.core.index);\r\n var $tempImg = $el.find('.lg-object').first().get();\r\n // @todo make sure it is working\r\n $el.find('.lg-video-cont').first().append($tempImg);\r\n $el.addClass('lg-video-loading');\r\n videoJsPlayer_1 &&\r\n videoJsPlayer_1.ready(function () {\r\n videoJsPlayer_1.on('loadedmetadata', function () {\r\n _this.onVideoLoadAfterPosterClick($el, _this.core.index);\r\n });\r\n });\r\n $el.find('.lg-video-object')\r\n .first()\r\n .on('load.lg error.lg loadedmetadata.lg', function () {\r\n setTimeout(function () {\r\n _this.onVideoLoadAfterPosterClick($el, _this.core.index);\r\n }, 50);\r\n });\r\n }\r\n else {\r\n this.playVideo(this.core.index);\r\n }\r\n }\r\n else if (forcePlay) {\r\n this.playVideo(this.core.index);\r\n }\r\n };\r\n Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {\r\n $el.addClass('lg-video-loaded');\r\n this.playVideo(index);\r\n };\r\n Video.prototype.destroy = function () {\r\n this.core.LGel.off('.lg.video');\r\n this.core.LGel.off('.video');\r\n };\r\n return Video;\r\n}());\n\nexport default Video;\n//# sourceMappingURL=lg-video.es5.js.map\n","import lightGallery from \"lightgallery\";\r\n// import { LightGalleryCoreStrings } from \"lightgallery/lg-settings\";\r\n\r\n// Plugins\r\nimport lgVideo from \"lightgallery/plugins/video\";\r\n\r\nexport default (container) => {\r\n lightGallery(container, {\r\n plugins: [lgVideo],\r\n speed: 500,\r\n download: false,\r\n closeOnTap: false,\r\n hideScrollbar: true,\r\n defaultCaptionHeight: 150,\r\n supportLegacyBrowser: false,\r\n mobileSettings: { controls: true },\r\n // strings: { mediaLoadingFailed: \"test\" } as LightGalleryCoreStrings,\r\n // ... other settings\r\n });\r\n\r\n const subs = document.querySelectorAll(\".lg-sub-html\");\r\n subs.forEach((sub) => sub.classList.add(\"line-clamp-5\", \"!pb-1\"));\r\n};\r\n","/**\r\n * Handle analytics\r\n *\r\n * @param container {HTMLElement} data atribut element\r\n */\r\n\r\nconst Analytics = (container) => {\r\n const { dataLayer } = window;\r\n\r\n const TriggerClick = () => {\r\n dataLayer.push(JSON.parse(container.dataset.analytics));\r\n };\r\n\r\n container.addEventListener(\"click\", TriggerClick);\r\n};\r\n\r\nexport default Analytics;\r\n","/**\r\n * Handle analytics\r\n *\r\n * @param container {HTMLElement} data atribut element\r\n */\r\n\r\nconst Analytics = (container) => {\r\n const { dataLayer } = window;\r\n\r\n document.addEventListener(\"scrollend\", () => {\r\n if (container.classList.contains(\"sticky\")) {\r\n if (container.classList.contains(\"is-active\")) {\r\n if (!container.classList.contains(\"is-showing\")) {\r\n dataLayer.push(JSON.parse(container.dataset.analyticsView));\r\n container.classList.add(\"is-showing\");\r\n }\r\n } else {\r\n container.classList.remove(\"is-showing\");\r\n }\r\n }\r\n });\r\n\r\n if (!container.classList.contains(\"sticky\")) {\r\n dataLayer.push(JSON.parse(container.dataset.analyticsView));\r\n }\r\n};\r\n\r\nexport default Analytics;\r\n","/**\r\n * Handle personalizable analytics\r\n *\r\n * @param container {HTMLElement} data atribut element\r\n */\r\n\r\nconst AnalyticsPersonalizable = (container) => {\r\n const { dataLayer } = window;\r\n\r\n const TriggerClick = () => {\r\n const child = container.querySelector(\"[data-analytics-personalized]\");\r\n\r\n if (child) {\r\n dataLayer.push(JSON.parse(child.dataset.analyticsPersonalized));\r\n } else {\r\n dataLayer.push(JSON.parse(container.dataset.analyticsPersonalizable));\r\n }\r\n };\r\n\r\n container.addEventListener(\"click\", TriggerClick);\r\n};\r\n\r\nexport default AnalyticsPersonalizable;\r\n","/**\r\n * Handle analytics in wysiwyg container\r\n *\r\n * @param container {HTMLElement} data atribut element\r\n */\r\n\r\nconst AnalyticsContent = (container) => {\r\n const { dataLayer } = window;\r\n\r\n container.querySelectorAll(\"a\").forEach((anchor) => {\r\n const link = anchor.getAttribute(\"href\");\r\n const content = anchor.textContent.replace(/(<([^>]+)>)/gi, \"\");\r\n\r\n const analytics = container.dataset.analyticsContent\r\n .replace(\"LINK\", link)\r\n .replace(\"TITLE\", content)\r\n .trim();\r\n\r\n const TriggerClick = () => {\r\n dataLayer.push(JSON.parse(analytics));\r\n };\r\n\r\n anchor.addEventListener(\"click\", TriggerClick);\r\n });\r\n};\r\n\r\nexport default AnalyticsContent;\r\n","import Sticky from \"sticky-js\";\r\n\r\nexport default () => {\r\n const isMatchingMediaQuery = (mediaQuery: string): boolean => {\r\n return window.matchMedia(mediaQuery).matches;\r\n };\r\n\r\n if (isMatchingMediaQuery(\"(max-width: 991px)\")) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const sticky = new Sticky(\".sticky-mobile\");\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const sticky2 = new Sticky(\".sticky-desktop\");\r\n }\r\n};\r\n","/**\r\n * Handle Session Storage\r\n *\r\n * @param container {HTMLElement} container element\r\n */\r\nconst MarketingAlertStripe = (container) => {\r\n const close = container.querySelector(\".js-marketingAlertStrip-close\");\r\n const { id } = container.dataset;\r\n\r\n const isHidden = sessionStorage.getItem(id) === \"true\";\r\n\r\n if (!isHidden) {\r\n container.classList.add(\"sm:block\");\r\n }\r\n\r\n close.addEventListener(\"click\", () => {\r\n sessionStorage.setItem(id, \"true\");\r\n container.classList.remove(\"sm:block\");\r\n });\r\n\r\n // Function to detect Retina display\r\n const isRetina = () => {\r\n return window.devicePixelRatio > 1.1;\r\n };\r\n\r\n // Set the correct image based on the display type\r\n const backgroundElement = document.querySelector(\".marketing-alert-stripe\") as HTMLElement;\r\n const imageUrl = backgroundElement.dataset.image;\r\n const retinaImageUrl = backgroundElement.dataset.imageRetina;\r\n\r\n if (isRetina() && retinaImageUrl) {\r\n backgroundElement.style.backgroundImage = `url(${retinaImageUrl})`;\r\n } else {\r\n backgroundElement.style.backgroundImage = `url(${imageUrl})`;\r\n }\r\n};\r\n\r\nexport default MarketingAlertStripe;\r\n","/**\r\n * Handle Session Storage\r\n *\r\n * @param container {HTMLElement} container element\r\n */\r\nconst MarketingAlertStripeMob = (container) => {\r\n const close = container.querySelector(\".js-marketingAlertStrip-close\");\r\n const { id } = container.dataset;\r\n\r\n const isHidden = sessionStorage.getItem(id) === \"true\";\r\n\r\n if (!isHidden) {\r\n container.classList.remove(\"hidden\");\r\n }\r\n\r\n // Function to detect Retina display\r\n const isRetina = () => {\r\n return window.devicePixelRatio > 1.1;\r\n };\r\n\r\n // Set the correct image based on the display type\r\n const backgroundElement = document.querySelector(\".js-marketingAlertStripe-mob\") as HTMLElement;\r\n const imageUrl = backgroundElement.dataset.image;\r\n const retinaImageUrl = backgroundElement.dataset.imageRetina;\r\n\r\n if (isRetina() && retinaImageUrl) {\r\n backgroundElement.style.backgroundImage = `url(${retinaImageUrl})`;\r\n } else {\r\n backgroundElement.style.backgroundImage = `url(${imageUrl})`;\r\n }\r\n\r\n close.addEventListener(\"click\", () => {\r\n sessionStorage.setItem(id, \"true\");\r\n container.classList.add(\"hidden\");\r\n });\r\n};\r\n\r\nexport default MarketingAlertStripeMob;\r\n","const interactiveComponent = (container: HTMLElement) => {\r\n const tabContent = container.querySelectorAll(\".container__inner\");\r\n const tabItem = container.querySelectorAll(\".container__item\");\r\n\r\n const resetTabs = () => {\r\n tabContent.forEach((item) => {\r\n item.classList.add(\"container__inner_hidden\");\r\n const videos = item.querySelectorAll(\"video\");\r\n videos.forEach((video) => {\r\n if (video) {\r\n video.pause();\r\n // eslint-disable-next-line no-param-reassign\r\n video.currentTime = 0; // Reset video to the start\r\n }\r\n });\r\n });\r\n tabItem.forEach((item) => item.classList.remove(\"container__item_active\"));\r\n };\r\n\r\n const showTabFromHash = () => {\r\n const { hash } = window.location;\r\n if (!hash) return;\r\n const activeItem = Array.from(tabItem).find((item) => item.querySelector(`a[href=\"${hash}\"]`));\r\n if (!activeItem) return;\r\n\r\n resetTabs();\r\n\r\n const activeContent = container.querySelector(hash);\r\n if (activeContent && activeItem) {\r\n activeContent.classList.remove(\"container__inner_hidden\");\r\n activeItem.classList.add(\"container__item_active\");\r\n\r\n const videos = activeContent.querySelectorAll(\"video\");\r\n videos.forEach((video) => {\r\n if (video) {\r\n video.play(); // Play video when the tab is activated\r\n }\r\n });\r\n }\r\n };\r\n\r\n tabItem.forEach((item) => {\r\n item.addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n const hash = item.querySelector(\"a\")?.getAttribute(\"href\");\r\n if (hash) {\r\n // Použijeme replaceState, aby se URL změnila bez scrollování\r\n // eslint-disable-next-line no-restricted-globals\r\n history.replaceState(null, \"\", hash);\r\n showTabFromHash(); // Manually trigger the tab switch on click\r\n }\r\n });\r\n });\r\n\r\n window.addEventListener(\"hashchange\", showTabFromHash);\r\n showTabFromHash(); // Initialize based on the current hash\r\n};\r\n\r\nexport default interactiveComponent;\r\n","/*!\n * Glide.js v3.6.2\n * (c) 2013-2024 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n var properties = ['direction', 'type', 'slide', 'arrow', 'nav'];\n properties.forEach(function (property) {\n if (settings.classes.hasOwnProperty(property)) {\n options.classes[property] = _objectSpread2(_objectSpread2({}, defaults.classes[property]), settings.classes[property]);\n }\n });\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout, context, args, result;\n var previous = 0;\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (r !== null) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n Html._t = t;\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length > 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (disabled) {\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n item === null || item === void 0 ? void 0 : item.classList.remove(Glide.settings.classes.nav.active);\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n var arrowSymbols = {\n ArrowRight: '>',\n ArrowLeft: '<'\n };\n\n if (['ArrowRight', 'ArrowLeft'].includes(event.code)) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe).concat(arrowSymbols[event.code])));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n}(Glide$1);\n\nexport { Glide as default };\n","import Glide from \"@glidejs/glide\";\r\n\r\nexport default (container: HTMLElement) => {\r\n const { dataLayer } = window;\r\n\r\n // Function to set equal height for all slides\r\n const setEqualHeight = () => {\r\n const slides = document.querySelectorAll(\".glide__content\");\r\n let maxHeight = 0;\r\n\r\n slides.forEach((slide) => {\r\n const slideHeight = slide.offsetHeight;\r\n if (slideHeight > maxHeight) {\r\n maxHeight = slideHeight;\r\n }\r\n });\r\n\r\n slides.forEach((slide) => {\r\n // eslint-disable-next-line no-param-reassign\r\n slide.style.height = `${maxHeight}px`;\r\n });\r\n };\r\n\r\n // Function to update the URL hash based on the slide index\r\n const updateHash = (index: number) => {\r\n window.location.hash = `slide-${index + 1}`;\r\n };\r\n\r\n // Function to get the slide index from the URL hash\r\n const getSlideIndexFromHash = (): number => {\r\n const { hash } = window.location;\r\n if (hash) {\r\n const index = parseInt(hash.replace(\"#slide-\", \"\"), 10) - 1;\r\n return Number.isNaN(index) ? 0 : index;\r\n }\r\n return 0;\r\n };\r\n\r\n // Function to handle video playback based on the active slide\r\n const handleVideoPlayback = (activeIndex: number) => {\r\n const fullSlides = container.querySelectorAll(\".glide__slide\");\r\n fullSlides.forEach((slideVideo, index) => {\r\n const video = slideVideo.querySelector(\"video\");\r\n if (video) {\r\n if (index === activeIndex) {\r\n video.play();\r\n } else {\r\n // video.pause();\r\n video.currentTime = 0; // Reset the video to the beginning\r\n }\r\n }\r\n });\r\n };\r\n\r\n // Function to handle analytics for the active slide\r\n const handleAnalytics = () => {\r\n const activeSlide = container.querySelector(\".glide__slide--active\");\r\n if (activeSlide) {\r\n const analyticsData = activeSlide.dataset.analyticsView;\r\n if (analyticsData) {\r\n dataLayer.push(JSON.parse(analyticsData));\r\n }\r\n }\r\n };\r\n\r\n // Check viewport width\r\n const isMobileViewport = () => window.innerWidth <= 991;\r\n\r\n const slides = container.querySelectorAll(\".glide__content\");\r\n\r\n // Initialize Glide only if on mobile viewport\r\n if (isMobileViewport() && slides.length > 1) {\r\n const glide = new Glide(container, {\r\n type: \"carousel\",\r\n gap: 16,\r\n peek: 48,\r\n startAt: getSlideIndexFromHash(),\r\n });\r\n\r\n glide.on(\"move.after\", () => {\r\n updateHash(glide.index);\r\n handleVideoPlayback(glide.index);\r\n });\r\n\r\n glide.on(\"run.after\", () => {\r\n handleAnalytics();\r\n });\r\n\r\n glide.mount();\r\n\r\n setEqualHeight();\r\n window.addEventListener(\"resize\", () => {\r\n if (isMobileViewport()) {\r\n setEqualHeight();\r\n } else {\r\n // Optional: clean up styles or Glide instance when switching to a larger viewport\r\n slides.forEach((slide) => {\r\n const slideElement = slide as HTMLElement;\r\n slideElement.style.height = \"\";\r\n });\r\n }\r\n });\r\n\r\n // Initial check to play the video in the first visible slide\r\n handleVideoPlayback(getSlideIndexFromHash());\r\n } else if (slides.length <= 1) {\r\n const glideElement = container.querySelector(\".glide\");\r\n if (glideElement) {\r\n glideElement.classList.add(\"p-8\");\r\n }\r\n const bulletsElement = container.querySelector(\".glide__bullets\");\r\n if (bulletsElement) {\r\n bulletsElement.classList.add(\"hidden\");\r\n }\r\n const arrowsElement = container.querySelector(\".glide__arrows\");\r\n if (arrowsElement) {\r\n arrowsElement.classList.add(\"hidden\");\r\n }\r\n container.classList.add(\"!mb-4\");\r\n }\r\n};\r\n","/**\r\n * Handle button in CKEditor\r\n *\r\n * @param container {HTMLElement} data atribut element\r\n */\r\n\r\nconst ButtonKentico = (element) => {\r\n if (element.dataset.buttonlink) {\r\n element.href = element.dataset.buttonlink;\r\n }\r\n};\r\n\r\nexport default ButtonKentico;\r\n","import React from \"react\";\r\nimport classname from \"classnames\";\r\n\r\nimport { IconOld } from \"@partials\";\r\n\r\ninterface ButtonParentProps {\r\n template: \"primary\" | \"secondary\" | \"tertiary\";\r\n isLoading?: boolean;\r\n isDisabled?: boolean;\r\n type?: \"button\" | \"submit\";\r\n onClick?: () => void;\r\n href?: string;\r\n target?: TargetType;\r\n prefix?: IconName;\r\n suffix?: IconName;\r\n dataTestId?: string;\r\n}\r\n\r\ninterface Props extends ButtonParentProps {\r\n title: string;\r\n}\r\n\r\ninterface ButtonParentType {\r\n parentProps: ButtonParentProps;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst ButtonParent = ({ parentProps, children }: ButtonParentType): JSX.Element => {\r\n const {\r\n template,\r\n href,\r\n isDisabled,\r\n isLoading,\r\n onClick,\r\n target,\r\n type = \"submit\",\r\n prefix,\r\n suffix,\r\n dataTestId,\r\n } = parentProps;\r\n\r\n const classes = classname(\"btn\", `btn--${template}`, {\r\n \"btn--disabled\": isDisabled,\r\n \"btn--loading\": isLoading,\r\n \"btn--w-prefix\": !!prefix,\r\n \"btn--w-suffix\": !!suffix,\r\n });\r\n\r\n const handleOnClick = (): void => {\r\n if (isDisabled || isLoading) return;\r\n\r\n onClick();\r\n };\r\n\r\n if (href) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst Button: React.FC = ({ title, ...props }) => {\r\n return (\r\n \r\n {props?.prefix && }\r\n\r\n {title}\r\n\r\n {props?.suffix && }\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React from \"react\";\r\n\r\nimport { AlertType } from \"@constants\";\r\n\r\nimport { IconOld } from \".\";\r\n\r\ninterface Props {\r\n type?: string;\r\n title?: string;\r\n text: string;\r\n className?: string;\r\n noPadding?: boolean;\r\n alertSource?: string;\r\n textAttributes?: React.DetailedHTMLProps, HTMLDivElement>;\r\n}\r\n\r\nconst INFO_BG = \"bg-transparent\";\r\nconst INFO_ICON = \"info-circle-grey\";\r\n\r\nconst Alert: React.FC = ({\r\n type = AlertType.Info,\r\n title,\r\n text,\r\n className = \"\",\r\n noPadding,\r\n alertSource = \"0\",\r\n textAttributes,\r\n}) => {\r\n const getBgColor = () => {\r\n if (type === AlertType.Info) return INFO_BG;\r\n if (type === AlertType.Warning) return \"bg-white\";\r\n if (type === AlertType.Error) return \"bg-red-5\";\r\n if (type === AlertType.Success) return \"bg-success-background\";\r\n return INFO_BG;\r\n };\r\n\r\n const getIconName = (): IconName => {\r\n if (type === AlertType.Info) return INFO_ICON;\r\n if (type === AlertType.Warning) return \"info-circle-red\";\r\n if (type === AlertType.Error) return \"cross-mark\";\r\n if (type === AlertType.Success) return \"check-circle\";\r\n return INFO_ICON;\r\n };\r\n\r\n const getFillColor = () => {\r\n if (type === AlertType.Info) return \"fill-grey-80\";\r\n if (type === AlertType.Warning) return \"fill-red-corporate\";\r\n if (type === AlertType.Error) return \"fill-red-corporate\";\r\n if (type === AlertType.Success) return \"fill-success-icon\";\r\n return INFO_ICON;\r\n };\r\n\r\n const getTitle = () => {\r\n if (type === AlertType.Info) return title;\r\n if (type === AlertType.Warning) return title;\r\n if (type === AlertType.Error) return title;\r\n if (type === AlertType.Success) return title;\r\n return INFO_ICON;\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n {title && {getTitle()}:}\r\n {text}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Alert;\r\n","// Do not modify this file manually! This file was generated by \"npm run generate:icon\" script\r\n\r\nimport React, { SVGProps } from \"react\";\r\n\r\ninterface Props {\r\n name: IconName | string;\r\n className?: string;\r\n svgAttributes?: SVGProps;\r\n}\r\n\r\nconst IconOld: React.FC = ({ name, className, svgAttributes }) => {\r\n switch (name) {\r\n /**\r\n * === SIMPLE ICONS\r\n * DO NOT DELETE - refactor later when possible.\r\n * Used now in: 'Alert.tsx'.\r\n *\r\n * */\r\n case \"info-circle-grey\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n case \"info-circle-red\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n case \"cross-mark\":\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n case \"check-circle\":\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n\r\n /**\r\n * === FLAGS\r\n * DO NOT DELETE - refactor later when possible.\r\n * Used now in: 'Exchange Rates Detail' table.\r\n *\r\n * */\r\n case \"flag_icon_hu\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_jp\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_ru\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_ch\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_pl\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_au\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_hr\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_dk\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_gb\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_se\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_no\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_bg\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_us\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_ro\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_tr\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_eu\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_cn\":\r\n return (\r\n \r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n {\" \"}\r\n \r\n {\" \"}\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n );\r\n\r\n case \"flag_icon_ca\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"flag_icon_cz\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n // === DEFAULT\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nexport default IconOld;\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n name: IconName;\r\n viewBox: string;\r\n alt: string;\r\n svg: string;\r\n className?: string;\r\n id?: string;\r\n}\r\n\r\n/**\r\n * Main ICON component for the web parts written in React.\r\n * @param {string} name - The name of the icon.\r\n * @param {string} viewBox - The viewBox attribute of the SVG element.\r\n * @param {string} alt - Provides the SVG element with an accessible name via 'aria-labelledby'.\r\n * @param {string} svg - The SVG string to render.\r\n * @param {string} [className] - [optional] The className attribute of the SVG element.\r\n * @param {string} [id] - [optional] The ID of the SVG element.\r\n *\r\n * @returns {ReactElement} Rendered SVG element.\r\n */\r\n\r\nconst Icon: React.FC = ({ name, viewBox, alt, svg, className, id }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Icon;\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n name: string;\r\n labelText: string;\r\n className?: string;\r\n items: Array<{ slug: string; title: string }>;\r\n activeQuery: string;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n}\r\n\r\nconst Select: React.FC = ({\r\n handleOnChange,\r\n labelText,\r\n activeQuery,\r\n className = \"\",\r\n items,\r\n name,\r\n}) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Select;\r\n","import React from \"react\";\r\n\r\ninterface Props {\r\n className?: string;\r\n}\r\n\r\nconst Loader: React.FC = ({ className }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { DownloadsLinksItem } from \"../widgets/ExchangeRatesList/types\";\r\n\r\ntype RatesDownloadsProps = {\r\n isVisible?: boolean;\r\n title?: string;\r\n links?: DownloadsLinksItem[];\r\n iconsList: any;\r\n apiUrl?: string;\r\n cultureCode?: string;\r\n fromDate?: string;\r\n toDate?: string;\r\n timeFrame?: string;\r\n currency?: string;\r\n isSK?: boolean;\r\n};\r\n\r\nconst RatesDownloads: React.FC = ({\r\n isVisible,\r\n title,\r\n links,\r\n iconsList,\r\n apiUrl,\r\n cultureCode,\r\n fromDate,\r\n toDate,\r\n timeFrame,\r\n currency,\r\n isSK,\r\n}) => {\r\n if (!isVisible) return null;\r\n\r\n const { download } = iconsList;\r\n\r\n const handleOnClick = (dataAnalytics, downloadUrl) => {\r\n const { dataLayer } = window;\r\n dataLayer.push(JSON.parse(dataAnalytics));\r\n window.location.href = downloadUrl;\r\n };\r\n\r\n return (\r\n
\r\n

{title}

\r\n\r\n {links.map((link) => {\r\n // /api/exchangerate/downloadexchangerates?cultureCode=cs-CZ&format=xls\r\n let downloadUrl = `${apiUrl}?cultureCode=${cultureCode}&format=${link.extension}`;\r\n\r\n if (isSK) {\r\n downloadUrl += `&isSK=${isSK}`;\r\n }\r\n\r\n let analyticsComponent = \"\";\r\n if (Number(timeFrame) >= 0) {\r\n // /api/exchangerate/downloadexchangerates?cultureCode=cs-CZ&format=xls¤cy=EUR&timeFrame=8&fromDate=2023-05-29&toDate=2023-05-29\r\n downloadUrl += `¤cy=${currency}&timeframe=${timeFrame}&fromDate=${fromDate}&toDate=${toDate}`;\r\n analyticsComponent = \"currency-detail\";\r\n } else {\r\n // /api/exchangerate/downloadexchangerates?cultureCode=cs-CZ&format=xls&date=2022-12-04T07:00:00\r\n downloadUrl += `&date=${fromDate}`;\r\n analyticsComponent = \"currency-list\";\r\n }\r\n\r\n const dataAnalytics = `{\"event\":\"download.file\",\"linkUrl\":\"${downloadUrl}\",\"fileContext\":{\"fileName\":\"${link.title}\",\"fileType\":\"${link.extension}\",\"fileComponent\":\"${analyticsComponent}\"}}`;\r\n\r\n return (\r\n
\r\n {\r\n handleOnClick(dataAnalytics, downloadUrl);\r\n }}\r\n data-analytics={dataAnalytics}\r\n >\r\n
\r\n \r\n
\r\n
\r\n \r\n {link.title}\r\n \r\n
\r\n {link.subTitle}\r\n \r\n {link.extension}\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport default RatesDownloads;\r\n","import React, { useEffect } from \"react\";\r\nimport tippy from \"tippy.js\";\r\n\r\nimport { Icon } from \".\";\r\n\r\ninterface Props {\r\n container: HTMLElement;\r\n}\r\n\r\nconst TooltipKentico: React.FC = ({ container }) => {\r\n const {\r\n contentTitle, // tooltip - contentTitle\r\n contentText, // tooltip - contentText\r\n contentLinkUrl, // tooltip - contentLinkUrl\r\n contentLinkText, // tooltip - contentLinkText\r\n contentLinkIsExternal, // tooltip - contentLinkIsExternal\r\n tooltipText, // tooltip - tooltipText (text next to icon)\r\n tooltipDarkBg, // tooltip - tooltipDarkBg (color theme)\r\n } = container.dataset;\r\n\r\n const getTooltipOnDarkBg = () => {\r\n return (\r\n \r\n {tooltipText && (\r\n \r\n {tooltipText}\r\n \r\n )}\r\n '\r\n }\r\n className=\"inline h-6 w-6 fill-grey-darkMode-contentTertiary group-hover:fill-grey-30\"\r\n />\r\n \r\n );\r\n };\r\n\r\n const getTooltipOnLightBg = () => {\r\n return (\r\n \r\n {tooltipText && (\r\n \r\n {tooltipText}\r\n \r\n )}\r\n '\r\n }\r\n className=\"inline h-6 w-6 fill-grey-80 group-hover:fill-red-corporate\"\r\n />\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n tippy(container, {\r\n allowHTML: true,\r\n content: `\r\n
${contentTitle}
\r\n
${contentText}
\r\n \r\n ${contentLinkText}\r\n \r\n \r\n `,\r\n trigger: \"click\",\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: true,\r\n theme: \"kb\",\r\n zIndex: 1070,\r\n });\r\n }, []);\r\n\r\n return tooltipDarkBg ? getTooltipOnDarkBg() : getTooltipOnLightBg();\r\n};\r\n\r\nexport default TooltipKentico;\r\n","const hasPaginationNextItems = (pagination: Pagination): boolean => {\r\n if (!pagination) return false;\r\n\r\n const { currentPage, pagesCount } = pagination;\r\n\r\n if (!currentPage || !pagesCount) return false;\r\n\r\n return currentPage < pagesCount;\r\n};\r\n\r\nexport default hasPaginationNextItems;\r\n","import { State } from \"../store/reducer\";\r\nimport { hasPaginationNextItems } from \".\";\r\n\r\ninterface Props {\r\n items: TItem[];\r\n pagination: Pagination;\r\n errorMessage: string;\r\n}\r\n\r\nconst getReducerInitialState = ({\r\n items,\r\n pagination,\r\n errorMessage,\r\n}: Props): State => {\r\n return {\r\n hasNextItems: hasPaginationNextItems(pagination),\r\n isLoading: false,\r\n isLoadingMore: false,\r\n items,\r\n pagination,\r\n hasError: false,\r\n errorMessage,\r\n };\r\n};\r\n\r\nexport default getReducerInitialState;\r\n","export const SET_IS_LOADING = \"SET_IS_LOADING\";\r\nexport const SET_IS_LOADING_MORE = \"SET_IS_LOADING_MORE\";\r\nexport const SET_NEXT_DATA = \"SET_NEXT_DATA\";\r\nexport const SET_NEW_DATA = \"SET_NEW_DATA\";\r\nexport const SET_HAS_ERROR = \"SET_HAS_ERROR\";\r\nexport const SET_ERROR_MESSAGE = \"SET_ERROR_MESSAGE\";\r\n\r\nexport interface ResponsePayload {\r\n data: TItem[];\r\n pagination: Pagination;\r\n}\r\n\r\nexport interface SetLoadMoreResponseAction {\r\n type: typeof SET_NEXT_DATA;\r\n payload: ResponsePayload;\r\n}\r\n\r\nexport const setLoadMoreResponseAction = (\r\n payload: ResponsePayload\r\n): SetLoadMoreResponseAction => {\r\n return {\r\n payload,\r\n type: SET_NEXT_DATA,\r\n };\r\n};\r\n\r\nexport interface SetLoadNewResponseAction {\r\n type: typeof SET_NEW_DATA;\r\n payload: ResponsePayload;\r\n}\r\n\r\nexport const setLoadNewResponseAction = (\r\n payload: ResponsePayload\r\n): SetLoadNewResponseAction => {\r\n return {\r\n payload,\r\n type: SET_NEW_DATA,\r\n };\r\n};\r\n\r\nexport interface SetIsLoadingAction {\r\n type: typeof SET_IS_LOADING;\r\n payload: boolean;\r\n}\r\n\r\nexport const setIsLoadingAction = (payload: boolean): SetIsLoadingAction => {\r\n return {\r\n payload,\r\n type: SET_IS_LOADING,\r\n };\r\n};\r\n\r\nexport interface SetIsLoadingMoreAction {\r\n type: typeof SET_IS_LOADING_MORE;\r\n payload: boolean;\r\n}\r\n\r\nexport const setIsLoadingMoreAction = (payload: boolean): SetIsLoadingMoreAction => {\r\n return {\r\n payload,\r\n type: SET_IS_LOADING_MORE,\r\n };\r\n};\r\n\r\nexport interface SetHasErrorAction {\r\n type: typeof SET_HAS_ERROR;\r\n payload: boolean;\r\n}\r\n\r\nexport const setHasErrorAction = (payload: boolean): SetHasErrorAction => {\r\n return {\r\n payload,\r\n type: SET_HAS_ERROR,\r\n };\r\n};\r\n\r\nexport interface SetErrorMessageAction {\r\n type: typeof SET_ERROR_MESSAGE;\r\n payload: string;\r\n}\r\n\r\nexport const setErrorMessageAction = (payload: string): SetErrorMessageAction => {\r\n return {\r\n payload,\r\n type: SET_ERROR_MESSAGE,\r\n };\r\n};\r\n\r\nexport type Action =\r\n | SetIsLoadingAction\r\n | SetIsLoadingMoreAction\r\n | SetHasErrorAction\r\n | SetErrorMessageAction\r\n | SetLoadMoreResponseAction\r\n | SetLoadNewResponseAction;\r\n","import {\r\n Action,\r\n SET_IS_LOADING,\r\n SET_IS_LOADING_MORE,\r\n SET_NEXT_DATA,\r\n SET_NEW_DATA,\r\n SET_HAS_ERROR,\r\n SET_ERROR_MESSAGE,\r\n SetIsLoadingAction,\r\n SetIsLoadingMoreAction,\r\n SetLoadMoreResponseAction,\r\n SetLoadNewResponseAction,\r\n SetHasErrorAction,\r\n SetErrorMessageAction,\r\n} from \"./actions\";\r\n\r\nimport { hasPaginationNextItems } from \"../utils\";\r\n\r\nexport interface State {\r\n hasNextItems: boolean;\r\n isLoading: boolean;\r\n isLoadingMore: boolean;\r\n items: TItem[];\r\n pagination: Pagination;\r\n errorMessage: string;\r\n hasError: boolean;\r\n}\r\n\r\nconst reducer = (state: State, action: Action): State => {\r\n const { type } = action;\r\n\r\n switch (type) {\r\n case SET_NEXT_DATA: {\r\n const { payload } = action as SetLoadMoreResponseAction;\r\n\r\n return {\r\n ...state,\r\n hasNextItems: hasPaginationNextItems(payload.pagination),\r\n items: [...state.items, ...payload.data],\r\n pagination: payload.pagination,\r\n hasError: false,\r\n };\r\n }\r\n\r\n case SET_NEW_DATA: {\r\n const { payload } = action as SetLoadNewResponseAction;\r\n\r\n return {\r\n ...state,\r\n hasNextItems: hasPaginationNextItems(payload.pagination),\r\n items: payload.data,\r\n pagination: payload.pagination,\r\n hasError: false,\r\n };\r\n }\r\n\r\n case SET_IS_LOADING: {\r\n const { payload } = action as SetIsLoadingAction;\r\n\r\n return {\r\n ...state,\r\n isLoading: payload,\r\n };\r\n }\r\n\r\n case SET_IS_LOADING_MORE: {\r\n const { payload } = action as SetIsLoadingMoreAction;\r\n\r\n return {\r\n ...state,\r\n isLoadingMore: payload,\r\n };\r\n }\r\n\r\n case SET_HAS_ERROR: {\r\n const { payload } = action as SetHasErrorAction;\r\n\r\n return {\r\n ...state,\r\n hasError: payload,\r\n };\r\n }\r\n\r\n case SET_ERROR_MESSAGE: {\r\n const { payload } = action as SetErrorMessageAction;\r\n\r\n return {\r\n ...state,\r\n errorMessage: payload,\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import { useEffect, useReducer, useState } from \"react\";\r\n\r\nimport {\r\n GEO_COORDINATES_FROM_BROWSER,\r\n GEO_COORDINATES_FROM_SEARCH,\r\n SEARCH_FORM_GENERAL,\r\n FALLBACK_COORDINATES,\r\n} from \"@constants\";\r\n\r\nimport { fetchJSON, errorLogger, getLocalStorageCoordinates } from \"@utilities\";\r\n\r\nimport { SearchListLocalization } from \"js/components/widgets/SearchList/types\";\r\nimport { getReducerInitialState } from \"./utils\";\r\nimport reducer from \"./store/reducer\";\r\nimport {\r\n setIsLoadingAction,\r\n setIsLoadingMoreAction,\r\n setHasErrorAction,\r\n setErrorMessageAction,\r\n setLoadMoreResponseAction,\r\n setLoadNewResponseAction,\r\n} from \"./store/actions\";\r\n\r\ninterface ListApiResponseJSON extends GenericApiResponseJSON {\r\n payload: {\r\n data: TItem[];\r\n pagination: Pagination;\r\n localization: SearchListLocalization;\r\n };\r\n}\r\n\r\ninterface Props {\r\n api?: string;\r\n apiQueryKey?: string;\r\n defaultQuery?: string;\r\n fetchBodyData?: Record;\r\n formElement?: HTMLFormElement;\r\n formInputName?: string;\r\n defaultItems?: TItem[];\r\n defaultPagination?: Pagination;\r\n cultureCode?: string;\r\n defaultErrorMessage?: string;\r\n pageSize?: number;\r\n pageSizeDetail?: number;\r\n hasGeolocation?: boolean;\r\n hasSearchCoordinates?: boolean;\r\n latitude?: number;\r\n longitude?: number;\r\n currency?: string;\r\n date?: string;\r\n searchFolder?: string;\r\n hideSegmentBreadcrumb?: boolean;\r\n}\r\n\r\ninterface Output {\r\n items: TItem[];\r\n hasNextItems: boolean;\r\n isLoading: boolean;\r\n isLoadingMore: boolean;\r\n query: string;\r\n setQuery: (newQuery: string) => void;\r\n loadNewItemsWithQuery: (query: string) => Promise;\r\n loadNextItems: () => void;\r\n loadNewItemsWithFallbackCoordinates: () => Promise;\r\n loadMoreItemsWithFallbackCoordinates: () => Promise;\r\n loadNewItemsWithSearchCoordinates: () => Promise;\r\n loadMoreItemsWithSearchCoordinates: () => Promise;\r\n loadNewItemsWithBrowserCoordinates: () => Promise;\r\n loadMoreItemsWithBrowserCoordinates: () => Promise;\r\n loadNewItemsOnDetailPage: () => Promise;\r\n loadMoreItemsOnDetailPage: () => Promise;\r\n loadMoreItemsExchangeRatesDetail: () => Promise;\r\n hasError: boolean;\r\n errorMessage: string;\r\n localization?: SearchListLocalization;\r\n}\r\n\r\nconst LOAD_3_ITEMS = 3;\r\nconst LOAD_10_ITEMS = 10;\r\n\r\nconst usePagination = ({\r\n api,\r\n apiQueryKey = \"query\",\r\n defaultQuery,\r\n fetchBodyData,\r\n formElement,\r\n formInputName,\r\n defaultItems,\r\n defaultPagination,\r\n cultureCode,\r\n defaultErrorMessage,\r\n pageSize,\r\n pageSizeDetail,\r\n hasGeolocation,\r\n hasSearchCoordinates = false,\r\n latitude,\r\n longitude,\r\n currency,\r\n date,\r\n searchFolder,\r\n hideSegmentBreadcrumb,\r\n}: Props): Output => {\r\n const [\r\n { hasNextItems, isLoading, isLoadingMore, items, pagination, hasError, errorMessage },\r\n dispatch,\r\n ] = useReducer(\r\n reducer,\r\n getReducerInitialState({\r\n items: defaultItems,\r\n pagination: defaultPagination,\r\n errorMessage: defaultErrorMessage || \"\",\r\n })\r\n );\r\n const [query, setQuery] = useState(defaultQuery);\r\n const [localization, setLocalization] = useState(undefined);\r\n\r\n // FORM STATES - success, error\r\n const handleLoadMoreSuccess = ({ payload }: ListApiResponseJSON): void => {\r\n if (payload) {\r\n dispatch(setLoadMoreResponseAction(payload));\r\n }\r\n };\r\n\r\n const handleLoadNewItemsSuccess = ({ payload }: ListApiResponseJSON): void => {\r\n if (payload) {\r\n dispatch(setLoadNewResponseAction(payload));\r\n }\r\n };\r\n\r\n const handleError = (error: FetchError): void => {\r\n dispatch(setHasErrorAction(true));\r\n\r\n if (error?.data?.message) {\r\n dispatch(setErrorMessageAction(error.data.message));\r\n\r\n errorLogger(error.data.message);\r\n }\r\n };\r\n\r\n // FORM with QUERY (general search form) - 'search' input\r\n const loadNewItemsWithQuery = async (queryValue: string): Promise => {\r\n //if (!queryValue) {\r\n // return;\r\n //}\r\n\r\n dispatch(setIsLoadingAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n [apiQueryKey]: queryValue,\r\n limit: pageSize ?? 9,\r\n offset: 0,\r\n currentPage: 1,\r\n cultureCode,\r\n searchFolder,\r\n hideSegmentBreadcrumb,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n setLocalization(response.payload.localization);\r\n handleLoadNewItemsSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingAction(false));\r\n }\r\n };\r\n\r\n // FORM with QUERY (general search form) - 'load more' button\r\n const loadNextItems = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n [apiQueryKey]: query,\r\n limit: pagination.rowsOnPage,\r\n offset: items.length,\r\n cultureCode,\r\n searchFolder,\r\n hideSegmentBreadcrumb,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // LOAD NEW ITEMS (with 'geo location' FALLBACK coordinates)\r\n const loadNewItemsWithFallbackCoordinates = async (): Promise => {\r\n dispatch(setIsLoadingAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? pageSizeDetail ?? LOAD_3_ITEMS : pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n setLocalization(response.payload.localization);\r\n handleLoadNewItemsSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingAction(false));\r\n }\r\n };\r\n\r\n // LOAD MORE ITEMS - 'load more' button (with 'geo location' FALLBACK coordinates)\r\n const loadMoreItemsWithFallbackCoordinates = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? LOAD_10_ITEMS : pagination.rowsOnPage,\r\n offset: items.length,\r\n cultureCode,\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // FORM with COORDINATES - 'search' input (does not use input value as query but 'geo location' coordinates)\r\n const loadNewItemsWithSearchCoordinates = async (): Promise => {\r\n dispatch(setIsLoadingAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? pageSizeDetail ?? LOAD_3_ITEMS : pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n setLocalization(response.payload.localization);\r\n handleLoadNewItemsSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingAction(false));\r\n }\r\n };\r\n\r\n // FORM with COORDINATES - 'load more' button (does not use input value as query but 'geo location' coordinates)\r\n const loadMoreItemsWithSearchCoordinates = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? LOAD_10_ITEMS : pagination.rowsOnPage,\r\n offset: items.length,\r\n cultureCode,\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // Uses browser Geolocation API - load 'new' items\r\n const loadNewItemsWithBrowserCoordinates = async (): Promise => {\r\n dispatch(setIsLoadingAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? pageSizeDetail ?? LOAD_3_ITEMS : pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n setLocalization(response.payload.localization);\r\n handleLoadNewItemsSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingAction(false));\r\n }\r\n };\r\n\r\n // Uses browser Geolocation API - load 'more' items\r\n const loadMoreItemsWithBrowserCoordinates = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: hasGeolocation ? LOAD_10_ITEMS : pagination.rowsOnPage,\r\n offset: items.length,\r\n cultureCode,\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // On Detail page uses known latitude & longitude = loads 'new' items\r\n const loadNewItemsOnDetailPage = async (): Promise => {\r\n dispatch(setIsLoadingAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: pageSizeDetail ?? LOAD_3_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n latitude,\r\n longitude,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n setLocalization(response.payload.localization);\r\n handleLoadNewItemsSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingAction(false));\r\n }\r\n };\r\n\r\n // On Detail page uses known latitude & longitude = loads 'more' items\r\n const loadMoreItemsOnDetailPage = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n limit: LOAD_10_ITEMS,\r\n offset: items.length,\r\n cultureCode,\r\n latitude,\r\n longitude,\r\n isPageDetail: hasGeolocation,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // ExchangeRatesDetail = loads 'more' items\r\n const loadMoreItemsExchangeRatesDetail = async (): Promise => {\r\n if (!hasNextItems || isLoading || isLoadingMore) return;\r\n\r\n dispatch(setIsLoadingMoreAction(true));\r\n\r\n try {\r\n const response = (await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n currency,\r\n date,\r\n cultureCode,\r\n limit: pagination.rowsOnPage,\r\n offset: items.length,\r\n initPageSize: items.length,\r\n ...fetchBodyData,\r\n }),\r\n },\r\n })) as ListApiResponseJSON;\r\n\r\n handleLoadMoreSuccess(response);\r\n } catch (error) {\r\n handleError(error as FetchError);\r\n } finally {\r\n dispatch(setIsLoadingMoreAction(false));\r\n }\r\n };\r\n\r\n // HANDLE FORM SUBMIT\r\n const handleFormSubmit = async (event: SubmitEvent): Promise => {\r\n event.preventDefault();\r\n\r\n if (isLoading) return;\r\n\r\n const formInput: HTMLInputElement = event.target[formInputName];\r\n\r\n if (!formInput) {\r\n console.error(`No '${formInputName}' input in form found`);\r\n return;\r\n }\r\n\r\n const inputValue = formInput.value.trim();\r\n setQuery(inputValue);\r\n\r\n if (formElement.classList.contains(SEARCH_FORM_GENERAL)) {\r\n window.history.replaceState(null, \"\", `?query=${inputValue}`);\r\n // const persoElement = document.querySelector(\".js-search-icon\") as HTMLElement;\r\n // if (persoElement.dataset.persoo) {\r\n // return;\r\n // }\r\n }\r\n if (hasSearchCoordinates) {\r\n loadNewItemsWithSearchCoordinates();\r\n } else {\r\n loadNewItemsWithQuery(inputValue);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n // Return undefined because of consistent return error\r\n if (!formElement || !formInputName) return undefined;\r\n\r\n formElement.addEventListener(\"submit\", handleFormSubmit);\r\n\r\n return () => {\r\n formElement.removeEventListener(\"submit\", handleFormSubmit);\r\n };\r\n }, [formElement]);\r\n\r\n return {\r\n hasNextItems,\r\n isLoading,\r\n isLoadingMore,\r\n items: items as TItem[],\r\n query,\r\n setQuery,\r\n loadNewItemsWithQuery,\r\n loadNextItems,\r\n loadNewItemsWithFallbackCoordinates,\r\n loadMoreItemsWithFallbackCoordinates,\r\n loadNewItemsWithSearchCoordinates,\r\n loadMoreItemsWithSearchCoordinates,\r\n loadNewItemsWithBrowserCoordinates,\r\n loadMoreItemsWithBrowserCoordinates,\r\n loadNewItemsOnDetailPage,\r\n loadMoreItemsOnDetailPage,\r\n loadMoreItemsExchangeRatesDetail,\r\n hasError,\r\n errorMessage,\r\n localization,\r\n };\r\n};\r\n\r\nexport default usePagination;\r\n","import { MutableRefObject, useRef } from \"react\";\r\n\r\ninterface Output {\r\n blockScroll: () => void;\r\n allowScroll: () => void;\r\n}\r\n\r\n// Source: https://gist.github.com/reecelucas/2f510e6b8504008deaaa52732202d2da\r\nconst useScrollBlock = (): Output => {\r\n const isScrollBlocked: MutableRefObject = useRef();\r\n\r\n const blockScroll = (): void => {\r\n const { body, documentElement: html } = window.document;\r\n\r\n if (!body?.style || isScrollBlocked.current) return;\r\n\r\n const scrollBarWidth = window.innerWidth - html.clientWidth;\r\n const bodyPaddingRight =\r\n parseInt(window.getComputedStyle(body).getPropertyValue(\"padding-right\"), 10) || 0;\r\n\r\n /**\r\n * 1. Fixes a bug in iOS and desktop Safari whereby setting\r\n * `overflow: hidden` on the html/body does not prevent scrolling.\r\n * 2. Fixes a bug in desktop Safari where `overflowY` does not prevent\r\n * scroll if an `overflow-x` style is also applied to the body.\r\n */\r\n html.style.position = \"relative\"; /* [1] */\r\n html.style.overflow = \"hidden\"; /* [2] */\r\n body.style.position = \"relative\"; /* [1] */\r\n body.style.overflow = \"hidden\"; /* [2] */\r\n body.style.paddingRight = `${bodyPaddingRight + scrollBarWidth}px`;\r\n\r\n isScrollBlocked.current = true;\r\n };\r\n\r\n const allowScroll = (): void => {\r\n const { body, documentElement: html } = window.document;\r\n\r\n if (!body?.style || !isScrollBlocked.current) return;\r\n\r\n html.style.position = \"\";\r\n html.style.overflow = \"\";\r\n body.style.position = \"\";\r\n body.style.overflow = \"\";\r\n body.style.paddingRight = \"\";\r\n\r\n isScrollBlocked.current = false;\r\n };\r\n\r\n return {\r\n allowScroll,\r\n blockScroll,\r\n };\r\n};\r\n\r\nexport default useScrollBlock;\r\n","import { useEffect, useState } from \"react\";\r\n\r\ninterface Props {\r\n htmlElement: HTMLElement;\r\n}\r\n\r\nconst useResizeObserver = ({ htmlElement }: Props): DOMRectReadOnly => {\r\n const [elementRect, setElementRect] = useState({} as DOMRectReadOnly);\r\n\r\n let observer: ResizeObserver = null;\r\n\r\n const observeElement = (element: HTMLElement): void => {\r\n observer = new ResizeObserver(([resizedHeader]): void => {\r\n if (!resizedHeader) return;\r\n const { contentRect } = resizedHeader;\r\n\r\n if (contentRect) {\r\n setElementRect(contentRect);\r\n }\r\n });\r\n\r\n observer.observe(element);\r\n };\r\n\r\n useEffect(() => {\r\n if (!window.ResizeObserver || !htmlElement) return undefined;\r\n\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n\r\n observeElement(htmlElement);\r\n\r\n return () => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n };\r\n }, [htmlElement]);\r\n\r\n return elementRect;\r\n};\r\n\r\nexport default useResizeObserver;\r\n","import { useEffect, useState } from \"react\";\r\nimport debounce from \"lodash.debounce\";\r\n\r\ninterface Output {\r\n deviceVh: number;\r\n}\r\n\r\n/**\r\n * Get device real viewport height value (1vh) as px\r\n *\r\n * Fix for mobile devices and miscalculation of css vh\r\n * due to URL bar, bottom bar, etc (especially on iOS devices)\r\n */\r\nconst useDeviceVh = (): Output => {\r\n const [deviceVh, setDeviceVh] = useState(0);\r\n\r\n const measureVh = (): void => {\r\n const realVh = window.innerHeight / 100;\r\n\r\n setDeviceVh(realVh);\r\n };\r\n\r\n useEffect(() => {\r\n const resizeListener = debounce(() => measureVh(), 300);\r\n\r\n window.addEventListener(\"resize\", resizeListener);\r\n\r\n measureVh();\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", resizeListener);\r\n };\r\n }, []);\r\n\r\n return {\r\n deviceVh,\r\n };\r\n};\r\n\r\nexport default useDeviceVh;\r\n","import { MutableRefObject, useEffect, useRef } from \"react\";\r\n\r\ninterface Props {\r\n ref: MutableRefObject;\r\n onClickOutsideCb: () => void;\r\n shouldHandleClick?: boolean;\r\n}\r\n\r\nconst useClickOutside = ({ ref, onClickOutsideCb, shouldHandleClick = true }: Props): void => {\r\n const shouldHandleClickRef = useRef(shouldHandleClick);\r\n\r\n const handleClick = (event: Event): void => {\r\n if (!shouldHandleClickRef.current) return;\r\n\r\n if (ref?.current?.contains(event.target as Node)) return;\r\n\r\n onClickOutsideCb();\r\n };\r\n\r\n /**\r\n * Set shouldHandleClickRef based on shouldHandleClick state change\r\n * for value usage in click event listener\r\n */\r\n useEffect(() => {\r\n shouldHandleClickRef.current = shouldHandleClick;\r\n }, [shouldHandleClick]);\r\n\r\n useEffect(() => {\r\n // Return undefined for consisten return value\r\n if (!ref.current) return undefined;\r\n\r\n window.addEventListener(\"click\", handleClick);\r\n\r\n return () => {\r\n document.removeEventListener(\"click\", handleClick);\r\n };\r\n }, [ref]);\r\n};\r\n\r\nexport default useClickOutside;\r\n","export const SEARCH_FORM_CLASSNAME = \"js-transparent-account-list-form\";\r\n","import React from \"react\";\r\n\r\nimport { ListItemType } from \"../types\";\r\nimport { ListItem } from \".\";\r\n\r\ninterface Props {\r\n items: ListItemType[];\r\n}\r\n\r\nconst ItemsList: React.FC = ({ items }) => {\r\n if (!items?.length) return null;\r\n\r\n return (\r\n
    \r\n {items.map((item) => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default ItemsList;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { ListItemType } from \"../types\";\r\n\r\nconst ListItem: React.FC = ({ perex, title, url, target }) => {\r\n if (!title || !url) return null;\r\n\r\n return (\r\n
  • \r\n \r\n
    \r\n {title}\r\n
    \r\n\r\n {/* eslint-disable-next-line react/no-danger */}\r\n {perex &&
    }\r\n \r\n
  • \r\n );\r\n};\r\n\r\nexport default memo(ListItem);\r\n","import React from \"react\";\r\n\r\nimport { Button, Alert } from \"@partials\";\r\nimport { AlertType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { TransparentAccountListType as Props } from \"./types\";\r\nimport { SEARCH_FORM_CLASSNAME } from \"./constants\";\r\nimport { ItemsList } from \"./components\";\r\n\r\nconst TransparentAccountList: React.FC = ({\r\n api,\r\n query,\r\n baseUrl,\r\n items: defaultItems,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n}) => {\r\n const { hasNextItems, isLoadingMore, items, loadNextItems, hasError } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_CLASSNAME}`),\r\n formInputName: \"query\",\r\n fetchBodyData: { baseUrl },\r\n defaultItems,\r\n defaultPagination,\r\n cultureCode,\r\n });\r\n\r\n const hasNoItems = !items?.length;\r\n\r\n return (\r\n
    \r\n {(hasError || hasNoItems) && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n \r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default TransparentAccountList;\r\n","import React from \"react\";\r\n\r\nimport { DetailItemType } from \"../types\";\r\nimport { ListItem } from \".\";\r\n\r\ninterface Props {\r\n items: DetailItemType[];\r\n}\r\n\r\nconst ItemsList: React.FC = ({ items }) => {\r\n if (!items?.length) return null;\r\n\r\n return (\r\n
      \r\n {items.map((item) => (\r\n \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nexport default ItemsList;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { DetailItemType } from \"../types\";\r\n\r\nimport { ItemDate, ItemInfo, ItemAmount } from \".\";\r\n\r\nconst ListItem: React.FC = ({ date, year, info, amount }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(ListItem);\r\n","import React from \"react\";\r\n\r\nimport { DetailItemType } from \"../types\";\r\n\r\ntype Props = Pick;\r\n\r\nconst ItemDate: React.FC = ({ date, year }) => {\r\n return (\r\n
    \r\n
    {date}
    \r\n {year &&
    {year}
    }\r\n
    \r\n );\r\n};\r\n\r\nexport default ItemDate;\r\n","import React from \"react\";\r\n\r\nimport { DetailItemInfoType } from \"../types\";\r\n\r\nconst ItemInfo: React.FC = ({\r\n title,\r\n additionalInfo,\r\n transparentAccountInfo,\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {transparentAccountInfo &&
    {transparentAccountInfo}
    }\r\n\r\n {additionalInfo &&
    {additionalInfo}
    }\r\n
    \r\n );\r\n};\r\n\r\nexport default ItemInfo;\r\n","import React from \"react\";\r\nimport classname from \"classnames\";\r\n\r\nimport { DetailItemAmountType } from \"../types\";\r\n\r\nconst ItemAmount: React.FC = ({ value, type }) => {\r\n const classes = classname(\"font-semibold shrink-0 sm:ml-auto\", {\r\n \"text-teal-170\": type === \"income\",\r\n \"text-red-corporate\": type === \"expense\",\r\n });\r\n\r\n return
    {value}
    ;\r\n};\r\n\r\nexport default ItemAmount;\r\n","import React from \"react\";\r\n\r\nimport { Button } from \"@partials\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { TransparentAccountDetailType as Props } from \"./types\";\r\nimport { ItemsList } from \"./components\";\r\n\r\nconst TransparentAccountDetail: React.FC = ({\r\n api,\r\n balance,\r\n items: defaultItems,\r\n localization,\r\n pagination: defaultPagination,\r\n query,\r\n maxVisibleDays,\r\n title,\r\n cultureCode,\r\n}) => {\r\n const { hasNextItems, isLoadingMore, items, loadNextItems } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n fetchBodyData: { maxVisibleDays },\r\n defaultItems,\r\n defaultPagination,\r\n cultureCode,\r\n });\r\n\r\n return (\r\n
    \r\n

    {title}

    \r\n\r\n
    \r\n {balance.amount}\r\n \r\n
    \r\n\r\n \r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default TransparentAccountDetail;\r\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
    ...
    \n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n width: '1px',\n height: '0px',\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-last\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n children: null\n};\nexport default InFocusGuard;","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n return {\n target: target,\n currentTarget: currentTarget\n };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { useEffect } from 'react';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n var _extends2;\n\n var _React$useState = React.useState(),\n realObserved = _React$useState[0],\n setObserved = _React$useState[1];\n\n var observed = React.useRef();\n var isActive = React.useRef(false);\n var originalFocusedElement = React.useRef(null);\n var children = props.children,\n disabled = props.disabled,\n noFocusGuards = props.noFocusGuards,\n persistentFocus = props.persistentFocus,\n crossFrame = props.crossFrame,\n autoFocus = props.autoFocus,\n allowTextSelection = props.allowTextSelection,\n group = props.group,\n className = props.className,\n whiteList = props.whiteList,\n hasPositiveIndices = props.hasPositiveIndices,\n _props$shards = props.shards,\n shards = _props$shards === void 0 ? emptyArray : _props$shards,\n _props$as = props.as,\n Container = _props$as === void 0 ? 'div' : _props$as,\n _props$lockProps = props.lockProps,\n containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n SideCar = props.sideCar,\n shouldReturnFocus = props.returnFocus,\n focusOptions = props.focusOptions,\n onActivationCallback = props.onActivation,\n onDeactivationCallback = props.onDeactivation;\n\n var _React$useState2 = React.useState({}),\n id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n var onActivation = React.useCallback(function () {\n originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n if (observed.current && onActivationCallback) {\n onActivationCallback(observed.current);\n }\n\n isActive.current = true;\n }, [onActivationCallback]);\n var onDeactivation = React.useCallback(function () {\n isActive.current = false;\n\n if (onDeactivationCallback) {\n onDeactivationCallback(observed.current);\n }\n }, [onDeactivationCallback]);\n useEffect(function () {\n if (!disabled) {\n // cleanup return focus on trap deactivation\n // sideEffect/returnFocus should happen by this time\n originalFocusedElement.current = null;\n }\n }, []);\n var returnFocus = React.useCallback(function (allowDefer) {\n var returnFocusTo = originalFocusedElement.current;\n\n if (returnFocusTo && returnFocusTo.focus) {\n var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n\n if (howToReturnFocus) {\n var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n originalFocusedElement.current = null;\n\n if (allowDefer) {\n // React might return focus after update\n // it's safer to defer the action\n Promise.resolve().then(function () {\n return returnFocusTo.focus(returnFocusOptions);\n });\n } else {\n returnFocusTo.focus(returnFocusOptions);\n }\n }\n }\n }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n var onFocus = React.useCallback(function (event) {\n if (isActive.current) {\n mediumFocus.useMedium(event);\n }\n }, []);\n var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n // not using real refs due to race conditions\n\n var setObserveNode = React.useCallback(function (newObserved) {\n if (observed.current !== newObserved) {\n observed.current = newObserved;\n setObserved(newObserved);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof allowTextSelection !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n }\n\n React.useEffect(function () {\n if (!observed.current) {\n // eslint-disable-next-line no-console\n console.error('FocusLock: could not obtain ref to internal node');\n }\n }, []);\n }\n\n var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n var hasLeadingGuards = noFocusGuards !== true;\n var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [\n /*#__PURE__*/\n // nearest focus guard\n React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }), // first tabbed element guard\n hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-nearest\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 1,\n style: hiddenGuard\n }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n id: id,\n sideCar: mediumSidecar,\n observed: realObserved,\n disabled: disabled,\n persistentFocus: persistentFocus,\n crossFrame: crossFrame,\n autoFocus: autoFocus,\n whiteList: whiteList,\n shards: shards,\n onActivation: onActivation,\n onDeactivation: onDeactivation,\n returnFocus: returnFocus,\n focusOptions: focusOptions\n }), /*#__PURE__*/React.createElement(Container, _extends({\n ref: mergedRef\n }, lockProps, {\n className: className,\n onBlur: onBlur,\n onFocus: onFocus\n }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: node,\n disabled: bool,\n returnFocus: oneOfType([bool, object, func]),\n focusOptions: object,\n noFocusGuards: bool,\n hasPositiveIndices: bool,\n allowTextSelection: bool,\n autoFocus: bool,\n persistentFocus: bool,\n crossFrame: bool,\n group: string,\n className: string,\n whiteList: func,\n shards: arrayOf(any),\n as: oneOfType([string, func, object]),\n lockProps: object,\n onActivation: func,\n onDeactivation: func,\n sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n children: undefined,\n disabled: false,\n returnFocus: false,\n focusOptions: undefined,\n noFocusGuards: false,\n autoFocus: true,\n persistentFocus: false,\n crossFrame: true,\n hasPositiveIndices: undefined,\n allowTextSelection: undefined,\n group: undefined,\n className: undefined,\n whiteList: undefined,\n shards: undefined,\n as: 'div',\n lockProps: {},\n onActivation: undefined,\n onDeactivation: undefined\n};\nexport default FocusLock;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : Object.getPrototypeOf(scope).contains.call(scope, element)) ||\n toArray(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","import * as constants from './constants';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { getFocusabledIn, getFocusableIn } from './focusables';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getActiveElement } from './utils/getActiveElement';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusableIn, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, getActiveElement, };\nexport default setFocus;\n//\n","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","export function deferAction(action) {\n // Hidding setImmediate from Webpack to avoid inserting polyfill\n var _window = window,\n setImmediate = _window.setImmediate;\n\n if (typeof setImmediate !== 'undefined') {\n setImmediate(action);\n } else {\n setTimeout(action, 1);\n }\n}\nexport var inlineProp = function inlineProp(name, value) {\n var obj = {};\n obj[name] = value;\n return obj;\n};","/* eslint-disable no-mixed-operators */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n lastPortaledElement = {\n observerNode: observerNode,\n portaledElement: portaledElement\n };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n var lastGuard = null;\n var i = startIndex;\n\n do {\n var item = allNodes[i];\n\n if (item.guard) {\n if (item.node.dataset.focusAutoGuard) {\n lastGuard = item;\n }\n } else if (item.lockItem) {\n if (i !== startIndex) {\n // we will tab to the next element\n return;\n }\n\n lastGuard = null;\n } else {\n break;\n }\n } while ((i += step) !== end);\n\n if (lastGuard) {\n lastGuard.node.tabIndex = 0;\n }\n}\n\nvar extractRef = function extractRef(ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n if (crossFrameOption) {\n // with cross frame return true for any value\n return Boolean(focusWasOutsideWindow);\n } // in other case return only of focus went a while aho\n\n\n return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar checkInHost = function checkInHost(check, el, boundary) {\n return el && ( // find host equal to active element and check nested active element\n el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) // dive up\n || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\n\nvar withinHost = function withinHost(activeElement, workingArea) {\n return workingArea.some(function (area) {\n return checkInHost(activeElement, area, area);\n });\n};\n\nvar activateTrap = function activateTrap() {\n var result = false;\n\n if (lastActiveTrap) {\n var _lastActiveTrap = lastActiveTrap,\n observed = _lastActiveTrap.observed,\n persistentFocus = _lastActiveTrap.persistentFocus,\n autoFocus = _lastActiveTrap.autoFocus,\n shards = _lastActiveTrap.shards,\n crossFrame = _lastActiveTrap.crossFrame,\n focusOptions = _lastActiveTrap.focusOptions;\n var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n var activeElement = document && document.activeElement;\n\n if (workingNode) {\n var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n if (!activeElement || focusWhitelisted(activeElement)) {\n if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n if (workingNode && !( // active element is \"inside\" working area\n focusInside(workingArea) || // check for shadow-dom contained elements\n activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n if (document && !lastActiveFocus && activeElement && !autoFocus) {\n // Check if blur() exists, which is missing on certain elements on IE\n if (activeElement.blur) {\n activeElement.blur();\n }\n\n document.body.focus();\n } else {\n result = moveFocusInside(workingArea, lastActiveFocus, {\n focusOptions: focusOptions\n });\n lastPortaledElement = {};\n }\n }\n\n focusWasOutsideWindow = false;\n lastActiveFocus = document && document.activeElement;\n }\n }\n\n if (document) {\n var newActiveElement = document && document.activeElement;\n var allNodes = getFocusabledIn(workingArea);\n var focusedIndex = allNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).indexOf(newActiveElement);\n\n if (focusedIndex > -1) {\n // remove old focus\n allNodes.filter(function (_ref2) {\n var guard = _ref2.guard,\n node = _ref2.node;\n return guard && node.dataset.focusAutoGuard;\n }).forEach(function (_ref3) {\n var node = _ref3.node;\n return node.removeAttribute('tabIndex');\n });\n autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n autoGuard(focusedIndex, -1, -1, allNodes);\n }\n }\n }\n }\n\n return result;\n};\n\nvar onTrap = function onTrap(event) {\n if (activateTrap() && event) {\n // prevent scroll jump\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\nvar onBlur = function onBlur() {\n return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n // detect portal\n var source = event.target;\n var currentNode = event.currentTarget;\n\n if (!currentNode.contains(source)) {\n recordPortal(currentNode, source);\n }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n var children = _ref4.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n onBlur: onBlur,\n onFocus: onFocus\n }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n focusWasOutsideWindow = 'just'; // using setTimeout to set this variable after React/sidecar reaction\n\n setTimeout(function () {\n focusWasOutsideWindow = 'meanwhile';\n }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n document.addEventListener('focusin', onTrap);\n document.addEventListener('focusout', onBlur);\n window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n document.removeEventListener('focusin', onTrap);\n document.removeEventListener('focusout', onBlur);\n window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n return propsList.filter(function (_ref5) {\n var disabled = _ref5.disabled;\n return !disabled;\n });\n}\n\nfunction handleStateChangeOnClient(traps) {\n var trap = traps.slice(-1)[0];\n\n if (trap && !lastActiveTrap) {\n attachHandler();\n }\n\n var lastTrap = lastActiveTrap;\n var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n lastActiveTrap = trap;\n\n if (lastTrap && !sameTrap) {\n lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n if (!traps.filter(function (_ref6) {\n var id = _ref6.id;\n return id === lastTrap.id;\n }).length) {\n // allow defer is no other trap is awaiting restore\n lastTrap.returnFocus(!trap);\n }\n }\n\n if (trap) {\n lastActiveFocus = null;\n\n if (!sameTrap || lastTrap.observed !== trap.observed) {\n trap.onActivation();\n }\n\n activateTrap(true);\n deferAction(activateTrap);\n } else {\n detachHandler();\n lastActiveFocus = null;\n }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n return cb({\n moveFocusInside: moveFocusInside,\n focusInside: focusInside\n });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n // eslint-disable-next-line global-require\n const SideCar = require('./Trap').default;\n return ;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n sideCar: FocusTrap,\n ref: ref\n }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n sideCar = _ref.sideCar,\n propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport $ from '../../utils/dom';\nimport { extend, bindModuleMethods, createElementIfNotDefined } from '../../utils/utils';\nvar Navigation = {\n toggleEl: function toggleEl($el, disabled) {\n $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n },\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n var toggleEl = swiper.navigation.toggleEl;\n if (swiper.params.loop) return;\n var _swiper$navigation = swiper.navigation,\n $nextEl = _swiper$navigation.$nextEl,\n $prevEl = _swiper$navigation.$prevEl;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n toggleEl($prevEl, true);\n } else {\n toggleEl($prevEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n toggleEl($nextEl, true);\n } else {\n toggleEl($nextEl, false);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n },\n onPrevClick: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper.$el, swiper.params.navigation, swiper.params.createElements, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n var $nextEl;\n var $prevEl;\n\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n\n if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n\n if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n extend(swiper.navigation, {\n $nextEl: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n var _swiper$navigation2 = swiper.navigation,\n $nextEl = _swiper$navigation2.$nextEl,\n $prevEl = _swiper$navigation2.$prevEl;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n};\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n },\n create: function create() {\n var swiper = this;\n bindModuleMethods(swiper, {\n navigation: _extends({}, Navigation)\n });\n },\n on: {\n init: function init(swiper) {\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge(swiper) {\n swiper.navigation.update();\n },\n fromEdge: function fromEdge(swiper) {\n swiper.navigation.update();\n },\n destroy: function destroy(swiper) {\n swiper.navigation.destroy();\n },\n 'enable disable': function enableDisable(swiper) {\n var _swiper$navigation3 = swiper.navigation,\n $nextEl = _swiper$navigation3.$nextEl,\n $prevEl = _swiper$navigation3.$prevEl;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n },\n click: function click(swiper, e) {\n var _swiper$navigation4 = swiper.navigation,\n $nextEl = _swiper$navigation4.$nextEl,\n $prevEl = _swiper$navigation4.$prevEl;\n var targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n var isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n swiper.emit('navigationShow');\n } else {\n swiper.emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n }\n }\n};","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend(target, src) {\n var noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(function (key) {\n return noExtend.indexOf(key) < 0;\n }).forEach(function (key) {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\n\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\n\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\n\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n\n var classes = classNames.split(' ').map(function (c) {\n return c.trim();\n }).filter(function (c) {\n return !!c;\n });\n var unique = [];\n classes.forEach(function (c) {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\n\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };","/* underscore in name -> watch for changes */\nvar paramsList = ['init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_freeModeMomentum', '_freeModeMomentumRatio', '_freeModeMomentumBounce', '_freeModeMomentumBounceRatio', '_freeModeMomentumVelocityRatio', '_freeModeSticky', '_freeModeMinimumVelocity', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', '_slidesPerColumn', '_slidesPerColumnFill', '_slidesPerGroup', '_slidesPerGroupSkip', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_watchSlidesVisibility', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', 'autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];\nexport { paramsList };","// eslint-disable-next-line\nimport Swiper from '../../core';\nimport { isObject, extend } from './utils';\nimport { paramsList } from './params-list';\n\nfunction getParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n var params = {\n on: {}\n };\n var events = {};\n var passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n var rest = {};\n var allowedParams = paramsList.map(function (key) {\n return key.replace(/_/, '');\n });\n Object.keys(obj).forEach(function (key) {\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n events[\"\" + key[2].toLowerCase() + key.substr(3)] = obj[key];\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(function (key) {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params: params,\n passedParams: passedParams,\n rest: rest,\n events: events\n };\n}\n\nexport { getParams };","// eslint-disable-next-line\nimport Swiper from '../../core';\nimport { needsNavigation, needsPagination, needsScrollbar } from './utils';\n\nfunction initSwiper(swiperParams) {\n return new Swiper(swiperParams);\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n var el = _ref.el,\n nextEl = _ref.nextEl,\n prevEl = _ref.prevEl,\n paginationEl = _ref.paginationEl,\n scrollbarEl = _ref.scrollbarEl,\n swiper = _ref.swiper;\n\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { initSwiper, mountSwiper };","import React from 'react'; // eslint-disable-next-line\n\nimport Swiper from '../../core';\n\nfunction calcLoopedSlides(slides, swiperParams) {\n var slidesPerViewParams = swiperParams.slidesPerView;\n\n if (swiperParams.breakpoints) {\n var breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);\n var breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n\n var loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));\n loopedSlides += swiperParams.loopAdditionalSlides;\n\n if (loopedSlides > slides.length) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n}\n\nfunction renderLoop(swiper, slides, swiperParams) {\n var modifiedSlides = slides.map(function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiper,\n 'data-swiper-slide-index': index\n });\n });\n\n function duplicateSlide(child, index, position) {\n return /*#__PURE__*/React.cloneElement(child, {\n key: child.key + \"-duplicate-\" + index + \"-\" + position,\n className: (child.props.className || '') + \" \" + swiperParams.slideDuplicateClass\n });\n }\n\n if (swiperParams.loopFillGroupWithBlank) {\n var blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;\n\n if (blankSlidesNum !== swiperParams.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankSlide = /*#__PURE__*/React.createElement(\"div\", {\n className: swiperParams.slideClass + \" \" + swiperParams.slideBlankClass\n });\n modifiedSlides.push(blankSlide);\n }\n }\n }\n\n if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {\n swiperParams.loopedSlides = modifiedSlides.length;\n }\n\n var loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);\n var prependSlides = [];\n var appendSlides = [];\n modifiedSlides.forEach(function (child, index) {\n if (index < loopedSlides) {\n appendSlides.push(duplicateSlide(child, index, 'prepend'));\n }\n\n if (index < modifiedSlides.length && index >= modifiedSlides.length - loopedSlides) {\n prependSlides.push(duplicateSlide(child, index, 'append'));\n }\n });\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [].concat(prependSlides, modifiedSlides, appendSlides);\n}\n\nexport { calcLoopedSlides, renderLoop };","import { paramsList } from './params-list';\nimport { isObject } from './utils';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren) {\n var keys = [];\n if (!oldParams) return keys;\n\n var addKey = function addKey(key) {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n var oldChildrenKeys = oldChildren.map(function (child) {\n return child.key;\n });\n var childrenKeys = children.map(function (child) {\n return child.key;\n });\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n var watchParams = paramsList.filter(function (key) {\n return key[0] === '_';\n }).map(function (key) {\n return key.replace(/_/, '');\n });\n watchParams.forEach(function (key) {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n var newKeys = Object.keys(swiperParams[key]);\n var oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(function (newKey) {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(function (oldKey) {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","import React from 'react';\n\nfunction processChildren(c) {\n var slides = [];\n React.Children.toArray(c).forEach(function (child) {\n if (child.type && child.type.displayName === 'SwiperSlide') {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(function (slide) {\n return slides.push(slide);\n });\n }\n });\n return slides;\n}\n\nfunction getChildren(c) {\n var slides = [];\n var slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(function (child) {\n if (child.type && child.type.displayName === 'SwiperSlide') {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n var foundSlides = processChildren(child.props.children);\n\n if (foundSlides.length > 0) {\n foundSlides.forEach(function (slide) {\n return slides.push(slide);\n });\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides: slides,\n slots: slots\n };\n}\n\nexport { getChildren };","import { isObject, extend } from './utils';\n\nfunction updateSwiper(_ref) {\n var swiper = _ref.swiper,\n slides = _ref.slides,\n passedParams = _ref.passedParams,\n changedParams = _ref.changedParams,\n nextEl = _ref.nextEl,\n prevEl = _ref.prevEl,\n scrollbarEl = _ref.scrollbarEl,\n paginationEl = _ref.paginationEl;\n var updateParams = changedParams.filter(function (key) {\n return key !== 'children' && key !== 'direction';\n });\n var currentParams = swiper.params,\n pagination = swiper.pagination,\n navigation = swiper.navigation,\n scrollbar = swiper.scrollbar,\n virtual = swiper.virtual,\n thumbs = swiper.thumbs;\n var needThumbsInit;\n var needControllerInit;\n var needPaginationInit;\n var needScrollbarInit;\n var needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n var destroyModule = function destroyModule(mod) {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(function (key) {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n var newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (needThumbsInit) {\n var initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","import React from 'react';\n\nfunction updateOnVirtualData(swiper) {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n var _ref;\n\n if (!virtualData) return null;\n var style = swiper.isHorizontal() ? (_ref = {}, _ref[swiper.rtlTranslate ? 'right' : 'left'] = virtualData.offset + \"px\", _ref) : {\n top: virtualData.offset + \"px\"\n };\n return slides.filter(function (child, index) {\n return index >= virtualData.from && index <= virtualData.to;\n }).map(function (child) {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiper,\n style: style\n });\n });\n}\n\nexport { renderVirtual, updateOnVirtualData };","import { useEffect, useLayoutEffect } from 'react';\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nexport { useIsomorphicLayoutEffect };","var _excluded = [\"className\", \"tag\", \"wrapperTag\", \"children\", \"onSwiper\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport { getParams } from './get-params';\nimport { initSwiper, mountSwiper } from './init-swiper';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from './utils';\nimport { renderLoop, calcLoopedSlides } from './loop';\nimport { getChangedParams } from './get-changed-params';\nimport { getChildren } from './get-children';\nimport { updateSwiper } from './update-swiper';\nimport { renderVirtual, updateOnVirtualData } from './virtual';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';\nvar Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n var _ref = _temp === void 0 ? {} : _temp,\n className = _ref.className,\n _ref$tag = _ref.tag,\n Tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n _ref$wrapperTag = _ref.wrapperTag,\n WrapperTag = _ref$wrapperTag === void 0 ? 'div' : _ref$wrapperTag,\n children = _ref.children,\n onSwiper = _ref.onSwiper,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var eventsAssigned = false;\n\n var _useState = useState('swiper-container'),\n containerClasses = _useState[0],\n setContainerClasses = _useState[1];\n\n var _useState2 = useState(null),\n virtualData = _useState2[0],\n setVirtualData = _useState2[1];\n\n var _useState3 = useState(false),\n breakpointChanged = _useState3[0],\n setBreakpointChanged = _useState3[1];\n\n var initializedRef = useRef(false);\n var swiperElRef = useRef(null);\n var swiperRef = useRef(null);\n var oldPassedParamsRef = useRef(null);\n var oldSlides = useRef(null);\n var nextElRef = useRef(null);\n var prevElRef = useRef(null);\n var paginationElRef = useRef(null);\n var scrollbarElRef = useRef(null);\n\n var _getParams = getParams(rest),\n swiperParams = _getParams.params,\n passedParams = _getParams.passedParams,\n restProps = _getParams.rest,\n events = _getParams.events;\n\n var _getChildren = getChildren(children),\n slides = _getChildren.slides,\n slots = _getChildren.slots;\n\n var onBeforeBreakpoint = function onBeforeBreakpoint() {\n setBreakpointChanged(!breakpointChanged);\n };\n\n Object.assign(swiperParams.on, {\n _containerClasses: function _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n\n if (!swiperElRef.current) {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = initSwiper(swiperParams);\n\n swiperRef.current.loopCreate = function () {};\n\n swiperRef.current.loopDestroy = function () {};\n\n if (swiperParams.loop) {\n swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams);\n }\n\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n var extendWith = {\n cache: false,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n } // Listen for breakpoints change\n\n\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n\n var attachEvents = function attachEvents() {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(function (eventName) {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n\n var detachEvents = function detachEvents() {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(function (eventName) {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n\n useEffect(function () {\n return function () {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n }); // set initialized flag\n\n useEffect(function () {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n }); // mount swiper\n\n useIsomorphicLayoutEffect(function () {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n\n if (!swiperElRef.current) return;\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line\n\n return function () {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []); // watch for params change\n\n useIsomorphicLayoutEffect(function () {\n attachEvents();\n var changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides: slides,\n passedParams: passedParams,\n changedParams: changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n\n return function () {\n detachEvents();\n };\n }); // update on virtual update\n\n useIsomorphicLayoutEffect(function () {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]); // bypass swiper instance to slides\n\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n\n if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {\n return slides.map(function (child) {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current\n });\n });\n }\n\n return renderLoop(swiperRef.current, slides, swiperParams);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(\"\" + containerClasses + (className ? \" \" + className : ''))\n }, restProps), slots['container-start'], needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), slots['container-end']);\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","var _excluded = [\"tag\", \"children\", \"className\", \"swiper\", \"zoom\", \"virtualIndex\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { useRef, useState, forwardRef } from 'react';\nimport { uniqueClasses } from './utils';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';\nvar SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$tag = _ref.tag,\n Tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n children = _ref.children,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? '' : _ref$className,\n swiper = _ref.swiper,\n zoom = _ref.zoom,\n virtualIndex = _ref.virtualIndex,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var slideElRef = useRef(null);\n\n var _useState = useState('swiper-slide'),\n slideClasses = _useState[0],\n setSlideClasses = _useState[1];\n\n function updateClasses(swiper, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n\n useIsomorphicLayoutEffect(function () {\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n\n if (!slideElRef.current || !swiper) {\n return;\n }\n\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n\n return;\n }\n\n swiper.on('_slideClass', updateClasses); // eslint-disable-next-line\n\n return function () {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(function () {\n if (swiper && slideElRef.current) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n var slideData;\n\n if (typeof children === 'function') {\n slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0\n };\n }\n\n var renderChildren = function renderChildren() {\n return typeof children === 'function' ? children(slideData) : children;\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(\"\" + slideClasses + (className ? \" \" + className : '')),\n \"data-swiper-slide-index\": virtualIndex\n }, rest), zoom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren()) : renderChildren());\n});\nSwiperSlide.displayName = 'SwiperSlide';\nexport { SwiperSlide };","/* SSR classes */\r\nexport const GALLERY_THUMBNAILS_CONTAINER_CLASS = \"js-gallery\";\r\nexport const GALLERY_ITEM_CLASS = \"js-gallery-item\";\r\n\r\nexport const LocalizationKeys = {\r\n CLOSE_TITLE: \"galleryClose\",\r\n NEXT_TITLE: \"galleryNext\",\r\n PREVIOUS_TITLE: \"galleryPrevious\",\r\n};\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport enum ItemDatasetEnum {\r\n HREF = \"href\",\r\n SRCSET = \"srcset\",\r\n SIZES = \"sizes\",\r\n DESCRIPTION = \"subHtml\",\r\n POSTER = \"poster\",\r\n SRC = \"src\",\r\n IS_VIDEO = \"video\",\r\n INDEX_POSITION = \"slidePosition\",\r\n}\r\n\r\nexport const SLIDE_TRANSITION_DURATION_MS = 300;\r\n","import { ItemDatasetEnum } from \"../constants\";\r\nimport { ItemType } from \"../types\";\r\n\r\ninterface Props {\r\n item: HTMLAnchorElement;\r\n index: number;\r\n}\r\n\r\nconst getItemData = ({ item, index }: Props): ItemType => {\r\n if (!item) return null;\r\n\r\n const { dataset, href } = item;\r\n\r\n const isVideo = dataset?.[ItemDatasetEnum.IS_VIDEO] !== undefined;\r\n\r\n return {\r\n description: dataset?.[ItemDatasetEnum.DESCRIPTION],\r\n sizes: dataset?.[ItemDatasetEnum.SIZES],\r\n src: isVideo ? dataset?.[ItemDatasetEnum.SRC] : href,\r\n srcset: dataset?.[ItemDatasetEnum.SRCSET],\r\n type: isVideo ? \"video\" : \"img\",\r\n poster: dataset?.[ItemDatasetEnum.POSTER],\r\n slidePositionIndex: index,\r\n };\r\n};\r\n\r\nexport default getItemData;\r\n","import { MutableRefObject, useEffect, useMemo, useRef, useState } from \"react\";\r\nimport SwiperCore from \"swiper\";\r\nimport debounce from \"lodash.debounce\";\r\n\r\nimport { useScrollBlock } from \"@hooks\";\r\n\r\nimport { ItemType } from \"../types\";\r\nimport {\r\n LocalizationKeys,\r\n GALLERY_THUMBNAILS_CONTAINER_CLASS,\r\n GALLERY_ITEM_CLASS,\r\n SLIDE_TRANSITION_DURATION_MS,\r\n} from \"../constants\";\r\nimport { getItemData } from \"../utils\";\r\n\r\ntype LocalizationType = Record;\r\n\r\ninterface Props {\r\n focusLockRef: MutableRefObject;\r\n swiperInstance: SwiperCore;\r\n}\r\n\r\ninterface Output {\r\n isOpening: boolean;\r\n isOpen: boolean;\r\n isClosing: boolean;\r\n localization: LocalizationType;\r\n items: ItemType[];\r\n handleCloseButtonClick: () => void;\r\n handleLightboxFading: () => void;\r\n clickedThumbnailIndex: number;\r\n activeDescriptionHeight: number;\r\n setActiveDescriptionRef: (ref: MutableRefObject) => void;\r\n setActiveContentRef: (ref: MutableRefObject) => void;\r\n activeContentHeight: number;\r\n}\r\n\r\nconst useLightbox = ({ focusLockRef, swiperInstance }: Props): Output => {\r\n const { allowScroll, blockScroll } = useScrollBlock();\r\n\r\n const swiperInstanceRef = useRef(swiperInstance);\r\n const shouldListenToKeyDownRef = useRef(false);\r\n const isOpenRef = useRef(false);\r\n const isClosingRef = useRef(false);\r\n\r\n /* Use content ref and description ref for usage in event listener */\r\n const activeContentRef = useRef(null);\r\n const activeDescriptionRef = useRef(null);\r\n\r\n const [thumbnailsContainer, setThumbnailsContainer] = useState(null);\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isOpening, setIsOpening] = useState(false);\r\n const [isClosing, setIsClosing] = useState(false);\r\n const [clickedThumbnailIndex, setClickedThumbnailIndex] = useState(0);\r\n const [shouldListenToKeyDown, setShouldListenToKeyDown] = useState(false);\r\n const [_activeContentRef, setActiveContentRef] = useState>(null);\r\n const [_activeDescriptionRef, setActiveDescriptionRef] =\r\n useState>(null);\r\n const [activeDescriptionHeight, setActiveDescriptionHeight] = useState(0);\r\n const [activeContentHeight, setActiveContentHeight] = useState(0);\r\n\r\n /**\r\n * Set localization from dataset\r\n */\r\n const localization: LocalizationType = useMemo(() => {\r\n if (!thumbnailsContainer) return null;\r\n\r\n const { dataset } = thumbnailsContainer;\r\n\r\n return {\r\n CLOSE_TITLE: dataset?.[LocalizationKeys.CLOSE_TITLE],\r\n NEXT_TITLE: dataset?.[LocalizationKeys.NEXT_TITLE],\r\n PREVIOUS_TITLE: dataset?.[LocalizationKeys.PREVIOUS_TITLE],\r\n };\r\n }, [thumbnailsContainer]);\r\n\r\n /**\r\n * Listen on thumbnail click, set slideIndex state and open lightbox\r\n */\r\n const handleThumbnailClick = (event: Event, thumbnailIndex: number): void => {\r\n event.preventDefault();\r\n\r\n if (!swiperInstanceRef?.current) return;\r\n\r\n /**\r\n * Swiper is copying one slide because of infinite gallery swiping,\r\n * so it is adding one extra slide (and also index), so real index is always + 1\r\n */\r\n const realSwiperSlideIndex = thumbnailIndex + 1;\r\n\r\n swiperInstanceRef.current.slideTo(realSwiperSlideIndex, 0, false);\r\n\r\n setClickedThumbnailIndex(thumbnailIndex);\r\n setIsOpening(true);\r\n };\r\n\r\n /**\r\n * Set items\r\n */\r\n const items: ItemType[] = useMemo(() => {\r\n if (!thumbnailsContainer) return null;\r\n\r\n const itemElements = thumbnailsContainer.querySelectorAll(`.${GALLERY_ITEM_CLASS}`);\r\n const itemElementsArr = Array.from(itemElements || []);\r\n\r\n if (!itemElementsArr?.length) return null;\r\n\r\n const itemsWithData: ItemType[] = itemElementsArr.map((item, index) => {\r\n item.addEventListener(\"click\", (e) => handleThumbnailClick(e, index));\r\n\r\n /**\r\n * pointer-events: none; class added to prevent click on thumbnail\r\n * without attached event to item\r\n *\r\n * Remove the class after listener is attached\r\n */\r\n item.classList.remove(\"pointer-events-none\");\r\n\r\n return getItemData({ item: item as HTMLAnchorElement, index });\r\n });\r\n\r\n return itemsWithData;\r\n }, [thumbnailsContainer]);\r\n\r\n /**\r\n * Close button click listener\r\n */\r\n const handleCloseButtonClick = (): void => {\r\n if (!isOpenRef.current || isClosingRef.current) return;\r\n\r\n setIsClosing(true);\r\n };\r\n\r\n /**\r\n * Hide lightbox\r\n */\r\n const handleLightboxFading = (): void => {\r\n if (!isClosing) return;\r\n\r\n setIsOpen(false);\r\n setIsClosing(false);\r\n };\r\n\r\n /**\r\n * Handle keydown while lightbox is open\r\n */\r\n const handleOnKeyDown = (event: KeyboardEvent): void => {\r\n if (!swiperInstanceRef?.current || !shouldListenToKeyDownRef?.current) return;\r\n\r\n const { key, code } = event;\r\n\r\n /**\r\n * Allow spacebar, enter and tab keys default behaviour\r\n * to prevent keyboard navigation interruption\r\n *\r\n * check: https://www.toptal.com/developers/keycode\r\n */\r\n if (key === \"Enter\" || key === \"Tab\" || code === \"Space\") {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n switch (key) {\r\n case \"Escape\": {\r\n handleCloseButtonClick();\r\n return;\r\n }\r\n case \"ArrowLeft\": {\r\n swiperInstanceRef.current.slidePrev();\r\n\r\n break;\r\n }\r\n case \"ArrowRight\": {\r\n swiperInstanceRef.current.slideNext();\r\n\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Calculate active content height for css recalculation\r\n */\r\n const calculateContentHeight = (): void => {\r\n const contentEl = activeContentRef?.current;\r\n\r\n if (!contentEl) {\r\n setActiveContentHeight(0);\r\n return;\r\n }\r\n\r\n /* Height + padding */\r\n const newDescriptionHeight = contentEl.clientHeight;\r\n setActiveContentHeight(newDescriptionHeight);\r\n };\r\n\r\n /**\r\n * Calculate active description height for css recalculation\r\n */\r\n const calculateDescriptionHeight = (): void => {\r\n const descriptionEl = activeDescriptionRef?.current;\r\n\r\n if (!descriptionEl) {\r\n setActiveDescriptionHeight(0);\r\n return;\r\n }\r\n\r\n /* Height + padding */\r\n const newDescriptionHeight = descriptionEl.clientHeight;\r\n setActiveDescriptionHeight(newDescriptionHeight);\r\n };\r\n\r\n /**\r\n * Change active description ref state on slide swap\r\n */\r\n useEffect(() => {\r\n if (!_activeDescriptionRef?.current) return;\r\n\r\n activeDescriptionRef.current = _activeDescriptionRef.current;\r\n\r\n calculateDescriptionHeight();\r\n }, [_activeDescriptionRef]);\r\n\r\n /**\r\n * Change active content element state on slide swap\r\n */\r\n useEffect(() => {\r\n if (!_activeContentRef?.current) return;\r\n\r\n activeContentRef.current = _activeContentRef.current;\r\n\r\n calculateContentHeight();\r\n }, [_activeContentRef]);\r\n\r\n /**\r\n * Set swiperInstanceRef from swiperInstance prop for usage in\r\n * event handler\r\n */\r\n useEffect(() => {\r\n if (!swiperInstance) return;\r\n\r\n swiperInstanceRef.current = swiperInstance;\r\n }, [swiperInstance]);\r\n\r\n /**\r\n * Set isOpenstate to true after isOpening is set to true.\r\n *\r\n * isOpening state will remove lightbox--closed class with display: none;\r\n * which will allow opacity transition on lightbox opening\r\n */\r\n useEffect(() => {\r\n if (!isOpening) return;\r\n\r\n /* Prevent flickering */\r\n window.setTimeout(() => {\r\n setIsOpen(true);\r\n }, 50);\r\n }, [isOpening]);\r\n\r\n /**\r\n * Set isOpen ref for usage value in event listener\r\n * anddisable/enable body scroll on lightbox open state change\r\n */\r\n useEffect(() => {\r\n /**\r\n * Set isOpenRef value based on isOpen state change\r\n * for usage in handleKeyDown event listener (in Esc close event)\r\n */\r\n isOpenRef.current = isOpen;\r\n\r\n if (isOpen) {\r\n blockScroll();\r\n setIsOpening(false);\r\n\r\n return;\r\n }\r\n\r\n allowScroll();\r\n }, [isOpen]);\r\n\r\n /**\r\n * Set isClosingRef value based on isClosing state change\r\n * for usage in handleKeyDown event listener (in Esc close event)\r\n */\r\n useEffect(() => {\r\n isClosingRef.current = isClosing;\r\n }, [isClosing]);\r\n\r\n /**\r\n * Prevent unecessarry keydown events\r\n */\r\n useEffect(() => {\r\n if (isOpen && !isOpening && !isClosing) {\r\n window.setTimeout(() => {\r\n setShouldListenToKeyDown(true);\r\n }, SLIDE_TRANSITION_DURATION_MS);\r\n\r\n return;\r\n }\r\n\r\n setShouldListenToKeyDown(false);\r\n }, [isOpen, isOpening, isClosing]);\r\n\r\n /**\r\n * Set shouldListenToKeyDownRef after shouldListenToKeyDown change\r\n * for usage in keyDown event handler\r\n */\r\n useEffect(() => {\r\n shouldListenToKeyDownRef.current = shouldListenToKeyDown;\r\n }, [shouldListenToKeyDown]);\r\n\r\n /**\r\n * Set thumbnail container to slide elements data from thumbnail elements\r\n * and add keyDown event listener\r\n */\r\n useEffect(() => {\r\n if (!focusLockRef?.current) return;\r\n\r\n const { current: focusLockRefEl } = focusLockRef;\r\n\r\n const { parentNode: lightboxParentNode } = focusLockRefEl;\r\n const { parentNode: thumbnailsParent } = lightboxParentNode;\r\n\r\n const thumbnailsContainerEl = thumbnailsParent.querySelector(\r\n `.${GALLERY_THUMBNAILS_CONTAINER_CLASS}`\r\n );\r\n\r\n if (!thumbnailsContainerEl) return;\r\n\r\n setThumbnailsContainer(thumbnailsContainerEl as HTMLElement);\r\n }, [focusLockRef]);\r\n\r\n /**\r\n * Add event listener for keydown\r\n */\r\n useEffect(() => {\r\n const resizeListener = debounce(() => {\r\n calculateDescriptionHeight();\r\n calculateContentHeight();\r\n }, 300);\r\n\r\n window.addEventListener(\"keydown\", handleOnKeyDown);\r\n window.addEventListener(\"resize\", resizeListener);\r\n\r\n return () => {\r\n window.removeEventListener(\"keydown\", handleOnKeyDown);\r\n window.removeEventListener(\"resize\", resizeListener);\r\n };\r\n }, []);\r\n\r\n return {\r\n handleCloseButtonClick,\r\n isClosing,\r\n isOpen,\r\n isOpening,\r\n items,\r\n localization,\r\n handleLightboxFading,\r\n clickedThumbnailIndex,\r\n activeDescriptionHeight,\r\n setActiveDescriptionRef,\r\n setActiveContentRef,\r\n activeContentHeight,\r\n };\r\n};\r\n\r\nexport default useLightbox;\r\n","import React, { CSSProperties, MutableRefObject } from \"react\";\r\nimport classname from \"classnames\";\r\n\r\ntype ButtonType = \"close\" | \"previous\" | \"next\";\r\n\r\ninterface Props {\r\n type: ButtonType;\r\n ariaLabel: string;\r\n mobileTopPosition?: number;\r\n clickHandler?: () => void;\r\n buttonRef?: MutableRefObject;\r\n}\r\n\r\nconst IconButton: React.FC = ({\r\n ariaLabel,\r\n clickHandler,\r\n mobileTopPosition,\r\n type,\r\n buttonRef,\r\n}) => {\r\n const classes = classname(\"lightbox__icon-button\", {\r\n \"lightbox__icon-close\": type === \"close\",\r\n \"lightbox__navigation-button\": type !== \"close\",\r\n \"lightbox__icon-prev\": type === \"previous\",\r\n \"lightbox__icon-next\": type === \"next\",\r\n });\r\n\r\n const iconClose = (\r\n \r\n \r\n \r\n );\r\n\r\n const iconArrowRight = (\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n {type === \"close\" ? iconClose : iconArrowRight}\r\n \r\n );\r\n};\r\n\r\nexport default IconButton;\r\n","import React, { MutableRefObject, useEffect, useRef } from \"react\";\r\nimport tippy from \"tippy.js\";\r\n\r\nimport { ImageItem, VideoItem } from \".\";\r\n\r\nimport { ItemType } from \"../types\";\r\n\r\ninterface Props {\r\n setActiveContentRef: (ref: MutableRefObject) => void;\r\n swiperContainerRef: MutableRefObject;\r\n setActiveDescriptionRef: (ref: MutableRefObject) => void;\r\n isLighthboxOpen: boolean;\r\n isActive: boolean;\r\n clickedThumbnailIndex: number;\r\n item: ItemType;\r\n}\r\n\r\nconst SlideItem = ({\r\n isActive,\r\n swiperContainerRef,\r\n setActiveDescriptionRef,\r\n isLighthboxOpen,\r\n item,\r\n clickedThumbnailIndex,\r\n // To get content height and set top position of navigation\r\n setActiveContentRef,\r\n}: Props) => {\r\n const slideDescriptionRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (!isActive || !slideDescriptionRef?.current) return;\r\n\r\n const tootips = document.getElementsByClassName(\"js-tooltip \");\r\n const arr = [].slice.call(tootips);\r\n\r\n arr.forEach((element) => {\r\n tippy(element, {\r\n // parse `content` strings as HTML\r\n allowHTML: true,\r\n trigger: \"click\",\r\n hideOnClick: true,\r\n interactive: true,\r\n arrow: true,\r\n theme: \"kb\",\r\n });\r\n });\r\n\r\n setActiveDescriptionRef(slideDescriptionRef);\r\n }, [isActive, slideDescriptionRef]);\r\n\r\n return (\r\n
    \r\n {item.type === \"img\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {!!item?.description && (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default SlideItem;\r\n","import React, { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport classname from \"classnames\";\r\n\r\nimport { ItemType } from \"../types\";\r\n\r\nimport { Loader } from \".\";\r\n\r\ninterface Props {\r\n data: ItemType;\r\n isSlideActive: boolean;\r\n setActiveContentRef: (ref: MutableRefObject) => void;\r\n}\r\n\r\nconst ImageItem: React.FC = ({ data, isSlideActive, setActiveContentRef }) => {\r\n const { description, sizes, src, srcset } = data;\r\n\r\n const [shouldLoad, setShouldLoad] = useState(false);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n const imgRef = useRef(null);\r\n\r\n const imgClasses = classname(\"lightbox__slide-item-img\", {\r\n \"lightbox__slide-item--loading\": !isLoaded,\r\n });\r\n\r\n const handleOnLoad = (): void => {\r\n setIsLoaded(true);\r\n };\r\n\r\n /**\r\n * Set shouldLoad to true only in case slide is active\r\n * and do not change it on \"false\" when it was once setted to \"true\"\r\n * to prevent unnecessary loads - every load should happen only once\r\n */\r\n useEffect(() => {\r\n if (!isSlideActive || shouldLoad) return;\r\n\r\n setShouldLoad(true);\r\n }, [isSlideActive]);\r\n\r\n useEffect(() => {\r\n if (!isLoaded || !isSlideActive) return;\r\n\r\n setActiveContentRef(imgRef);\r\n }, [isSlideActive, isLoaded]);\r\n\r\n return (\r\n <>\r\n {!isLoaded && }\r\n\r\n {(shouldLoad || isLoaded) && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ImageItem;\r\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/YouTube.tsx\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport isEqual from \"fast-deep-equal\";\nimport youTubePlayer from \"youtube-player\";\nfunction shouldUpdateVideo(prevProps, props) {\n var _a, _b;\n if (prevProps.videoId !== props.videoId) {\n return true;\n }\n const prevVars = ((_a = prevProps.opts) == null ? void 0 : _a.playerVars) || {};\n const vars = ((_b = props.opts) == null ? void 0 : _b.playerVars) || {};\n return prevVars.start !== vars.start || prevVars.end !== vars.end;\n}\nfunction filterResetOptions(opts = {}) {\n return __spreadProps(__spreadValues({}, opts), {\n height: 0,\n width: 0,\n playerVars: __spreadProps(__spreadValues({}, opts.playerVars), {\n autoplay: 0,\n start: 0,\n end: 0\n })\n });\n}\nfunction shouldResetPlayer(prevProps, props) {\n return prevProps.videoId !== props.videoId || !isEqual(filterResetOptions(prevProps.opts), filterResetOptions(props.opts));\n}\nfunction shouldUpdatePlayer(prevProps, props) {\n var _a, _b, _c, _d;\n return prevProps.id !== props.id || prevProps.className !== props.className || ((_a = prevProps.opts) == null ? void 0 : _a.width) !== ((_b = props.opts) == null ? void 0 : _b.width) || ((_c = prevProps.opts) == null ? void 0 : _c.height) !== ((_d = props.opts) == null ? void 0 : _d.height) || prevProps.iframeClassName !== props.iframeClassName || prevProps.title !== props.title;\n}\nvar defaultProps = {\n videoId: \"\",\n id: \"\",\n className: \"\",\n iframeClassName: \"\",\n style: {},\n title: \"\",\n loading: void 0,\n opts: {},\n onReady: () => {\n },\n onError: () => {\n },\n onPlay: () => {\n },\n onPause: () => {\n },\n onEnd: () => {\n },\n onStateChange: () => {\n },\n onPlaybackRateChange: () => {\n },\n onPlaybackQualityChange: () => {\n }\n};\nvar propTypes = {\n videoId: PropTypes.string,\n id: PropTypes.string,\n className: PropTypes.string,\n iframeClassName: PropTypes.string,\n style: PropTypes.object,\n title: PropTypes.string,\n loading: PropTypes.oneOf([\"lazy\", \"eager\"]),\n opts: PropTypes.objectOf(PropTypes.any),\n onReady: PropTypes.func,\n onError: PropTypes.func,\n onPlay: PropTypes.func,\n onPause: PropTypes.func,\n onEnd: PropTypes.func,\n onStateChange: PropTypes.func,\n onPlaybackRateChange: PropTypes.func,\n onPlaybackQualityChange: PropTypes.func\n};\nvar _YouTube = class extends React.Component {\n constructor(props) {\n super(props);\n this.onPlayerReady = (event) => {\n var _a, _b;\n return (_b = (_a = this.props).onReady) == null ? void 0 : _b.call(_a, event);\n };\n this.onPlayerError = (event) => {\n var _a, _b;\n return (_b = (_a = this.props).onError) == null ? void 0 : _b.call(_a, event);\n };\n this.onPlayerStateChange = (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = this.props).onStateChange) == null ? void 0 : _b.call(_a, event);\n switch (event.data) {\n case _YouTube.PlayerState.ENDED:\n (_d = (_c = this.props).onEnd) == null ? void 0 : _d.call(_c, event);\n break;\n case _YouTube.PlayerState.PLAYING:\n (_f = (_e = this.props).onPlay) == null ? void 0 : _f.call(_e, event);\n break;\n case _YouTube.PlayerState.PAUSED:\n (_h = (_g = this.props).onPause) == null ? void 0 : _h.call(_g, event);\n break;\n default:\n }\n };\n this.onPlayerPlaybackRateChange = (event) => {\n var _a, _b;\n return (_b = (_a = this.props).onPlaybackRateChange) == null ? void 0 : _b.call(_a, event);\n };\n this.onPlayerPlaybackQualityChange = (event) => {\n var _a, _b;\n return (_b = (_a = this.props).onPlaybackQualityChange) == null ? void 0 : _b.call(_a, event);\n };\n this.createPlayer = () => {\n if (typeof document === \"undefined\")\n return;\n const playerOpts = __spreadProps(__spreadValues({}, this.props.opts), {\n videoId: this.props.videoId\n });\n this.internalPlayer = youTubePlayer(this.container, playerOpts);\n this.internalPlayer.on(\"ready\", this.onPlayerReady);\n this.internalPlayer.on(\"error\", this.onPlayerError);\n this.internalPlayer.on(\"stateChange\", this.onPlayerStateChange);\n this.internalPlayer.on(\"playbackRateChange\", this.onPlayerPlaybackRateChange);\n this.internalPlayer.on(\"playbackQualityChange\", this.onPlayerPlaybackQualityChange);\n if (this.props.title || this.props.loading) {\n this.internalPlayer.getIframe().then((iframe) => {\n if (this.props.title)\n iframe.setAttribute(\"title\", this.props.title);\n if (this.props.loading)\n iframe.setAttribute(\"loading\", this.props.loading);\n });\n }\n };\n this.resetPlayer = () => {\n var _a;\n return (_a = this.internalPlayer) == null ? void 0 : _a.destroy().then(this.createPlayer);\n };\n this.updatePlayer = () => {\n var _a;\n (_a = this.internalPlayer) == null ? void 0 : _a.getIframe().then((iframe) => {\n if (this.props.id)\n iframe.setAttribute(\"id\", this.props.id);\n else\n iframe.removeAttribute(\"id\");\n if (this.props.iframeClassName)\n iframe.setAttribute(\"class\", this.props.iframeClassName);\n else\n iframe.removeAttribute(\"class\");\n if (this.props.opts && this.props.opts.width)\n iframe.setAttribute(\"width\", this.props.opts.width.toString());\n else\n iframe.removeAttribute(\"width\");\n if (this.props.opts && this.props.opts.height)\n iframe.setAttribute(\"height\", this.props.opts.height.toString());\n else\n iframe.removeAttribute(\"height\");\n if (this.props.title)\n iframe.setAttribute(\"title\", this.props.title);\n else\n iframe.setAttribute(\"title\", \"YouTube video player\");\n if (this.props.loading)\n iframe.setAttribute(\"loading\", this.props.loading);\n else\n iframe.removeAttribute(\"loading\");\n });\n };\n this.getInternalPlayer = () => {\n return this.internalPlayer;\n };\n this.updateVideo = () => {\n var _a, _b, _c, _d;\n if (typeof this.props.videoId === \"undefined\" || this.props.videoId === null) {\n (_a = this.internalPlayer) == null ? void 0 : _a.stopVideo();\n return;\n }\n let autoplay = false;\n const opts = {\n videoId: this.props.videoId\n };\n if ((_b = this.props.opts) == null ? void 0 : _b.playerVars) {\n autoplay = this.props.opts.playerVars.autoplay === 1;\n if (\"start\" in this.props.opts.playerVars) {\n opts.startSeconds = this.props.opts.playerVars.start;\n }\n if (\"end\" in this.props.opts.playerVars) {\n opts.endSeconds = this.props.opts.playerVars.end;\n }\n }\n if (autoplay) {\n (_c = this.internalPlayer) == null ? void 0 : _c.loadVideoById(opts);\n return;\n }\n (_d = this.internalPlayer) == null ? void 0 : _d.cueVideoById(opts);\n };\n this.refContainer = (container) => {\n this.container = container;\n };\n this.container = null;\n this.internalPlayer = null;\n }\n componentDidMount() {\n this.createPlayer();\n }\n componentDidUpdate(prevProps) {\n if (shouldUpdatePlayer(prevProps, this.props)) {\n this.updatePlayer();\n }\n if (shouldResetPlayer(prevProps, this.props)) {\n this.resetPlayer();\n }\n if (shouldUpdateVideo(prevProps, this.props)) {\n this.updateVideo();\n }\n }\n componentWillUnmount() {\n var _a;\n (_a = this.internalPlayer) == null ? void 0 : _a.destroy();\n }\n render() {\n return /* @__PURE__ */ React.createElement(\"div\", {\n className: this.props.className,\n style: this.props.style\n }, /* @__PURE__ */ React.createElement(\"div\", {\n id: this.props.id,\n className: this.props.iframeClassName,\n ref: this.refContainer\n }));\n }\n};\nvar YouTube = _YouTube;\nYouTube.propTypes = propTypes;\nYouTube.defaultProps = defaultProps;\nYouTube.PlayerState = {\n UNSTARTED: -1,\n ENDED: 0,\n PLAYING: 1,\n PAUSED: 2,\n BUFFERING: 3,\n CUED: 5\n};\nvar YouTube_default = YouTube;\nexport {\n YouTube_default as default\n};\n","import React, { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport classname from \"classnames\";\r\nimport Youtube, { YouTubeEvent } from \"react-youtube\";\r\n\r\nimport { useClickOutside } from \"@hooks\";\r\n\r\nimport { ItemType } from \"../types\";\r\n\r\nimport { SLIDE_TRANSITION_DURATION_MS } from \"../constants\";\r\nimport { Loader } from \".\";\r\n\r\ninterface Props {\r\n data: ItemType;\r\n swiperContainerRef: MutableRefObject;\r\n isSlideActive: boolean;\r\n shouldPlayOnLoad: boolean;\r\n isLighthboxOpen: boolean;\r\n setActiveContentRef: (ref: MutableRefObject) => void;\r\n}\r\n\r\nconst BLUR_TIMEOUT = 3000;\r\n\r\nconst VideoItem: React.FC = ({\r\n data,\r\n swiperContainerRef,\r\n isLighthboxOpen,\r\n shouldPlayOnLoad,\r\n isSlideActive,\r\n setActiveContentRef,\r\n}) => {\r\n const { src, description } = data;\r\n\r\n const [videoEvent, setVideoEvent] = useState(null);\r\n const videoWrapperRef = useRef(null);\r\n\r\n /**\r\n * Focus swiper container on click outside of video\r\n * to allow window catch keyboard events (navigation || closing of swiper)\r\n */\r\n const focusSwiperContainer = (): void => {\r\n if (!swiperContainerRef?.current) return;\r\n\r\n swiperContainerRef.current.focus();\r\n };\r\n\r\n /**\r\n * Blur on click outside of video wrapper to make keyboard events\r\n * catchable by Swiper instead of youtube iframe\r\n */\r\n useClickOutside({\r\n ref: videoWrapperRef,\r\n onClickOutsideCb: focusSwiperContainer,\r\n shouldHandleClick: isLighthboxOpen && isSlideActive,\r\n });\r\n\r\n const youtubeClasses = classname(\"lightbox__slide-item-video\", {\r\n \"lightbox__slide-item--loading\": !videoEvent,\r\n });\r\n\r\n const pauseVideo = (): void => {\r\n /**\r\n * -1 = Unstarted\r\n * 0 = Ended\r\n * 1 = Playing\r\n * 2 = Paused\r\n * 3 = Buffering\r\n * 5 = Video cued\r\n */\r\n const playerState = videoEvent.target.getPlayerState();\r\n\r\n if (playerState !== 1) return;\r\n\r\n videoEvent.target.pauseVideo();\r\n };\r\n\r\n // swiper duplicates slides when has continuous loop mode\r\n // via this function we pause duplicated slide's video\r\n const handlePause = (): void => {\r\n if (!videoEvent?.target?.i || !swiperContainerRef?.current) return;\r\n\r\n const duplicatedSlides: NodeListOf =\r\n swiperContainerRef.current.querySelectorAll('[class*=\"duplicate\"]');\r\n\r\n if (!duplicatedSlides?.length) {\r\n return;\r\n }\r\n\r\n duplicatedSlides.forEach((slide) => {\r\n const iframe = slide.querySelector(\"iframe\");\r\n const youtubeOrigin = \"https://www.youtube.com\"; // Explicitly define the target origin\r\n\r\n if (iframe?.contentWindow && iframe.src.startsWith(youtubeOrigin)) {\r\n iframe.contentWindow.postMessage(\r\n '{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}',\r\n youtubeOrigin\r\n );\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Listen for slider change and pause video\r\n */\r\n useEffect(() => {\r\n if (!videoEvent?.target) return;\r\n\r\n pauseVideo();\r\n }, [videoEvent]);\r\n\r\n /**\r\n * Play video when lightbox is opened with video thumbnail\r\n */\r\n useEffect(() => {\r\n if (!videoEvent?.target || !isLighthboxOpen || !shouldPlayOnLoad) return;\r\n\r\n /* Wait while lightbox is fully open */\r\n window.setTimeout(() => {\r\n videoEvent.target.playVideo();\r\n }, SLIDE_TRANSITION_DURATION_MS);\r\n }, [videoEvent, isLighthboxOpen, shouldPlayOnLoad]);\r\n\r\n /**\r\n * Set tabindex of iframe based on video position in slider\r\n */\r\n useEffect(() => {\r\n if (!videoEvent?.target) return;\r\n\r\n const iframeEl: HTMLIFrameElement = videoEvent.target.i;\r\n\r\n if (!isLighthboxOpen) {\r\n iframeEl.tabIndex = -1;\r\n return;\r\n }\r\n\r\n iframeEl.tabIndex = 0;\r\n }, [videoEvent, isLighthboxOpen]);\r\n\r\n /**\r\n * Pause video on lightbox close\r\n */\r\n useEffect(() => {\r\n if (!videoEvent?.target || isLighthboxOpen) return;\r\n\r\n pauseVideo();\r\n }, [isLighthboxOpen, videoEvent, isSlideActive]);\r\n\r\n /**\r\n * Set tabindex of iframe based on active slide state in swiper\r\n */\r\n useEffect(() => {\r\n if (!videoEvent?.target) return;\r\n\r\n const iframeEl: HTMLIFrameElement = videoEvent.target.i;\r\n\r\n if (!isLighthboxOpen || !isSlideActive) {\r\n iframeEl.tabIndex = -1;\r\n\r\n /**\r\n * Remove focus from video iframe after slide is not active\r\n * to prevent keyboard keyboard handling by youtube video\r\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/blur\r\n */\r\n setTimeout(() => {\r\n iframeEl.blur();\r\n }, BLUR_TIMEOUT);\r\n\r\n /**\r\n * Pause video on slide change\r\n */\r\n pauseVideo();\r\n\r\n return;\r\n }\r\n\r\n iframeEl.tabIndex = 0;\r\n }, [videoEvent, isSlideActive, isLighthboxOpen]);\r\n\r\n useEffect(() => {\r\n if (!videoWrapperRef.current || !isSlideActive) return;\r\n\r\n setActiveContentRef(videoWrapperRef);\r\n }, [isSlideActive, videoWrapperRef]);\r\n\r\n return (\r\n
    \r\n {!videoEvent && }\r\n\r\n setVideoEvent(event)}\r\n opts={{\r\n height: \"100%\",\r\n width: \"100%\",\r\n }}\r\n onPause={handlePause}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default VideoItem;\r\n","import React from \"react\";\r\n\r\ntype Props = {\r\n position?: \"top\" | \"center\" | \"bottom\";\r\n};\r\n\r\nconst Loader: React.FC = ({ position }) => {\r\n const bgPosition = position || \"center\";\r\n\r\n return
    ;\r\n};\r\n\r\nexport default Loader;\r\n","import React, { CSSProperties, useRef, useState } from \"react\";\r\nimport FocusLock from \"react-focus-lock\";\r\nimport classname from \"classnames\";\r\nimport SwiperCore, { Navigation } from \"swiper\";\r\nimport { Swiper, SwiperSlide } from \"swiper/react\";\r\n\r\nimport \"swiper/swiper.min.css\";\r\n\r\nimport { useDeviceVh } from \"@hooks\";\r\n\r\nimport { useLightbox } from \"./hooks\";\r\nimport { SLIDE_TRANSITION_DURATION_MS } from \"./constants\";\r\nimport { IconButton, SlideItem } from \"./components\";\r\n\r\n// Install Swiper modules\r\nSwiperCore.use([Navigation]);\r\n\r\nconst GalleryLightbox = () => {\r\n const focusLockRef = useRef(null);\r\n const swiperContainerRef = useRef(null);\r\n const prevButtonRef = useRef(null);\r\n const nextButtonRef = useRef(null);\r\n\r\n const [swiperInstance, setSwiperInstance] = useState(null);\r\n\r\n const { deviceVh } = useDeviceVh();\r\n\r\n const {\r\n clickedThumbnailIndex,\r\n handleCloseButtonClick,\r\n handleLightboxFading,\r\n activeContentHeight,\r\n activeDescriptionHeight,\r\n setActiveDescriptionRef,\r\n setActiveContentRef,\r\n isClosing,\r\n isOpen,\r\n isOpening,\r\n items,\r\n localization,\r\n } = useLightbox({ focusLockRef, swiperInstance });\r\n\r\n const parentClasses = classname(\"lightbox\", {\r\n \"lightbox--open\": isOpen,\r\n \"lightbox--closing\": isClosing,\r\n \"lightbox--closed\": !isOpen && !isOpening,\r\n });\r\n\r\n const handleOnBeforeInit = (swiper: SwiperCore): void => {\r\n const { navigation } = swiper.params;\r\n\r\n if (typeof navigation === \"boolean\") return;\r\n\r\n navigation.prevEl = prevButtonRef.current;\r\n navigation.nextEl = nextButtonRef.current;\r\n };\r\n\r\n return (\r\n \r\n {!!items?.length && (\r\n \r\n
    \r\n 1}\r\n // 2rem\r\n spaceBetween={32}\r\n loop\r\n longSwipesRatio={0.2}\r\n resizeObserver\r\n onBeforeInit={handleOnBeforeInit}\r\n speed={SLIDE_TRANSITION_DURATION_MS}\r\n onSwiper={setSwiperInstance}\r\n >\r\n
    \r\n \r\n
    \r\n\r\n {items.map((item) => (\r\n \r\n {({ isActive }) => (\r\n \r\n )}\r\n \r\n ))}\r\n\r\n {items.length > 1 && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GalleryLightbox;\r\n","import React from \"react\";\r\n\r\nimport { ResultItem } from \".\";\r\nimport { ListItemType } from \"../types\";\r\n\r\ninterface Props {\r\n items: ListItemType[];\r\n iconsList: any;\r\n showDates: boolean;\r\n}\r\n\r\nconst ItemsList: React.FC = ({ items, iconsList, showDates }) => {\r\n if (!items?.length) return null;\r\n\r\n return (\r\n
    \r\n {items.map((item) => (\r\n \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nexport default ItemsList;\r\n","import React from \"react\";\r\nimport classname from \"classnames\";\r\n\r\nimport { ArticleListCategoryItem } from \"../types\";\r\n\r\ninterface Props {\r\n item: ArticleListCategoryItem;\r\n activeQuery: string;\r\n categoryRoot: string;\r\n onClickCategory: (categorySlug: string, categoryRoot: string) => void;\r\n}\r\n\r\nconst CategoryFilter: React.FC = ({ item, activeQuery, categoryRoot, onClickCategory }) => {\r\n const classes = classname(\r\n \"cursor-pointer rounded-lg px-3 py-1 text-2xs font-semibold hover:text-red-corporate hover:underline\",\r\n {\r\n \"bg-light shadow-tab\": activeQuery === item.slug,\r\n }\r\n );\r\n\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\nexport default CategoryFilter;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\n\r\nimport { ListItemType } from \"../types\";\r\n\r\ninterface Props {\r\n item: ListItemType;\r\n iconsList: any;\r\n showDates: boolean;\r\n}\r\n\r\nconst ResultItem: React.FC = ({ item, iconsList, showDates }) => {\r\n const { arrowRight } = iconsList;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default memo(ResultItem);\r\n","import React from \"react\";\r\n\r\nimport { AlertType } from \"@constants\";\r\nimport { Select, Button, Alert } from \"@partials\";\r\nimport { usePagination } from \"@hooks\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { ArticleListType as Props } from \"./types\";\r\nimport { ItemsList, CategoryFilter } from \"./components\";\r\n\r\nconst ArticleList: React.FC = ({\r\n api,\r\n query: defaultQuery,\r\n items: defaultItems,\r\n categories,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n showCategories,\r\n showDates,\r\n errorMessage: defaultErrorMessage,\r\n iconsList,\r\n categoryRoot,\r\n}) => {\r\n const {\r\n isLoadingMore,\r\n hasNextItems,\r\n hasError,\r\n errorMessage,\r\n items,\r\n query,\r\n setQuery,\r\n loadNewItemsWithQuery,\r\n loadNextItems,\r\n } = usePagination({\r\n api,\r\n apiQueryKey: \"category\",\r\n defaultQuery,\r\n defaultItems,\r\n defaultPagination,\r\n cultureCode,\r\n defaultErrorMessage:\r\n defaultErrorMessage || getLocalization(localization, \"listOfArticlesCategory/error\"),\r\n });\r\n\r\n const setUrlSlug = (slug: string, categoryRoot: string): void => {\r\n const urlSearchParams = new URLSearchParams(window.location.search);\r\n urlSearchParams.set(\"category\", slug);\r\n {(categoryRoot !== \"\" && !urlSearchParams.has(\"categoryroot\"))&& \r\n (urlSearchParams.set(\"categoryroot\", categoryRoot))\r\n }\r\n window.history.replaceState(null, null, `?${urlSearchParams.toString()}`);\r\n };\r\n\r\n const setNewQueryValue = (value: string): void => {\r\n /**\r\n * Save query value which will be used in \"loadNextItems\" function\r\n * -> called on \"load next\" button\r\n */\r\n setQuery(value);\r\n /* Fetch items with query value */\r\n loadNewItemsWithQuery(value);\r\n /* Set url param */\r\n setUrlSlug(value, categoryRoot);\r\n };\r\n\r\n const handleOnSelectChange = (event: React.ChangeEvent): void => {\r\n const value = event?.target?.value;\r\n\r\n if (!value && value !== \"\") return;\r\n\r\n setNewQueryValue(value);\r\n };\r\n\r\n return (\r\n
    \r\n {showCategories && (\r\n
    \r\n
    \r\n {/* only on stage 1 */}\r\n \r\n
    \r\n \r\n {`${getLocalization(localization, \"listOfArticlesCategory/categoriesTitle\")}: `}\r\n \r\n
      \r\n {categories.map((category) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n {(hasError || !items?.length) && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n \r\n
    \r\n
    \r\n\r\n {hasNextItems && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ArticleList;\r\n","import React, { useEffect, useState } from \"react\";\r\n\r\nimport { AlertType } from \"@constants\";\r\nimport { Alert, Loader } from \"@partials\";\r\nimport { errorLogger, getLocalization } from \"@utilities\";\r\n\r\nimport { CalculatorWidget as Props } from \"./types\";\r\n\r\nconst Calculator: React.FC = ({ timeout, scriptUrl, localization }) => {\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n const script = document.createElement(\"script\");\r\n\r\n const showCaclulator = isLoaded && !hasError;\r\n const showLoader = !isLoaded && !hasError;\r\n\r\n const fetchCalculatorWidget = async () => {\r\n try {\r\n await fetch(scriptUrl).then((response) => {\r\n if (response.ok) {\r\n setTimeout(() => {\r\n script.src = response.url;\r\n document.body.appendChild(script);\r\n\r\n setIsLoaded(true);\r\n }, timeout * 1000);\r\n } else if (response.status >= 404) {\r\n setHasError(true);\r\n }\r\n });\r\n } catch (error) {\r\n if (!isProduction) {\r\n errorLogger(error);\r\n }\r\n setHasError(true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchCalculatorWidget();\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {showLoader && }\r\n {hasError && (\r\n \r\n )}\r\n {showCaclulator && <>kalkukacka}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Calculator;\r\n","export const SEARCH_FORM_CLASSNAME = \"js-search-list-form\";\r\n","import React from \"react\";\r\n\r\nimport { SearchListLocalization, SearchResultType } from \"../types\";\r\nimport { ListItem } from \".\";\r\n\r\ninterface Props {\r\n items: SearchResultType[];\r\n pagination: Pagination;\r\n title: string;\r\n apiLocalization: SearchListLocalization;\r\n showBreadcrumbs: boolean;\r\n}\r\n\r\nconst ItemsList: React.FC = ({ items, title, apiLocalization, showBreadcrumbs }) => {\r\n return (\r\n <>\r\n
    \r\n {/* eslint-disable-next-line react/no-danger */}\r\n \r\n
    \r\n
      \r\n {items.map((item) => (\r\n \r\n ))}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ItemsList;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { SearchListLocalization, SearchResultType } from \"../types\";\r\n\r\nconst ListItem: React.FC = ({\r\n title,\r\n url,\r\n target,\r\n breadcrumb,\r\n mime,\r\n extension,\r\n apiLocalization,\r\n showBreadcrumbs\r\n}) => {\r\n if (!title || !url) return null;\r\n\r\n const textDocToDownload = getLocalization(apiLocalization, \"search/DocToDownload\");\r\n\r\n return (\r\n
  • \r\n \r\n
    \r\n {title}\r\n
    \r\n {(showBreadcrumbs && breadcrumb) &&

    {breadcrumb}

    }\r\n {mime && (\r\n
    \r\n

    {textDocToDownload}

    \r\n
    \r\n {extension.toUpperCase()}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
  • \r\n );\r\n};\r\n\r\nexport default memo(ListItem);\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\n\r\nimport { PageLinkType } from \"../types\";\r\n\r\nexport const PageLinks: React.FC = ({ pageLinks, title }) => {\r\n if (!pageLinks) return null;\r\n\r\n const searchIconAlt = \"search\";\r\n const searchIconSvg = ``;\r\n\r\n return (\r\n
    \r\n

    {title}

    \r\n {pageLinks.map((link, index) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n
    \r\n \r\n \r\n

    {link.title}

    \r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n};\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Button, Alert, Loader } from \"@partials\";\r\nimport { AlertType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { SearchListType as Props, SearchResultType } from \"./types\";\r\nimport { SEARCH_FORM_CLASSNAME } from \"./constants\";\r\nimport { ItemsList } from \"./components\";\r\nimport { PageLinks } from \"./components/PageLinks\";\r\n\r\nconst SearchList: React.FC = ({\r\n api,\r\n query,\r\n pagination: defaultPagination,\r\n localization: widgetConfigLocalization,\r\n cultureCode,\r\n pageLinks,\r\n pageSize,\r\n showBreadcrumbs,\r\n searchFolder,\r\n hideSegmentBreadcrumb,\r\n}) => {\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n loadNewItemsWithQuery,\r\n loadNextItems,\r\n hasError,\r\n isLoading,\r\n query: currentQuery,\r\n localization: apiLocalization,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_CLASSNAME}`),\r\n formInputName: \"query\",\r\n defaultItems: [],\r\n defaultPagination,\r\n cultureCode,\r\n pageSize,\r\n searchFolder,\r\n hideSegmentBreadcrumb,\r\n });\r\n\r\n const shouldShowItems = items.length > 0 && currentQuery && isLoading === false;\r\n const shouldShowPageLink = items.length === 0 && isLoading === false;\r\n const noResults = items.length === 0 && currentQuery;\r\n const localization = { apiLocalization, widgetConfigLocalization };\r\n\r\n useEffect(() => {\r\n if (currentQuery) {\r\n window.history.replaceState(null, null, `?query=${currentQuery}`);\r\n loadNewItemsWithQuery(currentQuery);\r\n }\r\n }, []);\r\n\r\n const loadMore = () => {\r\n window.history.replaceState(null, null, `?query=${currentQuery}`);\r\n loadNextItems();\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    {isLoading ? : null}
    \r\n
    \r\n {hasError && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {noResults && !isLoading && !hasError ? (\r\n
    \r\n \r\n
    \r\n ) : null}\r\n\r\n {shouldShowItems && !isLoading ? (\r\n \r\n ) : null}\r\n\r\n {shouldShowPageLink && (\r\n \r\n )}\r\n {hasNextItems && !isLoading && shouldShowItems ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SearchList;\r\n","import React, { useEffect } from \"react\";\r\nimport { TabType } from \"@constants\";\r\nimport { Icon } from \"@partials\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { LocalizationTexts } from \"../types\";\r\n\r\ntype LayoutContainerProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\ntype TabProps = {\r\n id: string;\r\n dataTestId: string;\r\n iconName: IconName;\r\n iconViewbox: string;\r\n iconAlt: string;\r\n iconSvg: string;\r\n localization: LocalizationTexts;\r\n tabText: keyof LocalizationTexts;\r\n};\r\n\r\ntype TabsBranchesAtmsProps = {\r\n iconsList: any;\r\n localization: LocalizationTexts;\r\n};\r\n\r\nconst ID_BRANCHES_CONTAINER = \"js-branches-container\";\r\nconst ID_ATMS_CONTAINER = \"js-atms-container\";\r\nconst HIDDEN_CLASS = \"is-hidden\";\r\nconst ID_BRANCHES_BTN = \"branches-btn\";\r\nconst ID_ATMS_BTN = \"atms-btn\";\r\nconst ACTIVE_CLASS = \"is-active\";\r\n\r\nconst LayoutContainer: React.FC = ({ children }) => {\r\n return (\r\n
    \r\n
    \r\n
    {children}
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst Tab: React.FC = ({\r\n id,\r\n dataTestId,\r\n iconName,\r\n iconViewbox,\r\n iconAlt,\r\n iconSvg,\r\n localization,\r\n tabText,\r\n}) => {\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst TabsBranchesAtms: React.FC = ({ localization, iconsList }) => {\r\n const setLocalStorageIsActiveTab = (type: TabType, value: string) => {\r\n window.sessionStorage.setItem(\r\n type === TabType.Branches\r\n ? `active_tab_is_${TabType.Branches}`\r\n : `active_tab_is_${TabType.Atms}`,\r\n value\r\n );\r\n };\r\n\r\n // Helper function to update URL with tab query parameter\r\n const updateUrlWithTabParam = (tab: string) => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.set(\"tab\", tab);\r\n window.history.replaceState(null, \"\", url.toString());\r\n };\r\n\r\n useEffect(() => {\r\n // containers\r\n const containerBranches = document.getElementById(ID_BRANCHES_CONTAINER);\r\n const containerAtms = document.getElementById(ID_ATMS_CONTAINER);\r\n\r\n const tabBranches = document.getElementById(ID_BRANCHES_BTN);\r\n const tabAtms = document.getElementById(ID_ATMS_BTN);\r\n\r\n // Set visibility of containers based on the selected tab\r\n const showBranches = () => {\r\n containerBranches.classList.remove(HIDDEN_CLASS);\r\n containerAtms.classList.add(HIDDEN_CLASS);\r\n };\r\n\r\n const showAtms = () => {\r\n containerAtms.classList.remove(HIDDEN_CLASS);\r\n containerBranches.classList.add(HIDDEN_CLASS);\r\n };\r\n\r\n // Update active tab classes\r\n const activateBranchesTab = () => {\r\n tabBranches.classList.add(ACTIVE_CLASS);\r\n tabAtms.classList.remove(ACTIVE_CLASS);\r\n showBranches();\r\n };\r\n\r\n const activateAtmsTab = () => {\r\n tabAtms.classList.add(ACTIVE_CLASS);\r\n tabBranches.classList.remove(ACTIVE_CLASS);\r\n showAtms();\r\n };\r\n\r\n // Handle tab click events\r\n tabBranches.addEventListener(\"click\", () => {\r\n activateBranchesTab();\r\n setLocalStorageIsActiveTab(TabType.Branches, \"true\");\r\n setLocalStorageIsActiveTab(TabType.Atms, \"false\");\r\n updateUrlWithTabParam(\"branches\");\r\n });\r\n\r\n tabAtms.addEventListener(\"click\", () => {\r\n activateAtmsTab();\r\n setLocalStorageIsActiveTab(TabType.Atms, \"true\");\r\n setLocalStorageIsActiveTab(TabType.Branches, \"false\");\r\n updateUrlWithTabParam(\"atms\");\r\n });\r\n\r\n // Check the query parameter and set the active tab on page load\r\n const params = new URLSearchParams(window.location.search);\r\n const tabParam = params.get(\"tab\");\r\n\r\n if (tabParam === \"atms\") {\r\n activateAtmsTab();\r\n } else if (tabParam === \"branches\" || !tabParam) {\r\n activateBranchesTab();\r\n }\r\n }, []);\r\n\r\n const { bank, branchAtmAtm } = iconsList;\r\n\r\n return (\r\n \r\n
      \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TabsBranchesAtms;\r\n","import { useEffect } from \"react\";\r\n\r\nimport { TabType, MOBILE, ALL } from \"@constants\";\r\n\r\nexport const useListenerMobile = (type: TabType) => {\r\n useEffect(() => {\r\n // === ELEMENTS\r\n // filters toggle\r\n const toggleEl = document.getElementById(`filters-toggle-container-${MOBILE}-${type}-${ALL}`);\r\n const buttonEl = document.getElementById(`filters-toggle-button-${MOBILE}-${type}-${ALL}`);\r\n const buttonIcon = document.getElementById(\r\n `filters-toggle-button-icon-${MOBILE}-${type}-${ALL}`\r\n );\r\n\r\n // filters hide\r\n const homeIndicatorEl = document.getElementById(`filters-home-indicator-${type}`);\r\n const hideButtonEl = document.getElementById(`filters-hide-button-${MOBILE}-${type}`);\r\n\r\n // filters dropdown\r\n const dropdownEl = document.getElementById(`filters-dropdown-all-${MOBILE}-${type}`);\r\n\r\n // === EVENT LISTENERS\r\n // filters toggle\r\n const handleFiltersToggleMobile = () => {\r\n buttonIcon.classList.toggle(\"rotate-180\"); // design\r\n toggleEl.classList.toggle(\"pb-12\");\r\n toggleEl.classList.toggle(\"pb-2\");\r\n dropdownEl.classList.toggle(\"hidden\"); // visibility\r\n dropdownEl.classList.toggle(\"block\");\r\n };\r\n\r\n buttonEl.addEventListener(\"click\", () => {\r\n handleFiltersToggleMobile();\r\n });\r\n\r\n // filters hide\r\n if (homeIndicatorEl) {\r\n homeIndicatorEl.addEventListener(\"click\", () => {\r\n handleFiltersToggleMobile();\r\n });\r\n }\r\n\r\n if (hideButtonEl) {\r\n hideButtonEl.addEventListener(\"click\", () => {\r\n handleFiltersToggleMobile();\r\n });\r\n }\r\n }, []);\r\n};\r\n","import React from \"react\";\r\n\r\ntype ColumnsOffsetProps = {\r\n col: string;\r\n offset: string;\r\n children: React.ReactNode;\r\n};\r\n\r\nconst ColumnsOffset: React.FC = ({ children, col, offset }) => {\r\n return
    {children}
    ;\r\n};\r\n\r\nexport default ColumnsOffset;\r\n","import React from \"react\";\r\n\r\nimport ColumnsOffset from \"./ColumnsOffset\";\r\n\r\ntype RowSearchAndFiltersProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst RowSearchAndFilters: React.FC = ({ children }) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {children}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default RowSearchAndFilters;\r\n","import React from \"react\";\r\n\r\nimport ColumnsOffset from \"./ColumnsOffset\";\r\n\r\ntype RowResultsProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst RowResults: React.FC = ({ children }) => {\r\n return (\r\n
    \r\n \r\n {children}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default RowResults;\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { TabType, MOBILE, ALL } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { IconsListProps, LocalizationProps } from \"../../../types\";\r\n\r\ntype FiltersMobileToggleProps = {\r\n type: TabType;\r\n} & LocalizationProps &\r\n IconsListProps;\r\n\r\nconst FiltersMobileToggle: React.FC = ({\r\n iconsList,\r\n localization,\r\n type,\r\n}) => {\r\n const { arrowDown } = iconsList;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FiltersMobileToggle;\r\n","import React from \"react\";\r\n\r\nimport { TabType } from \"@constants\";\r\n\r\ntype FiltersMobileCloseHandleProps = {\r\n type: TabType;\r\n};\r\n\r\nconst FiltersMobileCloseHandle: React.FC = ({ type }) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersMobileCloseHandle;\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { TabType, MOBILE } from \"@constants\";\r\n\r\nimport { IconsListProps } from \"../../../types\";\r\n\r\ntype FiltersMobileCloseButtonProps = {\r\n type: TabType;\r\n} & IconsListProps;\r\n\r\nconst FiltersMobileCloseButton: React.FC = ({ iconsList, type }) => {\r\n const { close } = iconsList;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FiltersMobileCloseButton;\r\n","import React from \"react\";\r\n\r\ntype FormControlProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst FormControl: React.FC = ({ children }) => {\r\n return
    {children}
    ;\r\n};\r\n\r\nexport default FormControl;\r\n","import React from \"react\";\r\n\r\nimport { TabType } from \"@constants\";\r\n\r\ntype FilterCheckboxProps = {\r\n isInsideDropdown?: boolean;\r\n type: TabType;\r\n id: string;\r\n name: string;\r\n checkboxValue: string;\r\n defaultChecked: boolean;\r\n label: string;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n};\r\n\r\nconst FilterCheckbox: React.FC = ({\r\n isInsideDropdown = false,\r\n type,\r\n id,\r\n name,\r\n checkboxValue,\r\n defaultChecked,\r\n label,\r\n handleOnChange,\r\n}) => {\r\n // const for input ID and label FOR\r\n const idForLabel = `${type}-${id}`;\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FilterCheckbox;\r\n","import React from \"react\";\r\n\r\nimport { TabType, MOBILE } from \"@constants\";\r\nimport { lowerCaseFirstLetter } from \"@utilities\";\r\n\r\nimport { FiltersProps } from \"../../../types\";\r\n\r\nimport FormControl from \"../FormControl\";\r\nimport FilterCheckbox from \"../FilterCheckbox\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype FiltersMobileFormBranchesProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps;\r\n\r\nconst FiltersMobileFormBranches: React.FC = ({\r\n filters,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n const checkboxesArr = filters.slice(0, 1); // haveCashServiceArr\r\n const openingHoursArr = filters[1].items;\r\n const handicapedArr = filters[2].items;\r\n const forCompaniesArr = filters[3].items;\r\n const servicesArr = filters[4].items;\r\n\r\n const formData = [\r\n ...checkboxesArr,\r\n ...openingHoursArr,\r\n ...handicapedArr,\r\n ...forCompaniesArr,\r\n ...servicesArr,\r\n ];\r\n\r\n return (\r\n
    \r\n {formData.map((item) => {\r\n const itemValue = lowerCaseFirstLetter(item.value);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersMobileFormBranches;\r\n","import React from \"react\";\r\n\r\nimport { TabType, MOBILE } from \"@constants\";\r\nimport { lowerCaseFirstLetter } from \"@utilities\";\r\n\r\nimport { FiltersProps } from \"../../../types\";\r\n\r\nimport FormControl from \"../FormControl\";\r\nimport FilterCheckbox from \"../FilterCheckbox\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype FiltersMobileFormAtmsProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps;\r\n\r\nconst FiltersMobileFormAtms: React.FC = ({\r\n filters,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n const checkboxesArr = filters.slice(0, 3); // isNonstop, isDeposit, isAccessible\r\n const moreArr = filters[3].items;\r\n\r\n const formData = [...checkboxesArr, ...moreArr];\r\n\r\n return (\r\n
    \r\n {formData.map((item) => {\r\n const itemValue = lowerCaseFirstLetter(item.value);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersMobileFormAtms;\r\n","import React from \"react\";\r\n\r\nimport { TabType, MOBILE } from \"@constants\";\r\n\r\nimport { FiltersProps, IconsListProps } from \"../../../types\";\r\n\r\nimport FiltersMobileCloseHandle from \"./FiltersMobileCloseHandle\";\r\nimport FiltersMobileCloseButton from \"./FiltersMobileCloseButton\";\r\nimport FiltersMobileFormBranches from \"./FiltersMobileFormBranches\";\r\nimport FiltersMobileFormAtms from \"./FiltersMobileFormAtms\";\r\n\r\ntype FiltersMobileDropdownProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps &\r\n IconsListProps;\r\n\r\nconst FILTERS_HEADER_MOBILE = \"filters-header-mobile\";\r\nconst FILTERS_BODY_MOBILE = \"filters-body-mobile\";\r\n\r\nconst FiltersMobileDropdown: React.FC = ({\r\n type,\r\n filters,\r\n iconsList,\r\n handleOnChange,\r\n}) => {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {type === TabType.Branches ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersMobileDropdown;\r\n","import React from \"react\";\r\n\r\nimport { TabType, MOBILE } from \"@constants\";\r\n\r\nimport { FiltersProps, IconsListProps, LocalizationProps } from \"../../../types\";\r\n\r\nimport FiltersMobileToggle from \"./FiltersMobileToggle\";\r\nimport FiltersMobileDropdown from \"./FiltersMobileDropdown\";\r\n\r\ntype FiltersMobileProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps &\r\n IconsListProps &\r\n LocalizationProps;\r\n\r\nconst FiltersMobile: React.FC = ({\r\n filters,\r\n iconsList,\r\n localization,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersMobile;\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\n\r\nimport { TabType } from \"@constants\";\r\nimport { Icon } from \"@partials\";\r\nimport { lowerCaseFirstLetter } from \"@utilities\";\r\n\r\nimport { IconsListProps, FiltersProps } from \"../../../types\";\r\n\r\nimport FormControl from \"../FormControl\";\r\nimport FilterCheckbox from \"../FilterCheckbox\";\r\n\r\ntype FiltersDesktopToggleAndDropdownProps = {\r\n type: TabType;\r\n name: string;\r\n viewport: string;\r\n text: string;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & IconsListProps &\r\n FiltersProps;\r\n\r\nconst FiltersDesktopToggleAndDropdown: React.FC = ({\r\n iconsList,\r\n type,\r\n name,\r\n viewport,\r\n text,\r\n filters,\r\n handleOnChange,\r\n}) => {\r\n const dropdownRef = useRef(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n const handleClickOutsideDropdown = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"click\", handleClickOutsideDropdown);\r\n\r\n return () => {\r\n document.removeEventListener(\"click\", handleClickOutsideDropdown);\r\n };\r\n }, []);\r\n\r\n // handle toggle dropdown\r\n const toggleDropdown = () => {\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n return (\r\n
    \r\n {/* TOGGLE */}\r\n
    \r\n\r\n {/* DROPDOWN */}\r\n \r\n {filters.map((item) => {\r\n const itemValue = lowerCaseFirstLetter(item.value);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default FiltersDesktopToggleAndDropdown;\r\n","import React from \"react\";\r\n\r\nimport { TabType, DESKTOP, OPENING_HOURS, HANDICAPED, COMPANIES, SERVICES } from \"@constants\";\r\nimport { lowerCaseFirstLetter } from \"@utilities\";\r\n\r\nimport { FiltersProps, IconsListProps } from \"../../../types\";\r\n\r\nimport FormControl from \"../FormControl\";\r\nimport FilterCheckbox from \"../FilterCheckbox\";\r\nimport FiltersDesktopToggleAndDropdown from \"./FiltersDesktopToggleAndDropdown\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype FiltersDesktopFormBranchesProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps &\r\n IconsListProps;\r\n\r\nconst FiltersDesktopFormBranches: React.FC = ({\r\n filters,\r\n iconsList,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n // icons\r\n const { arrowDown } = iconsList;\r\n\r\n // solo checkboxes\r\n const filtersCheckboxes = filters.slice(0, 1);\r\n\r\n // dropdown checkboxes\r\n const filtersOpeningHours = filters[1].items;\r\n const filtersHandicaped = filters[2].items;\r\n const filtersCompanies = filters[3].items;\r\n const filtersServices = filters[4].items;\r\n\r\n // texts\r\n const toggleOpeningHoursText = filters[1].name;\r\n const toggleHandicapedText = filters[2].name;\r\n const toggleCompaniesText = filters[3].name;\r\n const toggleServicesText = filters[4].name;\r\n\r\n return (\r\n
    \r\n {filtersCheckboxes.map((item) => {\r\n const itemValue = lowerCaseFirstLetter(item.value);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FiltersDesktopFormBranches;\r\n","import React from \"react\";\r\n\r\nimport { TabType, DESKTOP, MORE } from \"@constants\";\r\nimport { lowerCaseFirstLetter } from \"@utilities\";\r\n\r\nimport { FiltersProps, IconsListProps } from \"../../../types\";\r\n\r\nimport FormControl from \"../FormControl\";\r\nimport FilterCheckbox from \"../FilterCheckbox\";\r\nimport FiltersDesktopToggleAndDropdown from \"./FiltersDesktopToggleAndDropdown\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype FiltersDesktopFormAtmsProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps &\r\n IconsListProps;\r\n\r\nconst FiltersDesktopFormAtms: React.FC = ({\r\n filters,\r\n iconsList,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n // icons\r\n const { arrowDown } = iconsList;\r\n\r\n // solo checkboxes\r\n const filtersCheckboxes = filters.slice(0, 3);\r\n\r\n // dropdown checkboxes\r\n const filtersMore = filters[3].items;\r\n\r\n // texts\r\n const toggleMoreText = filters[3].name;\r\n\r\n return (\r\n
    \r\n {filtersCheckboxes.map((item) => {\r\n const itemValue = lowerCaseFirstLetter(item.value);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport default FiltersDesktopFormAtms;\r\n","import React from \"react\";\r\n\r\nimport { TabType, DESKTOP } from \"@constants\";\r\n\r\nimport { FiltersProps, IconsListProps } from \"../../../types\";\r\n\r\nimport FiltersDesktopFormBranches from \"./FiltersDesktopFormBranches\";\r\nimport FiltersDesktopFormAtms from \"./FiltersDesktopFormAtms\";\r\n\r\ntype FiltersDesktopProps = {\r\n type: TabType;\r\n handleOnChange: (event: React.ChangeEvent) => void;\r\n} & FiltersProps &\r\n IconsListProps;\r\n\r\nconst FiltersDesktop: React.FC = ({\r\n filters,\r\n iconsList,\r\n type,\r\n handleOnChange,\r\n}) => {\r\n return (\r\n
    \r\n {type === TabType.Branches ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default FiltersDesktop;\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { LocalizationProps, IconsListProps } from \"../types\";\r\n\r\nimport ColumnsOffset from \"./layout/ColumnsOffset\";\r\n\r\ntype AlertNoAddressFoundProps = {\r\n inputValue: string;\r\n alertSource?: string;\r\n} & LocalizationProps &\r\n IconsListProps;\r\n\r\nconst AlertNoAddressFound: React.FC = ({\r\n iconsList,\r\n inputValue,\r\n localization,\r\n alertSource = \"0\",\r\n}) => {\r\n const { infoCircleRed } = iconsList;\r\n\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {getLocalization(localization, \"Branches_AlertMessageNoResultsPart1\")}\r\n {inputValue ? null : \" \"}\r\n {inputValue ? {`\"${inputValue}\"`} : null}\r\n {getLocalization(localization, \"Branches_AlertMessageNoResultsPart2\")}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AlertNoAddressFound;\r\n","import React from \"react\";\r\n\r\nimport { Alert } from \"@partials\";\r\nimport { AlertType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { LocalizationTexts } from \"../types\";\r\n\r\ntype AlertSharedProps = {\r\n localization: LocalizationTexts;\r\n text: keyof LocalizationTexts;\r\n alertSource?: string;\r\n};\r\n\r\nconst AlertShared: React.FC = ({ localization, text, alertSource = \"0\" }) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AlertShared;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Button, Loader } from \"@partials\";\r\nimport {\r\n TabType,\r\n SEARCH_FORM_ATMS,\r\n GEO_COORDINATES_FROM_BROWSER,\r\n GEO_COORDINATES_FROM_SEARCH,\r\n} from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { ResultsListType } from \"../types\";\r\n\r\nimport { AlertShared, GeoLocationInfo, ResultsList } from \".\";\r\n\r\nconst AtmsResults: React.FC = ({\r\n api,\r\n query,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n pageSizeDetail,\r\n latitude,\r\n longitude,\r\n iconsList,\r\n}) => {\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n loadNewItemsWithFallbackCoordinates,\r\n loadMoreItemsWithFallbackCoordinates,\r\n loadNewItemsWithBrowserCoordinates,\r\n loadMoreItemsWithBrowserCoordinates,\r\n loadNewItemsWithSearchCoordinates,\r\n loadMoreItemsWithSearchCoordinates,\r\n hasError,\r\n isLoading,\r\n query: currentQuery,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_ATMS}`),\r\n formInputName: \"query\",\r\n defaultItems: [],\r\n defaultPagination,\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n pageSize,\r\n pageSizeDetail,\r\n latitude,\r\n longitude,\r\n });\r\n\r\n // RESULTS\r\n const noResultsFound = items?.length === 0 && currentQuery;\r\n\r\n // LOCAL STORAGE\r\n const hasBrowserCoordinatesLocalStorage =\r\n window.localStorage.getItem(GEO_COORDINATES_FROM_BROWSER) !== null;\r\n const hasSearchCoordinatesLocalStorage =\r\n window.localStorage.getItem(GEO_COORDINATES_FROM_SEARCH) !== null;\r\n\r\n // LOAD MORE items function used in results\r\n const loadNextItems = () => {\r\n if (hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n return loadMoreItemsWithBrowserCoordinates;\r\n }\r\n if (hasSearchCoordinatesLocalStorage) {\r\n return loadMoreItemsWithSearchCoordinates;\r\n }\r\n\r\n return loadMoreItemsWithFallbackCoordinates;\r\n };\r\n\r\n useEffect(() => {\r\n if (hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithBrowserCoordinates();\r\n }\r\n if (hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithSearchCoordinates();\r\n }\r\n\r\n if (!hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithFallbackCoordinates();\r\n }\r\n }, [hasSearchCoordinatesLocalStorage, hasBrowserCoordinatesLocalStorage]);\r\n\r\n return (\r\n <>\r\n {hasError && }\r\n\r\n {noResultsFound && (\r\n \r\n )}\r\n\r\n {isLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AtmsResults;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { Alert, Button, Loader, Icon } from \"@partials\";\r\n\r\nimport {\r\n AlertType,\r\n TabType,\r\n CheckboxKeyValueType,\r\n SEARCH_FORM_ATMS,\r\n FALLBACK_COORDINATES,\r\n GEO_COORDINATES_FROM_BROWSER,\r\n GEO_COORDINATES_FROM_SEARCH,\r\n LOAD_10_ITEMS,\r\n} from \"@constants\";\r\n\r\nimport {\r\n getLocalization,\r\n fetchJSON,\r\n getAllCheckboxesKeyValueFromAPI,\r\n hasLocalStorageCoordinates,\r\n getLocalStorageCoordinates,\r\n updateURLParameters,\r\n} from \"@utilities\";\r\n\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { FiltersProps, IconsListProps, LocalizationProps, ResultsListType } from \"../types\";\r\n\r\nimport { useListenerMobile } from \"./hooks/useListenerMobile\";\r\n\r\nimport RowSearchAndFilters from \"./layout/RowSearchAndFilters\";\r\nimport RowResults from \"./layout/RowResults\";\r\nimport FiltersMobile from \"./filters/mobile/FiltersMobile\";\r\nimport FiltersDesktop from \"./filters/desktop/FiltersDesktop\";\r\n\r\nimport {\r\n AlertNoAddressFound,\r\n AlertShared,\r\n GeoLocationInfo,\r\n ResultsList,\r\n AtmMap,\r\n SearchFormBranchesAtms,\r\n} from \".\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype AtmsSearchProps = {\r\n api: string;\r\n baseUrl: string;\r\n cultureCode: string;\r\n mapEnabled: boolean;\r\n} & FiltersProps &\r\n IconsListProps &\r\n LocalizationProps &\r\n ResultsListType;\r\n\r\ninterface Pagination {\r\n rowsCount?: number;\r\n rowsOnPage?: number;\r\n pagesCount?: number;\r\n currentPage?: number;\r\n}\r\n\r\n// === ATMS - Search with address AUTOCOMPLETE and REVERSE GEOCODING\r\nconst AtmsSearch: React.FC = ({\r\n filters,\r\n api,\r\n pagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n iconsList,\r\n mapEnabled,\r\n}) => {\r\n usePagination({\r\n api,\r\n formElement: document.querySelector(`.${SEARCH_FORM_ATMS}`),\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n });\r\n\r\n // Icons\r\n const { listedItems, map } = iconsList;\r\n const [isToggled, setToggled] = useState(false);\r\n\r\n // checkboxes\r\n const checkboxesDefaultStateObject = getAllCheckboxesKeyValueFromAPI(filters);\r\n const [checkboxesStateObject, setCheckboxesStateObject] = useState(checkboxesDefaultStateObject);\r\n\r\n // payload\r\n const [payloadDataResults, setPayloadDataResults] = useState([]);\r\n\r\n // pagination\r\n const [resultsCurrentPage, setResultsCurrentPage] = useState(pagination.currentPage);\r\n const [resultsPagesCount, setResultsPagesCount] = useState(pagination.pagesCount);\r\n\r\n // loading\r\n const [isLoadingNew, setIsLoadingNew] = useState(false);\r\n const [isLoadingMore, setIsLoadingMore] = useState(false);\r\n\r\n // results states\r\n const [canShowNoResultsAlert, setCanShowNoResultsAlert] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n // search\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [showAlertNoAddressFound, setShowAlertNoAddressFound] = useState(false);\r\n\r\n // TABS\r\n const selectedTabType = TabType.Atms;\r\n\r\n // ===== SEARCH - SECTION\r\n // RESULTS\r\n const hasResults = payloadDataResults.length > 0;\r\n\r\n const showLoader = isLoadingNew;\r\n const showAlertError = hasError;\r\n const showGeolocation = hasResults;\r\n const showAlertNoResults = canShowNoResultsAlert && !hasResults;\r\n const showResultsList = !isLoadingNew && hasResults;\r\n\r\n const showLoadMoreResults =\r\n !isLoadingNew && hasResults && resultsCurrentPage !== resultsPagesCount;\r\n\r\n // LOCAL STORAGE\r\n const hasBrowserCoordinates = hasLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER);\r\n const hasSearchCoordinates = hasLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH);\r\n\r\n // ===== CHECKBOXES - SECTION\r\n // MOBILE - dropdown toggle click\r\n useListenerMobile(selectedTabType);\r\n\r\n // FILTERS - load NEW data - Fallback\r\n const loadNewFiltersWithFallbackCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load NEW data - Browser\r\n const loadNewFiltersWithBrowserCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load NEW data - Search\r\n const loadNewFiltersWithSearchCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Fallback\r\n const loadMoreFiltersWithFallbackCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Browser\r\n const loadMoreFiltersWithBrowserCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Search\r\n const loadMoreFiltersWithSearchCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // HANDLE CHECKBOX ONCHANGE\r\n const handleCheckboxOnChange = (event: React.ChangeEvent) => {\r\n const { checked, value } = event.target;\r\n const checkboxKey = value;\r\n const checkboxValue = checked;\r\n\r\n // handle selected checkbox\r\n const newCheckboxesStateObject = {\r\n ...checkboxesStateObject,\r\n [checkboxKey]: checkboxValue, // selected checkbox Key Value pair\r\n };\r\n setCheckboxesStateObject(newCheckboxesStateObject);\r\n\r\n // handle URL parameters\r\n updateURLParameters(checkboxKey, checkboxValue);\r\n const limit = isToggled ? 9999 : pageSize ?? LOAD_10_ITEMS;\r\n\r\n // LOAD NEW - data - filtered from BE\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithBrowserCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n\r\n if (hasSearchCoordinates) {\r\n loadNewFiltersWithSearchCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n\r\n if (!hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithFallbackCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n };\r\n\r\n const loadNewList = () => {\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithBrowserCoordinates(checkboxesStateObject);\r\n }\r\n if (hasSearchCoordinates) {\r\n loadNewFiltersWithSearchCoordinates(checkboxesStateObject);\r\n }\r\n\r\n if (!hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithFallbackCoordinates(checkboxesStateObject);\r\n }\r\n };\r\n\r\n // LOAD NEW - data - when page finished loading\r\n useEffect(() => {\r\n loadNewList();\r\n }, [hasSearchCoordinates, hasBrowserCoordinates]);\r\n\r\n // LOAD MORE function to show more results\r\n const loadMoreResults = (limit) => {\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n return loadMoreFiltersWithBrowserCoordinates(checkboxesStateObject, limit);\r\n }\r\n if (hasSearchCoordinates) {\r\n return loadMoreFiltersWithSearchCoordinates(checkboxesStateObject, limit);\r\n }\r\n\r\n return loadMoreFiltersWithFallbackCoordinates(checkboxesStateObject, limit);\r\n };\r\n\r\n const handleToggle = () => {\r\n if (isToggled) {\r\n setToggled(false);\r\n loadNewList();\r\n } else {\r\n setToggled(true);\r\n pagination.rowsOnPage = 9999;\r\n pageSize = 9998;\r\n loadMoreResults(9999);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {showAlertNoAddressFound && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {showGeolocation && (\r\n \r\n )}\r\n\r\n \r\n {isToggled ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {isToggled\r\n ? getLocalization(localization, \"Branches_Atms_ShowList\")\r\n : getLocalization(localization, \"Branches_Atms_ShowMap\")}\r\n \r\n
    \r\n
    \r\n\r\n {isToggled ? (\r\n <>\r\n {showAlertNoResults && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ) : (\r\n \r\n {showLoader && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {showAlertError && (\r\n \r\n )}\r\n\r\n {showAlertNoResults && (\r\n \r\n )}\r\n\r\n {showResultsList && (\r\n \r\n )}\r\n\r\n {showLoadMoreResults && (\r\n loadMoreResults(pagination.rowsOnPage)}\r\n dataTestId={`button-load-more-${selectedTabType}`}\r\n isLoading={isLoadingMore}\r\n />\r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default AtmsSearch;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Button, Loader } from \"@partials\";\r\nimport {\r\n TabType,\r\n SEARCH_FORM_BRANCHES,\r\n GEO_COORDINATES_FROM_BROWSER,\r\n GEO_COORDINATES_FROM_SEARCH,\r\n} from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { ResultsListType } from \"../types\";\r\n\r\nimport { AlertShared, GeoLocationInfo, ResultsList } from \".\";\r\n\r\nconst BranchesResults: React.FC = ({\r\n api,\r\n query,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n pageSizeDetail,\r\n latitude,\r\n longitude,\r\n iconsList,\r\n}) => {\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n loadNewItemsWithFallbackCoordinates,\r\n loadMoreItemsWithFallbackCoordinates,\r\n loadNewItemsWithBrowserCoordinates,\r\n loadMoreItemsWithBrowserCoordinates,\r\n loadNewItemsWithSearchCoordinates,\r\n loadMoreItemsWithSearchCoordinates,\r\n hasError,\r\n isLoading,\r\n query: currentQuery,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_BRANCHES}`),\r\n formInputName: \"query\",\r\n defaultItems: [],\r\n defaultPagination,\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n pageSize,\r\n pageSizeDetail,\r\n latitude,\r\n longitude,\r\n });\r\n\r\n // RESULTS\r\n const noResultsFound = items?.length === 0 && currentQuery;\r\n\r\n // LOCAL STORAGE\r\n const hasBrowserCoordinatesLocalStorage =\r\n window.localStorage.getItem(GEO_COORDINATES_FROM_BROWSER) !== null;\r\n const hasSearchCoordinatesLocalStorage =\r\n window.localStorage.getItem(GEO_COORDINATES_FROM_SEARCH) !== null;\r\n\r\n // LOAD MORE items function used in results\r\n const loadNextItems = () => {\r\n if (hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n return loadMoreItemsWithBrowserCoordinates;\r\n }\r\n if (hasSearchCoordinatesLocalStorage) {\r\n return loadMoreItemsWithSearchCoordinates;\r\n }\r\n\r\n return loadMoreItemsWithFallbackCoordinates;\r\n };\r\n\r\n useEffect(() => {\r\n if (hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithBrowserCoordinates();\r\n }\r\n if (hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithSearchCoordinates();\r\n }\r\n\r\n if (!hasBrowserCoordinatesLocalStorage && !hasSearchCoordinatesLocalStorage) {\r\n loadNewItemsWithFallbackCoordinates();\r\n }\r\n }, [hasSearchCoordinatesLocalStorage, hasBrowserCoordinatesLocalStorage]);\r\n\r\n return (\r\n <>\r\n {hasError && }\r\n\r\n {noResultsFound && (\r\n \r\n )}\r\n\r\n {isLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default BranchesResults;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { Alert, Icon } from \"@partials\";\r\nimport { AlertType, TabType, GeoCoordinates, GEO_COORDINATES_FROM_BROWSER } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { LocalizationTexts } from \"../types\";\r\n\r\ntype GeoLocationNotSupportedProps = {\r\n localization: LocalizationTexts;\r\n};\r\n\r\ntype GeoLocationInfoProps = {\r\n type: TabType;\r\n localization: LocalizationTexts;\r\n iconsList: any;\r\n};\r\n\r\ntype InfoBoxProps = {\r\n onClick: () => void;\r\n} & GeoLocationInfoProps;\r\n\r\nconst GeoLocationNotSupported: React.FC = ({ localization }) => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst InfoBox: React.FC = ({ type, localization, iconsList, onClick }) => {\r\n const { mapMarker } = iconsList;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n {getLocalization(\r\n localization,\r\n type === TabType.Branches\r\n ? \"Branches_GeoLocationTitle_Branch\"\r\n : \"Branches_GeoLocationTitle_Atm\"\r\n )}\r\n

    \r\n
    \r\n \r\n
    \r\n {getLocalization(\r\n localization,\r\n type === TabType.Branches\r\n ? \"Branches_GeoLocationText_Branch\"\r\n : \"Branches_GeoLocationText_Atm\"\r\n )}{\" \"}\r\n \r\n {getLocalization(localization, \"Branches_GeoLocationTextUnderline\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst GeoLocationInfo: React.FC = ({ type, localization, iconsList }) => {\r\n const [coordinatesFromBrowser, setCoordinatesFromBrowser] = useState({\r\n lat: 0,\r\n lng: 0,\r\n });\r\n\r\n const showPositionSuccess = (position) => {\r\n const latLng: GeoCoordinates = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n\r\n setCoordinatesFromBrowser(latLng);\r\n window.localStorage.setItem(GEO_COORDINATES_FROM_BROWSER, JSON.stringify(latLng));\r\n };\r\n\r\n const requestGeoLocation = () => {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(showPositionSuccess);\r\n }\r\n };\r\n\r\n const showGeoLocationInfo = coordinatesFromBrowser.lat === 0 && coordinatesFromBrowser.lng === 0;\r\n\r\n useEffect(() => {\r\n requestGeoLocation();\r\n }, []);\r\n\r\n if (!navigator.geolocation) return ;\r\n if (!showGeoLocationInfo) return null;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default GeoLocationInfo;\r\n","import React from \"react\";\r\n\r\nimport { TabType } from \"@constants\";\r\nimport { ResultsListItemType, LocalizationTexts } from \"../types\";\r\n\r\nimport { ResultsListItem } from \".\";\r\n\r\ninterface Props {\r\n items: ResultsListItemType[];\r\n type: TabType;\r\n localization: LocalizationTexts;\r\n iconsList: any;\r\n}\r\n\r\nconst ResultsList: React.FC = ({ items, type, localization, iconsList }) => {\r\n if (!items?.length) return null;\r\n\r\n return (\r\n
      \r\n {items.map((item) => (\r\n \r\n ))}\r\n
    \r\n );\r\n};\r\n\r\nexport default ResultsList;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { getLocalization } from \"@utilities\";\r\nimport { Alert, Icon } from \"@partials\";\r\nimport { AlertType, TabType } from \"@constants\";\r\n\r\nimport { ResultsListItemType, LocalizationTexts } from \"../types\";\r\n\r\ntype TargetType = \"_blank\" | \"_self\" | \"_top\";\r\n\r\ntype Props = {\r\n target?: TargetType;\r\n localization: LocalizationTexts;\r\n type: TabType;\r\n iconsList: any;\r\n} & ResultsListItemType;\r\n\r\nconst ResultsListItem: React.FC = ({\r\n id,\r\n title,\r\n url,\r\n distanceKm,\r\n distanceUnit,\r\n openingHoursTime,\r\n openingHoursIcon,\r\n additionalInfo,\r\n isAdvisoryCenter,\r\n target,\r\n localization,\r\n type,\r\n iconsList,\r\n sourceItemId,\r\n}) => {\r\n if (!title || !url) return null;\r\n\r\n const hasAdditionalInfo = additionalInfo !== \"\";\r\n const isTabTypeBranches = type === TabType.Branches;\r\n\r\n // icons\r\n const showIconOpeningHours = openingHoursIcon === \"opening-hours\";\r\n const { arrowRight, bank, branchAtmAtm, mapMarker, openingHours, nonstop, advisory } = iconsList;\r\n\r\n return (\r\n
  • \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n

    \r\n {title}\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n {distanceKm} {distanceUnit}{\" \"}\r\n {getLocalization(localization, \"Branches_SharedDistanceNote\")}\r\n
    \r\n
    \r\n {hasAdditionalInfo && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {isAdvisoryCenter ? (\r\n <>\r\n \r\n
    \r\n {getLocalization(localization, \"Branches_Advisory\")}\r\n
    \r\n \r\n ) : (\r\n <>\r\n \r\n
    \r\n {isTabTypeBranches\r\n ? getLocalization(localization, \"Branches_Branch\")\r\n : getLocalization(localization, \"Branches_Atm\")}\r\n
    \r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n {openingHoursTime}\r\n
    \r\n
    \r\n {isAdvisoryCenter ? (\r\n
    \r\n {getLocalization(localization, \"Branches_AdvisoryDetail\")}\r\n
    \r\n ) : (\r\n
    \r\n {isTabTypeBranches\r\n ? getLocalization(localization, \"Branches_BranchDetail\")\r\n : getLocalization(localization, \"Branches_AtmDetail\")}\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n );\r\n};\r\n\r\nexport default memo(ResultsListItem);\r\n","import React, { MouseEvent } from \"react\";\r\nimport PlacesAutocomplete, { getLatLng } from \"react-places-autocomplete\";\r\n\r\nimport {\r\n GEO_COORDINATES_FROM_SEARCH,\r\n SEARCH_FORM_ATMS,\r\n SEARCH_FORM_BRANCHES,\r\n TabType,\r\n} from \"@constants\";\r\nimport { getLocalization, geocodeByAddressCZ } from \"@utilities\";\r\n\r\nimport { LocalizationProps } from \"../types\";\r\n\r\ntype SearchFormBranchesAtmsProps = {\r\n type: TabType;\r\n inputValue: string;\r\n setInputValue: React.Dispatch>;\r\n setShowAlertNoResult: React.Dispatch>;\r\n isToggled: boolean;\r\n} & LocalizationProps;\r\n\r\nconst LogoPoweredByGoogle = () => {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst SearchFormBranchesAtms: React.FC = ({\r\n type,\r\n inputValue,\r\n setInputValue,\r\n setShowAlertNoResult,\r\n localization,\r\n isToggled,\r\n}) => {\r\n const submitButtonRef = React.useRef(null);\r\n\r\n // search\r\n const searchPlaceholder = getLocalization(localization, \"Branches_SearchPlaceholder\");\r\n const fetchSuggestions = inputValue.length > 2;\r\n const searchOptions = {\r\n componentRestrictions: { country: \"cz\" },\r\n };\r\n\r\n const getFormClass = () => {\r\n return type === TabType.Branches ? SEARCH_FORM_BRANCHES : SEARCH_FORM_ATMS;\r\n };\r\n\r\n const handleChangeAddress = (value) => {\r\n setInputValue(value);\r\n if (value === \"\") {\r\n setShowAlertNoResult(false);\r\n }\r\n };\r\n\r\n // event is not trusted\r\n // clicks submit button programmatically\r\n const handleSelectAddress = async (value) => {\r\n window.location.hash = \"#ResultsList\";\r\n\r\n // takes address and changes it to geolocation coordinates\r\n let results;\r\n let latLng;\r\n try {\r\n results = await geocodeByAddressCZ(value);\r\n latLng = await getLatLng(results[0]);\r\n } catch (error) {\r\n console.warn(error);\r\n setShowAlertNoResult(true);\r\n return;\r\n }\r\n // coordinates are stored in local storage\r\n window.localStorage.setItem(GEO_COORDINATES_FROM_SEARCH, JSON.stringify(latLng));\r\n\r\n // set state\r\n setShowAlertNoResult(false);\r\n setInputValue(value);\r\n\r\n // get submit button and click on it\r\n if (submitButtonRef.current) {\r\n submitButtonRef.current.click();\r\n }\r\n };\r\n\r\n // event is trusted - submit clicked by USER\r\n // used to recognize 'handleSelectAddress' vs real button click by user\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted\r\n const handleSubmitOnCLick = async (event: MouseEvent): Promise => {\r\n const isClickedByUser = event.isTrusted;\r\n window.location.hash = \"#ResultsList\";\r\n\r\n if (isClickedByUser) {\r\n event.preventDefault();\r\n let results;\r\n let latLng;\r\n try {\r\n results = await geocodeByAddressCZ(inputValue);\r\n latLng = await getLatLng(results[0]);\r\n } catch (error) {\r\n console.warn(error);\r\n setShowAlertNoResult(true);\r\n return;\r\n }\r\n // coordinates are stored in local storage\r\n window.localStorage.setItem(GEO_COORDINATES_FROM_SEARCH, JSON.stringify(latLng));\r\n\r\n // set state\r\n setShowAlertNoResult(false);\r\n\r\n // get submit button and click on it\r\n if (submitButtonRef.current) {\r\n submitButtonRef.current.click();\r\n }\r\n }\r\n };\r\n\r\n // Log error status and clear dropdown when Google Maps API returns an error.\r\n const onError = (status, clearSuggestions) => {\r\n if (!isProduction) {\r\n console.warn(\"Google Maps API returned status: \", status);\r\n }\r\n if (status === \"ZERO_RESULTS\" || status === \"NOT_FOUND\") {\r\n setShowAlertNoResult(true);\r\n }\r\n clearSuggestions();\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {({ getInputProps, suggestions, getSuggestionItemProps }) => (\r\n
    \r\n \r\n\r\n {isToggled && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n {suggestions.map((suggestion) => {\r\n const style = {\r\n backgroundColor: suggestion.active ? \"#EAEEF3\" : \"#FFFFFF\",\r\n };\r\n\r\n return (\r\n \r\n {suggestion.description}\r\n
    \r\n );\r\n })}\r\n\r\n {suggestions.length > 0 && }\r\n
    \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n {getLocalization(localization, \"SearchButton\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SearchFormBranchesAtms;\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!fastDeepEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n if (this.loading) ;\n else {\n this.loading = true;\n this.setScript();\n }\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n//# sourceMappingURL=index.esm.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1, type2) {\n // eslint-disable-next-line prefer-const\n for (var property in type2.prototype) {\n type1.prototype[property] = type2.prototype[property];\n }\n}\n/**\n * @ignore\n */\nvar OverlayViewSafe = /** @class */ (function () {\n function OverlayViewSafe() {\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\n // extend function to extend MarkerClusterer with google.maps.OverlayView\n // because it might not always be available when the code is defined so we\n // look for it at the last possible moment. If it doesn't exist now then\n // there is no point going ahead :)\n extend(OverlayViewSafe, google.maps.OverlayView);\n }\n return OverlayViewSafe;\n}());\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n *\n * @hidden\n */\nfunction toCssText(styles) {\n return Object.keys(styles)\n .reduce(function (acc, key) {\n if (styles[key]) {\n acc.push(key + \":\" + styles[key]);\n }\n return acc;\n }, [])\n .join(\";\");\n}\n/**\n *\n * @hidden\n */\nfunction coercePixels(pixels) {\n return pixels ? pixels + \"px\" : undefined;\n}\n/**\n * A cluster icon.\n */\nvar ClusterIcon = /** @class */ (function (_super) {\n __extends(ClusterIcon, _super);\n /**\n * @param cluster_ The cluster with which the icon is to be associated.\n * @param styles_ An array of {@link ClusterIconStyle} defining the cluster icons\n * to use for various cluster sizes.\n */\n function ClusterIcon(cluster_, styles_) {\n var _this = _super.call(this) || this;\n _this.cluster_ = cluster_;\n _this.styles_ = styles_;\n _this.center_ = null;\n _this.div_ = null;\n _this.sums_ = null;\n _this.visible_ = false;\n _this.style = null;\n _this.setMap(cluster_.getMap()); // Note: this causes onAdd to be called\n return _this;\n }\n /**\n * Adds the icon to the DOM.\n */\n ClusterIcon.prototype.onAdd = function () {\n var _this = this;\n var cMouseDownInCluster;\n var cDraggingMapByCluster;\n var mc = this.cluster_.getMarkerClusterer();\n var _a = google.maps.version.split(\".\"), major = _a[0], minor = _a[1];\n var gmVersion = parseInt(major, 10) * 100 + parseInt(minor, 10);\n this.div_ = document.createElement(\"div\");\n if (this.visible_) {\n this.show();\n }\n this.getPanes().overlayMouseTarget.appendChild(this.div_);\n // Fix for Issue 157\n this.boundsChangedListener_ = google.maps.event.addListener(this.getMap(), \"bounds_changed\", function () {\n cDraggingMapByCluster = cMouseDownInCluster;\n });\n google.maps.event.addDomListener(this.div_, \"mousedown\", function () {\n cMouseDownInCluster = true;\n cDraggingMapByCluster = false;\n });\n google.maps.event.addDomListener(this.div_, \"contextmenu\", function () {\n /**\n * This event is fired when a cluster marker contextmenu is requested.\n * @name MarkerClusterer#mouseover\n * @param {Cluster} c The cluster that the contextmenu is requested.\n * @event\n */\n google.maps.event.trigger(mc, \"contextmenu\", _this.cluster_);\n });\n // March 1, 2018: Fix for this 3.32 exp bug, https://issuetracker.google.com/issues/73571522\n // But it doesn't work with earlier releases so do a version check.\n if (gmVersion >= 332) {\n // Ugly version-dependent code\n google.maps.event.addDomListener(this.div_, \"touchstart\", function (e) {\n e.stopPropagation();\n });\n }\n google.maps.event.addDomListener(this.div_, \"click\", function (e) {\n cMouseDownInCluster = false;\n if (!cDraggingMapByCluster) {\n /**\n * This event is fired when a cluster marker is clicked.\n * @name MarkerClusterer#click\n * @param {Cluster} c The cluster that was clicked.\n * @event\n */\n google.maps.event.trigger(mc, \"click\", _this.cluster_);\n google.maps.event.trigger(mc, \"clusterclick\", _this.cluster_); // deprecated name\n // The default click handler follows. Disable it by setting\n // the zoomOnClick property to false.\n if (mc.getZoomOnClick()) {\n // Zoom into the cluster.\n var mz_1 = mc.getMaxZoom();\n var theBounds_1 = _this.cluster_.getBounds();\n mc.getMap().fitBounds(theBounds_1);\n // There is a fix for Issue 170 here:\n setTimeout(function () {\n mc.getMap().fitBounds(theBounds_1);\n // Don't zoom beyond the max zoom level\n if (mz_1 !== null && mc.getMap().getZoom() > mz_1) {\n mc.getMap().setZoom(mz_1 + 1);\n }\n }, 100);\n }\n // Prevent event propagation to the map:\n e.cancelBubble = true;\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n }\n });\n google.maps.event.addDomListener(this.div_, \"mouseover\", function () {\n /**\n * This event is fired when the mouse moves over a cluster marker.\n * @name MarkerClusterer#mouseover\n * @param {Cluster} c The cluster that the mouse moved over.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseover\", _this.cluster_);\n });\n google.maps.event.addDomListener(this.div_, \"mouseout\", function () {\n /**\n * This event is fired when the mouse moves out of a cluster marker.\n * @name MarkerClusterer#mouseout\n * @param {Cluster} c The cluster that the mouse moved out of.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseout\", _this.cluster_);\n });\n };\n /**\n * Removes the icon from the DOM.\n */\n ClusterIcon.prototype.onRemove = function () {\n if (this.div_ && this.div_.parentNode) {\n this.hide();\n google.maps.event.removeListener(this.boundsChangedListener_);\n google.maps.event.clearInstanceListeners(this.div_);\n this.div_.parentNode.removeChild(this.div_);\n this.div_ = null;\n }\n };\n /**\n * Draws the icon.\n */\n ClusterIcon.prototype.draw = function () {\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.top = pos.y + \"px\";\n this.div_.style.left = pos.x + \"px\";\n }\n };\n /**\n * Hides the icon.\n */\n ClusterIcon.prototype.hide = function () {\n if (this.div_) {\n this.div_.style.display = \"none\";\n }\n this.visible_ = false;\n };\n /**\n * Positions and shows the icon.\n */\n ClusterIcon.prototype.show = function () {\n if (this.div_) {\n this.div_.className = this.className_;\n this.div_.style.cssText = this.createCss_(this.getPosFromLatLng_(this.center_));\n this.div_.innerHTML =\n (this.style.url ? this.getImageElementHtml() : \"\") +\n this.getLabelDivHtml();\n if (typeof this.sums_.title === \"undefined\" || this.sums_.title === \"\") {\n this.div_.title = this.cluster_.getMarkerClusterer().getTitle();\n }\n else {\n this.div_.title = this.sums_.title;\n }\n this.div_.style.display = \"\";\n }\n this.visible_ = true;\n };\n ClusterIcon.prototype.getLabelDivHtml = function () {\n var mc = this.cluster_.getMarkerClusterer();\n var ariaLabel = mc.ariaLabelFn(this.sums_.text);\n var divStyle = {\n position: \"absolute\",\n top: coercePixels(this.anchorText_[0]),\n left: coercePixels(this.anchorText_[1]),\n color: this.style.textColor,\n \"font-size\": coercePixels(this.style.textSize),\n \"font-family\": this.style.fontFamily,\n \"font-weight\": this.style.fontWeight,\n \"font-style\": this.style.fontStyle,\n \"text-decoration\": this.style.textDecoration,\n \"text-align\": \"center\",\n width: coercePixels(this.style.width),\n \"line-height\": coercePixels(this.style.textLineHeight)\n };\n return \"\\n
    \\n \").concat(this.sums_.text, \"\\n
    \\n\");\n };\n ClusterIcon.prototype.getImageElementHtml = function () {\n // NOTE: values must be specified in px units\n var bp = (this.style.backgroundPosition || \"0 0\").split(\" \");\n var spriteH = parseInt(bp[0].replace(/^\\s+|\\s+$/g, \"\"), 10);\n var spriteV = parseInt(bp[1].replace(/^\\s+|\\s+$/g, \"\"), 10);\n var dimensions = {};\n if (this.cluster_.getMarkerClusterer().getEnableRetinaIcons()) {\n dimensions = {\n width: coercePixels(this.style.width),\n height: coercePixels(this.style.height)\n };\n }\n else {\n var _a = [\n -1 * spriteV,\n -1 * spriteH + this.style.width,\n -1 * spriteV + this.style.height,\n -1 * spriteH,\n ], Y1 = _a[0], X1 = _a[1], Y2 = _a[2], X2 = _a[3];\n dimensions = {\n clip: \"rect(\".concat(Y1, \"px, \").concat(X1, \"px, \").concat(Y2, \"px, \").concat(X2, \"px)\")\n };\n }\n var overrideDimensionsDynamicIcon = this.sums_.url\n ? { width: \"100%\", height: \"100%\" }\n : {};\n var cssText = toCssText(__assign(__assign({ position: \"absolute\", top: coercePixels(spriteV), left: coercePixels(spriteH) }, dimensions), overrideDimensionsDynamicIcon));\n return \"\\\"\".concat(this.sums_.text,\");\n };\n /**\n * Sets the icon styles to the appropriate element in the styles array.\n *\n * @ignore\n * @param sums The icon label text and styles index.\n */\n ClusterIcon.prototype.useStyle = function (sums) {\n this.sums_ = sums;\n var index = Math.max(0, sums.index - 1);\n index = Math.min(this.styles_.length - 1, index);\n this.style = this.sums_.url\n ? __assign(__assign({}, this.styles_[index]), { url: this.sums_.url }) : this.styles_[index];\n this.anchorText_ = this.style.anchorText || [0, 0];\n this.anchorIcon_ = this.style.anchorIcon || [\n Math.floor(this.style.height / 2),\n Math.floor(this.style.width / 2),\n ];\n this.className_ =\n this.cluster_.getMarkerClusterer().getClusterClass() +\n \" \" +\n (this.style.className || \"cluster-\" + index);\n };\n /**\n * Sets the position at which to center the icon.\n *\n * @param center The latlng to set as the center.\n */\n ClusterIcon.prototype.setCenter = function (center) {\n this.center_ = center;\n };\n /**\n * Creates the `cssText` style parameter based on the position of the icon.\n *\n * @param pos The position of the icon.\n * @return The CSS style text.\n */\n ClusterIcon.prototype.createCss_ = function (pos) {\n return toCssText({\n \"z-index\": \"\".concat(this.cluster_.getMarkerClusterer().getZIndex()),\n top: coercePixels(pos.y),\n left: coercePixels(pos.x),\n width: coercePixels(this.style.width),\n height: coercePixels(this.style.height),\n cursor: \"pointer\",\n position: \"absolute\",\n \"-webkit-user-select\": \"none\",\n \"-khtml-user-select\": \"none\",\n \"-moz-user-select\": \"none\",\n \"-o-user-select\": \"none\",\n \"user-select\": \"none\"\n });\n };\n /**\n * Returns the position at which to place the DIV depending on the latlng.\n *\n * @param latlng The position in latlng.\n * @return The position in pixels.\n */\n ClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n pos.x = Math.floor(pos.x - this.anchorIcon_[1]);\n pos.y = Math.floor(pos.y - this.anchorIcon_[0]);\n return pos;\n };\n return ClusterIcon;\n}(OverlayViewSafe));\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a single cluster that manages a group of proximate markers.\n * Used internally, do not call this constructor directly.\n */\nvar Cluster = /** @class */ (function () {\n /**\n *\n * @param markerClusterer_ The `MarkerClusterer` object with which this\n * cluster is associated.\n */\n function Cluster(markerClusterer_) {\n this.markerClusterer_ = markerClusterer_;\n this.map_ = this.markerClusterer_.getMap();\n this.minClusterSize_ = this.markerClusterer_.getMinimumClusterSize();\n this.averageCenter_ = this.markerClusterer_.getAverageCenter();\n this.markers_ = []; // TODO: type;\n this.center_ = null;\n this.bounds_ = null;\n this.clusterIcon_ = new ClusterIcon(this, this.markerClusterer_.getStyles());\n }\n /**\n * Returns the number of markers managed by the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler for the `MarkerClusterer` object.\n *\n * @return The number of markers in the cluster.\n */\n Cluster.prototype.getSize = function () {\n return this.markers_.length;\n };\n /**\n * Returns the array of markers managed by the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler for the `MarkerClusterer` object.\n *\n * @return The array of markers in the cluster.\n */\n Cluster.prototype.getMarkers = function () {\n return this.markers_;\n };\n /**\n * Returns the center of the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler\n * for the `MarkerClusterer` object.\n *\n * @return The center of the cluster.\n */\n Cluster.prototype.getCenter = function () {\n return this.center_;\n };\n /**\n * Returns the map with which the cluster is associated.\n *\n * @return The map.\n * @ignore\n */\n Cluster.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Returns the `MarkerClusterer` object with which the cluster is associated.\n *\n * @return The associated marker clusterer.\n * @ignore\n */\n Cluster.prototype.getMarkerClusterer = function () {\n return this.markerClusterer_;\n };\n /**\n * Returns the bounds of the cluster.\n *\n * @return the cluster bounds.\n * @ignore\n */\n Cluster.prototype.getBounds = function () {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n var markers = this.getMarkers();\n for (var i = 0; i < markers.length; i++) {\n bounds.extend(markers[i].getPosition());\n }\n return bounds;\n };\n /**\n * Removes the cluster from the map.\n *\n * @ignore\n */\n Cluster.prototype.remove = function () {\n this.clusterIcon_.setMap(null);\n this.markers_ = [];\n delete this.markers_;\n };\n /**\n * Adds a marker to the cluster.\n *\n * @param marker The marker to be added.\n * @return True if the marker was added.\n * @ignore\n */\n Cluster.prototype.addMarker = function (marker) {\n if (this.isMarkerAlreadyAdded_(marker)) {\n return false;\n }\n if (!this.center_) {\n this.center_ = marker.getPosition();\n this.calculateBounds_();\n }\n else {\n if (this.averageCenter_) {\n var l = this.markers_.length + 1;\n var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\n var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\n this.center_ = new google.maps.LatLng(lat, lng);\n this.calculateBounds_();\n }\n }\n marker.isAdded = true;\n this.markers_.push(marker);\n var mCount = this.markers_.length;\n var mz = this.markerClusterer_.getMaxZoom();\n if (mz !== null && this.map_.getZoom() > mz) {\n // Zoomed in past max zoom, so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n }\n else if (mCount < this.minClusterSize_) {\n // Min cluster size not reached so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n }\n else if (mCount === this.minClusterSize_) {\n // Hide the markers that were showing.\n for (var i = 0; i < mCount; i++) {\n this.markers_[i].setMap(null);\n }\n }\n else {\n marker.setMap(null);\n }\n return true;\n };\n /**\n * Determines if a marker lies within the cluster's bounds.\n *\n * @param marker The marker to check.\n * @return True if the marker lies in the bounds.\n * @ignore\n */\n Cluster.prototype.isMarkerInClusterBounds = function (marker) {\n return this.bounds_.contains(marker.getPosition());\n };\n /**\n * Calculates the extended bounds of the cluster with the grid.\n */\n Cluster.prototype.calculateBounds_ = function () {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\n };\n /**\n * Updates the cluster icon.\n */\n Cluster.prototype.updateIcon = function () {\n var mCount = this.markers_.length;\n var mz = this.markerClusterer_.getMaxZoom();\n if (mz !== null && this.map_.getZoom() > mz) {\n this.clusterIcon_.hide();\n return;\n }\n if (mCount < this.minClusterSize_) {\n // Min cluster size not yet reached.\n this.clusterIcon_.hide();\n return;\n }\n var numStyles = this.markerClusterer_.getStyles().length;\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\n this.clusterIcon_.setCenter(this.center_);\n this.clusterIcon_.useStyle(sums);\n this.clusterIcon_.show();\n };\n /**\n * Determines if a marker has already been added to the cluster.\n *\n * @param marker The marker to check.\n * @return True if the marker has already been added.\n */\n Cluster.prototype.isMarkerAlreadyAdded_ = function (marker) {\n if (this.markers_.indexOf) {\n return this.markers_.indexOf(marker) !== -1;\n }\n else {\n for (var i = 0; i < this.markers_.length; i++) {\n if (marker === this.markers_[i]) {\n return true;\n }\n }\n }\n return false;\n };\n return Cluster;\n}());\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @ignore\n */\nvar getOption = function (options, prop, def) {\n if (options[prop] !== undefined) {\n return options[prop];\n }\n else {\n return def;\n }\n};\nvar MarkerClusterer = /** @class */ (function (_super) {\n __extends(MarkerClusterer, _super);\n /**\n * Creates a MarkerClusterer object with the options specified in {@link MarkerClustererOptions}.\n * @param map The Google map to attach to.\n * @param markers The markers to be added to the cluster.\n * @param options The optional parameters.\n */\n function MarkerClusterer(map, markers, options) {\n if (markers === void 0) { markers = []; }\n if (options === void 0) { options = {}; }\n var _this = _super.call(this) || this;\n _this.options = options;\n _this.markers_ = [];\n _this.clusters_ = [];\n _this.listeners_ = [];\n _this.activeMap_ = null;\n _this.ready_ = false;\n _this.ariaLabelFn = _this.options.ariaLabelFn || (function () { return \"\"; });\n _this.zIndex_ = _this.options.zIndex || Number(google.maps.Marker.MAX_ZINDEX) + 1;\n _this.gridSize_ = _this.options.gridSize || 60;\n _this.minClusterSize_ = _this.options.minimumClusterSize || 2;\n _this.maxZoom_ = _this.options.maxZoom || null;\n _this.styles_ = _this.options.styles || [];\n _this.title_ = _this.options.title || \"\";\n _this.zoomOnClick_ = getOption(_this.options, \"zoomOnClick\", true);\n _this.averageCenter_ = getOption(_this.options, \"averageCenter\", false);\n _this.ignoreHidden_ = getOption(_this.options, \"ignoreHidden\", false);\n _this.enableRetinaIcons_ = getOption(_this.options, \"enableRetinaIcons\", false);\n _this.imagePath_ = _this.options.imagePath || MarkerClusterer.IMAGE_PATH;\n _this.imageExtension_ = _this.options.imageExtension || MarkerClusterer.IMAGE_EXTENSION;\n _this.imageSizes_ = _this.options.imageSizes || MarkerClusterer.IMAGE_SIZES;\n _this.calculator_ = _this.options.calculator || MarkerClusterer.CALCULATOR;\n _this.batchSize_ = _this.options.batchSize || MarkerClusterer.BATCH_SIZE;\n _this.batchSizeIE_ = _this.options.batchSizeIE || MarkerClusterer.BATCH_SIZE_IE;\n _this.clusterClass_ = _this.options.clusterClass || \"cluster\";\n if (navigator.userAgent.toLowerCase().indexOf(\"msie\") !== -1) {\n // Try to avoid IE timeout when processing a huge number of markers:\n _this.batchSize_ = _this.batchSizeIE_;\n }\n _this.setupStyles_();\n _this.addMarkers(markers, true);\n _this.setMap(map); // Note: this causes onAdd to be called\n return _this;\n }\n /**\n * Implementation of the onAdd interface method.\n * @ignore\n */\n MarkerClusterer.prototype.onAdd = function () {\n var _this = this;\n this.activeMap_ = this.getMap();\n this.ready_ = true;\n this.repaint();\n this.prevZoom_ = this.getMap().getZoom();\n // Add the map event listeners\n this.listeners_ = [\n google.maps.event.addListener(this.getMap(), \"zoom_changed\", function () {\n var map = _this.getMap(); // eslint-disable-line @typescript-eslint/no-explicit-any\n // Fix for bug #407\n // Determines map type and prevents illegal zoom levels\n var minZoom = map.minZoom || 0;\n var maxZoom = Math.min(map.maxZoom || 100, map.mapTypes[map.getMapTypeId()].maxZoom);\n var zoom = Math.min(Math.max(_this.getMap().getZoom(), minZoom), maxZoom);\n if (_this.prevZoom_ != zoom) {\n _this.prevZoom_ = zoom;\n _this.resetViewport_(false);\n }\n }),\n google.maps.event.addListener(this.getMap(), \"idle\", function () {\n _this.redraw_();\n }),\n ];\n };\n /**\n * Implementation of the onRemove interface method.\n * Removes map event listeners and all cluster icons from the DOM.\n * All managed markers are also put back on the map.\n * @ignore\n */\n MarkerClusterer.prototype.onRemove = function () {\n // Put all the managed markers back on the map:\n for (var i = 0; i < this.markers_.length; i++) {\n if (this.markers_[i].getMap() !== this.activeMap_) {\n this.markers_[i].setMap(this.activeMap_);\n }\n }\n // Remove all clusters:\n for (var i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n // Remove map event listeners:\n for (var i = 0; i < this.listeners_.length; i++) {\n google.maps.event.removeListener(this.listeners_[i]);\n }\n this.listeners_ = [];\n this.activeMap_ = null;\n this.ready_ = false;\n };\n /**\n * Implementation of the draw interface method.\n * @ignore\n */\n MarkerClusterer.prototype.draw = function () { };\n /**\n * Sets up the styles object.\n */\n MarkerClusterer.prototype.setupStyles_ = function () {\n if (this.styles_.length > 0) {\n return;\n }\n for (var i = 0; i < this.imageSizes_.length; i++) {\n var size = this.imageSizes_[i];\n this.styles_.push(MarkerClusterer.withDefaultStyle({\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\n height: size,\n width: size\n }));\n }\n };\n /**\n * Fits the map to the bounds of the markers managed by the clusterer.\n */\n MarkerClusterer.prototype.fitMapToMarkers = function (padding) {\n var markers = this.getMarkers();\n var bounds = new google.maps.LatLngBounds();\n for (var i = 0; i < markers.length; i++) {\n // March 3, 2018: Bug fix -- honor the ignoreHidden property\n if (markers[i].getVisible() || !this.getIgnoreHidden()) {\n bounds.extend(markers[i].getPosition());\n }\n }\n this.getMap().fitBounds(bounds, padding);\n };\n /**\n * Returns the value of the `gridSize` property.\n *\n * @return The grid size.\n */\n MarkerClusterer.prototype.getGridSize = function () {\n return this.gridSize_;\n };\n /**\n * Sets the value of the `gridSize` property.\n *\n * @param gridSize The grid size.\n */\n MarkerClusterer.prototype.setGridSize = function (gridSize) {\n this.gridSize_ = gridSize;\n };\n /**\n * Returns the value of the `minimumClusterSize` property.\n *\n * @return The minimum cluster size.\n */\n MarkerClusterer.prototype.getMinimumClusterSize = function () {\n return this.minClusterSize_;\n };\n /**\n * Sets the value of the `minimumClusterSize` property.\n *\n * @param minimumClusterSize The minimum cluster size.\n */\n MarkerClusterer.prototype.setMinimumClusterSize = function (minimumClusterSize) {\n this.minClusterSize_ = minimumClusterSize;\n };\n /**\n * Returns the value of the `maxZoom` property.\n *\n * @return The maximum zoom level.\n */\n MarkerClusterer.prototype.getMaxZoom = function () {\n return this.maxZoom_;\n };\n /**\n * Sets the value of the `maxZoom` property.\n *\n * @param maxZoom The maximum zoom level.\n */\n MarkerClusterer.prototype.setMaxZoom = function (maxZoom) {\n this.maxZoom_ = maxZoom;\n };\n MarkerClusterer.prototype.getZIndex = function () {\n return this.zIndex_;\n };\n MarkerClusterer.prototype.setZIndex = function (zIndex) {\n this.zIndex_ = zIndex;\n };\n /**\n * Returns the value of the `styles` property.\n *\n * @return The array of styles defining the cluster markers to be used.\n */\n MarkerClusterer.prototype.getStyles = function () {\n return this.styles_;\n };\n /**\n * Sets the value of the `styles` property.\n *\n * @param styles The array of styles to use.\n */\n MarkerClusterer.prototype.setStyles = function (styles) {\n this.styles_ = styles;\n };\n /**\n * Returns the value of the `title` property.\n *\n * @return The content of the title text.\n */\n MarkerClusterer.prototype.getTitle = function () {\n return this.title_;\n };\n /**\n * Sets the value of the `title` property.\n *\n * @param title The value of the title property.\n */\n MarkerClusterer.prototype.setTitle = function (title) {\n this.title_ = title;\n };\n /**\n * Returns the value of the `zoomOnClick` property.\n *\n * @return True if zoomOnClick property is set.\n */\n MarkerClusterer.prototype.getZoomOnClick = function () {\n return this.zoomOnClick_;\n };\n /**\n * Sets the value of the `zoomOnClick` property.\n *\n * @param zoomOnClick The value of the zoomOnClick property.\n */\n MarkerClusterer.prototype.setZoomOnClick = function (zoomOnClick) {\n this.zoomOnClick_ = zoomOnClick;\n };\n /**\n * Returns the value of the `averageCenter` property.\n *\n * @return True if averageCenter property is set.\n */\n MarkerClusterer.prototype.getAverageCenter = function () {\n return this.averageCenter_;\n };\n /**\n * Sets the value of the `averageCenter` property.\n *\n * @param averageCenter The value of the averageCenter property.\n */\n MarkerClusterer.prototype.setAverageCenter = function (averageCenter) {\n this.averageCenter_ = averageCenter;\n };\n /**\n * Returns the value of the `ignoreHidden` property.\n *\n * @return True if ignoreHidden property is set.\n */\n MarkerClusterer.prototype.getIgnoreHidden = function () {\n return this.ignoreHidden_;\n };\n /**\n * Sets the value of the `ignoreHidden` property.\n *\n * @param ignoreHidden The value of the ignoreHidden property.\n */\n MarkerClusterer.prototype.setIgnoreHidden = function (ignoreHidden) {\n this.ignoreHidden_ = ignoreHidden;\n };\n /**\n * Returns the value of the `enableRetinaIcons` property.\n *\n * @return True if enableRetinaIcons property is set.\n */\n MarkerClusterer.prototype.getEnableRetinaIcons = function () {\n return this.enableRetinaIcons_;\n };\n /**\n * Sets the value of the `enableRetinaIcons` property.\n *\n * @param enableRetinaIcons The value of the enableRetinaIcons property.\n */\n MarkerClusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {\n this.enableRetinaIcons_ = enableRetinaIcons;\n };\n /**\n * Returns the value of the `imageExtension` property.\n *\n * @return The value of the imageExtension property.\n */\n MarkerClusterer.prototype.getImageExtension = function () {\n return this.imageExtension_;\n };\n /**\n * Sets the value of the `imageExtension` property.\n *\n * @param imageExtension The value of the imageExtension property.\n */\n MarkerClusterer.prototype.setImageExtension = function (imageExtension) {\n this.imageExtension_ = imageExtension;\n };\n /**\n * Returns the value of the `imagePath` property.\n *\n * @return The value of the imagePath property.\n */\n MarkerClusterer.prototype.getImagePath = function () {\n return this.imagePath_;\n };\n /**\n * Sets the value of the `imagePath` property.\n *\n * @param imagePath The value of the imagePath property.\n */\n MarkerClusterer.prototype.setImagePath = function (imagePath) {\n this.imagePath_ = imagePath;\n };\n /**\n * Returns the value of the `imageSizes` property.\n *\n * @return The value of the imageSizes property.\n */\n MarkerClusterer.prototype.getImageSizes = function () {\n return this.imageSizes_;\n };\n /**\n * Sets the value of the `imageSizes` property.\n *\n * @param imageSizes The value of the imageSizes property.\n */\n MarkerClusterer.prototype.setImageSizes = function (imageSizes) {\n this.imageSizes_ = imageSizes;\n };\n /**\n * Returns the value of the `calculator` property.\n *\n * @return the value of the calculator property.\n */\n MarkerClusterer.prototype.getCalculator = function () {\n return this.calculator_;\n };\n /**\n * Sets the value of the `calculator` property.\n *\n * @param calculator The value of the calculator property.\n */\n MarkerClusterer.prototype.setCalculator = function (calculator) {\n this.calculator_ = calculator;\n };\n /**\n * Returns the value of the `batchSizeIE` property.\n *\n * @return the value of the batchSizeIE property.\n */\n MarkerClusterer.prototype.getBatchSizeIE = function () {\n return this.batchSizeIE_;\n };\n /**\n * Sets the value of the `batchSizeIE` property.\n *\n * @param batchSizeIE The value of the batchSizeIE property.\n */\n MarkerClusterer.prototype.setBatchSizeIE = function (batchSizeIE) {\n this.batchSizeIE_ = batchSizeIE;\n };\n /**\n * Returns the value of the `clusterClass` property.\n *\n * @return the value of the clusterClass property.\n */\n MarkerClusterer.prototype.getClusterClass = function () {\n return this.clusterClass_;\n };\n /**\n * Sets the value of the `clusterClass` property.\n *\n * @param clusterClass The value of the clusterClass property.\n */\n MarkerClusterer.prototype.setClusterClass = function (clusterClass) {\n this.clusterClass_ = clusterClass;\n };\n /**\n * Returns the array of markers managed by the clusterer.\n *\n * @return The array of markers managed by the clusterer.\n */\n MarkerClusterer.prototype.getMarkers = function () {\n return this.markers_;\n };\n /**\n * Returns the number of markers managed by the clusterer.\n *\n * @return The number of markers.\n */\n MarkerClusterer.prototype.getTotalMarkers = function () {\n return this.markers_.length;\n };\n /**\n * Returns the current array of clusters formed by the clusterer.\n *\n * @return The array of clusters formed by the clusterer.\n */\n MarkerClusterer.prototype.getClusters = function () {\n return this.clusters_;\n };\n /**\n * Returns the number of clusters formed by the clusterer.\n *\n * @return The number of clusters formed by the clusterer.\n */\n MarkerClusterer.prototype.getTotalClusters = function () {\n return this.clusters_.length;\n };\n /**\n * Adds a marker to the clusterer. The clusters are redrawn unless\n * `nodraw` is set to `true`.\n *\n * @param marker The marker to add.\n * @param nodraw Set to `true` to prevent redrawing.\n */\n MarkerClusterer.prototype.addMarker = function (marker, nodraw) {\n this.pushMarkerTo_(marker);\n if (!nodraw) {\n this.redraw_();\n }\n };\n /**\n * Adds an array of markers to the clusterer. The clusters are redrawn unless\n * `nodraw` is set to `true`.\n *\n * @param markers The markers to add.\n * @param nodraw Set to `true` to prevent redrawing.\n */\n MarkerClusterer.prototype.addMarkers = function (markers, nodraw) {\n for (var key in markers) {\n if (Object.prototype.hasOwnProperty.call(markers, key)) {\n this.pushMarkerTo_(markers[key]);\n }\n }\n if (!nodraw) {\n this.redraw_();\n }\n };\n /**\n * Pushes a marker to the clusterer.\n *\n * @param marker The marker to add.\n */\n MarkerClusterer.prototype.pushMarkerTo_ = function (marker) {\n var _this = this;\n // If the marker is draggable add a listener so we can update the clusters on the dragend:\n if (marker.getDraggable()) {\n google.maps.event.addListener(marker, \"dragend\", function () {\n if (_this.ready_) {\n marker.isAdded = false;\n _this.repaint();\n }\n });\n }\n marker.isAdded = false;\n this.markers_.push(marker);\n };\n /**\n * Removes a marker from the cluster. The clusters are redrawn unless\n * `nodraw` is set to `true`. Returns `true` if the\n * marker was removed from the clusterer.\n *\n * @param marker The marker to remove.\n * @param nodraw Set to `true` to prevent redrawing.\n * @return True if the marker was removed from the clusterer.\n */\n MarkerClusterer.prototype.removeMarker = function (marker, nodraw) {\n var removed = this.removeMarker_(marker);\n if (!nodraw && removed) {\n this.repaint();\n }\n return removed;\n };\n /**\n * Removes an array of markers from the cluster. The clusters are redrawn unless\n * `nodraw` is set to `true`. Returns `true` if markers were removed from the clusterer.\n *\n * @param markers The markers to remove.\n * @param nodraw Set to `true` to prevent redrawing.\n * @return True if markers were removed from the clusterer.\n */\n MarkerClusterer.prototype.removeMarkers = function (markers, nodraw) {\n var removed = false;\n for (var i = 0; i < markers.length; i++) {\n var r = this.removeMarker_(markers[i]);\n removed = removed || r;\n }\n if (!nodraw && removed) {\n this.repaint();\n }\n return removed;\n };\n /**\n * Removes a marker and returns true if removed, false if not.\n *\n * @param marker The marker to remove\n * @return Whether the marker was removed or not\n */\n MarkerClusterer.prototype.removeMarker_ = function (marker) {\n var index = -1;\n if (this.markers_.indexOf) {\n index = this.markers_.indexOf(marker);\n }\n else {\n for (var i = 0; i < this.markers_.length; i++) {\n if (marker === this.markers_[i]) {\n index = i;\n break;\n }\n }\n }\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n marker.setMap(null);\n this.markers_.splice(index, 1); // Remove the marker from the list of managed markers\n return true;\n };\n /**\n * Removes all clusters and markers from the map and also removes all markers\n * managed by the clusterer.\n */\n MarkerClusterer.prototype.clearMarkers = function () {\n this.resetViewport_(true);\n this.markers_ = [];\n };\n /**\n * Recalculates and redraws all the marker clusters from scratch.\n * Call this after changing any properties.\n */\n MarkerClusterer.prototype.repaint = function () {\n var oldClusters = this.clusters_.slice();\n this.clusters_ = [];\n this.resetViewport_(false);\n this.redraw_();\n // Remove the old clusters.\n // Do it in a timeout to prevent blinking effect.\n setTimeout(function () {\n for (var i = 0; i < oldClusters.length; i++) {\n oldClusters[i].remove();\n }\n }, 0);\n };\n /**\n * Returns the current bounds extended by the grid size.\n *\n * @param bounds The bounds to extend.\n * @return The extended bounds.\n * @ignore\n */\n MarkerClusterer.prototype.getExtendedBounds = function (bounds) {\n var projection = this.getProjection();\n // Turn the bounds into latlng.\n var tr = new google.maps.LatLng(bounds.getNorthEast().lat(), bounds.getNorthEast().lng());\n var bl = new google.maps.LatLng(bounds.getSouthWest().lat(), bounds.getSouthWest().lng());\n // Convert the points to pixels and the extend out by the grid size.\n var trPix = projection.fromLatLngToDivPixel(tr);\n trPix.x += this.gridSize_;\n trPix.y -= this.gridSize_;\n var blPix = projection.fromLatLngToDivPixel(bl);\n blPix.x -= this.gridSize_;\n blPix.y += this.gridSize_;\n // Convert the pixel points back to LatLng\n var ne = projection.fromDivPixelToLatLng(trPix);\n var sw = projection.fromDivPixelToLatLng(blPix);\n // Extend the bounds to contain the new bounds.\n bounds.extend(ne);\n bounds.extend(sw);\n return bounds;\n };\n /**\n * Redraws all the clusters.\n */\n MarkerClusterer.prototype.redraw_ = function () {\n this.createClusters_(0);\n };\n /**\n * Removes all clusters from the map. The markers are also removed from the map\n * if `hide` is set to `true`.\n *\n * @param hide Set to `true` to also remove the markers from the map.\n */\n MarkerClusterer.prototype.resetViewport_ = function (hide) {\n // Remove all the clusters\n for (var i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n // Reset the markers to not be added and to be removed from the map.\n for (var i = 0; i < this.markers_.length; i++) {\n var marker = this.markers_[i];\n marker.isAdded = false;\n if (hide) {\n marker.setMap(null);\n }\n }\n };\n /**\n * Calculates the distance between two latlng locations in km.\n *\n * @param p1 The first lat lng point.\n * @param p2 The second lat lng point.\n * @return The distance between the two points in km.\n * @link http://www.movable-type.co.uk/scripts/latlong.html\n */\n MarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {\n var R = 6371; // Radius of the Earth in km\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((p1.lat() * Math.PI) / 180) *\n Math.cos((p2.lat() * Math.PI) / 180) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n };\n /**\n * Determines if a marker is contained in a bounds.\n *\n * @param marker The marker to check.\n * @param bounds The bounds to check against.\n * @return True if the marker is in the bounds.\n */\n MarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {\n return bounds.contains(marker.getPosition());\n };\n /**\n * Adds a marker to a cluster, or creates a new cluster.\n *\n * @param marker The marker to add.\n */\n MarkerClusterer.prototype.addToClosestCluster_ = function (marker) {\n var distance = 40000; // Some large number\n var clusterToAddTo = null;\n for (var i = 0; i < this.clusters_.length; i++) {\n var cluster = this.clusters_[i];\n var center = cluster.getCenter();\n if (center) {\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n }\n else {\n var cluster = new Cluster(this);\n cluster.addMarker(marker);\n this.clusters_.push(cluster);\n }\n };\n /**\n * Creates the clusters. This is done in batches to avoid timeout errors\n * in some browsers when there is a huge number of markers.\n *\n * @param iFirst The index of the first marker in the batch of\n * markers to be added to clusters.\n */\n MarkerClusterer.prototype.createClusters_ = function (iFirst) {\n var _this = this;\n if (!this.ready_) {\n return;\n }\n // Cancel previous batch processing if we're working on the first batch:\n if (iFirst === 0) {\n google.maps.event.trigger(this, \"clusteringbegin\", this);\n if (typeof this.timerRefStatic !== \"undefined\") {\n clearTimeout(this.timerRefStatic);\n delete this.timerRefStatic;\n }\n }\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n //\n // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:\n var mapBounds = new google.maps.LatLngBounds(this.getMap().getBounds().getSouthWest(), this.getMap().getBounds().getNorthEast());\n var bounds = this.getExtendedBounds(mapBounds);\n var iLast = Math.min(iFirst + this.batchSize_, this.markers_.length);\n for (var i = iFirst; i < iLast; i++) {\n var marker = this.markers_[i];\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\n if (!this.ignoreHidden_ ||\n (this.ignoreHidden_ && marker.getVisible())) {\n this.addToClosestCluster_(marker);\n }\n }\n }\n if (iLast < this.markers_.length) {\n this.timerRefStatic = window.setTimeout(function () {\n _this.createClusters_(iLast);\n }, 0);\n }\n else {\n delete this.timerRefStatic;\n google.maps.event.trigger(this, \"clusteringend\", this);\n for (var i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].updateIcon();\n }\n }\n };\n /**\n * The default function for determining the label text and style\n * for a cluster icon.\n *\n * @param markers The array of markers represented by the cluster.\n * @param numStyles The number of marker styles available.\n * @return The information resource for the cluster.\n */\n MarkerClusterer.CALCULATOR = function (markers, numStyles) {\n var index = 0;\n var count = markers.length;\n var dv = count;\n while (dv !== 0) {\n dv = Math.floor(dv / 10);\n index++;\n }\n index = Math.min(index, numStyles);\n return {\n text: count.toString(),\n index: index,\n title: \"\"\n };\n };\n /**\n * Generates default styles augmented with user passed values.\n * Useful when you want to override some default values but keep untouched\n *\n * @param overrides override default values\n */\n MarkerClusterer.withDefaultStyle = function (overrides) {\n return __assign({ textColor: \"black\", textSize: 11, textDecoration: \"none\", textLineHeight: overrides.height, fontWeight: \"bold\", fontStyle: \"normal\", fontFamily: \"Arial,sans-serif\", backgroundPosition: \"0 0\" }, overrides);\n };\n /**\n * The number of markers to process in one batch.\n */\n MarkerClusterer.BATCH_SIZE = 2000;\n /**\n * The number of markers to process in one batch (IE only).\n */\n MarkerClusterer.BATCH_SIZE_IE = 500;\n /**\n * The default root name for the marker cluster images.\n */\n MarkerClusterer.IMAGE_PATH = \"../images/m\";\n /**\n * The default extension name for the marker cluster images.\n */\n MarkerClusterer.IMAGE_EXTENSION = \"png\";\n /**\n * The default array of sizes for the marker cluster images.\n */\n MarkerClusterer.IMAGE_SIZES = [53, 56, 66, 78, 90];\n return MarkerClusterer;\n}(OverlayViewSafe));\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport { MarkerClusterer as default };\n//# sourceMappingURL=index.esm.js.map\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport React, { useEffect } from \"react\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport MarkerClusterer from \"@googlemaps/markerclustererplus\";\r\n\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nconst BranchesMap = (props) => {\r\n const {\r\n baseUrl,\r\n lat,\r\n lng,\r\n showGeolocation,\r\n localization,\r\n cultureCode,\r\n type,\r\n items,\r\n TabType,\r\n isToggled,\r\n } = props;\r\n\r\n // Funkce pro kontrolu šířky obrazovky\r\n const isSmallScreen = () => {\r\n return window.innerWidth < 992; // Vrátí true, pokud je šířka menší než 992px\r\n };\r\n\r\n const isLandscape = () => {\r\n // Zjistit šířku a výšku okna\r\n const width = window.innerWidth;\r\n const height = window.innerHeight;\r\n\r\n // Porovnat šířku s výškou\r\n if (width > height) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n let mapHeight;\r\n\r\n if (isLandscape() && isSmallScreen()) {\r\n mapHeight = \"450px\";\r\n } else {\r\n mapHeight = \"640px\";\r\n }\r\n\r\n useEffect(() => {\r\n const loader = new Loader({\r\n apiKey: \"AIzaSyB-BZCEoTrALP-YNfYeB7xaWmnmJaB2HRg\",\r\n version: \"weekly\", // Můžete zde specifikovat konkrétní verzi API\r\n });\r\n\r\n const center = {\r\n lat: 49.8175, // Latitude pro Českou republiku\r\n lng: 15.473, // Longitude pro Českou republiku\r\n };\r\n\r\n loader\r\n .load()\r\n .then(() => {\r\n const requestData = {\r\n latitude: lat,\r\n longitude: lng,\r\n baseUrl: \"\",\r\n limit: 9999,\r\n offset: 0,\r\n cultureCode,\r\n };\r\n\r\n // Mapa se načetla, můžete provádět operace s mapou zde\r\n const map = new window.google.maps.Map(document.getElementById(\"map\"), {\r\n center,\r\n zoom: 7, // Přiblížení mapy\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n zoomControl: true,\r\n fullscreenControl: false,\r\n clickableIcons: false,\r\n });\r\n\r\n const clusterStyles = [\r\n {\r\n textColor: \"white\",\r\n url: \"/img/svg/cluster.svg\",\r\n height: 48, // Nastavení výšky ikony klastru\r\n width: 48, // Nastavení šířky ikony klastru\r\n display: \"flex\",\r\n lineHeight: 48,\r\n },\r\n ];\r\n\r\n let infoWindow;\r\n\r\n if (!isSmallScreen()) {\r\n infoWindow = new window.google.maps.InfoWindow({\r\n pixelOffset: new window.google.maps.Size(185, 180),\r\n disableAutoPan: true,\r\n });\r\n } else {\r\n infoWindow = new window.google.maps.InfoWindow({\r\n pixelOffset: new window.google.maps.Size(0, 0),\r\n disableAutoPan: false,\r\n });\r\n }\r\n\r\n // Zpracování dat z odpovědi\r\n const branchData = items;\r\n const markers = branchData?.map((location) => {\r\n const marker = new window.google.maps.Marker({\r\n position: { lat: location.latitude, lng: location.longitude },\r\n title: location.title,\r\n icon: type === \"atms\" ? \"/img/svg/mapAtm.svg\" : \"/img/svg/mapBranche.svg\",\r\n map,\r\n });\r\n\r\n marker.addListener(\"click\", () => {\r\n // Nastavení obsahu info okna na základě údajů o lokalitě\r\n const content = `\r\n
    \r\n
    \r\n
    \r\n \r\n ${location.title}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ${location.additionalInfoCut} ${\r\n localization.Branches_MoreInfo\r\n }
    \r\n
    \r\n
    \r\n \r\n ${localization.Branches_BranchDetail_HasAtm}\r\n
    \r\n
    \r\n \r\n ${location.openingHoursTime}\r\n
    \r\n
    \r\n ${\r\n // eslint-disable-next-line no-nested-ternary\r\n type === \"atms\"\r\n ? localization.Branches_AtmDetail\r\n : location.isAdvisoryCenter\r\n ? localization.Branches_AdvisoryDetail\r\n : localization.Branches_BranchDetail\r\n }\r\n
    \r\n `;\r\n\r\n // Center the map on the clicked marker\r\n const markerPosition = marker.getPosition();\r\n map.panTo(markerPosition);\r\n\r\n infoWindow.setContent(content); // Nastavení obsahu info okna\r\n infoWindow.open(map, marker); // Otevření info okna při kliknutí na marker\r\n });\r\n\r\n // Get the show current location button element\r\n const showLocationBtn = document.getElementById(\"btn-branches-localization\");\r\n if (showLocationBtn) {\r\n showLocationBtn.addEventListener(\"click\", () => {\r\n // Získání aktuální polohy uživatele\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const userPos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Zobrazení aktuální polohy uživatele na mapě\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n },\r\n (error) => {\r\n console.error(\"Error getting user location:\", error);\r\n }\r\n );\r\n } else {\r\n console.error(\"Geolocation is not supported by this browser.\");\r\n }\r\n });\r\n }\r\n\r\n return marker;\r\n });\r\n\r\n // Vytvoření a nastavení MarkerClustereru\r\n const markerCluster = new MarkerClusterer(map, markers, {\r\n styles: clusterStyles,\r\n gridSize: 60,\r\n maxZoom: 15,\r\n });\r\n\r\n if (showGeolocation) {\r\n // Získání aktuální polohy uživatele\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const userPos = {\r\n lat,\r\n lng,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Nastavení centra mapy na aktuální polohu uživatele a přiblížení\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n },\r\n (error) => {\r\n console.error(\"Error getting user location:\", error);\r\n }\r\n );\r\n\r\n if (lat && lng) {\r\n const userPos = {\r\n lat,\r\n lng,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Nastavení centra mapy na aktuální polohu uživatele a přiblížení\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n }\r\n\r\n // Přidání všech markerů do hranic mapy\r\n // ! FIXME\r\n const closestMarkers = markers.slice(0, 5);\r\n const bounds = new window.google.maps.LatLngBounds();\r\n bounds.extend(closestMarkers?.getPosition());\r\n map.fitBounds(bounds);\r\n } else {\r\n const bounds = new window.google.maps.LatLngBounds();\r\n markers.forEach((marker) => {\r\n bounds.extend(marker.getPosition());\r\n });\r\n // Fit the map to the bounds\r\n map.fitBounds(bounds);\r\n }\r\n })\r\n .catch((error) => {\r\n // V případě chyby při načítání Google Maps API\r\n console.error(\"Chyba při načítání mapy:\", error);\r\n });\r\n }, [items, TabType, isToggled]);\r\n\r\n return
    ;\r\n};\r\n\r\nexport default BranchesMap;\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport React, { useEffect } from \"react\";\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\nimport MarkerClusterer from \"@googlemaps/markerclustererplus\";\r\n\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nconst AtmMap = (props) => {\r\n const {\r\n baseUrl,\r\n lat,\r\n lng,\r\n showGeolocation,\r\n localization,\r\n cultureCode,\r\n type,\r\n items,\r\n TabType,\r\n isToggled,\r\n } = props;\r\n\r\n // Funkce pro kontrolu šířky obrazovky\r\n const isSmallScreen = () => {\r\n return window.innerWidth < 992; // Vrátí true, pokud je šířka menší než 992px\r\n };\r\n\r\n useEffect(() => {\r\n const loader = new Loader({\r\n apiKey: \"AIzaSyB-BZCEoTrALP-YNfYeB7xaWmnmJaB2HRg\",\r\n version: \"weekly\", // Můžete zde specifikovat konkrétní verzi API\r\n });\r\n\r\n const center = {\r\n lat: 49.8175, // Latitude pro Českou republiku\r\n lng: 15.473, // Longitude pro Českou republiku\r\n };\r\n\r\n loader\r\n .load()\r\n .then(() => {\r\n const requestData = {\r\n latitude: lat,\r\n longitude: lng,\r\n baseUrl: \"\",\r\n limit: 9999,\r\n offset: 0,\r\n cultureCode,\r\n };\r\n\r\n // Mapa se načetla, můžete provádět operace s mapou zde\r\n const map = new window.google.maps.Map(document.getElementById(\"mapAtm\"), {\r\n center,\r\n zoom: 7, // Přiblížení mapy\r\n mapTypeControl: false,\r\n streetViewControl: false,\r\n zoomControl: true,\r\n fullscreenControl: false,\r\n clickableIcons: false,\r\n });\r\n\r\n const clusterStyles = [\r\n {\r\n textColor: \"white\",\r\n url: \"/img/svg/cluster.svg\",\r\n height: 48, // Nastavení výšky ikony klastru\r\n width: 48, // Nastavení šířky ikony klastru\r\n display: \"flex\",\r\n lineHeight: 48,\r\n },\r\n ];\r\n\r\n let infoWindow;\r\n\r\n if (!isSmallScreen()) {\r\n infoWindow = new window.google.maps.InfoWindow({\r\n pixelOffset: new window.google.maps.Size(185, 180),\r\n disableAutoPan: true,\r\n });\r\n } else {\r\n infoWindow = new window.google.maps.InfoWindow({\r\n pixelOffset: new window.google.maps.Size(0, 0),\r\n disableAutoPan: false,\r\n });\r\n }\r\n\r\n // Zpracování dat z odpovědi\r\n const branchData = items;\r\n const markers = branchData?.map((location) => {\r\n const marker = new window.google.maps.Marker({\r\n position: { lat: location.latitude, lng: location.longitude },\r\n title: location.title,\r\n icon: type === \"atms\" ? \"/img/svg/mapAtm.svg\" : \"/img/svg/mapBranche.svg\",\r\n map,\r\n });\r\n\r\n marker.addListener(\"click\", () => {\r\n // Nastavení obsahu info okna na základě údajů o lokalitě\r\n const content = `\r\n
    \r\n
    \r\n
    \r\n \r\n ${location.title}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    ${location.additionalInfoCut} ${\r\n localization.Branches_MoreInfo\r\n }
    \r\n
    \r\n
    \r\n \r\n ${localization.Branches_BranchDetail_HasAtm}\r\n
    \r\n
    \r\n \r\n ${location.openingHoursTime}\r\n
    \r\n
    \r\n ${\r\n // eslint-disable-next-line no-nested-ternary\r\n type === \"atms\"\r\n ? localization.Branches_AtmDetail\r\n : location.isAdvisoryCenter\r\n ? localization.Branches_AdvisoryDetail\r\n : localization.Branches_BranchDetail\r\n }\r\n
    \r\n `;\r\n\r\n // Center the map on the clicked marker\r\n const markerPosition = marker.getPosition();\r\n map.panTo(markerPosition);\r\n\r\n infoWindow.setContent(content); // Nastavení obsahu info okna\r\n infoWindow.open(map, marker); // Otevření info okna při kliknutí na marker\r\n });\r\n\r\n // Get the show current location button element\r\n const showLocationBtn = document.getElementById(\"btn-atms-localization\");\r\n if (showLocationBtn) {\r\n showLocationBtn.addEventListener(\"click\", () => {\r\n // Získání aktuální polohy uživatele\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const userPos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Zobrazení aktuální polohy uživatele na mapě\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n },\r\n (error) => {\r\n console.error(\"Error getting user location:\", error);\r\n }\r\n );\r\n } else {\r\n console.error(\"Geolocation is not supported by this browser.\");\r\n }\r\n });\r\n }\r\n\r\n return marker;\r\n });\r\n\r\n // Vytvoření a nastavení MarkerClustereru\r\n const markerCluster = new MarkerClusterer(map, markers, {\r\n styles: clusterStyles,\r\n gridSize: 60,\r\n maxZoom: 15,\r\n });\r\n\r\n if (showGeolocation) {\r\n // Získání aktuální polohy uživatele\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n const userPos = {\r\n lat,\r\n lng,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Nastavení centra mapy na aktuální polohu uživatele a přiblížení\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n },\r\n (error) => {\r\n console.error(\"Error getting user location:\", error);\r\n }\r\n );\r\n\r\n if (lat && lng) {\r\n const userPos = {\r\n lat,\r\n lng,\r\n };\r\n\r\n // Vytvoření značky pro aktuální polohu uživatele\r\n const userMarker = new window.google.maps.Marker({\r\n position: userPos,\r\n title: localization.Branches_Atms_YourLocation,\r\n icon: {\r\n url: \"/img/png/yourLocation.png\", // Ikona pro značku aktuální polohy\r\n scaledSize: new window.google.maps.Size(32, 40), // Velikost značky uživatele\r\n },\r\n map,\r\n });\r\n\r\n // Nastavení centra mapy na aktuální polohu uživatele a přiblížení\r\n map.setCenter(userPos);\r\n map.setZoom(12);\r\n }\r\n\r\n // Přidání všech markerů do hranic mapy\r\n // ! FIXME\r\n const closestMarkers = markers.slice(0, 5);\r\n const bounds = new window.google.maps.LatLngBounds();\r\n bounds.extend(closestMarkers?.getPosition());\r\n map.fitBounds(bounds);\r\n } else {\r\n const bounds = new window.google.maps.LatLngBounds();\r\n markers.forEach((marker) => {\r\n bounds.extend(marker.getPosition());\r\n });\r\n // Fit the map to the bounds\r\n map.fitBounds(bounds);\r\n }\r\n })\r\n .catch((error) => {\r\n // V případě chyby při načítání Google Maps API\r\n console.error(\"Chyba při načítání mapy:\", error);\r\n });\r\n }, [items, TabType, isToggled]);\r\n\r\n return
    ;\r\n};\r\n\r\nexport default AtmMap;\r\n","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { Alert, Button, Loader, Icon } from \"@partials\";\r\n\r\nimport {\r\n AlertType,\r\n TabType,\r\n CheckboxKeyValueType,\r\n SEARCH_FORM_BRANCHES,\r\n FALLBACK_COORDINATES,\r\n GEO_COORDINATES_FROM_BROWSER,\r\n GEO_COORDINATES_FROM_SEARCH,\r\n LOAD_10_ITEMS,\r\n} from \"@constants\";\r\n\r\nimport {\r\n getLocalization,\r\n fetchJSON,\r\n getAllCheckboxesKeyValueFromAPI,\r\n hasLocalStorageCoordinates,\r\n getLocalStorageCoordinates,\r\n updateURLParameters,\r\n} from \"@utilities\";\r\n\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { FiltersProps, IconsListProps, LocalizationProps, ResultsListType } from \"../types\";\r\n\r\nimport { useListenerMobile } from \"./hooks/useListenerMobile\";\r\n\r\nimport RowSearchAndFilters from \"./layout/RowSearchAndFilters\";\r\nimport RowResults from \"./layout/RowResults\";\r\nimport FiltersMobile from \"./filters/mobile/FiltersMobile\";\r\nimport FiltersDesktop from \"./filters/desktop/FiltersDesktop\";\r\n\r\nimport {\r\n AlertNoAddressFound,\r\n AlertShared,\r\n GeoLocationInfo,\r\n ResultsList,\r\n BranchesMap,\r\n SearchFormBranchesAtms,\r\n} from \".\";\r\n\r\n/* eslint-disable jsx-a11y/label-has-associated-control */\r\n\r\ntype BranchesSearchProps = {\r\n api: string;\r\n baseUrl: string;\r\n cultureCode: string;\r\n mapEnabled: boolean;\r\n mapMobileEnabled: boolean;\r\n} & FiltersProps &\r\n IconsListProps &\r\n LocalizationProps &\r\n ResultsListType;\r\n\r\ninterface Pagination {\r\n rowsCount?: number;\r\n rowsOnPage?: number;\r\n pagesCount?: number;\r\n currentPage?: number;\r\n}\r\n\r\n// === BRANCHES - Search with address AUTOCOMPLETE and REVERSE GEOCODING\r\nconst BranchesSearch: React.FC = ({\r\n filters,\r\n api,\r\n pagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n iconsList,\r\n mapEnabled,\r\n mapMobileEnabled,\r\n}) => {\r\n usePagination({\r\n api,\r\n formElement: document.querySelector(`.${SEARCH_FORM_BRANCHES}`),\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n });\r\n\r\n // Icons\r\n const { listedItems, map } = iconsList;\r\n const [isToggled, setToggled] = useState(false);\r\n\r\n // checkboxes\r\n const checkboxesDefaultStateObject = getAllCheckboxesKeyValueFromAPI(filters);\r\n const [checkboxesStateObject, setCheckboxesStateObject] = useState(checkboxesDefaultStateObject);\r\n\r\n // payload\r\n const [payloadDataResults, setPayloadDataResults] = useState([]);\r\n\r\n // pagination\r\n const [resultsCurrentPage, setResultsCurrentPage] = useState(pagination.currentPage);\r\n const [resultsPagesCount, setResultsPagesCount] = useState(pagination.pagesCount);\r\n\r\n // loading\r\n const [isLoadingNew, setIsLoadingNew] = useState(false);\r\n const [isLoadingMore, setIsLoadingMore] = useState(false);\r\n\r\n // results states\r\n const [canShowNoResultsAlert, setCanShowNoResultsAlert] = useState(false);\r\n const [hasError, setHasError] = useState(false);\r\n\r\n // search\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const [showAlertNoAddressFound, setShowAlertNoAddressFound] = useState(false);\r\n\r\n // TABS\r\n const selectedTabType = TabType.Branches;\r\n\r\n // ===== SEARCH - SECTION\r\n // RESULTS\r\n const hasResults = payloadDataResults.length > 0;\r\n\r\n const showLoader = isLoadingNew;\r\n const showAlertError = hasError;\r\n const showGeolocation = hasResults;\r\n const showAlertNoResults = canShowNoResultsAlert && !hasResults;\r\n const showResultsList = !isLoadingNew && hasResults;\r\n\r\n const showLoadMoreResults =\r\n !isLoadingNew && hasResults && resultsCurrentPage !== resultsPagesCount;\r\n\r\n // LOCAL STORAGE\r\n const hasBrowserCoordinates = hasLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER);\r\n const hasSearchCoordinates = hasLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH);\r\n\r\n // ===== CHECKBOXES - SECTION\r\n // MOBILE - dropdown toggle click\r\n useListenerMobile(selectedTabType);\r\n\r\n const classMapMobileEnabled = mapMobileEnabled ? \"\" : \"hidden sm:block\";\r\n const classMapEnabled = mapEnabled ? \"underline\" : \"hidden underline\";\r\n\r\n // FILTERS - load NEW data - Fallback\r\n const loadNewFiltersWithFallbackCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load NEW data - Browser\r\n const loadNewFiltersWithBrowserCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load NEW data - Search\r\n const loadNewFiltersWithSearchCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingNew(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n baseUrl,\r\n limit: limit ?? pageSize ?? LOAD_10_ITEMS,\r\n offset: 0,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n setPayloadDataResults(response.payload.data);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingNew(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingNew(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Fallback\r\n const loadMoreFiltersWithFallbackCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: FALLBACK_COORDINATES.lat,\r\n longitude: FALLBACK_COORDINATES.lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Browser\r\n const loadMoreFiltersWithBrowserCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_BROWSER).lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // FILTERS - load MORE data - Search\r\n const loadMoreFiltersWithSearchCoordinates = async (\r\n checkboxKeyValue: CheckboxKeyValueType,\r\n limit?: number\r\n ): Promise => {\r\n setIsLoadingMore(true);\r\n setCanShowNoResultsAlert(false);\r\n\r\n try {\r\n const response = await fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n latitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lat,\r\n longitude: getLocalStorageCoordinates(GEO_COORDINATES_FROM_SEARCH).lng,\r\n baseUrl,\r\n limit: limit ?? pagination.rowsOnPage, // limit = how many results should BE return in response\r\n offset: payloadDataResults.length,\r\n cultureCode,\r\n isPageDetail: false,\r\n ...checkboxKeyValue,\r\n }),\r\n },\r\n });\r\n\r\n // results data from BE\r\n const prevArray = payloadDataResults;\r\n const payloadArray = response.payload.data;\r\n const newResultsArray = prevArray.concat(payloadArray);\r\n\r\n setPayloadDataResults(newResultsArray);\r\n\r\n // data from pagination\r\n const paginationData: Pagination = response.payload.pagination;\r\n const { currentPage, pagesCount } = paginationData;\r\n\r\n setResultsCurrentPage(currentPage);\r\n setResultsPagesCount(pagesCount);\r\n } catch (error) {\r\n setIsLoadingMore(false);\r\n setHasError(true);\r\n console.error(error);\r\n } finally {\r\n setIsLoadingMore(false);\r\n setCanShowNoResultsAlert(true);\r\n }\r\n };\r\n\r\n // HANDLE CHECKBOX ONCHANGE\r\n const handleCheckboxOnChange = (event: React.ChangeEvent) => {\r\n const { checked, value } = event.target;\r\n const checkboxKey = value;\r\n const checkboxValue = checked;\r\n\r\n // handle selected checkbox\r\n const newCheckboxesStateObject = {\r\n ...checkboxesStateObject,\r\n [checkboxKey]: checkboxValue, // selected checkbox Key Value pair\r\n };\r\n setCheckboxesStateObject(newCheckboxesStateObject);\r\n\r\n // handle URL parameters\r\n updateURLParameters(checkboxKey, checkboxValue);\r\n const limit = isToggled ? 9999 : pageSize ?? LOAD_10_ITEMS;\r\n\r\n // LOAD NEW - data - filtered from BE\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithBrowserCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n\r\n if (hasSearchCoordinates) {\r\n loadNewFiltersWithSearchCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n\r\n if (!hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithFallbackCoordinates(newCheckboxesStateObject, limit);\r\n }\r\n };\r\n\r\n const loadNewList = () => {\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithBrowserCoordinates(checkboxesStateObject);\r\n }\r\n if (hasSearchCoordinates) {\r\n loadNewFiltersWithSearchCoordinates(checkboxesStateObject);\r\n }\r\n\r\n if (!hasBrowserCoordinates && !hasSearchCoordinates) {\r\n loadNewFiltersWithFallbackCoordinates(checkboxesStateObject);\r\n }\r\n };\r\n\r\n // LOAD NEW - data - when page finished loading\r\n useEffect(() => {\r\n loadNewList();\r\n }, [hasSearchCoordinates, hasBrowserCoordinates]);\r\n\r\n // LOAD MORE function to show more results\r\n const loadMoreResults = (limit) => {\r\n if (hasBrowserCoordinates && !hasSearchCoordinates) {\r\n return loadMoreFiltersWithBrowserCoordinates(checkboxesStateObject, limit);\r\n }\r\n if (hasSearchCoordinates) {\r\n return loadMoreFiltersWithSearchCoordinates(checkboxesStateObject, limit);\r\n }\r\n\r\n return loadMoreFiltersWithFallbackCoordinates(checkboxesStateObject, limit);\r\n };\r\n\r\n const handleToggle = () => {\r\n if (isToggled) {\r\n setToggled(false);\r\n loadNewList();\r\n } else {\r\n setToggled(true);\r\n pagination.rowsOnPage = 9999;\r\n pageSize = 9998;\r\n loadMoreResults(9999);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {showAlertNoAddressFound && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {showGeolocation && (\r\n \r\n )}\r\n\r\n \r\n {isToggled ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {isToggled\r\n ? getLocalization(localization, \"Branches_Atms_ShowList\")\r\n : getLocalization(localization, \"Branches_Atms_ShowMap\")}\r\n \r\n
    \r\n
    \r\n\r\n {isToggled ? (\r\n <>\r\n {showAlertNoResults && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ) : (\r\n \r\n {showLoader && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {showAlertError && (\r\n \r\n )}\r\n\r\n {showAlertNoResults && (\r\n \r\n )}\r\n\r\n {showResultsList && (\r\n \r\n )}\r\n\r\n {showLoadMoreResults && (\r\n loadMoreResults(pagination.rowsOnPage)}\r\n dataTestId={`button-load-more-${selectedTabType}`}\r\n isLoading={isLoadingMore}\r\n />\r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default BranchesSearch;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Button, Alert, Loader } from \"@partials\";\r\nimport { AlertType, TabType, SEARCH_FORM_BRANCHES } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { ResultsListType } from \"../BranchesAndAtmsList/types\";\r\n\r\nimport { ResultsList } from \"../BranchesAndAtmsList/components\";\r\n\r\nconst BranchesResultsDetail: React.FC = ({\r\n api,\r\n query,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n pageSizeDetail,\r\n hasGeolocation, // this means \"knows geolocation coordinates, it is used on pages: 'Branches - Detail' and 'ATMs - Detail'\r\n latitude,\r\n longitude,\r\n iconsList,\r\n}) => {\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n loadNewItemsOnDetailPage,\r\n loadMoreItemsOnDetailPage,\r\n hasError,\r\n isLoading,\r\n query: currentQuery,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_BRANCHES}`),\r\n formInputName: \"query\",\r\n defaultItems: [],\r\n defaultPagination,\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n pageSize,\r\n pageSizeDetail,\r\n hasGeolocation,\r\n latitude,\r\n longitude,\r\n });\r\n\r\n const noResultsFound = items?.length === 0 && currentQuery;\r\n\r\n useEffect(() => {\r\n loadNewItemsOnDetailPage();\r\n }, []);\r\n\r\n return (\r\n
    \r\n {hasError && (\r\n
    \r\n \r\n
    \r\n )}\r\n {noResultsFound && (\r\n
    \r\n \r\n
    \r\n )}\r\n {isLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default BranchesResultsDetail;\r\n","import React, { useEffect } from \"react\";\r\n\r\ntype Props = {\r\n latitude: number;\r\n longitude: number;\r\n mapPinIcon: string;\r\n};\r\n\r\ndeclare let google: {\r\n maps: any;\r\n};\r\n\r\nconst GOOGLE_MAP = \"google-map\";\r\n\r\nconst DetailMap: React.FC = ({ latitude, longitude, mapPinIcon }) => {\r\n const mapLatLang = { lat: latitude, lng: longitude };\r\n\r\n const mapStyles = [\r\n {\r\n featureType: \"poi\",\r\n stylers: [{ visibility: \"off\" }],\r\n },\r\n ];\r\n\r\n const mapOptions = {\r\n zoom: 16,\r\n center: mapLatLang,\r\n mapTypeId: \"roadmap\",\r\n disableDefaultUI: true,\r\n styles: mapStyles,\r\n };\r\n\r\n // TODO: install types/google.maps: https://developers.google.com/maps/documentation/javascript/using-typescript\r\n const initMap = (): void => {\r\n const map = new google.maps.Map(document.getElementById(GOOGLE_MAP) as HTMLElement, mapOptions);\r\n\r\n // eslint-disable-next-line no-new\r\n new google.maps.Marker({\r\n position: mapLatLang,\r\n map,\r\n icon: mapPinIcon,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n initMap();\r\n }, []);\r\n\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nexport default DetailMap;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport { Button, Alert, Loader } from \"@partials\";\r\nimport { AlertType, TabType, SEARCH_FORM_ATMS } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { usePagination } from \"@hooks\";\r\n\r\nimport { ResultsListType } from \"../BranchesAndAtmsList/types\";\r\n\r\nimport { ResultsList } from \"../BranchesAndAtmsList/components\";\r\n\r\nconst AtmsResultsDetail: React.FC = ({\r\n api,\r\n query,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n pageSize,\r\n pageSizeDetail,\r\n hasGeolocation, // this means \"knows geolocation coordinates, it is used on pages: 'Branches - Detail' and 'ATMs - Detail'\r\n latitude,\r\n longitude,\r\n iconsList,\r\n}) => {\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n loadNewItemsOnDetailPage,\r\n loadMoreItemsOnDetailPage,\r\n hasError,\r\n isLoading,\r\n query: currentQuery,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n formElement: document.querySelector(`.${SEARCH_FORM_ATMS}`),\r\n formInputName: \"query\",\r\n defaultItems: [],\r\n defaultPagination,\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n hasSearchCoordinates: true,\r\n pageSize,\r\n pageSizeDetail,\r\n hasGeolocation,\r\n latitude,\r\n longitude,\r\n });\r\n\r\n const noResultsFound = items?.length === 0 && currentQuery;\r\n\r\n useEffect(() => {\r\n loadNewItemsOnDetailPage();\r\n }, []);\r\n\r\n return (\r\n
    \r\n {hasError && (\r\n
    \r\n \r\n
    \r\n )}\r\n {noResultsFound && (\r\n
    \r\n \r\n
    \r\n )}\r\n {isLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n\r\n {hasNextItems && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default AtmsResultsDetail;\r\n","import React, { useState } from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport { ExchangeRatesTableType } from \"@constants\";\r\nimport { LocalizationTexts } from \"../types\";\r\n\r\ntype RatesTabsProps = {\r\n localization: LocalizationTexts;\r\n iconsList: any;\r\n onChange: (type: ExchangeRatesTableType) => void;\r\n};\r\n\r\nconst RatesTabs: React.FC = ({ localization, iconsList, onChange }) => {\r\n const [isActive, setIsActive] = useState(ExchangeRatesTableType.Cash);\r\n\r\n /**\r\n * Handles TABS onChange callback and setIsActive function for \"is-active\" tab CSS.\r\n * @param {ExchangeRatesTableType} type - Includes 2 different strings: \"cash\" | \"wire\".\r\n *\r\n * @returns {void}\r\n */\r\n const changeTableType = (type: ExchangeRatesTableType): void => {\r\n onChange(type);\r\n setIsActive(type);\r\n };\r\n\r\n const { cash, wire } = iconsList;\r\n\r\n return (\r\n
    \r\n changeTableType(ExchangeRatesTableType.Cash)}\r\n >\r\n \r\n {getLocalization(localization, \"ExchangeCash\")}\r\n \r\n changeTableType(ExchangeRatesTableType.Wire)}\r\n >\r\n \r\n {getLocalization(localization, \"ExchangeWire\")}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default RatesTabs;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { IconOld, Icon } from \"@partials\";\r\nimport { ExchangeRatesTableType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { ExchangeTableRowItem, LocalizationTexts } from \"../types\";\r\n\r\nexport interface TableHintProps {\r\n localization: LocalizationTexts;\r\n type: ExchangeRatesTableType;\r\n}\r\n\r\ntype RatesTableProps = {\r\n items: ExchangeTableRowItem[];\r\n localization: LocalizationTexts;\r\n type: ExchangeRatesTableType;\r\n iconsList: any;\r\n baseUrl: string;\r\n queryDateValueString: string;\r\n};\r\n\r\nconst TableHint: React.FC = ({ type, localization }) => {\r\n return (\r\n
    \r\n \r\n {getLocalization(\r\n localization,\r\n type === ExchangeRatesTableType.Cash ? \"ExchangeCash\" : \"ExchangeWire\"\r\n )}\r\n {\" \"}\r\n  -{\" \"}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst RatesTable: React.FC = ({\r\n items,\r\n localization,\r\n type,\r\n iconsList,\r\n baseUrl,\r\n queryDateValueString,\r\n}) => {\r\n if (!items) return null;\r\n\r\n const { arrowRight } = iconsList;\r\n\r\n return (\r\n <>\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {getLocalization(localization, \"Currency\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"Buy\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"Sell\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"CnbMiddle\")}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {items.map((item) => {\r\n const detailUrlDateTime = `${baseUrl}${item.detailUrl}&date=${queryDateValueString}`;\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {item.title}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {item.currencyUnit} {item.curencyIso}\r\n
    \r\n \r\n {type === ExchangeRatesTableType.Cash ? item.cashBuyStr : item.nonCashBuyStr}\r\n
    \r\n \r\n {type === ExchangeRatesTableType.Cash ? item.cashSellStr : item.nonCashSellStr}\r\n
    \r\n \r\n {item.middleCNBStr}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default memo(RatesTable);\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { ExchangeRatesECBDifference, ExchangeRatesECBDifferenceLink } from \"../types\";\r\n\r\ntype RatesKBvsECBProps = {\r\n exchangeRatesECBDifference: ExchangeRatesECBDifference & ExchangeRatesECBDifferenceLink;\r\n inputDate: string;\r\n iconsList: any;\r\n};\r\n\r\nconst RatesKBvsECB: React.FC = ({\r\n exchangeRatesECBDifference,\r\n inputDate,\r\n iconsList,\r\n}) => {\r\n if (!exchangeRatesECBDifference.isVisible) return null;\r\n\r\n const { arrowRight } = iconsList;\r\n\r\n return (\r\n
    \r\n

    {exchangeRatesECBDifference.title}

    \r\n {/* eslint-disable-next-line react/no-danger */}\r\n

    \r\n \r\n \r\n {exchangeRatesECBDifference.link.innerHtml}\r\n \r\n \r\n \r\n

    \r\n );\r\n};\r\n\r\nexport default RatesKBvsECB;\r\n","import React, { useState } from \"react\";\r\n\r\nimport { AlertType, ExchangeRatesTableType } from \"@constants\";\r\nimport { Alert, Icon, RatesDownloads } from \"@partials\";\r\nimport { getLocalization, fetchJSON } from \"@utilities\";\r\n\r\nimport {\r\n ExchangeRatesListPageProps,\r\n ExchangeTableRowItem,\r\n LocalizationTexts,\r\n TimeSelectOption,\r\n} from \"./types\";\r\n\r\nimport RatesTabs from \"./components/RatesTabs\";\r\nimport RatesTable from \"./components/RatesTable\";\r\nimport RatesKBvsECB from \"./components/RatesKBvsECB\";\r\n\r\ntype FormWrapperProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst EXCHANGE_RATES_FORM = \"exchange-rates-form\";\r\nconst DATE_PICKER = \"date-picker\";\r\nconst TIME_SELECT = \"time-select\";\r\n\r\nconst FormWrapper: React.FC = ({ children }) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {children}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst ExchangeRatesListPageLayout: React.FC = ({\r\n api,\r\n cultureCode,\r\n localization,\r\n dateDll,\r\n timeDll,\r\n isQueryDate,\r\n items,\r\n downloads,\r\n exchangeRatesECBDifference,\r\n iconsList,\r\n baseUrl,\r\n queryDate,\r\n}) => {\r\n const { calendar } = iconsList;\r\n\r\n const [queryDateValueString, setQueryDateValue] = useState(queryDate);\r\n\r\n // TABS (takes selected TAB type from RatesTabs and passes it as value to RatesTable)\r\n const [tableType, setTableType] = useState(ExchangeRatesTableType.Cash);\r\n\r\n // TABLE\r\n const [hasTableError, setHasTableError] = useState(false);\r\n const [tableItems, setTableItems] = useState(items);\r\n\r\n // FORM\r\n // Form - date\r\n const [inputDate, setInputDate] = useState(dateDll); // 'date' from config\r\n const [queryDateValue, setQueryDate] = useState(isQueryDate); // boolean to show 'date error message' if data are not available for selected day\r\n const [queryDateText, setQueryDateText] =\r\n useState(\"releaseTimeNoRecord\"); // text for 'date error message'\r\n // Form - time\r\n const [inputTimeObject, setInputTimeObject] = useState(timeDll); // time object with all available times for the day\r\n const [inputTimeString, setInputTimeString] = useState(timeDll[timeDll.length - 1].value); // 'time' from config (get the oldest time in the current day)\r\n\r\n /**\r\n * Handle fetch data, POST, and set payload data to items in table.\r\n * @remarks\r\n * This function fetches data only when DATE changes and the format for BE is \"date\".\r\n * @param {string} changedDate - Date selected from 'date' input.\r\n *\r\n */\r\n const fetchDate = (changedDate: string) => {\r\n const correctDateFormat = `${changedDate}`;\r\n\r\n fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n date: correctDateFormat,\r\n cultureCode,\r\n }),\r\n },\r\n })\r\n .then((resultData: any) => {\r\n if (resultData.payload.data.length > 0) {\r\n setHasTableError(false);\r\n setTableItems(resultData.payload.data);\r\n setInputDate(resultData.payload.dateDll);\r\n setInputTimeObject(resultData.payload.timeDll);\r\n setQueryDate(resultData.payload.isQueryDate);\r\n setQueryDateText(resultData.payload.localization.releaseTimeNoRecord);\r\n setQueryDateValue(resultData.payload.queryDate);\r\n } else {\r\n setHasTableError(true);\r\n throw new Error(\"Payload 'fetchDate' not loaded!\");\r\n }\r\n })\r\n .catch((error) => {\r\n setHasTableError(true);\r\n if (!isProduction) {\r\n throw new Error(error);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Handle fetch data, POST, and set payload data to items in table.\r\n * @remarks\r\n * This function fetches data when TIME changes and the format for BE is \"date+time\".\r\n * @param {string} changedDate - Date selected from 'date' input.\r\n * @param {string} changedTime - Time selected from 'time' select.\r\n *\r\n */\r\n const fetchDateTime = (changedDate: string, changedTime: string) => {\r\n const correctDateFormat = `${changedDate}+${changedTime}`;\r\n\r\n fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n date: correctDateFormat,\r\n cultureCode,\r\n }),\r\n },\r\n })\r\n .then((resultData: any) => {\r\n if (resultData.payload.data.length > 0) {\r\n setHasTableError(false);\r\n setTableItems(resultData.payload.data);\r\n setInputDate(resultData.payload.dateDll);\r\n setInputTimeObject(resultData.payload.timeDll);\r\n setQueryDate(resultData.payload.isQueryDate);\r\n setQueryDateText(resultData.payload.localization.releaseTimeNoRecord);\r\n setQueryDateValue(resultData.payload.queryDate);\r\n } else {\r\n setHasTableError(true);\r\n throw new Error(\"Payload 'fetchDateTime' not loaded!\");\r\n }\r\n })\r\n .catch((error) => {\r\n setHasTableError(true);\r\n if (!isProduction) {\r\n throw new Error(error);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Takes value from 'date' input onChange and passes it to:\r\n * 1. set new value for useState setInputDate()\r\n * 2. fetchDate()\r\n * 3. URL to show selected date\r\n * @param {string} changedDate - Date value from input onChange event.\r\n *\r\n * @returns {void}\r\n */\r\n const handleChangeDate = (changedDate: string) => {\r\n setInputDate(changedDate);\r\n fetchDate(changedDate);\r\n window.history.replaceState(null, \"\", `?date=${changedDate}`);\r\n };\r\n\r\n /**\r\n * Takes value from 'time' input onChange and passes it to:\r\n * 1. set new value for useState setInputTimeString()\r\n * 2. fetchDateTime()\r\n * 3. URL to show current date and selected time\r\n * @param {string} changedTime - Time value from select onChange event.\r\n *\r\n * @returns {void}\r\n */\r\n const handleChangeTime = (changedTime: string) => {\r\n setInputTimeString(changedTime);\r\n fetchDateTime(inputDate, changedTime);\r\n window.history.replaceState(null, \"\", `?date=${inputDate}%20${changedTime}`);\r\n };\r\n\r\n // DATEPICKER\r\n const hasDateError = !queryDateValue; // shows error if there is no exchange rate for given day [!false (is true) = show, !true (is false) = hide]\r\n const getErrorBorderColor = () => (hasDateError ? \"border-red-corporate\" : \"border-grey-30\");\r\n const getErrorMarginBottom = () => (hasDateError ? \"mb-0\" : \"mb-6 sm:mb-0\");\r\n\r\n // DATEPICKER INPUT\r\n // year\r\n const TEN_YEARS = 10;\r\n const currentYear = new Date().getFullYear();\r\n const tenYearsInThePast = currentYear - TEN_YEARS;\r\n\r\n // month\r\n const month = new Date().getMonth() + 1;\r\n const monthString = `0${month}`.slice(-2);\r\n\r\n // day\r\n const day = new Date().getDate();\r\n const dayString = `0${day.toString()}`.slice(-2);\r\n\r\n // values: min, max\r\n const datePickerMinValue = `${tenYearsInThePast}-01-01`;\r\n const datePickerMaxValue = `${currentYear}-${monthString}-${dayString}`;\r\n\r\n /**\r\n * Function that gets RatesTable content or shows AlertType.error\r\n */\r\n const getRatesTableContent = () => {\r\n return (\r\n
    \r\n {hasTableError ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {hasDateError && (\r\n
    \r\n {getLocalization(localization, queryDateText)}\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n {getRatesTableContent()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ExchangeRatesListPageLayout;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { IconOld } from \"@partials\";\r\nimport { ExchangeRatesTableType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\n\r\nimport { ExchangeTableRowItem, LocalizationTexts } from \"../types\";\r\n\r\nexport interface TableHintProps {\r\n localization: LocalizationTexts;\r\n type: ExchangeRatesTableType;\r\n}\r\n\r\ntype RatesTableProps = {\r\n items: ExchangeTableRowItem[];\r\n localization: LocalizationTexts;\r\n type: ExchangeRatesTableType;\r\n};\r\n\r\nconst RatesTable: React.FC = ({ items, localization, type }) => {\r\n if (!items) return null;\r\n\r\n const getArrow = (trend: number) => {\r\n if (trend > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (trend < 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {getLocalization(localization, \"Currency\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"Buy\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"Sell\")}\r\n
    \r\n
    \r\n {getLocalization(localization, \"CnbMiddle\")}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {items.map((item) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n {item.title}\r\n
    \r\n
    \r\n {getArrow(item.trend)}\r\n
    \r\n
    \r\n\r\n \r\n {item.currencyUnit} {item.curencyIso}\r\n
    \r\n
    \r\n {type === ExchangeRatesTableType.Cash ? item.cashBuyStr : item.nonCashBuyStr}\r\n
    \r\n
    \r\n {type === ExchangeRatesTableType.Cash ? item.cashSellStr : item.nonCashSellStr}\r\n
    \r\n \r\n {item.middleCNBStr}\r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default memo(RatesTable);\r\n","import React from \"react\";\r\n\r\nimport { Icon } from \"@partials\";\r\nimport { ExchangeRatesECBDifference, ExchangeRatesECBDifferenceLink } from \"../types\";\r\n\r\ntype RatesKBvsECBProps = {\r\n exchangeRatesECBDifference: ExchangeRatesECBDifference & ExchangeRatesECBDifferenceLink;\r\n inputDate: string;\r\n iconsList: any;\r\n};\r\n\r\nconst RatesKBvsECB: React.FC = ({\r\n exchangeRatesECBDifference,\r\n inputDate,\r\n iconsList,\r\n}) => {\r\n if (!exchangeRatesECBDifference.isVisible) return null;\r\n\r\n const { arrowRight } = iconsList;\r\n\r\n return (\r\n
    \r\n

    {exchangeRatesECBDifference.title}

    \r\n {/* eslint-disable-next-line react/no-danger */}\r\n

    \r\n \r\n \r\n {exchangeRatesECBDifference.link.innerHtml}\r\n \r\n \r\n \r\n

    \r\n );\r\n};\r\n\r\nexport default RatesKBvsECB;\r\n","import React, { useState } from \"react\";\r\n\r\nimport { AlertType, ExchangeRatesTableType } from \"@constants\";\r\nimport { Alert, Icon, RatesDownloads } from \"@partials\";\r\nimport { getLocalization, fetchJSON } from \"@utilities\";\r\n\r\nimport {\r\n ExchangeRatesListPageProps,\r\n ExchangeTableRowItem,\r\n LocalizationTexts,\r\n TimeSelectOption,\r\n} from \"./types\";\r\n\r\nimport RatesTable from \"./components/RatesTable\";\r\nimport RatesKBvsECB from \"./components/RatesKBvsECB\";\r\n\r\ntype FormWrapperProps = {\r\n children: React.ReactNode;\r\n};\r\n\r\nconst EXCHANGE_RATES_FORM = \"exchange-rates-form\";\r\nconst DATE_PICKER = \"date-picker\";\r\nconst TIME_SELECT = \"time-select\";\r\n\r\nconst FormWrapper: React.FC = ({ children }) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {children}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst ExchangeRatesListPageLayout: React.FC = ({\r\n api,\r\n cultureCode,\r\n localization,\r\n dateDll,\r\n timeDll,\r\n isQueryDate,\r\n items,\r\n downloads,\r\n exchangeRatesECBDifference,\r\n iconsList,\r\n baseUrl,\r\n queryDate,\r\n isSK,\r\n}) => {\r\n const { calendar } = iconsList;\r\n\r\n const [queryDateValueString, setQueryDateValue] = useState(queryDate);\r\n\r\n // TABS (takes selected TAB type from RatesTabs and passes it as value to RatesTable)\r\n const [tableType] = useState(ExchangeRatesTableType.Wire);\r\n\r\n // TABLE\r\n const [hasTableError, setHasTableError] = useState(false);\r\n const [tableItems, setTableItems] = useState(items);\r\n\r\n // FORM\r\n // Form - date\r\n const [inputDate, setInputDate] = useState(dateDll); // 'date' from config\r\n const [queryDateValue, setQueryDate] = useState(isQueryDate); // boolean to show 'date error message' if data are not available for selected day\r\n const [queryDateText, setQueryDateText] =\r\n useState(\"releaseTimeNoRecord\"); // text for 'date error message'\r\n // Form - time\r\n const [inputTimeObject, setInputTimeObject] = useState(timeDll); // time object with all available times for the day\r\n const [inputTimeString, setInputTimeString] = useState(timeDll[timeDll.length - 1].value); // 'time' from config (get the oldest time in the current day)\r\n\r\n /**\r\n * Handle fetch data, POST, and set payload data to items in table.\r\n * @remarks\r\n * This function fetches data only when DATE changes and the format for BE is \"date\".\r\n * @param {string} changedDate - Date selected from 'date' input.\r\n *\r\n */\r\n const fetchDate = (changedDate: string) => {\r\n const correctDateFormat = `${changedDate}`;\r\n\r\n fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n date: correctDateFormat,\r\n cultureCode,\r\n isSK: true,\r\n }),\r\n },\r\n })\r\n .then((resultData: any) => {\r\n if (resultData.payload.data.length > 0) {\r\n setHasTableError(false);\r\n setTableItems(resultData.payload.data);\r\n setInputDate(resultData.payload.dateDll);\r\n setInputTimeObject(resultData.payload.timeDll);\r\n setQueryDate(resultData.payload.isQueryDate);\r\n setQueryDateText(resultData.payload.localization.releaseTimeNoRecord);\r\n setQueryDateValue(resultData.payload.queryDate);\r\n } else {\r\n setHasTableError(true);\r\n throw new Error(\"Payload 'fetchDate' not loaded!\");\r\n }\r\n })\r\n .catch((error) => {\r\n setHasTableError(true);\r\n if (!isProduction) {\r\n throw new Error(error);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Handle fetch data, POST, and set payload data to items in table.\r\n * @remarks\r\n * This function fetches data when TIME changes and the format for BE is \"date+time\".\r\n * @param {string} changedDate - Date selected from 'date' input.\r\n * @param {string} changedTime - Time selected from 'time' select.\r\n *\r\n */\r\n const fetchDateTime = (changedDate: string, changedTime: string) => {\r\n const correctDateFormat = `${changedDate}+${changedTime}`;\r\n\r\n fetchJSON({\r\n settings: {\r\n method: \"POST\",\r\n url: api,\r\n body: JSON.stringify({\r\n date: correctDateFormat,\r\n cultureCode,\r\n isSK: true,\r\n }),\r\n },\r\n })\r\n .then((resultData: any) => {\r\n if (resultData.payload.data.length > 0) {\r\n setHasTableError(false);\r\n setTableItems(resultData.payload.data);\r\n setInputDate(resultData.payload.dateDll);\r\n setInputTimeObject(resultData.payload.timeDll);\r\n setQueryDate(resultData.payload.isQueryDate);\r\n setQueryDateText(resultData.payload.localization.releaseTimeNoRecord);\r\n setQueryDateValue(resultData.payload.queryDate);\r\n } else {\r\n setHasTableError(true);\r\n throw new Error(\"Payload 'fetchDateTime' not loaded!\");\r\n }\r\n })\r\n .catch((error) => {\r\n setHasTableError(true);\r\n if (!isProduction) {\r\n throw new Error(error);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Takes value from 'date' input onChange and passes it to:\r\n * 1. set new value for useState setInputDate()\r\n * 2. fetchDate()\r\n * 3. URL to show selected date\r\n * @param {string} changedDate - Date value from input onChange event.\r\n *\r\n * @returns {void}\r\n */\r\n const handleChangeDate = (changedDate: string) => {\r\n setInputDate(changedDate);\r\n fetchDate(changedDate);\r\n window.history.replaceState(null, \"\", `?date=${changedDate}`);\r\n };\r\n\r\n /**\r\n * Takes value from 'time' input onChange and passes it to:\r\n * 1. set new value for useState setInputTimeString()\r\n * 2. fetchDateTime()\r\n * 3. URL to show current date and selected time\r\n * @param {string} changedTime - Time value from select onChange event.\r\n *\r\n * @returns {void}\r\n */\r\n const handleChangeTime = (changedTime: string) => {\r\n setInputTimeString(changedTime);\r\n fetchDateTime(inputDate, changedTime);\r\n window.history.replaceState(null, \"\", `?date=${inputDate}%20${changedTime}`);\r\n };\r\n\r\n // DATEPICKER\r\n const hasDateError = !queryDateValue; // shows error if there is no exchange rate for given day [!false (is true) = show, !true (is false) = hide]\r\n const getErrorBorderColor = () => (hasDateError ? \"border-red-corporate\" : \"border-grey-30\");\r\n const getErrorMarginBottom = () => (hasDateError ? \"mb-0\" : \"mb-6 sm:mb-0\");\r\n\r\n // DATEPICKER INPUT\r\n // year\r\n const TEN_YEARS = 10;\r\n const currentYear = new Date().getFullYear();\r\n const tenYearsInThePast = currentYear - TEN_YEARS;\r\n\r\n // month\r\n const month = new Date().getMonth() + 1;\r\n const monthString = `0${month}`.slice(-2);\r\n\r\n // day\r\n const day = new Date().getDate();\r\n const dayString = `0${day.toString()}`.slice(-2);\r\n\r\n // values: min, max\r\n const datePickerMinValue = `${tenYearsInThePast}-01-01`;\r\n const datePickerMaxValue = `${currentYear}-${monthString}-${dayString}`;\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {hasDateError && (\r\n
    \r\n {getLocalization(localization, queryDateText)}\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {hasTableError ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ExchangeRatesListPageLayout;\r\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.3.0\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */ function toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */ function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */ function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */ function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.3.0\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key)=>acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.3.0\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight);\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b)=>a - b).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","import React, { forwardRef, useRef, useEffect } from 'react';\nimport { Chart as Chart$1, LineController, BarController, RadarController, DoughnutController, PolarAreaController, BubbleController, PieController, ScatterController } from 'chart.js';\n\nconst defaultDatasetIdKey = \"label\";\nfunction reforwardRef(ref, value) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nfunction setOptions(chart, nextOptions) {\n const options = chart.options;\n if (options && nextOptions) {\n Object.assign(options, nextOptions);\n }\n}\nfunction setLabels(currentData, nextLabels) {\n currentData.labels = nextLabels;\n}\nfunction setDatasets(currentData, nextDatasets) {\n let datasetIdKey = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : defaultDatasetIdKey;\n const addedDatasets = [];\n currentData.datasets = nextDatasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]);\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction cloneData(data) {\n let datasetIdKey = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultDatasetIdKey;\n const nextData = {\n labels: [],\n datasets: []\n };\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n return nextData;\n}\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getDatasetAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, \"dataset\", {\n intersect: true\n }, false);\n}\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, \"nearest\", {\n intersect: true\n }, false);\n}\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */ function getElementsAtEvent(chart, event) {\n return chart.getElementsAtEventForMode(event.nativeEvent, \"index\", {\n intersect: true\n }, false);\n}\n\nfunction ChartComponent(props, ref) {\n const { height =150 , width =300 , redraw =false , datasetIdKey , type , data , options , plugins =[] , fallbackContent , updateMode , ...canvasProps } = props;\n const canvasRef = useRef(null);\n const chartRef = useRef();\n const renderChart = ()=>{\n if (!canvasRef.current) return;\n chartRef.current = new Chart$1(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && {\n ...options\n },\n plugins\n });\n reforwardRef(ref, chartRef.current);\n };\n const destroyChart = ()=>{\n reforwardRef(ref, null);\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n useEffect(()=>{\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [\n redraw,\n options\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [\n redraw,\n data.labels\n ]);\n useEffect(()=>{\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [\n redraw,\n data.datasets\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [\n redraw,\n options,\n data.labels,\n data.datasets,\n updateMode\n ]);\n useEffect(()=>{\n if (!chartRef.current) return;\n destroyChart();\n setTimeout(renderChart);\n }, [\n type\n ]);\n useEffect(()=>{\n renderChart();\n return ()=>destroyChart();\n }, []);\n return /*#__PURE__*/ React.createElement(\"canvas\", Object.assign({\n ref: canvasRef,\n role: \"img\",\n height: height,\n width: width\n }, canvasProps), fallbackContent);\n}\nconst Chart = /*#__PURE__*/ forwardRef(ChartComponent);\n\nfunction createTypedChart(type, registerables) {\n Chart$1.register(registerables);\n return /*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ React.createElement(Chart, Object.assign({}, props, {\n ref: ref,\n type: type\n })));\n}\nconst Line = /* #__PURE__ */ createTypedChart(\"line\", LineController);\nconst Bar = /* #__PURE__ */ createTypedChart(\"bar\", BarController);\nconst Radar = /* #__PURE__ */ createTypedChart(\"radar\", RadarController);\nconst Doughnut = /* #__PURE__ */ createTypedChart(\"doughnut\", DoughnutController);\nconst PolarArea = /* #__PURE__ */ createTypedChart(\"polarArea\", PolarAreaController);\nconst Bubble = /* #__PURE__ */ createTypedChart(\"bubble\", BubbleController);\nconst Pie = /* #__PURE__ */ createTypedChart(\"pie\", PieController);\nconst Scatter = /* #__PURE__ */ createTypedChart(\"scatter\", ScatterController);\n\nexport { Bar, Bubble, Chart, Doughnut, Line, Pie, PolarArea, Radar, Scatter, getDatasetAtEvent, getElementAtEvent, getElementsAtEvent };\n//# sourceMappingURL=index.js.map\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: {\n regular: 'méně než sekunda',\n past: 'před méně než sekundou',\n future: 'za méně než sekundu'\n },\n few: {\n regular: 'méně než {{count}} sekundy',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekundy'\n },\n many: {\n regular: 'méně než {{count}} sekund',\n past: 'před méně než {{count}} sekundami',\n future: 'za méně než {{count}} sekund'\n }\n },\n xSeconds: {\n one: {\n regular: 'sekunda',\n past: 'před sekundou',\n future: 'za sekundu'\n },\n few: {\n regular: '{{count}} sekundy',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekundy'\n },\n many: {\n regular: '{{count}} sekund',\n past: 'před {{count}} sekundami',\n future: 'za {{count}} sekund'\n }\n },\n halfAMinute: {\n type: 'other',\n other: {\n regular: 'půl minuty',\n past: 'před půl minutou',\n future: 'za půl minuty'\n }\n },\n lessThanXMinutes: {\n one: {\n regular: 'méně než minuta',\n past: 'před méně než minutou',\n future: 'za méně než minutu'\n },\n few: {\n regular: 'méně než {{count}} minuty',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minuty'\n },\n many: {\n regular: 'méně než {{count}} minut',\n past: 'před méně než {{count}} minutami',\n future: 'za méně než {{count}} minut'\n }\n },\n xMinutes: {\n one: {\n regular: 'minuta',\n past: 'před minutou',\n future: 'za minutu'\n },\n few: {\n regular: '{{count}} minuty',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minuty'\n },\n many: {\n regular: '{{count}} minut',\n past: 'před {{count}} minutami',\n future: 'za {{count}} minut'\n }\n },\n aboutXHours: {\n one: {\n regular: 'přibližně hodina',\n past: 'přibližně před hodinou',\n future: 'přibližně za hodinu'\n },\n few: {\n regular: 'přibližně {{count}} hodiny',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodiny'\n },\n many: {\n regular: 'přibližně {{count}} hodin',\n past: 'přibližně před {{count}} hodinami',\n future: 'přibližně za {{count}} hodin'\n }\n },\n xHours: {\n one: {\n regular: 'hodina',\n past: 'před hodinou',\n future: 'za hodinu'\n },\n few: {\n regular: '{{count}} hodiny',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodiny'\n },\n many: {\n regular: '{{count}} hodin',\n past: 'před {{count}} hodinami',\n future: 'za {{count}} hodin'\n }\n },\n xDays: {\n one: {\n regular: 'den',\n past: 'před dnem',\n future: 'za den'\n },\n few: {\n regular: '{{count}} dny',\n past: 'před {{count}} dny',\n future: 'za {{count}} dny'\n },\n many: {\n regular: '{{count}} dní',\n past: 'před {{count}} dny',\n future: 'za {{count}} dní'\n }\n },\n aboutXWeeks: {\n one: {\n regular: 'přibližně týden',\n past: 'přibližně před týdnem',\n future: 'přibližně za týden'\n },\n few: {\n regular: 'přibližně {{count}} týdny',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdny'\n },\n many: {\n regular: 'přibližně {{count}} týdnů',\n past: 'přibližně před {{count}} týdny',\n future: 'přibližně za {{count}} týdnů'\n }\n },\n xWeeks: {\n one: {\n regular: 'týden',\n past: 'před týdnem',\n future: 'za týden'\n },\n few: {\n regular: '{{count}} týdny',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdny'\n },\n many: {\n regular: '{{count}} týdnů',\n past: 'před {{count}} týdny',\n future: 'za {{count}} týdnů'\n }\n },\n aboutXMonths: {\n one: {\n regular: 'přibližně měsíc',\n past: 'přibližně před měsícem',\n future: 'přibližně za měsíc'\n },\n few: {\n regular: 'přibližně {{count}} měsíce',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíce'\n },\n many: {\n regular: 'přibližně {{count}} měsíců',\n past: 'přibližně před {{count}} měsíci',\n future: 'přibližně za {{count}} měsíců'\n }\n },\n xMonths: {\n one: {\n regular: 'měsíc',\n past: 'před měsícem',\n future: 'za měsíc'\n },\n few: {\n regular: '{{count}} měsíce',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíce'\n },\n many: {\n regular: '{{count}} měsíců',\n past: 'před {{count}} měsíci',\n future: 'za {{count}} měsíců'\n }\n },\n aboutXYears: {\n one: {\n regular: 'přibližně rok',\n past: 'přibližně před rokem',\n future: 'přibližně za rok'\n },\n few: {\n regular: 'přibližně {{count}} roky',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roky'\n },\n many: {\n regular: 'přibližně {{count}} roků',\n past: 'přibližně před {{count}} roky',\n future: 'přibližně za {{count}} roků'\n }\n },\n xYears: {\n one: {\n regular: 'rok',\n past: 'před rokem',\n future: 'za rok'\n },\n few: {\n regular: '{{count}} roky',\n past: 'před {{count}} roky',\n future: 'za {{count}} roky'\n },\n many: {\n regular: '{{count}} roků',\n past: 'před {{count}} roky',\n future: 'za {{count}} roků'\n }\n },\n overXYears: {\n one: {\n regular: 'více než rok',\n past: 'před více než rokem',\n future: 'za více než rok'\n },\n few: {\n regular: 'více než {{count}} roky',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roky'\n },\n many: {\n regular: 'více než {{count}} roků',\n past: 'před více než {{count}} roky',\n future: 'za více než {{count}} roků'\n }\n },\n almostXYears: {\n one: {\n regular: 'skoro rok',\n past: 'skoro před rokem',\n future: 'skoro za rok'\n },\n few: {\n regular: 'skoro {{count}} roky',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roky'\n },\n many: {\n regular: 'skoro {{count}} roků',\n past: 'skoro před {{count}} roky',\n future: 'skoro za {{count}} roků'\n }\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var pluralResult;\n var tokenValue = formatDistanceLocale[token];\n\n // cs pluralization\n if (tokenValue.type === 'other') {\n pluralResult = tokenValue.other;\n } else if (count === 1) {\n pluralResult = tokenValue.one;\n } else if (count > 1 && count < 5) {\n pluralResult = tokenValue.few;\n } else {\n pluralResult = tokenValue.many;\n }\n\n // times\n var suffixExist = (options === null || options === void 0 ? void 0 : options.addSuffix) === true;\n var comparison = options === null || options === void 0 ? void 0 : options.comparison;\n var timeResult;\n if (suffixExist && comparison === -1) {\n timeResult = pluralResult.past;\n } else if (suffixExist && comparison === 1) {\n timeResult = pluralResult.future;\n } else {\n timeResult = pluralResult.regular;\n }\n return timeResult.replace('{{count}}', String(count));\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, d. MMMM yyyy',\n long: 'd. MMMM yyyy',\n medium: 'd. M. yyyy',\n short: 'dd.MM.yyyy'\n};\nvar timeFormats = {\n full: 'H:mm:ss zzzz',\n long: 'H:mm:ss z',\n medium: 'H:mm:ss',\n short: 'H:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'v' {{time}}\",\n long: \"{{date}} 'v' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var accusativeWeekdays = ['neděli', 'pondělí', 'úterý', 'středu', 'čtvrtek', 'pátek', 'sobotu'];\nvar formatRelativeLocale = {\n lastWeek: \"'poslední' eeee 've' p\",\n yesterday: \"'včera v' p\",\n today: \"'dnes v' p\",\n tomorrow: \"'zítra v' p\",\n nextWeek: function nextWeek(date) {\n var day = date.getUTCDay();\n return \"'v \" + accusativeWeekdays[day] + \" o' p\";\n },\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, date) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['př. n. l.', 'n. l.'],\n abbreviated: ['př. n. l.', 'n. l.'],\n wide: ['před naším letopočtem', 'našeho letopočtu']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí'],\n wide: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí']\n};\nvar monthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec']\n};\nvar formattingMonthValues = {\n narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],\n abbreviated: ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],\n wide: ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince']\n};\nvar dayValues = {\n narrow: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n short: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],\n abbreviated: ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],\n wide: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n abbreviated: {\n am: 'dop.',\n pm: 'odp.',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n },\n wide: {\n am: 'dopoledne',\n pm: 'odpoledne',\n midnight: 'půlnoc',\n noon: 'poledne',\n morning: 'ráno',\n afternoon: 'odpoledne',\n evening: 'večer',\n night: 'noc'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide',\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)\\.?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n abbreviated: /^(p[řr](\\.|ed) Kr\\.|p[řr](\\.|ed) n\\. l\\.|po Kr\\.|n\\. l\\.)/i,\n wide: /^(p[řr](\\.|ed) Kristem|p[řr](\\.|ed) na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i\n};\nvar parseEraPatterns = {\n any: [/^p[řr]/i, /^(po|n)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\. [čc]tvrtlet[íi]/i,\n wide: /^[1234]\\. [čc]tvrtlet[íi]/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[lúubdkčcszřrlp]/i,\n abbreviated: /^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,\n wide: /^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^l/i, /^[úu]/i, /^b/i, /^d/i, /^k/i, /^[čc]/i, /^[čc]/i, /^s/i, /^z/i, /^[řr]/i, /^l/i, /^p/i],\n any: [/^led/i, /^[úu]n/i, /^b[řr]e/i, /^dub/i, /^kv[ěe]/i, /^[čc]vn|[čc]erven(?!\\w)|[čc]ervna/i, /^[čc]vc|[čc]erven(ec|ce)/i, /^srp/i, /^z[áa][řr]/i, /^[řr][íi]j/i, /^lis/i, /^pro/i]\n};\nvar matchDayPatterns = {\n narrow: /^[npuúsčps]/i,\n short: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,\n abbreviated: /^(ned|pon|[úu]te|st[rř]|[čc]tv|p[áa]t|sob)/i,\n wide: /^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i\n};\nvar parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^[úu]/i, /^s/i, /^[čc]/i, /^p/i, /^s/i],\n any: [/^ne/i, /^po/i, /^[úu]t/i, /^st/i, /^[čc]t/i, /^p[áa]/i, /^so/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^dopoledne|dop\\.?|odpoledne|odp\\.?|p[ůu]lnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci?/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^dop/i,\n pm: /^odp/i,\n midnight: /^p[ůu]lnoc/i,\n noon: /^poledne/i,\n morning: /r[áa]no/i,\n afternoon: /odpoledne/i,\n evening: /ve[čc]er/i,\n night: /noc/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Czech locale.\n * @language Czech\n * @iso-639-2 ces\n * @author David Rus [@davidrus]{@link https://github.com/davidrus}\n * @author Pavel Hrách [@SilenY]{@link https://github.com/SilenY}\n * @author Jozef Bíroš [@JozefBiros]{@link https://github.com/JozefBiros}\n */\nvar locale = {\n code: 'cs',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Chart,\r\n CategoryScale,\r\n LinearScale,\r\n PointElement,\r\n LineElement,\r\n Title,\r\n Tooltip,\r\n Legend,\r\n} from \"chart.js\";\r\nimport \"chart.js/auto\";\r\nimport { Line } from \"react-chartjs-2\";\r\nimport DatePicker, { registerLocale } from \"react-datepicker\";\r\nimport { cs, enUS } from \"date-fns/locale\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { init, getCSRFToken } from \"@utilities\";\r\nimport { Tabs, HorizontalScrollPanel } from \"@modules\";\r\nimport { ExchangeChartProps } from \"../types\";\r\n\r\nChart.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend);\r\n\r\nexport const options = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n locale: \"cs-CZ\",\r\n plugins: {\r\n legend: {\r\n display: false,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n tooltip: {\r\n callbacks: {\r\n label(context) {\r\n let label = context.dataset.label || \"\";\r\n\r\n if (label) {\r\n label += \": \";\r\n }\r\n\r\n if (context.parsed.y !== null) {\r\n label += Math.round(context.parsed.y * 1000) / 1000;\r\n }\r\n return label;\r\n },\r\n },\r\n },\r\n },\r\n scales: {\r\n x: { display: true },\r\n y: {\r\n offset: true,\r\n },\r\n },\r\n elements: {\r\n line: { borderWidth: 1.5 },\r\n point: {\r\n radius: 1.5,\r\n },\r\n },\r\n};\r\n\r\nconst ExchangeChart: React.FC = ({\r\n currencyIso,\r\n cultureCode,\r\n localization,\r\n onDataChange,\r\n queryDate,\r\n}) => {\r\n const date = queryDate.slice(0, 10);\r\n const basicDate = new Date(date);\r\n const dateOneYearAgo = new Date(date);\r\n const initFrom = new Date(dateOneYearAgo.setFullYear(dateOneYearAgo.getFullYear() - 1));\r\n const today = new Date();\r\n\r\n const [dataArrayOne, setDataArrayOne] = useState([]);\r\n const [dataArrayTwo, setDataArrayTwo] = useState([]);\r\n const [selectedDateFrom, setSelectedDateFrom] = useState(initFrom);\r\n const [selectedDateTo, setSelectedDateTo] = useState(basicDate);\r\n const [selectedDateFromIso, setSelectedDateFromIso] = useState(\r\n initFrom.toISOString().slice(0, 10)\r\n );\r\n const [selectedDateToIso, setSelectedDateToIso] = useState(basicDate.toISOString().slice(0, 10));\r\n const [dateRangeOpened, setdateRangeOpened] = useState(false);\r\n const [customDateRangeTriggered, setCustomDateRangeTriggered] = useState(false);\r\n\r\n const fetchData = async (timeFrame, dateFrom?, dateTo?) => {\r\n const currentDate = queryDate ?? new Date().toJSON().slice(0, 10);\r\n const btnConfig = {\r\n dateFrom: dateFrom || currentDate,\r\n dateTo: dateTo || currentDate,\r\n cultureCode,\r\n timeFrame: timeFrame ?? 0,\r\n currencyIsoCode: currencyIso,\r\n };\r\n\r\n try {\r\n const rawResponse = await fetch(`${window.location.origin}/api/ExchangeRate/ChartData`, {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n __RequestVerificationToken: getCSRFToken(),\r\n },\r\n body: JSON.stringify(btnConfig),\r\n });\r\n\r\n const content = await rawResponse.json();\r\n\r\n const arrayOne = [];\r\n const arrayTwo = [];\r\n if (content.payload.data) {\r\n Object.keys(content.payload.data).forEach((key) => {\r\n arrayOne.push(Math.round(content.payload.data[key].value * 1000) / 1000);\r\n const rawDate = content.payload.data[key].date;\r\n const d = new Date(rawDate.replace(/-/g, \"/\"));\r\n const dateCZ = d.toLocaleDateString(\"cs-cz\");\r\n arrayTwo.push(dateCZ);\r\n });\r\n }\r\n\r\n setDataArrayOne(arrayOne);\r\n setDataArrayTwo(arrayTwo);\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n // Zde zobrazte chybovou zprávu uživateli nebo provedte další akce v případě chyby\r\n }\r\n };\r\n\r\n const handleClick = (timeFrame) => {\r\n let adjustedTimeFrame = timeFrame;\r\n if (customDateRangeTriggered && timeFrame === 12) {\r\n adjustedTimeFrame = 0;\r\n }\r\n\r\n let toDate = selectedDateToIso || date;\r\n let fromDate = selectedDateFromIso || date;\r\n\r\n if (!(timeFrame === 0 || timeFrame === 12)) {\r\n // reset link date to init\r\n toDate = basicDate.toJSON().slice(0, 10);\r\n fromDate = initFrom.toJSON().slice(0, 10);\r\n setdateRangeOpened(false);\r\n }\r\n\r\n const btnData = {\r\n fromDate: toDate,\r\n toDate: fromDate,\r\n timeFrame: adjustedTimeFrame,\r\n };\r\n\r\n if (customDateRangeTriggered && adjustedTimeFrame === 0) {\r\n fetchData(adjustedTimeFrame, toDate, fromDate);\r\n } else {\r\n fetchData(adjustedTimeFrame);\r\n }\r\n\r\n onDataChange(btnData);\r\n };\r\n\r\n // Registrace jazyka pro datepicker\r\n if (cultureCode.toLowerCase() === \"en-us\") {\r\n registerLocale(\"en\", enUS);\r\n } else {\r\n registerLocale(\"cs\", cs);\r\n }\r\n\r\n const handleDateChangeFrom = (input) => {\r\n setSelectedDateFrom(input);\r\n const rawDate = new Date(input);\r\n const formatedDate = rawDate.toISOString().slice(0, 10);\r\n setSelectedDateFromIso(formatedDate);\r\n fetchData(0, selectedDateToIso, formatedDate);\r\n const btnData = {\r\n fromDate: selectedDateToIso || date,\r\n toDate: formatedDate || date,\r\n timeFrame: 0,\r\n };\r\n onDataChange(btnData);\r\n };\r\n\r\n const handleDateChangeTo = (input) => {\r\n setSelectedDateTo(input);\r\n const rawDate = new Date(input);\r\n const formatedDate = rawDate.toISOString().slice(0, 10);\r\n setSelectedDateToIso(formatedDate);\r\n fetchData(0, formatedDate, selectedDateFromIso);\r\n const btnData = {\r\n fromDate: formatedDate || date,\r\n toDate: selectedDateFromIso || date,\r\n timeFrame: 0,\r\n };\r\n onDataChange(btnData);\r\n };\r\n\r\n const showDateRange = () => {\r\n setdateRangeOpened(true);\r\n setCustomDateRangeTriggered(true);\r\n };\r\n\r\n useEffect(() => {\r\n fetchData(1);\r\n init.multiple(Tabs, document.querySelectorAll(\".js-tabs\"));\r\n init.multiple(HorizontalScrollPanel, document.querySelectorAll(\".js-horizontal-panel\"));\r\n }, []);\r\n\r\n const data = {\r\n labels: dataArrayTwo,\r\n datasets: [\r\n {\r\n data: dataArrayOne,\r\n borderColor: \"#E00000\",\r\n pointBackgroundColor: \"#E00000\",\r\n pointBorderColor: \"#E00000\",\r\n backgroundColor: \"#E00000\",\r\n tension: 0.1,\r\n spanGaps: true,\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n
    \r\n

    {localization.Chart_Title}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
  • \r\n handleClick(1)}\r\n >\r\n \r\n {localization.Chart_Button_1month}\r\n \r\n \r\n
  • \r\n
  • \r\n handleClick(3)}\r\n >\r\n \r\n {localization.Chart_Button_3months}\r\n \r\n \r\n
  • \r\n
  • \r\n handleClick(6)}\r\n >\r\n \r\n {localization.Chart_Button_6months}\r\n \r\n \r\n
  • \r\n
  • \r\n {\r\n handleClick(12);\r\n showDateRange();\r\n }}\r\n >\r\n \r\n {localization.Chart_Button_custom}\r\n \r\n \r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {/* datepicker */}\r\n
    \r\n \r\n {\r\n handleDateChangeFrom(input);\r\n }}\r\n locale=\"cs\"\r\n dateFormat=\"dd.MM.yyyy\"\r\n maxDate={today} // Add this line\r\n showIcon\r\n toggleCalendarOnIconClick\r\n icon={\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n handleDateChangeTo(input);\r\n }}\r\n locale=\"cs\"\r\n dateFormat=\"dd.MM.yyyy\"\r\n maxDate={today} // Add this line\r\n showIcon\r\n toggleCalendarOnIconClick\r\n icon={\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\nexport default ExchangeChart;\r\n","import React, { useState } from \"react\";\r\n\r\nimport { Alert, Button, RatesDownloads, Loader } from \"@partials\";\r\nimport { usePagination } from \"@hooks\";\r\nimport { AlertType } from \"@constants\";\r\nimport { getLocalization } from \"@utilities\";\r\nimport ExchangeChart from \"./components/ExchangeChart\";\r\n\r\nimport { ExchangeRatesDetailProps, LocalizationTexts, TableRowItem } from \"./types\";\r\n\r\n// Props - Shared (mobile, dekstop)\r\ntype TableProps = {\r\n items: TableRowItem[];\r\n hasNextItems: boolean;\r\n isLoading: boolean;\r\n loadMoreItems: () => void;\r\n localization: LocalizationTexts;\r\n};\r\n\r\n// Props - TableForMobile\r\ntype MobileRowProps = {\r\n localization: LocalizationTexts;\r\n text: keyof LocalizationTexts;\r\n value: string;\r\n};\r\n\r\n// Props - TableForDesktop\r\ntype DesktopHeaderWhiteProps = {\r\n title: string;\r\n subTitle1: string;\r\n subTitle2: string;\r\n marginRight?: boolean;\r\n};\r\n\r\ntype DesktopRateWrapperProps = {\r\n index: number;\r\n value1: string;\r\n value2: string;\r\n marginRight?: boolean;\r\n};\r\n\r\n// TableForMobile\r\nconst MobileRow: React.FC = ({ localization, text, value }) => {\r\n return (\r\n
    \r\n {getLocalization(localization, text)}\r\n {value}\r\n
    \r\n );\r\n};\r\n\r\nconst TableForMobile: React.FC = ({\r\n items,\r\n hasNextItems,\r\n isLoading,\r\n loadMoreItems,\r\n localization,\r\n}) => {\r\n return (\r\n
    \r\n {items.map((item) => {\r\n return (\r\n \r\n

    \r\n {getLocalization(localization, \"History_Date\")}\r\n {item.date}\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n })}\r\n\r\n {hasNextItems && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\n// TableForDesktop\r\nconst DesktopHeaderWhite: React.FC = ({\r\n title,\r\n subTitle1,\r\n subTitle2,\r\n marginRight,\r\n}) => {\r\n return (\r\n \r\n
    {title}
    \r\n
    \r\n \r\n {subTitle1}\r\n \r\n \r\n {subTitle2}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst DesktopRateWrapper: React.FC = ({\r\n index,\r\n value1,\r\n value2,\r\n marginRight,\r\n}) => {\r\n return (\r\n \r\n \r\n {value1}\r\n \r\n \r\n {value2}\r\n \r\n \r\n );\r\n};\r\n\r\nconst TableForDesktop: React.FC = ({\r\n items,\r\n hasNextItems,\r\n isLoading,\r\n loadMoreItems,\r\n localization,\r\n}) => {\r\n return (\r\n
    \r\n {/* table - header */}\r\n
    \r\n \r\n
    \r\n \r\n {getLocalization(localization, \"History_Date\")}\r\n \r\n \r\n {getLocalization(localization, \"History_Time\")}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n {/* table - 1 item = row */}\r\n {items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.date}\r\n {item.time}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n {/* table header - footer */}\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n {hasNextItems && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst ExchangeRatesDetail: React.FC = ({\r\n api,\r\n query,\r\n items: defaultItems,\r\n pagination: defaultPagination,\r\n localization,\r\n cultureCode,\r\n baseUrl,\r\n currencyIso,\r\n downloads,\r\n iconsList,\r\n showChart,\r\n}) => {\r\n // usePagination hook\r\n const {\r\n hasNextItems,\r\n isLoadingMore,\r\n items,\r\n hasError,\r\n isLoading,\r\n loadMoreItemsExchangeRatesDetail,\r\n } = usePagination({\r\n api,\r\n defaultQuery: query,\r\n defaultItems,\r\n defaultPagination,\r\n cultureCode,\r\n fetchBodyData: { baseUrl },\r\n currency: currencyIso,\r\n date: query,\r\n });\r\n\r\n const [chartData, setChartData] = useState({\r\n fromDate: query,\r\n toDate: query,\r\n timeFrame: \"1\",\r\n });\r\n\r\n const handleDataChange = (data) => {\r\n setChartData(data);\r\n };\r\n\r\n return (\r\n <>\r\n {showChart && (\r\n \r\n )}\r\n
    \r\n {!showChart && (\r\n
    \r\n {getLocalization(localization, \"History_Title\")}{\" \"}\r\n {currencyIso}\r\n
    \r\n )}\r\n {hasError && (\r\n
    \r\n \r\n
    \r\n )}\r\n {isLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ExchangeRatesDetail;\r\n","import React, { memo } from \"react\";\r\n\r\nimport { item, RateVariationWidgetLocalization } from \"../types\";\r\n\r\ninterface Props {\r\n items: item[];\r\n localization: RateVariationWidgetLocalization;\r\n}\r\n\r\nconst List: React.FC = ({ items, localization }) => {\r\n if (!items) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {items.map((data) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n {localization.Buying}{localization.Selling}
    \r\n {data.currencyPair}\r\n {data.cardAssociation}\r\n {data.buyingMargin}{data.sellingMargin}
    \r\n );\r\n};\r\n\r\nexport default memo(List);\r\n","import React, { useState } from \"react\";\r\n\r\nimport { AlertType } from \"@constants\";\r\nimport { Alert, Icon, Loader } from \"@partials\";\r\nimport { errorLogger, getLocalization, getCSRFToken } from \"@utilities\";\r\n\r\nimport { RateVariationWidget as Props, RateVariationWidgetLocalization } from \"./types\";\r\nimport List from \"./components/list\";\r\n\r\nconst RateVariation: React.FC = ({\r\n api,\r\n data,\r\n localization,\r\n backButtonUrl,\r\n configuration,\r\n cultureCode,\r\n date,\r\n isQueryDate,\r\n iconsList,\r\n}) => {\r\n const { calendar } = iconsList;\r\n\r\n // FORM\r\n const [queryDateValue, setQueryDate] = useState(isQueryDate); // boolean to show 'date error message' if data are not available for selected day\r\n const [queryDateText, setQueryDateText] =\r\n useState(\"releaseTimeNoRecord\"); // text for 'date error message'\r\n const [inputQueryDate, setInputQueryDate] = useState(date);\r\n\r\n // RESULTS\r\n const [isLoaded, setIsLoaded] = useState(true);\r\n const [items, setItems] = useState(data);\r\n const [hasResultsError, setHasResultsError] = useState(false);\r\n\r\n const config = {\r\n date: inputQueryDate,\r\n cultureCode,\r\n configuration,\r\n };\r\n\r\n // DATEPICKER INPUT\r\n // year\r\n const TEN_YEARS = 10;\r\n const currentYear = new Date().getFullYear();\r\n const tenYearsInThePast = currentYear - TEN_YEARS;\r\n\r\n // month\r\n const month = new Date().getMonth() + 1;\r\n const monthString = `0${month}`.slice(-2);\r\n\r\n // day\r\n const day = new Date().getDate();\r\n const dayString = `0${day.toString()}`.slice(-2);\r\n\r\n // values: min, max\r\n const datePickerMinValue = `${tenYearsInThePast}-01-01`;\r\n const datePickerMaxValue = `${currentYear}-${monthString}-${dayString}`;\r\n\r\n const changeDate = (changedTime) => {\r\n setInputQueryDate(changedTime);\r\n };\r\n\r\n const fetchData = async () => {\r\n const response = await fetch(api, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n __RequestVerificationToken: getCSRFToken(),\r\n },\r\n body: JSON.stringify(config),\r\n });\r\n if (!response.ok) {\r\n setHasResultsError(true);\r\n setIsLoaded(true);\r\n throw new Error(\"Data coud not be fetched!\");\r\n } else {\r\n setIsLoaded(true);\r\n return response.json();\r\n }\r\n };\r\n\r\n const loadData = () => {\r\n setIsLoaded(false);\r\n setHasResultsError(false);\r\n fetchData()\r\n .then((res) => {\r\n if (res.payload.data.length > 0) {\r\n setItems(res.payload.data);\r\n setInputQueryDate(res.payload.responseDate);\r\n setQueryDate(res.payload.requestDateNotAvailable);\r\n setQueryDateText(res.payload.localization.releaseTimeNoRecord);\r\n window.history.replaceState(null, \"\", `?date=${res.payload.responseDate}`);\r\n } else {\r\n setHasResultsError(true);\r\n }\r\n })\r\n .catch((error) => {\r\n if (!isProduction) {\r\n errorLogger(error);\r\n }\r\n setHasResultsError(true);\r\n });\r\n };\r\n\r\n // DATEPICKER\r\n const hasDateError = queryDateValue;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {getLocalization(localization, \"DatePicker\")}
    \r\n \r\n {hasDateError && (\r\n
    \r\n {getLocalization(localization, queryDateText)}\r\n
    \r\n )}\r\n
    \r\n \r\n {getLocalization(localization, \"ShowButton\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {isLoaded ? (\r\n
    \r\n
    \r\n {hasResultsError ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default RateVariation;\r\n","import \"../css/main.scss\";\r\n\r\n// Import utilities\r\nimport { init, lazyLoad, render, setDummyWidgetsData, lazyLoadVideo, scrollTo } from \"@utilities\";\r\n\r\n// Import Vanilla JS components\r\nimport {\r\n Accordion,\r\n DownloadableQrCode,\r\n Tabs,\r\n Comparator,\r\n HorizontalScrollPanel,\r\n Masonry,\r\n Search,\r\n FormScrollTo,\r\n Cookie,\r\n Cta,\r\n Hamburger,\r\n branchDetailPageTabs,\r\n pauseYoutubeVideo,\r\n megaMenu,\r\n Collapse,\r\n Tooltip,\r\n appStore,\r\n appStoreRedirect,\r\n lightGallery,\r\n Analytics,\r\n AnalyticsView,\r\n AnalyticsPersonalizable,\r\n AnalyticsContent,\r\n Sticky,\r\n MarketingAlertStripe,\r\n MarketingAlertStripeMob,\r\n interactiveComponent,\r\n interactiveComponentMobile,\r\n ButtonKentico,\r\n} from \"@modules\";\r\n\r\n// Import React components\r\nimport {\r\n TransparentAccountList,\r\n TransparentAccountDetail,\r\n GalleryLightbox,\r\n ArticleList,\r\n Calculator,\r\n SearchList,\r\n TabsBranchesAtms,\r\n BranchesSearch,\r\n BranchesResultsDetail,\r\n DetailMap,\r\n AtmsSearch,\r\n AtmsResultsDetail,\r\n ExchangeRatesList,\r\n ExchangeRatesListSk,\r\n ExchangeRatesDetail,\r\n RateVariation,\r\n TooltipKentico,\r\n} from \"@components\";\r\n\r\n// Set dummy widgets data for testing if needed\r\nsetDummyWidgetsData();\r\n\r\nconst urlParams = new URLSearchParams(window.location.search);\r\n\r\n// Init Vanilla JS components\r\n// single\r\ninit.single(DownloadableQrCode, document.querySelector(\".js-downloadable-qr-container\"));\r\ninit.single(Search, document.querySelector(\".js-search-desktop\"));\r\ninit.single(FormScrollTo, document.querySelector(\".js-form-scroll-to\"));\r\ninit.single(pauseYoutubeVideo, document.querySelector(\".js-tabs\"));\r\ninit.single(Cookie, document.querySelector(\".js-cookie\"));\r\ninit.single(branchDetailPageTabs, document.querySelector(\".js-tabs-detail-branches\"));\r\ninit.single(megaMenu, document.querySelector(\".js-megaMenu\"));\r\ninit.single(appStore, document.querySelector(\".js-appStore\"));\r\ninit.single(appStoreRedirect, document.querySelector(\".js-appStoreRedirect\"));\r\ninit.single(MarketingAlertStripe, document.querySelector(\".js-marketingAlertStripe\"));\r\nif (urlParams.has(\"scrollTo\")) {\r\n init.single(scrollTo, document.querySelector(\"body\"));\r\n}\r\n\r\n// multiple\r\ninit.multiple(Accordion, document.querySelectorAll(\".js-accordion-item\"));\r\ninit.multiple(Tooltip, document.querySelectorAll(\".js-tooltip-static\"));\r\ninit.multiple(Tabs, document.querySelectorAll(\".js-tabs\"));\r\ninit.multiple(Comparator, document.querySelectorAll(\".js-comparator\"));\r\ninit.multiple(Hamburger, document.querySelectorAll(\".js-hamburger\"));\r\ninit.multiple(HorizontalScrollPanel, document.querySelectorAll(\".js-horizontal-panel\"));\r\ninit.multiple(Masonry, document.querySelectorAll(\".js-tile\"));\r\ninit.multiple(lazyLoad, document.querySelectorAll(\".lazyload\"));\r\ninit.multiple(lazyLoadVideo, document.querySelectorAll(\".lazyloadvideo\"));\r\ninit.multiple(Collapse, document.querySelectorAll(\".js-collapse\"));\r\ninit.multiple(Cta, document.querySelectorAll(\".js-cta\"));\r\ninit.multiple(lightGallery, document.querySelectorAll(\".js-lightgallery\"));\r\ninit.multiple(Analytics, document.querySelectorAll(\"[data-analytics]\"));\r\ninit.multiple(Sticky, document.querySelectorAll(\".sticky\"));\r\ninit.multiple(AnalyticsView, document.querySelectorAll(\"[data-analytics-view]\"));\r\ninit.multiple(\r\n AnalyticsPersonalizable,\r\n document.querySelectorAll(\"[data-analytics-personalizable]\")\r\n);\r\ninit.multiple(AnalyticsContent, document.querySelectorAll(\"[data-analytics-content]\"));\r\ninit.multiple(interactiveComponent, document.querySelectorAll(\".js-interactiveComponent\"));\r\ninit.multiple(\r\n interactiveComponentMobile,\r\n document.querySelectorAll(\".js-interactiveComponentMobile\")\r\n);\r\ninit.multiple(MarketingAlertStripeMob, document.querySelectorAll(\".js-marketingAlertStripe-mob\"));\r\ninit.multiple(ButtonKentico, document.querySelectorAll(\".js-button-kentico\"));\r\n\r\n// Render React components\r\n// single\r\nrender.single(TransparentAccountList, document.querySelector(\".js-transparent-list\"));\r\nrender.single(TransparentAccountDetail, document.querySelector(\".js-transparent-detail\"));\r\nrender.single(ArticleList, document.querySelector(\".js-article-list\"));\r\nrender.single(Calculator, document.querySelector(\".js-calculator\"));\r\nrender.single(SearchList, document.querySelector(\".js-search-list\"));\r\nrender.single(TabsBranchesAtms, document.querySelector(\".js-tabs-branches-atms\")); // Branches & ATMs\r\nrender.single(DetailMap, document.querySelector(\".js-detail-map\"));\r\nrender.single(BranchesSearch, document.querySelector(\".js-branches-search\")); // Branches\r\nrender.single(BranchesResultsDetail, document.querySelector(\".js-branches-results-detail\"));\r\nrender.single(AtmsSearch, document.querySelector(\".js-atms-search\")); // ATMs\r\nrender.single(AtmsResultsDetail, document.querySelector(\".js-atms-results-detail\"));\r\nrender.single(ExchangeRatesList, document.querySelector(\".js-exchange-rates-list\")); // Exchange Rates - List\r\nrender.single(ExchangeRatesListSk, document.querySelector(\".js-exchange-rates-list-sk\")); // Exchange Rates - List SK\r\nrender.single(ExchangeRatesDetail, document.querySelector(\".js-exchange-rates-detail\")); // Exchange Rates - Detail\r\nrender.single(RateVariation, document.querySelector(\".js-fx-profit-margin\")); // ECB\r\n\r\n// multiple\r\nrender.multiple(GalleryLightbox, document.querySelectorAll(\".js-gallery-lightbox\"), false);\r\nrender.multiple(TooltipKentico, document.querySelectorAll(\".js-tooltip-kentico\"));\r\n\r\n// call external sas after our js\r\nif (window.setSas) {\r\n window.setSas();\r\n}\r\n"],"sourceRoot":""}