{"version":3,"names":["window","__phCryptidAtlas","ROUTE","test","p","LEAFLET_JS","LEAFLET_CSS","MC_JS","MC_CSS","TILES","map","wrap","groups","loading","urls","PH_CX_URLS","LAYERS","k","n","icon","asset","on","sub","layer","i","length","POPOPT","maxWidth","minWidth","autoPan","autoPanPaddingTopLeft","autoPanPaddingBottomRight","TIMED","script","src","Promise","res","rej","have","document","querySelector","__done","addEventListener","s","createElement","async","setAttribute","onload","onerror","Error","head","appendChild","sheet","href","l","rel","name","u","reject","esc","String","undefined","replace","chip","t","cls","field","label","val","link","url","shell","kindIcon","kindName","title","body","searchLink","q","encodeURIComponent","popNarrative","e","cfg","chips","d","era","c","h","join","pl","w","a","popBigfoot","row","F","g","indexOf","NOTE","A","B","C","where","filter","Boolean","num","popShark","fatal","slice","popUfoPoint","pt","shapes","place","span","ufoReports","list","out","r","push","pin","size","L","divIcon","className","html","iconSize","iconAnchor","cluster","markerClusterGroup","chunkedLoading","maxClusterRadius","spiderfyOnMaxZoom","showCoverageOnHover","iconCreateFunction","getChildCount","buildNarrative","pack","PH_GEO","cryptids","layers","set","v","forEach","lat","lon","m","marker","bindPopup","rstamp","rspan","addLayer","group","count","buildBigfoot","bigfoot","fields","buildShark","sharks","iL","iO","iY","iD","buildUfo","ufo","shape","iC","iN","iFY","iLY","ev","key","ci","el","popup","getElement","slot","paint","innerHTML","cells","then","catch","BUILD","yeti","abductions","mermaids","kraken","giants","lochness","ensure","resolve","built","all","eachLayer","years","setCount","text","textContent","busy","toggle","box","hasLayer","removeLayer","b","toLocaleString","checked","build","outlet","insertBefore","firstElementChild","bd","btn","type","note","center","zoom","minZoom","maxZoom","worldCopyJump","zoomControl","scrollWheelZoom","fitFloor","getSize","y","z","Math","max","ceil","log","LN2","isFinite","getMinZoom","setMinZoom","getZoom","setZoom","setTimeout","phMapMountCtls","control","position","addTo","tileLayer","attribution","maxNativeZoom","target","getAttribute","stopPropagation","boxes","call","querySelectorAll","anyOn","some","preventDefault","legend","img","classList","contains","remove","REC","SEAMS","W","FLOOR","min","lo","hi","undated","per","keys","undatedN","bound","raf","RCOL","RTICK","maj","RBIN","rbin","rEdges","s0","floor","ryLab","round","trim","bc","match","parseInt","iso","sp","__k","isNaN","__a","__b","rx","acc","rinv","f","rlive","rcollect","any","wasLoEnd","wasHiEnd","rFull","rCount","rcolour","cache","getComputedStyle","getPropertyValue","rdrawHist","bar","cv","clientWidth","H","dpr","devicePixelRatio","width","height","getContext","setTransform","clearRect","series","col","map0","arr","Float64Array","bins","bk","ends","c0","c1","total","lmax","seg","fillStyle","fillRect","rdrawTicks","strip","seen","add","seam","edge","mag","sort","font","fontFamily","wide","measureText","taken","fits","j","px","txt","toFixed","rdrawBrush","tr","style","left","h0","h1","seams","rreadout","display","rpaint","full","rpaintSoon","cancelAnimationFrame","requestAnimationFrame","rapply","keep","clearLayers","addLayers","rset","apply","rbuild","drag","yAt","getBoundingClientRect","clientX","start","which","abs","setPointerCapture","pointerId","move","buttons","end","removeAttribute","releasePointerCapture","button","step","shiftKey","ResizeObserver","observe","teardown","onRoute","location","pathname","tick","pend","kick","setInterval","PH_GEO_URLS","__phWorldGeo","GROUPS","LOADING","hook","Map","__phGeoHooked","addInitHook","getContainer","wantGeo","phWvMode","__phWorldMap","_L","Object","defineProperty","configurable","get","fld","pop","kind","SHADES","G","countries","geoJSON","fillColor","properties","fillOpacity","color","weight","onEachFeature","lyr","features","back","plates","faults","fault","g2","opacity","volcanoes","iLa","iLo","iE","iT","iS","iR","iNum","g3","layerGroup","marks","volcIcon","keyboard","__vn","toLowerCase","__vla","__vlo","__von","status","region","country","VOLC","refreshEruptions","SF","sLa","sLo","G2","g4","live","made","la","cull","getBounds","shown","o","inside","sharkIcon","SHARK_CULL","g5","RECENT","refreshRecentSharks","L2","SRC","attempt","fetch","headers","Accept","ok","json","events","year","Date","now","hits","at","getTime","setIcon","setZIndexOffset","wait","bringToBack","mount","panel","closest","host","parentElement","allBtn","wired","wireCull"],"sources":["theme-12-inline-common-head_tag-17.js"],"sourcesContent":["\n/* --- was script id=\"ph-cryptid-map\" --- */\n/* PH CRYPTID ATLAS v1\n   The Briny Deep map: sightings and encounters rather than weather and hazards.\n   Mounts below the room buttons on The Briny Deep and every room beneath it.\n   #main-outlet is a flex column and the room shelf is pinned to order 2, so the\n   map takes order 3 and lands between the buttons and the topic list without\n   anything having to be moved.\n   Everything is lazy. Leaflet is not on this page at all until the map mounts,\n   and each layer's data is a separate theme upload fetched the first time its\n   box is ticked. A reader who opens the category and never touches the legend\n   downloads the basemap and nothing else.\n   Teardown matters. Ember does not clean up nodes inserted from outside it, so\n   leaving the category has to destroy the map and remove the wrap, or the atlas\n   follows the reader onto every other page. Already paid for once on the Around\n   the World map. */\n(function () {\n  if (window.__phCryptidAtlas) { return; }\n  window.__phCryptidAtlas = 1;\n  /* r353 — Cryptozoology [125] only (moved off Briny parent). Prophecy owns 280. */\n  var ROUTE = { test: function (p) {\n    return /^\\/c\\/(?:[^\\/]+\\/)*cryptozoology(?:\\/125)?(?:\\/|$)/.test(p)\n      || /^\\/c\\/(?:[^\\/]+\\/)*125(?:\\/|$)/.test(p);\n  } };\n  var LEAFLET_JS = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.js';\n  var LEAFLET_CSS = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/leaflet.css';\n  var MC_JS = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/leaflet.markercluster.js';\n  var MC_CSS = 'https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.5.3/MarkerCluster.css';\n  var TILES = 'https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}';\n  var map = null, wrap = null, groups = {}, loading = {};\n  function urls() { return window.PH_CX_URLS || {}; }\n  /* Ordered sky, then land, then fresh water, then salt water, then the\n     ancient ground. Shark attacks moved to the Around the World map, where the\n     other instrument-fed layers live: it is a record of real incidents, not a\n     cryptid, and it did not belong in this legend. */\n  var LAYERS = [\n    { k: 'ufo', n: 'UFO Sightings', icon: '🛸', asset: 'phufo', on: false },\n    { k: 'abductions', n: 'Alien Abductions', icon: '👽', asset: 'phcryptids', sub: 'abductions', on: true },\n    { k: 'bigfoot', n: 'Bigfoot Sightings', icon: '<img src=\"/images/emoji/twitter/hairy_creature.png?v=15\" alt=\"Bigfoot\" class=\"cx-emoji\">', asset: 'phgeobigfoot', on: false },\n    { k: 'yeti', n: 'Yeti Sightings', icon: '⛄', asset: 'phcryptids', sub: 'yeti', on: true },\n    { k: 'lochness', n: 'Loch Ness', icon: '🦕', asset: 'phcryptids', sub: 'lochness', on: true },\n    { k: 'mermaids', n: 'Mermaid Sightings', icon: '🧜', asset: 'phcryptids', sub: 'mermaids', on: true },\n    { k: 'kraken', n: 'Kraken and Sea Monsters', icon: '🐙', asset: 'phcryptids', sub: 'kraken', on: true },\n    { k: 'giants', n: 'Biblical Giants', icon: '🧌', asset: 'phcryptids', sub: 'giants', on: true }\n  ];\n  function layer(k) { for (var i = 0; i < LAYERS.length; i++) { if (LAYERS[i].k === k) { return LAYERS[i]; } } return null; }\n  /* Popups and the atlas furniture. Every Leaflet pane lives inside\n     .leaflet-map-pane, and Leaflet puts a transform on that pane to pan the\n     map. A transform creates a stacking context, so the popup pane is sealed\n     inside it and no z-index on the popup can lift it above the atlas bar,\n     the layers menu or the Record, which are siblings of the map container.\n     Raising the map pane instead would put the tiles over the furniture. So\n     the popup is kept out from under the furniture in the first place, which\n     is what Leaflet's autoPan padding is for. The title bar that used to sit\n     at the top is gone, so only the legend and the Record need clearing. */\n  var POPOPT = {\n    maxWidth: 340, minWidth: 330, autoPan: true,\n    autoPanPaddingTopLeft: [14, 14], autoPanPaddingBottomRight: [14, 116]\n  };\n  var TIMED = [];\n  function script(src) {\n    return new Promise(function (res, rej) {\n      var have = document.querySelector('script[data-cx-src=\"' + src + '\"]');\n      if (have) { if (have.__done) { res(); } else { have.addEventListener('load', function () { res(); }); } return; }\n      var s = document.createElement('script');\n      s.src = src; s.async = true; s.setAttribute('data-cx-src', src);\n      s.onload = function () { s.__done = 1; res(); };\n      s.onerror = function () { rej(new Error('could not load ' + src)); };\n      document.head.appendChild(s);\n    });\n  }\n  function sheet(href) {\n    if (document.querySelector('link[data-cx-href=\"' + href + '\"]')) { return; }\n    var l = document.createElement('link');\n    l.rel = 'stylesheet'; l.href = href; l.setAttribute('data-cx-href', href);\n    document.head.appendChild(l);\n  }\n  function asset(name) {\n    var u = urls()[name];\n    if (!u) { return Promise.reject(new Error('no url for ' + name)); }\n    return script(u);\n  }\n  function esc(s) {\n    return String(s === null || s === undefined ? '' : s)\n      .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n  }\n  function chip(t, cls) { return t ? '<span class=\"ph-cx-chip' + (cls ? ' ' + cls : '') + '\">' + esc(t) + '</span>' : ''; }\n  function field(label, val) { return val ? '<div class=\"ph-cx-field\"><b>' + esc(label) + '</b>' + esc(val) + '</div>' : ''; }\n  function link(url, label) {\n    if (!url) { return ''; }\n    return '<div class=\"ph-cx-field\"><a href=\"' + esc(url) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(label || 'read the source') + '</a></div>';\n  }\n  function shell(kindIcon, kindName, title, body) {\n    return '<div class=\"ph-cx-pop\"><div class=\"ph-cx-pop-hd\">' +\n      '<span class=\"ph-cx-pop-kind\">' + kindIcon + ' ' + esc(kindName) + '</span>' +\n      '<span class=\"ph-cx-pop-t\">' + esc(title) + '</span></div>' +\n      '<div class=\"ph-cx-pop-bd\">' + body + '</div></div>';\n  }\n  function searchLink(q, label) {\n    return '<div class=\"ph-cx-field\"><a href=\"https://www.youtube.com/results?search_query=' +\n      encodeURIComponent(q) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(label) + '</a></div>';\n  }\n  function popNarrative(e, cfg) {\n    var chips = [chip(e.d, 'cx-strong'), chip(e.era), chip(e.c), chip(e.k), chip(e.h), chip(e.t),\n      chip(e.p === 'exact' ? 'exact position' : (e.p ? e.p + ' position' : ''))].join('');\n    var body = '<div class=\"ph-cx-pop-chips\">' + chips + '</div>' +\n      field('Place', e.pl) + field('Witness', e.w) + field('Investigator', e.i) +\n      '<div class=\"ph-cx-account\">' + esc(e.a) + '</div>' +\n      field('Source', e.s) + link(e.u) +\n      searchLink(e.n + ' ' + (e.pl || ''), 'look for footage');\n    return shell(cfg.icon, cfg.n, e.n, body);\n  }\n  function popBigfoot(row, F) {\n    function g(k) { return row[F.indexOf(k)]; }\n    var cls = g('class');\n    var NOTE = { A: 'Class A, a clear sighting by the reporter', B: 'Class B, a sound, a track, or a sighting at distance', C: 'Class C, reported second hand' };\n    var where = [g('county'), g('state')].filter(Boolean).join(', ');\n    var num = g('report');\n    var body = '<div class=\"ph-cx-pop-chips\">' + chip(g('date'), 'cx-strong') + chip('Class ' + cls) +\n      chip(g('season')) + chip(where) + '</div>' +\n      field('Classification', NOTE[cls] || '') + field('Location', where) +\n      (num ? link('http://www.bfro.net/GDB/show_report.asp?id=' + num, 'read the full BFRO report ' + num) : '') +\n      searchLink('bigfoot sighting ' + where + ' ' + (g('date') || ''), 'look for footage');\n    return shell('<img src=\"/images/emoji/twitter/hairy_creature.png?v=15\" alt=\"Bigfoot\" class=\"cx-emoji\">', 'Bigfoot sighting', g('title') || ('Report ' + num), body);\n  }\n  function popShark(row, F) {\n    function g(k) { return row[F.indexOf(k)]; }\n    var fatal = g('fatal');\n    var title = [g('location'), g('area'), g('country')].filter(Boolean).slice(0, 2).join(', ') || g('country');\n    var body = '<div class=\"ph-cx-pop-chips\">' + chip(g('date'), 'cx-strong') + chip(g('type')) +\n      (fatal === 'Y' ? chip('fatal', 'cx-fatal') : (fatal === 'N' ? chip('survived') : chip('outcome unrecorded'))) +\n      chip(g('activity')) + chip(g('time')) +\n      chip(g('precision') === 'exact' ? 'exact position' : g('precision') + ' position') + '</div>' +\n      field('Where', [g('location'), g('area'), g('country')].filter(Boolean).join(', ')) +\n      field('Victim', g('name')) + field('Injury', g('injury')) +\n      field('Shark', g('species')) + field('Source', g('source'));\n    return shell('🦈', 'Shark attack', title, body);\n  }\n  function popUfoPoint(pt, F, shapes) {\n    function g(k) { return pt[F.indexOf(k)]; }\n    var place = [g('place'), g('state'), g('country')].filter(Boolean).join(', ');\n    var n = g('reports');\n    var span = g('first_year') && g('last_year')\n      ? (g('first_year') === g('last_year') ? String(g('first_year')) : g('first_year') + ' to ' + g('last_year')) : '';\n    var body = '<div class=\"ph-cx-pop-chips\">' + chip(n + (n === 1 ? ' report' : ' reports'), 'cx-strong') +\n      chip(span) + chip('mostly ' + (shapes[g('shape_i')] || 'unknown')) + '</div>' +\n      '<div class=\"ph-cx-rep-slot\"><div class=\"ph-cx-field\">loading the reports…</div></div>' +\n      searchLink('UFO sighting ' + place, 'look for footage');\n    return shell('🛸', 'UFO Sightings', place, body);\n  }\n  function ufoReports(list, shapes) {\n    if (!list || !list.length) { return '<div class=\"ph-cx-field\">No individual reports filed here.</div>'; }\n    var out = [];\n    for (var i = 0; i < list.length; i++) {\n      var r = list[i];\n      out.push('<div class=\"ph-cx-report\"><div class=\"cx-when\">' + esc(r[0]) + ' · ' +\n        esc(shapes[r[1]] || 'unknown') + (r[2] ? ' · ' + esc(r[2]) : '') + '</div>' +\n        '<div class=\"ph-cx-account\">' + esc(r[3] || 'No description was filed.') + '</div></div>');\n    }\n    return out.join('');\n  }\n  function pin(icon, size) {\n    var s = size || 15;\n    return window.L.divIcon({ className: '', html: '<span class=\"ph-cx-pin\" style=\"font-size:' + s + 'px\">' + icon + '</span>',\n      iconSize: [s + 6, s + 6], iconAnchor: [(s + 6) / 2, (s + 6) / 2] });\n  }\n  function cluster(icon) {\n    return window.L.markerClusterGroup({\n      chunkedLoading: true, maxClusterRadius: 46, spiderfyOnMaxZoom: true, showCoverageOnHover: false,\n      iconCreateFunction: function (c) {\n        var n = c.getChildCount();\n        var d = n < 10 ? 26 : (n < 100 ? 32 : (n < 1000 ? 38 : 46));\n        return window.L.divIcon({ className: '',\n          html: '<div class=\"ph-cx-cluster\" style=\"width:' + d + 'px;height:' + d + 'px\">' + icon + ' ' + n + '</div>',\n          iconSize: [d, d] });\n      }\n    });\n  }\n  function buildNarrative(cfg) {\n    var pack = (window.PH_GEO.cryptids || {}).layers || {};\n    var set = pack[cfg.sub];\n    if (!set) { return null; }\n    var g = cluster(cfg.icon);\n    set.v.forEach(function (e) {\n      if (typeof e.lat !== 'number' || typeof e.lon !== 'number') { return; }\n      var m = window.L.marker([e.lat, e.lon], { icon: pin(cfg.icon, 17) });\n      m.bindPopup(function () { return popNarrative(e, cfg); }, POPOPT);\n      rstamp(m, cfg.k, rspan(e.d) || rspan(e.era));\n      g.addLayer(m);\n    });\n    return { group: g, count: set.v.length };\n  }\n  function buildBigfoot(cfg) {\n    var d = window.PH_GEO.bigfoot;\n    if (!d) { return null; }\n    var F = d.fields, g = cluster(cfg.icon);\n    d.v.forEach(function (row) {\n      var m = window.L.marker([row[0], row[1]], { icon: pin(cfg.icon, 14) });\n      m.bindPopup(function () { return popBigfoot(row, F); }, POPOPT);\n      rstamp(m, cfg.k, rspan(row[F.indexOf('date')]));\n      g.addLayer(m);\n    });\n    return { group: g, count: d.v.length };\n  }\n  function buildShark(cfg) {\n    var d = window.PH_GEO.sharks;\n    if (!d) { return null; }\n    var F = d.fields, g = cluster(cfg.icon), iL = F.indexOf('lat'), iO = F.indexOf('lon');\n    var iY = F.indexOf('year'), iD = F.indexOf('date');\n    d.v.forEach(function (row) {\n      var m = window.L.marker([row[iL], row[iO]], { icon: pin(cfg.icon, 14) });\n      m.bindPopup(function () { return popShark(row, F); }, POPOPT);\n      rstamp(m, cfg.k, rspan(row[iY]) || rspan(row[iD]));\n      g.addLayer(m);\n    });\n    return { group: g, count: d.v.length };\n  }\n  function buildUfo(cfg) {\n    var d = window.PH_GEO.ufo;\n    if (!d) { return null; }\n    var F = d.fields, shapes = d.shape, g = cluster(cfg.icon);\n    var iL = F.indexOf('lat'), iO = F.indexOf('lon'), iC = F.indexOf('chunk'), iN = F.indexOf('reports');\n    var iFY = F.indexOf('first_year'), iLY = F.indexOf('last_year');\n    d.v.forEach(function (pt) {\n      var n = pt[iN];\n      var m = window.L.marker([pt[iL], pt[iO]], { icon: pin(cfg.icon, n > 40 ? 19 : (n > 8 ? 16 : 13)) });\n      m.bindPopup(function () { return popUfoPoint(pt, F, shapes); }, POPOPT);\n      /* a UFO cell is a span by construction: first report to last */\n      rstamp(m, cfg.k, pt[iFY] ? [pt[iFY], pt[iLY] || pt[iFY]] : null);\n      m.on('popupopen', function (ev) {\n        var key = pt[iL] + ',' + pt[iO];\n        var ci = pt[iC];\n        var el = ev.popup.getElement();\n        var slot = el && el.querySelector('.ph-cx-rep-slot');\n        function paint() {\n          var s = window.PH_GEO['ufod' + ci];\n          if (!s || !slot) { return; }\n          slot.innerHTML = ufoReports(s.cells[key], s.shape || shapes);\n        }\n        if (window.PH_GEO['ufod' + ci]) { paint(); return; }\n        asset('phufod' + ci).then(paint).catch(function () {\n          if (slot) { slot.innerHTML = '<div class=\"ph-cx-field\">The report detail could not be loaded.</div>'; }\n        });\n      });\n      g.addLayer(m);\n    });\n    return { group: g, count: d.v.length };\n  }\n  var BUILD = { ufo: buildUfo, bigfoot: buildBigfoot, sharks: buildShark, yeti: buildNarrative,\n    abductions: buildNarrative, mermaids: buildNarrative, kraken: buildNarrative,\n    giants: buildNarrative, lochness: buildNarrative };\n  function ensure(k) {\n    if (groups[k]) { return Promise.resolve(groups[k]); }\n    if (loading[k]) { return loading[k]; }\n    var cfg = layer(k);\n    if (!cfg) { return Promise.reject(new Error('no layer ' + k)); }\n    loading[k] = asset(cfg.asset).then(function () {\n      window.PH_GEO = window.PH_GEO || {};\n      var built = BUILD[k](cfg);\n      if (!built) { throw new Error('no data for ' + k); }\n      groups[k] = built;\n      built.all = [];\n      built.group.eachLayer(function (m) { built.all.push(m); });\n      TIMED.push(built);\n      years();\n      return built;\n    }).catch(function (e) { loading[k] = null; throw e; });\n    return loading[k];\n  }\n  function setCount(k, text) {\n    if (!wrap) { return; }\n    var row = wrap.querySelector('[data-cx-layer=\"' + k + '\"]');\n    if (row) { row.querySelector('.cx-c').textContent = text; }\n  }\n  function busy(k, on) {\n    if (!wrap) { return; }\n    var row = wrap.querySelector('[data-cx-layer=\"' + k + '\"]');\n    if (row) { row.setAttribute('data-cx-busy', on ? '1' : '0'); }\n  }\n  function toggle(k, on) {\n    var box = wrap && wrap.querySelector('[data-cx-box=\"' + k + '\"]');\n    if (!on) {\n      if (groups[k] && map && map.hasLayer(groups[k].group)) { map.removeLayer(groups[k].group); }\n      years();\n      return;\n    }\n    busy(k, true);\n    ensure(k).then(function (b) {\n      busy(k, false);\n      setCount(k, b.count.toLocaleString());\n      if (box && box.checked && map) {\n        map.addLayer(b.group);\n        /* only now is the layer actually on the map, and only layers on the\n           map count towards the histogram and the readout */\n        years();\n      }\n    }).catch(function () {\n      busy(k, false); setCount(k, 'no data');\n      if (box) { box.checked = false; }\n    });\n  }\n  function build() {\n    var outlet = document.querySelector('#main-outlet');\n    if (!outlet || document.querySelector('.ph-cx-wrap')) { return; }\n    wrap = document.createElement('div');\n    wrap.className = 'ph-cx-wrap';\n    wrap.innerHTML =\n      '<div class=\"ph-cx-name\">Atlas of the Unexplained</div>' +\n      '<div class=\"ph-cx-map\"></div>' +\n            '<div class=\"ph-cx-legend\" data-cx-open=\"1\"><div class=\"ph-cx-legend-hd\">' +\n      '<span>Sighting layers</span><i>▾</i></div><div class=\"ph-cx-legend-bd\"></div></div>';\n    outlet.insertBefore(wrap, outlet.firstElementChild);\n    var bd = wrap.querySelector('.ph-cx-legend-bd');\n    LAYERS.forEach(function (cfg) {\n      var row = document.createElement('label');\n      row.className = 'ph-cx-lrow';\n      row.setAttribute('data-cx-layer', cfg.k);\n      row.innerHTML = '<input type=\"checkbox\" data-cx-box=\"' + cfg.k + '\"' + (cfg.on ? ' checked' : '') + '>' +\n        '<i class=\"cx-ico\">' + cfg.icon + '</i><span class=\"cx-n\">' + esc(cfg.n) + '</span><span class=\"cx-c\"></span>';\n      bd.appendChild(row);\n    });\n    var btn = document.createElement('button');\n    btn.type = 'button'; btn.className = 'ph-cx-allbtn'; btn.textContent = 'Deselect all';\n    bd.appendChild(btn);\n    var note = document.createElement('div');\n    note.className = 'ph-cx-note';\n    note.textContent = 'Sightings as they were reported, with the witness and the source named. Positions are as accurate as each record allows and every popup says which.';\n    bd.appendChild(note);\n    var L = window.L;\n    map = L.map(wrap.querySelector('.ph-cx-map'), {\n      center: [24, -20], zoom: 2, minZoom: 2, maxZoom: 19,\n      worldCopyJump: true, zoomControl: false, scrollWheelZoom: true,\n      /* No vertical clamp. Longitude wraps because the globe really is a\n         cylinder in x — 180E is 180W — but there is no such join in y, so\n         the map simply keeps going into open water above and below the\n         poles, taking the deck colour from .ph-cx-map. Dragging never stops\n         and a popup opened on a pin at the top of the world always has room\n         to pan into. The clamp that used to live here is what made popups\n         run out of headroom. */\n    });\n    /* Fullscreen is far taller than the docked map, and at a low zoom the\n       whole world can be shorter than the screen, which leaves empty bands\n       above and below that no clamp can fix. Raise the zoom floor to\n       whatever fills the height, and re-check whenever the map resizes. */\n    (function () {\n      function fitFloor() {\n        try {\n          var h = map.getSize().y;\n          if (!h) { return; }\n          var z = Math.max(2, Math.ceil(Math.log(h / 256) / Math.LN2));\n          if (!isFinite(z)) { return; }\n          if (map.getMinZoom() !== z) { map.setMinZoom(z); }\n          if (map.getZoom() < z) { map.setZoom(z); }\n        } catch (e) { }\n      }\n      map.on('resize', fitFloor);\n      setTimeout(fitFloor, 150);\n    })();\n    /* the same control cluster the Around the World map uses, so the two maps\n       behave and look alike; only the colours differ, in CSS */\n    if (typeof window.phMapMountCtls === 'function') {\n      window.phMapMountCtls(wrap, map, {});\n    } else {\n      L.control.zoom({ position: 'topright' }).addTo(map);\n    }\n    L.tileLayer(TILES, { attribution: 'Tiles Esri', maxZoom: 19, maxNativeZoom: 16 }).addTo(map);\n    bd.addEventListener('change', function (ev) {\n      var k = ev.target.getAttribute && ev.target.getAttribute('data-cx-box');\n      if (!k) { return; }\n      toggle(k, ev.target.checked); label();\n    });\n    bd.addEventListener('click', function (ev) { ev.stopPropagation(); });\n    function label() {\n      var boxes = [].slice.call(wrap.querySelectorAll('[data-cx-box]'));\n      var anyOn = boxes.some(function (b) { return b.checked; });\n      btn.textContent = anyOn ? 'Deselect all' : 'Select all';\n      btn.setAttribute('data-cx-mode', anyOn ? 'off' : 'on');\n    }\n    btn.addEventListener('click', function (ev) {\n      ev.preventDefault(); ev.stopPropagation();\n      var on = btn.getAttribute('data-cx-mode') === 'on';\n      [].slice.call(wrap.querySelectorAll('[data-cx-box]')).forEach(function (b) {\n        if (b.checked !== on) { b.checked = on; toggle(b.getAttribute('data-cx-box'), on); }\n      });\n      label();\n    });\n    label();\n    var legend = wrap.querySelector('.ph-cx-legend');\n    wrap.querySelector('.ph-cx-legend-hd').addEventListener('click', function (ev) {\n      ev.stopPropagation();\n      legend.setAttribute('data-cx-open', legend.getAttribute('data-cx-open') === '1' ? '0' : '1');\n    });\n    wrap.addEventListener('click', function (ev) {\n      var img = ev.target;\n      if (!img.classList || !img.classList.contains('ph-cx-shot')) { return; }\n      var box = document.createElement('div');\n      box.className = 'ph-cx-lightbox';\n      box.innerHTML = '<img src=\"' + esc(img.getAttribute('data-cx-full-src') || img.src) + '\" alt=\"\">';\n      box.addEventListener('click', function () { box.remove(); });\n      document.body.appendChild(box);\n    });\n    LAYERS.forEach(function (cfg) { if (cfg.on) { toggle(cfg.k, true); } });\n  }\n    /* THE RECORD v2.\n\n     A density histogram drawn along the track, with a two-handle brush, on a\n     compressed piecewise-linear scale. The old control was a single slider\n     walking the list of years that carried a sighting, which meant the axis\n     had no fixed meaning: the distance between two handles told you nothing,\n     and the placeholder axis read \"1 … everything\".\n\n     Three facts drove the rebuild, all of them measured across every layer the\n     Record filters rather than assumed:\n\n       - 30,029 dated map points. 125 of them fall before 1800 — 0.42% of the\n         record, but 93% of a linear axis. 2000–2009 alone is 40%.\n       - 8,687 records are spans, not points, and 8,663 of those are UFO\n         cells carrying a first and a last year. Drawing them at a single\n         year would have thrown away most of what the data says.\n       - 13 records carry no year at all. They get a toggle with a count,\n         not silent hiding.\n\n     Years are held in astronomical numbering — 1 BC is 0, 2 BC is -1 — so the\n     arithmetic is continuous and \"there is no year zero\" becomes purely a\n     labelling rule, applied once, in ryLab(). */\n  var REC = {\n    SEAMS: [1500, 1800, 1947],\n    W: [15, 20, 25, 40],\n    FLOOR: -1199,\n    min: -1199, max: 2026,\n    lo: null, hi: null, undated: true,\n    per: {}, keys: [], undatedN: 0, have: false, bound: false, raf: 0\n  };\n  var RCOL = {\n    ufo: '--cx-ufo', abductions: '--cx-abduct', bigfoot: '--cx-bigfoot',\n    mermaids: '--cx-mermaid', kraken: '--cx-kraken', giants: '--cx-giant',\n    lochness: '--cx-nessie', sharks: '--cx-shark', yeti: '--cx-yeti'\n  };\n  /* minor / major tick spacing per segment, so a segment given 15% of the bar\n     is not asked to carry the same tick density as one given 40% */\n  var RTICK = [\n    { min: 100, maj: 500 }, { min: 25, maj: 100 },\n    { min: 10, maj: 50 }, { min: 5, maj: 20 }\n  ];\n  /* Bin width follows the scale's resolution. Where eighteen years share a\n     pixel it is pointless to bin by the year, and where one year is worth five\n     pixels it would be a lie to bin by the century. This is also what lifts the\n     age of sail off the floor: a quarter century of folklore reads as a block,\n     where single years read as dust. */\n  var RBIN = [100, 25, 10, 1];\n  function rbin(y) {\n    var e = rEdges(), i, w, s0;\n    for (i = 0; i < 4; i++) {\n      if (y <= e[i + 1] || i === 3) {\n        w = RBIN[i];\n        s0 = e[i] + Math.floor((y - e[i]) / w) * w;\n        return [s0, Math.min(s0 + w, e[i + 1])];\n      }\n    }\n    return [y, y + 1];\n  }\n  /* The one place the no-year-zero rule is applied. Astronomical 0 is the year\n     a reader calls 1 BC, so a minus sign must never reach the screen. Years\n     under a thousand carry AD, because \"AD 77\" beside \"560 BC\" reads as a date\n     and a bare \"77\" reads as a count. */\n  function ryLab(y) {\n    y = Math.round(y);\n    if (y <= 0) { return (1 - y) + ' BC'; }\n    return y < 1000 ? 'AD ' + y : String(y);\n  }\n  /* '0077', '1590/1610', '1493-01-09', '1761-06', 'c. 560 BC', '1st century AD'\n     and plain '922' are all in this material. A record is a span, not a point:\n     1590/1610 covers its full twenty years and is kept whenever the brush\n     overlaps any part of it. Returns null only when a record genuinely carries\n     no year — '0' and '' both mean unknown, never 1 BC. */\n  function rspan(s) {\n    var t = String(s === null || s === undefined ? '' : s).trim();\n    if (!t || t === '0') { return null; }\n    var bc = /\\bBCE?\\b/i.test(t);\n    var c = t.match(/(\\d{1,2})(?:st|nd|rd|th)\\s+century/i);\n    if (c) {\n      var n = parseInt(c[1], 10);\n      return bc ? [-(n * 100) + 1, -(n * 100) + 100] : [(n - 1) * 100 + 1, n * 100];\n    }\n    var r = t.match(/^(\\d{1,4})\\s*\\/\\s*(\\d{1,4})$/);\n    if (r) { return [parseInt(r[1], 10), parseInt(r[2], 10)]; }\n    var iso = t.match(/^(\\d{3,4})-\\d{2}(?:-\\d{2})?$/);\n    if (iso) { var v = parseInt(iso[1], 10); return [v, v]; }\n    var m = t.match(/(\\d{1,4})/);\n    if (!m) { return null; }\n    var y = parseInt(m[0], 10);\n    if (!y || y > 2100) { return null; }\n    if (bc) { y = -y + 1; }\n    return [y, y];\n  }\n  function rstamp(m, k, sp) {\n    m.__k = k;\n    if (sp && sp[0] !== null && sp[0] !== undefined && !isNaN(sp[0])) {\n      m.__a = sp[0];\n      m.__b = (sp[1] === null || sp[1] === undefined || isNaN(sp[1]) || sp[1] < sp[0]) ? sp[0] : sp[1];\n    } else { m.__a = null; m.__b = null; }\n    return m;\n  }\n  function rEdges() { return [REC.min, REC.SEAMS[0], REC.SEAMS[1], REC.SEAMS[2], REC.max]; }\n  /* year -> 0..1 along the bar, and back again */\n  function rx(y) {\n    var e = rEdges(), acc = 0, i;\n    if (y <= e[0]) { return 0; }\n    for (i = 0; i < 4; i++) {\n      if (y <= e[i + 1]) { return (acc + REC.W[i] * (y - e[i]) / (e[i + 1] - e[i])) / 100; }\n      acc += REC.W[i];\n    }\n    return 1;\n  }\n  function rinv(f) {\n    var e = rEdges(), p = Math.max(0, Math.min(1, f)) * 100, acc = 0, i;\n    for (i = 0; i < 4; i++) {\n      if (p <= acc + REC.W[i]) { return e[i] + (p - acc) * (e[i + 1] - e[i]) / REC.W[i]; }\n      acc += REC.W[i];\n    }\n    return e[4];\n  }\n  /* only layers actually on the map count towards the histogram and the\n     readout: a layer that is loaded but switched off is not part of the\n     record you are looking at */\n  function rlive(b) { return !!(map && b && b.group && map.hasLayer(b.group)); }\n  function rcollect() {\n    var per = {}, keys = [], undated = 0, lo = 1e9, hi = -1e9, any = false;\n    TIMED.forEach(function (b) {\n      if (!rlive(b)) { return; }\n      b.all.forEach(function (m) {\n        if (m.__a === null || m.__a === undefined) { undated++; return; }\n        any = true;\n        if (m.__a < lo) { lo = m.__a; }\n        if (m.__b > hi) { hi = m.__b; }\n        var k = m.__k || 'other';\n        if (!per[k]) { per[k] = {}; keys.push(k); }\n        var a = m.__a, z = m.__b, w = 1 / (z - a + 1), y;\n        for (y = a; y <= z; y++) { per[k][y] = (per[k][y] || 0) + w; }\n      });\n    });\n    REC.per = per; REC.keys = keys; REC.undatedN = undated; REC.have = any;\n    /* Was each handle parked at the end of the axis before this collection?\n       Measured against the OLD extent, deliberately, and used below. */\n    var wasLoEnd = REC.lo === null || REC.lo <= REC.min;\n    var wasHiEnd = REC.hi === null || REC.hi >= REC.max;\n    /* the floor is fixed so the axis does not jump about as layers are\n       toggled, but a layer reaching further back than 1200 BC extends it */\n    REC.min = any ? Math.min(REC.FLOOR, lo) : REC.FLOOR;\n    REC.max = Math.max(2026, any ? hi : 2026);\n    /* A handle at the end of the axis has to follow the axis when a layer\n       extends it. Without this, switching on the biblical giants — which\n       reach back to 1900 BC — left the brush pinned at the old 1200 BC floor\n       and silently dropped seventeen records nobody had asked to hide. Silent\n       is the whole problem: this bar exists to say what it is holding back. */\n    if (wasLoEnd) { REC.lo = REC.min; }\n    if (wasHiEnd) { REC.hi = REC.max; }\n    if (REC.lo < REC.min) { REC.lo = REC.min; }\n    if (REC.hi > REC.max) { REC.hi = REC.max; }\n  }\n  function rFull() {\n    return REC.lo <= REC.min && REC.hi >= REC.max && REC.undated;\n  }\n  function rCount() {\n    var n = 0;\n    TIMED.forEach(function (b) {\n      if (!rlive(b)) { return; }\n      b.all.forEach(function (m) {\n        if (m.__a === null || m.__a === undefined) { if (REC.undated) { n++; } return; }\n        if (m.__b >= REC.lo && m.__a <= REC.hi) { n++; }\n      });\n    });\n    return n;\n  }\n  function rcolour(k, cache) {\n    if (cache[k]) { return cache[k]; }\n    var v = RCOL[k];\n    var s = v ? (getComputedStyle(wrap).getPropertyValue(v) || '').trim() : '';\n    cache[k] = s || '#9980f3';\n    return cache[k];\n  }\n  /* One column per CSS pixel, each column carrying whatever years land in it.\n     The compressed segments therefore stack several years into a column, which\n     is exactly the point: it is what keeps the age of sail visible beside the\n     NUFORC spike. Height is log(1+n) because the tallest column is three\n     orders of magnitude above the pre-modern ones. */\n  function rdrawHist(bar) {\n    var cv = bar.querySelector('.cx-r-hist');\n    if (!cv) { return; }\n    var W = Math.round(cv.clientWidth), H = 19;\n    if (!W) { return; }\n    var dpr = window.devicePixelRatio || 1;\n    if (cv.width !== Math.round(W * dpr)) { cv.width = Math.round(W * dpr); }\n    if (cv.height !== Math.round(H * dpr)) { cv.height = Math.round(H * dpr); }\n    var g = cv.getContext('2d');\n    g.setTransform(dpr, 0, 0, dpr, 0, 0);\n    g.clearRect(0, 0, W, H);\n    if (!REC.have) { return; }\n    var series = [], i, k, y, col, map0;\n    for (i = 0; i < REC.keys.length; i++) {\n      k = REC.keys[i];\n      var arr = new Float64Array(W), bins = {}, bk;\n      map0 = REC.per[k];\n      for (y in map0) {\n        bk = rbin(+y)[0];\n        bins[bk] = (bins[bk] || 0) + map0[y];\n      }\n      /* a bin is drawn across its own width, not as a hairline: one column per\n         year left the bar looking like a comb wherever a year was worth more\n         than a pixel */\n      for (bk in bins) {\n        var ends = rbin(+bk);\n        var c0 = Math.floor(rx(ends[0]) * W), c1 = Math.ceil(rx(ends[1]) * W);\n        if (c1 <= c0) { c1 = c0 + 1; }\n        if (c0 < 0) { c0 = 0; }\n        if (c1 > W) { c1 = W; }\n        for (col = c0; col < c1; col++) { arr[col] += bins[bk]; }\n      }\n      series.push({ k: k, arr: arr });\n    }\n    var total = new Float64Array(W), max = 0;\n    for (i = 0; i < W; i++) {\n      for (k = 0; k < series.length; k++) { total[i] += series[k].arr[i]; }\n      if (total[i] > max) { max = total[i]; }\n    }\n    if (!max) { return; }\n    var lmax = Math.log(1 + max), cache = {};\n    for (i = 0; i < W; i++) {\n      if (!total[i]) { continue; }\n      var h = (H - 1) * Math.log(1 + total[i]) / lmax;\n      if (h < 1) { h = 1; }\n      var acc = 0;\n      for (k = 0; k < series.length; k++) {\n        var v = series[k].arr[i];\n        if (!v) { continue; }\n        var seg = h * (v / total[i]);\n        g.fillStyle = rcolour(series[k].k, cache);\n        g.fillRect(i, H - acc - seg, 1, Math.ceil(seg));\n        acc += seg;\n      }\n    }\n  }\n  /* Ticks. Every segment edge is always drawn and always labelled, whatever\n     the round-number arithmetic produced, because the edges are the story.\n     Everything else is dropped the moment it would collide with a label\n     already placed — measured with the canvas rather than guessed from string\n     length, so it holds at any width. */\n  function rdrawTicks(bar) {\n    var strip = bar.querySelector('.ph-cx-years-ends');\n    if (!strip) { return; }\n    var W = Math.round(strip.clientWidth);\n    if (!W) { return; }\n    var e = rEdges(), out = [], seen = {}, i, s, y;\n    function add(t) {\n      var key = Math.round(t.y);\n      if (seen[key]) {\n        if (t.seam) { seen[key].seam = true; seen[key].maj = true; }\n        if (t.edge !== undefined) { seen[key].edge = t.edge; }\n        return;\n      }\n      seen[key] = t; out.push(t);\n    }\n    /* Ticks land on round years as a reader LABELS them, not as the arithmetic\n       stores them: astronomical -999 is the year everyone calls 1000 BC, so\n       stepping the raw number would have produced 1001 BC, 901 BC, 801 BC. */\n    for (i = 0; i < 4; i++) {\n      s = RTICK[i].min;\n      for (y = Math.ceil(e[i]); y <= e[i + 1]; y++) {\n        var mag = y > 0 ? y : 1 - y;\n        if (mag % s !== 0) { continue; }\n        add({ y: y, maj: mag % RTICK[i].maj === 0, seam: false });\n      }\n      /* the turn of the era is a tick whatever the round numbers say */\n      if (e[i] < 1 && e[i + 1] >= 1) { add({ y: 1, maj: true, seam: false }); }\n    }\n    add({ y: e[0], maj: true, seam: false, edge: 0 });\n    add({ y: e[4], maj: true, seam: false, edge: 1 });\n    add({ y: e[1], maj: true, seam: true });\n    add({ y: e[2], maj: true, seam: true });\n    add({ y: e[3], maj: true, seam: true });\n    out.sort(function (a, b) { return a.y - b.y; });\n    var cv = bar.querySelector('.cx-r-hist');\n    var g = cv ? cv.getContext('2d') : null;\n    if (g) { g.font = '9px ' + (getComputedStyle(strip).fontFamily || 'serif'); }\n    function wide(t) { return g ? g.measureText(t).width : t.length * 4.6; }\n    var taken = [], html = [];\n    function fits(a, b) {\n      for (var j = 0; j < taken.length; j++) {\n        if (a < taken[j][1] + 4 && b > taken[j][0] - 4) { return false; }\n      }\n      return true;\n    }\n    function place(t) {\n      var px = rx(t.y) * W, txt = ryLab(t.y), w = wide(txt);\n      var a = px - w / 2, b = px + w / 2;\n      if (t.edge === 0) { a = 0; b = w; }\n      if (t.edge === 1) { a = W - w; b = W; }\n      if (!fits(a, b)) { return false; }\n      taken.push([a, b]);\n      html.push('<span class=\"cx-r-lab\" data-seam=\"' + (t.seam ? 1 : 0) + '\"' +\n        (t.edge !== undefined ? ' data-edge=\"' + t.edge + '\"' : '') +\n        ' style=\"left:' + (t.edge === 1 ? W : px).toFixed(1) + 'px\">' + txt + '</span>');\n      return true;\n    }\n    /* priority: the two ends, then the seams, then majors, then minors */\n    out.filter(function (t) { return t.edge !== undefined; }).forEach(place);\n    out.filter(function (t) { return t.seam; }).forEach(place);\n    out.filter(function (t) { return t.maj && !t.seam && t.edge === undefined; }).forEach(place);\n    out.forEach(function (t) {\n      html.push('<span class=\"cx-r-tick\" data-maj=\"' + (t.maj ? 1 : 0) +\n        '\" data-seam=\"' + (t.seam ? 1 : 0) + '\" style=\"left:' +\n        (rx(t.y) * W).toFixed(1) + 'px\"></span>');\n    });\n    /* the break mark. The axis changes rate here and says so out loud. */\n    [e[1], e[2], e[3]].forEach(function (y) {\n      html.push('<span class=\"cx-r-brk\" style=\"left:' + (rx(y) * W).toFixed(1) +\n        'px\">⫻</span>');\n    });\n    strip.innerHTML = html.join('');\n  }\n  function rdrawBrush(bar) {\n    var tr = bar.querySelector('.ph-cx-years-track');\n    if (!tr) { return; }\n    var a = rx(REC.lo) * 100, b = rx(REC.hi) * 100;\n    tr.querySelector('.cx-r-sel').style.left = a.toFixed(3) + '%';\n    tr.querySelector('.cx-r-sel').style.width = Math.max(0, b - a).toFixed(3) + '%';\n    tr.querySelector('.cx-r-v0').style.left = '0';\n    tr.querySelector('.cx-r-v0').style.width = a.toFixed(3) + '%';\n    tr.querySelector('.cx-r-v1').style.left = b.toFixed(3) + '%';\n    tr.querySelector('.cx-r-v1').style.width = Math.max(0, 100 - b).toFixed(3) + '%';\n    var h0 = tr.querySelector('.cx-r-h0'), h1 = tr.querySelector('.cx-r-h1');\n    h0.style.left = a.toFixed(3) + '%';\n    h1.style.left = b.toFixed(3) + '%';\n    h0.setAttribute('aria-valuenow', String(Math.round(REC.lo)));\n    h0.setAttribute('aria-valuetext', ryLab(REC.lo));\n    h1.setAttribute('aria-valuenow', String(Math.round(REC.hi)));\n    h1.setAttribute('aria-valuetext', ryLab(REC.hi));\n    var seams = tr.querySelectorAll('.cx-r-seam');\n    for (var i = 0; i < seams.length; i++) {\n      seams[i].style.left = (rx(REC.SEAMS[i]) * 100).toFixed(3) + '%';\n    }\n  }\n  function rreadout(bar) {\n    var el = bar.querySelector('.ph-cx-years-now');\n    if (!el) { return; }\n    var u = bar.querySelector('.cx-r-undated');\n    if (u) {\n      u.setAttribute('data-on', REC.undated ? '1' : '0');\n      u.textContent = 'undated ' + REC.undatedN;\n      u.style.display = REC.undatedN ? '' : 'none';\n    }\n    if (rFull()) {\n      el.innerHTML = '<b>everything</b> · ' + rCount().toLocaleString() + ' records';\n      return;\n    }\n    el.innerHTML = '<b>' + ryLab(REC.lo) + ' – ' + ryLab(REC.hi) + '</b> · ' +\n      rCount().toLocaleString() + ' records' + (REC.undated ? '' : ', dated only');\n  }\n  function rpaint(full) {\n    if (!wrap) { return; }\n    var bar = wrap.querySelector('.ph-cx-years');\n    if (!bar) { return; }\n    if (full) { rdrawHist(bar); rdrawTicks(bar); }\n    rdrawBrush(bar);\n    rreadout(bar);\n  }\n  function rpaintSoon(full) {\n    if (REC.raf) { cancelAnimationFrame(REC.raf); }\n    REC.raf = requestAnimationFrame(function () { REC.raf = 0; rpaint(full); });\n  }\n  /* A record is kept when its span overlaps the brush at any point, which is\n     the only honest test once a record is allowed to be a span. Rebuilding in\n     bulk beats removing markers one at a time: the UFO layer alone is nineteen\n     thousand of them. */\n  function rapply() {\n    TIMED.forEach(function (b) {\n      var keep = b.all.filter(function (m) {\n        if (m.__a === null || m.__a === undefined) { return REC.undated; }\n        return m.__b >= REC.lo && m.__a <= REC.hi;\n      });\n      b.group.clearLayers();\n      if (b.group.addLayers) { b.group.addLayers(keep); }\n      else { keep.forEach(function (m) { b.group.addLayer(m); }); }\n    });\n  }\n  function rset(lo, hi, apply) {\n    REC.lo = Math.max(REC.min, Math.min(REC.max, Math.round(lo)));\n    REC.hi = Math.max(REC.min, Math.min(REC.max, Math.round(hi)));\n    if (REC.lo > REC.hi) { var t = REC.lo; REC.lo = REC.hi; REC.hi = t; }\n    rpaintSoon(false);\n    if (apply) { rapply(); }\n  }\n  function rbuild() {\n    var bar = document.createElement('div');\n    bar.className = 'ph-cx-years';\n    bar.innerHTML =\n      '<div class=\"ph-cx-years-hd\">' +\n        '<span class=\"cx-r-t\">The record</span>' +\n        '<span class=\"cx-r-scale\" title=\"The axis is piecewise linear with three ' +\n        'seams, at 1500, 1800 and 1947, drawn as break marks. 0.42% of the record ' +\n        'falls before 1800 but would take 93% of a linear axis, so each span is ' +\n        'given the width its interest deserves rather than its count. Bin width ' +\n        'follows the compression — a century a bar in antiquity, a year a bar ' +\n        'after 1947 — and bar height is logarithmic, because the 2000s stand ' +\n        'three orders of magnitude above the 1500s. Colours match the layer ' +\n        'legend. Records dated to a range are drawn across that range and are ' +\n        'kept whenever the brush touches any part of it.\">compressed scale · log density</span>' +\n        '<button type=\"button\" class=\"cx-r-undated\" data-on=\"1\">undated 0</button>' +\n        '<span class=\"ph-cx-years-now\">everything</span>' +\n      '</div>' +\n      '<div class=\"ph-cx-years-track\">' +\n        '<canvas class=\"cx-r-hist\" height=\"19\"></canvas>' +\n        '<span class=\"cx-r-veil cx-r-v0\"></span><span class=\"cx-r-veil cx-r-v1\"></span>' +\n        '<span class=\"cx-r-seam\"></span><span class=\"cx-r-seam\"></span><span class=\"cx-r-seam\"></span>' +\n        '<span class=\"cx-r-base\"></span><span class=\"cx-r-rail\"></span><span class=\"cx-r-sel\"></span>' +\n        '<button type=\"button\" class=\"cx-r-h cx-r-h0\" role=\"slider\" aria-label=\"Earliest year\"></button>' +\n        '<button type=\"button\" class=\"cx-r-h cx-r-h1\" role=\"slider\" aria-label=\"Latest year\"></button>' +\n      '</div>' +\n      '<div class=\"ph-cx-years-ends\"></div>';\n    bar.addEventListener('click', function (ev) { ev.stopPropagation(); });\n    var tr = bar.querySelector('.ph-cx-years-track');\n    var h0 = bar.querySelector('.cx-r-h0'), h1 = bar.querySelector('.cx-r-h1');\n    var drag = null;\n    function yAt(ev) {\n      var r = tr.getBoundingClientRect();\n      if (!r.width) { return REC.lo; }\n      return rinv((ev.clientX - r.left) / r.width);\n    }\n    /* grabbing the track anywhere moves the nearer handle, so the whole bar is\n       a target rather than two eleven-pixel dots */\n    function start(ev, which) {\n      var y = yAt(ev);\n      if (which === null) {\n        which = Math.abs(rx(y) - rx(REC.lo)) <= Math.abs(rx(y) - rx(REC.hi)) ? 0 : 1;\n      }\n      drag = which;\n      (which ? h1 : h0).setAttribute('data-drag', '1');\n      try { tr.setPointerCapture(ev.pointerId); } catch (e) { }\n      move(ev);\n    }\n    function move(ev) {\n      if (drag === null) { return; }\n      /* If the pointer was released somewhere this element never heard about —\n         capture refused, the button let go outside the map, a cancelled\n         gesture — drag would stay latched and merely hovering the bar would\n         then walk a handle about. No button down means the drag is over. */\n      if (ev.buttons === 0) { end(ev); return; }\n      var y = yAt(ev);\n      if (drag === 0) { rset(Math.min(y, REC.hi), REC.hi, false); }\n      else { rset(REC.lo, Math.max(y, REC.lo), false); }\n    }\n    function end(ev) {\n      if (drag === null) { return; }\n      (drag ? h1 : h0).removeAttribute('data-drag');\n      drag = null;\n      try { tr.releasePointerCapture(ev.pointerId); } catch (e) { }\n      rapply();\n      rpaint(false);\n    }\n    tr.addEventListener('pointerdown', function (ev) {\n      if (ev.button) { return; }\n      ev.preventDefault();\n      start(ev, ev.target === h0 ? 0 : (ev.target === h1 ? 1 : null));\n    });\n    tr.addEventListener('pointermove', move);\n    tr.addEventListener('pointerup', end);\n    tr.addEventListener('pointercancel', end);\n    tr.addEventListener('lostpointercapture', end);\n    /* keyboard: a year a press, ten with shift, the whole end with Home/End,\n       because a brush you can only drag is a brush half the readers cannot use */\n    function keys(ev, which) {\n      var step = ev.shiftKey ? 10 : 1, d = 0;\n      if (ev.key === 'ArrowLeft' || ev.key === 'ArrowDown') { d = -step; }\n      else if (ev.key === 'ArrowRight' || ev.key === 'ArrowUp') { d = step; }\n      else if (ev.key === 'PageDown') { d = -100; }\n      else if (ev.key === 'PageUp') { d = 100; }\n      else if (ev.key === 'Home') { d = which ? REC.min - REC.hi : REC.min - REC.lo; }\n      else if (ev.key === 'End') { d = which ? REC.max - REC.hi : REC.max - REC.lo; }\n      else { return; }\n      ev.preventDefault();\n      if (which) { rset(REC.lo, Math.max(REC.lo, REC.hi + d), true); }\n      else { rset(Math.min(REC.hi, REC.lo + d), REC.hi, true); }\n    }\n    h0.addEventListener('keydown', function (ev) { keys(ev, 0); });\n    h1.addEventListener('keydown', function (ev) { keys(ev, 1); });\n    bar.querySelector('.cx-r-undated').addEventListener('click', function () {\n      REC.undated = !REC.undated;\n      rapply();\n      rpaint(false);\n    });\n    return bar;\n  }\n  /* Entry point, kept under its old name because ensure() calls it every time\n     a layer finishes loading. */\n  function years() {\n    if (!wrap) { return; }\n    var bar = wrap.querySelector('.ph-cx-years');\n    rcollect();\n    if (!REC.have && !REC.undatedN) {\n      if (bar) { bar.style.display = 'none'; }\n      return;\n    }\n    if (!bar) { bar = rbuild(); wrap.appendChild(bar); }\n    bar.style.display = '';\n    if (!REC.bound) {\n      REC.bound = true;\n      if (window.ResizeObserver) {\n        new window.ResizeObserver(function () { rpaintSoon(true); }).observe(bar);\n      } else {\n        window.addEventListener('resize', function () { rpaintSoon(true); });\n      }\n    }\n    /* a layer arriving while the brush is narrowed has to be filtered too */\n    if (!rFull()) { rapply(); }\n    rpaint(true);\n  }\n  function teardown() {\n    if (map) { try { map.remove(); } catch (e) { } map = null; }\n    groups = {}; loading = {}; TIMED = [];\n    REC.lo = null; REC.hi = null; REC.undated = true; REC.per = {}; REC.keys = [];\n    REC.undatedN = 0; REC.have = false; REC.bound = false;\n    var el = document.querySelector('.ph-cx-wrap');\n    if (el) { el.remove(); }\n    wrap = null;\n  }\n  function onRoute() { return ROUTE.test(location.pathname); }\n  function tick() {\n    if (!onRoute()) { if (wrap) { teardown(); } return; }\n    if (wrap) { return; }\n    if (!document.querySelector('#main-outlet')) { return; }\n    sheet(LEAFLET_CSS); sheet(MC_CSS);\n    script(LEAFLET_JS)\n      .then(function () { return script(MC_JS); })\n      .then(function () { if (onRoute() && !wrap) { build(); } })\n      .catch(function () { });\n  }\n  var pend = 0;\n  function kick() {\n    if (pend) { return; }\n    pend = setTimeout(function () { pend = 0; try { tick(); } catch (e) { } }, 320);\n  }\n  setInterval(kick, 1200);\n  kick();\n})();\n\n/* --- was script id=\"ph-geo-urls\" --- */\nwindow.PH_GEO_URLS = {\n  \"phgeovolcanoes\": \"/uploads/default/original/2X/3/3b4a288f66119f06b54f89afca68ffb0ef080776.js\",\n  \"phgeoplates\": \"/uploads/default/original/2X/7/7aa98509de9f009fb1d2c561073e03378a85a750.js\",\n  \"phgeofaults\": \"/uploads/default/original/2X/9/932756204f4ae5665c59399ac6942941d0248fb2.js\",\n  \"phgeocountries\": \"/uploads/default/original/2X/7/707359e1479a698fc4d444a2f39cde14e4e39318.js\"\n};\n\n/* --- was script id=\"ph-cx-urls\" --- */\nwindow.PH_CX_URLS = {\n  \"phcryptids\": \"/uploads/default/original/2X/3/3549916530f33cf92ba7bbaf5f84bdebf39a75a4.js\",\n  \"phsharks\": \"/uploads/default/original/2X/3/3c398f92a996fdfa301c69a76c1f9c4cf5d21f56.js\",\n  \"phufo\": \"/uploads/default/original/2X/0/0b9b87c3835ad37ec78eb293e75c9a10993fec4b.js\",\n  \"phgeobigfoot\": \"/uploads/default/original/2X/d/dfe400ee8b5de79e10301b2180b2f8dc26424db1.js\",\n  \"phufod0\": \"/uploads/default/original/2X/7/7746b771c6724c15607f5921b779ca75e17a1126.js\",\n  \"phufod1\": \"/uploads/default/original/2X/0/0dc63a40009e681c7e2bfe141b289a4391ae9a94.js\",\n  \"phufod2\": \"/uploads/default/original/2X/f/f110d65f8757f0fec0877de28339a9a65cc37e56.js\",\n  \"phufod3\": \"/uploads/default/original/2X/d/d722b6c5d0cee1db70967221eeaf3d817f48935b.js\",\n  \"phufod4\": \"/uploads/default/original/2X/4/4197b120d7c6cfed4cd9a9f0b706e068be4dacb8.js\",\n  \"phufod5\": \"/uploads/default/original/2X/7/75b278484c4aeb1070596be4cecb6bc78ffb6949.js\",\n  \"phufod6\": \"/uploads/default/original/2X/e/ebb9d41ec27a706ae41dbf62b62a424129223ac1.js\",\n  \"phufod7\": \"/uploads/default/original/2X/5/5d2ca4eae4665e920810962505bce56ff2ac4f22.js\"\n};\n\n/* --- was script id=\"ph-world-geo\" --- */\n/* PH WORLD GEO LAYERS v1\n   Adds the standing layers to the Around the World map: every Holocene volcano,\n   the plate boundaries, the major named faults, country colouring, and the\n   shark attack record, which moved here from the Cryptid Atlas because it is a\n   log of real incidents rather than a cryptid.\n\n   Getting hold of Grok's map instance is the only awkward part. Leaflet keeps\n   no public registry and a container element carries no back reference, so the\n   only reliable way in is to be there before the map is built. This defines a\n   setter for window.L, so whenever Leaflet lands the init hook is installed\n   first, and every map whose container is .ph-wv-map is captured. If Leaflet is\n   already present the hook goes on immediately, which covers a warm route. */\n(function () {\n  if (window.__phWorldGeo) { return; }\n  window.__phWorldGeo = 1;\n\n  var GROUPS = {}, LOADING = {};\n  var LAYERS = [\n    /* on by default: everything except the three heaviest standing layers */\n    { k: 'geovolc', n: 'All volcanoes', icon: '🌋', asset: 'phgeovolcanoes' },\n    { k: 'geoplates', n: 'Plate boundaries', icon: '➰', asset: 'phgeoplates', on: true },\n    { k: 'geofaults', n: 'Fault lines', icon: '⚡', asset: 'phgeofaults' },\n    { k: 'geosharks', n: 'Historical shark attacks', icon: '🦈', asset: 'phsharks' },\n    { k: 'geosharksnew', n: 'Recent shark attacks', icon: '🦈', asset: null, on: true }\n  ];\n\n  function hook(L) {\n    if (!L || !L.Map || L.Map.__phGeoHooked) { return; }\n    L.Map.__phGeoHooked = 1;\n    L.Map.addInitHook(function () {\n      var el = this.getContainer && this.getContainer();\n      /* The standing geo layers belong to the disaster map. Declining to\n         capture the ports map is the whole gate: with no map reference\n         this block adds no layers and no legend rows. */\n      var wantGeo = !window.phWvMode || window.phWvMode() === 'watch';\n      if (el && el.classList && el.classList.contains('ph-wv-map') && wantGeo) { window.__phWorldMap = this; }\n    });\n  }\n  if (window.L) { hook(window.L); }\n  else {\n    try {\n      var _L;\n      Object.defineProperty(window, 'L', {\n        configurable: true,\n        get: function () { return _L; },\n        set: function (v) { _L = v; try { hook(v); } catch (e) { } }\n      });\n    } catch (e) { }\n  }\n\n  function script(src) {\n    return new Promise(function (res, rej) {\n      var have = document.querySelector('script[data-wg-src=\"' + src + '\"]');\n      if (have) { if (have.__done) { res(); } else { have.addEventListener('load', function () { res(); }); } return; }\n      var s = document.createElement('script');\n      s.src = src; s.async = true; s.setAttribute('data-wg-src', src);\n      s.onload = function () { s.__done = 1; res(); };\n      s.onerror = function () { rej(new Error('load failed')); };\n      document.head.appendChild(s);\n    });\n  }\n  /* phsharks was uploaded with the Briny Deep batch, so it sits in the cryptid\n     manifest rather than the world one. Look in both rather than shuffling the\n     asset between manifests. */\n  function asset(name) {\n    var u = (window.PH_GEO_URLS || {})[name] || (window.PH_CX_URLS || {})[name];\n    if (!u) { return Promise.reject(new Error('no url for ' + name)); }\n    return script(u);\n  }\n  function esc(s) {\n    return String(s === null || s === undefined ? '' : s)\n      .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n  }\n  function chip(t, cls) { return t ? '<span class=\"ph-cx-chip' + (cls ? ' ' + cls : '') + '\">' + esc(t) + '</span>' : ''; }\n  function fld(l, v) { return v ? '<div class=\"ph-cx-field\"><b>' + esc(l) + '</b>' + esc(v) + '</div>' : ''; }\n  function pop(icon, kind, title, body) {\n    return '<div class=\"ph-cx-pop\"><div class=\"ph-cx-pop-hd\">' +\n      '<span class=\"ph-cx-pop-kind\">' + icon + ' ' + esc(kind) + '</span>' +\n      '<span class=\"ph-cx-pop-t\">' + esc(title) + '</span></div>' +\n      '<div class=\"ph-cx-pop-bd\">' + body + '</div></div>';\n  }\n\n  /* the palette for the country layer: warm house shades, five slots, and the\n     data already guarantees no two touching countries share a slot */\n  /* Five slots that actually read apart at a glance: amber brown, olive, rust,\n     the house violet, and a deep gold grey. All warm or house tokens, and the\n     data guarantees no two touching countries share a slot. */\n  var SHADES = ['#6b4a22', '#454f2c', '#5e3222', '#463a5e', '#2e2a20'];\n\n  function build(L, cfg) {\n    var G = window.PH_GEO || {};\n    if (cfg.k === 'geocountry') {\n      var d = G.countries;\n      if (!d) { return null; }\n      var g = L.geoJSON(d, {\n        style: function (f) {\n          return { fillColor: SHADES[f.properties.c % SHADES.length], fillOpacity: .5,\n            color: 'rgba(240,184,80,.35)', weight: .6 };\n        },\n        onEachFeature: function (f, lyr) {\n          lyr.bindPopup(pop('🗺', 'Country', f.properties.n,\n            fld('Code', f.properties.a)), { maxWidth: 340, minWidth: 300 });\n        }\n      });\n      return { group: g, count: d.features.length, back: true };\n    }\n    if (cfg.k === 'geoplates' || cfg.k === 'geofaults') {\n      var src = cfg.k === 'geoplates' ? G.plates : G.faults;\n      if (!src) { return null; }\n      var fault = cfg.k === 'geofaults';\n      var g2 = L.geoJSON(src, {\n        style: function () {\n          /* back to the dark map values: the burnt tones were for pale terrain */\n          return fault\n            ? { color: '#e8962e', weight: 1.2, opacity: .85 }\n            : { color: '#ef7a5e', weight: 1.9, opacity: .95 };\n        },\n        onEachFeature: function (f, lyr) {\n          var p = f.properties;\n          lyr.bindPopup(pop(fault ? '⚡' : '➰', fault ? 'Active fault' : 'Plate boundary', p.n,\n            '<div class=\"ph-cx-pop-chips\">' + chip(p.t) + chip(p.r ? p.r + ' mm a year' : '') + chip(p.c) + '</div>' +\n            fld('Source', fault ? 'GEM Global Active Faults' : 'Bird (2003), PB2002')),\n            { maxWidth: 340, minWidth: 300 });\n        }\n      });\n      return { group: g2, count: src.features.length };\n    }\n    if (cfg.k === 'geovolc') {\n      var v = G.volcanoes;\n      if (!v) { return null; }\n      var F = v.fields, iN = F.indexOf('name'), iLa = F.indexOf('lat'), iLo = F.indexOf('lon');\n      var iE = F.indexOf('elev_m'), iT = F.indexOf('type_i'), iS = F.indexOf('status_i');\n      var iR = F.indexOf('region_i'), iC = F.indexOf('country_i'), iL = F.indexOf('last_eruption');\n      var iNum = F.indexOf('gvp_number');\n      var g3 = L.layerGroup(), marks = [];\n      v.v.forEach(function (row) {\n        var m = L.marker([row[iLa], row[iLo]], { icon: volcIcon(false), keyboard: false });\n        m.__vn = String(row[iN] || '').toLowerCase();\n        m.__vla = row[iLa]; m.__vlo = row[iLo]; m.__von = false;\n        m.bindPopup(function () {\n          return pop('🌋', m.__von ? 'Volcano, erupting' : 'Volcano', row[iN],\n            '<div class=\"ph-cx-pop-chips\">' + chip(v.type[row[iT]]) +\n            chip(row[iE] ? row[iE] + ' m' : '') + chip(v.status[row[iS]]) +\n            (m.__von ? chip('erupting now', 'cx-fatal') : '') + '</div>' +\n            fld('Last known eruption', row[iL]) +\n            fld('Where', [v.region[row[iR]], v.country[row[iC]]].filter(Boolean).join(', ')) +\n            fld('Smithsonian number', row[iNum]));\n        }, { maxWidth: 340, minWidth: 300 });\n        g3.addLayer(m); marks.push(m);\n      });\n      VOLC = marks;\n      refreshEruptions();\n      return { group: g3, count: v.v.length };\n    }\n    if (cfg.k === 'geosharks') {\n      var s = window.PH_GEO.sharks;\n      if (!s) { return null; }\n      var SF = s.fields, sLa = SF.indexOf('lat'), sLo = SF.indexOf('lon');\n      function G2(row, k) { return row[SF.indexOf(k)]; }\n      /* 6,207 emoji markers all at once is too many DOM nodes for a layer that\n         is on by default, so only the ones inside the current view are\n         attached, and the set is recut whenever the map settles. */\n      var g4 = L.layerGroup(), live = [];\n      var made = s.v.map(function (row) {\n        return { la: row[sLa], lo: row[sLo], row: row, m: null };\n      });\n      function popup(row) {\n        var where = [G2(row, 'location'), G2(row, 'area'), G2(row, 'country')].filter(Boolean);\n        var fatal = G2(row, 'fatal') === 'Y';\n        return pop('🦈', 'Shark attack', where.slice(0, 2).join(', ') || G2(row, 'country'),\n          '<div class=\"ph-cx-pop-chips\">' + chip(G2(row, 'date'), 'cx-strong') + chip(G2(row, 'type')) +\n          (fatal ? chip('fatal', 'cx-fatal') : chip(G2(row, 'fatal') === 'N' ? 'survived' : 'outcome unrecorded')) +\n          chip(G2(row, 'activity')) + chip(G2(row, 'time')) +\n          chip(G2(row, 'precision') === 'exact' ? 'exact position' : G2(row, 'precision') + ' position') + '</div>' +\n          fld('Where', where.join(', ')) + fld('Victim', G2(row, 'name')) +\n          fld('Injury', G2(row, 'injury')) + fld('Shark', G2(row, 'species')) +\n          fld('Source', G2(row, 'source')));\n      }\n      function cull() {\n        var map = window.__phWorldMap;\n        if (!map || !map.hasLayer(g4)) { return; }\n        var b = map.getBounds(), shown = 0;\n        made.forEach(function (o) {\n          var inside = b.contains([o.la, o.lo]) && shown < 1400;\n          if (inside) { shown++; }\n          if (inside && !o.m) {\n            o.m = L.marker([o.la, o.lo], { icon: sharkIcon(G2(o.row, 'fatal') === 'Y'), keyboard: false });\n            o.m.bindPopup(function () { return popup(o.row); }, { maxWidth: 340, minWidth: 300 });\n            g4.addLayer(o.m);\n          } else if (!inside && o.m) {\n            g4.removeLayer(o.m); o.m = null;\n          }\n        });\n      }\n      SHARK_CULL = cull;\n      cull();\n      return { group: g4, count: s.v.length };\n    }\n    if (cfg.k === 'geosharksnew') {\n      /* Attacks reported in the past year. The record I hold ends in 2018, and\n         no free feed of new incidents can be read from the browser: GDELT and\n         the tracking sites all refuse cross-origin. So this layer reads the\n         world feed, and lights up as soon as the worker starts publishing\n         events on the sharks layer. Until then it reports nothing, the same way\n         the volcano and landslide layers already do. */\n      var g5 = L.layerGroup();\n      RECENT = g5;\n      refreshRecentSharks();\n      return { group: g5, count: 0, live: true };\n    }\n    return null;\n  }\n\n  /* Quiet volcanoes are the same emoji, drained of colour, because the point of\n     the layer is that the whole Ring of Fire is always on the map and the ones\n     that are alight stand out from it. Erupting means the live world feed is\n     reporting that volcano, matched on name first and position within half a\n     degree second. */\n  var VOLC = [], RECENT = null, SHARK_CULL = null;\n  function sharkIcon(fatal) {\n    var s = fatal ? 15 : 12;\n    return window.L.divIcon({ className: '',\n      html: '<span class=\"ph-sk' + (fatal ? ' ph-sk-f' : '') + '\">🦈</span>',\n      iconSize: [s, s], iconAnchor: [s / 2, s / 2] });\n  }\n  function refreshRecentSharks() {\n    var L2 = window.L;\n    if (!RECENT || !L2) { return; }\n    var SRC = ['/srv/world.json', 'https://piratehoard-worldstate.truemagus7.workers.dev/srv/world.json'];\n    var i = 0;\n    function attempt() {\n      if (i >= SRC.length) { return; }\n      fetch(SRC[i++], { headers: { Accept: 'application/json' }, cache: 'no-store' })\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (j) {\n          if (!j || !j.events) { attempt(); return; }\n          var year = Date.now() - 365 * 86400000;\n          var hits = j.events.filter(function (e) {\n            if (!e || e.layer !== 'sharks') { return false; }\n            var at = e.at ? new Date(e.at).getTime() : 0;\n            return !at || at >= year;\n          });\n          RECENT.clearLayers();\n          hits.forEach(function (e) {\n            var m = L2.marker([e.lat, e.lon], { icon: sharkIcon(true), keyboard: false });\n            m.bindPopup(pop('🦈', 'Shark attack, reported', e.title,\n              '<div class=\"ph-cx-pop-chips\">' + chip(e.at ? String(e.at).slice(0, 10) : '', 'cx-strong') +\n              chip('past year') + '</div>' +\n              (e.url ? '<div class=\"ph-cx-field\"><a href=\"' + e.url + '\" target=\"_blank\" rel=\"noopener noreferrer\">read the report</a></div>' : '')),\n              { maxWidth: 340, minWidth: 300 });\n            RECENT.addLayer(m);\n          });\n          count('geosharksnew', hits.length ? String(hits.length) : 'nothing reported');\n        })\n        .catch(function () { attempt(); });\n    }\n    attempt();\n  }\n  setInterval(function () { try { refreshRecentSharks(); } catch (e) { } }, 300000);\n  function volcIcon(on) {\n    var s = on ? 21 : 13;\n    return window.L.divIcon({ className: '',\n      html: '<span class=\"ph-vc' + (on ? ' ph-vc-on' : '') + '\">🌋</span>',\n      iconSize: [s, s], iconAnchor: [s / 2, s / 2] });\n  }\n  function refreshEruptions() {\n    if (!VOLC.length) { return; }\n    var SRC = ['/srv/world.json', 'https://piratehoard-worldstate.truemagus7.workers.dev/srv/world.json'];\n    var i = 0;\n    function attempt() {\n      if (i >= SRC.length) { return; }\n      fetch(SRC[i++], { headers: { Accept: 'application/json' }, cache: 'no-store' })\n        .then(function (r) { return r.ok ? r.json() : null; })\n        .then(function (j) {\n          if (!j || !j.events) { attempt(); return; }\n          var live = j.events.filter(function (e) { return e && e.layer === 'volcanoes'; });\n          VOLC.forEach(function (m) {\n            var on = live.some(function (e) {\n              var t = String(e.title || '').toLowerCase();\n              if (m.__vn && m.__vn.length > 3 && t.indexOf(m.__vn) > -1) { return true; }\n              return Math.abs(e.lat - m.__vla) < 0.5 && Math.abs(e.lon - m.__vlo) < 0.5;\n            });\n            if (on !== m.__von) { m.__von = on; m.setIcon(volcIcon(on)); m.setZIndexOffset(on ? 900 : 0); }\n          });\n        })\n        .catch(function () { attempt(); });\n    }\n    attempt();\n  }\n  setInterval(function () { try { refreshEruptions(); } catch (e) { } }, 300000);\n\n  function ensure(cfg) {\n    if (GROUPS[cfg.k]) { return Promise.resolve(GROUPS[cfg.k]); }\n    if (LOADING[cfg.k]) { return LOADING[cfg.k]; }\n    var wait = cfg.asset ? asset(cfg.asset) : Promise.resolve();\n    LOADING[cfg.k] = wait.then(function () {\n      var b = build(window.L, cfg);\n      if (!b) { throw new Error('no data'); }\n      GROUPS[cfg.k] = b;\n      return b;\n    }).catch(function (e) { LOADING[cfg.k] = null; throw e; });\n    return LOADING[cfg.k];\n  }\n\n  function count(k, text) {\n    var row = document.querySelector('[data-wg-row=\"' + k + '\"] .wg-c');\n    if (row) { row.textContent = text; }\n  }\n\n  function toggle(cfg, on) {\n    var map = window.__phWorldMap;\n    if (!map) { return; }\n    if (!on) {\n      if (GROUPS[cfg.k] && map.hasLayer(GROUPS[cfg.k].group)) { map.removeLayer(GROUPS[cfg.k].group); }\n      return;\n    }\n    count(cfg.k, 'loading');\n    ensure(cfg).then(function (b) {\n      count(cfg.k, b.count.toLocaleString());\n      var box = document.querySelector('[data-wg-box=\"' + cfg.k + '\"]');\n      if (box && box.checked) {\n        map.addLayer(b.group);\n        /* the culler only attaches markers for a group already on the map */\n        if (cfg.k === 'geosharks' && SHARK_CULL) { try { SHARK_CULL(); } catch (e) { } }\n        /* the country wash is a background, so it goes under everything else */\n        if (b.back && b.group.bringToBack) { b.group.bringToBack(); }\n      }\n    }).catch(function () {\n      count(cfg.k, 'no data');\n      var box = document.querySelector('[data-wg-box=\"' + cfg.k + '\"]');\n      if (box) { box.checked = false; }\n    });\n  }\n\n  /* The rows are added to Grok's own layers panel, and carry data-ph-layer as\n     well as our own attribute so the existing Deselect All control, which\n     selects on [data-ph-layer], picks them up without being touched. */\n  function mount() {\n    if (!window.__phWorldMap) { return; }\n    var boxes = document.querySelectorAll('.ph-wv-panel input[data-ph-layer]');\n    if (!boxes.length) { return; }\n    var panel = boxes[0].closest('.ph-wv-panel');\n    var body = panel && (panel.querySelector('.ph-wv-panel-bd') || panel);\n    if (!body || body.querySelector('[data-wg-row]')) { return; }\n    var host = boxes[0].closest('label') ? boxes[0].closest('label').parentElement : body;\n    var allBtn = body.querySelector('.ph-wv-allbtn');\n\n    LAYERS.forEach(function (cfg) {\n      var row = document.createElement('label');\n      row.setAttribute('data-wg-row', cfg.k);\n      row.setAttribute('data-ph-status', 'ok');\n      row.innerHTML = '<input type=\"checkbox\" data-ph-layer=\"' + cfg.k + '\" data-wg-box=\"' + cfg.k + '\"' +\n        (cfg.on ? ' checked' : '') + '>' +\n        '<i class=\"ph-wv-ico\">' + cfg.icon + '</i>' + esc(cfg.n) +\n        '<span class=\"wg-c\" style=\"font-size:10px;opacity:.75;margin-left:auto\"></span>';\n      row.querySelector('input').addEventListener('change', function (ev) {\n        toggle(cfg, ev.target.checked);\n      });\n      host.appendChild(row);\n      if (cfg.on) { toggle(cfg, true); }\n    });\n    if (allBtn && allBtn.parentElement === body) { body.appendChild(allBtn); }\n  }\n\n  var wired = 0;\n  function wireCull() {\n    if (wired || !window.__phWorldMap) { return; }\n    wired = 1;\n    window.__phWorldMap.on('moveend zoomend', function () {\n      if (SHARK_CULL) { try { SHARK_CULL(); } catch (e) { } }\n    });\n  }\n  var pend = 0;\n  function kick() {\n    if (pend) { return; }\n    pend = setTimeout(function () { pend = 0; try { mount(); wireCull(); } catch (e) { } }, 400);\n  }\n  setInterval(kick, 1500);\n  kick();\n})();\n"],"mappings":"AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY;EACX,IAAIA,MAAM,CAACC,gBAAgB,EAAE;IAAE;EAAQ;EACvCD,MAAM,CAACC,gBAAgB,GAAG,CAAC;EAC3B;EACA,IAAIC,KAAK,GAAG;IAAEC,IAAI,EAAE,SAAAA,CAAUC,CAAC,EAAE;MAC/B,OAAO,oDAAoD,CAACD,IAAI,CAACC,CAAC,CAAC,IAC9D,gCAAgC,CAACD,IAAI,CAACC,CAAC,CAAC;IAC/C;EAAE,CAAC;EACH,IAAIC,UAAU,GAAG,iEAAiE;EAClF,IAAIC,WAAW,GAAG,kEAAkE;EACpF,IAAIC,KAAK,GAAG,6FAA6F;EACzG,IAAIC,MAAM,GAAG,sFAAsF;EACnG,IAAIC,KAAK,GAAG,6GAA6G;EACzH,IAAIC,GAAG,GAAG,IAAI;IAAEC,IAAI,GAAG,IAAI;IAAEC,MAAM,GAAG,CAAC,CAAC;IAAEC,OAAO,GAAG,CAAC,CAAC;EACtD,SAASC,IAAIA,CAAA,EAAG;IAAE,OAAOd,MAAM,CAACe,UAAU,IAAI,CAAC,CAAC;EAAE;EAClD;AACF;AACA;AACA;EACE,IAAIC,MAAM,GAAG,CACX;IAAEC,CAAC,EAAE,KAAK;IAAEC,CAAC,EAAE,eAAe;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,OAAO;IAAEC,EAAE,EAAE;EAAM,CAAC,EACvE;IAAEJ,CAAC,EAAE,YAAY;IAAEC,CAAC,EAAE,kBAAkB;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,YAAY;IAAED,EAAE,EAAE;EAAK,CAAC,EACxG;IAAEJ,CAAC,EAAE,SAAS;IAAEC,CAAC,EAAE,mBAAmB;IAAEC,IAAI,EAAE,0FAA0F;IAAEC,KAAK,EAAE,cAAc;IAAEC,EAAE,EAAE;EAAM,CAAC,EAC5K;IAAEJ,CAAC,EAAE,MAAM;IAAEC,CAAC,EAAE,gBAAgB;IAAEC,IAAI,EAAE,GAAG;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,MAAM;IAAED,EAAE,EAAE;EAAK,CAAC,EACzF;IAAEJ,CAAC,EAAE,UAAU;IAAEC,CAAC,EAAE,WAAW;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,UAAU;IAAED,EAAE,EAAE;EAAK,CAAC,EAC7F;IAAEJ,CAAC,EAAE,UAAU;IAAEC,CAAC,EAAE,mBAAmB;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,UAAU;IAAED,EAAE,EAAE;EAAK,CAAC,EACrG;IAAEJ,CAAC,EAAE,QAAQ;IAAEC,CAAC,EAAE,yBAAyB;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,QAAQ;IAAED,EAAE,EAAE;EAAK,CAAC,EACvG;IAAEJ,CAAC,EAAE,QAAQ;IAAEC,CAAC,EAAE,iBAAiB;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,YAAY;IAAEE,GAAG,EAAE,QAAQ;IAAED,EAAE,EAAE;EAAK,CAAC,CAChG;EACD,SAASE,KAAKA,CAACN,CAAC,EAAE;IAAE,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,MAAM,CAACS,MAAM,EAAED,CAAC,EAAE,EAAE;MAAE,IAAIR,MAAM,CAACQ,CAAC,CAAC,CAACP,CAAC,KAAKA,CAAC,EAAE;QAAE,OAAOD,MAAM,CAACQ,CAAC,CAAC;MAAE;IAAE;IAAE,OAAO,IAAI;EAAE;EAC1H;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIE,MAAM,GAAG;IACXC,QAAQ,EAAE,GAAG;IAAEC,QAAQ,EAAE,GAAG;IAAEC,OAAO,EAAE,IAAI;IAC3CC,qBAAqB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;IAAEC,yBAAyB,EAAE,CAAC,EAAE,EAAE,GAAG;EACtE,CAAC;EACD,IAAIC,KAAK,GAAG,EAAE;EACd,SAASC,MAAMA,CAACC,GAAG,EAAE;IACnB,OAAO,IAAIC,OAAO,CAAC,UAAUC,GAAG,EAAEC,GAAG,EAAE;MACrC,IAAIC,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,sBAAsB,GAAGN,GAAG,GAAG,IAAI,CAAC;MACtE,IAAII,IAAI,EAAE;QAAE,IAAIA,IAAI,CAACG,MAAM,EAAE;UAAEL,GAAG,CAAC,CAAC;QAAE,CAAC,MAAM;UAAEE,IAAI,CAACI,gBAAgB,CAAC,MAAM,EAAE,YAAY;YAAEN,GAAG,CAAC,CAAC;UAAE,CAAC,CAAC;QAAE;QAAE;MAAQ;MAChH,IAAIO,CAAC,GAAGJ,QAAQ,CAACK,aAAa,CAAC,QAAQ,CAAC;MACxCD,CAAC,CAACT,GAAG,GAAGA,GAAG;MAAES,CAAC,CAACE,KAAK,GAAG,IAAI;MAAEF,CAAC,CAACG,YAAY,CAAC,aAAa,EAAEZ,GAAG,CAAC;MAC/DS,CAAC,CAACI,MAAM,GAAG,YAAY;QAAEJ,CAAC,CAACF,MAAM,GAAG,CAAC;QAAEL,GAAG,CAAC,CAAC;MAAE,CAAC;MAC/CO,CAAC,CAACK,OAAO,GAAG,YAAY;QAAEX,GAAG,CAAC,IAAIY,KAAK,CAAC,iBAAiB,GAAGf,GAAG,CAAC,CAAC;MAAE,CAAC;MACpEK,QAAQ,CAACW,IAAI,CAACC,WAAW,CAACR,CAAC,CAAC;IAC9B,CAAC,CAAC;EACJ;EACA,SAASS,KAAKA,CAACC,IAAI,EAAE;IACnB,IAAId,QAAQ,CAACC,aAAa,CAAC,qBAAqB,GAAGa,IAAI,GAAG,IAAI,CAAC,EAAE;MAAE;IAAQ;IAC3E,IAAIC,CAAC,GAAGf,QAAQ,CAACK,aAAa,CAAC,MAAM,CAAC;IACtCU,CAAC,CAACC,GAAG,GAAG,YAAY;IAAED,CAAC,CAACD,IAAI,GAAGA,IAAI;IAAEC,CAAC,CAACR,YAAY,CAAC,cAAc,EAAEO,IAAI,CAAC;IACzEd,QAAQ,CAACW,IAAI,CAACC,WAAW,CAACG,CAAC,CAAC;EAC9B;EACA,SAASlC,KAAKA,CAACoC,IAAI,EAAE;IACnB,IAAIC,CAAC,GAAG3C,IAAI,CAAC,CAAC,CAAC0C,IAAI,CAAC;IACpB,IAAI,CAACC,CAAC,EAAE;MAAE,OAAOtB,OAAO,CAACuB,MAAM,CAAC,IAAIT,KAAK,CAAC,aAAa,GAAGO,IAAI,CAAC,CAAC;IAAE;IAClE,OAAOvB,MAAM,CAACwB,CAAC,CAAC;EAClB;EACA,SAASE,GAAGA,CAAChB,CAAC,EAAE;IACd,OAAOiB,MAAM,CAACjB,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKkB,SAAS,GAAG,EAAE,GAAGlB,CAAC,CAAC,CAClDmB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;EAC/F;EACA,SAASC,IAAIA,CAACC,CAAC,EAAEC,GAAG,EAAE;IAAE,OAAOD,CAAC,GAAG,yBAAyB,IAAIC,GAAG,GAAG,GAAG,GAAGA,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,GAAGN,GAAG,CAACK,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE;EAAE;EACxH,SAASE,KAAKA,CAACC,KAAK,EAAEC,GAAG,EAAE;IAAE,OAAOA,GAAG,GAAG,8BAA8B,GAAGT,GAAG,CAACQ,KAAK,CAAC,GAAG,MAAM,GAAGR,GAAG,CAACS,GAAG,CAAC,GAAG,QAAQ,GAAG,EAAE;EAAE;EAC3H,SAASC,IAAIA,CAACC,GAAG,EAAEH,KAAK,EAAE;IACxB,IAAI,CAACG,GAAG,EAAE;MAAE,OAAO,EAAE;IAAE;IACvB,OAAO,oCAAoC,GAAGX,GAAG,CAACW,GAAG,CAAC,GAAG,8CAA8C,GAAGX,GAAG,CAACQ,KAAK,IAAI,iBAAiB,CAAC,GAAG,YAAY;EAC1J;EACA,SAASI,KAAKA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAE;IAC9C,OAAO,mDAAmD,GACxD,+BAA+B,GAAGH,QAAQ,GAAG,GAAG,GAAGb,GAAG,CAACc,QAAQ,CAAC,GAAG,SAAS,GAC5E,4BAA4B,GAAGd,GAAG,CAACe,KAAK,CAAC,GAAG,eAAe,GAC3D,4BAA4B,GAAGC,IAAI,GAAG,cAAc;EACxD;EACA,SAASC,UAAUA,CAACC,CAAC,EAAEV,KAAK,EAAE;IAC5B,OAAO,iFAAiF,GACtFW,kBAAkB,CAACD,CAAC,CAAC,GAAG,8CAA8C,GAAGlB,GAAG,CAACQ,KAAK,CAAC,GAAG,YAAY;EACtG;EACA,SAASY,YAAYA,CAACC,CAAC,EAAEC,GAAG,EAAE;IAC5B,IAAIC,KAAK,GAAG,CAACnB,IAAI,CAACiB,CAAC,CAACG,CAAC,EAAE,WAAW,CAAC,EAAEpB,IAAI,CAACiB,CAAC,CAACI,GAAG,CAAC,EAAErB,IAAI,CAACiB,CAAC,CAACK,CAAC,CAAC,EAAEtB,IAAI,CAACiB,CAAC,CAAC/D,CAAC,CAAC,EAAE8C,IAAI,CAACiB,CAAC,CAACM,CAAC,CAAC,EAAEvB,IAAI,CAACiB,CAAC,CAAChB,CAAC,CAAC,EAC1FD,IAAI,CAACiB,CAAC,CAAC5E,CAAC,KAAK,OAAO,GAAG,gBAAgB,GAAI4E,CAAC,CAAC5E,CAAC,GAAG4E,CAAC,CAAC5E,CAAC,GAAG,WAAW,GAAG,EAAG,CAAC,CAAC,CAACmF,IAAI,CAAC,EAAE,CAAC;IACrF,IAAIZ,IAAI,GAAG,+BAA+B,GAAGO,KAAK,GAAG,QAAQ,GAC3DhB,KAAK,CAAC,OAAO,EAAEc,CAAC,CAACQ,EAAE,CAAC,GAAGtB,KAAK,CAAC,SAAS,EAAEc,CAAC,CAACS,CAAC,CAAC,GAAGvB,KAAK,CAAC,cAAc,EAAEc,CAAC,CAACxD,CAAC,CAAC,GACzE,6BAA6B,GAAGmC,GAAG,CAACqB,CAAC,CAACU,CAAC,CAAC,GAAG,QAAQ,GACnDxB,KAAK,CAAC,QAAQ,EAAEc,CAAC,CAACrC,CAAC,CAAC,GAAG0B,IAAI,CAACW,CAAC,CAACvB,CAAC,CAAC,GAChCmB,UAAU,CAACI,CAAC,CAAC9D,CAAC,GAAG,GAAG,IAAI8D,CAAC,CAACQ,EAAE,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;IAC1D,OAAOjB,KAAK,CAACU,GAAG,CAAC9D,IAAI,EAAE8D,GAAG,CAAC/D,CAAC,EAAE8D,CAAC,CAAC9D,CAAC,EAAEyD,IAAI,CAAC;EAC1C;EACA,SAASgB,UAAUA,CAACC,GAAG,EAAEC,CAAC,EAAE;IAC1B,SAASC,CAACA,CAAC7E,CAAC,EAAE;MAAE,OAAO2E,GAAG,CAACC,CAAC,CAACE,OAAO,CAAC9E,CAAC,CAAC,CAAC;IAAE;IAC1C,IAAIgD,GAAG,GAAG6B,CAAC,CAAC,OAAO,CAAC;IACpB,IAAIE,IAAI,GAAG;MAAEC,CAAC,EAAE,2CAA2C;MAAEC,CAAC,EAAE,sDAAsD;MAAEC,CAAC,EAAE;IAAgC,CAAC;IAC5J,IAAIC,KAAK,GAAG,CAACN,CAAC,CAAC,QAAQ,CAAC,EAAEA,CAAC,CAAC,OAAO,CAAC,CAAC,CAACO,MAAM,CAACC,OAAO,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC;IAChE,IAAIgB,GAAG,GAAGT,CAAC,CAAC,QAAQ,CAAC;IACrB,IAAInB,IAAI,GAAG,+BAA+B,GAAGZ,IAAI,CAAC+B,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG/B,IAAI,CAAC,QAAQ,GAAGE,GAAG,CAAC,GAC9FF,IAAI,CAAC+B,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG/B,IAAI,CAACqC,KAAK,CAAC,GAAG,QAAQ,GAC1ClC,KAAK,CAAC,gBAAgB,EAAE8B,IAAI,CAAC/B,GAAG,CAAC,IAAI,EAAE,CAAC,GAAGC,KAAK,CAAC,UAAU,EAAEkC,KAAK,CAAC,IAClEG,GAAG,GAAGlC,IAAI,CAAC,6CAA6C,GAAGkC,GAAG,EAAE,4BAA4B,GAAGA,GAAG,CAAC,GAAG,EAAE,CAAC,GAC1G3B,UAAU,CAAC,mBAAmB,GAAGwB,KAAK,GAAG,GAAG,IAAIN,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACvF,OAAOvB,KAAK,CAAC,0FAA0F,EAAE,kBAAkB,EAAEuB,CAAC,CAAC,OAAO,CAAC,IAAK,SAAS,GAAGS,GAAI,EAAE5B,IAAI,CAAC;EACrK;EACA,SAAS6B,QAAQA,CAACZ,GAAG,EAAEC,CAAC,EAAE;IACxB,SAASC,CAACA,CAAC7E,CAAC,EAAE;MAAE,OAAO2E,GAAG,CAACC,CAAC,CAACE,OAAO,CAAC9E,CAAC,CAAC,CAAC;IAAE;IAC1C,IAAIwF,KAAK,GAAGX,CAAC,CAAC,OAAO,CAAC;IACtB,IAAIpB,KAAK,GAAG,CAACoB,CAAC,CAAC,UAAU,CAAC,EAAEA,CAAC,CAAC,MAAM,CAAC,EAAEA,CAAC,CAAC,SAAS,CAAC,CAAC,CAACO,MAAM,CAACC,OAAO,CAAC,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACnB,IAAI,CAAC,IAAI,CAAC,IAAIO,CAAC,CAAC,SAAS,CAAC;IAC3G,IAAInB,IAAI,GAAG,+BAA+B,GAAGZ,IAAI,CAAC+B,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG/B,IAAI,CAAC+B,CAAC,CAAC,MAAM,CAAC,CAAC,IACxFW,KAAK,KAAK,GAAG,GAAG1C,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAI0C,KAAK,KAAK,GAAG,GAAG1C,IAAI,CAAC,UAAU,CAAC,GAAGA,IAAI,CAAC,oBAAoB,CAAE,CAAC,GAC7GA,IAAI,CAAC+B,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG/B,IAAI,CAAC+B,CAAC,CAAC,MAAM,CAAC,CAAC,GACrC/B,IAAI,CAAC+B,CAAC,CAAC,WAAW,CAAC,KAAK,OAAO,GAAG,gBAAgB,GAAGA,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,QAAQ,GAC7F5B,KAAK,CAAC,OAAO,EAAE,CAAC4B,CAAC,CAAC,UAAU,CAAC,EAAEA,CAAC,CAAC,MAAM,CAAC,EAAEA,CAAC,CAAC,SAAS,CAAC,CAAC,CAACO,MAAM,CAACC,OAAO,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC,CAAC,GACnFrB,KAAK,CAAC,QAAQ,EAAE4B,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG5B,KAAK,CAAC,QAAQ,EAAE4B,CAAC,CAAC,QAAQ,CAAC,CAAC,GACzD5B,KAAK,CAAC,OAAO,EAAE4B,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG5B,KAAK,CAAC,QAAQ,EAAE4B,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7D,OAAOvB,KAAK,CAAC,IAAI,EAAE,cAAc,EAAEG,KAAK,EAAEC,IAAI,CAAC;EACjD;EACA,SAASgC,WAAWA,CAACC,EAAE,EAAEf,CAAC,EAAEgB,MAAM,EAAE;IAClC,SAASf,CAACA,CAAC7E,CAAC,EAAE;MAAE,OAAO2F,EAAE,CAACf,CAAC,CAACE,OAAO,CAAC9E,CAAC,CAAC,CAAC;IAAE;IACzC,IAAI6F,KAAK,GAAG,CAAChB,CAAC,CAAC,OAAO,CAAC,EAAEA,CAAC,CAAC,OAAO,CAAC,EAAEA,CAAC,CAAC,SAAS,CAAC,CAAC,CAACO,MAAM,CAACC,OAAO,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC;IAC7E,IAAIrE,CAAC,GAAG4E,CAAC,CAAC,SAAS,CAAC;IACpB,IAAIiB,IAAI,GAAGjB,CAAC,CAAC,YAAY,CAAC,IAAIA,CAAC,CAAC,WAAW,CAAC,GACvCA,CAAC,CAAC,YAAY,CAAC,KAAKA,CAAC,CAAC,WAAW,CAAC,GAAGlC,MAAM,CAACkC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAGA,CAAC,CAAC,YAAY,CAAC,GAAG,MAAM,GAAGA,CAAC,CAAC,WAAW,CAAC,GAAI,EAAE;IACnH,IAAInB,IAAI,GAAG,+BAA+B,GAAGZ,IAAI,CAAC7C,CAAC,IAAIA,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,UAAU,CAAC,EAAE,WAAW,CAAC,GACpG6C,IAAI,CAACgD,IAAI,CAAC,GAAGhD,IAAI,CAAC,SAAS,IAAI8C,MAAM,CAACf,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,QAAQ,GAC7E,uFAAuF,GACvFlB,UAAU,CAAC,eAAe,GAAGkC,KAAK,EAAE,kBAAkB,CAAC;IACzD,OAAOvC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAEuC,KAAK,EAAEnC,IAAI,CAAC;EAClD;EACA,SAASqC,UAAUA,CAACC,IAAI,EAAEJ,MAAM,EAAE;IAChC,IAAI,CAACI,IAAI,IAAI,CAACA,IAAI,CAACxF,MAAM,EAAE;MAAE,OAAO,kEAAkE;IAAE;IACxG,IAAIyF,GAAG,GAAG,EAAE;IACZ,KAAK,IAAI1F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyF,IAAI,CAACxF,MAAM,EAAED,CAAC,EAAE,EAAE;MACpC,IAAI2F,CAAC,GAAGF,IAAI,CAACzF,CAAC,CAAC;MACf0F,GAAG,CAACE,IAAI,CAAC,iDAAiD,GAAGzD,GAAG,CAACwD,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAC5ExD,GAAG,CAACkD,MAAM,CAACM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAGxD,GAAG,CAACwD,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,GAC3E,6BAA6B,GAAGxD,GAAG,CAACwD,CAAC,CAAC,CAAC,CAAC,IAAI,2BAA2B,CAAC,GAAG,cAAc,CAAC;IAC9F;IACA,OAAOD,GAAG,CAAC3B,IAAI,CAAC,EAAE,CAAC;EACrB;EACA,SAAS8B,GAAGA,CAAClG,IAAI,EAAEmG,IAAI,EAAE;IACvB,IAAI3E,CAAC,GAAG2E,IAAI,IAAI,EAAE;IAClB,OAAOtH,MAAM,CAACuH,CAAC,CAACC,OAAO,CAAC;MAAEC,SAAS,EAAE,EAAE;MAAEC,IAAI,EAAE,2CAA2C,GAAG/E,CAAC,GAAG,MAAM,GAAGxB,IAAI,GAAG,SAAS;MACxHwG,QAAQ,EAAE,CAAChF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;MAAEiF,UAAU,EAAE,CAAC,CAACjF,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAACA,CAAC,GAAG,CAAC,IAAI,CAAC;IAAE,CAAC,CAAC;EACvE;EACA,SAASkF,OAAOA,CAAC1G,IAAI,EAAE;IACrB,OAAOnB,MAAM,CAACuH,CAAC,CAACO,kBAAkB,CAAC;MACjCC,cAAc,EAAE,IAAI;MAAEC,gBAAgB,EAAE,EAAE;MAAEC,iBAAiB,EAAE,IAAI;MAAEC,mBAAmB,EAAE,KAAK;MAC/FC,kBAAkB,EAAE,SAAAA,CAAU9C,CAAC,EAAE;QAC/B,IAAInE,CAAC,GAAGmE,CAAC,CAAC+C,aAAa,CAAC,CAAC;QACzB,IAAIjD,CAAC,GAAGjE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAIA,CAAC,GAAG,GAAG,GAAG,EAAE,GAAIA,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAI;QAC3D,OAAOlB,MAAM,CAACuH,CAAC,CAACC,OAAO,CAAC;UAAEC,SAAS,EAAE,EAAE;UACrCC,IAAI,EAAE,0CAA0C,GAAGvC,CAAC,GAAG,YAAY,GAAGA,CAAC,GAAG,MAAM,GAAGhE,IAAI,GAAG,GAAG,GAAGD,CAAC,GAAG,QAAQ;UAC5GyG,QAAQ,EAAE,CAACxC,CAAC,EAAEA,CAAC;QAAE,CAAC,CAAC;MACvB;IACF,CAAC,CAAC;EACJ;EACA,SAASkD,cAAcA,CAACpD,GAAG,EAAE;IAC3B,IAAIqD,IAAI,GAAG,CAACtI,MAAM,CAACuI,MAAM,CAACC,QAAQ,IAAI,CAAC,CAAC,EAAEC,MAAM,IAAI,CAAC,CAAC;IACtD,IAAIC,GAAG,GAAGJ,IAAI,CAACrD,GAAG,CAAC3D,GAAG,CAAC;IACvB,IAAI,CAACoH,GAAG,EAAE;MAAE,OAAO,IAAI;IAAE;IACzB,IAAI5C,CAAC,GAAG+B,OAAO,CAAC5C,GAAG,CAAC9D,IAAI,CAAC;IACzBuH,GAAG,CAACC,CAAC,CAACC,OAAO,CAAC,UAAU5D,CAAC,EAAE;MACzB,IAAI,OAAOA,CAAC,CAAC6D,GAAG,KAAK,QAAQ,IAAI,OAAO7D,CAAC,CAAC8D,GAAG,KAAK,QAAQ,EAAE;QAAE;MAAQ;MACtE,IAAIC,CAAC,GAAG/I,MAAM,CAACuH,CAAC,CAACyB,MAAM,CAAC,CAAChE,CAAC,CAAC6D,GAAG,EAAE7D,CAAC,CAAC8D,GAAG,CAAC,EAAE;QAAE3H,IAAI,EAAEkG,GAAG,CAACpC,GAAG,CAAC9D,IAAI,EAAE,EAAE;MAAE,CAAC,CAAC;MACpE4H,CAAC,CAACE,SAAS,CAAC,YAAY;QAAE,OAAOlE,YAAY,CAACC,CAAC,EAAEC,GAAG,CAAC;MAAE,CAAC,EAAEvD,MAAM,CAAC;MACjEwH,MAAM,CAACH,CAAC,EAAE9D,GAAG,CAAChE,CAAC,EAAEkI,KAAK,CAACnE,CAAC,CAACG,CAAC,CAAC,IAAIgE,KAAK,CAACnE,CAAC,CAACI,GAAG,CAAC,CAAC;MAC5CU,CAAC,CAACsD,QAAQ,CAACL,CAAC,CAAC;IACf,CAAC,CAAC;IACF,OAAO;MAAEM,KAAK,EAAEvD,CAAC;MAAEwD,KAAK,EAAEZ,GAAG,CAACC,CAAC,CAAClH;IAAO,CAAC;EAC1C;EACA,SAAS8H,YAAYA,CAACtE,GAAG,EAAE;IACzB,IAAIE,CAAC,GAAGnF,MAAM,CAACuI,MAAM,CAACiB,OAAO;IAC7B,IAAI,CAACrE,CAAC,EAAE;MAAE,OAAO,IAAI;IAAE;IACvB,IAAIU,CAAC,GAAGV,CAAC,CAACsE,MAAM;MAAE3D,CAAC,GAAG+B,OAAO,CAAC5C,GAAG,CAAC9D,IAAI,CAAC;IACvCgE,CAAC,CAACwD,CAAC,CAACC,OAAO,CAAC,UAAUhD,GAAG,EAAE;MACzB,IAAImD,CAAC,GAAG/I,MAAM,CAACuH,CAAC,CAACyB,MAAM,CAAC,CAACpD,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAAEzE,IAAI,EAAEkG,GAAG,CAACpC,GAAG,CAAC9D,IAAI,EAAE,EAAE;MAAE,CAAC,CAAC;MACtE4H,CAAC,CAACE,SAAS,CAAC,YAAY;QAAE,OAAOtD,UAAU,CAACC,GAAG,EAAEC,CAAC,CAAC;MAAE,CAAC,EAAEnE,MAAM,CAAC;MAC/DwH,MAAM,CAACH,CAAC,EAAE9D,GAAG,CAAChE,CAAC,EAAEkI,KAAK,CAACvD,GAAG,CAACC,CAAC,CAACE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MAC/CD,CAAC,CAACsD,QAAQ,CAACL,CAAC,CAAC;IACf,CAAC,CAAC;IACF,OAAO;MAAEM,KAAK,EAAEvD,CAAC;MAAEwD,KAAK,EAAEnE,CAAC,CAACwD,CAAC,CAAClH;IAAO,CAAC;EACxC;EACA,SAASiI,UAAUA,CAACzE,GAAG,EAAE;IACvB,IAAIE,CAAC,GAAGnF,MAAM,CAACuI,MAAM,CAACoB,MAAM;IAC5B,IAAI,CAACxE,CAAC,EAAE;MAAE,OAAO,IAAI;IAAE;IACvB,IAAIU,CAAC,GAAGV,CAAC,CAACsE,MAAM;MAAE3D,CAAC,GAAG+B,OAAO,CAAC5C,GAAG,CAAC9D,IAAI,CAAC;MAAEyI,EAAE,GAAG/D,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;MAAE8D,EAAE,GAAGhE,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;IACrF,IAAI+D,EAAE,GAAGjE,CAAC,CAACE,OAAO,CAAC,MAAM,CAAC;MAAEgE,EAAE,GAAGlE,CAAC,CAACE,OAAO,CAAC,MAAM,CAAC;IAClDZ,CAAC,CAACwD,CAAC,CAACC,OAAO,CAAC,UAAUhD,GAAG,EAAE;MACzB,IAAImD,CAAC,GAAG/I,MAAM,CAACuH,CAAC,CAACyB,MAAM,CAAC,CAACpD,GAAG,CAACgE,EAAE,CAAC,EAAEhE,GAAG,CAACiE,EAAE,CAAC,CAAC,EAAE;QAAE1I,IAAI,EAAEkG,GAAG,CAACpC,GAAG,CAAC9D,IAAI,EAAE,EAAE;MAAE,CAAC,CAAC;MACxE4H,CAAC,CAACE,SAAS,CAAC,YAAY;QAAE,OAAOzC,QAAQ,CAACZ,GAAG,EAAEC,CAAC,CAAC;MAAE,CAAC,EAAEnE,MAAM,CAAC;MAC7DwH,MAAM,CAACH,CAAC,EAAE9D,GAAG,CAAChE,CAAC,EAAEkI,KAAK,CAACvD,GAAG,CAACkE,EAAE,CAAC,CAAC,IAAIX,KAAK,CAACvD,GAAG,CAACmE,EAAE,CAAC,CAAC,CAAC;MAClDjE,CAAC,CAACsD,QAAQ,CAACL,CAAC,CAAC;IACf,CAAC,CAAC;IACF,OAAO;MAAEM,KAAK,EAAEvD,CAAC;MAAEwD,KAAK,EAAEnE,CAAC,CAACwD,CAAC,CAAClH;IAAO,CAAC;EACxC;EACA,SAASuI,QAAQA,CAAC/E,GAAG,EAAE;IACrB,IAAIE,CAAC,GAAGnF,MAAM,CAACuI,MAAM,CAAC0B,GAAG;IACzB,IAAI,CAAC9E,CAAC,EAAE;MAAE,OAAO,IAAI;IAAE;IACvB,IAAIU,CAAC,GAAGV,CAAC,CAACsE,MAAM;MAAE5C,MAAM,GAAG1B,CAAC,CAAC+E,KAAK;MAAEpE,CAAC,GAAG+B,OAAO,CAAC5C,GAAG,CAAC9D,IAAI,CAAC;IACzD,IAAIyI,EAAE,GAAG/D,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;MAAE8D,EAAE,GAAGhE,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;MAAEoE,EAAE,GAAGtE,CAAC,CAACE,OAAO,CAAC,OAAO,CAAC;MAAEqE,EAAE,GAAGvE,CAAC,CAACE,OAAO,CAAC,SAAS,CAAC;IACpG,IAAIsE,GAAG,GAAGxE,CAAC,CAACE,OAAO,CAAC,YAAY,CAAC;MAAEuE,GAAG,GAAGzE,CAAC,CAACE,OAAO,CAAC,WAAW,CAAC;IAC/DZ,CAAC,CAACwD,CAAC,CAACC,OAAO,CAAC,UAAUhC,EAAE,EAAE;MACxB,IAAI1F,CAAC,GAAG0F,EAAE,CAACwD,EAAE,CAAC;MACd,IAAIrB,CAAC,GAAG/I,MAAM,CAACuH,CAAC,CAACyB,MAAM,CAAC,CAACpC,EAAE,CAACgD,EAAE,CAAC,EAAEhD,EAAE,CAACiD,EAAE,CAAC,CAAC,EAAE;QAAE1I,IAAI,EAAEkG,GAAG,CAACpC,GAAG,CAAC9D,IAAI,EAAED,CAAC,GAAG,EAAE,GAAG,EAAE,GAAIA,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAG;MAAE,CAAC,CAAC;MACnG6H,CAAC,CAACE,SAAS,CAAC,YAAY;QAAE,OAAOtC,WAAW,CAACC,EAAE,EAAEf,CAAC,EAAEgB,MAAM,CAAC;MAAE,CAAC,EAAEnF,MAAM,CAAC;MACvE;MACAwH,MAAM,CAACH,CAAC,EAAE9D,GAAG,CAAChE,CAAC,EAAE2F,EAAE,CAACyD,GAAG,CAAC,GAAG,CAACzD,EAAE,CAACyD,GAAG,CAAC,EAAEzD,EAAE,CAAC0D,GAAG,CAAC,IAAI1D,EAAE,CAACyD,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;MAChEtB,CAAC,CAAC1H,EAAE,CAAC,WAAW,EAAE,UAAUkJ,EAAE,EAAE;QAC9B,IAAIC,GAAG,GAAG5D,EAAE,CAACgD,EAAE,CAAC,GAAG,GAAG,GAAGhD,EAAE,CAACiD,EAAE,CAAC;QAC/B,IAAIY,EAAE,GAAG7D,EAAE,CAACuD,EAAE,CAAC;QACf,IAAIO,EAAE,GAAGH,EAAE,CAACI,KAAK,CAACC,UAAU,CAAC,CAAC;QAC9B,IAAIC,IAAI,GAAGH,EAAE,IAAIA,EAAE,CAAClI,aAAa,CAAC,iBAAiB,CAAC;QACpD,SAASsI,KAAKA,CAAA,EAAG;UACf,IAAInI,CAAC,GAAG3C,MAAM,CAACuI,MAAM,CAAC,MAAM,GAAGkC,EAAE,CAAC;UAClC,IAAI,CAAC9H,CAAC,IAAI,CAACkI,IAAI,EAAE;YAAE;UAAQ;UAC3BA,IAAI,CAACE,SAAS,GAAG/D,UAAU,CAACrE,CAAC,CAACqI,KAAK,CAACR,GAAG,CAAC,EAAE7H,CAAC,CAACuH,KAAK,IAAIrD,MAAM,CAAC;QAC9D;QACA,IAAI7G,MAAM,CAACuI,MAAM,CAAC,MAAM,GAAGkC,EAAE,CAAC,EAAE;UAAEK,KAAK,CAAC,CAAC;UAAE;QAAQ;QACnD1J,KAAK,CAAC,QAAQ,GAAGqJ,EAAE,CAAC,CAACQ,IAAI,CAACH,KAAK,CAAC,CAACI,KAAK,CAAC,YAAY;UACjD,IAAIL,IAAI,EAAE;YAAEA,IAAI,CAACE,SAAS,GAAG,uEAAuE;UAAE;QACxG,CAAC,CAAC;MACJ,CAAC,CAAC;MACFjF,CAAC,CAACsD,QAAQ,CAACL,CAAC,CAAC;IACf,CAAC,CAAC;IACF,OAAO;MAAEM,KAAK,EAAEvD,CAAC;MAAEwD,KAAK,EAAEnE,CAAC,CAACwD,CAAC,CAAClH;IAAO,CAAC;EACxC;EACA,IAAI0J,KAAK,GAAG;IAAElB,GAAG,EAAED,QAAQ;IAAER,OAAO,EAAED,YAAY;IAAEI,MAAM,EAAED,UAAU;IAAE0B,IAAI,EAAE/C,cAAc;IAC1FgD,UAAU,EAAEhD,cAAc;IAAEiD,QAAQ,EAAEjD,cAAc;IAAEkD,MAAM,EAAElD,cAAc;IAC5EmD,MAAM,EAAEnD,cAAc;IAAEoD,QAAQ,EAAEpD;EAAe,CAAC;EACpD,SAASqD,MAAMA,CAACzK,CAAC,EAAE;IACjB,IAAIL,MAAM,CAACK,CAAC,CAAC,EAAE;MAAE,OAAOkB,OAAO,CAACwJ,OAAO,CAAC/K,MAAM,CAACK,CAAC,CAAC,CAAC;IAAE;IACpD,IAAIJ,OAAO,CAACI,CAAC,CAAC,EAAE;MAAE,OAAOJ,OAAO,CAACI,CAAC,CAAC;IAAE;IACrC,IAAIgE,GAAG,GAAG1D,KAAK,CAACN,CAAC,CAAC;IAClB,IAAI,CAACgE,GAAG,EAAE;MAAE,OAAO9C,OAAO,CAACuB,MAAM,CAAC,IAAIT,KAAK,CAAC,WAAW,GAAGhC,CAAC,CAAC,CAAC;IAAE;IAC/DJ,OAAO,CAACI,CAAC,CAAC,GAAGG,KAAK,CAAC6D,GAAG,CAAC7D,KAAK,CAAC,CAAC6J,IAAI,CAAC,YAAY;MAC7CjL,MAAM,CAACuI,MAAM,GAAGvI,MAAM,CAACuI,MAAM,IAAI,CAAC,CAAC;MACnC,IAAIqD,KAAK,GAAGT,KAAK,CAAClK,CAAC,CAAC,CAACgE,GAAG,CAAC;MACzB,IAAI,CAAC2G,KAAK,EAAE;QAAE,MAAM,IAAI3I,KAAK,CAAC,cAAc,GAAGhC,CAAC,CAAC;MAAE;MACnDL,MAAM,CAACK,CAAC,CAAC,GAAG2K,KAAK;MACjBA,KAAK,CAACC,GAAG,GAAG,EAAE;MACdD,KAAK,CAACvC,KAAK,CAACyC,SAAS,CAAC,UAAU/C,CAAC,EAAE;QAAE6C,KAAK,CAACC,GAAG,CAACzE,IAAI,CAAC2B,CAAC,CAAC;MAAE,CAAC,CAAC;MAC1D/G,KAAK,CAACoF,IAAI,CAACwE,KAAK,CAAC;MACjBG,KAAK,CAAC,CAAC;MACP,OAAOH,KAAK;IACd,CAAC,CAAC,CAACV,KAAK,CAAC,UAAUlG,CAAC,EAAE;MAAEnE,OAAO,CAACI,CAAC,CAAC,GAAG,IAAI;MAAE,MAAM+D,CAAC;IAAE,CAAC,CAAC;IACtD,OAAOnE,OAAO,CAACI,CAAC,CAAC;EACnB;EACA,SAAS+K,QAAQA,CAAC/K,CAAC,EAAEgL,IAAI,EAAE;IACzB,IAAI,CAACtL,IAAI,EAAE;MAAE;IAAQ;IACrB,IAAIiF,GAAG,GAAGjF,IAAI,CAAC6B,aAAa,CAAC,kBAAkB,GAAGvB,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI2E,GAAG,EAAE;MAAEA,GAAG,CAACpD,aAAa,CAAC,OAAO,CAAC,CAAC0J,WAAW,GAAGD,IAAI;IAAE;EAC5D;EACA,SAASE,IAAIA,CAAClL,CAAC,EAAEI,EAAE,EAAE;IACnB,IAAI,CAACV,IAAI,EAAE;MAAE;IAAQ;IACrB,IAAIiF,GAAG,GAAGjF,IAAI,CAAC6B,aAAa,CAAC,kBAAkB,GAAGvB,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI2E,GAAG,EAAE;MAAEA,GAAG,CAAC9C,YAAY,CAAC,cAAc,EAAEzB,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;IAAE;EAC/D;EACA,SAAS+K,MAAMA,CAACnL,CAAC,EAAEI,EAAE,EAAE;IACrB,IAAIgL,GAAG,GAAG1L,IAAI,IAAIA,IAAI,CAAC6B,aAAa,CAAC,gBAAgB,GAAGvB,CAAC,GAAG,IAAI,CAAC;IACjE,IAAI,CAACI,EAAE,EAAE;MACP,IAAIT,MAAM,CAACK,CAAC,CAAC,IAAIP,GAAG,IAAIA,GAAG,CAAC4L,QAAQ,CAAC1L,MAAM,CAACK,CAAC,CAAC,CAACoI,KAAK,CAAC,EAAE;QAAE3I,GAAG,CAAC6L,WAAW,CAAC3L,MAAM,CAACK,CAAC,CAAC,CAACoI,KAAK,CAAC;MAAE;MAC3F0C,KAAK,CAAC,CAAC;MACP;IACF;IACAI,IAAI,CAAClL,CAAC,EAAE,IAAI,CAAC;IACbyK,MAAM,CAACzK,CAAC,CAAC,CAACgK,IAAI,CAAC,UAAUuB,CAAC,EAAE;MAC1BL,IAAI,CAAClL,CAAC,EAAE,KAAK,CAAC;MACd+K,QAAQ,CAAC/K,CAAC,EAAEuL,CAAC,CAAClD,KAAK,CAACmD,cAAc,CAAC,CAAC,CAAC;MACrC,IAAIJ,GAAG,IAAIA,GAAG,CAACK,OAAO,IAAIhM,GAAG,EAAE;QAC7BA,GAAG,CAAC0I,QAAQ,CAACoD,CAAC,CAACnD,KAAK,CAAC;QACrB;AACR;QACQ0C,KAAK,CAAC,CAAC;MACT;IACF,CAAC,CAAC,CAACb,KAAK,CAAC,YAAY;MACnBiB,IAAI,CAAClL,CAAC,EAAE,KAAK,CAAC;MAAE+K,QAAQ,CAAC/K,CAAC,EAAE,SAAS,CAAC;MACtC,IAAIoL,GAAG,EAAE;QAAEA,GAAG,CAACK,OAAO,GAAG,KAAK;MAAE;IAClC,CAAC,CAAC;EACJ;EACA,SAASC,KAAKA,CAAA,EAAG;IACf,IAAIC,MAAM,GAAGrK,QAAQ,CAACC,aAAa,CAAC,cAAc,CAAC;IACnD,IAAI,CAACoK,MAAM,IAAIrK,QAAQ,CAACC,aAAa,CAAC,aAAa,CAAC,EAAE;MAAE;IAAQ;IAChE7B,IAAI,GAAG4B,QAAQ,CAACK,aAAa,CAAC,KAAK,CAAC;IACpCjC,IAAI,CAAC8G,SAAS,GAAG,YAAY;IAC7B9G,IAAI,CAACoK,SAAS,GACZ,wDAAwD,GACxD,+BAA+B,GACzB,0EAA0E,GAChF,qFAAqF;IACvF6B,MAAM,CAACC,YAAY,CAAClM,IAAI,EAAEiM,MAAM,CAACE,iBAAiB,CAAC;IACnD,IAAIC,EAAE,GAAGpM,IAAI,CAAC6B,aAAa,CAAC,kBAAkB,CAAC;IAC/CxB,MAAM,CAAC4H,OAAO,CAAC,UAAU3D,GAAG,EAAE;MAC5B,IAAIW,GAAG,GAAGrD,QAAQ,CAACK,aAAa,CAAC,OAAO,CAAC;MACzCgD,GAAG,CAAC6B,SAAS,GAAG,YAAY;MAC5B7B,GAAG,CAAC9C,YAAY,CAAC,eAAe,EAAEmC,GAAG,CAAChE,CAAC,CAAC;MACxC2E,GAAG,CAACmF,SAAS,GAAG,sCAAsC,GAAG9F,GAAG,CAAChE,CAAC,GAAG,GAAG,IAAIgE,GAAG,CAAC5D,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GACrG,oBAAoB,GAAG4D,GAAG,CAAC9D,IAAI,GAAG,yBAAyB,GAAGwC,GAAG,CAACsB,GAAG,CAAC/D,CAAC,CAAC,GAAG,mCAAmC;MAChH6L,EAAE,CAAC5J,WAAW,CAACyC,GAAG,CAAC;IACrB,CAAC,CAAC;IACF,IAAIoH,GAAG,GAAGzK,QAAQ,CAACK,aAAa,CAAC,QAAQ,CAAC;IAC1CoK,GAAG,CAACC,IAAI,GAAG,QAAQ;IAAED,GAAG,CAACvF,SAAS,GAAG,cAAc;IAAEuF,GAAG,CAACd,WAAW,GAAG,cAAc;IACrFa,EAAE,CAAC5J,WAAW,CAAC6J,GAAG,CAAC;IACnB,IAAIE,IAAI,GAAG3K,QAAQ,CAACK,aAAa,CAAC,KAAK,CAAC;IACxCsK,IAAI,CAACzF,SAAS,GAAG,YAAY;IAC7ByF,IAAI,CAAChB,WAAW,GAAG,qJAAqJ;IACxKa,EAAE,CAAC5J,WAAW,CAAC+J,IAAI,CAAC;IACpB,IAAI3F,CAAC,GAAGvH,MAAM,CAACuH,CAAC;IAChB7G,GAAG,GAAG6G,CAAC,CAAC7G,GAAG,CAACC,IAAI,CAAC6B,aAAa,CAAC,YAAY,CAAC,EAAE;MAC5C2K,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,OAAO,EAAE,CAAC;MAAEC,OAAO,EAAE,EAAE;MACnDC,aAAa,EAAE,IAAI;MAAEC,WAAW,EAAE,KAAK;MAAEC,eAAe,EAAE;MAC1D;AACN;AACA;AACA;AACA;AACA;AACA;IACI,CAAC,CAAC;IACF;AACJ;AACA;AACA;IACI,CAAC,YAAY;MACX,SAASC,QAAQA,CAAA,EAAG;QAClB,IAAI;UACF,IAAIpI,CAAC,GAAG5E,GAAG,CAACiN,OAAO,CAAC,CAAC,CAACC,CAAC;UACvB,IAAI,CAACtI,CAAC,EAAE;YAAE;UAAQ;UAClB,IAAIuI,CAAC,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,IAAI,CAACF,IAAI,CAACG,GAAG,CAAC3I,CAAC,GAAG,GAAG,CAAC,GAAGwI,IAAI,CAACI,GAAG,CAAC,CAAC;UAC5D,IAAI,CAACC,QAAQ,CAACN,CAAC,CAAC,EAAE;YAAE;UAAQ;UAC5B,IAAInN,GAAG,CAAC0N,UAAU,CAAC,CAAC,KAAKP,CAAC,EAAE;YAAEnN,GAAG,CAAC2N,UAAU,CAACR,CAAC,CAAC;UAAE;UACjD,IAAInN,GAAG,CAAC4N,OAAO,CAAC,CAAC,GAAGT,CAAC,EAAE;YAAEnN,GAAG,CAAC6N,OAAO,CAACV,CAAC,CAAC;UAAE;QAC3C,CAAC,CAAC,OAAO7I,CAAC,EAAE,CAAE;MAChB;MACAtE,GAAG,CAACW,EAAE,CAAC,QAAQ,EAAEqM,QAAQ,CAAC;MAC1Bc,UAAU,CAACd,QAAQ,EAAE,GAAG,CAAC;IAC3B,CAAC,EAAE,CAAC;IACJ;AACJ;IACI,IAAI,OAAO1N,MAAM,CAACyO,cAAc,KAAK,UAAU,EAAE;MAC/CzO,MAAM,CAACyO,cAAc,CAAC9N,IAAI,EAAED,GAAG,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC,MAAM;MACL6G,CAAC,CAACmH,OAAO,CAACtB,IAAI,CAAC;QAAEuB,QAAQ,EAAE;MAAW,CAAC,CAAC,CAACC,KAAK,CAAClO,GAAG,CAAC;IACrD;IACA6G,CAAC,CAACsH,SAAS,CAACpO,KAAK,EAAE;MAAEqO,WAAW,EAAE,YAAY;MAAExB,OAAO,EAAE,EAAE;MAAEyB,aAAa,EAAE;IAAG,CAAC,CAAC,CAACH,KAAK,CAAClO,GAAG,CAAC;IAC5FqM,EAAE,CAACrK,gBAAgB,CAAC,QAAQ,EAAE,UAAU6H,EAAE,EAAE;MAC1C,IAAItJ,CAAC,GAAGsJ,EAAE,CAACyE,MAAM,CAACC,YAAY,IAAI1E,EAAE,CAACyE,MAAM,CAACC,YAAY,CAAC,aAAa,CAAC;MACvE,IAAI,CAAChO,CAAC,EAAE;QAAE;MAAQ;MAClBmL,MAAM,CAACnL,CAAC,EAAEsJ,EAAE,CAACyE,MAAM,CAACtC,OAAO,CAAC;MAAEvI,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IACF4I,EAAE,CAACrK,gBAAgB,CAAC,OAAO,EAAE,UAAU6H,EAAE,EAAE;MAAEA,EAAE,CAAC2E,eAAe,CAAC,CAAC;IAAE,CAAC,CAAC;IACrE,SAAS/K,KAAKA,CAAA,EAAG;MACf,IAAIgL,KAAK,GAAG,EAAE,CAACzI,KAAK,CAAC0I,IAAI,CAACzO,IAAI,CAAC0O,gBAAgB,CAAC,eAAe,CAAC,CAAC;MACjE,IAAIC,KAAK,GAAGH,KAAK,CAACI,IAAI,CAAC,UAAU/C,CAAC,EAAE;QAAE,OAAOA,CAAC,CAACE,OAAO;MAAE,CAAC,CAAC;MAC1DM,GAAG,CAACd,WAAW,GAAGoD,KAAK,GAAG,cAAc,GAAG,YAAY;MACvDtC,GAAG,CAAClK,YAAY,CAAC,cAAc,EAAEwM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IACxD;IACAtC,GAAG,CAACtK,gBAAgB,CAAC,OAAO,EAAE,UAAU6H,EAAE,EAAE;MAC1CA,EAAE,CAACiF,cAAc,CAAC,CAAC;MAAEjF,EAAE,CAAC2E,eAAe,CAAC,CAAC;MACzC,IAAI7N,EAAE,GAAG2L,GAAG,CAACiC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI;MAClD,EAAE,CAACvI,KAAK,CAAC0I,IAAI,CAACzO,IAAI,CAAC0O,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAACzG,OAAO,CAAC,UAAU4D,CAAC,EAAE;QACzE,IAAIA,CAAC,CAACE,OAAO,KAAKrL,EAAE,EAAE;UAAEmL,CAAC,CAACE,OAAO,GAAGrL,EAAE;UAAE+K,MAAM,CAACI,CAAC,CAACyC,YAAY,CAAC,aAAa,CAAC,EAAE5N,EAAE,CAAC;QAAE;MACrF,CAAC,CAAC;MACF8C,KAAK,CAAC,CAAC;IACT,CAAC,CAAC;IACFA,KAAK,CAAC,CAAC;IACP,IAAIsL,MAAM,GAAG9O,IAAI,CAAC6B,aAAa,CAAC,eAAe,CAAC;IAChD7B,IAAI,CAAC6B,aAAa,CAAC,kBAAkB,CAAC,CAACE,gBAAgB,CAAC,OAAO,EAAE,UAAU6H,EAAE,EAAE;MAC7EA,EAAE,CAAC2E,eAAe,CAAC,CAAC;MACpBO,MAAM,CAAC3M,YAAY,CAAC,cAAc,EAAE2M,MAAM,CAACR,YAAY,CAAC,cAAc,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9F,CAAC,CAAC;IACFtO,IAAI,CAAC+B,gBAAgB,CAAC,OAAO,EAAE,UAAU6H,EAAE,EAAE;MAC3C,IAAImF,GAAG,GAAGnF,EAAE,CAACyE,MAAM;MACnB,IAAI,CAACU,GAAG,CAACC,SAAS,IAAI,CAACD,GAAG,CAACC,SAAS,CAACC,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE;MAAQ;MACvE,IAAIvD,GAAG,GAAG9J,QAAQ,CAACK,aAAa,CAAC,KAAK,CAAC;MACvCyJ,GAAG,CAAC5E,SAAS,GAAG,gBAAgB;MAChC4E,GAAG,CAACtB,SAAS,GAAG,YAAY,GAAGpH,GAAG,CAAC+L,GAAG,CAACT,YAAY,CAAC,kBAAkB,CAAC,IAAIS,GAAG,CAACxN,GAAG,CAAC,GAAG,WAAW;MACjGmK,GAAG,CAAC3J,gBAAgB,CAAC,OAAO,EAAE,YAAY;QAAE2J,GAAG,CAACwD,MAAM,CAAC,CAAC;MAAE,CAAC,CAAC;MAC5DtN,QAAQ,CAACoC,IAAI,CAACxB,WAAW,CAACkJ,GAAG,CAAC;IAChC,CAAC,CAAC;IACFrL,MAAM,CAAC4H,OAAO,CAAC,UAAU3D,GAAG,EAAE;MAAE,IAAIA,GAAG,CAAC5D,EAAE,EAAE;QAAE+K,MAAM,CAACnH,GAAG,CAAChE,CAAC,EAAE,IAAI,CAAC;MAAE;IAAE,CAAC,CAAC;EACzE;EACE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAKE,IAAI6O,GAAG,GAAG;IACRC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACzBC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACnBC,KAAK,EAAE,CAAC,IAAI;IACZC,GAAG,EAAE,CAAC,IAAI;IAAEnC,GAAG,EAAE,IAAI;IACrBoC,EAAE,EAAE,IAAI;IAAEC,EAAE,EAAE,IAAI;IAAEC,OAAO,EAAE,IAAI;IACjCC,GAAG,EAAE,CAAC,CAAC;IAAEC,IAAI,EAAE,EAAE;IAAEC,QAAQ,EAAE,CAAC;IAAElO,IAAI,EAAE,KAAK;IAAEmO,KAAK,EAAE,KAAK;IAAEC,GAAG,EAAE;EAClE,CAAC;EACD,IAAIC,IAAI,GAAG;IACT1G,GAAG,EAAE,UAAU;IAAEoB,UAAU,EAAE,aAAa;IAAE7B,OAAO,EAAE,cAAc;IACnE8B,QAAQ,EAAE,cAAc;IAAEC,MAAM,EAAE,aAAa;IAAEC,MAAM,EAAE,YAAY;IACrEC,QAAQ,EAAE,aAAa;IAAE9B,MAAM,EAAE,YAAY;IAAEyB,IAAI,EAAE;EACvD,CAAC;EACD;AACF;EACE,IAAIwF,KAAK,GAAG,CACV;IAAEV,GAAG,EAAE,GAAG;IAAEW,GAAG,EAAE;EAAI,CAAC,EAAE;IAAEX,GAAG,EAAE,EAAE;IAAEW,GAAG,EAAE;EAAI,CAAC,EAC7C;IAAEX,GAAG,EAAE,EAAE;IAAEW,GAAG,EAAE;EAAG,CAAC,EAAE;IAAEX,GAAG,EAAE,CAAC;IAAEW,GAAG,EAAE;EAAG,CAAC,CAC1C;EACD;AACF;AACA;AACA;AACA;EACE,IAAIC,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAC3B,SAASC,IAAIA,CAACnD,CAAC,EAAE;IACf,IAAI5I,CAAC,GAAGgM,MAAM,CAAC,CAAC;MAAExP,CAAC;MAAEiE,CAAC;MAAEwL,EAAE;IAC1B,KAAKzP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtB,IAAIoM,CAAC,IAAI5I,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,IAAIA,CAAC,KAAK,CAAC,EAAE;QAC5BiE,CAAC,GAAGqL,IAAI,CAACtP,CAAC,CAAC;QACXyP,EAAE,GAAGjM,CAAC,CAACxD,CAAC,CAAC,GAAGsM,IAAI,CAACoD,KAAK,CAAC,CAACtD,CAAC,GAAG5I,CAAC,CAACxD,CAAC,CAAC,IAAIiE,CAAC,CAAC,GAAGA,CAAC;QAC1C,OAAO,CAACwL,EAAE,EAAEnD,IAAI,CAACoC,GAAG,CAACe,EAAE,GAAGxL,CAAC,EAAET,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACzC;IACF;IACA,OAAO,CAACoM,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;EACnB;EACA;AACF;AACA;AACA;EACE,SAASuD,KAAKA,CAACvD,CAAC,EAAE;IAChBA,CAAC,GAAGE,IAAI,CAACsD,KAAK,CAACxD,CAAC,CAAC;IACjB,IAAIA,CAAC,IAAI,CAAC,EAAE;MAAE,OAAQ,CAAC,GAAGA,CAAC,GAAI,KAAK;IAAE;IACtC,OAAOA,CAAC,GAAG,IAAI,GAAG,KAAK,GAAGA,CAAC,GAAGhK,MAAM,CAACgK,CAAC,CAAC;EACzC;EACA;AACF;AACA;AACA;AACA;EACE,SAASzE,KAAKA,CAACxG,CAAC,EAAE;IAChB,IAAIqB,CAAC,GAAGJ,MAAM,CAACjB,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKkB,SAAS,GAAG,EAAE,GAAGlB,CAAC,CAAC,CAAC0O,IAAI,CAAC,CAAC;IAC7D,IAAI,CAACrN,CAAC,IAAIA,CAAC,KAAK,GAAG,EAAE;MAAE,OAAO,IAAI;IAAE;IACpC,IAAIsN,EAAE,GAAG,WAAW,CAACnR,IAAI,CAAC6D,CAAC,CAAC;IAC5B,IAAIqB,CAAC,GAAGrB,CAAC,CAACuN,KAAK,CAAC,qCAAqC,CAAC;IACtD,IAAIlM,CAAC,EAAE;MACL,IAAInE,CAAC,GAAGsQ,QAAQ,CAACnM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1B,OAAOiM,EAAE,GAAG,CAAC,EAAEpQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAACA,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAEA,CAAC,GAAG,GAAG,CAAC;IAC/E;IACA,IAAIiG,CAAC,GAAGnD,CAAC,CAACuN,KAAK,CAAC,8BAA8B,CAAC;IAC/C,IAAIpK,CAAC,EAAE;MAAE,OAAO,CAACqK,QAAQ,CAACrK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAEqK,QAAQ,CAACrK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAAE;IAC1D,IAAIsK,GAAG,GAAGzN,CAAC,CAACuN,KAAK,CAAC,8BAA8B,CAAC;IACjD,IAAIE,GAAG,EAAE;MAAE,IAAI9I,CAAC,GAAG6I,QAAQ,CAACC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;MAAE,OAAO,CAAC9I,CAAC,EAAEA,CAAC,CAAC;IAAE;IACxD,IAAII,CAAC,GAAG/E,CAAC,CAACuN,KAAK,CAAC,WAAW,CAAC;IAC5B,IAAI,CAACxI,CAAC,EAAE;MAAE,OAAO,IAAI;IAAE;IACvB,IAAI6E,CAAC,GAAG4D,QAAQ,CAACzI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1B,IAAI,CAAC6E,CAAC,IAAIA,CAAC,GAAG,IAAI,EAAE;MAAE,OAAO,IAAI;IAAE;IACnC,IAAI0D,EAAE,EAAE;MAAE1D,CAAC,GAAG,CAACA,CAAC,GAAG,CAAC;IAAE;IACtB,OAAO,CAACA,CAAC,EAAEA,CAAC,CAAC;EACf;EACA,SAAS1E,MAAMA,CAACH,CAAC,EAAE9H,CAAC,EAAEyQ,EAAE,EAAE;IACxB3I,CAAC,CAAC4I,GAAG,GAAG1Q,CAAC;IACT,IAAIyQ,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,EAAE,CAAC,CAAC,CAAC,KAAK7N,SAAS,IAAI,CAAC+N,KAAK,CAACF,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;MAChE3I,CAAC,CAAC8I,GAAG,GAAGH,EAAE,CAAC,CAAC,CAAC;MACb3I,CAAC,CAAC+I,GAAG,GAAIJ,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,EAAE,CAAC,CAAC,CAAC,KAAK7N,SAAS,IAAI+N,KAAK,CAACF,EAAE,CAAC,CAAC,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC,GAAIA,EAAE,CAAC,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC,MAAM;MAAE3I,CAAC,CAAC8I,GAAG,GAAG,IAAI;MAAE9I,CAAC,CAAC+I,GAAG,GAAG,IAAI;IAAE;IACrC,OAAO/I,CAAC;EACV;EACA,SAASiI,MAAMA,CAAA,EAAG;IAAE,OAAO,CAAClB,GAAG,CAACI,GAAG,EAAEJ,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,EAAED,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,EAAED,GAAG,CAACC,KAAK,CAAC,CAAC,CAAC,EAAED,GAAG,CAAC/B,GAAG,CAAC;EAAE;EACzF;EACA,SAASgE,EAAEA,CAACnE,CAAC,EAAE;IACb,IAAI5I,CAAC,GAAGgM,MAAM,CAAC,CAAC;MAAEgB,GAAG,GAAG,CAAC;MAAExQ,CAAC;IAC5B,IAAIoM,CAAC,IAAI5I,CAAC,CAAC,CAAC,CAAC,EAAE;MAAE,OAAO,CAAC;IAAE;IAC3B,KAAKxD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtB,IAAIoM,CAAC,IAAI5I,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,EAAE;QAAE,OAAO,CAACwQ,GAAG,GAAGlC,GAAG,CAACE,CAAC,CAACxO,CAAC,CAAC,IAAIoM,CAAC,GAAG5I,CAAC,CAACxD,CAAC,CAAC,CAAC,IAAIwD,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,GAAGwD,CAAC,CAACxD,CAAC,CAAC,CAAC,IAAI,GAAG;MAAE;MACrFwQ,GAAG,IAAIlC,GAAG,CAACE,CAAC,CAACxO,CAAC,CAAC;IACjB;IACA,OAAO,CAAC;EACV;EACA,SAASyQ,IAAIA,CAACC,CAAC,EAAE;IACf,IAAIlN,CAAC,GAAGgM,MAAM,CAAC,CAAC;MAAE5Q,CAAC,GAAG0N,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACoC,GAAG,CAAC,CAAC,EAAEgC,CAAC,CAAC,CAAC,GAAG,GAAG;MAAEF,GAAG,GAAG,CAAC;MAAExQ,CAAC;IACnE,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtB,IAAIpB,CAAC,IAAI4R,GAAG,GAAGlC,GAAG,CAACE,CAAC,CAACxO,CAAC,CAAC,EAAE;QAAE,OAAOwD,CAAC,CAACxD,CAAC,CAAC,GAAG,CAACpB,CAAC,GAAG4R,GAAG,KAAKhN,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,GAAGwD,CAAC,CAACxD,CAAC,CAAC,CAAC,GAAGsO,GAAG,CAACE,CAAC,CAACxO,CAAC,CAAC;MAAE;MACnFwQ,GAAG,IAAIlC,GAAG,CAACE,CAAC,CAACxO,CAAC,CAAC;IACjB;IACA,OAAOwD,CAAC,CAAC,CAAC,CAAC;EACb;EACA;AACF;AACA;EACE,SAASmN,KAAKA,CAAC3F,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE9L,GAAG,IAAI8L,CAAC,IAAIA,CAAC,CAACnD,KAAK,IAAI3I,GAAG,CAAC4L,QAAQ,CAACE,CAAC,CAACnD,KAAK,CAAC,CAAC;EAAE;EAC7E,SAAS+I,QAAQA,CAAA,EAAG;IAClB,IAAI9B,GAAG,GAAG,CAAC,CAAC;MAAEC,IAAI,GAAG,EAAE;MAAEF,OAAO,GAAG,CAAC;MAAEF,EAAE,GAAG,GAAG;MAAEC,EAAE,GAAG,CAAC,GAAG;MAAEiC,GAAG,GAAG,KAAK;IACtErQ,KAAK,CAAC4G,OAAO,CAAC,UAAU4D,CAAC,EAAE;MACzB,IAAI,CAAC2F,KAAK,CAAC3F,CAAC,CAAC,EAAE;QAAE;MAAQ;MACzBA,CAAC,CAACX,GAAG,CAACjD,OAAO,CAAC,UAAUG,CAAC,EAAE;QACzB,IAAIA,CAAC,CAAC8I,GAAG,KAAK,IAAI,IAAI9I,CAAC,CAAC8I,GAAG,KAAKhO,SAAS,EAAE;UAAEwM,OAAO,EAAE;UAAE;QAAQ;QAChEgC,GAAG,GAAG,IAAI;QACV,IAAItJ,CAAC,CAAC8I,GAAG,GAAG1B,EAAE,EAAE;UAAEA,EAAE,GAAGpH,CAAC,CAAC8I,GAAG;QAAE;QAC9B,IAAI9I,CAAC,CAAC+I,GAAG,GAAG1B,EAAE,EAAE;UAAEA,EAAE,GAAGrH,CAAC,CAAC+I,GAAG;QAAE;QAC9B,IAAI7Q,CAAC,GAAG8H,CAAC,CAAC4I,GAAG,IAAI,OAAO;QACxB,IAAI,CAACrB,GAAG,CAACrP,CAAC,CAAC,EAAE;UAAEqP,GAAG,CAACrP,CAAC,CAAC,GAAG,CAAC,CAAC;UAAEsP,IAAI,CAACnJ,IAAI,CAACnG,CAAC,CAAC;QAAE;QAC1C,IAAIyE,CAAC,GAAGqD,CAAC,CAAC8I,GAAG;UAAEhE,CAAC,GAAG9E,CAAC,CAAC+I,GAAG;UAAErM,CAAC,GAAG,CAAC,IAAIoI,CAAC,GAAGnI,CAAC,GAAG,CAAC,CAAC;UAAEkI,CAAC;QAChD,KAAKA,CAAC,GAAGlI,CAAC,EAAEkI,CAAC,IAAIC,CAAC,EAAED,CAAC,EAAE,EAAE;UAAE0C,GAAG,CAACrP,CAAC,CAAC,CAAC2M,CAAC,CAAC,GAAG,CAAC0C,GAAG,CAACrP,CAAC,CAAC,CAAC2M,CAAC,CAAC,IAAI,CAAC,IAAInI,CAAC;QAAE;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;IACFqK,GAAG,CAACQ,GAAG,GAAGA,GAAG;IAAER,GAAG,CAACS,IAAI,GAAGA,IAAI;IAAET,GAAG,CAACU,QAAQ,GAAGH,OAAO;IAAEP,GAAG,CAACxN,IAAI,GAAG+P,GAAG;IACtE;AACJ;IACI,IAAIC,QAAQ,GAAGxC,GAAG,CAACK,EAAE,KAAK,IAAI,IAAIL,GAAG,CAACK,EAAE,IAAIL,GAAG,CAACI,GAAG;IACnD,IAAIqC,QAAQ,GAAGzC,GAAG,CAACM,EAAE,KAAK,IAAI,IAAIN,GAAG,CAACM,EAAE,IAAIN,GAAG,CAAC/B,GAAG;IACnD;AACJ;IACI+B,GAAG,CAACI,GAAG,GAAGmC,GAAG,GAAGvE,IAAI,CAACoC,GAAG,CAACJ,GAAG,CAACG,KAAK,EAAEE,EAAE,CAAC,GAAGL,GAAG,CAACG,KAAK;IACnDH,GAAG,CAAC/B,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,IAAI,EAAEsE,GAAG,GAAGjC,EAAE,GAAG,IAAI,CAAC;IACzC;AACJ;AACA;AACA;AACA;IACI,IAAIkC,QAAQ,EAAE;MAAExC,GAAG,CAACK,EAAE,GAAGL,GAAG,CAACI,GAAG;IAAE;IAClC,IAAIqC,QAAQ,EAAE;MAAEzC,GAAG,CAACM,EAAE,GAAGN,GAAG,CAAC/B,GAAG;IAAE;IAClC,IAAI+B,GAAG,CAACK,EAAE,GAAGL,GAAG,CAACI,GAAG,EAAE;MAAEJ,GAAG,CAACK,EAAE,GAAGL,GAAG,CAACI,GAAG;IAAE;IAC1C,IAAIJ,GAAG,CAACM,EAAE,GAAGN,GAAG,CAAC/B,GAAG,EAAE;MAAE+B,GAAG,CAACM,EAAE,GAAGN,GAAG,CAAC/B,GAAG;IAAE;EAC5C;EACA,SAASyE,KAAKA,CAAA,EAAG;IACf,OAAO1C,GAAG,CAACK,EAAE,IAAIL,GAAG,CAACI,GAAG,IAAIJ,GAAG,CAACM,EAAE,IAAIN,GAAG,CAAC/B,GAAG,IAAI+B,GAAG,CAACO,OAAO;EAC9D;EACA,SAASoC,MAAMA,CAAA,EAAG;IAChB,IAAIvR,CAAC,GAAG,CAAC;IACTc,KAAK,CAAC4G,OAAO,CAAC,UAAU4D,CAAC,EAAE;MACzB,IAAI,CAAC2F,KAAK,CAAC3F,CAAC,CAAC,EAAE;QAAE;MAAQ;MACzBA,CAAC,CAACX,GAAG,CAACjD,OAAO,CAAC,UAAUG,CAAC,EAAE;QACzB,IAAIA,CAAC,CAAC8I,GAAG,KAAK,IAAI,IAAI9I,CAAC,CAAC8I,GAAG,KAAKhO,SAAS,EAAE;UAAE,IAAIiM,GAAG,CAACO,OAAO,EAAE;YAAEnP,CAAC,EAAE;UAAE;UAAE;QAAQ;QAC/E,IAAI6H,CAAC,CAAC+I,GAAG,IAAIhC,GAAG,CAACK,EAAE,IAAIpH,CAAC,CAAC8I,GAAG,IAAI/B,GAAG,CAACM,EAAE,EAAE;UAAElP,CAAC,EAAE;QAAE;MACjD,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAOA,CAAC;EACV;EACA,SAASwR,OAAOA,CAACzR,CAAC,EAAE0R,KAAK,EAAE;IACzB,IAAIA,KAAK,CAAC1R,CAAC,CAAC,EAAE;MAAE,OAAO0R,KAAK,CAAC1R,CAAC,CAAC;IAAE;IACjC,IAAI0H,CAAC,GAAGgI,IAAI,CAAC1P,CAAC,CAAC;IACf,IAAI0B,CAAC,GAAGgG,CAAC,GAAG,CAACiK,gBAAgB,CAACjS,IAAI,CAAC,CAACkS,gBAAgB,CAAClK,CAAC,CAAC,IAAI,EAAE,EAAE0I,IAAI,CAAC,CAAC,GAAG,EAAE;IAC1EsB,KAAK,CAAC1R,CAAC,CAAC,GAAG0B,CAAC,IAAI,SAAS;IACzB,OAAOgQ,KAAK,CAAC1R,CAAC,CAAC;EACjB;EACA;AACF;AACA;AACA;AACA;EACE,SAAS6R,SAASA,CAACC,GAAG,EAAE;IACtB,IAAIC,EAAE,GAAGD,GAAG,CAACvQ,aAAa,CAAC,YAAY,CAAC;IACxC,IAAI,CAACwQ,EAAE,EAAE;MAAE;IAAQ;IACnB,IAAIhD,CAAC,GAAGlC,IAAI,CAACsD,KAAK,CAAC4B,EAAE,CAACC,WAAW,CAAC;MAAEC,CAAC,GAAG,EAAE;IAC1C,IAAI,CAAClD,CAAC,EAAE;MAAE;IAAQ;IAClB,IAAImD,GAAG,GAAGnT,MAAM,CAACoT,gBAAgB,IAAI,CAAC;IACtC,IAAIJ,EAAE,CAACK,KAAK,KAAKvF,IAAI,CAACsD,KAAK,CAACpB,CAAC,GAAGmD,GAAG,CAAC,EAAE;MAAEH,EAAE,CAACK,KAAK,GAAGvF,IAAI,CAACsD,KAAK,CAACpB,CAAC,GAAGmD,GAAG,CAAC;IAAE;IACxE,IAAIH,EAAE,CAACM,MAAM,KAAKxF,IAAI,CAACsD,KAAK,CAAC8B,CAAC,GAAGC,GAAG,CAAC,EAAE;MAAEH,EAAE,CAACM,MAAM,GAAGxF,IAAI,CAACsD,KAAK,CAAC8B,CAAC,GAAGC,GAAG,CAAC;IAAE;IAC1E,IAAIrN,CAAC,GAAGkN,EAAE,CAACO,UAAU,CAAC,IAAI,CAAC;IAC3BzN,CAAC,CAAC0N,YAAY,CAACL,GAAG,EAAE,CAAC,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACpCrN,CAAC,CAAC2N,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEzD,CAAC,EAAEkD,CAAC,CAAC;IACvB,IAAI,CAACpD,GAAG,CAACxN,IAAI,EAAE;MAAE;IAAQ;IACzB,IAAIoR,MAAM,GAAG,EAAE;MAAElS,CAAC;MAAEP,CAAC;MAAE2M,CAAC;MAAE+F,GAAG;MAAEC,IAAI;IACnC,KAAKpS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsO,GAAG,CAACS,IAAI,CAAC9O,MAAM,EAAED,CAAC,EAAE,EAAE;MACpCP,CAAC,GAAG6O,GAAG,CAACS,IAAI,CAAC/O,CAAC,CAAC;MACf,IAAIqS,GAAG,GAAG,IAAIC,YAAY,CAAC9D,CAAC,CAAC;QAAE+D,IAAI,GAAG,CAAC,CAAC;QAAEC,EAAE;MAC5CJ,IAAI,GAAG9D,GAAG,CAACQ,GAAG,CAACrP,CAAC,CAAC;MACjB,KAAK2M,CAAC,IAAIgG,IAAI,EAAE;QACdI,EAAE,GAAGjD,IAAI,CAAC,CAACnD,CAAC,CAAC,CAAC,CAAC,CAAC;QAChBmG,IAAI,CAACC,EAAE,CAAC,GAAG,CAACD,IAAI,CAACC,EAAE,CAAC,IAAI,CAAC,IAAIJ,IAAI,CAAChG,CAAC,CAAC;MACtC;MACA;AACN;AACA;MACM,KAAKoG,EAAE,IAAID,IAAI,EAAE;QACf,IAAIE,IAAI,GAAGlD,IAAI,CAAC,CAACiD,EAAE,CAAC;QACpB,IAAIE,EAAE,GAAGpG,IAAI,CAACoD,KAAK,CAACa,EAAE,CAACkC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGjE,CAAC,CAAC;UAAEmE,EAAE,GAAGrG,IAAI,CAACE,IAAI,CAAC+D,EAAE,CAACkC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGjE,CAAC,CAAC;QACrE,IAAImE,EAAE,IAAID,EAAE,EAAE;UAAEC,EAAE,GAAGD,EAAE,GAAG,CAAC;QAAE;QAC7B,IAAIA,EAAE,GAAG,CAAC,EAAE;UAAEA,EAAE,GAAG,CAAC;QAAE;QACtB,IAAIC,EAAE,GAAGnE,CAAC,EAAE;UAAEmE,EAAE,GAAGnE,CAAC;QAAE;QACtB,KAAK2D,GAAG,GAAGO,EAAE,EAAEP,GAAG,GAAGQ,EAAE,EAAER,GAAG,EAAE,EAAE;UAAEE,GAAG,CAACF,GAAG,CAAC,IAAII,IAAI,CAACC,EAAE,CAAC;QAAE;MAC1D;MACAN,MAAM,CAACtM,IAAI,CAAC;QAAEnG,CAAC,EAAEA,CAAC;QAAE4S,GAAG,EAAEA;MAAI,CAAC,CAAC;IACjC;IACA,IAAIO,KAAK,GAAG,IAAIN,YAAY,CAAC9D,CAAC,CAAC;MAAEjC,GAAG,GAAG,CAAC;IACxC,KAAKvM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwO,CAAC,EAAExO,CAAC,EAAE,EAAE;MACtB,KAAKP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyS,MAAM,CAACjS,MAAM,EAAER,CAAC,EAAE,EAAE;QAAEmT,KAAK,CAAC5S,CAAC,CAAC,IAAIkS,MAAM,CAACzS,CAAC,CAAC,CAAC4S,GAAG,CAACrS,CAAC,CAAC;MAAE;MACpE,IAAI4S,KAAK,CAAC5S,CAAC,CAAC,GAAGuM,GAAG,EAAE;QAAEA,GAAG,GAAGqG,KAAK,CAAC5S,CAAC,CAAC;MAAE;IACxC;IACA,IAAI,CAACuM,GAAG,EAAE;MAAE;IAAQ;IACpB,IAAIsG,IAAI,GAAGvG,IAAI,CAACG,GAAG,CAAC,CAAC,GAAGF,GAAG,CAAC;MAAE4E,KAAK,GAAG,CAAC,CAAC;IACxC,KAAKnR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwO,CAAC,EAAExO,CAAC,EAAE,EAAE;MACtB,IAAI,CAAC4S,KAAK,CAAC5S,CAAC,CAAC,EAAE;QAAE;MAAU;MAC3B,IAAI8D,CAAC,GAAG,CAAC4N,CAAC,GAAG,CAAC,IAAIpF,IAAI,CAACG,GAAG,CAAC,CAAC,GAAGmG,KAAK,CAAC5S,CAAC,CAAC,CAAC,GAAG6S,IAAI;MAC/C,IAAI/O,CAAC,GAAG,CAAC,EAAE;QAAEA,CAAC,GAAG,CAAC;MAAE;MACpB,IAAI0M,GAAG,GAAG,CAAC;MACX,KAAK/Q,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyS,MAAM,CAACjS,MAAM,EAAER,CAAC,EAAE,EAAE;QAClC,IAAI0H,CAAC,GAAG+K,MAAM,CAACzS,CAAC,CAAC,CAAC4S,GAAG,CAACrS,CAAC,CAAC;QACxB,IAAI,CAACmH,CAAC,EAAE;UAAE;QAAU;QACpB,IAAI2L,GAAG,GAAGhP,CAAC,IAAIqD,CAAC,GAAGyL,KAAK,CAAC5S,CAAC,CAAC,CAAC;QAC5BsE,CAAC,CAACyO,SAAS,GAAG7B,OAAO,CAACgB,MAAM,CAACzS,CAAC,CAAC,CAACA,CAAC,EAAE0R,KAAK,CAAC;QACzC7M,CAAC,CAAC0O,QAAQ,CAAChT,CAAC,EAAE0R,CAAC,GAAGlB,GAAG,GAAGsC,GAAG,EAAE,CAAC,EAAExG,IAAI,CAACE,IAAI,CAACsG,GAAG,CAAC,CAAC;QAC/CtC,GAAG,IAAIsC,GAAG;MACZ;IACF;EACF;EACA;AACF;AACA;AACA;AACA;EACE,SAASG,UAAUA,CAAC1B,GAAG,EAAE;IACvB,IAAI2B,KAAK,GAAG3B,GAAG,CAACvQ,aAAa,CAAC,mBAAmB,CAAC;IAClD,IAAI,CAACkS,KAAK,EAAE;MAAE;IAAQ;IACtB,IAAI1E,CAAC,GAAGlC,IAAI,CAACsD,KAAK,CAACsD,KAAK,CAACzB,WAAW,CAAC;IACrC,IAAI,CAACjD,CAAC,EAAE;MAAE;IAAQ;IAClB,IAAIhL,CAAC,GAAGgM,MAAM,CAAC,CAAC;MAAE9J,GAAG,GAAG,EAAE;MAAEyN,IAAI,GAAG,CAAC,CAAC;MAAEnT,CAAC;MAAEmB,CAAC;MAAEiL,CAAC;IAC9C,SAASgH,GAAGA,CAAC5Q,CAAC,EAAE;MACd,IAAIwG,GAAG,GAAGsD,IAAI,CAACsD,KAAK,CAACpN,CAAC,CAAC4J,CAAC,CAAC;MACzB,IAAI+G,IAAI,CAACnK,GAAG,CAAC,EAAE;QACb,IAAIxG,CAAC,CAAC6Q,IAAI,EAAE;UAAEF,IAAI,CAACnK,GAAG,CAAC,CAACqK,IAAI,GAAG,IAAI;UAAEF,IAAI,CAACnK,GAAG,CAAC,CAACqG,GAAG,GAAG,IAAI;QAAE;QAC3D,IAAI7M,CAAC,CAAC8Q,IAAI,KAAKjR,SAAS,EAAE;UAAE8Q,IAAI,CAACnK,GAAG,CAAC,CAACsK,IAAI,GAAG9Q,CAAC,CAAC8Q,IAAI;QAAE;QACrD;MACF;MACAH,IAAI,CAACnK,GAAG,CAAC,GAAGxG,CAAC;MAAEkD,GAAG,CAACE,IAAI,CAACpD,CAAC,CAAC;IAC5B;IACA;AACJ;AACA;IACI,KAAKxC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtBmB,CAAC,GAAGiO,KAAK,CAACpP,CAAC,CAAC,CAAC0O,GAAG;MAChB,KAAKtC,CAAC,GAAGE,IAAI,CAACE,IAAI,CAAChJ,CAAC,CAACxD,CAAC,CAAC,CAAC,EAAEoM,CAAC,IAAI5I,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,EAAEoM,CAAC,EAAE,EAAE;QAC5C,IAAImH,GAAG,GAAGnH,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAGA,CAAC;QAC3B,IAAImH,GAAG,GAAGpS,CAAC,KAAK,CAAC,EAAE;UAAE;QAAU;QAC/BiS,GAAG,CAAC;UAAEhH,CAAC,EAAEA,CAAC;UAAEiD,GAAG,EAAEkE,GAAG,GAAGnE,KAAK,CAACpP,CAAC,CAAC,CAACqP,GAAG,KAAK,CAAC;UAAEgE,IAAI,EAAE;QAAM,CAAC,CAAC;MAC3D;MACA;MACA,IAAI7P,CAAC,CAACxD,CAAC,CAAC,GAAG,CAAC,IAAIwD,CAAC,CAACxD,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;QAAEoT,GAAG,CAAC;UAAEhH,CAAC,EAAE,CAAC;UAAEiD,GAAG,EAAE,IAAI;UAAEgE,IAAI,EAAE;QAAM,CAAC,CAAC;MAAE;IAC1E;IACAD,GAAG,CAAC;MAAEhH,CAAC,EAAE5I,CAAC,CAAC,CAAC,CAAC;MAAE6L,GAAG,EAAE,IAAI;MAAEgE,IAAI,EAAE,KAAK;MAAEC,IAAI,EAAE;IAAE,CAAC,CAAC;IACjDF,GAAG,CAAC;MAAEhH,CAAC,EAAE5I,CAAC,CAAC,CAAC,CAAC;MAAE6L,GAAG,EAAE,IAAI;MAAEgE,IAAI,EAAE,KAAK;MAAEC,IAAI,EAAE;IAAE,CAAC,CAAC;IACjDF,GAAG,CAAC;MAAEhH,CAAC,EAAE5I,CAAC,CAAC,CAAC,CAAC;MAAE6L,GAAG,EAAE,IAAI;MAAEgE,IAAI,EAAE;IAAK,CAAC,CAAC;IACvCD,GAAG,CAAC;MAAEhH,CAAC,EAAE5I,CAAC,CAAC,CAAC,CAAC;MAAE6L,GAAG,EAAE,IAAI;MAAEgE,IAAI,EAAE;IAAK,CAAC,CAAC;IACvCD,GAAG,CAAC;MAAEhH,CAAC,EAAE5I,CAAC,CAAC,CAAC,CAAC;MAAE6L,GAAG,EAAE,IAAI;MAAEgE,IAAI,EAAE;IAAK,CAAC,CAAC;IACvC3N,GAAG,CAAC8N,IAAI,CAAC,UAAUtP,CAAC,EAAE8G,CAAC,EAAE;MAAE,OAAO9G,CAAC,CAACkI,CAAC,GAAGpB,CAAC,CAACoB,CAAC;IAAE,CAAC,CAAC;IAC/C,IAAIoF,EAAE,GAAGD,GAAG,CAACvQ,aAAa,CAAC,YAAY,CAAC;IACxC,IAAIsD,CAAC,GAAGkN,EAAE,GAAGA,EAAE,CAACO,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI;IACvC,IAAIzN,CAAC,EAAE;MAAEA,CAAC,CAACmP,IAAI,GAAG,MAAM,IAAIrC,gBAAgB,CAAC8B,KAAK,CAAC,CAACQ,UAAU,IAAI,OAAO,CAAC;IAAE;IAC5E,SAASC,IAAIA,CAACnR,CAAC,EAAE;MAAE,OAAO8B,CAAC,GAAGA,CAAC,CAACsP,WAAW,CAACpR,CAAC,CAAC,CAACqP,KAAK,GAAGrP,CAAC,CAACvC,MAAM,GAAG,GAAG;IAAE;IACvE,IAAI4T,KAAK,GAAG,EAAE;MAAE3N,IAAI,GAAG,EAAE;IACzB,SAAS4N,IAAIA,CAAC5P,CAAC,EAAE8G,CAAC,EAAE;MAClB,KAAK,IAAI+I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAAC5T,MAAM,EAAE8T,CAAC,EAAE,EAAE;QACrC,IAAI7P,CAAC,GAAG2P,KAAK,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI/I,CAAC,GAAG6I,KAAK,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;UAAE,OAAO,KAAK;QAAE;MAClE;MACA,OAAO,IAAI;IACb;IACA,SAASzO,KAAKA,CAAC9C,CAAC,EAAE;MAChB,IAAIwR,EAAE,GAAGzD,EAAE,CAAC/N,CAAC,CAAC4J,CAAC,CAAC,GAAGoC,CAAC;QAAEyF,GAAG,GAAGtE,KAAK,CAACnN,CAAC,CAAC4J,CAAC,CAAC;QAAEnI,CAAC,GAAG0P,IAAI,CAACM,GAAG,CAAC;MACrD,IAAI/P,CAAC,GAAG8P,EAAE,GAAG/P,CAAC,GAAG,CAAC;QAAE+G,CAAC,GAAGgJ,EAAE,GAAG/P,CAAC,GAAG,CAAC;MAClC,IAAIzB,CAAC,CAAC8Q,IAAI,KAAK,CAAC,EAAE;QAAEpP,CAAC,GAAG,CAAC;QAAE8G,CAAC,GAAG/G,CAAC;MAAE;MAClC,IAAIzB,CAAC,CAAC8Q,IAAI,KAAK,CAAC,EAAE;QAAEpP,CAAC,GAAGsK,CAAC,GAAGvK,CAAC;QAAE+G,CAAC,GAAGwD,CAAC;MAAE;MACtC,IAAI,CAACsF,IAAI,CAAC5P,CAAC,EAAE8G,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK;MAAE;MACjC6I,KAAK,CAACjO,IAAI,CAAC,CAAC1B,CAAC,EAAE8G,CAAC,CAAC,CAAC;MAClB9E,IAAI,CAACN,IAAI,CAAC,oCAAoC,IAAIpD,CAAC,CAAC6Q,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IACpE7Q,CAAC,CAAC8Q,IAAI,KAAKjR,SAAS,GAAG,cAAc,GAAGG,CAAC,CAAC8Q,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAC3D,eAAe,GAAG,CAAC9Q,CAAC,CAAC8Q,IAAI,KAAK,CAAC,GAAG9E,CAAC,GAAGwF,EAAE,EAAEE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,GAAGD,GAAG,GAAG,SAAS,CAAC;MAClF,OAAO,IAAI;IACb;IACA;IACAvO,GAAG,CAACb,MAAM,CAAC,UAAUrC,CAAC,EAAE;MAAE,OAAOA,CAAC,CAAC8Q,IAAI,KAAKjR,SAAS;IAAE,CAAC,CAAC,CAAC+E,OAAO,CAAC9B,KAAK,CAAC;IACxEI,GAAG,CAACb,MAAM,CAAC,UAAUrC,CAAC,EAAE;MAAE,OAAOA,CAAC,CAAC6Q,IAAI;IAAE,CAAC,CAAC,CAACjM,OAAO,CAAC9B,KAAK,CAAC;IAC1DI,GAAG,CAACb,MAAM,CAAC,UAAUrC,CAAC,EAAE;MAAE,OAAOA,CAAC,CAAC6M,GAAG,IAAI,CAAC7M,CAAC,CAAC6Q,IAAI,IAAI7Q,CAAC,CAAC8Q,IAAI,KAAKjR,SAAS;IAAE,CAAC,CAAC,CAAC+E,OAAO,CAAC9B,KAAK,CAAC;IAC5FI,GAAG,CAAC0B,OAAO,CAAC,UAAU5E,CAAC,EAAE;MACvB0D,IAAI,CAACN,IAAI,CAAC,oCAAoC,IAAIpD,CAAC,CAAC6M,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAC9D,eAAe,IAAI7M,CAAC,CAAC6Q,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,GACrD,CAAC9C,EAAE,CAAC/N,CAAC,CAAC4J,CAAC,CAAC,GAAGoC,CAAC,EAAE0F,OAAO,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;IAC7C,CAAC,CAAC;IACF;IACA,CAAC1Q,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC4D,OAAO,CAAC,UAAUgF,CAAC,EAAE;MACtClG,IAAI,CAACN,IAAI,CAAC,qCAAqC,GAAG,CAAC2K,EAAE,CAACnE,CAAC,CAAC,GAAGoC,CAAC,EAAE0F,OAAO,CAAC,CAAC,CAAC,GACtE,cAAc,CAAC;IACnB,CAAC,CAAC;IACFhB,KAAK,CAAC3J,SAAS,GAAGrD,IAAI,CAACnC,IAAI,CAAC,EAAE,CAAC;EACjC;EACA,SAASoQ,UAAUA,CAAC5C,GAAG,EAAE;IACvB,IAAI6C,EAAE,GAAG7C,GAAG,CAACvQ,aAAa,CAAC,oBAAoB,CAAC;IAChD,IAAI,CAACoT,EAAE,EAAE;MAAE;IAAQ;IACnB,IAAIlQ,CAAC,GAAGqM,EAAE,CAACjC,GAAG,CAACK,EAAE,CAAC,GAAG,GAAG;MAAE3D,CAAC,GAAGuF,EAAE,CAACjC,GAAG,CAACM,EAAE,CAAC,GAAG,GAAG;IAC9CwF,EAAE,CAACpT,aAAa,CAAC,WAAW,CAAC,CAACqT,KAAK,CAACC,IAAI,GAAGpQ,CAAC,CAACgQ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAC7DE,EAAE,CAACpT,aAAa,CAAC,WAAW,CAAC,CAACqT,KAAK,CAACxC,KAAK,GAAGvF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEvB,CAAC,GAAG9G,CAAC,CAAC,CAACgQ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAC/EE,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC,CAACqT,KAAK,CAACC,IAAI,GAAG,GAAG;IAC7CF,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC,CAACqT,KAAK,CAACxC,KAAK,GAAG3N,CAAC,CAACgQ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAC7DE,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC,CAACqT,KAAK,CAACC,IAAI,GAAGtJ,CAAC,CAACkJ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAC5DE,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC,CAACqT,KAAK,CAACxC,KAAK,GAAGvF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAGvB,CAAC,CAAC,CAACkJ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAChF,IAAIK,EAAE,GAAGH,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC;MAAEwT,EAAE,GAAGJ,EAAE,CAACpT,aAAa,CAAC,UAAU,CAAC;IACxEuT,EAAE,CAACF,KAAK,CAACC,IAAI,GAAGpQ,CAAC,CAACgQ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAClCM,EAAE,CAACH,KAAK,CAACC,IAAI,GAAGtJ,CAAC,CAACkJ,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IAClCK,EAAE,CAACjT,YAAY,CAAC,eAAe,EAAEc,MAAM,CAACkK,IAAI,CAACsD,KAAK,CAACtB,GAAG,CAACK,EAAE,CAAC,CAAC,CAAC;IAC5D4F,EAAE,CAACjT,YAAY,CAAC,gBAAgB,EAAEqO,KAAK,CAACrB,GAAG,CAACK,EAAE,CAAC,CAAC;IAChD6F,EAAE,CAAClT,YAAY,CAAC,eAAe,EAAEc,MAAM,CAACkK,IAAI,CAACsD,KAAK,CAACtB,GAAG,CAACM,EAAE,CAAC,CAAC,CAAC;IAC5D4F,EAAE,CAAClT,YAAY,CAAC,gBAAgB,EAAEqO,KAAK,CAACrB,GAAG,CAACM,EAAE,CAAC,CAAC;IAChD,IAAI6F,KAAK,GAAGL,EAAE,CAACvG,gBAAgB,CAAC,YAAY,CAAC;IAC7C,KAAK,IAAI7N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyU,KAAK,CAACxU,MAAM,EAAED,CAAC,EAAE,EAAE;MACrCyU,KAAK,CAACzU,CAAC,CAAC,CAACqU,KAAK,CAACC,IAAI,GAAG,CAAC/D,EAAE,CAACjC,GAAG,CAACC,KAAK,CAACvO,CAAC,CAAC,CAAC,GAAG,GAAG,EAAEkU,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;IACjE;EACF;EACA,SAASQ,QAAQA,CAACnD,GAAG,EAAE;IACrB,IAAIrI,EAAE,GAAGqI,GAAG,CAACvQ,aAAa,CAAC,kBAAkB,CAAC;IAC9C,IAAI,CAACkI,EAAE,EAAE;MAAE;IAAQ;IACnB,IAAIjH,CAAC,GAAGsP,GAAG,CAACvQ,aAAa,CAAC,eAAe,CAAC;IAC1C,IAAIiB,CAAC,EAAE;MACLA,CAAC,CAACX,YAAY,CAAC,SAAS,EAAEgN,GAAG,CAACO,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;MAClD5M,CAAC,CAACyI,WAAW,GAAG,UAAU,GAAG4D,GAAG,CAACU,QAAQ;MACzC/M,CAAC,CAACoS,KAAK,CAACM,OAAO,GAAGrG,GAAG,CAACU,QAAQ,GAAG,EAAE,GAAG,MAAM;IAC9C;IACA,IAAIgC,KAAK,CAAC,CAAC,EAAE;MACX9H,EAAE,CAACK,SAAS,GAAG,sBAAsB,GAAG0H,MAAM,CAAC,CAAC,CAAChG,cAAc,CAAC,CAAC,GAAG,UAAU;MAC9E;IACF;IACA/B,EAAE,CAACK,SAAS,GAAG,KAAK,GAAGoG,KAAK,CAACrB,GAAG,CAACK,EAAE,CAAC,GAAG,KAAK,GAAGgB,KAAK,CAACrB,GAAG,CAACM,EAAE,CAAC,GAAG,SAAS,GACtEqC,MAAM,CAAC,CAAC,CAAChG,cAAc,CAAC,CAAC,GAAG,UAAU,IAAIqD,GAAG,CAACO,OAAO,GAAG,EAAE,GAAG,cAAc,CAAC;EAChF;EACA,SAAS+F,MAAMA,CAACC,IAAI,EAAE;IACpB,IAAI,CAAC1V,IAAI,EAAE;MAAE;IAAQ;IACrB,IAAIoS,GAAG,GAAGpS,IAAI,CAAC6B,aAAa,CAAC,cAAc,CAAC;IAC5C,IAAI,CAACuQ,GAAG,EAAE;MAAE;IAAQ;IACpB,IAAIsD,IAAI,EAAE;MAAEvD,SAAS,CAACC,GAAG,CAAC;MAAE0B,UAAU,CAAC1B,GAAG,CAAC;IAAE;IAC7C4C,UAAU,CAAC5C,GAAG,CAAC;IACfmD,QAAQ,CAACnD,GAAG,CAAC;EACf;EACA,SAASuD,UAAUA,CAACD,IAAI,EAAE;IACxB,IAAIvG,GAAG,CAACY,GAAG,EAAE;MAAE6F,oBAAoB,CAACzG,GAAG,CAACY,GAAG,CAAC;IAAE;IAC9CZ,GAAG,CAACY,GAAG,GAAG8F,qBAAqB,CAAC,YAAY;MAAE1G,GAAG,CAACY,GAAG,GAAG,CAAC;MAAE0F,MAAM,CAACC,IAAI,CAAC;IAAE,CAAC,CAAC;EAC7E;EACA;AACF;AACA;AACA;EACE,SAASI,MAAMA,CAAA,EAAG;IAChBzU,KAAK,CAAC4G,OAAO,CAAC,UAAU4D,CAAC,EAAE;MACzB,IAAIkK,IAAI,GAAGlK,CAAC,CAACX,GAAG,CAACxF,MAAM,CAAC,UAAU0C,CAAC,EAAE;QACnC,IAAIA,CAAC,CAAC8I,GAAG,KAAK,IAAI,IAAI9I,CAAC,CAAC8I,GAAG,KAAKhO,SAAS,EAAE;UAAE,OAAOiM,GAAG,CAACO,OAAO;QAAE;QACjE,OAAOtH,CAAC,CAAC+I,GAAG,IAAIhC,GAAG,CAACK,EAAE,IAAIpH,CAAC,CAAC8I,GAAG,IAAI/B,GAAG,CAACM,EAAE;MAC3C,CAAC,CAAC;MACF5D,CAAC,CAACnD,KAAK,CAACsN,WAAW,CAAC,CAAC;MACrB,IAAInK,CAAC,CAACnD,KAAK,CAACuN,SAAS,EAAE;QAAEpK,CAAC,CAACnD,KAAK,CAACuN,SAAS,CAACF,IAAI,CAAC;MAAE,CAAC,MAC9C;QAAEA,IAAI,CAAC9N,OAAO,CAAC,UAAUG,CAAC,EAAE;UAAEyD,CAAC,CAACnD,KAAK,CAACD,QAAQ,CAACL,CAAC,CAAC;QAAE,CAAC,CAAC;MAAE;IAC9D,CAAC,CAAC;EACJ;EACA,SAAS8N,IAAIA,CAAC1G,EAAE,EAAEC,EAAE,EAAE0G,KAAK,EAAE;IAC3BhH,GAAG,CAACK,EAAE,GAAGrC,IAAI,CAACC,GAAG,CAAC+B,GAAG,CAACI,GAAG,EAAEpC,IAAI,CAACoC,GAAG,CAACJ,GAAG,CAAC/B,GAAG,EAAED,IAAI,CAACsD,KAAK,CAACjB,EAAE,CAAC,CAAC,CAAC;IAC7DL,GAAG,CAACM,EAAE,GAAGtC,IAAI,CAACC,GAAG,CAAC+B,GAAG,CAACI,GAAG,EAAEpC,IAAI,CAACoC,GAAG,CAACJ,GAAG,CAAC/B,GAAG,EAAED,IAAI,CAACsD,KAAK,CAAChB,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAIN,GAAG,CAACK,EAAE,GAAGL,GAAG,CAACM,EAAE,EAAE;MAAE,IAAIpM,CAAC,GAAG8L,GAAG,CAACK,EAAE;MAAEL,GAAG,CAACK,EAAE,GAAGL,GAAG,CAACM,EAAE;MAAEN,GAAG,CAACM,EAAE,GAAGpM,CAAC;IAAE;IACpEsS,UAAU,CAAC,KAAK,CAAC;IACjB,IAAIQ,KAAK,EAAE;MAAEL,MAAM,CAAC,CAAC;IAAE;EACzB;EACA,SAASM,MAAMA,CAAA,EAAG;IAChB,IAAIhE,GAAG,GAAGxQ,QAAQ,CAACK,aAAa,CAAC,KAAK,CAAC;IACvCmQ,GAAG,CAACtL,SAAS,GAAG,aAAa;IAC7BsL,GAAG,CAAChI,SAAS,GACX,8BAA8B,GAC5B,wCAAwC,GACxC,0EAA0E,GAC1E,2EAA2E,GAC3E,yEAAyE,GACzE,yEAAyE,GACzE,uEAAuE,GACvE,sEAAsE,GACtE,qEAAqE,GACrE,uEAAuE,GACvE,wFAAwF,GACxF,2EAA2E,GAC3E,iDAAiD,GACnD,QAAQ,GACR,iCAAiC,GAC/B,iDAAiD,GACjD,gFAAgF,GAChF,+FAA+F,GAC/F,8FAA8F,GAC9F,iGAAiG,GACjG,+FAA+F,GACjG,QAAQ,GACR,sCAAsC;IACxCgI,GAAG,CAACrQ,gBAAgB,CAAC,OAAO,EAAE,UAAU6H,EAAE,EAAE;MAAEA,EAAE,CAAC2E,eAAe,CAAC,CAAC;IAAE,CAAC,CAAC;IACtE,IAAI0G,EAAE,GAAG7C,GAAG,CAACvQ,aAAa,CAAC,oBAAoB,CAAC;IAChD,IAAIuT,EAAE,GAAGhD,GAAG,CAACvQ,aAAa,CAAC,UAAU,CAAC;MAAEwT,EAAE,GAAGjD,GAAG,CAACvQ,aAAa,CAAC,UAAU,CAAC;IAC1E,IAAIwU,IAAI,GAAG,IAAI;IACf,SAASC,GAAGA,CAAC1M,EAAE,EAAE;MACf,IAAIpD,CAAC,GAAGyO,EAAE,CAACsB,qBAAqB,CAAC,CAAC;MAClC,IAAI,CAAC/P,CAAC,CAACkM,KAAK,EAAE;QAAE,OAAOvD,GAAG,CAACK,EAAE;MAAE;MAC/B,OAAO8B,IAAI,CAAC,CAAC1H,EAAE,CAAC4M,OAAO,GAAGhQ,CAAC,CAAC2O,IAAI,IAAI3O,CAAC,CAACkM,KAAK,CAAC;IAC9C;IACA;AACJ;IACI,SAAS+D,KAAKA,CAAC7M,EAAE,EAAE8M,KAAK,EAAE;MACxB,IAAIzJ,CAAC,GAAGqJ,GAAG,CAAC1M,EAAE,CAAC;MACf,IAAI8M,KAAK,KAAK,IAAI,EAAE;QAClBA,KAAK,GAAGvJ,IAAI,CAACwJ,GAAG,CAACvF,EAAE,CAACnE,CAAC,CAAC,GAAGmE,EAAE,CAACjC,GAAG,CAACK,EAAE,CAAC,CAAC,IAAIrC,IAAI,CAACwJ,GAAG,CAACvF,EAAE,CAACnE,CAAC,CAAC,GAAGmE,EAAE,CAACjC,GAAG,CAACM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;MAC9E;MACA4G,IAAI,GAAGK,KAAK;MACZ,CAACA,KAAK,GAAGrB,EAAE,GAAGD,EAAE,EAAEjT,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC;MAChD,IAAI;QAAE8S,EAAE,CAAC2B,iBAAiB,CAAChN,EAAE,CAACiN,SAAS,CAAC;MAAE,CAAC,CAAC,OAAOxS,CAAC,EAAE,CAAE;MACxDyS,IAAI,CAAClN,EAAE,CAAC;IACV;IACA,SAASkN,IAAIA,CAAClN,EAAE,EAAE;MAChB,IAAIyM,IAAI,KAAK,IAAI,EAAE;QAAE;MAAQ;MAC7B;AACN;AACA;AACA;MACM,IAAIzM,EAAE,CAACmN,OAAO,KAAK,CAAC,EAAE;QAAEC,GAAG,CAACpN,EAAE,CAAC;QAAE;MAAQ;MACzC,IAAIqD,CAAC,GAAGqJ,GAAG,CAAC1M,EAAE,CAAC;MACf,IAAIyM,IAAI,KAAK,CAAC,EAAE;QAAEH,IAAI,CAAC/I,IAAI,CAACoC,GAAG,CAACtC,CAAC,EAAEkC,GAAG,CAACM,EAAE,CAAC,EAAEN,GAAG,CAACM,EAAE,EAAE,KAAK,CAAC;MAAE,CAAC,MACxD;QAAEyG,IAAI,CAAC/G,GAAG,CAACK,EAAE,EAAErC,IAAI,CAACC,GAAG,CAACH,CAAC,EAAEkC,GAAG,CAACK,EAAE,CAAC,EAAE,KAAK,CAAC;MAAE;IACnD;IACA,SAASwH,GAAGA,CAACpN,EAAE,EAAE;MACf,IAAIyM,IAAI,KAAK,IAAI,EAAE;QAAE;MAAQ;MAC7B,CAACA,IAAI,GAAGhB,EAAE,GAAGD,EAAE,EAAE6B,eAAe,CAAC,WAAW,CAAC;MAC7CZ,IAAI,GAAG,IAAI;MACX,IAAI;QAAEpB,EAAE,CAACiC,qBAAqB,CAACtN,EAAE,CAACiN,SAAS,CAAC;MAAE,CAAC,CAAC,OAAOxS,CAAC,EAAE,CAAE;MAC5DyR,MAAM,CAAC,CAAC;MACRL,MAAM,CAAC,KAAK,CAAC;IACf;IACAR,EAAE,CAAClT,gBAAgB,CAAC,aAAa,EAAE,UAAU6H,EAAE,EAAE;MAC/C,IAAIA,EAAE,CAACuN,MAAM,EAAE;QAAE;MAAQ;MACzBvN,EAAE,CAACiF,cAAc,CAAC,CAAC;MACnB4H,KAAK,CAAC7M,EAAE,EAAEA,EAAE,CAACyE,MAAM,KAAK+G,EAAE,GAAG,CAAC,GAAIxL,EAAE,CAACyE,MAAM,KAAKgH,EAAE,GAAG,CAAC,GAAG,IAAK,CAAC;IACjE,CAAC,CAAC;IACFJ,EAAE,CAAClT,gBAAgB,CAAC,aAAa,EAAE+U,IAAI,CAAC;IACxC7B,EAAE,CAAClT,gBAAgB,CAAC,WAAW,EAAEiV,GAAG,CAAC;IACrC/B,EAAE,CAAClT,gBAAgB,CAAC,eAAe,EAAEiV,GAAG,CAAC;IACzC/B,EAAE,CAAClT,gBAAgB,CAAC,oBAAoB,EAAEiV,GAAG,CAAC;IAC9C;AACJ;IACI,SAASpH,IAAIA,CAAChG,EAAE,EAAE8M,KAAK,EAAE;MACvB,IAAIU,IAAI,GAAGxN,EAAE,CAACyN,QAAQ,GAAG,EAAE,GAAG,CAAC;QAAE7S,CAAC,GAAG,CAAC;MACtC,IAAIoF,EAAE,CAACC,GAAG,KAAK,WAAW,IAAID,EAAE,CAACC,GAAG,KAAK,WAAW,EAAE;QAAErF,CAAC,GAAG,CAAC4S,IAAI;MAAE,CAAC,MAC/D,IAAIxN,EAAE,CAACC,GAAG,KAAK,YAAY,IAAID,EAAE,CAACC,GAAG,KAAK,SAAS,EAAE;QAAErF,CAAC,GAAG4S,IAAI;MAAE,CAAC,MAClE,IAAIxN,EAAE,CAACC,GAAG,KAAK,UAAU,EAAE;QAAErF,CAAC,GAAG,CAAC,GAAG;MAAE,CAAC,MACxC,IAAIoF,EAAE,CAACC,GAAG,KAAK,QAAQ,EAAE;QAAErF,CAAC,GAAG,GAAG;MAAE,CAAC,MACrC,IAAIoF,EAAE,CAACC,GAAG,KAAK,MAAM,EAAE;QAAErF,CAAC,GAAGkS,KAAK,GAAGvH,GAAG,CAACI,GAAG,GAAGJ,GAAG,CAACM,EAAE,GAAGN,GAAG,CAACI,GAAG,GAAGJ,GAAG,CAACK,EAAE;MAAE,CAAC,MAC3E,IAAI5F,EAAE,CAACC,GAAG,KAAK,KAAK,EAAE;QAAErF,CAAC,GAAGkS,KAAK,GAAGvH,GAAG,CAAC/B,GAAG,GAAG+B,GAAG,CAACM,EAAE,GAAGN,GAAG,CAAC/B,GAAG,GAAG+B,GAAG,CAACK,EAAE;MAAE,CAAC,MAC1E;QAAE;MAAQ;MACf5F,EAAE,CAACiF,cAAc,CAAC,CAAC;MACnB,IAAI6H,KAAK,EAAE;QAAER,IAAI,CAAC/G,GAAG,CAACK,EAAE,EAAErC,IAAI,CAACC,GAAG,CAAC+B,GAAG,CAACK,EAAE,EAAEL,GAAG,CAACM,EAAE,GAAGjL,CAAC,CAAC,EAAE,IAAI,CAAC;MAAE,CAAC,MAC3D;QAAE0R,IAAI,CAAC/I,IAAI,CAACoC,GAAG,CAACJ,GAAG,CAACM,EAAE,EAAEN,GAAG,CAACK,EAAE,GAAGhL,CAAC,CAAC,EAAE2K,GAAG,CAACM,EAAE,EAAE,IAAI,CAAC;MAAE;IAC3D;IACA2F,EAAE,CAACrT,gBAAgB,CAAC,SAAS,EAAE,UAAU6H,EAAE,EAAE;MAAEgG,IAAI,CAAChG,EAAE,EAAE,CAAC,CAAC;IAAE,CAAC,CAAC;IAC9DyL,EAAE,CAACtT,gBAAgB,CAAC,SAAS,EAAE,UAAU6H,EAAE,EAAE;MAAEgG,IAAI,CAAChG,EAAE,EAAE,CAAC,CAAC;IAAE,CAAC,CAAC;IAC9DwI,GAAG,CAACvQ,aAAa,CAAC,eAAe,CAAC,CAACE,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACvEoN,GAAG,CAACO,OAAO,GAAG,CAACP,GAAG,CAACO,OAAO;MAC1BoG,MAAM,CAAC,CAAC;MACRL,MAAM,CAAC,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAOrD,GAAG;EACZ;EACA;AACF;EACE,SAAShH,KAAKA,CAAA,EAAG;IACf,IAAI,CAACpL,IAAI,EAAE;MAAE;IAAQ;IACrB,IAAIoS,GAAG,GAAGpS,IAAI,CAAC6B,aAAa,CAAC,cAAc,CAAC;IAC5C4P,QAAQ,CAAC,CAAC;IACV,IAAI,CAACtC,GAAG,CAACxN,IAAI,IAAI,CAACwN,GAAG,CAACU,QAAQ,EAAE;MAC9B,IAAIuC,GAAG,EAAE;QAAEA,GAAG,CAAC8C,KAAK,CAACM,OAAO,GAAG,MAAM;MAAE;MACvC;IACF;IACA,IAAI,CAACpD,GAAG,EAAE;MAAEA,GAAG,GAAGgE,MAAM,CAAC,CAAC;MAAEpW,IAAI,CAACwC,WAAW,CAAC4P,GAAG,CAAC;IAAE;IACnDA,GAAG,CAAC8C,KAAK,CAACM,OAAO,GAAG,EAAE;IACtB,IAAI,CAACrG,GAAG,CAACW,KAAK,EAAE;MACdX,GAAG,CAACW,KAAK,GAAG,IAAI;MAChB,IAAIzQ,MAAM,CAACiY,cAAc,EAAE;QACzB,IAAIjY,MAAM,CAACiY,cAAc,CAAC,YAAY;UAAE3B,UAAU,CAAC,IAAI,CAAC;QAAE,CAAC,CAAC,CAAC4B,OAAO,CAACnF,GAAG,CAAC;MAC3E,CAAC,MAAM;QACL/S,MAAM,CAAC0C,gBAAgB,CAAC,QAAQ,EAAE,YAAY;UAAE4T,UAAU,CAAC,IAAI,CAAC;QAAE,CAAC,CAAC;MACtE;IACF;IACA;IACA,IAAI,CAAC9D,KAAK,CAAC,CAAC,EAAE;MAAEiE,MAAM,CAAC,CAAC;IAAE;IAC1BL,MAAM,CAAC,IAAI,CAAC;EACd;EACA,SAAS+B,QAAQA,CAAA,EAAG;IAClB,IAAIzX,GAAG,EAAE;MAAE,IAAI;QAAEA,GAAG,CAACmP,MAAM,CAAC,CAAC;MAAE,CAAC,CAAC,OAAO7K,CAAC,EAAE,CAAE;MAAEtE,GAAG,GAAG,IAAI;IAAE;IAC3DE,MAAM,GAAG,CAAC,CAAC;IAAEC,OAAO,GAAG,CAAC,CAAC;IAAEmB,KAAK,GAAG,EAAE;IACrC8N,GAAG,CAACK,EAAE,GAAG,IAAI;IAAEL,GAAG,CAACM,EAAE,GAAG,IAAI;IAAEN,GAAG,CAACO,OAAO,GAAG,IAAI;IAAEP,GAAG,CAACQ,GAAG,GAAG,CAAC,CAAC;IAAER,GAAG,CAACS,IAAI,GAAG,EAAE;IAC7ET,GAAG,CAACU,QAAQ,GAAG,CAAC;IAAEV,GAAG,CAACxN,IAAI,GAAG,KAAK;IAAEwN,GAAG,CAACW,KAAK,GAAG,KAAK;IACrD,IAAI/F,EAAE,GAAGnI,QAAQ,CAACC,aAAa,CAAC,aAAa,CAAC;IAC9C,IAAIkI,EAAE,EAAE;MAAEA,EAAE,CAACmF,MAAM,CAAC,CAAC;IAAE;IACvBlP,IAAI,GAAG,IAAI;EACb;EACA,SAASyX,OAAOA,CAAA,EAAG;IAAE,OAAOlY,KAAK,CAACC,IAAI,CAACkY,QAAQ,CAACC,QAAQ,CAAC;EAAE;EAC3D,SAASC,IAAIA,CAAA,EAAG;IACd,IAAI,CAACH,OAAO,CAAC,CAAC,EAAE;MAAE,IAAIzX,IAAI,EAAE;QAAEwX,QAAQ,CAAC,CAAC;MAAE;MAAE;IAAQ;IACpD,IAAIxX,IAAI,EAAE;MAAE;IAAQ;IACpB,IAAI,CAAC4B,QAAQ,CAACC,aAAa,CAAC,cAAc,CAAC,EAAE;MAAE;IAAQ;IACvDY,KAAK,CAAC9C,WAAW,CAAC;IAAE8C,KAAK,CAAC5C,MAAM,CAAC;IACjCyB,MAAM,CAAC5B,UAAU,CAAC,CACf4K,IAAI,CAAC,YAAY;MAAE,OAAOhJ,MAAM,CAAC1B,KAAK,CAAC;IAAE,CAAC,CAAC,CAC3C0K,IAAI,CAAC,YAAY;MAAE,IAAImN,OAAO,CAAC,CAAC,IAAI,CAACzX,IAAI,EAAE;QAAEgM,KAAK,CAAC,CAAC;MAAE;IAAE,CAAC,CAAC,CAC1DzB,KAAK,CAAC,YAAY,CAAE,CAAC,CAAC;EAC3B;EACA,IAAIsN,IAAI,GAAG,CAAC;EACZ,SAASC,IAAIA,CAAA,EAAG;IACd,IAAID,IAAI,EAAE;MAAE;IAAQ;IACpBA,IAAI,GAAGhK,UAAU,CAAC,YAAY;MAAEgK,IAAI,GAAG,CAAC;MAAE,IAAI;QAAED,IAAI,CAAC,CAAC;MAAE,CAAC,CAAC,OAAOvT,CAAC,EAAE,CAAE;IAAE,CAAC,EAAE,GAAG,CAAC;EACjF;EACA0T,WAAW,CAACD,IAAI,EAAE,IAAI,CAAC;EACvBA,IAAI,CAAC,CAAC;AACR,CAAC,EAAE,CAAC;;AAEJ;AACAzY,MAAM,CAAC2Y,WAAW,GAAG;EACnB,gBAAgB,EAAE,4EAA4E;EAC9F,aAAa,EAAE,4EAA4E;EAC3F,aAAa,EAAE,4EAA4E;EAC3F,gBAAgB,EAAE;AACpB,CAAC;;AAED;AACA3Y,MAAM,CAACe,UAAU,GAAG;EAClB,YAAY,EAAE,4EAA4E;EAC1F,UAAU,EAAE,4EAA4E;EACxF,OAAO,EAAE,4EAA4E;EACrF,cAAc,EAAE,4EAA4E;EAC5F,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE,4EAA4E;EACvF,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY;EACX,IAAIf,MAAM,CAAC4Y,YAAY,EAAE;IAAE;EAAQ;EACnC5Y,MAAM,CAAC4Y,YAAY,GAAG,CAAC;EAEvB,IAAIC,MAAM,GAAG,CAAC,CAAC;IAAEC,OAAO,GAAG,CAAC,CAAC;EAC7B,IAAI9X,MAAM,GAAG,CACX;EACA;IAAEC,CAAC,EAAE,SAAS;IAAEC,CAAC,EAAE,eAAe;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE;EAAiB,CAAC,EACzE;IAAEH,CAAC,EAAE,WAAW;IAAEC,CAAC,EAAE,kBAAkB;IAAEC,IAAI,EAAE,GAAG;IAAEC,KAAK,EAAE,aAAa;IAAEC,EAAE,EAAE;EAAK,CAAC,EACpF;IAAEJ,CAAC,EAAE,WAAW;IAAEC,CAAC,EAAE,aAAa;IAAEC,IAAI,EAAE,GAAG;IAAEC,KAAK,EAAE;EAAc,CAAC,EACrE;IAAEH,CAAC,EAAE,WAAW;IAAEC,CAAC,EAAE,0BAA0B;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE;EAAW,CAAC,EAChF;IAAEH,CAAC,EAAE,cAAc;IAAEC,CAAC,EAAE,sBAAsB;IAAEC,IAAI,EAAE,IAAI;IAAEC,KAAK,EAAE,IAAI;IAAEC,EAAE,EAAE;EAAK,CAAC,CACpF;EAED,SAAS0X,IAAIA,CAACxR,CAAC,EAAE;IACf,IAAI,CAACA,CAAC,IAAI,CAACA,CAAC,CAACyR,GAAG,IAAIzR,CAAC,CAACyR,GAAG,CAACC,aAAa,EAAE;MAAE;IAAQ;IACnD1R,CAAC,CAACyR,GAAG,CAACC,aAAa,GAAG,CAAC;IACvB1R,CAAC,CAACyR,GAAG,CAACE,WAAW,CAAC,YAAY;MAC5B,IAAIxO,EAAE,GAAG,IAAI,CAACyO,YAAY,IAAI,IAAI,CAACA,YAAY,CAAC,CAAC;MACjD;AACN;AACA;MACM,IAAIC,OAAO,GAAG,CAACpZ,MAAM,CAACqZ,QAAQ,IAAIrZ,MAAM,CAACqZ,QAAQ,CAAC,CAAC,KAAK,OAAO;MAC/D,IAAI3O,EAAE,IAAIA,EAAE,CAACiF,SAAS,IAAIjF,EAAE,CAACiF,SAAS,CAACC,QAAQ,CAAC,WAAW,CAAC,IAAIwJ,OAAO,EAAE;QAAEpZ,MAAM,CAACsZ,YAAY,GAAG,IAAI;MAAE;IACzG,CAAC,CAAC;EACJ;EACA,IAAItZ,MAAM,CAACuH,CAAC,EAAE;IAAEwR,IAAI,CAAC/Y,MAAM,CAACuH,CAAC,CAAC;EAAE,CAAC,MAC5B;IACH,IAAI;MACF,IAAIgS,EAAE;MACNC,MAAM,CAACC,cAAc,CAACzZ,MAAM,EAAE,GAAG,EAAE;QACjC0Z,YAAY,EAAE,IAAI;QAClBC,GAAG,EAAE,SAAAA,CAAA,EAAY;UAAE,OAAOJ,EAAE;QAAE,CAAC;QAC/B7Q,GAAG,EAAE,SAAAA,CAAUC,CAAC,EAAE;UAAE4Q,EAAE,GAAG5Q,CAAC;UAAE,IAAI;YAAEoQ,IAAI,CAACpQ,CAAC,CAAC;UAAE,CAAC,CAAC,OAAO3D,CAAC,EAAE,CAAE;QAAE;MAC7D,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOA,CAAC,EAAE,CAAE;EAChB;EAEA,SAAS/C,MAAMA,CAACC,GAAG,EAAE;IACnB,OAAO,IAAIC,OAAO,CAAC,UAAUC,GAAG,EAAEC,GAAG,EAAE;MACrC,IAAIC,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,sBAAsB,GAAGN,GAAG,GAAG,IAAI,CAAC;MACtE,IAAII,IAAI,EAAE;QAAE,IAAIA,IAAI,CAACG,MAAM,EAAE;UAAEL,GAAG,CAAC,CAAC;QAAE,CAAC,MAAM;UAAEE,IAAI,CAACI,gBAAgB,CAAC,MAAM,EAAE,YAAY;YAAEN,GAAG,CAAC,CAAC;UAAE,CAAC,CAAC;QAAE;QAAE;MAAQ;MAChH,IAAIO,CAAC,GAAGJ,QAAQ,CAACK,aAAa,CAAC,QAAQ,CAAC;MACxCD,CAAC,CAACT,GAAG,GAAGA,GAAG;MAAES,CAAC,CAACE,KAAK,GAAG,IAAI;MAAEF,CAAC,CAACG,YAAY,CAAC,aAAa,EAAEZ,GAAG,CAAC;MAC/DS,CAAC,CAACI,MAAM,GAAG,YAAY;QAAEJ,CAAC,CAACF,MAAM,GAAG,CAAC;QAAEL,GAAG,CAAC,CAAC;MAAE,CAAC;MAC/CO,CAAC,CAACK,OAAO,GAAG,YAAY;QAAEX,GAAG,CAAC,IAAIY,KAAK,CAAC,aAAa,CAAC,CAAC;MAAE,CAAC;MAC1DV,QAAQ,CAACW,IAAI,CAACC,WAAW,CAACR,CAAC,CAAC;IAC9B,CAAC,CAAC;EACJ;EACA;AACF;AACA;EACE,SAASvB,KAAKA,CAACoC,IAAI,EAAE;IACnB,IAAIC,CAAC,GAAG,CAACzD,MAAM,CAAC2Y,WAAW,IAAI,CAAC,CAAC,EAAEnV,IAAI,CAAC,IAAI,CAACxD,MAAM,CAACe,UAAU,IAAI,CAAC,CAAC,EAAEyC,IAAI,CAAC;IAC3E,IAAI,CAACC,CAAC,EAAE;MAAE,OAAOtB,OAAO,CAACuB,MAAM,CAAC,IAAIT,KAAK,CAAC,aAAa,GAAGO,IAAI,CAAC,CAAC;IAAE;IAClE,OAAOvB,MAAM,CAACwB,CAAC,CAAC;EAClB;EACA,SAASE,GAAGA,CAAChB,CAAC,EAAE;IACd,OAAOiB,MAAM,CAACjB,CAAC,KAAK,IAAI,IAAIA,CAAC,KAAKkB,SAAS,GAAG,EAAE,GAAGlB,CAAC,CAAC,CAClDmB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;EAC/F;EACA,SAASC,IAAIA,CAACC,CAAC,EAAEC,GAAG,EAAE;IAAE,OAAOD,CAAC,GAAG,yBAAyB,IAAIC,GAAG,GAAG,GAAG,GAAGA,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,GAAGN,GAAG,CAACK,CAAC,CAAC,GAAG,SAAS,GAAG,EAAE;EAAE;EACxH,SAAS4V,GAAGA,CAACtW,CAAC,EAAEqF,CAAC,EAAE;IAAE,OAAOA,CAAC,GAAG,8BAA8B,GAAGhF,GAAG,CAACL,CAAC,CAAC,GAAG,MAAM,GAAGK,GAAG,CAACgF,CAAC,CAAC,GAAG,QAAQ,GAAG,EAAE;EAAE;EAC3G,SAASkR,GAAGA,CAAC1Y,IAAI,EAAE2Y,IAAI,EAAEpV,KAAK,EAAEC,IAAI,EAAE;IACpC,OAAO,mDAAmD,GACxD,+BAA+B,GAAGxD,IAAI,GAAG,GAAG,GAAGwC,GAAG,CAACmW,IAAI,CAAC,GAAG,SAAS,GACpE,4BAA4B,GAAGnW,GAAG,CAACe,KAAK,CAAC,GAAG,eAAe,GAC3D,4BAA4B,GAAGC,IAAI,GAAG,cAAc;EACxD;;EAEA;AACF;EACE;AACF;AACA;EACE,IAAIoV,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;EAEpE,SAASpN,KAAKA,CAACpF,CAAC,EAAEtC,GAAG,EAAE;IACrB,IAAI+U,CAAC,GAAGha,MAAM,CAACuI,MAAM,IAAI,CAAC,CAAC;IAC3B,IAAItD,GAAG,CAAChE,CAAC,KAAK,YAAY,EAAE;MAC1B,IAAIkE,CAAC,GAAG6U,CAAC,CAACC,SAAS;MACnB,IAAI,CAAC9U,CAAC,EAAE;QAAE,OAAO,IAAI;MAAE;MACvB,IAAIW,CAAC,GAAGyB,CAAC,CAAC2S,OAAO,CAAC/U,CAAC,EAAE;QACnB0Q,KAAK,EAAE,SAAAA,CAAU3D,CAAC,EAAE;UAClB,OAAO;YAAEiI,SAAS,EAAEJ,MAAM,CAAC7H,CAAC,CAACkI,UAAU,CAAC/U,CAAC,GAAG0U,MAAM,CAACtY,MAAM,CAAC;YAAE4Y,WAAW,EAAE,EAAE;YACzEC,KAAK,EAAE,sBAAsB;YAAEC,MAAM,EAAE;UAAG,CAAC;QAC/C,CAAC;QACDC,aAAa,EAAE,SAAAA,CAAUtI,CAAC,EAAEuI,GAAG,EAAE;UAC/BA,GAAG,CAACxR,SAAS,CAAC4Q,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE3H,CAAC,CAACkI,UAAU,CAAClZ,CAAC,EAC/C0Y,GAAG,CAAC,MAAM,EAAE1H,CAAC,CAACkI,UAAU,CAAC1U,CAAC,CAAC,CAAC,EAAE;YAAE/D,QAAQ,EAAE,GAAG;YAAEC,QAAQ,EAAE;UAAI,CAAC,CAAC;QACnE;MACF,CAAC,CAAC;MACF,OAAO;QAAEyH,KAAK,EAAEvD,CAAC;QAAEwD,KAAK,EAAEnE,CAAC,CAACuV,QAAQ,CAACjZ,MAAM;QAAEkZ,IAAI,EAAE;MAAK,CAAC;IAC3D;IACA,IAAI1V,GAAG,CAAChE,CAAC,KAAK,WAAW,IAAIgE,GAAG,CAAChE,CAAC,KAAK,WAAW,EAAE;MAClD,IAAIiB,GAAG,GAAG+C,GAAG,CAAChE,CAAC,KAAK,WAAW,GAAG+Y,CAAC,CAACY,MAAM,GAAGZ,CAAC,CAACa,MAAM;MACrD,IAAI,CAAC3Y,GAAG,EAAE;QAAE,OAAO,IAAI;MAAE;MACzB,IAAI4Y,KAAK,GAAG7V,GAAG,CAAChE,CAAC,KAAK,WAAW;MACjC,IAAI8Z,EAAE,GAAGxT,CAAC,CAAC2S,OAAO,CAAChY,GAAG,EAAE;QACtB2T,KAAK,EAAE,SAAAA,CAAA,EAAY;UACjB;UACA,OAAOiF,KAAK,GACR;YAAER,KAAK,EAAE,SAAS;YAAEC,MAAM,EAAE,GAAG;YAAES,OAAO,EAAE;UAAI,CAAC,GAC/C;YAAEV,KAAK,EAAE,SAAS;YAAEC,MAAM,EAAE,GAAG;YAAES,OAAO,EAAE;UAAI,CAAC;QACrD,CAAC;QACDR,aAAa,EAAE,SAAAA,CAAUtI,CAAC,EAAEuI,GAAG,EAAE;UAC/B,IAAIra,CAAC,GAAG8R,CAAC,CAACkI,UAAU;UACpBK,GAAG,CAACxR,SAAS,CAAC4Q,GAAG,CAACiB,KAAK,GAAG,GAAG,GAAG,GAAG,EAAEA,KAAK,GAAG,cAAc,GAAG,gBAAgB,EAAE1a,CAAC,CAACc,CAAC,EACjF,+BAA+B,GAAG6C,IAAI,CAAC3D,CAAC,CAAC4D,CAAC,CAAC,GAAGD,IAAI,CAAC3D,CAAC,CAAC+G,CAAC,GAAG/G,CAAC,CAAC+G,CAAC,GAAG,YAAY,GAAG,EAAE,CAAC,GAAGpD,IAAI,CAAC3D,CAAC,CAACiF,CAAC,CAAC,GAAG,QAAQ,GACxGuU,GAAG,CAAC,QAAQ,EAAEkB,KAAK,GAAG,0BAA0B,GAAG,qBAAqB,CAAC,CAAC,EAC1E;YAAEnZ,QAAQ,EAAE,GAAG;YAAEC,QAAQ,EAAE;UAAI,CAAC,CAAC;QACrC;MACF,CAAC,CAAC;MACF,OAAO;QAAEyH,KAAK,EAAE0R,EAAE;QAAEzR,KAAK,EAAEpH,GAAG,CAACwY,QAAQ,CAACjZ;MAAO,CAAC;IAClD;IACA,IAAIwD,GAAG,CAAChE,CAAC,KAAK,SAAS,EAAE;MACvB,IAAI0H,CAAC,GAAGqR,CAAC,CAACiB,SAAS;MACnB,IAAI,CAACtS,CAAC,EAAE;QAAE,OAAO,IAAI;MAAE;MACvB,IAAI9C,CAAC,GAAG8C,CAAC,CAACc,MAAM;QAAEW,EAAE,GAAGvE,CAAC,CAACE,OAAO,CAAC,MAAM,CAAC;QAAEmV,GAAG,GAAGrV,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;QAAEoV,GAAG,GAAGtV,CAAC,CAACE,OAAO,CAAC,KAAK,CAAC;MACxF,IAAIqV,EAAE,GAAGvV,CAAC,CAACE,OAAO,CAAC,QAAQ,CAAC;QAAEsV,EAAE,GAAGxV,CAAC,CAACE,OAAO,CAAC,QAAQ,CAAC;QAAEuV,EAAE,GAAGzV,CAAC,CAACE,OAAO,CAAC,UAAU,CAAC;MAClF,IAAIwV,EAAE,GAAG1V,CAAC,CAACE,OAAO,CAAC,UAAU,CAAC;QAAEoE,EAAE,GAAGtE,CAAC,CAACE,OAAO,CAAC,WAAW,CAAC;QAAE6D,EAAE,GAAG/D,CAAC,CAACE,OAAO,CAAC,eAAe,CAAC;MAC5F,IAAIyV,IAAI,GAAG3V,CAAC,CAACE,OAAO,CAAC,YAAY,CAAC;MAClC,IAAI0V,EAAE,GAAGlU,CAAC,CAACmU,UAAU,CAAC,CAAC;QAAEC,KAAK,GAAG,EAAE;MACnChT,CAAC,CAACA,CAAC,CAACC,OAAO,CAAC,UAAUhD,GAAG,EAAE;QACzB,IAAImD,CAAC,GAAGxB,CAAC,CAACyB,MAAM,CAAC,CAACpD,GAAG,CAACsV,GAAG,CAAC,EAAEtV,GAAG,CAACuV,GAAG,CAAC,CAAC,EAAE;UAAEha,IAAI,EAAEya,QAAQ,CAAC,KAAK,CAAC;UAAEC,QAAQ,EAAE;QAAM,CAAC,CAAC;QAClF9S,CAAC,CAAC+S,IAAI,GAAGlY,MAAM,CAACgC,GAAG,CAACwE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC2R,WAAW,CAAC,CAAC;QAC5ChT,CAAC,CAACiT,KAAK,GAAGpW,GAAG,CAACsV,GAAG,CAAC;QAAEnS,CAAC,CAACkT,KAAK,GAAGrW,GAAG,CAACuV,GAAG,CAAC;QAAEpS,CAAC,CAACmT,KAAK,GAAG,KAAK;QACvDnT,CAAC,CAACE,SAAS,CAAC,YAAY;UACtB,OAAO4Q,GAAG,CAAC,IAAI,EAAE9Q,CAAC,CAACmT,KAAK,GAAG,mBAAmB,GAAG,SAAS,EAAEtW,GAAG,CAACwE,EAAE,CAAC,EACjE,+BAA+B,GAAGrG,IAAI,CAAC4E,CAAC,CAACsE,IAAI,CAACrH,GAAG,CAACyV,EAAE,CAAC,CAAC,CAAC,GACvDtX,IAAI,CAAC6B,GAAG,CAACwV,EAAE,CAAC,GAAGxV,GAAG,CAACwV,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAGrX,IAAI,CAAC4E,CAAC,CAACwT,MAAM,CAACvW,GAAG,CAAC0V,EAAE,CAAC,CAAC,CAAC,IAC5DvS,CAAC,CAACmT,KAAK,GAAGnY,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,GAC5D6V,GAAG,CAAC,qBAAqB,EAAEhU,GAAG,CAACgE,EAAE,CAAC,CAAC,GACnCgQ,GAAG,CAAC,OAAO,EAAE,CAACjR,CAAC,CAACyT,MAAM,CAACxW,GAAG,CAAC2V,EAAE,CAAC,CAAC,EAAE5S,CAAC,CAAC0T,OAAO,CAACzW,GAAG,CAACuE,EAAE,CAAC,CAAC,CAAC,CAAC9D,MAAM,CAACC,OAAO,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC,CAAC,GAChFqU,GAAG,CAAC,oBAAoB,EAAEhU,GAAG,CAAC4V,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC,EAAE;UAAE7Z,QAAQ,EAAE,GAAG;UAAEC,QAAQ,EAAE;QAAI,CAAC,CAAC;QACpC6Z,EAAE,CAACrS,QAAQ,CAACL,CAAC,CAAC;QAAE4S,KAAK,CAACvU,IAAI,CAAC2B,CAAC,CAAC;MAC/B,CAAC,CAAC;MACFuT,IAAI,GAAGX,KAAK;MACZY,gBAAgB,CAAC,CAAC;MAClB,OAAO;QAAElT,KAAK,EAAEoS,EAAE;QAAEnS,KAAK,EAAEX,CAAC,CAACA,CAAC,CAAClH;MAAO,CAAC;IACzC;IACA,IAAIwD,GAAG,CAAChE,CAAC,KAAK,WAAW,EAAE;MACzB,IAAI0B,CAAC,GAAG3C,MAAM,CAACuI,MAAM,CAACoB,MAAM;MAC5B,IAAI,CAAChH,CAAC,EAAE;QAAE,OAAO,IAAI;MAAE;MACvB,IAAI6Z,EAAE,GAAG7Z,CAAC,CAAC8G,MAAM;QAAEgT,GAAG,GAAGD,EAAE,CAACzW,OAAO,CAAC,KAAK,CAAC;QAAE2W,GAAG,GAAGF,EAAE,CAACzW,OAAO,CAAC,KAAK,CAAC;MACnE,SAAS4W,EAAEA,CAAC/W,GAAG,EAAE3E,CAAC,EAAE;QAAE,OAAO2E,GAAG,CAAC4W,EAAE,CAACzW,OAAO,CAAC9E,CAAC,CAAC,CAAC;MAAE;MACjD;AACN;AACA;MACM,IAAI2b,EAAE,GAAGrV,CAAC,CAACmU,UAAU,CAAC,CAAC;QAAEmB,IAAI,GAAG,EAAE;MAClC,IAAIC,IAAI,GAAGna,CAAC,CAACgG,CAAC,CAACjI,GAAG,CAAC,UAAUkF,GAAG,EAAE;QAChC,OAAO;UAAEmX,EAAE,EAAEnX,GAAG,CAAC6W,GAAG,CAAC;UAAEtM,EAAE,EAAEvK,GAAG,CAAC8W,GAAG,CAAC;UAAE9W,GAAG,EAAEA,GAAG;UAAEmD,CAAC,EAAE;QAAK,CAAC;MAC1D,CAAC,CAAC;MACF,SAAS4B,KAAKA,CAAC/E,GAAG,EAAE;QAClB,IAAIQ,KAAK,GAAG,CAACuW,EAAE,CAAC/W,GAAG,EAAE,UAAU,CAAC,EAAE+W,EAAE,CAAC/W,GAAG,EAAE,MAAM,CAAC,EAAE+W,EAAE,CAAC/W,GAAG,EAAE,SAAS,CAAC,CAAC,CAACS,MAAM,CAACC,OAAO,CAAC;QACtF,IAAIG,KAAK,GAAGkW,EAAE,CAAC/W,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG;QACpC,OAAOiU,GAAG,CAAC,IAAI,EAAE,cAAc,EAAEzT,KAAK,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACnB,IAAI,CAAC,IAAI,CAAC,IAAIoX,EAAE,CAAC/W,GAAG,EAAE,SAAS,CAAC,EACjF,+BAA+B,GAAG7B,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG7B,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,MAAM,CAAC,CAAC,IAC3Fa,KAAK,GAAG1C,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAGA,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,UAAU,GAAG,oBAAoB,CAAC,CAAC,GACxG7B,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG7B,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,MAAM,CAAC,CAAC,GACjD7B,IAAI,CAAC4Y,EAAE,CAAC/W,GAAG,EAAE,WAAW,CAAC,KAAK,OAAO,GAAG,gBAAgB,GAAG+W,EAAE,CAAC/W,GAAG,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,QAAQ,GACzGgU,GAAG,CAAC,OAAO,EAAExT,KAAK,CAACb,IAAI,CAAC,IAAI,CAAC,CAAC,GAAGqU,GAAG,CAAC,QAAQ,EAAE+C,EAAE,CAAC/W,GAAG,EAAE,MAAM,CAAC,CAAC,GAC/DgU,GAAG,CAAC,QAAQ,EAAE+C,EAAE,CAAC/W,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAGgU,GAAG,CAAC,OAAO,EAAE+C,EAAE,CAAC/W,GAAG,EAAE,SAAS,CAAC,CAAC,GACnEgU,GAAG,CAAC,QAAQ,EAAE+C,EAAE,CAAC/W,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;MACrC;MACA,SAASoX,IAAIA,CAAA,EAAG;QACd,IAAItc,GAAG,GAAGV,MAAM,CAACsZ,YAAY;QAC7B,IAAI,CAAC5Y,GAAG,IAAI,CAACA,GAAG,CAAC4L,QAAQ,CAACsQ,EAAE,CAAC,EAAE;UAAE;QAAQ;QACzC,IAAIpQ,CAAC,GAAG9L,GAAG,CAACuc,SAAS,CAAC,CAAC;UAAEC,KAAK,GAAG,CAAC;QAClCJ,IAAI,CAAClU,OAAO,CAAC,UAAUuU,CAAC,EAAE;UACxB,IAAIC,MAAM,GAAG5Q,CAAC,CAACoD,QAAQ,CAAC,CAACuN,CAAC,CAACJ,EAAE,EAAEI,CAAC,CAAChN,EAAE,CAAC,CAAC,IAAI+M,KAAK,GAAG,IAAI;UACrD,IAAIE,MAAM,EAAE;YAAEF,KAAK,EAAE;UAAE;UACvB,IAAIE,MAAM,IAAI,CAACD,CAAC,CAACpU,CAAC,EAAE;YAClBoU,CAAC,CAACpU,CAAC,GAAGxB,CAAC,CAACyB,MAAM,CAAC,CAACmU,CAAC,CAACJ,EAAE,EAAEI,CAAC,CAAChN,EAAE,CAAC,EAAE;cAAEhP,IAAI,EAAEkc,SAAS,CAACV,EAAE,CAACQ,CAAC,CAACvX,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC;cAAEiW,QAAQ,EAAE;YAAM,CAAC,CAAC;YAC9FsB,CAAC,CAACpU,CAAC,CAACE,SAAS,CAAC,YAAY;cAAE,OAAO0B,KAAK,CAACwS,CAAC,CAACvX,GAAG,CAAC;YAAE,CAAC,EAAE;cAAEjE,QAAQ,EAAE,GAAG;cAAEC,QAAQ,EAAE;YAAI,CAAC,CAAC;YACrFgb,EAAE,CAACxT,QAAQ,CAAC+T,CAAC,CAACpU,CAAC,CAAC;UAClB,CAAC,MAAM,IAAI,CAACqU,MAAM,IAAID,CAAC,CAACpU,CAAC,EAAE;YACzB6T,EAAE,CAACrQ,WAAW,CAAC4Q,CAAC,CAACpU,CAAC,CAAC;YAAEoU,CAAC,CAACpU,CAAC,GAAG,IAAI;UACjC;QACF,CAAC,CAAC;MACJ;MACAuU,UAAU,GAAGN,IAAI;MACjBA,IAAI,CAAC,CAAC;MACN,OAAO;QAAE3T,KAAK,EAAEuT,EAAE;QAAEtT,KAAK,EAAE3G,CAAC,CAACgG,CAAC,CAAClH;MAAO,CAAC;IACzC;IACA,IAAIwD,GAAG,CAAChE,CAAC,KAAK,cAAc,EAAE;MAC5B;AACN;AACA;AACA;AACA;AACA;MACM,IAAIsc,EAAE,GAAGhW,CAAC,CAACmU,UAAU,CAAC,CAAC;MACvB8B,MAAM,GAAGD,EAAE;MACXE,mBAAmB,CAAC,CAAC;MACrB,OAAO;QAAEpU,KAAK,EAAEkU,EAAE;QAAEjU,KAAK,EAAE,CAAC;QAAEuT,IAAI,EAAE;MAAK,CAAC;IAC5C;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;EACE,IAAIP,IAAI,GAAG,EAAE;IAAEkB,MAAM,GAAG,IAAI;IAAEF,UAAU,GAAG,IAAI;EAC/C,SAASD,SAASA,CAAC5W,KAAK,EAAE;IACxB,IAAI9D,CAAC,GAAG8D,KAAK,GAAG,EAAE,GAAG,EAAE;IACvB,OAAOzG,MAAM,CAACuH,CAAC,CAACC,OAAO,CAAC;MAAEC,SAAS,EAAE,EAAE;MACrCC,IAAI,EAAE,oBAAoB,IAAIjB,KAAK,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,aAAa;MACtEkB,QAAQ,EAAE,CAAChF,CAAC,EAAEA,CAAC,CAAC;MAAEiF,UAAU,EAAE,CAACjF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC;IAAE,CAAC,CAAC;EACnD;EACA,SAAS8a,mBAAmBA,CAAA,EAAG;IAC7B,IAAIC,EAAE,GAAG1d,MAAM,CAACuH,CAAC;IACjB,IAAI,CAACiW,MAAM,IAAI,CAACE,EAAE,EAAE;MAAE;IAAQ;IAC9B,IAAIC,GAAG,GAAG,CAAC,iBAAiB,EAAE,sEAAsE,CAAC;IACrG,IAAInc,CAAC,GAAG,CAAC;IACT,SAASoc,OAAOA,CAAA,EAAG;MACjB,IAAIpc,CAAC,IAAImc,GAAG,CAAClc,MAAM,EAAE;QAAE;MAAQ;MAC/Boc,KAAK,CAACF,GAAG,CAACnc,CAAC,EAAE,CAAC,EAAE;QAAEsc,OAAO,EAAE;UAAEC,MAAM,EAAE;QAAmB,CAAC;QAAEpL,KAAK,EAAE;MAAW,CAAC,CAAC,CAC5E1H,IAAI,CAAC,UAAU9D,CAAC,EAAE;QAAE,OAAOA,CAAC,CAAC6W,EAAE,GAAG7W,CAAC,CAAC8W,IAAI,CAAC,CAAC,GAAG,IAAI;MAAE,CAAC,CAAC,CACrDhT,IAAI,CAAC,UAAUsK,CAAC,EAAE;QACjB,IAAI,CAACA,CAAC,IAAI,CAACA,CAAC,CAAC2I,MAAM,EAAE;UAAEN,OAAO,CAAC,CAAC;UAAE;QAAQ;QAC1C,IAAIO,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ;QACtC,IAAIC,IAAI,GAAG/I,CAAC,CAAC2I,MAAM,CAAC7X,MAAM,CAAC,UAAUrB,CAAC,EAAE;UACtC,IAAI,CAACA,CAAC,IAAIA,CAAC,CAACzD,KAAK,KAAK,QAAQ,EAAE;YAAE,OAAO,KAAK;UAAE;UAChD,IAAIgd,EAAE,GAAGvZ,CAAC,CAACuZ,EAAE,GAAG,IAAIH,IAAI,CAACpZ,CAAC,CAACuZ,EAAE,CAAC,CAACC,OAAO,CAAC,CAAC,GAAG,CAAC;UAC5C,OAAO,CAACD,EAAE,IAAIA,EAAE,IAAIJ,IAAI;QAC1B,CAAC,CAAC;QACFX,MAAM,CAAC7G,WAAW,CAAC,CAAC;QACpB2H,IAAI,CAAC1V,OAAO,CAAC,UAAU5D,CAAC,EAAE;UACxB,IAAI+D,CAAC,GAAG2U,EAAE,CAAC1U,MAAM,CAAC,CAAChE,CAAC,CAAC6D,GAAG,EAAE7D,CAAC,CAAC8D,GAAG,CAAC,EAAE;YAAE3H,IAAI,EAAEkc,SAAS,CAAC,IAAI,CAAC;YAAExB,QAAQ,EAAE;UAAM,CAAC,CAAC;UAC7E9S,CAAC,CAACE,SAAS,CAAC4Q,GAAG,CAAC,IAAI,EAAE,wBAAwB,EAAE7U,CAAC,CAACN,KAAK,EACrD,+BAA+B,GAAGX,IAAI,CAACiB,CAAC,CAACuZ,EAAE,GAAG3a,MAAM,CAACoB,CAAC,CAACuZ,EAAE,CAAC,CAAC7X,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,GAC1F3C,IAAI,CAAC,WAAW,CAAC,GAAG,QAAQ,IAC3BiB,CAAC,CAACV,GAAG,GAAG,oCAAoC,GAAGU,CAAC,CAACV,GAAG,GAAG,uEAAuE,GAAG,EAAE,CAAC,CAAC,EACtI;YAAE3C,QAAQ,EAAE,GAAG;YAAEC,QAAQ,EAAE;UAAI,CAAC,CAAC;UACnC4b,MAAM,CAACpU,QAAQ,CAACL,CAAC,CAAC;QACpB,CAAC,CAAC;QACFO,KAAK,CAAC,cAAc,EAAEgV,IAAI,CAAC7c,MAAM,GAAGmC,MAAM,CAAC0a,IAAI,CAAC7c,MAAM,CAAC,GAAG,kBAAkB,CAAC;MAC/E,CAAC,CAAC,CACDyJ,KAAK,CAAC,YAAY;QAAE0S,OAAO,CAAC,CAAC;MAAE,CAAC,CAAC;IACtC;IACAA,OAAO,CAAC,CAAC;EACX;EACAlF,WAAW,CAAC,YAAY;IAAE,IAAI;MAAE+E,mBAAmB,CAAC,CAAC;IAAE,CAAC,CAAC,OAAOzY,CAAC,EAAE,CAAE;EAAE,CAAC,EAAE,MAAM,CAAC;EACjF,SAAS4W,QAAQA,CAACva,EAAE,EAAE;IACpB,IAAIsB,CAAC,GAAGtB,EAAE,GAAG,EAAE,GAAG,EAAE;IACpB,OAAOrB,MAAM,CAACuH,CAAC,CAACC,OAAO,CAAC;MAAEC,SAAS,EAAE,EAAE;MACrCC,IAAI,EAAE,oBAAoB,IAAIrG,EAAE,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,aAAa;MACpEsG,QAAQ,EAAE,CAAChF,CAAC,EAAEA,CAAC,CAAC;MAAEiF,UAAU,EAAE,CAACjF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC;IAAE,CAAC,CAAC;EACnD;EACA,SAAS4Z,gBAAgBA,CAAA,EAAG;IAC1B,IAAI,CAACD,IAAI,CAAC7a,MAAM,EAAE;MAAE;IAAQ;IAC5B,IAAIkc,GAAG,GAAG,CAAC,iBAAiB,EAAE,sEAAsE,CAAC;IACrG,IAAInc,CAAC,GAAG,CAAC;IACT,SAASoc,OAAOA,CAAA,EAAG;MACjB,IAAIpc,CAAC,IAAImc,GAAG,CAAClc,MAAM,EAAE;QAAE;MAAQ;MAC/Boc,KAAK,CAACF,GAAG,CAACnc,CAAC,EAAE,CAAC,EAAE;QAAEsc,OAAO,EAAE;UAAEC,MAAM,EAAE;QAAmB,CAAC;QAAEpL,KAAK,EAAE;MAAW,CAAC,CAAC,CAC5E1H,IAAI,CAAC,UAAU9D,CAAC,EAAE;QAAE,OAAOA,CAAC,CAAC6W,EAAE,GAAG7W,CAAC,CAAC8W,IAAI,CAAC,CAAC,GAAG,IAAI;MAAE,CAAC,CAAC,CACrDhT,IAAI,CAAC,UAAUsK,CAAC,EAAE;QACjB,IAAI,CAACA,CAAC,IAAI,CAACA,CAAC,CAAC2I,MAAM,EAAE;UAAEN,OAAO,CAAC,CAAC;UAAE;QAAQ;QAC1C,IAAIf,IAAI,GAAGtH,CAAC,CAAC2I,MAAM,CAAC7X,MAAM,CAAC,UAAUrB,CAAC,EAAE;UAAE,OAAOA,CAAC,IAAIA,CAAC,CAACzD,KAAK,KAAK,WAAW;QAAE,CAAC,CAAC;QACjF+a,IAAI,CAAC1T,OAAO,CAAC,UAAUG,CAAC,EAAE;UACxB,IAAI1H,EAAE,GAAGwb,IAAI,CAACtN,IAAI,CAAC,UAAUvK,CAAC,EAAE;YAC9B,IAAIhB,CAAC,GAAGJ,MAAM,CAACoB,CAAC,CAACN,KAAK,IAAI,EAAE,CAAC,CAACqX,WAAW,CAAC,CAAC;YAC3C,IAAIhT,CAAC,CAAC+S,IAAI,IAAI/S,CAAC,CAAC+S,IAAI,CAACra,MAAM,GAAG,CAAC,IAAIuC,CAAC,CAAC+B,OAAO,CAACgD,CAAC,CAAC+S,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;cAAE,OAAO,IAAI;YAAE;YAC1E,OAAOhO,IAAI,CAACwJ,GAAG,CAACtS,CAAC,CAAC6D,GAAG,GAAGE,CAAC,CAACiT,KAAK,CAAC,GAAG,GAAG,IAAIlO,IAAI,CAACwJ,GAAG,CAACtS,CAAC,CAAC8D,GAAG,GAAGC,CAAC,CAACkT,KAAK,CAAC,GAAG,GAAG;UAC3E,CAAC,CAAC;UACF,IAAI5a,EAAE,KAAK0H,CAAC,CAACmT,KAAK,EAAE;YAAEnT,CAAC,CAACmT,KAAK,GAAG7a,EAAE;YAAE0H,CAAC,CAAC0V,OAAO,CAAC7C,QAAQ,CAACva,EAAE,CAAC,CAAC;YAAE0H,CAAC,CAAC2V,eAAe,CAACrd,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;UAAE;QAChG,CAAC,CAAC;MACJ,CAAC,CAAC,CACD6J,KAAK,CAAC,YAAY;QAAE0S,OAAO,CAAC,CAAC;MAAE,CAAC,CAAC;IACtC;IACAA,OAAO,CAAC,CAAC;EACX;EACAlF,WAAW,CAAC,YAAY;IAAE,IAAI;MAAE6D,gBAAgB,CAAC,CAAC;IAAE,CAAC,CAAC,OAAOvX,CAAC,EAAE,CAAE;EAAE,CAAC,EAAE,MAAM,CAAC;EAE9E,SAAS0G,MAAMA,CAACzG,GAAG,EAAE;IACnB,IAAI4T,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,EAAE;MAAE,OAAOkB,OAAO,CAACwJ,OAAO,CAACkN,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,CAAC;IAAE;IAC5D,IAAI6X,OAAO,CAAC7T,GAAG,CAAChE,CAAC,CAAC,EAAE;MAAE,OAAO6X,OAAO,CAAC7T,GAAG,CAAChE,CAAC,CAAC;IAAE;IAC7C,IAAI0d,IAAI,GAAG1Z,GAAG,CAAC7D,KAAK,GAAGA,KAAK,CAAC6D,GAAG,CAAC7D,KAAK,CAAC,GAAGe,OAAO,CAACwJ,OAAO,CAAC,CAAC;IAC3DmN,OAAO,CAAC7T,GAAG,CAAChE,CAAC,CAAC,GAAG0d,IAAI,CAAC1T,IAAI,CAAC,YAAY;MACrC,IAAIuB,CAAC,GAAGG,KAAK,CAAC3M,MAAM,CAACuH,CAAC,EAAEtC,GAAG,CAAC;MAC5B,IAAI,CAACuH,CAAC,EAAE;QAAE,MAAM,IAAIvJ,KAAK,CAAC,SAAS,CAAC;MAAE;MACtC4V,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,GAAGuL,CAAC;MACjB,OAAOA,CAAC;IACV,CAAC,CAAC,CAACtB,KAAK,CAAC,UAAUlG,CAAC,EAAE;MAAE8T,OAAO,CAAC7T,GAAG,CAAChE,CAAC,CAAC,GAAG,IAAI;MAAE,MAAM+D,CAAC;IAAE,CAAC,CAAC;IAC1D,OAAO8T,OAAO,CAAC7T,GAAG,CAAChE,CAAC,CAAC;EACvB;EAEA,SAASqI,KAAKA,CAACrI,CAAC,EAAEgL,IAAI,EAAE;IACtB,IAAIrG,GAAG,GAAGrD,QAAQ,CAACC,aAAa,CAAC,gBAAgB,GAAGvB,CAAC,GAAG,UAAU,CAAC;IACnE,IAAI2E,GAAG,EAAE;MAAEA,GAAG,CAACsG,WAAW,GAAGD,IAAI;IAAE;EACrC;EAEA,SAASG,MAAMA,CAACnH,GAAG,EAAE5D,EAAE,EAAE;IACvB,IAAIX,GAAG,GAAGV,MAAM,CAACsZ,YAAY;IAC7B,IAAI,CAAC5Y,GAAG,EAAE;MAAE;IAAQ;IACpB,IAAI,CAACW,EAAE,EAAE;MACP,IAAIwX,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,IAAIP,GAAG,CAAC4L,QAAQ,CAACuM,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,CAACoI,KAAK,CAAC,EAAE;QAAE3I,GAAG,CAAC6L,WAAW,CAACsM,MAAM,CAAC5T,GAAG,CAAChE,CAAC,CAAC,CAACoI,KAAK,CAAC;MAAE;MAChG;IACF;IACAC,KAAK,CAACrE,GAAG,CAAChE,CAAC,EAAE,SAAS,CAAC;IACvByK,MAAM,CAACzG,GAAG,CAAC,CAACgG,IAAI,CAAC,UAAUuB,CAAC,EAAE;MAC5BlD,KAAK,CAACrE,GAAG,CAAChE,CAAC,EAAEuL,CAAC,CAAClD,KAAK,CAACmD,cAAc,CAAC,CAAC,CAAC;MACtC,IAAIJ,GAAG,GAAG9J,QAAQ,CAACC,aAAa,CAAC,gBAAgB,GAAGyC,GAAG,CAAChE,CAAC,GAAG,IAAI,CAAC;MACjE,IAAIoL,GAAG,IAAIA,GAAG,CAACK,OAAO,EAAE;QACtBhM,GAAG,CAAC0I,QAAQ,CAACoD,CAAC,CAACnD,KAAK,CAAC;QACrB;QACA,IAAIpE,GAAG,CAAChE,CAAC,KAAK,WAAW,IAAIqc,UAAU,EAAE;UAAE,IAAI;YAAEA,UAAU,CAAC,CAAC;UAAE,CAAC,CAAC,OAAOtY,CAAC,EAAE,CAAE;QAAE;QAC/E;QACA,IAAIwH,CAAC,CAACmO,IAAI,IAAInO,CAAC,CAACnD,KAAK,CAACuV,WAAW,EAAE;UAAEpS,CAAC,CAACnD,KAAK,CAACuV,WAAW,CAAC,CAAC;QAAE;MAC9D;IACF,CAAC,CAAC,CAAC1T,KAAK,CAAC,YAAY;MACnB5B,KAAK,CAACrE,GAAG,CAAChE,CAAC,EAAE,SAAS,CAAC;MACvB,IAAIoL,GAAG,GAAG9J,QAAQ,CAACC,aAAa,CAAC,gBAAgB,GAAGyC,GAAG,CAAChE,CAAC,GAAG,IAAI,CAAC;MACjE,IAAIoL,GAAG,EAAE;QAAEA,GAAG,CAACK,OAAO,GAAG,KAAK;MAAE;IAClC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,SAASmS,KAAKA,CAAA,EAAG;IACf,IAAI,CAAC7e,MAAM,CAACsZ,YAAY,EAAE;MAAE;IAAQ;IACpC,IAAInK,KAAK,GAAG5M,QAAQ,CAAC8M,gBAAgB,CAAC,mCAAmC,CAAC;IAC1E,IAAI,CAACF,KAAK,CAAC1N,MAAM,EAAE;MAAE;IAAQ;IAC7B,IAAIqd,KAAK,GAAG3P,KAAK,CAAC,CAAC,CAAC,CAAC4P,OAAO,CAAC,cAAc,CAAC;IAC5C,IAAIpa,IAAI,GAAGma,KAAK,KAAKA,KAAK,CAACtc,aAAa,CAAC,iBAAiB,CAAC,IAAIsc,KAAK,CAAC;IACrE,IAAI,CAACna,IAAI,IAAIA,IAAI,CAACnC,aAAa,CAAC,eAAe,CAAC,EAAE;MAAE;IAAQ;IAC5D,IAAIwc,IAAI,GAAG7P,KAAK,CAAC,CAAC,CAAC,CAAC4P,OAAO,CAAC,OAAO,CAAC,GAAG5P,KAAK,CAAC,CAAC,CAAC,CAAC4P,OAAO,CAAC,OAAO,CAAC,CAACE,aAAa,GAAGta,IAAI;IACrF,IAAIua,MAAM,GAAGva,IAAI,CAACnC,aAAa,CAAC,eAAe,CAAC;IAEhDxB,MAAM,CAAC4H,OAAO,CAAC,UAAU3D,GAAG,EAAE;MAC5B,IAAIW,GAAG,GAAGrD,QAAQ,CAACK,aAAa,CAAC,OAAO,CAAC;MACzCgD,GAAG,CAAC9C,YAAY,CAAC,aAAa,EAAEmC,GAAG,CAAChE,CAAC,CAAC;MACtC2E,GAAG,CAAC9C,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC;MACxC8C,GAAG,CAACmF,SAAS,GAAG,wCAAwC,GAAG9F,GAAG,CAAChE,CAAC,GAAG,iBAAiB,GAAGgE,GAAG,CAAChE,CAAC,GAAG,GAAG,IAC/FgE,GAAG,CAAC5D,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAChC,uBAAuB,GAAG4D,GAAG,CAAC9D,IAAI,GAAG,MAAM,GAAGwC,GAAG,CAACsB,GAAG,CAAC/D,CAAC,CAAC,GACxD,gFAAgF;MAClF0E,GAAG,CAACpD,aAAa,CAAC,OAAO,CAAC,CAACE,gBAAgB,CAAC,QAAQ,EAAE,UAAU6H,EAAE,EAAE;QAClE6B,MAAM,CAACnH,GAAG,EAAEsF,EAAE,CAACyE,MAAM,CAACtC,OAAO,CAAC;MAChC,CAAC,CAAC;MACFsS,IAAI,CAAC7b,WAAW,CAACyC,GAAG,CAAC;MACrB,IAAIX,GAAG,CAAC5D,EAAE,EAAE;QAAE+K,MAAM,CAACnH,GAAG,EAAE,IAAI,CAAC;MAAE;IACnC,CAAC,CAAC;IACF,IAAIia,MAAM,IAAIA,MAAM,CAACD,aAAa,KAAKta,IAAI,EAAE;MAAEA,IAAI,CAACxB,WAAW,CAAC+b,MAAM,CAAC;IAAE;EAC3E;EAEA,IAAIC,KAAK,GAAG,CAAC;EACb,SAASC,QAAQA,CAAA,EAAG;IAClB,IAAID,KAAK,IAAI,CAACnf,MAAM,CAACsZ,YAAY,EAAE;MAAE;IAAQ;IAC7C6F,KAAK,GAAG,CAAC;IACTnf,MAAM,CAACsZ,YAAY,CAACjY,EAAE,CAAC,iBAAiB,EAAE,YAAY;MACpD,IAAIic,UAAU,EAAE;QAAE,IAAI;UAAEA,UAAU,CAAC,CAAC;QAAE,CAAC,CAAC,OAAOtY,CAAC,EAAE,CAAE;MAAE;IACxD,CAAC,CAAC;EACJ;EACA,IAAIwT,IAAI,GAAG,CAAC;EACZ,SAASC,IAAIA,CAAA,EAAG;IACd,IAAID,IAAI,EAAE;MAAE;IAAQ;IACpBA,IAAI,GAAGhK,UAAU,CAAC,YAAY;MAAEgK,IAAI,GAAG,CAAC;MAAE,IAAI;QAAEqG,KAAK,CAAC,CAAC;QAAEO,QAAQ,CAAC,CAAC;MAAE,CAAC,CAAC,OAAOpa,CAAC,EAAE,CAAE;IAAE,CAAC,EAAE,GAAG,CAAC;EAC9F;EACA0T,WAAW,CAACD,IAAI,EAAE,IAAI,CAAC;EACvBA,IAAI,CAAC,CAAC;AACR,CAAC,EAAE,CAAC","ignoreList":[]}