Welcome to mirror list, hosted at ThFree Co, Russian Federation.

collapse.js.map « dist « js - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4d51ead5704f389c4a5889008444e54e385b4b0a (plain)
1
{"version":3,"file":"collapse.js","sources":["../src/util/index.js","../src/collapse.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = '#' + hrefAttr.split('#')[1]\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n  let called = false\n  const durationPadding = 5\n  const emulatedDuration = duration + durationPadding\n\n  function listener() {\n    called = true\n    element.removeEventListener(TRANSITION_END, listener)\n  }\n\n  element.addEventListener(TRANSITION_END, listener)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(element)\n    }\n  }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: ` +\n        `Option \"${property}\" provided type \"${valueType}\" ` +\n        `but expected type \"${expectedTypes}\".`\n      )\n    }\n  })\n}\n\nconst isVisible = element => {\n  if (!element) {\n    return false\n  }\n\n  if (element.style && element.parentNode && element.parentNode.style) {\n    const elementStyle = getComputedStyle(element)\n    const parentNodeStyle = getComputedStyle(element.parentNode)\n\n    return elementStyle.display !== 'none' &&\n      parentNodeStyle.display !== 'none' &&\n      elementStyle.visibility !== 'hidden'\n  }\n\n  return false\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery\n  }\n\n  return null\n}\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery()\n    /* istanbul ignore if */\n    if ($) {\n      const JQUERY_NO_CONFLICT = $.fn[name]\n      $.fn[name] = plugin.jQueryInterface\n      $.fn[name].Constructor = plugin\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT\n        return plugin.jQueryInterface\n      }\n    }\n  })\n}\n\nexport {\n  getUID,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  triggerTransitionEnd,\n  isElement,\n  emulateTransitionEnd,\n  typeCheckConfig,\n  isVisible,\n  findShadowRoot,\n  noop,\n  reflow,\n  getjQuery,\n  onDOMContentLoaded,\n  isRTL,\n  defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  emulateTransitionEnd,\n  getSelectorFromElement,\n  getElementFromSelector,\n  getTransitionDurationFromElement,\n  isElement,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n  toggle: true,\n  parent: ''\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = SelectorEngine.find(\n      `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n      `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n    )\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i]\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === element)\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._parent = this._config.parent ? this._getParent() : null\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n\n  static get Default() {\n    return Default\n  }\n\n  static get DATA_KEY() {\n    return DATA_KEY\n  }\n\n  // Public\n\n  toggle() {\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    let actives\n    let activesData\n\n    if (this._parent) {\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n        .filter(elem => {\n          if (typeof this._config.parent === 'string') {\n            return elem.getAttribute('data-bs-parent') === this._config.parent\n          }\n\n          return elem.classList.contains(CLASS_NAME_COLLAPSE)\n        })\n\n      if (actives.length === 0) {\n        actives = null\n      }\n    }\n\n    const container = SelectorEngine.findOne(this._selector)\n    if (actives) {\n      const tempActiveData = actives.find(elem => container !== elem)\n      activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n      if (activesData && activesData._isTransitioning) {\n        return\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    if (actives) {\n      actives.forEach(elemActive => {\n        if (container !== elemActive) {\n          Collapse.collapseInterface(elemActive, 'hide')\n        }\n\n        if (!activesData) {\n          Data.setData(elemActive, DATA_KEY, null)\n        }\n      })\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    if (this._triggerArray.length) {\n      this._triggerArray.forEach(element => {\n        element.classList.remove(CLASS_NAME_COLLAPSED)\n        element.setAttribute('aria-expanded', true)\n      })\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      this.setTransitioning(false)\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n    const transitionDuration = getTransitionDurationFromElement(this._element)\n\n    EventHandler.one(this._element, 'transitionend', complete)\n\n    emulateTransitionEnd(this._element, transitionDuration)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    const triggerArrayLength = this._triggerArray.length\n    if (triggerArrayLength > 0) {\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i]\n        const elem = getElementFromSelector(trigger)\n\n        if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n          trigger.classList.add(CLASS_NAME_COLLAPSED)\n          trigger.setAttribute('aria-expanded', false)\n        }\n      }\n    }\n\n    this.setTransitioning(true)\n\n    const complete = () => {\n      this.setTransitioning(false)\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n    const transitionDuration = getTransitionDurationFromElement(this._element)\n\n    EventHandler.one(this._element, 'transitionend', complete)\n    emulateTransitionEnd(this._element, transitionDuration)\n  }\n\n  setTransitioning(isTransitioning) {\n    this._isTransitioning = isTransitioning\n  }\n\n  dispose() {\n    super.dispose()\n    this._config = null\n    this._parent = null\n    this._triggerArray = null\n    this._isTransitioning = null\n  }\n\n  // Private\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n  }\n\n  _getParent() {\n    let { parent } = this._config\n\n    if (isElement(parent)) {\n      // it's a jQuery object\n      if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n        parent = parent[0]\n      }\n    } else {\n      parent = SelectorEngine.findOne(parent)\n    }\n\n    const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n    SelectorEngine.find(selector, parent)\n      .forEach(element => {\n        const selected = getElementFromSelector(element)\n\n        this._addAriaAndCollapsedClass(\n          selected,\n          [element]\n        )\n      })\n\n    return parent\n  }\n\n  _addAriaAndCollapsedClass(element, triggerArray) {\n    if (!element || !triggerArray.length) {\n      return\n    }\n\n    const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    })\n  }\n\n  // Static\n\n  static collapseInterface(element, config) {\n    let data = Data.getData(element, DATA_KEY)\n    const _config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false\n    }\n\n    if (!data) {\n      data = new Collapse(element, _config)\n    }\n\n    if (typeof config === 'string') {\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Collapse.collapseInterface(this, config)\n    })\n  }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const triggerData = Manipulator.getDataAttributes(this)\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  selectorElements.forEach(element => {\n    const data = Data.getData(element, DATA_KEY)\n    let config\n    if (data) {\n      // update parent attribute\n      if (data._parent === null && typeof triggerData.parent === 'string') {\n        data._config.parent = triggerData.parent\n        data._parent = data._getParent()\n      }\n\n      config = 'toggle'\n    } else {\n      config = triggerData\n    }\n\n    Collapse.collapseInterface(element, config)\n  })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n"],"names":["MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","undefined","toString","call","match","toLowerCase","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","getTransitionDurationFromElement","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","removeEventListener","addEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","documentElement","dir","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","Default","toggle","parent","DefaultType","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE","Collapse","_isTransitioning","_config","_getConfig","_triggerArray","SelectorEngine","find","id","toggleList","i","len","length","elem","filterElement","filter","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","_element","classList","contains","hide","show","actives","activesData","container","findOne","tempActiveData","Data","getData","startEvent","EventHandler","trigger","defaultPrevented","elemActive","collapseInterface","setData","dimension","_getDimension","remove","add","style","setAttribute","setTransitioning","complete","capitalizedDimension","slice","scrollSize","one","getBoundingClientRect","triggerArrayLength","isTransitioning","dispose","Boolean","jquery","selected","triggerArray","isOpen","data","Manipulator","getDataAttributes","each","BaseComponent","on","event","target","tagName","delegateTarget","preventDefault","triggerData","selectorElements"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAGA,IAAMA,uBAAuB,GAAG,IAAhC;EACA,IAAMC,cAAc,GAAG,eAAvB;;EAGA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAC,GAAG,EAAI;EACpB,MAAIA,GAAG,KAAK,IAAR,IAAgBA,GAAG,KAAKC,SAA5B,EAAuC;EACrC,gBAAUD,GAAV;EACD;;EAED,SAAO,GAAGE,QAAH,CAAYC,IAAZ,CAAiBH,GAAjB,EAAsBI,KAAtB,CAA4B,aAA5B,EAA2C,CAA3C,EAA8CC,WAA9C,EAAP;EACD,CAND;;EAsBA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAAAC,OAAO,EAAI;EAC7B,MAAIC,QAAQ,GAAGD,OAAO,CAACE,YAAR,CAAqB,gBAArB,CAAf;;EAEA,MAAI,CAACD,QAAD,IAAaA,QAAQ,KAAK,GAA9B,EAAmC;EACjC,QAAIE,QAAQ,GAAGH,OAAO,CAACE,YAAR,CAAqB,MAArB,CAAf,CADiC;EAIjC;EACA;EACA;;EACA,QAAI,CAACC,QAAD,IAAc,CAACA,QAAQ,CAACC,QAAT,CAAkB,GAAlB,CAAD,IAA2B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA9C,EAAyE;EACvE,aAAO,IAAP;EACD,KATgC;;;EAYjC,QAAIF,QAAQ,CAACC,QAAT,CAAkB,GAAlB,KAA0B,CAACD,QAAQ,CAACE,UAAT,CAAoB,GAApB,CAA/B,EAAyD;EACvDF,MAAAA,QAAQ,GAAG,MAAMA,QAAQ,CAACG,KAAT,CAAe,GAAf,EAAoB,CAApB,CAAjB;EACD;;EAEDL,IAAAA,QAAQ,GAAGE,QAAQ,IAAIA,QAAQ,KAAK,GAAzB,GAA+BA,QAAQ,CAACI,IAAT,EAA/B,GAAiD,IAA5D;EACD;;EAED,SAAON,QAAP;EACD,CAvBD;;EAyBA,IAAMO,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAAR,OAAO,EAAI;EACxC,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;;EAEA,MAAIC,QAAJ,EAAc;EACZ,WAAOQ,QAAQ,CAACC,aAAT,CAAuBT,QAAvB,IAAmCA,QAAnC,GAA8C,IAArD;EACD;;EAED,SAAO,IAAP;EACD,CARD;;EAUA,IAAMU,sBAAsB,GAAG,SAAzBA,sBAAyB,CAAAX,OAAO,EAAI;EACxC,MAAMC,QAAQ,GAAGF,WAAW,CAACC,OAAD,CAA5B;EAEA,SAAOC,QAAQ,GAAGQ,QAAQ,CAACC,aAAT,CAAuBT,QAAvB,CAAH,GAAsC,IAArD;EACD,CAJD;;EAMA,IAAMW,gCAAgC,GAAG,SAAnCA,gCAAmC,CAAAZ,OAAO,EAAI;EAClD,MAAI,CAACA,OAAL,EAAc;EACZ,WAAO,CAAP;EACD,GAHiD;;;EAAA,8BAMJa,MAAM,CAACC,gBAAP,CAAwBd,OAAxB,CANI;EAAA,MAM5Ce,kBAN4C,yBAM5CA,kBAN4C;EAAA,MAMxBC,eANwB,yBAMxBA,eANwB;;EAQlD,MAAMC,uBAAuB,GAAGC,MAAM,CAACC,UAAP,CAAkBJ,kBAAlB,CAAhC;EACA,MAAMK,oBAAoB,GAAGF,MAAM,CAACC,UAAP,CAAkBH,eAAlB,CAA7B,CATkD;;EAYlD,MAAI,CAACC,uBAAD,IAA4B,CAACG,oBAAjC,EAAuD;EACrD,WAAO,CAAP;EACD,GAdiD;;;EAiBlDL,EAAAA,kBAAkB,GAAGA,kBAAkB,CAACT,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAArB;EACAU,EAAAA,eAAe,GAAGA,eAAe,CAACV,KAAhB,CAAsB,GAAtB,EAA2B,CAA3B,CAAlB;EAEA,SAAO,CAACY,MAAM,CAACC,UAAP,CAAkBJ,kBAAlB,IAAwCG,MAAM,CAACC,UAAP,CAAkBH,eAAlB,CAAzC,IAA+E1B,uBAAtF;EACD,CArBD;;EAuBA,IAAM+B,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAArB,OAAO,EAAI;EACtCA,EAAAA,OAAO,CAACsB,aAAR,CAAsB,IAAIC,KAAJ,CAAUhC,cAAV,CAAtB;EACD,CAFD;;EAIA,IAAMiC,SAAS,GAAG,SAAZA,SAAY,CAAA/B,GAAG;EAAA,SAAI,CAACA,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAX,EAAgBgC,QAApB;EAAA,CAArB;;EAEA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAC1B,OAAD,EAAU2B,QAAV,EAAuB;EAClD,MAAIC,MAAM,GAAG,KAAb;EACA,MAAMC,eAAe,GAAG,CAAxB;EACA,MAAMC,gBAAgB,GAAGH,QAAQ,GAAGE,eAApC;;EAEA,WAASE,QAAT,GAAoB;EAClBH,IAAAA,MAAM,GAAG,IAAT;EACA5B,IAAAA,OAAO,CAACgC,mBAAR,CAA4BzC,cAA5B,EAA4CwC,QAA5C;EACD;;EAED/B,EAAAA,OAAO,CAACiC,gBAAR,CAAyB1C,cAAzB,EAAyCwC,QAAzC;EACAG,EAAAA,UAAU,CAAC,YAAM;EACf,QAAI,CAACN,MAAL,EAAa;EACXP,MAAAA,oBAAoB,CAACrB,OAAD,CAApB;EACD;EACF,GAJS,EAIP8B,gBAJO,CAAV;EAKD,CAhBD;;EAkBA,IAAMK,eAAe,GAAG,SAAlBA,eAAkB,CAACC,aAAD,EAAgBC,MAAhB,EAAwBC,WAAxB,EAAwC;EAC9DC,EAAAA,MAAM,CAACC,IAAP,CAAYF,WAAZ,EAAyBG,OAAzB,CAAiC,UAAAC,QAAQ,EAAI;EAC3C,QAAMC,aAAa,GAAGL,WAAW,CAACI,QAAD,CAAjC;EACA,QAAME,KAAK,GAAGP,MAAM,CAACK,QAAD,CAApB;EACA,QAAMG,SAAS,GAAGD,KAAK,IAAIpB,SAAS,CAACoB,KAAD,CAAlB,GAA4B,SAA5B,GAAwCpD,MAAM,CAACoD,KAAD,CAAhE;;EAEA,QAAI,CAAC,IAAIE,MAAJ,CAAWH,aAAX,EAA0BI,IAA1B,CAA+BF,SAA/B,CAAL,EAAgD;EAC9C,YAAM,IAAIG,SAAJ,CACDZ,aAAa,CAACa,WAAd,EAAH,yBACWP,QADX,2BACuCG,SADvC,sCAEsBF,aAFtB,SADI,CAAN;EAKD;EACF,GAZD;EAaD,CAdD;;EA0DA,IAAMO,MAAM,GAAG,SAATA,MAAS,CAAAlD,OAAO;EAAA,SAAIA,OAAO,CAACmD,YAAZ;EAAA,CAAtB;;EAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;EAAA,gBACHvC,MADG;EAAA,MACdwC,MADc,WACdA,MADc;;EAGtB,MAAIA,MAAM,IAAI,CAAC5C,QAAQ,CAAC6C,IAAT,CAAcC,YAAd,CAA2B,mBAA3B,CAAf,EAAgE;EAC9D,WAAOF,MAAP;EACD;;EAED,SAAO,IAAP;EACD,CARD;;EAUA,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,CAAAC,QAAQ,EAAI;EACrC,MAAIhD,QAAQ,CAACiD,UAAT,KAAwB,SAA5B,EAAuC;EACrCjD,IAAAA,QAAQ,CAACwB,gBAAT,CAA0B,kBAA1B,EAA8CwB,QAA9C;EACD,GAFD,MAEO;EACLA,IAAAA,QAAQ;EACT;EACF,CAND;;EAQchD,QAAQ,CAACkD,eAAT,CAAyBC,GAAzB,KAAiC;;EAE/C,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,IAAD,EAAOC,MAAP,EAAkB;EAC3CP,EAAAA,kBAAkB,CAAC,YAAM;EACvB,QAAMQ,CAAC,GAAGZ,SAAS,EAAnB;EACA;;EACA,QAAIY,CAAJ,EAAO;EACL,UAAMC,kBAAkB,GAAGD,CAAC,CAACE,EAAF,CAAKJ,IAAL,CAA3B;EACAE,MAAAA,CAAC,CAACE,EAAF,CAAKJ,IAAL,IAAaC,MAAM,CAACI,eAApB;EACAH,MAAAA,CAAC,CAACE,EAAF,CAAKJ,IAAL,EAAWM,WAAX,GAAyBL,MAAzB;;EACAC,MAAAA,CAAC,CAACE,EAAF,CAAKJ,IAAL,EAAWO,UAAX,GAAwB,YAAM;EAC5BL,QAAAA,CAAC,CAACE,EAAF,CAAKJ,IAAL,IAAaG,kBAAb;EACA,eAAOF,MAAM,CAACI,eAAd;EACD,OAHD;EAID;EACF,GAZiB,CAAlB;EAaD,CAdD;;ECnLA;EACA;EACA;EACA;EACA;;EAEA,IAAMG,IAAI,GAAG,UAAb;EACA,IAAMC,QAAQ,GAAG,aAAjB;EACA,IAAMC,SAAS,SAAOD,QAAtB;EACA,IAAME,YAAY,GAAG,WAArB;EAEA,IAAMC,OAAO,GAAG;EACdC,EAAAA,MAAM,EAAE,IADM;EAEdC,EAAAA,MAAM,EAAE;EAFM,CAAhB;EAKA,IAAMC,WAAW,GAAG;EAClBF,EAAAA,MAAM,EAAE,SADU;EAElBC,EAAAA,MAAM,EAAE;EAFU,CAApB;EAKA,IAAME,UAAU,YAAUN,SAA1B;EACA,IAAMO,WAAW,aAAWP,SAA5B;EACA,IAAMQ,UAAU,YAAUR,SAA1B;EACA,IAAMS,YAAY,cAAYT,SAA9B;EACA,IAAMU,oBAAoB,aAAWV,SAAX,GAAuBC,YAAjD;EAEA,IAAMU,eAAe,GAAG,MAAxB;EACA,IAAMC,mBAAmB,GAAG,UAA5B;EACA,IAAMC,qBAAqB,GAAG,YAA9B;EACA,IAAMC,oBAAoB,GAAG,WAA7B;EAEA,IAAMC,KAAK,GAAG,OAAd;EACA,IAAMC,MAAM,GAAG,QAAf;EAEA,IAAMC,gBAAgB,GAAG,oBAAzB;EACA,IAAMC,oBAAoB,GAAG,6BAA7B;EAEA;EACA;EACA;EACA;EACA;;MAEMC;;;EACJ,oBAAY3F,OAAZ,EAAqBqC,MAArB,EAA6B;EAAA;;EAC3B,sCAAMrC,OAAN;EAEA,UAAK4F,gBAAL,GAAwB,KAAxB;EACA,UAAKC,OAAL,GAAe,MAAKC,UAAL,CAAgBzD,MAAhB,CAAf;EACA,UAAK0D,aAAL,GAAqBC,kCAAc,CAACC,IAAf,CAChBP,oBAAH,iBAAkC1F,OAAO,CAACkG,EAA1C,aACGR,oBADH,2BAC4C1F,OAAO,CAACkG,EADpD,SADmB,CAArB;EAKA,QAAMC,UAAU,GAAGH,kCAAc,CAACC,IAAf,CAAoBP,oBAApB,CAAnB;;EAEA,SAAK,IAAIU,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGF,UAAU,CAACG,MAAjC,EAAyCF,CAAC,GAAGC,GAA7C,EAAkDD,CAAC,EAAnD,EAAuD;EACrD,UAAMG,IAAI,GAAGJ,UAAU,CAACC,CAAD,CAAvB;EACA,UAAMnG,QAAQ,GAAGO,sBAAsB,CAAC+F,IAAD,CAAvC;EACA,UAAMC,aAAa,GAAGR,kCAAc,CAACC,IAAf,CAAoBhG,QAApB,EACnBwG,MADmB,CACZ,UAAAC,SAAS;EAAA,eAAIA,SAAS,KAAK1G,OAAlB;EAAA,OADG,CAAtB;;EAGA,UAAIC,QAAQ,KAAK,IAAb,IAAqBuG,aAAa,CAACF,MAAvC,EAA+C;EAC7C,cAAKK,SAAL,GAAiB1G,QAAjB;;EACA,cAAK8F,aAAL,CAAmBa,IAAnB,CAAwBL,IAAxB;EACD;EACF;;EAED,UAAKM,OAAL,GAAe,MAAKhB,OAAL,CAAajB,MAAb,GAAsB,MAAKkC,UAAL,EAAtB,GAA0C,IAAzD;;EAEA,QAAI,CAAC,MAAKjB,OAAL,CAAajB,MAAlB,EAA0B;EACxB,YAAKmC,yBAAL,CAA+B,MAAKC,QAApC,EAA8C,MAAKjB,aAAnD;EACD;;EAED,QAAI,MAAKF,OAAL,CAAalB,MAAjB,EAAyB;EACvB,YAAKA,MAAL;EACD;;EAhC0B;EAiC5B;;;;;EAYD;WAEAA,SAAA,kBAAS;EACP,QAAI,KAAKqC,QAAL,CAAcC,SAAd,CAAwBC,QAAxB,CAAiC/B,eAAjC,CAAJ,EAAuD;EACrD,WAAKgC,IAAL;EACD,KAFD,MAEO;EACL,WAAKC,IAAL;EACD;EACF;;WAEDA,OAAA,gBAAO;EAAA;;EACL,QAAI,KAAKxB,gBAAL,IAAyB,KAAKoB,QAAL,CAAcC,SAAd,CAAwBC,QAAxB,CAAiC/B,eAAjC,CAA7B,EAAgF;EAC9E;EACD;;EAED,QAAIkC,OAAJ;EACA,QAAIC,WAAJ;;EAEA,QAAI,KAAKT,OAAT,EAAkB;EAChBQ,MAAAA,OAAO,GAAGrB,kCAAc,CAACC,IAAf,CAAoBR,gBAApB,EAAsC,KAAKoB,OAA3C,EACPJ,MADO,CACA,UAAAF,IAAI,EAAI;EACd,YAAI,OAAO,MAAI,CAACV,OAAL,CAAajB,MAApB,KAA+B,QAAnC,EAA6C;EAC3C,iBAAO2B,IAAI,CAACrG,YAAL,CAAkB,gBAAlB,MAAwC,MAAI,CAAC2F,OAAL,CAAajB,MAA5D;EACD;;EAED,eAAO2B,IAAI,CAACU,SAAL,CAAeC,QAAf,CAAwB9B,mBAAxB,CAAP;EACD,OAPO,CAAV;;EASA,UAAIiC,OAAO,CAACf,MAAR,KAAmB,CAAvB,EAA0B;EACxBe,QAAAA,OAAO,GAAG,IAAV;EACD;EACF;;EAED,QAAME,SAAS,GAAGvB,kCAAc,CAACwB,OAAf,CAAuB,KAAKb,SAA5B,CAAlB;;EACA,QAAIU,OAAJ,EAAa;EACX,UAAMI,cAAc,GAAGJ,OAAO,CAACpB,IAAR,CAAa,UAAAM,IAAI;EAAA,eAAIgB,SAAS,KAAKhB,IAAlB;EAAA,OAAjB,CAAvB;EACAe,MAAAA,WAAW,GAAGG,cAAc,GAAGC,wBAAI,CAACC,OAAL,CAAaF,cAAb,EAA6BlD,QAA7B,CAAH,GAA4C,IAAxE;;EAEA,UAAI+C,WAAW,IAAIA,WAAW,CAAC1B,gBAA/B,EAAiD;EAC/C;EACD;EACF;;EAED,QAAMgC,UAAU,GAAGC,gCAAY,CAACC,OAAb,CAAqB,KAAKd,QAA1B,EAAoClC,UAApC,CAAnB;;EACA,QAAI8C,UAAU,CAACG,gBAAf,EAAiC;EAC/B;EACD;;EAED,QAAIV,OAAJ,EAAa;EACXA,MAAAA,OAAO,CAAC5E,OAAR,CAAgB,UAAAuF,UAAU,EAAI;EAC5B,YAAIT,SAAS,KAAKS,UAAlB,EAA8B;EAC5BrC,UAAAA,QAAQ,CAACsC,iBAAT,CAA2BD,UAA3B,EAAuC,MAAvC;EACD;;EAED,YAAI,CAACV,WAAL,EAAkB;EAChBI,UAAAA,wBAAI,CAACQ,OAAL,CAAaF,UAAb,EAAyBzD,QAAzB,EAAmC,IAAnC;EACD;EACF,OARD;EASD;;EAED,QAAM4D,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEA,SAAKpB,QAAL,CAAcC,SAAd,CAAwBoB,MAAxB,CAA+BjD,mBAA/B;;EACA,SAAK4B,QAAL,CAAcC,SAAd,CAAwBqB,GAAxB,CAA4BjD,qBAA5B;;EAEA,SAAK2B,QAAL,CAAcuB,KAAd,CAAoBJ,SAApB,IAAiC,CAAjC;;EAEA,QAAI,KAAKpC,aAAL,CAAmBO,MAAvB,EAA+B;EAC7B,WAAKP,aAAL,CAAmBtD,OAAnB,CAA2B,UAAAzC,OAAO,EAAI;EACpCA,QAAAA,OAAO,CAACiH,SAAR,CAAkBoB,MAAlB,CAAyB/C,oBAAzB;EACAtF,QAAAA,OAAO,CAACwI,YAAR,CAAqB,eAArB,EAAsC,IAAtC;EACD,OAHD;EAID;;EAED,SAAKC,gBAAL,CAAsB,IAAtB;;EAEA,QAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,MAAA,MAAI,CAAC1B,QAAL,CAAcC,SAAd,CAAwBoB,MAAxB,CAA+BhD,qBAA/B;;EACA,MAAA,MAAI,CAAC2B,QAAL,CAAcC,SAAd,CAAwBqB,GAAxB,CAA4BlD,mBAA5B,EAAiDD,eAAjD;;EAEA,MAAA,MAAI,CAAC6B,QAAL,CAAcuB,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;;EAEA,MAAA,MAAI,CAACM,gBAAL,CAAsB,KAAtB;;EAEAZ,MAAAA,gCAAY,CAACC,OAAb,CAAqB,MAAI,CAACd,QAA1B,EAAoCjC,WAApC;EACD,KATD;;EAWA,QAAM4D,oBAAoB,GAAGR,SAAS,CAAC,CAAD,CAAT,CAAalF,WAAb,KAA6BkF,SAAS,CAACS,KAAV,CAAgB,CAAhB,CAA1D;EACA,QAAMC,UAAU,cAAYF,oBAA5B;EACA,QAAM5H,kBAAkB,GAAGH,gCAAgC,CAAC,KAAKoG,QAAN,CAA3D;EAEAa,IAAAA,gCAAY,CAACiB,GAAb,CAAiB,KAAK9B,QAAtB,EAAgC,eAAhC,EAAiD0B,QAAjD;EAEAhH,IAAAA,oBAAoB,CAAC,KAAKsF,QAAN,EAAgBjG,kBAAhB,CAApB;EACA,SAAKiG,QAAL,CAAcuB,KAAd,CAAoBJ,SAApB,IAAoC,KAAKnB,QAAL,CAAc6B,UAAd,CAApC;EACD;;WAED1B,OAAA,gBAAO;EAAA;;EACL,QAAI,KAAKvB,gBAAL,IAAyB,CAAC,KAAKoB,QAAL,CAAcC,SAAd,CAAwBC,QAAxB,CAAiC/B,eAAjC,CAA9B,EAAiF;EAC/E;EACD;;EAED,QAAMyC,UAAU,GAAGC,gCAAY,CAACC,OAAb,CAAqB,KAAKd,QAA1B,EAAoChC,UAApC,CAAnB;;EACA,QAAI4C,UAAU,CAACG,gBAAf,EAAiC;EAC/B;EACD;;EAED,QAAMI,SAAS,GAAG,KAAKC,aAAL,EAAlB;;EAEA,SAAKpB,QAAL,CAAcuB,KAAd,CAAoBJ,SAApB,IAAoC,KAAKnB,QAAL,CAAc+B,qBAAd,GAAsCZ,SAAtC,CAApC;EAEAjF,IAAAA,MAAM,CAAC,KAAK8D,QAAN,CAAN;;EAEA,SAAKA,QAAL,CAAcC,SAAd,CAAwBqB,GAAxB,CAA4BjD,qBAA5B;;EACA,SAAK2B,QAAL,CAAcC,SAAd,CAAwBoB,MAAxB,CAA+BjD,mBAA/B,EAAoDD,eAApD;;EAEA,QAAM6D,kBAAkB,GAAG,KAAKjD,aAAL,CAAmBO,MAA9C;;EACA,QAAI0C,kBAAkB,GAAG,CAAzB,EAA4B;EAC1B,WAAK,IAAI5C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4C,kBAApB,EAAwC5C,CAAC,EAAzC,EAA6C;EAC3C,YAAM0B,OAAO,GAAG,KAAK/B,aAAL,CAAmBK,CAAnB,CAAhB;EACA,YAAMG,IAAI,GAAG5F,sBAAsB,CAACmH,OAAD,CAAnC;;EAEA,YAAIvB,IAAI,IAAI,CAACA,IAAI,CAACU,SAAL,CAAeC,QAAf,CAAwB/B,eAAxB,CAAb,EAAuD;EACrD2C,UAAAA,OAAO,CAACb,SAAR,CAAkBqB,GAAlB,CAAsBhD,oBAAtB;EACAwC,UAAAA,OAAO,CAACU,YAAR,CAAqB,eAArB,EAAsC,KAAtC;EACD;EACF;EACF;;EAED,SAAKC,gBAAL,CAAsB,IAAtB;;EAEA,QAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAM;EACrB,MAAA,MAAI,CAACD,gBAAL,CAAsB,KAAtB;;EACA,MAAA,MAAI,CAACzB,QAAL,CAAcC,SAAd,CAAwBoB,MAAxB,CAA+BhD,qBAA/B;;EACA,MAAA,MAAI,CAAC2B,QAAL,CAAcC,SAAd,CAAwBqB,GAAxB,CAA4BlD,mBAA5B;;EACAyC,MAAAA,gCAAY,CAACC,OAAb,CAAqB,MAAI,CAACd,QAA1B,EAAoC/B,YAApC;EACD,KALD;;EAOA,SAAK+B,QAAL,CAAcuB,KAAd,CAAoBJ,SAApB,IAAiC,EAAjC;EACA,QAAMpH,kBAAkB,GAAGH,gCAAgC,CAAC,KAAKoG,QAAN,CAA3D;EAEAa,IAAAA,gCAAY,CAACiB,GAAb,CAAiB,KAAK9B,QAAtB,EAAgC,eAAhC,EAAiD0B,QAAjD;EACAhH,IAAAA,oBAAoB,CAAC,KAAKsF,QAAN,EAAgBjG,kBAAhB,CAApB;EACD;;WAED0H,mBAAA,0BAAiBQ,eAAjB,EAAkC;EAChC,SAAKrD,gBAAL,GAAwBqD,eAAxB;EACD;;WAEDC,UAAA,mBAAU;EACR,6BAAMA,OAAN;;EACA,SAAKrD,OAAL,GAAe,IAAf;EACA,SAAKgB,OAAL,GAAe,IAAf;EACA,SAAKd,aAAL,GAAqB,IAArB;EACA,SAAKH,gBAAL,GAAwB,IAAxB;EACD;;;WAIDE,aAAA,oBAAWzD,MAAX,EAAmB;EACjBA,IAAAA,MAAM,gBACDqC,OADC,EAEDrC,MAFC,CAAN;EAIAA,IAAAA,MAAM,CAACsC,MAAP,GAAgBwE,OAAO,CAAC9G,MAAM,CAACsC,MAAR,CAAvB,CALiB;;EAMjBxC,IAAAA,eAAe,CAACmC,IAAD,EAAOjC,MAAP,EAAewC,WAAf,CAAf;EACA,WAAOxC,MAAP;EACD;;WAED+F,gBAAA,yBAAgB;EACd,WAAO,KAAKpB,QAAL,CAAcC,SAAd,CAAwBC,QAAxB,CAAiC3B,KAAjC,IAA0CA,KAA1C,GAAkDC,MAAzD;EACD;;WAEDsB,aAAA,sBAAa;EAAA;;EAAA,QACLlC,MADK,GACM,KAAKiB,OADX,CACLjB,MADK;;EAGX,QAAIpD,SAAS,CAACoD,MAAD,CAAb,EAAuB;EACrB;EACA,UAAI,OAAOA,MAAM,CAACwE,MAAd,KAAyB,WAAzB,IAAwC,OAAOxE,MAAM,CAAC,CAAD,CAAb,KAAqB,WAAjE,EAA8E;EAC5EA,QAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;EACD;EACF,KALD,MAKO;EACLA,MAAAA,MAAM,GAAGoB,kCAAc,CAACwB,OAAf,CAAuB5C,MAAvB,CAAT;EACD;;EAED,QAAM3E,QAAQ,GAAMyF,oBAAN,0BAA8Cd,MAA9C,QAAd;EAEAoB,IAAAA,kCAAc,CAACC,IAAf,CAAoBhG,QAApB,EAA8B2E,MAA9B,EACGnC,OADH,CACW,UAAAzC,OAAO,EAAI;EAClB,UAAMqJ,QAAQ,GAAG1I,sBAAsB,CAACX,OAAD,CAAvC;;EAEA,MAAA,MAAI,CAAC+G,yBAAL,CACEsC,QADF,EAEE,CAACrJ,OAAD,CAFF;EAID,KARH;EAUA,WAAO4E,MAAP;EACD;;WAEDmC,4BAAA,mCAA0B/G,OAA1B,EAAmCsJ,YAAnC,EAAiD;EAC/C,QAAI,CAACtJ,OAAD,IAAY,CAACsJ,YAAY,CAAChD,MAA9B,EAAsC;EACpC;EACD;;EAED,QAAMiD,MAAM,GAAGvJ,OAAO,CAACiH,SAAR,CAAkBC,QAAlB,CAA2B/B,eAA3B,CAAf;EAEAmE,IAAAA,YAAY,CAAC7G,OAAb,CAAqB,UAAA8D,IAAI,EAAI;EAC3B,UAAIgD,MAAJ,EAAY;EACVhD,QAAAA,IAAI,CAACU,SAAL,CAAeoB,MAAf,CAAsB/C,oBAAtB;EACD,OAFD,MAEO;EACLiB,QAAAA,IAAI,CAACU,SAAL,CAAeqB,GAAf,CAAmBhD,oBAAnB;EACD;;EAEDiB,MAAAA,IAAI,CAACiC,YAAL,CAAkB,eAAlB,EAAmCe,MAAnC;EACD,KARD;EASD;;;aAIMtB,oBAAP,2BAAyBjI,OAAzB,EAAkCqC,MAAlC,EAA0C;EACxC,QAAImH,IAAI,GAAG9B,wBAAI,CAACC,OAAL,CAAa3H,OAAb,EAAsBuE,QAAtB,CAAX;;EACA,QAAMsB,OAAO,gBACRnB,OADQ,EAER+E,+BAAW,CAACC,iBAAZ,CAA8B1J,OAA9B,CAFQ,EAGP,OAAOqC,MAAP,KAAkB,QAAlB,IAA8BA,MAA9B,GAAuCA,MAAvC,GAAgD,EAHzC,CAAb;;EAMA,QAAI,CAACmH,IAAD,IAAS3D,OAAO,CAAClB,MAAjB,IAA2B,OAAOtC,MAAP,KAAkB,QAA7C,IAAyD,YAAYU,IAAZ,CAAiBV,MAAjB,CAA7D,EAAuF;EACrFwD,MAAAA,OAAO,CAAClB,MAAR,GAAiB,KAAjB;EACD;;EAED,QAAI,CAAC6E,IAAL,EAAW;EACTA,MAAAA,IAAI,GAAG,IAAI7D,QAAJ,CAAa3F,OAAb,EAAsB6F,OAAtB,CAAP;EACD;;EAED,QAAI,OAAOxD,MAAP,KAAkB,QAAtB,EAAgC;EAC9B,UAAI,OAAOmH,IAAI,CAACnH,MAAD,CAAX,KAAwB,WAA5B,EAAyC;EACvC,cAAM,IAAIW,SAAJ,wBAAkCX,MAAlC,QAAN;EACD;;EAEDmH,MAAAA,IAAI,CAACnH,MAAD,CAAJ;EACD;EACF;;aAEM8B,kBAAP,yBAAuB9B,MAAvB,EAA+B;EAC7B,WAAO,KAAKsH,IAAL,CAAU,YAAY;EAC3BhE,MAAAA,QAAQ,CAACsC,iBAAT,CAA2B,IAA3B,EAAiC5F,MAAjC;EACD,KAFM,CAAP;EAGD;;;;WAjQD,eAAqB;EACnB,aAAOqC,OAAP;EACD;;;WAED,eAAsB;EACpB,aAAOH,QAAP;EACD;;;;IA5CoBqF;EA0SvB;EACA;EACA;EACA;EACA;;;AAEA/B,kCAAY,CAACgC,EAAb,CAAgBpJ,QAAhB,EAA0ByE,oBAA1B,EAAgDQ,oBAAhD,EAAsE,UAAUoE,KAAV,EAAiB;EACrF;EACA,MAAIA,KAAK,CAACC,MAAN,CAAaC,OAAb,KAAyB,GAAzB,IAAiCF,KAAK,CAACG,cAAN,IAAwBH,KAAK,CAACG,cAAN,CAAqBD,OAArB,KAAiC,GAA9F,EAAoG;EAClGF,IAAAA,KAAK,CAACI,cAAN;EACD;;EAED,MAAMC,WAAW,GAAGV,+BAAW,CAACC,iBAAZ,CAA8B,IAA9B,CAApB;EACA,MAAMzJ,QAAQ,GAAGO,sBAAsB,CAAC,IAAD,CAAvC;EACA,MAAM4J,gBAAgB,GAAGpE,kCAAc,CAACC,IAAf,CAAoBhG,QAApB,CAAzB;EAEAmK,EAAAA,gBAAgB,CAAC3H,OAAjB,CAAyB,UAAAzC,OAAO,EAAI;EAClC,QAAMwJ,IAAI,GAAG9B,wBAAI,CAACC,OAAL,CAAa3H,OAAb,EAAsBuE,QAAtB,CAAb;EACA,QAAIlC,MAAJ;;EACA,QAAImH,IAAJ,EAAU;EACR;EACA,UAAIA,IAAI,CAAC3C,OAAL,KAAiB,IAAjB,IAAyB,OAAOsD,WAAW,CAACvF,MAAnB,KAA8B,QAA3D,EAAqE;EACnE4E,QAAAA,IAAI,CAAC3D,OAAL,CAAajB,MAAb,GAAsBuF,WAAW,CAACvF,MAAlC;EACA4E,QAAAA,IAAI,CAAC3C,OAAL,GAAe2C,IAAI,CAAC1C,UAAL,EAAf;EACD;;EAEDzE,MAAAA,MAAM,GAAG,QAAT;EACD,KARD,MAQO;EACLA,MAAAA,MAAM,GAAG8H,WAAT;EACD;;EAEDxE,IAAAA,QAAQ,CAACsC,iBAAT,CAA2BjI,OAA3B,EAAoCqC,MAApC;EACD,GAhBD;EAiBD,CA3BD;EA6BA;EACA;EACA;EACA;EACA;EACA;;EAEAwB,kBAAkB,CAACS,IAAD,EAAOqB,QAAP,CAAlB;;;;;;;;"}