Files
AI/crawler_platform/app/web/static/assets/index-BsoXaTIL.js
LASTA_DEV01\lasta 9e88f4c7ad ontology
2026-05-13 19:57:34 +09:00

932 lines
513 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))a(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&a(s)}).observe(document,{childList:!0,subtree:!0});function r(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(n){if(n.ep)return;n.ep=!0;const i=r(n);fetch(n.href,i)}})();const od="ocp.lang",ld=["ko","en"],ud="ko",Sl={ko:{"app.title":"RPG Onta","app.subtitle":"프로젝트 크롤, 온톨로지 매핑, 클레임 리뷰, 추천 태그","header.refresh":"새로고침","header.lang.ko":"한","header.lang.en":"EN","sidebar.projects":"프로젝트","sidebar.config_path":"설정 파일 경로","sidebar.create_project":"프로젝트 생성","sidebar.reset_project":"현재 프로젝트 데이터 리셋","sidebar.crawl":"크롤","sidebar.source":"소스","sidebar.url_or_seed":"URL / 시드 URL","sidebar.analyzer":"분석기","sidebar.model":"모델","sidebar.base_url":"Base URL","sidebar.test_analyzer":"분석기 테스트","sidebar.discover":"링크 탐색","sidebar.crawl_url":"URL 크롤","sidebar.max_depth":"최대 깊이","sidebar.max_pages":"최대 페이지","sidebar.same_domain":"같은 도메인만","sidebar.respect_robots":"robots.txt 준수","sidebar.crawl_site":"시드부터 사이트 크롤","sidebar.stop_crawl":"현재 크롤 중지","tabs.overview":"개요","tabs.graph":"그래프","tabs.ontology":"온톨로지","tabs.entities":"엔티티","tabs.claims":"클레임","tabs.debug":"디버그","tabs.research":"리서치","tabs.tags":"태그","tabs.recommend":"추천","graph.search_placeholder":"엔티티명 검색...","graph.entity_type_all":"전체 타입","graph.predicate_all":"전체 관계","graph.min_confidence":"최소 신뢰도","graph.layout":"레이아웃","graph.layout.cose":"Force","graph.layout.circle":"원형","graph.layout.concentric":"동심원","graph.layout.grid":"그리드","graph.layout.breadthfirst":"트리","graph.reload":"그래프 새로고침","graph.fit":"맞춤","graph.empty":"아직 데이터가 없습니다. 크롤이 클레임을 만들면 그래프에 노드가 나타납니다.","graph.stats.nodes":"노드","graph.stats.edges":"엣지","graph.stats.shown":"표시","overview.project":"프로젝트","overview.domain":"도메인","overview.sources":"소스","overview.entities":"엔티티","overview.sources_heading":"소스","pipeline.heading":"파이프라인","pipeline.refresh":"새로고침","pipeline.stage.crawled":"크롤됨","pipeline.stage.extracted":"추출됨","pipeline.stage.claims":"클레임","pipeline.stage.validated":"승인됨","pipeline.stage.graph":"그래프 트리플","pipeline.retained":"유지율","pipeline.entity_types_heading":"엔티티 타입 분포","pipeline.recent_pages":"최근 페이지","pipeline.recent_claims":"최근 클레임","pipeline.empty.pages":"아직 크롤된 페이지가 없습니다.","pipeline.empty.claims":"아직 생성된 클레임이 없습니다.","search.placeholder":"엔티티 · 클레임 · 페이지 검색...","search.aria_label":"전역 검색","search.group.entities":"엔티티","search.group.claims":"클레임","search.group.pages":"페이지","search.group.predicates":"술어","search.empty":"결과 없음","search.hint":"최소 1글자 이상 입력하세요","table.name":"이름","table.type":"타입","table.trust":"신뢰도","table.robots":"robots","table.rate":"속도제한","table.domain":"도메인","table.status":"상태","table.confidence":"신뢰도","table.relation":"관계","table.subject":"주체","table.object":"객체","table.support":"근거 수","table.predicate":"술어","table.tag":"태그","table.brand":"브랜드","table.product":"상품","table.count":"수","table.no_data":"데이터 없음.","table.id":"ID","table.metadata":"메타데이터","table.reason":"사유","table.gap":"갭","table.target":"대상","table.priority":"우선순위","table.description":"설명","table.score":"점수","table.reasons":"근거","ontology.refresh_registry":"레지스트리 새로고침","ontology.configured_entity_types":"설정된 엔티티 타입","ontology.configured_predicates":"설정된 술어","ontology.registry_entity_types":"레지스트리 엔티티 타입","ontology.registry_relation_types":"레지스트리 관계 타입","ontology.triples":"온톨로지 트리플","ontology.proposals":"스키마 제안","ontology.knowledge_gaps":"지식 갭","entities.all_types":"전체 타입","entities.load":"불러오기","entities.merge_source_placeholder":"병합할 엔티티 ID","entities.merge_target_placeholder":"유지할 엔티티 ID","entities.merge":"병합","claims.show_candidates":"후보 포함","claims.refresh":"클레임 새로고침","claims.save":"저장","claims.confidence_label":"신뢰도","claims.reason_label":"사유","workbench.status_filter":"상태","workbench.status.all":"전체","workbench.status.active":"활성","workbench.status.validated_claim":"승인됨","workbench.status.rejected":"거절됨","workbench.search_placeholder":"주체/술어/객체 검색...","workbench.predicate_filter":"관계","workbench.predicate_all":"전체 관계","workbench.empty":"표시할 클레임이 없습니다.","workbench.select_hint":"왼쪽 목록에서 클레임을 선택하세요.","workbench.bulk_count":"{count}개 선택됨","workbench.action.accept":"승인","workbench.action.reject":"거절","workbench.action.unreview":"리뷰 취소","workbench.action.save_confidence":"신뢰도 저장","workbench.action.accept_similar":"동일 술어+객체 일괄 승인","workbench.shortcuts":"단축키","workbench.shortcut.nav":"J/K · 이동","workbench.shortcut.accept":"A · 승인","workbench.shortcut.reject":"R · 거절","workbench.shortcut.bulk_accept":"Shift+A · 선택 일괄 승인","workbench.shortcut.bulk_reject":"Shift+R · 선택 일괄 거절","workbench.shortcut.toggle":"Space · 선택 토글","workbench.shortcut.search":"/ · 검색","workbench.shortcut.escape":"Esc · 선택 해제","workbench.detail.subject":"주체","workbench.detail.predicate":"술어","workbench.detail.object":"객체","workbench.detail.status":"상태","workbench.detail.confidence":"신뢰도","workbench.detail.evidence":"근거 텍스트","workbench.detail.source":"출처","workbench.detail.page":"페이지","workbench.detail.breakdown":"신뢰도 분해","workbench.detail.reason_placeholder":"사유 (선택)","workbench.toast.reviewed":"리뷰 적용됨","workbench.toast.bulk_done":"{count}개 적용됨","debug.refresh_logs":"추출 로그 새로고침","research.heading":"그래프 리서치","research.goal":"목표","research.seed_entity":"시드 엔티티 ID","research.max_steps":"최대 스텝","research.min_relevance":"최소 관련도","research.run":"그래프 리서치 실행","research.load_sessions":"세션 불러오기","research.graph_query":"그래프 쿼리","research.filter_placeholder":"브랜드 또는 태그 필터","research.run_query":"쿼리 실행","research.query.trend_summary":"트렌드 요약","research.query.brand_products":"브랜드 상품","research.query.products_by_tag":"태그별 상품","research.query.relation_summary":"관계 요약","research.query.entity_type_summary":"엔티티 타입 요약","tags.load":"태그 불러오기","recommend.preferred_notes":"선호 노트","recommend.avoided_notes":"기피 노트","recommend.preferred_moods":"선호 무드","recommend.season":"계절","recommend.occasion":"상황","recommend.test":"추천 테스트","inspector.title":"인스펙터","inspector.hint":"엔티티/클레임/페이지를 선택하면 상세가 표시됩니다.","inspector.project_info":"프로젝트 정보","inspector.no_selection":"선택 없음","inspector.latest_activity":"최근 활동","inspector.latest_activity.empty":"최근 크롤/추출 활동이 없습니다.","extractor.rule_based":"규칙 기반","extractor.openai":"OpenAI API","extractor.ollama":"Ollama","extractor.lm_studio":"LM Studio","toast.project_created":"프로젝트 생성됨","toast.reset_confirm":"현재 프로젝트의 크롤 데이터(페이지/엔티티/클레임)를 리셋하시겠습니까?","toast.reset_done":"리셋 완료","toast.url_copied":"URL이 입력란에 복사됨","toast.url_crawl_completed":"URL 크롤 완료","toast.crawl_failed":"크롤 실패","toast.site_crawl_started":"사이트 크롤 시작","toast.site_crawl_failed":"사이트 크롤 실패","toast.site_crawl_completed":"사이트 크롤 완료","toast.stop_requested":"중지 요청됨","toast.stop_failed":"중지 실패","toast.analyzer_connected":"분석기 연결됨","toast.analyzer_failed":"분석기 실패","toast.discovery_failed":"탐색 실패","toast.claim_updated":"클레임 업데이트됨","toast.entity_merged":"엔티티 병합됨","toast.merge_check":"엔티티 ID를 확인하세요","toast.research_completed":"리서치 완료","toast.research_failed":"리서치 실패","toast.config_path_required":"설정 파일 경로가 필요합니다","status.starting_site_crawl":"시드부터 사이트 크롤 시작 중...","status.discovering":"링크 탐색 중...","status.testing_analyzer":"분석기 테스트 중...","status.crawling_url":"URL 1건 크롤 중...","status.stopping_crawl":"사이트 크롤 중지 중","status.research_running":"그래프 리서치 실행 중...","status.no_crawl":"준비됨"},en:{"app.title":"Ontology Crawler","app.subtitle":"Project crawler, ontology mapping, claim review, recommendation tags","header.refresh":"Refresh","header.lang.ko":"한","header.lang.en":"EN","sidebar.projects":"Projects","sidebar.config_path":"Config path","sidebar.create_project":"Create project","sidebar.reset_project":"Reset current project data","sidebar.crawl":"Crawl","sidebar.source":"Source","sidebar.url_or_seed":"URL / Seed URL","sidebar.analyzer":"Analyzer","sidebar.model":"Model","sidebar.base_url":"Base URL","sidebar.test_analyzer":"Test analyzer","sidebar.discover":"Discover links","sidebar.crawl_url":"Crawl URL","sidebar.max_depth":"Max depth","sidebar.max_pages":"Max pages","sidebar.same_domain":"Same domain","sidebar.respect_robots":"Respect robots.txt","sidebar.crawl_site":"Crawl site from seed","sidebar.stop_crawl":"Stop current crawl","tabs.overview":"Overview","tabs.graph":"Graph","tabs.ontology":"Ontology","tabs.entities":"Entities","tabs.claims":"Claims","tabs.debug":"Debug","tabs.research":"Research","tabs.tags":"Tags","tabs.recommend":"Recommend","graph.search_placeholder":"Search entity name...","graph.entity_type_all":"All types","graph.predicate_all":"All relations","graph.min_confidence":"Min confidence","graph.layout":"Layout","graph.layout.cose":"Force","graph.layout.circle":"Circle","graph.layout.concentric":"Concentric","graph.layout.grid":"Grid","graph.layout.breadthfirst":"Tree","graph.reload":"Reload graph","graph.fit":"Fit","graph.empty":"No data yet. As crawling produces claims, nodes will appear on the graph.","graph.stats.nodes":"nodes","graph.stats.edges":"edges","graph.stats.shown":"shown","overview.project":"Project","overview.domain":"Domain","overview.sources":"Sources","overview.entities":"Entities","overview.sources_heading":"Sources","pipeline.heading":"Pipeline","pipeline.refresh":"Refresh","pipeline.stage.crawled":"Crawled","pipeline.stage.extracted":"Extracted","pipeline.stage.claims":"Claims","pipeline.stage.validated":"Validated","pipeline.stage.graph":"Graph triples","pipeline.retained":"retained","pipeline.entity_types_heading":"Entity type breakdown","pipeline.recent_pages":"Recent pages","pipeline.recent_claims":"Recent claims","pipeline.empty.pages":"No pages crawled yet.","pipeline.empty.claims":"No claims generated yet.","search.placeholder":"Search entities, claims, pages...","search.aria_label":"Global search","search.group.entities":"Entities","search.group.claims":"Claims","search.group.pages":"Pages","search.group.predicates":"Predicates","search.empty":"No results","search.hint":"Type at least 1 character","table.name":"Name","table.type":"Type","table.trust":"Trust","table.robots":"Robots","table.rate":"Rate","table.domain":"Domain","table.status":"Status","table.confidence":"Confidence","table.relation":"Relation","table.subject":"Subject","table.object":"Object","table.support":"Support","table.predicate":"Predicate","table.tag":"Tag","table.brand":"Brand","table.product":"Product","table.count":"Count","table.no_data":"No data.","table.id":"ID","table.metadata":"Metadata","table.reason":"Reason","table.gap":"Gap","table.target":"Target","table.priority":"Priority","table.description":"Description","table.score":"Score","table.reasons":"Reasons","ontology.refresh_registry":"Refresh registry","ontology.configured_entity_types":"Configured Entity Types","ontology.configured_predicates":"Configured Predicates","ontology.registry_entity_types":"Registry Entity Types","ontology.registry_relation_types":"Registry Relation Types","ontology.triples":"Ontology Triples","ontology.proposals":"Schema Proposals","ontology.knowledge_gaps":"Knowledge Gaps","entities.all_types":"All types","entities.load":"Load","entities.merge_source_placeholder":"Entity ID to merge","entities.merge_target_placeholder":"Entity ID to keep","entities.merge":"Merge","claims.show_candidates":"Show candidates","claims.refresh":"Refresh claims","claims.save":"Save","claims.confidence_label":"confidence","claims.reason_label":"reason","workbench.status_filter":"Status","workbench.status.all":"All","workbench.status.active":"Active","workbench.status.validated_claim":"Validated","workbench.status.rejected":"Rejected","workbench.search_placeholder":"Search subject/predicate/object...","workbench.predicate_filter":"Predicate","workbench.predicate_all":"All predicates","workbench.empty":"No claims to display.","workbench.select_hint":"Select a claim from the list on the left.","workbench.bulk_count":"{count} selected","workbench.action.accept":"Accept","workbench.action.reject":"Reject","workbench.action.unreview":"Unreview","workbench.action.save_confidence":"Save confidence","workbench.action.accept_similar":"Accept all with same predicate+object","workbench.shortcuts":"Shortcuts","workbench.shortcut.nav":"J/K · navigate","workbench.shortcut.accept":"A · accept","workbench.shortcut.reject":"R · reject","workbench.shortcut.bulk_accept":"Shift+A · bulk accept","workbench.shortcut.bulk_reject":"Shift+R · bulk reject","workbench.shortcut.toggle":"Space · toggle select","workbench.shortcut.search":"/ · search","workbench.shortcut.escape":"Esc · clear selection","workbench.detail.subject":"Subject","workbench.detail.predicate":"Predicate","workbench.detail.object":"Object","workbench.detail.status":"Status","workbench.detail.confidence":"Confidence","workbench.detail.evidence":"Evidence text","workbench.detail.source":"Source","workbench.detail.page":"Page","workbench.detail.breakdown":"Confidence breakdown","workbench.detail.reason_placeholder":"reason (optional)","workbench.toast.reviewed":"Review applied","workbench.toast.bulk_done":"{count} updated","debug.refresh_logs":"Refresh extraction logs","research.heading":"Semantic Exploration","research.goal":"Goal","research.seed_entity":"Seed entity ID","research.max_steps":"Max steps","research.min_relevance":"Min relevance","research.run":"Run graph research","research.load_sessions":"Load sessions","research.graph_query":"Graph Query","research.filter_placeholder":"brand or tag filter","research.run_query":"Run query","research.query.trend_summary":"Trend summary","research.query.brand_products":"Brand products","research.query.products_by_tag":"Products by tag","research.query.relation_summary":"Relation summary","research.query.entity_type_summary":"Entity type summary","tags.load":"Load tags","recommend.preferred_notes":"Preferred notes","recommend.avoided_notes":"Avoided notes","recommend.preferred_moods":"Preferred moods","recommend.season":"Season","recommend.occasion":"Occasion","recommend.test":"Test recommendation","inspector.title":"Inspector","inspector.hint":"Select an entity/claim/page to see details.","inspector.project_info":"Project info","inspector.no_selection":"Nothing selected","inspector.latest_activity":"Latest activity","inspector.latest_activity.empty":"No recent crawl or extraction activity.","extractor.rule_based":"Rule-based","extractor.openai":"OpenAI API","extractor.ollama":"Ollama","extractor.lm_studio":"LM Studio","toast.project_created":"Project created","toast.reset_confirm":"Reset current project crawl data (pages/entities/claims)?","toast.reset_done":"Reset completed","toast.url_copied":"URL copied to input","toast.url_crawl_completed":"URL crawl completed","toast.crawl_failed":"Crawl failed","toast.site_crawl_started":"Site crawl started","toast.site_crawl_failed":"Site crawl failed","toast.site_crawl_completed":"Site crawl completed","toast.stop_requested":"Stop requested","toast.stop_failed":"Stop failed","toast.analyzer_connected":"Analyzer connected","toast.analyzer_failed":"Analyzer failed","toast.discovery_failed":"Discovery failed","toast.claim_updated":"Claim updated","toast.entity_merged":"Entity merged","toast.merge_check":"Check entity IDs","toast.research_completed":"Research completed","toast.research_failed":"Research failed","toast.config_path_required":"Config path is required","status.starting_site_crawl":"Starting site crawl from seed...","status.discovering":"Discovering links...","status.testing_analyzer":"Testing analyzer...","status.crawling_url":"Crawling one URL...","status.stopping_crawl":"Stopping site crawl","status.research_running":"Running graph research...","status.no_crawl":"Ready"}};let Hn=Bv();const co=new Set;function Bv(){try{const e=localStorage.getItem(od);if(e&&ld.includes(e))return e}catch{}return(navigator.language||"").toLowerCase().startsWith("en")?"en":ud}function kl(){return Hn}function Dv(t){if(!(!ld.includes(t)||t===Hn)){Hn=t;try{localStorage.setItem(od,t)}catch{}document.documentElement.setAttribute("lang",t),xt(document),co.forEach(e=>{try{e(t)}catch(r){console.warn("i18n listener failed",r)}})}}function fr(t){return co.add(t),()=>co.delete(t)}function V(t,e){const r=Sl[Hn]||Sl[ud];return t in r?r[t]:e??t}function xt(t=document){t.querySelectorAll("[data-i18n]").forEach(e=>{const r=e.getAttribute("data-i18n");r&&(e.textContent=V(r))}),t.querySelectorAll("[data-i18n-placeholder]").forEach(e=>{const r=e.getAttribute("data-i18n-placeholder");r&&e.setAttribute("placeholder",V(r))}),t.querySelectorAll("[data-i18n-title]").forEach(e=>{const r=e.getAttribute("data-i18n-title");r&&e.setAttribute("title",V(r))}),t.querySelectorAll("[data-i18n-aria-label]").forEach(e=>{const r=e.getAttribute("data-i18n-aria-label");r&&e.setAttribute("aria-label",V(r))})}function Rv(t){t.innerHTML=`
<header class="topbar">
<div class="topbar-brand">
<h1 data-i18n="app.title"></h1>
<p data-i18n="app.subtitle"></p>
</div>
<div class="topbar-actions">
<div class="global-search">
<svg viewBox="0 0 24 24" width="14" height="14" class="global-search-icon" aria-hidden="true">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
d="M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm10 2-4.35-4.35"/>
</svg>
<input id="globalSearchInput" type="search" autocomplete="off"
data-i18n-placeholder="search.placeholder" data-i18n-aria-label="search.aria_label" />
<div id="globalSearchPanel" class="global-search-panel" hidden></div>
</div>
<div class="lang-toggle" role="group" aria-label="Language">
<button class="lang-btn" data-lang="ko" data-i18n="header.lang.ko"></button>
<button class="lang-btn" data-lang="en" data-i18n="header.lang.en"></button>
</div>
<button id="refreshBtn" class="icon-button" data-i18n-title="header.refresh" data-i18n-aria-label="header.refresh">
<svg viewBox="0 0 24 24" aria-hidden="true" width="18" height="18">
<path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
d="M3 12a9 9 0 0 1 15.5-6.3L21 8M21 3v5h-5M21 12a9 9 0 0 1-15.5 6.3L3 16M3 21v-5h5"/>
</svg>
</button>
</div>
</header>
<main class="layout">
<aside id="sidebarHost" class="sidebar"></aside>
<section id="workspaceHost" class="workspace"></section>
<aside id="inspectorHost" class="inspector"></aside>
</main>
<div id="toast" role="status" aria-live="polite"></div>
`,document.documentElement.setAttribute("lang",kl()),xt(t);const e=t.querySelectorAll(".lang-btn"),r=()=>{const a=kl();e.forEach(n=>{n.classList.toggle("active",n.dataset.lang===a)})};return e.forEach(a=>{a.addEventListener("click",()=>Dv(a.dataset.lang))}),r(),fr(r),{sidebarHost:document.getElementById("sidebarHost"),workspaceHost:document.getElementById("workspaceHost"),inspectorHost:document.getElementById("inspectorHost")}}async function Fe(t,e={}){const r=await fetch(t,{headers:{"Content-Type":"application/json"},...e});if(!r.ok){let a=`${r.status} ${r.statusText}`;try{const n=await r.json();a=n.detail||n.error||a}catch{}throw new Error(a)}return r.json()}const ue={projects:[],selectedProject:null,projectDetail:null,ontology:null,siteCrawlPoll:null,siteCrawlPageCount:0,siteCrawlPollErrorCount:0,activeSiteCrawlJobId:null,latestActivity:null,selection:null},F=t=>document.getElementById(t);function Di(t){return String(t||"").split(",").map(e=>e.trim()).filter(Boolean)}function z(t){return String(t??"").replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}function Pl(t){return`<span class="chip">${z(t)}</span>`}function Mt(t,e){return e.length?`
<table>
<thead><tr>${t.map(r=>`<th>${z(r)}</th>`).join("")}</tr></thead>
<tbody>${e.map(r=>`<tr>${r.map(a=>`<td>${String(a??"")}</td>`).join("")}</tr>`).join("")}</tbody>
</table>
`:`<table><tbody><tr><td>${z(V("table.no_data"))}</td></tr></tbody></table>`}let Ri=null;function Ae(t){const e=document.getElementById("toast");e&&(e.textContent=t,e.classList.add("show"),Ri&&window.clearTimeout(Ri),Ri=window.setTimeout(()=>e.classList.remove("show"),2400))}function Av(t,{onProjectChanged:e,onCrawlUpdate:r,refreshAll:a}){t.innerHTML=Lv(),xt(t),F("createProjectBtn").addEventListener("click",()=>_v(e)),F("initProjectBtn").addEventListener("click",()=>Iv(e)),F("discoverBtn").addEventListener("click",Fv),F("crawlBtn").addEventListener("click",()=>Ov(a)),F("siteCrawlBtn").addEventListener("click",()=>Nv(r,a)),F("stopSiteCrawlBtn").addEventListener("click",zv),F("extractorProvider").addEventListener("change",Bl),F("testExtractorBtn").addEventListener("click",()=>dd({announce:!0})),Bl(),Vv(),fr(()=>{xt(t),Go(),si(cd)})}function Lv(){return`
<section class="panel">
<div class="panel-head"><h2 data-i18n="sidebar.projects"></h2></div>
<div class="field-row">
<input id="configPath" value="configs/perfume_subscription.yaml" data-i18n-aria-label="sidebar.config_path" />
<button id="createProjectBtn" data-i18n-title="sidebar.create_project">+</button>
</div>
<button id="initProjectBtn" class="full" data-i18n="sidebar.reset_project"></button>
<div id="projectList" class="list"></div>
</section>
<section class="panel">
<div class="panel-head"><h2 data-i18n="sidebar.crawl"></h2></div>
<label>
<span data-i18n="sidebar.source"></span>
<select id="sourceSelect"></select>
</label>
<label>
<span data-i18n="sidebar.url_or_seed"></span>
<input id="crawlUrl" value="tests/fixtures/sample_perfume.html" />
</label>
<label>
<span data-i18n="sidebar.analyzer"></span>
<select id="extractorProvider">
<option value="rule_based" data-i18n="extractor.rule_based"></option>
<option value="openai" data-i18n="extractor.openai"></option>
<option value="ollama" data-i18n="extractor.ollama"></option>
<option value="lm_studio" selected data-i18n="extractor.lm_studio"></option>
</select>
</label>
<div class="extractor-options" id="extractorOptions">
<label>
<span data-i18n="sidebar.model"></span>
<input id="extractorModel" placeholder="local or API model" />
</label>
<label>
<span data-i18n="sidebar.base_url"></span>
<input id="extractorBaseUrl" value="http://localhost:1234/v1" placeholder="optional provider endpoint" />
</label>
<button id="testExtractorBtn" data-i18n="sidebar.test_analyzer"></button>
</div>
<div class="button-grid">
<button id="discoverBtn" data-i18n="sidebar.discover"></button>
<button id="crawlBtn" class="primary" data-i18n="sidebar.crawl_url"></button>
</div>
<div class="site-controls">
<label>
<span data-i18n="sidebar.max_depth"></span>
<input id="siteMaxDepth" type="number" min="0" max="5" value="2" />
</label>
<label>
<span data-i18n="sidebar.max_pages"></span>
<input id="siteMaxPages" type="number" min="1" max="500" value="25" />
</label>
<label class="check-row">
<input id="sameDomainOnly" type="checkbox" checked />
<span data-i18n="sidebar.same_domain"></span>
</label>
<label class="check-row">
<input id="respectRobotsTxt" type="checkbox" />
<span data-i18n="sidebar.respect_robots"></span>
</label>
</div>
<button id="siteCrawlBtn" class="primary full" data-i18n="sidebar.crawl_site"></button>
<button id="stopSiteCrawlBtn" class="full" disabled data-i18n="sidebar.stop_crawl"></button>
<div id="crawlResult" class="mini-log"></div>
<div id="discoveredLinks" class="discovered-links"></div>
</section>
`}function Ho(){return{config_path:F("configPath").value.trim(),source_name:F("sourceSelect").value,url:F("crawlUrl").value.trim(),extractor_provider:F("extractorProvider").value,extractor_model:F("extractorModel").value.trim()||null,extractor_base_url:F("extractorBaseUrl").value.trim()||null,check_robots_txt:F("respectRobotsTxt")?.checked??!1}}function Go(){const t=F("projectList");t&&(t.innerHTML="",ue.projects.forEach(e=>{const r=document.createElement("button");r.className=`project-item ${ue.selectedProject===e.name?"active":""}`,r.innerHTML=`<strong>${z(e.name)}</strong><span>${z(e.domain)}</span>`,r.addEventListener("click",()=>{const a=new CustomEvent("project:select",{detail:e.name});window.dispatchEvent(a)}),t.appendChild(r)}))}function Mv(t){const e=F("sourceSelect");e&&(e.innerHTML="",(t?.sources??[]).forEach(r=>{const a=document.createElement("option");a.value=r.name,a.textContent=`${r.name} (${r.type})`,e.appendChild(a)}))}async function _v(t){const e=F("configPath").value.trim();if(e)try{const r=await Fe("/projects",{method:"POST",body:JSON.stringify({config_path:e})});Ae(`${V("toast.project_created")}: ${r.name}`),ue.selectedProject=r.name,await t?.()}catch(r){Ae(r.message)}}async function Iv(t){const e=F("configPath").value.trim();if(!e){Ae(V("toast.config_path_required"));return}if(window.confirm(V("toast.reset_confirm")))try{const r=await Fe("/projects/reset",{method:"POST",body:JSON.stringify({config_path:e,project_name:ue.selectedProject})});if(ue.selectedProject=r.name,await t?.(),r.reset){const a=r.deleted?.claims??0,n=r.deleted?.entities??0,i=r.deleted?.pages??0;F("crawlResult").textContent=`${V("toast.reset_done")}: pages ${i}, entities ${n}, claims ${a}`,Ae(`${V("toast.reset_done")}: ${r.name}`)}else F("crawlResult").textContent=`${V("toast.project_created")}: ${r.name}`,Ae(`${V("toast.project_created")}: ${r.name}`)}catch(r){Ae(r.message)}}async function Ov(t){if(ue.selectedProject){F("crawlResult").textContent=V("status.crawling_url");try{const e=await Fe("/crawl",{method:"POST",body:JSON.stringify(Ho())});F("crawlResult").textContent=`URL done: page ${e.page_id}, ${e.crawl_status}/${e.extraction_status}, ${e.page_type}, raw ${e.raw_text_length}, clean ${e.clean_text_length}, claims ${e.claim_count}, entities ${e.entity_count}`,ue.latestActivity={kind:"url_crawl",result:e},Ae(V("toast.url_crawl_completed")),await t?.()}catch(e){F("crawlResult").textContent=`${V("toast.crawl_failed")}: ${e.message}`,Ae(V("toast.crawl_failed"))}}}let cd=null;async function Nv(t,e){if(ue.selectedProject){fo(),ue.siteCrawlPageCount=0,ue.siteCrawlPollErrorCount=0,F("crawlResult").textContent=V("status.starting_site_crawl"),F("discoveredLinks").innerHTML="";try{const r=await Fe("/crawl-site",{method:"POST",body:JSON.stringify({...Ho(),max_depth:Number(F("siteMaxDepth").value||0),max_pages:Number(F("siteMaxPages").value||1),same_domain_only:F("sameDomainOnly").checked,analyze_page_types:["ProductPage","BrandStoryPage","ReviewPage"]})});F("crawlResult").textContent=`Site crawl queued: job ${r.job_id}`,ue.activeSiteCrawlJobId=r.job_id,F("stopSiteCrawlBtn").disabled=!1,si(r),vo(r.job_id,t,e),Ae(V("toast.site_crawl_started"))}catch(r){F("crawlResult").textContent=`${V("toast.site_crawl_failed")}: ${r.message}`,Ae(V("toast.site_crawl_failed"))}}}async function zv(){const t=ue.activeSiteCrawlJobId;if(t){F("stopSiteCrawlBtn").disabled=!0,F("crawlResult").textContent=`${V("status.stopping_crawl")}: job ${t}`;try{const e=await Fe(`/crawl-site/jobs/${t}/cancel`,{method:"POST"});si(e),Ae(V("toast.stop_requested"))}catch(e){F("stopSiteCrawlBtn").disabled=!1,F("crawlResult").textContent=`${V("toast.stop_failed")}: ${e.message}`,Ae(V("toast.stop_failed"))}}}function fo(){ue.siteCrawlPoll&&(window.clearTimeout(ue.siteCrawlPoll),ue.siteCrawlPoll=null)}async function vo(t,e,r){let a;try{a=await Fe(`/crawl-site/jobs/${t}`)}catch(s){const o=ue.siteCrawlPollErrorCount=(ue.siteCrawlPollErrorCount??0)+1;if(F("crawlResult").textContent=`Site crawl status check failed (retry ${o}): ${s.message}`,o>=5){fo(),Ae(V("toast.site_crawl_failed"));return}ue.siteCrawlPoll=window.setTimeout(()=>vo(t,e,r),3e3);return}ue.siteCrawlPollErrorCount=0;const i=(a.progress??{}).pages?.length??0;if(si(a),e?.(a),i!==ue.siteCrawlPageCount){ue.siteCrawlPageCount=i;try{await r?.()}catch(s){console.warn("refreshAll during poll failed",s)}}if(["completed","failed","canceled"].includes(a.status)){fo(),ue.activeSiteCrawlJobId=null,F("stopSiteCrawlBtn").disabled=!0,Ae(a.status==="completed"?V("toast.site_crawl_completed"):`${V("toast.site_crawl_failed")}: ${a.status}`);return}ue.siteCrawlPoll=window.setTimeout(()=>vo(t,e,r),1500)}function si(t){if(cd=t,!t)return;const e=t.progress??{},r=e.pages??[];F("crawlResult").textContent=`Site ${t.status}: visited ${e.visited_count??0}, analyzed ${e.analyzed_count??0}, skipped ${e.skipped_count??0}, queued ${e.queued_count??0}`,F("discoveredLinks").innerHTML=r.map($v).join(""),document.querySelectorAll("[data-discovered-url]").forEach(a=>{a.addEventListener("click",()=>{F("crawlUrl").value=a.dataset.discoveredUrl,Ae(V("toast.url_copied"))})}),ue.latestActivity={kind:"site_crawl",job:t}}function $v(t){const e=`raw ${t.raw_text_length??0}, clean ${t.clean_text_length??0}, removed ${t.removed_noise_zones_count??0}`,r=(t.warnings??[]).length?`, warnings: ${(t.warnings??[]).join("; ")}`:"";return`
<button class="discovered-link" data-discovered-url="${z(t.url)}">
<strong>${z(t.status)} · ${z(t.page_type)} · depth ${t.depth}</strong>
<span>${z(t.url)}</span>
<span>${z(e)}${z(r)}</span>
<span>claims ${t.claim_count}, entities ${t.entity_count}, links ${t.discovered_count}${t.error?`, error: ${z(t.error)}`:""}</span>
</button>
`}async function Fv(){F("crawlResult").textContent=V("status.discovering"),F("discoveredLinks").innerHTML="";try{const t=await Fe("/discover",{method:"POST",body:JSON.stringify({config_path:F("configPath").value.trim(),source_name:F("sourceSelect").value,url:F("crawlUrl").value.trim(),limit:30,check_robots_txt:F("respectRobotsTxt")?.checked??!1})});if(!t.ok){F("crawlResult").textContent=t.error??V("toast.discovery_failed");return}F("crawlResult").textContent=`Discovered ${t.links.length} links`,F("discoveredLinks").innerHTML=t.links.map(qv).join(""),document.querySelectorAll("[data-discovered-url]").forEach(e=>{e.addEventListener("click",()=>{F("crawlUrl").value=e.dataset.discoveredUrl,Ae(V("toast.url_copied"))})})}catch(t){F("crawlResult").textContent=`${V("toast.discovery_failed")}: ${t.message}`,Ae(V("toast.discovery_failed"))}}function qv(t){return`
<button class="discovered-link" data-discovered-url="${z(t.url)}">
<strong>${z(t.label)}</strong>
<span>${z(t.kind)} · ${z(t.url)}</span>
</button>
`}function Bl(){const t=F("extractorProvider").value;F("extractorOptions").classList.toggle("active",t!=="rule_based"),t==="ollama"&&!F("extractorBaseUrl").value.trim()?F("extractorBaseUrl").placeholder="http://localhost:11434/api/chat":t==="lm_studio"&&!F("extractorBaseUrl").value.trim()?(F("extractorBaseUrl").value="http://localhost:1234/v1",F("extractorBaseUrl").placeholder="http://localhost:1234/v1"):F("extractorBaseUrl").placeholder="optional provider endpoint"}async function dd({announce:t=!0}={}){const e=F("extractorProvider").value,r=F("extractorBaseUrl").value.trim();t&&(F("crawlResult").textContent=V("status.testing_analyzer"));try{const a=await Fe("/extractors/models",{method:"POST",body:JSON.stringify({provider:e,base_url:r||null})});if(!a.ok){t&&(F("crawlResult").textContent=`${V("toast.analyzer_failed")}: ${a.error}`,Ae(V("toast.analyzer_failed")));return}const n=a.models??[];n.length&&!F("extractorModel").value.trim()&&(F("extractorModel").value=n[0].id),t&&(F("crawlResult").textContent=n.length?`${V("toast.analyzer_connected")}. Models: ${n.map(i=>i.id).join(", ")}`:`${V("toast.analyzer_connected")}. No models returned.`,Ae(V("toast.analyzer_connected")))}catch(a){t&&Ae(a.message)}}async function Vv(){if(F("extractorProvider").value==="lm_studio")try{await dd({announce:!1})}catch{}}let Rn=null;function Hv(t){Rn=t,An(),fr(An),window.addEventListener("inspector:update",An)}function ur(){An()}function An(){Rn&&(Rn.innerHTML=Gv(),xt(Rn))}function Gv(){const t=ue.selection;return`
<div class="inspector-head">
<h2 data-i18n="inspector.title"></h2>
<p class="muted" data-i18n="inspector.hint"></p>
</div>
${t?Wv(t):Uv()}
`}function Uv(){const t=ue.projectDetail,e=ue.latestActivity;return`
<section class="inspector-section">
<h3 data-i18n="inspector.project_info"></h3>
${t?`
<dl class="kv">
<dt>${z(V("overview.project"))}</dt><dd>${z(t.name)}</dd>
<dt>${z(V("overview.domain"))}</dt><dd>${z(t.domain)}</dd>
<dt>${z(V("overview.sources"))}</dt><dd>${(t.sources??[]).length}</dd>
</dl>
`:'<p class="muted" data-i18n="inspector.no_selection"></p>'}
</section>
<section class="inspector-section">
<h3 data-i18n="inspector.latest_activity"></h3>
${e?Kv(e):'<p class="muted" data-i18n="inspector.latest_activity.empty"></p>'}
</section>
`}function Kv(t){if(t.kind==="site_crawl"){const e=t.job??{},r=e.progress??{};return`
<dl class="kv">
<dt>job</dt><dd>${z(e.job_id??"-")}</dd>
<dt>status</dt><dd>${z(e.status??"-")}</dd>
<dt>visited</dt><dd>${r.visited_count??0}</dd>
<dt>analyzed</dt><dd>${r.analyzed_count??0}</dd>
<dt>skipped</dt><dd>${r.skipped_count??0}</dd>
<dt>queued</dt><dd>${r.queued_count??0}</dd>
</dl>
`}if(t.kind==="url_crawl"){const e=t.result??{};return`
<dl class="kv">
<dt>page</dt><dd>${z(e.page_id??"-")}</dd>
<dt>page_type</dt><dd>${z(e.page_type??"-")}</dd>
<dt>crawl</dt><dd>${z(e.crawl_status??"-")}</dd>
<dt>extraction</dt><dd>${z(e.extraction_status??"-")}</dd>
<dt>claims</dt><dd>${e.claim_count??0}</dd>
<dt>entities</dt><dd>${e.entity_count??0}</dd>
</dl>
`}return""}function Wv(t){if(t.kind==="entity"){const e=t.data;return`
<section class="inspector-section">
<h3>${z(e.name)}</h3>
<dl class="kv">
<dt>${z(V("table.id"))}</dt><dd>${z(e.id)}</dd>
<dt>${z(V("table.type"))}</dt><dd>${z(e.type)}</dd>
</dl>
<pre class="code">${z(JSON.stringify(e.metadata??{},null,2))}</pre>
</section>
`}if(t.kind==="claim"){const e=t.data;return`
<section class="inspector-section">
<h3>${z(e.subject)} · ${z(e.predicate)}</h3>
<dl class="kv">
<dt>${z(V("table.object"))}</dt><dd>${z(e.object??JSON.stringify(e.object_value??""))}</dd>
<dt>${z(V("table.status"))}</dt><dd>${z(e.status??"")}</dd>
<dt>${z(V("table.confidence"))}</dt><dd>${Math.round((e.confidence??0)*100)}%</dd>
</dl>
${e.evidence_text?`<p class="evidence">${z(e.evidence_text)}</p>`:""}
</section>
`}if(t.kind==="graph_node"){const e=t.data;return`
<section class="inspector-section">
<h3>${z(e.label)}</h3>
<dl class="kv">
<dt>${z(V("table.id"))}</dt><dd>${z(e.entityId)}</dd>
<dt>${z(V("table.type"))}</dt><dd>${z(e.type??"")}</dd>
${e.canonical?`<dt>canonical</dt><dd>${z(e.canonical)}</dd>`:""}
</dl>
${e.metadata&&Object.keys(e.metadata).length?`<pre class="code">${z(JSON.stringify(e.metadata,null,2))}</pre>`:""}
</section>
`}if(t.kind==="graph_edge"){const e=t.data;return`
<section class="inspector-section">
<h3>${z(e.predicate)}</h3>
<dl class="kv">
<dt>${z(V("table.confidence"))}</dt><dd>${Math.round((e.confidence??0)*100)}%</dd>
${e.targetName?`<dt>${z(V("table.object"))}</dt><dd>${z(e.targetName)}</dd>`:""}
<dt>claim</dt><dd>${z(e.claimId)}</dd>
</dl>
${e.metadata&&Object.keys(e.metadata).length?`<pre class="code">${z(JSON.stringify(e.metadata,null,2))}</pre>`:""}
</section>
`}return""}function ho(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,a=Array(e);r<e;r++)a[r]=t[r];return a}function jv(t){if(Array.isArray(t))return t}function Yv(t){if(Array.isArray(t))return ho(t)}function Ar(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Xv(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,vd(a.key),a)}}function Lr(t,e,r){return e&&Xv(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Lt(t,e){var r=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Uo(t))||e){r&&(t=r);var a=0,n=function(){};return{s:n,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(l){throw l},f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,s=!0,o=!1;return{s:function(){r=r.call(t)},n:function(){var l=r.next();return s=l.done,l},e:function(l){o=!0,i=l},f:function(){try{s||r.return==null||r.return()}finally{if(o)throw i}}}}function fd(t,e,r){return(e=vd(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Zv(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function Qv(t,e){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var a,n,i,s,o=[],l=!0,u=!1;try{if(i=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(a=i.call(r)).done)&&(o.push(a.value),o.length!==e);l=!0);}catch(c){u=!0,n=c}finally{try{if(!l&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(u)throw n}}return o}}function Jv(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function eh(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function at(t,e){return jv(t)||Qv(t,e)||Uo(t,e)||Jv()}function Gn(t){return Yv(t)||Zv(t)||Uo(t)||eh()}function th(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var a=r.call(t,e);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function vd(t){var e=th(t,"string");return typeof e=="symbol"?e:e+""}function ot(t){"@babel/helpers - typeof";return ot=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ot(t)}function Uo(t,e){if(t){if(typeof t=="string")return ho(t,e);var r={}.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ho(t,e):void 0}}var it=typeof window>"u"?null:window,Dl=it?it.navigator:null;it&&it.document;var rh=ot(""),hd=ot({}),ah=ot(function(){}),nh=typeof HTMLElement>"u"?"undefined":ot(HTMLElement),Qa=function(e){return e&&e.instanceString&&Ze(e.instanceString)?e.instanceString():null},me=function(e){return e!=null&&ot(e)==rh},Ze=function(e){return e!=null&&ot(e)===ah},Ue=function(e){return!It(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},Ne=function(e){return e!=null&&ot(e)===hd&&!Ue(e)&&e.constructor===Object},ih=function(e){return e!=null&&ot(e)===hd},se=function(e){return e!=null&&ot(e)===ot(1)&&!isNaN(e)},sh=function(e){return se(e)&&Math.floor(e)===e},Un=function(e){if(nh!=="undefined")return e!=null&&e instanceof HTMLElement},It=function(e){return Ja(e)||pd(e)},Ja=function(e){return Qa(e)==="collection"&&e._private.single},pd=function(e){return Qa(e)==="collection"&&!e._private.single},Ko=function(e){return Qa(e)==="core"},gd=function(e){return Qa(e)==="stylesheet"},oh=function(e){return Qa(e)==="event"},Sr=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},lh=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},uh=function(e){return Ne(e)&&se(e.x1)&&se(e.x2)&&se(e.y1)&&se(e.y2)},ch=function(e){return ih(e)&&Ze(e.then)},dh=function(){return Dl&&Dl.userAgent.match(/msie|trident|edge/i)},pa=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;s<arguments.length;s++)i.push(arguments[s]);return i.join("$")});var a=function(){var i=this,s=arguments,o,l=r.apply(i,s),u=a.cache;return(o=u[l])||(o=u[l]=e.apply(i,s)),o};return a.cache={},a},Wo=pa(function(t){return t.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),oi=pa(function(t){return t.replace(/(-\w)/g,function(e){return e[1].toUpperCase()})}),yd=pa(function(t,e){return t+e[0].toUpperCase()+e.substring(1)},function(t,e){return t+"$"+e}),Rl=function(e){return Sr(e)?e:e.charAt(0).toUpperCase()+e.substring(1)},br=function(e,r){return e.slice(-1*r.length)===r},st="(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))",fh="rgb[a]?\\(("+st+"[%]?)\\s*,\\s*("+st+"[%]?)\\s*,\\s*("+st+"[%]?)(?:\\s*,\\s*("+st+"))?\\)",vh="rgb[a]?\\((?:"+st+"[%]?)\\s*,\\s*(?:"+st+"[%]?)\\s*,\\s*(?:"+st+"[%]?)(?:\\s*,\\s*(?:"+st+"))?\\)",hh="hsl[a]?\\(("+st+")\\s*,\\s*("+st+"[%])\\s*,\\s*("+st+"[%])(?:\\s*,\\s*("+st+"))?\\)",ph="hsl[a]?\\((?:"+st+")\\s*,\\s*(?:"+st+"[%])\\s*,\\s*(?:"+st+"[%])(?:\\s*,\\s*(?:"+st+"))?\\)",gh="\\#[0-9a-fA-F]{3}",yh="\\#[0-9a-fA-F]{6}",md=function(e,r){return e<r?-1:e>r?1:0},mh=function(e,r){return-1*md(e,r)},xe=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r<e.length;r++){var a=e[r];if(a!=null)for(var n=Object.keys(a),i=0;i<n.length;i++){var s=n[i];t[s]=a[s]}}return t},bh=function(e){if(!(!(e.length===4||e.length===7)||e[0]!=="#")){var r=e.length===4,a,n,i,s=16;return r?(a=parseInt(e[1]+e[1],s),n=parseInt(e[2]+e[2],s),i=parseInt(e[3]+e[3],s)):(a=parseInt(e[1]+e[2],s),n=parseInt(e[3]+e[4],s),i=parseInt(e[5]+e[6],s)),[a,n,i]}},wh=function(e){var r,a,n,i,s,o,l,u;function c(v,y,p){return p<0&&(p+=1),p>1&&(p-=1),p<1/6?v+(y-v)*6*p:p<1/2?y:p<2/3?v+(y-v)*(2/3-p)*6:v}var d=new RegExp("^"+hh+"$").exec(e);if(d){if(a=parseInt(d[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(d[2]),n<0||n>100||(n=n/100,i=parseFloat(d[3]),i<0||i>100)||(i=i/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=l=u=Math.round(i*255);else{var f=i<.5?i*(1+n):i+n-i*n,h=2*i-f;o=Math.round(255*c(h,f,a+1/3)),l=Math.round(255*c(h,f,a)),u=Math.round(255*c(h,f,a-1/3))}r=[o,l,u,s]}return r},xh=function(e){var r,a=new RegExp("^"+fh+"$").exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var o=n[1]||n[2]||n[3],l=n[1]&&n[2]&&n[3];if(o&&!l)return;var u=a[4];if(u!==void 0){if(u=parseFloat(u),u<0||u>1)return;r.push(u)}}return r},Eh=function(e){return Ch[e.toLowerCase()]},bd=function(e){return(Ue(e)?e:null)||Eh(e)||bh(e)||xh(e)||wh(e)},Ch={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},wd=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i<n;i++){var s=a[i];if(Ne(s))throw Error("Tried to set map with object key");i<a.length-1?(r[s]==null&&(r[s]={}),r=r[s]):r[s]=e.value}},xd=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i<n;i++){var s=a[i];if(Ne(s))throw Error("Tried to get map with object key");if(r=r[s],r==null)return r}return r},vn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function en(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ai,Al;function tn(){if(Al)return Ai;Al=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return Ai=t,Ai}var Li,Ll;function Th(){if(Ll)return Li;Ll=1;var t=typeof vn=="object"&&vn&&vn.Object===Object&&vn;return Li=t,Li}var Mi,Ml;function li(){if(Ml)return Mi;Ml=1;var t=Th(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return Mi=r,Mi}var _i,_l;function Sh(){if(_l)return _i;_l=1;var t=li(),e=function(){return t.Date.now()};return _i=e,_i}var Ii,Il;function kh(){if(Il)return Ii;Il=1;var t=/\s/;function e(r){for(var a=r.length;a--&&t.test(r.charAt(a)););return a}return Ii=e,Ii}var Oi,Ol;function Ph(){if(Ol)return Oi;Ol=1;var t=kh(),e=/^\s+/;function r(a){return a&&a.slice(0,t(a)+1).replace(e,"")}return Oi=r,Oi}var Ni,Nl;function jo(){if(Nl)return Ni;Nl=1;var t=li(),e=t.Symbol;return Ni=e,Ni}var zi,zl;function Bh(){if(zl)return zi;zl=1;var t=jo(),e=Object.prototype,r=e.hasOwnProperty,a=e.toString,n=t?t.toStringTag:void 0;function i(s){var o=r.call(s,n),l=s[n];try{s[n]=void 0;var u=!0}catch{}var c=a.call(s);return u&&(o?s[n]=l:delete s[n]),c}return zi=i,zi}var $i,$l;function Dh(){if($l)return $i;$l=1;var t=Object.prototype,e=t.toString;function r(a){return e.call(a)}return $i=r,$i}var Fi,Fl;function Ed(){if(Fl)return Fi;Fl=1;var t=jo(),e=Bh(),r=Dh(),a="[object Null]",n="[object Undefined]",i=t?t.toStringTag:void 0;function s(o){return o==null?o===void 0?n:a:i&&i in Object(o)?e(o):r(o)}return Fi=s,Fi}var qi,ql;function Rh(){if(ql)return qi;ql=1;function t(e){return e!=null&&typeof e=="object"}return qi=t,qi}var Vi,Vl;function rn(){if(Vl)return Vi;Vl=1;var t=Ed(),e=Rh(),r="[object Symbol]";function a(n){return typeof n=="symbol"||e(n)&&t(n)==r}return Vi=a,Vi}var Hi,Hl;function Ah(){if(Hl)return Hi;Hl=1;var t=Ph(),e=tn(),r=rn(),a=NaN,n=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,s=/^0o[0-7]+$/i,o=parseInt;function l(u){if(typeof u=="number")return u;if(r(u))return a;if(e(u)){var c=typeof u.valueOf=="function"?u.valueOf():u;u=e(c)?c+"":c}if(typeof u!="string")return u===0?u:+u;u=t(u);var d=i.test(u);return d||s.test(u)?o(u.slice(2),d?2:8):n.test(u)?a:+u}return Hi=l,Hi}var Gi,Gl;function Lh(){if(Gl)return Gi;Gl=1;var t=tn(),e=Sh(),r=Ah(),a="Expected a function",n=Math.max,i=Math.min;function s(o,l,u){var c,d,f,h,v,y,p=0,g=!1,m=!1,b=!0;if(typeof o!="function")throw new TypeError(a);l=r(l)||0,t(u)&&(g=!!u.leading,m="maxWait"in u,f=m?n(r(u.maxWait)||0,l):f,b="trailing"in u?!!u.trailing:b);function w(R){var A=c,M=d;return c=d=void 0,p=R,h=o.apply(M,A),h}function E(R){return p=R,v=setTimeout(T,l),g?w(R):h}function C(R){var A=R-y,M=R-p,_=l-A;return m?i(_,f-M):_}function x(R){var A=R-y,M=R-p;return y===void 0||A>=l||A<0||m&&M>=f}function T(){var R=e();if(x(R))return k(R);v=setTimeout(T,C(R))}function k(R){return v=void 0,b&&c?w(R):(c=d=void 0,h)}function P(){v!==void 0&&clearTimeout(v),p=0,c=y=d=v=void 0}function B(){return v===void 0?h:k(e())}function D(){var R=e(),A=x(R);if(c=arguments,d=this,y=R,A){if(v===void 0)return E(y);if(m)return clearTimeout(v),v=setTimeout(T,l),w(y)}return v===void 0&&(v=setTimeout(T,l)),h}return D.cancel=P,D.flush=B,D}return Gi=s,Gi}var Mh=Lh(),an=en(Mh),Ui=it?it.performance:null,Cd=Ui&&Ui.now?function(){return Ui.now()}:function(){return Date.now()},_h=(function(){if(it){if(it.requestAnimationFrame)return function(t){it.requestAnimationFrame(t)};if(it.mozRequestAnimationFrame)return function(t){it.mozRequestAnimationFrame(t)};if(it.webkitRequestAnimationFrame)return function(t){it.webkitRequestAnimationFrame(t)};if(it.msRequestAnimationFrame)return function(t){it.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(Cd())},1e3/60)}})(),Kn=function(e){return _h(e)},cr=Cd,Vr=9261,Td=65599,oa=5381,Sd=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Vr,a=r,n;n=e.next(),!n.done;)a=a*Td+n.value|0;return a},Va=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Vr;return r*Td+e|0},Ha=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:oa;return(r<<5)+r+e|0},Ih=function(e,r){return e*2097152+r},gr=function(e){return e[0]*2097152+e[1]},hn=function(e,r){return[Va(e[0],r[0]),Ha(e[1],r[1])]},Ul=function(e,r){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n<i?a.value=e[n++]:a.done=!0,a}};return Sd(s,r)},Ur=function(e,r){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n<i?a.value=e.charCodeAt(n++):a.done=!0,a}};return Sd(s,r)},kd=function(){return Oh(arguments)},Oh=function(e){for(var r,a=0;a<e.length;a++){var n=e[a];a===0?r=Ur(n):r=Ur(n,r)}return r};function Nh(t,e,r,a,n){var i=n*Math.PI/180,s=Math.cos(i)*(t-r)-Math.sin(i)*(e-a)+r,o=Math.sin(i)*(t-r)+Math.cos(i)*(e-a)+a;return{x:s,y:o}}var zh=function(e,r,a,n,i,s){return{x:(e-a)*i+a,y:(r-n)*s+n}};function $h(t,e,r){if(r===0)return t;var a=(e.x1+e.x2)/2,n=(e.y1+e.y2)/2,i=e.w/e.h,s=1/i,o=Nh(t.x,t.y,a,n,r),l=zh(o.x,o.y,a,n,i,s);return{x:l.x,y:l.y}}var Kl=!0,Fh=console.warn!=null,qh=console.trace!=null,Yo=Number.MAX_SAFE_INTEGER||9007199254740991,Pd=function(){return!0},Wn=function(){return!1},Wl=function(){return 0},Xo=function(){},Ye=function(e){throw new Error(e)},Bd=function(e){if(e!==void 0)Kl=!!e;else return Kl},He=function(e){Bd()&&(Fh?console.warn(e):(console.log(e),qh&&console.trace()))},Vh=function(e){return xe({},e)},Jt=function(e){return e==null?e:Ue(e)?e.slice():Ne(e)?Vh(e):e},Hh=function(e){return e.slice()},Dd=function(e,r){for(r=e="";e++<36;r+=e*51&52?(e^15?8^Math.random()*(e^20?16:4):4).toString(16):"-");return r},Gh={},Rd=function(){return Gh},gt=function(e){var r=Object.keys(e);return function(a){for(var n={},i=0;i<r.length;i++){var s=r[i],o=a?.[s];n[s]=o===void 0?e[s]:o}return n}},kr=function(e,r,a){for(var n=e.length-1;n>=0;n--)e[n]===r&&e.splice(n,1)},Zo=function(e){e.splice(0,e.length)},Uh=function(e,r){for(var a=0;a<r.length;a++){var n=r[a];e.push(n)}},Rt=function(e,r,a){return a&&(r=yd(a,r)),e[r]},ir=function(e,r,a,n){a&&(r=yd(a,r)),e[r]=n},Kh=(function(){function t(){Ar(this,t),this._obj={}}return Lr(t,[{key:"set",value:function(r,a){return this._obj[r]=a,this}},{key:"delete",value:function(r){return this._obj[r]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(r){return this._obj[r]!==void 0}},{key:"get",value:function(r){return this._obj[r]}}])})(),or=typeof Map<"u"?Map:Kh,Wh="undefined",jh=(function(){function t(e){if(Ar(this,t),this._obj=Object.create(null),this.size=0,e!=null){var r;e.instanceString!=null&&e.instanceString()===this.instanceString()?r=e.toArray():r=e;for(var a=0;a<r.length;a++)this.add(r[a])}}return Lr(t,[{key:"instanceString",value:function(){return"set"}},{key:"add",value:function(r){var a=this._obj;a[r]!==1&&(a[r]=1,this.size++)}},{key:"delete",value:function(r){var a=this._obj;a[r]===1&&(a[r]=0,this.size--)}},{key:"clear",value:function(){this._obj=Object.create(null)}},{key:"has",value:function(r){return this._obj[r]===1}},{key:"toArray",value:function(){var r=this;return Object.keys(this._obj).filter(function(a){return r.has(a)})}},{key:"forEach",value:function(r,a){return this.toArray().forEach(r,a)}}])})(),ma=(typeof Set>"u"?"undefined":ot(Set))!==Wh?Set:jh,ui=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!Ko(e)){Ye("An element must have a core reference and parameters set");return}var n=r.group;if(n==null&&(r.data&&r.data.source!=null&&r.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Ye("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n==="edges":!!r.pannable,active:!1,classes:new ma,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),r.renderedPosition){var s=r.renderedPosition,o=e.pan(),l=e.zoom();i.position={x:(s.x-o.x)/l,y:(s.y-o.y)/l}}var u=[];Ue(r.classes)?u=r.classes:me(r.classes)&&(u=r.classes.split(/\s+/));for(var c=0,d=u.length;c<d;c++){var f=u[c];!f||f===""||i.classes.add(f)}this.createEmitter(),(a===void 0||a)&&this.restore();var h=r.style||r.css;h&&(He("Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead."),this.style(h))},jl=function(e){return e={bfs:e.bfs||!e.dfs,dfs:e.dfs||!e.bfs},function(a,n,i){var s;Ne(a)&&!It(a)&&(s=a,a=s.roots||s.root,n=s.visit,i=s.directed),i=arguments.length===2&&!Ze(n)?n:i,n=Ze(n)?n:function(){};for(var o=this._private.cy,l=a=me(a)?this.filter(a):a,u=[],c=[],d={},f={},h={},v=0,y,p=this.byGroup(),g=p.nodes,m=p.edges,b=0;b<l.length;b++){var w=l[b],E=w.id();w.isNode()&&(u.unshift(w),e.bfs&&(h[E]=!0,c.push(w)),f[E]=0)}for(var C=function(){var R=e.bfs?u.shift():u.pop(),A=R.id();if(e.dfs){if(h[A])return 0;h[A]=!0,c.push(R)}var M=f[A],_=d[A],L=_!=null?_.source():null,I=_!=null?_.target():null,H=_==null?void 0:R.same(L)?I[0]:L[0],G;if(G=n(R,_,H,v++,M),G===!0)return y=R,1;if(G===!1)return 1;for(var O=R.connectedEdges().filter(function(re){return(!i||re.source().same(R))&&m.has(re)}),$=0;$<O.length;$++){var Y=O[$],te=Y.connectedNodes().filter(function(re){return!re.same(R)&&g.has(re)}),J=te.id();te.length!==0&&!h[J]&&(te=te[0],u.push(te),e.bfs&&(h[J]=!0,c.push(te)),d[J]=Y,f[J]=f[A]+1)}},x;u.length!==0&&(x=C(),!(x!==0&&x===1)););for(var T=o.collection(),k=0;k<c.length;k++){var P=c[k],B=d[P.id()];B!=null&&T.push(B),T.push(P)}return{path:o.collection(T),found:o.collection(y)}}},Ga={breadthFirstSearch:jl({bfs:!0}),depthFirstSearch:jl({dfs:!0})};Ga.bfs=Ga.breadthFirstSearch;Ga.dfs=Ga.depthFirstSearch;var Ln={exports:{}},Yh=Ln.exports,Yl;function Xh(){return Yl||(Yl=1,(function(t,e){(function(){var r,a,n,i,s,o,l,u,c,d,f,h,v,y,p;n=Math.floor,d=Math.min,a=function(g,m){return g<m?-1:g>m?1:0},c=function(g,m,b,w,E){var C;if(b==null&&(b=0),E==null&&(E=a),b<0)throw new Error("lo must be non-negative");for(w==null&&(w=g.length);b<w;)C=n((b+w)/2),E(m,g[C])<0?w=C:b=C+1;return[].splice.apply(g,[b,b-b].concat(m)),m},o=function(g,m,b){return b==null&&(b=a),g.push(m),y(g,0,g.length-1,b)},s=function(g,m){var b,w;return m==null&&(m=a),b=g.pop(),g.length?(w=g[0],g[0]=b,p(g,0,m)):w=b,w},u=function(g,m,b){var w;return b==null&&(b=a),w=g[0],g[0]=m,p(g,0,b),w},l=function(g,m,b){var w;return b==null&&(b=a),g.length&&b(g[0],m)<0&&(w=[g[0],m],m=w[0],g[0]=w[1],p(g,0,b)),m},i=function(g,m){var b,w,E,C,x,T;for(m==null&&(m=a),C=(function(){T=[];for(var k=0,P=n(g.length/2);0<=P?k<P:k>P;0<=P?k++:k--)T.push(k);return T}).apply(this).reverse(),x=[],w=0,E=C.length;w<E;w++)b=C[w],x.push(p(g,b,m));return x},v=function(g,m,b){var w;if(b==null&&(b=a),w=g.indexOf(m),w!==-1)return y(g,0,w,b),p(g,w,b)},f=function(g,m,b){var w,E,C,x,T;if(b==null&&(b=a),E=g.slice(0,m),!E.length)return E;for(i(E,b),T=g.slice(m),C=0,x=T.length;C<x;C++)w=T[C],l(E,w,b);return E.sort(b).reverse()},h=function(g,m,b){var w,E,C,x,T,k,P,B,D;if(b==null&&(b=a),m*10<=g.length){if(C=g.slice(0,m).sort(b),!C.length)return C;for(E=C[C.length-1],P=g.slice(m),x=0,k=P.length;x<k;x++)w=P[x],b(w,E)<0&&(c(C,w,0,null,b),C.pop(),E=C[C.length-1]);return C}for(i(g,b),D=[],T=0,B=d(m,g.length);0<=B?T<B:T>B;0<=B?++T:--T)D.push(s(g,b));return D},y=function(g,m,b,w){var E,C,x;for(w==null&&(w=a),E=g[b];b>m;){if(x=b-1>>1,C=g[x],w(E,C)<0){g[b]=C,b=x;continue}break}return g[b]=E},p=function(g,m,b){var w,E,C,x,T;for(b==null&&(b=a),E=g.length,T=m,C=g[m],w=2*m+1;w<E;)x=w+1,x<E&&!(b(g[w],g[x])<0)&&(w=x),g[m]=g[w],m=w,w=2*m+1;return g[m]=C,y(g,T,m,b)},r=(function(){g.push=o,g.pop=s,g.replace=u,g.pushpop=l,g.heapify=i,g.updateItem=v,g.nlargest=f,g.nsmallest=h;function g(m){this.cmp=m??a,this.nodes=[]}return g.prototype.push=function(m){return o(this.nodes,m,this.cmp)},g.prototype.pop=function(){return s(this.nodes,this.cmp)},g.prototype.peek=function(){return this.nodes[0]},g.prototype.contains=function(m){return this.nodes.indexOf(m)!==-1},g.prototype.replace=function(m){return u(this.nodes,m,this.cmp)},g.prototype.pushpop=function(m){return l(this.nodes,m,this.cmp)},g.prototype.heapify=function(){return i(this.nodes,this.cmp)},g.prototype.updateItem=function(m){return v(this.nodes,m,this.cmp)},g.prototype.clear=function(){return this.nodes=[]},g.prototype.empty=function(){return this.nodes.length===0},g.prototype.size=function(){return this.nodes.length},g.prototype.clone=function(){var m;return m=new g,m.nodes=this.nodes.slice(0),m},g.prototype.toArray=function(){return this.nodes.slice(0)},g.prototype.insert=g.prototype.push,g.prototype.top=g.prototype.peek,g.prototype.front=g.prototype.peek,g.prototype.has=g.prototype.contains,g.prototype.copy=g.prototype.clone,g})(),(function(g,m){return t.exports=m()})(this,function(){return r})}).call(Yh)})(Ln)),Ln.exports}var Ki,Xl;function Zh(){return Xl||(Xl=1,Ki=Xh()),Ki}var Qh=Zh(),nn=en(Qh),Jh=gt({root:null,weight:function(e){return 1},directed:!1}),ep={dijkstra:function(e){if(!Ne(e)){var r=arguments;e={root:r[0],weight:r[1],directed:r[2]}}var a=Jh(e),n=a.root,i=a.weight,s=a.directed,o=this,l=i,u=me(n)?this.filter(n)[0]:n[0],c={},d={},f={},h=this.byGroup(),v=h.nodes,y=h.edges;y.unmergeBy(function(M){return M.isLoop()});for(var p=function(_){return c[_.id()]},g=function(_,L){c[_.id()]=L,m.updateItem(_)},m=new nn(function(M,_){return p(M)-p(_)}),b=0;b<v.length;b++){var w=v[b];c[w.id()]=w.same(u)?0:1/0,m.push(w)}for(var E=function(_,L){for(var I=(s?_.edgesTo(L):_.edgesWith(L)).intersect(y),H=1/0,G,O=0;O<I.length;O++){var $=I[O],Y=l($);(Y<H||!G)&&(H=Y,G=$)}return{edge:G,dist:H}};m.size()>0;){var C=m.pop(),x=p(C),T=C.id();if(f[T]=x,x!==1/0)for(var k=C.neighborhood().intersect(v),P=0;P<k.length;P++){var B=k[P],D=B.id(),R=E(C,B),A=x+R.dist;A<p(B)&&(g(B,A),d[D]={node:C,edge:R.edge})}}return{distanceTo:function(_){var L=me(_)?v.filter(_)[0]:_[0];return f[L.id()]},pathTo:function(_){var L=me(_)?v.filter(_)[0]:_[0],I=[],H=L,G=H.id();if(L.length>0)for(I.unshift(L);d[G];){var O=d[G];I.unshift(O.edge),I.unshift(O.node),H=O.node,G=H.id()}return o.spawn(I)}}}},tp={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,s=new Array(i),o=a,l=function(w){for(var E=0;E<s.length;E++){var C=s[E];if(C.has(w))return E}},u=0;u<i;u++)s[u]=this.spawn(a[u]);for(var c=n.sort(function(b,w){return e(b)-e(w)}),d=0;d<c.length;d++){var f=c[d],h=f.source()[0],v=f.target()[0],y=l(h),p=l(v),g=s[y],m=s[p];y!==p&&(o.merge(f),g.merge(m),s.splice(p,1))}return o}},rp=gt({root:null,goal:null,weight:function(e){return 1},heuristic:function(e){return 0},directed:!1}),ap={aStar:function(e){var r=this.cy(),a=rp(e),n=a.root,i=a.goal,s=a.heuristic,o=a.directed,l=a.weight;n=r.collection(n)[0],i=r.collection(i)[0];var u=n.id(),c=i.id(),d={},f={},h={},v=new nn(function(G,O){return f[G.id()]-f[O.id()]}),y=new ma,p={},g={},m=function(O,$){v.push(O),y.add($)},b,w,E=function(){b=v.pop(),w=b.id(),y.delete(w)},C=function(O){return y.has(O)};m(n,u),d[u]=0,f[u]=s(n);for(var x=0;v.size()>0;){if(E(),x++,w===c){for(var T=[],k=i,P=c,B=g[P];T.unshift(k),B!=null&&T.unshift(B),k=p[P],k!=null;)P=k.id(),B=g[P];return{found:!0,distance:d[w],path:this.spawn(T),steps:x}}h[w]=!0;for(var D=b._private.edges,R=0;R<D.length;R++){var A=D[R];if(this.hasElementWithId(A.id())&&!(o&&A.data("source")!==w)){var M=A.source(),_=A.target(),L=M.id()!==w?M:_,I=L.id();if(this.hasElementWithId(I)&&!h[I]){var H=d[w]+l(A);if(!C(I)){d[I]=H,f[I]=H+s(L),m(L,I),p[I]=b,g[I]=A;continue}H<d[I]&&(d[I]=H,f[I]=H+s(L),p[I]=b,g[I]=A)}}}}return{found:!1,distance:void 0,path:void 0,steps:x}}},np=gt({weight:function(e){return 1},directed:!1}),ip={floydWarshall:function(e){for(var r=this.cy(),a=np(e),n=a.weight,i=a.directed,s=n,o=this.byGroup(),l=o.nodes,u=o.edges,c=l.length,d=c*c,f=function(Y){return l.indexOf(Y)},h=function(Y){return l[Y]},v=new Array(d),y=0;y<d;y++){var p=y%c,g=(y-p)/c;g===p?v[y]=0:v[y]=1/0}for(var m=new Array(d),b=new Array(d),w=0;w<u.length;w++){var E=u[w],C=E.source()[0],x=E.target()[0];if(C!==x){var T=f(C),k=f(x),P=T*c+k,B=s(E);if(v[P]>B&&(v[P]=B,m[P]=k,b[P]=E),!i){var D=k*c+T;!i&&v[D]>B&&(v[D]=B,m[D]=T,b[D]=E)}}}for(var R=0;R<c;R++)for(var A=0;A<c;A++)for(var M=A*c+R,_=0;_<c;_++){var L=A*c+_,I=R*c+_;v[M]+v[I]<v[L]&&(v[L]=v[M]+v[I],m[L]=m[M])}var H=function(Y){return(me(Y)?r.filter(Y):Y)[0]},G=function(Y){return f(H(Y))},O={distance:function(Y,te){var J=G(Y),re=G(te);return v[J*c+re]},path:function(Y,te){var J=G(Y),re=G(te),ne=h(J);if(J===re)return ne.collection();if(m[J*c+re]==null)return r.collection();var oe=r.collection(),ee=J,q;for(oe.merge(ne);J!==re;)ee=J,J=m[J*c+re],q=b[ee*c+J],oe.merge(q),oe.merge(h(J));return oe}};return O}},sp=gt({weight:function(e){return 1},directed:!1,root:null}),op={bellmanFord:function(e){var r=this,a=sp(e),n=a.weight,i=a.directed,s=a.root,o=n,l=this,u=this.cy(),c=this.byGroup(),d=c.edges,f=c.nodes,h=f.length,v=new or,y=!1,p=[];s=u.collection(s)[0],d.unmergeBy(function(Te){return Te.isLoop()});for(var g=d.length,m=function(Ee){var be=v.get(Ee.id());return be||(be={},v.set(Ee.id(),be)),be},b=function(Ee){return(me(Ee)?u.$(Ee):Ee)[0]},w=function(Ee){return m(b(Ee)).dist},E=function(Ee){for(var be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:s,ce=b(Ee),ye=[],pe=ce;;){if(pe==null)return r.spawn();var Se=m(pe),Ce=Se.edge,De=Se.pred;if(ye.unshift(pe[0]),pe.same(be)&&ye.length>0)break;Ce!=null&&ye.unshift(Ce),pe=De}return l.spawn(ye)},C=0;C<h;C++){var x=f[C],T=m(x);x.same(s)?T.dist=0:T.dist=1/0,T.pred=null,T.edge=null}for(var k=!1,P=function(Ee,be,ce,ye,pe,Se){var Ce=ye.dist+Se;Ce<pe.dist&&!ce.same(ye.edge)&&(pe.dist=Ce,pe.pred=Ee,pe.edge=ce,k=!0)},B=1;B<h;B++){k=!1;for(var D=0;D<g;D++){var R=d[D],A=R.source(),M=R.target(),_=o(R),L=m(A),I=m(M);P(A,M,R,L,I,_),i||P(M,A,R,I,L,_)}if(!k)break}if(k)for(var H=[],G=0;G<g;G++){var O=d[G],$=O.source(),Y=O.target(),te=o(O),J=m($).dist,re=m(Y).dist;if(J+te<re||!i&&re+te<J)if(y||(He("Graph contains a negative weight cycle for Bellman-Ford"),y=!0),e.findNegativeWeightCycles!==!1){var ne=[];J+te<re&&ne.push($),!i&&re+te<J&&ne.push(Y);for(var oe=ne.length,ee=0;ee<oe;ee++){var q=ne[ee],K=[q];K.push(m(q).edge);for(var W=m(q).pred;K.indexOf(W)===-1;)K.push(W),K.push(m(W).edge),W=m(W).pred;K=K.slice(K.indexOf(W));for(var Q=K[0].id(),ie=0,ge=2;ge<K.length;ge+=2)K[ge].id()<Q&&(Q=K[ge].id(),ie=ge);K=K.slice(ie).concat(K.slice(0,ie)),K.push(K[0]);var Me=K.map(function(Te){return Te.id()}).join(",");H.indexOf(Me)===-1&&(p.push(l.spawn(K)),H.push(Me))}}else break}return{distanceTo:w,pathTo:E,hasNegativeWeightCycle:y,negativeWeightCycles:p}}},lp=Math.sqrt(2),up=function(e,r,a){a.length===0&&Ye("Karger-Stein must be run on a connected (sub)graph");for(var n=a[e],i=n[1],s=n[2],o=r[i],l=r[s],u=a,c=u.length-1;c>=0;c--){var d=u[c],f=d[1],h=d[2];(r[f]===o&&r[h]===l||r[f]===l&&r[h]===o)&&u.splice(c,1)}for(var v=0;v<u.length;v++){var y=u[v];y[1]===l?(u[v]=y.slice(),u[v][1]=o):y[2]===l&&(u[v]=y.slice(),u[v][2]=o)}for(var p=0;p<r.length;p++)r[p]===l&&(r[p]=o);return u},Wi=function(e,r,a,n){for(;a>n;){var i=Math.floor(Math.random()*r.length);r=up(i,e,r),a--}return r},cp={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(I){return I.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),l=Math.floor(i/lp);if(i<2){Ye("At least 2 nodes are required for Karger-Stein algorithm");return}for(var u=[],c=0;c<s;c++){var d=n[c];u.push([c,a.indexOf(d.source()),a.indexOf(d.target())])}for(var f=1/0,h=[],v=new Array(i),y=new Array(i),p=new Array(i),g=function(H,G){for(var O=0;O<i;O++)G[O]=H[O]},m=0;m<=o;m++){for(var b=0;b<i;b++)y[b]=b;var w=Wi(y,u.slice(),i,l),E=w.slice();g(y,p);var C=Wi(y,w,l,2),x=Wi(p,E,l,2);C.length<=x.length&&C.length<f?(f=C.length,h=C,g(y,v)):x.length<=C.length&&x.length<f&&(f=x.length,h=x,g(p,v))}for(var T=this.spawn(h.map(function(I){return n[I[0]]})),k=this.spawn(),P=this.spawn(),B=v[0],D=0;D<v.length;D++){var R=v[D],A=a[D];R===B?k.merge(A):P.merge(A)}var M=function(H){var G=e.spawn();return H.forEach(function(O){G.merge(O),O.connectedEdges().forEach(function($){e.contains($)&&!T.contains($)&&G.merge($)})}),G},_=[M(k),M(P)],L={cut:T,components:_,partition1:k,partition2:P};return L}},ji,dp=function(e){return{x:e.x,y:e.y}},ci=function(e,r,a){return{x:e.x*r+a.x,y:e.y*r+a.y}},Ad=function(e,r,a){return{x:(e.x-a.x)/r,y:(e.y-a.y)/r}},la=function(e){return{x:e[0],y:e[1]}},fp=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i<a;i++){var s=e[i];isFinite(s)&&(n=Math.min(s,n))}return n},vp=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i<a;i++){var s=e[i];isFinite(s)&&(n=Math.max(s,n))}return n},hp=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=r;s<a;s++){var o=e[s];isFinite(o)&&(n+=o,i++)}return n/i},pp=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a<e.length&&e.splice(a,e.length-a),r>0&&e.splice(0,r));for(var o=0,l=e.length-1;l>=0;l--){var u=e[l];s?isFinite(u)||(e[l]=-1/0,o++):e.splice(l,1)}i&&e.sort(function(f,h){return f-h});var c=e.length,d=Math.floor(c/2);return c%2!==0?e[d+1+o]:(e[d-1+o]+e[d+o])/2},gp=function(e){return Math.PI*e/180},pn=function(e,r){return Math.atan2(r,e)-Math.PI/2},Qo=Math.log2||function(t){return Math.log(t)/Math.log(2)},Jo=function(e){return e>0?1:e<0?-1:0},Kr=function(e,r){return Math.sqrt($r(e,r))},$r=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n},yp=function(e){for(var r=e.length,a=0,n=0;n<r;n++)a+=e[n];for(var i=0;i<r;i++)e[i]=e[i]/a;return e},ct=function(e,r,a,n){return(1-n)*(1-n)*e+2*(1-n)*n*r+n*n*a},da=function(e,r,a,n){return{x:ct(e.x,r.x,a.x,n),y:ct(e.y,r.y,a.y,n)}},mp=function(e,r,a,n){var i={x:r.x-e.x,y:r.y-e.y},s=Kr(e,r),o={x:i.x/s,y:i.y/s};return a=a??0,n=n??a*s,{x:e.x+o.x*n,y:e.y+o.y*n}},Ua=function(e,r,a){return Math.max(e,Math.min(a,r))},kt=function(e){if(e==null)return{x1:1/0,y1:1/0,x2:-1/0,y2:-1/0,w:0,h:0};if(e.x1!=null&&e.y1!=null){if(e.x2!=null&&e.y2!=null&&e.x2>=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},bp=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},wp=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},xp=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},Ld=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},Mn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},_n=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(r.length===1)a=n=i=s=r[0];else if(r.length===2)a=i=r[0],s=n=r[1];else if(r.length===4){var o=at(r,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Zl=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},el=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2<r.x1||r.x2<e.x1||e.y2<r.y1||r.y2<e.y1||e.y1>r.y2||r.y1>e.y2)},wr=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2},Ql=function(e,r){return wr(e,r.x,r.y)},Md=function(e,r){return wr(e,r.x1,r.y1)&&wr(e,r.x2,r.y2)},Ep=(ji=Math.hypot)!==null&&ji!==void 0?ji:function(t,e){return Math.sqrt(t*t+e*e)};function Cp(t,e){if(t.length<3)throw new Error("Need at least 3 vertices");var r=function(T,k){return{x:T.x+k.x,y:T.y+k.y}},a=function(T,k){return{x:T.x-k.x,y:T.y-k.y}},n=function(T,k){return{x:T.x*k,y:T.y*k}},i=function(T,k){return T.x*k.y-T.y*k.x},s=function(T){var k=Ep(T.x,T.y);return k===0?{x:0,y:0}:{x:T.x/k,y:T.y/k}},o=function(T){for(var k=0,P=0;P<T.length;P++){var B=T[P],D=T[(P+1)%T.length];k+=B.x*D.y-D.x*B.y}return k/2},l=function(T,k,P,B){var D=a(k,T),R=a(B,P),A=i(D,R);if(Math.abs(A)<1e-9)return r(T,n(D,.5));var M=i(a(P,T),R)/A;return r(T,n(D,M))},u=t.map(function(x){return{x:x.x,y:x.y}});o(u)<0&&u.reverse();for(var c=u.length,d=[],f=0;f<c;f++){var h=u[f],v=u[(f+1)%c],y=a(v,h),p=s({x:y.y,y:-y.x});d.push(p)}for(var g=d.map(function(x,T){var k=r(u[T],n(x,e)),P=r(u[(T+1)%c],n(x,e));return{p1:k,p2:P}}),m=[],b=0;b<c;b++){var w=g[(b-1+c)%c],E=g[b],C=l(w.p1,w.p2,E.p1,E.p2);m.push(C)}return m}function Tp(t,e,r,a,n,i){var s=Mp(t,e,r,a,n),o=Cp(s,i),l=kt();return o.forEach(function(u){return Ld(l,u.x,u.y)}),l}var _d=function(e,r,a,n,i,s,o){var l=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",u=l==="auto"?Pr(i,s):l,c=i/2,d=s/2;u=Math.min(u,c,d);var f=u!==c,h=u!==d,v;if(f){var y=a-c+u-o,p=n-d-o,g=a+c-u+o,m=p;if(v=xr(e,r,a,n,y,p,g,m,!1),v.length>0)return v}if(h){var b=a+c+o,w=n-d+u-o,E=b,C=n+d-u+o;if(v=xr(e,r,a,n,b,w,E,C,!1),v.length>0)return v}if(f){var x=a-c+u-o,T=n+d+o,k=a+c-u+o,P=T;if(v=xr(e,r,a,n,x,T,k,P,!1),v.length>0)return v}if(h){var B=a-c-o,D=n-d+u-o,R=B,A=n+d-u+o;if(v=xr(e,r,a,n,B,D,R,A,!1),v.length>0)return v}var M;{var _=a-c+u,L=n-d+u;if(M=Ia(e,r,a,n,_,L,u+o),M.length>0&&M[0]<=_&&M[1]<=L)return[M[0],M[1]]}{var I=a+c-u,H=n-d+u;if(M=Ia(e,r,a,n,I,H,u+o),M.length>0&&M[0]>=I&&M[1]<=H)return[M[0],M[1]]}{var G=a+c-u,O=n+d-u;if(M=Ia(e,r,a,n,G,O,u+o),M.length>0&&M[0]>=G&&M[1]>=O)return[M[0],M[1]]}{var $=a-c+u,Y=n+d-u;if(M=Ia(e,r,a,n,$,Y,u+o),M.length>0&&M[0]<=$&&M[1]>=Y)return[M[0],M[1]]}return[]},Sp=function(e,r,a,n,i,s,o){var l=o,u=Math.min(a,i),c=Math.max(a,i),d=Math.min(n,s),f=Math.max(n,s);return u-l<=e&&e<=c+l&&d-l<=r&&r<=f+l},kp=function(e,r,a,n,i,s,o,l,u){var c={x1:Math.min(a,o,i)-u,x2:Math.max(a,o,i)+u,y1:Math.min(n,l,s)-u,y2:Math.max(n,l,s)+u};return!(e<c.x1||e>c.x2||r<c.y1||r>c.y2)},Pp=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,l=(-r+s)/o,u=(-r-s)/o;return[l,u]},Bp=function(e,r,a,n,i){var s=1e-5;e===0&&(e=s),r/=e,a/=e,n/=e;var o,l,u,c,d,f,h,v;if(l=(3*a-r*r)/9,u=-(27*n)+r*(9*a-2*(r*r)),u/=54,o=l*l*l+u*u,i[1]=0,h=r/3,o>0){d=u+Math.sqrt(o),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),f=u-Math.sqrt(o),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),i[0]=-h+d+f,h+=(d+f)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-f+d)/2,i[3]=h,i[5]=-h;return}if(i[5]=i[3]=0,o===0){v=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3),i[0]=-h+2*v,i[4]=i[2]=-(v+h);return}l=-l,c=l*l*l,c=Math.acos(u/Math.sqrt(c)),v=2*Math.sqrt(l),i[0]=-h+v*Math.cos(c/3),i[2]=-h+v*Math.cos((c+2*Math.PI)/3),i[4]=-h+v*Math.cos((c+4*Math.PI)/3)},Dp=function(e,r,a,n,i,s,o,l){var u=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*l+4*s*s-4*s*l+l*l,c=9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*l-6*s*s+3*s*l,d=3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*l-n*r+2*s*s+2*s*r-l*r,f=1*a*i-a*a+a*e-i*e+n*s-n*n+n*r-s*r,h=[];Bp(u,c,d,f,h);for(var v=1e-7,y=[],p=0;p<6;p+=2)Math.abs(h[p+1])<v&&h[p]>=0&&h[p]<=1&&y.push(h[p]);y.push(1),y.push(0);for(var g=-1,m,b,w,E=0;E<y.length;E++)m=Math.pow(1-y[E],2)*a+2*(1-y[E])*y[E]*i+y[E]*y[E]*o,b=Math.pow(1-y[E],2)*n+2*(1-y[E])*y[E]*s+y[E]*y[E]*l,w=Math.pow(m-e,2)+Math.pow(b-r,2),g>=0?w<g&&(g=w):g=w;return g},Rp=function(e,r,a,n,i,s){var o=[e-a,r-n],l=[i-a,s-n],u=l[0]*l[0]+l[1]*l[1],c=o[0]*o[0]+o[1]*o[1],d=o[0]*l[0]+o[1]*l[1],f=d*d/u;return d<0?c:f>u?(e-i)*(e-i)+(r-s)*(r-s):c-f},At=function(e,r,a){for(var n,i,s,o,l,u=0,c=0;c<a.length/2;c++)if(n=a[c*2],i=a[c*2+1],c+1<a.length/2?(s=a[(c+1)*2],o=a[(c+1)*2+1]):(s=a[(c+1-a.length/2)*2],o=a[(c+1-a.length/2)*2+1]),!(n==e&&s==e))if(n>=e&&e>=s||n<=e&&e<=s)l=(e-n)/(s-n)*(o-i)+i,l>r&&u++;else continue;return u%2!==0},dr=function(e,r,a,n,i,s,o,l,u){var c=new Array(a.length),d;l[0]!=null?(d=Math.atan(l[1]/l[0]),l[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=l;for(var f=Math.cos(-d),h=Math.sin(-d),v=0;v<c.length/2;v++)c[v*2]=s/2*(a[v*2]*f-a[v*2+1]*h),c[v*2+1]=o/2*(a[v*2+1]*f+a[v*2]*h),c[v*2]+=n,c[v*2+1]+=i;var y;if(u>0){var p=Yn(c,-u);y=jn(p)}else y=c;return At(e,r,y)},Ap=function(e,r,a,n,i,s,o,l){for(var u=new Array(a.length*2),c=0;c<l.length;c++){var d=l[c];u[c*4+0]=d.startX,u[c*4+1]=d.startY,u[c*4+2]=d.stopX,u[c*4+3]=d.stopY;var f=Math.pow(d.cx-e,2)+Math.pow(d.cy-r,2);if(f<=Math.pow(d.radius,2))return!0}return At(e,r,u)},jn=function(e){for(var r=new Array(e.length/2),a,n,i,s,o,l,u,c,d=0;d<e.length/4;d++){a=e[d*4],n=e[d*4+1],i=e[d*4+2],s=e[d*4+3],d<e.length/4-1?(o=e[(d+1)*4],l=e[(d+1)*4+1],u=e[(d+1)*4+2],c=e[(d+1)*4+3]):(o=e[0],l=e[1],u=e[2],c=e[3]);var f=xr(a,n,i,s,o,l,u,c,!0);r[d*2]=f[0],r[d*2+1]=f[1]}return r},Yn=function(e,r){for(var a=new Array(e.length*2),n,i,s,o,l=0;l<e.length/2;l++){n=e[l*2],i=e[l*2+1],l<e.length/2-1?(s=e[(l+1)*2],o=e[(l+1)*2+1]):(s=e[0],o=e[1]);var u=o-i,c=-(s-n),d=Math.sqrt(u*u+c*c),f=u/d,h=c/d;a[l*4]=n+f*r,a[l*4+1]=i+h*r,a[l*4+2]=s+f*r,a[l*4+3]=o+h*r}return a},Lp=function(e,r,a,n,i,s){var o=a-e,l=n-r;o/=i,l/=s;var u=Math.sqrt(o*o+l*l),c=u-1;if(c<0)return[];var d=c/u;return[(a-e)*d+e,(n-r)*d+r]},Gr=function(e,r,a,n,i,s,o){return e-=i,r-=s,e/=a/2+o,r/=n/2+o,e*e+r*r<=1},Ia=function(e,r,a,n,i,s,o){var l=[a-e,n-r],u=[e-i,r-s],c=l[0]*l[0]+l[1]*l[1],d=2*(u[0]*l[0]+u[1]*l[1]),f=u[0]*u[0]+u[1]*u[1]-o*o,h=d*d-4*c*f;if(h<0)return[];var v=(-d+Math.sqrt(h))/(2*c),y=(-d-Math.sqrt(h))/(2*c),p=Math.min(v,y),g=Math.max(v,y),m=[];if(p>=0&&p<=1&&m.push(p),g>=0&&g<=1&&m.push(g),m.length===0)return[];var b=m[0]*l[0]+e,w=m[0]*l[1]+r;if(m.length>1){if(m[0]==m[1])return[b,w];var E=m[1]*l[0]+e,C=m[1]*l[1]+r;return[b,w,E,C]}else return[b,w]},Yi=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a},xr=function(e,r,a,n,i,s,o,l,u){var c=e-i,d=a-e,f=o-i,h=r-s,v=n-r,y=l-s,p=f*h-y*c,g=d*h-v*c,m=y*d-f*v;if(m!==0){var b=p/m,w=g/m,E=.001,C=0-E,x=1+E;return C<=b&&b<=x&&C<=w&&w<=x?[e+b*d,r+b*v]:u?[e+b*d,r+b*v]:[]}else return p===0||g===0?Yi(e,a,o)===o?[o,l]:Yi(e,a,i)===i?[i,s]:Yi(i,o,a)===a?[a,n]:[]:[]},Mp=function(e,r,a,n,i){var s=[],o=n/2,l=i/2,u=r,c=a;s.push({x:u+o*e[0],y:c+l*e[1]});for(var d=1;d<e.length/2;d++)s.push({x:u+o*e[d*2],y:c+l*e[d*2+1]});return s},Ka=function(e,r,a,n,i,s,o,l){var u=[],c,d=new Array(a.length),f=!0;s==null&&(f=!1);var h;if(f){for(var v=0;v<d.length/2;v++)d[v*2]=a[v*2]*s+n,d[v*2+1]=a[v*2+1]*o+i;if(l>0){var y=Yn(d,-l);h=jn(y)}else h=d}else h=a;for(var p,g,m,b,w=0;w<h.length/2;w++)p=h[w*2],g=h[w*2+1],w<h.length/2-1?(m=h[(w+1)*2],b=h[(w+1)*2+1]):(m=h[0],b=h[1]),c=xr(e,r,n,i,p,g,m,b),c.length!==0&&u.push(c[0],c[1]);return u},_p=function(e,r,a,n,i,s,o,l,u){var c=[],d,f=new Array(a.length*2);u.forEach(function(m,b){b===0?(f[f.length-2]=m.startX,f[f.length-1]=m.startY):(f[b*4-2]=m.startX,f[b*4-1]=m.startY),f[b*4]=m.stopX,f[b*4+1]=m.stopY,d=Ia(e,r,n,i,m.cx,m.cy,m.radius),d.length!==0&&c.push(d[0],d[1])});for(var h=0;h<f.length/4;h++)d=xr(e,r,n,i,f[h*4],f[h*4+1],f[h*4+2],f[h*4+3],!1),d.length!==0&&c.push(d[0],d[1]);if(c.length>2){for(var v=[c[0],c[1]],y=Math.pow(v[0]-e,2)+Math.pow(v[1]-r,2),p=1;p<c.length/2;p++){var g=Math.pow(c[p*2]-e,2)+Math.pow(c[p*2+1]-r,2);g<=y&&(v[0]=c[p*2],v[1]=c[p*2+1],y=g)}return v}return c},gn=function(e,r,a){var n=[e[0]-r[0],e[1]-r[1]],i=Math.sqrt(n[0]*n[0]+n[1]*n[1]),s=(i-a)/i;return s<0&&(s=1e-5),[r[0]+s*n[0],r[1]+s*n[1]]},St=function(e,r){var a=po(e,r);return a=Id(a),a},Id=function(e){for(var r,a,n=e.length/2,i=1/0,s=1/0,o=-1/0,l=-1/0,u=0;u<n;u++)r=e[2*u],a=e[2*u+1],i=Math.min(i,r),o=Math.max(o,r),s=Math.min(s,a),l=Math.max(l,a);for(var c=2/(o-i),d=2/(l-s),f=0;f<n;f++)r=e[2*f]=e[2*f]*c,a=e[2*f+1]=e[2*f+1]*d,i=Math.min(i,r),o=Math.max(o,r),s=Math.min(s,a),l=Math.max(l,a);if(s<-1)for(var h=0;h<n;h++)a=e[2*h+1]=e[2*h+1]+(-1-s);return e},po=function(e,r){var a=1/e*2*Math.PI,n=e%2===0?Math.PI/2+a/2:Math.PI/2;n+=r;for(var i=new Array(e*2),s,o=0;o<e;o++)s=o*a+n,i[2*o]=Math.cos(s),i[2*o+1]=Math.sin(-s);return i},Pr=function(e,r){return Math.min(e/4,r/4,8)},Od=function(e,r){return Math.min(e/10,r/10,8)},tl=function(){return 8},Ip=function(e,r,a){return[e-2*r+a,2*(r-e),e]},go=function(e,r){return{heightOffset:Math.min(15,.05*r),widthOffset:Math.min(100,.25*e),ctrlPtOffsetPct:.05}};function Xi(t,e){function r(d){for(var f=[],h=0;h<d.length;h++){var v=d[h],y=d[(h+1)%d.length],p={x:y.x-v.x,y:y.y-v.y},g={x:-p.y,y:p.x},m=Math.sqrt(g.x*g.x+g.y*g.y);f.push({x:g.x/m,y:g.y/m})}return f}function a(d,f){var h=1/0,v=-1/0,y=Lt(d),p;try{for(y.s();!(p=y.n()).done;){var g=p.value,m=g.x*f.x+g.y*f.y;h=Math.min(h,m),v=Math.max(v,m)}}catch(b){y.e(b)}finally{y.f()}return{min:h,max:v}}function n(d,f){return!(d.max<f.min||f.max<d.min)}var i=[].concat(Gn(r(t)),Gn(r(e))),s=Lt(i),o;try{for(s.s();!(o=s.n()).done;){var l=o.value,u=a(t,l),c=a(e,l);if(!n(u,c))return!1}}catch(d){s.e(d)}finally{s.f()}return!0}var Op=gt({dampingFactor:.8,precision:1e-6,iterations:200,weight:function(e){return 1}}),Np={pageRank:function(e){for(var r=Op(e),a=r.dampingFactor,n=r.precision,i=r.iterations,s=r.weight,o=this._private.cy,l=this.byGroup(),u=l.nodes,c=l.edges,d=u.length,f=d*d,h=c.length,v=new Array(f),y=new Array(d),p=(1-a)/d,g=0;g<d;g++){for(var m=0;m<d;m++){var b=g*d+m;v[b]=0}y[g]=0}for(var w=0;w<h;w++){var E=c[w],C=E.data("source"),x=E.data("target");if(C!==x){var T=u.indexOfId(C),k=u.indexOfId(x),P=s(E),B=k*d+T;v[B]+=P,y[T]+=P}}for(var D=1/d+p,R=0;R<d;R++)if(y[R]===0)for(var A=0;A<d;A++){var M=A*d+R;v[M]=D}else for(var _=0;_<d;_++){var L=_*d+R;v[L]=v[L]/y[R]+p}for(var I=new Array(d),H=new Array(d),G,O=0;O<d;O++)I[O]=1;for(var $=0;$<i;$++){for(var Y=0;Y<d;Y++)H[Y]=0;for(var te=0;te<d;te++)for(var J=0;J<d;J++){var re=te*d+J;H[te]+=v[re]*I[J]}yp(H),G=I,I=H,H=G;for(var ne=0,oe=0;oe<d;oe++){var ee=G[oe]-I[oe];ne+=ee*ee}if(ne<n)break}var q={rank:function(W){return W=o.collection(W)[0],I[u.indexOf(W)]}};return q}},Jl=gt({root:null,weight:function(e){return 1},directed:!1,alpha:0}),fa={degreeCentralityNormalized:function(e){e=Jl(e);var r=this.cy(),a=this.nodes(),n=a.length;if(e.directed){for(var c={},d={},f=0,h=0,v=0;v<n;v++){var y=a[v],p=y.id();e.root=y;var g=this.degreeCentrality(e);f<g.indegree&&(f=g.indegree),h<g.outdegree&&(h=g.outdegree),c[p]=g.indegree,d[p]=g.outdegree}return{indegree:function(b){return f==0?0:(me(b)&&(b=r.filter(b)),c[b.id()]/f)},outdegree:function(b){return h===0?0:(me(b)&&(b=r.filter(b)),d[b.id()]/h)}}}else{for(var i={},s=0,o=0;o<n;o++){var l=a[o];e.root=l;var u=this.degreeCentrality(e);s<u.degree&&(s=u.degree),i[l.id()]=u.degree}return{degree:function(b){return s===0?0:(me(b)&&(b=r.filter(b)),i[b.id()]/s)}}}},degreeCentrality:function(e){e=Jl(e);var r=this.cy(),a=this,n=e,i=n.root,s=n.weight,o=n.directed,l=n.alpha;if(i=r.collection(i)[0],o){for(var h=i.connectedEdges(),v=h.filter(function(C){return C.target().same(i)&&a.has(C)}),y=h.filter(function(C){return C.source().same(i)&&a.has(C)}),p=v.length,g=y.length,m=0,b=0,w=0;w<v.length;w++)m+=s(v[w]);for(var E=0;E<y.length;E++)b+=s(y[E]);return{indegree:Math.pow(p,1-l)*Math.pow(m,l),outdegree:Math.pow(g,1-l)*Math.pow(b,l)}}else{for(var u=i.connectedEdges().intersection(a),c=u.length,d=0,f=0;f<u.length;f++)d+=s(u[f]);return{degree:Math.pow(c,1-l)*Math.pow(d,l)}}}};fa.dc=fa.degreeCentrality;fa.dcn=fa.degreeCentralityNormalised=fa.degreeCentralityNormalized;var eu=gt({harmonic:!0,weight:function(){return 1},directed:!1,root:null}),va={closenessCentralityNormalized:function(e){for(var r=eu(e),a=r.harmonic,n=r.weight,i=r.directed,s=this.cy(),o={},l=0,u=this.nodes(),c=this.floydWarshall({weight:n,directed:i}),d=0;d<u.length;d++){for(var f=0,h=u[d],v=0;v<u.length;v++)if(d!==v){var y=c.distance(h,u[v]);a?f+=1/y:f+=y}a||(f=1/f),l<f&&(l=f),o[h.id()]=f}return{closeness:function(g){return l==0?0:(me(g)?g=s.filter(g)[0].id():g=g.id(),o[g]/l)}}},closenessCentrality:function(e){var r=eu(e),a=r.root,n=r.weight,i=r.directed,s=r.harmonic;a=this.filter(a)[0];for(var o=this.dijkstra({root:a,weight:n,directed:i}),l=0,u=this.nodes(),c=0;c<u.length;c++){var d=u[c];if(!d.same(a)){var f=o.distanceTo(d);s?l+=1/f:l+=f}}return s?l:1/l}};va.cc=va.closenessCentrality;va.ccn=va.closenessCentralityNormalised=va.closenessCentralityNormalized;var zp=gt({weight:null,directed:!1}),yo={betweennessCentrality:function(e){for(var r=zp(e),a=r.directed,n=r.weight,i=n!=null,s=this.cy(),o=this.nodes(),l={},u={},c=0,d={set:function(b,w){u[b]=w,w>c&&(c=w)},get:function(b){return u[b]}},f=0;f<o.length;f++){var h=o[f],v=h.id();a?l[v]=h.outgoers().nodes():l[v]=h.openNeighborhood().nodes(),d.set(v,0)}for(var y=function(){for(var b=o[p].id(),w=[],E={},C={},x={},T=new nn(function(te,J){return x[te]-x[J]}),k=0;k<o.length;k++){var P=o[k].id();E[P]=[],C[P]=0,x[P]=1/0}for(C[b]=1,x[b]=0,T.push(b);!T.empty();){var B=T.pop();if(w.push(B),i)for(var D=0;D<l[B].length;D++){var R=l[B][D],A=s.getElementById(B),M=void 0;A.edgesTo(R).length>0?M=A.edgesTo(R)[0]:M=R.edgesTo(A)[0];var _=n(M);R=R.id(),x[R]>x[B]+_&&(x[R]=x[B]+_,T.nodes.indexOf(R)<0?T.push(R):T.updateItem(R),C[R]=0,E[R]=[]),x[R]==x[B]+_&&(C[R]=C[R]+C[B],E[R].push(B))}else for(var L=0;L<l[B].length;L++){var I=l[B][L].id();x[I]==1/0&&(T.push(I),x[I]=x[B]+1),x[I]==x[B]+1&&(C[I]=C[I]+C[B],E[I].push(B))}}for(var H={},G=0;G<o.length;G++)H[o[G].id()]=0;for(;w.length>0;){for(var O=w.pop(),$=0;$<E[O].length;$++){var Y=E[O][$];H[Y]=H[Y]+C[Y]/C[O]*(1+H[O])}O!=o[p].id()&&d.set(O,d.get(O)+H[O])}},p=0;p<o.length;p++)y();var g={betweenness:function(b){var w=s.collection(b).id();return d.get(w)},betweennessNormalized:function(b){if(c==0)return 0;var w=s.collection(b).id();return d.get(w)/c}};return g.betweennessNormalised=g.betweennessNormalized,g}};yo.bc=yo.betweennessCentrality;var $p=gt({expandFactor:2,inflateFactor:2,multFactor:1,maxIterations:20,attributes:[function(t){return 1}]}),Fp=function(e){return $p(e)},qp=function(e,r){for(var a=0,n=0;n<r.length;n++)a+=r[n](e);return a},Vp=function(e,r,a){for(var n=0;n<r;n++)e[n*r+n]=a},Nd=function(e,r){for(var a,n=0;n<r;n++){a=0;for(var i=0;i<r;i++)a+=e[i*r+n];for(var s=0;s<r;s++)e[s*r+n]=e[s*r+n]/a}},Hp=function(e,r,a){for(var n=new Array(a*a),i=0;i<a;i++){for(var s=0;s<a;s++)n[i*a+s]=0;for(var o=0;o<a;o++)for(var l=0;l<a;l++)n[i*a+l]+=e[i*a+o]*r[o*a+l]}return n},Gp=function(e,r,a){for(var n=e.slice(0),i=1;i<a;i++)e=Hp(e,n,r);return e},Up=function(e,r,a){for(var n=new Array(r*r),i=0;i<r*r;i++)n[i]=Math.pow(e[i],a);return Nd(n,r),n},Kp=function(e,r,a,n){for(var i=0;i<a;i++){var s=Math.round(e[i]*Math.pow(10,n))/Math.pow(10,n),o=Math.round(r[i]*Math.pow(10,n))/Math.pow(10,n);if(s!==o)return!1}return!0},Wp=function(e,r,a,n){for(var i=[],s=0;s<r;s++){for(var o=[],l=0;l<r;l++)Math.round(e[s*r+l]*1e3)/1e3>0&&o.push(a[l]);o.length!==0&&i.push(n.collection(o))}return i},jp=function(e,r){for(var a=0;a<e.length;a++)if(!r[a]||e[a].id()!==r[a].id())return!1;return!0},Yp=function(e){for(var r=0;r<e.length;r++)for(var a=0;a<e.length;a++)r!=a&&jp(e[r],e[a])&&e.splice(a,1);return e},tu=function(e){for(var r=this.nodes(),a=this.edges(),n=this.cy(),i=Fp(e),s={},o=0;o<r.length;o++)s[r[o].id()]=o;for(var l=r.length,u=l*l,c=new Array(u),d,f=0;f<u;f++)c[f]=0;for(var h=0;h<a.length;h++){var v=a[h],y=s[v.source().id()],p=s[v.target().id()],g=qp(v,i.attributes);c[y*l+p]+=g,c[p*l+y]+=g}Vp(c,l,i.multFactor),Nd(c,l);for(var m=!0,b=0;m&&b<i.maxIterations;)m=!1,d=Gp(c,l,i.expandFactor),c=Up(d,l,i.inflateFactor),Kp(c,d,u,4)||(m=!0),b++;var w=Wp(c,l,r,n);return w=Yp(w),w},Xp={markovClustering:tu,mcl:tu},Zp=function(e){return e},zd=function(e,r){return Math.abs(r-e)},ru=function(e,r,a){return e+zd(r,a)},au=function(e,r,a){return e+Math.pow(a-r,2)},Qp=function(e){return Math.sqrt(e)},Jp=function(e,r,a){return Math.max(e,zd(r,a))},Ba=function(e,r,a,n,i){for(var s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:Zp,o=n,l,u,c=0;c<e;c++)l=r(c),u=a(c),o=i(o,l,u);return s(o)},ga={euclidean:function(e,r,a){return e>=2?Ba(e,r,a,0,au,Qp):Ba(e,r,a,0,ru)},squaredEuclidean:function(e,r,a){return Ba(e,r,a,0,au)},manhattan:function(e,r,a){return Ba(e,r,a,0,ru)},max:function(e,r,a){return Ba(e,r,a,-1/0,Jp)}};ga["squared-euclidean"]=ga.squaredEuclidean;ga.squaredeuclidean=ga.squaredEuclidean;function di(t,e,r,a,n,i){var s;return Ze(t)?s=t:s=ga[t]||ga.euclidean,e===0&&Ze(t)?s(n,i):s(e,r,a,n,i)}var eg=gt({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),rl=function(e){return eg(e)},Xn=function(e,r,a,n,i){var s=i!=="kMedoids",o=s?function(d){return a[d]}:function(d){return n[d](a)},l=function(f){return n[f](r)},u=a,c=r;return di(e,n.length,o,l,u,c)},Zi=function(e,r,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(r),l=null,u=0;u<n;u++)i[u]=e.min(a[u]).value,s[u]=e.max(a[u]).value;for(var c=0;c<r;c++){l=[];for(var d=0;d<n;d++)l[d]=Math.random()*(s[d]-i[d])+i[d];o[c]=l}return o},$d=function(e,r,a,n,i){for(var s=1/0,o=0,l=0;l<r.length;l++){var u=Xn(a,e,r[l],n,i);u<s&&(s=u,o=l)}return o},Fd=function(e,r,a){for(var n=[],i=null,s=0;s<r.length;s++)i=r[s],a[i.id()]===e&&n.push(i);return n},tg=function(e,r,a){return Math.abs(r-e)<=a},rg=function(e,r,a){for(var n=0;n<e.length;n++)for(var i=0;i<e[n].length;i++){var s=Math.abs(e[n][i]-r[n][i]);if(s>a)return!1}return!0},ag=function(e,r,a){for(var n=0;n<a;n++)if(e===r[n])return!0;return!1},nu=function(e,r){var a=new Array(r);if(e.length<50)for(var n=0;n<r;n++){for(var i=e[Math.floor(Math.random()*e.length)];ag(i,a,n);)i=e[Math.floor(Math.random()*e.length)];a[n]=i}else for(var s=0;s<r;s++)a[s]=e[Math.floor(Math.random()*e.length)];return a},iu=function(e,r,a){for(var n=0,i=0;i<r.length;i++)n+=Xn("manhattan",r[i],e,a,"kMedoids");return n},ng=function(e){var r=this.cy(),a=this.nodes(),n=null,i=rl(e),s=new Array(i.k),o={},l;i.testMode?typeof i.testCentroids=="number"?(i.testCentroids,l=Zi(a,i.k,i.attributes)):ot(i.testCentroids)==="object"?l=i.testCentroids:l=Zi(a,i.k,i.attributes):l=Zi(a,i.k,i.attributes);for(var u=!0,c=0;u&&c<i.maxIterations;){for(var d=0;d<a.length;d++)n=a[d],o[n.id()]=$d(n,l,i.distance,i.attributes,"kMeans");u=!1;for(var f=0;f<i.k;f++){var h=Fd(f,a,o);if(h.length!==0){for(var v=i.attributes.length,y=l[f],p=new Array(v),g=new Array(v),m=0;m<v;m++){g[m]=0;for(var b=0;b<h.length;b++)n=h[b],g[m]+=i.attributes[m](n);p[m]=g[m]/h.length,tg(p[m],y[m],i.sensitivityThreshold)||(u=!0)}l[f]=p,s[f]=r.collection(h)}}c++}return s},ig=function(e){var r=this.cy(),a=this.nodes(),n=null,i=rl(e),s=new Array(i.k),o,l={},u,c=new Array(i.k);i.testMode?typeof i.testCentroids=="number"||(ot(i.testCentroids)==="object"?o=i.testCentroids:o=nu(a,i.k)):o=nu(a,i.k);for(var d=!0,f=0;d&&f<i.maxIterations;){for(var h=0;h<a.length;h++)n=a[h],l[n.id()]=$d(n,o,i.distance,i.attributes,"kMedoids");d=!1;for(var v=0;v<o.length;v++){var y=Fd(v,a,l);if(y.length!==0){c[v]=iu(o[v],y,i.attributes);for(var p=0;p<y.length;p++)u=iu(y[p],y,i.attributes),u<c[v]&&(c[v]=u,o[v]=y[p],d=!0);s[v]=r.collection(y)}}f++}return s},sg=function(e,r,a,n,i){for(var s,o,l=0;l<r.length;l++)for(var u=0;u<e.length;u++)n[l][u]=Math.pow(a[l][u],i.m);for(var c=0;c<e.length;c++)for(var d=0;d<i.attributes.length;d++){s=0,o=0;for(var f=0;f<r.length;f++)s+=n[f][c]*i.attributes[d](r[f]),o+=n[f][c];e[c][d]=s/o}},og=function(e,r,a,n,i){for(var s=0;s<e.length;s++)r[s]=e[s].slice();for(var o,l,u,c=2/(i.m-1),d=0;d<a.length;d++)for(var f=0;f<n.length;f++){o=0;for(var h=0;h<a.length;h++)l=Xn(i.distance,n[f],a[d],i.attributes,"cmeans"),u=Xn(i.distance,n[f],a[h],i.attributes,"cmeans"),o+=Math.pow(l/u,c);e[f][d]=1/o}},lg=function(e,r,a,n){for(var i=new Array(a.k),s=0;s<i.length;s++)i[s]=[];for(var o,l,u=0;u<r.length;u++){o=-1/0,l=-1;for(var c=0;c<r[0].length;c++)r[u][c]>o&&(o=r[u][c],l=c);i[l].push(e[u])}for(var d=0;d<i.length;d++)i[d]=n.collection(i[d]);return i},su=function(e){var r=this.cy(),a=this.nodes(),n=rl(e),i,s,o,l,u;l=new Array(a.length);for(var c=0;c<a.length;c++)l[c]=new Array(n.k);o=new Array(a.length);for(var d=0;d<a.length;d++)o[d]=new Array(n.k);for(var f=0;f<a.length;f++){for(var h=0,v=0;v<n.k;v++)o[f][v]=Math.random(),h+=o[f][v];for(var y=0;y<n.k;y++)o[f][y]=o[f][y]/h}s=new Array(n.k);for(var p=0;p<n.k;p++)s[p]=new Array(n.attributes.length);u=new Array(a.length);for(var g=0;g<a.length;g++)u[g]=new Array(n.k);for(var m=!0,b=0;m&&b<n.maxIterations;)m=!1,sg(s,a,o,u,n),og(o,l,s,a,n),rg(o,l,n.sensitivityThreshold)||(m=!0),b++;return i=lg(a,o,n,r),{clusters:i,degreeOfMembership:o}},ug={kMeans:ng,kMedoids:ig,fuzzyCMeans:su,fcm:su},cg=gt({distance:"euclidean",linkage:"min",mode:"threshold",threshold:1/0,addDendrogram:!1,dendrogramDepth:0,attributes:[]}),dg={single:"min",complete:"max"},fg=function(e){var r=cg(e),a=dg[r.linkage];return a!=null&&(r.linkage=a),r},ou=function(e,r,a,n,i){for(var s=0,o=1/0,l,u=i.attributes,c=function(k,P){return di(i.distance,u.length,function(B){return u[B](k)},function(B){return u[B](P)},k,P)},d=0;d<e.length;d++){var f=e[d].key,h=a[f][n[f]];h<o&&(s=f,o=h)}if(i.mode==="threshold"&&o>=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var v=r[s],y=r[n[s]],p;i.mode==="dendrogram"?p={left:v,right:y,key:v.key}:p={value:v.value.concat(y.value),key:v.key},e[v.index]=p,e.splice(y.index,1),r[v.key]=p;for(var g=0;g<e.length;g++){var m=e[g];v.key===m.key?l=1/0:i.linkage==="min"?(l=a[v.key][m.key],a[v.key][m.key]>a[y.key][m.key]&&(l=a[y.key][m.key])):i.linkage==="max"?(l=a[v.key][m.key],a[v.key][m.key]<a[y.key][m.key]&&(l=a[y.key][m.key])):i.linkage==="mean"?l=(a[v.key][m.key]*v.size+a[y.key][m.key]*y.size)/(v.size+y.size):i.mode==="dendrogram"?l=c(m.value,v.value):l=c(m.value[0],v.value[0]),a[v.key][m.key]=a[m.key][v.key]=l}for(var b=0;b<e.length;b++){var w=e[b].key;if(n[w]===v.key||n[w]===y.key){for(var E=w,C=0;C<e.length;C++){var x=e[C].key;a[w][x]<a[w][E]&&(E=x)}n[w]=E}e[b].index=b}return v.key=y.key=v.index=y.index=null,!0},ua=function(e,r,a){e&&(e.value?r.push(e.value):(e.left&&ua(e.left,r),e.right&&ua(e.right,r)))},mo=function(e,r){if(!e)return"";if(e.left&&e.right){var a=mo(e.left,r),n=mo(e.right,r),i=r.add({group:"nodes",data:{id:a+","+n}});return r.add({group:"edges",data:{source:a,target:i.id()}}),r.add({group:"edges",data:{source:n,target:i.id()}}),i.id()}else if(e.value)return e.value.id()},bo=function(e,r,a){if(!e)return[];var n=[],i=[],s=[];return r===0?(e.left&&ua(e.left,n),e.right&&ua(e.right,i),s=n.concat(i),[a.collection(s)]):r===1?e.value?[a.collection(e.value)]:(e.left&&ua(e.left,n),e.right&&ua(e.right,i),[a.collection(n),a.collection(i)]):e.value?[a.collection(e.value)]:(e.left&&(n=bo(e.left,r-1,a)),e.right&&(i=bo(e.right,r-1,a)),n.concat(i))},lu=function(e){for(var r=this.cy(),a=this.nodes(),n=fg(e),i=n.attributes,s=function(b,w){return di(n.distance,i.length,function(E){return i[E](b)},function(E){return i[E](w)},b,w)},o=[],l=[],u=[],c=[],d=0;d<a.length;d++){var f={value:n.mode==="dendrogram"?a[d]:[a[d]],key:d,index:d};o[d]=f,c[d]=f,l[d]=[],u[d]=0}for(var h=0;h<o.length;h++)for(var v=0;v<=h;v++){var y=void 0;n.mode==="dendrogram"?y=h===v?1/0:s(o[h].value,o[v].value):y=h===v?1/0:s(o[h].value[0],o[v].value[0]),l[h][v]=y,l[v][h]=y,y<l[h][u[h]]&&(u[h]=v)}for(var p=ou(o,c,l,u,n);p;)p=ou(o,c,l,u,n);var g;return n.mode==="dendrogram"?(g=bo(o[0],n.dendrogramDepth,r),n.addDendrogram&&mo(o[0],r)):(g=new Array(o.length),o.forEach(function(m,b){m.key=m.index=null,g[b]=r.collection(m.value)})),g},vg={hierarchicalClustering:lu,hca:lu},hg=gt({distance:"euclidean",preference:"median",damping:.8,maxIterations:1e3,minIterations:100,attributes:[]}),pg=function(e){var r=e.damping,a=e.preference;.5<=r&&r<1||Ye("Damping must range on [0.5, 1). Got: ".concat(r));var n=["median","mean","min","max"];return n.some(function(i){return i===a})||se(a)||Ye("Preference must be one of [".concat(n.map(function(i){return"'".concat(i,"'")}).join(", "),"] or a number. Got: ").concat(a)),hg(e)},gg=function(e,r,a,n){var i=function(o,l){return n[l](o)};return-di(e,n.length,function(s){return i(r,s)},function(s){return i(a,s)},r,a)},yg=function(e,r){var a=null;return r==="median"?a=pp(e):r==="mean"?a=hp(e):r==="min"?a=fp(e):r==="max"?a=vp(e):a=r,a},mg=function(e,r,a){for(var n=[],i=0;i<e;i++)r[i*e+i]+a[i*e+i]>0&&n.push(i);return n},uu=function(e,r,a){for(var n=[],i=0;i<e;i++){for(var s=-1,o=-1/0,l=0;l<a.length;l++){var u=a[l];r[i*e+u]>o&&(s=u,o=r[i*e+u])}s>0&&n.push(s)}for(var c=0;c<a.length;c++)n[a[c]]=a[c];return n},bg=function(e,r,a){for(var n=uu(e,r,a),i=0;i<a.length;i++){for(var s=[],o=0;o<n.length;o++)n[o]===a[i]&&s.push(o);for(var l=-1,u=-1/0,c=0;c<s.length;c++){for(var d=0,f=0;f<s.length;f++)d+=r[s[f]*e+s[c]];d>u&&(l=c,u=d)}a[i]=s[l]}return n=uu(e,r,a),n},cu=function(e){for(var r=this.cy(),a=this.nodes(),n=pg(e),i={},s=0;s<a.length;s++)i[a[s].id()]=s;var o,l,u,c,d,f;o=a.length,l=o*o,u=new Array(l);for(var h=0;h<l;h++)u[h]=-1/0;for(var v=0;v<o;v++)for(var y=0;y<o;y++)v!==y&&(u[v*o+y]=gg(n.distance,a[v],a[y],n.attributes));c=yg(u,n.preference);for(var p=0;p<o;p++)u[p*o+p]=c;d=new Array(l);for(var g=0;g<l;g++)d[g]=0;f=new Array(l);for(var m=0;m<l;m++)f[m]=0;for(var b=new Array(o),w=new Array(o),E=new Array(o),C=0;C<o;C++)b[C]=0,w[C]=0,E[C]=0;for(var x=new Array(o*n.minIterations),T=0;T<x.length;T++)x[T]=0;var k;for(k=0;k<n.maxIterations;k++){for(var P=0;P<o;P++){for(var B=-1/0,D=-1/0,R=-1,A=0,M=0;M<o;M++)b[M]=d[P*o+M],A=f[P*o+M]+u[P*o+M],A>=B?(D=B,B=A,R=M):A>D&&(D=A);for(var _=0;_<o;_++)d[P*o+_]=(1-n.damping)*(u[P*o+_]-B)+n.damping*b[_];d[P*o+R]=(1-n.damping)*(u[P*o+R]-D)+n.damping*b[R]}for(var L=0;L<o;L++){for(var I=0,H=0;H<o;H++)b[H]=f[H*o+L],w[H]=Math.max(0,d[H*o+L]),I+=w[H];I-=w[L],w[L]=d[L*o+L],I+=w[L];for(var G=0;G<o;G++)f[G*o+L]=(1-n.damping)*Math.min(0,I-w[G])+n.damping*b[G];f[L*o+L]=(1-n.damping)*(I-w[L])+n.damping*b[L]}for(var O=0,$=0;$<o;$++){var Y=f[$*o+$]+d[$*o+$]>0?1:0;x[k%n.minIterations*o+$]=Y,O+=Y}if(O>0&&(k>=n.minIterations-1||k==n.maxIterations-1)){for(var te=0,J=0;J<o;J++){E[J]=0;for(var re=0;re<n.minIterations;re++)E[J]+=x[re*o+J];(E[J]===0||E[J]===n.minIterations)&&te++}if(te===o)break}}for(var ne=mg(o,d,f),oe=bg(o,u,ne),ee={},q=0;q<ne.length;q++)ee[ne[q]]=[];for(var K=0;K<a.length;K++){var W=i[a[K].id()],Q=oe[W];Q!=null&&ee[Q].push(a[K])}for(var ie=new Array(ne.length),ge=0;ge<ne.length;ge++)ie[ge]=r.collection(ee[ne[ge]]);return ie},wg={affinityPropagation:cu,ap:cu},xg=gt({root:void 0,directed:!1}),Eg={hierholzer:function(e){if(!Ne(e)){var r=arguments;e={root:r[0],directed:r[1]}}var a=xg(e),n=a.root,i=a.directed,s=this,o=!1,l,u,c;n&&(c=me(n)?this.filter(n)[0].id():n[0].id());var d={},f={};i?s.forEach(function(m){var b=m.id();if(m.isNode()){var w=m.indegree(!0),E=m.outdegree(!0),C=w-E,x=E-w;C==1?l?o=!0:l=b:x==1?u?o=!0:u=b:(x>1||C>1)&&(o=!0),d[b]=[],m.outgoers().forEach(function(T){T.isEdge()&&d[b].push(T.id())})}else f[b]=[void 0,m.target().id()]}):s.forEach(function(m){var b=m.id();if(m.isNode()){var w=m.degree(!0);w%2&&(l?u?o=!0:u=b:l=b),d[b]=[],m.connectedEdges().forEach(function(E){return d[b].push(E.id())})}else f[b]=[m.source().id(),m.target().id()]});var h={found:!1,trail:void 0};if(o)return h;if(u&&l)if(i){if(c&&u!=c)return h;c=u}else{if(c&&u!=c&&l!=c)return h;c||(c=u)}else c||(c=s[0].id());var v=function(b){for(var w=b,E=[b],C,x,T;d[w].length;)C=d[w].shift(),x=f[C][0],T=f[C][1],w!=T?(d[T]=d[T].filter(function(k){return k!=C}),w=T):!i&&w!=x&&(d[x]=d[x].filter(function(k){return k!=C}),w=x),E.unshift(C),E.unshift(w);return E},y=[],p=[];for(p=v(c);p.length!=1;)d[p[0]].length==0?(y.unshift(s.getElementById(p.shift())),y.unshift(s.getElementById(p.shift()))):p=v(p.shift()).concat(p);y.unshift(s.getElementById(p.shift()));for(var g in d)if(d[g].length)return h;return h.found=!0,h.trail=this.spawn(y,!0),h}},yn=function(){var e=this,r={},a=0,n=0,i=[],s=[],o={},l=function(f,h){for(var v=s.length-1,y=[],p=e.spawn();s[v].x!=f||s[v].y!=h;)y.push(s.pop().edge),v--;y.push(s.pop().edge),y.forEach(function(g){var m=g.connectedNodes().intersection(e);p.merge(g),m.forEach(function(b){var w=b.id(),E=b.connectedEdges().intersection(e);p.merge(b),r[w].cutVertex?p.merge(E.filter(function(C){return C.isLoop()})):p.merge(E)})}),i.push(p)},u=function(f,h,v){f===v&&(n+=1),r[h]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(h).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(h)));else{var p,g,m,b;y.forEach(function(w){p=w.source().id(),g=w.target().id(),m=p===h?g:p,m!==v&&(b=w.id(),o[b]||(o[b]=!0,s.push({x:h,y:m,edge:w})),m in r?r[h].low=Math.min(r[h].low,r[m].id):(u(f,m,h),r[h].low=Math.min(r[h].low,r[m].low),r[h].id<=r[m].low&&(r[h].cutVertex=!0,l(h,m))))})}};e.forEach(function(d){if(d.isNode()){var f=d.id();f in r||(n=0,u(f,f),r[f].cutVertex=n>1)}});var c=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(c),components:i}},Cg={hopcroftTarjanBiconnected:yn,htbc:yn,htb:yn,hopcroftTarjanBiconnectedComponents:yn},mn=function(){var e=this,r={},a=0,n=[],i=[],s=e.spawn(e),o=function(u){i.push(u),r[u]={index:a,low:a++,explored:!1};var c=e.getElementById(u).connectedEdges().intersection(e);if(c.forEach(function(y){var p=y.target().id();p!==u&&(p in r||o(p),r[p].explored||(r[u].low=Math.min(r[u].low,r[p].low)))}),r[u].index===r[u].low){for(var d=e.spawn();;){var f=i.pop();if(d.merge(e.getElementById(f)),r[f].low=r[u].index,r[f].explored=!0,f===u)break}var h=d.edgesWith(d),v=d.merge(h);n.push(v),s=s.difference(v)}};return e.forEach(function(l){if(l.isNode()){var u=l.id();u in r||o(u)}}),{cut:s,components:n}},Tg={tarjanStronglyConnected:mn,tsc:mn,tscc:mn,tarjanStronglyConnectedComponents:mn},qd={};[Ga,ep,tp,ap,ip,op,cp,Np,fa,va,yo,Xp,ug,vg,wg,Eg,Cg,Tg].forEach(function(t){xe(qd,t)});var Vd=0,Hd=1,Gd=2,Wt=function(e){if(!(this instanceof Wt))return new Wt(e);this.id="Thenable/1.0.7",this.state=Vd,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Wt.prototype={fulfill:function(e){return du(this,Hd,"fulfillValue",e)},reject:function(e){return du(this,Gd,"rejectReason",e)},then:function(e,r){var a=this,n=new Wt;return a.onFulfilled.push(vu(e,n,"fulfill")),a.onRejected.push(vu(r,n,"reject")),Ud(a),n.proxy}};var du=function(e,r,a,n){return e.state===Vd&&(e.state=r,e[a]=n,Ud(e)),e},Ud=function(e){e.state===Hd?fu(e,"onFulfilled",e.fulfillValue):e.state===Gd&&fu(e,"onRejected",e.rejectReason)},fu=function(e,r,a){if(e[r].length!==0){var n=e[r];e[r]=[];var i=function(){for(var o=0;o<n.length;o++)n[o](a)};typeof setImmediate=="function"?setImmediate(i):setTimeout(i,0)}},vu=function(e,r,a){return function(n){if(typeof e!="function")r[a].call(r,n);else{var i;try{i=e(n)}catch(s){r.reject(s);return}Kd(r,i)}}},Kd=function(e,r){if(e===r||e.proxy===r){e.reject(new TypeError("cannot resolve promise with itself"));return}var a;if(ot(r)==="object"&&r!==null||typeof r=="function")try{a=r.then}catch(i){e.reject(i);return}if(typeof a=="function"){var n=!1;try{a.call(r,function(i){n||(n=!0,i===r?e.reject(new TypeError("circular thenable chain")):Kd(e,i))},function(i){n||(n=!0,e.reject(i))})}catch(i){n||e.reject(i)}return}e.fulfill(r)};Wt.all=function(t){return new Wt(function(e,r){for(var a=new Array(t.length),n=0,i=function(l,u){a[l]=u,n++,n===t.length&&e(a)},s=0;s<t.length;s++)(function(o){var l=t[o],u=l!=null&&l.then!=null;if(u)l.then(function(d){i(o,d)},function(d){r(d)});else{var c=l;i(o,c)}})(s)})};Wt.resolve=function(t){return new Wt(function(e,r){e(t)})};Wt.reject=function(t){return new Wt(function(e,r){r(t)})};var ba=typeof Promise<"u"?Promise:Wt,wo=function(e,r,a){var n=Ko(e),i=!n,s=this._private=xe({duration:1e3},r,a);if(s.target=e,s.style=s.style||s.css,s.started=!1,s.playing=!1,s.hooked=!1,s.applying=!1,s.progress=0,s.completes=[],s.frames=[],s.complete&&Ze(s.complete)&&s.completes.push(s.complete),i){var o=e.position();s.startPosition=s.startPosition||{x:o.x,y:o.y},s.startStyle=s.startStyle||e.cy().style().getAnimationStartStyle(e,s.style)}if(n){var l=e.pan();s.startPan={x:l.x,y:l.y},s.startZoom=e.zoom()}this.length=1,this[0]=this},Wr=wo.prototype;xe(Wr,{instanceString:function(){return"animation"},hook:function(){var e=this._private;if(!e.hooked){var r,a=e.target._private.animation;e.queue?r=a.queue:r=a.current,r.push(this),It(e.target)&&e.target.cy().addToAnimationPool(e.target),e.hooked=!0}return this},play:function(){var e=this._private;return e.progress===1&&(e.progress=0),e.playing=!0,e.started=!1,e.stopped=!1,this.hook(),this},playing:function(){return this._private.playing},apply:function(){var e=this._private;return e.applying=!0,e.started=!1,e.stopped=!1,this.hook(),this},applying:function(){return this._private.applying},pause:function(){var e=this._private;return e.playing=!1,e.started=!1,this},stop:function(){var e=this._private;return e.playing=!1,e.started=!1,e.stopped=!0,this},rewind:function(){return this.progress(0)},fastforward:function(){return this.progress(1)},time:function(e){var r=this._private;return e===void 0?r.progress*r.duration:this.progress(e/r.duration)},progress:function(e){var r=this._private,a=r.playing;return e===void 0?r.progress:(a&&this.pause(),r.progress=e,r.started=!1,a&&this.play(),this)},completed:function(){return this._private.progress===1},reverse:function(){var e=this._private,r=e.playing;r&&this.pause(),e.progress=1-e.progress,e.started=!1;var a=function(u,c){var d=e[u];d!=null&&(e[u]=e[c],e[c]=d)};if(a("zoom","startZoom"),a("pan","startPan"),a("position","startPosition"),e.style)for(var n=0;n<e.style.length;n++){var i=e.style[n],s=i.name,o=e.startStyle[s];e.startStyle[s]=i,e.style[n]=o}return r&&this.play(),this},promise:function(e){var r=this._private,a;switch(e){case"frame":a=r.frames;break;default:case"complete":case"completed":a=r.completes}return new ba(function(n,i){a.push(function(){n()})})}});Wr.complete=Wr.completed;Wr.run=Wr.play;Wr.running=Wr.playing;var Sg={animated:function(){return function(){var r=this,a=r.length!==void 0,n=a?r:[r],i=this._private.cy||this;if(!i.styleEnabled())return!1;var s=n[0];if(s)return s._private.animation.current.length>0}},clearQueue:function(){return function(){var r=this,a=r.length!==void 0,n=a?r:[r],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s<n.length;s++){var o=n[s];o._private.animation.queue=[]}return this}},delay:function(){return function(r,a){var n=this._private.cy||this;return n.styleEnabled()?this.animate({delay:r,duration:r,complete:a}):this}},delayAnimation:function(){return function(r,a){var n=this._private.cy||this;return n.styleEnabled()?this.animation({delay:r,duration:r,complete:a}):this}},animation:function(){return function(r,a){var n=this,i=n.length!==void 0,s=i?n:[n],o=this._private.cy||this,l=!i,u=!l;if(!o.styleEnabled())return this;var c=o.style();r=xe({},r,a);var d=Object.keys(r).length===0;if(d)return new wo(s[0],r);switch(r.duration===void 0&&(r.duration=400),r.duration){case"slow":r.duration=600;break;case"fast":r.duration=200;break}if(u&&(r.style=c.getPropsList(r.style||r.css),r.css=void 0),u&&r.renderedPosition!=null){var f=r.renderedPosition,h=o.pan(),v=o.zoom();r.position=Ad(f,v,h)}if(l&&r.panBy!=null){var y=r.panBy,p=o.pan();r.pan={x:p.x+y.x,y:p.y+y.y}}var g=r.center||r.centre;if(l&&g!=null){var m=o.getCenterPan(g.eles,r.zoom);m!=null&&(r.pan=m)}if(l&&r.fit!=null){var b=r.fit,w=o.getFitViewport(b.eles||b.boundingBox,b.padding);w!=null&&(r.pan=w.pan,r.zoom=w.zoom)}if(l&&Ne(r.zoom)){var E=o.getZoomedViewport(r.zoom);E!=null?(E.zoomed&&(r.zoom=E.zoom),E.panned&&(r.pan=E.pan)):r.zoom=null}return new wo(s[0],r)}},animate:function(){return function(r,a){var n=this,i=n.length!==void 0,s=i?n:[n],o=this._private.cy||this;if(!o.styleEnabled())return this;a&&(r=xe({},r,a));for(var l=0;l<s.length;l++){var u=s[l],c=u.animated()&&(r.queue===void 0||r.queue),d=u.animation(r,c?{queue:!0}:void 0);d.play()}return this}},stop:function(){return function(r,a){var n=this,i=n.length!==void 0,s=i?n:[n],o=this._private.cy||this;if(!o.styleEnabled())return this;for(var l=0;l<s.length;l++){for(var u=s[l],c=u._private,d=c.animation.current,f=0;f<d.length;f++){var h=d[f],v=h._private;a&&(v.duration=0)}r&&(c.animation.queue=[]),a||(c.animation.current=[])}return o.notify("draw"),this}}},Qi,hu;function fi(){if(hu)return Qi;hu=1;var t=Array.isArray;return Qi=t,Qi}var Ji,pu;function kg(){if(pu)return Ji;pu=1;var t=fi(),e=rn(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function n(i,s){if(t(i))return!1;var o=typeof i;return o=="number"||o=="symbol"||o=="boolean"||i==null||e(i)?!0:a.test(i)||!r.test(i)||s!=null&&i in Object(s)}return Ji=n,Ji}var es,gu;function Pg(){if(gu)return es;gu=1;var t=Ed(),e=tn(),r="[object AsyncFunction]",a="[object Function]",n="[object GeneratorFunction]",i="[object Proxy]";function s(o){if(!e(o))return!1;var l=t(o);return l==a||l==n||l==r||l==i}return es=s,es}var ts,yu;function Bg(){if(yu)return ts;yu=1;var t=li(),e=t["__core-js_shared__"];return ts=e,ts}var rs,mu;function Dg(){if(mu)return rs;mu=1;var t=Bg(),e=(function(){var a=/[^.]+$/.exec(t&&t.keys&&t.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""})();function r(a){return!!e&&e in a}return rs=r,rs}var as,bu;function Rg(){if(bu)return as;bu=1;var t=Function.prototype,e=t.toString;function r(a){if(a!=null){try{return e.call(a)}catch{}try{return a+""}catch{}}return""}return as=r,as}var ns,wu;function Ag(){if(wu)return ns;wu=1;var t=Pg(),e=Dg(),r=tn(),a=Rg(),n=/[\\^$.*+?()[\]{}|]/g,i=/^\[object .+?Constructor\]$/,s=Function.prototype,o=Object.prototype,l=s.toString,u=o.hasOwnProperty,c=RegExp("^"+l.call(u).replace(n,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function d(f){if(!r(f)||e(f))return!1;var h=t(f)?c:i;return h.test(a(f))}return ns=d,ns}var is,xu;function Lg(){if(xu)return is;xu=1;function t(e,r){return e?.[r]}return is=t,is}var ss,Eu;function al(){if(Eu)return ss;Eu=1;var t=Ag(),e=Lg();function r(a,n){var i=e(a,n);return t(i)?i:void 0}return ss=r,ss}var os,Cu;function vi(){if(Cu)return os;Cu=1;var t=al(),e=t(Object,"create");return os=e,os}var ls,Tu;function Mg(){if(Tu)return ls;Tu=1;var t=vi();function e(){this.__data__=t?t(null):{},this.size=0}return ls=e,ls}var us,Su;function _g(){if(Su)return us;Su=1;function t(e){var r=this.has(e)&&delete this.__data__[e];return this.size-=r?1:0,r}return us=t,us}var cs,ku;function Ig(){if(ku)return cs;ku=1;var t=vi(),e="__lodash_hash_undefined__",r=Object.prototype,a=r.hasOwnProperty;function n(i){var s=this.__data__;if(t){var o=s[i];return o===e?void 0:o}return a.call(s,i)?s[i]:void 0}return cs=n,cs}var ds,Pu;function Og(){if(Pu)return ds;Pu=1;var t=vi(),e=Object.prototype,r=e.hasOwnProperty;function a(n){var i=this.__data__;return t?i[n]!==void 0:r.call(i,n)}return ds=a,ds}var fs,Bu;function Ng(){if(Bu)return fs;Bu=1;var t=vi(),e="__lodash_hash_undefined__";function r(a,n){var i=this.__data__;return this.size+=this.has(a)?0:1,i[a]=t&&n===void 0?e:n,this}return fs=r,fs}var vs,Du;function zg(){if(Du)return vs;Du=1;var t=Mg(),e=_g(),r=Ig(),a=Og(),n=Ng();function i(s){var o=-1,l=s==null?0:s.length;for(this.clear();++o<l;){var u=s[o];this.set(u[0],u[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=a,i.prototype.set=n,vs=i,vs}var hs,Ru;function $g(){if(Ru)return hs;Ru=1;function t(){this.__data__=[],this.size=0}return hs=t,hs}var ps,Au;function Wd(){if(Au)return ps;Au=1;function t(e,r){return e===r||e!==e&&r!==r}return ps=t,ps}var gs,Lu;function hi(){if(Lu)return gs;Lu=1;var t=Wd();function e(r,a){for(var n=r.length;n--;)if(t(r[n][0],a))return n;return-1}return gs=e,gs}var ys,Mu;function Fg(){if(Mu)return ys;Mu=1;var t=hi(),e=Array.prototype,r=e.splice;function a(n){var i=this.__data__,s=t(i,n);if(s<0)return!1;var o=i.length-1;return s==o?i.pop():r.call(i,s,1),--this.size,!0}return ys=a,ys}var ms,_u;function qg(){if(_u)return ms;_u=1;var t=hi();function e(r){var a=this.__data__,n=t(a,r);return n<0?void 0:a[n][1]}return ms=e,ms}var bs,Iu;function Vg(){if(Iu)return bs;Iu=1;var t=hi();function e(r){return t(this.__data__,r)>-1}return bs=e,bs}var ws,Ou;function Hg(){if(Ou)return ws;Ou=1;var t=hi();function e(r,a){var n=this.__data__,i=t(n,r);return i<0?(++this.size,n.push([r,a])):n[i][1]=a,this}return ws=e,ws}var xs,Nu;function Gg(){if(Nu)return xs;Nu=1;var t=$g(),e=Fg(),r=qg(),a=Vg(),n=Hg();function i(s){var o=-1,l=s==null?0:s.length;for(this.clear();++o<l;){var u=s[o];this.set(u[0],u[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=a,i.prototype.set=n,xs=i,xs}var Es,zu;function Ug(){if(zu)return Es;zu=1;var t=al(),e=li(),r=t(e,"Map");return Es=r,Es}var Cs,$u;function Kg(){if($u)return Cs;$u=1;var t=zg(),e=Gg(),r=Ug();function a(){this.size=0,this.__data__={hash:new t,map:new(r||e),string:new t}}return Cs=a,Cs}var Ts,Fu;function Wg(){if(Fu)return Ts;Fu=1;function t(e){var r=typeof e;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?e!=="__proto__":e===null}return Ts=t,Ts}var Ss,qu;function pi(){if(qu)return Ss;qu=1;var t=Wg();function e(r,a){var n=r.__data__;return t(a)?n[typeof a=="string"?"string":"hash"]:n.map}return Ss=e,Ss}var ks,Vu;function jg(){if(Vu)return ks;Vu=1;var t=pi();function e(r){var a=t(this,r).delete(r);return this.size-=a?1:0,a}return ks=e,ks}var Ps,Hu;function Yg(){if(Hu)return Ps;Hu=1;var t=pi();function e(r){return t(this,r).get(r)}return Ps=e,Ps}var Bs,Gu;function Xg(){if(Gu)return Bs;Gu=1;var t=pi();function e(r){return t(this,r).has(r)}return Bs=e,Bs}var Ds,Uu;function Zg(){if(Uu)return Ds;Uu=1;var t=pi();function e(r,a){var n=t(this,r),i=n.size;return n.set(r,a),this.size+=n.size==i?0:1,this}return Ds=e,Ds}var Rs,Ku;function Qg(){if(Ku)return Rs;Ku=1;var t=Kg(),e=jg(),r=Yg(),a=Xg(),n=Zg();function i(s){var o=-1,l=s==null?0:s.length;for(this.clear();++o<l;){var u=s[o];this.set(u[0],u[1])}}return i.prototype.clear=t,i.prototype.delete=e,i.prototype.get=r,i.prototype.has=a,i.prototype.set=n,Rs=i,Rs}var As,Wu;function Jg(){if(Wu)return As;Wu=1;var t=Qg(),e="Expected a function";function r(a,n){if(typeof a!="function"||n!=null&&typeof n!="function")throw new TypeError(e);var i=function(){var s=arguments,o=n?n.apply(this,s):s[0],l=i.cache;if(l.has(o))return l.get(o);var u=a.apply(this,s);return i.cache=l.set(o,u)||l,u};return i.cache=new(r.Cache||t),i}return r.Cache=t,As=r,As}var Ls,ju;function ey(){if(ju)return Ls;ju=1;var t=Jg(),e=500;function r(a){var n=t(a,function(s){return i.size===e&&i.clear(),s}),i=n.cache;return n}return Ls=r,Ls}var Ms,Yu;function jd(){if(Yu)return Ms;Yu=1;var t=ey(),e=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,a=t(function(n){var i=[];return n.charCodeAt(0)===46&&i.push(""),n.replace(e,function(s,o,l,u){i.push(l?u.replace(r,"$1"):o||s)}),i});return Ms=a,Ms}var _s,Xu;function Yd(){if(Xu)return _s;Xu=1;function t(e,r){for(var a=-1,n=e==null?0:e.length,i=Array(n);++a<n;)i[a]=r(e[a],a,e);return i}return _s=t,_s}var Is,Zu;function ty(){if(Zu)return Is;Zu=1;var t=jo(),e=Yd(),r=fi(),a=rn(),n=t?t.prototype:void 0,i=n?n.toString:void 0;function s(o){if(typeof o=="string")return o;if(r(o))return e(o,s)+"";if(a(o))return i?i.call(o):"";var l=o+"";return l=="0"&&1/o==-1/0?"-0":l}return Is=s,Is}var Os,Qu;function Xd(){if(Qu)return Os;Qu=1;var t=ty();function e(r){return r==null?"":t(r)}return Os=e,Os}var Ns,Ju;function Zd(){if(Ju)return Ns;Ju=1;var t=fi(),e=kg(),r=jd(),a=Xd();function n(i,s){return t(i)?i:e(i,s)?[i]:r(a(i))}return Ns=n,Ns}var zs,ec;function nl(){if(ec)return zs;ec=1;var t=rn();function e(r){if(typeof r=="string"||t(r))return r;var a=r+"";return a=="0"&&1/r==-1/0?"-0":a}return zs=e,zs}var $s,tc;function ry(){if(tc)return $s;tc=1;var t=Zd(),e=nl();function r(a,n){n=t(n,a);for(var i=0,s=n.length;a!=null&&i<s;)a=a[e(n[i++])];return i&&i==s?a:void 0}return $s=r,$s}var Fs,rc;function ay(){if(rc)return Fs;rc=1;var t=ry();function e(r,a,n){var i=r==null?void 0:t(r,a);return i===void 0?n:i}return Fs=e,Fs}var ny=ay(),iy=en(ny),qs,ac;function sy(){if(ac)return qs;ac=1;var t=al(),e=(function(){try{var r=t(Object,"defineProperty");return r({},"",{}),r}catch{}})();return qs=e,qs}var Vs,nc;function oy(){if(nc)return Vs;nc=1;var t=sy();function e(r,a,n){a=="__proto__"&&t?t(r,a,{configurable:!0,enumerable:!0,value:n,writable:!0}):r[a]=n}return Vs=e,Vs}var Hs,ic;function ly(){if(ic)return Hs;ic=1;var t=oy(),e=Wd(),r=Object.prototype,a=r.hasOwnProperty;function n(i,s,o){var l=i[s];(!(a.call(i,s)&&e(l,o))||o===void 0&&!(s in i))&&t(i,s,o)}return Hs=n,Hs}var Gs,sc;function uy(){if(sc)return Gs;sc=1;var t=9007199254740991,e=/^(?:0|[1-9]\d*)$/;function r(a,n){var i=typeof a;return n=n??t,!!n&&(i=="number"||i!="symbol"&&e.test(a))&&a>-1&&a%1==0&&a<n}return Gs=r,Gs}var Us,oc;function cy(){if(oc)return Us;oc=1;var t=ly(),e=Zd(),r=uy(),a=tn(),n=nl();function i(s,o,l,u){if(!a(s))return s;o=e(o,s);for(var c=-1,d=o.length,f=d-1,h=s;h!=null&&++c<d;){var v=n(o[c]),y=l;if(v==="__proto__"||v==="constructor"||v==="prototype")return s;if(c!=f){var p=h[v];y=u?u(p,v,h):void 0,y===void 0&&(y=a(p)?p:r(o[c+1])?[]:{})}t(h,v,y),h=h[v]}return s}return Us=i,Us}var Ks,lc;function dy(){if(lc)return Ks;lc=1;var t=cy();function e(r,a,n){return r==null?r:t(r,a,n)}return Ks=e,Ks}var fy=dy(),vy=en(fy),Ws,uc;function hy(){if(uc)return Ws;uc=1;function t(e,r){var a=-1,n=e.length;for(r||(r=Array(n));++a<n;)r[a]=e[a];return r}return Ws=t,Ws}var js,cc;function py(){if(cc)return js;cc=1;var t=Yd(),e=hy(),r=fi(),a=rn(),n=jd(),i=nl(),s=Xd();function o(l){return r(l)?t(l,i):a(l)?[l]:e(n(s(l)))}return js=o,js}var gy=py(),yy=en(gy),my={data:function(e){var r={field:"data",bindingEvent:"data",allowBinding:!1,allowSetting:!1,allowGetting:!1,settingEvent:"data",settingTriggersEvent:!1,triggerFnName:"trigger",immutableKeys:{},updateStyle:!1,beforeGet:function(n){},beforeSet:function(n,i){},onSet:function(n){},canSet:function(n){return!0}};return e=xe({},r,e),function(n,i){var s=e,o=this,l=o.length!==void 0,u=l?o:[o],c=l?o[0]:o;if(me(n)){var d=n.indexOf(".")!==-1,f=d&&yy(n);if(s.allowGetting&&i===void 0){var h;return c&&(s.beforeGet(c),f&&c._private[s.field][n]===void 0?h=iy(c._private[s.field],f):h=c._private[s.field][n]),h}else if(s.allowSetting&&i!==void 0){var v=!s.immutableKeys[n];if(v){var y=fd({},n,i);s.beforeSet(o,y);for(var p=0,g=u.length;p<g;p++){var m=u[p];s.canSet(m)&&(f&&c._private[s.field][n]===void 0?vy(m._private[s.field],f,i):m._private[s.field][n]=i)}s.updateStyle&&o.updateStyle(),s.onSet(o),s.settingTriggersEvent&&o[s.triggerFnName](s.settingEvent)}}}else if(s.allowSetting&&Ne(n)){var b=n,w,E,C=Object.keys(b);s.beforeSet(o,b);for(var x=0;x<C.length;x++){w=C[x],E=b[w];var T=!s.immutableKeys[w];if(T)for(var k=0;k<u.length;k++){var P=u[k];s.canSet(P)&&(P._private[s.field][w]=E)}}s.updateStyle&&o.updateStyle(),s.onSet(o),s.settingTriggersEvent&&o[s.triggerFnName](s.settingEvent)}else if(s.allowBinding&&Ze(n)){var B=n;o.on(s.bindingEvent,B)}else if(s.allowGetting&&n===void 0){var D;return c&&(s.beforeGet(c),D=c._private[s.field]),D}return o}},removeData:function(e){var r={field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!1,immutableKeys:{}};return e=xe({},r,e),function(n){var i=e,s=this,o=s.length!==void 0,l=o?s:[s];if(me(n)){for(var u=n.split(/\s+/),c=u.length,d=0;d<c;d++){var f=u[d];if(!Sr(f)){var h=!i.immutableKeys[f];if(h)for(var v=0,y=l.length;v<y;v++)l[v]._private[i.field][f]=void 0}}i.triggerEvent&&s[i.triggerFnName](i.event)}else if(n===void 0){for(var p=0,g=l.length;p<g;p++)for(var m=l[p]._private[i.field],b=Object.keys(m),w=0;w<b.length;w++){var E=b[w],C=!i.immutableKeys[E];C&&(m[E]=void 0)}i.triggerEvent&&s[i.triggerFnName](i.event)}return s}}},by={eventAliasesOn:function(e){var r=e;r.addListener=r.listen=r.bind=r.on,r.unlisten=r.unbind=r.off=r.removeListener,r.trigger=r.emit,r.pon=r.promiseOn=function(a,n){var i=this,s=Array.prototype.slice.call(arguments,0);return new ba(function(o,l){var u=function(h){i.off.apply(i,d),o(h)},c=s.concat([u]),d=c.concat([]);i.on.apply(i,c)})}}},Ve={};[Sg,my,by].forEach(function(t){xe(Ve,t)});var wy={animate:Ve.animate(),animation:Ve.animation(),animated:Ve.animated(),clearQueue:Ve.clearQueue(),delay:Ve.delay(),delayAnimation:Ve.delayAnimation(),stop:Ve.stop()},In={classes:function(e){var r=this;if(e===void 0){var a=[];return r[0]._private.classes.forEach(function(v){return a.push(v)}),a}else Ue(e)||(e=(e||"").match(/\S+/g)||[]);for(var n=[],i=new ma(e),s=0;s<r.length;s++){for(var o=r[s],l=o._private,u=l.classes,c=!1,d=0;d<e.length;d++){var f=e[d],h=u.has(f);if(!h){c=!0;break}}c||(c=u.size!==e.length),c&&(l.classes=i,n.push(o))}return n.length>0&&this.spawn(n).updateStyle().emit("class"),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){Ue(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],s=0,o=a.length;s<o;s++)for(var l=a[s],u=l._private.classes,c=!1,d=0;d<e.length;d++){var f=e[d],h=u.has(f),v=!1;r||n&&!h?(u.add(f),v=!0):(!r||n&&h)&&(u.delete(f),v=!0),!c&&v&&(i.push(l),c=!0)}return i.length>0&&this.spawn(i).updateStyle().emit("class"),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};In.className=In.classNames=In.classes;var Oe={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:st,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Oe.variable="(?:[\\w-.]|(?:\\\\"+Oe.metaChar+"))+";Oe.className="(?:[\\w-]|(?:\\\\"+Oe.metaChar+"))+";Oe.value=Oe.string+"|"+Oe.number;Oe.id=Oe.variable;(function(){var t,e,r;for(t=Oe.comparatorOp.split("|"),r=0;r<t.length;r++)e=t[r],Oe.comparatorOp+="|@"+e;for(t=Oe.comparatorOp.split("|"),r=0;r<t.length;r++)e=t[r],!(e.indexOf("!")>=0)&&e!=="="&&(Oe.comparatorOp+="|\\!"+e)})();var Ge=function(){return{checks:[]}},fe={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},xo=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return mh(t.selector,e.selector)}),xy=(function(){for(var t={},e,r=0;r<xo.length;r++)e=xo[r],t[e.selector]=e.matches;return t})(),Ey=function(e,r){return xy[e](r)},Cy="("+xo.map(function(t){return t.selector}).join("|")+")",Jr=function(e){return e.replace(new RegExp("\\\\("+Oe.metaChar+")","g"),function(r,a){return a})},yr=function(e,r,a){e[e.length-1]=a},Eo=[{name:"group",query:!0,regex:"("+Oe.group+")",populate:function(e,r,a){var n=at(a,1),i=n[0];r.checks.push({type:fe.GROUP,value:i==="*"?i:i+"s"})}},{name:"state",query:!0,regex:Cy,populate:function(e,r,a){var n=at(a,1),i=n[0];r.checks.push({type:fe.STATE,value:i})}},{name:"id",query:!0,regex:"\\#("+Oe.id+")",populate:function(e,r,a){var n=at(a,1),i=n[0];r.checks.push({type:fe.ID,value:Jr(i)})}},{name:"className",query:!0,regex:"\\.("+Oe.className+")",populate:function(e,r,a){var n=at(a,1),i=n[0];r.checks.push({type:fe.CLASS,value:Jr(i)})}},{name:"dataExists",query:!0,regex:"\\[\\s*("+Oe.variable+")\\s*\\]",populate:function(e,r,a){var n=at(a,1),i=n[0];r.checks.push({type:fe.DATA_EXIST,field:Jr(i)})}},{name:"dataCompare",query:!0,regex:"\\[\\s*("+Oe.variable+")\\s*("+Oe.comparatorOp+")\\s*("+Oe.value+")\\s*\\]",populate:function(e,r,a){var n=at(a,3),i=n[0],s=n[1],o=n[2],l=new RegExp("^"+Oe.string+"$").exec(o)!=null;l?o=o.substring(1,o.length-1):o=parseFloat(o),r.checks.push({type:fe.DATA_COMPARE,field:Jr(i),operator:s,value:o})}},{name:"dataBool",query:!0,regex:"\\[\\s*("+Oe.boolOp+")\\s*("+Oe.variable+")\\s*\\]",populate:function(e,r,a){var n=at(a,2),i=n[0],s=n[1];r.checks.push({type:fe.DATA_BOOL,field:Jr(s),operator:i})}},{name:"metaCompare",query:!0,regex:"\\[\\[\\s*("+Oe.meta+")\\s*("+Oe.comparatorOp+")\\s*("+Oe.number+")\\s*\\]\\]",populate:function(e,r,a){var n=at(a,3),i=n[0],s=n[1],o=n[2];r.checks.push({type:fe.META_COMPARE,field:Jr(i),operator:s,value:parseFloat(o)})}},{name:"nextQuery",separator:!0,regex:Oe.separator,populate:function(e,r){var a=e.currentSubject,n=e.edgeCount,i=e.compoundCount,s=e[e.length-1];a!=null&&(s.subject=a,e.currentSubject=null),s.edgeCount=n,s.compoundCount=i,e.edgeCount=0,e.compoundCount=0;var o=e[e.length++]=Ge();return o}},{name:"directedEdge",separator:!0,regex:Oe.directedEdge,populate:function(e,r){if(e.currentSubject==null){var a=Ge(),n=r,i=Ge();return a.checks.push({type:fe.DIRECTED_EDGE,source:n,target:i}),yr(e,r,a),e.edgeCount++,i}else{var s=Ge(),o=r,l=Ge();return s.checks.push({type:fe.NODE_SOURCE,source:o,target:l}),yr(e,r,s),e.edgeCount++,l}}},{name:"undirectedEdge",separator:!0,regex:Oe.undirectedEdge,populate:function(e,r){if(e.currentSubject==null){var a=Ge(),n=r,i=Ge();return a.checks.push({type:fe.UNDIRECTED_EDGE,nodes:[n,i]}),yr(e,r,a),e.edgeCount++,i}else{var s=Ge(),o=r,l=Ge();return s.checks.push({type:fe.NODE_NEIGHBOR,node:o,neighbor:l}),yr(e,r,s),l}}},{name:"child",separator:!0,regex:Oe.child,populate:function(e,r){if(e.currentSubject==null){var a=Ge(),n=Ge(),i=e[e.length-1];return a.checks.push({type:fe.CHILD,parent:i,child:n}),yr(e,r,a),e.compoundCount++,n}else if(e.currentSubject===r){var s=Ge(),o=e[e.length-1],l=Ge(),u=Ge(),c=Ge(),d=Ge();return s.checks.push({type:fe.COMPOUND_SPLIT,left:o,right:l,subject:u}),u.checks=r.checks,r.checks=[{type:fe.TRUE}],d.checks.push({type:fe.TRUE}),l.checks.push({type:fe.PARENT,parent:d,child:c}),yr(e,o,s),e.currentSubject=u,e.compoundCount++,c}else{var f=Ge(),h=Ge(),v=[{type:fe.PARENT,parent:f,child:h}];return f.checks=r.checks,r.checks=v,e.compoundCount++,h}}},{name:"descendant",separator:!0,regex:Oe.descendant,populate:function(e,r){if(e.currentSubject==null){var a=Ge(),n=Ge(),i=e[e.length-1];return a.checks.push({type:fe.DESCENDANT,ancestor:i,descendant:n}),yr(e,r,a),e.compoundCount++,n}else if(e.currentSubject===r){var s=Ge(),o=e[e.length-1],l=Ge(),u=Ge(),c=Ge(),d=Ge();return s.checks.push({type:fe.COMPOUND_SPLIT,left:o,right:l,subject:u}),u.checks=r.checks,r.checks=[{type:fe.TRUE}],d.checks.push({type:fe.TRUE}),l.checks.push({type:fe.ANCESTOR,ancestor:d,descendant:c}),yr(e,o,s),e.currentSubject=u,e.compoundCount++,c}else{var f=Ge(),h=Ge(),v=[{type:fe.ANCESTOR,ancestor:f,descendant:h}];return f.checks=r.checks,r.checks=v,e.compoundCount++,h}}},{name:"subject",modifier:!0,regex:Oe.subject,populate:function(e,r){if(e.currentSubject!=null&&e.currentSubject!==r)return He("Redefinition of subject in selector `"+e.toString()+"`"),!1;e.currentSubject=r;var a=e[e.length-1],n=a.checks[0],i=n==null?null:n.type;i===fe.DIRECTED_EDGE?n.type=fe.NODE_TARGET:i===fe.UNDIRECTED_EDGE&&(n.type=fe.NODE_NEIGHBOR,n.node=n.nodes[1],n.neighbor=n.nodes[0],n.nodes=null)}}];Eo.forEach(function(t){return t.regexObj=new RegExp("^"+t.regex)});var Ty=function(e){for(var r,a,n,i=0;i<Eo.length;i++){var s=Eo[i],o=s.name,l=e.match(s.regexObj);if(l!=null){a=l,r=s,n=o;var u=l[0];e=e.substring(u.length);break}}return{expr:r,match:a,name:n,remaining:e}},Sy=function(e){var r=e.match(/^\s+/);if(r){var a=r[0];e=e.substring(a.length)}return e},ky=function(e){var r=this,a=r.inputText=e,n=r[0]=Ge();for(r.length=1,a=Sy(a);;){var i=Ty(a);if(i.expr==null)return He("The selector `"+e+"`is invalid"),!1;var s=i.match.slice(1),o=i.expr.populate(r,n,s);if(o===!1)return!1;if(o!=null&&(n=o),a=i.remaining,a.match(/^\s*$/))break}var l=r[r.length-1];r.currentSubject!=null&&(l.subject=r.currentSubject),l.edgeCount=r.edgeCount,l.compoundCount=r.compoundCount;for(var u=0;u<r.length;u++){var c=r[u];if(c.compoundCount>0&&c.edgeCount>0)return He("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(c.edgeCount>1)return He("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;c.edgeCount===1&&He("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Py=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(c){return c??""},r=function(c){return me(c)?'"'+c+'"':e(c)},a=function(c){return" "+c+" "},n=function(c,d){var f=c.type,h=c.value;switch(f){case fe.GROUP:{var v=e(h);return v.substring(0,v.length-1)}case fe.DATA_COMPARE:{var y=c.field,p=c.operator;return"["+y+a(e(p))+r(h)+"]"}case fe.DATA_BOOL:{var g=c.operator,m=c.field;return"["+e(g)+m+"]"}case fe.DATA_EXIST:{var b=c.field;return"["+b+"]"}case fe.META_COMPARE:{var w=c.operator,E=c.field;return"[["+E+a(e(w))+r(h)+"]]"}case fe.STATE:return h;case fe.ID:return"#"+h;case fe.CLASS:return"."+h;case fe.PARENT:case fe.CHILD:return i(c.parent,d)+a(">")+i(c.child,d);case fe.ANCESTOR:case fe.DESCENDANT:return i(c.ancestor,d)+" "+i(c.descendant,d);case fe.COMPOUND_SPLIT:{var C=i(c.left,d),x=i(c.subject,d),T=i(c.right,d);return C+(C.length>0?" ":"")+x+T}case fe.TRUE:return""}},i=function(c,d){return c.checks.reduce(function(f,h,v){return f+(d===c&&v===0?"$":"")+n(h,d)},"")},s="",o=0;o<this.length;o++){var l=this[o];s+=i(l,l.subject),this.length>1&&o<this.length-1&&(s+=", ")}return this.toStringCache=s,s},By={parse:ky,toString:Py},Qd=function(e,r,a){var n,i=me(e),s=se(e),o=me(a),l,u,c=!1,d=!1,f=!1;switch(r.indexOf("!")>=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),c=!0),(i||o||c)&&(l=!i&&!s?"":""+e,u=""+a),c&&(e=l=l.toLowerCase(),a=u=u.toLowerCase()),r){case"*=":n=l.indexOf(u)>=0;break;case"$=":n=l.indexOf(u,l.length-u.length)>=0;break;case"^=":n=l.indexOf(u)===0;break;case"=":n=e===a;break;case">":f=!0,n=e>a;break;case">=":f=!0,n=e>=a;break;case"<":f=!0,n=e<a;break;case"<=":f=!0,n=e<=a;break;default:n=!1;break}return d&&(e!=null||!f)&&(n=!n),n},Dy=function(e,r){switch(r){case"?":return!!e;case"!":return!e;case"^":return e===void 0}},Ry=function(e){return e!==void 0},il=function(e,r){return e.data(r)},Ay=function(e,r){return e[r]()},et=[],je=function(e,r){return e.checks.every(function(a){return et[a.type](a,r)})};et[fe.GROUP]=function(t,e){var r=t.value;return r==="*"||r===e.group()};et[fe.STATE]=function(t,e){var r=t.value;return Ey(r,e)};et[fe.ID]=function(t,e){var r=t.value;return e.id()===r};et[fe.CLASS]=function(t,e){var r=t.value;return e.hasClass(r)};et[fe.META_COMPARE]=function(t,e){var r=t.field,a=t.operator,n=t.value;return Qd(Ay(e,r),a,n)};et[fe.DATA_COMPARE]=function(t,e){var r=t.field,a=t.operator,n=t.value;return Qd(il(e,r),a,n)};et[fe.DATA_BOOL]=function(t,e){var r=t.field,a=t.operator;return Dy(il(e,r),a)};et[fe.DATA_EXIST]=function(t,e){var r=t.field;return t.operator,Ry(il(e,r))};et[fe.UNDIRECTED_EDGE]=function(t,e){var r=t.nodes[0],a=t.nodes[1],n=e.source(),i=e.target();return je(r,n)&&je(a,i)||je(a,n)&&je(r,i)};et[fe.NODE_NEIGHBOR]=function(t,e){return je(t.node,e)&&e.neighborhood().some(function(r){return r.isNode()&&je(t.neighbor,r)})};et[fe.DIRECTED_EDGE]=function(t,e){return je(t.source,e.source())&&je(t.target,e.target())};et[fe.NODE_SOURCE]=function(t,e){return je(t.source,e)&&e.outgoers().some(function(r){return r.isNode()&&je(t.target,r)})};et[fe.NODE_TARGET]=function(t,e){return je(t.target,e)&&e.incomers().some(function(r){return r.isNode()&&je(t.source,r)})};et[fe.CHILD]=function(t,e){return je(t.child,e)&&je(t.parent,e.parent())};et[fe.PARENT]=function(t,e){return je(t.parent,e)&&e.children().some(function(r){return je(t.child,r)})};et[fe.DESCENDANT]=function(t,e){return je(t.descendant,e)&&e.ancestors().some(function(r){return je(t.ancestor,r)})};et[fe.ANCESTOR]=function(t,e){return je(t.ancestor,e)&&e.descendants().some(function(r){return je(t.descendant,r)})};et[fe.COMPOUND_SPLIT]=function(t,e){return je(t.subject,e)&&je(t.left,e)&&je(t.right,e)};et[fe.TRUE]=function(){return!0};et[fe.COLLECTION]=function(t,e){var r=t.value;return r.has(e)};et[fe.FILTER]=function(t,e){var r=t.value;return r(e)};var Ly=function(e){var r=this;if(r.length===1&&r[0].checks.length===1&&r[0].checks[0].type===fe.ID)return e.getElementById(r[0].checks[0].value).collection();var a=function(i){for(var s=0;s<r.length;s++){var o=r[s];if(je(o,i))return!0}return!1};return r.text()==null&&(a=function(){return!0}),e.filter(a)},My=function(e){for(var r=this,a=0;a<r.length;a++){var n=r[a];if(je(n,e))return!0}return!1},_y={matches:My,filter:Ly},Br=function(e){this.inputText=e,this.currentSubject=null,this.compoundCount=0,this.edgeCount=0,this.length=0,e==null||me(e)&&e.match(/^\s*$/)||(It(e)?this.addQuery({checks:[{type:fe.COLLECTION,value:e.collection()}]}):Ze(e)?this.addQuery({checks:[{type:fe.FILTER,value:e}]}):me(e)?this.parse(e)||(this.invalid=!0):Ye("A selector must be created from a string; found "))},Dr=Br.prototype;[By,_y].forEach(function(t){return xe(Dr,t)});Dr.text=function(){return this.inputText};Dr.size=function(){return this.length};Dr.eq=function(t){return this[t]};Dr.sameText=function(t){return!this.invalid&&!t.invalid&&this.text()===t.text()};Dr.addQuery=function(t){this[this.length++]=t};Dr.selector=Dr.toString;var Cr={allAre:function(e){var r=new Br(e);return this.every(function(a){return r.matches(a)})},is:function(e){var r=new Br(e);return this.some(function(a){return r.matches(a)})},some:function(e,r){for(var a=0;a<this.length;a++){var n=r?e.apply(r,[this[a],a,this]):e(this[a],a,this);if(n)return!0}return!1},every:function(e,r){for(var a=0;a<this.length;a++){var n=r?e.apply(r,[this[a],a,this]):e(this[a],a,this);if(!n)return!1}return!0},same:function(e){if(this===e)return!0;e=this.cy().collection(e);var r=this.length,a=e.length;return r!==a?!1:r===1?this[0]===e[0]:this.every(function(n){return e.hasElementWithId(n.id())})},anySame:function(e){return e=this.cy().collection(e),this.some(function(r){return e.hasElementWithId(r.id())})},allAreNeighbors:function(e){e=this.cy().collection(e);var r=this.neighborhood();return e.every(function(a){return r.hasElementWithId(a.id())})},contains:function(e){e=this.cy().collection(e);var r=this;return e.every(function(a){return r.hasElementWithId(a.id())})}};Cr.allAreNeighbours=Cr.allAreNeighbors;Cr.has=Cr.contains;Cr.equal=Cr.equals=Cr.same;var Ft=function(e,r){return function(n,i,s,o){var l=n,u=this,c;if(l==null?c="":It(l)&&l.length===1&&(c=l.id()),u.length===1&&c){var d=u[0]._private,f=d.traversalCache=d.traversalCache||{},h=f[r]=f[r]||[],v=Ur(c),y=h[v];return y||(h[v]=e.call(u,n,i,s,o))}else return e.call(u,n,i,s,o)}},ya={parent:function(e){var r=[];if(this.length===1){var a=this[0]._private.parent;if(a)return a}for(var n=0;n<this.length;n++){var i=this[n],s=i._private.parent;s&&r.push(s)}return this.spawn(r,!0).filter(e)},parents:function(e){for(var r=[],a=this.parent();a.nonempty();){for(var n=0;n<a.length;n++){var i=a[n];r.push(i)}a=a.parent()}return this.spawn(r,!0).filter(e)},commonAncestors:function(e){for(var r,a=0;a<this.length;a++){var n=this[a],i=n.parents();r=r||i,r=r.intersect(i)}return r.filter(e)},orphans:function(e){return this.stdFilter(function(r){return r.isOrphan()}).filter(e)},nonorphans:function(e){return this.stdFilter(function(r){return r.isChild()}).filter(e)},children:Ft(function(t){for(var e=[],r=0;r<this.length;r++)for(var a=this[r],n=a._private.children,i=0;i<n.length;i++)e.push(n[i]);return this.spawn(e,!0).filter(t)},"children"),siblings:function(e){return this.parent().children().not(this).filter(e)},isParent:function(){var e=this[0];if(e)return e.isNode()&&e._private.children.length!==0},isChildless:function(){var e=this[0];if(e)return e.isNode()&&e._private.children.length===0},isChild:function(){var e=this[0];if(e)return e.isNode()&&e._private.parent!=null},isOrphan:function(){var e=this[0];if(e)return e.isNode()&&e._private.parent==null},descendants:function(e){var r=[];function a(n){for(var i=0;i<n.length;i++){var s=n[i];r.push(s),s.children().nonempty()&&a(s.children())}}return a(this.children()),this.spawn(r,!0).filter(e)}};function sl(t,e,r,a){for(var n=[],i=new ma,s=t.cy(),o=s.hasCompoundNodes(),l=0;l<t.length;l++){var u=t[l];r?n.push(u):o&&a(n,i,u)}for(;n.length>0;){var c=n.shift();e(c),i.add(c.id()),o&&a(n,i,c)}return t}function Jd(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n<a.length;n++){var i=a[n];e.has(i.id())||t.push(i)}}ya.forEachDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return sl(this,t,e,Jd)};function ef(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}ya.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return sl(this,t,e,ef)};function Iy(t,e,r){ef(t,e,r),Jd(t,e,r)}ya.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return sl(this,t,e,Iy)};ya.ancestors=ya.parents;var Wa,tf;Wa=tf={data:Ve.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Ve.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Ve.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Ve.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Ve.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Ve.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}};Wa.attr=Wa.data;Wa.removeAttr=Wa.removeData;var Oy=tf,gi={};function Ys(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,s=0;s<i.length;s++){var o=i[s];!e&&o.isLoop()||(a+=t(n,o))}return a}else return}}xe(gi,{degree:Ys(function(t,e){return e.source().same(e.target())?2:1}),indegree:Ys(function(t,e){return e.target().same(t)?1:0}),outdegree:Ys(function(t,e){return e.source().same(t)?1:0})});function ea(t,e){return function(r){for(var a,n=this.nodes(),i=0;i<n.length;i++){var s=n[i],o=s[t](r);o!==void 0&&(a===void 0||e(o,a))&&(a=o)}return a}}xe(gi,{minDegree:ea("degree",function(t,e){return t<e}),maxDegree:ea("degree",function(t,e){return t>e}),minIndegree:ea("indegree",function(t,e){return t<e}),maxIndegree:ea("indegree",function(t,e){return t>e}),minOutdegree:ea("outdegree",function(t,e){return t<e}),maxOutdegree:ea("outdegree",function(t,e){return t>e})});xe(gi,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n<a.length;n++)r+=a[n].degree(e);return r}});var Kt,rf,af=function(e,r,a){for(var n=0;n<e.length;n++){var i=e[n];if(!i.locked()){var s=i._private.position,o={x:r.x!=null?r.x-s.x:0,y:r.y!=null?r.y-s.y:0};i.isParent()&&!(o.x===0&&o.y===0)&&i.children().shift(o,a),i.dirtyBoundingBoxCache()}}},dc={field:"position",bindingEvent:"position",allowBinding:!0,allowSetting:!0,settingEvent:"position",settingTriggersEvent:!0,triggerFnName:"emitAndNotify",allowGetting:!0,validKeys:["x","y"],beforeGet:function(e){e.updateCompoundBounds()},beforeSet:function(e,r){af(e,r,!1)},onSet:function(e){e.dirtyCompoundBoundsCache()},canSet:function(e){return!e.locked()}};Kt=rf={position:Ve.data(dc),silentPosition:Ve.data(xe({},dc,{allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!1,beforeSet:function(e,r){af(e,r,!0)},onSet:function(e){e.dirtyCompoundBoundsCache()}})),positions:function(e,r){if(Ne(e))r?this.silentPosition(e):this.position(e);else if(Ze(e)){var a=e,n=this.cy();n.startBatch();for(var i=0;i<this.length;i++){var s=this[i],o=void 0;(o=a(s,i))&&(r?s.silentPosition(o):s.position(o))}n.endBatch()}return this},silentPositions:function(e){return this.positions(e,!0)},shift:function(e,r,a){var n;if(Ne(e)?(n={x:se(e.x)?e.x:0,y:se(e.y)?e.y:0},a=r):me(e)&&se(r)&&(n={x:0,y:0},n[e]=r),n!=null){var i=this.cy();i.startBatch();for(var s=0;s<this.length;s++){var o=this[s];if(!(i.hasCompoundNodes()&&o.isChild()&&o.ancestors().anySame(this))){var l=o.position(),u={x:l.x+n.x,y:l.y+n.y};a?o.silentPosition(u):o.position(u)}}i.endBatch()}return this},silentShift:function(e,r){return Ne(e)?this.shift(e,!0):me(e)&&se(r)&&this.shift(e,r,!0),this},renderedPosition:function(e,r){var a=this[0],n=this.cy(),i=n.zoom(),s=n.pan(),o=Ne(e)?e:void 0,l=o!==void 0||r!==void 0&&me(e);if(a&&a.isNode())if(l)for(var u=0;u<this.length;u++){var c=this[u];r!==void 0?c.position(e,(r-s[e])/i):o!==void 0&&c.position(Ad(o,i,s))}else{var d=a.position();return o=ci(d,i,s),e===void 0?o:o[e]}else if(!l)return;return this},relativePosition:function(e,r){var a=this[0],n=this.cy(),i=Ne(e)?e:void 0,s=i!==void 0||r!==void 0&&me(e),o=n.hasCompoundNodes();if(a&&a.isNode())if(s)for(var l=0;l<this.length;l++){var u=this[l],c=o?u.parent():null,d=c&&c.length>0,f=d;d&&(c=c[0]);var h=f?c.position():{x:0,y:0};r!==void 0?u.position(e,r+h[e]):i!==void 0&&u.position({x:i.x+h.x,y:i.y+h.y})}else{var v=a.position(),y=o?a.parent():null,p=y&&y.length>0,g=p;p&&(y=y[0]);var m=g?y.position():{x:0,y:0};return i={x:v.x-m.x,y:v.y-m.y},e===void 0?i:i[e]}else if(!s)return;return this}};Kt.modelPosition=Kt.point=Kt.position;Kt.modelPositions=Kt.points=Kt.positions;Kt.renderedPoint=Kt.renderedPosition;Kt.relativePoint=Kt.relativePosition;var Ny=rf,ha,Mr;ha=Mr={};Mr.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,l=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:l,w:s-i,h:l-o}};Mr.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Mr.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var o=s._private,l=s.children(),u=s.pstyle("compound-sizing-wrt-labels").value==="include",c={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=l.boundingBox({includeLabels:u,includeOverlays:!1,useCache:!1}),f=o.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=f.x-d.w/2,d.x2=f.x+d.w/2,d.y1=f.y-d.h/2,d.y2=f.y+d.h/2);function h(k,P,B){var D=0,R=0,A=P+B;return k>0&&A>0&&(D=P/A*k,R=B/A*k),{biasDiff:D,biasComplementDiff:R}}function v(k,P,B,D){if(B.units==="%")switch(D){case"width":return k>0?B.pfValue*k:0;case"height":return P>0?B.pfValue*P:0;case"average":return k>0&&P>0?B.pfValue*(k+P)/2:0;case"min":return k>0&&P>0?k>P?B.pfValue*P:B.pfValue*k:0;case"max":return k>0&&P>0?k>P?B.pfValue*k:B.pfValue*P:0;default:return 0}else return B.units==="px"?B.pfValue:0}var y=c.width.left.value;c.width.left.units==="px"&&c.width.val>0&&(y=y*100/c.width.val);var p=c.width.right.value;c.width.right.units==="px"&&c.width.val>0&&(p=p*100/c.width.val);var g=c.height.top.value;c.height.top.units==="px"&&c.height.val>0&&(g=g*100/c.height.val);var m=c.height.bottom.value;c.height.bottom.units==="px"&&c.height.val>0&&(m=m*100/c.height.val);var b=h(c.width.val-d.w,y,p),w=b.biasDiff,E=b.biasComplementDiff,C=h(c.height.val-d.h,g,m),x=C.biasDiff,T=C.biasComplementDiff;o.autoPadding=v(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(d.w,c.width.val),f.x=(-w+d.x1+d.x2+E)/2,o.autoHeight=Math.max(d.h,c.height.val),f.y=(-x+d.y1+d.y2+T)/2}for(var a=0;a<this.length;a++){var n=this[a],i=n._private;(!i.compoundBoundsClean||t)&&(r(n),e.batching()||(i.compoundBoundsClean=!0))}return this};var $t=function(e){return e===1/0||e===-1/0?0:e},Ut=function(e,r,a,n,i){n-r===0||i-a===0||r==null||a==null||n==null||i==null||(e.x1=r<e.x1?r:e.x1,e.x2=n>e.x2?n:e.x2,e.y1=a<e.y1?a:e.y1,e.y2=i>e.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},mr=function(e,r){return r==null?e:Ut(e,r.x1,r.y1,r.x2,r.y2)},Da=function(e,r,a){return Rt(e,r,a)},bn=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,s=i.arrowWidth/2,o=r.pstyle(a+"-arrow-shape").value,l,u;if(o!=="none"){a==="source"?(l=i.srcX,u=i.srcY):a==="target"?(l=i.tgtX,u=i.tgtY):(l=i.midX,u=i.midY);var c=n.arrowBounds=n.arrowBounds||{},d=c[a]=c[a]||{};d.x1=l-s,d.y1=u-s,d.x2=l+s,d.y2=u+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,Mn(d,1),Ut(e,d.x1,d.y1,d.x2,d.y2)}}},Xs=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+"-":n="";var i=r._private,s=i.rstyle,o=r.pstyle(n+"label").strValue;if(o){var l=r.pstyle("text-halign"),u=r.pstyle("text-valign"),c=Da(s,"labelWidth",a),d=Da(s,"labelHeight",a),f=Da(s,"labelX",a),h=Da(s,"labelY",a),v=r.pstyle(n+"text-margin-x").pfValue,y=r.pstyle(n+"text-margin-y").pfValue,p=r.isEdge(),g=r.pstyle(n+"text-rotation"),m=r.pstyle("text-outline-width").pfValue,b=r.pstyle("text-border-width").pfValue,w=b/2,E=r.pstyle("text-background-padding").pfValue,C=2,x=d,T=c,k=T/2,P=x/2,B,D,R,A;if(p)B=f-k,D=f+k,R=h-P,A=h+P;else{switch(l.value){case"left":B=f-T,D=f;break;case"center":B=f-k,D=f+k;break;case"right":B=f,D=f+T;break}switch(u.value){case"top":R=h-x,A=h;break;case"center":R=h-P,A=h+P;break;case"bottom":R=h,A=h+x;break}}var M=v-Math.max(m,w)-E-C,_=v+Math.max(m,w)+E+C,L=y-Math.max(m,w)-E-C,I=y+Math.max(m,w)+E+C;B+=M,D+=_,R+=L,A+=I;var H=a||"main",G=i.labelBounds,O=G[H]=G[H]||{};O.x1=B,O.y1=R,O.x2=D,O.y2=A,O.w=D-B,O.h=A-R,O.leftPad=M,O.rightPad=_,O.topPad=L,O.botPad=I;var $=p&&g.strValue==="autorotate",Y=g.pfValue!=null&&g.pfValue!==0;if($||Y){var te=$?Da(i.rstyle,"labelAngle",a):g.pfValue,J=Math.cos(te),re=Math.sin(te),ne=(B+D)/2,oe=(R+A)/2;if(!p){switch(l.value){case"left":ne=D;break;case"right":ne=B;break}switch(u.value){case"top":oe=A;break;case"bottom":oe=R;break}}var ee=function(Te,Ee){return Te=Te-ne,Ee=Ee-oe,{x:Te*J-Ee*re+ne,y:Te*re+Ee*J+oe}},q=ee(B,R),K=ee(B,A),W=ee(D,R),Q=ee(D,A);B=Math.min(q.x,K.x,W.x,Q.x),D=Math.max(q.x,K.x,W.x,Q.x),R=Math.min(q.y,K.y,W.y,Q.y),A=Math.max(q.y,K.y,W.y,Q.y)}var ie=H+"Rot",ge=G[ie]=G[ie]||{};ge.x1=B,ge.y1=R,ge.x2=D,ge.y2=A,ge.w=D-B,ge.h=A-R,Ut(e,B,R,D,A),Ut(i.labelBounds.all,B,R,D,A)}return e}},fc=function(e,r){if(!r.cy().headless()){var a=r.pstyle("outline-opacity").value,n=r.pstyle("outline-width").value,i=r.pstyle("outline-offset").value,s=n+i;nf(e,r,a,s,"outside",s/2)}},nf=function(e,r,a,n,i,s){if(!(a===0||n<=0||i==="inside")){var o=r.cy(),l=o.renderer(),u=l.nodeShapes[l.getNodeShape(r)];if(u){var c=r.position(),d=c.x,f=c.y,h=r.width(),v=r.height();if(u.hasMiterBounds){i==="center"&&(n/=2);var y=u.miterBounds(d,f,h,v,n);mr(e,y)}else s!=null&&s>0&&_n(e,[s,s,s,s])}}},zy=function(e,r){if(!r.cy().headless()){var a=r.pstyle("border-opacity").value,n=r.pstyle("border-width").pfValue,i=r.pstyle("border-position").value;nf(e,r,a,n,i)}},$y=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=kt(),o=e._private,l=e.isNode(),u=e.isEdge(),c,d,f,h,v,y,p=o.rstyle,g=l&&n?e.pstyle("bounds-expansion").pfValue:[0],m=function(Me){return Me.pstyle("display").value!=="none"},b=!n||m(e)&&(!u||m(e.source())&&m(e.target()));if(b){var w=0,E=0;n&&r.includeOverlays&&(w=e.pstyle("overlay-opacity").value,w!==0&&(E=e.pstyle("overlay-padding").value));var C=0,x=0;n&&r.includeUnderlays&&(C=e.pstyle("underlay-opacity").value,C!==0&&(x=e.pstyle("underlay-padding").value));var T=Math.max(E,x),k=0,P=0;if(n&&(k=e.pstyle("width").pfValue,P=k/2),l&&r.includeNodes){var B=e.position();v=B.x,y=B.y;var D=e.outerWidth(),R=D/2,A=e.outerHeight(),M=A/2;c=v-R,d=v+R,f=y-M,h=y+M,Ut(s,c,f,d,h),n&&fc(s,e),n&&r.includeOutlines&&!i&&fc(s,e),n&&zy(s,e)}else if(u&&r.includeEdges)if(n&&!i){var _=e.pstyle("curve-style").strValue;if(c=Math.min(p.srcX,p.midX,p.tgtX),d=Math.max(p.srcX,p.midX,p.tgtX),f=Math.min(p.srcY,p.midY,p.tgtY),h=Math.max(p.srcY,p.midY,p.tgtY),c-=P,d+=P,f-=P,h+=P,Ut(s,c,f,d,h),_==="haystack"){var L=p.haystackPts;if(L&&L.length===2){if(c=L[0].x,f=L[0].y,d=L[1].x,h=L[1].y,c>d){var I=c;c=d,d=I}if(f>h){var H=f;f=h,h=H}Ut(s,c-P,f-P,d+P,h+P)}}else if(_==="bezier"||_==="unbundled-bezier"||br(_,"segments")||br(_,"taxi")){var G;switch(_){case"bezier":case"unbundled-bezier":G=p.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=p.linePts;break}if(G!=null)for(var O=0;O<G.length;O++){var $=G[O];c=$.x-P,d=$.x+P,f=$.y-P,h=$.y+P,Ut(s,c,f,d,h)}}}else{var Y=e.source(),te=Y.position(),J=e.target(),re=J.position();if(c=te.x,d=re.x,f=te.y,h=re.y,c>d){var ne=c;c=d,d=ne}if(f>h){var oe=f;f=h,h=oe}c-=P,d+=P,f-=P,h+=P,Ut(s,c,f,d,h)}if(n&&r.includeEdges&&u&&(bn(s,e,"mid-source"),bn(s,e,"mid-target"),bn(s,e,"source"),bn(s,e,"target")),n){var ee=e.pstyle("ghost").value==="yes";if(ee){var q=e.pstyle("ghost-offset-x").pfValue,K=e.pstyle("ghost-offset-y").pfValue;Ut(s,s.x1+q,s.y1+K,s.x2+q,s.y2+K)}}var W=o.bodyBounds=o.bodyBounds||{};Zl(W,s),_n(W,g),Mn(W,1),n&&(c=s.x1,d=s.x2,f=s.y1,h=s.y2,Ut(s,c-T,f-T,d+T,h+T));var Q=o.overlayBounds=o.overlayBounds||{};Zl(Q,s),_n(Q,g),Mn(Q,1);var ie=o.labelBounds=o.labelBounds||{};ie.all!=null?wp(ie.all):ie.all=kt(),n&&r.includeLabels&&(r.includeMainLabels&&Xs(s,e,null),u&&(r.includeSourceLabels&&Xs(s,e,"source"),r.includeTargetLabels&&Xs(s,e,"target")))}return s.x1=$t(s.x1),s.y1=$t(s.y1),s.x2=$t(s.x2),s.y2=$t(s.y2),s.w=$t(s.x2-s.x1),s.h=$t(s.y2-s.y1),s.w>0&&s.h>0&&b&&(_n(s,g),Mn(s,1)),s},sf=function(e){var r=0,a=function(s){return(s?1:0)<<r++},n=0;return n+=a(e.incudeNodes),n+=a(e.includeEdges),n+=a(e.includeLabels),n+=a(e.includeMainLabels),n+=a(e.includeSourceLabels),n+=a(e.includeTargetLabels),n+=a(e.includeOverlays),n+=a(e.includeOutlines),n},of=function(e){var r=function(o){return Math.round(o)};if(e.isEdge()){var a=e.source().position(),n=e.target().position();return Ul([r(a.x),r(a.y),r(n.x),r(n.y)])}else{var i=e.position();return Ul([r(i.x),r(i.y)])}},vc=function(e,r){var a=e._private,n,i=e.isEdge(),s=r==null?hc:sf(r),o=s===hc;if(a.bbCache==null?(n=$y(e,ja),a.bbCache=n,a.bbCachePosKey=of(e)):n=a.bbCache,!o){var l=e.isNode();n=kt(),(r.includeNodes&&l||r.includeEdges&&!l)&&(r.includeOverlays?mr(n,a.overlayBounds):mr(n,a.bodyBounds)),r.includeLabels&&(r.includeMainLabels&&(!i||r.includeSourceLabels&&r.includeTargetLabels)?mr(n,a.labelBounds.all):(r.includeMainLabels&&mr(n,a.labelBounds.mainRot),r.includeSourceLabels&&mr(n,a.labelBounds.sourceRot),r.includeTargetLabels&&mr(n,a.labelBounds.targetRot))),n.w=n.x2-n.x1,n.h=n.y2-n.y1}return n},ja={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,includeUnderlays:!0,includeOutlines:!0,useCache:!0},hc=sf(ja),pc=gt(ja);Mr.boundingBox=function(t){var e,r=t===void 0||t.useCache===void 0||t.useCache===!0,a=pa(function(c){var d=c._private;return d.bbCache==null||d.styleDirty||d.bbCachePosKey!==of(c)},function(c){return c.id()});if(r&&this.length===1&&!a(this[0]))t===void 0?t=ja:t=pc(t),e=vc(this[0],t);else{e=kt(),t=t||ja;var n=pc(t),i=this,s=i.cy(),o=s.styleEnabled();this.edges().forEach(a),this.nodes().forEach(a),o&&this.recalculateRenderedStyle(r),this.updateCompoundBounds(!r);for(var l=0;l<i.length;l++){var u=i[l];a(u)&&u.dirtyBoundingBoxCache(),mr(e,vc(u,n))}}return e.x1=$t(e.x1),e.y1=$t(e.y1),e.x2=$t(e.x2),e.y2=$t(e.y2),e.w=$t(e.x2-e.x1),e.h=$t(e.y2-e.y1),e};Mr.dirtyBoundingBoxCache=function(){for(var t=0;t<this.length;t++){var e=this[t]._private;e.bbCache=null,e.bbCachePosKey=null,e.bodyBounds=null,e.overlayBounds=null,e.labelBounds.all=null,e.labelBounds.source=null,e.labelBounds.target=null,e.labelBounds.main=null,e.labelBounds.sourceRot=null,e.labelBounds.targetRot=null,e.labelBounds.mainRot=null,e.arrowBounds.source=null,e.arrowBounds.target=null,e.arrowBounds["mid-source"]=null,e.arrowBounds["mid-target"]=null}return this.emitAndNotify("bounds"),this};Mr.boundingBoxAt=function(t){var e=this.nodes(),r=this.cy(),a=r.hasCompoundNodes(),n=r.collection();if(a&&(n=e.filter(function(u){return u.isParent()}),e=e.not(n)),Ne(t)){var i=t;t=function(){return i}}var s=function(c,d){return c._private.bbAtOldPos=t(c,d)},o=function(c){return c._private.bbAtOldPos};r.startBatch(),e.forEach(s).silentPositions(t),a&&(n.dirtyCompoundBoundsCache(),n.dirtyBoundingBoxCache(),n.updateCompoundBounds(!0));var l=bp(this.boundingBox({useCache:!1}));return e.silentPositions(o),a&&(n.dirtyCompoundBoundsCache(),n.dirtyBoundingBoxCache(),n.updateCompoundBounds(!0)),r.endBatch(),l};ha.boundingbox=ha.bb=ha.boundingBox;ha.renderedBoundingbox=ha.renderedBoundingBox;var Fy=Mr,Oa,sn;Oa=sn={};var lf=function(e){e.uppercaseName=Rl(e.name),e.autoName="auto"+e.uppercaseName,e.labelName="label"+e.uppercaseName,e.outerName="outer"+e.uppercaseName,e.uppercaseOuterName=Rl(e.outerName),Oa[e.name]=function(){var a=this[0],n=a._private,i=n.cy,s=i._private.styleEnabled;if(a)if(s){if(a.isParent())return a.updateCompoundBounds(),n[e.autoName]||0;var o=a.pstyle(e.name);return o.strValue==="label"?(a.recalculateRenderedStyle(),n.rstyle[e.labelName]||0):o.pfValue}else return 1},Oa["outer"+e.uppercaseName]=function(){var a=this[0],n=a._private,i=n.cy,s=i._private.styleEnabled;if(a)if(s){var o=a[e.name](),l=a.pstyle("border-position").value,u;l==="center"?u=a.pstyle("border-width").pfValue:l==="outside"?u=2*a.pstyle("border-width").pfValue:u=0;var c=2*a.padding();return o+u+c}else return 1},Oa["rendered"+e.uppercaseName]=function(){var a=this[0];if(a){var n=a[e.name]();return n*this.cy().zoom()}},Oa["rendered"+e.uppercaseOuterName]=function(){var a=this[0];if(a){var n=a[e.outerName]();return n*this.cy().zoom()}}};lf({name:"width"});lf({name:"height"});sn.padding=function(){var t=this[0],e=t._private;return t.isParent()?(t.updateCompoundBounds(),e.autoPadding!==void 0?e.autoPadding:t.pstyle("padding").pfValue):t.pstyle("padding").pfValue};sn.paddedHeight=function(){var t=this[0];return t.height()+2*t.padding()};sn.paddedWidth=function(){var t=this[0];return t.width()+2*t.padding()};var qy=sn,Vy=function(e,r){if(e.isEdge()&&e.takesUpSpace())return r(e)},Hy=function(e,r){if(e.isEdge()&&e.takesUpSpace()){var a=e.cy();return ci(r(e),a.zoom(),a.pan())}},Gy=function(e,r){if(e.isEdge()&&e.takesUpSpace()){var a=e.cy(),n=a.pan(),i=a.zoom();return r(e).map(function(s){return ci(s,i,n)})}},Uy=function(e){return e.renderer().getControlPoints(e)},Ky=function(e){return e.renderer().getSegmentPoints(e)},Wy=function(e){return e.renderer().getSourceEndpoint(e)},jy=function(e){return e.renderer().getTargetEndpoint(e)},Yy=function(e){return e.renderer().getEdgeMidpoint(e)},gc={controlPoints:{get:Uy,mult:!0},segmentPoints:{get:Ky,mult:!0},sourceEndpoint:{get:Wy},targetEndpoint:{get:jy},midpoint:{get:Yy}},Xy=function(e){return"rendered"+e[0].toUpperCase()+e.substr(1)},Zy=Object.keys(gc).reduce(function(t,e){var r=gc[e],a=Xy(e);return t[e]=function(){return Vy(this,r.get)},r.mult?t[a]=function(){return Gy(this,r.get)}:t[a]=function(){return Hy(this,r.get)},t},{}),Qy=xe({},Ny,Fy,qy,Zy);var uf=function(e,r){this.recycle(e,r)};function Ra(){return!1}function wn(){return!0}uf.prototype={instanceString:function(){return"event"},recycle:function(e,r){if(this.isImmediatePropagationStopped=this.isPropagationStopped=this.isDefaultPrevented=Ra,e!=null&&e.preventDefault?(this.type=e.type,this.isDefaultPrevented=e.defaultPrevented?wn:Ra):e!=null&&e.type?r=e:this.type=e,r!=null&&(this.originalEvent=r.originalEvent,this.type=r.type!=null?r.type:this.type,this.cy=r.cy,this.target=r.target,this.position=r.position,this.renderedPosition=r.renderedPosition,this.namespace=r.namespace,this.layout=r.layout),this.cy!=null&&this.position!=null&&this.renderedPosition==null){var a=this.position,n=this.cy.zoom(),i=this.cy.pan();this.renderedPosition={x:a.x*n+i.x,y:a.y*n+i.y}}this.timeStamp=e&&e.timeStamp||Date.now()},preventDefault:function(){this.isDefaultPrevented=wn;var e=this.originalEvent;e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){this.isPropagationStopped=wn;var e=this.originalEvent;e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=wn,this.stopPropagation()},isDefaultPrevented:Ra,isPropagationStopped:Ra,isImmediatePropagationStopped:Ra};var cf=/^([^.]+)(\.(?:[^.]+))?$/,Jy=".*",df={qualifierCompare:function(e,r){return e===r},eventMatches:function(){return!0},addEventFields:function(){},callbackContext:function(e){return e},beforeEmit:function(){},afterEmit:function(){},bubble:function(){return!1},parent:function(){return null},context:null},yc=Object.keys(df),em={};function yi(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:em,e=arguments.length>1?arguments[1]:void 0,r=0;r<yc.length;r++){var a=yc[r];this[a]=t[a]||df[a]}this.context=e||this.context,this.listeners=[],this.emitting=0}var Rr=yi.prototype,ff=function(e,r,a,n,i,s,o){Ze(n)&&(i=n,n=null),o&&(s==null?s=o:s=xe({},s,o));for(var l=Ue(a)?a:a.split(/\s+/),u=0;u<l.length;u++){var c=l[u];if(!Sr(c)){var d=c.match(cf);if(d){var f=d[1],h=d[2]?d[2]:null,v=r(e,c,f,h,n,i,s);if(v===!1)break}}}},mc=function(e,r){return e.addEventFields(e.context,r),new uf(r.type,r)},tm=function(e,r,a){if(oh(a)){r(e,a);return}else if(Ne(a)){r(e,mc(e,a));return}for(var n=Ue(a)?a:a.split(/\s+/),i=0;i<n.length;i++){var s=n[i];if(!Sr(s)){var o=s.match(cf);if(o){var l=o[1],u=o[2]?o[2]:null,c=mc(e,{type:l,namespace:u,target:e.context});r(e,c)}}}};Rr.on=Rr.addListener=function(t,e,r,a,n){return ff(this,function(i,s,o,l,u,c,d){Ze(c)&&i.listeners.push({event:s,callback:c,type:o,namespace:l,qualifier:u,conf:d})},t,e,r,a,n),this};Rr.one=function(t,e,r,a){return this.on(t,e,r,a,{one:!0})};Rr.removeListener=Rr.off=function(t,e,r,a){var n=this;this.emitting!==0&&(this.listeners=Hh(this.listeners));for(var i=this.listeners,s=function(u){var c=i[u];ff(n,function(d,f,h,v,y,p){if((c.type===h||t==="*")&&(!v&&c.namespace!==".*"||c.namespace===v)&&(!y||d.qualifierCompare(c.qualifier,y))&&(!p||c.callback===p))return i.splice(u,1),!1},t,e,r,a)},o=i.length-1;o>=0;o--)s(o);return this};Rr.removeAllListeners=function(){return this.removeListener("*")};Rr.emit=Rr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,Ue(e)||(e=[e]),tm(this,function(i,s){r!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],n=a.length);for(var o=function(){var c=a[l];if(c.type===s.type&&(!c.namespace||c.namespace===s.namespace||c.namespace===Jy)&&i.eventMatches(i.context,c,s)){var d=[s];e!=null&&Uh(d,e),i.beforeEmit(i.context,c,s),c.conf&&c.conf.one&&(i.listeners=i.listeners.filter(function(v){return v!==c}));var f=i.callbackContext(i.context,c,s),h=c.callback.apply(f,d);i.afterEmit(i.context,c,s),h===!1&&(s.stopPropagation(),s.preventDefault())}},l=0;l<n;l++)o();i.bubble(i.context)&&!s.isPropagationStopped()&&i.parent(i.context).emit(s,e)},t),this.emitting--,this};var rm={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Ja(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e.cy(),r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e},beforeEmit:function(e,r){r.conf&&r.conf.once&&r.conf.onceCollection.removeListener(r.event,r.qualifier,r.callback)},bubble:function(){return!0},parent:function(e){return e.isChild()?e.parent():e.cy()}},xn=function(e){return me(e)?new Br(e):e},vf={createEmitter:function(){for(var e=0;e<this.length;e++){var r=this[e],a=r._private;a.emitter||(a.emitter=new yi(rm,r))}return this},emitter:function(){return this._private.emitter},on:function(e,r,a){for(var n=xn(r),i=0;i<this.length;i++){var s=this[i];s.emitter().on(e,n,a)}return this},removeListener:function(e,r,a){for(var n=xn(r),i=0;i<this.length;i++){var s=this[i];s.emitter().removeListener(e,n,a)}return this},removeAllListeners:function(){for(var e=0;e<this.length;e++){var r=this[e];r.emitter().removeAllListeners()}return this},one:function(e,r,a){for(var n=xn(r),i=0;i<this.length;i++){var s=this[i];s.emitter().one(e,n,a)}return this},once:function(e,r,a){for(var n=xn(r),i=0;i<this.length;i++){var s=this[i];s.emitter().on(e,n,a,{once:!0,onceCollection:this})}},emit:function(e,r){for(var a=0;a<this.length;a++){var n=this[a];n.emitter().emit(e,r)}return this},emitAndNotify:function(e,r){if(this.length!==0)return this.cy().notify(e,this),this.emit(e,r),this}};Ve.eventAliasesOn(vf);var hf={nodes:function(e){return this.filter(function(r){return r.isNode()}).filter(e)},edges:function(e){return this.filter(function(r){return r.isEdge()}).filter(e)},byGroup:function(){for(var e=this.spawn(),r=this.spawn(),a=0;a<this.length;a++){var n=this[a];n.isNode()?e.push(n):r.push(n)}return{nodes:e,edges:r}},filter:function(e,r){if(e===void 0)return this;if(me(e)||It(e))return new Br(e).filter(this);if(Ze(e)){for(var a=this.spawn(),n=this,i=0;i<n.length;i++){var s=n[i],o=r?e.apply(r,[s,i,n]):e(s,i,n);o&&a.push(s)}return a}return this.spawn()},not:function(e){if(e){me(e)&&(e=this.filter(e));for(var r=this.spawn(),a=0;a<this.length;a++){var n=this[a],i=e.has(n);i||r.push(n)}return r}else return this},absoluteComplement:function(){var e=this.cy();return e.mutableElements().not(this)},intersect:function(e){if(me(e)){var r=e;return this.filter(r)}for(var a=this.spawn(),n=this,i=e,s=this.length<e.length,o=s?n:i,l=s?i:n,u=0;u<o.length;u++){var c=o[u];l.has(c)&&a.push(c)}return a},xor:function(e){var r=this._private.cy;me(e)&&(e=r.$(e));var a=this.spawn(),n=this,i=e,s=function(l,u){for(var c=0;c<l.length;c++){var d=l[c],f=d._private.data.id,h=u.hasElementWithId(f);h||a.push(d)}};return s(n,i),s(i,n),a},diff:function(e){var r=this._private.cy;me(e)&&(e=r.$(e));var a=this.spawn(),n=this.spawn(),i=this.spawn(),s=this,o=e,l=function(c,d,f){for(var h=0;h<c.length;h++){var v=c[h],y=v._private.data.id,p=d.hasElementWithId(y);p?i.merge(v):f.push(v)}};return l(s,o,a),l(o,s,n),{left:a,right:n,both:i}},add:function(e){var r=this._private.cy;if(!e)return this;if(me(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=this.spawnSelf(),i=0;i<e.length;i++){var s=e[i],o=!this.has(s);o&&n.push(s)}return n},merge:function(e){var r=this._private,a=r.cy;if(!e)return this;if(e&&me(e)){var n=e;e=a.mutableElements().filter(n)}for(var i=r.map,s=0;s<e.length;s++){var o=e[s],l=o._private.data.id,u=!i.has(l);if(u){var c=this.length++;this[c]=o,i.set(l,{ele:o,index:c})}}return this},unmergeAt:function(e){var r=this[e],a=r.id(),n=this._private,i=n.map;this[e]=void 0,i.delete(a);var s=e===this.length-1;if(this.length>1&&!s){var o=this.length-1,l=this[o],u=l._private.data.id;this[o]=void 0,this[e]=l,i.set(u,{ele:l,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,n=r.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&me(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n<e.length;n++)this.unmergeOne(e[n]);return this},unmergeBy:function(e){for(var r=this.length-1;r>=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;i<n.length;i++){var s=n[i],o=r?e.apply(r,[s,i,n]):e(s,i,n);a.push(o)}return a},reduce:function(e,r){for(var a=r,n=this,i=0;i<n.length;i++)a=e(a,n[i],i,n);return a},max:function(e,r){for(var a=-1/0,n,i=this,s=0;s<i.length;s++){var o=i[s],l=r?e.apply(r,[o,s,i]):e(o,s,i);l>a&&(a=l,n=o)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,s=0;s<i.length;s++){var o=i[s],l=r?e.apply(r,[o,s,i]):e(o,s,i);l<a&&(a=l,n=o)}return{value:a,ele:n}}},$e=hf;$e.u=$e["|"]=$e["+"]=$e.union=$e.or=$e.add;$e["\\"]=$e["!"]=$e["-"]=$e.difference=$e.relativeComplement=$e.subtract=$e.not;$e.n=$e["&"]=$e["."]=$e.and=$e.intersection=$e.intersect;$e["^"]=$e["(+)"]=$e["(-)"]=$e.symmetricDifference=$e.symdiff=$e.xor;$e.fnFilter=$e.filterFn=$e.stdFilter=$e.filter;$e.complement=$e.abscomp=$e.absoluteComplement;var am={isNode:function(){return this.group()==="nodes"},isEdge:function(){return this.group()==="edges"},isLoop:function(){return this.isEdge()&&this.source()[0]===this.target()[0]},isSimple:function(){return this.isEdge()&&this.source()[0]!==this.target()[0]},group:function(){var e=this[0];if(e)return e._private.group}},pf=function(e,r){var a=e.cy(),n=a.hasCompoundNodes();function i(c){var d=c.pstyle("z-compound-depth");return d.value==="auto"?n?c.zDepth():0:d.value==="bottom"?-1:d.value==="top"?Yo:0}var s=i(e)-i(r);if(s!==0)return s;function o(c){var d=c.pstyle("z-index-compare");return d.value==="auto"&&c.isNode()?1:0}var l=o(e)-o(r);if(l!==0)return l;var u=e.pstyle("z-index").value-r.pstyle("z-index").value;return u!==0?u:e.poolIndex()-r.poolIndex()},Zn={forEach:function(e,r){if(Ze(e))for(var a=this.length,n=0;n<a;n++){var i=this[n],s=r?e.apply(r,[i,n,this]):e(i,n,this);if(s===!1)break}return this},toArray:function(){for(var e=[],r=0;r<this.length;r++)e.push(this[r]);return e},slice:function(e,r){var a=[],n=this.length;r==null&&(r=n),e==null&&(e=0),e<0&&(e=n+e),r<0&&(r=n+r);for(var i=e;i>=0&&i<r&&i<n;i++)a.push(this[i]);return this.spawn(a)},size:function(){return this.length},eq:function(e){return this[e]||this.spawn()},first:function(){return this[0]||this.spawn()},last:function(){return this[this.length-1]||this.spawn()},empty:function(){return this.length===0},nonempty:function(){return!this.empty()},sort:function(e){if(!Ze(e))return this;var r=this.toArray().sort(e);return this.spawn(r)},sortByZIndex:function(){return this.sort(pf)},zDepth:function(){var e=this[0];if(e){var r=e._private,a=r.group;if(a==="nodes"){var n=r.data.parent?e.parents().size():0;return e.isParent()?n:Yo-1}else{var i=r.source,s=r.target,o=i.zDepth(),l=s.zDepth();return Math.max(o,l,0)}}}};Zn.each=Zn.forEach;var nm=function(){var e="undefined",r=(typeof Symbol>"u"?"undefined":ot(Symbol))!=e&&ot(Symbol.iterator)!=e;r&&(Zn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return fd({next:function(){return i<s?n.value=a[i++]:(n.value=void 0,n.done=!0),n}},Symbol.iterator,function(){return this})})};nm();var im=gt({nodeDimensionsIncludeLabels:!1}),On={layoutDimensions:function(e){e=im(e);var r;if(!this.takesUpSpace())r={w:0,h:0};else if(e.nodeDimensionsIncludeLabels){var a=this.boundingBox();r={w:a.w,h:a.h}}else r={w:this.outerWidth(),h:this.outerHeight()};return(r.w===0||r.h===0)&&(r.w=r.h=1),r},layoutPositions:function(e,r,a){var n=this.nodes().filter(function(E){return!E.isParent()}),i=this.cy(),s=r.eles,o=function(C){return C.id()},l=pa(a,o);e.emit({type:"layoutstart",layout:e}),e.animations=[];var u=function(C,x,T){var k={x:x.x1+x.w/2,y:x.y1+x.h/2},P={x:(T.x-k.x)*C,y:(T.y-k.y)*C};return{x:k.x+P.x,y:k.y+P.y}},c=r.spacingFactor&&r.spacingFactor!==1,d=function(){if(!c)return null;for(var C=kt(),x=0;x<n.length;x++){var T=n[x],k=l(T,x);Ld(C,k.x,k.y)}return C},f=d(),h=pa(function(E,C){var x=l(E,C);if(c){var T=Math.abs(r.spacingFactor);x=u(T,f,x)}return r.transform!=null&&(x=r.transform(E,x)),x},o);if(r.animate){for(var v=0;v<n.length;v++){var y=n[v],p=h(y,v),g=r.animateFilter==null||r.animateFilter(y,v);if(g){var m=y.animation({position:p,duration:r.animationDuration,easing:r.animationEasing});e.animations.push(m)}else y.position(p)}if(r.fit){var b=i.animation({fit:{boundingBox:s.boundingBoxAt(h),padding:r.padding},duration:r.animationDuration,easing:r.animationEasing});e.animations.push(b)}else if(r.zoom!==void 0&&r.pan!==void 0){var w=i.animation({zoom:r.zoom,pan:r.pan,duration:r.animationDuration,easing:r.animationEasing});e.animations.push(w)}e.animations.forEach(function(E){return E.play()}),e.one("layoutready",r.ready),e.emit({type:"layoutready",layout:e}),ba.all(e.animations.map(function(E){return E.promise()})).then(function(){e.one("layoutstop",r.stop),e.emit({type:"layoutstop",layout:e})})}else n.positions(h),r.fit&&i.fit(r.eles,r.padding),r.zoom!=null&&i.zoom(r.zoom),r.pan&&i.pan(r.pan),e.one("layoutready",r.ready),e.emit({type:"layoutready",layout:e}),e.one("layoutstop",r.stop),e.emit({type:"layoutstop",layout:e});return this},layout:function(e){var r=this.cy();return r.makeLayout(xe({},e,{eles:this}))}};On.createLayout=On.makeLayout=On.layout;function gf(t,e,r){var a=r._private,n=a.styleCache=a.styleCache||[],i;return(i=n[t])!=null||(i=n[t]=e(r)),i}function mi(t,e){return t=Ur(t),function(a){return gf(t,e,a)}}function bi(t,e){t=Ur(t);var r=function(n){return e.call(n)};return function(){var n=this[0];if(n)return gf(t,r,n)}}var ht={recalculateRenderedStyle:function(e){var r=this.cy(),a=r.renderer(),n=r.styleEnabled();return a&&n&&a.recalculateRenderedStyle(this,e),this},dirtyStyleCache:function(){var e=this.cy(),r=function(i){return i._private.styleCache=null};if(e.hasCompoundNodes()){var a;a=this.spawnSelf().merge(this.descendants()).merge(this.parents()),a.merge(a.connectedEdges()),a.forEach(r)}else this.forEach(function(n){r(n),n.connectedEdges().forEach(r)});return this},updateStyle:function(e){var r=this._private.cy;if(!r.styleEnabled())return this;if(r.batching()){var a=r._private.batchStyleEles;return a.merge(this),this}var n=r.hasCompoundNodes(),i=this;e=!!(e||e===void 0),n&&(i=this.spawnSelf().merge(this.descendants()).merge(this.parents()));var s=i;return e?s.emitAndNotify("style"):s.emit("style"),i.forEach(function(o){return o._private.styleDirty=!0}),this},cleanStyle:function(){var e=this.cy();if(e.styleEnabled())for(var r=0;r<this.length;r++){var a=this[r];a._private.styleDirty&&(a._private.styleDirty=!1,e.style().apply(a))}},parsedStyle:function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){a._private.styleDirty&&(a._private.styleDirty=!1,n.style().apply(a));var i=a._private.style[e];return i??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(Ne(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(me(e))if(r===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify("style");else if(e===void 0){var l=this[0];return l?i.getRawStyle(l):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var s=0;s<i.length;s++){var o=i[s];n.removeAllBypasses(o,a)}else{e=e.split(/\s+/);for(var l=0;l<i.length;l++){var u=i[l];n.removeBypasses(u,e,a)}}return this.emitAndNotify("style"),this},show:function(){return this.css("display","element"),this},hide:function(){return this.css("display","none"),this},effectiveOpacity:function(){var e=this.cy();if(!e.styleEnabled())return 1;var r=e.hasCompoundNodes(),a=this[0];if(a){var n=a._private,i=a.pstyle("opacity").value;if(!r)return i;var s=n.data.parent?a.parents():null;if(s)for(var o=0;o<s.length;o++){var l=s[o],u=l.pstyle("opacity").value;i=u*i}return i}},transparent:function(){var e=this.cy();if(!e.styleEnabled())return!1;var r=this[0],a=r.cy().hasCompoundNodes();if(r)return a?r.effectiveOpacity()===0:r.pstyle("opacity").value===0},backgrounding:function(){var e=this.cy();if(!e.styleEnabled())return!1;var r=this[0];return!!r._private.backgrounding}};function Zs(t,e){var r=t._private,a=r.data.parent?t.parents():null;if(a)for(var n=0;n<a.length;n++){var i=a[n];if(!e(i))return!1}return!0}function ol(t){var e=t.ok,r=t.edgeOkViaNode||t.ok,a=t.parentOk||t.ok;return function(){var n=this.cy();if(!n.styleEnabled())return!0;var i=this[0],s=n.hasCompoundNodes();if(i){var o=i._private;if(!e(i))return!1;if(i.isNode())return!s||Zs(i,a);var l=o.source,u=o.target;return r(l)&&(!s||Zs(l,r))&&(l===u||r(u)&&(!s||Zs(u,r)))}}}var wa=mi("eleTakesUpSpace",function(t){return t.pstyle("display").value==="element"&&t.width()!==0&&(t.isNode()?t.height()!==0:!0)});ht.takesUpSpace=bi("takesUpSpace",ol({ok:wa}));var sm=mi("eleInteractive",function(t){return t.pstyle("events").value==="yes"&&t.pstyle("visibility").value==="visible"&&wa(t)}),om=mi("parentInteractive",function(t){return t.pstyle("visibility").value==="visible"&&wa(t)});ht.interactive=bi("interactive",ol({ok:sm,parentOk:om,edgeOkViaNode:wa}));ht.noninteractive=function(){var t=this[0];if(t)return!t.interactive()};var lm=mi("eleVisible",function(t){return t.pstyle("visibility").value==="visible"&&t.pstyle("opacity").pfValue!==0&&wa(t)}),um=wa;ht.visible=bi("visible",ol({ok:lm,edgeOkViaNode:um}));ht.hidden=function(){var t=this[0];if(t)return!t.visible()};ht.isBundledBezier=bi("isBundledBezier",function(){return this.cy().styleEnabled()?!this.removed()&&this.pstyle("curve-style").value==="bezier"&&this.takesUpSpace():!1});ht.bypass=ht.css=ht.style;ht.renderedCss=ht.renderedStyle;ht.removeBypass=ht.removeCss=ht.removeStyle;ht.pstyle=ht.parsedStyle;var Tr={};function bc(t){return function(){var e=arguments,r=[];if(e.length===2){var a=e[0],n=e[1];this.on(t.event,a,n)}else if(e.length===1&&Ze(e[0])){var i=e[0];this.on(t.event,i)}else if(e.length===0||e.length===1&&Ue(e[0])){for(var s=e.length===1?e[0]:null,o=0;o<this.length;o++){var l=this[o],u=!t.ableField||l._private[t.ableField],c=l._private[t.field]!=t.value;if(t.overrideAble){var d=t.overrideAble(l);if(d!==void 0&&(u=d,!d))return this}u&&(l._private[t.field]=t.value,c&&r.push(l))}var f=this.spawn(r);f.updateStyle(),f.emit(t.event),s&&f.emit(s)}return this}}function xa(t){Tr[t.field]=function(){var e=this[0];if(e){if(t.overrideField){var r=t.overrideField(e);if(r!==void 0)return r}return e._private[t.field]}},Tr[t.on]=bc({event:t.on,field:t.field,ableField:t.ableField,overrideAble:t.overrideAble,value:!0}),Tr[t.off]=bc({event:t.off,field:t.field,ableField:t.ableField,overrideAble:t.overrideAble,value:!1})}xa({field:"locked",overrideField:function(e){return e.cy().autolock()?!0:void 0},on:"lock",off:"unlock"});xa({field:"grabbable",overrideField:function(e){return e.cy().autoungrabify()||e.pannable()?!1:void 0},on:"grabify",off:"ungrabify"});xa({field:"selected",ableField:"selectable",overrideAble:function(e){return e.cy().autounselectify()?!1:void 0},on:"select",off:"unselect"});xa({field:"selectable",overrideField:function(e){return e.cy().autounselectify()?!1:void 0},on:"selectify",off:"unselectify"});Tr.deselect=Tr.unselect;Tr.grabbed=function(){var t=this[0];if(t)return t._private.grabbed};xa({field:"active",on:"activate",off:"unactivate"});xa({field:"pannable",on:"panify",off:"unpanify"});Tr.inactive=function(){var t=this[0];if(t)return!t._private.active};var Et={},wc=function(e){return function(a){for(var n=this,i=[],s=0;s<n.length;s++){var o=n[s];if(o.isNode()){for(var l=!1,u=o.connectedEdges(),c=0;c<u.length;c++){var d=u[c],f=d.source(),h=d.target();if(e.noIncomingEdges&&h===o&&f!==o||e.noOutgoingEdges&&f===o&&h!==o){l=!0;break}}l||i.push(o)}}return this.spawn(i,!0).filter(a)}},xc=function(e){return function(r){for(var a=this,n=[],i=0;i<a.length;i++){var s=a[i];if(s.isNode())for(var o=s.connectedEdges(),l=0;l<o.length;l++){var u=o[l],c=u.source(),d=u.target();e.outgoing&&c===s?(n.push(u),n.push(d)):e.incoming&&d===s&&(n.push(u),n.push(c))}}return this.spawn(n,!0).filter(r)}},Ec=function(e){return function(r){for(var a=this,n=[],i={};;){var s=e.outgoing?a.outgoers():a.incomers();if(s.length===0)break;for(var o=!1,l=0;l<s.length;l++){var u=s[l],c=u.id();i[c]||(i[c]=!0,n.push(u),o=!0)}if(!o)break;a=s}return this.spawn(n,!0).filter(r)}};Et.clearTraversalCache=function(){for(var t=0;t<this.length;t++)this[t]._private.traversalCache=null};xe(Et,{roots:wc({noIncomingEdges:!0}),leaves:wc({noOutgoingEdges:!0}),outgoers:Ft(xc({outgoing:!0}),"outgoers"),successors:Ec({outgoing:!0}),incomers:Ft(xc({incoming:!0}),"incomers"),predecessors:Ec({})});xe(Et,{neighborhood:Ft(function(t){for(var e=[],r=this.nodes(),a=0;a<r.length;a++)for(var n=r[a],i=n.connectedEdges(),s=0;s<i.length;s++){var o=i[s],l=o.source(),u=o.target(),c=n===l?u:l;c.length>0&&e.push(c[0]),e.push(o[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});Et.neighbourhood=Et.neighborhood;Et.closedNeighbourhood=Et.closedNeighborhood;Et.openNeighbourhood=Et.openNeighborhood;xe(Et,{source:Ft(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},"source"),target:Ft(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},"target"),sources:Cc({attr:"source"}),targets:Cc({attr:"target"})});function Cc(t){return function(r){for(var a=[],n=0;n<this.length;n++){var i=this[n],s=i._private[t.attr];s&&a.push(s)}return this.spawn(a,!0).filter(r)}}xe(Et,{edgesWith:Ft(Tc(),"edgesWith"),edgesTo:Ft(Tc({thisIsSrc:!0}),"edgesTo")});function Tc(t){return function(r){var a=[],n=this._private.cy,i=t||{};me(r)&&(r=n.$(r));for(var s=0;s<r.length;s++)for(var o=r[s]._private.edges,l=0;l<o.length;l++){var u=o[l],c=u._private.data,d=this.hasElementWithId(c.source)&&r.hasElementWithId(c.target),f=r.hasElementWithId(c.source)&&this.hasElementWithId(c.target),h=d||f;h&&((i.thisIsSrc||i.thisIsTgt)&&(i.thisIsSrc&&!d||i.thisIsTgt&&!f)||a.push(u))}return this.spawn(a,!0)}}xe(Et,{connectedEdges:Ft(function(t){for(var e=[],r=this,a=0;a<r.length;a++){var n=r[a];if(n.isNode())for(var i=n._private.edges,s=0;s<i.length;s++){var o=i[s];e.push(o)}}return this.spawn(e,!0).filter(t)},"connectedEdges"),connectedNodes:Ft(function(t){for(var e=[],r=this,a=0;a<r.length;a++){var n=r[a];n.isEdge()&&(e.push(n.source()[0]),e.push(n.target()[0]))}return this.spawn(e,!0).filter(t)},"connectedNodes"),parallelEdges:Ft(Sc(),"parallelEdges"),codirectedEdges:Ft(Sc({codirected:!0}),"codirectedEdges")});function Sc(t){var e={codirected:!1};return t=xe({},e,t),function(a){for(var n=[],i=this.edges(),s=t,o=0;o<i.length;o++)for(var l=i[o],u=l._private,c=u.source,d=c._private.data.id,f=u.data.target,h=c._private.edges,v=0;v<h.length;v++){var y=h[v],p=y._private.data,g=p.target,m=p.source,b=g===f&&m===d,w=d===g&&f===m;(s.codirected&&b||!s.codirected&&(b||w))&&n.push(y)}return this.spawn(n,!0).filter(a)}}xe(Et,{components:function(e){var r=this,a=r.cy(),n=a.collection(),i=e==null?r.nodes():e.nodes(),s=[];e!=null&&i.empty()&&(i=e.sources());var o=function(c,d){n.merge(c),i.unmerge(c),d.merge(c)};if(i.empty())return r.spawn();var l=function(){var c=a.collection();s.push(c);var d=i[0];o(d,c),r.bfs({directed:!1,roots:d,visit:function(h){return o(h,c)}}),c.forEach(function(f){f.connectedEdges().forEach(function(h){r.has(h)&&c.has(h.source())&&c.has(h.target())&&c.merge(h)})})};do l();while(i.length>0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}});Et.componentsOf=Et.components;var pt=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Ye("A collection must have a reference to the core");return}var i=new or,s=!1;if(!r)r=[];else if(r.length>0&&Ne(r[0])&&!Ja(r[0])){s=!0;for(var o=[],l=new ma,u=0,c=r.length;u<c;u++){var d=r[u];d.data==null&&(d.data={});var f=d.data;if(f.id==null)f.id=Dd();else if(e.hasElementWithId(f.id)||l.has(f.id))continue;var h=new ui(e,d,!1);o.push(h),l.add(f.id)}r=o}this.length=0;for(var v=0,y=r.length;v<y;v++){var p=r[v][0];if(p!=null){var g=p._private.data.id;(!a||!i.has(g))&&(a&&i.set(g,{index:this.length,ele:p}),this[this.length]=p,this.length++)}}this._private={eles:this,cy:e,get map(){return this.lazyMap==null&&this.rebuildMap(),this.lazyMap},set map(m){this.lazyMap=m},rebuildMap:function(){for(var b=this.lazyMap=new or,w=this.eles,E=0;E<w.length;E++){var C=w[E];b.set(C.id(),{index:E,ele:C})}}},a&&(this._private.map=i),s&&!n&&this.restore()},We=ui.prototype=pt.prototype=Object.create(Array.prototype);We.instanceString=function(){return"collection"};We.spawn=function(t,e){return new pt(this.cy(),t,e)};We.spawnSelf=function(){return this.spawn(this)};We.cy=function(){return this._private.cy};We.renderer=function(){return this._private.cy.renderer()};We.element=function(){return this[0]};We.collection=function(){return pd(this)?this:new pt(this._private.cy,[this])};We.unique=function(){return new pt(this._private.cy,this,!0)};We.hasElementWithId=function(t){return t=""+t,this._private.map.has(t)};We.getElementById=function(t){t=""+t;var e=this._private.cy,r=this._private.map.get(t);return r?r.ele:new pt(e)};We.$id=We.getElementById;We.poolIndex=function(){var t=this._private.cy,e=t._private.elements,r=this[0]._private.data.id;return e._private.map.get(r).index};We.indexOf=function(t){var e=t[0]._private.data.id;return this._private.map.get(e).index};We.indexOfId=function(t){return t=""+t,this._private.map.get(t).index};We.json=function(t){var e=this.element(),r=this.cy();if(e==null&&t)return this;if(e!=null){var a=e._private;if(Ne(t)){if(r.startBatch(),t.data){e.data(t.data);var n=a.data;if(e.isEdge()){var i=!1,s={},o=t.data.source,l=t.data.target;o!=null&&o!=n.source&&(s.source=""+o,i=!0),l!=null&&l!=n.target&&(s.target=""+l,i=!0),i&&(e=e.move(s))}else{var u="parent"in t.data,c=t.data.parent;u&&(c!=null||n.parent!=null)&&c!=n.parent&&(c===void 0&&(c=null),c!=null&&(c=""+c),e=e.move({parent:c}))}}t.position&&e.position(t.position);var d=function(y,p,g){var m=t[y];m!=null&&m!==a[y]&&(m?e[p]():e[g]())};return d("removed","remove","restore"),d("selected","select","unselect"),d("selectable","selectify","unselectify"),d("locked","lock","unlock"),d("grabbable","grabify","ungrabify"),d("pannable","panify","unpanify"),t.classes!=null&&e.classes(t.classes),r.endBatch(),this}else if(t===void 0){var f={data:Jt(a.data),position:Jt(a.position),group:a.group,removed:a.removed,selected:a.selected,selectable:a.selectable,locked:a.locked,grabbable:a.grabbable,pannable:a.pannable,classes:null};f.classes="";var h=0;return a.classes.forEach(function(v){return f.classes+=h++===0?v:" "+v}),f}}};We.jsons=function(){for(var t=[],e=0;e<this.length;e++){var r=this[e],a=r.json();t.push(a)}return t};We.clone=function(){for(var t=this.cy(),e=[],r=0;r<this.length;r++){var a=this[r],n=a.json(),i=new ui(t,n,!1);e.push(i)}return new pt(t,e)};We.copy=We.clone;We.restore=function(){for(var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],s=[],o,l=0,u=r.length;l<u;l++){var c=r[l];e&&!c.removed()||(c.isNode()?i.push(c):s.push(c))}o=i.concat(s);var d,f=function(){o.splice(d,1),d--};for(d=0;d<o.length;d++){var h=o[d],v=h._private,y=v.data;if(h.clearTraversalCache(),!(!e&&!v.removed)){if(y.id===void 0)y.id=Dd();else if(se(y.id))y.id=""+y.id;else if(Sr(y.id)||!me(y.id)){Ye("Can not create element with invalid string ID `"+y.id+"`"),f();continue}else if(a.hasElementWithId(y.id)){Ye("Can not create second element with ID `"+y.id+"`"),f();continue}}var p=y.id;if(h.isNode()){var g=v.position;g.x==null&&(g.x=0),g.y==null&&(g.y=0)}if(h.isEdge()){for(var m=h,b=["source","target"],w=b.length,E=!1,C=0;C<w;C++){var x=b[C],T=y[x];se(T)&&(T=y[x]=""+y[x]),T==null||T===""?(Ye("Can not create edge `"+p+"` with unspecified "+x),E=!0):a.hasElementWithId(T)||(Ye("Can not create edge `"+p+"` with nonexistent "+x+" `"+T+"`"),E=!0)}if(E){f();continue}var k=a.getElementById(y.source),P=a.getElementById(y.target);k.same(P)?k._private.edges.push(m):(k._private.edges.push(m),P._private.edges.push(m)),m._private.source=k,m._private.target=P}v.map=new or,v.map.set(p,{ele:h,index:0}),v.removed=!1,e&&a.addToPool(h)}for(var B=0;B<i.length;B++){var D=i[B],R=D._private.data;se(R.parent)&&(R.parent=""+R.parent);var A=R.parent,M=A!=null;if(M||D._private.parent){var _=D._private.parent?a.collection().merge(D._private.parent):a.getElementById(A);if(_.empty())R.parent=void 0;else if(_[0].removed())He("Node added with missing parent, reference to parent removed"),R.parent=void 0,D._private.parent=null;else{for(var L=!1,I=_;!I.empty();){if(D.same(I)){L=!0,R.parent=void 0;break}I=I.parent()}L||(_[0]._private.children.push(D),D._private.parent=_[0],n.hasCompoundNodes=!0)}}}if(o.length>0){for(var H=o.length===r.length?r:new pt(a,o),G=0;G<H.length;G++){var O=H[G];O.isNode()||(O.parallelEdges().clearTraversalCache(),O.source().clearTraversalCache(),O.target().clearTraversalCache())}var $;n.hasCompoundNodes?$=a.collection().merge(H).merge(H.connectedNodes()).merge(H.parent()):$=H,$.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(t),t?H.emitAndNotify("add"):e&&H.emit("add")}return r};We.removed=function(){var t=this[0];return t&&t._private.removed};We.inside=function(){var t=this[0];return t&&!t._private.removed};We.remove=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function s(A){for(var M=A._private.edges,_=0;_<M.length;_++)l(M[_])}function o(A){for(var M=A._private.children,_=0;_<M.length;_++)l(M[_])}function l(A){var M=n[A.id()];e&&A.removed()||M||(n[A.id()]=!0,A.isNode()?(a.push(A),s(A),o(A)):a.unshift(A))}for(var u=0,c=r.length;u<c;u++){var d=r[u];l(d)}function f(A,M){var _=A._private.edges;kr(_,M),A.clearTraversalCache()}function h(A){A.clearTraversalCache()}var v=[];v.ids={};function y(A,M){M=M[0],A=A[0];var _=A._private.children,L=A.id();kr(_,M),M._private.parent=null,v.ids[L]||(v.ids[L]=!0,v.push(A))}r.dirtyCompoundBoundsCache(),e&&i.removeFromPool(a);for(var p=0;p<a.length;p++){var g=a[p];if(g.isEdge()){var m=g.source()[0],b=g.target()[0];f(m,g),f(b,g);for(var w=g.parallelEdges(),E=0;E<w.length;E++){var C=w[E];h(C),C.isBundledBezier()&&C.dirtyBoundingBoxCache()}}else{var x=g.parent();x.length!==0&&y(x,g)}e&&(g._private.removed=!0)}var T=i._private.elements;i._private.hasCompoundNodes=!1;for(var k=0;k<T.length;k++){var P=T[k];if(P.isParent()){i._private.hasCompoundNodes=!0;break}}var B=new pt(this.cy(),a);B.size()>0&&(t?B.emitAndNotify("remove"):e&&B.emit("remove"));for(var D=0;D<v.length;D++){var R=v[D];(!e||!R.removed())&&R.updateStyle()}return B};We.move=function(t){var e=this._private.cy,r=this,a=!1,n=!1,i=function(v){return v==null?v:""+v};if(t.source!==void 0||t.target!==void 0){var s=i(t.source),o=i(t.target),l=s!=null&&e.hasElementWithId(s),u=o!=null&&e.hasElementWithId(o);(l||u)&&(e.batch(function(){r.remove(a,n),r.emitAndNotify("moveout");for(var h=0;h<r.length;h++){var v=r[h],y=v._private.data;v.isEdge()&&(l&&(y.source=s),u&&(y.target=o))}r.restore(a,n)}),r.emitAndNotify("move"))}else if(t.parent!==void 0){var c=i(t.parent),d=c===null||e.hasElementWithId(c);if(d){var f=c===null?void 0:c;e.batch(function(){var h=r.remove(a,n);h.emitAndNotify("moveout");for(var v=0;v<r.length;v++){var y=r[v],p=y._private.data;y.isNode()&&(p.parent=f)}h.restore(a,n)}),r.emitAndNotify("move")}}return this};[qd,wy,In,Cr,ya,Oy,gi,Qy,vf,hf,am,Zn,On,ht,Tr,Et].forEach(function(t){xe(We,t)});var cm={add:function(e){var r,a=this;if(It(e)){var n=e;if(n._private.cy===a)r=n.restore();else{for(var i=[],s=0;s<n.length;s++){var o=n[s];i.push(o.json())}r=new pt(a,i)}}else if(Ue(e)){var l=e;r=new pt(a,l)}else if(Ne(e)&&(Ue(e.nodes)||Ue(e.edges))){for(var u=e,c=[],d=["nodes","edges"],f=0,h=d.length;f<h;f++){var v=d[f],y=u[v];if(Ue(y))for(var p=0,g=y.length;p<g;p++){var m=xe({group:v},y[p]);c.push(m)}}r=new pt(a,c)}else{var b=e;r=new ui(a,b).collection()}return r},remove:function(e){if(!It(e)){if(me(e)){var r=e;e=this.$(r)}}return e.remove()}};function dm(t,e,r,a){var n=4,i=.001,s=1e-7,o=10,l=11,u=1/(l-1),c=typeof Float32Array<"u";if(arguments.length!==4)return!1;for(var d=0;d<4;++d)if(typeof arguments[d]!="number"||isNaN(arguments[d])||!isFinite(arguments[d]))return!1;t=Math.min(t,1),r=Math.min(r,1),t=Math.max(t,0),r=Math.max(r,0);var f=c?new Float32Array(l):new Array(l);function h(P,B){return 1-3*B+3*P}function v(P,B){return 3*B-6*P}function y(P){return 3*P}function p(P,B,D){return((h(B,D)*P+v(B,D))*P+y(B))*P}function g(P,B,D){return 3*h(B,D)*P*P+2*v(B,D)*P+y(B)}function m(P,B){for(var D=0;D<n;++D){var R=g(B,t,r);if(R===0)return B;var A=p(B,t,r)-P;B-=A/R}return B}function b(){for(var P=0;P<l;++P)f[P]=p(P*u,t,r)}function w(P,B,D){var R,A,M=0;do A=B+(D-B)/2,R=p(A,t,r)-P,R>0?D=A:B=A;while(Math.abs(R)>s&&++M<o);return A}function E(P){for(var B=0,D=1,R=l-1;D!==R&&f[D]<=P;++D)B+=u;--D;var A=(P-f[D])/(f[D+1]-f[D]),M=B+A*u,_=g(M,t,r);return _>=i?m(P,M):_===0?M:w(P,B,B+u)}var C=!1;function x(){C=!0,(t!==e||r!==a)&&b()}var T=function(B){return C||x(),t===e&&r===a?B:B===0?0:B===1?1:p(E(B),e,a)};T.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var k="generateBezier("+[t,e,r,a]+")";return T.toString=function(){return k},T}var fm=(function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:t(s)}}function r(a,n){var i={dx:a.v,dv:t(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),l=e(a,n,o),u=1/6*(i.dx+2*(s.dx+o.dx)+l.dx),c=1/6*(i.dv+2*(s.dv+o.dv)+l.dv);return a.x=a.x+u*n,a.v=a.v+c*n,a}return function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},l=[0],u=0,c=1/1e4,d=16/1e3,f,h,v;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,f=s!==null,f?(u=a(n,i),h=u/s*d):h=d;v=r(v||o,h),l.push(1+v.x),u+=16,Math.abs(v.x)>c&&Math.abs(v.v)>c;);return f?function(y){return l[y*(l.length-1)|0]}:u}})(),Ke=function(e,r,a,n){var i=dm(e,r,a,n);return function(s,o,l){return s+(o-s)*i(l)}},Nn={linear:function(e,r,a){return e+(r-e)*a},ease:Ke(.25,.1,.25,1),"ease-in":Ke(.42,0,1,1),"ease-out":Ke(0,0,.58,1),"ease-in-out":Ke(.42,0,.58,1),"ease-in-sine":Ke(.47,0,.745,.715),"ease-out-sine":Ke(.39,.575,.565,1),"ease-in-out-sine":Ke(.445,.05,.55,.95),"ease-in-quad":Ke(.55,.085,.68,.53),"ease-out-quad":Ke(.25,.46,.45,.94),"ease-in-out-quad":Ke(.455,.03,.515,.955),"ease-in-cubic":Ke(.55,.055,.675,.19),"ease-out-cubic":Ke(.215,.61,.355,1),"ease-in-out-cubic":Ke(.645,.045,.355,1),"ease-in-quart":Ke(.895,.03,.685,.22),"ease-out-quart":Ke(.165,.84,.44,1),"ease-in-out-quart":Ke(.77,0,.175,1),"ease-in-quint":Ke(.755,.05,.855,.06),"ease-out-quint":Ke(.23,1,.32,1),"ease-in-out-quint":Ke(.86,0,.07,1),"ease-in-expo":Ke(.95,.05,.795,.035),"ease-out-expo":Ke(.19,1,.22,1),"ease-in-out-expo":Ke(1,0,0,1),"ease-in-circ":Ke(.6,.04,.98,.335),"ease-out-circ":Ke(.075,.82,.165,1),"ease-in-out-circ":Ke(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return Nn.linear;var n=fm(e,r,a);return function(i,s,o){return i+(s-i)*n(o)}},"cubic-bezier":Ke};function kc(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function Pc(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function ta(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var s=Pc(t,n),o=Pc(e,n);if(se(s)&&se(o))return kc(i,s,o,r,a);if(Ue(s)&&Ue(o)){for(var l=[],u=0;u<o.length;u++){var c=s[u],d=o[u];if(c!=null&&d!=null){var f=kc(i,c,d,r,a);l.push(f)}else l.push(d)}return l}}function vm(t,e,r,a){var n=!a,i=t._private,s=e._private,o=s.easing,l=s.startTime,u=a?t:t.cy(),c=u.style();if(!s.easingImpl)if(o==null)s.easingImpl=Nn.linear;else{var d;if(me(o)){var f=c.parse("transition-timing-function",o);d=f.value}else d=o;var h,v;me(d)?(h=d,v=[]):(h=d[1],v=d.slice(2).map(function(H){return+H})),v.length>0?(h==="spring"&&v.push(s.duration),s.easingImpl=Nn[h].apply(null,v)):s.easingImpl=Nn[h]}var y=s.easingImpl,p;if(s.duration===0?p=1:p=(r-l)/s.duration,s.applying&&(p=s.progress),p<0?p=0:p>1&&(p=1),s.delay==null){var g=s.startPosition,m=s.position;if(m&&n&&!t.locked()){var b={};Aa(g.x,m.x)&&(b.x=ta(g.x,m.x,p,y)),Aa(g.y,m.y)&&(b.y=ta(g.y,m.y,p,y)),t.position(b)}var w=s.startPan,E=s.pan,C=i.pan,x=E!=null&&a;x&&(Aa(w.x,E.x)&&(C.x=ta(w.x,E.x,p,y)),Aa(w.y,E.y)&&(C.y=ta(w.y,E.y,p,y)),t.emit("pan"));var T=s.startZoom,k=s.zoom,P=k!=null&&a;P&&(Aa(T,k)&&(i.zoom=Ua(i.minZoom,ta(T,k,p,y),i.maxZoom)),t.emit("zoom")),(x||P)&&t.emit("viewport");var B=s.style;if(B&&B.length>0&&n){for(var D=0;D<B.length;D++){var R=B[D],A=R.name,M=R,_=s.startStyle[A],L=c.properties[_.name],I=ta(_,M,p,y,L);c.overrideBypass(t,A,I)}t.emit("style")}}return s.progress=p,p}function Aa(t,e){return t==null||e==null?!1:se(t)&&se(e)?!0:!!(t&&e)}function hm(t,e,r,a){var n=e._private;n.started=!0,n.startTime=r-n.progress*n.duration}function Bc(t,e){var r=e._private.aniEles,a=[];function n(c,d){var f=c._private,h=f.animation.current,v=f.animation.queue,y=!1;if(h.length===0){var p=v.shift();p&&h.push(p)}for(var g=function(C){for(var x=C.length-1;x>=0;x--){var T=C[x];T()}C.splice(0,C.length)},m=h.length-1;m>=0;m--){var b=h[m],w=b._private;if(w.stopped){h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,g(w.frames);continue}!w.playing&&!w.applying||(w.playing&&w.applying&&(w.applying=!1),w.started||hm(c,b,t),vm(c,b,t,d),w.applying&&(w.applying=!1),g(w.frames),w.step!=null&&w.step(t),b.completed()&&(h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,g(w.completes)),y=!0)}return!d&&h.length===0&&v.length===0&&a.push(c),y}for(var i=!1,s=0;s<r.length;s++){var o=r[s],l=n(o);i=i||l}var u=n(e,!0);(i||u)&&(r.length>0?e.notify("draw",r):e.notify("draw")),r.unmerge(a),e.emit("step")}var pm={animate:Ve.animate(),animation:Ve.animation(),animated:Ve.animated(),clearQueue:Ve.clearQueue(),delay:Ve.delay(),delayAnimation:Ve.delayAnimation(),stop:Ve.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&Kn(function(i){Bc(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,s){Bc(s,e)},a.beforeRenderPriorities.animations):r()}},gm={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Ja(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}},En=function(e){return me(e)?new Br(e):e},yf={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new yi(gm,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,En(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,En(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,En(r),a),this},once:function(e,r,a){return this.emitter().one(e,En(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};Ve.eventAliasesOn(yf);var Co={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)}};Co.jpeg=Co.jpg;var zn={layout:function(e){var r=this;if(e==null){Ye("Layout options must be specified to make a layout");return}if(e.name==null){Ye("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension("layout",a);if(n==null){Ye("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;me(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();var s=new n(xe({},e,{cy:r,eles:i}));return s}};zn.createLayout=zn.makeLayout=zn.layout;var ym={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n<a.length;n++){var i=a[n],s=e[i],o=r.getElementById(i);o.data(s)}})}},mm=gt({hideEdgesOnViewport:!1,textureOnViewport:!1,motionBlur:!1,motionBlurOpacity:.05,pixelRatio:void 0,desktopTapThreshold:4,touchTapThreshold:8,wheelSensitivity:1,debug:!1,showFps:!1,webgl:!1,webglDebug:!1,webglDebugShowAtlases:!1,webglTexSize:2048,webglTexRows:36,webglTexRowsNodes:18,webglBatchSize:2048,webglTexPerBatch:14,webglBgColor:[255,255,255]}),To={renderTo:function(e,r,a,n){var i=this._private.renderer;return i.renderTo(e,r,a,n),this},renderer:function(){return this._private.renderer},forceRender:function(){return this.notify("draw"),this},resize:function(){return this.invalidateSize(),this.emitAndNotify("resize"),this},initRenderer:function(e){var r=this,a=r.extension("renderer",e.name);if(a==null){Ye("Can not initialise: No such renderer `".concat(e.name,"` found. Did you forget to import it and `cytoscape.use()` it?"));return}e.wheelSensitivity!==void 0&&He("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.");var n=mm(e);n.cy=r,r._private.renderer=new a(n),this.notify("init")},destroyRenderer:function(){var e=this;e.notify("destroy");var r=e.container();if(r)for(r._cyreg=null;r.childNodes.length>0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};To.invalidateDimensions=To.resize;var $n={collection:function(e,r){return me(e)?this.$(e):It(e)?e.collection():Ue(e)?(r||(r={}),new pt(this,e,r.unique,r.removed)):new pt(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};$n.elements=$n.filter=$n.$;var ft={},za="t",bm="f";ft.apply=function(t){for(var e=this,r=e._private,a=r.cy,n=a.collection(),i=0;i<t.length;i++){var s=t[i],o=e.getContextMeta(s);if(!o.empty){var l=e.getContextStyle(o),u=e.applyContextStyle(o,l,s);s._private.appliedInitStyle?e.updateTransitions(s,u.diffProps):s._private.appliedInitStyle=!0;var c=e.updateStyleHints(s);c&&n.push(s)}}return n};ft.getPropertiesDiff=function(t,e){var r=this,a=r._private.propDiffs=r._private.propDiffs||{},n=t+"-"+e,i=a[n];if(i)return i;for(var s=[],o={},l=0;l<r.length;l++){var u=r[l],c=t[l]===za,d=e[l]===za,f=c!==d,h=u.mappedProperties.length>0;if(f||d&&h){var v=void 0;f&&h||f?v=u.properties:h&&(v=u.mappedProperties);for(var y=0;y<v.length;y++){for(var p=v[y],g=p.name,m=!1,b=l+1;b<r.length;b++){var w=r[b],E=e[b]===za;if(E&&(m=w.properties[p.name]!=null,m))break}!o[g]&&!m&&(o[g]=!0,s.push(g))}}}return a[n]=s,s};ft.getContextMeta=function(t){for(var e=this,r="",a,n=t._private.styleCxtKey||"",i=0;i<e.length;i++){var s=e[i],o=s.selector&&s.selector.matches(t);o?r+=za:r+=bm}return a=e.getPropertiesDiff(n,r),t._private.styleCxtKey=r,{key:r,diffPropNames:a,empty:a.length===0}};ft.getContextStyle=function(t){var e=t.key,r=this,a=this._private.contextStyles=this._private.contextStyles||{};if(a[e])return a[e];for(var n={_private:{key:e}},i=0;i<r.length;i++){var s=r[i],o=e[i]===za;if(o)for(var l=0;l<s.properties.length;l++){var u=s.properties[l];n[u.name]=u}}return a[e]=n,n};ft.applyContextStyle=function(t,e,r){for(var a=this,n=t.diffPropNames,i={},s=a.types,o=0;o<n.length;o++){var l=n[o],u=e[l],c=r.pstyle(l);if(!u)if(c)c.bypass?u={name:l,deleteBypassed:!0}:u={name:l,delete:!0};else continue;if(c!==u){if(u.mapped===s.fn&&c!=null&&c.mapping!=null&&c.mapping.value===u.value){var d=c.mapping,f=d.fnValue=u.value(r);if(f===d.prevFnValue)continue}var h=i[l]={prev:c};a.applyParsedProperty(r,u),h.next=r.pstyle(l),h.next&&h.next.bypass&&(h.next=h.next.bypassed)}}return{diffProps:i}};ft.updateStyleHints=function(t){var e=t._private,r=this,a=r.propertyGroupNames,n=r.propertyGroupKeys,i=function(W,Q,ie){return r.getPropertiesHash(W,Q,ie)},s=e.styleKey;if(t.removed())return!1;var o=e.group==="nodes",l=t._private.style;a=Object.keys(l);for(var u=0;u<n.length;u++){var c=n[u];e.styleKeys[c]=[Vr,oa]}for(var d=function(W,Q){return e.styleKeys[Q][0]=Va(W,e.styleKeys[Q][0])},f=function(W,Q){return e.styleKeys[Q][1]=Ha(W,e.styleKeys[Q][1])},h=function(W,Q){d(W,Q),f(W,Q)},v=function(W,Q){for(var ie=0;ie<W.length;ie++){var ge=W.charCodeAt(ie);d(ge,Q),f(ge,Q)}},y=2e9,p=function(W){return-128<W&&W<128&&Math.floor(W)!==W?y-(W*1024|0):W},g=0;g<a.length;g++){var m=a[g],b=l[m];if(b!=null){var w=this.properties[m],E=w.type,C=w.groupKey,x=void 0;w.hashOverride!=null?x=w.hashOverride(t,b):b.pfValue!=null&&(x=b.pfValue);var T=w.enums==null?b.value:null,k=x!=null,P=T!=null,B=k||P,D=b.units;if(E.number&&B&&!E.multiple){var R=k?x:T;h(p(R),C),!k&&D!=null&&v(D,C)}else v(b.strValue,C)}}for(var A=[Vr,oa],M=0;M<n.length;M++){var _=n[M],L=e.styleKeys[_];A[0]=Va(L[0],A[0]),A[1]=Ha(L[1],A[1])}e.styleKey=Ih(A[0],A[1]);var I=e.styleKeys;e.labelDimsKey=gr(I.labelDimensions);var H=i(t,["label"],I.labelDimensions);if(e.labelKey=gr(H),e.labelStyleKey=gr(hn(I.commonLabel,H)),!o){var G=i(t,["source-label"],I.labelDimensions);e.sourceLabelKey=gr(G),e.sourceLabelStyleKey=gr(hn(I.commonLabel,G));var O=i(t,["target-label"],I.labelDimensions);e.targetLabelKey=gr(O),e.targetLabelStyleKey=gr(hn(I.commonLabel,O))}if(o){var $=e.styleKeys,Y=$.nodeBody,te=$.nodeBorder,J=$.nodeOutline,re=$.backgroundImage,ne=$.compound,oe=$.pie,ee=$.stripe,q=[Y,te,J,re,ne,oe,ee].filter(function(K){return K!=null}).reduce(hn,[Vr,oa]);e.nodeKey=gr(q),e.hasPie=oe!=null&&oe[0]!==Vr&&oe[1]!==oa,e.hasStripe=ee!=null&&ee[0]!==Vr&&ee[1]!==oa}return s!==e.styleKey};ft.clearStyleHints=function(t){var e=t._private;e.styleCxtKey="",e.styleKeys={},e.styleKey=null,e.labelKey=null,e.labelStyleKey=null,e.sourceLabelKey=null,e.sourceLabelStyleKey=null,e.targetLabelKey=null,e.targetLabelStyleKey=null,e.nodeKey=null,e.hasPie=null,e.hasStripe=null};ft.applyParsedProperty=function(t,e){var r=this,a=e,n=t._private.style,i,s=r.types,o=r.properties[a.name].type,l=a.bypass,u=n[a.name],c=u&&u.bypass,d=t._private,f="mapping",h=function(Y){return Y==null?null:Y.pfValue!=null?Y.pfValue:Y.value},v=function(){var Y=h(u),te=h(a);r.checkTriggers(t,a.name,Y,te)};if(e.name==="curve-style"&&t.isEdge()&&(e.value!=="bezier"&&t.isLoop()||e.value==="haystack"&&(t.source().isParent()||t.target().isParent()))&&(a=e=this.parse(e.name,"bezier",l)),a.delete)return n[a.name]=void 0,v(),!0;if(a.deleteBypassed)return u?u.bypass?(u.bypassed=void 0,v(),!0):!1:(v(),!0);if(a.deleteBypass)return u?u.bypass?(n[a.name]=u.bypassed,v(),!0):!1:(v(),!0);var y=function(){He("Do not assign mappings to elements without corresponding data (i.e. ele `"+t.id()+"` has no mapping for property `"+a.name+"` with data field `"+a.field+"`); try a `["+a.field+"]` selector to limit scope to elements with `"+a.field+"` defined")};switch(a.mapped){case s.mapData:{for(var p=a.field.split("."),g=d.data,m=0;m<p.length&&g;m++){var b=p[m];g=g[b]}if(g==null)return y(),!1;var w;if(se(g)){var E=a.fieldMax-a.fieldMin;E===0?w=0:w=(g-a.fieldMin)/E}else return He("Do not use continuous mappers without specifying numeric data (i.e. `"+a.field+": "+g+"` for `"+t.id()+"` is non-numeric)"),!1;if(w<0?w=0:w>1&&(w=1),o.color){var C=a.valueMin[0],x=a.valueMax[0],T=a.valueMin[1],k=a.valueMax[1],P=a.valueMin[2],B=a.valueMax[2],D=a.valueMin[3]==null?1:a.valueMin[3],R=a.valueMax[3]==null?1:a.valueMax[3],A=[Math.round(C+(x-C)*w),Math.round(T+(k-T)*w),Math.round(P+(B-P)*w),Math.round(D+(R-D)*w)];i={bypass:a.bypass,name:a.name,value:A,strValue:"rgb("+A[0]+", "+A[1]+", "+A[2]+")"}}else if(o.number){var M=a.valueMin+(a.valueMax-a.valueMin)*w;i=this.parse(a.name,M,a.bypass,f)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break}case s.data:{for(var _=a.field.split("."),L=d.data,I=0;I<_.length&&L;I++){var H=_[I];L=L[H]}if(L!=null&&(i=this.parse(a.name,L,a.bypass,f)),!i)return y(),!1;i.mapping=a,a=i;break}case s.fn:{var G=a.value,O=a.fnValue!=null?a.fnValue:G(t);if(a.prevFnValue=O,O==null)return He("Custom function mappers may not return null (i.e. `"+a.name+"` for ele `"+t.id()+"` is null)"),!1;if(i=this.parse(a.name,O,a.bypass,f),!i)return He("Custom function mappers may not return invalid values for the property type (i.e. `"+a.name+"` for ele `"+t.id()+"` is invalid)"),!1;i.mapping=Jt(a),a=i;break}case void 0:break;default:return!1}return l?(c?a.bypassed=u.bypassed:a.bypassed=u,n[a.name]=a):c?u.bypassed=a:n[a.name]=a,v(),!0};ft.cleanElements=function(t,e){for(var r=0;r<t.length;r++){var a=t[r];if(this.clearStyleHints(a),a.dirtyCompoundBoundsCache(),a.dirtyBoundingBoxCache(),!e)a._private.style={};else for(var n=a._private.style,i=Object.keys(n),s=0;s<i.length;s++){var o=i[s],l=n[o];l!=null&&(l.bypass?l.bypassed=null:n[o]=null)}}};ft.update=function(){var t=this._private.cy,e=t.mutableElements();e.updateStyle()};ft.updateTransitions=function(t,e){var r=this,a=t._private,n=t.pstyle("transition-property").value,i=t.pstyle("transition-duration").pfValue,s=t.pstyle("transition-delay").pfValue;if(n.length>0&&i>0){for(var o={},l=!1,u=0;u<n.length;u++){var c=n[u],d=t.pstyle(c),f=e[c];if(f){var h=f.prev,v=h,y=f.next!=null?f.next:d,p=!1,g=void 0,m=1e-6;v&&(se(v.pfValue)&&se(y.pfValue)?(p=y.pfValue-v.pfValue,g=v.pfValue+m*p):se(v.value)&&se(y.value)?(p=y.value-v.value,g=v.value+m*p):Ue(v.value)&&Ue(y.value)&&(p=v.value[0]!==y.value[0]||v.value[1]!==y.value[1]||v.value[2]!==y.value[2],g=v.strValue),p&&(o[c]=y.strValue,this.applyBypass(t,c,g),l=!0))}}if(!l)return;a.transitioning=!0,new ba(function(b){s>0?t.delayAnimation(s).play().promise().then(b):b()}).then(function(){return t.animation({style:o,duration:i,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1)};ft.checkTrigger=function(t,e,r,a,n,i){var s=this.properties[e],o=n(s);t.removed()||o!=null&&o(r,a,t)&&i(s)};ft.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",t)})};ft.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};ft.checkConnectedEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfConnectedEdges},function(n){t.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ft.checkParallelEdgesBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBoundsOfParallelEdges},function(n){t.parallelEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};ft.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a),this.checkConnectedEdgesBoundsTrigger(t,e,r,a),this.checkParallelEdgesBoundsTrigger(t,e,r,a)};var on={};on.applyBypass=function(t,e,r,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var o=0;o<n.properties.length;o++){var l=n.properties[o],u=l.name,c=this.parse(u,r,!0);c&&i.push(c)}}else if(me(e)){var d=this.parse(e,r,!0);d&&i.push(d)}else if(Ne(e)){var f=e;a=r;for(var h=Object.keys(f),v=0;v<h.length;v++){var y=h[v],p=f[y];if(p===void 0&&(p=f[oi(y)]),p!==void 0){var g=this.parse(y,p,!0);g&&i.push(g)}}}else return!1;if(i.length===0)return!1;for(var m=!1,b=0;b<t.length;b++){for(var w=t[b],E={},C=void 0,x=0;x<i.length;x++){var T=i[x];if(a){var k=w.pstyle(T.name);C=E[T.name]={prev:k}}m=this.applyParsedProperty(w,Jt(T))||m,a&&(C.next=w.pstyle(T.name))}m&&this.updateStyleHints(w),a&&this.updateTransitions(w,E,s)}return m};on.overrideBypass=function(t,e,r){e=Wo(e);for(var a=0;a<t.length;a++){var n=t[a],i=n._private.style[e],s=this.properties[e].type,o=s.color,l=s.mutiple,u=i?i.pfValue!=null?i.pfValue:i.value:null;!i||!i.bypass?this.applyBypass(n,e,r):(i.value=r,i.pfValue!=null&&(i.pfValue=r),o?i.strValue="rgb("+r.join(",")+")":l?i.strValue=r.join(" "):i.strValue=""+r,this.updateStyleHints(n)),this.checkTriggers(n,e,u,r)}};on.removeAllBypasses=function(t,e){return this.removeBypasses(t,this.propertyNames,e)};on.removeBypasses=function(t,e,r){for(var a=!0,n=0;n<t.length;n++){for(var i=t[n],s={},o=0;o<e.length;o++){var l=e[o],u=this.properties[l],c=i.pstyle(u.name);if(!(!c||!c.bypass)){var d="",f=this.parse(l,d,!0),h=s[u.name]={prev:c};this.applyParsedProperty(i,f),h.next=i.pstyle(u.name)}}this.updateStyleHints(i),r&&this.updateTransitions(i,s,a)}};var ll={};ll.getEmSizeInPixels=function(){var t=this.containerCss("font-size");return t!=null?parseFloat(t):1};ll.containerCss=function(t){var e=this._private.cy,r=e.container(),a=e.window();if(a&&r&&a.getComputedStyle)return a.getComputedStyle(r).getPropertyValue(t)};var er={};er.getRenderedStyle=function(t,e){return e?this.getStylePropertyValue(t,e,!0):this.getRawStyle(t,!0)};er.getRawStyle=function(t,e){var r=this;if(t=t[0],t){for(var a={},n=0;n<r.properties.length;n++){var i=r.properties[n],s=r.getStylePropertyValue(t,i.name,e);s!=null&&(a[i.name]=s,a[oi(i.name)]=s)}return a}};er.getIndexedStyle=function(t,e,r,a){var n=t.pstyle(e)[r][a];return n??t.cy().style().getDefaultProperty(e)[r][0]};er.getStylePropertyValue=function(t,e,r){var a=this;if(t=t[0],t){var n=a.properties[e];n.alias&&(n=n.pointsTo);var i=n.type,s=t.pstyle(n.name);if(s){var o=s.value,l=s.units,u=s.strValue;if(r&&i.number&&o!=null&&se(o)){var c=t.cy().zoom(),d=function(p){return p*c},f=function(p,g){return d(p)+g},h=Ue(o),v=h?l.every(function(y){return y!=null}):l!=null;return v?h?o.map(function(y,p){return f(y,l[p])}).join(" "):f(o,l):h?o.map(function(y){return me(y)?y:""+d(y)}).join(" "):""+d(o)}else if(u!=null)return u}return null}};er.getAnimationStartStyle=function(t,e){for(var r={},a=0;a<e.length;a++){var n=e[a],i=n.name,s=t.pstyle(i);s!==void 0&&(Ne(s)?s=this.parse(i,s.strValue):s=this.parse(i,s)),s&&(r[i]=s)}return r};er.getPropsList=function(t){var e=this,r=[],a=t,n=e.properties;if(a)for(var i=Object.keys(a),s=0;s<i.length;s++){var o=i[s],l=a[o],u=n[o]||n[Wo(o)],c=this.parse(u.name,l);c&&r.push(c)}return r};er.getNonDefaultPropertiesHash=function(t,e,r){var a=r.slice(),n,i,s,o,l,u;for(l=0;l<e.length;l++)if(n=e[l],i=t.pstyle(n,!1),i!=null)if(i.pfValue!=null)a[0]=Va(o,a[0]),a[1]=Ha(o,a[1]);else for(s=i.strValue,u=0;u<s.length;u++)o=s.charCodeAt(u),a[0]=Va(o,a[0]),a[1]=Ha(o,a[1]);return a};er.getPropertiesHash=er.getNonDefaultPropertiesHash;var wi={};wi.appendFromJson=function(t){for(var e=this,r=0;r<t.length;r++){var a=t[r],n=a.selector,i=a.style||a.css,s=Object.keys(i);e.selector(n);for(var o=0;o<s.length;o++){var l=s[o],u=i[l];e.css(l,u)}}return e};wi.fromJson=function(t){var e=this;return e.resetToDefault(),e.appendFromJson(t),e};wi.json=function(){for(var t=[],e=this.defaultLength;e<this.length;e++){for(var r=this[e],a=r.selector,n=r.properties,i={},s=0;s<n.length;s++){var o=n[s];i[o.name]=o.strValue}t.push({selector:a?a.toString():"core",style:i})}return t};var ul={};ul.appendFromString=function(t){var e=this,r=this,a=""+t,n,i,s;a=a.replace(/[/][*](\s|.)+?[*][/]/g,"");function o(){a.length>n.length?a=a.substr(n.length):a=""}function l(){i.length>s.length?i=i.substr(s.length):i=""}for(;;){var u=a.match(/^\s*$/);if(u)break;var c=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!c){He("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=c[0];var d=c[1];if(d!=="core"){var f=new Br(d);if(f.invalid){He("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),o();continue}}var h=c[2],v=!1;i=h;for(var y=[];;){var p=i.match(/^\s*$/);if(p)break;var g=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){He("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+h),v=!0;break}s=g[0];var m=g[1],b=g[2],w=e.properties[m];if(!w){He("Skipping property: Invalid property name in: "+s),l();continue}var E=r.parse(m,b);if(!E){He("Skipping property: Invalid property definition in: "+s),l();continue}y.push({name:m,val:b}),l()}if(v){o();break}r.selector(d);for(var C=0;C<y.length;C++){var x=y[C];r.css(x.name,x.val)}o()}return r};ul.fromString=function(t){var e=this;return e.resetToDefault(),e.appendFromString(t),e};var rt={};(function(){var t=st,e=vh,r=ph,a=gh,n=yh,i=function(K){return"^"+K+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},s=function(K){var W=t+"|\\w+|"+e+"|"+r+"|"+a+"|"+n;return"^"+K+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+t+")\\s*\\,\\s*("+t+")\\s*,\\s*("+W+")\\s*\\,\\s*("+W+")\\)$"},o=[`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`,"^(none)$","^(.+)$"];rt.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},axisDirectionExplicit:{enums:["leftward","rightward","upward","downward"]},axisDirectionPrimary:{enums:["horizontal","vertical"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},boxSelection:{enums:["contain","overlap","none"]},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},linePosition:{enums:["center","inside","outside"]},lineJoin:{enums:["round","bevel","miter"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi","round-segments","round-taxi"]},radiusType:{enums:["arc-radius","influence-radius"],multiple:!0},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle","circle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},cornerRadius:{number:!0,min:0,units:"px|em",implicitUnits:"px",enums:["auto"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:i("data")},layoutData:{mapping:!0,regex:i("layoutData")},scratch:{mapping:!0,regex:i("scratch")},mapData:{mapping:!0,regex:s("mapData")},mapLayoutData:{mapping:!0,regex:s("mapLayoutData")},mapScratch:{mapping:!0,regex:s("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:o,singleRegexMatchValue:!0},urls:{regexes:o,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:function(K,W){switch(K.length){case 2:return W[0]!=="deg"&&W[0]!=="rad"&&W[1]!=="deg"&&W[1]!=="rad";case 1:return me(K[0])||W[0]==="deg"||W[0]==="rad";default:return!1}}},easing:{regexes:["^(spring)\\s*\\(\\s*("+t+")\\s*,\\s*("+t+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+t+")\\s*,\\s*("+t+")\\s*,\\s*("+t+")\\s*,\\s*("+t+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:function(K){var W=K.length;return W===1||W===2||W===4}}};var l={zeroNonZero:function(K,W){return(K==null||W==null)&&K!==W||K==0&&W!=0?!0:K!=0&&W==0},any:function(K,W){return K!=W},emptyNonEmpty:function(K,W){var Q=Sr(K),ie=Sr(W);return Q&&!ie||!Q&&ie}},u=rt.types,c=[{name:"label",type:u.text,triggersBounds:l.any,triggersZOrder:l.emptyNonEmpty},{name:"text-rotation",type:u.textRotation,triggersBounds:l.any},{name:"text-margin-x",type:u.bidirectionalSize,triggersBounds:l.any},{name:"text-margin-y",type:u.bidirectionalSize,triggersBounds:l.any}],d=[{name:"source-label",type:u.text,triggersBounds:l.any},{name:"source-text-rotation",type:u.textRotation,triggersBounds:l.any},{name:"source-text-margin-x",type:u.bidirectionalSize,triggersBounds:l.any},{name:"source-text-margin-y",type:u.bidirectionalSize,triggersBounds:l.any},{name:"source-text-offset",type:u.size,triggersBounds:l.any}],f=[{name:"target-label",type:u.text,triggersBounds:l.any},{name:"target-text-rotation",type:u.textRotation,triggersBounds:l.any},{name:"target-text-margin-x",type:u.bidirectionalSize,triggersBounds:l.any},{name:"target-text-margin-y",type:u.bidirectionalSize,triggersBounds:l.any},{name:"target-text-offset",type:u.size,triggersBounds:l.any}],h=[{name:"font-family",type:u.fontFamily,triggersBounds:l.any},{name:"font-style",type:u.fontStyle,triggersBounds:l.any},{name:"font-weight",type:u.fontWeight,triggersBounds:l.any},{name:"font-size",type:u.size,triggersBounds:l.any},{name:"text-transform",type:u.textTransform,triggersBounds:l.any},{name:"text-wrap",type:u.textWrap,triggersBounds:l.any},{name:"text-overflow-wrap",type:u.textOverflowWrap,triggersBounds:l.any},{name:"text-max-width",type:u.size,triggersBounds:l.any},{name:"text-outline-width",type:u.size,triggersBounds:l.any},{name:"line-height",type:u.positiveNumber,triggersBounds:l.any}],v=[{name:"text-valign",type:u.valign,triggersBounds:l.any},{name:"text-halign",type:u.halign,triggersBounds:l.any},{name:"color",type:u.color},{name:"text-outline-color",type:u.color},{name:"text-outline-opacity",type:u.zeroOneNumber},{name:"text-background-color",type:u.color},{name:"text-background-opacity",type:u.zeroOneNumber},{name:"text-background-padding",type:u.size,triggersBounds:l.any},{name:"text-border-opacity",type:u.zeroOneNumber},{name:"text-border-color",type:u.color},{name:"text-border-width",type:u.size,triggersBounds:l.any},{name:"text-border-style",type:u.borderStyle,triggersBounds:l.any},{name:"text-background-shape",type:u.textBackgroundShape,triggersBounds:l.any},{name:"text-justification",type:u.justification},{name:"box-select-labels",type:u.bool,triggersBounds:l.any}],y=[{name:"events",type:u.bool,triggersZOrder:l.any},{name:"text-events",type:u.bool,triggersZOrder:l.any},{name:"box-selection",type:u.boxSelection,triggersZOrder:l.any}],p=[{name:"display",type:u.display,triggersZOrder:l.any,triggersBounds:l.any,triggersBoundsOfConnectedEdges:l.any,triggersBoundsOfParallelEdges:function(K,W,Q){return K===W?!1:Q.pstyle("curve-style").value==="bezier"}},{name:"visibility",type:u.visibility,triggersZOrder:l.any},{name:"opacity",type:u.zeroOneNumber,triggersZOrder:l.zeroNonZero},{name:"text-opacity",type:u.zeroOneNumber},{name:"min-zoomed-font-size",type:u.size},{name:"z-compound-depth",type:u.zCompoundDepth,triggersZOrder:l.any},{name:"z-index-compare",type:u.zIndexCompare,triggersZOrder:l.any},{name:"z-index",type:u.number,triggersZOrder:l.any}],g=[{name:"overlay-padding",type:u.size,triggersBounds:l.any},{name:"overlay-color",type:u.color},{name:"overlay-opacity",type:u.zeroOneNumber,triggersBounds:l.zeroNonZero},{name:"overlay-shape",type:u.overlayShape,triggersBounds:l.any},{name:"overlay-corner-radius",type:u.cornerRadius}],m=[{name:"underlay-padding",type:u.size,triggersBounds:l.any},{name:"underlay-color",type:u.color},{name:"underlay-opacity",type:u.zeroOneNumber,triggersBounds:l.zeroNonZero},{name:"underlay-shape",type:u.overlayShape,triggersBounds:l.any},{name:"underlay-corner-radius",type:u.cornerRadius}],b=[{name:"transition-property",type:u.propList},{name:"transition-duration",type:u.time},{name:"transition-delay",type:u.time},{name:"transition-timing-function",type:u.easing}],w=function(K,W){return W.value==="label"?-K.poolIndex():W.pfValue},E=[{name:"height",type:u.nodeSize,triggersBounds:l.any,hashOverride:w},{name:"width",type:u.nodeSize,triggersBounds:l.any,hashOverride:w},{name:"shape",type:u.nodeShape,triggersBounds:l.any},{name:"shape-polygon-points",type:u.polygonPointList,triggersBounds:l.any},{name:"corner-radius",type:u.cornerRadius},{name:"background-color",type:u.color},{name:"background-fill",type:u.fill},{name:"background-opacity",type:u.zeroOneNumber},{name:"background-blacken",type:u.nOneOneNumber},{name:"background-gradient-stop-colors",type:u.colors},{name:"background-gradient-stop-positions",type:u.percentages},{name:"background-gradient-direction",type:u.gradientDirection},{name:"padding",type:u.sizeMaybePercent,triggersBounds:l.any},{name:"padding-relative-to",type:u.paddingRelativeTo,triggersBounds:l.any},{name:"bounds-expansion",type:u.boundsExpansion,triggersBounds:l.any}],C=[{name:"border-color",type:u.color},{name:"border-opacity",type:u.zeroOneNumber},{name:"border-width",type:u.size,triggersBounds:l.any},{name:"border-style",type:u.borderStyle},{name:"border-cap",type:u.lineCap},{name:"border-join",type:u.lineJoin},{name:"border-dash-pattern",type:u.numbers},{name:"border-dash-offset",type:u.number},{name:"border-position",type:u.linePosition}],x=[{name:"outline-color",type:u.color},{name:"outline-opacity",type:u.zeroOneNumber},{name:"outline-width",type:u.size,triggersBounds:l.any},{name:"outline-style",type:u.borderStyle},{name:"outline-offset",type:u.size,triggersBounds:l.any}],T=[{name:"background-image",type:u.urls},{name:"background-image-crossorigin",type:u.bgCrossOrigin},{name:"background-image-opacity",type:u.zeroOneNumbers},{name:"background-image-containment",type:u.bgContainment},{name:"background-image-smoothing",type:u.bools},{name:"background-position-x",type:u.bgPos},{name:"background-position-y",type:u.bgPos},{name:"background-width-relative-to",type:u.bgRelativeTo},{name:"background-height-relative-to",type:u.bgRelativeTo},{name:"background-repeat",type:u.bgRepeat},{name:"background-fit",type:u.bgFit},{name:"background-clip",type:u.bgClip},{name:"background-width",type:u.bgWH},{name:"background-height",type:u.bgWH},{name:"background-offset-x",type:u.bgPos},{name:"background-offset-y",type:u.bgPos}],k=[{name:"position",type:u.position,triggersBounds:l.any},{name:"compound-sizing-wrt-labels",type:u.compoundIncludeLabels,triggersBounds:l.any},{name:"min-width",type:u.size,triggersBounds:l.any},{name:"min-width-bias-left",type:u.sizeMaybePercent,triggersBounds:l.any},{name:"min-width-bias-right",type:u.sizeMaybePercent,triggersBounds:l.any},{name:"min-height",type:u.size,triggersBounds:l.any},{name:"min-height-bias-top",type:u.sizeMaybePercent,triggersBounds:l.any},{name:"min-height-bias-bottom",type:u.sizeMaybePercent,triggersBounds:l.any}],P=[{name:"line-style",type:u.lineStyle},{name:"line-color",type:u.color},{name:"line-fill",type:u.fill},{name:"line-cap",type:u.lineCap},{name:"line-opacity",type:u.zeroOneNumber},{name:"line-dash-pattern",type:u.numbers},{name:"line-dash-offset",type:u.number},{name:"line-outline-width",type:u.size},{name:"line-outline-color",type:u.color},{name:"line-gradient-stop-colors",type:u.colors},{name:"line-gradient-stop-positions",type:u.percentages},{name:"curve-style",type:u.curveStyle,triggersBounds:l.any,triggersBoundsOfParallelEdges:function(K,W){return K===W?!1:K==="bezier"||W==="bezier"}},{name:"haystack-radius",type:u.zeroOneNumber,triggersBounds:l.any},{name:"source-endpoint",type:u.edgeEndpoint,triggersBounds:l.any},{name:"target-endpoint",type:u.edgeEndpoint,triggersBounds:l.any},{name:"control-point-step-size",type:u.size,triggersBounds:l.any},{name:"control-point-distances",type:u.bidirectionalSizes,triggersBounds:l.any},{name:"control-point-weights",type:u.numbers,triggersBounds:l.any},{name:"segment-distances",type:u.bidirectionalSizes,triggersBounds:l.any},{name:"segment-weights",type:u.numbers,triggersBounds:l.any},{name:"segment-radii",type:u.numbers,triggersBounds:l.any},{name:"radius-type",type:u.radiusType,triggersBounds:l.any},{name:"taxi-turn",type:u.bidirectionalSizeMaybePercent,triggersBounds:l.any},{name:"taxi-turn-min-distance",type:u.size,triggersBounds:l.any},{name:"taxi-direction",type:u.axisDirection,triggersBounds:l.any},{name:"taxi-radius",type:u.number,triggersBounds:l.any},{name:"edge-distances",type:u.edgeDistances,triggersBounds:l.any},{name:"arrow-scale",type:u.positiveNumber,triggersBounds:l.any},{name:"loop-direction",type:u.angle,triggersBounds:l.any},{name:"loop-sweep",type:u.angle,triggersBounds:l.any},{name:"source-distance-from-node",type:u.size,triggersBounds:l.any},{name:"target-distance-from-node",type:u.size,triggersBounds:l.any}],B=[{name:"ghost",type:u.bool,triggersBounds:l.any},{name:"ghost-offset-x",type:u.bidirectionalSize,triggersBounds:l.any},{name:"ghost-offset-y",type:u.bidirectionalSize,triggersBounds:l.any},{name:"ghost-opacity",type:u.zeroOneNumber}],D=[{name:"selection-box-color",type:u.color},{name:"selection-box-opacity",type:u.zeroOneNumber},{name:"selection-box-border-color",type:u.color},{name:"selection-box-border-width",type:u.size},{name:"active-bg-color",type:u.color},{name:"active-bg-opacity",type:u.zeroOneNumber},{name:"active-bg-size",type:u.size},{name:"outside-texture-bg-color",type:u.color},{name:"outside-texture-bg-opacity",type:u.zeroOneNumber}],R=[];rt.pieBackgroundN=16,R.push({name:"pie-size",type:u.sizeMaybePercent}),R.push({name:"pie-hole",type:u.sizeMaybePercent}),R.push({name:"pie-start-angle",type:u.angle});for(var A=1;A<=rt.pieBackgroundN;A++)R.push({name:"pie-"+A+"-background-color",type:u.color}),R.push({name:"pie-"+A+"-background-size",type:u.percent}),R.push({name:"pie-"+A+"-background-opacity",type:u.zeroOneNumber});var M=[];rt.stripeBackgroundN=16,M.push({name:"stripe-size",type:u.sizeMaybePercent}),M.push({name:"stripe-direction",type:u.axisDirectionPrimary});for(var _=1;_<=rt.stripeBackgroundN;_++)M.push({name:"stripe-"+_+"-background-color",type:u.color}),M.push({name:"stripe-"+_+"-background-size",type:u.percent}),M.push({name:"stripe-"+_+"-background-opacity",type:u.zeroOneNumber});var L=[],I=rt.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:u.arrowShape,triggersBounds:l.any},{name:"arrow-color",type:u.color},{name:"arrow-fill",type:u.arrowFill},{name:"arrow-width",type:u.arrowWidth}].forEach(function(q){I.forEach(function(K){var W=K+"-"+q.name,Q=q.type,ie=q.triggersBounds;L.push({name:W,type:Q,triggersBounds:ie})})},{});var H=rt.properties=[].concat(y,b,p,g,m,B,v,h,c,d,f,E,C,x,T,R,M,k,P,L,D),G=rt.propertyGroups={behavior:y,transition:b,visibility:p,overlay:g,underlay:m,ghost:B,commonLabel:v,labelDimensions:h,mainLabel:c,sourceLabel:d,targetLabel:f,nodeBody:E,nodeBorder:C,nodeOutline:x,backgroundImage:T,pie:R,stripe:M,compound:k,edgeLine:P,edgeArrow:L,core:D},O=rt.propertyGroupNames={},$=rt.propertyGroupKeys=Object.keys(G);$.forEach(function(q){O[q]=G[q].map(function(K){return K.name}),G[q].forEach(function(K){return K.groupKey=q})});var Y=rt.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"segment-distance",pointsTo:"segment-distances"},{name:"segment-weight",pointsTo:"segment-weights"},{name:"segment-radius",pointsTo:"segment-radii"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];rt.propertyNames=H.map(function(q){return q.name});for(var te=0;te<H.length;te++){var J=H[te];H[J.name]=J}for(var re=0;re<Y.length;re++){var ne=Y[re],oe=H[ne.pointsTo],ee={name:ne.name,alias:!0,pointsTo:oe};H.push(ee),H[ne.name]=ee}})();rt.getDefaultProperty=function(t){return this.getDefaultProperties()[t]};rt.getDefaultProperties=function(){var t=this._private;if(t.defaultProperties!=null)return t.defaultProperties;for(var e=xe({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":30,"outside-texture-bg-color":"#000","outside-texture-bg-opacity":.125,events:"yes","text-events":"no","text-valign":"top","text-halign":"center","text-justification":"auto","line-height":1,color:"#000","box-selection":"contain","text-outline-color":"#000","text-outline-width":0,"text-outline-opacity":1,"text-opacity":1,"text-decoration":"none","text-transform":"none","text-wrap":"none","text-overflow-wrap":"whitespace","text-max-width":9999,"text-background-color":"#000","text-background-opacity":0,"text-background-shape":"rectangle","text-background-padding":0,"text-border-opacity":0,"text-border-width":0,"text-border-style":"solid","text-border-color":"#000","font-family":"Helvetica Neue, Helvetica, sans-serif","font-style":"normal","font-weight":"normal","font-size":16,"min-zoomed-font-size":0,"text-rotation":"none","source-text-rotation":"none","target-text-rotation":"none",visibility:"visible",display:"element",opacity:1,"z-compound-depth":"auto","z-index-compare":"auto","z-index":0,label:"","text-margin-x":0,"text-margin-y":0,"source-label":"","source-text-offset":0,"source-text-margin-x":0,"source-text-margin-y":0,"target-label":"","target-text-offset":0,"target-text-margin-x":0,"target-text-margin-y":0,"overlay-opacity":0,"overlay-color":"#000","overlay-padding":10,"overlay-shape":"round-rectangle","overlay-corner-radius":"auto","underlay-opacity":0,"underlay-color":"#000","underlay-padding":10,"underlay-shape":"round-rectangle","underlay-corner-radius":"auto","transition-property":"none","transition-duration":0,"transition-delay":0,"transition-timing-function":"linear","box-select-labels":"no","background-blacken":0,"background-color":"#999","background-fill":"solid","background-opacity":1,"background-image":"none","background-image-crossorigin":"anonymous","background-image-opacity":1,"background-image-containment":"inside","background-image-smoothing":"yes","background-position-x":"50%","background-position-y":"50%","background-offset-x":0,"background-offset-y":0,"background-width-relative-to":"include-padding","background-height-relative-to":"include-padding","background-repeat":"no-repeat","background-fit":"none","background-clip":"node","background-width":"auto","background-height":"auto","border-color":"#000","border-opacity":1,"border-width":0,"border-style":"solid","border-dash-pattern":[4,2],"border-dash-offset":0,"border-cap":"butt","border-join":"miter","border-position":"center","outline-color":"#999","outline-opacity":1,"outline-width":0,"outline-offset":0,"outline-style":"solid",height:30,width:30,shape:"ellipse","shape-polygon-points":"-1, -1, 1, -1, 1, 1, -1, 1","corner-radius":"auto","bounds-expansion":0,"background-gradient-direction":"to-bottom","background-gradient-stop-colors":"#999","background-gradient-stop-positions":"0%",ghost:"no","ghost-offset-y":0,"ghost-offset-x":0,"ghost-opacity":0,padding:0,"padding-relative-to":"width",position:"origin","compound-sizing-wrt-labels":"include","min-width":0,"min-width-bias-left":0,"min-width-bias-right":0,"min-height":0,"min-height-bias-top":0,"min-height-bias-bottom":0},{"pie-size":"100%","pie-hole":0,"pie-start-angle":"0deg"},[{name:"pie-{{i}}-background-color",value:"black"},{name:"pie-{{i}}-background-size",value:"0%"},{name:"pie-{{i}}-background-opacity",value:1}].reduce(function(l,u){for(var c=1;c<=rt.pieBackgroundN;c++){var d=u.name.replace("{{i}}",c),f=u.value;l[d]=f}return l},{}),{"stripe-size":"100%","stripe-direction":"horizontal"},[{name:"stripe-{{i}}-background-color",value:"black"},{name:"stripe-{{i}}-background-size",value:"0%"},{name:"stripe-{{i}}-background-opacity",value:1}].reduce(function(l,u){for(var c=1;c<=rt.stripeBackgroundN;c++){var d=u.name.replace("{{i}}",c),f=u.value;l[d]=f}return l},{}),{"line-style":"solid","line-color":"#999","line-fill":"solid","line-cap":"butt","line-opacity":1,"line-outline-width":0,"line-outline-color":"#000","line-gradient-stop-colors":"#999","line-gradient-stop-positions":"0%","control-point-step-size":40,"control-point-weights":.5,"segment-weights":.5,"segment-distances":20,"segment-radii":15,"radius-type":"arc-radius","taxi-turn":"50%","taxi-radius":15,"taxi-turn-min-distance":10,"taxi-direction":"auto","edge-distances":"intersection","curve-style":"haystack","haystack-radius":0,"arrow-scale":1,"loop-direction":"-45deg","loop-sweep":"-90deg","source-distance-from-node":0,"target-distance-from-node":0,"source-endpoint":"outside-to-node","target-endpoint":"outside-to-node","line-dash-pattern":[6,3],"line-dash-offset":0},[{name:"arrow-shape",value:"none"},{name:"arrow-color",value:"#999"},{name:"arrow-fill",value:"filled"},{name:"arrow-width",value:1}].reduce(function(l,u){return rt.arrowPrefixes.forEach(function(c){var d=c+"-"+u.name,f=u.value;l[d]=f}),l},{})),r={},a=0;a<this.properties.length;a++){var n=this.properties[a];if(!n.pointsTo){var i=n.name,s=e[i],o=this.parse(i,s);r[i]=o}}return t.defaultProperties=r,t.defaultProperties};rt.addDefaultStylesheet=function(){this.selector(":parent").css({shape:"rectangle",padding:10,"background-color":"#eee","border-color":"#ccc","border-width":1}).selector("edge").css({width:3}).selector(":loop").css({"curve-style":"bezier"}).selector("edge:compound").css({"curve-style":"bezier","source-endpoint":"outside-to-line","target-endpoint":"outside-to-line"}).selector(":selected").css({"background-color":"#0169D9","line-color":"#0169D9","source-arrow-color":"#0169D9","target-arrow-color":"#0169D9","mid-source-arrow-color":"#0169D9","mid-target-arrow-color":"#0169D9"}).selector(":parent:selected").css({"background-color":"#CCE1F9","border-color":"#aec8e5"}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}),this.defaultLength=this.length};var xi={};xi.parse=function(t,e,r,a){var n=this;if(Ze(e))return n.parseImplWarn(t,e,r,a);var i=a==="mapping"||a===!0||a===!1||a==null?"dontcare":a,s=r?"t":"f",o=""+e,l=kd(t,o,s,i),u=n.propCache=n.propCache||[],c;return(c=u[l])||(c=u[l]=n.parseImplWarn(t,e,r,a)),(r||a==="mapping")&&(c=Jt(c),c&&(c.value=Jt(c.value))),c};xi.parseImplWarn=function(t,e,r,a){var n=this.parseImpl(t,e,r,a);return!n&&e!=null&&He("The style property `".concat(t,": ").concat(e,"` is invalid")),n&&(n.name==="width"||n.name==="height")&&e==="label"&&He("The style value of `label` is deprecated for `"+n.name+"`"),n};xi.parseImpl=function(t,e,r,a){var n=this;t=Wo(t);var i=n.properties[t],s=e,o=n.types;if(!i||e===void 0)return null;i.alias&&(i=i.pointsTo,t=i.name);var l=me(e);l&&(e=e.trim());var u=i.type;if(!u)return null;if(r&&(e===""||e===null))return{name:t,value:e,bypass:!0,deleteBypass:!0};if(Ze(e))return{name:t,value:e,strValue:"fn",mapped:o.fn,bypass:r};var c,d;if(!(!l||a||e.length<7||e[1]!=="a")){if(e.length>=7&&e[0]==="d"&&(c=new RegExp(o.data.regex).exec(e))){if(r)return!1;var f=o.data;return{name:t,value:c,strValue:""+e,mapped:f,field:c[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(o.mapData.regex).exec(e))){if(r||u.multiple)return!1;var h=o.mapData;if(!(u.color||u.number))return!1;var v=this.parse(t,d[4]);if(!v||v.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(v.pfValue===y.pfValue||v.strValue===y.strValue)return He("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+v.strValue+"`"),this.parse(t,v.strValue);if(u.color){var p=v.value,g=y.value,m=p[0]===g[0]&&p[1]===g[1]&&p[2]===g[2]&&(p[3]===g[3]||(p[3]==null||p[3]===1)&&(g[3]==null||g[3]===1));if(m)return!1}return{name:t,value:d,strValue:""+e,mapped:h,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:v.value,valueMax:y.value,bypass:r}}}if(u.multiple&&a!=="multiple"){var b;if(l?b=e.split(/\s+/):Ue(e)?b=e:b=[e],u.evenMultiple&&b.length%2!==0)return null;for(var w=[],E=[],C=[],x="",T=!1,k=0;k<b.length;k++){var P=n.parse(t,b[k],r,"multiple");T=T||me(P.value),w.push(P.value),C.push(P.pfValue!=null?P.pfValue:P.value),E.push(P.units),x+=(k>0?" ":"")+P.strValue}return u.validate&&!u.validate(w,E)?null:u.singleEnum&&T?w.length===1&&me(w[0])?{name:t,value:w[0],strValue:w[0],bypass:r}:null:{name:t,value:w,pfValue:C,strValue:x,bypass:r,units:E}}var B=function(){for(var ee=0;ee<u.enums.length;ee++){var q=u.enums[ee];if(q===e)return{name:t,value:e,strValue:""+e,bypass:r}}return null};if(u.number){var D,R="px";if(u.units&&(D=u.units),u.implicitUnits&&(R=u.implicitUnits),!u.unitless)if(l){var A="px|em"+(u.allowPercent?"|\\%":"");D&&(A=D);var M=e.match("^("+st+")("+A+")?$");M&&(e=M[1],D=M[2]||R)}else(!D||u.implicitUnits)&&(D=R);if(e=parseFloat(e),isNaN(e)&&u.enums===void 0)return null;if(isNaN(e)&&u.enums!==void 0)return e=s,B();if(u.integer&&!sh(e)||u.min!==void 0&&(e<u.min||u.strictMin&&e===u.min)||u.max!==void 0&&(e>u.max||u.strictMax&&e===u.max))return null;var _={name:t,value:e,strValue:""+e+(D||""),units:D,bypass:r};return u.unitless||D!=="px"&&D!=="em"?_.pfValue=e:_.pfValue=D==="px"||!D?e:this.getEmSizeInPixels()*e,(D==="ms"||D==="s")&&(_.pfValue=D==="ms"?e:1e3*e),(D==="deg"||D==="rad")&&(_.pfValue=D==="rad"?e:gp(e)),D==="%"&&(_.pfValue=e/100),_}else if(u.propList){var L=[],I=""+e;if(I!=="none"){for(var H=I.split(/\s*,\s*|\s+/),G=0;G<H.length;G++){var O=H[G].trim();n.properties[O]?L.push(O):He("`"+O+"` is not a valid property name")}if(L.length===0)return null}return{name:t,value:L,strValue:L.length===0?"none":L.join(" "),bypass:r}}else if(u.color){var $=bd(e);return $?{name:t,value:$,pfValue:$,strValue:"rgb("+$[0]+","+$[1]+","+$[2]+")",bypass:r}:null}else if(u.regex||u.regexes){if(u.enums){var Y=B();if(Y)return Y}for(var te=u.regexes?u.regexes:[u.regex],J=0;J<te.length;J++){var re=new RegExp(te[J]),ne=re.exec(e);if(ne)return{name:t,value:u.singleRegexMatchValue?ne[1]:ne,strValue:""+e,bypass:r}}return null}else return u.string?{name:t,value:""+e,strValue:""+e,bypass:r}:u.enums?B():null};var dt=function(e){if(!(this instanceof dt))return new dt(e);if(!Ko(e)){Ye("A style must have a core reference");return}this._private={cy:e,coreStyle:{}},this.length=0,this.resetToDefault()},Ct=dt.prototype;Ct.instanceString=function(){return"style"};Ct.clear=function(){for(var t=this._private,e=t.cy,r=e.elements(),a=0;a<this.length;a++)this[a]=void 0;return this.length=0,t.contextStyles={},t.propDiffs={},this.cleanElements(r,!0),r.forEach(function(n){var i=n[0]._private;i.styleDirty=!0,i.appliedInitStyle=!1}),this};Ct.resetToDefault=function(){return this.clear(),this.addDefaultStylesheet(),this};Ct.core=function(t){return this._private.coreStyle[t]||this.getDefaultProperty(t)};Ct.selector=function(t){var e=t==="core"?null:new Br(t),r=this.length++;return this[r]={selector:e,properties:[],mappedProperties:[],index:r},this};Ct.css=function(){var t=this,e=arguments;if(e.length===1)for(var r=e[0],a=0;a<t.properties.length;a++){var n=t.properties[a],i=r[n.name];i===void 0&&(i=r[oi(n.name)]),i!==void 0&&this.cssRule(n.name,i)}else e.length===2&&this.cssRule(e[0],e[1]);return this};Ct.style=Ct.css;Ct.cssRule=function(t,e){var r=this.parse(t,e);if(r){var a=this.length-1;this[a].properties.push(r),this[a].properties[r.name]=r,r.name.match(/pie-(\d+)-background-size/)&&r.value&&(this._private.hasPie=!0),r.name.match(/stripe-(\d+)-background-size/)&&r.value&&(this._private.hasStripe=!0),r.mapped&&this[a].mappedProperties.push(r);var n=!this[a].selector;n&&(this._private.coreStyle[r.name]=r)}return this};Ct.append=function(t){return gd(t)?t.appendToStyle(this):Ue(t)?this.appendFromJson(t):me(t)&&this.appendFromString(t),this};dt.fromJson=function(t,e){var r=new dt(t);return r.fromJson(e),r};dt.fromString=function(t,e){return new dt(t).fromString(e)};[ft,on,ll,er,wi,ul,rt,xi].forEach(function(t){xe(Ct,t)});dt.types=Ct.types;dt.properties=Ct.properties;dt.propertyGroups=Ct.propertyGroups;dt.propertyGroupNames=Ct.propertyGroupNames;dt.propertyGroupKeys=Ct.propertyGroupKeys;var wm={style:function(e){if(e){var r=this.setStyle(e);r.update()}return this._private.style},setStyle:function(e){var r=this._private;return gd(e)?r.style=e.generateStyle(this):Ue(e)?r.style=dt.fromJson(this,e):me(e)?r.style=dt.fromString(this,e):r.style=dt(this),r.style},updateStyle:function(){this.mutableElements().updateStyle()}},xm="single",jr={autolock:function(e){if(e!==void 0)this._private.autolock=!!e;else return this._private.autolock;return this},autoungrabify:function(e){if(e!==void 0)this._private.autoungrabify=!!e;else return this._private.autoungrabify;return this},autounselectify:function(e){if(e!==void 0)this._private.autounselectify=!!e;else return this._private.autounselectify;return this},selectionType:function(e){var r=this._private;if(r.selectionType==null&&(r.selectionType=xm),e!==void 0)(e==="additive"||e==="single")&&(r.selectionType=e);else return r.selectionType;return this},panningEnabled:function(e){if(e!==void 0)this._private.panningEnabled=!!e;else return this._private.panningEnabled;return this},userPanningEnabled:function(e){if(e!==void 0)this._private.userPanningEnabled=!!e;else return this._private.userPanningEnabled;return this},zoomingEnabled:function(e){if(e!==void 0)this._private.zoomingEnabled=!!e;else return this._private.zoomingEnabled;return this},userZoomingEnabled:function(e){if(e!==void 0)this._private.userZoomingEnabled=!!e;else return this._private.userZoomingEnabled;return this},boxSelectionEnabled:function(e){if(e!==void 0)this._private.boxSelectionEnabled=!!e;else return this._private.boxSelectionEnabled;return this},pan:function(){var e=arguments,r=this._private.pan,a,n,i,s,o;switch(e.length){case 0:return r;case 1:if(me(e[0]))return a=e[0],r[a];if(Ne(e[0])){if(!this._private.panningEnabled)return this;i=e[0],s=i.x,o=i.y,se(s)&&(r.x=s),se(o)&&(r.y=o),this.emit("pan viewport")}break;case 2:if(!this._private.panningEnabled)return this;a=e[0],n=e[1],(a==="x"||a==="y")&&se(n)&&(r[a]=n),this.emit("pan viewport");break}return this.notify("viewport"),this},panBy:function(e,r){var a=arguments,n=this._private.pan,i,s,o,l,u;if(!this._private.panningEnabled)return this;switch(a.length){case 1:Ne(e)&&(o=a[0],l=o.x,u=o.y,se(l)&&(n.x+=l),se(u)&&(n.y+=u),this.emit("pan viewport"));break;case 2:i=e,s=r,(i==="x"||i==="y")&&se(s)&&(n[i]+=s),this.emit("pan viewport");break}return this.notify("viewport"),this},gc:function(){this.notify("gc")},fit:function(e,r){var a=this.getFitViewport(e,r);if(a){var n=this._private;n.zoom=a.zoom,n.pan=a.pan,this.emit("pan zoom viewport"),this.notify("viewport")}return this},getFitViewport:function(e,r){if(se(e)&&r===void 0&&(r=e,e=void 0),!(!this._private.panningEnabled||!this._private.zoomingEnabled)){var a;if(me(e)){var n=e;e=this.$(n)}else if(uh(e)){var i=e;a={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},a.w=a.x2-a.x1,a.h=a.y2-a.y1}else It(e)||(e=this.mutableElements());if(!(It(e)&&e.empty())){a=a||e.boundingBox();var s=this.width(),o=this.height(),l;if(r=se(r)?r:0,!isNaN(s)&&!isNaN(o)&&s>0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){l=Math.min((s-2*r)/a.w,(o-2*r)/a.h),l=l>this._private.maxZoom?this._private.maxZoom:l,l=l<this._private.minZoom?this._private.minZoom:l;var u={x:(s-l*(a.x1+a.x2))/2,y:(o-l*(a.y1+a.y2))/2};return{zoom:l,pan:u}}}}},zoomRange:function(e,r){var a=this._private;if(r==null){var n=e;e=n.min,r=n.max}return se(e)&&se(r)&&e<=r?(a.minZoom=e,a.maxZoom=r):se(e)&&r===void 0&&e<=a.maxZoom?a.minZoom=e:se(r)&&e===void 0&&r>=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,s,o=!1;if(r.zoomingEnabled||(o=!0),se(e)?s=e:Ne(e)&&(s=e.level,e.position!=null?i=ci(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(o=!0)),s=s>r.maxZoom?r.maxZoom:s,s=s<r.minZoom?r.minZoom:s,o||!se(s)||s===n||i!=null&&(!se(i.x)||!se(i.y)))return null;if(i!=null){var l=a,u=n,c=s,d={x:-c/u*(i.x-l.x)+i.x,y:-c/u*(i.y-l.y)+i.y};return{zoomed:!0,panned:!0,zoom:c,pan:d}}else return{zoomed:!0,panned:!1,zoom:s,pan:a}},zoom:function(e){if(e===void 0)return this._private.zoom;var r=this.getZoomedViewport(e),a=this._private;return r==null||!r.zoomed?this:(a.zoom=r.zoom,r.panned&&(a.pan.x=r.pan.x,a.pan.y=r.pan.y),this.emit("zoom"+(r.panned?" pan":"")+" viewport"),this.notify("viewport"),this)},viewport:function(e){var r=this._private,a=!0,n=!0,i=[],s=!1,o=!1;if(!e)return this;if(se(e.zoom)||(a=!1),Ne(e.pan)||(n=!1),!a&&!n)return this;if(a){var l=e.zoom;l<r.minZoom||l>r.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=l,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var u=e.pan;se(u.x)&&(r.pan.x=u.x,o=!1),se(u.y)&&(r.pan.y=u.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(me(e)){var a=e;e=this.mutableElements().filter(a)}else It(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var o={x:(i-r*(n.x1+n.x2))/2,y:(s-r*(n.y1+n.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?(function(){var n=a.window().getComputedStyle(r),i=function(o){return parseFloat(n.getPropertyValue(o))};return{width:r.clientWidth-i("padding-left")-i("padding-right"),height:r.clientHeight-i("padding-top")-i("padding-bottom")}})():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};jr.centre=jr.center;jr.autolockNodes=jr.autolock;jr.autoungrabifyNodes=jr.autoungrabify;var Ya={data:Ve.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Ve.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Ve.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Ve.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Ya.attr=Ya.data;Ya.removeAttr=Ya.removeData;var Xa=function(e){var r=this;e=xe({},e);var a=e.container;a&&!Un(a)&&Un(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var s=it!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=xe({name:s?"grid":"null"},o.layout),o.renderer=xe({name:s?"canvas":"null"},o.renderer);var l=function(v,y,p){return y!==void 0?y:p!==void 0?p:v},u=this._private={container:a,ready:!1,options:o,elements:new pt(this),listeners:[],aniEles:new pt(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,o.zoomingEnabled),userZoomingEnabled:l(!0,o.userZoomingEnabled),panningEnabled:l(!0,o.panningEnabled),userPanningEnabled:l(!0,o.userPanningEnabled),boxSelectionEnabled:l(!0,o.boxSelectionEnabled),autolock:l(!1,o.autolock,o.autolockNodes),autoungrabify:l(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:l(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:se(o.zoom)?o.zoom:1,pan:{x:Ne(o.pan)&&se(o.pan.x)?o.pan.x:0,y:Ne(o.pan)&&se(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:l(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var c=function(v,y){var p=v.some(ch);if(p)return ba.all(v).then(y);y(v)};u.styleEnabled&&r.setStyle([]);var d=xe({},o,o.renderer);r.initRenderer(d);var f=function(v,y,p){r.notifications(!1);var g=r.mutableElements();g.length>0&&g.remove(),v!=null&&(Ne(v)||Ue(v))&&r.add(v),r.one("layoutready",function(b){r.notifications(!0),r.emit(b),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",p),r.emit("done")});var m=xe({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};c([o.style,o.elements],function(h){var v=h[0],y=h[1];u.styleEnabled&&r.style().append(v),f(y,function(){r.startAnimationLoop(),u.ready=!0,Ze(o.ready)&&r.on("ready",o.ready);for(var p=0;p<i.length;p++){var g=i[p];r.on("ready",g)}n&&(n.readies=[]),r.emit("ready")},o.done)})},Qn=Xa.prototype;xe(Qn,{instanceString:function(){return"core"},isReady:function(){return this._private.ready},destroyed:function(){return this._private.destroyed},ready:function(e){return this.isReady()?this.emitter().emit("ready",[],e):this.on("ready",e),this},destroy:function(){var e=this;if(!e.destroyed())return e.stopAnimationLoop(),e.destroyRenderer(),this.emit("destroy"),e._private.destroyed=!0,e},hasElementWithId:function(e){return this._private.elements.hasElementWithId(e)},getElementById:function(e){return this._private.elements.getElementById(e)},hasCompoundNodes:function(){return this._private.hasCompoundNodes},headless:function(){return this._private.renderer.isHeadless()},styleEnabled:function(){return this._private.styleEnabled},addToPool:function(e){return this._private.elements.merge(e),this},removeFromPool:function(e){return this._private.elements.unmerge(e),this},container:function(){return this._private.container||null},window:function(){var e=this._private.container;if(e==null)return it;var r=this._private.container.ownerDocument;return r===void 0||r==null?it:r.defaultView||it},mount:function(e){if(e!=null){var r=this,a=r._private,n=a.options;return!Un(e)&&Un(e[0])&&(e=e[0]),r.stopAnimationLoop(),r.destroyRenderer(),a.container=e,a.styleEnabled=!0,r.invalidateSize(),r.initRenderer(xe({},n,n.renderer,{name:n.renderer.name==="null"?"canvas":n.renderer.name})),r.startAnimationLoop(),r.style(n.style),r.emit("mount"),r}},unmount:function(){var e=this;return e.stopAnimationLoop(),e.destroyRenderer(),e.initRenderer({name:"null"}),e.emit("unmount"),e},options:function(){return Jt(this._private.options)},json:function(e){var r=this,a=r._private,n=r.mutableElements(),i=function(w){return r.getElementById(w.id())};if(Ne(e)){if(r.startBatch(),e.elements){var s={},o=function(w,E){for(var C=[],x=[],T=0;T<w.length;T++){var k=w[T];if(!k.data.id){He("cy.json() cannot handle elements without an ID attribute");continue}var P=""+k.data.id,B=r.getElementById(P);s[P]=!0,B.length!==0?x.push({ele:B,json:k}):(E&&(k.group=E),C.push(k))}r.add(C);for(var D=0;D<x.length;D++){var R=x[D],A=R.ele,M=R.json;A.json(M)}};if(Ue(e.elements))o(e.elements);else for(var l=["nodes","edges"],u=0;u<l.length;u++){var c=l[u],d=e.elements[c];Ue(d)&&o(d,c)}var f=r.collection();n.filter(function(b){return!s[b.id()]}).forEach(function(b){b.isParent()?f.merge(b):b.remove()}),f.forEach(function(b){return b.children().move({parent:null})}),f.forEach(function(b){return i(b).remove()})}e.style&&r.style(e.style),e.zoom!=null&&e.zoom!==a.zoom&&r.zoom(e.zoom),e.pan&&(e.pan.x!==a.pan.x||e.pan.y!==a.pan.y)&&r.pan(e.pan),e.data&&r.data(e.data);for(var h=["minZoom","maxZoom","zoomingEnabled","userZoomingEnabled","panningEnabled","userPanningEnabled","boxSelectionEnabled","autolock","autoungrabify","autounselectify","multiClickDebounceTime"],v=0;v<h.length;v++){var y=h[v];e[y]!=null&&r[y](e[y])}return r.endBatch(),this}else{var p=!!e,g={};p?g.elements=this.elements().map(function(b){return b.json()}):(g.elements={},n.forEach(function(b){var w=b.group();g.elements[w]||(g.elements[w]=[]),g.elements[w].push(b.json())})),this._private.styleEnabled&&(g.style=r.style().json()),g.data=Jt(r.data());var m=a.options;return g.zoomingEnabled=a.zoomingEnabled,g.userZoomingEnabled=a.userZoomingEnabled,g.zoom=a.zoom,g.minZoom=a.minZoom,g.maxZoom=a.maxZoom,g.panningEnabled=a.panningEnabled,g.userPanningEnabled=a.userPanningEnabled,g.pan=Jt(a.pan),g.boxSelectionEnabled=a.boxSelectionEnabled,g.renderer=Jt(m.renderer),g.hideEdgesOnViewport=m.hideEdgesOnViewport,g.textureOnViewport=m.textureOnViewport,g.wheelSensitivity=m.wheelSensitivity,g.motionBlur=m.motionBlur,g.multiClickDebounceTime=m.multiClickDebounceTime,g}}});Qn.$id=Qn.getElementById;[cm,pm,yf,Co,zn,ym,To,$n,wm,jr,Ya].forEach(function(t){xe(Qn,t)});var Em={fit:!0,directed:!1,direction:"downward",padding:30,circle:!1,grid:!1,spacingFactor:1.75,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,roots:void 0,depthSort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}},Cm={maximal:!1,acyclic:!1},ra=function(e){return e.scratch("breadthfirst")},Dc=function(e,r){return e.scratch("breadthfirst",r)};function mf(t){this.options=xe({},Em,Cm,t)}mf.prototype.run=function(){var t=this.options,e=t.cy,r=t.eles,a=r.nodes().filter(function(be){return be.isChildless()}),n=r,i=t.directed,s=t.acyclic||t.maximal||t.maximalAdjustments>0,o=!!t.boundingBox,l=kt(o?t.boundingBox:structuredClone(e.extent())),u;if(It(t.roots))u=t.roots;else if(Ue(t.roots)){for(var c=[],d=0;d<t.roots.length;d++){var f=t.roots[d],h=e.getElementById(f);c.push(h)}u=e.collection(c)}else if(me(t.roots))u=e.$(t.roots);else if(i)u=a.roots();else{var v=r.components();u=e.collection();for(var y=function(){var ce=v[p],ye=ce.maxDegree(!1),pe=ce.filter(function(Se){return Se.degree(!1)===ye});u=u.add(pe)},p=0;p<v.length;p++)y()}var g=[],m={},b=function(ce,ye){g[ye]==null&&(g[ye]=[]);var pe=g[ye].length;g[ye].push(ce),Dc(ce,{index:pe,depth:ye})},w=function(ce,ye){var pe=ra(ce),Se=pe.depth,Ce=pe.index;g[Se][Ce]=null,ce.isChildless()&&b(ce,ye)};n.bfs({roots:u,directed:t.directed,visit:function(ce,ye,pe,Se,Ce){var De=ce[0],Le=De.id();De.isChildless()&&b(De,Ce),m[Le]=!0}});for(var E=[],C=0;C<a.length;C++){var x=a[C];m[x.id()]||E.push(x)}var T=function(ce){for(var ye=g[ce],pe=0;pe<ye.length;pe++){var Se=ye[pe];if(Se==null){ye.splice(pe,1),pe--;continue}Dc(Se,{depth:ce,index:pe})}},k=function(ce,ye){for(var pe=ra(ce),Se=ce.incomers().filter(function(Z){return Z.isNode()&&r.has(Z)}),Ce=-1,De=ce.id(),Le=0;Le<Se.length;Le++){var qe=Se[Le],ze=ra(qe);Ce=Math.max(Ce,ze.depth)}if(pe.depth<=Ce){if(!t.acyclic&&ye[De])return null;var Ie=Ce+1;return w(ce,Ie),ye[De]=Ie,!0}return!1};if(i&&s){var P=[],B={},D=function(ce){return P.push(ce)},R=function(){return P.shift()};for(a.forEach(function(be){return P.push(be)});P.length>0;){var A=R(),M=k(A,B);if(M)A.outgoers().filter(function(be){return be.isNode()&&r.has(be)}).forEach(D);else if(M===null){He("Detected double maximal shift for node `"+A.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var _=0;if(t.avoidOverlap)for(var L=0;L<a.length;L++){var I=a[L],H=I.layoutDimensions(t),G=H.w,O=H.h;_=Math.max(_,G,O)}var $={},Y=function(ce){if($[ce.id()])return $[ce.id()];for(var ye=ra(ce).depth,pe=ce.neighborhood(),Se=0,Ce=0,De=0;De<pe.length;De++){var Le=pe[De];if(!(Le.isEdge()||Le.isParent()||!a.has(Le))){var qe=ra(Le);if(qe!=null){var ze=qe.index,Ie=qe.depth;if(!(ze==null||Ie==null)){var Z=g[Ie].length;Ie<ye&&(Se+=ze/Z,Ce++)}}}}return Ce=Math.max(1,Ce),Se=Se/Ce,Ce===0&&(Se=0),$[ce.id()]=Se,Se},te=function(ce,ye){var pe=Y(ce),Se=Y(ye),Ce=pe-Se;return Ce===0?md(ce.id(),ye.id()):Ce};t.depthSort!==void 0&&(te=t.depthSort);for(var J=g.length,re=0;re<J;re++)g[re].sort(te),T(re);for(var ne=[],oe=0;oe<E.length;oe++)ne.push(E[oe]);var ee=function(){for(var ce=0;ce<J;ce++)T(ce)};ne.length&&(g.unshift(ne),J=g.length,ee());for(var q=0,K=0;K<J;K++)q=Math.max(g[K].length,q);var W={x:l.x1+l.w/2,y:l.y1+l.h/2},Q=a.reduce(function(be,ce){return(function(ye){return{w:be.w===-1?ye.w:(be.w+ye.w)/2,h:be.h===-1?ye.h:(be.h+ye.h)/2}})(ce.boundingBox({includeLabels:t.nodeDimensionsIncludeLabels}))},{w:-1,h:-1}),ie=Math.max(J===1?0:o?(l.h-t.padding*2-Q.h)/(J-1):(l.h-t.padding*2-Q.h)/(J+1),_),ge=g.reduce(function(be,ce){return Math.max(be,ce.length)},0),Me=function(ce){var ye=ra(ce),pe=ye.depth,Se=ye.index;if(t.circle){var Ce=Math.min(l.w/2/J,l.h/2/J);Ce=Math.max(Ce,_);var De=Ce*pe+Ce-(J>0&&g[0].length<=3?Ce/2:0),Le=2*Math.PI/g[pe].length*Se;return pe===0&&g[0].length===1&&(De=1),{x:W.x+De*Math.cos(Le),y:W.y+De*Math.sin(Le)}}else{var qe=g[pe].length,ze=Math.max(qe===1?0:o?(l.w-t.padding*2-Q.w)/((t.grid?ge:qe)-1):(l.w-t.padding*2-Q.w)/((t.grid?ge:qe)+1),_),Ie={x:W.x+(Se+1-(qe+1)/2)*ze,y:W.y+(pe+1-(J+1)/2)*ie};return Ie}},Te={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Te).indexOf(t.direction)===-1&&Ye("Invalid direction '".concat(t.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Te).join(", ")));var Ee=function(ce){return $h(Me(ce),l,Te[t.direction])};return r.nodes().layoutPositions(this,t,Ee),this};var Tm={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function bf(t){this.options=xe({},Tm,t)}bf.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=kt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,u=l/Math.max(1,i.length-1),c,d=0,f=0;f<i.length;f++){var h=i[f],v=h.layoutDimensions(e),y=v.w,p=v.h;d=Math.max(d,y,p)}if(se(e.radius)?c=e.radius:i.length<=1?c=0:c=Math.min(s.h,s.w)/2-d,i.length>1&&e.avoidOverlap){d*=1.75;var g=Math.cos(u)-Math.cos(0),m=Math.sin(u)-Math.sin(0),b=Math.sqrt(d*d/(g*g+m*m));c=Math.max(b,c)}var w=function(C,x){var T=e.startAngle+x*u*(n?1:-1),k=c*Math.cos(T),P=c*Math.sin(T),B={x:o.x+k,y:o.y+P};return B};return a.nodes().layoutPositions(this,e,w),this};var Sm={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function wf(t){this.options=xe({},Sm,t)}wf.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(":parent"),s=kt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=[],u=0,c=0;c<i.length;c++){var d=i[c],f=void 0;f=e.concentric(d),l.push({value:f,node:d}),d._private.scratch.concentric=f}i.updateStyle();for(var h=0;h<i.length;h++){var v=i[h],y=v.layoutDimensions(e);u=Math.max(u,y.w,y.h)}l.sort(function(ie,ge){return ge.value-ie.value});for(var p=e.levelWidth(i),g=[[]],m=g[0],b=0;b<l.length;b++){var w=l[b];if(m.length>0){var E=Math.abs(m[0].value-w.value);E>=p&&(m=[],g.push(m))}m.push(w)}var C=u+e.minNodeSpacing;if(!e.avoidOverlap){var x=g.length>0&&g[0].length>1,T=Math.min(s.w,s.h)/2-C,k=T/(g.length+x?1:0);C=Math.min(C,k)}for(var P=0,B=0;B<g.length;B++){var D=g[B],R=e.sweep===void 0?2*Math.PI-2*Math.PI/D.length:e.sweep,A=D.dTheta=R/Math.max(1,D.length-1);if(D.length>1&&e.avoidOverlap){var M=Math.cos(A)-Math.cos(0),_=Math.sin(A)-Math.sin(0),L=Math.sqrt(C*C/(M*M+_*_));P=Math.max(L,P)}D.r=P,P+=C}if(e.equidistant){for(var I=0,H=0,G=0;G<g.length;G++){var O=g[G],$=O.r-H;I=Math.max(I,$)}H=0;for(var Y=0;Y<g.length;Y++){var te=g[Y];Y===0&&(H=te.r),te.r=H,H+=I}}for(var J={},re=0;re<g.length;re++)for(var ne=g[re],oe=ne.dTheta,ee=ne.r,q=0;q<ne.length;q++){var K=ne[q],W=e.startAngle+(r?1:-1)*oe*q,Q={x:o.x+ee*Math.cos(W),y:o.y+ee*Math.sin(W)};J[K.node.id()]=Q}return n.nodes().layoutPositions(this,e,function(ie){var ge=ie.id();return J[ge]}),this};var Qs,km={ready:function(){},stop:function(){},animate:!0,animationEasing:void 0,animationDuration:void 0,animateFilter:function(e,r){return!0},animationThreshold:250,refresh:20,fit:!0,padding:30,boundingBox:void 0,nodeDimensionsIncludeLabels:!1,randomize:!1,componentSpacing:40,nodeRepulsion:function(e){return 2048},nodeOverlap:4,idealEdgeLength:function(e){return 32},edgeElasticity:function(e){return 32},nestingFactor:1.2,gravity:1,numIter:1e3,initialTemp:1e3,coolingFactor:.99,minTemp:1};function Ei(t){this.options=xe({},km,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),a=r.filter(function(n){var i=n.source().data("id"),s=n.target().data("id"),o=e.some(function(u){return u.data("id")===i}),l=e.some(function(u){return u.data("id")===s});return!o||!l});this.options.eles=this.options.eles.not(a)}Ei.prototype.run=function(){var t=this.options,e=t.cy,r=this;r.stopped=!1,(t.animate===!0||t.animate===!1)&&r.emit({type:"layoutstart",layout:r}),t.debug===!0?Qs=!0:Qs=!1;var a=Pm(e,r,t);Qs&&Dm(a),t.randomize&&Rm(a);var n=cr(),i=function(){Am(a,e,t),t.fit===!0&&e.fit(t.padding)},s=function(f){return!(r.stopped||f>=t.numIter||(Lm(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature<t.minTemp))},o=function(){if(t.animate===!0||t.animate===!1)i(),r.one("layoutstop",t.stop),r.emit({type:"layoutstop",layout:r});else{var f=t.eles.nodes(),h=Ef(a,t,f);f.layoutPositions(r,t,h)}},l=0,u=!0;if(t.animate===!0){var c=function(){for(var f=0;u&&f<t.refresh;)u=s(l),l++,f++;if(!u)Ac(a,t),o();else{var h=cr();h-n>=t.animationThreshold&&i(),Kn(c)}};c()}else{for(;u;)u=s(l),l++;Ac(a,t),o()}return this};Ei.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};Ei.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Pm=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=kt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},l=a.eles.components(),u={},c=0;c<l.length;c++)for(var d=l[c],f=0;f<d.length;f++){var h=d[f];u[h.id()]=c}for(var c=0;c<o.nodeSize;c++){var v=i[c],y=v.layoutDimensions(a),p={};p.isLocked=v.locked(),p.id=v.data("id"),p.parentId=v.data("parent"),p.cmptId=u[v.id()],p.children=[],p.positionX=v.position("x"),p.positionY=v.position("y"),p.offsetX=0,p.offsetY=0,p.height=y.w,p.width=y.h,p.maxX=p.positionX+p.width/2,p.minX=p.positionX-p.width/2,p.maxY=p.positionY+p.height/2,p.minY=p.positionY-p.height/2,p.padLeft=parseFloat(v.style("padding")),p.padRight=parseFloat(v.style("padding")),p.padTop=parseFloat(v.style("padding")),p.padBottom=parseFloat(v.style("padding")),p.nodeRepulsion=Ze(a.nodeRepulsion)?a.nodeRepulsion(v):a.nodeRepulsion,o.layoutNodes.push(p),o.idToIndex[p.id]=c}for(var g=[],m=0,b=-1,w=[],c=0;c<o.nodeSize;c++){var v=o.layoutNodes[c],E=v.parentId;E!=null?o.layoutNodes[o.idToIndex[E]].children.push(v.id):(g[++b]=v.id,w.push(v.id))}for(o.graphSet.push(w);m<=b;){var C=g[m++],x=o.idToIndex[C],h=o.layoutNodes[x],T=h.children;if(T.length>0){o.graphSet.push(T);for(var c=0;c<T.length;c++)g[++b]=T[c]}}for(var c=0;c<o.graphSet.length;c++)for(var k=o.graphSet[c],f=0;f<k.length;f++){var P=o.idToIndex[k[f]];o.indexToGraph[P]=c}for(var c=0;c<o.edgeSize;c++){var B=n[c],D={};D.id=B.data("id"),D.sourceId=B.data("source"),D.targetId=B.data("target");var R=Ze(a.idealEdgeLength)?a.idealEdgeLength(B):a.idealEdgeLength,A=Ze(a.edgeElasticity)?a.edgeElasticity(B):a.edgeElasticity,M=o.idToIndex[D.sourceId],_=o.idToIndex[D.targetId],L=o.indexToGraph[M],I=o.indexToGraph[_];if(L!=I){for(var H=Bm(D.sourceId,D.targetId,o),G=o.graphSet[H],O=0,p=o.layoutNodes[M];G.indexOf(p.id)===-1;)p=o.layoutNodes[o.idToIndex[p.parentId]],O++;for(p=o.layoutNodes[_];G.indexOf(p.id)===-1;)p=o.layoutNodes[o.idToIndex[p.parentId]],O++;R*=O*a.nestingFactor}D.idealLength=R,D.elasticity=A,o.layoutEdges.push(D)}return o},Bm=function(e,r,a){var n=xf(e,r,0,a);return 2>n.count?0:n.graph},xf=function(e,r,a,n){var i=n.graphSet[a];if(-1<i.indexOf(e)&&-1<i.indexOf(r))return{count:2,graph:a};for(var s=0,o=0;o<i.length;o++){var l=i[o],u=n.idToIndex[l],c=n.layoutNodes[u].children;if(c.length!==0){var d=n.indexToGraph[n.idToIndex[c[0]]],f=xf(e,r,d,n);if(f.count!==0)if(f.count===1){if(s++,s===2)break}else return f}}return{count:s,graph:a}},Dm,Rm=function(e,r){for(var a=e.clientWidth,n=e.clientHeight,i=0;i<e.nodeSize;i++){var s=e.layoutNodes[i];s.children.length===0&&!s.isLocked&&(s.positionX=Math.random()*a,s.positionY=Math.random()*n)}},Ef=function(e,r,a){var n=e.boundingBox,i={x1:1/0,x2:-1/0,y1:1/0,y2:-1/0};return r.boundingBox&&(a.forEach(function(s){var o=e.layoutNodes[e.idToIndex[s.data("id")]];i.x1=Math.min(i.x1,o.positionX),i.x2=Math.max(i.x2,o.positionX),i.y1=Math.min(i.y1,o.positionY),i.y2=Math.max(i.y2,o.positionY)}),i.w=i.x2-i.x1,i.h=i.y2-i.y1),function(s,o){var l=e.layoutNodes[e.idToIndex[s.data("id")]];if(r.boundingBox){var u=i.w===0?.5:(l.positionX-i.x1)/i.w,c=i.h===0?.5:(l.positionY-i.y1)/i.h;return{x:n.x1+u*n.w,y:n.y1+c*n.h}}else return{x:l.positionX,y:l.positionY}}},Am=function(e,r,a){var n=a.layout,i=a.eles.nodes(),s=Ef(e,a,i);i.positions(s),e.ready!==!0&&(e.ready=!0,n.one("layoutready",a.ready),n.emit({type:"layoutready",layout:this}))},Lm=function(e,r,a){Mm(e,r),Om(e),Nm(e,r),zm(e),$m(e)},Mm=function(e,r){for(var a=0;a<e.graphSet.length;a++)for(var n=e.graphSet[a],i=n.length,s=0;s<i;s++)for(var o=e.layoutNodes[e.idToIndex[n[s]]],l=s+1;l<i;l++){var u=e.layoutNodes[e.idToIndex[n[l]]];_m(o,u,e,r)}},Rc=function(e){return-1+2*e*Math.random()},_m=function(e,r,a,n){var i=e.cmptId,s=r.cmptId;if(!(i!==s&&!a.isCompound)){var o=r.positionX-e.positionX,l=r.positionY-e.positionY,u=1;o===0&&l===0&&(o=Rc(u),l=Rc(u));var c=Im(e,r,o,l);if(c>0)var d=n.nodeOverlap*c,f=Math.sqrt(o*o+l*l),h=d*o/f,v=d*l/f;else var y=Jn(e,o,l),p=Jn(r,-1*o,-1*l),g=p.x-y.x,m=p.y-y.y,b=g*g+m*m,f=Math.sqrt(b),d=(e.nodeRepulsion+r.nodeRepulsion)/b,h=d*g/f,v=d*m/f;e.isLocked||(e.offsetX-=h,e.offsetY-=v),r.isLocked||(r.offsetX+=h,r.offsetY+=v)}},Im=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},Jn=function(e,r,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,l=a/r,u=s/o,c={};return r===0&&0<a||r===0&&0>a?(c.x=n,c.y=i+s/2,c):0<r&&-1*u<=l&&l<=u?(c.x=n+o/2,c.y=i+o*a/2/r,c):0>r&&-1*u<=l&&l<=u?(c.x=n-o/2,c.y=i-o*a/2/r,c):0<a&&(l<=-1*u||l>=u)?(c.x=n+s*r/2/a,c.y=i+s/2,c):(0>a&&(l<=-1*u||l>=u)&&(c.x=n-s*r/2/a,c.y=i-s/2),c)},Om=function(e,r){for(var a=0;a<e.edgeSize;a++){var n=e.layoutEdges[a],i=e.idToIndex[n.sourceId],s=e.layoutNodes[i],o=e.idToIndex[n.targetId],l=e.layoutNodes[o],u=l.positionX-s.positionX,c=l.positionY-s.positionY;if(!(u===0&&c===0)){var d=Jn(s,u,c),f=Jn(l,-1*u,-1*c),h=f.x-d.x,v=f.y-d.y,y=Math.sqrt(h*h+v*v),p=Math.pow(n.idealLength-y,2)/n.elasticity;if(y!==0)var g=p*h/y,m=p*v/y;else var g=0,m=0;s.isLocked||(s.offsetX+=g,s.offsetY+=m),l.isLocked||(l.offsetX-=g,l.offsetY-=m)}}},Nm=function(e,r){if(r.gravity!==0)for(var a=1,n=0;n<e.graphSet.length;n++){var i=e.graphSet[n],s=i.length;if(n===0)var o=e.clientHeight/2,l=e.clientWidth/2;else var u=e.layoutNodes[e.idToIndex[i[0]]],c=e.layoutNodes[e.idToIndex[u.parentId]],o=c.positionX,l=c.positionY;for(var d=0;d<s;d++){var f=e.layoutNodes[e.idToIndex[i[d]]];if(!f.isLocked){var h=o-f.positionX,v=l-f.positionY,y=Math.sqrt(h*h+v*v);if(y>a){var p=r.gravity*h/y,g=r.gravity*v/y;f.offsetX+=p,f.offsetY+=g}}}}},zm=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],l=e.layoutNodes[o],u=l.children;if(0<u.length&&!l.isLocked){for(var c=l.offsetX,d=l.offsetY,f=0;f<u.length;f++){var h=e.layoutNodes[e.idToIndex[u[f]]];h.offsetX+=c,h.offsetY+=d,a[++i]=u[f]}l.offsetX=0,l.offsetY=0}}},$m=function(e,r){for(var a=0;a<e.nodeSize;a++){var n=e.layoutNodes[a];0<n.children.length&&(n.maxX=void 0,n.minX=void 0,n.maxY=void 0,n.minY=void 0)}for(var a=0;a<e.nodeSize;a++){var n=e.layoutNodes[a];if(!(0<n.children.length||n.isLocked)){var i=Fm(n.offsetX,n.offsetY,e.temperature);n.positionX+=i.x,n.positionY+=i.y,n.offsetX=0,n.offsetY=0,n.minX=n.positionX-n.width,n.maxX=n.positionX+n.width,n.minY=n.positionY-n.height,n.maxY=n.positionY+n.height,Cf(n,e)}}for(var a=0;a<e.nodeSize;a++){var n=e.layoutNodes[a];0<n.children.length&&!n.isLocked&&(n.positionX=(n.maxX+n.minX)/2,n.positionY=(n.maxY+n.minY)/2,n.width=n.maxX-n.minX,n.height=n.maxY-n.minY)}},Fm=function(e,r,a){var n=Math.sqrt(e*e+r*r);if(n>a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i},Cf=function(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeft<n.minX)&&(n.minX=e.minX-n.padLeft,i=!0),(n.maxY==null||e.maxY+n.padBottom>n.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTop<n.minY)&&(n.minY=e.minY-n.padTop,i=!0),i)return Cf(n,r)}},Ac=function(e,r){for(var a=e.layoutNodes,n=[],i=0;i<a.length;i++){var s=a[i],o=s.cmptId,l=n[o]=n[o]||[];l.push(s)}for(var u=0,i=0;i<n.length;i++){var c=n[i];if(c){c.x1=1/0,c.x2=-1/0,c.y1=1/0,c.y2=-1/0;for(var d=0;d<c.length;d++){var f=c[d];c.x1=Math.min(c.x1,f.positionX-f.width/2),c.x2=Math.max(c.x2,f.positionX+f.width/2),c.y1=Math.min(c.y1,f.positionY-f.height/2),c.y2=Math.max(c.y2,f.positionY+f.height/2)}c.w=c.x2-c.x1,c.h=c.y2-c.y1,u+=c.w*c.h}}n.sort(function(m,b){return b.w*b.h-m.w*m.h});for(var h=0,v=0,y=0,p=0,g=Math.sqrt(u)*e.clientWidth/e.clientHeight,i=0;i<n.length;i++){var c=n[i];if(c){for(var d=0;d<c.length;d++){var f=c[d];f.isLocked||(f.positionX+=h-c.x1,f.positionY+=v-c.y1)}h+=c.w+r.componentSpacing,y+=c.w+r.componentSpacing,p=Math.max(p,c.h),y>g&&(v+=p+r.componentSpacing,h=0,y=0,p=0)}}},qm={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Tf(t){this.options=xe({},qm,t)}Tf.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=kt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(Y){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),l=Math.round(o),u=Math.round(i.w/i.h*o),c=function(te){if(te==null)return Math.min(l,u);var J=Math.min(l,u);J==l?l=te:u=te},d=function(te){if(te==null)return Math.max(l,u);var J=Math.max(l,u);J==l?l=te:u=te},f=e.rows,h=e.cols!=null?e.cols:e.columns;if(f!=null&&h!=null)l=f,u=h;else if(f!=null&&h==null)l=f,u=Math.ceil(s/l);else if(f==null&&h!=null)u=h,l=Math.ceil(s/u);else if(u*l>s){var v=c(),y=d();(v-1)*y>=s?c(v-1):(y-1)*v>=s&&d(y-1)}else for(;u*l<s;){var p=c(),g=d();(g+1)*p>=s?d(g+1):c(p+1)}var m=i.w/u,b=i.h/l;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var w=0;w<n.length;w++){var E=n[w],C=E._private.position;(C.x==null||C.y==null)&&(C.x=0,C.y=0);var x=E.layoutDimensions(e),T=e.avoidOverlapPadding,k=x.w+T,P=x.h+T;m=Math.max(m,k),b=Math.max(b,P)}for(var B={},D=function(te,J){return!!B["c-"+te+"-"+J]},R=function(te,J){B["c-"+te+"-"+J]=!0},A=0,M=0,_=function(){M++,M>=u&&(M=0,A++)},L={},I=0;I<n.length;I++){var H=n[I],G=e.position(H);if(G&&(G.row!==void 0||G.col!==void 0)){var O={row:G.row,col:G.col};if(O.col===void 0)for(O.col=0;D(O.row,O.col);)O.col++;else if(O.row===void 0)for(O.row=0;D(O.row,O.col);)O.row++;L[H.id()]=O,R(O.row,O.col)}}var $=function(te,J){var re,ne;if(te.locked()||te.isParent())return!1;var oe=L[te.id()];if(oe)re=oe.col*m+m/2+i.x1,ne=oe.row*b+b/2+i.y1;else{for(;D(A,M);)_();re=M*m+m/2+i.x1,ne=A*b+b/2+i.y1,R(A,M),_()}return{x:re,y:ne}};n.layoutPositions(this,e,$)}return this};var Vm={ready:function(){},stop:function(){}};function cl(t){this.options=xe({},Vm,t)}cl.prototype.run=function(){var t=this.options,e=t.eles,r=this;return t.cy,r.emit("layoutstart"),e.nodes().positions(function(){return{x:0,y:0}}),r.one("layoutready",t.ready),r.emit("layoutready"),r.one("layoutstop",t.stop),r.emit("layoutstop"),this};cl.prototype.stop=function(){return this};var Hm={positions:void 0,zoom:void 0,pan:void 0,fit:!0,padding:30,spacingFactor:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Sf(t){this.options=xe({},Hm,t)}Sf.prototype.run=function(){var t=this.options,e=t.eles,r=e.nodes(),a=Ze(t.positions);function n(i){if(t.positions==null)return dp(i.position());if(a)return t.positions(i);var s=t.positions[i._private.data.id];return s??null}return r.layoutPositions(this,t,function(i,s){var o=n(i);return i.locked()||o==null?!1:o}),this};var Gm={fit:!0,padding:30,boundingBox:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function kf(t){this.options=xe({},Gm,t)}kf.prototype.run=function(){var t=this.options,e=t.cy,r=t.eles,a=kt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),n=function(s,o){return{x:a.x1+Math.round(Math.random()*a.w),y:a.y1+Math.round(Math.random()*a.h)}};return r.nodes().layoutPositions(this,t,n),this};var Um=[{name:"breadthfirst",impl:mf},{name:"circle",impl:bf},{name:"concentric",impl:wf},{name:"cose",impl:Ei},{name:"grid",impl:Tf},{name:"null",impl:cl},{name:"preset",impl:Sf},{name:"random",impl:kf}];function Pf(t){this.options=t,this.notifications=0}var Lc=function(){},Mc=function(){throw new Error("A headless instance can not render images")};Pf.prototype={recalculateRenderedStyle:Lc,notify:function(){this.notifications++},init:Lc,isHeadless:function(){return!0},png:Mc,jpg:Mc};var dl={};dl.arrowShapeWidth=.3;dl.registerArrowShapes=function(){var t=this.arrowShapes={},e=this,r=function(u,c,d,f,h,v,y){var p=h.x-d/2-y,g=h.x+d/2+y,m=h.y-d/2-y,b=h.y+d/2+y,w=p<=u&&u<=g&&m<=c&&c<=b;return w},a=function(u,c,d,f,h){var v=u*Math.cos(f)-c*Math.sin(f),y=u*Math.sin(f)+c*Math.cos(f),p=v*d,g=y*d,m=p+h.x,b=g+h.y;return{x:m,y:b}},n=function(u,c,d,f){for(var h=[],v=0;v<u.length;v+=2){var y=u[v],p=u[v+1];h.push(a(y,p,c,d,f))}return h},i=function(u){for(var c=[],d=0;d<u.length;d++){var f=u[d];c.push(f.x,f.y)}return c},s=function(u){return u.pstyle("width").pfValue*u.pstyle("arrow-scale").pfValue*2},o=function(u,c){me(c)&&(c=t[c]),t[u]=xe({name:u,points:[-.15,-.3,.15,-.3,.15,.3,-.15,.3],collide:function(f,h,v,y,p,g){var m=i(n(this.points,v+2*g,y,p)),b=At(f,h,m);return b},roughCollide:r,draw:function(f,h,v,y){var p=n(this.points,h,v,y);e.arrowShapeImpl("polygon")(f,p)},spacing:function(f){return 0},gap:s},c)};o("none",{collide:Wn,roughCollide:Wn,draw:Xo,spacing:Wl,gap:Wl}),o("triangle",{points:[-.15,-.3,0,0,.15,-.3]}),o("arrow","triangle"),o("triangle-backcurve",{points:t.triangle.points,controlPoint:[0,-.15],roughCollide:r,draw:function(u,c,d,f,h){var v=n(this.points,c,d,f),y=this.controlPoint,p=a(y[0],y[1],c,d,f);e.arrowShapeImpl(this.name)(u,v,p)},gap:function(u){return s(u)*.8}}),o("triangle-tee",{points:[0,0,.15,-.3,-.15,-.3,0,0],pointsTee:[-.15,-.4,-.15,-.5,.15,-.5,.15,-.4],collide:function(u,c,d,f,h,v,y){var p=i(n(this.points,d+2*y,f,h)),g=i(n(this.pointsTee,d+2*y,f,h)),m=At(u,c,p)||At(u,c,g);return m},draw:function(u,c,d,f,h){var v=n(this.points,c,d,f),y=n(this.pointsTee,c,d,f);e.arrowShapeImpl(this.name)(u,v,y)}}),o("circle-triangle",{radius:.15,pointsTr:[0,-.15,.15,-.45,-.15,-.45,0,-.15],collide:function(u,c,d,f,h,v,y){var p=h,g=Math.pow(p.x-u,2)+Math.pow(p.y-c,2)<=Math.pow((d+2*y)*this.radius,2),m=i(n(this.points,d+2*y,f,h));return At(u,c,m)||g},draw:function(u,c,d,f,h){var v=n(this.pointsTr,c,d,f);e.arrowShapeImpl(this.name)(u,v,f.x,f.y,this.radius*c)},spacing:function(u){return e.getArrowWidth(u.pstyle("width").pfValue,u.pstyle("arrow-scale").value)*this.radius}}),o("triangle-cross",{points:[0,0,.15,-.3,-.15,-.3,0,0],baseCrossLinePts:[-.15,-.4,-.15,-.4,.15,-.4,.15,-.4],crossLinePts:function(u,c){var d=this.baseCrossLinePts.slice(),f=c/u,h=3,v=5;return d[h]=d[h]-f,d[v]=d[v]-f,d},collide:function(u,c,d,f,h,v,y){var p=i(n(this.points,d+2*y,f,h)),g=i(n(this.crossLinePts(d,v),d+2*y,f,h)),m=At(u,c,p)||At(u,c,g);return m},draw:function(u,c,d,f,h){var v=n(this.points,c,d,f),y=n(this.crossLinePts(c,h),c,d,f);e.arrowShapeImpl(this.name)(u,v,y)}}),o("vee",{points:[-.15,-.3,0,0,.15,-.3,0,-.15],gap:function(u){return s(u)*.525}}),o("circle",{radius:.15,collide:function(u,c,d,f,h,v,y){var p=h,g=Math.pow(p.x-u,2)+Math.pow(p.y-c,2)<=Math.pow((d+2*y)*this.radius,2);return g},draw:function(u,c,d,f,h){e.arrowShapeImpl(this.name)(u,f.x,f.y,this.radius*c)},spacing:function(u){return e.getArrowWidth(u.pstyle("width").pfValue,u.pstyle("arrow-scale").value)*this.radius}}),o("tee",{points:[-.15,0,-.15,-.1,.15,-.1,.15,0],spacing:function(u){return 1},gap:function(u){return 1}}),o("square",{points:[-.15,0,.15,0,.15,-.3,-.15,-.3]}),o("diamond",{points:[-.15,-.15,0,-.3,.15,-.15,0,0],gap:function(u){return u.pstyle("width").pfValue*u.pstyle("arrow-scale").value}}),o("chevron",{points:[0,0,-.15,-.15,-.1,-.2,0,-.1,.1,-.2,.15,-.15],gap:function(u){return .95*u.pstyle("width").pfValue*u.pstyle("arrow-scale").value}})};var Zr={};Zr.projectIntoViewport=function(t,e){var r=this.cy,a=this.findContainerClientCoords(),n=a[0],i=a[1],s=a[4],o=r.pan(),l=r.zoom(),u=((t-n)/s-o.x)/l,c=((e-i)/s-o.y)/l;return[u,c]};Zr.findContainerClientCoords=function(){if(this.containerBB)return this.containerBB;var t=this.container,e=t.getBoundingClientRect(),r=this.cy.window().getComputedStyle(t),a=function(g){return parseFloat(r.getPropertyValue(g))},n={left:a("padding-left"),right:a("padding-right"),top:a("padding-top"),bottom:a("padding-bottom")},i={left:a("border-left-width"),right:a("border-right-width"),top:a("border-top-width"),bottom:a("border-bottom-width")},s=t.clientWidth,o=t.clientHeight,l=n.left+n.right,u=n.top+n.bottom,c=i.left+i.right,d=e.width/(s+c),f=s-l,h=o-u,v=e.left+n.left+i.left,y=e.top+n.top+i.top;return this.containerBB=[v,y,f,h,d]};Zr.invalidateContainerClientCoordsCache=function(){this.containerBB=null};Zr.findNearestElement=function(t,e,r,a){return this.findNearestElements(t,e,r,a)[0]};Zr.findNearestElements=function(t,e,r,a){var n=this,i=this,s=i.getCachedZSortedEles(),o=[],l=i.cy.zoom(),u=i.cy.hasCompoundNodes(),c=(a?24:8)/l,d=(a?8:2)/l,f=(a?8:2)/l,h=1/0,v,y;r&&(s=s.interactive);function p(x,T){if(x.isNode()){if(y)return;y=x,o.push(x)}if(x.isEdge()&&(T==null||T<h))if(v){if(v.pstyle("z-compound-depth").value===x.pstyle("z-compound-depth").value&&v.pstyle("z-compound-depth").value===x.pstyle("z-compound-depth").value){for(var k=0;k<o.length;k++)if(o[k].isEdge()){o[k]=x,v=x,h=T??h;break}}}else o.push(x),v=x,h=T??h}function g(x){var T=x.outerWidth()+2*d,k=x.outerHeight()+2*d,P=T/2,B=k/2,D=x.position(),R=x.pstyle("corner-radius").value==="auto"?"auto":x.pstyle("corner-radius").pfValue,A=x._private.rscratch;if(D.x-P<=t&&t<=D.x+P&&D.y-B<=e&&e<=D.y+B){var M=i.nodeShapes[n.getNodeShape(x)];if(M.checkPoint(t,e,0,T,k,D.x,D.y,R,A))return p(x,0),!0}}function m(x){var T=x._private,k=T.rscratch,P=x.pstyle("width").pfValue,B=x.pstyle("arrow-scale").value,D=P/2+c,R=D*D,A=D*2,I=T.source,H=T.target,M;if(k.edgeType==="segments"||k.edgeType==="straight"||k.edgeType==="haystack"){for(var _=k.allpts,L=0;L+3<_.length;L+=2)if(Sp(t,e,_[L],_[L+1],_[L+2],_[L+3],A)&&R>(M=Rp(t,e,_[L],_[L+1],_[L+2],_[L+3])))return p(x,M),!0}else if(k.edgeType==="bezier"||k.edgeType==="multibezier"||k.edgeType==="self"||k.edgeType==="compound"){for(var _=k.allpts,L=0;L+5<k.allpts.length;L+=4)if(kp(t,e,_[L],_[L+1],_[L+2],_[L+3],_[L+4],_[L+5],A)&&R>(M=Dp(t,e,_[L],_[L+1],_[L+2],_[L+3],_[L+4],_[L+5])))return p(x,M),!0}for(var I=I||T.source,H=H||T.target,G=n.getArrowWidth(P,B),O=[{name:"source",x:k.arrowStartX,y:k.arrowStartY,angle:k.srcArrowAngle},{name:"target",x:k.arrowEndX,y:k.arrowEndY,angle:k.tgtArrowAngle},{name:"mid-source",x:k.midX,y:k.midY,angle:k.midsrcArrowAngle},{name:"mid-target",x:k.midX,y:k.midY,angle:k.midtgtArrowAngle}],L=0;L<O.length;L++){var $=O[L],Y=i.arrowShapes[x.pstyle($.name+"-arrow-shape").value],te=x.pstyle("width").pfValue;if(Y.roughCollide(t,e,G,$.angle,{x:$.x,y:$.y},te,c)&&Y.collide(t,e,G,$.angle,{x:$.x,y:$.y},te,c))return p(x),!0}u&&o.length>0&&(g(I),g(H))}function b(x,T,k){return Rt(x,T,k)}function w(x,T){var k=x._private,P=f,B;T?B=T+"-":B="",x.boundingBox();var D=k.labelBounds[T||"main"],R=x.pstyle(B+"label").value,A=x.pstyle("text-events").strValue==="yes";if(!(!A||!R)){var M=b(k.rscratch,"labelX",T),_=b(k.rscratch,"labelY",T),L=b(k.rscratch,"labelAngle",T),I=x.pstyle(B+"text-margin-x").pfValue,H=x.pstyle(B+"text-margin-y").pfValue,G=D.x1-P-I,O=D.x2+P-I,$=D.y1-P-H,Y=D.y2+P-H;if(L){var te=Math.cos(L),J=Math.sin(L),re=function(Q,ie){return Q=Q-M,ie=ie-_,{x:Q*te-ie*J+M,y:Q*J+ie*te+_}},ne=re(G,$),oe=re(G,Y),ee=re(O,$),q=re(O,Y),K=[ne.x+I,ne.y+H,ee.x+I,ee.y+H,q.x+I,q.y+H,oe.x+I,oe.y+H];if(At(t,e,K))return p(x),!0}else if(wr(D,t,e))return p(x),!0}}for(var E=s.length-1;E>=0;E--){var C=s[E];C.isNode()?g(C)||w(C):m(C)||w(C)||w(C,"source")||w(C,"target")}return o};Zr.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,i=this.cy.zoom(),s=2/i,o=[],l=Math.min(t,r),u=Math.max(t,r),c=Math.min(e,a),d=Math.max(e,a);t=l,r=u,e=c,a=d;var f=kt({x1:t,y1:e,x2:r,y2:a}),h=[{x:f.x1,y:f.y1},{x:f.x2,y:f.y1},{x:f.x2,y:f.y2},{x:f.x1,y:f.y2}],v=[[h[0],h[1]],[h[1],h[2]],[h[2],h[3]],[h[3],h[0]]];function y(Q,ie,ge){return Rt(Q,ie,ge)}function p(Q,ie){var ge=Q._private,Me=s,Te="";Q.boundingBox();var Ee=ge.labelBounds.main;if(!Ee)return null;var be=y(ge.rscratch,"labelX",ie),ce=y(ge.rscratch,"labelY",ie),ye=y(ge.rscratch,"labelAngle",ie),pe=Q.pstyle(Te+"text-margin-x").pfValue,Se=Q.pstyle(Te+"text-margin-y").pfValue,Ce=Ee.x1-Me-pe,De=Ee.x2+Me-pe,Le=Ee.y1-Me-Se,qe=Ee.y2+Me-Se;if(ye){var ze=Math.cos(ye),Ie=Math.sin(ye),Z=function(N,U){return N=N-be,U=U-ce,{x:N*ze-U*Ie+be,y:N*Ie+U*ze+ce}};return[Z(Ce,Le),Z(De,Le),Z(De,qe),Z(Ce,qe)]}else return[{x:Ce,y:Le},{x:De,y:Le},{x:De,y:qe},{x:Ce,y:qe}]}function g(Q,ie,ge,Me){function Te(Ee,be,ce){return(ce.y-Ee.y)*(be.x-Ee.x)>(be.y-Ee.y)*(ce.x-Ee.x)}return Te(Q,ge,Me)!==Te(ie,ge,Me)&&Te(Q,ie,ge)!==Te(Q,ie,Me)}for(var m=0;m<n.length;m++){var b=n[m];if(b.isNode()){var w=b,E=w.pstyle("text-events").strValue==="yes",C=w.pstyle("box-selection").strValue,x=w.pstyle("box-select-labels").strValue==="yes";if(C==="none")continue;var T=(C==="overlap"||x)&&E,k=w.boundingBox({includeNodes:!0,includeEdges:!1,includeLabels:T});if(C==="contain"){var P=!1;if(x&&E){var B=p(w);B&&Xi(B,h)&&(o.push(w),P=!0)}!P&&Md(f,k)&&o.push(w)}else if(C==="overlap"&&el(f,k)){var D=w.boundingBox({includeNodes:!0,includeEdges:!0,includeLabels:!1,includeMainLabels:!1,includeSourceLabels:!1,includeTargetLabels:!1}),R=[{x:D.x1,y:D.y1},{x:D.x2,y:D.y1},{x:D.x2,y:D.y2},{x:D.x1,y:D.y2}];if(Xi(R,h))o.push(w);else{var A=p(w);A&&Xi(A,h)&&o.push(w)}}}else{var M=b,_=M._private,L=_.rscratch,I=M.pstyle("box-selection").strValue;if(I==="none")continue;if(I==="contain"){if(L.startX!=null&&L.startY!=null&&!wr(f,L.startX,L.startY)||L.endX!=null&&L.endY!=null&&!wr(f,L.endX,L.endY))continue;if(L.edgeType==="bezier"||L.edgeType==="multibezier"||L.edgeType==="self"||L.edgeType==="compound"||L.edgeType==="segments"||L.edgeType==="haystack"){for(var H=_.rstyle.bezierPts||_.rstyle.linePts||_.rstyle.haystackPts,G=!0,O=0;O<H.length;O++)if(!Ql(f,H[O])){G=!1;break}G&&o.push(M)}else L.edgeType==="straight"&&o.push(M)}else if(I==="overlap"){var $=!1;if(L.startX!=null&&L.startY!=null&&L.endX!=null&&L.endY!=null&&(wr(f,L.startX,L.startY)||wr(f,L.endX,L.endY)))o.push(M),$=!0;else if(!$&&L.edgeType==="haystack"){for(var Y=_.rstyle.haystackPts,te=0;te<Y.length;te++)if(Ql(f,Y[te])){o.push(M),$=!0;break}}if(!$){var J=_.rstyle.bezierPts||_.rstyle.linePts||_.rstyle.haystackPts;if((!J||J.length<2)&&L.edgeType==="straight"&&L.startX!=null&&L.startY!=null&&L.endX!=null&&L.endY!=null&&(J=[{x:L.startX,y:L.startY},{x:L.endX,y:L.endY}]),!J||J.length<2)continue;for(var re=0;re<J.length-1;re++){for(var ne=J[re],oe=J[re+1],ee=0;ee<v.length;ee++){var q=at(v[ee],2),K=q[0],W=q[1];if(g(ne,oe,K,W)){o.push(M),$=!0;break}}if($)break}}}}}return o};var ei={};ei.calculateArrowAngles=function(t){var e=t._private.rscratch,r=e.edgeType==="haystack",a=e.edgeType==="bezier",n=e.edgeType==="multibezier",i=e.edgeType==="segments",s=e.edgeType==="compound",o=e.edgeType==="self",l,u,c,d,f,h,g,m;if(r?(c=e.haystackPts[0],d=e.haystackPts[1],f=e.haystackPts[2],h=e.haystackPts[3]):(c=e.arrowStartX,d=e.arrowStartY,f=e.arrowEndX,h=e.arrowEndY),g=e.midX,m=e.midY,i)l=c-e.segpts[0],u=d-e.segpts[1];else if(n||s||o||a){var v=e.allpts,y=ct(v[0],v[2],v[4],.1),p=ct(v[1],v[3],v[5],.1);l=c-y,u=d-p}else l=c-g,u=d-m;e.srcArrowAngle=pn(l,u);var g=e.midX,m=e.midY;if(r&&(g=(c+f)/2,m=(d+h)/2),l=f-c,u=h-d,i){var v=e.allpts;if(v.length/2%2===0){var b=v.length/2,w=b-2;l=v[b]-v[w],u=v[b+1]-v[w+1]}else if(e.isRound)l=e.midVector[1],u=-e.midVector[0];else{var b=v.length/2-1,w=b-2;l=v[b]-v[w],u=v[b+1]-v[w+1]}}else if(n||s||o){var v=e.allpts,E=e.ctrlpts,C,x,T,k;if(E.length/2%2===0){var P=v.length/2-1,B=P+2,D=B+2;C=ct(v[P],v[B],v[D],0),x=ct(v[P+1],v[B+1],v[D+1],0),T=ct(v[P],v[B],v[D],1e-4),k=ct(v[P+1],v[B+1],v[D+1],1e-4)}else{var B=v.length/2-1,P=B-2,D=B+2;C=ct(v[P],v[B],v[D],.4999),x=ct(v[P+1],v[B+1],v[D+1],.4999),T=ct(v[P],v[B],v[D],.5),k=ct(v[P+1],v[B+1],v[D+1],.5)}l=T-C,u=k-x}if(e.midtgtArrowAngle=pn(l,u),e.midDispX=l,e.midDispY=u,l*=-1,u*=-1,i){var v=e.allpts;if(v.length/2%2!==0){if(!e.isRound){var b=v.length/2-1,R=b+2;l=-(v[R]-v[b]),u=-(v[R+1]-v[b+1])}}}if(e.midsrcArrowAngle=pn(l,u),i)l=f-e.segpts[e.segpts.length-2],u=h-e.segpts[e.segpts.length-1];else if(n||s||o||a){var v=e.allpts,A=v.length,y=ct(v[A-6],v[A-4],v[A-2],.9),p=ct(v[A-5],v[A-3],v[A-1],.9);l=f-y,u=h-p}else l=f-g,u=h-m;e.tgtArrowAngle=pn(l,u)};ei.getArrowWidth=ei.getArrowHeight=function(t,e){var r=this.arrowWidthCache=this.arrowWidthCache||{},a=r[t+", "+e];return a||(a=Math.max(Math.pow(t*13.37,.9),29)*e,r[t+", "+e]=a,a)};var So,ko,Zt={},zt={},_c,Ic,Hr,Fn,nr,Nr,Fr,Yt,aa,Cn,Bf,Df,Po,Bo,Oc,Nc=function(e,r,a){a.x=r.x-e.x,a.y=r.y-e.y,a.len=Math.sqrt(a.x*a.x+a.y*a.y),a.nx=a.x/a.len,a.ny=a.y/a.len,a.ang=Math.atan2(a.ny,a.nx)},Km=function(e,r){r.x=e.x*-1,r.y=e.y*-1,r.nx=e.nx*-1,r.ny=e.ny*-1,r.ang=e.ang>0?-(Math.PI-e.ang):Math.PI+e.ang},Wm=function(e,r,a,n,i){if(e!==Oc?Nc(r,e,Zt):Km(zt,Zt),Nc(r,a,zt),_c=Zt.nx*zt.ny-Zt.ny*zt.nx,Ic=Zt.nx*zt.nx-Zt.ny*-zt.ny,nr=Math.asin(Math.max(-1,Math.min(1,_c))),Math.abs(nr)<1e-6){So=r.x,ko=r.y,Fr=aa=0;return}Hr=1,Fn=!1,Ic<0?nr<0?nr=Math.PI+nr:(nr=Math.PI-nr,Hr=-1,Fn=!0):nr>0&&(Hr=-1,Fn=!0),r.radius!==void 0?aa=r.radius:aa=n,Nr=nr/2,Cn=Math.min(Zt.len/2,zt.len/2),i?(Yt=Math.abs(Math.cos(Nr)*aa/Math.sin(Nr)),Yt>Cn?(Yt=Cn,Fr=Math.abs(Yt*Math.sin(Nr)/Math.cos(Nr))):Fr=aa):(Yt=Math.min(Cn,aa),Fr=Math.abs(Yt*Math.sin(Nr)/Math.cos(Nr))),Po=r.x+zt.nx*Yt,Bo=r.y+zt.ny*Yt,So=Po-zt.ny*Fr*Hr,ko=Bo+zt.nx*Fr*Hr,Bf=r.x+Zt.nx*Yt,Df=r.y+Zt.ny*Yt,Oc=r};function Rf(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function fl(t,e,r,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return a===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Wm(t,e,r,a,n),{cx:So,cy:ko,radius:Fr,startX:Bf,startY:Df,stopX:Po,stopY:Bo,startAngle:Zt.ang+Math.PI/2*Hr,endAngle:zt.ang-Math.PI/2*Hr,counterClockwise:Fn})}var Za=.01,jm=Math.sqrt(2*Za),Tt={};Tt.findMidptPtsEtc=function(t,e){var r=e.posPts,a=e.intersectionPts,n=e.vectorNormInverse,i,s=t.pstyle("source-endpoint"),o=t.pstyle("target-endpoint"),l=s.units!=null&&o.units!=null,u=function(E,C,x,T){var k=T-C,P=x-E,B=Math.sqrt(P*P+k*k);return{x:-k/B,y:P/B}},c=t.pstyle("edge-distances").value;switch(c){case"node-position":i=r;break;case"intersection":i=a;break;case"endpoints":{if(l){var d=this.manualEndptToPx(t.source()[0],s),f=at(d,2),h=f[0],v=f[1],y=this.manualEndptToPx(t.target()[0],o),p=at(y,2),g=p[0],m=p[1],b={x1:h,y1:v,x2:g,y2:m};n=u(h,v,g,m),i=b}else He("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),i=a;break}}return{midptPts:i,vectorNormInverse:n}};Tt.findHaystackPoints=function(t){for(var e=0;e<t.length;e++){var r=t[e],a=r._private,n=a.rscratch;if(!n.haystack){var i=Math.random()*2*Math.PI;n.source={x:Math.cos(i),y:Math.sin(i)},i=Math.random()*2*Math.PI,n.target={x:Math.cos(i),y:Math.sin(i)}}var s=a.source,o=a.target,l=s.position(),u=o.position(),c=s.width(),d=o.width(),f=s.height(),h=o.height(),v=r.pstyle("haystack-radius").value,y=v/2;n.haystackPts=n.allpts=[n.source.x*c*y+l.x,n.source.y*f*y+l.y,n.target.x*d*y+u.x,n.target.y*h*y+u.y],n.midX=(n.allpts[0]+n.allpts[2])/2,n.midY=(n.allpts[1]+n.allpts[3])/2,n.edgeType="haystack",n.haystack=!0,this.storeEdgeProjections(r),this.calculateArrowAngles(r),this.recalculateEdgeLabelProjections(r),this.calculateLabelAngles(r)}};Tt.findSegmentsPoints=function(t,e){var r=t._private.rscratch,a=t.pstyle("segment-weights"),n=t.pstyle("segment-distances"),i=t.pstyle("segment-radii"),s=t.pstyle("radius-type"),o=Math.min(a.pfValue.length,n.pfValue.length),l=i.pfValue[i.pfValue.length-1],u=s.pfValue[s.pfValue.length-1];r.edgeType="segments",r.segpts=[],r.radii=[],r.isArcRadius=[];for(var c=0;c<o;c++){var d=a.pfValue[c],f=n.pfValue[c],h=1-d,v=d,y=this.findMidptPtsEtc(t,e),p=y.midptPts,g=y.vectorNormInverse,m={x:p.x1*h+p.x2*v,y:p.y1*h+p.y2*v};r.segpts.push(m.x+g.x*f,m.y+g.y*f),r.radii.push(i.pfValue[c]!==void 0?i.pfValue[c]:l),r.isArcRadius.push((s.pfValue[c]!==void 0?s.pfValue[c]:u)==="arc-radius")}};Tt.findLoopPoints=function(t,e,r,a){var n=t._private.rscratch,i=e.dirCounts,s=e.srcPos,o=t.pstyle("control-point-distances"),l=o?o.pfValue[0]:void 0,u=t.pstyle("loop-direction").pfValue,c=t.pstyle("loop-sweep").pfValue,d=t.pstyle("control-point-step-size").pfValue;n.edgeType="self";var f=r,h=d;a&&(f=0,h=l);var v=u-Math.PI/2,y=v-c/2,p=v+c/2,g=u+"_"+c;f=i[g]===void 0?i[g]=0:++i[g],n.ctrlpts=[s.x+Math.cos(y)*1.4*h*(f/3+1),s.y+Math.sin(y)*1.4*h*(f/3+1),s.x+Math.cos(p)*1.4*h*(f/3+1),s.y+Math.sin(p)*1.4*h*(f/3+1)]};Tt.findCompoundLoopPoints=function(t,e,r,a){var n=t._private.rscratch;n.edgeType="compound";var i=e.srcPos,s=e.tgtPos,o=e.srcW,l=e.srcH,u=e.tgtW,c=e.tgtH,d=t.pstyle("control-point-step-size").pfValue,f=t.pstyle("control-point-distances"),h=f?f.pfValue[0]:void 0,v=r,y=d;a&&(v=0,y=h);var p=50,g={x:i.x-o/2,y:i.y-l/2},m={x:s.x-u/2,y:s.y-c/2},b={x:Math.min(g.x,m.x),y:Math.min(g.y,m.y)},w=.5,E=Math.max(w,Math.log(o*Za)),C=Math.max(w,Math.log(u*Za));n.ctrlpts=[b.x,b.y-(1+Math.pow(p,1.12)/100)*y*(v/3+1)*E,b.x-(1+Math.pow(p,1.12)/100)*y*(v/3+1)*C,b.y]};Tt.findStraightEdgePoints=function(t){t._private.rscratch.edgeType="straight"};Tt.findBezierPoints=function(t,e,r,a,n){var i=t._private.rscratch,s=t.pstyle("control-point-step-size").pfValue,o=t.pstyle("control-point-distances"),l=t.pstyle("control-point-weights"),u=o&&l?Math.min(o.value.length,l.value.length):1,c=o?o.pfValue[0]:void 0,d=l.value[0],f=a;i.edgeType=f?"multibezier":"bezier",i.ctrlpts=[];for(var h=0;h<u;h++){var v=(.5-e.eles.length/2+r)*s*(n?-1:1),y=void 0,p=Jo(v);f&&(c=o?o.pfValue[h]:s,d=l.value[h]),a?y=c:y=c!==void 0?p*c:void 0;var g=y!==void 0?y:v,m=1-d,b=d,w=this.findMidptPtsEtc(t,e),E=w.midptPts,C=w.vectorNormInverse,x={x:E.x1*m+E.x2*b,y:E.y1*m+E.y2*b};i.ctrlpts.push(x.x+C.x*g,x.y+C.y*g)}};Tt.findTaxiPoints=function(t,e){var r=t._private.rscratch;r.edgeType="segments";var a="vertical",n="horizontal",i="leftward",s="rightward",o="downward",l="upward",u="auto",c=e.posPts,d=e.srcW,f=e.srcH,h=e.tgtW,v=e.tgtH,y=t.pstyle("edge-distances").value,p=y!=="node-position",g=t.pstyle("taxi-direction").value,m=g,b=t.pstyle("taxi-turn"),w=b.units==="%",E=b.pfValue,C=E<0,x=t.pstyle("taxi-turn-min-distance").pfValue,T=p?(d+h)/2:0,k=p?(f+v)/2:0,P=c.x2-c.x1,B=c.y2-c.y1,D=function(U,j){return U>0?Math.max(U-j,0):Math.min(U+j,0)},R=D(P,T),A=D(B,k),M=!1;m===u?g=Math.abs(R)>Math.abs(A)?n:a:m===l||m===o?(g=a,M=!0):(m===i||m===s)&&(g=n,M=!0);var _=g===a,L=_?A:R,I=_?B:P,H=Jo(I),G=!1;!(M&&(w||C))&&(m===o&&I<0||m===l&&I>0||m===i&&I>0||m===s&&I<0)&&(H*=-1,L=H*Math.abs(L),G=!0);var O;if(w){var $=E<0?1+E:E;O=$*L}else{var Y=E<0?L:0;O=Y+E*H}var te=function(U){return Math.abs(U)<x||Math.abs(U)>=Math.abs(L)},J=te(O),re=te(Math.abs(L)-Math.abs(O)),ne=J||re;if(ne&&!G)if(_){var oe=Math.abs(I)<=f/2,ee=Math.abs(P)<=h/2;if(oe){var q=(c.x1+c.x2)/2,K=c.y1,W=c.y2;r.segpts=[q,K,q,W]}else if(ee){var Q=(c.y1+c.y2)/2,ie=c.x1,ge=c.x2;r.segpts=[ie,Q,ge,Q]}else r.segpts=[c.x1,c.y2]}else{var Me=Math.abs(I)<=d/2,Te=Math.abs(B)<=v/2;if(Me){var Ee=(c.y1+c.y2)/2,be=c.x1,ce=c.x2;r.segpts=[be,Ee,ce,Ee]}else if(Te){var ye=(c.x1+c.x2)/2,pe=c.y1,Se=c.y2;r.segpts=[ye,pe,ye,Se]}else r.segpts=[c.x2,c.y1]}else if(_){var Ce=c.y1+O+(p?f/2*H:0),De=c.x1,Le=c.x2;r.segpts=[De,Ce,Le,Ce]}else{var qe=c.x1+O+(p?d/2*H:0),ze=c.y1,Ie=c.y2;r.segpts=[qe,ze,qe,Ie]}if(r.isRound){var Z=t.pstyle("taxi-radius").value,S=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(Z),r.isArcRadius=new Array(r.segpts.length/2).fill(S)}};Tt.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,l=e.tgtH,u=e.srcShape,c=e.tgtShape,d=e.srcCornerRadius,f=e.tgtCornerRadius,h=e.srcRs,v=e.tgtRs,y=!se(r.startX)||!se(r.startY),p=!se(r.arrowStartX)||!se(r.arrowStartY),g=!se(r.endX)||!se(r.endY),m=!se(r.arrowEndX)||!se(r.arrowEndY),b=3,w=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,E=b*w,C=Kr({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),x=C<E,T=Kr({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.endX,y:r.endY}),k=T<E,P=!1;if(y||p||x){P=!0;var B={x:r.ctrlpts[0]-a.x,y:r.ctrlpts[1]-a.y},D=Math.sqrt(B.x*B.x+B.y*B.y),R={x:B.x/D,y:B.y/D},A=Math.max(i,s),M={x:r.ctrlpts[0]+R.x*2*A,y:r.ctrlpts[1]+R.y*2*A},_=u.intersectLine(a.x,a.y,i,s,M.x,M.y,0,d,h);x?(r.ctrlpts[0]=r.ctrlpts[0]+R.x*(E-C),r.ctrlpts[1]=r.ctrlpts[1]+R.y*(E-C)):(r.ctrlpts[0]=_[0]+R.x*E,r.ctrlpts[1]=_[1]+R.y*E)}if(g||m||k){P=!0;var L={x:r.ctrlpts[0]-n.x,y:r.ctrlpts[1]-n.y},I=Math.sqrt(L.x*L.x+L.y*L.y),H={x:L.x/I,y:L.y/I},G=Math.max(i,s),O={x:r.ctrlpts[0]+H.x*2*G,y:r.ctrlpts[1]+H.y*2*G},$=c.intersectLine(n.x,n.y,o,l,O.x,O.y,0,f,v);k?(r.ctrlpts[0]=r.ctrlpts[0]+H.x*(E-T),r.ctrlpts[1]=r.ctrlpts[1]+H.y*(E-T)):(r.ctrlpts[0]=$[0]+H.x*E,r.ctrlpts[1]=$[1]+H.y*E)}P&&this.findEndpoints(t)}};Tt.storeAllpts=function(t){var e=t._private.rscratch;if(e.edgeType==="multibezier"||e.edgeType==="bezier"||e.edgeType==="self"||e.edgeType==="compound"){e.allpts=[],e.allpts.push(e.startX,e.startY);for(var r=0;r+1<e.ctrlpts.length;r+=2)e.allpts.push(e.ctrlpts[r],e.ctrlpts[r+1]),r+3<e.ctrlpts.length&&e.allpts.push((e.ctrlpts[r]+e.ctrlpts[r+2])/2,(e.ctrlpts[r+1]+e.ctrlpts[r+3])/2);e.allpts.push(e.endX,e.endY);var a,n;e.ctrlpts.length/2%2===0?(a=e.allpts.length/2-1,e.midX=e.allpts[a],e.midY=e.allpts[a+1]):(a=e.allpts.length/2-3,n=.5,e.midX=ct(e.allpts[a],e.allpts[a+2],e.allpts[a+4],n),e.midY=ct(e.allpts[a+1],e.allpts[a+3],e.allpts[a+5],n))}else if(e.edgeType==="straight")e.allpts=[e.startX,e.startY,e.endX,e.endY],e.midX=(e.startX+e.endX+e.arrowStartX+e.arrowEndX)/4,e.midY=(e.startY+e.endY+e.arrowStartY+e.arrowEndY)/4;else if(e.edgeType==="segments"){if(e.allpts=[],e.allpts.push(e.startX,e.startY),e.allpts.push.apply(e.allpts,e.segpts),e.allpts.push(e.endX,e.endY),e.isRound){e.roundCorners=[];for(var i=2;i+3<e.allpts.length;i+=2){var s=e.radii[i/2-1],o=e.isArcRadius[i/2-1];e.roundCorners.push(fl({x:e.allpts[i-2],y:e.allpts[i-1]},{x:e.allpts[i],y:e.allpts[i+1],radius:s},{x:e.allpts[i+2],y:e.allpts[i+3]},s,o))}}if(e.segpts.length%4===0){var l=e.segpts.length/2,u=l-2;e.midX=(e.segpts[u]+e.segpts[l])/2,e.midY=(e.segpts[u+1]+e.segpts[l+1])/2}else{var c=e.segpts.length/2-1;if(!e.isRound)e.midX=e.segpts[c],e.midY=e.segpts[c+1];else{var d={x:e.segpts[c],y:e.segpts[c+1]},f=e.roundCorners[c/2];if(f.radius===0){var h={x:e.segpts[c+2],y:e.segpts[c+3]};e.midX=d.x,e.midY=d.y,e.midVector=[d.y-h.y,h.x-d.x]}else{var v=[d.x-f.cx,d.y-f.cy],y=f.radius/Math.sqrt(Math.pow(v[0],2)+Math.pow(v[1],2));v=v.map(function(p){return p*y}),e.midX=f.cx+v[0],e.midY=f.cy+v[1],e.midVector=v}}}}};Tt.checkForInvalidEdgeWarning=function(t){var e=t[0]._private.rscratch;e.nodesOverlap||se(e.startX)&&se(e.startY)&&se(e.endX)&&se(e.endY)?e.loggedErr=!1:e.loggedErr||(e.loggedErr=!0,He("Edge `"+t.id()+"` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap."))};Tt.findEdgeControlPoints=function(t){var e=this;if(!(!t||t.length===0)){for(var r=this,a=r.cy,n=a.hasCompoundNodes(),i=new or,s=function(k,P){return[].concat(Gn(k),[P?1:0]).join("-")},o=[],l=[],u=0;u<t.length;u++){var c=t[u],d=c._private,f=c.pstyle("curve-style").value;if(!(c.removed()||!c.takesUpSpace())){if(f==="haystack"){l.push(c);continue}var h=f==="unbundled-bezier"||br(f,"segments")||f==="straight"||f==="straight-triangle"||br(f,"taxi"),v=f==="unbundled-bezier"||f==="bezier",y=d.source,p=d.target,g=y.poolIndex(),m=p.poolIndex(),b=[g,m].sort(),w=s(b,h),E=i.get(w);E==null&&(E={eles:[]},o.push({pairId:b,edgeIsUnbundled:h}),i.set(w,E)),E.eles.push(c),h&&(E.hasUnbundled=!0),v&&(E.hasBezier=!0)}}for(var C=function(){var k=o[x],P=k.pairId,B=k.edgeIsUnbundled,D=s(P,B),R=i.get(D),A;if(!R.hasUnbundled){var M=R.eles[0].parallelEdges().filter(function(S){return S.isBundledBezier()});Zo(R.eles),M.forEach(function(S){return R.eles.push(S)}),R.eles.sort(function(S,N){return S.poolIndex()-N.poolIndex()})}var _=R.eles[0],L=_.source(),I=_.target();if(L.poolIndex()>I.poolIndex()){var H=L;L=I,I=H}var G=R.srcPos=L.position(),O=R.tgtPos=I.position(),$=R.srcW=L.outerWidth(),Y=R.srcH=L.outerHeight(),te=R.tgtW=I.outerWidth(),J=R.tgtH=I.outerHeight(),re=R.srcShape=r.nodeShapes[e.getNodeShape(L)],ne=R.tgtShape=r.nodeShapes[e.getNodeShape(I)],oe=R.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,ee=R.tgtCornerRadius=I.pstyle("corner-radius").value==="auto"?"auto":I.pstyle("corner-radius").pfValue,q=R.tgtRs=I._private.rscratch,K=R.srcRs=L._private.rscratch;R.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var W=0;W<R.eles.length;W++){var Q=R.eles[W],ie=Q[0]._private.rscratch,ge=Q.pstyle("curve-style").value,Me=ge==="unbundled-bezier"||br(ge,"segments")||br(ge,"taxi"),Te=!L.same(Q.source());if(!R.calculatedIntersection&&L!==I&&(R.hasBezier||R.hasUnbundled)){R.calculatedIntersection=!0;var Ee=re.intersectLine(G.x,G.y,$,Y,O.x,O.y,0,oe,K),be=R.srcIntn=Ee,ce=ne.intersectLine(O.x,O.y,te,J,G.x,G.y,0,ee,q),ye=R.tgtIntn=ce,pe=R.intersectionPts={x1:Ee[0],x2:ce[0],y1:Ee[1],y2:ce[1]},Se=R.posPts={x1:G.x,x2:O.x,y1:G.y,y2:O.y},Ce=ce[1]-Ee[1],De=ce[0]-Ee[0],Le=Math.sqrt(De*De+Ce*Ce);se(Le)&&Le>=jm||(Le=Math.sqrt(Math.max(De*De,Za)+Math.max(Ce*Ce,Za)));var qe=R.vector={x:De,y:Ce},ze=R.vectorNorm={x:qe.x/Le,y:qe.y/Le},Ie={x:-ze.y,y:ze.x};R.nodesOverlap=!se(Le)||ne.checkPoint(Ee[0],Ee[1],0,te,J,O.x,O.y,ee,q)||re.checkPoint(ce[0],ce[1],0,$,Y,G.x,G.y,oe,K),R.vectorNormInverse=Ie,A={nodesOverlap:R.nodesOverlap,dirCounts:R.dirCounts,calculatedIntersection:!0,hasBezier:R.hasBezier,hasUnbundled:R.hasUnbundled,eles:R.eles,srcPos:O,srcRs:q,tgtPos:G,tgtRs:K,srcW:te,srcH:J,tgtW:$,tgtH:Y,srcIntn:ye,tgtIntn:be,srcShape:ne,tgtShape:re,posPts:{x1:Se.x2,y1:Se.y2,x2:Se.x1,y2:Se.y1},intersectionPts:{x1:pe.x2,y1:pe.y2,x2:pe.x1,y2:pe.y1},vector:{x:-qe.x,y:-qe.y},vectorNorm:{x:-ze.x,y:-ze.y},vectorNormInverse:{x:-Ie.x,y:-Ie.y}}}var Z=Te?A:R;ie.nodesOverlap=Z.nodesOverlap,ie.srcIntn=Z.srcIntn,ie.tgtIntn=Z.tgtIntn,ie.isRound=ge.startsWith("round"),n&&(L.isParent()||L.isChild()||I.isParent()||I.isChild())&&(L.parents().anySame(I)||I.parents().anySame(L)||L.same(I)&&L.isParent())?e.findCompoundLoopPoints(Q,Z,W,Me):L===I?e.findLoopPoints(Q,Z,W,Me):ge.endsWith("segments")?e.findSegmentsPoints(Q,Z):ge.endsWith("taxi")?e.findTaxiPoints(Q,Z):ge==="straight"||!Me&&R.eles.length%2===1&&W===Math.floor(R.eles.length/2)?e.findStraightEdgePoints(Q):e.findBezierPoints(Q,Z,W,Me,Te),e.findEndpoints(Q),e.tryToCorrectInvalidPoints(Q,Z),e.checkForInvalidEdgeWarning(Q),e.storeAllpts(Q),e.storeEdgeProjections(Q),e.calculateArrowAngles(Q),e.recalculateEdgeLabelProjections(Q),e.calculateLabelAngles(Q)}},x=0;x<o.length;x++)C();this.findHaystackPoints(l)}};function Af(t){var e=[];if(t!=null){for(var r=0;r<t.length;r+=2){var a=t[r],n=t[r+1];e.push({x:a,y:n})}return e}}Tt.getSegmentPoints=function(t){var e=t[0]._private.rscratch;this.recalculateRenderedStyle(t);var r=e.edgeType;if(r==="segments")return Af(e.segpts)};Tt.getControlPoints=function(t){var e=t[0]._private.rscratch;this.recalculateRenderedStyle(t);var r=e.edgeType;if(r==="bezier"||r==="multibezier"||r==="self"||r==="compound")return Af(e.ctrlpts)};Tt.getEdgeMidpoint=function(t){var e=t[0]._private.rscratch;return this.recalculateRenderedStyle(t),{x:e.midX,y:e.midY}};var ln={};ln.manualEndptToPx=function(t,e){var r=this,a=t.position(),n=t.outerWidth(),i=t.outerHeight(),s=t._private.rscratch;if(e.value.length===2){var o=[e.pfValue[0],e.pfValue[1]];return e.units[0]==="%"&&(o[0]=o[0]*n),e.units[1]==="%"&&(o[1]=o[1]*i),o[0]+=a.x,o[1]+=a.y,o}else{var l=e.pfValue[0];l=-Math.PI/2+l;var u=2*Math.max(n,i),c=[a.x+Math.cos(l)*u,a.y+Math.sin(l)*u];return r.nodeShapes[this.getNodeShape(t)].intersectLine(a.x,a.y,n,i,c[0],c[1],0,t.pstyle("corner-radius").value==="auto"?"auto":t.pstyle("corner-radius").pfValue,s)}};ln.findEndpoints=function(t){var e,r,a,n,i=this,s,o=t.source()[0],l=t.target()[0],u=o.position(),c=l.position(),d=t.pstyle("target-arrow-shape").value,f=t.pstyle("source-arrow-shape").value,h=t.pstyle("target-distance-from-node").pfValue,v=t.pstyle("source-distance-from-node").pfValue,y=o._private.rscratch,p=l._private.rscratch,g=t.pstyle("curve-style").value,m=t._private.rscratch,b=m.edgeType,w=br(g,"taxi"),E=b==="self"||b==="compound",C=b==="bezier"||b==="multibezier"||E,x=b!=="bezier",T=b==="straight"||b==="segments",k=b==="segments",P=C||x||T,B=E||w,D=t.pstyle("source-endpoint"),R=B?"outside-to-node":D.value,A=o.pstyle("corner-radius").value==="auto"?"auto":o.pstyle("corner-radius").pfValue,M=t.pstyle("target-endpoint"),_=B?"outside-to-node":M.value,L=l.pstyle("corner-radius").value==="auto"?"auto":l.pstyle("corner-radius").pfValue;m.srcManEndpt=D,m.tgtManEndpt=M;var I,H,G,O,$=(e=(M==null||(r=M.pfValue)===null||r===void 0?void 0:r.length)===2?M.pfValue:null)!==null&&e!==void 0?e:[0,0],Y=(a=(D==null||(n=D.pfValue)===null||n===void 0?void 0:n.length)===2?D.pfValue:null)!==null&&a!==void 0?a:[0,0];if(C){var te=[m.ctrlpts[0],m.ctrlpts[1]],J=x?[m.ctrlpts[m.ctrlpts.length-2],m.ctrlpts[m.ctrlpts.length-1]]:te;I=J,H=te}else if(T){var re=k?m.segpts.slice(0,2):[c.x+$[0],c.y+$[1]],ne=k?m.segpts.slice(m.segpts.length-2):[u.x+Y[0],u.y+Y[1]];I=ne,H=re}if(_==="inside-to-node")s=[c.x,c.y];else if(M.units)s=this.manualEndptToPx(l,M);else if(_==="outside-to-line")s=m.tgtIntn;else if(_==="outside-to-node"||_==="outside-to-node-or-label"?G=I:(_==="outside-to-line"||_==="outside-to-line-or-label")&&(G=[u.x,u.y]),s=i.nodeShapes[this.getNodeShape(l)].intersectLine(c.x,c.y,l.outerWidth(),l.outerHeight(),G[0],G[1],0,L,p),_==="outside-to-node-or-label"||_==="outside-to-line-or-label"){var oe=l._private.rscratch,ee=oe.labelWidth,q=oe.labelHeight,K=oe.labelX,W=oe.labelY,Q=ee/2,ie=q/2,ge=l.pstyle("text-valign").value;ge==="top"?W-=ie:ge==="bottom"&&(W+=ie);var Me=l.pstyle("text-halign").value;Me==="left"?K-=Q:Me==="right"&&(K+=Q);var Te=Ka(G[0],G[1],[K-Q,W-ie,K+Q,W-ie,K+Q,W+ie,K-Q,W+ie],c.x,c.y);if(Te.length>0){var Ee=u,be=$r(Ee,la(s)),ce=$r(Ee,la(Te)),ye=be;if(ce<be&&(s=Te,ye=ce),Te.length>2){var pe=$r(Ee,{x:Te[2],y:Te[3]});pe<ye&&(s=[Te[2],Te[3]])}}}var Se=gn(s,I,i.arrowShapes[d].spacing(t)+h),Ce=gn(s,I,i.arrowShapes[d].gap(t)+h);if(m.endX=Ce[0],m.endY=Ce[1],m.arrowEndX=Se[0],m.arrowEndY=Se[1],R==="inside-to-node")s=[u.x,u.y];else if(D.units)s=this.manualEndptToPx(o,D);else if(R==="outside-to-line")s=m.srcIntn;else if(R==="outside-to-node"||R==="outside-to-node-or-label"?O=H:(R==="outside-to-line"||R==="outside-to-line-or-label")&&(O=[c.x,c.y]),s=i.nodeShapes[this.getNodeShape(o)].intersectLine(u.x,u.y,o.outerWidth(),o.outerHeight(),O[0],O[1],0,A,y),R==="outside-to-node-or-label"||R==="outside-to-line-or-label"){var De=o._private.rscratch,Le=De.labelWidth,qe=De.labelHeight,ze=De.labelX,Ie=De.labelY,Z=Le/2,S=qe/2,N=o.pstyle("text-valign").value;N==="top"?Ie-=S:N==="bottom"&&(Ie+=S);var U=o.pstyle("text-halign").value;U==="left"?ze-=Z:U==="right"&&(ze+=Z);var j=Ka(O[0],O[1],[ze-Z,Ie-S,ze+Z,Ie-S,ze+Z,Ie+S,ze-Z,Ie+S],u.x,u.y);if(j.length>0){var X=c,ve=$r(X,la(s)),ae=$r(X,la(j)),le=ve;if(ae<ve&&(s=[j[0],j[1]],le=ae),j.length>2){var de=$r(X,{x:j[2],y:j[3]});de<le&&(s=[j[2],j[3]])}}}var we=gn(s,H,i.arrowShapes[f].spacing(t)+v),ke=gn(s,H,i.arrowShapes[f].gap(t)+v);m.startX=ke[0],m.startY=ke[1],m.arrowStartX=we[0],m.arrowStartY=we[1],P&&(!se(m.startX)||!se(m.startY)||!se(m.endX)||!se(m.endY)?m.badLine=!0:m.badLine=!1)};ln.getSourceEndpoint=function(t){var e=t[0]._private.rscratch;return this.recalculateRenderedStyle(t),e.edgeType==="haystack"?{x:e.haystackPts[0],y:e.haystackPts[1]}:{x:e.arrowStartX,y:e.arrowStartY}};ln.getTargetEndpoint=function(t){var e=t[0]._private.rscratch;return this.recalculateRenderedStyle(t),e.edgeType==="haystack"?{x:e.haystackPts[2],y:e.haystackPts[3]}:{x:e.arrowEndX,y:e.arrowEndY}};var vl={};function Ym(t,e,r){for(var a=function(u,c,d,f){return ct(u,c,d,f)},n=e._private,i=n.rstyle.bezierPts,s=0;s<t.bezierProjPcts.length;s++){var o=t.bezierProjPcts[s];i.push({x:a(r[0],r[2],r[4],o),y:a(r[1],r[3],r[5],o)})}}vl.storeEdgeProjections=function(t){var e=t._private,r=e.rscratch,a=r.edgeType;if(e.rstyle.bezierPts=null,e.rstyle.linePts=null,e.rstyle.haystackPts=null,a==="multibezier"||a==="bezier"||a==="self"||a==="compound"){e.rstyle.bezierPts=[];for(var n=0;n+5<r.allpts.length;n+=4)Ym(this,t,r.allpts.slice(n,n+6))}else if(a==="segments")for(var i=e.rstyle.linePts=[],n=0;n+1<r.allpts.length;n+=2)i.push({x:r.allpts[n],y:r.allpts[n+1]});else if(a==="haystack"){var s=r.haystackPts;e.rstyle.haystackPts=[{x:s[0],y:s[1]},{x:s[2],y:s[3]}]}e.rstyle.arrowWidth=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth};vl.recalculateEdgeProjections=function(t){this.findEdgeControlPoints(t)};var tr={};tr.recalculateNodeLabelProjection=function(t){var e=t.pstyle("label").strValue;if(!Sr(e)){var r,a,n=t._private,i=t.width(),s=t.height(),o=t.padding(),l=t.position(),u=t.pstyle("text-halign").strValue,c=t.pstyle("text-valign").strValue,d=n.rscratch,f=n.rstyle;switch(u){case"left":r=l.x-i/2-o;break;case"right":r=l.x+i/2+o;break;default:r=l.x}switch(c){case"top":a=l.y-s/2-o;break;case"bottom":a=l.y+s/2+o;break;default:a=l.y}d.labelX=r,d.labelY=a,f.labelX=r,f.labelY=a,this.calculateLabelAngles(t),this.applyLabelDimensions(t)}};var Lf=function(e,r){var a=Math.atan(r/e);return e===0&&a<0&&(a=a*-1),a},Mf=function(e,r){var a=r.x-e.x,n=r.y-e.y;return Lf(a,n)},Xm=function(e,r,a,n){var i=Ua(0,n-.001,1),s=Ua(0,n+.001,1),o=da(e,r,a,i),l=da(e,r,a,s);return Mf(o,l)};tr.recalculateEdgeLabelProjections=function(t){var e,r=t._private,a=r.rscratch,n=this,i={mid:t.pstyle("label").strValue,source:t.pstyle("source-label").strValue,target:t.pstyle("target-label").strValue};if(i.mid||i.source||i.target){e={x:a.midX,y:a.midY};var s=function(d,f,h){ir(r.rscratch,d,f,h),ir(r.rstyle,d,f,h)};s("labelX",null,e.x),s("labelY",null,e.y);var o=Lf(a.midDispX,a.midDispY);s("labelAutoAngle",null,o);var l=function(){if(l.cache)return l.cache;for(var d=[],f=0;f+5<a.allpts.length;f+=4){var h={x:a.allpts[f],y:a.allpts[f+1]},v={x:a.allpts[f+2],y:a.allpts[f+3]},y={x:a.allpts[f+4],y:a.allpts[f+5]};d.push({p0:h,p1:v,p2:y,startDist:0,length:0,segments:[]})}var p=r.rstyle.bezierPts,g=n.bezierProjPcts.length;function m(x,T,k,P,B){var D=Kr(T,k),R=x.segments[x.segments.length-1],A={p0:T,p1:k,t0:P,t1:B,startDist:R?R.startDist+R.length:0,length:D};x.segments.push(A),x.length+=D}for(var b=0;b<d.length;b++){var w=d[b],E=d[b-1];E&&(w.startDist=E.startDist+E.length),m(w,w.p0,p[b*g],0,n.bezierProjPcts[0]);for(var C=0;C<g-1;C++)m(w,p[b*g+C],p[b*g+C+1],n.bezierProjPcts[C],n.bezierProjPcts[C+1]);m(w,p[b*g+g-1],w.p2,n.bezierProjPcts[g-1],1)}return l.cache=d},u=function(d){var f,h=d==="source";if(i[d]){var v=t.pstyle(d+"-text-offset").pfValue;switch(a.edgeType){case"self":case"compound":case"bezier":case"multibezier":{for(var y=l(),p,g=0,m=0,b=0;b<y.length;b++){for(var w=y[h?b:y.length-1-b],E=0;E<w.segments.length;E++){var C=w.segments[h?E:w.segments.length-1-E],x=b===y.length-1&&E===w.segments.length-1;if(g=m,m+=C.length,m>=v||x){p={cp:w,segment:C};break}}if(p)break}var T=p.cp,k=p.segment,P=(v-g)/k.length,B=k.t1-k.t0,D=h?k.t0+B*P:k.t1-B*P;D=Ua(0,D,1),e=da(T.p0,T.p1,T.p2,D),f=Xm(T.p0,T.p1,T.p2,D);break}case"straight":case"segments":case"haystack":{for(var R=0,A,M,_,L,I=a.allpts.length,H=0;H+3<I&&(h?(_={x:a.allpts[H],y:a.allpts[H+1]},L={x:a.allpts[H+2],y:a.allpts[H+3]}):(_={x:a.allpts[I-2-H],y:a.allpts[I-1-H]},L={x:a.allpts[I-4-H],y:a.allpts[I-3-H]}),A=Kr(_,L),M=R,R+=A,!(R>=v));H+=2);var G=v-M,O=G/A;O=Ua(0,O,1),e=mp(_,L,O),f=Mf(_,L);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,f)}};u("source"),u("target"),this.applyLabelDimensions(t)}};tr.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};tr.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=Ur(a,t._private.labelDimsKey);if(Rt(r.rscratch,"prefixedLabelDimsKey",e)!==n){ir(r.rscratch,"prefixedLabelDimsKey",e,n);var i=this.calculateLabelDimensions(t,a),s=t.pstyle("line-height").pfValue,o=t.pstyle("text-wrap").strValue,l=Rt(r.rscratch,"labelWrapCachedLines",e)||[],u=o!=="wrap"?1:Math.max(l.length,1),c=i.height/u,d=c*s,f=i.width,h=i.height+(u-1)*(s-1)*c;ir(r.rstyle,"labelWidth",e,f),ir(r.rscratch,"labelWidth",e,f),ir(r.rstyle,"labelHeight",e,h),ir(r.rscratch,"labelHeight",e,h),ir(r.rscratch,"labelLineHeight",e,d)}};tr.getLabelText=function(t,e){var r=t._private,a=e?e+"-":"",n=t.pstyle(a+"label").strValue,i=t.pstyle("text-transform").value,s=function(Y,te){return te?(ir(r.rscratch,Y,e,te),te):Rt(r.rscratch,Y,e)};if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=t.pstyle("text-wrap").value;if(o==="wrap"){var l=s("labelKey");if(l!=null&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var u="",c=n.split(`
`),d=t.pstyle("text-max-width").pfValue,f=t.pstyle("text-overflow-wrap").value,h=f==="anywhere",v=[],y=/[\s\u200b]+|$/g,p=0;p<c.length;p++){var g=c[p],m=this.calculateLabelDimensions(t,g),b=m.width;if(h){var w=g.split("").join(u);g=w}if(b>d){var E=g.matchAll(y),C="",x=0,T=Lt(E),k;try{for(T.s();!(k=T.n()).done;){var P=k.value,B=P[0],D=g.substring(x,P.index);x=P.index+B.length;var R=C.length===0?D:C+D+B,A=this.calculateLabelDimensions(t,R),M=A.width;M<=d?C+=D+B:(C&&v.push(C),C=D+B)}}catch($){T.e($)}finally{T.f()}C.match(/^[\s\u200b]+$/)||v.push(C)}else v.push(g)}s("labelWrapCachedLines",v),n=s("labelWrapCachedText",v.join(`
`)),s("labelWrapKey",l)}else if(o==="ellipsis"){var _=t.pstyle("text-max-width").pfValue,L="",I="…",H=!1;if(this.calculateLabelDimensions(t,n).width<_)return n;for(var G=0;G<n.length;G++){var O=this.calculateLabelDimensions(t,L+n[G]+I).width;if(O>_)break;L+=n[G],G===n.length-1&&(H=!0)}return H||(L+=I),L}return n};tr.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};tr.calculateLabelDimensions=function(t,e){var r=this,a=r.cy.window(),n=a.document,i=0,s=t.pstyle("font-style").strValue,o=t.pstyle("font-size").pfValue,l=t.pstyle("font-family").strValue,u=t.pstyle("font-weight").strValue,c=this.labelCalcCanvas,d=this.labelCalcCanvasContext;if(!c){c=this.labelCalcCanvas=n.createElement("canvas"),d=this.labelCalcCanvasContext=c.getContext("2d");var f=c.style;f.position="absolute",f.left="-9999px",f.top="-9999px",f.zIndex="-1",f.visibility="hidden",f.pointerEvents="none"}d.font="".concat(s," ").concat(u," ").concat(o,"px ").concat(l);for(var h=0,v=0,y=e.split(`
`),p=0;p<y.length;p++){var g=y[p],m=d.measureText(g),b=Math.ceil(m.width),w=o;h=Math.max(b,h),v+=w}return h+=i,v+=i,{width:h,height:v}};tr.calculateLabelAngle=function(t,e){var r=t._private,a=r.rscratch,n=t.isEdge(),i=e?e+"-":"",s=t.pstyle(i+"text-rotation"),o=s.strValue;return o==="none"?0:n&&o==="autorotate"?a.labelAutoAngle:o==="autorotate"?0:s.pfValue};tr.calculateLabelAngles=function(t){var e=this,r=t.isEdge(),a=t._private,n=a.rscratch;n.labelAngle=e.calculateLabelAngle(t),r&&(n.sourceLabelAngle=e.calculateLabelAngle(t,"source"),n.targetLabelAngle=e.calculateLabelAngle(t,"target"))};var _f={},zc=28,$c=!1;_f.getNodeShape=function(t){var e=this,r=t.pstyle("shape").value;if(r==="cutrectangle"&&(t.width()<zc||t.height()<zc))return $c||(He("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"),$c=!0),"rectangle";if(t.isParent())return r==="rectangle"||r==="roundrectangle"||r==="round-rectangle"||r==="cutrectangle"||r==="cut-rectangle"||r==="barrel"?r:"rectangle";if(r==="polygon"){var a=t.pstyle("shape-polygon-points").value;return e.nodeShapes.makePolygon(a).name}return r};var Ci={};Ci.registerCalculationListeners=function(){var t=this.cy,e=t.collection(),r=this,a=function(s){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var l=0;l<s.length;l++){var u=s[l],c=u._private,d=c.rstyle;d.clean=!1,d.cleanConnected=!1}};r.binder(t).on("bounds.* dirty.*",function(s){var o=s.target;a(o)}).on("style.* background.*",function(s){var o=s.target;a(o,!1)});var n=function(s){if(s){var o=r.onUpdateEleCalcsFns;e.cleanStyle();for(var l=0;l<e.length;l++){var u=e[l],c=u._private.rstyle;u.isNode()&&!c.cleanConnected&&(a(u.connectedEdges()),c.cleanConnected=!0)}if(o)for(var d=0;d<o.length;d++){var f=o[d];f(s,e)}r.recalculateRenderedStyle(e),e=t.collection()}};r.flushRenderedStyleQueue=function(){n(!0)},r.beforeRender(n,r.beforeRenderPriorities.eleCalcs)};Ci.onUpdateEleCalcs=function(t){var e=this.onUpdateEleCalcsFns=this.onUpdateEleCalcsFns||[];e.push(t)};Ci.recalculateRenderedStyle=function(t,e){var r=function(w){return w._private.rstyle.cleanConnected};if(t.length!==0){var a=[],n=[];if(!this.destroyed){e===void 0&&(e=!0);for(var i=0;i<t.length;i++){var s=t[i],o=s._private,l=o.rstyle;s.isEdge()&&(!r(s.source())||!r(s.target()))&&(l.clean=!1),s.isEdge()&&s.isBundledBezier()&&s.parallelEdges().some(function(b){return!b._private.rstyle.clean&&b.isBundledBezier()})&&(l.clean=!1),!(e&&l.clean||s.removed())&&s.pstyle("display").value!=="none"&&(o.group==="nodes"?n.push(s):a.push(s),l.clean=!0)}for(var u=0;u<n.length;u++){var c=n[u],d=c._private,f=d.rstyle,h=c.position();this.recalculateNodeLabelProjection(c),f.nodeX=h.x,f.nodeY=h.y,f.nodeW=c.pstyle("width").pfValue,f.nodeH=c.pstyle("height").pfValue}this.recalculateEdgeProjections(a);for(var v=0;v<a.length;v++){var y=a[v],p=y._private,g=p.rstyle,m=p.rscratch;g.srcX=m.arrowStartX,g.srcY=m.arrowStartY,g.tgtX=m.arrowEndX,g.tgtY=m.arrowEndY,g.midX=m.midX,g.midY=m.midY,g.labelAngle=m.labelAngle,g.sourceLabelAngle=m.sourceLabelAngle,g.targetLabelAngle=m.targetLabelAngle}}}};var Ti={};Ti.updateCachedGrabbedEles=function(){var t=this.cachedZSortedEles;if(t){t.drag=[],t.nondrag=[];for(var e=[],r=0;r<t.length;r++){var a=t[r],n=a._private.rscratch;a.grabbed()&&!a.isParent()?e.push(a):n.inDragLayer?t.drag.push(a):t.nondrag.push(a)}for(var r=0;r<e.length;r++){var a=e[r];t.drag.push(a)}}};Ti.invalidateCachedZSortedEles=function(){this.cachedZSortedEles=null};Ti.getCachedZSortedEles=function(t){if(t||!this.cachedZSortedEles){var e=this.cy.mutableElements().toArray();e.sort(pf),e.interactive=e.filter(function(r){return r.interactive()}),this.cachedZSortedEles=e,this.updateCachedGrabbedEles()}else e=this.cachedZSortedEles;return e};var If={};[Zr,ei,Tt,ln,vl,tr,_f,Ci,Ti].forEach(function(t){xe(If,t)});var Of={};Of.getCachedImage=function(t,e,r){var a=this,n=a.imageCache=a.imageCache||{},i=n[t];if(i)return i.image.complete||i.image.addEventListener("load",r),i.image;i=n[t]=n[t]||{};var s=i.image=new Image;s.addEventListener("load",r),s.addEventListener("error",function(){s.error=!0});var o="data:",l=t.substring(0,o.length).toLowerCase()===o;return l||(e=e==="null"?null:e,s.crossOrigin=e),s.src=t,s};var Nf=function(e,r){var a=e[0];!a||a._private.grabbed===r||(a._private.grabbed=r,e.updateStyle(!1))},Zm=function(e){Nf(e,!0)},Qm=function(e){Nf(e,!1)},Ea={};Ea.registerBinding=function(t,e,r,a){var n=Array.prototype.slice.apply(arguments,[1]);if(Array.isArray(t)){for(var i=[],s=0;s<t.length;s++){var o=t[s];if(o!==void 0){var l=this.binder(o);i.push(l.on.apply(l,n))}}return i}var l=this.binder(t);return l.on.apply(l,n)};Ea.binder=function(t){var e=this,r=e.cy.window(),a=t===r||t===r.document||t===r.document.body||lh(t);if(e.supportsPassiveEvents==null){var n=!1;try{var i=Object.defineProperty({},"passive",{get:function(){return n=!0,!0}});r.addEventListener("test",null,i)}catch{}e.supportsPassiveEvents=n}var s=function(l,u,c){var d=Array.prototype.slice.call(arguments);return a&&e.supportsPassiveEvents&&(d[2]={capture:c??!1,passive:!1,once:!1}),e.bindings.push({target:t,args:d}),(t.addEventListener||t.on).apply(t,d),this};return{on:s,addEventListener:s,addListener:s,bind:s}};Ea.nodeIsDraggable=function(t){return t&&t.isNode()&&!t.locked()&&t.grabbable()};Ea.nodeIsGrabbable=function(t){return this.nodeIsDraggable(t)&&t.interactive()};Ea.load=function(){var t=this,e=t.cy.window(),r=function(S){return S.selected()},a=function(S){var N=S.getRootNode();if(N&&N.nodeType===11&&N.host!==void 0)return N},n=function(S,N,U,j){S==null&&(S=t.cy);for(var X=0;X<N.length;X++){var ve=N[X];S.emit({originalEvent:U,type:ve,position:j})}},i=function(S){return S.shiftKey||S.metaKey||S.ctrlKey},s=function(S,N){var U=!0;if(t.cy.hasCompoundNodes()&&S&&S.pannable())for(var j=0;N&&j<N.length;j++){var S=N[j];if(S.isNode()&&S.isParent()&&!S.pannable()){U=!1;break}}else U=!0;return U},o=function(S){S[0]._private.rscratch.inDragLayer=!0},l=function(S){S[0]._private.rscratch.inDragLayer=!1},u=function(S){S[0]._private.rscratch.isGrabTarget=!0},c=function(S){S[0]._private.rscratch.isGrabTarget=!1},d=function(S,N){var U=N.addToList,j=U.has(S);!j&&S.grabbable()&&!S.locked()&&(U.merge(S),Zm(S))},f=function(S,N){if(S.cy().hasCompoundNodes()&&!(N.inDragLayer==null&&N.addToList==null)){var U=S.descendants();N.inDragLayer&&(U.forEach(o),U.connectedEdges().forEach(o)),N.addToList&&d(U,N)}},h=function(S,N){N=N||{};var U=S.cy().hasCompoundNodes();N.inDragLayer&&(S.forEach(o),S.neighborhood().stdFilter(function(j){return!U||j.isEdge()}).forEach(o)),N.addToList&&S.forEach(function(j){d(j,N)}),f(S,N),p(S,{inDragLayer:N.inDragLayer}),t.updateCachedGrabbedEles()},v=h,y=function(S){S&&(t.getCachedZSortedEles().forEach(function(N){Qm(N),l(N),c(N)}),t.updateCachedGrabbedEles())},p=function(S,N){if(!(N.inDragLayer==null&&N.addToList==null)&&S.cy().hasCompoundNodes()){var U=S.ancestors().orphans();if(!U.same(S)){var j=U.descendants().spawnSelf().merge(U).unmerge(S).unmerge(S.descendants()),X=j.connectedEdges();N.inDragLayer&&(X.forEach(o),j.forEach(o)),N.addToList&&j.forEach(function(ve){d(ve,N)})}}},g=function(){document.activeElement!=null&&document.activeElement.blur!=null&&document.activeElement.blur()},m=typeof MutationObserver<"u",b=typeof ResizeObserver<"u";m?(t.removeObserver=new MutationObserver(function(Z){for(var S=0;S<Z.length;S++){var N=Z[S],U=N.removedNodes;if(U)for(var j=0;j<U.length;j++){var X=U[j];if(X===t.container){t.destroy();break}}}}),t.container.parentNode&&t.removeObserver.observe(t.container.parentNode,{childList:!0})):t.registerBinding(t.container,"DOMNodeRemoved",function(Z){t.destroy()});var w=an(function(){t.cy.resize()},100);m&&(t.styleObserver=new MutationObserver(w),t.styleObserver.observe(t.container,{attributes:!0})),t.registerBinding(e,"resize",w),b&&(t.resizeObserver=new ResizeObserver(w),t.resizeObserver.observe(t.container));var E=function(S,N){for(;S!=null;)N(S),S=S.parentNode},C=function(){t.invalidateContainerClientCoordsCache()};E(t.container,function(Z){t.registerBinding(Z,"transitionend",C),t.registerBinding(Z,"animationend",C),t.registerBinding(Z,"scroll",C)}),t.registerBinding(t.container,"contextmenu",function(Z){Z.preventDefault()});var x=function(){return t.selection[4]!==0},T=function(S){for(var N=t.findContainerClientCoords(),U=N[0],j=N[1],X=N[2],ve=N[3],ae=S.touches?S.touches:[S],le=!1,de=0;de<ae.length;de++){var we=ae[de];if(U<=we.clientX&&we.clientX<=U+X&&j<=we.clientY&&we.clientY<=j+ve){le=!0;break}}if(!le)return!1;for(var ke=t.container,Pe=S.target,he=Pe.parentNode,Re=!1;he;){if(he===ke){Re=!0;break}he=he.parentNode}return!!Re};t.registerBinding(t.container,"mousedown",function(S){if(T(S)&&!(t.hoverData.which===1&&S.which!==1)){S.preventDefault(),g(),t.hoverData.capture=!0,t.hoverData.which=S.which;var N=t.cy,U=[S.clientX,S.clientY],j=t.projectIntoViewport(U[0],U[1]),X=t.selection,ve=t.findNearestElements(j[0],j[1],!0,!1),ae=ve[0],le=t.dragData.possibleDragElements;t.hoverData.mdownPos=j,t.hoverData.mdownGPos=U;var de=function(_e){return{originalEvent:S,type:_e,position:{x:j[0],y:j[1]}}},we=function(){t.hoverData.tapholdCancelled=!1,clearTimeout(t.hoverData.tapholdTimeout),t.hoverData.tapholdTimeout=setTimeout(function(){if(!t.hoverData.tapholdCancelled){var _e=t.hoverData.down;_e?_e.emit(de("taphold")):N.emit(de("taphold"))}},t.tapholdDuration)};if(S.which==3){t.hoverData.cxtStarted=!0;var ke={originalEvent:S,type:"cxttapstart",position:{x:j[0],y:j[1]}};ae?(ae.activate(),ae.emit(ke),t.hoverData.down=ae):N.emit(ke),t.hoverData.downTime=new Date().getTime(),t.hoverData.cxtDragged=!1}else if(S.which==1){ae&&ae.activate();{if(ae!=null&&t.nodeIsGrabbable(ae)){var Pe=function(_e){_e.emit(de("grab"))};if(u(ae),!ae.selected())le=t.dragData.possibleDragElements=N.collection(),v(ae,{addToList:le}),ae.emit(de("grabon")).emit(de("grab"));else{le=t.dragData.possibleDragElements=N.collection();var he=N.$(function(Re){return Re.isNode()&&Re.selected()&&t.nodeIsGrabbable(Re)});h(he,{addToList:le}),ae.emit(de("grabon")),he.forEach(Pe)}t.redrawHint("eles",!0),t.redrawHint("drag",!0)}t.hoverData.down=ae,t.hoverData.downs=ve,t.hoverData.downTime=new Date().getTime()}n(ae,["mousedown","tapstart","vmousedown"],S,{x:j[0],y:j[1]}),ae==null?(X[4]=1,t.data.bgActivePosistion={x:j[0],y:j[1]},t.redrawHint("select",!0),t.redraw()):ae.pannable()&&(X[4]=1),we()}X[0]=X[2]=j[0],X[1]=X[3]=j[1]}},!1);var k=a(t.container);t.registerBinding([e,k],"mousemove",function(S){var N=t.hoverData.capture;if(!(!N&&!T(S))){var U=!1,j=t.cy,X=j.zoom(),ve=[S.clientX,S.clientY],ae=t.projectIntoViewport(ve[0],ve[1]),le=t.hoverData.mdownPos,de=t.hoverData.mdownGPos,we=t.selection,ke=null;!t.hoverData.draggingEles&&!t.hoverData.dragging&&!t.hoverData.selecting&&(ke=t.findNearestElement(ae[0],ae[1],!0,!1));var Pe=t.hoverData.last,he=t.hoverData.down,Re=[ae[0]-we[2],ae[1]-we[3]],_e=t.dragData.possibleDragElements,ut;if(de){var Qe=ve[0]-de[0],qt=Qe*Qe,Je=ve[1]-de[1],tt=Je*Je,nt=qt+tt;t.hoverData.isOverThresholdDrag=ut=nt>=t.desktopTapThreshold2}var vt=i(S);ut&&(t.hoverData.tapholdCancelled=!0);var jt=function(){var Nt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Nt.length===0?(Nt.push(Re[0]),Nt.push(Re[1])):(Nt[0]+=Re[0],Nt[1]+=Re[1])};U=!0,n(ke,["mousemove","vmousemove","tapdrag"],S,{x:ae[0],y:ae[1]});var Xe=function(Nt){return{originalEvent:S,type:Nt,position:{x:ae[0],y:ae[1]}}},ar=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||j.emit(Xe("boxstart")),we[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if(ut){var Vt=Xe("cxtdrag");he?he.emit(Vt):j.emit(Vt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||ke!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(Xe("cxtdragout")),t.hoverData.cxtOver=ke,ke&&ke.emit(Xe("cxtdragover")))}}else if(t.hoverData.dragging){if(U=!0,j.panningEnabled()&&j.userPanningEnabled()){var pr;if(t.hoverData.justStartedPan){var dn=t.hoverData.mdownPos;pr={x:(ae[0]-dn[0])*X,y:(ae[1]-dn[1])*X},t.hoverData.justStartedPan=!1}else pr={x:Re[0]*X,y:Re[1]*X};j.panBy(pr),j.emit(Xe("dragpan")),t.hoverData.dragged=!0}ae=t.projectIntoViewport(S.clientX,S.clientY)}else if(we[4]==1&&(he==null||he.pannable())){if(ut){if(!t.hoverData.dragging&&j.boxSelectionEnabled()&&(vt||!j.panningEnabled()||!j.userPanningEnabled()))ar();else if(!t.hoverData.selecting&&j.panningEnabled()&&j.userPanningEnabled()){var Or=s(he,t.hoverData.downs);Or&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,we[4]=0,t.data.bgActivePosistion=la(le),t.redrawHint("select",!0),t.redraw())}he&&he.pannable()&&he.active()&&he.unactivate()}}else{if(he&&he.pannable()&&he.active()&&he.unactivate(),(!he||!he.grabbed())&&ke!=Pe&&(Pe&&n(Pe,["mouseout","tapdragout"],S,{x:ae[0],y:ae[1]}),ke&&n(ke,["mouseover","tapdragover"],S,{x:ae[0],y:ae[1]}),t.hoverData.last=ke),he)if(ut){if(j.boxSelectionEnabled()&&vt)he&&he.grabbed()&&(y(_e),he.emit(Xe("freeon")),_e.emit(Xe("free")),t.dragData.didDrag&&(he.emit(Xe("dragfreeon")),_e.emit(Xe("dragfree")))),ar();else if(he&&he.grabbed()&&t.nodeIsDraggable(he)){var Bt=!t.dragData.didDrag;Bt&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||h(_e,{inDragLayer:!0});var mt={x:0,y:0};if(se(Re[0])&&se(Re[1])&&(mt.x+=Re[0],mt.y+=Re[1],Bt)){var Dt=t.hoverData.dragDelta;Dt&&se(Dt[0])&&se(Dt[1])&&(mt.x+=Dt[0],mt.y+=Dt[1])}t.hoverData.draggingEles=!0,_e.silentShift(mt).emit(Xe("position")).emit(Xe("drag")),t.redrawHint("drag",!0),t.redraw()}}else jt();U=!0}if(we[2]=ae[0],we[3]=ae[1],U)return S.stopPropagation&&S.stopPropagation(),S.preventDefault&&S.preventDefault(),!1}},!1);var P,B,D;t.registerBinding(e,"mouseup",function(S){if(!(t.hoverData.which===1&&S.which!==1&&t.hoverData.capture)){var N=t.hoverData.capture;if(N){t.hoverData.capture=!1;var U=t.cy,j=t.projectIntoViewport(S.clientX,S.clientY),X=t.selection,ve=t.findNearestElement(j[0],j[1],!0,!1),ae=t.dragData.possibleDragElements,le=t.hoverData.down,de=i(S);t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,le&&le.unactivate();var we=function(Qe){return{originalEvent:S,type:Qe,position:{x:j[0],y:j[1]}}};if(t.hoverData.which===3){var ke=we("cxttapend");if(le?le.emit(ke):U.emit(ke),!t.hoverData.cxtDragged){var Pe=we("cxttap");le?le.emit(Pe):U.emit(Pe)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(n(ve,["mouseup","tapend","vmouseup"],S,{x:j[0],y:j[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(n(le,["click","tap","vclick"],S,{x:j[0],y:j[1]}),B=!1,S.timeStamp-D<=U.multiClickDebounceTime()?(P&&clearTimeout(P),B=!0,D=null,n(le,["dblclick","dbltap","vdblclick"],S,{x:j[0],y:j[1]})):(P=setTimeout(function(){B||n(le,["oneclick","onetap","voneclick"],S,{x:j[0],y:j[1]})},U.multiClickDebounceTime()),D=S.timeStamp)),le==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!i(S)&&(U.$(r).unselect(["tapunselect"]),ae.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=ae=U.collection()),ve==le&&!t.dragData.didDrag&&!t.hoverData.selecting&&ve!=null&&ve._private.selectable&&(t.hoverData.dragging||(U.selectionType()==="additive"||de?ve.selected()?ve.unselect(["tapunselect"]):ve.select(["tapselect"]):de||(U.$(r).unmerge(ve).unselect(["tapunselect"]),ve.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var he=U.collection(t.getAllInBox(X[0],X[1],X[2],X[3]));t.redrawHint("select",!0),he.length>0&&t.redrawHint("eles",!0),U.emit(we("boxend"));var Re=function(Qe){return Qe.selectable()&&!Qe.selected()};U.selectionType()==="additive"||de||U.$(r).unmerge(he).unselect(),he.emit(we("box")).stdFilter(Re).select().emit(we("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!X[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var _e=le&&le.grabbed();y(ae),_e&&(le.emit(we("freeon")),ae.emit(we("free")),t.dragData.didDrag&&(le.emit(we("dragfreeon")),ae.emit(we("dragfree"))))}}X[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},!1);var R=[],A=4,M,_=1e5,L=function(S,N){for(var U=0;U<S.length;U++)if(S[U]%N!==0)return!1;return!0},I=function(S){for(var N=Math.abs(S[0]),U=1;U<S.length;U++)if(Math.abs(S[U])!==N)return!1;return!0},H=function(S){var N=!1,U=S.deltaY;if(U==null&&(S.wheelDeltaY!=null?U=S.wheelDeltaY/4:S.wheelDelta!=null&&(U=S.wheelDelta/4)),U!==0){if(M==null)if(R.length>=A){var j=R;if(M=L(j,5),!M){var X=Math.abs(j[0]);M=I(j)&&X>5}if(M)for(var ve=0;ve<j.length;ve++)_=Math.min(Math.abs(j[ve]),_)}else R.push(U),N=!0;else M&&(_=Math.min(Math.abs(U),_));if(!t.scrollingPage){var ae=t.cy,le=ae.zoom(),de=ae.pan(),we=t.projectIntoViewport(S.clientX,S.clientY),ke=[we[0]*le+de.x,we[1]*le+de.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||x()){S.preventDefault();return}if(ae.panningEnabled()&&ae.userPanningEnabled()&&ae.zoomingEnabled()&&ae.userZoomingEnabled()){S.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var Pe;N&&Math.abs(U)>5&&(U=Jo(U)*5),Pe=U/-250,M&&(Pe/=_,Pe*=3),Pe=Pe*t.wheelSensitivity;var he=S.deltaMode===1;he&&(Pe*=33);var Re=ae.zoom()*Math.pow(10,Pe);S.type==="gesturechange"&&(Re=t.gestureStartZoom*S.scale),ae.zoom({level:Re,renderedPosition:{x:ke[0],y:ke[1]}}),ae.emit({type:S.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:S,position:{x:we[0],y:we[1]}})}}}};t.registerBinding(t.container,"wheel",H,!0),t.registerBinding(e,"scroll",function(S){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(S){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||S.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(Z){t.hasTouchStarted||H(Z)},!0),t.registerBinding(t.container,"mouseout",function(S){var N=t.projectIntoViewport(S.clientX,S.clientY);t.cy.emit({originalEvent:S,type:"mouseout",position:{x:N[0],y:N[1]}})},!1),t.registerBinding(t.container,"mouseover",function(S){var N=t.projectIntoViewport(S.clientX,S.clientY);t.cy.emit({originalEvent:S,type:"mouseover",position:{x:N[0],y:N[1]}})},!1);var G,O,$,Y,te,J,re,ne,oe,ee,q,K,W,Q=function(S,N,U,j){return Math.sqrt((U-S)*(U-S)+(j-N)*(j-N))},ie=function(S,N,U,j){return(U-S)*(U-S)+(j-N)*(j-N)},ge;t.registerBinding(t.container,"touchstart",ge=function(S){if(t.hasTouchStarted=!0,!!T(S)){g(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var N=t.cy,U=t.touchData.now,j=t.touchData.earlier;if(S.touches[0]){var X=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);U[0]=X[0],U[1]=X[1]}if(S.touches[1]){var X=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);U[2]=X[0],U[3]=X[1]}if(S.touches[2]){var X=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);U[4]=X[0],U[5]=X[1]}var ve=function(vt){return{originalEvent:S,type:vt,position:{x:U[0],y:U[1]}}};if(S.touches[1]){t.touchData.singleTouchMoved=!0,y(t.dragData.touchDragEles);var ae=t.findContainerClientCoords();oe=ae[0],ee=ae[1],q=ae[2],K=ae[3],G=S.touches[0].clientX-oe,O=S.touches[0].clientY-ee,$=S.touches[1].clientX-oe,Y=S.touches[1].clientY-ee,W=0<=G&&G<=q&&0<=$&&$<=q&&0<=O&&O<=K&&0<=Y&&Y<=K;var le=N.pan(),de=N.zoom();te=Q(G,O,$,Y),J=ie(G,O,$,Y),re=[(G+$)/2,(O+Y)/2],ne=[(re[0]-le.x)/de,(re[1]-le.y)/de];var we=200,ke=we*we;if(J<ke&&!S.touches[2]){var Pe=t.findNearestElement(U[0],U[1],!0,!0),he=t.findNearestElement(U[2],U[3],!0,!0);Pe&&Pe.isNode()?(Pe.activate().emit(ve("cxttapstart")),t.touchData.start=Pe):he&&he.isNode()?(he.activate().emit(ve("cxttapstart")),t.touchData.start=he):N.emit(ve("cxttapstart")),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!0,t.touchData.cxtDragged=!1,t.data.bgActivePosistion=void 0,t.redraw();return}}if(S.touches[2])N.boxSelectionEnabled()&&S.preventDefault();else if(!S.touches[1]){if(S.touches[0]){var Re=t.findNearestElements(U[0],U[1],!0,!0),_e=Re[0];if(_e!=null&&(_e.activate(),t.touchData.start=_e,t.touchData.starts=Re,t.nodeIsGrabbable(_e))){var ut=t.dragData.touchDragEles=N.collection(),Qe=null;t.redrawHint("eles",!0),t.redrawHint("drag",!0),_e.selected()?(Qe=N.$(function(nt){return nt.selected()&&t.nodeIsGrabbable(nt)}),h(Qe,{addToList:ut})):v(_e,{addToList:ut}),u(_e),_e.emit(ve("grabon")),Qe?Qe.forEach(function(nt){nt.emit(ve("grab"))}):_e.emit(ve("grab"))}n(_e,["touchstart","tapstart","vmousedown"],S,{x:U[0],y:U[1]}),_e==null&&(t.data.bgActivePosistion={x:X[0],y:X[1]},t.redrawHint("select",!0),t.redraw()),t.touchData.singleTouchMoved=!1,t.touchData.singleTouchStartTime=+new Date,clearTimeout(t.touchData.tapholdTimeout),t.touchData.tapholdTimeout=setTimeout(function(){t.touchData.singleTouchMoved===!1&&!t.pinching&&!t.touchData.selecting&&n(t.touchData.start,["taphold"],S,{x:U[0],y:U[1]})},t.tapholdDuration)}}if(S.touches.length>=1){for(var qt=t.touchData.startPosition=[null,null,null,null,null,null],Je=0;Je<U.length;Je++)qt[Je]=j[Je]=U[Je];var tt=S.touches[0];t.touchData.startGPosition=[tt.clientX,tt.clientY]}}},!1);var Me;t.registerBinding(e,"touchmove",Me=function(S){var N=t.touchData.capture;if(!(!N&&!T(S))){var U=t.selection,j=t.cy,X=t.touchData.now,ve=t.touchData.earlier,ae=j.zoom();if(S.touches[0]){var le=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);X[0]=le[0],X[1]=le[1]}if(S.touches[1]){var le=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);X[2]=le[0],X[3]=le[1]}if(S.touches[2]){var le=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);X[4]=le[0],X[5]=le[1]}var de=function(Pv){return{originalEvent:S,type:Pv,position:{x:X[0],y:X[1]}}},we=t.touchData.startGPosition,ke;if(N&&S.touches[0]&&we){for(var Pe=[],he=0;he<X.length;he++)Pe[he]=X[he]-ve[he];var Re=S.touches[0].clientX-we[0],_e=Re*Re,ut=S.touches[0].clientY-we[1],Qe=ut*ut,qt=_e+Qe;ke=qt>=t.touchTapThreshold2}if(N&&t.touchData.cxt){S.preventDefault();var Je=S.touches[0].clientX-oe,tt=S.touches[0].clientY-ee,nt=S.touches[1].clientX-oe,vt=S.touches[1].clientY-ee,jt=ie(Je,tt,nt,vt),Xe=jt/J,ar=150,Vt=ar*ar,pr=1.5,dn=pr*pr;if(Xe>=dn||jt>=Vt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Or=de("cxttapend");t.touchData.start?(t.touchData.start.unactivate().emit(Or),t.touchData.start=null):j.emit(Or)}}if(N&&t.touchData.cxt){var Or=de("cxtdrag");t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Or):j.emit(Or),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Bt=t.findNearestElement(X[0],X[1],!0,!0);(!t.touchData.cxtOver||Bt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(de("cxtdragout")),t.touchData.cxtOver=Bt,Bt&&Bt.emit(de("cxtdragover")))}else if(N&&S.touches[2]&&j.boxSelectionEnabled())S.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||j.emit(de("boxstart")),t.touchData.selecting=!0,t.touchData.didSelect=!0,U[4]=1,!U||U.length===0||U[0]===void 0?(U[0]=(X[0]+X[2]+X[4])/3,U[1]=(X[1]+X[3]+X[5])/3,U[2]=(X[0]+X[2]+X[4])/3+1,U[3]=(X[1]+X[3]+X[5])/3+1):(U[2]=(X[0]+X[2]+X[4])/3,U[3]=(X[1]+X[3]+X[5])/3),t.redrawHint("select",!0),t.redraw();else if(N&&S.touches[1]&&!t.touchData.didSelect&&j.zoomingEnabled()&&j.panningEnabled()&&j.userZoomingEnabled()&&j.userPanningEnabled()){S.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var mt=t.dragData.touchDragEles;if(mt){t.redrawHint("drag",!0);for(var Dt=0;Dt<mt.length;Dt++){var Sa=mt[Dt]._private;Sa.grabbed=!1,Sa.rscratch.inDragLayer=!1}}var Nt=t.touchData.start,Je=S.touches[0].clientX-oe,tt=S.touches[0].clientY-ee,nt=S.touches[1].clientX-oe,vt=S.touches[1].clientY-ee,xl=Q(Je,tt,nt,vt),mv=xl/te;if(W){var bv=Je-G,wv=tt-O,xv=nt-$,Ev=vt-Y,Cv=(bv+xv)/2,Tv=(wv+Ev)/2,ka=j.zoom(),Pi=ka*mv,fn=j.pan(),El=ne[0]*ka+fn.x,Cl=ne[1]*ka+fn.y,Sv={x:-Pi/ka*(El-fn.x-Cv)+El,y:-Pi/ka*(Cl-fn.y-Tv)+Cl};if(Nt&&Nt.active()){var mt=t.dragData.touchDragEles;y(mt),t.redrawHint("drag",!0),t.redrawHint("eles",!0),Nt.unactivate().emit(de("freeon")),mt.emit(de("free")),t.dragData.didDrag&&(Nt.emit(de("dragfreeon")),mt.emit(de("dragfree")))}j.viewport({zoom:Pi,pan:Sv,cancelOnFailedZoom:!0}),j.emit(de("pinchzoom")),te=xl,G=Je,O=tt,$=nt,Y=vt,t.pinching=!0}if(S.touches[0]){var le=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);X[0]=le[0],X[1]=le[1]}if(S.touches[1]){var le=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);X[2]=le[0],X[3]=le[1]}if(S.touches[2]){var le=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);X[4]=le[0],X[5]=le[1]}}else if(S.touches[0]&&!t.touchData.didSelect){var Ht=t.touchData.start,Bi=t.touchData.last,Bt;if(!t.hoverData.draggingEles&&!t.swipePanning&&(Bt=t.findNearestElement(X[0],X[1],!0,!0)),N&&Ht!=null&&S.preventDefault(),N&&Ht!=null&&t.nodeIsDraggable(Ht))if(ke){var mt=t.dragData.touchDragEles,Tl=!t.dragData.didDrag;Tl&&h(mt,{inDragLayer:!0}),t.dragData.didDrag=!0;var Pa={x:0,y:0};if(se(Pe[0])&&se(Pe[1])&&(Pa.x+=Pe[0],Pa.y+=Pe[1],Tl)){t.redrawHint("eles",!0);var Gt=t.touchData.dragDelta;Gt&&se(Gt[0])&&se(Gt[1])&&(Pa.x+=Gt[0],Pa.y+=Gt[1])}t.hoverData.draggingEles=!0,mt.silentShift(Pa).emit(de("position")).emit(de("drag")),t.redrawHint("drag",!0),t.touchData.startPosition[0]==ve[0]&&t.touchData.startPosition[1]==ve[1]&&t.redrawHint("eles",!0),t.redraw()}else{var Gt=t.touchData.dragDelta=t.touchData.dragDelta||[];Gt.length===0?(Gt.push(Pe[0]),Gt.push(Pe[1])):(Gt[0]+=Pe[0],Gt[1]+=Pe[1])}if(n(Ht||Bt,["touchmove","tapdrag","vmousemove"],S,{x:X[0],y:X[1]}),(!Ht||!Ht.grabbed())&&Bt!=Bi&&(Bi&&Bi.emit(de("tapdragout")),Bt&&Bt.emit(de("tapdragover"))),t.touchData.last=Bt,N)for(var Dt=0;Dt<X.length;Dt++)X[Dt]&&t.touchData.startPosition[Dt]&&ke&&(t.touchData.singleTouchMoved=!0);if(N&&(Ht==null||Ht.pannable())&&j.panningEnabled()&&j.userPanningEnabled()){var kv=s(Ht,t.touchData.starts);kv&&(S.preventDefault(),t.data.bgActivePosistion||(t.data.bgActivePosistion=la(t.touchData.startPosition)),t.swipePanning?(j.panBy({x:Pe[0]*ae,y:Pe[1]*ae}),j.emit(de("dragpan"))):ke&&(t.swipePanning=!0,j.panBy({x:Re*ae,y:ut*ae}),j.emit(de("dragpan")),Ht&&(Ht.unactivate(),t.redrawHint("select",!0),t.touchData.start=null)));var le=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);X[0]=le[0],X[1]=le[1]}}for(var he=0;he<X.length;he++)ve[he]=X[he];N&&S.touches.length>0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var Te;t.registerBinding(e,"touchcancel",Te=function(S){var N=t.touchData.start;t.touchData.capture=!1,N&&N.unactivate()});var Ee,be,ce,ye;if(t.registerBinding(e,"touchend",Ee=function(S){var N=t.touchData.start,U=t.touchData.capture;if(U)S.touches.length===0&&(t.touchData.capture=!1),S.preventDefault();else return;var j=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var X=t.cy,ve=X.zoom(),ae=t.touchData.now,le=t.touchData.earlier;if(S.touches[0]){var de=t.projectIntoViewport(S.touches[0].clientX,S.touches[0].clientY);ae[0]=de[0],ae[1]=de[1]}if(S.touches[1]){var de=t.projectIntoViewport(S.touches[1].clientX,S.touches[1].clientY);ae[2]=de[0],ae[3]=de[1]}if(S.touches[2]){var de=t.projectIntoViewport(S.touches[2].clientX,S.touches[2].clientY);ae[4]=de[0],ae[5]=de[1]}var we=function(Vt){return{originalEvent:S,type:Vt,position:{x:ae[0],y:ae[1]}}};N&&N.unactivate();var ke;if(t.touchData.cxt){if(ke=we("cxttapend"),N?N.emit(ke):X.emit(ke),!t.touchData.cxtDragged){var Pe=we("cxttap");N?N.emit(Pe):X.emit(Pe)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!S.touches[2]&&X.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var he=X.collection(t.getAllInBox(j[0],j[1],j[2],j[3]));j[0]=void 0,j[1]=void 0,j[2]=void 0,j[3]=void 0,j[4]=0,t.redrawHint("select",!0),X.emit(we("boxend"));var Re=function(Vt){return Vt.selectable()&&!Vt.selected()};he.emit(we("box")).stdFilter(Re).select().emit(we("boxselect")),he.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(N?.unactivate(),S.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!S.touches[1]){if(!S.touches[0]){if(!S.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var _e=t.dragData.touchDragEles;if(N!=null){var ut=N._private.grabbed;y(_e),t.redrawHint("drag",!0),t.redrawHint("eles",!0),ut&&(N.emit(we("freeon")),_e.emit(we("free")),t.dragData.didDrag&&(N.emit(we("dragfreeon")),_e.emit(we("dragfree")))),n(N,["touchend","tapend","vmouseup","tapdragout"],S,{x:ae[0],y:ae[1]}),N.unactivate(),t.touchData.start=null}else{var Qe=t.findNearestElement(ae[0],ae[1],!0,!0);n(Qe,["touchend","tapend","vmouseup","tapdragout"],S,{x:ae[0],y:ae[1]})}var qt=t.touchData.startPosition[0]-ae[0],Je=qt*qt,tt=t.touchData.startPosition[1]-ae[1],nt=tt*tt,vt=Je+nt,jt=vt*ve*ve;t.touchData.singleTouchMoved||(N||X.$(":selected").unselect(["tapunselect"]),n(N,["tap","vclick"],S,{x:ae[0],y:ae[1]}),be=!1,S.timeStamp-ye<=X.multiClickDebounceTime()?(ce&&clearTimeout(ce),be=!0,ye=null,n(N,["dbltap","vdblclick"],S,{x:ae[0],y:ae[1]})):(ce=setTimeout(function(){be||n(N,["onetap","voneclick"],S,{x:ae[0],y:ae[1]})},X.multiClickDebounceTime()),ye=S.timeStamp)),N!=null&&!t.dragData.didDrag&&N._private.selectable&&jt<t.touchTapThreshold2&&!t.pinching&&(X.selectionType()==="single"?(X.$(r).unmerge(N).unselect(["tapunselect"]),N.select(["tapselect"])):N.selected()?N.unselect(["tapunselect"]):N.select(["tapselect"]),t.redrawHint("eles",!0)),t.touchData.singleTouchMoved=!0}}}for(var Xe=0;Xe<ae.length;Xe++)le[Xe]=ae[Xe];t.dragData.didDrag=!1,S.touches.length===0&&(t.touchData.dragDelta=[],t.touchData.startPosition=[null,null,null,null,null,null],t.touchData.startGPosition=null,t.touchData.didSelect=!1),S.touches.length<2&&(S.touches.length===1&&(t.touchData.startGPosition=[S.touches[0].clientX,S.touches[0].clientY]),t.pinching=!1,t.redrawHint("eles",!0),t.redraw())},!1),typeof TouchEvent>"u"){var pe=[],Se=function(S){return{clientX:S.clientX,clientY:S.clientY,force:1,identifier:S.pointerId,pageX:S.pageX,pageY:S.pageY,radiusX:S.width/2,radiusY:S.height/2,screenX:S.screenX,screenY:S.screenY,target:S.target}},Ce=function(S){return{event:S,touch:Se(S)}},De=function(S){pe.push(Ce(S))},Le=function(S){for(var N=0;N<pe.length;N++){var U=pe[N];if(U.event.pointerId===S.pointerId){pe.splice(N,1);return}}},qe=function(S){var N=pe.filter(function(U){return U.event.pointerId===S.pointerId})[0];N.event=S,N.touch=Se(S)},ze=function(S){S.touches=pe.map(function(N){return N.touch})},Ie=function(S){return S.pointerType==="mouse"||S.pointerType===4};t.registerBinding(t.container,"pointerdown",function(Z){Ie(Z)||(Z.preventDefault(),De(Z),ze(Z),ge(Z))}),t.registerBinding(t.container,"pointerup",function(Z){Ie(Z)||(Le(Z),ze(Z),Ee(Z))}),t.registerBinding(t.container,"pointercancel",function(Z){Ie(Z)||(Le(Z),ze(Z),Te(Z))}),t.registerBinding(t.container,"pointermove",function(Z){Ie(Z)||(Z.preventDefault(),qe(Z),ze(Z),Me(Z))})}};var vr={};vr.generatePolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,draw:function(a,n,i,s,o,l){this.renderer.nodeShapeImpl("polygon",a,n,i,s,o,this.points)},intersectLine:function(a,n,i,s,o,l,u,c){return Ka(o,l,this.points,a,n,i/2,s/2,u)},checkPoint:function(a,n,i,s,o,l,u,c){return dr(a,n,this.points,l,u,s,o,[0,-1],i)},hasMiterBounds:t!=="rectangle",miterBounds:function(a,n,i,s,o,l){return Tp(this.points,a,n,i,s,o)}}};vr.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:function(e,r,a,n,i,s){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i)},intersectLine:function(e,r,a,n,i,s,o,l){return Lp(i,s,e,r,a/2+o,n/2+o)},checkPoint:function(e,r,a,n,i,s,o,l){return Gr(e,r,n,i,s,o,a)}}};vr.generateRoundPolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,getOrCreateCorners:function(a,n,i,s,o,l,u){if(l[u]!==void 0&&l[u+"-cx"]===a&&l[u+"-cy"]===n)return l[u];l[u]=new Array(e.length/2),l[u+"-cx"]=a,l[u+"-cy"]=n;var c=i/2,d=s/2;o=o==="auto"?Od(i,s):o;for(var f=new Array(e.length/2),h=0;h<e.length/2;h++)f[h]={x:a+c*e[h*2],y:n+d*e[h*2+1]};var v,y,p,g,m=f.length;for(y=f[m-1],v=0;v<m;v++)p=f[v%m],g=f[(v+1)%m],l[u][v]=fl(y,p,g,o),y=p,p=g;return l[u]},draw:function(a,n,i,s,o,l,u){this.renderer.nodeShapeImpl("round-polygon",a,n,i,s,o,this.points,this.getOrCreateCorners(n,i,s,o,l,u,"drawCorners"))},intersectLine:function(a,n,i,s,o,l,u,c,d){return _p(o,l,this.points,a,n,i,s,u,this.getOrCreateCorners(a,n,i,s,c,d,"corners"))},checkPoint:function(a,n,i,s,o,l,u,c,d){return Ap(a,n,this.points,l,u,s,o,this.getOrCreateCorners(l,u,s,o,c,d,"corners"))}}};vr.generateRoundRectangle=function(){return this.nodeShapes["round-rectangle"]=this.nodeShapes.roundrectangle={renderer:this,name:"round-rectangle",points:St(4,0),draw:function(e,r,a,n,i,s){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i,this.points,s)},intersectLine:function(e,r,a,n,i,s,o,l){return _d(i,s,e,r,a,n,o,l)},checkPoint:function(e,r,a,n,i,s,o,l){var u=n/2,c=i/2;l=l==="auto"?Pr(n,i):l,l=Math.min(u,c,l);var d=l*2;return!!(dr(e,r,this.points,s,o,n,i-d,[0,-1],a)||dr(e,r,this.points,s,o,n-d,i,[0,-1],a)||Gr(e,r,d,d,s-u+l,o-c+l,a)||Gr(e,r,d,d,s+u-l,o-c+l,a)||Gr(e,r,d,d,s+u-l,o+c-l,a)||Gr(e,r,d,d,s-u+l,o+c-l,a))}}};vr.generateCutRectangle=function(){return this.nodeShapes["cut-rectangle"]=this.nodeShapes.cutrectangle={renderer:this,name:"cut-rectangle",cornerLength:tl(),points:St(4,0),draw:function(e,r,a,n,i,s){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i,null,s)},generateCutTrianglePts:function(e,r,a,n,i){var s=i==="auto"?this.cornerLength:i,o=r/2,l=e/2,u=a-l,c=a+l,d=n-o,f=n+o;return{topLeft:[u,d+s,u+s,d,u+s,d+s],topRight:[c-s,d,c,d+s,c-s,d+s],bottomRight:[c,f-s,c-s,f,c-s,f-s],bottomLeft:[u+s,f,u,f-s,u+s,f-s]}},intersectLine:function(e,r,a,n,i,s,o,l){var u=this.generateCutTrianglePts(a+2*o,n+2*o,e,r,l),c=[].concat.apply([],[u.topLeft.splice(0,4),u.topRight.splice(0,4),u.bottomRight.splice(0,4),u.bottomLeft.splice(0,4)]);return Ka(i,s,c,e,r)},checkPoint:function(e,r,a,n,i,s,o,l){var u=l==="auto"?this.cornerLength:l;if(dr(e,r,this.points,s,o,n,i-2*u,[0,-1],a)||dr(e,r,this.points,s,o,n-2*u,i,[0,-1],a))return!0;var c=this.generateCutTrianglePts(n,i,s,o);return At(e,r,c.topLeft)||At(e,r,c.topRight)||At(e,r,c.bottomRight)||At(e,r,c.bottomLeft)}}};vr.generateBarrel=function(){return this.nodeShapes.barrel={renderer:this,name:"barrel",points:St(4,0),draw:function(e,r,a,n,i,s){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i)},intersectLine:function(e,r,a,n,i,s,o,l){var u=.15,c=.5,d=.85,f=this.generateBarrelBezierPts(a+2*o,n+2*o,e,r),h=function(p){var g=da({x:p[0],y:p[1]},{x:p[2],y:p[3]},{x:p[4],y:p[5]},u),m=da({x:p[0],y:p[1]},{x:p[2],y:p[3]},{x:p[4],y:p[5]},c),b=da({x:p[0],y:p[1]},{x:p[2],y:p[3]},{x:p[4],y:p[5]},d);return[p[0],p[1],g.x,g.y,m.x,m.y,b.x,b.y,p[4],p[5]]},v=[].concat(h(f.topLeft),h(f.topRight),h(f.bottomRight),h(f.bottomLeft));return Ka(i,s,v,e,r)},generateBarrelBezierPts:function(e,r,a,n){var i=r/2,s=e/2,o=a-s,l=a+s,u=n-i,c=n+i,d=go(e,r),f=d.heightOffset,h=d.widthOffset,v=d.ctrlPtOffsetPct*e,y={topLeft:[o,u+f,o+v,u,o+h,u],topRight:[l-h,u,l-v,u,l,u+f],bottomRight:[l,c-f,l-v,c,l-h,c],bottomLeft:[o+h,c,o+v,c,o,c-f]};return y.topLeft.isTop=!0,y.topRight.isTop=!0,y.bottomLeft.isBottom=!0,y.bottomRight.isBottom=!0,y},checkPoint:function(e,r,a,n,i,s,o,l){var u=go(n,i),c=u.heightOffset,d=u.widthOffset;if(dr(e,r,this.points,s,o,n,i-2*c,[0,-1],a)||dr(e,r,this.points,s,o,n-2*d,i,[0,-1],a))return!0;for(var f=this.generateBarrelBezierPts(n,i,s,o),h=function(T,k,P){var B=P[4],D=P[2],R=P[0],A=P[5],M=P[1],_=Math.min(B,R),L=Math.max(B,R),I=Math.min(A,M),H=Math.max(A,M);if(_<=T&&T<=L&&I<=k&&k<=H){var G=Ip(B,D,R),O=Pp(G[0],G[1],G[2],T),$=O.filter(function(Y){return 0<=Y&&Y<=1});if($.length>0)return $[0]}return null},v=Object.keys(f),y=0;y<v.length;y++){var p=v[y],g=f[p],m=h(e,r,g);if(m!=null){var b=g[5],w=g[3],E=g[1],C=ct(b,w,E,m);if(g.isTop&&C<=r||g.isBottom&&r<=C)return!0}}return!1}}};vr.generateBottomRoundrectangle=function(){return this.nodeShapes["bottom-round-rectangle"]=this.nodeShapes.bottomroundrectangle={renderer:this,name:"bottom-round-rectangle",points:St(4,0),draw:function(e,r,a,n,i,s){this.renderer.nodeShapeImpl(this.name,e,r,a,n,i,this.points,s)},intersectLine:function(e,r,a,n,i,s,o,l){var u=e-(a/2+o),c=r-(n/2+o),d=c,f=e+(a/2+o),h=xr(i,s,e,r,u,c,f,d,!1);return h.length>0?h:_d(i,s,e,r,a,n,o,l)},checkPoint:function(e,r,a,n,i,s,o,l){l=l==="auto"?Pr(n,i):l;var u=2*l;if(dr(e,r,this.points,s,o,n,i-u,[0,-1],a)||dr(e,r,this.points,s,o,n-u,i,[0,-1],a))return!0;var c=n/2+2*a,d=i/2+2*a,f=[s-c,o-d,s-c,o,s+c,o,s+c,o-d];return!!(At(e,r,f)||Gr(e,r,u,u,s+n/2-l,o+i/2-l,a)||Gr(e,r,u,u,s-n/2+l,o+i/2-l,a))}}};vr.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",St(3,0)),this.generateRoundPolygon("round-triangle",St(3,0)),this.generatePolygon("rectangle",St(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",St(5,0)),this.generateRoundPolygon("round-pentagon",St(5,0)),this.generatePolygon("hexagon",St(6,0)),this.generateRoundPolygon("round-hexagon",St(6,0)),this.generatePolygon("heptagon",St(7,0)),this.generateRoundPolygon("round-heptagon",St(7,0)),this.generatePolygon("octagon",St(8,0)),this.generateRoundPolygon("round-octagon",St(8,0));var a=new Array(20);{var n=po(5,0),i=po(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o<i.length/2;o++)i[o*2]*=s,i[o*2+1]*=s;for(var o=0;o<20/4;o++)a[o*4]=n[o*2],a[o*4+1]=n[o*2+1],a[o*4+2]=i[o*2],a[o*4+3]=i[o*2+1]}a=Id(a),this.generatePolygon("star",a),this.generatePolygon("vee",[-1,-1,0,-.333,1,-1,0,1]),this.generatePolygon("rhomboid",[-1,-1,.333,-1,1,1,-.333,1]),this.generatePolygon("right-rhomboid",[-.333,-1,1,-1,.333,1,-1,1]),this.nodeShapes.concavehexagon=this.generatePolygon("concave-hexagon",[-1,-.95,-.75,0,-1,.95,1,.95,.75,0,1,-.95]);{var l=[-1,-1,.25,-1,1,0,.25,1,-1,1];this.generatePolygon("tag",l),this.generateRoundPolygon("round-tag",l)}t.makePolygon=function(u){var c=u.join("$"),d="polygon-"+c,f;return(f=this[d])?f:e.generatePolygon(d,u)}};var un={};un.timeToRender=function(){return this.redrawTotalTime/this.redrawCount};un.redraw=function(t){t=t||Rd();var e=this;e.averageRedrawTime===void 0&&(e.averageRedrawTime=0),e.lastRedrawTime===void 0&&(e.lastRedrawTime=0),e.lastDrawTime===void 0&&(e.lastDrawTime=0),e.requestedFrame=!0,e.renderOptions=t};un.beforeRender=function(t,e){if(!this.destroyed){e==null&&Ye("Priority is not optional for beforeRender");var r=this.beforeRenderCallbacks;r.push({fn:t,priority:e}),r.sort(function(a,n){return n.priority-a.priority})}};var Fc=function(e,r,a){for(var n=e.beforeRenderCallbacks,i=0;i<n.length;i++)n[i].fn(r,a)};un.startRenderLoop=function(){var t=this,e=t.cy;if(!t.renderLoopStarted){t.renderLoopStarted=!0;var r=function(n){if(!t.destroyed){if(!e.batching())if(t.requestedFrame&&!t.skipFrame){Fc(t,!0,n);var i=cr();t.render(t.renderOptions);var s=t.lastDrawTime=cr();t.averageRedrawTime===void 0&&(t.averageRedrawTime=s-i),t.redrawCount===void 0&&(t.redrawCount=0),t.redrawCount++,t.redrawTotalTime===void 0&&(t.redrawTotalTime=0);var o=s-i;t.redrawTotalTime+=o,t.lastRedrawTime=o,t.averageRedrawTime=t.averageRedrawTime/2+o/2,t.requestedFrame=!1}else Fc(t,!1,n);t.skipFrame=!1,Kn(r)}};Kn(r)}};var Jm=function(e){this.init(e)},zf=Jm,Ca=zf.prototype;Ca.clientFunctions=["redrawHint","render","renderTo","matchCanvasSize","nodeShapeImpl","arrowShapeImpl"];Ca.init=function(t){var e=this;e.options=t,e.cy=t.cy;var r=e.container=t.cy.container(),a=e.cy.window();if(a){var n=a.document,i=n.head,s="__________cytoscape_stylesheet",o="__________cytoscape_container",l=n.getElementById(s)!=null;if(r.className.indexOf(o)<0&&(r.className=(r.className||"")+" "+o),!l){var u=n.createElement("style");u.id=s,u.textContent="."+o+" { position: relative; }",i.insertBefore(u,i.children[0])}var c=a.getComputedStyle(r),d=c.getPropertyValue("position");d==="static"&&He("A Cytoscape container has style position:static and so can not use UI extensions properly")}e.selection=[void 0,void 0,void 0,void 0,0],e.bezierProjPcts=[.05,.225,.4,.5,.6,.775,.95],e.hoverData={down:null,last:null,downTime:null,triggerMode:null,dragging:!1,initialPan:[null,null],capture:!1},e.dragData={possibleDragElements:[]},e.touchData={start:null,capture:!1,startPosition:[null,null,null,null,null,null],singleTouchStartTime:null,singleTouchMoved:!0,now:[null,null,null,null,null,null],earlier:[null,null,null,null,null,null]},e.redraws=0,e.showFps=t.showFps,e.debug=t.debug,e.webgl=t.webgl,e.hideEdgesOnViewport=t.hideEdgesOnViewport,e.textureOnViewport=t.textureOnViewport,e.wheelSensitivity=t.wheelSensitivity,e.motionBlurEnabled=t.motionBlur,e.forcedPixelRatio=se(t.pixelRatio)?t.pixelRatio:null,e.motionBlur=t.motionBlur,e.motionBlurOpacity=t.motionBlurOpacity,e.motionBlurTransparency=1-e.motionBlurOpacity,e.motionBlurPxRatio=1,e.mbPxRBlurry=1,e.minMbLowQualFrames=4,e.fullQualityMb=!1,e.clearedForMotionBlur=[],e.desktopTapThreshold=t.desktopTapThreshold,e.desktopTapThreshold2=t.desktopTapThreshold*t.desktopTapThreshold,e.touchTapThreshold=t.touchTapThreshold,e.touchTapThreshold2=t.touchTapThreshold*t.touchTapThreshold,e.tapholdDuration=500,e.bindings=[],e.beforeRenderCallbacks=[],e.beforeRenderPriorities={animations:400,eleCalcs:300,eleTxrDeq:200,lyrTxrDeq:150,lyrTxrSkip:100},e.registerNodeShapes(),e.registerArrowShapes(),e.registerCalculationListeners()};Ca.notify=function(t,e){var r=this,a=r.cy;if(!this.destroyed){if(t==="init"){r.load();return}if(t==="destroy"){r.destroy();return}(t==="add"||t==="remove"||t==="move"&&a.hasCompoundNodes()||t==="load"||t==="zorder"||t==="mount")&&r.invalidateCachedZSortedEles(),t==="viewport"&&r.redrawHint("select",!0),t==="gc"&&r.redrawHint("gc",!0),(t==="load"||t==="resize"||t==="mount")&&(r.invalidateContainerClientCoordsCache(),r.matchCanvasSize(r.container)),r.redrawHint("eles",!0),r.redrawHint("drag",!0),this.startRenderLoop(),this.redraw()}};Ca.destroy=function(){var t=this;t.destroyed=!0,t.cy.stopAnimationLoop();for(var e=0;e<t.bindings.length;e++){var r=t.bindings[e],a=r,n=a.target;(n.off||n.removeEventListener).apply(n,a.args)}if(t.bindings=[],t.beforeRenderCallbacks=[],t.onUpdateEleCalcsFns=[],t.removeObserver&&t.removeObserver.disconnect(),t.styleObserver&&t.styleObserver.disconnect(),t.resizeObserver&&t.resizeObserver.disconnect(),t.labelCalcDiv)try{document.body.removeChild(t.labelCalcDiv)}catch{}};Ca.isHeadless=function(){return!1};[dl,If,Of,Ea,vr,un].forEach(function(t){xe(Ca,t)});var Js=1e3/60,$f={setupDequeueing:function(e){return function(){var a=this,n=this.renderer;if(!a.dequeueingSetup){a.dequeueingSetup=!0;var i=an(function(){n.redrawHint("eles",!0),n.redrawHint("drag",!0),n.redraw()},e.deqRedrawThreshold),s=function(u,c){var d=cr(),f=n.averageRedrawTime,h=n.lastRedrawTime,v=[],y=n.cy.extent(),p=n.getPixelRatio();for(u||n.flushRenderedStyleQueue();;){var g=cr(),m=g-d,b=g-c;if(h<Js){var w=Js-(u?f:0);if(b>=e.deqFastCost*w)break}else if(u){if(m>=e.deqCost*h||m>=e.deqAvgCost*f)break}else if(b>=e.deqNoDrawCost*Js)break;var E=e.deq(a,p,y);if(E.length>0)for(var C=0;C<E.length;C++)v.push(E[C]);else break}v.length>0&&(e.onDeqd(a,v),!u&&e.shouldRedraw(a,v,p,y)&&i())},o=e.priority||Xo;n.beforeRender(s,o(a))}}}},e0=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wn;Ar(this,t),this.idsByKey=new or,this.keyForId=new or,this.cachesByLvl=new or,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return Lr(t,[{key:"getIdsFor",value:function(r){r==null&&Ye("Can not get id list for null key");var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new ma,a.set(r,n)),n}},{key:"addIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:"deleteIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:"deleteKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:"keyHasChangedFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);return n!==i}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new or,a.set(r,i),n.push(r)),i}},{key:"getCache",value:function(r,a){return this.getCachesAt(a).get(r)}},{key:"get",value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:"getForCachedKey",value:function(r,a){var n=this.keyForId.get(r.id()),i=this.getCache(n,a);return i}},{key:"hasCache",value:function(r,a){return this.getCachesAt(a).has(r)}},{key:"has",value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:"setCache",value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:"set",value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,a){this.getCachesAt(a).delete(r)}},{key:"delete",value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:"invalidateKey",value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:"invalidate",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}])})(),qc=25,Tn=50,qn=-4,Do=3,Ff=7.99,t0=8,r0=1024,a0=1024,n0=1024,i0=.2,s0=.8,o0=10,l0=.15,u0=.1,c0=.9,d0=.9,f0=100,v0=1,ca={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},h0=gt({getKey:null,doesEleInvalidateKey:Wn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Pd,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Na=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=h0(r);xe(a,n),a.lookup=new e0(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()},lt=Na.prototype;lt.reasons=ca;lt.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};lt.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},a=r[t]=r[t]||[];return a};lt.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new nn(function(r,a){return a.reqs-r.reqs});return e};lt.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};lt.getElement=function(t,e,r,a,n){var i=this,s=this.renderer,o=s.cy.zoom(),l=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a==null&&(a=Math.ceil(Qo(o*r))),a<qn)a=qn;else if(o>=Ff||a>Do)return null;var u=Math.pow(2,a),c=e.h*u,d=e.w*u,f=s.eleTextBiggerThanMin(t,u);if(!this.isVisible(t,f))return null;var h=l.get(t,a);if(h&&h.invalidated&&(h.invalidated=!1,h.texture.invalidatedWidth-=h.width),h)return h;var v;if(c<=qc?v=qc:c<=Tn?v=Tn:v=Math.ceil(c/Tn)*Tn,c>n0||d>a0)return null;var y=i.getTextureQueue(v),p=y[y.length-2],g=function(){return i.recycleTexture(v,d)||i.addTexture(v,d)};p||(p=y[y.length-1]),p||(p=g()),p.width-p.usedWidth<d&&(p=g());for(var m=function(_){return _&&_.scaledLabelShown===f},b=n&&n===ca.dequeue,w=n&&n===ca.highQuality,E=n&&n===ca.downscale,C,x=a+1;x<=Do;x++){var T=l.get(t,x);if(T){C=T;break}}var k=C&&C.level===a+1?C:null,P=function(){p.context.drawImage(k.texture.canvas,k.x,0,k.width,k.height,p.usedWidth,0,d,c)};if(p.context.setTransform(1,0,0,1,0,0),p.context.clearRect(p.usedWidth,0,d,v),m(k))P();else if(m(C))if(w){for(var B=C.level;B>a;B--)k=i.getElement(t,e,r,B,ca.downscale);P()}else return i.queueElement(t,C.level-1),C;else{var D;if(!b&&!w&&!E)for(var R=a-1;R>=qn;R--){var A=l.get(t,R);if(A){D=A;break}}if(m(D))return i.queueElement(t,a),D;p.context.translate(p.usedWidth,0),p.context.scale(u,u),this.drawElement(p.context,t,e,f,!1),p.context.scale(1/u,1/u),p.context.translate(-p.usedWidth,0)}return h={x:p.usedWidth,texture:p,level:a,scale:u,width:d,height:c,scaledLabelShown:f},p.usedWidth+=Math.ceil(d+t0),p.eleCaches.push(h),l.set(t,a,h),i.checkTextureFullness(p),h};lt.invalidateElements=function(t){for(var e=0;e<t.length;e++)this.invalidateElement(t[e])};lt.invalidateElement=function(t){var e=this,r=e.lookup,a=[],n=r.isInvalid(t);if(n){for(var i=qn;i<=Do;i++){var s=r.getForCachedKey(t,i);s&&a.push(s)}var o=r.invalidate(t);if(o)for(var l=0;l<a.length;l++){var u=a[l],c=u.texture;c.invalidatedWidth+=u.width,u.invalidated=!0,e.checkTextureUtility(c)}e.removeFromQueue(t)}};lt.checkTextureUtility=function(t){t.invalidatedWidth>=i0*t.width&&this.retireTexture(t)};lt.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>s0&&t.fullnessChecks>=o0?kr(r,t):t.fullnessChecks++};lt.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;kr(a,t),t.retired=!0;for(var i=t.eleCaches,s=0;s<i.length;s++){var o=i[s];n.deleteCache(o.key,o.level)}Zo(i);var l=e.getRetiredTextureQueue(r);l.push(t)};lt.addTexture=function(t,e){var r=this,a=r.getTextureQueue(t),n={};return a.push(n),n.eleCaches=[],n.height=t,n.width=Math.max(r0,e),n.usedWidth=0,n.invalidatedWidth=0,n.fullnessChecks=0,n.canvas=r.renderer.makeOffscreenCanvas(n.width,n.height),n.context=n.canvas.getContext("2d"),n};lt.recycleTexture=function(t,e){for(var r=this,a=r.getTextureQueue(t),n=r.getRetiredTextureQueue(t),i=0;i<n.length;i++){var s=n[i];if(s.width>=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,Zo(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),kr(n,s),a.push(s),s}};lt.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),s=n[i];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,a.updateItem(s);else{var o={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(o),n[i]=o}};lt.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,s=0;s<v0&&r.size()>0;s++){var o=r.pop(),l=o.key,u=o.eles[0],c=i.hasCache(u,o.level);if(a[l]=null,c)continue;n.push(o);var d=e.getBoundingBox(u);e.getElement(u,d,t,o.level,ca.dequeue)}return n};lt.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=Yo,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))};lt.onDequeue=function(t){this.onDequeues.push(t)};lt.offDequeue=function(t){kr(this.onDequeues,t)};lt.setupDequeueing=$f.setupDequeueing({deqRedrawThreshold:f0,deqCost:l0,deqAvgCost:u0,deqNoDrawCost:c0,deqFastCost:d0,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a<e.onDequeues.length;a++){var n=e.onDequeues[a];n(r)}},shouldRedraw:function(e,r,a,n){for(var i=0;i<r.length;i++)for(var s=r[i].eles,o=0;o<s.length;o++){var l=s[o].boundingBox();if(el(l,n))return!0}return!1},priority:function(e){return e.renderer.beforeRenderPriorities.eleTxrDeq}});var p0=1,$a=-4,ti=2,g0=3.99,y0=50,m0=50,b0=.15,w0=.1,x0=.9,E0=.9,C0=1,Vc=250,T0=4e3*4e3,Hc=32767,S0=!0,qf=function(e){var r=this,a=r.renderer=e,n=a.cy;r.layersByLevel={},r.firstGet=!0,r.lastInvalidationTime=cr()-2*Vc,r.skipping=!1,r.eleTxrDeqs=n.collection(),r.scheduleElementRefinement=an(function(){r.refineElementTextures(r.eleTxrDeqs),r.eleTxrDeqs.unmerge(r.eleTxrDeqs)},m0),a.beforeRender(function(s,o){o-r.lastInvalidationTime<=Vc?r.skipping=!0:r.skipping=!1},a.beforeRenderPriorities.lyrTxrSkip);var i=function(o,l){return l.reqs-o.reqs};r.layersQueue=new nn(i),r.setupDequeueing()},yt=qf.prototype,Gc=0,k0=Math.pow(2,53)-1;yt.makeLayer=function(t,e){var r=Math.pow(2,e),a=Math.ceil(t.w*r),n=Math.ceil(t.h*r),i=this.renderer.makeOffscreenCanvas(a,n),s={id:Gc=++Gc%k0,bb:t,level:e,width:a,height:n,canvas:i,context:i.getContext("2d"),eles:[],elesQueue:[],reqs:0},o=s.context,l=-s.bb.x1,u=-s.bb.y1;return o.scale(r,r),o.translate(l,u),s};yt.getLayers=function(t,e,r){var a=this,n=a.renderer,i=n.cy,s=i.zoom(),o=a.firstGet;if(a.firstGet=!1,r==null){if(r=Math.ceil(Qo(s*e)),r<$a)r=$a;else if(s>=g0||r>ti)return null}a.validateLayersElesOrdering(r,t);var l=a.layersByLevel,u=Math.pow(2,r),c=l[r]=l[r]||[],d,f=a.levelIsComplete(r,t),h,v=function(){var P=function(M){if(a.validateLayersElesOrdering(M,t),a.levelIsComplete(M,t))return h=l[M],!0},B=function(M){if(!h)for(var _=r+M;$a<=_&&_<=ti&&!P(_);_+=M);};B(1),B(-1);for(var D=c.length-1;D>=0;D--){var R=c[D];R.invalid&&kr(c,R)}};if(!f)v();else return c;var y=function(){if(!d){d=kt();for(var P=0;P<t.length;P++)xp(d,t[P].boundingBox())}return d},p=function(P){P=P||{};var B=P.after;y();var D=Math.ceil(d.w*u),R=Math.ceil(d.h*u);if(D>Hc||R>Hc)return null;var A=D*R;if(A>T0)return null;var M=a.makeLayer(d,r);if(B!=null){var _=c.indexOf(B)+1;c.splice(_,0,M)}else(P.insert===void 0||P.insert)&&c.unshift(M);return M};if(a.skipping&&!o)return null;for(var g=null,m=t.length/p0,b=!o,w=0;w<t.length;w++){var E=t[w],C=E._private.rscratch,x=C.imgLayerCaches=C.imgLayerCaches||{},T=x[r];if(T){g=T;continue}if((!g||g.eles.length>=m||!Md(g.bb,E.boundingBox()))&&(g=p({insert:!0,after:g}),!g))return null;h||b?a.queueLayer(g,E):a.drawEleInLayer(g,E,r,e),g.eles.push(E),x[r]=g}return h||(b?null:c)};yt.getEleLevelForLayerLevel=function(t,e){return t};yt.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,s=t.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(s,!1),i.drawCachedElement(s,e,null,null,r,S0),i.setImgSmoothing(s,!0))};yt.levelIsComplete=function(t,e){var r=this,a=r.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i<a.length;i++){var s=a[i];if(s.reqs>0||s.invalid)return!1;n+=s.eles.length}return n===e.length};yt.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a<r.length;a++){for(var n=r[a],i=-1,s=0;s<e.length;s++)if(n.eles[0]===e[s]){i=s;break}if(i<0){this.invalidateLayer(n);continue}for(var o=i,s=0;s<n.eles.length;s++)if(n.eles[s]!==e[o+s]){this.invalidateLayer(n);break}}};yt.updateElementsInLayers=function(t,e){for(var r=this,a=Ja(t[0]),n=0;n<t.length;n++)for(var i=a?null:t[n],s=a?t[n]:t[n].ele,o=s._private.rscratch,l=o.imgLayerCaches=o.imgLayerCaches||{},u=$a;u<=ti;u++){var c=l[u];c&&(i&&r.getEleLevelForLayerLevel(c.level)!==i.level||e(c,s,i))}};yt.haveLayers=function(){for(var t=this,e=!1,r=$a;r<=ti;r++){var a=t.layersByLevel[r];if(a&&a.length>0){e=!0;break}}return e};yt.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=cr(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))};yt.invalidateLayer=function(t){if(this.lastInvalidationTime=cr(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];kr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n<r.length;n++){var i=r[n]._private.rscratch.imgLayerCaches;i&&(i[e]=null)}}};yt.refineElementTextures=function(t){var e=this;e.updateElementsInLayers(t,function(a,n,i){var s=a.replacement;if(s||(s=a.replacement=e.makeLayer(a.bb,a.level),s.replaces=a,s.eles=a.eles),!s.reqs)for(var o=0;o<s.eles.length;o++)e.queueLayer(s,s.eles[o])})};yt.enqueueElementRefinement=function(t){this.eleTxrDeqs.merge(t),this.scheduleElementRefinement()};yt.queueLayer=function(t,e){var r=this,a=r.layersQueue,n=t.elesQueue,i=n.hasId=n.hasId||{};if(!t.replacement){if(e){if(i[e.id()])return;n.push(e),i[e.id()]=!0}t.reqs?(t.reqs++,a.updateItem(t)):(t.reqs=1,a.push(t))}};yt.dequeue=function(t){for(var e=this,r=e.layersQueue,a=[],n=0;n<C0&&r.size()!==0;){var i=r.peek();if(i.replacement){r.pop();continue}if(i.replaces&&i!==i.replaces.replacement){r.pop();continue}if(i.invalid){r.pop();continue}var s=i.elesQueue.shift();s&&(e.drawEleInLayer(i,s,i.level,t),n++),a.length===0&&a.push(!0),i.elesQueue.length===0&&(r.pop(),i.reqs=0,i.replaces&&e.applyLayerReplacement(i),e.requestRedraw())}return a};yt.applyLayerReplacement=function(t){var e=this,r=e.layersByLevel[t.level],a=t.replaces,n=r.indexOf(a);if(!(n<0||a.invalid)){r[n]=t;for(var i=0;i<t.eles.length;i++){var s=t.eles[i]._private,o=s.imgLayerCaches=s.imgLayerCaches||{};o&&(o[t.level]=t)}e.requestRedraw()}};yt.requestRedraw=an(function(){var t=this.renderer;t.redrawHint("eles",!0),t.redrawHint("drag",!0),t.redraw()},100);yt.setupDequeueing=$f.setupDequeueing({deqRedrawThreshold:y0,deqCost:b0,deqAvgCost:w0,deqNoDrawCost:x0,deqFastCost:E0,deq:function(e,r){return e.dequeue(r)},onDeqd:Xo,shouldRedraw:Pd,priority:function(e){return e.renderer.beforeRenderPriorities.lyrTxrDeq}});var Vf={},Uc;function P0(t,e){for(var r=0;r<e.length;r++){var a=e[r];t.lineTo(a.x,a.y)}}function B0(t,e,r){for(var a,n=0;n<e.length;n++){var i=e[n];n===0&&(a=i),t.lineTo(i.x,i.y)}t.quadraticCurveTo(r.x,r.y,a.x,a.y)}function Kc(t,e,r){t.beginPath&&t.beginPath();for(var a=e,n=0;n<a.length;n++){var i=a[n];t.lineTo(i.x,i.y)}var s=r,o=r[0];t.moveTo(o.x,o.y);for(var n=1;n<s.length;n++){var i=s[n];t.lineTo(i.x,i.y)}t.closePath&&t.closePath()}function D0(t,e,r,a,n){t.beginPath&&t.beginPath(),t.arc(r,a,n,0,Math.PI*2,!1);var i=e,s=i[0];t.moveTo(s.x,s.y);for(var o=0;o<i.length;o++){var l=i[o];t.lineTo(l.x,l.y)}t.closePath&&t.closePath()}function R0(t,e,r,a){t.arc(e,r,a,0,Math.PI*2,!1)}Vf.arrowShapeImpl=function(t){return(Uc||(Uc={polygon:P0,"triangle-backcurve":B0,"triangle-tee":Kc,"circle-triangle":D0,"triangle-cross":Kc,circle:R0}))[t]};var rr={};rr.drawElement=function(t,e,r,a,n,i){var s=this;e.isNode()?s.drawNode(t,e,r,a,n,i):s.drawEdge(t,e,r,a,n,i)};rr.drawElementOverlay=function(t,e){var r=this;e.isNode()?r.drawNodeOverlay(t,e):r.drawEdgeOverlay(t,e)};rr.drawElementUnderlay=function(t,e){var r=this;e.isNode()?r.drawNodeUnderlay(t,e):r.drawEdgeUnderlay(t,e)};rr.drawCachedElementPortion=function(t,e,r,a,n,i,s,o){var l=this,u=r.getBoundingBox(e);if(!(u.w===0||u.h===0)){var c=r.getElement(e,u,a,n,i);if(c!=null){var d=o(l,e);if(d===0)return;var f=s(l,e),h=u.x1,v=u.y1,y=u.w,p=u.h,g,m,b,w,E;if(f!==0){var C=r.getRotationPoint(e);b=C.x,w=C.y,t.translate(b,w),t.rotate(f),E=l.getImgSmoothing(t),E||l.setImgSmoothing(t,!0);var x=r.getRotationOffset(e);g=x.x,m=x.y}else g=h,m=v;var T;d!==1&&(T=t.globalAlpha,t.globalAlpha=T*d),t.drawImage(c.texture.canvas,c.x,0,c.width,c.height,g,m,y,p),d!==1&&(t.globalAlpha=T),f!==0&&(t.rotate(-f),t.translate(-b,-w),E||l.setImgSmoothing(t,!1))}else r.drawElement(t,e)}};var A0=function(){return 0},L0=function(e,r){return e.getTextAngle(r,null)},M0=function(e,r){return e.getTextAngle(r,"source")},_0=function(e,r){return e.getTextAngle(r,"target")},I0=function(e,r){return r.effectiveOpacity()},eo=function(e,r){return r.pstyle("text-opacity").pfValue*r.effectiveOpacity()};rr.drawCachedElement=function(t,e,r,a,n,i){var s=this,o=s.data,l=o.eleTxrCache,u=o.lblTxrCache,c=o.slbTxrCache,d=o.tlbTxrCache,f=e.boundingBox(),h=i===!0?l.reasons.highQuality:null;if(!(f.w===0||f.h===0||!e.visible())&&(!a||el(f,a))){var v=e.isEdge(),y=e.element()._private.rscratch.badLine;s.drawElementUnderlay(t,e),s.drawCachedElementPortion(t,e,l,r,n,h,A0,I0),(!v||!y)&&s.drawCachedElementPortion(t,e,u,r,n,h,L0,eo),v&&!y&&(s.drawCachedElementPortion(t,e,c,r,n,h,M0,eo),s.drawCachedElementPortion(t,e,d,r,n,h,_0,eo)),s.drawElementOverlay(t,e)}};rr.drawElements=function(t,e){for(var r=this,a=0;a<e.length;a++){var n=e[a];r.drawElement(t,n)}};rr.drawCachedElements=function(t,e,r,a){for(var n=this,i=0;i<e.length;i++){var s=e[i];n.drawCachedElement(t,s,r,a)}};rr.drawCachedNodes=function(t,e,r,a){for(var n=this,i=0;i<e.length;i++){var s=e[i];s.isNode()&&n.drawCachedElement(t,s,r,a)}};rr.drawLayeredElements=function(t,e,r,a){var n=this,i=n.data.lyrTxrCache.getLayers(e,r);if(i)for(var s=0;s<i.length;s++){var o=i[s],l=o.bb;l.w===0||l.h===0||t.drawImage(o.canvas,l.x1,l.y1,l.w,l.h)}else n.drawCachedElements(t,e,r,a)};var hr={};hr.drawEdge=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(i&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var l;r&&(l=r,t.translate(-l.x1,-l.y1));var u=i?e.pstyle("opacity").value:1,c=i?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,f=e.pstyle("line-style").value,h=e.pstyle("width").pfValue,v=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,p=e.pstyle("line-outline-color").value,g=u*c,m=u*c,b=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:g;d==="straight-triangle"?(s.eleStrokeStyle(t,e,M),s.drawEdgeTrianglePath(e,t,o.allpts)):(t.lineWidth=h,t.lineCap=v,s.eleStrokeStyle(t,e,M),s.drawEdgePath(e,t,o.allpts,f),t.lineCap="butt")},w=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:g;if(t.lineWidth=h+y,t.lineCap=v,y>0)s.colorStrokeStyle(t,p[0],p[1],p[2],M);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,o.allpts):(s.drawEdgePath(e,t,o.allpts,f),t.lineCap="butt")},E=function(){n&&s.drawEdgeOverlay(t,e)},C=function(){n&&s.drawEdgeUnderlay(t,e)},x=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;s.drawArrowheads(t,e,M)},T=function(){s.drawElementText(t,e,null,a)};t.lineJoin="round";var k=e.pstyle("ghost").value==="yes";if(k){var P=e.pstyle("ghost-offset-x").pfValue,B=e.pstyle("ghost-offset-y").pfValue,D=e.pstyle("ghost-opacity").value,R=g*D;t.translate(P,B),b(R),x(R),t.translate(-P,-B)}else w();C(),b(),x(),E(),T(),r&&t.translate(l.x1,l.y1)}};var Hf=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a){if(a.visible()){var n=a.pstyle("".concat(e,"-opacity")).value;if(n!==0){var i=this,s=i.usePaths(),o=a._private.rscratch,l=a.pstyle("".concat(e,"-padding")).pfValue,u=2*l,c=a.pstyle("".concat(e,"-color")).value;r.lineWidth=u,o.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",i.colorStrokeStyle(r,c[0],c[1],c[2],n),i.drawEdgePath(a,r,o.allpts,"solid")}}}};hr.drawEdgeOverlay=Hf("overlay");hr.drawEdgeUnderlay=Hf("underlay");hr.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,s,o=!1,l=this.usePaths(),u=t.pstyle("line-dash-pattern").pfValue,c=t.pstyle("line-dash-offset").pfValue;if(l){var d=r.join("$"),f=n.pathCacheKey&&n.pathCacheKey===d;f?(s=e=n.pathCache,o=!0):(s=e=new Path2D,n.pathCacheKey=d,n.pathCache=s)}if(i.setLineDash)switch(a){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(u),i.lineDashOffset=c;break;case"solid":i.setLineDash([]);break}if(!o&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var h=2;h+3<r.length;h+=4)e.quadraticCurveTo(r[h],r[h+1],r[h+2],r[h+3]);break;case"straight":case"haystack":for(var v=2;v+1<r.length;v+=2)e.lineTo(r[v],r[v+1]);break;case"segments":if(n.isRound){var y=Lt(n.roundCorners),p;try{for(y.s();!(p=y.n()).done;){var g=p.value;Rf(e,g)}}catch(b){y.e(b)}finally{y.f()}e.lineTo(r[r.length-2],r[r.length-1])}else for(var m=2;m+1<r.length;m+=2)e.lineTo(r[m],r[m+1]);break}e=i,l?e.stroke(s):e.stroke(),e.setLineDash&&e.setLineDash([])};hr.drawEdgeTrianglePath=function(t,e,r){e.fillStyle=e.strokeStyle;for(var a=t.pstyle("width").pfValue,n=0;n+1<r.length;n+=2){var i=[r[n+2]-r[n],r[n+3]-r[n+1]],s=Math.sqrt(i[0]*i[0]+i[1]*i[1]),o=[i[1]/s,-i[0]/s],l=[o[0]*a/2,o[1]*a/2];e.beginPath(),e.moveTo(r[n]-l[0],r[n+1]-l[1]),e.lineTo(r[n]+l[0],r[n+1]+l[1]),e.lineTo(r[n+2],r[n+3]),e.closePath(),e.fill()}};hr.drawArrowheads=function(t,e,r){var a=e._private.rscratch,n=a.edgeType==="haystack";n||this.drawArrowhead(t,e,"source",a.arrowStartX,a.arrowStartY,a.srcArrowAngle,r),this.drawArrowhead(t,e,"mid-target",a.midX,a.midY,a.midtgtArrowAngle,r),this.drawArrowhead(t,e,"mid-source",a.midX,a.midY,a.midsrcArrowAngle,r),n||this.drawArrowhead(t,e,"target",a.arrowEndX,a.arrowEndY,a.tgtArrowAngle,r)};hr.drawArrowhead=function(t,e,r,a,n,i,s){if(!(isNaN(a)||a==null||isNaN(n)||n==null||isNaN(i)||i==null)){var o=this,l=e.pstyle(r+"-arrow-shape").value;if(l!=="none"){var u=e.pstyle(r+"-arrow-fill").value==="hollow"?"both":"filled",c=e.pstyle(r+"-arrow-fill").value,d=e.pstyle("width").pfValue,f=e.pstyle(r+"-arrow-width"),h=f.value==="match-line"?d:f.pfValue;f.units==="%"&&(h*=d);var v=e.pstyle("opacity").value;s===void 0&&(s=v);var y=t.globalCompositeOperation;(s!==1||c==="hollow")&&(t.globalCompositeOperation="destination-out",o.colorFillStyle(t,255,255,255,1),o.colorStrokeStyle(t,255,255,255,1),o.drawArrowShape(e,t,u,d,l,h,a,n,i),t.globalCompositeOperation=y);var p=e.pstyle(r+"-arrow-color").value;o.colorFillStyle(t,p[0],p[1],p[2],s),o.colorStrokeStyle(t,p[0],p[1],p[2],s),o.drawArrowShape(e,t,c,d,l,h,a,n,i)}}};hr.drawArrowShape=function(t,e,r,a,n,i,s,o,l){var u=this,c=this.usePaths()&&n!=="triangle-cross",d=!1,f,h=e,v={x:s,y:o},y=t.pstyle("arrow-scale").value,p=this.getArrowWidth(a,y),g=u.arrowShapes[n];if(c){var m=u.arrowPathCache=u.arrowPathCache||[],b=Ur(n),w=m[b];w!=null?(f=e=w,d=!0):(f=e=new Path2D,m[b]=f)}d||(e.beginPath&&e.beginPath(),c?g.draw(e,1,0,{x:0,y:0},1):g.draw(e,p,l,v,a),e.closePath&&e.closePath()),e=h,c&&(e.translate(s,o),e.rotate(l),e.scale(p,p)),(r==="filled"||r==="both")&&(c?e.fill(f):e.fill()),(r==="hollow"||r==="both")&&(e.lineWidth=i/(c?p:1),e.lineJoin="miter",c?e.stroke(f):e.stroke()),c&&(e.scale(1/p,1/p),e.rotate(-l),e.translate(-s,-o))};var hl={};hl.safeDrawImage=function(t,e,r,a,n,i,s,o,l,u){if(!(n<=0||i<=0||l<=0||u<=0))try{t.drawImage(e,r,a,n,i,s,o,l,u)}catch(c){He(c)}};hl.drawInscribedImage=function(t,e,r,a,n){var i=this,s=r.position(),o=s.x,l=s.y,u=r.cy().style(),c=u.getIndexedStyle.bind(u),d=c(r,"background-fit","value",a),f=c(r,"background-repeat","value",a),h=r.width(),v=r.height(),y=r.padding()*2,p=h+(c(r,"background-width-relative-to","value",a)==="inner"?0:y),g=v+(c(r,"background-height-relative-to","value",a)==="inner"?0:y),m=r._private.rscratch,b=c(r,"background-clip","value",a),w=b==="node",E=c(r,"background-image-opacity","value",a)*n,C=c(r,"background-image-smoothing","value",a),x=r.pstyle("corner-radius").value;x!=="auto"&&(x=r.pstyle("corner-radius").pfValue);var T=e.width||e.cachedW,k=e.height||e.cachedH;(T==null||k==null)&&(document.body.appendChild(e),T=e.cachedW=e.width||e.offsetWidth,k=e.cachedH=e.height||e.offsetHeight,document.body.removeChild(e));var P=T,B=k;if(c(r,"background-width","value",a)!=="auto"&&(c(r,"background-width","units",a)==="%"?P=c(r,"background-width","pfValue",a)*p:P=c(r,"background-width","pfValue",a)),c(r,"background-height","value",a)!=="auto"&&(c(r,"background-height","units",a)==="%"?B=c(r,"background-height","pfValue",a)*g:B=c(r,"background-height","pfValue",a)),!(P===0||B===0)){if(d==="contain"){var D=Math.min(p/P,g/B);P*=D,B*=D}else if(d==="cover"){var D=Math.max(p/P,g/B);P*=D,B*=D}var R=o-p/2,A=c(r,"background-position-x","units",a),M=c(r,"background-position-x","pfValue",a);A==="%"?R+=(p-P)*M:R+=M;var _=c(r,"background-offset-x","units",a),L=c(r,"background-offset-x","pfValue",a);_==="%"?R+=(p-P)*L:R+=L;var I=l-g/2,H=c(r,"background-position-y","units",a),G=c(r,"background-position-y","pfValue",a);H==="%"?I+=(g-B)*G:I+=G;var O=c(r,"background-offset-y","units",a),$=c(r,"background-offset-y","pfValue",a);O==="%"?I+=(g-B)*$:I+=$,m.pathCache&&(R-=o,I-=l,o=0,l=0);var Y=t.globalAlpha;t.globalAlpha=E;var te=i.getImgSmoothing(t),J=!1;if(C==="no"&&te?(i.setImgSmoothing(t,!1),J=!0):C==="yes"&&!te&&(i.setImgSmoothing(t,!0),J=!0),f==="no-repeat")w&&(t.save(),m.pathCache?t.clip(m.pathCache):(i.nodeShapes[i.getNodeShape(r)].draw(t,o,l,p,g,x,m),t.clip())),i.safeDrawImage(t,e,0,0,T,k,R,I,P,B),w&&t.restore();else{var re=t.createPattern(e,f);t.fillStyle=re,i.nodeShapes[i.getNodeShape(r)].draw(t,o,l,p,g,x,m),t.translate(R,I),t.fill(),t.translate(-R,-I)}t.globalAlpha=Y,J&&i.setImgSmoothing(t,te)}};var Qr={};Qr.eleTextBiggerThanMin=function(t,e){if(!e){var r=t.cy().zoom(),a=this.getPixelRatio(),n=Math.ceil(Qo(r*a));e=Math.pow(2,n)}var i=t.pstyle("font-size").pfValue*e,s=t.pstyle("min-zoomed-font-size").pfValue;return!(i<s)};Qr.drawElementText=function(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(a==null){if(i&&!s.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var l=s.getLabelJustification(e);t.textAlign=l,t.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,c=e.pstyle("label"),d=e.pstyle("source-label"),f=e.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!f||!f.value))return;t.textAlign="center",t.textBaseline="bottom"}var h=!r,v;r&&(v=r,t.translate(-v.x1,-v.y1)),n==null?(s.drawText(t,e,null,h,i),e.isEdge()&&(s.drawText(t,e,"source",h,i),s.drawText(t,e,"target",h,i))):s.drawText(t,e,n,h,i),r&&t.translate(v.x1,v.y1)};Qr.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r<this.fontCaches.length;r++)if(e=this.fontCaches[r],e.context===t)return e;return e={context:t},this.fontCaches.push(e),e};Qr.setupTextStyle=function(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle("font-style").strValue,n=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,l=e.pstyle("text-outline-opacity").value*o,u=e.pstyle("color").value,c=e.pstyle("text-outline-color").value;t.font=a+" "+s+" "+n+" "+i,t.lineJoin="round",this.colorFillStyle(t,u[0],u[1],u[2],o),this.colorStrokeStyle(t,c[0],c[1],c[2],l)};function O0(t,e,r,a,n){var i=Math.min(a,n),s=i/2,o=e+a/2,l=r+n/2;t.beginPath(),t.arc(o,l,s,0,Math.PI*2),t.closePath()}function Wc(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(i,a/2,n/2);t.beginPath(),t.moveTo(e+s,r),t.lineTo(e+a-s,r),t.quadraticCurveTo(e+a,r,e+a,r+s),t.lineTo(e+a,r+n-s),t.quadraticCurveTo(e+a,r+n,e+a-s,r+n),t.lineTo(e+s,r+n),t.quadraticCurveTo(e,r+n,e,r+n-s),t.lineTo(e,r+s),t.quadraticCurveTo(e,r,e+s,r),t.closePath()}Qr.getTextAngle=function(t,e){var r,a=t._private,n=a.rscratch,i=e?e+"-":"",s=t.pstyle(i+"text-rotation");if(s.strValue==="autorotate"){var o=Rt(n,"labelAngle",e);r=t.isEdge()?o:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Qr.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,s=i.rscratch,o=n?e.effectiveOpacity():1;if(!(n&&(o===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var l=Rt(s,"labelX",r),u=Rt(s,"labelY",r),c,d,f=this.getLabelText(e,r);if(f!=null&&f!==""&&!isNaN(l)&&!isNaN(u)){this.setupTextStyle(t,e,n);var h=r?r+"-":"",v=Rt(s,"labelWidth",r),y=Rt(s,"labelHeight",r),p=e.pstyle(h+"text-margin-x").pfValue,g=e.pstyle(h+"text-margin-y").pfValue,m=e.isEdge(),b=e.pstyle("text-halign").value,w=e.pstyle("text-valign").value;m&&(b="center",w="center"),l+=p,u+=g;var E;switch(a?E=this.getTextAngle(e,r):E=0,E!==0&&(c=l,d=u,t.translate(c,d),t.rotate(E),l=0,u=0),w){case"top":break;case"center":u+=y/2;break;case"bottom":u+=y;break}var C=e.pstyle("text-background-opacity").value,x=e.pstyle("text-border-opacity").value,T=e.pstyle("text-border-width").pfValue,k=e.pstyle("text-background-padding").pfValue,P=e.pstyle("text-background-shape").strValue,B=P==="round-rectangle"||P==="roundrectangle",D=P==="circle",R=2;if(C>0||T>0&&x>0){var A=t.fillStyle,M=t.strokeStyle,_=t.lineWidth,L=e.pstyle("text-background-color").value,I=e.pstyle("text-border-color").value,H=e.pstyle("text-border-style").value,G=C>0,O=T>0&&x>0,$=l-k;switch(b){case"left":$-=v;break;case"center":$-=v/2;break}var Y=u-y-k,te=v+2*k,J=y+2*k;if(G&&(t.fillStyle="rgba(".concat(L[0],",").concat(L[1],",").concat(L[2],",").concat(C*o,")")),O&&(t.strokeStyle="rgba(".concat(I[0],",").concat(I[1],",").concat(I[2],",").concat(x*o,")"),t.lineWidth=T,t.setLineDash))switch(H){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=T/4,t.setLineDash([]);break;default:t.setLineDash([]);break}if(B?(t.beginPath(),Wc(t,$,Y,te,J,R)):D?(t.beginPath(),O0(t,$,Y,te,J)):(t.beginPath(),t.rect($,Y,te,J)),G&&t.fill(),O&&t.stroke(),O&&H==="double"){var re=T/2;t.beginPath(),B?Wc(t,$+re,Y+re,te-2*re,J-2*re,R):t.rect($+re,Y+re,te-2*re,J-2*re),t.stroke()}t.fillStyle=A,t.strokeStyle=M,t.lineWidth=_,t.setLineDash&&t.setLineDash([])}var ne=2*e.pstyle("text-outline-width").pfValue;if(ne>0&&(t.lineWidth=ne),e.pstyle("text-wrap").value==="wrap"){var oe=Rt(s,"labelWrapCachedLines",r),ee=Rt(s,"labelLineHeight",r),q=v/2,K=this.getLabelJustification(e);switch(K==="auto"||(b==="left"?K==="left"?l+=-v:K==="center"&&(l+=-q):b==="center"?K==="left"?l+=-q:K==="right"&&(l+=q):b==="right"&&(K==="center"?l+=q:K==="right"&&(l+=v))),w){case"top":u-=(oe.length-1)*ee;break;case"center":case"bottom":u-=(oe.length-1)*ee;break}for(var W=0;W<oe.length;W++)ne>0&&t.strokeText(oe[W],l,u),t.fillText(oe[W],l,u),u+=ee}else ne>0&&t.strokeText(f,l,u),t.fillText(f,l,u);E!==0&&(t.rotate(-E),t.translate(-c,-d))}}};var _r={};_r.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,l,u=e._private,c=u.rscratch,d=e.position();if(!(!se(d.x)||!se(d.y))&&!(i&&!e.visible())){var f=i?e.effectiveOpacity():1,h=s.usePaths(),v,y=!1,p=e.padding();o=e.width()+2*p,l=e.height()+2*p;var g;r&&(g=r,t.translate(-g.x1,-g.y1));for(var m=e.pstyle("background-image"),b=m.value,w=new Array(b.length),E=new Array(b.length),C=0,x=0;x<b.length;x++){var T=b[x],k=w[x]=T!=null&&T!=="none";if(k){var P=e.cy().style().getIndexedStyle(e,"background-image-crossorigin","value",x);C++,E[x]=s.getCachedImage(T,P,function(){u.backgroundTimestamp=Date.now(),e.emitAndNotify("background")})}}var B=e.pstyle("background-blacken").value,D=e.pstyle("border-width").pfValue,R=e.pstyle("background-opacity").value*f,A=e.pstyle("border-color").value,M=e.pstyle("border-style").value,_=e.pstyle("border-join").value,L=e.pstyle("border-cap").value,I=e.pstyle("border-position").value,H=e.pstyle("border-dash-pattern").pfValue,G=e.pstyle("border-dash-offset").pfValue,O=e.pstyle("border-opacity").value*f,$=e.pstyle("outline-width").pfValue,Y=e.pstyle("outline-color").value,te=e.pstyle("outline-style").value,J=e.pstyle("outline-opacity").value*f,re=e.pstyle("outline-offset").value,ne=e.pstyle("corner-radius").value;ne!=="auto"&&(ne=e.pstyle("corner-radius").pfValue);var oe=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:R;s.eleFillStyle(t,e,S)},ee=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:O;s.colorStrokeStyle(t,A[0],A[1],A[2],S)},q=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:J;s.colorStrokeStyle(t,Y[0],Y[1],Y[2],S)},K=function(S,N,U,j){var X=s.nodePathCache=s.nodePathCache||[],ve=kd(U==="polygon"?U+","+j.join(","):U,""+N,""+S,""+ne),ae=X[ve],le,de=!1;return ae!=null?(le=ae,de=!0,c.pathCache=le):(le=new Path2D,X[ve]=c.pathCache=le),{path:le,cacheHit:de}},W=e.pstyle("shape").strValue,Q=e.pstyle("shape-polygon-points").pfValue;if(h){t.translate(d.x,d.y);var ie=K(o,l,W,Q);v=ie.path,y=ie.cacheHit}var ge=function(){if(!y){var S=d;h&&(S={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(v||t,S.x,S.y,o,l,ne,c)}h?t.fill(v):t.fill()},Me=function(){for(var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:f,N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,U=u.backgrounding,j=0,X=0;X<E.length;X++){var ve=e.cy().style().getIndexedStyle(e,"background-image-containment","value",X);if(N&&ve==="over"||!N&&ve==="inside"){j++;continue}w[X]&&E[X].complete&&!E[X].error&&(j++,s.drawInscribedImage(t,E[X],e,X,S))}u.backgrounding=j!==C,U!==u.backgrounding&&e.updateStyle(!1)},Te=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:f;s.hasPie(e)&&(s.drawPie(t,e,N),S&&(h||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,o,l,ne,c)))},Ee=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:f;s.hasStripe(e)&&(t.save(),h?t.clip(c.pathCache):(s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,o,l,ne,c),t.clip()),s.drawStripe(t,e,N),t.restore(),S&&(h||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,o,l,ne,c)))},be=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:f,N=(B>0?B:-B)*S,U=B>0?0:255;B!==0&&(s.colorFillStyle(t,U,U,U,N),h?t.fill(v):t.fill())},ce=function(){if(D>0){if(t.lineWidth=D,t.lineCap=L,t.lineJoin=_,t.setLineDash)switch(M){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(H),t.lineDashOffset=G;break;case"solid":case"double":t.setLineDash([]);break}if(I!=="center"){if(t.save(),t.lineWidth*=2,I==="inside")h?t.clip(v):t.clip();else{var S=new Path2D;S.rect(-o/2-D,-l/2-D,o+2*D,l+2*D),S.addPath(v),t.clip(S,"evenodd")}h?t.stroke(v):t.stroke(),t.restore()}else h?t.stroke(v):t.stroke();if(M==="double"){t.lineWidth=D/3;var N=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",h?t.stroke(v):t.stroke(),t.globalCompositeOperation=N}t.setLineDash&&t.setLineDash([])}},ye=function(){if($>0){if(t.lineWidth=$,t.lineCap="butt",t.setLineDash)switch(te){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var S=d;h&&(S={x:0,y:0});var N=s.getNodeShape(e),U=D;I==="inside"&&(U=0),I==="outside"&&(U*=2);var j=(o+U+($+re))/o,X=(l+U+($+re))/l,ve=o*j,ae=l*X,le=s.nodeShapes[N].points,de;if(h){var we=K(ve,ae,N,le);de=we.path}if(N==="ellipse")s.drawEllipsePath(de||t,S.x,S.y,ve,ae);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(N)){var ke=0,Pe=0,he=0;N==="round-diamond"?ke=(U+re+$)*1.4:N==="round-heptagon"?(ke=(U+re+$)*1.075,he=-(U/2+re+$)/35):N==="round-hexagon"?ke=(U+re+$)*1.12:N==="round-pentagon"?(ke=(U+re+$)*1.13,he=-(U/2+re+$)/15):N==="round-tag"?(ke=(U+re+$)*1.12,Pe=(U/2+$+re)*.07):N==="round-triangle"&&(ke=(U+re+$)*(Math.PI/2),he=-(U+re/2+$)/Math.PI),ke!==0&&(j=(o+ke)/o,ve=o*j,["round-hexagon","round-tag"].includes(N)||(X=(l+ke)/l,ae=l*X)),ne=ne==="auto"?Od(ve,ae):ne;for(var Re=ve/2,_e=ae/2,ut=ne+(U+$+re)/2,Qe=new Array(le.length/2),qt=new Array(le.length/2),Je=0;Je<le.length/2;Je++)Qe[Je]={x:S.x+Pe+Re*le[Je*2],y:S.y+he+_e*le[Je*2+1]};var tt,nt,vt,jt,Xe=Qe.length;for(nt=Qe[Xe-1],tt=0;tt<Xe;tt++)vt=Qe[tt%Xe],jt=Qe[(tt+1)%Xe],qt[tt]=fl(nt,vt,jt,ut),nt=vt,vt=jt;s.drawRoundPolygonPath(de||t,S.x+Pe,S.y+he,o*j,l*X,le,qt)}else if(["roundrectangle","round-rectangle"].includes(N))ne=ne==="auto"?Pr(ve,ae):ne,s.drawRoundRectanglePath(de||t,S.x,S.y,ve,ae,ne+(U+$+re)/2);else if(["cutrectangle","cut-rectangle"].includes(N))ne=ne==="auto"?tl():ne,s.drawCutRectanglePath(de||t,S.x,S.y,ve,ae,null,ne+(U+$+re)/4);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(N))ne=ne==="auto"?Pr(ve,ae):ne,s.drawBottomRoundRectanglePath(de||t,S.x,S.y,ve,ae,ne+(U+$+re)/2);else if(N==="barrel")s.drawBarrelPath(de||t,S.x,S.y,ve,ae);else if(N.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(N)){var ar=(U+$+re)/o;le=jn(Yn(le,ar)),s.drawPolygonPath(de||t,S.x,S.y,o,l,le)}else{var Vt=(U+$+re)/o;le=jn(Yn(le,-Vt)),s.drawPolygonPath(de||t,S.x,S.y,o,l,le)}if(h?t.stroke(de):t.stroke(),te==="double"){t.lineWidth=U/3;var pr=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",h?t.stroke(de):t.stroke(),t.globalCompositeOperation=pr}t.setLineDash&&t.setLineDash([])}},pe=function(){n&&s.drawNodeOverlay(t,e,d,o,l)},Se=function(){n&&s.drawNodeUnderlay(t,e,d,o,l)},Ce=function(){s.drawElementText(t,e,null,a)},De=e.pstyle("ghost").value==="yes";if(De){var Le=e.pstyle("ghost-offset-x").pfValue,qe=e.pstyle("ghost-offset-y").pfValue,ze=e.pstyle("ghost-opacity").value,Ie=ze*f;t.translate(Le,qe),q(),ye(),oe(ze*R),ge(),Me(Ie,!0),ee(ze*O),ce(),Te(B!==0||D!==0),Ee(B!==0||D!==0),Me(Ie,!1),be(Ie),t.translate(-Le,-qe)}h&&t.translate(-d.x,-d.y),Se(),h&&t.translate(d.x,d.y),q(),ye(),oe(),ge(),Me(f,!0),ee(),ce(),Te(B!==0||D!==0),Ee(B!==0||D!==0),Me(f,!1),be(),h&&t.translate(-d.x,-d.y),Ce(),pe(),r&&t.translate(g.x1,g.y1)}};var Gf=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a,n,i,s){var o=this;if(a.visible()){var l=a.pstyle("".concat(e,"-padding")).pfValue,u=a.pstyle("".concat(e,"-opacity")).value,c=a.pstyle("".concat(e,"-color")).value,d=a.pstyle("".concat(e,"-shape")).value,f=a.pstyle("".concat(e,"-corner-radius")).value;if(u>0){if(n=n||a.position(),i==null||s==null){var h=a.padding();i=a.width()+2*h,s=a.height()+2*h}o.colorFillStyle(r,c[0],c[1],c[2],u),o.nodeShapes[d].draw(r,n.x,n.y,i+l*2,s+l*2,f),r.fill()}}}};_r.drawNodeOverlay=Gf("overlay");_r.drawNodeUnderlay=Gf("underlay");_r.hasPie=function(t){return t=t[0],t._private.hasPie};_r.hasStripe=function(t){return t=t[0],t._private.hasStripe};_r.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle("pie-size"),s=e.pstyle("pie-hole"),o=e.pstyle("pie-start-angle").pfValue,l=a.x,u=a.y,c=e.width(),d=e.height(),f=Math.min(c,d)/2,h,v=0,y=this.usePaths();if(y&&(l=0,u=0),i.units==="%"?f=f*i.pfValue:i.pfValue!==void 0&&(f=i.pfValue/2),s.units==="%"?h=f*s.pfValue:s.pfValue!==void 0&&(h=s.pfValue/2),!(h>=f))for(var p=1;p<=n.pieBackgroundN;p++){var g=e.pstyle("pie-"+p+"-background-size").value,m=e.pstyle("pie-"+p+"-background-color").value,b=e.pstyle("pie-"+p+"-background-opacity").value*r,w=g/100;w+v>1&&(w=1-v);var E=1.5*Math.PI+2*Math.PI*v;E+=o;var C=2*Math.PI*w,x=E+C;g===0||v>=1||v+w>1||(h===0?(t.beginPath(),t.moveTo(l,u),t.arc(l,u,f,E,x),t.closePath()):(t.beginPath(),t.arc(l,u,f,E,x),t.arc(l,u,h,x,E,!0),t.closePath()),this.colorFillStyle(t,m[0],m[1],m[2],b),t.fill(),v+=w)}};_r.drawStripe=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=a.x,s=a.y,o=e.width(),l=e.height(),u=0,c=this.usePaths();t.save();var d=e.pstyle("stripe-direction").value,f=e.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":t.rotate(-Math.PI/2);break}var h=o,v=l;f.units==="%"?(h=h*f.pfValue,v=v*f.pfValue):f.pfValue!==void 0&&(h=f.pfValue,v=f.pfValue),c&&(i=0,s=0),s-=h/2,i-=v/2;for(var y=1;y<=n.stripeBackgroundN;y++){var p=e.pstyle("stripe-"+y+"-background-size").value,g=e.pstyle("stripe-"+y+"-background-color").value,m=e.pstyle("stripe-"+y+"-background-opacity").value*r,b=p/100;b+u>1&&(b=1-u),!(p===0||u>=1||u+b>1)&&(t.beginPath(),t.rect(i,s+v*u,h,v*b),t.closePath(),this.colorFillStyle(t,g[0],g[1],g[2],m),t.fill(),u+=b)}t.restore()};var Pt={},N0=100;Pt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};Pt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;n<e.length;n++)if(a=e[n],a.context===t){r=!1;break}return r&&(a={context:t},e.push(a)),a};Pt.createGradientStyleFor=function(t,e,r,a,n){var i,s=this.usePaths(),o=r.pstyle(e+"-gradient-stop-colors").value,l=r.pstyle(e+"-gradient-stop-positions").pfValue;if(a==="radial-gradient")if(r.isEdge()){var u=r.sourceEndpoint(),c=r.targetEndpoint(),d=r.midpoint(),f=Kr(u,d),h=Kr(c,d);i=t.createRadialGradient(d.x,d.y,0,d.x,d.y,Math.max(f,h))}else{var v=s?{x:0,y:0}:r.position(),y=r.paddedWidth(),p=r.paddedHeight();i=t.createRadialGradient(v.x,v.y,0,v.x,v.y,Math.max(y,p))}else if(r.isEdge()){var g=r.sourceEndpoint(),m=r.targetEndpoint();i=t.createLinearGradient(g.x,g.y,m.x,m.y)}else{var b=s?{x:0,y:0}:r.position(),w=r.paddedWidth(),E=r.paddedHeight(),C=w/2,x=E/2,T=r.pstyle("background-gradient-direction").value;switch(T){case"to-bottom":i=t.createLinearGradient(b.x,b.y-x,b.x,b.y+x);break;case"to-top":i=t.createLinearGradient(b.x,b.y+x,b.x,b.y-x);break;case"to-left":i=t.createLinearGradient(b.x+C,b.y,b.x-C,b.y);break;case"to-right":i=t.createLinearGradient(b.x-C,b.y,b.x+C,b.y);break;case"to-bottom-right":case"to-right-bottom":i=t.createLinearGradient(b.x-C,b.y-x,b.x+C,b.y+x);break;case"to-top-right":case"to-right-top":i=t.createLinearGradient(b.x-C,b.y+x,b.x+C,b.y-x);break;case"to-bottom-left":case"to-left-bottom":i=t.createLinearGradient(b.x+C,b.y-x,b.x-C,b.y+x);break;case"to-top-left":case"to-left-top":i=t.createLinearGradient(b.x+C,b.y+x,b.x-C,b.y-x);break}}if(!i)return null;for(var k=l.length===o.length,P=o.length,B=0;B<P;B++)i.addColorStop(k?l[B]:B/(P-1),"rgba("+o[B][0]+","+o[B][1]+","+o[B][2]+","+n+")");return i};Pt.gradientFillStyle=function(t,e,r,a){var n=this.createGradientStyleFor(t,"background",e,r,a);if(!n)return null;t.fillStyle=n};Pt.colorFillStyle=function(t,e,r,a,n){t.fillStyle="rgba("+e+","+r+","+a+","+n+")"};Pt.eleFillStyle=function(t,e,r){var a=e.pstyle("background-fill").value;if(a==="linear-gradient"||a==="radial-gradient")this.gradientFillStyle(t,e,a,r);else{var n=e.pstyle("background-color").value;this.colorFillStyle(t,n[0],n[1],n[2],r)}};Pt.gradientStrokeStyle=function(t,e,r,a){var n=this.createGradientStyleFor(t,"line",e,r,a);if(!n)return null;t.strokeStyle=n};Pt.colorStrokeStyle=function(t,e,r,a,n){t.strokeStyle="rgba("+e+","+r+","+a+","+n+")"};Pt.eleStrokeStyle=function(t,e,r){var a=e.pstyle("line-fill").value;if(a==="linear-gradient"||a==="radial-gradient")this.gradientStrokeStyle(t,e,a,r);else{var n=e.pstyle("line-color").value;this.colorStrokeStyle(t,n[0],n[1],n[2],r)}};Pt.matchCanvasSize=function(t){var e=this,r=e.data,a=e.findContainerClientCoords(),n=a[2],i=a[3],s=e.getPixelRatio(),o=e.motionBlurPxRatio;(t===e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE]||t===e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG])&&(s=o);var l=n*s,u=i*s,c;if(!(l===e.canvasWidth&&u===e.canvasHeight)){e.fontCaches=null;var d=r.canvasContainer;d.style.width=n+"px",d.style.height=i+"px";for(var f=0;f<e.CANVAS_LAYERS;f++)c=r.canvases[f],c.width=l,c.height=u,c.style.width=n+"px",c.style.height=i+"px";for(var f=0;f<e.BUFFER_COUNT;f++)c=r.bufferCanvases[f],c.width=l,c.height=u,c.style.width=n+"px",c.style.height=i+"px";e.textureMult=1,s<=1&&(c=r.bufferCanvases[e.TEXTURE_BUFFER],e.textureMult=2,c.width=l*e.textureMult,c.height=u*e.textureMult),e.canvasWidth=l,e.canvasHeight=u,e.pixelRatio=s}};Pt.renderTo=function(t,e,r,a){this.render({forcedContext:t,forcedZoom:e,forcedPan:r,drawAllLayers:!0,forcedPxRatio:a})};Pt.clearCanvas=function(){var t=this,e=t.data;function r(a){a.clearRect(0,0,t.canvasWidth,t.canvasHeight)}r(e.contexts[t.NODE]),r(e.contexts[t.DRAG])};Pt.render=function(t){var e=this;t=t||Rd();var r=e.cy,a=t.forcedContext,n=t.drawAllLayers,i=t.drawOnlyNodeLayer,s=t.forcedZoom,o=t.forcedPan,l=t.forcedPxRatio===void 0?this.getPixelRatio():t.forcedPxRatio,u=e.data,c=u.canvasNeedsRedraw,d=e.textureOnViewport&&!a&&(e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming),f=t.motionBlur!==void 0?t.motionBlur:e.motionBlur,h=e.motionBlurPxRatio,v=r.hasCompoundNodes(),y=e.hoverData.draggingEles,p=!!(e.hoverData.selecting||e.touchData.selecting);f=f&&!a&&e.motionBlurEnabled&&!p;var g=f;a||(e.prevPxRatio!==l&&(e.invalidateContainerClientCoordsCache(),e.matchCanvasSize(e.container),e.redrawHint("eles",!0),e.redrawHint("drag",!0)),e.prevPxRatio=l),!a&&e.motionBlurTimeout&&clearTimeout(e.motionBlurTimeout),f&&(e.mbFrames==null&&(e.mbFrames=0),e.mbFrames++,e.mbFrames<3&&(g=!1),e.mbFrames>e.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(c[e.NODE]=!0,c[e.SELECT_BOX]=!0);var m=r.style(),b=r.zoom(),w=s!==void 0?s:b,E=r.pan(),C={x:E.x,y:E.y},x={zoom:b,pan:{x:E.x,y:E.y}},T=e.prevViewport,k=T===void 0||x.zoom!==T.zoom||x.pan.x!==T.pan.x||x.pan.y!==T.pan.y;!k&&!(y&&!v)&&(e.motionBlurPxRatio=1),o&&(C=o),w*=l,C.x*=l,C.y*=l;var P=e.getCachedZSortedEles();function B(ee,q,K,W,Q){var ie=ee.globalCompositeOperation;ee.globalCompositeOperation="destination-out",e.colorFillStyle(ee,255,255,255,e.motionBlurTransparency),ee.fillRect(q,K,W,Q),ee.globalCompositeOperation=ie}function D(ee,q){var K,W,Q,ie;!e.clearingMotionBlur&&(ee===u.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||ee===u.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(K={x:E.x*h,y:E.y*h},W=b*h,Q=e.canvasWidth*h,ie=e.canvasHeight*h):(K=C,W=w,Q=e.canvasWidth,ie=e.canvasHeight),ee.setTransform(1,0,0,1,0,0),q==="motionBlur"?B(ee,0,0,Q,ie):!a&&(q===void 0||q)&&ee.clearRect(0,0,Q,ie),n||(ee.translate(K.x,K.y),ee.scale(W,W)),o&&ee.translate(o.x,o.y),s&&ee.scale(s,s)}if(d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var R=e.data.bufferContexts[e.TEXTURE_BUFFER];R.setTransform(1,0,0,1,0,0),R.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:R,drawOnlyNodeLayer:!0,forcedPxRatio:l*e.textureMult});var x=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}c[e.DRAG]=!1,c[e.NODE]=!1;var A=u.contexts[e.NODE],M=e.textureCache.texture,x=e.textureCache.viewport;A.setTransform(1,0,0,1,0,0),f?B(A,0,0,x.width,x.height):A.clearRect(0,0,x.width,x.height);var _=m.core("outside-texture-bg-color").value,L=m.core("outside-texture-bg-opacity").value;e.colorFillStyle(A,_[0],_[1],_[2],L),A.fillRect(0,0,x.width,x.height);var b=r.zoom();D(A,!1),A.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/l,x.height/x.zoom/l),A.drawImage(M,x.mpan.x,x.mpan.y,x.width/x.zoom/l,x.height/x.zoom/l)}else e.textureOnViewport&&!a&&(e.textureCache=null);var I=r.extent(),H=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),G=e.hideEdgesOnViewport&&H,O=[];if(O[e.NODE]=!c[e.NODE]&&f&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,O[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),O[e.DRAG]=!c[e.DRAG]&&f&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,O[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),c[e.NODE]||n||i||O[e.NODE]){var $=f&&!O[e.NODE]&&h!==1,A=a||($?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:u.contexts[e.NODE]),Y=f&&!$?"motionBlur":void 0;D(A,Y),G?e.drawCachedNodes(A,P.nondrag,l,I):e.drawLayeredElements(A,P.nondrag,l,I),e.debug&&e.drawDebugPoints(A,P.nondrag),!n&&!f&&(c[e.NODE]=!1)}if(!i&&(c[e.DRAG]||n||O[e.DRAG])){var $=f&&!O[e.DRAG]&&h!==1,A=a||($?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:u.contexts[e.DRAG]);D(A,f&&!$?"motionBlur":void 0),G?e.drawCachedNodes(A,P.drag,l,I):e.drawCachedElements(A,P.drag,l,I),e.debug&&e.drawDebugPoints(A,P.drag),!n&&!f&&(c[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,D),f&&h!==1){var te=u.contexts[e.NODE],J=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],re=u.contexts[e.DRAG],ne=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],oe=function(q,K,W){q.setTransform(1,0,0,1,0,0),W||!g?q.clearRect(0,0,e.canvasWidth,e.canvasHeight):B(q,0,0,e.canvasWidth,e.canvasHeight);var Q=h;q.drawImage(K,0,0,e.canvasWidth*Q,e.canvasHeight*Q,0,0,e.canvasWidth,e.canvasHeight)};(c[e.NODE]||O[e.NODE])&&(oe(te,J,O[e.NODE]),c[e.NODE]=!1),(c[e.DRAG]||O[e.DRAG])&&(oe(re,ne,O[e.DRAG]),c[e.DRAG]=!1)}e.prevViewport=x,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),f&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,c[e.NODE]=!0,c[e.DRAG]=!0,e.redraw()},N0)),a||r.emit("render")};var La;Pt.drawSelectionRectangle=function(t,e){var r=this,a=r.cy,n=r.data,i=a.style(),s=t.drawOnlyNodeLayer,o=t.drawAllLayers,l=n.canvasNeedsRedraw,u=t.forcedContext;if(r.showFps||!s&&l[r.SELECT_BOX]&&!o){var c=u||n.contexts[r.SELECT_BOX];if(e(c),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),f=i.core("selection-box-border-width").value/d;c.lineWidth=f,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),f>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(n.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),h=n.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(h.x,h.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var v=r.lastRedrawTime;if(r.showFps&&v){v=Math.round(v);var y=Math.round(1e3/v),p="1 frame = "+v+" ms = "+y+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!La){var g=c.measureText(p);La=g.actualBoundingBoxAscent}c.fillText(p,0,La);var m=60;c.strokeRect(0,La+10,250,20),c.fillRect(0,La+10,250*Math.min(y/m,1),20)}o||(l[r.SELECT_BOX]=!1)}};function jc(t,e,r){var a=t.createShader(e);if(t.shaderSource(a,r),t.compileShader(a),!t.getShaderParameter(a,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(a));return a}function z0(t,e,r){var a=jc(t,t.VERTEX_SHADER,e),n=jc(t,t.FRAGMENT_SHADER,r),i=t.createProgram();if(t.attachShader(i,a),t.attachShader(i,n),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS))throw new Error("Could not initialize shaders");return i}function $0(t,e,r){r===void 0&&(r=e);var a=t.makeOffscreenCanvas(e,r),n=a.context=a.getContext("2d");return a.clear=function(){return n.clearRect(0,0,a.width,a.height)},a.clear(),a}function pl(t){var e=t.pixelRatio,r=t.cy.zoom(),a=t.cy.pan();return{zoom:r*e,pan:{x:a.x*e,y:a.y*e}}}function F0(t){var e=t.pixelRatio,r=t.cy.zoom();return r*e}function q0(t,e,r,a,n){var i=a*r+e.x,s=n*r+e.y;return s=Math.round(t.canvasHeight-s),[i,s]}function V0(t,e){return e.picking?!0:t.pstyle("background-fill").value!=="solid"||t.pstyle("background-image").strValue!=="none"?!1:t.pstyle("border-width").value===0||t.pstyle("border-opacity").value===0?!0:t.pstyle("border-style").value==="solid"}function H0(t,e){if(t.length!==e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}function zr(t,e,r){var a=t[0]/255,n=t[1]/255,i=t[2]/255,s=e,o=r||new Array(4);return o[0]=a*s,o[1]=n*s,o[2]=i*s,o[3]=s,o}function na(t,e){var r=e||new Array(4);return r[0]=(t>>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function G0(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function U0(t,e){var r=t.createTexture();return r.buffer=function(a){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,a),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Uf(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function Kf(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function K0(t,e,r,a,n,i){switch(e){case t.FLOAT:return new Float32Array(r.buffer,i*a,n);case t.INT:return new Int32Array(r.buffer,i*a,n)}}function W0(t,e,r,a){var n=Uf(t,e),i=at(n,2),s=i[0],o=i[1],l=Kf(t,o,a),u=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,u),t.bufferData(t.ARRAY_BUFFER,l,t.STATIC_DRAW),o===t.FLOAT?t.vertexAttribPointer(r,s,o,!1,0,0):o===t.INT&&t.vertexAttribIPointer(r,s,o,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),u}function Xt(t,e,r,a){var n=Uf(t,r),i=at(n,3),s=i[0],o=i[1],l=i[2],u=Kf(t,o,e*s),c=s*l,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*c,t.DYNAMIC_DRAW),t.enableVertexAttribArray(a),o===t.FLOAT?t.vertexAttribPointer(a,s,o,!1,c,0):o===t.INT&&t.vertexAttribIPointer(a,s,o,c,0),t.vertexAttribDivisor(a,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var f=new Array(e),h=0;h<e;h++)f[h]=K0(t,o,u,c,s,h);return d.dataArray=u,d.stride=c,d.size=s,d.getView=function(v){return f[v]},d.setPoint=function(v,y,p){var g=f[v];g[0]=y,g[1]=p},d.bufferSubData=function(v){t.bindBuffer(t.ARRAY_BUFFER,d),v?t.bufferSubData(t.ARRAY_BUFFER,0,u,0,v*s):t.bufferSubData(t.ARRAY_BUFFER,0,u)},d}function j0(t,e,r){for(var a=9,n=new Float32Array(e*a),i=new Array(e),s=0;s<e;s++){var o=s*a*4;i[s]=new Float32Array(n.buffer,o,a)}var l=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,l),t.bufferData(t.ARRAY_BUFFER,n.byteLength,t.DYNAMIC_DRAW);for(var u=0;u<3;u++){var c=r+u;t.enableVertexAttribArray(c),t.vertexAttribPointer(c,3,t.FLOAT,!1,36,u*12),t.vertexAttribDivisor(c,1)}return t.bindBuffer(t.ARRAY_BUFFER,null),l.getMatrixView=function(d){return i[d]},l.setData=function(d,f){i[f].set(d,0)},l.bufferSubData=function(){t.bindBuffer(t.ARRAY_BUFFER,l),t.bufferSubData(t.ARRAY_BUFFER,0,n)},l}function Y0(t){var e=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,e);var r=t.createTexture();return t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0),t.bindFramebuffer(t.FRAMEBUFFER,null),e.setFramebufferAttachmentSizes=function(a,n){t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,a,n,0,t.RGBA,t.UNSIGNED_BYTE,null)},e}var Yc=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function to(){var t=new Yc(9);return Yc!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Xc(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function X0(t,e,r){var a=e[0],n=e[1],i=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],d=e[8],f=r[0],h=r[1],v=r[2],y=r[3],p=r[4],g=r[5],m=r[6],b=r[7],w=r[8];return t[0]=f*a+h*s+v*u,t[1]=f*n+h*o+v*c,t[2]=f*i+h*l+v*d,t[3]=y*a+p*s+g*u,t[4]=y*n+p*o+g*c,t[5]=y*i+p*l+g*d,t[6]=m*a+b*s+w*u,t[7]=m*n+b*o+w*c,t[8]=m*i+b*l+w*d,t}function Vn(t,e,r){var a=e[0],n=e[1],i=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],d=e[8],f=r[0],h=r[1];return t[0]=a,t[1]=n,t[2]=i,t[3]=s,t[4]=o,t[5]=l,t[6]=f*a+h*s+u,t[7]=f*n+h*o+c,t[8]=f*i+h*l+d,t}function Zc(t,e,r){var a=e[0],n=e[1],i=e[2],s=e[3],o=e[4],l=e[5],u=e[6],c=e[7],d=e[8],f=Math.sin(r),h=Math.cos(r);return t[0]=h*a+f*s,t[1]=h*n+f*o,t[2]=h*i+f*l,t[3]=h*s-f*a,t[4]=h*o-f*n,t[5]=h*l-f*i,t[6]=u,t[7]=c,t[8]=d,t}function Ro(t,e,r){var a=r[0],n=r[1];return t[0]=a*e[0],t[1]=a*e[1],t[2]=a*e[2],t[3]=n*e[3],t[4]=n*e[4],t[5]=n*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function Z0(t,e,r){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/r,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}var Q0=(function(){function t(e,r,a,n){Ar(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.texSize=r,this.texRows=a,this.texHeight=Math.floor(r/a),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=n(e,r,r),this.scratch=n(e,r,this.texHeight,"scratch")}return Lr(t,[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(r){var a=r.w,n=r.h,i=this.texHeight,s=this.texSize,o=i/n,l=a*o,u=n*o;return l>s&&(o=s/a,l=a*o,u=n*o),{scale:o,texW:l,texH:u}}},{key:"draw",value:function(r,a,n){var i=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,o=this.texRows,l=this.texHeight,u=this.getScale(a),c=u.scale,d=u.texW,f=u.texH,h=function(b,w){if(n&&w){var E=w.context,C=b.x,x=b.row,T=C,k=l*x;E.save(),E.translate(T,k),E.scale(c,c),n(E,a),E.restore()}},v=[null,null],y=function(){h(i.freePointer,i.canvas),v[0]={x:i.freePointer.x,y:i.freePointer.row*l,w:d,h:f},v[1]={x:i.freePointer.x+d,y:i.freePointer.row*l,w:0,h:f},i.freePointer.x+=d,i.freePointer.x==s&&(i.freePointer.x=0,i.freePointer.row++)},p=function(){var b=i.scratch,w=i.canvas;b.clear(),h({x:0,row:0},b);var E=s-i.freePointer.x,C=d-E,x=l;{var T=i.freePointer.x,k=i.freePointer.row*l,P=E;w.context.drawImage(b,0,0,P,x,T,k,P,x),v[0]={x:T,y:k,w:P,h:f}}{var B=E,D=(i.freePointer.row+1)*l,R=C;w&&w.context.drawImage(b,B,0,R,x,0,D,R,x),v[1]={x:0,y:D,w:R,h:f}}i.freePointer.x=C,i.freePointer.row++},g=function(){i.freePointer.x=0,i.freePointer.row++};if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=o-1)return!1;this.freePointer.x===s?(g(),y()):this.enableWrapping?p():(g(),y())}return this.keyToLocation.set(r,v),this.needsBuffer=!0,v}},{key:"getOffsets",value:function(r){return this.keyToLocation.get(r)}},{key:"isEmpty",value:function(){return this.freePointer.x===0&&this.freePointer.row===0}},{key:"canFit",value:function(r){if(this.locked)return!1;var a=this.texSize,n=this.texRows,i=this.getScale(r),s=i.texW;return this.freePointer.x+s>a?this.freePointer.row<n-1:!0}},{key:"bufferIfNeeded",value:function(r){this.texture||(this.texture=U0(r,this.debugID)),this.needsBuffer&&(this.texture.buffer(this.canvas),this.needsBuffer=!1,this.locked&&(this.canvas=null,this.scratch=null))}},{key:"dispose",value:function(){this.texture&&(this.texture.deleteTexture(),this.texture=null),this.canvas=null,this.scratch=null,this.locked=!0}}])})(),J0=(function(){function t(e,r,a,n){Ar(this,t),this.r=e,this.texSize=r,this.texRows=a,this.createTextureCanvas=n,this.atlases=[],this.styleKeyToAtlas=new Map,this.markedKeys=new Set}return Lr(t,[{key:"getKeys",value:function(){return new Set(this.styleKeyToAtlas.keys())}},{key:"_createAtlas",value:function(){var r=this.r,a=this.texSize,n=this.texRows,i=this.createTextureCanvas;return new Q0(r,a,n,i)}},{key:"_getScratchCanvas",value:function(){if(!this.scratch){var r=this.r,a=this.texSize,n=this.texRows,i=this.createTextureCanvas,s=Math.floor(a/n);this.scratch=i(r,a,s,"scratch")}return this.scratch}},{key:"draw",value:function(r,a,n){var i=this.styleKeyToAtlas.get(r);return i||(i=this.atlases[this.atlases.length-1],(!i||!i.canFit(a))&&(i&&i.lock(),i=this._createAtlas(),this.atlases.push(i)),i.draw(r,a,n),this.styleKeyToAtlas.set(r,i)),i}},{key:"getAtlas",value:function(r){return this.styleKeyToAtlas.get(r)}},{key:"hasAtlas",value:function(r){return this.styleKeyToAtlas.has(r)}},{key:"markKeyForGC",value:function(r){this.markedKeys.add(r)}},{key:"gc",value:function(){var r=this,a=this.markedKeys;if(a.size===0){console.log("nothing to garbage collect");return}var n=[],i=new Map,s=null,o=Lt(this.atlases),l;try{var u=function(){var d=l.value,f=d.getKeys(),h=eb(a,f);if(h.size===0)return n.push(d),f.forEach(function(E){return i.set(E,d)}),1;s||(s=r._createAtlas(),n.push(s));var v=Lt(f),y;try{for(v.s();!(y=v.n()).done;){var p=y.value;if(!h.has(p)){var g=d.getOffsets(p),m=at(g,2),b=m[0],w=m[1];s.canFit({w:b.w+w.w,h:b.h})||(s.lock(),s=r._createAtlas(),n.push(s)),d.canvas&&(r._copyTextureToNewAtlas(p,d,s),i.set(p,s))}}}catch(E){v.e(E)}finally{v.f()}d.dispose()};for(o.s();!(l=o.n()).done;)u()}catch(c){o.e(c)}finally{o.f()}this.atlases=n,this.styleKeyToAtlas=i,this.markedKeys=new Set}},{key:"_copyTextureToNewAtlas",value:function(r,a,n){var i=a.getOffsets(r),s=at(i,2),o=s[0],l=s[1];if(l.w===0)n.draw(r,o,function(f){f.drawImage(a.canvas,o.x,o.y,o.w,o.h,0,0,o.w,o.h)});else{var u=this._getScratchCanvas();u.clear(),u.context.drawImage(a.canvas,o.x,o.y,o.w,o.h,0,0,o.w,o.h),u.context.drawImage(a.canvas,l.x,l.y,l.w,l.h,o.w,0,l.w,l.h);var c=o.w+l.w,d=o.h;n.draw(r,{w:c,h:d},function(f){f.drawImage(u,0,0,c,d,0,0,c,d)})}}},{key:"getCounts",value:function(){return{keyCount:this.styleKeyToAtlas.size,atlasCount:new Set(this.styleKeyToAtlas.values()).size}}}])})();function eb(t,e){return t.intersection?t.intersection(e):new Set(Gn(t).filter(function(r){return e.has(r)}))}var tb=(function(){function t(e,r){Ar(this,t),this.r=e,this.globalOptions=r,this.atlasSize=r.webglTexSize,this.maxAtlasesPerBatch=r.webglTexPerBatch,this.renderTypes=new Map,this.collections=new Map,this.typeAndIdToKey=new Map}return Lr(t,[{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"addAtlasCollection",value:function(r,a){var n=this.globalOptions,i=n.webglTexSize,s=n.createTextureCanvas,o=a.texRows,l=this._cacheScratchCanvas(s),u=new J0(this.r,i,o,l);this.collections.set(r,u)}},{key:"addRenderType",value:function(r,a){var n=a.collection;if(!this.collections.has(n))throw new Error("invalid atlas collection name '".concat(n,"'"));var i=this.collections.get(n),s=xe({type:r,atlasCollection:i},a);this.renderTypes.set(r,s)}},{key:"getRenderTypeOpts",value:function(r){return this.renderTypes.get(r)}},{key:"getAtlasCollection",value:function(r){return this.collections.get(r)}},{key:"_cacheScratchCanvas",value:function(r){var a=-1,n=-1,i=null;return function(s,o,l,u){return u?((!i||o!=a||l!=n)&&(a=o,n=l,i=r(s,o,l)),i):r(s,o,l)}}},{key:"_key",value:function(r,a){return"".concat(r,"-").concat(a)}},{key:"invalidate",value:function(r){var a=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.forceRedraw,s=i===void 0?!1:i,o=n.filterEle,l=o===void 0?function(){return!0}:o,u=n.filterType,c=u===void 0?function(){return!0}:u,d=!1,f=!1,h=Lt(r),v;try{for(h.s();!(v=h.n()).done;){var y=v.value;if(l(y)){var p=Lt(this.renderTypes.values()),g;try{var m=function(){var w=g.value,E=w.type;if(c(E)){var C=a.collections.get(w.collection),x=w.getKey(y),T=Array.isArray(x)?x:[x];if(s)T.forEach(function(D){return C.markKeyForGC(D)}),f=!0;else{var k=w.getID?w.getID(y):y.id(),P=a._key(E,k),B=a.typeAndIdToKey.get(P);B!==void 0&&!H0(T,B)&&(d=!0,a.typeAndIdToKey.delete(P),B.forEach(function(D){return C.markKeyForGC(D)}))}}};for(p.s();!(g=p.n()).done;)m()}catch(b){p.e(b)}finally{p.f()}}}}catch(b){h.e(b)}finally{h.f()}return f&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var r=Lt(this.collections.values()),a;try{for(r.s();!(a=r.n()).done;){var n=a.value;n.gc()}}catch(i){r.e(i)}finally{r.f()}}},{key:"getOrCreateAtlas",value:function(r,a,n,i){var s=this.renderTypes.get(a),o=this.collections.get(s.collection),l=!1,u=o.draw(i,n,function(f){s.drawClipped?(f.save(),f.beginPath(),f.rect(0,0,n.w,n.h),f.clip(),s.drawElement(f,r,n,!0,!0),f.restore()):s.drawElement(f,r,n,!0,!0),l=!0});if(l){var c=s.getID?s.getID(r):r.id(),d=this._key(a,c);this.typeAndIdToKey.has(d)?this.typeAndIdToKey.get(d).push(i):this.typeAndIdToKey.set(d,[i])}return u}},{key:"getAtlasInfo",value:function(r,a){var n=this,i=this.renderTypes.get(a),s=i.getKey(r),o=Array.isArray(s)?s:[s];return o.map(function(l){var u=i.getBoundingBox(r,l),c=n.getOrCreateAtlas(r,a,u,l),d=c.getOffsets(l),f=at(d,2),h=f[0],v=f[1];return{atlas:c,tex:h,tex1:h,tex2:v,bb:u}})}},{key:"getDebugInfo",value:function(){var r=[],a=Lt(this.collections),n;try{for(a.s();!(n=a.n()).done;){var i=at(n.value,2),s=i[0],o=i[1],l=o.getCounts(),u=l.keyCount,c=l.atlasCount;r.push({type:s,keyCount:u,atlasCount:c})}}catch(d){a.e(d)}finally{a.f()}return r}}])})(),rb=(function(){function t(e){Ar(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return Lr(t,[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,a){return a})}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0}},{key:"getAtlasIndexForBatch",value:function(r){var a=this.batchAtlases.indexOf(r);if(a<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),a=this.batchAtlases.length-1}return a}}])})(),ab=`
float circleSD(vec2 p, float r) {
return distance(vec2(0), p) - r; // signed distance
}
`,nb=`
float rectangleSD(vec2 p, vec2 b) {
vec2 d = abs(p)-b;
return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);
}
`,ib=`
float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {
cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;
cr.x = (p.y > 0.0) ? cr.x : cr.y;
vec2 q = abs(p) - b + cr.x;
return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;
}
`,sb=`
float ellipseSD(vec2 p, vec2 ab) {
p = abs( p ); // symmetry
// find root with Newton solver
vec2 q = ab*(p-ab);
float w = (q.x<q.y)? 1.570796327 : 0.0;
for( int i=0; i<5; i++ ) {
vec2 cs = vec2(cos(w),sin(w));
vec2 u = ab*vec2( cs.x,cs.y);
vec2 v = ab*vec2(-cs.y,cs.x);
w = w + dot(p-u,v)/(dot(p-u,u)+dot(v,v));
}
// compute final point and distance
float d = length(p-ab*vec2(cos(w),sin(w)));
// return signed distance
return (dot(p/ab,p/ab)>1.0) ? d : -d;
}
`,Fa={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},ri={IGNORE:1,USE_BB:2},ro=0,Qc=1,Jc=2,ao=3,ia=4,Sn=5,Ma=6,_a=7,ob=(function(){function t(e,r,a){Ar(this,t),this.r=e,this.gl=r,this.maxInstances=a.webglBatchSize,this.atlasSize=a.webglTexSize,this.bgColor=a.bgColor,this.debug=a.webglDebug,this.batchDebugInfo=[],a.enableWrapping=!0,a.createTextureCanvas=$0,this.atlasManager=new tb(e,a),this.batchManager=new rb(a),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(Fa.SCREEN),this.pickingProgram=this._createShaderProgram(Fa.PICKING),this.vao=this._createVAO()}return Lr(t,[{key:"addAtlasCollection",value:function(r,a){this.atlasManager.addAtlasCollection(r,a)}},{key:"addTextureAtlasRenderType",value:function(r,a){this.atlasManager.addRenderType(r,a)}},{key:"addSimpleShapeRenderType",value:function(r,a){this.simpleShapeOptions.set(r,a)}},{key:"invalidate",value:function(r){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=a.type,i=this.atlasManager;return n?i.invalidate(r,{filterType:function(o){return o===n},forceRedraw:!0}):i.invalidate(r)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(r){var a=this.gl,n=`#version 300 es
precision highp float;
uniform mat3 uPanZoomMatrix;
uniform int uAtlasSize;
// instanced
in vec2 aPosition; // a vertex from the unit square
in mat3 aTransform; // used to transform verticies, eg into a bounding box
in int aVertType; // the type of thing we are rendering
// the z-index that is output when using picking mode
in vec4 aIndex;
// For textures
in int aAtlasId; // which shader unit/atlas to use
in vec4 aTex; // x/y/w/h of texture in atlas
// for edges
in vec4 aPointAPointB;
in vec4 aPointCPointD;
in vec2 aLineWidth; // also used for node border width
// simple shapes
in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]
in vec4 aColor; // also used for edges
in vec4 aBorderColor; // aLineWidth is used for border width
// output values passed to the fragment shader
out vec2 vTexCoord;
out vec4 vColor;
out vec2 vPosition;
// flat values are not interpolated
flat out int vAtlasId;
flat out int vVertType;
flat out vec2 vTopRight;
flat out vec2 vBotLeft;
flat out vec4 vCornerRadius;
flat out vec4 vBorderColor;
flat out vec2 vBorderWidth;
flat out vec4 vIndex;
void main(void) {
int vid = gl_VertexID;
vec2 position = aPosition; // TODO make this a vec3, simplifies some code below
if(aVertType == `.concat(ro,`) {
float texX = aTex.x; // texture coordinates
float texY = aTex.y;
float texW = aTex.z;
float texH = aTex.w;
if(vid == 1 || vid == 2 || vid == 4) {
texX += texW;
}
if(vid == 2 || vid == 4 || vid == 5) {
texY += texH;
}
float d = float(uAtlasSize);
vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1
gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);
}
else if(aVertType == `).concat(ia," || aVertType == ").concat(_a,`
|| aVertType == `).concat(Sn," || aVertType == ").concat(Ma,`) { // simple shapes
// the bounding box is needed by the fragment shader
vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat
vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat
vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated
// calculations are done in the fragment shader, just pass these along
vColor = aColor;
vCornerRadius = aCornerRadius;
vBorderColor = aBorderColor;
vBorderWidth = aLineWidth;
gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);
}
else if(aVertType == `).concat(Qc,`) {
vec2 source = aPointAPointB.xy;
vec2 target = aPointAPointB.zw;
// adjust the geometry so that the line is centered on the edge
position.y = position.y - 0.5;
// stretch the unit square into a long skinny rectangle
vec2 xBasis = target - source;
vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));
vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;
gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);
vColor = aColor;
}
else if(aVertType == `).concat(Jc,`) {
vec2 pointA = aPointAPointB.xy;
vec2 pointB = aPointAPointB.zw;
vec2 pointC = aPointCPointD.xy;
vec2 pointD = aPointCPointD.zw;
// adjust the geometry so that the line is centered on the edge
position.y = position.y - 0.5;
vec2 p0, p1, p2, pos;
if(position.x == 0.0) { // The left side of the unit square
p0 = pointA;
p1 = pointB;
p2 = pointC;
pos = position;
} else { // The right side of the unit square, use same approach but flip the geometry upside down
p0 = pointD;
p1 = pointC;
p2 = pointB;
pos = vec2(0.0, -position.y);
}
vec2 p01 = p1 - p0;
vec2 p12 = p2 - p1;
vec2 p21 = p1 - p2;
// Find the normal vector.
vec2 tangent = normalize(normalize(p12) + normalize(p01));
vec2 normal = vec2(-tangent.y, tangent.x);
// Find the vector perpendicular to p0 -> p1.
vec2 p01Norm = normalize(vec2(-p01.y, p01.x));
// Determine the bend direction.
float sigma = sign(dot(p01 + p21, normal));
float width = aLineWidth[0];
if(sign(pos.y) == -sigma) {
// This is an intersecting vertex. Adjust the position so that there's no overlap.
vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);
gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);
} else {
// This is a non-intersecting vertex. Treat it like a mitre join.
vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);
gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);
}
vColor = aColor;
}
else if(aVertType == `).concat(ao,` && vid < 3) {
// massage the first triangle into an edge arrow
if(vid == 0)
position = vec2(-0.15, -0.3);
if(vid == 1)
position = vec2( 0.0, 0.0);
if(vid == 2)
position = vec2( 0.15, -0.3);
gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);
vColor = aColor;
}
else {
gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space
}
vAtlasId = aAtlasId;
vVertType = aVertType;
vIndex = aIndex;
}
`),i=this.batchManager.getIndexArray(),s=`#version 300 es
precision highp float;
// declare texture unit for each texture atlas in the batch
`.concat(i.map(function(u){return"uniform sampler2D uTexture".concat(u,";")}).join(`
`),`
uniform vec4 uBGColor;
uniform float uZoom;
in vec2 vTexCoord;
in vec4 vColor;
in vec2 vPosition; // model coordinates
flat in int vAtlasId;
flat in vec4 vIndex;
flat in int vVertType;
flat in vec2 vTopRight;
flat in vec2 vBotLeft;
flat in vec4 vCornerRadius;
flat in vec4 vBorderColor;
flat in vec2 vBorderWidth;
out vec4 outColor;
`).concat(ab,`
`).concat(nb,`
`).concat(ib,`
`).concat(sb,`
vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha
return vec4(
top.rgb + (bot.rgb * (1.0 - top.a)),
top.a + (bot.a * (1.0 - top.a))
);
}
vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance
// scale to the zoom level so that borders don't look blurry when zoomed in
// note 1.5 is an aribitrary value chosen because it looks good
return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d)));
}
void main(void) {
if(vVertType == `).concat(ro,`) {
// look up the texel from the texture unit
`).concat(i.map(function(u){return"if(vAtlasId == ".concat(u,") outColor = texture(uTexture").concat(u,", vTexCoord);")}).join(`
else `),`
}
else if(vVertType == `).concat(ao,`) {
// mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';
outColor = blend(vColor, uBGColor);
outColor.a = 1.0; // make opaque, masks out line under arrow
}
else if(vVertType == `).concat(ia,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border
outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done
}
else if(vVertType == `).concat(ia," || vVertType == ").concat(_a,`
|| vVertType == `).concat(Sn," || vVertType == ").concat(Ma,`) { // use SDF
float outerBorder = vBorderWidth[0];
float innerBorder = vBorderWidth[1];
float borderPadding = outerBorder * 2.0;
float w = vTopRight.x - vBotLeft.x - borderPadding;
float h = vTopRight.y - vBotLeft.y - borderPadding;
vec2 b = vec2(w/2.0, h/2.0); // half width, half height
vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center
float d; // signed distance
if(vVertType == `).concat(ia,`) {
d = rectangleSD(p, b);
} else if(vVertType == `).concat(_a,` && w == h) {
d = circleSD(p, b.x); // faster than ellipse
} else if(vVertType == `).concat(_a,`) {
d = ellipseSD(p, b);
} else {
d = roundRectangleSD(p, b, vCornerRadius.wzyx);
}
// use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling
// we must smooth colors inwards, because we can't change pixels outside the shape's bounding box
if(d > 0.0) {
if(d > outerBorder) {
discard;
} else {
outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);
}
} else {
if(d > innerBorder) {
vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;
vec4 innerBorderColor = blend(vBorderColor, vColor);
outColor = distInterp(innerBorderColor, outerColor, d);
}
else {
vec4 outerColor;
if(innerBorder == 0.0 && outerBorder == 0.0) {
outerColor = vec4(0);
} else if(innerBorder == 0.0) {
outerColor = vBorderColor;
} else {
outerColor = blend(vBorderColor, vColor);
}
outColor = distInterp(vColor, outerColor, d - innerBorder);
}
}
}
else {
outColor = vColor;
}
`).concat(r.picking?`if(outColor.a == 0.0) discard;
else outColor = vIndex;`:"",`
}
`),o=z0(a,n,s);o.aPosition=a.getAttribLocation(o,"aPosition"),o.aIndex=a.getAttribLocation(o,"aIndex"),o.aVertType=a.getAttribLocation(o,"aVertType"),o.aTransform=a.getAttribLocation(o,"aTransform"),o.aAtlasId=a.getAttribLocation(o,"aAtlasId"),o.aTex=a.getAttribLocation(o,"aTex"),o.aPointAPointB=a.getAttribLocation(o,"aPointAPointB"),o.aPointCPointD=a.getAttribLocation(o,"aPointCPointD"),o.aLineWidth=a.getAttribLocation(o,"aLineWidth"),o.aColor=a.getAttribLocation(o,"aColor"),o.aCornerRadius=a.getAttribLocation(o,"aCornerRadius"),o.aBorderColor=a.getAttribLocation(o,"aBorderColor"),o.uPanZoomMatrix=a.getUniformLocation(o,"uPanZoomMatrix"),o.uAtlasSize=a.getUniformLocation(o,"uAtlasSize"),o.uBGColor=a.getUniformLocation(o,"uBGColor"),o.uZoom=a.getUniformLocation(o,"uZoom"),o.uTextures=[];for(var l=0;l<this.batchManager.getMaxAtlasesPerBatch();l++)o.uTextures.push(a.getUniformLocation(o,"uTexture".concat(l)));return o}},{key:"_createVAO",value:function(){var r=[0,0,1,0,1,1,0,0,1,1,0,1];this.vertexCount=r.length/2;var a=this.maxInstances,n=this.gl,i=this.program,s=n.createVertexArray();return n.bindVertexArray(s),W0(n,"vec2",i.aPosition,r),this.transformBuffer=j0(n,a,i.aTransform),this.indexBuffer=Xt(n,a,"vec4",i.aIndex),this.vertTypeBuffer=Xt(n,a,"int",i.aVertType),this.atlasIdBuffer=Xt(n,a,"int",i.aAtlasId),this.texBuffer=Xt(n,a,"vec4",i.aTex),this.pointAPointBBuffer=Xt(n,a,"vec4",i.aPointAPointB),this.pointCPointDBuffer=Xt(n,a,"vec4",i.aPointCPointD),this.lineWidthBuffer=Xt(n,a,"vec2",i.aLineWidth),this.colorBuffer=Xt(n,a,"vec4",i.aColor),this.cornerRadiusBuffer=Xt(n,a,"vec4",i.aCornerRadius),this.borderColorBuffer=Xt(n,a,"vec4",i.aBorderColor),n.bindVertexArray(null),s}},{key:"buffers",get:function(){var r=this;return this._buffers||(this._buffers=Object.keys(this).filter(function(a){return br(a,"Buffer")}).map(function(a){return r[a]})),this._buffers}},{key:"startFrame",value:function(r){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Fa.SCREEN;this.panZoomMatrix=r,this.renderTarget=a,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(r,a){return r.visible()?a&&a.isVisible?a.isVisible(r):!0:!1}},{key:"drawTexture",value:function(r,a,n){var i=this.atlasManager,s=this.batchManager,o=i.getRenderTypeOpts(n);if(this._isVisible(r,o)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&o.getTexPickingMode){var l=o.getTexPickingMode(r);if(l===ri.IGNORE)return;if(l==ri.USE_BB){this.drawPickingRectangle(r,a,n);return}}var u=i.getAtlasInfo(r,n),c=Lt(u),d;try{for(c.s();!(d=c.n()).done;){var f=d.value,h=f.atlas,v=f.tex1,y=f.tex2;s.canAddToCurrentBatch(h)||this.endBatch();for(var p=s.getAtlasIndexForBatch(h),g=0,m=[[v,!0],[y,!1]];g<m.length;g++){var b=at(m[g],2),w=b[0],E=b[1];if(w.w!=0){var C=this.instanceCount;this.vertTypeBuffer.getView(C)[0]=ro;var x=this.indexBuffer.getView(C);na(a,x);var T=this.atlasIdBuffer.getView(C);T[0]=p;var k=this.texBuffer.getView(C);k[0]=w.x,k[1]=w.y,k[2]=w.w,k[3]=w.h;var P=this.transformBuffer.getMatrixView(C);this.setTransformMatrix(r,P,o,f,E),this.instanceCount++,E||this.wrappedCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}catch(B){c.e(B)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(r,a,n,i){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=0;if(n.shapeProps&&n.shapeProps.padding&&(o=r.pstyle(n.shapeProps.padding).pfValue),i){var l=i.bb,u=i.tex1,c=i.tex2,d=u.w/(u.w+c.w);s||(d=1-d);var f=this._getAdjustedBB(l,o,s,d);this._applyTransformMatrix(a,f,n,r)}else{var h=n.getBoundingBox(r),v=this._getAdjustedBB(h,o,!0,1);this._applyTransformMatrix(a,v,n,r)}}},{key:"_applyTransformMatrix",value:function(r,a,n,i){var s,o;Xc(r);var l=n.getRotation?n.getRotation(i):0;if(l!==0){var u=n.getRotationPoint(i),c=u.x,d=u.y;Vn(r,r,[c,d]),Zc(r,r,l);var f=n.getRotationOffset(i);s=f.x+(a.xOffset||0),o=f.y+(a.yOffset||0)}else s=a.x1,o=a.y1;Vn(r,r,[s,o]),Ro(r,r,[a.w,a.h])}},{key:"_getAdjustedBB",value:function(r,a,n,i){var s=r.x1,o=r.y1,l=r.w,u=r.h,c=r.yOffset;a&&(s-=a,o-=a,l+=2*a,u+=2*a);var d=0,f=l*i;return n&&i<1?l=f:!n&&i<1&&(d=l-f,s+=d,l=f),{x1:s,y1:o,w:l,h:u,xOffset:d,yOffset:c}}},{key:"drawPickingRectangle",value:function(r,a,n){var i=this.atlasManager.getRenderTypeOpts(n),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=ia;var o=this.indexBuffer.getView(s);na(a,o);var l=this.colorBuffer.getView(s);zr([0,0,0],1,l);var u=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,u,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(r,a,n){var i=this.simpleShapeOptions.get(n);if(this._isVisible(r,i)){var s=i.shapeProps,o=this._getVertTypeForShape(r,s.shape);if(o===void 0||i.isSimple&&!i.isSimple(r,this.renderTarget)){this.drawTexture(r,a,n);return}var l=this.instanceCount;if(this.vertTypeBuffer.getView(l)[0]=o,o===Sn||o===Ma){var u=i.getBoundingBox(r),c=this._getCornerRadius(r,s.radius,u),d=this.cornerRadiusBuffer.getView(l);d[0]=c,d[1]=c,d[2]=c,d[3]=c,o===Ma&&(d[0]=0,d[2]=0)}var f=this.indexBuffer.getView(l);na(a,f);var h=this.renderTarget.picking?1:n==="node-body"?r.effectiveOpacity():1,v=this.renderTarget.picking?1:r.pstyle(s.opacity).value*h,y=r.pstyle(s.color).value,p=this.colorBuffer.getView(l);zr(y,v,p);var g=this.lineWidthBuffer.getView(l);if(g[0]=0,g[1]=0,s.border){var m=r.pstyle("border-width").value;if(m>0){var b=r.pstyle("border-color").value,w=h*r.pstyle("border-opacity").value,E=this.borderColorBuffer.getView(l);zr(b,w,E);var C=r.pstyle("border-position").value;if(C==="inside")g[0]=0,g[1]=-m;else if(C==="outside")g[0]=m,g[1]=0;else{var x=m/2;g[0]=x,g[1]=-x}}}var T=this.transformBuffer.getMatrixView(l);this.setTransformMatrix(r,T,i),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}},{key:"_getVertTypeForShape",value:function(r,a){var n=r.pstyle(a).value;switch(n){case"rectangle":return ia;case"ellipse":return _a;case"roundrectangle":case"round-rectangle":return Sn;case"bottom-round-rectangle":return Ma;default:return}}},{key:"_getCornerRadius",value:function(r,a,n){var i=n.w,s=n.h;if(r.pstyle(a).value==="auto")return Pr(i,s);var o=r.pstyle(a).pfValue,l=i/2,u=s/2;return Math.min(o,u,l)}},{key:"drawEdgeArrow",value:function(r,a,n){if(r.visible()){var i=r._private.rscratch,s,o,l;if(n==="source"?(s=i.arrowStartX,o=i.arrowStartY,l=i.srcArrowAngle):(s=i.arrowEndX,o=i.arrowEndY,l=i.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(o)||o==null||isNaN(l)||l==null)){var u=r.pstyle(n+"-arrow-shape").value;if(u!=="none"){var c=r.pstyle(n+"-arrow-color").value,d=r.pstyle("opacity").value,f=r.pstyle("line-opacity").value,h=d*f,v=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,p=this.r.getArrowWidth(v,y),g=this.instanceCount,m=this.transformBuffer.getMatrixView(g);Xc(m),Vn(m,m,[s,o]),Ro(m,m,[p,p]),Zc(m,m,l),this.vertTypeBuffer.getView(g)[0]=ao;var b=this.indexBuffer.getView(g);na(a,b);var w=this.colorBuffer.getView(g);zr(c,h,w),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}},{key:"drawEdgeLine",value:function(r,a){if(r.visible()){var n=this._getEdgePoints(r);if(n){var i=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,o=r.pstyle("width").pfValue,l=r.pstyle("line-color").value,u=i*s;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),n.length==4){var c=this.instanceCount;this.vertTypeBuffer.getView(c)[0]=Qc;var d=this.indexBuffer.getView(c);na(a,d);var f=this.colorBuffer.getView(c);zr(l,u,f);var h=this.lineWidthBuffer.getView(c);h[0]=o;var v=this.pointAPointBBuffer.getView(c);v[0]=n[0],v[1]=n[1],v[2]=n[2],v[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y<n.length-2;y+=2){var p=this.instanceCount;this.vertTypeBuffer.getView(p)[0]=Jc;var g=this.indexBuffer.getView(p);na(a,g);var m=this.colorBuffer.getView(p);zr(l,u,m);var b=this.lineWidthBuffer.getView(p);b[0]=o;var w=n[y-2],E=n[y-1],C=n[y],x=n[y+1],T=n[y+2],k=n[y+3],P=n[y+4],B=n[y+5];y==0&&(w=2*C-T+.001,E=2*x-k+.001),y==n.length-4&&(P=2*T-C+.001,B=2*k-x+.001);var D=this.pointAPointBBuffer.getView(p);D[0]=w,D[1]=E,D[2]=C,D[3]=x;var R=this.pointCPointDBuffer.getView(p);R[0]=T,R[1]=k,R[2]=P,R[3]=B,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(r){var a=r._private.rscratch;return!(a.badLine||a.allpts==null||isNaN(a.allpts[0]))}},{key:"_getEdgePoints",value:function(r){var a=r._private.rscratch;if(this._isValidEdge(r)){var n=a.allpts;if(n.length==4)return n;var i=this._getNumSegments(r);return this._getCurveSegmentPoints(n,i)}}},{key:"_getNumSegments",value:function(r){var a=15;return Math.min(Math.max(a,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(r,a){if(r.length==4)return r;for(var n=Array((a+1)*2),i=0;i<=a;i++)if(i==0)n[0]=r[0],n[1]=r[1];else if(i==a)n[i*2]=r[r.length-2],n[i*2+1]=r[r.length-1];else{var s=i/a;this._setCurvePoint(r,s,n,i*2)}return n}},{key:"_setCurvePoint",value:function(r,a,n,i){if(r.length<=2)n[i]=r[0],n[i+1]=r[1];else{for(var s=Array(r.length-2),o=0;o<s.length;o+=2){var l=(1-a)*r[o]+a*r[o+2],u=(1-a)*r[o+1]+a*r[o+3];s[o]=l,s[o+1]=u}return this._setCurvePoint(s,a,n,i)}}},{key:"endBatch",value:function(){var r=this.gl,a=this.vao,n=this.vertexCount,i=this.instanceCount;if(i!==0){var s=this.renderTarget.picking?this.pickingProgram:this.program;r.useProgram(s),r.bindVertexArray(a);var o=Lt(this.buffers),l;try{for(o.s();!(l=o.n()).done;){var u=l.value;u.bufferSubData(i)}}catch(v){o.e(v)}finally{o.f()}for(var c=this.batchManager.getAtlases(),d=0;d<c.length;d++)c[d].bufferIfNeeded(r);for(var f=0;f<c.length;f++)r.activeTexture(r.TEXTURE0+f),r.bindTexture(r.TEXTURE_2D,c[f].texture),r.uniform1i(s.uTextures[f],f);r.uniform1f(s.uZoom,F0(this.r)),r.uniformMatrix3fv(s.uPanZoomMatrix,!1,this.panZoomMatrix),r.uniform1i(s.uAtlasSize,this.batchManager.getAtlasSize());var h=zr(this.bgColor,1);r.uniform4fv(s.uBGColor,h),r.drawArraysInstanced(r.TRIANGLES,0,n,i),r.bindVertexArray(null),r.bindTexture(r.TEXTURE_2D,null),this.debug&&this.batchDebugInfo.push({count:i,atlasCount:c.length}),this.startBatch()}}},{key:"getDebugInfo",value:function(){var r=this.atlasManager.getDebugInfo(),a=r.reduce(function(s,o){return s+o.atlasCount},0),n=this.batchDebugInfo,i=n.reduce(function(s,o){return s+o.count},0);return{atlasInfo:r,totalAtlases:a,wrappedCount:this.wrappedCount,simpleCount:this.simpleCount,batchCount:n.length,batchInfo:n,totalInstances:i}}}])})(),Wf={};Wf.initWebgl=function(t,e){var r=this,a=r.data.contexts[r.WEBGL];t.bgColor=lb(r),t.webglTexSize=Math.min(t.webglTexSize,a.getParameter(a.MAX_TEXTURE_SIZE)),t.webglTexRows=Math.min(t.webglTexRows,54),t.webglTexRowsNodes=Math.min(t.webglTexRowsNodes,54),t.webglBatchSize=Math.min(t.webglBatchSize,16384),t.webglTexPerBatch=Math.min(t.webglTexPerBatch,a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS)),r.webglDebug=t.webglDebug,r.webglDebugShowAtlases=t.webglDebugShowAtlases,r.pickingFrameBuffer=Y0(a),r.pickingFrameBuffer.needsDraw=!0,r.drawing=new ob(r,a,t);var n=function(d){return function(f){return r.getTextAngle(f,d)}},i=function(d){return function(f){var h=f.pstyle(d);return h&&h.value}},s=function(d){return function(f){return f.pstyle("".concat(d,"-opacity")).value>0}},o=function(d){var f=d.pstyle("text-events").strValue==="yes";return f?ri.USE_BB:ri.IGNORE},l=function(d){var f=d.position(),h=f.x,v=f.y,y=d.outerWidth(),p=d.outerHeight();return{w:y,h:p,x1:h-y/2,y1:v-p/2}};r.drawing.addAtlasCollection("node",{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:l,isSimple:V0,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:l,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:l,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:o,getKey:no(e.getLabelKey,null),getBoundingBox:io(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:n(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:i("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:o,getKey:no(e.getSourceLabelKey,"source"),getBoundingBox:io(e.getSourceLabelBox,"source"),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:n("source"),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:i("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:o,getKey:no(e.getTargetLabelKey,"target"),getBoundingBox:io(e.getTargetLabelBox,"target"),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:n("target"),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:i("target-label")});var u=an(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(c,d){var f=!1;d&&d.length>0&&(f|=r.drawing.invalidate(d)),f&&u()}),ub(r)};function lb(t){var e=t.cy.container(),r=e&&e.style&&e.style.backgroundColor||"white";return bd(r)}function jf(t,e){var r=t._private.rscratch;return Rt(r,"labelWrapCachedLines",e)||[]}var no=function(e,r){return function(a){var n=e(a),i=jf(a,r);return i.length>1?i.map(function(s,o){return"".concat(n,"_").concat(o)}):n}},io=function(e,r){return function(a,n){var i=e(a);if(typeof n=="string"){var s=n.indexOf("_");if(s>0){var o=Number(n.substring(s+1)),l=jf(a,r),u=i.h/l.length,c=u*o,d=i.y1+c;return{x1:i.x1,w:i.w,y1:d,h:u,yOffset:c}}}return i}};function ub(t){{var e=t.render;t.render=function(i){i=i||{};var s=t.cy;t.webgl&&(s.zoom()>Ff?(cb(t),e.call(t,i)):(db(t),Xf(t,i,Fa.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(i){r.call(t,i),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(i,s,o,l){return yb(t,i,s)};{var a=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){a.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var n=t.notify;t.notify=function(i,s){n.call(t,i,s),i==="viewport"||i==="bounds"?t.pickingFrameBuffer.needsDraw=!0:i==="background"&&t.drawing.invalidate(s,{type:"node-body"})}}}function cb(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function db(t){var e=function(a){a.save(),a.setTransform(1,0,0,1,0,0),a.clearRect(0,0,t.canvasWidth,t.canvasHeight),a.restore()};e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function fb(t){var e=t.canvasWidth,r=t.canvasHeight,a=pl(t),n=a.pan,i=a.zoom,s=to();Vn(s,s,[n.x,n.y]),Ro(s,s,[i,i]);var o=to();Z0(o,e,r);var l=to();return X0(l,o,s),l}function Yf(t,e){var r=t.canvasWidth,a=t.canvasHeight,n=pl(t),i=n.pan,s=n.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,a),e.translate(i.x,i.y),e.scale(s,s)}function vb(t,e){t.drawSelectionRectangle(e,function(r){return Yf(t,r)})}function hb(t){var e=t.data.contexts[t.NODE];e.save(),Yf(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function pb(t){var e=function(n,i,s){for(var o=n.atlasManager.getAtlasCollection(i),l=t.data.contexts[t.NODE],u=o.atlases,c=0;c<u.length;c++){var d=u[c],f=d.canvas;if(f){var h=f.width,v=f.height,y=h*c,p=f.height*s,g=.4;l.save(),l.scale(g,g),l.drawImage(f,y,p),l.strokeStyle="black",l.rect(y,p,h,v),l.stroke(),l.restore()}}},r=0;e(t.drawing,"node",r++),e(t.drawing,"label",r++)}function gb(t,e,r,a,n){var i,s,o,l,u=pl(t),c=u.pan,d=u.zoom;{var f=q0(t,c,d,e,r),h=at(f,2),v=h[0],y=h[1],p=6;i=v-p/2,s=y-p/2,o=p,l=p}if(o===0||l===0)return[];var g=t.data.contexts[t.WEBGL];g.bindFramebuffer(g.FRAMEBUFFER,t.pickingFrameBuffer),t.pickingFrameBuffer.needsDraw&&(g.viewport(0,0,g.canvas.width,g.canvas.height),Xf(t,null,Fa.PICKING),t.pickingFrameBuffer.needsDraw=!1);var m=o*l,b=new Uint8Array(m*4);g.readPixels(i,s,o,l,g.RGBA,g.UNSIGNED_BYTE,b),g.bindFramebuffer(g.FRAMEBUFFER,null);for(var w=new Set,E=0;E<m;E++){var C=b.slice(E*4,E*4+4),x=G0(C)-1;x>=0&&w.add(x)}return w}function yb(t,e,r){var a=gb(t,e,r),n=t.getCachedZSortedEles(),i,s,o=Lt(a),l;try{for(o.s();!(l=o.n()).done;){var u=l.value,c=n[u];if(!i&&c.isNode()&&(i=c),!s&&c.isEdge()&&(s=c),i&&s)break}}catch(d){o.e(d)}finally{o.f()}return[i,s].filter(Boolean)}function so(t,e,r){var a=t.drawing;e+=1,r.isNode()?(a.drawNode(r,e,"node-underlay"),a.drawNode(r,e,"node-body"),a.drawTexture(r,e,"label"),a.drawNode(r,e,"node-overlay")):(a.drawEdgeLine(r,e),a.drawEdgeArrow(r,e,"source"),a.drawEdgeArrow(r,e,"target"),a.drawTexture(r,e,"label"),a.drawTexture(r,e,"edge-source-label"),a.drawTexture(r,e,"edge-target-label"))}function Xf(t,e,r){var a;t.webglDebug&&(a=performance.now());var n=t.drawing,i=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&vb(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var s=t.data.contexts[t.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var o=fb(t),l=t.getCachedZSortedEles();if(i=l.length,n.startFrame(o,r),r.screen){for(var u=0;u<l.nondrag.length;u++)so(t,u,l.nondrag[u]);for(var c=0;c<l.drag.length;c++)so(t,c,l.drag[c])}else if(r.picking)for(var d=0;d<l.length;d++)so(t,d,l[d]);n.endFrame(),r.screen&&t.webglDebugShowAtlases&&(hb(t),pb(t)),t.data.canvasNeedsRedraw[t.NODE]=!1,t.data.canvasNeedsRedraw[t.DRAG]=!1}if(t.webglDebug){var f=performance.now(),h=!1,v=Math.ceil(f-a),y=n.getDebugInfo(),p=["".concat(i," elements"),"".concat(y.totalInstances," instances"),"".concat(y.batchCount," batches"),"".concat(y.totalAtlases," atlases"),"".concat(y.wrappedCount," wrapped textures"),"".concat(y.simpleCount," simple shapes")].join(", ");if(h)console.log("WebGL (".concat(r.name,") - time ").concat(v,"ms, ").concat(p));else{console.log("WebGL (".concat(r.name,") - frame time ").concat(v,"ms")),console.log("Totals:"),console.log(" ".concat(p)),console.log("Texture Atlases Used:");var g=y.atlasInfo,m=Lt(g),b;try{for(m.s();!(b=m.n()).done;){var w=b.value;console.log(" ".concat(w.type,": ").concat(w.keyCount," keys, ").concat(w.atlasCount," atlases"))}}catch(E){m.e(E)}finally{m.f()}console.log("")}}t.data.gc&&(console.log("Garbage Collect!"),t.data.gc=!1,n.gc())}var Ir={};Ir.drawPolygonPath=function(t,e,r,a,n,i){var s=a/2,o=n/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*i[0],r+o*i[1]);for(var l=1;l<i.length/2;l++)t.lineTo(e+s*i[l*2],r+o*i[l*2+1]);t.closePath()};Ir.drawRoundPolygonPath=function(t,e,r,a,n,i,s){s.forEach(function(o){return Rf(t,o)}),t.closePath()};Ir.drawRoundRectanglePath=function(t,e,r,a,n,i){var s=a/2,o=n/2,l=i==="auto"?Pr(a,n):Math.min(i,o,s);t.beginPath&&t.beginPath(),t.moveTo(e,r-o),t.arcTo(e+s,r-o,e+s,r,l),t.arcTo(e+s,r+o,e,r+o,l),t.arcTo(e-s,r+o,e-s,r,l),t.arcTo(e-s,r-o,e,r-o,l),t.lineTo(e,r-o),t.closePath()};Ir.drawBottomRoundRectanglePath=function(t,e,r,a,n,i){var s=a/2,o=n/2,l=i==="auto"?Pr(a,n):i;t.beginPath&&t.beginPath(),t.moveTo(e,r-o),t.lineTo(e+s,r-o),t.lineTo(e+s,r),t.arcTo(e+s,r+o,e,r+o,l),t.arcTo(e-s,r+o,e-s,r,l),t.lineTo(e-s,r-o),t.lineTo(e,r-o),t.closePath()};Ir.drawCutRectanglePath=function(t,e,r,a,n,i,s){var o=a/2,l=n/2,u=s==="auto"?tl():s;t.beginPath&&t.beginPath(),t.moveTo(e-o+u,r-l),t.lineTo(e+o-u,r-l),t.lineTo(e+o,r-l+u),t.lineTo(e+o,r+l-u),t.lineTo(e+o-u,r+l),t.lineTo(e-o+u,r+l),t.lineTo(e-o,r+l-u),t.lineTo(e-o,r-l+u),t.closePath()};Ir.drawBarrelPath=function(t,e,r,a,n){var i=a/2,s=n/2,o=e-i,l=e+i,u=r-s,c=r+s,d=go(a,n),f=d.widthOffset,h=d.heightOffset,v=d.ctrlPtOffsetPct*f;t.beginPath&&t.beginPath(),t.moveTo(o,u+h),t.lineTo(o,c-h),t.quadraticCurveTo(o+v,c,o+f,c),t.lineTo(l-f,c),t.quadraticCurveTo(l-v,c,l,c-h),t.lineTo(l,u+h),t.quadraticCurveTo(l-v,u,l-f,u),t.lineTo(o+f,u),t.quadraticCurveTo(o+v,u,o,u+h),t.closePath()};var ed=Math.sin(0),td=Math.cos(0),Ao={},Lo={},Zf=Math.PI/40;for(var sa=0*Math.PI;sa<2*Math.PI;sa+=Zf)Ao[sa]=Math.sin(sa),Lo[sa]=Math.cos(sa);Ir.drawEllipsePath=function(t,e,r,a,n){if(t.beginPath&&t.beginPath(),t.ellipse)t.ellipse(e,r,a/2,n/2,0,0,2*Math.PI);else for(var i,s,o=a/2,l=n/2,u=0*Math.PI;u<2*Math.PI;u+=Zf)i=e-o*Ao[u]*ed+o*Lo[u]*td,s=r+l*Lo[u]*ed+l*Ao[u]*td,u===0?t.moveTo(i,s):t.lineTo(i,s);t.closePath()};var cn={};cn.createBuffer=function(t,e){var r=document.createElement("canvas");return r.width=t,r.height=e,[r,r.getContext("2d")]};cn.bufferCanvasImage=function(t){var e=this.cy,r=e.mutableElements(),a=r.boundingBox(),n=this.findContainerClientCoords(),i=t.full?Math.ceil(a.w):n[2],s=t.full?Math.ceil(a.h):n[3],o=se(t.maxWidth)||se(t.maxHeight),l=this.getPixelRatio(),u=1;if(t.scale!==void 0)i*=t.scale,s*=t.scale,u=t.scale;else if(o){var c=1/0,d=1/0;se(t.maxWidth)&&(c=u*t.maxWidth/i),se(t.maxHeight)&&(d=u*t.maxHeight/s),u=Math.min(c,d),i*=u,s*=u}o||(i*=l,s*=l,u*=l);var f=document.createElement("canvas");f.width=i,f.height=s,f.style.width=i+"px",f.style.height=s+"px";var h=f.getContext("2d");if(i>0&&s>0){h.clearRect(0,0,i,s),h.globalCompositeOperation="source-over";var v=this.getCachedZSortedEles();if(t.full)h.translate(-a.x1*u,-a.y1*u),h.scale(u,u),this.drawElements(h,v),h.scale(1/u,1/u),h.translate(a.x1*u,a.y1*u);else{var y=e.pan(),p={x:y.x*u,y:y.y*u};u*=e.zoom(),h.translate(p.x,p.y),h.scale(u,u),this.drawElements(h,v),h.scale(1/u,1/u),h.translate(-p.x,-p.y)}t.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=t.bg,h.rect(0,0,i,s),h.fill())}return f};function mb(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i<r.length;i++)n[i]=r.charCodeAt(i);return new Blob([a],{type:e})}function rd(t){var e=t.indexOf(",");return t.substr(e+1)}function Qf(t,e,r){var a=function(){return e.toDataURL(r,t.quality)};switch(t.output){case"blob-promise":return new ba(function(n,i){try{e.toBlob(function(s){s!=null?n(s):i(new Error("`canvas.toBlob()` sent a null value in its callback"))},r,t.quality)}catch(s){i(s)}});case"blob":return mb(rd(a()),r);case"base64":return rd(a());default:return a()}}cn.png=function(t){return Qf(t,this.bufferCanvasImage(t),"image/png")};cn.jpg=function(t){return Qf(t,this.bufferCanvasImage(t),"image/jpeg")};var Jf={};Jf.nodeShapeImpl=function(t,e,r,a,n,i,s,o){switch(t){case"ellipse":return this.drawEllipsePath(e,r,a,n,i);case"polygon":return this.drawPolygonPath(e,r,a,n,i,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,a,n,i,s,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,a,n,i,o);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,a,n,i,s,o);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,a,n,i,o);case"barrel":return this.drawBarrelPath(e,r,a,n,i)}};var bb=ev,Be=ev.prototype;Be.CANVAS_LAYERS=3;Be.SELECT_BOX=0;Be.DRAG=1;Be.NODE=2;Be.WEBGL=3;Be.CANVAS_TYPES=["2d","2d","2d","webgl2"];Be.BUFFER_COUNT=3;Be.TEXTURE_BUFFER=0;Be.MOTIONBLUR_BUFFER_NODE=1;Be.MOTIONBLUR_BUFFER_DRAG=2;function ev(t){var e=this,r=e.cy.window(),a=r.document;t.webgl&&(Be.CANVAS_LAYERS=e.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),e.data={canvases:new Array(Be.CANVAS_LAYERS),contexts:new Array(Be.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Be.CANVAS_LAYERS),bufferCanvases:new Array(Be.BUFFER_COUNT),bufferContexts:new Array(Be.CANVAS_LAYERS)};var n="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";e.data.canvasContainer=a.createElement("div");var s=e.data.canvasContainer.style;e.data.canvasContainer.style[n]=i,s.position="relative",s.zIndex="0",s.overflow="hidden";var o=t.cy.container();o.appendChild(e.data.canvasContainer),o.style[n]=i;var l={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};dh()&&(l["-ms-touch-action"]="none",l["touch-action"]="none");for(var u=0;u<Be.CANVAS_LAYERS;u++){var c=e.data.canvases[u]=a.createElement("canvas"),d=Be.CANVAS_TYPES[u];e.data.contexts[u]=c.getContext(d),e.data.contexts[u]||Ye("Could not create canvas of type "+d),Object.keys(l).forEach(function(ee){c.style[ee]=l[ee]}),c.style.position="absolute",c.setAttribute("data-id","layer"+u),c.style.zIndex=String(Be.CANVAS_LAYERS-u),e.data.canvasContainer.appendChild(c),e.data.canvasNeedsRedraw[u]=!1}e.data.topCanvas=e.data.canvases[0],e.data.canvases[Be.NODE].setAttribute("data-id","layer"+Be.NODE+"-node"),e.data.canvases[Be.SELECT_BOX].setAttribute("data-id","layer"+Be.SELECT_BOX+"-selectbox"),e.data.canvases[Be.DRAG].setAttribute("data-id","layer"+Be.DRAG+"-drag"),e.data.canvases[Be.WEBGL]&&e.data.canvases[Be.WEBGL].setAttribute("data-id","layer"+Be.WEBGL+"-webgl");for(var u=0;u<Be.BUFFER_COUNT;u++)e.data.bufferCanvases[u]=a.createElement("canvas"),e.data.bufferContexts[u]=e.data.bufferCanvases[u].getContext("2d"),e.data.bufferCanvases[u].style.position="absolute",e.data.bufferCanvases[u].setAttribute("data-id","buffer"+u),e.data.bufferCanvases[u].style.zIndex=String(-u-1),e.data.bufferCanvases[u].style.visibility="hidden";e.pathsEnabled=!0;var f=kt(),h=function(q){return{x:(q.x1+q.x2)/2,y:(q.y1+q.y2)/2}},v=function(q){return{x:-q.w/2,y:-q.h/2}},y=function(q){var K=q[0]._private,W=K.oldBackgroundTimestamp===K.backgroundTimestamp;return!W},p=function(q){return q[0]._private.nodeKey},g=function(q){return q[0]._private.labelStyleKey},m=function(q){return q[0]._private.sourceLabelStyleKey},b=function(q){return q[0]._private.targetLabelStyleKey},w=function(q,K,W,Q,ie){return e.drawElement(q,K,W,!1,!1,ie)},E=function(q,K,W,Q,ie){return e.drawElementText(q,K,W,Q,"main",ie)},C=function(q,K,W,Q,ie){return e.drawElementText(q,K,W,Q,"source",ie)},x=function(q,K,W,Q,ie){return e.drawElementText(q,K,W,Q,"target",ie)},T=function(q){return q.boundingBox(),q[0]._private.bodyBounds},k=function(q){return q.boundingBox(),q[0]._private.labelBounds.main||f},P=function(q){return q.boundingBox(),q[0]._private.labelBounds.source||f},B=function(q){return q.boundingBox(),q[0]._private.labelBounds.target||f},D=function(q,K){return K},R=function(q){return h(T(q))},A=function(q,K,W){var Q=q?q+"-":"";return{x:K.x+W.pstyle(Q+"text-margin-x").pfValue,y:K.y+W.pstyle(Q+"text-margin-y").pfValue}},M=function(q,K,W){var Q=q[0]._private.rscratch;return{x:Q[K],y:Q[W]}},_=function(q){return A("",M(q,"labelX","labelY"),q)},L=function(q){return A("source",M(q,"sourceLabelX","sourceLabelY"),q)},I=function(q){return A("target",M(q,"targetLabelX","targetLabelY"),q)},H=function(q){return v(T(q))},G=function(q){return v(P(q))},O=function(q){return v(B(q))},$=function(q){var K=k(q),W=v(k(q));if(q.isNode()){switch(q.pstyle("text-halign").value){case"left":W.x=-K.w-(K.leftPad||0);break;case"right":W.x=-(K.rightPad||0);break}switch(q.pstyle("text-valign").value){case"top":W.y=-K.h-(K.topPad||0);break;case"bottom":W.y=-(K.botPad||0);break}}return W},Y=e.data.eleTxrCache=new Na(e,{getKey:p,doesEleInvalidateKey:y,drawElement:w,getBoundingBox:T,getRotationPoint:R,getRotationOffset:H,allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),te=e.data.lblTxrCache=new Na(e,{getKey:g,drawElement:E,getBoundingBox:k,getRotationPoint:_,getRotationOffset:$,isVisible:D}),J=e.data.slbTxrCache=new Na(e,{getKey:m,drawElement:C,getBoundingBox:P,getRotationPoint:L,getRotationOffset:G,isVisible:D}),re=e.data.tlbTxrCache=new Na(e,{getKey:b,drawElement:x,getBoundingBox:B,getRotationPoint:I,getRotationOffset:O,isVisible:D}),ne=e.data.lyrTxrCache=new qf(e);e.onUpdateEleCalcs(function(q,K){Y.invalidateElements(K),te.invalidateElements(K),J.invalidateElements(K),re.invalidateElements(K),ne.invalidateElements(K);for(var W=0;W<K.length;W++){var Q=K[W]._private;Q.oldBackgroundTimestamp=Q.backgroundTimestamp}});var oe=function(q){for(var K=0;K<q.length;K++)ne.enqueueElementRefinement(q[K].ele)};Y.onDequeue(oe),te.onDequeue(oe),J.onDequeue(oe),re.onDequeue(oe),t.webgl&&e.initWebgl(t,{getStyleKey:p,getLabelKey:g,getSourceLabelKey:m,getTargetLabelKey:b,drawElement:w,drawLabel:E,drawSourceLabel:C,drawTargetLabel:x,getElementBox:T,getLabelBox:k,getSourceLabelBox:P,getTargetLabelBox:B,getElementRotationPoint:R,getElementRotationOffset:H,getLabelRotationPoint:_,getSourceLabelRotationPoint:L,getTargetLabelRotationPoint:I,getLabelRotationOffset:$,getSourceLabelRotationOffset:G,getTargetLabelRotationOffset:O})}Be.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Be.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Be.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Be.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};var wb=typeof Path2D<"u";Be.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Be.usePaths=function(){return wb&&this.pathsEnabled};Be.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Be.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Be.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":ot(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var a=this.cy.window(),n=a.document;r=n.createElement("canvas"),r.width=t,r.height=e}return r};[Vf,rr,hr,hl,Qr,_r,Pt,Wf,Ir,cn,Jf].forEach(function(t){xe(Be,t)});var xb=[{name:"null",impl:Pf},{name:"base",impl:zf},{name:"canvas",impl:bb}],Eb=[{type:"layout",extensions:Um},{type:"renderer",extensions:xb}],tv={},rv={};function av(t,e,r){var a=r,n=function(T){He("Can not register `"+e+"` for `"+t+"` since `"+T+"` already exists in the prototype and can not be overridden")};if(t==="core"){if(Xa.prototype[e])return n(e);Xa.prototype[e]=r}else if(t==="collection"){if(pt.prototype[e])return n(e);pt.prototype[e]=r}else if(t==="layout"){for(var i=function(T){this.options=T,r.call(this,T),Ne(this._private)||(this._private={}),this._private.cy=T.cy,this._private.listeners=[],this.createEmitter()},s=i.prototype=Object.create(r.prototype),o=[],l=0;l<o.length;l++){var u=o[l];s[u]=s[u]||function(){return this}}s.start&&!s.run?s.run=function(){return this.start(),this}:!s.start&&s.run&&(s.start=function(){return this.run(),this});var c=r.prototype.stop;s.stop=function(){var x=this.options;if(x&&x.animate){var T=this.animations;if(T)for(var k=0;k<T.length;k++)T[k].stop()}return c?c.call(this):this.emit("layoutstop"),this},s.destroy||(s.destroy=function(){return this}),s.cy=function(){return this._private.cy};var d=function(T){return T._private.cy},f={addEventFields:function(T,k){k.layout=T,k.cy=d(T),k.target=T},bubble:function(){return!0},parent:function(T){return d(T)}};xe(s,{createEmitter:function(){return this._private.emitter=new yi(f,this),this},emitter:function(){return this._private.emitter},on:function(T,k){return this.emitter().on(T,k),this},one:function(T,k){return this.emitter().one(T,k),this},once:function(T,k){return this.emitter().one(T,k),this},removeListener:function(T,k){return this.emitter().removeListener(T,k),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},emit:function(T,k){return this.emitter().emit(T,k),this}}),Ve.eventAliasesOn(s),a=i}else if(t==="renderer"&&e!=="null"&&e!=="base"){var h=nv("renderer","base"),v=h.prototype,y=r,p=r.prototype,g=function(){h.apply(this,arguments),y.apply(this,arguments)},m=g.prototype;for(var b in v){var w=v[b],E=p[b]!=null;if(E)return n(b);m[b]=w}for(var C in p)m[C]=p[C];v.clientFunctions.forEach(function(x){m[x]=m[x]||function(){Ye("Renderer does not implement `renderer."+x+"()` on its prototype")}}),a=g}else if(t==="__proto__"||t==="constructor"||t==="prototype")return Ye(t+" is an illegal type to be registered, possibly lead to prototype pollutions");return wd({map:tv,keys:[t,e],value:a})}function nv(t,e){return xd({map:tv,keys:[t,e]})}function Cb(t,e,r,a,n){return wd({map:rv,keys:[t,e,r,a],value:n})}function Tb(t,e,r,a){return xd({map:rv,keys:[t,e,r,a]})}var Mo=function(){if(arguments.length===2)return nv.apply(null,arguments);if(arguments.length===3)return av.apply(null,arguments);if(arguments.length===4)return Tb.apply(null,arguments);if(arguments.length===5)return Cb.apply(null,arguments);Ye("Invalid extension access syntax")};Xa.prototype.extension=Mo;Eb.forEach(function(t){t.extensions.forEach(function(e){av(t.type,e.name,e.impl)})});var ai=function(){if(!(this instanceof ai))return new ai;this.length=0},Yr=ai.prototype;Yr.instanceString=function(){return"stylesheet"};Yr.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Yr.css=function(t,e){var r=this.length-1;if(me(t))this[r].properties.push({name:t,value:e});else if(Ne(t))for(var a=t,n=Object.keys(a),i=0;i<n.length;i++){var s=n[i],o=a[s];if(o!=null){var l=dt.properties[s]||dt.properties[oi(s)];if(l!=null){var u=l.name,c=o;this[r].properties.push({name:u,value:c})}}}return this};Yr.style=Yr.css;Yr.generateStyle=function(t){var e=new dt(t);return this.appendToStyle(e)};Yr.appendToStyle=function(t){for(var e=0;e<this.length;e++){var r=this[e],a=r.selector,n=r.properties;t.selector(a);for(var i=0;i<n.length;i++){var s=n[i];t.css(s.name,s.value)}}return t};var Sb="3.33.3",Xr=function(e){if(e===void 0&&(e={}),Ne(e))return new Xa(e);if(me(e))return Mo.apply(Mo,arguments)};Xr.use=function(t){var e=Array.prototype.slice.call(arguments,1);return e.unshift(Xr),t.apply(null,e),this};Xr.warnings=function(t){return Bd(t)};Xr.version=Sb;Xr.stylesheet=Xr.Stylesheet=ai;const ad=["#7aa2ff","#f59e0b","#a78bfa","#34d399","#f472b6","#22d3ee","#fb923c","#facc15","#94a3b8","#fb7185"];let Qt=null,lr={nodes:[],edges:[]},bt={search:"",entity_type:"",predicate:"",min_confidence:0,layout:"cose"},ni=new Map;function kb(){return`
<section id="graph" class="tab-panel">
<div class="graph-toolbar">
<input id="graphSearch" type="search" data-i18n-placeholder="graph.search_placeholder" />
<select id="graphEntityType"><option value="" data-i18n="graph.entity_type_all"></option></select>
<select id="graphPredicate"><option value="" data-i18n="graph.predicate_all"></option></select>
<label class="graph-slider">
<span data-i18n="graph.min_confidence"></span>
<input id="graphMinConfidence" type="range" min="0" max="1" step="0.05" value="0" />
<output id="graphMinConfidenceOut">0%</output>
</label>
<label class="graph-slider">
<span data-i18n="graph.layout"></span>
<select id="graphLayout">
<option value="cose" data-i18n="graph.layout.cose"></option>
<option value="concentric" data-i18n="graph.layout.concentric"></option>
<option value="circle" data-i18n="graph.layout.circle"></option>
<option value="breadthfirst" data-i18n="graph.layout.breadthfirst"></option>
<option value="grid" data-i18n="graph.layout.grid"></option>
</select>
</label>
<button id="graphFitBtn" data-i18n="graph.fit"></button>
<button id="graphReloadBtn" class="primary" data-i18n="graph.reload"></button>
</div>
<div class="graph-stats">
<span id="graphStats" class="muted"></span>
<span id="graphLegend" class="graph-legend"></span>
</div>
<div class="graph-stage">
<div id="graphContainer"></div>
<div id="graphEmpty" class="graph-empty muted" data-i18n="graph.empty"></div>
</div>
</section>
`}function Pb(){xt(F("graph")),F("graphSearch").addEventListener("input",t=>{bt.search=t.target.value.trim().toLowerCase(),kn()}),F("graphEntityType").addEventListener("change",t=>{bt.entity_type=t.target.value,kn()}),F("graphPredicate").addEventListener("change",t=>{bt.predicate=t.target.value,kn()}),F("graphMinConfidence").addEventListener("input",t=>{bt.min_confidence=Number(t.target.value),F("graphMinConfidenceOut").textContent=`${Math.round(bt.min_confidence*100)}%`,kn()}),F("graphLayout").addEventListener("change",t=>{bt.layout=t.target.value,iv()}),F("graphFitBtn").addEventListener("click",()=>Qt?.fit(void 0,40)),F("graphReloadBtn").addEventListener("click",()=>gl().catch(()=>{})),fr(()=>xt(F("graph")))}async function gl(){if(!ue.selectedProject)return;lr=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/graph/neighborhood?limit=300`)??{nodes:[],edges:[]},Bb(lr.nodes),Db(lr),_o()}function Bb(t){const e=[...new Set(t.map(r=>r.type).filter(Boolean))].sort();ni=new Map,e.forEach((r,a)=>ni.set(r,ad[a%ad.length]))}function Db(t){const e=F("graphEntityType"),r=F("graphPredicate"),a=[...new Set(t.nodes.map(i=>i.type).filter(Boolean))].sort(),n=[...new Set(t.edges.map(i=>i.predicate).filter(Boolean))].sort();e.innerHTML=`<option value="">${z(V("graph.entity_type_all"))}</option>`+a.map(i=>`<option value="${z(i)}" ${i===bt.entity_type?"selected":""}>${z(i)}</option>`).join(""),r.innerHTML=`<option value="">${z(V("graph.predicate_all"))}</option>`+n.map(i=>`<option value="${z(i)}" ${i===bt.predicate?"selected":""}>${z(i)}</option>`).join(""),Rb(a)}function Rb(t){F("graphLegend").innerHTML=t.slice(0,12).map(e=>`
<span class="legend-item"><i style="background:${ni.get(e)}"></i>${z(e)}</span>
`).join("")}function Ab(){const t=bt.min_confidence,e=bt.search,r=bt.entity_type,a=bt.predicate,n=new Set,i=[];for(const l of lr.edges)l.confidence<t||a&&l.predicate!==a||l.target!=null&&(n.add(l.source),n.add(l.target));const s=lr.nodes.filter(l=>r&&l.type!==r||e&&!(l.name||"").toLowerCase().includes(e)&&!(l.canonical_name||"").toLowerCase().includes(e)?!1:bt.predicate||bt.min_confidence>0?n.has(l.id):!0),o=new Set(s.map(l=>l.id));return s.forEach(l=>{i.push({group:"nodes",data:{id:`n${l.id}`,entityId:l.id,label:l.name,type:l.type,canonical:l.canonical_name,metadata:l.metadata,color:ni.get(l.type)||"#7aa2ff"}})}),lr.edges.forEach(l=>{l.confidence<t||a&&l.predicate!==a||l.target!=null&&(!o.has(l.source)||!o.has(l.target)||i.push({group:"edges",data:{id:`c${l.claim_id}`,claimId:l.claim_id,source:`n${l.source}`,target:`n${l.target}`,predicate:l.predicate,confidence:l.confidence,metadata:l.metadata,targetName:l.object?.name}}))}),{elements:i,visibleNodeCount:s.length}}function _o(){const{elements:t,visibleNodeCount:e}=Ab();Lb(e);const r=F("graphEmpty");lr.nodes.length?r.style.display="none":r.style.display="flex",Qt?(Qt.elements().remove(),Qt.add(t),iv()):(Qt=Xr({container:F("graphContainer"),elements:t,wheelSensitivity:.2,style:Mb(),layout:sv(bt.layout)}),Qt.on("tap","node",a=>{const n=a.target.data();ue.selection={kind:"graph_node",data:n},ur()}),Qt.on("tap","edge",a=>{const n=a.target.data();ue.selection={kind:"graph_edge",data:n},ur()}))}function kn(){if(!Qt)return _o();_o()}function iv(){Qt&&Qt.layout(sv(bt.layout)).run()}function sv(t){return t==="cose"?{name:"cose",animate:!1,idealEdgeLength:110,nodeRepulsion:16e3,padding:40}:t==="concentric"?{name:"concentric",concentric:e=>e.degree(!1),levelWidth:()=>1,animate:!1,padding:30}:t==="breadthfirst"?{name:"breadthfirst",directed:!0,animate:!1,padding:30,spacingFactor:1.2}:{name:t,animate:!1,padding:30}}function Lb(t){const e=lr.nodes.length,r=lr.edges.length;F("graphStats").textContent=`${e} ${V("graph.stats.nodes")} · ${r} ${V("graph.stats.edges")} · ${t} ${V("graph.stats.shown")}`}function Mb(){return[{selector:"node",style:{"background-color":"data(color)",label:"data(label)",color:"#e6ecf3","font-size":11,"text-outline-color":"#0f1216","text-outline-width":2,"text-valign":"bottom","text-margin-y":6,width:24,height:24,"border-width":1,"border-color":"#0f1216"}},{selector:"node:selected",style:{"border-color":"#ffffff","border-width":2,width:28,height:28}},{selector:"edge",style:{width:"mapData(confidence, 0, 1, 1, 4)","line-color":"#364154","target-arrow-color":"#364154","target-arrow-shape":"triangle","curve-style":"bezier",label:"data(predicate)","font-size":9,color:"#8c98ab","text-rotation":"autorotate","text-background-color":"#0f1216","text-background-opacity":.85,"text-background-padding":2,"arrow-scale":.8}},{selector:"edge:selected",style:{"line-color":"#7aa2ff","target-arrow-color":"#7aa2ff",color:"#7aa2ff",width:3}}]}let Si=[],_t=[],Ot=null;const wt=new Set,sr={status:"",predicate:"",search:""};let Pn=null;function _b(){return`
<section id="claims" class="tab-panel">
<div class="workbench">
<div class="workbench-toolbar">
<select id="wbStatusFilter">
<option value="" data-i18n="workbench.status.all"></option>
<option value="active" data-i18n="workbench.status.active"></option>
<option value="validated_claim" data-i18n="workbench.status.validated_claim"></option>
<option value="rejected" data-i18n="workbench.status.rejected"></option>
</select>
<select id="wbPredicateFilter">
<option value="" data-i18n="workbench.predicate_all"></option>
</select>
<input id="wbSearch" type="search" data-i18n-placeholder="workbench.search_placeholder" />
<span class="wb-selected" id="wbSelectedCount"></span>
<button id="wbBulkAcceptBtn" class="wb-success" disabled data-i18n="workbench.action.accept"></button>
<button id="wbBulkRejectBtn" class="wb-danger" disabled data-i18n="workbench.action.reject"></button>
</div>
<div class="workbench-body">
<div class="workbench-list" id="wbList"></div>
<div class="workbench-detail" id="wbDetail"></div>
</div>
<div class="workbench-shortcuts">
<strong data-i18n="workbench.shortcuts"></strong>
<span data-i18n="workbench.shortcut.nav"></span>
<span data-i18n="workbench.shortcut.accept"></span>
<span data-i18n="workbench.shortcut.reject"></span>
<span data-i18n="workbench.shortcut.toggle"></span>
<span data-i18n="workbench.shortcut.bulk_accept"></span>
<span data-i18n="workbench.shortcut.bulk_reject"></span>
<span data-i18n="workbench.shortcut.search"></span>
<span data-i18n="workbench.shortcut.escape"></span>
</div>
</div>
</section>
`}function Ib(){const t=F("claims");xt(t),fr(()=>{xt(t),Er()}),F("wbStatusFilter").addEventListener("change",e=>{sr.status=e.target.value,Er()}),F("wbPredicateFilter").addEventListener("change",e=>{sr.predicate=e.target.value,Er()}),F("wbSearch").addEventListener("input",e=>{sr.search=e.target.value.trim().toLowerCase(),Er()}),F("wbBulkAcceptBtn").addEventListener("click",()=>ii("validated_claim")),F("wbBulkRejectBtn").addEventListener("click",()=>ii("rejected")),Hb()}async function Ta(){if(!ue.selectedProject)return;const t=encodeURIComponent(ue.selectedProject),[e,r]=await Promise.all([Fe(`/projects/${t}/claims?limit=200&include_candidates=true`),Fe(`/projects/${t}/claims?limit=200&status=rejected`).catch(()=>[])]),a=new Map;for(const n of[...e,...r])a.set(n.id,n);Si=[...a.values()].sort((n,i)=>(i.last_seen_at??"").localeCompare(n.last_seen_at??"")),Ob(),Er()}function Ob(){const t=F("wbPredicateFilter");if(!t)return;const e=[...new Set(Si.map(a=>a.predicate).filter(Boolean))].sort(),r=sr.predicate;t.innerHTML=`<option value="">${z(V("workbench.predicate_all"))}</option>`+e.map(a=>`<option value="${z(a)}" ${a===r?"selected":""}>${z(a)}</option>`).join("")}function Nb(){const t=sr.search;_t=Si.filter(e=>!(sr.status&&e.status!==sr.status||sr.predicate&&e.predicate!==sr.predicate||t&&!`${e.subject??""} ${e.predicate??""} ${e.object??""} ${e.evidence_text??""}`.toLowerCase().includes(t))),_t.some(e=>e.id===Ot)||(Ot=_t[0]?.id??null);for(const e of[...wt])_t.some(r=>r.id===e)||wt.delete(e)}function Er(){Nb(),ov(),lv(),uv()}function ov(){const t=F("wbList");if(!_t.length){t.innerHTML=`<div class="wb-empty muted" data-i18n="workbench.empty">${z(V("workbench.empty"))}</div>`;return}t.innerHTML=_t.map(e=>zb(e)).join(""),t.querySelectorAll("[data-claim-row]").forEach(e=>{const r=Number(e.dataset.claimRow);e.addEventListener("click",a=>{a.shiftKey||a.ctrlKey||a.metaKey?cv(r):(Ot=r,wt.clear(),wt.add(r)),ov(),lv(),uv(),nd()})}),nd()}function zb(t){const e=t.id===Ot,r=wt.has(t.id),a=`workbench.status.${t.status??"active"}`;return`
<button class="wb-row ${e?"active":""} ${r?"selected":""}"
data-claim-row="${t.id}" data-status="${z(t.status??"active")}">
<span class="wb-row-main">
<strong>${z(t.subject??"")}</strong>
<em class="predicate">${z(t.predicate??"")}</em>
<span>${z(t.object??"")}</span>
</span>
<span class="wb-row-meta">
<span class="wb-status" data-status="${z(t.status??"active")}">${z(V(a,t.status??""))}</span>
<span class="wb-confidence">${Math.round((t.confidence??0)*100)}%</span>
</span>
</button>
`}function lv(){const t=F("wbDetail"),e=_t.find(n=>n.id===Ot);if(!e){t.innerHTML=`<div class="wb-empty muted">${z(V("workbench.select_hint"))}</div>`;return}const r=`workbench.status.${e.status??"active"}`,a=e.confidence_breakdown?`LLM ${Bn(e.confidence_breakdown.llm_confidence)} · evidence ${Bn(e.confidence_breakdown.evidence_confidence)} · ontology ${Bn(e.confidence_breakdown.ontology_confidence)} · stored ${Bn(e.confidence_breakdown.stored_confidence??e.confidence)}`:"";t.innerHTML=`
<div class="wb-detail-head">
<div>
<h3>${z(e.subject??"")} <span class="predicate">${z(e.predicate??"")}</span> ${z(e.object??"")}</h3>
<div class="wb-detail-status">
<span class="wb-status" data-status="${z(e.status??"active")}">${z(V(r,e.status??""))}</span>
<span class="wb-confidence">${Math.round((e.confidence??0)*100)}%</span>
</div>
</div>
<div class="wb-actions">
<button class="wb-success" data-action="accept">${z(V("workbench.action.accept"))} <kbd>A</kbd></button>
<button class="wb-danger" data-action="reject">${z(V("workbench.action.reject"))} <kbd>R</kbd></button>
<button data-action="unreview">${z(V("workbench.action.unreview"))}</button>
</div>
</div>
<dl class="wb-kv">
<dt>${z(V("workbench.detail.subject"))}</dt><dd>${z(e.subject??"")} <span class="muted">(${z(e.subject_type??"")})</span></dd>
<dt>${z(V("workbench.detail.predicate"))}</dt><dd>${z(e.predicate??"")}</dd>
<dt>${z(V("workbench.detail.object"))}</dt><dd>${z(e.object??JSON.stringify(e.object_value??""))}</dd>
<dt>${z(V("workbench.detail.source"))}</dt><dd>${z(e.source??"")}</dd>
<dt>${z(V("workbench.detail.page"))}</dt><dd>${e.page_url?`<a href="${z(e.page_url)}" target="_blank" rel="noreferrer">${z(e.page_url)}</a>`:"-"}</dd>
${a?`<dt>${z(V("workbench.detail.breakdown"))}</dt><dd>${z(a)}</dd>`:""}
</dl>
${e.evidence_text?`
<section class="wb-evidence">
<h4>${z(V("workbench.detail.evidence"))}</h4>
<pre>${$b(e.evidence_text,e)}</pre>
</section>
`:""}
<div class="wb-confidence-edit">
<label>${z(V("workbench.detail.confidence"))}
<input id="wbConfidence" type="number" min="0" max="1" step="0.01" value="${e.confidence??0}" />
</label>
<input id="wbReason" data-i18n-placeholder="workbench.detail.reason_placeholder" value="${z(e.confidence_reason??"")}" />
<button data-action="save-confidence">${z(V("workbench.action.save_confidence"))}</button>
<button data-action="accept-similar">${z(V("workbench.action.accept_similar"))}</button>
</div>
`,xt(t),t.querySelectorAll("[data-action]").forEach(n=>{n.addEventListener("click",()=>Io(n.dataset.action))})}function $b(t,e){const r=[];e.subject&&r.push(e.subject),e.object&&r.push(e.object);let a=z(t);for(const n of r){if(!n||n.length<2)continue;const i=Fb(n);a=a.replace(new RegExp(i,"gi"),s=>`<mark>${s}</mark>`)}return a}function Fb(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function uv(){const t=wt.size;F("wbSelectedCount").textContent=t>1?V("workbench.bulk_count").replace("{count}",t):"";const e=t>1;F("wbBulkAcceptBtn").disabled=!e,F("wbBulkRejectBtn").disabled=!e}function Bn(t){return t==null?"-":`${Math.round(t*100)}%`}function cv(t){wt.has(t)?wt.delete(t):wt.add(t),wt.size===1&&(Ot=[...wt][0])}function nd(){const t=document.querySelector(`[data-claim-row="${Ot}"]`);t&&t.scrollIntoView({block:"nearest"})}async function Io(t){const e=_t.find(r=>r.id===Ot);e&&(t==="accept"?await oo(e.id,"validated_claim"):t==="reject"?await oo(e.id,"rejected"):t==="unreview"?await oo(e.id,"active"):t==="save-confidence"?await qb(e):t==="accept-similar"&&await Vb(e))}async function oo(t,e){const r=F("wbReason")?.value?.trim()||null;try{await Fe(`/claims/${t}/status`,{method:"PATCH",body:JSON.stringify({status:e,reason:r})}),Ae(V("workbench.toast.reviewed")),await Ta()}catch(a){Ae(a.message)}}async function qb(t){const e=Number(F("wbConfidence").value),r=F("wbReason").value.trim()||null;try{await Fe(`/claims/${t.id}/confidence`,{method:"PATCH",body:JSON.stringify({confidence:e,reason:r})}),Ae(V("toast.claim_updated")),await Ta()}catch(a){Ae(a.message)}}async function Vb(t){const e=t.object??JSON.stringify(t.object_value??""),r=Si.filter(a=>a.predicate===t.predicate&&(a.object??JSON.stringify(a.object_value??""))===e).map(a=>a.id);if(r.length)try{const a=await Fe("/claims/bulk-status",{method:"POST",body:JSON.stringify({claim_ids:r,status:"validated_claim",reason:F("wbReason")?.value?.trim()||null})});Ae(V("workbench.toast.bulk_done").replace("{count}",a.updated??r.length)),await Ta()}catch(a){Ae(a.message)}}async function ii(t){const e=[...wt];if(!(e.length<2))try{const r=await Fe("/claims/bulk-status",{method:"POST",body:JSON.stringify({claim_ids:e,status:t,reason:null})});Ae(V("workbench.toast.bulk_done").replace("{count}",r.updated??e.length)),wt.clear(),await Ta()}catch(r){Ae(r.message)}}function Hb(){Pn&&document.removeEventListener("keydown",Pn),Pn=t=>{if(!Gb()||t.target.matches("input, textarea, select"))return;const e=t.key;if(e==="j"||e==="ArrowDown"){t.preventDefault(),id(1);return}if(e==="k"||e==="ArrowUp"){t.preventDefault(),id(-1);return}if(e===" "){t.preventDefault(),Ot!=null&&(cv(Ot),Er());return}if(e==="Escape"){wt.clear(),Er();return}if(e==="/"){t.preventDefault(),F("wbSearch")?.focus();return}if(e==="a"&&!t.shiftKey){t.preventDefault(),Io("accept");return}if(e==="r"&&!t.shiftKey){t.preventDefault(),Io("reject");return}if(t.shiftKey&&(e==="A"||e==="a")){t.preventDefault(),ii("validated_claim");return}if(t.shiftKey&&(e==="R"||e==="r")){t.preventDefault(),ii("rejected");return}},document.addEventListener("keydown",Pn)}function Gb(){const t=F("claims");return t&&t.classList.contains("active")}function id(t){if(!_t.length)return;let r=_t.findIndex(a=>a.id===Ot)+t;r<0&&(r=0),r>=_t.length&&(r=_t.length-1),Ot=_t[r].id,wt.clear(),wt.add(Ot),Er()}let qr=null;function Ub(){return`
<section id="overview" class="tab-panel active">
<div class="pipeline-head">
<h2 data-i18n="pipeline.heading"></h2>
<button id="pipelineRefreshBtn" class="ghost" data-i18n="pipeline.refresh"></button>
</div>
<div class="pipeline-stages" id="pipelineStages"></div>
<div class="summary-grid" id="pipelineSummary"></div>
<div class="wide-panel">
<h2 data-i18n="pipeline.entity_types_heading"></h2>
<div id="pipelineEntityTypes" class="entity-type-bars"></div>
</div>
<div class="split">
<div class="wide-panel">
<h2 data-i18n="pipeline.recent_pages"></h2>
<div id="pipelineRecentPages" class="recent-list"></div>
</div>
<div class="wide-panel">
<h2 data-i18n="pipeline.recent_claims"></h2>
<div id="pipelineRecentClaims" class="recent-list"></div>
</div>
</div>
<div class="wide-panel">
<h2 data-i18n="overview.sources_heading"></h2>
<div id="sourceTable" class="table"></div>
</div>
</section>
`}function Kb(){const t=F("overview");xt(t),F("pipelineRefreshBtn").addEventListener("click",()=>yl().catch(()=>{})),fr(()=>{xt(t),dv()})}async function yl(){ue.selectedProject&&(qr=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/pipeline`),dv())}function dv(){qr&&(jb(qr.stages||[]),Xb(qr.stages||[]),Zb(qr.entity_types||[]),Qb(qr.recent_pages||[]),Jb(qr.recent_claims||[]))}const Wb={crawled:"#7aa2ff",extracted:"#22d3ee",claims:"#facc15",validated:"#4ade80",graph:"#a78bfa"};function jb(t){const e=Math.max(1,...t.map(a=>a.count||0)),r=F("pipelineStages");r.innerHTML=t.map((a,n)=>{const i=n>0?t[n-1].count:null,s=i&&i>0?Math.round(a.count/i*100):null,o=a.count/e*100,l=Wb[a.key]||"#7aa2ff",u=Yb(a);return`
<div class="pipeline-card" style="--stage-color:${l}">
<div class="pipeline-card-head">
<span class="pipeline-stage-name">${z(V(`pipeline.stage.${a.key}`,a.key))}</span>
${s!=null?`<span class="pipeline-retention">${s}% ${z(V("pipeline.retained"))}</span>`:""}
</div>
<div class="pipeline-count">${a.count}</div>
<div class="pipeline-bar"><div class="pipeline-bar-fill" style="width:${o}%"></div></div>
${u?`<div class="pipeline-extra muted">${u}</div>`:""}
</div>
`}).join("")}function Yb(t){return t.extra?t.key==="extracted"?`events ${t.extra.events??0} · errors ${t.extra.errors??0}`:t.key==="claims"?Object.entries(t.extra).map(([e,r])=>`${z(e)} ${r}`).join(" · "):t.key==="graph"?`entities ${t.extra.entities??0}`:"":""}function Xb(t){const e=ue.projectDetail,r=t.find(n=>n.key==="claims"),a=t.find(n=>n.key==="validated");F("pipelineSummary").innerHTML=`
<div class="metric"><span>${z(V("overview.project"))}</span><strong>${z(e?.name??"-")}</strong></div>
<div class="metric"><span>${z(V("overview.domain"))}</span><strong>${z(e?.domain??"-")}</strong></div>
<div class="metric"><span>${z(V("overview.sources"))}</span><strong>${(e?.sources??[]).length}</strong></div>
<div class="metric"><span>${z(V("overview.entities"))}</span><strong id="metricEntities">${t.find(n=>n.key==="graph")?.extra?.entities??0}</strong></div>
<div class="metric"><span>${z(V("pipeline.stage.claims"))}</span><strong>${r?.count??0}</strong></div>
<div class="metric"><span>${z(V("pipeline.stage.validated"))}</span><strong>${a?.count??0}</strong></div>
`}function Zb(t){const e=F("pipelineEntityTypes");if(!t.length){e.innerHTML=`<p class="muted" style="font-size:11px;margin:0">${z(V("pipeline.empty.claims"))}</p>`;return}const r=Math.max(1,...t.map(a=>a.count));e.innerHTML=t.map(a=>{const n=a.count/r*100;return`
<div class="entity-type-row">
<span class="entity-type-name">${z(a.type)}</span>
<div class="entity-type-bar"><div class="entity-type-bar-fill" style="width:${n}%"></div></div>
<span class="entity-type-count">${a.count}</span>
</div>
`}).join("")}function Qb(t){const e=F("pipelineRecentPages");if(!t.length){e.innerHTML=`<p class="muted" style="font-size:11px;margin:0">${z(V("pipeline.empty.pages"))}</p>`;return}e.innerHTML=t.map(r=>`
<div class="recent-item">
<div class="recent-line">
<span class="recent-badge">${z(r.page_type??"")}</span>
<span class="recent-code">${z(r.status_code??"-")}</span>
<span class="recent-time">${z(fv(r.fetched_at))}</span>
</div>
<div class="recent-title">${z(r.title??r.url??"")}</div>
<a class="recent-url" href="${z(r.url??"")}" target="_blank" rel="noreferrer">${z(r.url??"")}</a>
</div>
`).join("")}function Jb(t){const e=F("pipelineRecentClaims");if(!t.length){e.innerHTML=`<p class="muted" style="font-size:11px;margin:0">${z(V("pipeline.empty.claims"))}</p>`;return}e.innerHTML=t.map(r=>`
<div class="recent-item">
<div class="recent-line">
<strong>${z(r.subject??"")}</strong>
<span class="recent-predicate">${z(r.predicate??"")}</span>
</div>
<div class="recent-line">
<span class="wb-status" data-status="${z(r.status??"active")}">${z(r.status??"")}</span>
<span class="recent-conf">${Math.round((r.confidence??0)*100)}%</span>
<span class="recent-time">${z(fv(r.last_seen_at))}</span>
</div>
</div>
`).join("")}function fv(t){if(!t)return"";const e=new Date(t);if(isNaN(e.getTime()))return"";const a=(Date.now()-e.getTime())/1e3;return a<60?`${Math.floor(a)}s`:a<3600?`${Math.floor(a/60)}m`:a<86400?`${Math.floor(a/3600)}h`:`${Math.floor(a/86400)}d`}function ew(t){const e=F("sourceTable");if(!e)return;const r=t?.sources??[];if(!r.length){e.innerHTML=`<table><tbody><tr><td class="muted">${z(V("table.no_data"))}</td></tr></tbody></table>`;return}e.innerHTML=`
<table>
<thead><tr>
<th>${z(V("table.name"))}</th>
<th>${z(V("table.type"))}</th>
<th>${z(V("table.trust"))}</th>
<th>${z(V("table.robots"))}</th>
<th>${z(V("table.rate"))}</th>
</tr></thead>
<tbody>${r.map(a=>`
<tr>
<td>${z(a.name)}</td>
<td>${z(a.type)}</td>
<td>${a.trust_level}</td>
<td>${a.respect_robots_txt?"on":"off"}</td>
<td>${a.rate_limit_per_minute}/min</td>
</tr>
`).join("")}</tbody>
</table>
`}let Dn=null;function tw(t){Dn=t,Dn.innerHTML=rw(),xt(Dn),document.querySelectorAll(".tab").forEach(e=>{e.addEventListener("click",()=>{document.querySelectorAll(".tab").forEach(r=>r.classList.remove("active")),document.querySelectorAll(".tab-panel").forEach(r=>r.classList.remove("active")),e.classList.add("active"),document.getElementById(e.dataset.tab).classList.add("active")})}),Pb(),Ib(),Kb(),F("loadOntologyRegistryBtn").addEventListener("click",Oo),F("loadEntitiesBtn").addEventListener("click",No),F("mergeEntitiesBtn").addEventListener("click",aw),F("loadExtractionLogsBtn").addEventListener("click",zo),F("runResearchBtn").addEventListener("click",iw),F("loadResearchBtn").addEventListener("click",$o),F("loadGraphQueryBtn").addEventListener("click",Fo),F("loadTagsBtn").addEventListener("click",qo),F("recommendBtn").addEventListener("click",lw),fr(()=>{xt(Dn),vv(),hv(),yl().catch(()=>{}),Oo().catch(()=>{}),No().catch(()=>{}),Ta().catch(()=>{}),zo().catch(()=>{}),$o().catch(()=>{}),Fo().catch(()=>{}),qo().catch(()=>{}),gl().catch(()=>{})})}function rw(){return`
<nav class="tabs" aria-label="Admin sections">
<button class="tab active" data-tab="overview" data-i18n="tabs.overview"></button>
<button class="tab" data-tab="graph" data-i18n="tabs.graph"></button>
<button class="tab" data-tab="ontology" data-i18n="tabs.ontology"></button>
<button class="tab" data-tab="entities" data-i18n="tabs.entities"></button>
<button class="tab" data-tab="claims" data-i18n="tabs.claims"></button>
<button class="tab" data-tab="debug" data-i18n="tabs.debug"></button>
<button class="tab" data-tab="research" data-i18n="tabs.research"></button>
<button class="tab" data-tab="tags" data-i18n="tabs.tags"></button>
<button class="tab" data-tab="recommend" data-i18n="tabs.recommend"></button>
</nav>
${kb()}
${Ub()}
<section id="ontology" class="tab-panel">
<div class="toolbar">
<button id="loadOntologyRegistryBtn" data-i18n="ontology.refresh_registry"></button>
</div>
<div class="split">
<div class="wide-panel">
<h2 data-i18n="ontology.configured_entity_types"></h2>
<div id="ontologyEntities" class="chips"></div>
</div>
<div class="wide-panel">
<h2 data-i18n="ontology.configured_predicates"></h2>
<div id="ontologyPredicates" class="chips"></div>
</div>
</div>
<div class="split">
<div class="wide-panel">
<h2 data-i18n="ontology.registry_entity_types"></h2>
<div id="ontologyRegistryEntityTable" class="table"></div>
</div>
<div class="wide-panel">
<h2 data-i18n="ontology.registry_relation_types"></h2>
<div id="ontologyRegistryRelationTable" class="table"></div>
</div>
</div>
<div class="wide-panel">
<h2 data-i18n="ontology.triples"></h2>
<div id="ontologyTripleTable" class="table"></div>
</div>
<div class="split">
<div class="wide-panel">
<h2 data-i18n="ontology.proposals"></h2>
<div id="ontologyProposalTable" class="table"></div>
</div>
<div class="wide-panel">
<h2 data-i18n="ontology.knowledge_gaps"></h2>
<div id="knowledgeGapTable" class="table"></div>
</div>
</div>
</section>
<section id="entities" class="tab-panel">
<div class="toolbar wrap">
<select id="entityTypeFilter"></select>
<button id="loadEntitiesBtn" data-i18n="entities.load"></button>
</div>
<div class="merge-bar">
<input id="mergeSourceId" data-i18n-placeholder="entities.merge_source_placeholder" data-i18n-aria-label="entities.merge_source_placeholder" />
<input id="mergeTargetId" data-i18n-placeholder="entities.merge_target_placeholder" data-i18n-aria-label="entities.merge_target_placeholder" />
<button id="mergeEntitiesBtn" data-i18n="entities.merge"></button>
</div>
<div id="entityTable" class="table"></div>
</section>
${_b()}
<section id="debug" class="tab-panel">
<div class="toolbar">
<button id="loadExtractionLogsBtn" data-i18n="debug.refresh_logs"></button>
</div>
<div id="extractionLogTable" class="claim-list"></div>
</section>
<section id="research" class="tab-panel">
<div class="wide-panel">
<h2 data-i18n="research.heading"></h2>
<div class="recommend-grid">
<label>
<span data-i18n="research.goal"></span>
<input id="researchGoal" value="Forment perfume ecosystem exploration" />
</label>
<label>
<span data-i18n="research.seed_entity"></span>
<input id="researchSeedEntityId" placeholder="optional entity id" />
</label>
<label>
<span data-i18n="research.max_steps"></span>
<input id="researchMaxSteps" type="number" min="1" max="50" value="8" />
</label>
<label>
<span data-i18n="research.min_relevance"></span>
<input id="researchMinRelevance" type="number" min="0" max="1" step="0.05" value="0.35" />
</label>
</div>
<div class="button-grid">
<button id="runResearchBtn" class="primary" data-i18n="research.run"></button>
<button id="loadResearchBtn" data-i18n="research.load_sessions"></button>
</div>
<div id="researchResult" class="mini-log"></div>
<div id="researchSessions" class="claim-list"></div>
</div>
<div class="wide-panel">
<h2 data-i18n="research.graph_query"></h2>
<div class="toolbar wrap">
<select id="graphQueryKind">
<option value="trend_summary" data-i18n="research.query.trend_summary"></option>
<option value="brand_products" data-i18n="research.query.brand_products"></option>
<option value="products_by_tag" data-i18n="research.query.products_by_tag"></option>
<option value="relation_summary" data-i18n="research.query.relation_summary"></option>
<option value="entity_type_summary" data-i18n="research.query.entity_type_summary"></option>
</select>
<input id="graphQueryText" data-i18n-placeholder="research.filter_placeholder" />
<button id="loadGraphQueryBtn" data-i18n="research.run_query"></button>
</div>
<div id="graphQueryTable" class="table"></div>
</div>
</section>
<section id="tags" class="tab-panel">
<div class="toolbar">
<button id="loadTagsBtn" data-i18n="tags.load"></button>
</div>
<div id="tagTable" class="table"></div>
</section>
<section id="recommend" class="tab-panel">
<div class="recommend-grid">
<label><span data-i18n="recommend.preferred_notes"></span><input id="preferredNotes" value="Bergamot, Musk" /></label>
<label><span data-i18n="recommend.avoided_notes"></span><input id="avoidedNotes" value="" /></label>
<label><span data-i18n="recommend.preferred_moods"></span><input id="preferredMoods" value="Fresh" /></label>
<label><span data-i18n="recommend.season"></span><input id="seasonContext" value="Summer" /></label>
<label><span data-i18n="recommend.occasion"></span><input id="occasionContext" value="Daily" /></label>
</div>
<button id="recommendBtn" class="primary" data-i18n="recommend.test"></button>
<div id="recommendTable" class="table"></div>
</section>
`}function vv(){ew(ue.projectDetail)}function hv(){const t=ue.ontology?.entity_types??[],e=ue.ontology?.predicates??[];F("ontologyEntities").innerHTML=t.map(Pl).join(""),F("ontologyPredicates").innerHTML=e.map(Pl).join(""),F("entityTypeFilter").innerHTML=`<option value="">${z(V("entities.all_types"))}</option>${t.map(r=>`<option value="${z(r)}">${z(r)}</option>`).join("")}`}async function Oo(){if(!ue.selectedProject)return;const t=encodeURIComponent(ue.selectedProject),[e,r,a,n]=await Promise.all([Fe(`/projects/${t}/ontology/registry`),Fe(`/projects/${t}/ontology/proposals?limit=50`),Fe(`/projects/${t}/knowledge-gaps?limit=50`),Fe(`/projects/${t}/ontology/triples?limit=50`)]);F("ontologyRegistryEntityTable").innerHTML=Mt([V("table.type"),V("table.domain"),V("table.status"),V("table.confidence")],(e.entity_types??[]).map(i=>[i.name,i.domain,i.status,Math.round((i.confidence??0)*100)+"%"])),F("ontologyRegistryRelationTable").innerHTML=Mt([V("table.relation"),V("table.domain"),V("table.subject"),V("table.object"),V("table.status")],(e.relation_types??[]).map(i=>[i.name,i.domain,(i.allowed_subject_types??[]).join(", "),(i.allowed_object_types??[]).join(", ")||(i.semantic_constraints?.literal_value?"literal":""),i.status])),F("ontologyProposalTable").innerHTML=Mt([V("table.type"),V("table.name"),V("table.status"),V("table.reason")],(r??[]).map(i=>[i.proposal_type,i.name,i.status,z(i.reason??"")])),F("knowledgeGapTable").innerHTML=Mt([V("table.gap"),V("table.target"),V("table.priority"),V("table.description")],(a??[]).map(i=>[i.gap_type,`${i.target_type??""}: ${i.target_name??""}`,Math.round((i.priority??0)*100)+"%",z(i.description??"")])),F("ontologyTripleTable").innerHTML=Mt([V("table.subject"),V("table.relation"),V("table.object"),V("table.status"),V("table.support")],(n??[]).map(i=>[i.subject??"",i.predicate,i.object??JSON.stringify(i.object_value??""),i.status,i.support_count]))}let sd=[];async function No(){if(!ue.selectedProject)return;const t=F("entityTypeFilter").value,e=t?`?entity_type=${encodeURIComponent(t)}&limit=100`:"?limit=100",r=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/entities${e}`);sd=r,F("metricEntities").textContent=r.length,F("entityTable").innerHTML=Mt([V("table.id"),V("table.type"),V("table.name"),V("table.metadata")],r.map(a=>[`<button class="row-link" data-entity-id="${a.id}">${z(a.id)}</button>`,a.type,z(a.name),`<code>${z(JSON.stringify(a.metadata??{}))}</code>`])),F("entityTable").querySelectorAll("[data-entity-id]").forEach(a=>{a.addEventListener("click",()=>{const n=Number(a.dataset.entityId),i=sd.find(s=>s.id===n);i&&(ue.selection={kind:"entity",data:i},ur())})})}async function aw(){if(!ue.selectedProject)return;const t=Number(F("mergeSourceId").value),e=Number(F("mergeTargetId").value);if(!t||!e||t===e){Ae(V("toast.merge_check"));return}try{const r=await Fe("/entities/merge",{method:"POST",body:JSON.stringify({project_name:ue.selectedProject,source_entity_id:t,target_entity_id:e})});if(!r.ok){Ae(r.error??V("toast.merge_check"));return}Ae(V("toast.entity_merged")),F("mergeSourceId").value="",F("mergeTargetId").value="";const a=new CustomEvent("workspace:refresh");window.dispatchEvent(a)}catch(r){Ae(r.message)}}async function zo(){if(!ue.selectedProject)return;const t=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/extraction-logs?limit=50`);F("extractionLogTable").innerHTML=t.map(nw).join("")}function nw(t){const e=t.validation??{},r=t.page_context??{},n=(e.rejected_claims??[]).slice(0,3).map(i=>`${i.predicate??""}: ${i.reason??""}`).join(" | ");return`
<article class="claim-card">
<div class="claim-main">
<strong>${z(t.extractor_name)}</strong>
<span>${z(t.provider)}</span>
<span>${z(e.claim_status??"")}</span>
<span>accepted ${e.accepted_claim_count??0}</span>
<span>rejected ${e.rejected_claim_count??0}</span>
</div>
<div class="evidence">${z(r.page_type??"")} / ${z(r.crawl_status??"")} / ${z(r.extraction_status??"")}</div>
<div class="evidence">${z(t.page_url??"")}</div>
<div class="evidence">${z(n)}</div>
</article>
`}async function iw(){if(!ue.selectedProject)return;F("researchResult").textContent=V("status.research_running");const t=F("researchSeedEntityId").value.trim();try{const e=await Fe("/research/run",{method:"POST",body:JSON.stringify({...Ho(),project_name:ue.selectedProject,seed_entity_id:t?Number(t):null,goal:F("researchGoal").value.trim()||"Semantic ontology exploration",max_depth:Number(F("siteMaxDepth").value||2),max_steps:Number(F("researchMaxSteps").value||8),max_branch:8,min_relevance:Number(F("researchMinRelevance").value||.35),same_domain_only:F("sameDomainOnly").checked,analyze_page_types:["ProductPage","BrandStoryPage","ReviewPage"]})});F("researchResult").textContent=`Research ${e.status}: explored ${e.explored_count}, analyzed ${e.analyzed_count}, queued ${e.queued_count}, skipped ${e.skipped_count}`,Ae(V("toast.research_completed"));const r=new CustomEvent("workspace:refresh");window.dispatchEvent(r)}catch(e){F("researchResult").textContent=`${V("toast.research_failed")}: ${e.message}`,Ae(V("toast.research_failed"))}}async function $o(){if(!ue.selectedProject)return;const t=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/research/sessions?limit=20`);F("researchSessions").innerHTML=t.map(sw).join("")}function sw(t){const e=t.history??[],r=e.length?e[e.length-1]:null,n=(t.memory??{}).conflicts??[];return`
<article class="claim-card">
<div class="claim-main">
<strong>${z(t.name??"Research session")}</strong>
<span>${z(t.status??"")}</span>
<span>history ${e.length}</span>
<span>queue ${(t.queue??[]).length}</span>
<span>conflicts ${n.length}</span>
</div>
<div class="evidence">${z(t.goal??"")}</div>
<div class="evidence">seed ${z(t.seed??"")}</div>
<div class="evidence">${z(r?.outcome?.reason??r?.outcome?.status??"")}</div>
</article>
`}async function Fo(){if(!ue.selectedProject)return;const t=F("graphQueryKind")?.value??"trend_summary",e=F("graphQueryText")?.value.trim()??"";let r=`kind=${encodeURIComponent(t)}`;t==="brand_products"&&e&&(r+=`&brand=${encodeURIComponent(e)}`),t==="products_by_tag"&&e&&(r+=`&tag=${encodeURIComponent(e)}`);const a=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/graph/query?${r}`);F("graphQueryTable").innerHTML=ow(t,a)}function ow(t,e){return t==="brand_products"?Mt([V("table.product"),V("table.type"),V("table.brand"),V("table.confidence")],e.map(r=>[r.product,r.product_type,r.brand??"",Math.round(r.confidence*100)+"%"])):t==="products_by_tag"?Mt([V("table.product"),V("table.predicate"),V("table.tag"),V("table.confidence")],e.map(r=>[r.product,r.predicate,r.tag,Math.round(r.confidence*100)+"%"])):t==="relation_summary"?Mt([V("table.predicate"),V("table.status"),V("table.support"),V("table.confidence")],e.map(r=>[r.predicate,r.status,r.support_count,Math.round((r.max_confidence??0)*100)+"%"])):t==="entity_type_summary"?Mt([V("table.type"),V("table.count")],e.map(r=>[r.entity_type,r.count])):Mt([V("table.predicate"),V("table.name"),V("table.type"),V("table.support"),V("table.confidence")],e.map(r=>[r.predicate,r.name,r.entity_type,r.support_count,Math.round((r.max_confidence??0)*100)+"%"]))}async function qo(){if(!ue.selectedProject)return;const t=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/recommendation-tags`);F("tagTable").innerHTML=Mt([V("table.predicate"),V("table.type"),V("table.name"),V("table.support"),V("table.confidence")],t.map(e=>[e.predicate,e.type,e.name,e.support_count,Math.round((e.max_confidence??0)*100)+"%"]))}async function lw(){if(ue.selectedProject)try{const t=await Fe("/recommend",{method:"POST",body:JSON.stringify({project_name:ue.selectedProject,target_entity_type:ue.projectDetail?.config?.recommendation?.target_entity_type??"Perfume",preferences:{preferred_notes:Di(F("preferredNotes").value),avoided_notes:Di(F("avoidedNotes").value),preferred_moods:Di(F("preferredMoods").value),season_context:F("seasonContext").value.trim()||null,occasion_context:F("occasionContext").value.trim()||null},limit:10})});F("recommendTable").innerHTML=Mt([V("table.name"),V("table.type"),V("table.score"),V("table.reasons")],t.map(e=>[e.name,e.entity_type,e.score,(e.reasons??[]).join(", ")]))}catch(t){Ae(t.message)}}let lo=null,pv="",qa=null;function uw(){const t=F("globalSearchInput"),e=F("globalSearchPanel");xt(t.parentElement),t.addEventListener("input",()=>{const r=t.value.trim();lo&&window.clearTimeout(lo),lo=window.setTimeout(()=>cw(r),200)}),t.addEventListener("focus",()=>{pv?Vo(qa):gv(),e.hidden=!1}),t.addEventListener("keydown",r=>{r.key==="Escape"&&(t.value="",e.hidden=!0,t.blur()),r.key==="ArrowDown"&&(r.preventDefault(),e.querySelector("[data-search-item]")?.focus())}),document.addEventListener("click",r=>{!e.contains(r.target)&&r.target!==t&&(e.hidden=!0)}),document.addEventListener("keydown",r=>{r.key==="/"&&!r.target.matches("input, textarea, select")&&(r.preventDefault(),t.focus(),t.select())}),fr(()=>{xt(t.parentElement),qa&&Vo(qa)})}async function cw(t){if(!ue.selectedProject)return;pv=t;const e=F("globalSearchPanel");if(!t){gv();return}try{qa=await Fe(`/projects/${encodeURIComponent(ue.selectedProject)}/search?q=${encodeURIComponent(t)}&limit=8`),Vo(qa)}catch(r){e.innerHTML=`<div class="search-empty muted">${z(r.message)}</div>`,e.hidden=!1}}function gv(){const t=F("globalSearchPanel");t.innerHTML=`<div class="search-empty muted">${z(V("search.hint"))}</div>`,t.hidden=!1}function Vo(t){const e=F("globalSearchPanel");if(!t)return;const r=[{key:"entities",items:t.entities,render:dw},{key:"claims",items:t.claims,render:fw},{key:"pages",items:t.pages,render:vw},{key:"predicates",items:t.predicates,render:hw}].filter(a=>(a.items??[]).length>0);r.length?(e.innerHTML=r.map(a=>`
<div class="search-group">
<div class="search-group-head">${z(V(`search.group.${a.key}`))}</div>
${a.items.map((n,i)=>a.render(n,i)).join("")}
</div>
`).join(""),e.querySelectorAll("[data-search-item]").forEach(a=>{a.addEventListener("click",()=>pw(a.dataset.searchItem,JSON.parse(a.dataset.payload))),a.addEventListener("keydown",n=>{n.key==="Enter"&&(n.preventDefault(),a.click()),n.key==="ArrowDown"&&(n.preventDefault(),(a.nextElementSibling||e.querySelector("[data-search-item]"))?.focus?.()),n.key==="ArrowUp"&&(n.preventDefault(),(a.previousElementSibling||e.querySelector("[data-search-item]:last-of-type"))?.focus?.()),n.key==="Escape"&&F("globalSearchInput").focus()})})):e.innerHTML=`<div class="search-empty muted">${z(V("search.empty"))}</div>`,e.hidden=!1}function dw(t){return`
<button class="search-item" data-search-item="entity" data-payload='${ki(JSON.stringify(t))}'>
<span class="search-item-main">${z(t.name)}</span>
<span class="search-item-meta">${z(t.type??"")}</span>
</button>
`}function fw(t){const e=t.object_value?JSON.stringify(t.object_value):"";return`
<button class="search-item" data-search-item="claim" data-payload='${ki(JSON.stringify(t))}'>
<span class="search-item-main">${z(t.subject??"")} · ${z(t.predicate??"")} ${z(e)}</span>
<span class="search-item-meta">${Math.round((t.confidence??0)*100)}%</span>
</button>
`}function vw(t){return`
<button class="search-item" data-search-item="page" data-payload='${ki(JSON.stringify(t))}'>
<span class="search-item-main">${z(t.title??t.url??"")}</span>
<span class="search-item-meta">${z(t.url??"")}</span>
</button>
`}function hw(t){return`
<button class="search-item" data-search-item="predicate" data-payload='${ki(JSON.stringify(t))}'>
<span class="search-item-main">${z(t)}</span>
</button>
`}function ki(t){return String(t).replaceAll("&","&amp;").replaceAll("'","&#039;").replaceAll('"',"&quot;")}function pw(t,e){const r=F("globalSearchPanel");if(r.hidden=!0,t==="entity")uo("entities"),ue.selection={kind:"entity",data:{id:e.id,name:e.name,type:e.type,metadata:{}}},ur();else if(t==="claim")uo("claims"),ue.selection={kind:"claim",data:{...e,object:void 0}},ur();else if(t==="page")e.url&&window.open(e.url,"_blank","noreferrer");else if(t==="predicate"){uo("graph");const a=F("graphPredicate");a&&(a.value=e,a.dispatchEvent(new Event("change")))}}function uo(t){document.querySelectorAll(".tab").forEach(e=>e.classList.toggle("active",e.dataset.tab===t)),document.querySelectorAll(".tab-panel").forEach(e=>e.classList.toggle("active",e.id===t))}const gw=document.getElementById("app"),ml=Rv(gw);Av(ml.sidebarHost,{onProjectChanged:bl,onCrawlUpdate:()=>ur(),refreshAll:wl});tw(ml.workspaceHost);Hv(ml.inspectorHost);uw();document.getElementById("refreshBtn").addEventListener("click",bl);window.addEventListener("project:select",t=>yv(t.detail));window.addEventListener("workspace:refresh",wl);fr(()=>ur());bl().catch(t=>Ae(t.message));async function bl(){ue.projects=await Fe("/projects"),!ue.selectedProject&&ue.projects.length&&(ue.selectedProject=ue.projects[0].name),Go(),ue.selectedProject&&await yv(ue.selectedProject)}async function yv(t){ue.selectedProject=t,ue.projectDetail=await Fe(`/projects/${encodeURIComponent(t)}`),ue.ontology=await Fe(`/ontology/${encodeURIComponent(ue.projectDetail.domain)}`),Go(),Mv(ue.projectDetail),vv(),hv(),ur(),await wl()}async function wl(){if(!ue.selectedProject)return;const t=[["pipeline",yl],["ontology registry",Oo],["entities",No],["claims workbench",Ta],["extraction logs",zo],["research sessions",$o],["graph query",Fo],["tags",qo],["graph",gl]];await Promise.all(t.map(async([e,r])=>{try{await r()}catch(a){console.warn(`${e} load failed`,a)}})),ur()}
//# sourceMappingURL=index-BsoXaTIL.js.map