{"version":3,"file":"UDropdown.mjs","names":["makeComponentProps","computed","ref","useEventListener","DropdownVariant","Sizes","UIcon","UAvatar","UInput","UTag","genericComponent","propsFactory","useRender","makeUDropdownProps","_objectSpread","modelValue","Object","label","String","placeholder","hint","appendIcon","type","prependIcon","avatarIcon","variant","size","emptyMessage","disabled","Boolean","name","error","errorMessages","Array","dropDownItems","required","UDropdown","props","emits","submit","e","blur","keydownEscape","updateModelValue","value","setup","_ref","emit","slots","isActive","selectedItem","selectedItems","isHover","inputValue","dropdownRef","searchInputRef","tagsInputRef","tagsInputComponentRef","tagsInputContentRef","dropdownContentRef","inputFieldRef","toggleActive","getDropDownItems","dropdownItems","isArray","updatedItems","map","item","image","text","supportingText","id","filteredItems","filter","isEnabled","length","inputHandler","inputClickHandler","removeTag","tagIndex","splice","index","filteredDropDownItems","search","tags","inputValueLower","toLowerCase","_item$text","_item$supportingText","startsWith","includes","selectItem","_filteredDropDownItem2","_filteredDropDownItem","_tagsInputComponentRe","selectedItemIndex","indexOf","selectedItemPosition","push","target","focus","undefined","handleKeyDown","event","escapeKey","key","handleClickOutside","_dropdownContentRef$v","_searchInputRef$value","_tagsInputRef$value","_tagsInputContentRef$","_dropdownContentRef$v2","contains","classes","inputClasses","placeholderClasses","textClasses","supportingTextClasses","inputValueClasses","dropdownClasses","dropdownItemClasses","fieldClasses","labelClasses","hintClasses","errorMessageClasses","dotClasses","tagsInputContentClasses","_getDropDownItems$sel","_getDropDownItems$sel2","_getDropDownItems$sel3","_createVNode","avatarLeading","dotLeading","concat","xs","onUpdateModelValue","$event","lg","_default","itemIndex","_getDropDownItems$ite","_getDropDownItems$ite2","onDelete","sm","onClick","errorMessage"],"sources":["../../../src/components/UDropdown/UDropdown.tsx"],"sourcesContent":["import { makeComponentProps } from '@/composables/component'\nimport { computed, ref, Ref } from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport '@/components/UDropdown/scrollbar.scss'\n\nimport DropdownVariant from '@/types/dropdownVariants'\nimport { Sizes } from '@/composables/size'\n\nimport { UIcon } from '@/components/UIcon/UIcon'\nimport { UAvatar } from '@/components/UAvatar/UAvatar'\nimport { UInput } from '@/components/UInput/UInput'\nimport { UTag } from '@/components/UTag/UTag'\n\nimport { genericComponent, propsFactory, useRender } from '@/utils'\n\nexport const makeUDropdownProps = propsFactory(\n  {\n    modelValue: Object,\n    label: String,\n    placeholder: String,\n    hint: String,\n    appendIcon: {\n      type: String,\n      default: 'chevron-down',\n    },\n    prependIcon: String,\n    avatarIcon: String,\n    variant: {\n      type: String,\n      default: DropdownVariant.default,\n    },\n    type: String,\n    size: {\n      type: String,\n      default: 'md',\n    },\n    emptyMessage: String,\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n    name: String,\n    error: Boolean,\n    errorMessages: Array as () => string[],\n    dropDownItems: {\n      type: Array<DropdownItem>,\n      required: true,\n    },\n\n    ...makeComponentProps(),\n  },\n  'UDropdown'\n)\n\nexport type UDropdownSlots = {\n  default: never\n  header: never\n}\n\ninterface DropdownItem {\n  id: string\n  image: string\n  text: string\n  supportingText: string\n}\n\nexport const UDropdown = genericComponent<UDropdownSlots>()({\n  name: 'UDropdown',\n\n  props: makeUDropdownProps(),\n\n  emits: {\n    submit: (e: string) => true,\n    blur: () => true,\n    'keydown:escape': () => true,\n    'update:modelValue': (value: object) => true,\n  },\n\n  setup(props, { emit, slots }) {\n    const isActive = ref(false)\n    const selectedItem = ref()\n    const selectedItems: Ref<number[]> = ref([])\n    const isHover = ref(false)\n    const inputValue = ref('')\n    const dropdownRef = ref<HTMLElement | null>(null)\n    const searchInputRef = ref<HTMLElement | null>(null)\n    const tagsInputRef = ref<HTMLElement | null>(null)\n    const tagsInputComponentRef = ref()\n    const tagsInputContentRef = ref<HTMLElement | null>(null)\n    const dropdownContentRef = ref<HTMLElement | null>(null)\n    const inputFieldRef = ref<HTMLElement | null>(null)\n\n    const toggleActive = () => {\n      if (!props.disabled) isActive.value = !isActive.value\n    }\n\n    const getDropDownItems = (): DropdownItem[] => {\n      const dropdownItems: DropdownItem[] = props.dropDownItems\n\n      if (Array.isArray(dropdownItems)) {\n        const updatedItems = dropdownItems.map((item) => {\n          if (item.image || item.text || item.supportingText) {\n            return item\n          } else {\n            return {\n              id: item.id || '',\n              image: item.image || '',\n              text: item.text || '',\n              supportingText: item.supportingText || '',\n            }\n          }\n        })\n\n        const filteredItems = updatedItems.filter((item) => {\n          return (\n            item.image !== '' || item.text !== '' || item.supportingText !== ''\n          )\n        })\n\n        return filteredItems\n      } else {\n        return []\n      }\n    }\n\n    const isEnabled = computed(\n      (): boolean => !!props.dropDownItems.length && !props.disabled\n    )\n\n    if (props.type === 'header' && isEnabled.value) {\n      isActive.value = true\n    }\n\n    const inputHandler = () => {\n      if (isEnabled.value) {\n        isActive.value = true\n      }\n    }\n\n    const inputClickHandler = () => {\n      if (isEnabled.value) {\n        if (isActive.value !== true) isActive.value = true\n      }\n    }\n\n    const removeTag = (tagIndex: number) => {\n      const dropDownItems = getDropDownItems()\n      if (isEnabled.value) {\n        selectedItems.value.splice(tagIndex, 1)\n        emit(\n          'update:modelValue',\n          selectedItems.value.map((index: number) => dropDownItems[index])\n        )\n      }\n    }\n\n    const filteredDropDownItems = computed(() => {\n      const dropDownItems = getDropDownItems()\n      if (\n        props.variant !== DropdownVariant.search &&\n        props.variant !== DropdownVariant.tags\n      ) {\n        return dropDownItems\n      } else {\n        const inputValueLower =\n          inputValue.value && inputValue.value.toLowerCase()\n        const filteredItems = dropDownItems.filter(\n          (item) =>\n            item.text?.toLowerCase().startsWith(inputValueLower) ||\n            item.supportingText?.toLowerCase().includes(inputValueLower)\n        )\n        return filteredItems.length > 0 ? filteredItems : null\n      }\n    })\n\n    const selectItem = (index: number) => {\n      const dropDownItems = getDropDownItems()\n      if (!isEnabled.value) {\n        return false\n      }\n\n      if (props.variant === DropdownVariant.tags) {\n        const selectedItemIndex = dropDownItems.indexOf(\n          filteredDropDownItems.value?.[index] as DropdownItem\n        )\n\n        const selectedItemPosition =\n          selectedItems.value.indexOf(selectedItemIndex)\n        if (selectedItemPosition === -1) {\n          selectedItems.value.push(selectedItemIndex)\n        } else {\n          selectedItems.value.splice(selectedItemPosition, 1)\n        }\n\n        emit(\n          'update:modelValue',\n          selectedItems.value.map((index) => dropDownItems[index])\n        )\n\n        tagsInputComponentRef?.value?.target?.focus()\n\n        return true\n      }\n\n      if (\n        selectedItem.value ===\n        dropDownItems.indexOf(\n          filteredDropDownItems.value?.[index] as DropdownItem\n        )\n      ) {\n        selectedItem.value = undefined\n        emit('update:modelValue', selectedItem.value)\n      } else {\n        const filteredItems = filteredDropDownItems.value\n        if (\n          filteredItems !== null &&\n          index >= 0 &&\n          index < filteredItems.length\n        ) {\n          const selectedItemIndex = dropDownItems.indexOf(\n            filteredItems[index] as DropdownItem\n          )\n          selectedItem.value = selectedItemIndex\n          inputValue.value = ''\n          emit('update:modelValue', dropDownItems[selectedItemIndex])\n        }\n      }\n    }\n\n    const handleKeyDown = (event: KeyboardEvent) => {\n      const escapeKey = 'Escape'\n      if (\n        isActive.value &&\n        isEnabled.value &&\n        event.key === 'Backspace' &&\n        props.variant !== DropdownVariant.tags &&\n        props.type !== 'header'\n      ) {\n        selectedItem.value = undefined\n        emit('update:modelValue', selectedItem.value)\n      }\n      if (isEnabled.value && event.key === escapeKey) {\n        if (isActive.value) {\n          toggleActive()\n        }\n        emit('keydown:escape')\n      }\n    }\n\n    const handleClickOutside = (event: MouseEvent) => {\n      if (\n        (isActive.value &&\n          (!dropdownRef.value ||\n            (!dropdownRef.value.contains(event.target as Node) &&\n              !dropdownContentRef.value?.contains(event.target as Node))) &&\n          !searchInputRef.value?.contains(event.target as Node) &&\n          !tagsInputRef.value?.contains(event.target as Node)) ||\n        tagsInputContentRef.value?.contains(event.target as Node)\n      ) {\n        isActive.value = false\n        emit('blur')\n      }\n      if (dropdownContentRef.value?.contains(event.target as Node)) {\n        isActive.value = true\n      }\n    }\n\n    useEventListener('click', handleClickOutside)\n    useEventListener('keydown', handleKeyDown)\n\n    const classes = computed(() => ({\n      'field box-border flex items-center gap-2 font-regular rounded-md border px-3.5':\n        true,\n      ...(props.size == 'md' && {\n        'max-h-[44px]': true,\n      }),\n      ...(props.size == 'sm' && {\n        'max-h-[40px]': true,\n      }),\n      ...(isActive.value === false &&\n        props.error === false &&\n        isEnabled.value === true && {\n          'border-gray-300': true,\n        }),\n      ...(isActive.value === true &&\n        props.error === false &&\n        isEnabled.value === true && {\n          'border-primary-300 shadow-xs-btn shadow-primary-50': true,\n        }),\n      ...(isActive.value === true &&\n        props.error === true &&\n        isEnabled.value === true && {\n          'shadow-md shadow-error-50': true,\n        }),\n      ...(props.error === true &&\n        isEnabled.value === true && {\n          'border-error-300': true,\n        }),\n      ...(isEnabled.value === false && {\n        'border-gray-300 bg-gray-50 cursor-not-allowed': true,\n      }),\n    }))\n\n    const inputClasses = computed(() => ({\n      // eslint-disable-next-line max-len\n      'box-border flex-grow select-none bg-transparent font-regular text-gray-900 text-text-md py-2.5 overflow-hidden':\n        true,\n      ...(isEnabled.value === false && {\n        'cursor-not-allowed': true,\n      }),\n    }))\n\n    const placeholderClasses = computed(() => ({\n      'placeholder font-regular text-gray-500 text-text-md': true,\n    }))\n\n    const textClasses = computed(() => ({\n      // eslint-disable-next-line max-len\n      'font-medium text-gray-900 text-text-md whitespace-nowrap text-ellipsis overflow-hidden max-w-[70%]':\n        true,\n    }))\n\n    const supportingTextClasses = computed(() => ({\n      // eslint-disable-next-line max-len\n      'font-regular text-gray-600 whitespace-nowrap text-ellipsis overflow-hidden max-w-[30%]':\n        true,\n      ...(props.size == 'md' && {\n        'text-text-md': true,\n      }),\n      ...(props.size == 'sm' && {\n        'text-text-sm': true,\n      }),\n    }))\n\n    const inputValueClasses = computed(() => ({\n      'flex flex-row gap-2 items-center': true,\n    }))\n\n    const dropdownClasses = computed(() => ({\n      'dropdownContent absolute right-0 flex flex-col gap-1 p-1.5 pr-0 w-full':\n        true,\n      'overflow-y-scroll bg-white rounded-md border border-gray-300 max-h-[320px]':\n        true,\n      ...(props.label &&\n        props.size == 'md' && {\n          'top-[75px]': true,\n        }),\n      ...(props.label &&\n        props.size == 'sm' && {\n          'top-[71px]': true,\n        }),\n      ...(!props.label &&\n        props.size == 'md' && {\n          'top-[49px]': true,\n        }),\n      ...(!props.label &&\n        props.size == 'sm' && {\n          'top-[44px]': true,\n        }),\n      ...(isEnabled.value === false && {\n        'cursor-not-allowed': true,\n      }),\n    }))\n\n    const dropdownItemClasses = computed(() => {\n      let classes = `dropdownItem flex gap-2 px-2 py-2.5 cursor-pointer rounded-md hover:bg-gray-50 \n        items-center select-none`\n\n      if (!isEnabled.value) {\n        classes += ' cursor-not-allowed'\n      }\n\n      return classes\n    })\n\n    const fieldClasses = computed(() => ({\n      'box-border relative flex flex-col gap-1.5 w-full': true,\n    }))\n\n    const labelClasses = computed(() => ({\n      'label font-medium text-gray-700 text-text-sm': true,\n    }))\n\n    const hintClasses = computed(() => ({\n      'hint font-regular text-gray-600 text-text-sm': true,\n    }))\n\n    const errorMessageClasses = computed(() => ({\n      'error font-regular text-error-500 text-text-sm': true,\n    }))\n\n    const dotClasses = computed(() => ({\n      'm-0.5 w-2 h-2 bg-success-500 rounded': true,\n    }))\n\n    const tagsInputContentClasses = computed(() => ({\n      'flex gap-1.5 items-center h-44': true,\n    }))\n\n    useRender(() => (\n      <div class={fieldClasses.value} ref={inputFieldRef}>\n        {props.label ? (\n          <div class={labelClasses.value}>{props.label}</div>\n        ) : null}\n\n        {(props.variant === 'search' && selectedItem.value !== undefined) ||\n        (props.variant !== 'search' && props.variant !== 'tags') ? (\n          <div class={classes.value} onClick={toggleActive} ref={dropdownRef}>\n            {props.prependIcon &&\n            props.variant !== DropdownVariant.avatarLeading &&\n            props.variant !== DropdownVariant.dotLeading ? (\n              <div>\n                <UIcon\n                  color=\"gray-500\"\n                  size=\"20\"\n                  icon={`$${props.prependIcon}`}\n                ></UIcon>\n              </div>\n            ) : null}\n            {props.variant == DropdownVariant.avatarLeading &&\n            selectedItem.value == undefined ? (\n              <div>\n                <UIcon\n                  color=\"gray-500\"\n                  size=\"20\"\n                  icon={`$${props.prependIcon}`}\n                ></UIcon>\n              </div>\n            ) : null}\n            {props.variant === DropdownVariant.avatarLeading &&\n            selectedItem.value !== null &&\n            selectedItem.value !== undefined ? (\n              <UAvatar\n                size={Sizes.xs}\n                imagePath={getDropDownItems()[selectedItem.value]?.image}\n                avatarIcon={props.avatarIcon}\n              ></UAvatar>\n            ) : null}\n            {props.variant === DropdownVariant.dotLeading ? (\n              <div class={dotClasses.value}></div>\n            ) : null}\n            <div class={inputClasses.value}>\n              {selectedItem.value == null && selectedItem.value == undefined ? (\n                <div class={placeholderClasses.value}>{props.placeholder}</div>\n              ) : null}\n              {selectedItem.value !== null &&\n              selectedItem.value !== undefined ? (\n                <div class={inputValueClasses.value}>\n                  <div class={textClasses.value}>\n                    {getDropDownItems()[selectedItem.value]?.text}\n                  </div>\n                  <div class={supportingTextClasses}>\n                    {getDropDownItems()[selectedItem.value]?.supportingText}\n                  </div>\n                </div>\n              ) : null}\n            </div>\n            <UIcon\n              color=\"gray-500\"\n              size=\"20\"\n              icon={`$${props.appendIcon}`}\n            ></UIcon>\n          </div>\n        ) : null}\n        {props.variant == DropdownVariant.search &&\n        selectedItem.value == undefined ? (\n          <div ref={searchInputRef}>\n            <UInput\n              v-model={inputValue.value}\n              size={props.size}\n              autocomplete={false}\n              prependIcon={props.prependIcon}\n              placeholder={props.placeholder}\n              enabled={isEnabled.value}\n              onClick={inputClickHandler}\n              onInput={inputHandler}\n            ></UInput>\n          </div>\n        ) : null}\n        {props.variant == DropdownVariant.tags ? (\n          <div>\n            <div ref={tagsInputRef}>\n              <UInput\n                v-model={inputValue.value}\n                ref={tagsInputComponentRef}\n                size={Sizes.lg}\n                autocomplete={false}\n                placeholder={props.placeholder}\n                name=\"tagsInput\"\n                enabled={isEnabled.value}\n                onClick={inputClickHandler}\n                onInput={inputHandler}\n              >\n                <div\n                  ref={tagsInputContentRef}\n                  class={tagsInputContentClasses.value}\n                >\n                  <UIcon\n                    color=\"gray-500\"\n                    size=\"20\"\n                    icon={`$${props.prependIcon}`}\n                  ></UIcon>\n                  {selectedItems.value.map(\n                    (itemIndex: number, tagIndex: number) => (\n                      <UTag\n                        onDelete={() => removeTag(tagIndex)}\n                        key={tagIndex}\n                        class=\"whitespace-nowrap\"\n                        avatarImagePath={getDropDownItems()[itemIndex]?.image}\n                        closed={isEnabled.value}\n                        size={Sizes.sm}\n                      >\n                        {getDropDownItems()[itemIndex]?.supportingText}\n                      </UTag>\n                    )\n                  )}\n                </div>\n              </UInput>\n            </div>\n          </div>\n        ) : null}\n\n        {(!props.error && props.hint && !isActive.value) ||\n        (!filteredDropDownItems.value && props.hint) ? (\n          <div class={hintClasses.value}>{props.hint}</div>\n        ) : null}\n\n        {isActive.value && filteredDropDownItems.value ? (\n          <div class={dropdownClasses.value} ref={dropdownContentRef}>\n            {filteredDropDownItems.value.map((item, index) => (\n              <div\n                key={index}\n                class={`${dropdownItemClasses.value}${\n                  (props.variant !== DropdownVariant.tags &&\n                    index === selectedItem.value) ||\n                  (props.variant === DropdownVariant.tags &&\n                    filteredDropDownItems.value &&\n                    selectedItems.value.includes(\n                      getDropDownItems().indexOf(\n                        filteredDropDownItems.value[index]\n                      )\n                    ))\n                    ? ' bg-gray-50'\n                    : ''\n                }`}\n                onClick={() => selectItem(index)}\n              >\n                {props.prependIcon &&\n                  props.variant !== DropdownVariant.avatarLeading &&\n                  props.variant !== DropdownVariant.dotLeading &&\n                  props.variant !== DropdownVariant.search && (\n                    <UIcon\n                      color=\"gray-500\"\n                      size=\"20\"\n                      icon={`$${props.prependIcon}`}\n                    ></UIcon>\n                  )}\n                {props.variant === DropdownVariant.avatarLeading && (\n                  <UAvatar\n                    size={Sizes.xs}\n                    imagePath={item?.image}\n                    avatarIcon={props.avatarIcon}\n                  ></UAvatar>\n                )}\n                {props.variant === DropdownVariant.dotLeading && (\n                  <div class={dotClasses}></div>\n                )}\n                <div class={textClasses.value}>{item.text}</div>\n                <div class={supportingTextClasses.value}>\n                  {item.supportingText}\n                </div>\n                <div class=\"ml-auto\">\n                  {props.variant !== DropdownVariant.tags &&\n                    index === selectedItem.value && (\n                      <UIcon\n                        color=\"primary-600\"\n                        size=\"20\"\n                        icon=\"$check\"\n                      ></UIcon>\n                    )}\n                  {props.variant === DropdownVariant.tags &&\n                    filteredDropDownItems.value &&\n                    selectedItems.value.includes(\n                      getDropDownItems().indexOf(\n                        filteredDropDownItems.value[index]\n                      )\n                    ) && (\n                      <UIcon\n                        color=\"primary-600\"\n                        size=\"20\"\n                        icon=\"$check\"\n                      ></UIcon>\n                    )}\n                </div>\n              </div>\n            ))}\n          </div>\n        ) : null}\n        {!filteredDropDownItems.value &&\n        isActive.value &&\n        props.emptyMessage ? (\n          <div class={dropdownClasses.value}>\n            <div class=\"text-text-sm font-medium text-gray-400 py-2 px-[14px] select-none\">\n              {props.emptyMessage}\n            </div>\n          </div>\n        ) : null}\n        {props.error && props.errorMessages ? (\n          <div>\n            {props.errorMessages.map((errorMessage) => (\n              <div key={errorMessage} class={errorMessageClasses.value}>\n                {errorMessage}\n              </div>\n            ))}\n          </div>\n        ) : null}\n      </div>\n    ))\n\n    return {\n      isActive,\n      isEnabled,\n    }\n  },\n})\n\nexport type UDropdown = InstanceType<typeof UDropdown>\n"],"mappings":";;;;;;;SAASA,kBAAkB;AAC3B,SAASC,QAAQ,EAAEC,GAAG,QAAa,KAAK;AACxC,SAASC,gBAAgB,QAAQ,cAAc;AAAA;AAAA,OAGxCC,eAAe;AAAA,SACbC,KAAK;AAAA,SAELC,KAAK;AAAA,SACLC,OAAO;AAAA,SACPC,MAAM;AAAA,SACNC,IAAI;AAAA,SAEJC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAElD,OAAO,IAAMC,kBAAkB,GAAGF,YAAY,CAAAG,aAAA;EAE1CC,UAAU,EAAEC,MAAM;EAClBC,KAAK,EAAEC,MAAM;EACbC,WAAW,EAAED,MAAM;EACnBE,IAAI,EAAEF,MAAM;EACZG,UAAU,EAAE;IACVC,IAAI,EAAEJ,MAAM;IACZ,WAAS;EACX,CAAC;EACDK,WAAW,EAAEL,MAAM;EACnBM,UAAU,EAAEN,MAAM;EAClBO,OAAO,EAAE;IACPH,IAAI,EAAEJ,MAAM;IACZ,WAASd,eAAe;EAC1B,CAAC;EACDkB,IAAI,EAAEJ,MAAM;EACZQ,IAAI,EAAE;IACJJ,IAAI,EAAEJ,MAAM;IACZ,WAAS;EACX,CAAC;EACDS,YAAY,EAAET,MAAM;EACpBU,QAAQ,EAAE;IACRN,IAAI,EAAEO,OAAO;IACb,WAAS;EACX,CAAC;EACDC,IAAI,EAAEZ,MAAM;EACZa,KAAK,EAAEF,OAAO;EACdG,aAAa,EAAEC,KAAuB;EACtCC,aAAa,EAAE;IACbZ,IAAI,EAAEW,KAAmB;IACzBE,QAAQ,EAAE;EACZ;AAAC,GAEEnC,kBAAkB,CAAC,CAAC,GAEzB,WACF,CAAC;AAcD,OAAO,IAAMoC,SAAS,GAAG1B,gBAAgB,CAAiB,CAAC,CAAC;EAC1DoB,IAAI,EAAE,WAAW;EAEjBO,KAAK,EAAExB,kBAAkB,CAAC,CAAC;EAE3ByB,KAAK,EAAE;IACLC,MAAM,EAAE,SAAAA,OAACC,CAAS;MAAA,OAAK,IAAI;IAAA;IAC3BC,IAAI,EAAE,SAAAA,KAAA;MAAA,OAAM,IAAI;IAAA;IAChB,gBAAgB,EAAE,SAAAC,cAAA;MAAA,OAAM,IAAI;IAAA;IAC5B,mBAAmB,EAAE,SAAAC,iBAACC,KAAa;MAAA,OAAK,IAAI;IAAA;EAC9C,CAAC;EAEDC,KAAK,WAAAA,MAACR,KAAK,EAAAS,IAAA,EAAmB;IAAA,IAAfC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACxB,IAAMC,QAAQ,GAAG/C,GAAG,CAAC,KAAK,CAAC;IAC3B,IAAMgD,YAAY,GAAGhD,GAAG,CAAC,CAAC;IAC1B,IAAMiD,aAA4B,GAAGjD,GAAG,CAAC,EAAE,CAAC;IAC5C,IAAMkD,OAAO,GAAGlD,GAAG,CAAC,KAAK,CAAC;IAC1B,IAAMmD,UAAU,GAAGnD,GAAG,CAAC,EAAE,CAAC;IAC1B,IAAMoD,WAAW,GAAGpD,GAAG,CAAqB,IAAI,CAAC;IACjD,IAAMqD,cAAc,GAAGrD,GAAG,CAAqB,IAAI,CAAC;IACpD,IAAMsD,YAAY,GAAGtD,GAAG,CAAqB,IAAI,CAAC;IAClD,IAAMuD,qBAAqB,GAAGvD,GAAG,CAAC,CAAC;IACnC,IAAMwD,mBAAmB,GAAGxD,GAAG,CAAqB,IAAI,CAAC;IACzD,IAAMyD,kBAAkB,GAAGzD,GAAG,CAAqB,IAAI,CAAC;IACxD,IAAM0D,aAAa,GAAG1D,GAAG,CAAqB,IAAI,CAAC;IAEnD,IAAM2D,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;MACzB,IAAI,CAACxB,KAAK,CAACT,QAAQ,EAAEqB,QAAQ,CAACL,KAAK,GAAG,CAACK,QAAQ,CAACL,KAAK;IACvD,CAAC;IAED,IAAMkB,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAyB;MAC7C,IAAMC,aAA6B,GAAG1B,KAAK,CAACH,aAAa;MAEzD,IAAID,KAAK,CAAC+B,OAAO,CAACD,aAAa,CAAC,EAAE;QAChC,IAAME,YAAY,GAAGF,aAAa,CAACG,GAAG,CAAC,UAACC,IAAI,EAAK;UAC/C,IAAIA,IAAI,CAACC,KAAK,IAAID,IAAI,CAACE,IAAI,IAAIF,IAAI,CAACG,cAAc,EAAE;YAClD,OAAOH,IAAI;UACb,CAAC,MAAM;YACL,OAAO;cACLI,EAAE,EAAEJ,IAAI,CAACI,EAAE,IAAI,EAAE;cACjBH,KAAK,EAAED,IAAI,CAACC,KAAK,IAAI,EAAE;cACvBC,IAAI,EAAEF,IAAI,CAACE,IAAI,IAAI,EAAE;cACrBC,cAAc,EAAEH,IAAI,CAACG,cAAc,IAAI;YACzC,CAAC;UACH;QACF,CAAC,CAAC;QAEF,IAAME,aAAa,GAAGP,YAAY,CAACQ,MAAM,CAAC,UAACN,IAAI,EAAK;UAClD,OACEA,IAAI,CAACC,KAAK,KAAK,EAAE,IAAID,IAAI,CAACE,IAAI,KAAK,EAAE,IAAIF,IAAI,CAACG,cAAc,KAAK,EAAE;QAEvE,CAAC,CAAC;QAEF,OAAOE,aAAa;MACtB,CAAC,MAAM;QACL,OAAO,EAAE;MACX;IACF,CAAC;IAED,IAAME,SAAS,GAAGzE,QAAQ,CACxB;MAAA,OAAe,CAAC,CAACoC,KAAK,CAACH,aAAa,CAACyC,MAAM,IAAI,CAACtC,KAAK,CAACT,QAAQ;IAAA,CAChE,CAAC;IAED,IAAIS,KAAK,CAACf,IAAI,KAAK,QAAQ,IAAIoD,SAAS,CAAC9B,KAAK,EAAE;MAC9CK,QAAQ,CAACL,KAAK,GAAG,IAAI;IACvB;IAEA,IAAMgC,YAAY,GAAG,SAAfA,YAAYA,CAAA,EAAS;MACzB,IAAIF,SAAS,CAAC9B,KAAK,EAAE;QACnBK,QAAQ,CAACL,KAAK,GAAG,IAAI;MACvB;IACF,CAAC;IAED,IAAMiC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;MAC9B,IAAIH,SAAS,CAAC9B,KAAK,EAAE;QACnB,IAAIK,QAAQ,CAACL,KAAK,KAAK,IAAI,EAAEK,QAAQ,CAACL,KAAK,GAAG,IAAI;MACpD;IACF,CAAC;IAED,IAAMkC,SAAS,GAAG,SAAZA,SAASA,CAAIC,QAAgB,EAAK;MACtC,IAAM7C,aAAa,GAAG4B,gBAAgB,CAAC,CAAC;MACxC,IAAIY,SAAS,CAAC9B,KAAK,EAAE;QACnBO,aAAa,CAACP,KAAK,CAACoC,MAAM,CAACD,QAAQ,EAAE,CAAC,CAAC;QACvChC,IAAI,CACF,mBAAmB,EACnBI,aAAa,CAACP,KAAK,CAACsB,GAAG,CAAC,UAACe,KAAa;UAAA,OAAK/C,aAAa,CAAC+C,KAAK,CAAC;QAAA,EACjE,CAAC;MACH;IACF,CAAC;IAED,IAAMC,qBAAqB,GAAGjF,QAAQ,CAAC,YAAM;MAC3C,IAAMiC,aAAa,GAAG4B,gBAAgB,CAAC,CAAC;MACxC,IACEzB,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+E,MAAM,IACxC9C,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,EACtC;QACA,OAAOlD,aAAa;MACtB,CAAC,MAAM;QACL,IAAMmD,eAAe,GACnBhC,UAAU,CAACT,KAAK,IAAIS,UAAU,CAACT,KAAK,CAAC0C,WAAW,CAAC,CAAC;QACpD,IAAMd,aAAa,GAAGtC,aAAa,CAACuC,MAAM,CACxC,UAACN,IAAI;UAAA,IAAAoB,UAAA,EAAAC,oBAAA;UAAA,OACH,EAAAD,UAAA,GAAApB,IAAI,CAACE,IAAI,qBAATkB,UAAA,CAAWD,WAAW,CAAC,CAAC,CAACG,UAAU,CAACJ,eAAe,CAAC,OAAAG,oBAAA,GACpDrB,IAAI,CAACG,cAAc,qBAAnBkB,oBAAA,CAAqBF,WAAW,CAAC,CAAC,CAACI,QAAQ,CAACL,eAAe,CAAC;QAAA,CAChE,CAAC;QACD,OAAOb,aAAa,CAACG,MAAM,GAAG,CAAC,GAAGH,aAAa,GAAG,IAAI;MACxD;IACF,CAAC,CAAC;IAEF,IAAMmB,UAAU,GAAG,SAAbA,UAAUA,CAAIV,KAAa,EAAK;MAAA,IAAAW,sBAAA;MACpC,IAAM1D,aAAa,GAAG4B,gBAAgB,CAAC,CAAC;MACxC,IAAI,CAACY,SAAS,CAAC9B,KAAK,EAAE;QACpB,OAAO,KAAK;MACd;MAEA,IAAIP,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,EAAE;QAAA,IAAAS,qBAAA,EAAAC,qBAAA;QAC1C,IAAMC,iBAAiB,GAAG7D,aAAa,CAAC8D,OAAO,EAAAH,qBAAA,GAC7CX,qBAAqB,CAACtC,KAAK,qBAA3BiD,qBAAA,CAA8BZ,KAAK,CACrC,CAAC;QAED,IAAMgB,oBAAoB,GACxB9C,aAAa,CAACP,KAAK,CAACoD,OAAO,CAACD,iBAAiB,CAAC;QAChD,IAAIE,oBAAoB,KAAK,CAAC,CAAC,EAAE;UAC/B9C,aAAa,CAACP,KAAK,CAACsD,IAAI,CAACH,iBAAiB,CAAC;QAC7C,CAAC,MAAM;UACL5C,aAAa,CAACP,KAAK,CAACoC,MAAM,CAACiB,oBAAoB,EAAE,CAAC,CAAC;QACrD;QAEAlD,IAAI,CACF,mBAAmB,EACnBI,aAAa,CAACP,KAAK,CAACsB,GAAG,CAAC,UAACe,KAAK;UAAA,OAAK/C,aAAa,CAAC+C,KAAK,CAAC;QAAA,EACzD,CAAC;QAEDxB,qBAAqB,aAAAqC,qBAAA,GAArBrC,qBAAqB,CAAEb,KAAK,cAAAkD,qBAAA,GAA5BA,qBAAA,CAA8BK,MAAM,qBAApCL,qBAAA,CAAsCM,KAAK,CAAC,CAAC;QAE7C,OAAO,IAAI;MACb;MAEA,IACElD,YAAY,CAACN,KAAK,KAClBV,aAAa,CAAC8D,OAAO,EAAAJ,sBAAA,GACnBV,qBAAqB,CAACtC,KAAK,qBAA3BgD,sBAAA,CAA8BX,KAAK,CACrC,CAAC,EACD;QACA/B,YAAY,CAACN,KAAK,GAAGyD,SAAS;QAC9BtD,IAAI,CAAC,mBAAmB,EAAEG,YAAY,CAACN,KAAK,CAAC;MAC/C,CAAC,MAAM;QACL,IAAM4B,aAAa,GAAGU,qBAAqB,CAACtC,KAAK;QACjD,IACE4B,aAAa,KAAK,IAAI,IACtBS,KAAK,IAAI,CAAC,IACVA,KAAK,GAAGT,aAAa,CAACG,MAAM,EAC5B;UACA,IAAMoB,kBAAiB,GAAG7D,aAAa,CAAC8D,OAAO,CAC7CxB,aAAa,CAACS,KAAK,CACrB,CAAC;UACD/B,YAAY,CAACN,KAAK,GAAGmD,kBAAiB;UACtC1C,UAAU,CAACT,KAAK,GAAG,EAAE;UACrBG,IAAI,CAAC,mBAAmB,EAAEb,aAAa,CAAC6D,kBAAiB,CAAC,CAAC;QAC7D;MACF;IACF,CAAC;IAED,IAAMO,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAoB,EAAK;MAC9C,IAAMC,SAAS,GAAG,QAAQ;MAC1B,IACEvD,QAAQ,CAACL,KAAK,IACd8B,SAAS,CAAC9B,KAAK,IACf2D,KAAK,CAACE,GAAG,KAAK,WAAW,IACzBpE,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,IACtC/C,KAAK,CAACf,IAAI,KAAK,QAAQ,EACvB;QACA4B,YAAY,CAACN,KAAK,GAAGyD,SAAS;QAC9BtD,IAAI,CAAC,mBAAmB,EAAEG,YAAY,CAACN,KAAK,CAAC;MAC/C;MACA,IAAI8B,SAAS,CAAC9B,KAAK,IAAI2D,KAAK,CAACE,GAAG,KAAKD,SAAS,EAAE;QAC9C,IAAIvD,QAAQ,CAACL,KAAK,EAAE;UAClBiB,YAAY,CAAC,CAAC;QAChB;QACAd,IAAI,CAAC,gBAAgB,CAAC;MACxB;IACF,CAAC;IAED,IAAM2D,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIH,KAAiB,EAAK;MAAA,IAAAI,qBAAA,EAAAC,qBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA;MAChD,IACG9D,QAAQ,CAACL,KAAK,KACZ,CAACU,WAAW,CAACV,KAAK,IAChB,CAACU,WAAW,CAACV,KAAK,CAACoE,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,IAChD,GAAAQ,qBAAA,GAAChD,kBAAkB,CAACf,KAAK,aAAxB+D,qBAAA,CAA0BK,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,CAAC,CAAC,IAC/D,GAAAS,qBAAA,GAACrD,cAAc,CAACX,KAAK,aAApBgE,qBAAA,CAAsBI,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,KACrD,GAAAU,mBAAA,GAACrD,YAAY,CAACZ,KAAK,aAAlBiE,mBAAA,CAAoBG,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,MAAAW,qBAAA,GACrDpD,mBAAmB,CAACd,KAAK,aAAzBkE,qBAAA,CAA2BE,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,EACzD;QACAlD,QAAQ,CAACL,KAAK,GAAG,KAAK;QACtBG,IAAI,CAAC,MAAM,CAAC;MACd;MACA,KAAAgE,sBAAA,GAAIpD,kBAAkB,CAACf,KAAK,aAAxBmE,sBAAA,CAA0BC,QAAQ,CAACT,KAAK,CAACJ,MAAc,CAAC,EAAE;QAC5DlD,QAAQ,CAACL,KAAK,GAAG,IAAI;MACvB;IACF,CAAC;IAEDzC,gBAAgB,CAAC,OAAO,EAAEuG,kBAAkB,CAAC;IAC7CvG,gBAAgB,CAAC,SAAS,EAAEmG,aAAa,CAAC;IAE1C,IAAMW,OAAO,GAAGhH,QAAQ,CAAC;MAAA,OAAAa,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;QACvB,gFAAgF,EAC9E;MAAI,GACFuB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACxB,cAAc,EAAE;MAClB,CAAC,GACGW,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACxB,cAAc,EAAE;MAClB,CAAC,GACGuB,QAAQ,CAACL,KAAK,KAAK,KAAK,IAC1BP,KAAK,CAACN,KAAK,KAAK,KAAK,IACrB2C,SAAS,CAAC9B,KAAK,KAAK,IAAI,IAAI;QAC1B,iBAAiB,EAAE;MACrB,CAAC,GACCK,QAAQ,CAACL,KAAK,KAAK,IAAI,IACzBP,KAAK,CAACN,KAAK,KAAK,KAAK,IACrB2C,SAAS,CAAC9B,KAAK,KAAK,IAAI,IAAI;QAC1B,oDAAoD,EAAE;MACxD,CAAC,GACCK,QAAQ,CAACL,KAAK,KAAK,IAAI,IACzBP,KAAK,CAACN,KAAK,KAAK,IAAI,IACpB2C,SAAS,CAAC9B,KAAK,KAAK,IAAI,IAAI;QAC1B,2BAA2B,EAAE;MAC/B,CAAC,GACCP,KAAK,CAACN,KAAK,KAAK,IAAI,IACtB2C,SAAS,CAAC9B,KAAK,KAAK,IAAI,IAAI;QAC1B,kBAAkB,EAAE;MACtB,CAAC,GACC8B,SAAS,CAAC9B,KAAK,KAAK,KAAK,IAAI;QAC/B,+CAA+C,EAAE;MACnD,CAAC;IAAA,CACD,CAAC;IAEH,IAAMsE,YAAY,GAAGjH,QAAQ,CAAC;MAAA,OAAAa,aAAA;QAC5B;QACA,gHAAgH,EAC9G;MAAI,GACF4D,SAAS,CAAC9B,KAAK,KAAK,KAAK,IAAI;QAC/B,oBAAoB,EAAE;MACxB,CAAC;IAAA,CACD,CAAC;IAEH,IAAMuE,kBAAkB,GAAGlH,QAAQ,CAAC;MAAA,OAAO;QACzC,qDAAqD,EAAE;MACzD,CAAC;IAAA,CAAC,CAAC;IAEH,IAAMmH,WAAW,GAAGnH,QAAQ,CAAC;MAAA,OAAO;QAClC;QACA,oGAAoG,EAClG;MACJ,CAAC;IAAA,CAAC,CAAC;IAEH,IAAMoH,qBAAqB,GAAGpH,QAAQ,CAAC;MAAA,OAAAa,aAAA,CAAAA,aAAA;QACrC;QACA,wFAAwF,EACtF;MAAI,GACFuB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACxB,cAAc,EAAE;MAClB,CAAC,GACGW,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACxB,cAAc,EAAE;MAClB,CAAC;IAAA,CACD,CAAC;IAEH,IAAM4F,iBAAiB,GAAGrH,QAAQ,CAAC;MAAA,OAAO;QACxC,kCAAkC,EAAE;MACtC,CAAC;IAAA,CAAC,CAAC;IAEH,IAAMsH,eAAe,GAAGtH,QAAQ,CAAC;MAAA,OAAAa,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;QAC/B,wEAAwE,EACtE,IAAI;QACN,4EAA4E,EAC1E;MAAI,GACFuB,KAAK,CAACpB,KAAK,IACboB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACpB,YAAY,EAAE;MAChB,CAAC,GACCW,KAAK,CAACpB,KAAK,IACboB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACpB,YAAY,EAAE;MAChB,CAAC,GACC,CAACW,KAAK,CAACpB,KAAK,IACdoB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACpB,YAAY,EAAE;MAChB,CAAC,GACC,CAACW,KAAK,CAACpB,KAAK,IACdoB,KAAK,CAACX,IAAI,IAAI,IAAI,IAAI;QACpB,YAAY,EAAE;MAChB,CAAC,GACCgD,SAAS,CAAC9B,KAAK,KAAK,KAAK,IAAI;QAC/B,oBAAoB,EAAE;MACxB,CAAC;IAAA,CACD,CAAC;IAEH,IAAM4E,mBAAmB,GAAGvH,QAAQ,CAAC,YAAM;MACzC,IAAIgH,OAAO,sHACgB;MAE3B,IAAI,CAACvC,SAAS,CAAC9B,KAAK,EAAE;QACpBqE,OAAO,IAAI,qBAAqB;MAClC;MAEA,OAAOA,OAAO;IAChB,CAAC,CAAC;IAEF,IAAMQ,YAAY,GAAGxH,QAAQ,CAAC;MAAA,OAAO;QACnC,kDAAkD,EAAE;MACtD,CAAC;IAAA,CAAC,CAAC;IAEH,IAAMyH,YAAY,GAAGzH,QAAQ,CAAC;MAAA,OAAO;QACnC,8CAA8C,EAAE;MAClD,CAAC;IAAA,CAAC,CAAC;IAEH,IAAM0H,WAAW,GAAG1H,QAAQ,CAAC;MAAA,OAAO;QAClC,8CAA8C,EAAE;MAClD,CAAC;IAAA,CAAC,CAAC;IAEH,IAAM2H,mBAAmB,GAAG3H,QAAQ,CAAC;MAAA,OAAO;QAC1C,gDAAgD,EAAE;MACpD,CAAC;IAAA,CAAC,CAAC;IAEH,IAAM4H,UAAU,GAAG5H,QAAQ,CAAC;MAAA,OAAO;QACjC,sCAAsC,EAAE;MAC1C,CAAC;IAAA,CAAC,CAAC;IAEH,IAAM6H,uBAAuB,GAAG7H,QAAQ,CAAC;MAAA,OAAO;QAC9C,gCAAgC,EAAE;MACpC,CAAC;IAAA,CAAC,CAAC;IAEHW,SAAS,CAAC;MAAA,IAAAmH,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;MAAA,OAAAC,YAAA;QAAA,SACIT,YAAY,CAAC7E,KAAK;QAAA,OAAOgB;MAAa,IAC/CvB,KAAK,CAACpB,KAAK,GAAAiH,YAAA;QAAA,SACER,YAAY,CAAC9E;MAAK,IAAGP,KAAK,CAACpB,KAAK,KAC1C,IAAI,EAENoB,KAAK,CAACZ,OAAO,KAAK,QAAQ,IAAIyB,YAAY,CAACN,KAAK,KAAKyD,SAAS,IAC/DhE,KAAK,CAACZ,OAAO,KAAK,QAAQ,IAAIY,KAAK,CAACZ,OAAO,KAAK,MAAO,GAAAyG,YAAA;QAAA,SAC1CjB,OAAO,CAACrE,KAAK;QAAA,WAAWiB,YAAY;QAAA,OAAOP;MAAW,IAC/DjB,KAAK,CAACd,WAAW,IAClBc,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+H,aAAa,IAC/C9F,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgI,UAAU,GAAAF,YAAA,eAAAA,YAAA,CAAA5H,KAAA;QAAA;QAAA;QAAA,YAAA+H,MAAA,CAK5BhG,KAAK,CAACd,WAAW;MAAA,aAG7B,IAAI,EACPc,KAAK,CAACZ,OAAO,IAAIrB,eAAe,CAAC+H,aAAa,IAC/CjF,YAAY,CAACN,KAAK,IAAIyD,SAAS,GAAA6B,YAAA,eAAAA,YAAA,CAAA5H,KAAA;QAAA;QAAA;QAAA,YAAA+H,MAAA,CAKfhG,KAAK,CAACd,WAAW;MAAA,aAG7B,IAAI,EACPc,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+H,aAAa,IAChDjF,YAAY,CAACN,KAAK,KAAK,IAAI,IAC3BM,YAAY,CAACN,KAAK,KAAKyD,SAAS,GAAA6B,YAAA,CAAA3H,OAAA;QAAA,QAEtBF,KAAK,CAACiI,EAAE;QAAA,cAAAP,qBAAA,GACHjE,gBAAgB,CAAC,CAAC,CAACZ,YAAY,CAACN,KAAK,CAAC,qBAAtCmF,qBAAA,CAAwC3D,KAAK;QAAA,cAC5C/B,KAAK,CAACb;MAAU,WAE5B,IAAI,EACPa,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgI,UAAU,GAAAF,YAAA;QAAA,SAC/BL,UAAU,CAACjF;MAAK,WAC1B,IAAI,EAAAsF,YAAA;QAAA,SACIhB,YAAY,CAACtE;MAAK,IAC3BM,YAAY,CAACN,KAAK,IAAI,IAAI,IAAIM,YAAY,CAACN,KAAK,IAAIyD,SAAS,GAAA6B,YAAA;QAAA,SAChDf,kBAAkB,CAACvE;MAAK,IAAGP,KAAK,CAAClB,WAAW,KACtD,IAAI,EACP+B,YAAY,CAACN,KAAK,KAAK,IAAI,IAC5BM,YAAY,CAACN,KAAK,KAAKyD,SAAS,GAAA6B,YAAA;QAAA,SAClBZ,iBAAiB,CAAC1E;MAAK,IAAAsF,YAAA;QAAA,SACrBd,WAAW,CAACxE;MAAK,KAAAoF,sBAAA,GAC1BlE,gBAAgB,CAAC,CAAC,CAACZ,YAAY,CAACN,KAAK,CAAC,qBAAtCoF,sBAAA,CAAwC3D,IAAI,IAAA6D,YAAA;QAAA,SAEnCb;MAAqB,KAAAY,sBAAA,GAC9BnE,gBAAgB,CAAC,CAAC,CAACZ,YAAY,CAACN,KAAK,CAAC,qBAAtCqF,sBAAA,CAAwC3D,cAAc,OAGzD,IAAI,IAAA4D,YAAA,CAAA5H,KAAA;QAAA;QAAA;QAAA,YAAA+H,MAAA,CAKEhG,KAAK,CAAChB,UAAU;MAAA,aAG5B,IAAI,EACPgB,KAAK,CAACZ,OAAO,IAAIrB,eAAe,CAAC+E,MAAM,IACxCjC,YAAY,CAACN,KAAK,IAAIyD,SAAS,GAAA6B,YAAA;QAAA,OACnB3E;MAAc,IAAA2E,YAAA,CAAA1H,MAAA;QAAA,cAEX6C,UAAU,CAACT,KAAK;QAAA,gCAAA2F,mBAAAC,MAAA;UAAA,OAAhBnF,UAAU,CAACT,KAAK,GAAA4F,MAAA;QAAA;QAAA,QACnBnG,KAAK,CAACX,IAAI;QAAA,gBACF,KAAK;QAAA,eACNW,KAAK,CAACd,WAAW;QAAA,eACjBc,KAAK,CAAClB,WAAW;QAAA,WACrBuD,SAAS,CAAC9B,KAAK;QAAA,WACfiC,iBAAiB;QAAA,WACjBD;MAAY,aAGvB,IAAI,EACPvC,KAAK,CAACZ,OAAO,IAAIrB,eAAe,CAACgF,IAAI,GAAA8C,YAAA,eAAAA,YAAA;QAAA,OAExB1E;MAAY,IAAA0E,YAAA,CAAA1H,MAAA;QAAA,cAET6C,UAAU,CAACT,KAAK;QAAA,gCAAA2F,mBAAAC,MAAA;UAAA,OAAhBnF,UAAU,CAACT,KAAK,GAAA4F,MAAA;QAAA;QAAA,OACpB/E,qBAAqB;QAAA,QACpBpD,KAAK,CAACoI,EAAE;QAAA,gBACA,KAAK;QAAA,eACNpG,KAAK,CAAClB,WAAW;QAAA;QAAA,WAErBuD,SAAS,CAAC9B,KAAK;QAAA,WACfiC,iBAAiB;QAAA,WACjBD;MAAY;QAAA,oBAAA8D,SAAA;UAAA,QAAAR,YAAA;YAAA,OAGdxE,mBAAmB;YAAA,SACjBoE,uBAAuB,CAAClF;UAAK,IAAAsF,YAAA,CAAA5H,KAAA;YAAA;YAAA;YAAA,YAAA+H,MAAA,CAKxBhG,KAAK,CAACd,WAAW;UAAA,UAE5B4B,aAAa,CAACP,KAAK,CAACsB,GAAG,CACtB,UAACyE,SAAiB,EAAE5D,QAAgB;YAAA,IAAA6D,qBAAA,EAAAC,sBAAA;YAAA,OAAAX,YAAA,CAAAzH,IAAA;cAAA,YAEtB,SAAAqI,SAAA;gBAAA,OAAMhE,SAAS,CAACC,QAAQ,CAAC;cAAA;cAAA,OAC9BA,QAAQ;cAAA;cAAA,oBAAA6D,qBAAA,GAEI9E,gBAAgB,CAAC,CAAC,CAAC6E,SAAS,CAAC,qBAA7BC,qBAAA,CAA+BxE,KAAK;cAAA,UAC7CM,SAAS,CAAC9B,KAAK;cAAA,QACjBvC,KAAK,CAAC0I;YAAE;cAAA,oBAAAL,SAAA;gBAAA,SAAAG,sBAAA,GAEb/E,gBAAgB,CAAC,CAAC,CAAC6E,SAAS,CAAC,qBAA7BE,sBAAA,CAA+BvE,cAAc;cAAA;YAAA;UAAA,CAGpD,CAAC;QAAA;MAAA,SAKP,IAAI,EAEN,CAACjC,KAAK,CAACN,KAAK,IAAIM,KAAK,CAACjB,IAAI,IAAI,CAAC6B,QAAQ,CAACL,KAAK,IAC9C,CAACsC,qBAAqB,CAACtC,KAAK,IAAIP,KAAK,CAACjB,IAAK,GAAA8G,YAAA;QAAA,SAC9BP,WAAW,CAAC/E;MAAK,IAAGP,KAAK,CAACjB,IAAI,KACxC,IAAI,EAEP6B,QAAQ,CAACL,KAAK,IAAIsC,qBAAqB,CAACtC,KAAK,GAAAsF,YAAA;QAAA,SAChCX,eAAe,CAAC3E,KAAK;QAAA,OAAOe;MAAkB,IACvDuB,qBAAqB,CAACtC,KAAK,CAACsB,GAAG,CAAC,UAACC,IAAI,EAAEc,KAAK;QAAA,OAAAiD,YAAA;UAAA,OAEpCjD,KAAK;UAAA,YAAAoD,MAAA,CACAb,mBAAmB,CAAC5E,KAAK,EAAAyF,MAAA,CAChChG,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,IACrCH,KAAK,KAAK/B,YAAY,CAACN,KAAK,IAC7BP,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,IACrCF,qBAAqB,CAACtC,KAAK,IAC3BO,aAAa,CAACP,KAAK,CAAC8C,QAAQ,CAC1B5B,gBAAgB,CAAC,CAAC,CAACkC,OAAO,CACxBd,qBAAqB,CAACtC,KAAK,CAACqC,KAAK,CACnC,CACF,CAAE,GACA,aAAa,GACb,EAAE;UAAA,WAEC,SAAA+D,QAAA;YAAA,OAAMrD,UAAU,CAACV,KAAK,CAAC;UAAA;QAAA,IAE/B5C,KAAK,CAACd,WAAW,IAChBc,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+H,aAAa,IAC/C9F,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgI,UAAU,IAC5C/F,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+E,MAAM,IAAA+C,YAAA,CAAA5H,KAAA;UAAA;UAAA;UAAA,YAAA+H,MAAA,CAI1BhG,KAAK,CAACd,WAAW;QAAA,QAE9B,EACFc,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAAC+H,aAAa,IAAAD,YAAA,CAAA3H,OAAA;UAAA,QAEtCF,KAAK,CAACiI,EAAE;UAAA,aACHnE,IAAI,oBAAJA,IAAI,CAAEC,KAAK;UAAA,cACV/B,KAAK,CAACb;QAAU,QAE/B,EACAa,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgI,UAAU,IAAAF,YAAA;UAAA,SAC/BL;QAAU,QACvB,EAAAK,YAAA;UAAA,SACWd,WAAW,CAACxE;QAAK,IAAGuB,IAAI,CAACE,IAAI,IAAA6D,YAAA;UAAA,SAC7Bb,qBAAqB,CAACzE;QAAK,IACpCuB,IAAI,CAACG,cAAc,IAAA4D,YAAA;UAAA;QAAA,IAGnB7F,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,IACrCH,KAAK,KAAK/B,YAAY,CAACN,KAAK,IAAAsF,YAAA,CAAA5H,KAAA;UAAA;UAAA;UAAA;QAAA,QAM3B,EACF+B,KAAK,CAACZ,OAAO,KAAKrB,eAAe,CAACgF,IAAI,IACrCF,qBAAqB,CAACtC,KAAK,IAC3BO,aAAa,CAACP,KAAK,CAAC8C,QAAQ,CAC1B5B,gBAAgB,CAAC,CAAC,CAACkC,OAAO,CACxBd,qBAAqB,CAACtC,KAAK,CAACqC,KAAK,CACnC,CACF,CAAC,IAAAiD,YAAA,CAAA5H,KAAA;UAAA;UAAA;UAAA;QAAA,QAMA;MAAA,CAGR,CAAC,KAEF,IAAI,EACP,CAAC4E,qBAAqB,CAACtC,KAAK,IAC7BK,QAAQ,CAACL,KAAK,IACdP,KAAK,CAACV,YAAY,GAAAuG,YAAA;QAAA,SACJX,eAAe,CAAC3E;MAAK,IAAAsF,YAAA;QAAA;MAAA,IAE5B7F,KAAK,CAACV,YAAY,OAGrB,IAAI,EACPU,KAAK,CAACN,KAAK,IAAIM,KAAK,CAACL,aAAa,GAAAkG,YAAA,eAE9B7F,KAAK,CAACL,aAAa,CAACkC,GAAG,CAAC,UAAC+E,YAAY;QAAA,OAAAf,YAAA;UAAA,OAC1Be,YAAY;UAAA,SAASrB,mBAAmB,CAAChF;QAAK,IACrDqG,YAAY;MAAA,CAEhB,CAAC,KAEF,IAAI;IAAA,CAEX,CAAC;IAEF,OAAO;MACLhG,QAAQ,EAARA,QAAQ;MACRyB,SAAS,EAATA;IACF,CAAC;EACH;AACF,CAAC,CAAC"}