{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6aa913a6-3276-42eb-8c31-906a372a9d84",
   "metadata": {},
   "source": [
    "# Temporal Cross Conversational Memory for Large Language Models"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce93a930-bd64-43be-83ad-a8c9b55b0b70",
   "metadata": {},
   "source": [
    "*Sriniketh Ponnada*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0cf4b351-0bd9-4336-8cd0-db5d9d70c3de",
   "metadata": {},
   "source": [
    "## The problem"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8ea23c1-1c6b-400c-a88b-da38728e1029",
   "metadata": {},
   "source": [
    "Consumer-facing LLMs hosted by frontier AI labs today offer a feature generally known as \"Personalization\" that allows the LLM to reference information from past conversations and provide results tailored to the user. The visible mechanism used to achieve this is the curation of a summary about the user from past conversations, updated periodically. This summary is either appended directly to the system prompt of every conversation and preloaded into the context window, or individual files on each topic about the user are listed in the system prompt, allowing the model to read each file through a function or tool call.  \n",
    "(For example, see https://claude.ai/new#settings/customize-memory or https://chatgpt.com/#settings/Personalization).  \n",
    "\n",
    "In this writeup, I will refer to the cross conversational personalization in LLMs as \"memory\".  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "290ee633-c420-4d28-b899-fcce9fdc2b92",
   "metadata": {},
   "source": [
    "Memory is an especially important feature for consumer oriented chatbots (in contrast to system facing LLMs used as tools), as the average consumer converses with an LLM as if it were another human, even while understanding otherwise. Therefore, it is helpful to view the behaviour of a chatbot as being analogous to the behaviour of a human in conversation and identifying its shortcomings.  \n",
    "\n",
    "The first shortcoming is downstream of the concise nature of a summary — chatbots have to tradeoff details for compactness, something that humans do not do.  Humans can effortlessly recall niche details from previous conversations, and the user expects this from chatbots as well. A fact that doesn't make it into the summary is invisible the model. Worse — an incorrect fact, or one taken out of context that makes it into memory will be surfaced in future conversations.  \n",
    "\n",
    "Second — Facts present in a summary are time independent. The model cannot tell old and new information apart. Old information remains in memory even if the information is untrue or expired. Unless the user explicitly notifies that a piece of information is irrelevant, the model will not know to remove old facts from the summary.  \n",
    "\n",
    "Third — By preloading the summary into every conversation through the system prompt, factually correct but irrelevant facts are introduced to the model, biasing it to include such facts when unnecessary. We do not recollect everything we know about someone every time we converse with them. Recollection is natural and triggered by the details of the conversation itself.\n",
    "\n",
    "Fourth — A summary cannot preserve the texture of a memory. 'Bill has a difficult relationship with his boss' loses the specific words and emotions that Bill uses and conveys in the conversation. Therefore, on retrieval, the model does not know how to weigh a fact, or how strongly the user believes in something. It may downplay something sensitive, or bring up minor details the user said in passing. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce797242-8ce5-4e0b-bc53-10304a9ed332",
   "metadata": {},
   "source": [
    "## What a better system needs to do"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83d85bd9-5941-43aa-bfdf-64d8d351ad99",
   "metadata": {},
   "source": [
    "Given that users expect chatbot memory to feel human-like, it's reasonable to look at how human recall subjectively behaves as a design inspiration. A fitting analogy to draw on are the parallels between the two types of memory in humans and LLMs. Humans have a short-term memory, allowing us to recall information from the recent past, such as memories from the same day. Short term memory is analogous to the context window of an LLM, within which the model can surface details exactly as they occurred. Similarly, Long term memory in humans — the ability to recollect information from weeks, months or years in the past is analogous to what a good cross conversation memory system in LLMs should look like.  \n",
    "\n",
    "The key features of Long term memory in humans (from my experience as a human) are:  \n",
    "\n",
    "1) We as humans can recall past events exactly as they happened.\n",
    "2) Recollection is a passive task. We recollect information based on the situation we are in, and the triggers that cause it.\n",
    "3) Recollection is a chain event. We can walk through a chain of related but distinct memories based on their relationships and relevance.\n",
    "4) Memories are temporal. Old memories fade and decay when they are not recollected, but are strengthened when recalled frequently. The number of times a memory is recalled is in itself a signal for how important it is.\n",
    "5) It can be hypothesized that the transfer of relevant memories from short term to long term memory happens during sleep. \n",
    "\n",
    "A good system for LLM memory should draw on these principles, as they solve the key problems mentioned previously."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fcaa94a-f069-41e3-be8b-e10d4bbcd1ea",
   "metadata": {},
   "source": [
    "## The Core Idea"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f013b8c6-0e64-43a8-83a8-c168c9a9f49b",
   "metadata": {},
   "source": [
    "Based on the features of human recollection mentioned above, the form of a memory system that incorporates them points towards a knowledge graph. Here's why:\n",
    "\n",
    "1) A knowledge graph for this purpose can be built by storing nouns (people, places etc.) as nodes, and verbs as edges, capturing relations between different entities the user comes across. The memory is in the relation, but nodes act as anchor points for easy recollection. It is easier to identify a person on a knowledge graph than to identify a specific memory in a large sea of text.\n",
    "2) As memories are the relations stored along edges, the importance of a memory can be determined by the weight of the edge. Edges traversed frequently can be made to have high weights, and otherwise, edges can be made to decay with time. \n",
    "3) If edges between nodes act as memories, then traversal across these edges is recollection. Since related nodes are naturally linked together in a knowledge graph, traversal between related ideas allows chain recollection and captures the context around a  specific memory as adjacent edges are traversed.\n",
    "4) The use of an embedder to automatically trigger a traversal of an edge during a conversation, allows recall to happen automatically, rather than needing the model to call a tool to read the graph.\n",
    "5) Once built, a knowledge graph can be expanded simply by adding more nodes and edges, rather than requiring a full rewrite every time. The graph can grow indefinitely, without constraints on graph size, because only relevant edges are surfaced during the conversation with the user.\n",
    "6) By attaching episodic snippets of the exact prompt from which a relation was created to the edge, and loading this into the context window of the LLM during a conversation when the associated edge is traversed, memory recollection is exact, capturing the user in their own words rather than allowing the misinterpretation of a summary."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57e75414-6037-48c2-a203-cbe37000f8b0",
   "metadata": {},
   "source": [
    "## The Architecture"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "02a7eeb5-5e80-4d06-bc9a-3b0ccb07b7e6",
   "metadata": {},
   "source": [
    "### How the system works in practice"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1cd9d996-b5ba-4003-800d-57423c843937",
   "metadata": {},
   "source": [
    "At a high level, this is how the memory system works:\n",
    "\n",
    "1) The user has their first conversation with the LLM.\n",
    "2) After the conversation is completed, the text from the full conversation transcript is compiled together and passed to another LLM.\n",
    "3) This LLM extracts entities from the text (PERSON, ORG, PLACE, EVENT, THING, TOPIC, PREFERENCE, OTHER) and links them via the relations between them. This collection of entities and relations forms a map of the LLM's memory.\n",
    "4) A snippet of the text from which a relation was extracted is attached to that relation, to provide context.\n",
    "5) A knowledge graph containing entities as nodes and relations as edges is built out. A self node for the user is designated on first write and used to resolve placeholders.\n",
    "6) When the user has their next conversation with the model, an embedder scans the user's text at every turn to find words semantically similar to entities and relations on the graph.\n",
    "7) When a match is found, activation spreads up to 2 hops in both directions from those seed entities, weighted by edge strength, and the strongest neighbourhood is injected into context as relation lines (Entity-Relation-Entity strings) plus the original snippets.\n",
    "8) The LLM uses this accumulated context to reply to the user.\n",
    "9) After the conversation completes, the existing graph is appended to and grown further. New nodes and relations are added based on new information from the user. Duplicate nodes are merged and ambiguities resolved. Relations that go unused over time fade in strength, while ones that keep coming up are reinforced.\n",
    "10) The process repeats."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1ff2b0ad-8d31-4732-8aa9-8bbe7e0fb43f",
   "metadata": {},
   "source": [
    "### Each part"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7bd533c1-ac6c-4833-bfde-91159f2d487d",
   "metadata": {},
   "source": [
    "#### The Schema"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d71719f6-b921-4b28-b3cf-dba2fa897ad4",
   "metadata": {},
   "source": [
    "Memory in this system is a graph, with 3 main parts: \n",
    "\n",
    "A **node** is a referent: a person, organization, place, event, thing, topic, preference, or other entity the user has mentioned. There are only those eight kinds, kept fixed so the same idea is always filed in the same way. A node holds a name, alternate names, a small set of stable properties, a confidence score, and a list of which conversations it appeared in. It holds no strength and does not decay. It exists so there is something to attach memories to and search from.  \n",
    "\n",
    "An **edge** is the memory itself: a single claim linking two nodes, such as Bill → HAS_BOSS → Sarah. Relations are always uppercase, verb first phrases of one to four words. Each edge carries the claim's strength from 0 to 100, the extractor's confidence from 0 to 1, a stability class that sets how fast it should fade (immutable, stable, mutable, time_bound, ephemeral), and a cardinality (one_to_one versus one_to_many) that records whether the relation can truthfully point to more than one target. Only temporary relations can carry an expiry. Nothing is allowed to relate to itself.\n",
    "\n",
    "The **snippet** is what makes that claim admissible, and what keeps it honest. Every edge must cite the utterance it came from: the user's own words, stored verbatim on the edge alongside a shorter evidence field. The edge does not describe the snippet; the snippet justifies the edge. Without it, there is no reason for the relation to be there at all.  \n",
    "More importantly, the snippet is what prevents memory from collapsing into a summary. A bare relation like HAS_BOSS says almost nothing about how that fact was expressed. Whether it was said with frustration, with affection, as an aside, or as something dwelled on. The snippet preserves that flavour: the tone, the emphasis, the surrounding context of the sentence it came from. It also carries a useful robustness. The verbatim text inevitably holds details the extractor did not promote into nodes, edges, or properties, but which still matter when the memory is recalled. By holding the snippet, the edge holds on to what structured extraction would otherwise throw away."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "05c5ba5d-f9fe-4335-8345-c8c00f73c267",
   "metadata": {},
   "source": [
    "#### Extraction and Graph Construction"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6f11330-a5c5-44c2-9d46-4fdd5c649c30",
   "metadata": {},
   "source": [
    "Graph construction happens once per conversation, after it finishes. At the end of a conversation, the full transcript is gathered and handed to a language model with one job: propose what should be remembered from it.  \n",
    "The model is asked to return three things in a fixed shape: the entities mentioned, the relations between them, and a short record of the conversation itself including a summary, an importance score, and a few tags.  \n",
    "To help it avoid inventing duplicates, it is also shown the relevant part of the existing graph: the neighbourhood around anything in the current conversation that resembles something already known. That context is found the same way retrieval works, by matching the conversation against what is already stored, except here it is deliberately broad. At write time we would rather show the model too much than too little.\n",
    "A deterministic pass then cleans what the model returns. Casing is corrected, unknown stability labels fall back to stable, and expiry dates attached to permanent relations are removed. What cannot be repaired is dropped with a note rather than allowed to corrupt the graph.  \n",
    "Relations that point to themselves, relations whose labels are malformed, and relations where neither end refers to anything known do not make it into the graph. When exactly one end is unknown, a provisional node is created for the missing side and marked as low-confidence, so the relation and the concept it points to are preserved rather than lost.  \n",
    "An empty result is valid. Not every conversation contains anything worth keeping.  \n",
    "The outcome is a small, checked batch of new nodes and edges, each edge carrying its verbatim snippet and each node and edge citing the conversation it came from. Nothing is merged or decided here. That batch is passed forward to merge and disambiguation, which decide what is genuinely new and what is a new sighting of something already known."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0e780b1-d1cc-4a5f-94cc-0538d1d913b1",
   "metadata": {},
   "source": [
    "#### Merge and Disambiguation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "747992cb-f094-44d1-9e97-d35528fe4307",
   "metadata": {},
   "source": [
    "Every new conversation reintroduces people and ideas the system may already know. Extraction proposes names; merge decides whether each one is genuinely new or another sighting of something already on the graph. Merging contains a meaningful asymmetry: merging two different people destroys both. There is no clean way to split them apart later. Missing a merge only creates a duplicate, which can still be fixed. The whole stage is built around that asymmetry: merge quickly when certain, hesitate whenever unsure.  \n",
    "\n",
    "The first pass is deterministic and needs no model. Each proposed entity is compared only against stored entities of the same kind, so a person named Sam can never collapse into an organization named Sam. Within that set, rules run in order.   \n",
    "1) An exact match on name and kind merges immediately.  \n",
    "2) If the new name appears in an existing node's list of alternate names (aliases), it merges — unless two different nodes both claim it, in which case it is held for review.  \n",
    "3) The same holds for common abbreviations, drawn from a fixed set of groups like William, Bill, and Will: one match merges, several matches mean ambiguity. \n",
    "4) Weaker resemblances never merge on their own. A spelling similarity above 0.80, (*measured as one minus normalized edit distance*), and a word-overlap test with one name containing the other, or sharing at least half their words each nominate candidates for a second look. If nothing fires at all, the entity is new.  \n",
    "\n",
    "Generic self-references are the one exception to this caution. When the extractor does not yet know the user's name it emits placeholders like User or me. Since there is structurally only one user per graph, these are forced directly onto the designated self node rather than risking a new placeholder per conversation. That self node itself is chosen once, from the source of the first relation ever observed, on the convention that relations point outward from the user, and then kept fixed.  \n",
    "\n",
    "Everything held for review goes to a language model with richer context: the proposed entity, the conversation it came from, and each candidate's surrounding neighbourhood on the graph, so shared employers, family, and places count as evidence of identity.  \n",
    "The model returns a confidence per candidate, and a fixed banding decides: above 0.90 merges silently, from 0.70 to 0.90 merges but is flagged for inspection, below 0.70 stays separate. The highest qualifying candidate wins. A soft hint from the extractor, its own guess at which existing node this might be, can only escalate an entity into review, never merge it directly.  \n",
    "\n",
    "Committing the decision is mechanical. A new node is added with its source conversation attached. A merged node keeps its existing identity and absorbs the new sighting:\n",
    "\n",
    "- the new surface form becomes an alias;\n",
    "- properties are combined;\n",
    "- the conversation is cited; and\n",
    "- confidence becomes the higher of the two.\n",
    "\n",
    "Edges are then remapped through the same decisions, so a relation pointing at a merged-away name now points at the surviving node. If both ends of a relation land on the same node after remapping, it is dropped. The graph never allows self-relations."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a24f8b9-2459-4c8d-95f3-61a8de6c849a",
   "metadata": {},
   "source": [
    "#### Decay and Reinforcement"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4426432a-8233-40e8-ad9a-86061c335d3d",
   "metadata": {},
   "source": [
    "Memory here is not stored and left alone. Every relation carries a strength from 0 to 100 that moves over time: it fades when ignored and recovers when used. Nodes never fade. Only relations do, because only relations are memories.  \n",
    "Fading follows a simple exponential curve. The strength after time is the starting strength multiplied by a decay factor that shrinks with each passing day. How fast it shrinks depends on the stability assigned at extraction. Immutable relations do not fade at all.   Stable ones fade very slowly, mutable ones faster, and temporary ones fastest of all, with expiry dates allowed only on the last two. A daily pass recomputes every edge from the time since it was last touched. When strength falls below a small threshold, the edge is marked dormant. It is never deleted. A faded memory stays in the graph as provenance, and a later conversation can always revive it. It simply stops competing for recall until then.  \n",
    "\n",
    "<blockquote>\n",
    "In exact form, with $t$ measured in days since the edge was last touched:\n",
    "\n",
    "$$ S(t) = S_0 \\cdot e^{-\\lambda t} $$\n",
    "\n",
    "where $S_0$ is the strength at last touch (new edges start at $100$),\n",
    "and $\\lambda$ is set by stability:\n",
    "\n",
    "| stability | $\\lambda$ |\n",
    "|---|---|\n",
    "| immutable | $0.000$ |\n",
    "| stable | $0.005$ |\n",
    "| mutable | $0.020$ |\n",
    "| time_bound | $0.050$ |\n",
    "| ephemeral | $0.200$ |\n",
    "</blockquote>\n",
    "\n",
    "\n",
    "Reinforcement is the opposite motion and comes from two places. The first is repetition at write time: if a new conversation observes a relation that already exists, the existing edge is strengthened by a fixed amount, capped so it can never exceed its starting value, and its snippet is refreshed only if the new sighting arrived with higher confidence. The second is use at read time. Every read logs which edges its traversal crossed, without changing them. At the close of the conversation those logged edges receive the same fixed bump. In other words, a memory grows stronger both when it is restated and when it proves useful for understanding something else.\n",
    "The separation matters. Confidence records how sure the system was when it first heard something and never moves on its own. Strength records how alive that thing has stayed since, rising on reuse and falling with neglect. A childhood address can therefore remain high-confidence but long dormant, while a new colleague's name stays weak until it keeps coming up. Time, frequency, and usefulness are all visible in one number, without ever rewriting what was originally said.\n",
    "\n",
    "<blockquote>\n",
    "Reinforcement, on re-observation or on read-traversal, is:\n",
    "\n",
    "$$ S_{\\mathrm{new}} = \\min(S_{\\mathrm{old}} + 15,\\, 100) $$\n",
    "\n",
    "An edge with $S < 2.0$ is flagged dormant and never deleted. \n",
    "</blockquote>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c863d0de-d0a0-4431-af23-17b0b2ff10c1",
   "metadata": {},
   "source": [
    "#### Retrieval and Traversal"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d11e5a3-265f-4c6d-9c9d-61a77c608bf4",
   "metadata": {},
   "source": [
    "Retrieval answers one question per turn: given what the user just said, what small piece of the graph deserves to be in the model's context right now. This is one of the key advantages to using a graph to store memory — the graph can grow indefinitely, but only those parts of the graph that are relevant to the conversation at hand make it into the model's context window. \n",
    "Retrieval never changes the graph. It only walks it, then logs where it walked so a later write can strengthen those paths.  \n",
    "It starts with words, not vectors. The incoming message is split into content words — lowercase tokens with function words and single letters removed, deduplicated. This is not linguistic analysis; it just concentrates the signal on nouns and other load-bearing words.\n",
    "Each remaining word is embedded and compared against everything stored. Every node is indexed by its name plus aliases, and every distinct relation label is indexed once as a phrase, so partner can match HAS_PARTNER even when no node is named partner. All vectors are length-normalized, so similarity is a dot product:\n",
    "$$ \\mathrm{sim}(q, k) = q \\cdot k $$\n",
    "Because embedding spaces are anisotropic — random pairs already sit well above zero — the comparison is done after subtracting the corpus mean. With $\\mu$ the mean of all stored vectors:\n",
    "$$ q_c = \\frac{q - \\mu}{\\lVert q - \\mu \\rVert}, \\quad M_c = \\mathrm{normalize}(M - \\mu), \\quad \\mathrm{score} = M_c \\, q_c $$\n",
    "\n",
    "This pulls the unrelated baseline back toward zero so a threshold means something. A word seeds on every hit above $0.30$, plus one margin case: a top hit above $0.15$ that beats its runner-up by at least $0.15$ is accepted as a clear winner. Relation hits resolve to the endpoints of every edge carrying that relation. Stale keys are dropped.\n",
    "Activation then spreads from all seeds at once, up to two hops, in both directions along each edge. A node does not hand its full activation to every neighbour — it divides it in proportion to edge strength, so a heavily connected hub cannot flood the graph:\n",
    "$$ \\mathrm{contrib}(u \\to v) = \\mathrm{act}(u) \\cdot \\frac{\\mathrm{strength}(u,v)}{\\sum_{e \\ni u} \\mathrm{strength}(e)} \\cdot 0.6 $$\n",
    "Contributions arriving by different paths add up. Each node's total is remembered along with whether it was reached mostly forward (following edges out), mostly in reverse (following them in), or as a seed, and at which hop. Every edge crossed is logged for deferred reinforcement.\n",
    "Two adjustments follow:\n",
    "\n",
    "1. First, a small co-episode bonus: any node that shares a source conversation with an already-fired node ($\\mathrm{score} \\ge 0.30$) gains $+0.15$, capturing the idea that things mentioned together belong together. Seeds are exempt — they need no bonus.\n",
    "2. Second, a budget keeps injection terse. Only nodes at or above $0.30$ fire, capped at eight, split roughly $70/30$ between forward-or-seed and reverse, with leftovers backfilling whichever side has room.\n",
    "Injection itself is tiered. Fired relations between fired nodes are rendered as compact lines — $Bill -[$<span class=\"relation-label\">HAS_BOSS</span>$]\\to Sarah$ — forming the $[MEMORY]$ block. Then, for nodes scoring at or above $0.60$, up to four of their own strongest incident snippets each are added as the $[CONTEXT]$ block, verbatim and deduplicated. Superseded edges are hidden in both. The model therefore sees structure first and texture only where the signal is hot — enough to recall precisely, without re-reading everything known about someone every turn."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e20744e-0f2f-4c52-83a5-9c9fd4afca66",
   "metadata": {},
   "source": [
    "#### The analogy to synaptic activation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce46fd13-7664-4724-937e-fa9cef33ca9c",
   "metadata": {},
   "source": [
    "The resemblance to synapses in the human brain is deliberate but partial.  \n",
    "It holds at the level of dynamics, not mechanism. **What holds** is the use–dependent loop. An edge that fires, crossed during retrieval is later strengthened, and an edge that never fires decays exponentially toward dormancy. That is Hebbian in spirit: what is recalled together stays recallable, what is ignored fades, and frequency of use becomes its own measure of importance. The co-episode bonus is the same idea one step wider: nodes introduced in the same conversation lend each other activation, the graph version of firing together wiring together. Degree normalization plays the role of a limited resource: a hub cannot drive all its neighbours at full strength, so only genuinely convergent paths survive, much as lateral competition constrains biological spread. Even dormancy without deletion has a neural echo — a weakened trace that can be reactivated is closer to depotentiation than to pruning.  \n",
    "\n",
    "**What does not hold** is almost everything structural. A biological weight is a continuously remodeled conductance shaped by spike timing, calcium, neuromodulation, and sleep-dependent consolidation. Here strength is a single scalar per edge, moved only by two discrete events: a fixed $+15$ bump on reuse, capped at $100$, and a daily exponential multiply set by a hand-chosen stability class. There is no gradient, no timing dependence, no inhibition, and no learning inside retrieval itself. Activation is a transient walk computed fresh each turn, then discarded except for a log of which edges were crossed. The hard cognitive work deciding whether two mentions are the same person, whether a new relation replaces an old one is not done by the network at all but by a language model reasoning over neighbourhoods, with deterministic rules guarding the cases where a mistake would be unrecoverable. Symbols do what weights cannot here: keep identity, tense, and contradiction explicit.  \n",
    "\n",
    "The graph borrows the economy of synaptic memory: strengthen the useful, let the rest fade, never pay for what is not recalled while keeping meaning itself symbolic and inspectable. Activation behaves like recall; it is not learning. Learning happens only at write time, in daylight, one checked batch per conversation."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9e6624c4-ef09-45c1-bef6-7f937380015a",
   "metadata": {},
   "source": [
    "## An example showcasing the system in action:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f8cdc00-27fc-4d52-9273-b3b8dd2c1c0e",
   "metadata": {},
   "source": [
    "Here is a simple 2 turn conversation demonstrating extraction and recall with this system:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "62d3f888-1ded-460b-8069-40290e14ccdd",
   "metadata": {},
   "source": [
    "*Note: This conversation happened on Opencode with GLM 5.3 using the pegasus-opencode npm plugin. Some input text was minimally modified before being pasted here to correct spellings and grammar.*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b433f4a-e58c-4a51-b65a-eb7851f74445",
   "metadata": {},
   "source": [
    "### The conversation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b0324f6-40f9-4c90-96d0-0a0cdfb321a2",
   "metadata": {},
   "source": [
    "User:  \n",
    "\n",
    "<blockquote>\n",
    "Hey! I'm Trevor, a consultant at Deloitte. I currently work as a financial analyst, but I am conflicted about the next step in my career. I could either transition into a full-time role at one of the tech companies I have been consulting for recently, primarily fast-growing AI startups, or I could switch lanes entirely and join a major investment bank. While I don't know much about AI from a technical standpoint, I deeply understand the financials, and I know it is the next big wave. I also hear that major banks are aggressively trying to position themselves to lead the upcoming influx of AI company IPOs over the next few years. My experience with tech startups could be highly valuable to these large banks, and the cash compensation would be substantial. On the other hand, I could aim for a CFO track at a smaller startup, trading immediate liquidity for significant equity and incredible upside. What do you reckon I should do?  </blockquote>    \n",
    "\n",
    ".  \n",
    "\n",
    "Model:  \n",
    "\n",
    "<blockquote>\n",
    "Nice problem to have, Trevor. Here's how I'd think about it:\n",
    "My lean: the bank, right now.  \n",
    "Your edge — understanding AI startup financials from the inside — is most valuable to banks during the IPO wave, and that edge is temporary. Once the wave matures or cools, everyone will have \"AI experience\" and yours won't be differentiated.  Banks paying big cash for exactly your profile is you selling your experience at its peak. Going in-house at a startup, by contrast, puts you in a room full of technical people where finance is a support function, not a value driver.  \n",
    "How to frame it as an analyst (you'll appreciate this):  \n",
    "- Bank = cash-heavy, lower variance, and preserves optionality. Two years of IPO deal experience makes you more valuable to startups later — likely at better terms (CFO of a Series B/C rather than a seed-stage scramble).  \n",
    "- Startup CFO = a concentrated, illiquid position. Your salary, equity, and human capital all sit in one early-stage basket. That's the opposite of diversification, and you of all people know most options expire worthless.  \n",
    "- Full-time at a current client = you'd be joining at a growth-stage valuation, so your equity has already run up; the easy money was made before you got in.  \n",
    "When the other options win: if you have years of runway saved, genuinely believe in one specific company's unit economics (not just the vibe), and can stomach the variance — the CFO path is the only one with life-changing upside. The bank path's ceiling is high cash but no jackpot.  \n",
    "A few questions that would sharpen the answer: How much of a cash cushion do you have? Do you actually know how to evaluate a startup's equity (409a vs. preferred, liquidation preferences)? And can you tolerate banking culture for 2–3 years? If the answer to the last one is no, the whole analysis changes.\n",
    "</blockquote>  \n",
    "\n",
    "User:  \n",
    "\n",
    "<blockquote>\n",
    "Well, I guess the thing I value most is agency. I hate having a boss, and my current boss, Joshua, at Deloitte is the only one I've ever been able to tolerate and work with. I fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive; as someone in consulting, the expectation is that I would have already learned to deal with bureaucracies and large corporations, but deep down, I just don't like it.At a smaller company, I am hoping things will be leaner, allowing me to act faster and make big decisions with real skin in the game—something people in my profession are often mocked for lacking. I don't love that stereotype, but I have to admit there is an element of truth to it. Having worked for 15 years, I've built up a few hundred thousand dollars in liquidity and a few hundred thousand more in stocks. I am not in dire need of immediate cash, which makes me wonder if I should just chase liquidity now to start my own venture once I am fully financially independent.The company that offered me the CFO role, Nova AI, already has revenue and is growing at around 24% month-over-month. They are still operating at a loss, which is why they reached out to me for help. The founders are college students, but their revenue is approaching a million dollars a quarter, so the business definitely seems to be taking off. At the bank, however, I would be making over 500,000 dollars a year, which is a massive step up from the 300,000 I earn in my current job. So, what do you think? The immediate money is exciting, but my heart and my brain are completely in conflict.\n",
    "</blockquote>\n",
    "\n",
    ".  \n",
    "\n",
    "Model:\n",
    "\n",
    "<blockquote>\n",
    "Honestly, Trevor, I think your \"heart vs brain\" framing is wrong — and resolving that is the whole answer.  \n",
    "Let me reframe it:\n",
    "The trade, in numbers. Bank: +200K/year over your current comp. Over 3 years, call it 1-1.5M dollars total. That's what you'd be buying — and you'd be paying for it with the exact thing you say you can't tolerate. You've had exactly one tolerable boss in 15 years; investment banks are the most boss-dense, hierarchy-heavy environments in finance, and you'd be entering at the bottom of a new pecking order as the outsider from consulting. The real risk isn't the bureaucracy — it's that you're miserable in 14 months, your performance slips, and you get pushed out before the money fully materializes. For someone with ~1M in assets, the marginal utility of the next 1M is low. The marginal utility of agency, for you, is clearly very high.\n",
    "Why Nova fits your actual objective function. You told me your #1 value is agency, and you want to eventually start something of your own. The CFO role is the only option that serves both: real decision rights, skin in the game (fixing the consultant's wound you admitted to), and — most importantly — operating experience, which is the single best prerequisite for founding. Banking teaches you deal process; being CFO teaches you how companies actually run: burn, runway, hiring, pricing, boards. Also note the option asymmetry: Nova CFO → bank later is very plausible (an AI-company operator stays hot through the IPO wave); bank → founder later means 3 more years of not building the muscle. And 24% MoM at $1M/quarter is a ~10x annual trajectory if it held — even decaying, that's the kind of curve that makes CFO equity meaningful, and it puts you inside the AI wave you're excited about rather than selling it from the other side of the table.\n",
    "But here's the catch — Nova's agency isn't guaranteed, it's dilutable. You'd still have bosses: two college students and, eventually, a board. The risk isn't the title, it's whether you have real authority. Before you say yes, diligence it like a deal:\n",
    "- Cap table: last round priced? Liquidation preferences stacked on top of your common? How much dilution is coming?\n",
    "- Your deal: what % equity, what vesting, what severance if the founders and you clash.\n",
    "- Your authority: do you sign off on spend, do you attend board meetings, does the CEO actually defer to you on finance?\n",
    "- The business: runway in months, gross margin, churn/net revenue retention, is the 24% growth paid or organic (if it's bought with unprofitable acquisition, that's a treadmill, not traction).\n",
    "- The founders: can they handle pressure? Have they worked with senior operators before, or will they resent the adult in the room? Ask their existing investors this directly — investors will be surprisingly candid about founder maturity.\n",
    "Take the bank only if diligence fails (they won't share the cap table, runway is under 12 months, growth is paid, the founders bristle at your questions), or if you do the honest self-check and conclude that what you actually want is wealth maximization, not agency — those are both legitimate, but they're different answers.\n",
    "One last thing, gently: \"I'll go after liquidity and start something when I'm fully independent\" — that horizon recedes forever. You already have enough to survive a failure. People who wait until they feel rich enough to take a risk almost never take it. If Nova's diligence checks out, this is the moment you were saving for.\n",
    "</blockquote>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29b4000b-1af3-432b-91c5-3538e5c8b7b6",
   "metadata": {},
   "source": [
    "### The knowledge graph produced by our system from this conversation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "02742544-3e1d-4a49-92d8-170e70622027",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[33mWARNING: Ignoring invalid distribution -umpy (/Users/stponnada/Library/Python/3.9/lib/python/site-packages)\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution -umpy (/Users/stponnada/Library/Python/3.9/lib/python/site-packages)\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution -umpy (/Users/stponnada/Library/Python/3.9/lib/python/site-packages)\u001b[0m\u001b[33m\n",
      "\u001b[0m\u001b[33mWARNING: Ignoring invalid distribution -umpy (/Users/stponnada/Library/Python/3.9/lib/python/site-packages)\u001b[0m\u001b[33m\n",
      "\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m25.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m26.0.1\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49m/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip\u001b[0m\n",
      "Note: you may need to restart the kernel to use updated packages.\n",
      "16 nodes, 21 edges\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<iframe srcdoc=\"&lt;html&gt;\n",
       "    &lt;head&gt;\n",
       "        &lt;meta charset=&quot;utf-8&quot;&gt;\n",
       "        \n",
       "            &lt;script&gt;function neighbourhoodHighlight(params) {\n",
       "  // console.log(&quot;in nieghbourhoodhighlight&quot;);\n",
       "  allNodes = nodes.get({ returnType: &quot;Object&quot; });\n",
       "  // originalNodes = JSON.parse(JSON.stringify(allNodes));\n",
       "  // if something is selected:\n",
       "  if (params.nodes.length &gt; 0) {\n",
       "    highlightActive = true;\n",
       "    var i, j;\n",
       "    var selectedNode = params.nodes[0];\n",
       "    var degrees = 2;\n",
       "\n",
       "    // mark all nodes as hard to read.\n",
       "    for (let nodeId in allNodes) {\n",
       "      // nodeColors[nodeId] = allNodes[nodeId].color;\n",
       "      allNodes[nodeId].color = &quot;rgba(200,200,200,0.5)&quot;;\n",
       "      if (allNodes[nodeId].hiddenLabel === undefined) {\n",
       "        allNodes[nodeId].hiddenLabel = allNodes[nodeId].label;\n",
       "        allNodes[nodeId].label = undefined;\n",
       "      }\n",
       "    }\n",
       "    var connectedNodes = network.getConnectedNodes(selectedNode);\n",
       "    var allConnectedNodes = [];\n",
       "\n",
       "    // get the second degree nodes\n",
       "    for (i = 1; i &lt; degrees; i++) {\n",
       "      for (j = 0; j &lt; connectedNodes.length; j++) {\n",
       "        allConnectedNodes = allConnectedNodes.concat(\n",
       "          network.getConnectedNodes(connectedNodes[j])\n",
       "        );\n",
       "      }\n",
       "    }\n",
       "\n",
       "    // all second degree nodes get a different color and their label back\n",
       "    for (i = 0; i &lt; allConnectedNodes.length; i++) {\n",
       "      // allNodes[allConnectedNodes[i]].color = &quot;pink&quot;;\n",
       "      allNodes[allConnectedNodes[i]].color = &quot;rgba(150,150,150,0.75)&quot;;\n",
       "      if (allNodes[allConnectedNodes[i]].hiddenLabel !== undefined) {\n",
       "        allNodes[allConnectedNodes[i]].label =\n",
       "          allNodes[allConnectedNodes[i]].hiddenLabel;\n",
       "        allNodes[allConnectedNodes[i]].hiddenLabel = undefined;\n",
       "      }\n",
       "    }\n",
       "\n",
       "    // all first degree nodes get their own color and their label back\n",
       "    for (i = 0; i &lt; connectedNodes.length; i++) {\n",
       "      // allNodes[connectedNodes[i]].color = undefined;\n",
       "      allNodes[connectedNodes[i]].color = nodeColors[connectedNodes[i]];\n",
       "      if (allNodes[connectedNodes[i]].hiddenLabel !== undefined) {\n",
       "        allNodes[connectedNodes[i]].label =\n",
       "          allNodes[connectedNodes[i]].hiddenLabel;\n",
       "        allNodes[connectedNodes[i]].hiddenLabel = undefined;\n",
       "      }\n",
       "    }\n",
       "\n",
       "    // the main node gets its own color and its label back.\n",
       "    // allNodes[selectedNode].color = undefined;\n",
       "    allNodes[selectedNode].color = nodeColors[selectedNode];\n",
       "    if (allNodes[selectedNode].hiddenLabel !== undefined) {\n",
       "      allNodes[selectedNode].label = allNodes[selectedNode].hiddenLabel;\n",
       "      allNodes[selectedNode].hiddenLabel = undefined;\n",
       "    }\n",
       "  } else if (highlightActive === true) {\n",
       "    // console.log(&quot;highlightActive was true&quot;);\n",
       "    // reset all nodes\n",
       "    for (let nodeId in allNodes) {\n",
       "      // allNodes[nodeId].color = &quot;purple&quot;;\n",
       "      allNodes[nodeId].color = nodeColors[nodeId];\n",
       "      // delete allNodes[nodeId].color;\n",
       "      if (allNodes[nodeId].hiddenLabel !== undefined) {\n",
       "        allNodes[nodeId].label = allNodes[nodeId].hiddenLabel;\n",
       "        allNodes[nodeId].hiddenLabel = undefined;\n",
       "      }\n",
       "    }\n",
       "    highlightActive = false;\n",
       "  }\n",
       "\n",
       "  // transform the object into an array\n",
       "  var updateArray = [];\n",
       "  if (params.nodes.length &gt; 0) {\n",
       "    for (let nodeId in allNodes) {\n",
       "      if (allNodes.hasOwnProperty(nodeId)) {\n",
       "        // console.log(allNodes[nodeId]);\n",
       "        updateArray.push(allNodes[nodeId]);\n",
       "      }\n",
       "    }\n",
       "    nodes.update(updateArray);\n",
       "  } else {\n",
       "    // console.log(&quot;Nothing was selected&quot;);\n",
       "    for (let nodeId in allNodes) {\n",
       "      if (allNodes.hasOwnProperty(nodeId)) {\n",
       "        // console.log(allNodes[nodeId]);\n",
       "        // allNodes[nodeId].color = {};\n",
       "        updateArray.push(allNodes[nodeId]);\n",
       "      }\n",
       "    }\n",
       "    nodes.update(updateArray);\n",
       "  }\n",
       "}\n",
       "\n",
       "function filterHighlight(params) {\n",
       "  allNodes = nodes.get({ returnType: &quot;Object&quot; });\n",
       "  // if something is selected:\n",
       "  if (params.nodes.length &gt; 0) {\n",
       "    filterActive = true;\n",
       "    let selectedNodes = params.nodes;\n",
       "\n",
       "    // hiding all nodes and saving the label\n",
       "    for (let nodeId in allNodes) {\n",
       "      allNodes[nodeId].hidden = true;\n",
       "      if (allNodes[nodeId].savedLabel === undefined) {\n",
       "        allNodes[nodeId].savedLabel = allNodes[nodeId].label;\n",
       "        allNodes[nodeId].label = undefined;\n",
       "      }\n",
       "    }\n",
       "\n",
       "    for (let i=0; i &lt; selectedNodes.length; i++) {\n",
       "      allNodes[selectedNodes[i]].hidden = false;\n",
       "      if (allNodes[selectedNodes[i]].savedLabel !== undefined) {\n",
       "        allNodes[selectedNodes[i]].label = allNodes[selectedNodes[i]].savedLabel;\n",
       "        allNodes[selectedNodes[i]].savedLabel = undefined;\n",
       "      }\n",
       "    }\n",
       "\n",
       "  } else if (filterActive === true) {\n",
       "    // reset all nodes\n",
       "    for (let nodeId in allNodes) {\n",
       "      allNodes[nodeId].hidden = false;\n",
       "      if (allNodes[nodeId].savedLabel !== undefined) {\n",
       "        allNodes[nodeId].label = allNodes[nodeId].savedLabel;\n",
       "        allNodes[nodeId].savedLabel = undefined;\n",
       "      }\n",
       "    }\n",
       "    filterActive = false;\n",
       "  }\n",
       "\n",
       "  // transform the object into an array\n",
       "  var updateArray = [];\n",
       "  if (params.nodes.length &gt; 0) {\n",
       "    for (let nodeId in allNodes) {\n",
       "      if (allNodes.hasOwnProperty(nodeId)) {\n",
       "        updateArray.push(allNodes[nodeId]);\n",
       "      }\n",
       "    }\n",
       "    nodes.update(updateArray);\n",
       "  } else {\n",
       "    for (let nodeId in allNodes) {\n",
       "      if (allNodes.hasOwnProperty(nodeId)) {\n",
       "        updateArray.push(allNodes[nodeId]);\n",
       "      }\n",
       "    }\n",
       "    nodes.update(updateArray);\n",
       "  }\n",
       "}\n",
       "\n",
       "function selectNode(nodes) {\n",
       "  network.selectNodes(nodes);\n",
       "  neighbourhoodHighlight({ nodes: nodes });\n",
       "  return nodes;\n",
       "}\n",
       "\n",
       "function selectNodes(nodes) {\n",
       "  network.selectNodes(nodes);\n",
       "  filterHighlight({nodes: nodes});\n",
       "  return nodes;\n",
       "}\n",
       "\n",
       "function highlightFilter(filter) {\n",
       "  let selectedNodes = []\n",
       "  let selectedProp = filter['property']\n",
       "  if (filter['item'] === 'node') {\n",
       "    let allNodes = nodes.get({ returnType: &quot;Object&quot; });\n",
       "    for (let nodeId in allNodes) {\n",
       "      if (allNodes[nodeId][selectedProp] &amp;&amp; filter['value'].includes((allNodes[nodeId][selectedProp]).toString())) {\n",
       "        selectedNodes.push(nodeId)\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  else if (filter['item'] === 'edge'){\n",
       "    let allEdges = edges.get({returnType: 'object'});\n",
       "    // check if the selected property exists for selected edge and select the nodes connected to the edge\n",
       "    for (let edge in allEdges) {\n",
       "      if (allEdges[edge][selectedProp] &amp;&amp; filter['value'].includes((allEdges[edge][selectedProp]).toString())) {\n",
       "        selectedNodes.push(allEdges[edge]['from'])\n",
       "        selectedNodes.push(allEdges[edge]['to'])\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  selectNodes(selectedNodes)\n",
       "}&lt;/script&gt;\n",
       "            &lt;style&gt;.vis-overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}div.vis-color-picker{background-color:#fff;border-radius:15px;box-shadow:0 0 10px 0 rgba(0,0,0,.5);display:none;height:444px;left:30px;margin-left:30px;margin-top:-140px;padding:10px;position:absolute;top:0;width:310px;z-index:1}div.vis-color-picker div.vis-arrow{left:5px;position:absolute;top:147px}div.vis-color-picker div.vis-arrow:after,div.vis-color-picker div.vis-arrow:before{border:solid transparent;content:&quot; &quot;;height:0;pointer-events:none;position:absolute;right:100%;top:50%;width:0}div.vis-color-picker div.vis-arrow:after{border-color:hsla(0,0%,100%,0) #fff hsla(0,0%,100%,0) hsla(0,0%,100%,0);border-width:30px;margin-top:-30px}div.vis-color-picker div.vis-color{cursor:pointer;height:289px;position:absolute;width:289px}div.vis-color-picker div.vis-brightness{position:absolute;top:313px}div.vis-color-picker div.vis-opacity{position:absolute;top:350px}div.vis-color-picker div.vis-selector{background:#4c4c4c;background:-moz-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4c4c4c),color-stop(12%,#595959),color-stop(25%,#666),color-stop(39%,#474747),color-stop(50%,#2c2c2c),color-stop(51%,#000),color-stop(60%,#111),color-stop(76%,#2b2b2b),color-stop(91%,#1c1c1c),color-stop(100%,#131313));background:-webkit-linear-gradient(top,#4c4c4c,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313);background:-o-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:-ms-linear-gradient(top,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%);background:linear-gradient(180deg,#4c4c4c 0,#595959 12%,#666 25%,#474747 39%,#2c2c2c 50%,#000 51%,#111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313);border:1px solid #fff;border-radius:15px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#4c4c4c&quot;,endColorstr=&quot;#131313&quot;,GradientType=0);height:15px;left:137px;position:absolute;top:137px;width:15px}div.vis-color-picker div.vis-new-color{left:159px;padding-right:2px;text-align:right}div.vis-color-picker div.vis-initial-color,div.vis-color-picker div.vis-new-color{border:1px solid rgba(0,0,0,.1);border-radius:5px;color:rgba(0,0,0,.4);font-size:10px;height:20px;line-height:20px;position:absolute;top:380px;vertical-align:middle;width:140px}div.vis-color-picker div.vis-initial-color{left:10px;padding-left:2px;text-align:left}div.vis-color-picker div.vis-label{left:10px;position:absolute;width:300px}div.vis-color-picker div.vis-label.vis-brightness{top:300px}div.vis-color-picker div.vis-label.vis-opacity{top:338px}div.vis-color-picker div.vis-button{background-color:#f7f7f7;border:2px solid #d9d9d9;border-radius:10px;cursor:pointer;height:25px;line-height:25px;position:absolute;text-align:center;top:410px;vertical-align:middle;width:68px}div.vis-color-picker div.vis-button.vis-cancel{left:5px}div.vis-color-picker div.vis-button.vis-load{left:82px}div.vis-color-picker div.vis-button.vis-apply{left:159px}div.vis-color-picker div.vis-button.vis-save{left:236px}div.vis-color-picker input.vis-range{height:20px;width:290px}div.vis-configuration{display:block;float:left;font-size:12px;position:relative}div.vis-configuration-wrapper{display:block;width:700px}div.vis-configuration-wrapper:after{clear:both;content:&quot;&quot;;display:block}div.vis-configuration.vis-config-option-container{background-color:#fff;border:2px solid #f7f8fa;border-radius:4px;display:block;left:10px;margin-top:20px;padding-left:5px;width:495px}div.vis-configuration.vis-config-button{background-color:#f7f8fa;border:2px solid #ceced0;border-radius:4px;cursor:pointer;display:block;height:25px;left:10px;line-height:25px;margin-bottom:30px;margin-top:20px;padding-left:5px;vertical-align:middle;width:495px}div.vis-configuration.vis-config-button.hover{background-color:#4588e6;border:2px solid #214373;color:#fff}div.vis-configuration.vis-config-item{display:block;float:left;height:25px;line-height:25px;vertical-align:middle;width:495px}div.vis-configuration.vis-config-item.vis-config-s2{background-color:#f7f8fa;border-radius:3px;left:10px;padding-left:5px}div.vis-configuration.vis-config-item.vis-config-s3{background-color:#e4e9f0;border-radius:3px;left:20px;padding-left:5px}div.vis-configuration.vis-config-item.vis-config-s4{background-color:#cfd8e6;border-radius:3px;left:30px;padding-left:5px}div.vis-configuration.vis-config-header{font-size:18px;font-weight:700}div.vis-configuration.vis-config-label{height:25px;line-height:25px;width:120px}div.vis-configuration.vis-config-label.vis-config-s3{width:110px}div.vis-configuration.vis-config-label.vis-config-s4{width:100px}div.vis-configuration.vis-config-colorBlock{border:1px solid #444;border-radius:2px;cursor:pointer;height:19px;margin:0;padding:0;top:1px;width:30px}input.vis-configuration.vis-config-checkbox{left:-5px}input.vis-configuration.vis-config-rangeinput{margin:0;padding:1px;pointer-events:none;position:relative;top:-5px;width:60px}input.vis-configuration.vis-config-range{-webkit-appearance:none;background-color:transparent;border:0 solid #fff;height:20px;width:300px}input.vis-configuration.vis-config-range::-webkit-slider-runnable-track{background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(180deg,#dedede 0,#c8c8c8 99%);border:1px solid #999;border-radius:3px;box-shadow:0 0 3px 0 #aaa;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#dedede&quot;,endColorstr=&quot;#c8c8c8&quot;,GradientType=0);height:5px;width:300px}input.vis-configuration.vis-config-range::-webkit-slider-thumb{-webkit-appearance:none;background:#3876c2;background:-moz-linear-gradient(top,#3876c2 0,#385380 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#3876c2),color-stop(100%,#385380));background:-webkit-linear-gradient(top,#3876c2,#385380);background:-o-linear-gradient(top,#3876c2 0,#385380 100%);background:-ms-linear-gradient(top,#3876c2 0,#385380 100%);background:linear-gradient(180deg,#3876c2 0,#385380);border:1px solid #14334b;border-radius:50%;box-shadow:0 0 1px 0 #111927;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#3876c2&quot;,endColorstr=&quot;#385380&quot;,GradientType=0);height:17px;margin-top:-7px;width:17px}input.vis-configuration.vis-config-range:focus{outline:none}input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track{background:#9d9d9d;background:-moz-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#9d9d9d),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#9d9d9d,#c8c8c8 99%);background:-o-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#9d9d9d 0,#c8c8c8 99%);background:linear-gradient(180deg,#9d9d9d 0,#c8c8c8 99%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#9d9d9d&quot;,endColorstr=&quot;#c8c8c8&quot;,GradientType=0)}input.vis-configuration.vis-config-range::-moz-range-track{background:#dedede;background:-moz-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#dedede),color-stop(99%,#c8c8c8));background:-webkit-linear-gradient(top,#dedede,#c8c8c8 99%);background:-o-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:-ms-linear-gradient(top,#dedede 0,#c8c8c8 99%);background:linear-gradient(180deg,#dedede 0,#c8c8c8 99%);border:1px solid #999;border-radius:3px;box-shadow:0 0 3px 0 #aaa;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#dedede&quot;,endColorstr=&quot;#c8c8c8&quot;,GradientType=0);height:10px;width:300px}input.vis-configuration.vis-config-range::-moz-range-thumb{background:#385380;border:none;border-radius:50%;height:16px;width:16px}input.vis-configuration.vis-config-range:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input.vis-configuration.vis-config-range::-ms-track{background:transparent;border-color:transparent;border-width:6px 0;color:transparent;height:5px;width:300px}input.vis-configuration.vis-config-range::-ms-fill-lower{background:#777;border-radius:10px}input.vis-configuration.vis-config-range::-ms-fill-upper{background:#ddd;border-radius:10px}input.vis-configuration.vis-config-range::-ms-thumb{background:#385380;border:none;border-radius:50%;height:16px;width:16px}input.vis-configuration.vis-config-range:focus::-ms-fill-lower{background:#888}input.vis-configuration.vis-config-range:focus::-ms-fill-upper{background:#ccc}.vis-configuration-popup{background:rgba(57,76,89,.85);border:2px solid #f2faff;border-radius:4px;color:#fff;font-size:14px;height:30px;line-height:30px;position:absolute;text-align:center;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;width:150px}.vis-configuration-popup:after,.vis-configuration-popup:before{border:solid transparent;content:&quot; &quot;;height:0;left:100%;pointer-events:none;position:absolute;top:50%;width:0}.vis-configuration-popup:after{border-color:rgba(136,183,213,0) rgba(136,183,213,0) rgba(136,183,213,0) rgba(57,76,89,.85);border-width:8px;margin-top:-8px}.vis-configuration-popup:before{border-color:rgba(194,225,245,0) rgba(194,225,245,0) rgba(194,225,245,0) #f2faff;border-width:12px;margin-top:-12px}div.vis-tooltip{background-color:#f5f4ed;border:1px solid #808074;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;box-shadow:3px 3px 10px rgba(0,0,0,.2);color:#000;font-family:verdana;font-size:14px;padding:5px;pointer-events:none;position:absolute;visibility:hidden;white-space:nowrap;z-index:5}div.vis-network div.vis-navigation div.vis-button{-webkit-touch-callout:none;background-position:2px 2px;background-repeat:no-repeat;-moz-border-radius:17px;border-radius:17px;cursor:pointer;display:inline-block;height:34px;position:absolute;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:34px}div.vis-network div.vis-navigation div.vis-button:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.vis-network div.vis-navigation div.vis-button:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.vis-network div.vis-navigation div.vis-button.vis-up{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:50px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-down{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:10px;left:55px}div.vis-network div.vis-navigation div.vis-button.vis-left{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:10px;left:15px}div.vis-network div.vis-navigation div.vis-button.vis-right{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:10px;left:95px}div.vis-network div.vis-navigation div.vis-button.vis-zoomIn{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:10px;right:15px}div.vis-network div.vis-navigation div.vis-button.vis-zoomOut{background-image:url(&quot;data:image/png;base64,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&quot;);bottom:10px;right:55px}div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends{background-image:url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABptJREFUeNqsl21QlNcVx///cx9hIipuAJHasgHlRdw0xay7yK7smg6sb2DSdtqZduLUNENmOk1tQuM4U7UzTvshSRlFZzoNCWSSSTJp+6VNkLCAeQHBoCCgqNBE0wUqL+KuwIiiZZ9+eHa3aAS3Sf8zO8/L3nt+95x7z7n3YWlpKUQEJAEgch9+Jola9xEC2ADBVgAOKqwCYAqKDgUJBIHPBWwFWQNdbyZFBwAC0GGIAHQSj3/8HHRdhzYbdDfwg4IjAsGvICgXAroYBiCEDkBBACBZoyST4gDwQqh7mQ4cEkhQD0EBIIggRMQAh2EiEvEYAGrdR3YSqIYCIEDaotVDeYnu/ryEjSOr43PHl8WmTBPA6PRQ7IWJrvhT/ubkU/7m1EvX+1KEUh7Ug+WkPEXgdUSkR+xrd0NJ4qjr8AEI9pGAI7mo78mHfnF+Y/K2K7iHUheuvJG6cOUNz/LvDwPobrpSl/Ruf2VOy9UPs4RSTSANwH4Y449EVdnt9ojHIeghCHYLgR+n/7zt4Np32tIWZU4hSpnjVk1t/caPfOO3/f++MNH5TVJcisoEoo4ksgbsXwYfdR1+kQplQuCFNS82Pp/9+158RTkTC0ce0OKutQeOp5PME0qcUBqyBmwGOC8vz4AWVOyE4CUqYO/Dh+p3pj//Bb6mHllqCyxd8ODVT69+uFKoOYTSnzFg7SJpzHFNQYWiQrUIsCN9V+uOh375zz179pSGI1FSUuK12+2+aGDt7e3muro6T/h57969lZdvDrT+ZbA6n0B1nfPVN7e0PjMjIgIIdkEAR1JR329yDvaE0+l/hQKA1Wr1bd682SsikUW7K+O3PesTNvaSAiXaLhGBvO86RFEoJ4Adac+eDxsgiZKSEm9NTY3n5MmT5mjBHR0d5vr6es+mTZu8SqnI+x+s+Ol5jRo0auX1jtepQaEAADKWWIbcy7ZGUmb79u1eu93uI+mtra31HLj5TGDs9rBJICCNn1GRCKGCUJAUuzzw6CfbTB6Px7t27VofAG/YXl6Ceyw9LmvIN3UxZUafKRACWyCELcHVP3vk4fDabDZf+2N/D9g+fsLEEFSooFGDogZNFkBRgSCsTcWm066jgRAU4et/F5u9nxRosmCLRmE+QdgSXCNzhW/s9rDJ63wVJx77V+V8YS6UNaW8BdOcqzx+3Ujt0F8Bcr1GMIMU5CzJHZ+rg6IGCYV2PimoyIK6lzIWrxkPTVGmRoqJFCyLTZmeq4MB5f3BVADnbpcQkzStUQMAk0YKBPfzxlhA95NQQe43QBotBECAFFyZHo6dz6CKCizAPFPivzUWqxm2AqIgnwkFvZNn4uczGK3Hah7wpet98UZ85R8aKScIcXYEWpMLkx8fvleHpNjlAWtTsakQa0pVKGcJQqMGUqCHBvfdjp/gTP6xwFzg85PdyaH2J4SUowKiw3889e4KBACnT582W5uKTV2uusAdUFlgzBcFQoFGDT35HwW+82mhqaenxwwA4WtYfRNnUkMZUqsJpEkn8cXU5yktYw2JjsTCMQDwer0ekt6GhgZPUVGRd3fu7qjqdU9Mj7mlpcVD0tvS0uKxWCyVANB5rS3x8s3BFEUFgTTLtuZndQHLBMSfB6pyZtfqMDQ3NzfqTcJisficTqc3BI+8bxh9L8corarM3fnDoIT+rACAU/7m7MOfHbCEwQDQ2Njo6erqinqTOHfuXNjjiI23+ystZ8c7smmkWgVJcN++fRARfLDhlacEUqVEQ1nm77xPrHjSh/+Djo3WmN/s/6OHEOgIPr2h63tVuq5Dud1ukETWoK3zorkzTiiONn/TKlNM4lj24m+Pf13o2wOVHqGA5MsAXjKPrDaqnMvlQnjTzhy0Nlw0d5oI5p3yN62amrk+ve5B5+hXgb47WGX52+V3NgoFOvQKAGUkkTqcbZy5XC7XHYf4zEFr3aXU7jih5uidPPOtvsmzixZr8VMrHjBHddLsHj+Z9Fb/n9a1+T/JDaXey0IpEzEKkHnU8Jj79++PeEwSSimQRGP+Gz8j5DVFBVKQtjBj6JGlNt/D8Y+OpMdlTphiEqcB4tqtsVjfjUtLLkx0J/dOnjWPTg+lEARIEHwaQJVQIYggACC/qxi6rn8ZHL4XETSsf0MU1HOk/CFGYgAwskUqY5eBitRxzn7/a0V1EEBwdqkN6jPI7y4xPmHmC5unbWdQRMqP2d86qANOksU6gvmArNQRNClqABnQgYuK0krI+wCOAyH3DK/vqOXhaf3PAO7mIRjDNV25AAAAAElFTkSuQmCC&quot;);bottom:50px;right:15px}div.vis-network div.vis-manipulation{background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff,#fcfcfc 48%,#fafafa 50%,#fcfcfc);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(180deg,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc);border:0 solid #d6d9d8;border-bottom:1px;box-sizing:content-box;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=&quot;#ffffff&quot;,endColorstr=&quot;#fcfcfc&quot;,GradientType=0);height:28px;left:0;padding-top:4px;position:absolute;top:0;width:100%}div.vis-network button.vis-edit-mode,div.vis-network div.vis-edit-mode{height:30px;left:0;position:absolute;top:5px}div.vis-network button.vis-close{-webkit-touch-callout:none;background-color:transparent;background-image:url(&quot;data:image/png;base64,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/GMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+cZUZMwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAA2ElEQVR42gDLADT/AS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH+/v4a+Pj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd/9/f2vAwEBAfrn5+fkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj+ODg4Avh4eEa/f391gMkJCRYPz8/KUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC&quot;);background-position:20px 3px;background-repeat:no-repeat;border:none;cursor:pointer;height:30px;position:absolute;right:0;top:0;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:30px}div.vis-network button.vis-close:hover{opacity:.6}div.vis-network div.vis-edit-mode button.vis-button,div.vis-network div.vis-manipulation button.vis-button{-webkit-touch-callout:none;background-color:transparent;background-position:0 0;background-repeat:no-repeat;border:none;-moz-border-radius:15px;border-radius:15px;box-sizing:content-box;cursor:pointer;float:left;font-family:verdana;font-size:12px;height:24px;margin-left:10px;padding:0 8px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.vis-network div.vis-manipulation button.vis-button:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}div.vis-network div.vis-manipulation button.vis-button:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}div.vis-network div.vis-manipulation button.vis-button.vis-back{background-image:url(&quot;data:image/png;base64,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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4jq1U/AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP+d77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6+k/P9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa/XR/EBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58+dKZ+6JbJpOpBwBWV1fB6+rqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8+Efv374+oqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro+mVyDx+Pxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7/dXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90+/+rVq2rO+XGJiJxEhMrKyhgAjI6OWoeHh5tWVla+4JzDZrO9bW5unhwcHGzz+/32np4e+xaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7+/tPMMZQXl6+0NbW9qK2tjYcj8floaEhqKpq+HCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv/C3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K+huHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc/nM+fl5SWnpqa+0uv1K/n5+Ws6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ/lYjokRDiuN/vt7W0tMw3NTUpbrd78P79++5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a/1en2Gcy5qamreNjY2/qGq6joRZe12+9Tp06e3JY/FYgWPHz8+mhvr3/CWlpbk+vp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe+ffvC/8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM/eDbxMReFNTE0pKSpKqqsaI6Pj8/LxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu/3++tynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy+VCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo//w4mcc8iyPMc5v5FOp7/PZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC&quot;)}div.vis-network div.vis-manipulation div.vis-none:hover{box-shadow:1px 1px 8px transparent;cursor:default}div.vis-network div.vis-manipulation div.vis-none:active{box-shadow:1px 1px 8px transparent}div.vis-network div.vis-manipulation div.vis-none{line-height:23px;padding:0}div.vis-network div.vis-manipulation div.notification{font-weight:700;margin:2px}div.vis-network div.vis-manipulation button.vis-button.vis-add{background-image:url(&quot;data:image/png;base64,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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA/2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74+5uqTF9Z+7cO/d8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo/bMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM+P4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp+XuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP/nv8aiaIyrqz2gO5A9+9FI1GIfn5+WhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe+aOCdKRKWxZ2+1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8/svld/561PJS/pDk1/bzwx94pze7xc5v/H+YPY6r5BAkdrJzODTK46lE6PeYEJt7u+8j+OZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S/DcDCVig2NcvEUGxJAE4Pl+YOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7/sOuc0kgOVp3/fPs2WHv+coG7gQOJUnLGsUCTxEjPzUohEA+NfIWUdtx0+efzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem/gb5Fd33nrH3kp+SMWtuAB+GllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj+MK6Pf+5+u29vyb4lR4+BGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj/v/o08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2/XzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j/K+8P33++vjnbiGJbbLE+J9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs+IdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn/o8XmgLhZsUkR4ll37mhk3n94Z4OlzY/7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90/fh8GIT2sf+zTPdDMf4dVnNg4z+E0ixsGeBs9jd5ViSgLHjCb/peaR+MD3d4/ZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk+kxkx/p/4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g+7f/A7I8rcw/U6UEe0Ndrhc/W7mtL9ztmqlSgstSS/zTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P/CrUY/GkLL1rE+2hTbSH8+0Lb/WEuhzhyaA905blf9Vd/895WnZwLHrPevir/cvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW+RclLRjJsrhBAuH1/QL8R7HR4xy5nescuP23E6hOA6mLv+sb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ+kvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ/L27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh+KVhOsD4+Dj+MwADIf8n5m4xGwAAAABJRU5ErkJggg==&quot;)}div.vis-network div.vis-edit-mode button.vis-button.vis-edit,div.vis-network div.vis-manipulation button.vis-button.vis-edit{background-image:url(&quot;data:image/png;base64,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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea+NudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7+tPuPvhOurawPl1dc99n+c55z33fV46ceIEZFkGADAziAgAQERoe/9ZK4GPM/AcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0/GAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp+0cS+CKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn+tdQAAMQDgpPLS2MViFY8rkGUZzIzaS/t/xqCzGggtz9e697zsnKhoLUtim4jOq/LE6x7X0nsh16dEZ5a/O3a2SCAOHjwInU6Hujd6ThJ4mCDQ+b2G232v7v6vwarPbQn8MGlMr+X0kpE3Wr5Zt5hL5HPhqYSdQIfKJ+yhxDPKWC6Xg+jt7UXD5b5KBt1kCHS85Ljd8/On3NupfnhFaZj4rWff1B98B1R/hnUmKd36bdtCNl4g0en4edNE/cXwLq8qMTMIPAQwmo/WuHvObA8+9c58k/dKtD0TyZWXN5YGA7ej7epKxspM//7SoNOdWc/Jyq2wiwhDzPxT8cP0jys3VMM7OmL0/77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF+2T6bWsFPWkaiPTCWvTsZpHFU+XrS+8G3AR08F6X+1FJvBxQQzHQOWk2SmrW4FPX/U2LVwPuDZj+fJKl2khPpeyAqA9rzR/YqwuiWXX8taN/CabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5/rNp8I+vtMV/aZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq/V3NcZpVzb9+0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm/KC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj/6sHMhnNw2Ogco7O79e5fm/xQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt/dZZ21ctiqFan174q985P+Lfp+U1g7XDON/1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR/768ummsaJG9Pb9oe+9J+xaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs+w78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx+GOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2/X3rcBVJSOv34l3sCBogi7z1LH/rBHjl4IJ93/ncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv+9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv+oN4c9KTtsfm1MbYQqqh+2zrVZYKs/7Ef+byimt1POYiJhDhPBFBIiIEXhxfs7/dfYoIF+auBfYTE/pebx/V8hqBP2ODvD34yvuh/WCAmU75Bx6sIgaI/v5+6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor+/HyUlJWBmJFz+D8xTtlUiOpbwpmrmrweeSXrT+g11k4SBN3RGKUcAVCVdFhyP1nreDbY//NPyEXUlU/Pp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58+DaPR+PhGIYQAAAgh0P7B3ioW/B0iGiCGiwXbCuOHFSJys6AbYFye2T+xWhT3WYJEIoH/DQBMw3kes8OJPgAAAABJRU5ErkJggg==&quot;)}div.vis-network div.vis-edit-mode button.vis-button.vis-edit.vis-edit-mode{background-color:#fcfcfc;border:1px solid #ccc}div.vis-network div.vis-manipulation button.vis-button.vis-connect{background-image:url(&quot;data:image/png;base64,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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4ubxs+AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ/bNT1Gcdfz/P53PV6B4W7VltLqdAaplIOiMOoyxxJCSs/Gv/yB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD/lRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x/VKZ/jh89cn38/zvN7P5/l88zwf2blzJz6fDwARQUSm1n8s31CM0/VAnbNmsUPuAsDpgEO+Bg4C7//iyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi/MrkAwDNgjhwAlbzICBLA0rDb0+/839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g+B6fSyCOcyn1nxil+O9xKg5HqWFSHGXLjrP7W/ICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo+IGfcW5h5xL4f99P+FCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh+sYmSHeOU6GO5Z8VLx5+NNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz/zIL9vWz8L8p/NvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b+rvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG/8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X+0ncCP58F48eG+Feo2CAUkvs4dl0V/uJvdXLiiV+ut++n7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u/k3A9nEgP4zXke8DiYHyAOMK+QxPIgnZ9GqSHr1itQJ8DK2fTerDQ+S/bHRXQJaHSCwNIZ2Xh+7+S3VAmwNMBA/tuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8+3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB/vZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL/NOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5/xwndM+0tpAvS6mP+PZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB/4gzN+/Q2ENNd4LyUi/xN+bTtquX2thk5nk4wI3gAF+OMNcA1nFQDfK+BY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m/Sn8J+PUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf+lgRSROs8jGwb+Ht4QB/GSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM/jiXDq/D/xPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF/4kQgPuVz2Lz93+dDRa9eu5QQ8Hg8/iXee+Dy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey+x7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0/8nNKrQI4BVYXkzHgzPpC88gWuHL/caXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4/XTKZRJqbm/H7/VNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX/y5C2RSPC/AQB61erowbpqSwAAAABJRU5ErkJggg==&quot;)}div.vis-network div.vis-manipulation button.vis-button.vis-delete{background-image:url(&quot;data:image/png;base64,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/GMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+Y29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ/73m/72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi+JyiZFLAlmESBkWRmS3fyzslGkmnZ5/v/M873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK/NFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC+JiYkJ1OHDh4mJiUEpFSXPv/ziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE+bVXJNJ/NiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo/xVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0+vXrMU2Tn1wp3CtCiQ5DjGd3A/m/v8IDCZP8r4iNmyRrWx/j/5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz+kefeSKO6LJ1A1xzEuk/Ojm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1/qQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH+YiZJCESnS1Y/XxIXu8r4YIPv/VkVs3CTnTy2ms34xro1+sp9po6sxlTu34ultmsPVvy6is86FCHgO+DDs49zpjufBpCG+seYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt+6WdLoQ/LBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD+kSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2+6Ofuak2//3M+G/T4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv+sg9tNCbTXuvBWujE0bHrZj9JE1B/wU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J/yo2aJn+2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj+2zkt76UQ6dXheGAev3+cg74Kf6uJPqcicbfuond7cPy4SOiy7+tD9nFvZurx00KOk3CNEC+mE+vjSPBc7IWqgqTaPT60IMcO/xsXGa3HfKjRgRdbl7/KDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn/LjWFGbLv4thvvb53kFvjJ+XEdWkPfjQVR/CcNKYgGMc8JWt5Fa2j+MIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d+vrwewvfHPQOoexQVjxdB/auk/zmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka+ljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn/YzdezbzE3cQibY5xV266z6RfXohakb+xB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk/sauDpQy38P+GtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU+JTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo+Wcy3ZeXIYASgL1/X5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi+KmaeLlprnrtXFo9h/AAlG1AqE8yFmBrC+jO0bgH9EVpO/1F2Dc5g//OAsbEx/j0Af+USsQynL1UAAAAASUVORK5CYII=&quot;)}div.vis-network div.vis-edit-mode div.vis-label,div.vis-network div.vis-manipulation div.vis-label{line-height:25px;margin:0 0 0 23px}div.vis-network div.vis-manipulation div.vis-separator-line{background-color:#bdbdbd;display:inline-block;float:left;height:21px;margin:0 7px 0 15px;width:1px}&lt;/style&gt;\n",
       "            &lt;script&gt;/**\n",
       " * vis-network\n",
       " * https://visjs.github.io/vis-network/\n",
       " *\n",
       " * A dynamic, browser-based visualization library.\n",
       " *\n",
       " * @version 9.1.2\n",
       " * @date    2022-03-28T20:17:35.342Z\n",
       " *\n",
       " * @copyright (c) 2011-2017 Almende B.V, http://almende.com\n",
       " * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs\n",
       " *\n",
       " * @license\n",
       " * vis.js is dual licensed under both\n",
       " *\n",
       " *   1. The Apache 2.0 License\n",
       " *      http://www.apache.org/licenses/LICENSE-2.0\n",
       " *\n",
       " *   and\n",
       " *\n",
       " *   2. The MIT License\n",
       " *      http://opensource.org/licenses/MIT\n",
       " *\n",
       " * vis.js may be distributed under either license.\n",
       " */\n",
       "!function(t,e){&quot;object&quot;==typeof exports&amp;&amp;&quot;undefined&quot;!=typeof module?e(exports):&quot;function&quot;==typeof define&amp;&amp;define.amd?define([&quot;exports&quot;],e):e((t=&quot;undefined&quot;!=typeof globalThis?globalThis:t||self).vis=t.vis||{})}(this,(function(t){&quot;use strict&quot;;var e=&quot;undefined&quot;!=typeof globalThis?globalThis:&quot;undefined&quot;!=typeof window?window:&quot;undefined&quot;!=typeof global?global:&quot;undefined&quot;!=typeof self?self:{},i=function(t){return t&amp;&amp;t.Math==Math&amp;&amp;t},n=i(&quot;object&quot;==typeof globalThis&amp;&amp;globalThis)||i(&quot;object&quot;==typeof window&amp;&amp;window)||i(&quot;object&quot;==typeof self&amp;&amp;self)||i(&quot;object&quot;==typeof e&amp;&amp;e)||function(){return this}()||Function(&quot;return this&quot;)(),o=function(t){try{return!!t()}catch(t){return!0}},r=!o((function(){var t=function(){}.bind();return&quot;function&quot;!=typeof t||t.hasOwnProperty(&quot;prototype&quot;)})),s=r,a=Function.prototype,h=a.apply,l=a.call,d=&quot;object&quot;==typeof Reflect&amp;&amp;Reflect.apply||(s?l.bind(h):function(){return l.apply(h,arguments)}),c=r,u=Function.prototype,f=u.bind,p=u.call,v=c&amp;&amp;f.bind(p,p),g=c?function(t){return t&amp;&amp;v(t)}:function(t){return t&amp;&amp;function(){return p.apply(t,arguments)}},y=function(t){return&quot;function&quot;==typeof t},m={},b=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),w=r,k=Function.prototype.call,_=w?k.bind(k):function(){return k.apply(k,arguments)},x={},E={}.propertyIsEnumerable,O=Object.getOwnPropertyDescriptor,C=O&amp;&amp;!E.call({1:2},1);x.f=C?function(t){var e=O(this,t);return!!e&amp;&amp;e.enumerable}:E;var S,T,M=function(t,e){return{enumerable:!(1&amp;t),configurable:!(2&amp;t),writable:!(4&amp;t),value:e}},P=g,D=P({}.toString),I=P(&quot;&quot;.slice),B=function(t){return I(D(t),8,-1)},z=g,N=o,F=B,A=n.Object,j=z(&quot;&quot;.split),R=N((function(){return!A(&quot;z&quot;).propertyIsEnumerable(0)}))?function(t){return&quot;String&quot;==F(t)?j(t,&quot;&quot;):A(t)}:A,L=n.TypeError,H=function(t){if(null==t)throw L(&quot;Can't call method on &quot;+t);return t},W=R,q=H,V=function(t){return W(q(t))},U=y,Y=function(t){return&quot;object&quot;==typeof t?null!==t:U(t)},X={},G=X,K=n,$=y,Z=function(t){return $(t)?t:void 0},Q=function(t,e){return arguments.length&lt;2?Z(G[t])||Z(K[t]):G[t]&amp;&amp;G[t][e]||K[t]&amp;&amp;K[t][e]},J=g({}.isPrototypeOf),tt=Q(&quot;navigator&quot;,&quot;userAgent&quot;)||&quot;&quot;,et=n,it=tt,nt=et.process,ot=et.Deno,rt=nt&amp;&amp;nt.versions||ot&amp;&amp;ot.version,st=rt&amp;&amp;rt.v8;st&amp;&amp;(T=(S=st.split(&quot;.&quot;))[0]&gt;0&amp;&amp;S[0]&lt;4?1:+(S[0]+S[1])),!T&amp;&amp;it&amp;&amp;(!(S=it.match(/Edge\\/(\\d+)/))||S[1]&gt;=74)&amp;&amp;(S=it.match(/Chrome\\/(\\d+)/))&amp;&amp;(T=+S[1]);var at=T,ht=at,lt=o,dt=!!Object.getOwnPropertySymbols&amp;&amp;!lt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&amp;&amp;ht&amp;&amp;ht&lt;41})),ct=dt&amp;&amp;!Symbol.sham&amp;&amp;&quot;symbol&quot;==typeof Symbol.iterator,ut=Q,ft=y,pt=J,vt=ct,gt=n.Object,yt=vt?function(t){return&quot;symbol&quot;==typeof t}:function(t){var e=ut(&quot;Symbol&quot;);return ft(e)&amp;&amp;pt(e.prototype,gt(t))},mt=n.String,bt=function(t){try{return mt(t)}catch(t){return&quot;Object&quot;}},wt=y,kt=bt,_t=n.TypeError,xt=function(t){if(wt(t))return t;throw _t(kt(t)+&quot; is not a function&quot;)},Et=xt,Ot=function(t,e){var i=t[e];return null==i?void 0:Et(i)},Ct=_,St=y,Tt=Y,Mt=n.TypeError,Pt={exports:{}},Dt=n,It=Object.defineProperty,Bt=function(t,e){try{It(Dt,t,{value:e,configurable:!0,writable:!0})}catch(i){Dt[t]=e}return e},zt=&quot;__core-js_shared__&quot;,Nt=n[zt]||Bt(zt,{}),Ft=Nt;(Pt.exports=function(t,e){return Ft[t]||(Ft[t]=void 0!==e?e:{})})(&quot;versions&quot;,[]).push({version:&quot;3.21.1&quot;,mode:&quot;pure&quot;,copyright:&quot;© 2014-2022 Denis Pushkarev (zloirock.ru)&quot;,license:&quot;https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE&quot;,source:&quot;https://github.com/zloirock/core-js&quot;});var At=H,jt=n.Object,Rt=function(t){return jt(At(t))},Lt=Rt,Ht=g({}.hasOwnProperty),Wt=Object.hasOwn||function(t,e){return Ht(Lt(t),e)},qt=g,Vt=0,Ut=Math.random(),Yt=qt(1..toString),Xt=function(t){return&quot;Symbol(&quot;+(void 0===t?&quot;&quot;:t)+&quot;)_&quot;+Yt(++Vt+Ut,36)},Gt=n,Kt=Pt.exports,$t=Wt,Zt=Xt,Qt=dt,Jt=ct,te=Kt(&quot;wks&quot;),ee=Gt.Symbol,ie=ee&amp;&amp;ee.for,ne=Jt?ee:ee&amp;&amp;ee.withoutSetter||Zt,oe=function(t){if(!$t(te,t)||!Qt&amp;&amp;&quot;string&quot;!=typeof te[t]){var e=&quot;Symbol.&quot;+t;Qt&amp;&amp;$t(ee,t)?te[t]=ee[t]:te[t]=Jt&amp;&amp;ie?ie(e):ne(e)}return te[t]},re=_,se=Y,ae=yt,he=Ot,le=function(t,e){var i,n;if(&quot;string&quot;===e&amp;&amp;St(i=t.toString)&amp;&amp;!Tt(n=Ct(i,t)))return n;if(St(i=t.valueOf)&amp;&amp;!Tt(n=Ct(i,t)))return n;if(&quot;string&quot;!==e&amp;&amp;St(i=t.toString)&amp;&amp;!Tt(n=Ct(i,t)))return n;throw Mt(&quot;Can't convert object to primitive value&quot;)},de=oe,ce=n.TypeError,ue=de(&quot;toPrimitive&quot;),fe=function(t,e){if(!se(t)||ae(t))return t;var i,n=he(t,ue);if(n){if(void 0===e&amp;&amp;(e=&quot;default&quot;),i=re(n,t,e),!se(i)||ae(i))return i;throw ce(&quot;Can't convert object to primitive value&quot;)}return void 0===e&amp;&amp;(e=&quot;number&quot;),le(t,e)},pe=yt,ve=function(t){var e=fe(t,&quot;string&quot;);return pe(e)?e:e+&quot;&quot;},ge=Y,ye=n.document,me=ge(ye)&amp;&amp;ge(ye.createElement),be=function(t){return me?ye.createElement(t):{}},we=be,ke=!b&amp;&amp;!o((function(){return 7!=Object.defineProperty(we(&quot;div&quot;),&quot;a&quot;,{get:function(){return 7}}).a})),_e=b,xe=_,Ee=x,Oe=M,Ce=V,Se=ve,Te=Wt,Me=ke,Pe=Object.getOwnPropertyDescriptor;m.f=_e?Pe:function(t,e){if(t=Ce(t),e=Se(e),Me)try{return Pe(t,e)}catch(t){}if(Te(t,e))return Oe(!xe(Ee.f,t,e),t[e])};var De=o,Ie=y,Be=/#|\\.prototype\\./,ze=function(t,e){var i=Fe[Ne(t)];return i==je||i!=Ae&amp;&amp;(Ie(e)?De(e):!!e)},Ne=ze.normalize=function(t){return String(t).replace(Be,&quot;.&quot;).toLowerCase()},Fe=ze.data={},Ae=ze.NATIVE=&quot;N&quot;,je=ze.POLYFILL=&quot;P&quot;,Re=ze,Le=xt,He=r,We=g(g.bind),qe=function(t,e){return Le(t),void 0===e?t:He?We(t,e):function(){return t.apply(e,arguments)}},Ve={},Ue=b&amp;&amp;o((function(){return 42!=Object.defineProperty((function(){}),&quot;prototype&quot;,{value:42,writable:!1}).prototype})),Ye=n,Xe=Y,Ge=Ye.String,Ke=Ye.TypeError,$e=function(t){if(Xe(t))return t;throw Ke(Ge(t)+&quot; is not an object&quot;)},Ze=b,Qe=ke,Je=Ue,ti=$e,ei=ve,ii=n.TypeError,ni=Object.defineProperty,oi=Object.getOwnPropertyDescriptor,ri=&quot;enumerable&quot;,si=&quot;configurable&quot;,ai=&quot;writable&quot;;Ve.f=Ze?Je?function(t,e,i){if(ti(t),e=ei(e),ti(i),&quot;function&quot;==typeof t&amp;&amp;&quot;prototype&quot;===e&amp;&amp;&quot;value&quot;in i&amp;&amp;ai in i&amp;&amp;!i.writable){var n=oi(t,e);n&amp;&amp;n.writable&amp;&amp;(t[e]=i.value,i={configurable:si in i?i.configurable:n.configurable,enumerable:ri in i?i.enumerable:n.enumerable,writable:!1})}return ni(t,e,i)}:ni:function(t,e,i){if(ti(t),e=ei(e),ti(i),Qe)try{return ni(t,e,i)}catch(t){}if(&quot;get&quot;in i||&quot;set&quot;in i)throw ii(&quot;Accessors not supported&quot;);return&quot;value&quot;in i&amp;&amp;(t[e]=i.value),t};var hi=Ve,li=M,di=b?function(t,e,i){return hi.f(t,e,li(1,i))}:function(t,e,i){return t[e]=i,t},ci=n,ui=d,fi=g,pi=y,vi=m.f,gi=Re,yi=X,mi=qe,bi=di,wi=Wt,ki=function(t){var e=function(i,n,o){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(i);case 2:return new t(i,n)}return new t(i,n,o)}return ui(t,this,arguments)};return e.prototype=t.prototype,e},_i=function(t,e){var i,n,o,r,s,a,h,l,d=t.target,c=t.global,u=t.stat,f=t.proto,p=c?ci:u?ci[d]:(ci[d]||{}).prototype,v=c?yi:yi[d]||bi(yi,d,{})[d],g=v.prototype;for(o in e)i=!gi(c?o:d+(u?&quot;.&quot;:&quot;#&quot;)+o,t.forced)&amp;&amp;p&amp;&amp;wi(p,o),s=v[o],i&amp;&amp;(a=t.noTargetGet?(l=vi(p,o))&amp;&amp;l.value:p[o]),r=i&amp;&amp;a?a:e[o],i&amp;&amp;typeof s==typeof r||(h=t.bind&amp;&amp;i?mi(r,ci):t.wrap&amp;&amp;i?ki(r):f&amp;&amp;pi(r)?fi(r):r,(t.sham||r&amp;&amp;r.sham||s&amp;&amp;s.sham)&amp;&amp;bi(h,&quot;sham&quot;,!0),bi(v,o,h),f&amp;&amp;(wi(yi,n=d+&quot;Prototype&quot;)||bi(yi,n,{}),bi(yi[n],o,r),t.real&amp;&amp;g&amp;&amp;!g[o]&amp;&amp;bi(g,o,r)))},xi=Math.ceil,Ei=Math.floor,Oi=function(t){var e=+t;return e!=e||0===e?0:(e&gt;0?Ei:xi)(e)},Ci=Oi,Si=Math.max,Ti=Math.min,Mi=function(t,e){var i=Ci(t);return i&lt;0?Si(i+e,0):Ti(i,e)},Pi=Oi,Di=Math.min,Ii=function(t){return t&gt;0?Di(Pi(t),9007199254740991):0},Bi=function(t){return Ii(t.length)},zi=V,Ni=Mi,Fi=Bi,Ai=function(t){return function(e,i,n){var o,r=zi(e),s=Fi(r),a=Ni(n,s);if(t&amp;&amp;i!=i){for(;s&gt;a;)if((o=r[a++])!=o)return!0}else for(;s&gt;a;a++)if((t||a in r)&amp;&amp;r[a]===i)return t||a||0;return!t&amp;&amp;-1}},ji={includes:Ai(!0),indexOf:Ai(!1)},Ri={},Li=Wt,Hi=V,Wi=ji.indexOf,qi=Ri,Vi=g([].push),Ui=function(t,e){var i,n=Hi(t),o=0,r=[];for(i in n)!Li(qi,i)&amp;&amp;Li(n,i)&amp;&amp;Vi(r,i);for(;e.length&gt;o;)Li(n,i=e[o++])&amp;&amp;(~Wi(r,i)||Vi(r,i));return r},Yi=[&quot;constructor&quot;,&quot;hasOwnProperty&quot;,&quot;isPrototypeOf&quot;,&quot;propertyIsEnumerable&quot;,&quot;toLocaleString&quot;,&quot;toString&quot;,&quot;valueOf&quot;],Xi=Ui,Gi=Yi,Ki=Object.keys||function(t){return Xi(t,Gi)},$i={};$i.f=Object.getOwnPropertySymbols;var Zi=b,Qi=g,Ji=_,tn=o,en=Ki,nn=$i,on=x,rn=Rt,sn=R,an=Object.assign,hn=Object.defineProperty,ln=Qi([].concat),dn=!an||tn((function(){if(Zi&amp;&amp;1!==an({b:1},an(hn({},&quot;a&quot;,{enumerable:!0,get:function(){hn(this,&quot;b&quot;,{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},i=Symbol(),n=&quot;abcdefghijklmnopqrst&quot;;return t[i]=7,n.split(&quot;&quot;).forEach((function(t){e[t]=t})),7!=an({},t)[i]||en(an({},e)).join(&quot;&quot;)!=n}))?function(t,e){for(var i=rn(t),n=arguments.length,o=1,r=nn.f,s=on.f;n&gt;o;)for(var a,h=sn(arguments[o++]),l=r?ln(en(h),r(h)):en(h),d=l.length,c=0;d&gt;c;)a=l[c++],Zi&amp;&amp;!Ji(s,h,a)||(i[a]=h[a]);return i}:an,cn=dn;_i({target:&quot;Object&quot;,stat:!0,forced:Object.assign!==cn},{assign:cn});var un=X.Object.assign,fn=g([].slice),pn=g,vn=xt,gn=Y,yn=Wt,mn=fn,bn=r,wn=n.Function,kn=pn([].concat),_n=pn([].join),xn={},En=function(t,e,i){if(!yn(xn,e)){for(var n=[],o=0;o&lt;e;o++)n[o]=&quot;a[&quot;+o+&quot;]&quot;;xn[e]=wn(&quot;C,a&quot;,&quot;return new C(&quot;+_n(n,&quot;,&quot;)+&quot;)&quot;)}return xn[e](t,i)},On=bn?wn.bind:function(t){var e=vn(this),i=e.prototype,n=mn(arguments,1),o=function(){var i=kn(n,mn(arguments));return this instanceof o?En(e,i.length,i):e.apply(t,i)};return gn(i)&amp;&amp;(o.prototype=i),o},Cn=On;_i({target:&quot;Function&quot;,proto:!0,forced:Function.bind!==Cn},{bind:Cn});var Sn=X,Tn=function(t){return Sn[t+&quot;Prototype&quot;]},Mn=Tn(&quot;Function&quot;).bind,Pn=J,Dn=Mn,In=Function.prototype,Bn=function(t){var e=t.bind;return t===In||Pn(In,t)&amp;&amp;e===In.bind?Dn:e},zn=Bn;function Nn(t,e,i,n){t.beginPath(),t.arc(e,i,n,0,2*Math.PI,!1),t.closePath()}function Fn(t,e,i,n,o,r){var s=Math.PI/180;n-2*r&lt;0&amp;&amp;(r=n/2),o-2*r&lt;0&amp;&amp;(r=o/2),t.beginPath(),t.moveTo(e+r,i),t.lineTo(e+n-r,i),t.arc(e+n-r,i+r,r,270*s,360*s,!1),t.lineTo(e+n,i+o-r),t.arc(e+n-r,i+o-r,r,0,90*s,!1),t.lineTo(e+r,i+o),t.arc(e+r,i+o-r,r,90*s,180*s,!1),t.lineTo(e,i+r),t.arc(e+r,i+r,r,180*s,270*s,!1),t.closePath()}function An(t,e,i,n,o){var r=.5522848,s=n/2*r,a=o/2*r,h=e+n,l=i+o,d=e+n/2,c=i+o/2;t.beginPath(),t.moveTo(e,c),t.bezierCurveTo(e,c-a,d-s,i,d,i),t.bezierCurveTo(d+s,i,h,c-a,h,c),t.bezierCurveTo(h,c+a,d+s,l,d,l),t.bezierCurveTo(d-s,l,e,c+a,e,c),t.closePath()}function jn(t,e,i,n,o){var r=o*(1/3),s=.5522848,a=n/2*s,h=r/2*s,l=e+n,d=i+r,c=e+n/2,u=i+r/2,f=i+(o-r/2),p=i+o;t.beginPath(),t.moveTo(l,u),t.bezierCurveTo(l,u+h,c+a,d,c,d),t.bezierCurveTo(c-a,d,e,u+h,e,u),t.bezierCurveTo(e,u-h,c-a,i,c,i),t.bezierCurveTo(c+a,i,l,u-h,l,u),t.lineTo(l,f),t.bezierCurveTo(l,f+h,c+a,p,c,p),t.bezierCurveTo(c-a,p,e,f+h,e,f),t.lineTo(e,u)}function Rn(t,e,i,n,o,r){t.beginPath(),t.moveTo(e,i);for(var s=r.length,a=n-e,h=o-i,l=h/a,d=Math.sqrt(a*a+h*h),c=0,u=!0,f=0,p=+r[0];d&gt;=.1;)(p=+r[c++%s])&gt;d&amp;&amp;(p=d),f=Math.sqrt(p*p/(1+l*l)),e+=f=a&lt;0?-f:f,i+=l*f,!0===u?t.lineTo(e,i):t.moveTo(e,i),d-=p,u=!u}var Ln={circle:Nn,dashedLine:Rn,database:jn,diamond:function(t,e,i,n){t.beginPath(),t.lineTo(e,i+n),t.lineTo(e+n,i),t.lineTo(e,i-n),t.lineTo(e-n,i),t.closePath()},ellipse:An,ellipse_vis:An,hexagon:function(t,e,i,n){t.beginPath();var o=2*Math.PI/6;t.moveTo(e+n,i);for(var r=1;r&lt;6;r++)t.lineTo(e+n*Math.cos(o*r),i+n*Math.sin(o*r));t.closePath()},roundRect:Fn,square:function(t,e,i,n){t.beginPath(),t.rect(e-n,i-n,2*n,2*n),t.closePath()},star:function(t,e,i,n){t.beginPath(),i+=.1*(n*=.82);for(var o=0;o&lt;10;o++){var r=o%2==0?1.3*n:.5*n;t.lineTo(e+r*Math.sin(2*o*Math.PI/10),i-r*Math.cos(2*o*Math.PI/10))}t.closePath()},triangle:function(t,e,i,n){t.beginPath(),i+=.275*(n*=1.15);var o=2*n,r=o/2,s=Math.sqrt(3)/6*o,a=Math.sqrt(o*o-r*r);t.moveTo(e,i-(a-s)),t.lineTo(e+r,i+s),t.lineTo(e-r,i+s),t.lineTo(e,i-(a-s)),t.closePath()},triangleDown:function(t,e,i,n){t.beginPath(),i-=.275*(n*=1.15);var o=2*n,r=o/2,s=Math.sqrt(3)/6*o,a=Math.sqrt(o*o-r*r);t.moveTo(e,i+(a-s)),t.lineTo(e+r,i-s),t.lineTo(e-r,i-s),t.lineTo(e,i+(a-s)),t.closePath()}};var Hn={exports:{}};!function(t){function e(t){if(t)return function(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[&quot;$&quot;+t]=this._callbacks[&quot;$&quot;+t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){this.off(t,i),e.apply(this,arguments)}return i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i,n=this._callbacks[&quot;$&quot;+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks[&quot;$&quot;+t],this;for(var o=0;o&lt;n.length;o++)if((i=n[o])===e||i.fn===e){n.splice(o,1);break}return 0===n.length&amp;&amp;delete this._callbacks[&quot;$&quot;+t],this},e.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),i=this._callbacks[&quot;$&quot;+t],n=1;n&lt;arguments.length;n++)e[n-1]=arguments[n];if(i){n=0;for(var o=(i=i.slice(0)).length;n&lt;o;++n)i[n].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[&quot;$&quot;+t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}}(Hn);var Wn=Hn.exports,qn={};qn[oe(&quot;toStringTag&quot;)]=&quot;z&quot;;var Vn=&quot;[object z]&quot;===String(qn),Un=n,Yn=Vn,Xn=y,Gn=B,Kn=oe(&quot;toStringTag&quot;),$n=Un.Object,Zn=&quot;Arguments&quot;==Gn(function(){return arguments}()),Qn=Yn?Gn:function(t){var e,i,n;return void 0===t?&quot;Undefined&quot;:null===t?&quot;Null&quot;:&quot;string&quot;==typeof(i=function(t,e){try{return t[e]}catch(t){}}(e=$n(t),Kn))?i:Zn?Gn(e):&quot;Object&quot;==(n=Gn(e))&amp;&amp;Xn(e.callee)?&quot;Arguments&quot;:n},Jn=Qn,to=n.String,eo=function(t){if(&quot;Symbol&quot;===Jn(t))throw TypeError(&quot;Cannot convert a Symbol value to a string&quot;);return to(t)},io=g,no=Oi,oo=eo,ro=H,so=io(&quot;&quot;.charAt),ao=io(&quot;&quot;.charCodeAt),ho=io(&quot;&quot;.slice),lo=function(t){return function(e,i){var n,o,r=oo(ro(e)),s=no(i),a=r.length;return s&lt;0||s&gt;=a?t?&quot;&quot;:void 0:(n=ao(r,s))&lt;55296||n&gt;56319||s+1===a||(o=ao(r,s+1))&lt;56320||o&gt;57343?t?so(r,s):n:t?ho(r,s,s+2):o-56320+(n-55296&lt;&lt;10)+65536}},co={codeAt:lo(!1),charAt:lo(!0)},uo=y,fo=Nt,po=g(Function.toString);uo(fo.inspectSource)||(fo.inspectSource=function(t){return po(t)});var vo,go,yo,mo=fo.inspectSource,bo=y,wo=mo,ko=n.WeakMap,_o=bo(ko)&amp;&amp;/native code/.test(wo(ko)),xo=Pt.exports,Eo=Xt,Oo=xo(&quot;keys&quot;),Co=function(t){return Oo[t]||(Oo[t]=Eo(t))},So=_o,To=n,Mo=g,Po=Y,Do=di,Io=Wt,Bo=Nt,zo=Co,No=Ri,Fo=&quot;Object already initialized&quot;,Ao=To.TypeError,jo=To.WeakMap;if(So||Bo.state){var Ro=Bo.state||(Bo.state=new jo),Lo=Mo(Ro.get),Ho=Mo(Ro.has),Wo=Mo(Ro.set);vo=function(t,e){if(Ho(Ro,t))throw new Ao(Fo);return e.facade=t,Wo(Ro,t,e),e},go=function(t){return Lo(Ro,t)||{}},yo=function(t){return Ho(Ro,t)}}else{var qo=zo(&quot;state&quot;);No[qo]=!0,vo=function(t,e){if(Io(t,qo))throw new Ao(Fo);return e.facade=t,Do(t,qo,e),e},go=function(t){return Io(t,qo)?t[qo]:{}},yo=function(t){return Io(t,qo)}}var Vo={set:vo,get:go,has:yo,enforce:function(t){return yo(t)?go(t):vo(t,{})},getterFor:function(t){return function(e){var i;if(!Po(e)||(i=go(e)).type!==t)throw Ao(&quot;Incompatible receiver, &quot;+t+&quot; required&quot;);return i}}},Uo=b,Yo=Wt,Xo=Function.prototype,Go=Uo&amp;&amp;Object.getOwnPropertyDescriptor,Ko=Yo(Xo,&quot;name&quot;),$o={EXISTS:Ko,PROPER:Ko&amp;&amp;&quot;something&quot;===function(){}.name,CONFIGURABLE:Ko&amp;&amp;(!Uo||Uo&amp;&amp;Go(Xo,&quot;name&quot;).configurable)},Zo={},Qo=b,Jo=Ue,tr=Ve,er=$e,ir=V,nr=Ki;Zo.f=Qo&amp;&amp;!Jo?Object.defineProperties:function(t,e){er(t);for(var i,n=ir(e),o=nr(e),r=o.length,s=0;r&gt;s;)tr.f(t,i=o[s++],n[i]);return t};var or,rr=Q(&quot;document&quot;,&quot;documentElement&quot;),sr=$e,ar=Zo,hr=Yi,lr=Ri,dr=rr,cr=be,ur=Co(&quot;IE_PROTO&quot;),fr=function(){},pr=function(t){return&quot;&lt;script&gt;&quot;+t+&quot;&lt;/&quot;+&quot;script&gt;&quot;},vr=function(t){t.write(pr(&quot;&quot;)),t.close();var e=t.parentWindow.Object;return t=null,e},gr=function(){try{or=new ActiveXObject(&quot;htmlfile&quot;)}catch(t){}var t,e;gr=&quot;undefined&quot;!=typeof document?document.domain&amp;&amp;or?vr(or):((e=cr(&quot;iframe&quot;)).style.display=&quot;none&quot;,dr.appendChild(e),e.src=String(&quot;javascript:&quot;),(t=e.contentWindow.document).open(),t.write(pr(&quot;document.F=Object&quot;)),t.close(),t.F):vr(or);for(var i=hr.length;i--;)delete gr.prototype[hr[i]];return gr()};lr[ur]=!0;var yr,mr,br,wr=Object.create||function(t,e){var i;return null!==t?(fr.prototype=sr(t),i=new fr,fr.prototype=null,i[ur]=t):i=gr(),void 0===e?i:ar.f(i,e)},kr=!o((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),_r=n,xr=Wt,Er=y,Or=Rt,Cr=kr,Sr=Co(&quot;IE_PROTO&quot;),Tr=_r.Object,Mr=Tr.prototype,Pr=Cr?Tr.getPrototypeOf:function(t){var e=Or(t);if(xr(e,Sr))return e[Sr];var i=e.constructor;return Er(i)&amp;&amp;e instanceof i?i.prototype:e instanceof Tr?Mr:null},Dr=di,Ir=function(t,e,i,n){n&amp;&amp;n.enumerable?t[e]=i:Dr(t,e,i)},Br=o,zr=y,Nr=wr,Fr=Pr,Ar=Ir,jr=oe(&quot;iterator&quot;),Rr=!1;[].keys&amp;&amp;(&quot;next&quot;in(br=[].keys())?(mr=Fr(Fr(br)))!==Object.prototype&amp;&amp;(yr=mr):Rr=!0);var Lr=null==yr||Br((function(){var t={};return yr[jr].call(t)!==t}));zr((yr=Lr?{}:Nr(yr))[jr])||Ar(yr,jr,(function(){return this}));var Hr={IteratorPrototype:yr,BUGGY_SAFARI_ITERATORS:Rr},Wr=Qn,qr=Vn?{}.toString:function(){return&quot;[object &quot;+Wr(this)+&quot;]&quot;},Vr=Vn,Ur=Ve.f,Yr=di,Xr=Wt,Gr=qr,Kr=oe(&quot;toStringTag&quot;),$r=function(t,e,i,n){if(t){var o=i?t:t.prototype;Xr(o,Kr)||Ur(o,Kr,{configurable:!0,value:e}),n&amp;&amp;!Vr&amp;&amp;Yr(o,&quot;toString&quot;,Gr)}},Zr={},Qr=Hr.IteratorPrototype,Jr=wr,ts=M,es=$r,is=Zr,ns=function(){return this},os=n,rs=y,ss=os.String,as=os.TypeError,hs=g,ls=$e,ds=function(t){if(&quot;object&quot;==typeof t||rs(t))return t;throw as(&quot;Can't set &quot;+ss(t)+&quot; as a prototype&quot;)},cs=Object.setPrototypeOf||(&quot;__proto__&quot;in{}?function(){var t,e=!1,i={};try{(t=hs(Object.getOwnPropertyDescriptor(Object.prototype,&quot;__proto__&quot;).set))(i,[]),e=i instanceof Array}catch(t){}return function(i,n){return ls(i),ds(n),e?t(i,n):i.__proto__=n,i}}():void 0),us=_i,fs=_,ps=function(t,e,i,n){var o=e+&quot; Iterator&quot;;return t.prototype=Jr(Qr,{next:ts(+!n,i)}),es(t,o,!1,!0),is[o]=ns,t},vs=Pr,gs=$r,ys=Ir,ms=Zr,bs=$o.PROPER,ws=Hr.BUGGY_SAFARI_ITERATORS,ks=oe(&quot;iterator&quot;),_s=&quot;keys&quot;,xs=&quot;values&quot;,Es=&quot;entries&quot;,Os=function(){return this},Cs=function(t,e,i,n,o,r,s){ps(i,e,n);var a,h,l,d=function(t){if(t===o&amp;&amp;v)return v;if(!ws&amp;&amp;t in f)return f[t];switch(t){case _s:case xs:case Es:return function(){return new i(this,t)}}return function(){return new i(this)}},c=e+&quot; Iterator&quot;,u=!1,f=t.prototype,p=f[ks]||f[&quot;@@iterator&quot;]||o&amp;&amp;f[o],v=!ws&amp;&amp;p||d(o),g=&quot;Array&quot;==e&amp;&amp;f.entries||p;if(g&amp;&amp;(a=vs(g.call(new t)))!==Object.prototype&amp;&amp;a.next&amp;&amp;(gs(a,c,!0,!0),ms[c]=Os),bs&amp;&amp;o==xs&amp;&amp;p&amp;&amp;p.name!==xs&amp;&amp;(u=!0,v=function(){return fs(p,this)}),o)if(h={values:d(xs),keys:r?v:d(_s),entries:d(Es)},s)for(l in h)(ws||u||!(l in f))&amp;&amp;ys(f,l,h[l]);else us({target:e,proto:!0,forced:ws||u},h);return s&amp;&amp;f[ks]!==v&amp;&amp;ys(f,ks,v,{name:o}),ms[e]=v,h},Ss=co.charAt,Ts=eo,Ms=Vo,Ps=Cs,Ds=&quot;String Iterator&quot;,Is=Ms.set,Bs=Ms.getterFor(Ds);Ps(String,&quot;String&quot;,(function(t){Is(this,{type:Ds,string:Ts(t),index:0})}),(function(){var t,e=Bs(this),i=e.string,n=e.index;return n&gt;=i.length?{value:void 0,done:!0}:(t=Ss(i,n),e.index+=t.length,{value:t,done:!1})}));var zs=_,Ns=$e,Fs=Ot,As=function(t,e,i){var n,o;Ns(t);try{if(!(n=Fs(t,&quot;return&quot;))){if(&quot;throw&quot;===e)throw i;return i}n=zs(n,t)}catch(t){o=!0,n=t}if(&quot;throw&quot;===e)throw i;if(o)throw n;return Ns(n),i},js=$e,Rs=As,Ls=Zr,Hs=oe(&quot;iterator&quot;),Ws=Array.prototype,qs=function(t){return void 0!==t&amp;&amp;(Ls.Array===t||Ws[Hs]===t)},Vs=g,Us=o,Ys=y,Xs=Qn,Gs=mo,Ks=function(){},$s=[],Zs=Q(&quot;Reflect&quot;,&quot;construct&quot;),Qs=/^\\s*(?:class|function)\\b/,Js=Vs(Qs.exec),ta=!Qs.exec(Ks),ea=function(t){if(!Ys(t))return!1;try{return Zs(Ks,$s,t),!0}catch(t){return!1}},ia=function(t){if(!Ys(t))return!1;switch(Xs(t)){case&quot;AsyncFunction&quot;:case&quot;GeneratorFunction&quot;:case&quot;AsyncGeneratorFunction&quot;:return!1}try{return ta||!!Js(Qs,Gs(t))}catch(t){return!0}};ia.sham=!0;var na=!Zs||Us((function(){var t;return ea(ea.call)||!ea(Object)||!ea((function(){t=!0}))||t}))?ia:ea,oa=ve,ra=Ve,sa=M,aa=function(t,e,i){var n=oa(e);n in t?ra.f(t,n,sa(0,i)):t[n]=i},ha=Qn,la=Ot,da=Zr,ca=oe(&quot;iterator&quot;),ua=function(t){if(null!=t)return la(t,ca)||la(t,&quot;@@iterator&quot;)||da[ha(t)]},fa=_,pa=xt,va=$e,ga=bt,ya=ua,ma=n.TypeError,ba=function(t,e){var i=arguments.length&lt;2?ya(t):e;if(pa(i))return va(fa(i,t));throw ma(ga(t)+&quot; is not iterable&quot;)},wa=qe,ka=_,_a=Rt,xa=function(t,e,i,n){try{return n?e(js(i)[0],i[1]):e(i)}catch(e){Rs(t,&quot;throw&quot;,e)}},Ea=qs,Oa=na,Ca=Bi,Sa=aa,Ta=ba,Ma=ua,Pa=n.Array,Da=oe(&quot;iterator&quot;),Ia=!1;try{var Ba=0,za={next:function(){return{done:!!Ba++}},return:function(){Ia=!0}};za[Da]=function(){return this},Array.from(za,(function(){throw 2}))}catch(t){}var Na=function(t){var e=_a(t),i=Oa(this),n=arguments.length,o=n&gt;1?arguments[1]:void 0,r=void 0!==o;r&amp;&amp;(o=wa(o,n&gt;2?arguments[2]:void 0));var s,a,h,l,d,c,u=Ma(e),f=0;if(!u||this==Pa&amp;&amp;Ea(u))for(s=Ca(e),a=i?new this(s):Pa(s);s&gt;f;f++)c=r?o(e[f],f):e[f],Sa(a,f,c);else for(d=(l=Ta(e,u)).next,a=i?new this:[];!(h=ka(d,l)).done;f++)c=r?xa(l,o,[h.value,f],!0):h.value,Sa(a,f,c);return a.length=f,a},Fa=function(t,e){if(!e&amp;&amp;!Ia)return!1;var i=!1;try{var n={};n[Da]=function(){return{next:function(){return{done:i=!0}}}},t(n)}catch(t){}return i};_i({target:&quot;Array&quot;,stat:!0,forced:!Fa((function(t){Array.from(t)}))},{from:Na});var Aa=X.Array.from,ja=Aa,Ra=V,La=Zr,Ha=Vo;Ve.f;var Wa=Cs,qa=&quot;Array Iterator&quot;,Va=Ha.set,Ua=Ha.getterFor(qa);Wa(Array,&quot;Array&quot;,(function(t,e){Va(this,{type:qa,target:Ra(t),index:0,kind:e})}),(function(){var t=Ua(this),e=t.target,i=t.kind,n=t.index++;return!e||n&gt;=e.length?(t.target=void 0,{value:void 0,done:!0}):&quot;keys&quot;==i?{value:n,done:!1}:&quot;values&quot;==i?{value:e[n],done:!1}:{value:[n,e[n]],done:!1}}),&quot;values&quot;),La.Arguments=La.Array;var Ya=ua,Xa={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Ga=n,Ka=Qn,$a=di,Za=Zr,Qa=oe(&quot;toStringTag&quot;);for(var Ja in Xa){var th=Ga[Ja],eh=th&amp;&amp;th.prototype;eh&amp;&amp;Ka(eh)!==Qa&amp;&amp;$a(eh,Qa,Ja),Za[Ja]=Za.Array}var ih=Ya,nh=B,oh=Array.isArray||function(t){return&quot;Array&quot;==nh(t)},rh={},sh=Ui,ah=Yi.concat(&quot;length&quot;,&quot;prototype&quot;);rh.f=Object.getOwnPropertyNames||function(t){return sh(t,ah)};var hh={},lh=Mi,dh=Bi,ch=aa,uh=n.Array,fh=Math.max,ph=function(t,e,i){for(var n=dh(t),o=lh(e,n),r=lh(void 0===i?n:i,n),s=uh(fh(r-o,0)),a=0;o&lt;r;o++,a++)ch(s,a,t[o]);return s.length=a,s},vh=B,gh=V,yh=rh.f,mh=ph,bh=&quot;object&quot;==typeof window&amp;&amp;window&amp;&amp;Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];hh.f=function(t){return bh&amp;&amp;&quot;Window&quot;==vh(t)?function(t){try{return yh(t)}catch(t){return mh(bh)}}(t):yh(gh(t))};var wh={},kh=oe;wh.f=kh;var _h=X,xh=Wt,Eh=wh,Oh=Ve.f,Ch=function(t){var e=_h.Symbol||(_h.Symbol={});xh(e,t)||Oh(e,t,{value:Eh.f(t)})},Sh=n,Th=oh,Mh=na,Ph=Y,Dh=oe(&quot;species&quot;),Ih=Sh.Array,Bh=function(t){var e;return Th(t)&amp;&amp;(e=t.constructor,(Mh(e)&amp;&amp;(e===Ih||Th(e.prototype))||Ph(e)&amp;&amp;null===(e=e[Dh]))&amp;&amp;(e=void 0)),void 0===e?Ih:e},zh=function(t,e){return new(Bh(t))(0===e?0:e)},Nh=qe,Fh=R,Ah=Rt,jh=Bi,Rh=zh,Lh=g([].push),Hh=function(t){var e=1==t,i=2==t,n=3==t,o=4==t,r=6==t,s=7==t,a=5==t||r;return function(h,l,d,c){for(var u,f,p=Ah(h),v=Fh(p),g=Nh(l,d),y=jh(v),m=0,b=c||Rh,w=e?b(h,y):i||s?b(h,0):void 0;y&gt;m;m++)if((a||m in v)&amp;&amp;(f=g(u=v[m],m,p),t))if(e)w[m]=f;else if(f)switch(t){case 3:return!0;case 5:return u;case 6:return m;case 2:Lh(w,u)}else switch(t){case 4:return!1;case 7:Lh(w,u)}return r?-1:n||o?o:w}},Wh={forEach:Hh(0),map:Hh(1),filter:Hh(2),some:Hh(3),every:Hh(4),find:Hh(5),findIndex:Hh(6),filterReject:Hh(7)},qh=_i,Vh=n,Uh=Q,Yh=d,Xh=_,Gh=g,Kh=b,$h=dt,Zh=o,Qh=Wt,Jh=oh,tl=y,el=Y,il=J,nl=yt,ol=$e,rl=Rt,sl=V,al=ve,hl=eo,ll=M,dl=wr,cl=Ki,ul=rh,fl=hh,pl=$i,vl=m,gl=Ve,yl=Zo,ml=x,bl=fn,wl=Ir,kl=Pt.exports,_l=Ri,xl=Xt,El=oe,Ol=wh,Cl=Ch,Sl=$r,Tl=Vo,Ml=Wh.forEach,Pl=Co(&quot;hidden&quot;),Dl=&quot;Symbol&quot;,Il=El(&quot;toPrimitive&quot;),Bl=Tl.set,zl=Tl.getterFor(Dl),Nl=Object.prototype,Fl=Vh.Symbol,Al=Fl&amp;&amp;Fl.prototype,jl=Vh.TypeError,Rl=Vh.QObject,Ll=Uh(&quot;JSON&quot;,&quot;stringify&quot;),Hl=vl.f,Wl=gl.f,ql=fl.f,Vl=ml.f,Ul=Gh([].push),Yl=kl(&quot;symbols&quot;),Xl=kl(&quot;op-symbols&quot;),Gl=kl(&quot;string-to-symbol-registry&quot;),Kl=kl(&quot;symbol-to-string-registry&quot;),$l=kl(&quot;wks&quot;),Zl=!Rl||!Rl.prototype||!Rl.prototype.findChild,Ql=Kh&amp;&amp;Zh((function(){return 7!=dl(Wl({},&quot;a&quot;,{get:function(){return Wl(this,&quot;a&quot;,{value:7}).a}})).a}))?function(t,e,i){var n=Hl(Nl,e);n&amp;&amp;delete Nl[e],Wl(t,e,i),n&amp;&amp;t!==Nl&amp;&amp;Wl(Nl,e,n)}:Wl,Jl=function(t,e){var i=Yl[t]=dl(Al);return Bl(i,{type:Dl,tag:t,description:e}),Kh||(i.description=e),i},td=function(t,e,i){t===Nl&amp;&amp;td(Xl,e,i),ol(t);var n=al(e);return ol(i),Qh(Yl,n)?(i.enumerable?(Qh(t,Pl)&amp;&amp;t[Pl][n]&amp;&amp;(t[Pl][n]=!1),i=dl(i,{enumerable:ll(0,!1)})):(Qh(t,Pl)||Wl(t,Pl,ll(1,{})),t[Pl][n]=!0),Ql(t,n,i)):Wl(t,n,i)},ed=function(t,e){ol(t);var i=sl(e),n=cl(i).concat(rd(i));return Ml(n,(function(e){Kh&amp;&amp;!Xh(id,i,e)||td(t,e,i[e])})),t},id=function(t){var e=al(t),i=Xh(Vl,this,e);return!(this===Nl&amp;&amp;Qh(Yl,e)&amp;&amp;!Qh(Xl,e))&amp;&amp;(!(i||!Qh(this,e)||!Qh(Yl,e)||Qh(this,Pl)&amp;&amp;this[Pl][e])||i)},nd=function(t,e){var i=sl(t),n=al(e);if(i!==Nl||!Qh(Yl,n)||Qh(Xl,n)){var o=Hl(i,n);return!o||!Qh(Yl,n)||Qh(i,Pl)&amp;&amp;i[Pl][n]||(o.enumerable=!0),o}},od=function(t){var e=ql(sl(t)),i=[];return Ml(e,(function(t){Qh(Yl,t)||Qh(_l,t)||Ul(i,t)})),i},rd=function(t){var e=t===Nl,i=ql(e?Xl:sl(t)),n=[];return Ml(i,(function(t){!Qh(Yl,t)||e&amp;&amp;!Qh(Nl,t)||Ul(n,Yl[t])})),n};if($h||(Fl=function(){if(il(Al,this))throw jl(&quot;Symbol is not a constructor&quot;);var t=arguments.length&amp;&amp;void 0!==arguments[0]?hl(arguments[0]):void 0,e=xl(t),i=function(t){this===Nl&amp;&amp;Xh(i,Xl,t),Qh(this,Pl)&amp;&amp;Qh(this[Pl],e)&amp;&amp;(this[Pl][e]=!1),Ql(this,e,ll(1,t))};return Kh&amp;&amp;Zl&amp;&amp;Ql(Nl,e,{configurable:!0,set:i}),Jl(e,t)},wl(Al=Fl.prototype,&quot;toString&quot;,(function(){return zl(this).tag})),wl(Fl,&quot;withoutSetter&quot;,(function(t){return Jl(xl(t),t)})),ml.f=id,gl.f=td,yl.f=ed,vl.f=nd,ul.f=fl.f=od,pl.f=rd,Ol.f=function(t){return Jl(El(t),t)},Kh&amp;&amp;Wl(Al,&quot;description&quot;,{configurable:!0,get:function(){return zl(this).description}})),qh({global:!0,wrap:!0,forced:!$h,sham:!$h},{Symbol:Fl}),Ml(cl($l),(function(t){Cl(t)})),qh({target:Dl,stat:!0,forced:!$h},{for:function(t){var e=hl(t);if(Qh(Gl,e))return Gl[e];var i=Fl(e);return Gl[e]=i,Kl[i]=e,i},keyFor:function(t){if(!nl(t))throw jl(t+&quot; is not a symbol&quot;);if(Qh(Kl,t))return Kl[t]},useSetter:function(){Zl=!0},useSimple:function(){Zl=!1}}),qh({target:&quot;Object&quot;,stat:!0,forced:!$h,sham:!Kh},{create:function(t,e){return void 0===e?dl(t):ed(dl(t),e)},defineProperty:td,defineProperties:ed,getOwnPropertyDescriptor:nd}),qh({target:&quot;Object&quot;,stat:!0,forced:!$h},{getOwnPropertyNames:od,getOwnPropertySymbols:rd}),qh({target:&quot;Object&quot;,stat:!0,forced:Zh((function(){pl.f(1)}))},{getOwnPropertySymbols:function(t){return pl.f(rl(t))}}),Ll){var sd=!$h||Zh((function(){var t=Fl();return&quot;[null]&quot;!=Ll([t])||&quot;{}&quot;!=Ll({a:t})||&quot;{}&quot;!=Ll(Object(t))}));qh({target:&quot;JSON&quot;,stat:!0,forced:sd},{stringify:function(t,e,i){var n=bl(arguments),o=e;if((el(e)||void 0!==t)&amp;&amp;!nl(t))return Jh(e)||(e=function(t,e){if(tl(o)&amp;&amp;(e=Xh(o,this,t,e)),!nl(e))return e}),n[1]=e,Yh(Ll,null,n)}})}if(!Al[Il]){var ad=Al.valueOf;wl(Al,Il,(function(t){return Xh(ad,this)}))}Sl(Fl,Dl),_l[Pl]=!0;var hd=X.Object.getOwnPropertySymbols,ld={exports:{}},dd=_i,cd=o,ud=V,fd=m.f,pd=b,vd=cd((function(){fd(1)}));dd({target:&quot;Object&quot;,stat:!0,forced:!pd||vd,sham:!pd},{getOwnPropertyDescriptor:function(t,e){return fd(ud(t),e)}});var gd=X.Object,yd=ld.exports=function(t,e){return gd.getOwnPropertyDescriptor(t,e)};gd.getOwnPropertyDescriptor.sham&amp;&amp;(yd.sham=!0);var md=ld.exports,bd=md,wd=Q,kd=rh,_d=$i,xd=$e,Ed=g([].concat),Od=wd(&quot;Reflect&quot;,&quot;ownKeys&quot;)||function(t){var e=kd.f(xd(t)),i=_d.f;return i?Ed(e,i(t)):e},Cd=Od,Sd=V,Td=m,Md=aa;_i({target:&quot;Object&quot;,stat:!0,sham:!b},{getOwnPropertyDescriptors:function(t){for(var e,i,n=Sd(t),o=Td.f,r=Cd(n),s={},a=0;r.length&gt;a;)void 0!==(i=o(n,e=r[a++]))&amp;&amp;Md(s,e,i);return s}});var Pd=X.Object.getOwnPropertyDescriptors,Dd={exports:{}},Id=_i,Bd=b,zd=Zo.f;Id({target:&quot;Object&quot;,stat:!0,forced:Object.defineProperties!==zd,sham:!Bd},{defineProperties:zd});var Nd=X.Object,Fd=Dd.exports=function(t,e){return Nd.defineProperties(t,e)};Nd.defineProperties.sham&amp;&amp;(Fd.sham=!0);var Ad=Dd.exports,jd={exports:{}},Rd=_i,Ld=b,Hd=Ve.f;Rd({target:&quot;Object&quot;,stat:!0,forced:Object.defineProperty!==Hd,sham:!Ld},{defineProperty:Hd});var Wd=X.Object,qd=jd.exports=function(t,e,i){return Wd.defineProperty(t,e,i)};Wd.defineProperty.sham&amp;&amp;(qd.sham=!0);var Vd=jd.exports,Ud=Vd;function Yd(t,e){if(!(t instanceof e))throw new TypeError(&quot;Cannot call a class as a function&quot;)}var Xd=Vd;function Gd(t,e){for(var i=0;i&lt;e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,&quot;value&quot;in n&amp;&amp;(n.writable=!0),Xd(t,n.key,n)}}function Kd(t,e,i){return e&amp;&amp;Gd(t.prototype,e),i&amp;&amp;Gd(t,i),Xd(t,&quot;prototype&quot;,{writable:!1}),t}function $d(t,e,i){return e in t?Xd(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}_i({target:&quot;Array&quot;,stat:!0},{isArray:oh});var Zd=X.Array.isArray,Qd=Zd;var Jd=o,tc=at,ec=oe(&quot;species&quot;),ic=function(t){return tc&gt;=51||!Jd((function(){var e=[];return(e.constructor={})[ec]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},nc=_i,oc=n,rc=o,sc=oh,ac=Y,hc=Rt,lc=Bi,dc=aa,cc=zh,uc=ic,fc=at,pc=oe(&quot;isConcatSpreadable&quot;),vc=9007199254740991,gc=&quot;Maximum allowed index exceeded&quot;,yc=oc.TypeError,mc=fc&gt;=51||!rc((function(){var t=[];return t[pc]=!1,t.concat()[0]!==t})),bc=uc(&quot;concat&quot;),wc=function(t){if(!ac(t))return!1;var e=t[pc];return void 0!==e?!!e:sc(t)};nc({target:&quot;Array&quot;,proto:!0,forced:!mc||!bc},{concat:function(t){var e,i,n,o,r,s=hc(this),a=cc(s,0),h=0;for(e=-1,n=arguments.length;e&lt;n;e++)if(wc(r=-1===e?s:arguments[e])){if(h+(o=lc(r))&gt;vc)throw yc(gc);for(i=0;i&lt;o;i++,h++)i in r&amp;&amp;dc(a,h,r[i])}else{if(h&gt;=vc)throw yc(gc);dc(a,h++,r)}return a.length=h,a}}),Ch(&quot;asyncIterator&quot;),Ch(&quot;hasInstance&quot;),Ch(&quot;isConcatSpreadable&quot;),Ch(&quot;iterator&quot;),Ch(&quot;match&quot;),Ch(&quot;matchAll&quot;),Ch(&quot;replace&quot;),Ch(&quot;search&quot;),Ch(&quot;species&quot;),Ch(&quot;split&quot;),Ch(&quot;toPrimitive&quot;),Ch(&quot;toStringTag&quot;),Ch(&quot;unscopables&quot;),$r(n.JSON,&quot;JSON&quot;,!0);var kc=X.Symbol,_c=kc;Ch(&quot;asyncDispose&quot;),Ch(&quot;dispose&quot;),Ch(&quot;matcher&quot;),Ch(&quot;metadata&quot;),Ch(&quot;observable&quot;),Ch(&quot;patternMatch&quot;),Ch(&quot;replaceAll&quot;);var xc=_c;var Ec=_i,Oc=n,Cc=oh,Sc=na,Tc=Y,Mc=Mi,Pc=Bi,Dc=V,Ic=aa,Bc=oe,zc=fn,Nc=ic(&quot;slice&quot;),Fc=Bc(&quot;species&quot;),Ac=Oc.Array,jc=Math.max;Ec({target:&quot;Array&quot;,proto:!0,forced:!Nc},{slice:function(t,e){var i,n,o,r=Dc(this),s=Pc(r),a=Mc(t,s),h=Mc(void 0===e?s:e,s);if(Cc(r)&amp;&amp;(i=r.constructor,(Sc(i)&amp;&amp;(i===Ac||Cc(i.prototype))||Tc(i)&amp;&amp;null===(i=i[Fc]))&amp;&amp;(i=void 0),i===Ac||void 0===i))return zc(r,a,h);for(n=new(void 0===i?Ac:i)(jc(h-a,0)),o=0;a&lt;h;a++,o++)a in r&amp;&amp;Ic(n,o,r[a]);return n.length=o,n}});var Rc=Tn(&quot;Array&quot;).slice,Lc=J,Hc=Rc,Wc=Array.prototype,qc=function(t){var e=t.slice;return t===Wc||Lc(Wc,t)&amp;&amp;e===Wc.slice?Hc:e},Vc=qc,Uc=Vc,Yc=Aa;function Xc(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}function Gc(t,e){var i;if(t){if(&quot;string&quot;==typeof t)return Xc(t,e);var n=Uc(i=Object.prototype.toString.call(t)).call(i,8,-1);return&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name),&quot;Map&quot;===n||&quot;Set&quot;===n?Yc(t):&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Xc(t,e):void 0}}function Kc(t,e){return function(t){if(Qd(t))return t}(t)||function(t,e){var i=null==t?null:void 0!==xc&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(null!=i){var n,o,r=[],s=!0,a=!1;try{for(i=i.call(t);!(s=(n=i.next()).done)&amp;&amp;(r.push(n.value),!e||r.length!==e);s=!0);}catch(t){a=!0,o=t}finally{try{s||null==i.return||i.return()}finally{if(a)throw o}}return r}}(t,e)||Gc(t,e)||function(){throw new TypeError(&quot;Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}()}var $c=wh.f(&quot;iterator&quot;),Zc=$c;function Qc(t){return Qc=&quot;function&quot;==typeof xc&amp;&amp;&quot;symbol&quot;==typeof Zc?function(t){return typeof t}:function(t){return t&amp;&amp;&quot;function&quot;==typeof xc&amp;&amp;t.constructor===xc&amp;&amp;t!==xc.prototype?&quot;symbol&quot;:typeof t},Qc(t)}function Jc(t){return function(t){if(Qd(t))return Xc(t)}(t)||function(t){if(void 0!==xc&amp;&amp;null!=ih(t)||null!=t[&quot;@@iterator&quot;])return Yc(t)}(t)||Gc(t)||function(){throw new TypeError(&quot;Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}()}var tu=kc,eu=Tn(&quot;Array&quot;).concat,iu=J,nu=eu,ou=Array.prototype,ru=function(t){var e=t.concat;return t===ou||iu(ou,t)&amp;&amp;e===ou.concat?nu:e},su=ru,au=Vc;_i({target:&quot;Reflect&quot;,stat:!0},{ownKeys:Od});var hu=X.Reflect.ownKeys,lu=Zd,du=Wh.map;_i({target:&quot;Array&quot;,proto:!0,forced:!ic(&quot;map&quot;)},{map:function(t){return du(this,t,arguments.length&gt;1?arguments[1]:void 0)}});var cu=Tn(&quot;Array&quot;).map,uu=J,fu=cu,pu=Array.prototype,vu=function(t){var e=t.map;return t===pu||uu(pu,t)&amp;&amp;e===pu.map?fu:e},gu=vu,yu=Rt,mu=Ki;_i({target:&quot;Object&quot;,stat:!0,forced:o((function(){mu(1)}))},{keys:function(t){return mu(yu(t))}});var bu=X.Object.keys,wu=_i,ku=g,_u=n.Date,xu=ku(_u.prototype.getTime);wu({target:&quot;Date&quot;,stat:!0},{now:function(){return xu(new _u)}});var Eu=X.Date.now,Ou=o,Cu=function(t,e){var i=[][t];return!!i&amp;&amp;Ou((function(){i.call(null,e||function(){return 1},1)}))},Su=Wh.forEach,Tu=Cu(&quot;forEach&quot;)?[].forEach:function(t){return Su(this,t,arguments.length&gt;1?arguments[1]:void 0)};_i({target:&quot;Array&quot;,proto:!0,forced:[].forEach!=Tu},{forEach:Tu});var Mu=Tn(&quot;Array&quot;).forEach,Pu=Qn,Du=Wt,Iu=J,Bu=Mu,zu=Array.prototype,Nu={DOMTokenList:!0,NodeList:!0},Fu=function(t){var e=t.forEach;return t===zu||Iu(zu,t)&amp;&amp;e===zu.forEach||Du(Nu,Pu(t))?Bu:e},Au=_i,ju=oh,Ru=g([].reverse),Lu=[1,2];Au({target:&quot;Array&quot;,proto:!0,forced:String(Lu)===String(Lu.reverse())},{reverse:function(){return ju(this)&amp;&amp;(this.length=this.length),Ru(this)}});var Hu=Tn(&quot;Array&quot;).reverse,Wu=J,qu=Hu,Vu=Array.prototype,Uu=function(t){var e=t.reverse;return t===Vu||Wu(Vu,t)&amp;&amp;e===Vu.reverse?qu:e},Yu=Uu,Xu=_i,Gu=n,Ku=Mi,$u=Oi,Zu=Bi,Qu=Rt,Ju=zh,tf=aa,ef=ic(&quot;splice&quot;),nf=Gu.TypeError,of=Math.max,rf=Math.min,sf=9007199254740991,af=&quot;Maximum allowed length exceeded&quot;;Xu({target:&quot;Array&quot;,proto:!0,forced:!ef},{splice:function(t,e){var i,n,o,r,s,a,h=Qu(this),l=Zu(h),d=Ku(t,l),c=arguments.length;if(0===c?i=n=0:1===c?(i=0,n=l-d):(i=c-2,n=rf(of($u(e),0),l-d)),l+i-n&gt;sf)throw nf(af);for(o=Ju(h,n),r=0;r&lt;n;r++)(s=d+r)in h&amp;&amp;tf(o,r,h[s]);if(o.length=n,i&lt;n){for(r=d;r&lt;l-n;r++)a=r+i,(s=r+n)in h?h[a]=h[s]:delete h[a];for(r=l;r&gt;l-n+i;r--)delete h[r-1]}else if(i&gt;n)for(r=l-n;r&gt;d;r--)a=r+i-1,(s=r+n-1)in h?h[a]=h[s]:delete h[a];for(r=0;r&lt;i;r++)h[r+d]=arguments[r+2];return h.length=l-n+i,o}});var hf=Tn(&quot;Array&quot;).splice,lf=J,df=hf,cf=Array.prototype,uf=function(t){var e=t.splice;return t===cf||lf(cf,t)&amp;&amp;e===cf.splice?df:e},ff=uf,pf=ji.includes;_i({target:&quot;Array&quot;,proto:!0},{includes:function(t){return pf(this,t,arguments.length&gt;1?arguments[1]:void 0)}});var vf=Tn(&quot;Array&quot;).includes,gf=Y,yf=B,mf=oe(&quot;match&quot;),bf=function(t){var e;return gf(t)&amp;&amp;(void 0!==(e=t[mf])?!!e:&quot;RegExp&quot;==yf(t))},wf=n.TypeError,kf=oe(&quot;match&quot;),_f=_i,xf=function(t){if(bf(t))throw wf(&quot;The method doesn't accept regular expressions&quot;);return t},Ef=H,Of=eo,Cf=function(t){var e=/./;try{&quot;/./&quot;[t](e)}catch(i){try{return e[kf]=!1,&quot;/./&quot;[t](e)}catch(t){}}return!1},Sf=g(&quot;&quot;.indexOf);_f({target:&quot;String&quot;,proto:!0,forced:!Cf(&quot;includes&quot;)},{includes:function(t){return!!~Sf(Of(Ef(this)),Of(xf(t)),arguments.length&gt;1?arguments[1]:void 0)}});var Tf=Tn(&quot;String&quot;).includes,Mf=J,Pf=vf,Df=Tf,If=Array.prototype,Bf=String.prototype,zf=function(t){var e=t.includes;return t===If||Mf(If,t)&amp;&amp;e===If.includes?Pf:&quot;string&quot;==typeof t||t===Bf||Mf(Bf,t)&amp;&amp;e===Bf.includes?Df:e},Nf=zf,Ff=Rt,Af=Pr,jf=kr;_i({target:&quot;Object&quot;,stat:!0,forced:o((function(){Af(1)})),sham:!jf},{getPrototypeOf:function(t){return Af(Ff(t))}});var Rf=X.Object.getPrototypeOf,Lf=Rf,Hf=Wh.filter;_i({target:&quot;Array&quot;,proto:!0,forced:!ic(&quot;filter&quot;)},{filter:function(t){return Hf(this,t,arguments.length&gt;1?arguments[1]:void 0)}});var Wf=Tn(&quot;Array&quot;).filter,qf=J,Vf=Wf,Uf=Array.prototype,Yf=function(t){var e=t.filter;return t===Uf||qf(Uf,t)&amp;&amp;e===Uf.filter?Vf:e},Xf=Yf,Gf=b,Kf=g,$f=Ki,Zf=V,Qf=Kf(x.f),Jf=Kf([].push),tp=function(t){return function(e){for(var i,n=Zf(e),o=$f(n),r=o.length,s=0,a=[];r&gt;s;)i=o[s++],Gf&amp;&amp;!Qf(n,i)||Jf(a,t?[i,n[i]]:n[i]);return a}},ep={entries:tp(!0),values:tp(!1)}.values;_i({target:&quot;Object&quot;,stat:!0},{values:function(t){return ep(t)}});var ip=X.Object.values,np=&quot;\\t\\n\\v\\f\\r                　\\u2028\\u2029\\ufeff&quot;,op=H,rp=eo,sp=g(&quot;&quot;.replace),ap=&quot;[\\t\\n\\v\\f\\r                　\\u2028\\u2029\\ufeff]&quot;,hp=RegExp(&quot;^&quot;+ap+ap+&quot;*&quot;),lp=RegExp(ap+ap+&quot;*$&quot;),dp=function(t){return function(e){var i=rp(op(e));return 1&amp;t&amp;&amp;(i=sp(i,hp,&quot;&quot;)),2&amp;t&amp;&amp;(i=sp(i,lp,&quot;&quot;)),i}},cp={start:dp(1),end:dp(2),trim:dp(3)},up=n,fp=o,pp=g,vp=eo,gp=cp.trim,yp=np,mp=up.parseInt,bp=up.Symbol,wp=bp&amp;&amp;bp.iterator,kp=/^[+-]?0x/i,_p=pp(kp.exec),xp=8!==mp(yp+&quot;08&quot;)||22!==mp(yp+&quot;0x16&quot;)||wp&amp;&amp;!fp((function(){mp(Object(wp))}))?function(t,e){var i=gp(vp(t));return mp(i,e&gt;&gt;&gt;0||(_p(kp,i)?16:10))}:mp;_i({global:!0,forced:parseInt!=xp},{parseInt:xp});var Ep=X.parseInt,Op=_i,Cp=ji.indexOf,Sp=Cu,Tp=g([].indexOf),Mp=!!Tp&amp;&amp;1/Tp([1],1,-0)&lt;0,Pp=Sp(&quot;indexOf&quot;);Op({target:&quot;Array&quot;,proto:!0,forced:Mp||!Pp},{indexOf:function(t){var e=arguments.length&gt;1?arguments[1]:void 0;return Mp?Tp(this,t,e)||0:Cp(this,t,e)}});var Dp=Tn(&quot;Array&quot;).indexOf,Ip=J,Bp=Dp,zp=Array.prototype,Np=function(t){var e=t.indexOf;return t===zp||Ip(zp,t)&amp;&amp;e===zp.indexOf?Bp:e},Fp=Np,Ap=$o.PROPER,jp=o,Rp=np,Lp=cp.trim;_i({target:&quot;String&quot;,proto:!0,forced:function(t){return jp((function(){return!!Rp[t]()||&quot;​",
       "᠎&quot;!==&quot;​",
       "᠎&quot;[t]()||Ap&amp;&amp;Rp[t].name!==t}))}(&quot;trim&quot;)},{trim:function(){return Lp(this)}});var Hp=Tn(&quot;String&quot;).trim,Wp=J,qp=Hp,Vp=String.prototype,Up=function(t){var e=t.trim;return&quot;string&quot;==typeof t||t===Vp||Wp(Vp,t)&amp;&amp;e===Vp.trim?qp:e},Yp=Up;_i({target:&quot;Object&quot;,stat:!0,sham:!b},{create:wr});var Xp=X.Object,Gp=function(t,e){return Xp.create(t,e)},Kp=Gp,$p=_i,Zp=Q,Qp=d,Jp=g,tv=o,ev=n.Array,iv=Zp(&quot;JSON&quot;,&quot;stringify&quot;),nv=Jp(/./.exec),ov=Jp(&quot;&quot;.charAt),rv=Jp(&quot;&quot;.charCodeAt),sv=Jp(&quot;&quot;.replace),av=Jp(1..toString),hv=/[\\uD800-\\uDFFF]/g,lv=/^[\\uD800-\\uDBFF]$/,dv=/^[\\uDC00-\\uDFFF]$/,cv=function(t,e,i){var n=ov(i,e-1),o=ov(i,e+1);return nv(lv,t)&amp;&amp;!nv(dv,o)||nv(dv,t)&amp;&amp;!nv(lv,n)?&quot;\\\\u&quot;+av(rv(t,0),16):t},uv=tv((function(){return'&quot;\\\\udf06\\\\ud834&quot;'!==iv(&quot;\\udf06\\ud834&quot;)||'&quot;\\\\udead&quot;'!==iv(&quot;\\udead&quot;)}));iv&amp;&amp;$p({target:&quot;JSON&quot;,stat:!0,forced:uv},{stringify:function(t,e,i){for(var n=0,o=arguments.length,r=ev(o);n&lt;o;n++)r[n]=arguments[n];var s=Qp(iv,null,r);return&quot;string&quot;==typeof s?sv(s,hv,cv):s}});var fv=X,pv=d;fv.JSON||(fv.JSON={stringify:JSON.stringify});var vv=function(t,e,i){return pv(fv.JSON.stringify,null,arguments)},gv=vv,yv=n.TypeError,mv=_i,bv=n,wv=d,kv=y,_v=fn,xv=function(t,e){if(t&lt;e)throw yv(&quot;Not enough arguments&quot;);return t},Ev=/MSIE .\\./.test(tt),Ov=bv.Function,Cv=function(t){return function(e,i){var n=xv(arguments.length,1)&gt;2,o=kv(e)?e:Ov(e),r=n?_v(arguments,2):void 0;return t(n?function(){wv(o,this,r)}:o,i)}};mv({global:!0,bind:!0,forced:Ev},{setTimeout:Cv(bv.setTimeout),setInterval:Cv(bv.setInterval)});var Sv=X.setTimeout,Tv=Rt,Mv=Mi,Pv=Bi,Dv=function(t){for(var e=Tv(this),i=Pv(e),n=arguments.length,o=Mv(n&gt;1?arguments[1]:void 0,i),r=n&gt;2?arguments[2]:void 0,s=void 0===r?i:Mv(r,i);s&gt;o;)e[o++]=t;return e};_i({target:&quot;Array&quot;,proto:!0},{fill:Dv});var Iv,Bv=Tn(&quot;Array&quot;).fill,zv=J,Nv=Bv,Fv=Array.prototype,Av=function(t){var e=t.fill;return t===Fv||zv(Fv,t)&amp;&amp;e===Fv.fill?Nv:e},jv=Av;function Rv(){return Rv=Object.assign||function(t){for(var e=1;e&lt;arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&amp;&amp;(t[n]=i[n])}return t},Rv.apply(this,arguments)}function Lv(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function Hv(t){if(void 0===t)throw new ReferenceError(&quot;this hasn't been initialised - super() hasn't been called&quot;);return t}Iv=&quot;function&quot;!=typeof Object.assign?function(t){if(null==t)throw new TypeError(&quot;Cannot convert undefined or null to object&quot;);for(var e=Object(t),i=1;i&lt;arguments.length;i++){var n=arguments[i];if(null!=n)for(var o in n)n.hasOwnProperty(o)&amp;&amp;(e[o]=n[o])}return e}:Object.assign;var Wv,qv=Iv,Vv=[&quot;&quot;,&quot;webkit&quot;,&quot;Moz&quot;,&quot;MS&quot;,&quot;ms&quot;,&quot;o&quot;],Uv=&quot;undefined&quot;==typeof document?{style:{}}:document.createElement(&quot;div&quot;),Yv=Math.round,Xv=Math.abs,Gv=Date.now;function Kv(t,e){for(var i,n,o=e[0].toUpperCase()+e.slice(1),r=0;r&lt;Vv.length;){if((n=(i=Vv[r])?i+o:e)in t)return n;r++}}Wv=&quot;undefined&quot;==typeof window?{}:window;var $v=Kv(Uv.style,&quot;touchAction&quot;),Zv=void 0!==$v;var Qv=&quot;compute&quot;,Jv=&quot;auto&quot;,tg=&quot;manipulation&quot;,eg=&quot;none&quot;,ig=&quot;pan-x&quot;,ng=&quot;pan-y&quot;,og=function(){if(!Zv)return!1;var t={},e=Wv.CSS&amp;&amp;Wv.CSS.supports;return[&quot;auto&quot;,&quot;manipulation&quot;,&quot;pan-y&quot;,&quot;pan-x&quot;,&quot;pan-x pan-y&quot;,&quot;none&quot;].forEach((function(i){return t[i]=!e||Wv.CSS.supports(&quot;touch-action&quot;,i)})),t}(),rg=&quot;ontouchstart&quot;in Wv,sg=void 0!==Kv(Wv,&quot;PointerEvent&quot;),ag=rg&amp;&amp;/mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),hg=&quot;touch&quot;,lg=&quot;mouse&quot;,dg=16,cg=24,ug=[&quot;x&quot;,&quot;y&quot;],fg=[&quot;clientX&quot;,&quot;clientY&quot;];function pg(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(void 0!==t.length)for(n=0;n&lt;t.length;)e.call(i,t[n],n,t),n++;else for(n in t)t.hasOwnProperty(n)&amp;&amp;e.call(i,t[n],n,t)}function vg(t,e){return&quot;function&quot;==typeof t?t.apply(e&amp;&amp;e[0]||void 0,e):t}function gg(t,e){return t.indexOf(e)&gt;-1}var yg=function(){function t(t,e){this.manager=t,this.set(e)}var e=t.prototype;return e.set=function(t){t===Qv&amp;&amp;(t=this.compute()),Zv&amp;&amp;this.manager.element.style&amp;&amp;og[t]&amp;&amp;(this.manager.element.style[$v]=t),this.actions=t.toLowerCase().trim()},e.update=function(){this.set(this.manager.options.touchAction)},e.compute=function(){var t=[];return pg(this.manager.recognizers,(function(e){vg(e.options.enable,[e])&amp;&amp;(t=t.concat(e.getTouchAction()))})),function(t){if(gg(t,eg))return eg;var e=gg(t,ig),i=gg(t,ng);return e&amp;&amp;i?eg:e||i?e?ig:ng:gg(t,tg)?tg:Jv}(t.join(&quot; &quot;))},e.preventDefaults=function(t){var e=t.srcEvent,i=t.offsetDirection;if(this.manager.session.prevented)e.preventDefault();else{var n=this.actions,o=gg(n,eg)&amp;&amp;!og.none,r=gg(n,ng)&amp;&amp;!og[&quot;pan-y&quot;],s=gg(n,ig)&amp;&amp;!og[&quot;pan-x&quot;];if(o){var a=1===t.pointers.length,h=t.distance&lt;2,l=t.deltaTime&lt;250;if(a&amp;&amp;h&amp;&amp;l)return}if(!s||!r)return o||r&amp;&amp;6&amp;i||s&amp;&amp;i&amp;cg?this.preventSrc(e):void 0}},e.preventSrc=function(t){this.manager.session.prevented=!0,t.preventDefault()},t}();function mg(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1}function bg(t){var e=t.length;if(1===e)return{x:Yv(t[0].clientX),y:Yv(t[0].clientY)};for(var i=0,n=0,o=0;o&lt;e;)i+=t[o].clientX,n+=t[o].clientY,o++;return{x:Yv(i/e),y:Yv(n/e)}}function wg(t){for(var e=[],i=0;i&lt;t.pointers.length;)e[i]={clientX:Yv(t.pointers[i].clientX),clientY:Yv(t.pointers[i].clientY)},i++;return{timeStamp:Gv(),pointers:e,center:bg(e),deltaX:t.deltaX,deltaY:t.deltaY}}function kg(t,e,i){i||(i=ug);var n=e[i[0]]-t[i[0]],o=e[i[1]]-t[i[1]];return Math.sqrt(n*n+o*o)}function _g(t,e,i){i||(i=ug);var n=e[i[0]]-t[i[0]],o=e[i[1]]-t[i[1]];return 180*Math.atan2(o,n)/Math.PI}function xg(t,e){return t===e?1:Xv(t)&gt;=Xv(e)?t&lt;0?2:4:e&lt;0?8:dg}function Eg(t,e,i){return{x:e/t||0,y:i/t||0}}function Og(t,e){var i=t.session,n=e.pointers,o=n.length;i.firstInput||(i.firstInput=wg(e)),o&gt;1&amp;&amp;!i.firstMultiple?i.firstMultiple=wg(e):1===o&amp;&amp;(i.firstMultiple=!1);var r=i.firstInput,s=i.firstMultiple,a=s?s.center:r.center,h=e.center=bg(n);e.timeStamp=Gv(),e.deltaTime=e.timeStamp-r.timeStamp,e.angle=_g(a,h),e.distance=kg(a,h),function(t,e){var i=e.center,n=t.offsetDelta||{},o=t.prevDelta||{},r=t.prevInput||{};1!==e.eventType&amp;&amp;4!==r.eventType||(o=t.prevDelta={x:r.deltaX||0,y:r.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=o.x+(i.x-n.x),e.deltaY=o.y+(i.y-n.y)}(i,e),e.offsetDirection=xg(e.deltaX,e.deltaY);var l,d,c=Eg(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=c.x,e.overallVelocityY=c.y,e.overallVelocity=Xv(c.x)&gt;Xv(c.y)?c.x:c.y,e.scale=s?(l=s.pointers,kg((d=n)[0],d[1],fg)/kg(l[0],l[1],fg)):1,e.rotation=s?function(t,e){return _g(e[1],e[0],fg)+_g(t[1],t[0],fg)}(s.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length&gt;i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,o,r,s=t.lastInterval||e,a=e.timeStamp-s.timeStamp;if(8!==e.eventType&amp;&amp;(a&gt;25||void 0===s.velocity)){var h=e.deltaX-s.deltaX,l=e.deltaY-s.deltaY,d=Eg(a,h,l);n=d.x,o=d.y,i=Xv(d.x)&gt;Xv(d.y)?d.x:d.y,r=xg(h,l),t.lastInterval=e}else i=s.velocity,n=s.velocityX,o=s.velocityY,r=s.direction;e.velocity=i,e.velocityX=n,e.velocityY=o,e.direction=r}(i,e);var u,f=t.element,p=e.srcEvent;mg(u=p.composedPath?p.composedPath()[0]:p.path?p.path[0]:p.target,f)&amp;&amp;(f=u),e.target=f}function Cg(t,e,i){var n=i.pointers.length,o=i.changedPointers.length,r=1&amp;e&amp;&amp;n-o==0,s=12&amp;e&amp;&amp;n-o==0;i.isFirst=!!r,i.isFinal=!!s,r&amp;&amp;(t.session={}),i.eventType=e,Og(t,i),t.emit(&quot;hammer.input&quot;,i),t.recognize(i),t.session.prevInput=i}function Sg(t){return t.trim().split(/\\s+/g)}function Tg(t,e,i){pg(Sg(e),(function(e){t.addEventListener(e,i,!1)}))}function Mg(t,e,i){pg(Sg(e),(function(e){t.removeEventListener(e,i,!1)}))}function Pg(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow||window}var Dg=function(){function t(t,e){var i=this;this.manager=t,this.callback=e,this.element=t.element,this.target=t.options.inputTarget,this.domHandler=function(e){vg(t.options.enable,[t])&amp;&amp;i.handler(e)},this.init()}var e=t.prototype;return e.handler=function(){},e.init=function(){this.evEl&amp;&amp;Tg(this.element,this.evEl,this.domHandler),this.evTarget&amp;&amp;Tg(this.target,this.evTarget,this.domHandler),this.evWin&amp;&amp;Tg(Pg(this.element),this.evWin,this.domHandler)},e.destroy=function(){this.evEl&amp;&amp;Mg(this.element,this.evEl,this.domHandler),this.evTarget&amp;&amp;Mg(this.target,this.evTarget,this.domHandler),this.evWin&amp;&amp;Mg(Pg(this.element),this.evWin,this.domHandler)},t}();function Ig(t,e,i){if(t.indexOf&amp;&amp;!i)return t.indexOf(e);for(var n=0;n&lt;t.length;){if(i&amp;&amp;t[n][i]==e||!i&amp;&amp;t[n]===e)return n;n++}return-1}var Bg={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},zg={2:hg,3:&quot;pen&quot;,4:lg,5:&quot;kinect&quot;},Ng=&quot;pointerdown&quot;,Fg=&quot;pointermove pointerup pointercancel&quot;;Wv.MSPointerEvent&amp;&amp;!Wv.PointerEvent&amp;&amp;(Ng=&quot;MSPointerDown&quot;,Fg=&quot;MSPointerMove MSPointerUp MSPointerCancel&quot;);var Ag=function(t){function e(){var i,n=e.prototype;return n.evEl=Ng,n.evWin=Fg,(i=t.apply(this,arguments)||this).store=i.manager.session.pointerEvents=[],i}return Lv(e,t),e.prototype.handler=function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(&quot;ms&quot;,&quot;&quot;),o=Bg[n],r=zg[t.pointerType]||t.pointerType,s=r===hg,a=Ig(e,t.pointerId,&quot;pointerId&quot;);1&amp;o&amp;&amp;(0===t.button||s)?a&lt;0&amp;&amp;(e.push(t),a=e.length-1):12&amp;o&amp;&amp;(i=!0),a&lt;0||(e[a]=t,this.callback(this.manager,o,{pointers:e,changedPointers:[t],pointerType:r,srcEvent:t}),i&amp;&amp;e.splice(a,1))},e}(Dg);function jg(t){return Array.prototype.slice.call(t,0)}function Rg(t,e,i){for(var n=[],o=[],r=0;r&lt;t.length;){var s=e?t[r][e]:t[r];Ig(o,s)&lt;0&amp;&amp;n.push(t[r]),o[r]=s,r++}return i&amp;&amp;(n=e?n.sort((function(t,i){return t[e]&gt;i[e]})):n.sort()),n}var Lg={touchstart:1,touchmove:2,touchend:4,touchcancel:8},Hg=&quot;touchstart touchmove touchend touchcancel&quot;,Wg=function(t){function e(){var i;return e.prototype.evTarget=Hg,(i=t.apply(this,arguments)||this).targetIds={},i}return Lv(e,t),e.prototype.handler=function(t){var e=Lg[t.type],i=qg.call(this,t,e);i&amp;&amp;this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:hg,srcEvent:t})},e}(Dg);function qg(t,e){var i,n,o=jg(t.touches),r=this.targetIds;if(3&amp;e&amp;&amp;1===o.length)return r[o[0].identifier]=!0,[o,o];var s=jg(t.changedTouches),a=[],h=this.target;if(n=o.filter((function(t){return mg(t.target,h)})),1===e)for(i=0;i&lt;n.length;)r[n[i].identifier]=!0,i++;for(i=0;i&lt;s.length;)r[s[i].identifier]&amp;&amp;a.push(s[i]),12&amp;e&amp;&amp;delete r[s[i].identifier],i++;return a.length?[Rg(n.concat(a),&quot;identifier&quot;,!0),a]:void 0}var Vg={mousedown:1,mousemove:2,mouseup:4},Ug=&quot;mousedown&quot;,Yg=&quot;mousemove mouseup&quot;,Xg=function(t){function e(){var i,n=e.prototype;return n.evEl=Ug,n.evWin=Yg,(i=t.apply(this,arguments)||this).pressed=!1,i}return Lv(e,t),e.prototype.handler=function(t){var e=Vg[t.type];1&amp;e&amp;&amp;0===t.button&amp;&amp;(this.pressed=!0),2&amp;e&amp;&amp;1!==t.which&amp;&amp;(e=4),this.pressed&amp;&amp;(4&amp;e&amp;&amp;(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:lg,srcEvent:t}))},e}(Dg);function Gg(t){var e=t.changedPointers[0];if(e.identifier===this.primaryTouch){var i={x:e.clientX,y:e.clientY},n=this.lastTouches;this.lastTouches.push(i);setTimeout((function(){var t=n.indexOf(i);t&gt;-1&amp;&amp;n.splice(t,1)}),2500)}}function Kg(t,e){1&amp;t?(this.primaryTouch=e.changedPointers[0].identifier,Gg.call(this,e)):12&amp;t&amp;&amp;Gg.call(this,e)}function $g(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n&lt;this.lastTouches.length;n++){var o=this.lastTouches[n],r=Math.abs(e-o.x),s=Math.abs(i-o.y);if(r&lt;=25&amp;&amp;s&lt;=25)return!0}return!1}var Zg=function(){return function(t){function e(e,i){var n;return(n=t.call(this,e,i)||this).handler=function(t,e,i){var o=i.pointerType===hg,r=i.pointerType===lg;if(!(r&amp;&amp;i.sourceCapabilities&amp;&amp;i.sourceCapabilities.firesTouchEvents)){if(o)Kg.call(Hv(Hv(n)),e,i);else if(r&amp;&amp;$g.call(Hv(Hv(n)),i))return;n.callback(t,e,i)}},n.touch=new Wg(n.manager,n.handler),n.mouse=new Xg(n.manager,n.handler),n.primaryTouch=null,n.lastTouches=[],n}return Lv(e,t),e.prototype.destroy=function(){this.touch.destroy(),this.mouse.destroy()},e}(Dg)}();function Qg(t,e,i){return!!Array.isArray(t)&amp;&amp;(pg(t,i[e],i),!0)}var Jg=32,ty=1;function ey(t,e){var i=e.manager;return i?i.get(t):t}function iy(t){return 16&amp;t?&quot;cancel&quot;:8&amp;t?&quot;end&quot;:4&amp;t?&quot;move&quot;:2&amp;t?&quot;start&quot;:&quot;&quot;}var ny=function(){function t(t){void 0===t&amp;&amp;(t={}),this.options=Rv({enable:!0},t),this.id=ty++,this.manager=null,this.state=1,this.simultaneous={},this.requireFail=[]}var e=t.prototype;return e.set=function(t){return qv(this.options,t),this.manager&amp;&amp;this.manager.touchAction.update(),this},e.recognizeWith=function(t){if(Qg(t,&quot;recognizeWith&quot;,this))return this;var e=this.simultaneous;return e[(t=ey(t,this)).id]||(e[t.id]=t,t.recognizeWith(this)),this},e.dropRecognizeWith=function(t){return Qg(t,&quot;dropRecognizeWith&quot;,this)||(t=ey(t,this),delete this.simultaneous[t.id]),this},e.requireFailure=function(t){if(Qg(t,&quot;requireFailure&quot;,this))return this;var e=this.requireFail;return-1===Ig(e,t=ey(t,this))&amp;&amp;(e.push(t),t.requireFailure(this)),this},e.dropRequireFailure=function(t){if(Qg(t,&quot;dropRequireFailure&quot;,this))return this;t=ey(t,this);var e=Ig(this.requireFail,t);return e&gt;-1&amp;&amp;this.requireFail.splice(e,1),this},e.hasRequireFailures=function(){return this.requireFail.length&gt;0},e.canRecognizeWith=function(t){return!!this.simultaneous[t.id]},e.emit=function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i&lt;8&amp;&amp;n(e.options.event+iy(i)),n(e.options.event),t.additionalEvent&amp;&amp;n(t.additionalEvent),i&gt;=8&amp;&amp;n(e.options.event+iy(i))},e.tryEmit=function(t){if(this.canEmit())return this.emit(t);this.state=Jg},e.canEmit=function(){for(var t=0;t&lt;this.requireFail.length;){if(!(33&amp;this.requireFail[t].state))return!1;t++}return!0},e.recognize=function(t){var e=qv({},t);if(!vg(this.options.enable,[this,e]))return this.reset(),void(this.state=Jg);56&amp;this.state&amp;&amp;(this.state=1),this.state=this.process(e),30&amp;this.state&amp;&amp;this.tryEmit(e)},e.process=function(t){},e.getTouchAction=function(){},e.reset=function(){},t}(),oy=function(t){function e(e){var i;return void 0===e&amp;&amp;(e={}),(i=t.call(this,Rv({event:&quot;tap&quot;,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},e))||this).pTime=!1,i.pCenter=!1,i._timer=null,i._input=null,i.count=0,i}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){return[tg]},i.process=function(t){var e=this,i=this.options,n=t.pointers.length===i.pointers,o=t.distance&lt;i.threshold,r=t.deltaTime&lt;i.time;if(this.reset(),1&amp;t.eventType&amp;&amp;0===this.count)return this.failTimeout();if(o&amp;&amp;r&amp;&amp;n){if(4!==t.eventType)return this.failTimeout();var s=!this.pTime||t.timeStamp-this.pTime&lt;i.interval,a=!this.pCenter||kg(this.pCenter,t.center)&lt;i.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,a&amp;&amp;s?this.count+=1:this.count=1,this._input=t,0===this.count%i.taps)return this.hasRequireFailures()?(this._timer=setTimeout((function(){e.state=8,e.tryEmit()}),i.interval),2):8}return Jg},i.failTimeout=function(){var t=this;return this._timer=setTimeout((function(){t.state=Jg}),this.options.interval),Jg},i.reset=function(){clearTimeout(this._timer)},i.emit=function(){8===this.state&amp;&amp;(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))},e}(ny),ry=function(t){function e(e){return void 0===e&amp;&amp;(e={}),t.call(this,Rv({pointers:1},e))||this}Lv(e,t);var i=e.prototype;return i.attrTest=function(t){var e=this.options.pointers;return 0===e||t.pointers.length===e},i.process=function(t){var e=this.state,i=t.eventType,n=6&amp;e,o=this.attrTest(t);return n&amp;&amp;(8&amp;i||!o)?16|e:n||o?4&amp;i?8|e:2&amp;e?4|e:2:Jg},e}(ny);function sy(t){return t===dg?&quot;down&quot;:8===t?&quot;up&quot;:2===t?&quot;left&quot;:4===t?&quot;right&quot;:&quot;&quot;}var ay=function(t){function e(e){var i;return void 0===e&amp;&amp;(e={}),(i=t.call(this,Rv({event:&quot;pan&quot;,threshold:10,pointers:1,direction:30},e))||this).pX=null,i.pY=null,i}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){var t=this.options.direction,e=[];return 6&amp;t&amp;&amp;e.push(ng),t&amp;cg&amp;&amp;e.push(ig),e},i.directionTest=function(t){var e=this.options,i=!0,n=t.distance,o=t.direction,r=t.deltaX,s=t.deltaY;return o&amp;e.direction||(6&amp;e.direction?(o=0===r?1:r&lt;0?2:4,i=r!==this.pX,n=Math.abs(t.deltaX)):(o=0===s?1:s&lt;0?8:dg,i=s!==this.pY,n=Math.abs(t.deltaY))),t.direction=o,i&amp;&amp;n&gt;e.threshold&amp;&amp;o&amp;e.direction},i.attrTest=function(t){return ry.prototype.attrTest.call(this,t)&amp;&amp;(2&amp;this.state||!(2&amp;this.state)&amp;&amp;this.directionTest(t))},i.emit=function(e){this.pX=e.deltaX,this.pY=e.deltaY;var i=sy(e.direction);i&amp;&amp;(e.additionalEvent=this.options.event+i),t.prototype.emit.call(this,e)},e}(ry),hy=function(t){function e(e){return void 0===e&amp;&amp;(e={}),t.call(this,Rv({event:&quot;swipe&quot;,threshold:10,velocity:.3,direction:30,pointers:1},e))||this}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){return ay.prototype.getTouchAction.call(this)},i.attrTest=function(e){var i,n=this.options.direction;return 30&amp;n?i=e.overallVelocity:6&amp;n?i=e.overallVelocityX:n&amp;cg&amp;&amp;(i=e.overallVelocityY),t.prototype.attrTest.call(this,e)&amp;&amp;n&amp;e.offsetDirection&amp;&amp;e.distance&gt;this.options.threshold&amp;&amp;e.maxPointers===this.options.pointers&amp;&amp;Xv(i)&gt;this.options.velocity&amp;&amp;4&amp;e.eventType},i.emit=function(t){var e=sy(t.offsetDirection);e&amp;&amp;this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)},e}(ry),ly=function(t){function e(e){return void 0===e&amp;&amp;(e={}),t.call(this,Rv({event:&quot;pinch&quot;,threshold:0,pointers:2},e))||this}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){return[eg]},i.attrTest=function(e){return t.prototype.attrTest.call(this,e)&amp;&amp;(Math.abs(e.scale-1)&gt;this.options.threshold||2&amp;this.state)},i.emit=function(e){if(1!==e.scale){var i=e.scale&lt;1?&quot;in&quot;:&quot;out&quot;;e.additionalEvent=this.options.event+i}t.prototype.emit.call(this,e)},e}(ry),dy=function(t){function e(e){return void 0===e&amp;&amp;(e={}),t.call(this,Rv({event:&quot;rotate&quot;,threshold:0,pointers:2},e))||this}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){return[eg]},i.attrTest=function(e){return t.prototype.attrTest.call(this,e)&amp;&amp;(Math.abs(e.rotation)&gt;this.options.threshold||2&amp;this.state)},e}(ry),cy=function(t){function e(e){var i;return void 0===e&amp;&amp;(e={}),(i=t.call(this,Rv({event:&quot;press&quot;,pointers:1,time:251,threshold:9},e))||this)._timer=null,i._input=null,i}Lv(e,t);var i=e.prototype;return i.getTouchAction=function(){return[Jv]},i.process=function(t){var e=this,i=this.options,n=t.pointers.length===i.pointers,o=t.distance&lt;i.threshold,r=t.deltaTime&gt;i.time;if(this._input=t,!o||!n||12&amp;t.eventType&amp;&amp;!r)this.reset();else if(1&amp;t.eventType)this.reset(),this._timer=setTimeout((function(){e.state=8,e.tryEmit()}),i.time);else if(4&amp;t.eventType)return 8;return Jg},i.reset=function(){clearTimeout(this._timer)},i.emit=function(t){8===this.state&amp;&amp;(t&amp;&amp;4&amp;t.eventType?this.manager.emit(this.options.event+&quot;up&quot;,t):(this._input.timeStamp=Gv(),this.manager.emit(this.options.event,this._input)))},e}(ny),uy={domEvents:!1,touchAction:Qv,enable:!0,inputTarget:null,inputClass:null,cssProps:{userSelect:&quot;none&quot;,touchSelect:&quot;none&quot;,touchCallout:&quot;none&quot;,contentZooming:&quot;none&quot;,userDrag:&quot;none&quot;,tapHighlightColor:&quot;rgba(0,0,0,0)&quot;}},fy=[[dy,{enable:!1}],[ly,{enable:!1},[&quot;rotate&quot;]],[hy,{direction:6}],[ay,{direction:6},[&quot;swipe&quot;]],[oy],[oy,{event:&quot;doubletap&quot;,taps:2},[&quot;tap&quot;]],[cy]];function py(t,e){var i,n=t.element;n.style&amp;&amp;(pg(t.options.cssProps,(function(o,r){i=Kv(n.style,r),e?(t.oldCssProps[i]=n.style[i],n.style[i]=o):n.style[i]=t.oldCssProps[i]||&quot;&quot;})),e||(t.oldCssProps={}))}var vy=function(){function t(t,e){var i,n=this;this.options=qv({},uy,e||{}),this.options.inputTarget=this.options.inputTarget||t,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new((i=this).options.inputClass||(sg?Ag:ag?Wg:rg?Zg:Xg))(i,Cg),this.touchAction=new yg(this,this.options.touchAction),py(this,!0),pg(this.options.recognizers,(function(t){var e=n.add(new t[0](t[1]));t[2]&amp;&amp;e.recognizeWith(t[2]),t[3]&amp;&amp;e.requireFailure(t[3])}),this)}var e=t.prototype;return e.set=function(t){return qv(this.options,t),t.touchAction&amp;&amp;this.touchAction.update(),t.inputTarget&amp;&amp;(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this},e.stop=function(t){this.session.stopped=t?2:1},e.recognize=function(t){var e=this.session;if(!e.stopped){var i;this.touchAction.preventDefaults(t);var n=this.recognizers,o=e.curRecognizer;(!o||o&amp;&amp;8&amp;o.state)&amp;&amp;(e.curRecognizer=null,o=null);for(var r=0;r&lt;n.length;)i=n[r],2===e.stopped||o&amp;&amp;i!==o&amp;&amp;!i.canRecognizeWith(o)?i.reset():i.recognize(t),!o&amp;&amp;14&amp;i.state&amp;&amp;(e.curRecognizer=i,o=i),r++}},e.get=function(t){if(t instanceof ny)return t;for(var e=this.recognizers,i=0;i&lt;e.length;i++)if(e[i].options.event===t)return e[i];return null},e.add=function(t){if(Qg(t,&quot;add&quot;,this))return this;var e=this.get(t.options.event);return e&amp;&amp;this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t},e.remove=function(t){if(Qg(t,&quot;remove&quot;,this))return this;var e=this.get(t);if(t){var i=this.recognizers,n=Ig(i,e);-1!==n&amp;&amp;(i.splice(n,1),this.touchAction.update())}return this},e.on=function(t,e){if(void 0===t||void 0===e)return this;var i=this.handlers;return pg(Sg(t),(function(t){i[t]=i[t]||[],i[t].push(e)})),this},e.off=function(t,e){if(void 0===t)return this;var i=this.handlers;return pg(Sg(t),(function(t){e?i[t]&amp;&amp;i[t].splice(Ig(i[t],e),1):delete i[t]})),this},e.emit=function(t,e){this.options.domEvents&amp;&amp;function(t,e){var i=document.createEvent(&quot;Event&quot;);i.initEvent(t,!0,!0),i.gesture=e,e.target.dispatchEvent(i)}(t,e);var i=this.handlers[t]&amp;&amp;this.handlers[t].slice();if(i&amp;&amp;i.length){e.type=t,e.preventDefault=function(){e.srcEvent.preventDefault()};for(var n=0;n&lt;i.length;)i[n](e),n++}},e.destroy=function(){this.element&amp;&amp;py(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null},t}(),gy={touchstart:1,touchmove:2,touchend:4,touchcancel:8},yy=&quot;touchstart&quot;,my=&quot;touchstart touchmove touchend touchcancel&quot;,by=function(t){function e(){var i,n=e.prototype;return n.evTarget=yy,n.evWin=my,(i=t.apply(this,arguments)||this).started=!1,i}return Lv(e,t),e.prototype.handler=function(t){var e=gy[t.type];if(1===e&amp;&amp;(this.started=!0),this.started){var i=wy.call(this,t,e);12&amp;e&amp;&amp;i[0].length-i[1].length==0&amp;&amp;(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:hg,srcEvent:t})}},e}(Dg);function wy(t,e){var i=jg(t.touches),n=jg(t.changedTouches);return 12&amp;e&amp;&amp;(i=Rg(i.concat(n),&quot;identifier&quot;,!0)),[i,n]}function ky(t,e,i){var n=&quot;DEPRECATED METHOD: &quot;+e+&quot;\\n&quot;+i+&quot; AT \\n&quot;;return function(){var e=new Error(&quot;get-stack-trace&quot;),i=e&amp;&amp;e.stack?e.stack.replace(/^[^\\(]+?[\\n$]/gm,&quot;&quot;).replace(/^\\s+at\\s+/gm,&quot;&quot;).replace(/^Object.&lt;anonymous&gt;\\s*\\(/gm,&quot;{anonymous}()@&quot;):&quot;Unknown Stack Trace&quot;,o=window.console&amp;&amp;(window.console.warn||window.console.log);return o&amp;&amp;o.call(window.console,n,i),t.apply(this,arguments)}}var _y=ky((function(t,e,i){for(var n=Object.keys(e),o=0;o&lt;n.length;)(!i||i&amp;&amp;void 0===t[n[o]])&amp;&amp;(t[n[o]]=e[n[o]]),o++;return t}),&quot;extend&quot;,&quot;Use `assign`.&quot;),xy=ky((function(t,e){return _y(t,e,!0)}),&quot;merge&quot;,&quot;Use `assign`.&quot;);function Ey(t,e,i){var n,o=e.prototype;(n=t.prototype=Object.create(o)).constructor=t,n._super=o,i&amp;&amp;qv(n,i)}function Oy(t,e){return function(){return t.apply(e,arguments)}}var Cy=function(){var t=function(t,e){return void 0===e&amp;&amp;(e={}),new vy(t,Rv({recognizers:fy.concat()},e))};return t.VERSION=&quot;2.0.17-rc&quot;,t.DIRECTION_ALL=30,t.DIRECTION_DOWN=dg,t.DIRECTION_LEFT=2,t.DIRECTION_RIGHT=4,t.DIRECTION_UP=8,t.DIRECTION_HORIZONTAL=6,t.DIRECTION_VERTICAL=cg,t.DIRECTION_NONE=1,t.DIRECTION_DOWN=dg,t.INPUT_START=1,t.INPUT_MOVE=2,t.INPUT_END=4,t.INPUT_CANCEL=8,t.STATE_POSSIBLE=1,t.STATE_BEGAN=2,t.STATE_CHANGED=4,t.STATE_ENDED=8,t.STATE_RECOGNIZED=8,t.STATE_CANCELLED=16,t.STATE_FAILED=Jg,t.Manager=vy,t.Input=Dg,t.TouchAction=yg,t.TouchInput=Wg,t.MouseInput=Xg,t.PointerEventInput=Ag,t.TouchMouseInput=Zg,t.SingleTouchInput=by,t.Recognizer=ny,t.AttrRecognizer=ry,t.Tap=oy,t.Pan=ay,t.Swipe=hy,t.Pinch=ly,t.Rotate=dy,t.Press=cy,t.on=Tg,t.off=Mg,t.each=pg,t.merge=xy,t.extend=_y,t.bindFn=Oy,t.assign=qv,t.inherit=Ey,t.bindFn=Oy,t.prefixed=Kv,t.toArray=jg,t.inArray=Ig,t.uniqueArray=Rg,t.splitStr=Sg,t.boolOrFn=vg,t.hasParent=mg,t.addEventListeners=Tg,t.removeEventListeners=Mg,t.defaults=qv({},uy,{preset:fy}),t}(),Sy=Cy;function Ty(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function My(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=Ty(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=Ty(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}function Py(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return Dy(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dy(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function Dy(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var Iy=tu(&quot;DELETE&quot;);function By(t){for(var e,i=arguments.length,n=new Array(i&gt;1?i-1:0),o=1;o&lt;i;o++)n[o-1]=arguments[o];return zy.apply(void 0,su(e=[{},t]).call(e,n))}function zy(){var t=Ny.apply(void 0,arguments);return Ay(t),t}function Ny(){for(var t=arguments.length,e=new Array(t),i=0;i&lt;t;i++)e[i]=arguments[i];if(e.length&lt;2)return e[0];var n;if(e.length&gt;2)return Ny.apply(void 0,su(n=[zy(e[0],e[1])]).call(n,Jc(au(e).call(e,2))));var o,r=e[0],s=e[1],a=Py(hu(s));try{for(a.s();!(o=a.n()).done;){var h=o.value;Object.prototype.propertyIsEnumerable.call(s,h)&amp;&amp;(s[h]===Iy?delete r[h]:null===r[h]||null===s[h]||&quot;object&quot;!==Qc(r[h])||&quot;object&quot;!==Qc(s[h])||lu(r[h])||lu(s[h])?r[h]=Fy(s[h]):r[h]=Ny(r[h],s[h]))}}catch(t){a.e(t)}finally{a.f()}return r}function Fy(t){return lu(t)?gu(t).call(t,(function(t){return Fy(t)})):&quot;object&quot;===Qc(t)&amp;&amp;null!==t?Ny({},t):t}function Ay(t){for(var e=0,i=bu(t);e&lt;i.length;e++){var n=i[e];t[n]===Iy?delete t[n]:&quot;object&quot;===Qc(t[n])&amp;&amp;null!==t[n]&amp;&amp;Ay(t[n])}}function jy(){for(var t=arguments.length,e=new Array(t),i=0;i&lt;t;i++)e[i]=arguments[i];return Ry(e.length?e:[Eu()])}function Ry(t){var e=function(){for(var t=Ly(),e=t(&quot; &quot;),i=t(&quot; &quot;),n=t(&quot; &quot;),o=0;o&lt;arguments.length;o++)(e-=t(o&lt;0||arguments.length&lt;=o?void 0:arguments[o]))&lt;0&amp;&amp;(e+=1),(i-=t(o&lt;0||arguments.length&lt;=o?void 0:arguments[o]))&lt;0&amp;&amp;(i+=1),(n-=t(o&lt;0||arguments.length&lt;=o?void 0:arguments[o]))&lt;0&amp;&amp;(n+=1);return[e,i,n]}(t),i=Kc(e,3),n=i[0],o=i[1],r=i[2],s=1,a=function(){var t=2091639*n+2.3283064365386963e-10*s;return n=o,o=r,r=t-(s=0|t)};return a.uint32=function(){return 4294967296*a()},a.fract53=function(){return a()+11102230246251565e-32*(2097152*a()|0)},a.algorithm=&quot;Alea&quot;,a.seed=t,a.version=&quot;0.9&quot;,a}function Ly(){var t=4022871197;return function(e){for(var i=e.toString(),n=0;n&lt;i.length;n++){var o=.02519603282416938*(t+=i.charCodeAt(n));o-=t=o&gt;&gt;&gt;0,t=(o*=t)&gt;&gt;&gt;0,t+=4294967296*(o-=t)}return 2.3283064365386963e-10*(t&gt;&gt;&gt;0)}}var Hy=&quot;undefined&quot;!=typeof window?window.Hammer||Sy:function(){return function(){var t=function(){};return{on:t,off:t,destroy:t,emit:t,get:function(){return{set:t}}}}()};function Wy(t){var e,i=this;this._cleanupQueue=[],this.active=!1,this._dom={container:t,overlay:document.createElement(&quot;div&quot;)},this._dom.overlay.classList.add(&quot;vis-overlay&quot;),this._dom.container.appendChild(this._dom.overlay),this._cleanupQueue.push((function(){i._dom.overlay.parentNode.removeChild(i._dom.overlay)}));var n=Hy(this._dom.overlay);n.on(&quot;tap&quot;,zn(e=this._onTapOverlay).call(e,this)),this._cleanupQueue.push((function(){n.destroy()}));var o=[&quot;tap&quot;,&quot;doubletap&quot;,&quot;press&quot;,&quot;pinch&quot;,&quot;pan&quot;,&quot;panstart&quot;,&quot;panmove&quot;,&quot;panend&quot;];Fu(o).call(o,(function(t){n.on(t,(function(t){t.srcEvent.stopPropagation()}))})),document&amp;&amp;document.body&amp;&amp;(this._onClick=function(e){(function(t,e){for(;t;){if(t===e)return!0;t=t.parentNode}return!1})(e.target,t)||i.deactivate()},document.body.addEventListener(&quot;click&quot;,this._onClick),this._cleanupQueue.push((function(){document.body.removeEventListener(&quot;click&quot;,i._onClick)}))),this._escListener=function(t){(&quot;key&quot;in t?&quot;Escape&quot;===t.key:27===t.keyCode)&amp;&amp;i.deactivate()}}Wn(Wy.prototype),Wy.current=null,Wy.prototype.destroy=function(){var t,e;this.deactivate();var i,n=Py(Yu(t=ff(e=this._cleanupQueue).call(e,0)).call(t));try{for(n.s();!(i=n.n()).done;){(0,i.value)()}}catch(t){n.e(t)}finally{n.f()}},Wy.prototype.activate=function(){Wy.current&amp;&amp;Wy.current.deactivate(),Wy.current=this,this.active=!0,this._dom.overlay.style.display=&quot;none&quot;,this._dom.container.classList.add(&quot;vis-active&quot;),this.emit(&quot;change&quot;),this.emit(&quot;activate&quot;),document.body.addEventListener(&quot;keydown&quot;,this._escListener)},Wy.prototype.deactivate=function(){this.active=!1,this._dom.overlay.style.display=&quot;block&quot;,this._dom.container.classList.remove(&quot;vis-active&quot;),document.body.removeEventListener(&quot;keydown&quot;,this._escListener),this.emit(&quot;change&quot;),this.emit(&quot;deactivate&quot;)},Wy.prototype._onTapOverlay=function(t){this.activate(),t.srcEvent.stopPropagation()};var qy=/^\\/?Date\\((-?\\d+)/i,Vy=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,Uy=/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,Yy=/^rgb\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *\\)$/i,Xy=/^rgba\\( *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *(1?\\d{1,2}|2[0-4]\\d|25[0-5]) *, *([01]|0?\\.\\d+) *\\)$/i;function Gy(t){return t instanceof Number||&quot;number&quot;==typeof t}function Ky(t){if(t)for(;!0===t.hasChildNodes();){var e=t.firstChild;e&amp;&amp;(Ky(e),t.removeChild(e))}}function $y(t){return t instanceof String||&quot;string&quot;==typeof t}function Zy(t){return&quot;object&quot;===Qc(t)&amp;&amp;null!==t}function Qy(t,e,i,n){var o=!1;!0===n&amp;&amp;(o=null===e[i]&amp;&amp;void 0!==t[i]),o?delete t[i]:t[i]=e[i]}function Jy(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2];for(var n in t)if(void 0!==e[n])if(null===e[n]||&quot;object&quot;!==Qc(e[n]))Qy(t,e,n,i);else{var o=t[n],r=e[n];Zy(o)&amp;&amp;Zy(r)&amp;&amp;Jy(o,r,i)}}var tm=un;function em(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]&amp;&amp;arguments[3];if(lu(i))throw new TypeError(&quot;Arrays are not supported by deepExtend&quot;);for(var o=0;o&lt;t.length;o++){var r=t[o];if(Object.prototype.hasOwnProperty.call(i,r))if(i[r]&amp;&amp;i[r].constructor===Object)void 0===e[r]&amp;&amp;(e[r]={}),e[r].constructor===Object?nm(e[r],i[r],!1,n):Qy(e,i,r,n);else{if(lu(i[r]))throw new TypeError(&quot;Arrays are not supported by deepExtend&quot;);Qy(e,i,r,n)}}return e}function im(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]&amp;&amp;arguments[3];if(lu(i))throw new TypeError(&quot;Arrays are not supported by deepExtend&quot;);for(var o in i)if(Object.prototype.hasOwnProperty.call(i,o)&amp;&amp;!Nf(t).call(t,o))if(i[o]&amp;&amp;i[o].constructor===Object)void 0===e[o]&amp;&amp;(e[o]={}),e[o].constructor===Object?nm(e[o],i[o]):Qy(e,i,o,n);else if(lu(i[o])){e[o]=[];for(var r=0;r&lt;i[o].length;r++)e[o].push(i[o][r])}else Qy(e,i,o,n);return e}function nm(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]&amp;&amp;arguments[3];for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)||!0===i)if(&quot;object&quot;===Qc(e[o])&amp;&amp;null!==e[o]&amp;&amp;Lf(e[o])===Object.prototype)void 0===t[o]?t[o]=nm({},e[o],i):&quot;object&quot;===Qc(t[o])&amp;&amp;null!==t[o]&amp;&amp;Lf(t[o])===Object.prototype?nm(t[o],e[o],i):Qy(t,e,o,n);else if(lu(e[o])){var r;t[o]=au(r=e[o]).call(r)}else Qy(t,e,o,n);return t}function om(t,e){var i;return su(i=[]).call(i,Jc(t),[e])}function rm(t){return au(t).call(t)}function sm(t){return t.getBoundingClientRect().left}function am(t){return t.getBoundingClientRect().top}function hm(t,e){if(lu(t))for(var i=t.length,n=0;n&lt;i;n++)e(t[n],n,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&amp;&amp;e(t[o],o,t)}var lm=ip;function dm(t,e,i,n){var o;t.addEventListener?(void 0===n&amp;&amp;(n=!1),&quot;mousewheel&quot;===e&amp;&amp;Nf(o=navigator.userAgent).call(o,&quot;Firefox&quot;)&amp;&amp;(e=&quot;DOMMouseScroll&quot;),t.addEventListener(e,i,n)):t.attachEvent(&quot;on&quot;+e,i)}function cm(t,e,i,n){var o;t.removeEventListener?(void 0===n&amp;&amp;(n=!1),&quot;mousewheel&quot;===e&amp;&amp;Nf(o=navigator.userAgent).call(o,&quot;Firefox&quot;)&amp;&amp;(e=&quot;DOMMouseScroll&quot;),t.removeEventListener(e,i,n)):t.detachEvent(&quot;on&quot;+e,i)}var um={asBoolean:function(t,e){return&quot;function&quot;==typeof t&amp;&amp;(t=t()),null!=t?0!=t:e||null},asNumber:function(t,e){return&quot;function&quot;==typeof t&amp;&amp;(t=t()),null!=t?Number(t)||e||null:e||null},asString:function(t,e){return&quot;function&quot;==typeof t&amp;&amp;(t=t()),null!=t?String(t):e||null},asSize:function(t,e){return&quot;function&quot;==typeof t&amp;&amp;(t=t()),$y(t)?t:Gy(t)?t+&quot;px&quot;:e||null},asElement:function(t,e){return&quot;function&quot;==typeof t&amp;&amp;(t=t()),t||e||null}};function fm(t){var e;switch(t.length){case 3:case 4:return(e=Uy.exec(t))?{r:Ep(e[1]+e[1],16),g:Ep(e[2]+e[2],16),b:Ep(e[3]+e[3],16)}:null;case 6:case 7:return(e=Vy.exec(t))?{r:Ep(e[1],16),g:Ep(e[2],16),b:Ep(e[3],16)}:null;default:return null}}function pm(t,e){if(Nf(t).call(t,&quot;rgba&quot;))return t;if(Nf(t).call(t,&quot;rgb&quot;)){var i=t.substr(Fp(t).call(t,&quot;(&quot;)+1).replace(&quot;)&quot;,&quot;&quot;).split(&quot;,&quot;);return&quot;rgba(&quot;+i[0]+&quot;,&quot;+i[1]+&quot;,&quot;+i[2]+&quot;,&quot;+e+&quot;)&quot;}var n=fm(t);return null==n?t:&quot;rgba(&quot;+n.r+&quot;,&quot;+n.g+&quot;,&quot;+n.b+&quot;,&quot;+e+&quot;)&quot;}function vm(t,e,i){var n;return&quot;#&quot;+au(n=((1&lt;&lt;24)+(t&lt;&lt;16)+(e&lt;&lt;8)+i).toString(16)).call(n,1)}function gm(t,e){if($y(t)){var i=t;if(Em(i)){var n,o=gu(n=i.substr(4).substr(0,i.length-5).split(&quot;,&quot;)).call(n,(function(t){return Ep(t)}));i=vm(o[0],o[1],o[2])}if(!0===xm(i)){var r=_m(i),s={h:r.h,s:.8*r.s,v:Math.min(1,1.02*r.v)},a={h:r.h,s:Math.min(1,1.25*r.s),v:.8*r.v},h=km(a.h,a.s,a.v),l=km(s.h,s.s,s.v);return{background:i,border:h,highlight:{background:l,border:h},hover:{background:l,border:h}}}return{background:i,border:i,highlight:{background:i,border:i},hover:{background:i,border:i}}}return e?{background:t.background||e.background,border:t.border||e.border,highlight:$y(t.highlight)?{border:t.highlight,background:t.highlight}:{background:t.highlight&amp;&amp;t.highlight.background||e.highlight.background,border:t.highlight&amp;&amp;t.highlight.border||e.highlight.border},hover:$y(t.hover)?{border:t.hover,background:t.hover}:{border:t.hover&amp;&amp;t.hover.border||e.hover.border,background:t.hover&amp;&amp;t.hover.background||e.hover.background}}:{background:t.background||void 0,border:t.border||void 0,highlight:$y(t.highlight)?{border:t.highlight,background:t.highlight}:{background:t.highlight&amp;&amp;t.highlight.background||void 0,border:t.highlight&amp;&amp;t.highlight.border||void 0},hover:$y(t.hover)?{border:t.hover,background:t.hover}:{border:t.hover&amp;&amp;t.hover.border||void 0,background:t.hover&amp;&amp;t.hover.background||void 0}}}function ym(t,e,i){t/=255,e/=255,i/=255;var n=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));return n===o?{h:0,s:0,v:n}:{h:60*((t===n?3:i===n?1:5)-(t===n?e-i:i===n?t-e:i-t)/(o-n))/360,s:(o-n)/o,v:o}}var mm=function(t){var e,i={};return Fu(e=t.split(&quot;;&quot;)).call(e,(function(t){if(&quot;&quot;!=Yp(t).call(t)){var e,n,o=t.split(&quot;:&quot;),r=Yp(e=o[0]).call(e),s=Yp(n=o[1]).call(n);i[r]=s}})),i},bm=function(t){var e;return gu(e=bu(t)).call(e,(function(e){return e+&quot;: &quot;+t[e]})).join(&quot;; &quot;)};function wm(t,e,i){var n,o,r,s=Math.floor(6*t),a=6*t-s,h=i*(1-e),l=i*(1-a*e),d=i*(1-(1-a)*e);switch(s%6){case 0:n=i,o=d,r=h;break;case 1:n=l,o=i,r=h;break;case 2:n=h,o=i,r=d;break;case 3:n=h,o=l,r=i;break;case 4:n=d,o=h,r=i;break;case 5:n=i,o=h,r=l}return{r:Math.floor(255*n),g:Math.floor(255*o),b:Math.floor(255*r)}}function km(t,e,i){var n=wm(t,e,i);return vm(n.r,n.g,n.b)}function _m(t){var e=fm(t);if(!e)throw new TypeError(&quot;'&quot;.concat(t,&quot;' is not a valid color.&quot;));return ym(e.r,e.g,e.b)}function xm(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)}function Em(t){return Yy.test(t)}function Om(t){return Xy.test(t)}function Cm(t){if(null===t||&quot;object&quot;!==Qc(t))return null;if(t instanceof Element)return t;var e=Kp(t);for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&amp;&amp;&quot;object&quot;==Qc(t[i])&amp;&amp;(e[i]=Cm(t[i]));return e}function Sm(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:{},o=function(t){return null!=t},r=function(t){return null!==t&amp;&amp;&quot;object&quot;===Qc(t)},s=function(t){for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0};if(!r(t))throw new Error(&quot;Parameter mergeTarget must be an object&quot;);if(!r(e))throw new Error(&quot;Parameter options must be an object&quot;);if(!o(i))throw new Error(&quot;Parameter option must have a value&quot;);if(!r(n))throw new Error(&quot;Parameter globalOptions must be an object&quot;);var a=function(t,e,i){r(t[i])||(t[i]={});var n=e[i],o=t[i];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&amp;&amp;(o[s]=n[s])},h=e[i],l=r(n)&amp;&amp;!s(n),d=l?n[i]:void 0,c=d?d.enabled:void 0;if(void 0!==h){if(&quot;boolean&quot;==typeof h)return r(t[i])||(t[i]={}),void(t[i].enabled=h);if(null===h&amp;&amp;!r(t[i])){if(!o(d))return;t[i]=Kp(d)}if(r(h)){var u=!0;void 0!==h.enabled?u=h.enabled:void 0!==c&amp;&amp;(u=d.enabled),a(t,e,i),t[i].enabled=u}}}var Tm={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t&lt;.5?2*t*t:(4-2*t)*t-1},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t&lt;.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t&lt;.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t&lt;.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}};function Mm(t,e){var i;lu(e)||(e=[e]);var n,o=Py(t);try{for(o.s();!(n=o.n()).done;){var r=n.value;if(r){i=r[e[0]];for(var s=1;s&lt;e.length;s++)i&amp;&amp;(i=i[e[s]]);if(void 0!==i)break}}}catch(t){o.e(t)}finally{o.f()}return i}var Pm={black:&quot;#000000&quot;,navy:&quot;#000080&quot;,darkblue:&quot;#00008B&quot;,mediumblue:&quot;#0000CD&quot;,blue:&quot;#0000FF&quot;,darkgreen:&quot;#006400&quot;,green:&quot;#008000&quot;,teal:&quot;#008080&quot;,darkcyan:&quot;#008B8B&quot;,deepskyblue:&quot;#00BFFF&quot;,darkturquoise:&quot;#00CED1&quot;,mediumspringgreen:&quot;#00FA9A&quot;,lime:&quot;#00FF00&quot;,springgreen:&quot;#00FF7F&quot;,aqua:&quot;#00FFFF&quot;,cyan:&quot;#00FFFF&quot;,midnightblue:&quot;#191970&quot;,dodgerblue:&quot;#1E90FF&quot;,lightseagreen:&quot;#20B2AA&quot;,forestgreen:&quot;#228B22&quot;,seagreen:&quot;#2E8B57&quot;,darkslategray:&quot;#2F4F4F&quot;,limegreen:&quot;#32CD32&quot;,mediumseagreen:&quot;#3CB371&quot;,turquoise:&quot;#40E0D0&quot;,royalblue:&quot;#4169E1&quot;,steelblue:&quot;#4682B4&quot;,darkslateblue:&quot;#483D8B&quot;,mediumturquoise:&quot;#48D1CC&quot;,indigo:&quot;#4B0082&quot;,darkolivegreen:&quot;#556B2F&quot;,cadetblue:&quot;#5F9EA0&quot;,cornflowerblue:&quot;#6495ED&quot;,mediumaquamarine:&quot;#66CDAA&quot;,dimgray:&quot;#696969&quot;,slateblue:&quot;#6A5ACD&quot;,olivedrab:&quot;#6B8E23&quot;,slategray:&quot;#708090&quot;,lightslategray:&quot;#778899&quot;,mediumslateblue:&quot;#7B68EE&quot;,lawngreen:&quot;#7CFC00&quot;,chartreuse:&quot;#7FFF00&quot;,aquamarine:&quot;#7FFFD4&quot;,maroon:&quot;#800000&quot;,purple:&quot;#800080&quot;,olive:&quot;#808000&quot;,gray:&quot;#808080&quot;,skyblue:&quot;#87CEEB&quot;,lightskyblue:&quot;#87CEFA&quot;,blueviolet:&quot;#8A2BE2&quot;,darkred:&quot;#8B0000&quot;,darkmagenta:&quot;#8B008B&quot;,saddlebrown:&quot;#8B4513&quot;,darkseagreen:&quot;#8FBC8F&quot;,lightgreen:&quot;#90EE90&quot;,mediumpurple:&quot;#9370D8&quot;,darkviolet:&quot;#9400D3&quot;,palegreen:&quot;#98FB98&quot;,darkorchid:&quot;#9932CC&quot;,yellowgreen:&quot;#9ACD32&quot;,sienna:&quot;#A0522D&quot;,brown:&quot;#A52A2A&quot;,darkgray:&quot;#A9A9A9&quot;,lightblue:&quot;#ADD8E6&quot;,greenyellow:&quot;#ADFF2F&quot;,paleturquoise:&quot;#AFEEEE&quot;,lightsteelblue:&quot;#B0C4DE&quot;,powderblue:&quot;#B0E0E6&quot;,firebrick:&quot;#B22222&quot;,darkgoldenrod:&quot;#B8860B&quot;,mediumorchid:&quot;#BA55D3&quot;,rosybrown:&quot;#BC8F8F&quot;,darkkhaki:&quot;#BDB76B&quot;,silver:&quot;#C0C0C0&quot;,mediumvioletred:&quot;#C71585&quot;,indianred:&quot;#CD5C5C&quot;,peru:&quot;#CD853F&quot;,chocolate:&quot;#D2691E&quot;,tan:&quot;#D2B48C&quot;,lightgrey:&quot;#D3D3D3&quot;,palevioletred:&quot;#D87093&quot;,thistle:&quot;#D8BFD8&quot;,orchid:&quot;#DA70D6&quot;,goldenrod:&quot;#DAA520&quot;,crimson:&quot;#DC143C&quot;,gainsboro:&quot;#DCDCDC&quot;,plum:&quot;#DDA0DD&quot;,burlywood:&quot;#DEB887&quot;,lightcyan:&quot;#E0FFFF&quot;,lavender:&quot;#E6E6FA&quot;,darksalmon:&quot;#E9967A&quot;,violet:&quot;#EE82EE&quot;,palegoldenrod:&quot;#EEE8AA&quot;,lightcoral:&quot;#F08080&quot;,khaki:&quot;#F0E68C&quot;,aliceblue:&quot;#F0F8FF&quot;,honeydew:&quot;#F0FFF0&quot;,azure:&quot;#F0FFFF&quot;,sandybrown:&quot;#F4A460&quot;,wheat:&quot;#F5DEB3&quot;,beige:&quot;#F5F5DC&quot;,whitesmoke:&quot;#F5F5F5&quot;,mintcream:&quot;#F5FFFA&quot;,ghostwhite:&quot;#F8F8FF&quot;,salmon:&quot;#FA8072&quot;,antiquewhite:&quot;#FAEBD7&quot;,linen:&quot;#FAF0E6&quot;,lightgoldenrodyellow:&quot;#FAFAD2&quot;,oldlace:&quot;#FDF5E6&quot;,red:&quot;#FF0000&quot;,fuchsia:&quot;#FF00FF&quot;,magenta:&quot;#FF00FF&quot;,deeppink:&quot;#FF1493&quot;,orangered:&quot;#FF4500&quot;,tomato:&quot;#FF6347&quot;,hotpink:&quot;#FF69B4&quot;,coral:&quot;#FF7F50&quot;,darkorange:&quot;#FF8C00&quot;,lightsalmon:&quot;#FFA07A&quot;,orange:&quot;#FFA500&quot;,lightpink:&quot;#FFB6C1&quot;,pink:&quot;#FFC0CB&quot;,gold:&quot;#FFD700&quot;,peachpuff:&quot;#FFDAB9&quot;,navajowhite:&quot;#FFDEAD&quot;,moccasin:&quot;#FFE4B5&quot;,bisque:&quot;#FFE4C4&quot;,mistyrose:&quot;#FFE4E1&quot;,blanchedalmond:&quot;#FFEBCD&quot;,papayawhip:&quot;#FFEFD5&quot;,lavenderblush:&quot;#FFF0F5&quot;,seashell:&quot;#FFF5EE&quot;,cornsilk:&quot;#FFF8DC&quot;,lemonchiffon:&quot;#FFFACD&quot;,floralwhite:&quot;#FFFAF0&quot;,snow:&quot;#FFFAFA&quot;,yellow:&quot;#FFFF00&quot;,lightyellow:&quot;#FFFFE0&quot;,ivory:&quot;#FFFFF0&quot;,white:&quot;#FFFFFF&quot;},Dm=function(){function t(){var e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:1;Yd(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return Kd(t,[{key:&quot;insertTo&quot;,value:function(t){void 0!==this.hammer&amp;&amp;(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:&quot;setUpdateCallback&quot;,value:function(t){if(&quot;function&quot;!=typeof t)throw new Error(&quot;Function attempted to set as colorPicker update callback is not a function.&quot;);this.updateCallback=t}},{key:&quot;setCloseCallback&quot;,value:function(t){if(&quot;function&quot;!=typeof t)throw new Error(&quot;Function attempted to set as colorPicker closing callback is not a function.&quot;);this.closeCallback=t}},{key:&quot;_isColorString&quot;,value:function(t){if(&quot;string&quot;==typeof t)return Pm[t]}},{key:&quot;setColor&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];if(&quot;none&quot;!==t){var i,n=this._isColorString(t);if(void 0!==n&amp;&amp;(t=n),!0===$y(t)){if(!0===Em(t)){var o=t.substr(4).substr(0,t.length-5).split(&quot;,&quot;);i={r:o[0],g:o[1],b:o[2],a:1}}else if(!0===Om(t)){var r=t.substr(5).substr(0,t.length-6).split(&quot;,&quot;);i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(!0===xm(t)){var s=fm(t);i={r:s.r,g:s.g,b:s.b,a:1}}}else if(t instanceof Object&amp;&amp;void 0!==t.r&amp;&amp;void 0!==t.g&amp;&amp;void 0!==t.b){var a=void 0!==t.a?t.a:&quot;1.0&quot;;i={r:t.r,g:t.g,b:t.b,a:a}}if(void 0===i)throw new Error(&quot;Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: &quot;+gv(t));this._setColor(i,e)}}},{key:&quot;show&quot;,value:function(){void 0!==this.closeCallback&amp;&amp;(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display=&quot;block&quot;,this._generateHueCircle()}},{key:&quot;_hide&quot;,value:function(){var t=this,e=!(arguments.length&gt;0&amp;&amp;void 0!==arguments[0])||arguments[0];!0===e&amp;&amp;(this.previousColor=un({},this.color)),!0===this.applied&amp;&amp;this.updateCallback(this.initialColor),this.frame.style.display=&quot;none&quot;,Sv((function(){void 0!==t.closeCallback&amp;&amp;(t.closeCallback(),t.closeCallback=void 0)}),0)}},{key:&quot;_save&quot;,value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:&quot;_apply&quot;,value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:&quot;_loadLast&quot;,value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert(&quot;There is no last color to load...&quot;)}},{key:&quot;_setColor&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];!0===e&amp;&amp;(this.initialColor=un({},t)),this.color=t;var i=ym(t.r,t.g,t.b),n=2*Math.PI,o=this.r*i.s,r=this.centerCoordinates.x+o*Math.sin(n*i.h),s=this.centerCoordinates.y+o*Math.cos(n*i.h);this.colorPickerSelector.style.left=r-.5*this.colorPickerSelector.clientWidth+&quot;px&quot;,this.colorPickerSelector.style.top=s-.5*this.colorPickerSelector.clientHeight+&quot;px&quot;,this._updatePicker(t)}},{key:&quot;_setOpacity&quot;,value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:&quot;_setBrightness&quot;,value:function(t){var e=ym(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=wm(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:&quot;_updatePicker&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:this.color,e=ym(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext(&quot;2d&quot;);void 0===this.pixelRation&amp;&amp;(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var n=this.colorPickerCanvas.clientWidth,o=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,n,o),i.putImageData(this.hueCircle,0,0),i.fillStyle=&quot;rgba(0,0,0,&quot;+(1-e.v)+&quot;)&quot;,i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),jv(i).call(i),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor=&quot;rgba(&quot;+this.initialColor.r+&quot;,&quot;+this.initialColor.g+&quot;,&quot;+this.initialColor.b+&quot;,&quot;+this.initialColor.a+&quot;)&quot;,this.newColorDiv.style.backgroundColor=&quot;rgba(&quot;+this.color.r+&quot;,&quot;+this.color.g+&quot;,&quot;+this.color.b+&quot;,&quot;+this.color.a+&quot;)&quot;}},{key:&quot;_setSize&quot;,value:function(){this.colorPickerCanvas.style.width=&quot;100%&quot;,this.colorPickerCanvas.style.height=&quot;100%&quot;,this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:&quot;_create&quot;,value:function(){var t,e,i,n;if(this.frame=document.createElement(&quot;div&quot;),this.frame.className=&quot;vis-color-picker&quot;,this.colorPickerDiv=document.createElement(&quot;div&quot;),this.colorPickerSelector=document.createElement(&quot;div&quot;),this.colorPickerSelector.className=&quot;vis-selector&quot;,this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement(&quot;canvas&quot;),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var o=this.colorPickerCanvas.getContext(&quot;2d&quot;);this.pixelRatio=(window.devicePixelRatio||1)/(o.webkitBackingStorePixelRatio||o.mozBackingStorePixelRatio||o.msBackingStorePixelRatio||o.oBackingStorePixelRatio||o.backingStorePixelRatio||1),this.colorPickerCanvas.getContext(&quot;2d&quot;).setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var r=document.createElement(&quot;DIV&quot;);r.style.color=&quot;red&quot;,r.style.fontWeight=&quot;bold&quot;,r.style.padding=&quot;10px&quot;,r.innerText=&quot;Error: your browser does not support HTML canvas&quot;,this.colorPickerCanvas.appendChild(r)}this.colorPickerDiv.className=&quot;vis-color&quot;,this.opacityDiv=document.createElement(&quot;div&quot;),this.opacityDiv.className=&quot;vis-opacity&quot;,this.brightnessDiv=document.createElement(&quot;div&quot;),this.brightnessDiv.className=&quot;vis-brightness&quot;,this.arrowDiv=document.createElement(&quot;div&quot;),this.arrowDiv.className=&quot;vis-arrow&quot;,this.opacityRange=document.createElement(&quot;input&quot;);try{this.opacityRange.type=&quot;range&quot;,this.opacityRange.min=&quot;0&quot;,this.opacityRange.max=&quot;100&quot;}catch(t){}this.opacityRange.value=&quot;100&quot;,this.opacityRange.className=&quot;vis-range&quot;,this.brightnessRange=document.createElement(&quot;input&quot;);try{this.brightnessRange.type=&quot;range&quot;,this.brightnessRange.min=&quot;0&quot;,this.brightnessRange.max=&quot;100&quot;}catch(t){}this.brightnessRange.value=&quot;100&quot;,this.brightnessRange.className=&quot;vis-range&quot;,this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var s=this;this.opacityRange.onchange=function(){s._setOpacity(this.value)},this.opacityRange.oninput=function(){s._setOpacity(this.value)},this.brightnessRange.onchange=function(){s._setBrightness(this.value)},this.brightnessRange.oninput=function(){s._setBrightness(this.value)},this.brightnessLabel=document.createElement(&quot;div&quot;),this.brightnessLabel.className=&quot;vis-label vis-brightness&quot;,this.brightnessLabel.innerText=&quot;brightness:&quot;,this.opacityLabel=document.createElement(&quot;div&quot;),this.opacityLabel.className=&quot;vis-label vis-opacity&quot;,this.opacityLabel.innerText=&quot;opacity:&quot;,this.newColorDiv=document.createElement(&quot;div&quot;),this.newColorDiv.className=&quot;vis-new-color&quot;,this.newColorDiv.innerText=&quot;new&quot;,this.initialColorDiv=document.createElement(&quot;div&quot;),this.initialColorDiv.className=&quot;vis-initial-color&quot;,this.initialColorDiv.innerText=&quot;initial&quot;,this.cancelButton=document.createElement(&quot;div&quot;),this.cancelButton.className=&quot;vis-button vis-cancel&quot;,this.cancelButton.innerText=&quot;cancel&quot;,this.cancelButton.onclick=zn(t=this._hide).call(t,this,!1),this.applyButton=document.createElement(&quot;div&quot;),this.applyButton.className=&quot;vis-button vis-apply&quot;,this.applyButton.innerText=&quot;apply&quot;,this.applyButton.onclick=zn(e=this._apply).call(e,this),this.saveButton=document.createElement(&quot;div&quot;),this.saveButton.className=&quot;vis-button vis-save&quot;,this.saveButton.innerText=&quot;save&quot;,this.saveButton.onclick=zn(i=this._save).call(i,this),this.loadButton=document.createElement(&quot;div&quot;),this.loadButton.className=&quot;vis-button vis-load&quot;,this.loadButton.innerText=&quot;load last&quot;,this.loadButton.onclick=zn(n=this._loadLast).call(n,this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:&quot;_bindHammer&quot;,value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new Hy(this.colorPickerCanvas),this.hammer.get(&quot;pinch&quot;).set({enable:!0}),this.hammer.on(&quot;hammer.input&quot;,(function(e){e.isFirst&amp;&amp;t._moveSelector(e)})),this.hammer.on(&quot;tap&quot;,(function(e){t._moveSelector(e)})),this.hammer.on(&quot;panstart&quot;,(function(e){t._moveSelector(e)})),this.hammer.on(&quot;panmove&quot;,(function(e){t._moveSelector(e)})),this.hammer.on(&quot;panend&quot;,(function(e){t._moveSelector(e)}))}},{key:&quot;_generateHueCircle&quot;,value:function(){if(!1===this.generated){var t=this.colorPickerCanvas.getContext(&quot;2d&quot;);void 0===this.pixelRation&amp;&amp;(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e,i,n,o,r=this.colorPickerCanvas.clientWidth,s=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,r,s),this.centerCoordinates={x:.5*r,y:.5*s},this.r=.49*r;var a,h=2*Math.PI/360,l=1/this.r;for(n=0;n&lt;360;n++)for(o=0;o&lt;this.r;o++)e=this.centerCoordinates.x+o*Math.sin(h*n),i=this.centerCoordinates.y+o*Math.cos(h*n),a=wm(.002777777777777778*n,o*l,1),t.fillStyle=&quot;rgb(&quot;+a.r+&quot;,&quot;+a.g+&quot;,&quot;+a.b+&quot;)&quot;,t.fillRect(e-.5,i-.5,2,2);t.strokeStyle=&quot;rgba(0,0,0,1)&quot;,t.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),t.stroke(),this.hueCircle=t.getImageData(0,0,r,s)}this.generated=!0}},{key:&quot;_moveSelector&quot;,value:function(t){var e=this.colorPickerDiv.getBoundingClientRect(),i=t.center.x-e.left,n=t.center.y-e.top,o=.5*this.colorPickerDiv.clientHeight,r=.5*this.colorPickerDiv.clientWidth,s=i-r,a=n-o,h=Math.atan2(s,a),l=.98*Math.min(Math.sqrt(s*s+a*a),r),d=Math.cos(h)*l+o,c=Math.sin(h)*l+r;this.colorPickerSelector.style.top=d-.5*this.colorPickerSelector.clientHeight+&quot;px&quot;,this.colorPickerSelector.style.left=c-.5*this.colorPickerSelector.clientWidth+&quot;px&quot;;var u=h/(2*Math.PI);u=u&lt;0?u+1:u;var f=l/this.r,p=ym(this.color.r,this.color.g,this.color.b);p.h=u,p.s=f;var v=wm(p.h,p.s,p.v);v.a=this.color.a,this.color=v,this.initialColorDiv.style.backgroundColor=&quot;rgba(&quot;+this.initialColor.r+&quot;,&quot;+this.initialColor.g+&quot;,&quot;+this.initialColor.b+&quot;,&quot;+this.initialColor.a+&quot;)&quot;,this.newColorDiv.style.backgroundColor=&quot;rgba(&quot;+this.color.r+&quot;,&quot;+this.color.g+&quot;,&quot;+this.color.b+&quot;,&quot;+this.color.a+&quot;)&quot;}}]),t}();function Im(){for(var t=arguments.length,e=new Array(t),i=0;i&lt;t;i++)e[i]=arguments[i];if(e.length&lt;1)throw new TypeError(&quot;Invalid arguments.&quot;);if(1===e.length)return document.createTextNode(e[0]);var n=document.createElement(e[0]);return n.appendChild(Im.apply(void 0,Jc(au(e).call(e,1)))),n}var Bm,zm=function(){function t(e,i,n){var o=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:1,r=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]?arguments[4]:function(){return!1};Yd(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.hideOption=r,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},un(this.options,this.defaultOptions),this.configureOptions=n,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new Dm(o),this.wrapper=void 0}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;if(&quot;string&quot;==typeof t)this.options.filter=t;else if(lu(t))this.options.filter=t.join();else if(&quot;object&quot;===Qc(t)){if(null==t)throw new TypeError(&quot;options cannot be null&quot;);void 0!==t.container&amp;&amp;(this.options.container=t.container),void 0!==Xf(t)&amp;&amp;(this.options.filter=Xf(t)),void 0!==t.showButton&amp;&amp;(this.options.showButton=t.showButton),void 0!==t.enabled&amp;&amp;(e=t.enabled)}else&quot;boolean&quot;==typeof t?(this.options.filter=!0,e=t):&quot;function&quot;==typeof t&amp;&amp;(this.options.filter=t,e=!0);!1===Xf(this.options)&amp;&amp;(e=!1),this.options.enabled=e}this._clean()}},{key:&quot;setModuleOptions&quot;,value:function(t){this.moduleOptions=t,!0===this.options.enabled&amp;&amp;(this._clean(),void 0!==this.options.container&amp;&amp;(this.container=this.options.container),this._create())}},{key:&quot;_create&quot;,value:function(){this._clean(),this.changedOptions=[];var t=Xf(this.options),e=0,i=!1;for(var n in this.configureOptions)Object.prototype.hasOwnProperty.call(this.configureOptions,n)&amp;&amp;(this.allowCreation=!1,i=!1,&quot;function&quot;==typeof t?i=(i=t(n,[]))||this._handleObject(this.configureOptions[n],[n],!0):!0!==t&amp;&amp;-1===Fp(t).call(t,n)||(i=!0),!1!==i&amp;&amp;(this.allowCreation=!0,e&gt;0&amp;&amp;this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),e++);this._makeButton(),this._push()}},{key:&quot;_push&quot;,value:function(){this.wrapper=document.createElement(&quot;div&quot;),this.wrapper.className=&quot;vis-configuration-wrapper&quot;,this.container.appendChild(this.wrapper);for(var t=0;t&lt;this.domElements.length;t++)this.wrapper.appendChild(this.domElements[t]);this._showPopupIfNeeded()}},{key:&quot;_clean&quot;,value:function(){for(var t=0;t&lt;this.domElements.length;t++)this.wrapper.removeChild(this.domElements[t]);void 0!==this.wrapper&amp;&amp;(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:&quot;_getValue&quot;,value:function(t){for(var e=this.moduleOptions,i=0;i&lt;t.length;i++){if(void 0===e[t[i]]){e=void 0;break}e=e[t[i]]}return e}},{key:&quot;_makeItem&quot;,value:function(t){if(!0===this.allowCreation){var e=document.createElement(&quot;div&quot;);e.className=&quot;vis-configuration vis-config-item vis-config-s&quot;+t.length;for(var i=arguments.length,n=new Array(i&gt;1?i-1:0),o=1;o&lt;i;o++)n[o-1]=arguments[o];return Fu(n).call(n,(function(t){e.appendChild(t)})),this.domElements.push(e),this.domElements.length}return 0}},{key:&quot;_makeHeader&quot;,value:function(t){var e=document.createElement(&quot;div&quot;);e.className=&quot;vis-configuration vis-config-header&quot;,e.innerText=t,this._makeItem([],e)}},{key:&quot;_makeLabel&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],n=document.createElement(&quot;div&quot;);if(n.className=&quot;vis-configuration vis-config-label vis-config-s&quot;+e.length,!0===i){for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(Im(&quot;i&quot;,&quot;b&quot;,t))}else n.innerText=t+&quot;:&quot;;return n}},{key:&quot;_makeDropdown&quot;,value:function(t,e,i){var n=document.createElement(&quot;select&quot;);n.className=&quot;vis-configuration vis-config-select&quot;;var o=0;void 0!==e&amp;&amp;-1!==Fp(t).call(t,e)&amp;&amp;(o=Fp(t).call(t,e));for(var r=0;r&lt;t.length;r++){var s=document.createElement(&quot;option&quot;);s.value=t[r],r===o&amp;&amp;(s.selected=&quot;selected&quot;),s.innerText=t[r],n.appendChild(s)}var a=this;n.onchange=function(){a._update(this.value,i)};var h=this._makeLabel(i[i.length-1],i);this._makeItem(i,h,n)}},{key:&quot;_makeRange&quot;,value:function(t,e,i){var n=t[0],o=t[1],r=t[2],s=t[3],a=document.createElement(&quot;input&quot;);a.className=&quot;vis-configuration vis-config-range&quot;;try{a.type=&quot;range&quot;,a.min=o,a.max=r}catch(t){}a.step=s;var h=&quot;&quot;,l=0;if(void 0!==e){var d=1.2;e&lt;0&amp;&amp;e*d&lt;o?(a.min=Math.ceil(e*d),l=a.min,h=&quot;range increased&quot;):e/d&lt;o&amp;&amp;(a.min=Math.ceil(e/d),l=a.min,h=&quot;range increased&quot;),e*d&gt;r&amp;&amp;1!==r&amp;&amp;(a.max=Math.ceil(e*d),l=a.max,h=&quot;range increased&quot;),a.value=e}else a.value=n;var c=document.createElement(&quot;input&quot;);c.className=&quot;vis-configuration vis-config-rangeinput&quot;,c.value=a.value;var u=this;a.onchange=function(){c.value=this.value,u._update(Number(this.value),i)},a.oninput=function(){c.value=this.value};var f=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,f,a,c);&quot;&quot;!==h&amp;&amp;this.popupHistory[p]!==l&amp;&amp;(this.popupHistory[p]=l,this._setupPopup(h,p))}},{key:&quot;_makeButton&quot;,value:function(){var t=this;if(!0===this.options.showButton){var e=document.createElement(&quot;div&quot;);e.className=&quot;vis-configuration vis-config-button&quot;,e.innerText=&quot;generate options&quot;,e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className=&quot;vis-configuration vis-config-button hover&quot;},e.onmouseout=function(){e.className=&quot;vis-configuration vis-config-button&quot;},this.optionsContainer=document.createElement(&quot;div&quot;),this.optionsContainer.className=&quot;vis-configuration vis-config-option-container&quot;,this.domElements.push(this.optionsContainer),this.domElements.push(e)}}},{key:&quot;_setupPopup&quot;,value:function(t,e){var i=this;if(!0===this.initialized&amp;&amp;!0===this.allowCreation&amp;&amp;this.popupCounter&lt;this.popupLimit){var n=document.createElement(&quot;div&quot;);n.id=&quot;vis-configuration-popup&quot;,n.className=&quot;vis-configuration-popup&quot;,n.innerText=t,n.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:n,index:e}}}},{key:&quot;_removePopup&quot;,value:function(){void 0!==this.popupDiv.html&amp;&amp;(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:&quot;_showPopupIfNeeded&quot;,value:function(){var t=this;if(void 0!==this.popupDiv.html){var e=this.domElements[this.popupDiv.index].getBoundingClientRect();this.popupDiv.html.style.left=e.left+&quot;px&quot;,this.popupDiv.html.style.top=e.top-30+&quot;px&quot;,document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=Sv((function(){t.popupDiv.html.style.opacity=0}),1500),this.popupDiv.deleteTimeout=Sv((function(){t._removePopup()}),1800)}}},{key:&quot;_makeCheckbox&quot;,value:function(t,e,i){var n=document.createElement(&quot;input&quot;);n.type=&quot;checkbox&quot;,n.className=&quot;vis-configuration vis-config-checkbox&quot;,n.checked=t,void 0!==e&amp;&amp;(n.checked=e,e!==t&amp;&amp;(&quot;object&quot;===Qc(t)?e!==t.enabled&amp;&amp;this.changedOptions.push({path:i,value:e}):this.changedOptions.push({path:i,value:e})));var o=this;n.onchange=function(){o._update(this.checked,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,n)}},{key:&quot;_makeTextInput&quot;,value:function(t,e,i){var n=document.createElement(&quot;input&quot;);n.type=&quot;text&quot;,n.className=&quot;vis-configuration vis-config-text&quot;,n.value=e,e!==t&amp;&amp;this.changedOptions.push({path:i,value:e});var o=this;n.onchange=function(){o._update(this.value,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,n)}},{key:&quot;_makeColorField&quot;,value:function(t,e,i){var n=this,o=t[1],r=document.createElement(&quot;div&quot;);&quot;none&quot;!==(e=void 0===e?o:e)?(r.className=&quot;vis-configuration vis-config-colorBlock&quot;,r.style.backgroundColor=e):r.className=&quot;vis-configuration vis-config-colorBlock none&quot;,e=void 0===e?o:e,r.onclick=function(){n._showColorPicker(e,r,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,r)}},{key:&quot;_showColorPicker&quot;,value:function(t,e,i){var n=this;e.onclick=function(){},this.colorPicker.insertTo(e),this.colorPicker.show(),this.colorPicker.setColor(t),this.colorPicker.setUpdateCallback((function(t){var o=&quot;rgba(&quot;+t.r+&quot;,&quot;+t.g+&quot;,&quot;+t.b+&quot;,&quot;+t.a+&quot;)&quot;;e.style.backgroundColor=o,n._update(o,i)})),this.colorPicker.setCloseCallback((function(){e.onclick=function(){n._showColorPicker(t,e,i)}}))}},{key:&quot;_handleObject&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:[],i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],n=!1,o=Xf(this.options),r=!1;for(var s in t)if(Object.prototype.hasOwnProperty.call(t,s)){n=!0;var a=t[s],h=om(e,s);if(&quot;function&quot;==typeof o&amp;&amp;!1===(n=o(s,e))&amp;&amp;!lu(a)&amp;&amp;&quot;string&quot;!=typeof a&amp;&amp;&quot;boolean&quot;!=typeof a&amp;&amp;a instanceof Object&amp;&amp;(this.allowCreation=!1,n=this._handleObject(a,h,!0),this.allowCreation=!1===i),!1!==n){r=!0;var l=this._getValue(h);if(lu(a))this._handleArray(a,l,h);else if(&quot;string&quot;==typeof a)this._makeTextInput(a,l,h);else if(&quot;boolean&quot;==typeof a)this._makeCheckbox(a,l,h);else if(a instanceof Object){if(!this.hideOption(e,s,this.moduleOptions))if(void 0!==a.enabled){var d=om(h,&quot;enabled&quot;),c=this._getValue(d);if(!0===c){var u=this._makeLabel(s,h,!0);this._makeItem(h,u),r=this._handleObject(a,h)||r}else this._makeCheckbox(a,c,h)}else{var f=this._makeLabel(s,h,!0);this._makeItem(h,f),r=this._handleObject(a,h)||r}}else console.error(&quot;dont know how to handle&quot;,a,s,h)}}return r}},{key:&quot;_handleArray&quot;,value:function(t,e,i){&quot;string&quot;==typeof t[0]&amp;&amp;&quot;color&quot;===t[0]?(this._makeColorField(t,e,i),t[1]!==e&amp;&amp;this.changedOptions.push({path:i,value:e})):&quot;string&quot;==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&amp;&amp;this.changedOptions.push({path:i,value:e})):&quot;number&quot;==typeof t[0]&amp;&amp;(this._makeRange(t,e,i),t[0]!==e&amp;&amp;this.changedOptions.push({path:i,value:Number(e)}))}},{key:&quot;_update&quot;,value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&amp;&amp;this.parent.body.emitter&amp;&amp;this.parent.body.emitter.emit&amp;&amp;this.parent.body.emitter.emit(&quot;configChange&quot;,i),this.initialized=!0,this.parent.setOptions(i)}},{key:&quot;_constructOptions&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:{},n=i;t=&quot;false&quot;!==(t=&quot;true&quot;===t||t)&amp;&amp;t;for(var o=0;o&lt;e.length;o++)&quot;global&quot;!==e[o]&amp;&amp;(void 0===n[e[o]]&amp;&amp;(n[e[o]]={}),o!==e.length-1?n=n[e[o]]:n[e[o]]=t);return i}},{key:&quot;_printOptions&quot;,value:function(){for(var t=this.getOptions();this.optionsContainer.firstChild;)this.optionsContainer.removeChild(this.optionsContainer.firstChild);this.optionsContainer.appendChild(Im(&quot;pre&quot;,&quot;const options = &quot;+gv(t,null,2)))}},{key:&quot;getOptions&quot;,value:function(){for(var t={},e=0;e&lt;this.changedOptions.length;e++)this._constructOptions(this.changedOptions[e].value,this.changedOptions[e].path,t);return t}}]),t}(),Nm=function(){function t(e,i){Yd(this,t),this.container=e,this.overflowMethod=i||&quot;cap&quot;,this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement(&quot;div&quot;),this.frame.className=&quot;vis-tooltip&quot;,this.container.appendChild(this.frame)}return Kd(t,[{key:&quot;setPosition&quot;,value:function(t,e){this.x=Ep(t),this.y=Ep(e)}},{key:&quot;setText&quot;,value:function(t){if(t instanceof Element){for(;this.frame.firstChild;)this.frame.removeChild(this.frame.firstChild);this.frame.appendChild(t)}else this.frame.innerText=t}},{key:&quot;show&quot;,value:function(t){if(void 0===t&amp;&amp;(t=!0),!0===t){var e=this.frame.clientHeight,i=this.frame.clientWidth,n=this.frame.parentNode.clientHeight,o=this.frame.parentNode.clientWidth,r=0,s=0;if(&quot;flip&quot;==this.overflowMethod){var a=!1,h=!0;this.y-e&lt;this.padding&amp;&amp;(h=!1),this.x+i&gt;o-this.padding&amp;&amp;(a=!0),r=a?this.x-i:this.x,s=h?this.y-e:this.y}else(s=this.y-e)+e+this.padding&gt;n&amp;&amp;(s=n-e-this.padding),s&lt;this.padding&amp;&amp;(s=this.padding),(r=this.x)+i+this.padding&gt;o&amp;&amp;(r=o-i-this.padding),r&lt;this.padding&amp;&amp;(r=this.padding);this.frame.style.left=r+&quot;px&quot;,this.frame.style.top=s+&quot;px&quot;,this.frame.style.visibility=&quot;visible&quot;,this.hidden=!1}else this.hide()}},{key:&quot;hide&quot;,value:function(){this.hidden=!0,this.frame.style.left=&quot;0&quot;,this.frame.style.top=&quot;0&quot;,this.frame.style.visibility=&quot;hidden&quot;}},{key:&quot;destroy&quot;,value:function(){this.frame.parentNode.removeChild(this.frame)}}]),t}(),Fm=!1,Am=&quot;background: #FFeeee; color: #dd0000&quot;,jm=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;validate&quot;,value:function(e,i,n){Fm=!1,Bm=i;var o=i;return void 0!==n&amp;&amp;(o=i[n]),t.parse(e,o,[]),Fm}},{key:&quot;parse&quot;,value:function(e,i,n){for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&amp;&amp;t.check(o,e,i,n)}},{key:&quot;check&quot;,value:function(e,i,n,o){if(void 0!==n[e]||void 0!==n.__any__){var r=e,s=!0;void 0===n[e]&amp;&amp;void 0!==n.__any__&amp;&amp;(r=&quot;__any__&quot;,s=&quot;object&quot;===t.getType(i[e]));var a=n[r];s&amp;&amp;void 0!==a.__type__&amp;&amp;(a=a.__type__),t.checkFields(e,i,n,r,a,o)}else t.getSuggestion(e,n,o)}},{key:&quot;checkFields&quot;,value:function(e,i,n,o,r,s){var a=function(i){console.error(&quot;%c&quot;+i+t.printLocation(s,e),Am)},h=t.getType(i[e]),l=r[h];void 0!==l?&quot;array&quot;===t.getType(l)&amp;&amp;-1===Fp(l).call(l,i[e])?(a('Invalid option detected in &quot;'+e+'&quot;. Allowed values are:'+t.print(l)+' not &quot;'+i[e]+'&quot;. '),Fm=!0):&quot;object&quot;===h&amp;&amp;&quot;__any__&quot;!==o&amp;&amp;(s=om(s,e),t.parse(i[e],n[o],s)):void 0===r.any&amp;&amp;(a('Invalid type received for &quot;'+e+'&quot;. Expected: '+t.print(bu(r))+&quot;. Received [&quot;+h+'] &quot;'+i[e]+'&quot;'),Fm=!0)}},{key:&quot;getType&quot;,value:function(t){var e=Qc(t);return&quot;object&quot;===e?null===t?&quot;null&quot;:t instanceof Boolean?&quot;boolean&quot;:t instanceof Number?&quot;number&quot;:t instanceof String?&quot;string&quot;:lu(t)?&quot;array&quot;:t instanceof Date?&quot;date&quot;:void 0!==t.nodeType?&quot;dom&quot;:!0===t._isAMomentObject?&quot;moment&quot;:&quot;object&quot;:&quot;number&quot;===e?&quot;number&quot;:&quot;boolean&quot;===e?&quot;boolean&quot;:&quot;string&quot;===e?&quot;string&quot;:void 0===e?&quot;undefined&quot;:e}},{key:&quot;getSuggestion&quot;,value:function(e,i,n){var o,r=t.findInOptions(e,i,n,!1),s=t.findInOptions(e,Bm,[],!0);o=void 0!==r.indexMatch?&quot; in &quot;+t.printLocation(r.path,e,&quot;&quot;)+'Perhaps it was incomplete? Did you mean: &quot;'+r.indexMatch+'&quot;?\\n\\n':s.distance&lt;=4&amp;&amp;r.distance&gt;s.distance?&quot; in &quot;+t.printLocation(r.path,e,&quot;&quot;)+&quot;Perhaps it was misplaced? Matching option found at: &quot;+t.printLocation(s.path,s.closestMatch,&quot;&quot;):r.distance&lt;=8?'. Did you mean &quot;'+r.closestMatch+'&quot;?'+t.printLocation(r.path,e):&quot;. Did you mean one of these: &quot;+t.print(bu(i))+t.printLocation(n,e),console.error('%cUnknown option detected: &quot;'+e+'&quot;'+o,Am),Fm=!0}},{key:&quot;findInOptions&quot;,value:function(e,i,n){var o=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]&amp;&amp;arguments[3],r=1e9,s=&quot;&quot;,a=[],h=e.toLowerCase(),l=void 0;for(var d in i){var c=void 0;if(void 0!==i[d].__type__&amp;&amp;!0===o){var u=t.findInOptions(e,i[d],om(n,d));r&gt;u.distance&amp;&amp;(s=u.closestMatch,a=u.path,r=u.distance,l=u.indexMatch)}else{var f;-1!==Fp(f=d.toLowerCase()).call(f,h)&amp;&amp;(l=d),r&gt;(c=t.levenshteinDistance(e,d))&amp;&amp;(s=d,a=rm(n),r=c)}}return{closestMatch:s,path:a,distance:r,indexMatch:l}}},{key:&quot;printLocation&quot;,value:function(t,e){for(var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:&quot;Problem value found at: \\n&quot;,n=&quot;\\n\\n&quot;+i+&quot;options = {\\n&quot;,o=0;o&lt;t.length;o++){for(var r=0;r&lt;o+1;r++)n+=&quot;  &quot;;n+=t[o]+&quot;: {\\n&quot;}for(var s=0;s&lt;t.length+1;s++)n+=&quot;  &quot;;n+=e+&quot;\\n&quot;;for(var a=0;a&lt;t.length+1;a++){for(var h=0;h&lt;t.length-a;h++)n+=&quot;  &quot;;n+=&quot;}\\n&quot;}return n+&quot;\\n\\n&quot;}},{key:&quot;print&quot;,value:function(t){return gv(t).replace(/(&quot;)|(\\[)|(\\])|(,&quot;__type__&quot;)/g,&quot;&quot;).replace(/(,)/g,&quot;, &quot;)}},{key:&quot;levenshteinDistance&quot;,value:function(t,e){if(0===t.length)return e.length;if(0===e.length)return t.length;var i,n,o=[];for(i=0;i&lt;=e.length;i++)o[i]=[i];for(n=0;n&lt;=t.length;n++)o[0][n]=n;for(i=1;i&lt;=e.length;i++)for(n=1;n&lt;=t.length;n++)e.charAt(i-1)==t.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[e.length][t.length]}}]),t}(),Rm=Wy,Lm=Dm,Hm=zm,Wm=Hy,qm=Nm,Vm=Am,Um=jm,Ym=Object.freeze({__proto__:null,Activator:Rm,Alea:jy,ColorPicker:Lm,Configurator:Hm,DELETE:Iy,HSVToHex:km,HSVToRGB:wm,Hammer:Wm,Popup:qm,RGBToHSV:ym,RGBToHex:vm,VALIDATOR_PRINT_STYLE:Vm,Validator:Um,addClassName:function(t,e){var i=t.className.split(&quot; &quot;),n=e.split(&quot; &quot;);i=su(i).call(i,Xf(n).call(n,(function(t){return!Nf(i).call(i,t)}))),t.className=i.join(&quot; &quot;)},addCssText:function(t,e){var i=mm(t.style.cssText),n=mm(e),o=My(My({},i),n);t.style.cssText=bm(o)},addEventListener:dm,binarySearchCustom:function(t,e,i,n){for(var o=0,r=0,s=t.length-1;r&lt;=s&amp;&amp;o&lt;1e4;){var a=Math.floor((r+s)/2),h=t[a],l=e(void 0===n?h[i]:h[i][n]);if(0==l)return a;-1==l?r=a+1:s=a-1,o++}return-1},binarySearchValue:function(t,e,i,n,o){var r,s,a,h,l=0,d=0,c=t.length-1;for(o=null!=o?o:function(t,e){return t==e?0:t&lt;e?-1:1};d&lt;=c&amp;&amp;l&lt;1e4;){if(h=Math.floor(.5*(c+d)),r=t[Math.max(0,h-1)][i],s=t[h][i],a=t[Math.min(t.length-1,h+1)][i],0==o(s,e))return h;if(o(r,e)&lt;0&amp;&amp;o(s,e)&gt;0)return&quot;before&quot;==n?Math.max(0,h-1):h;if(o(s,e)&lt;0&amp;&amp;o(a,e)&gt;0)return&quot;before&quot;==n?h:Math.min(t.length-1,h+1);o(s,e)&lt;0?d=h+1:c=h-1,l++}return-1},bridgeObject:Cm,copyAndExtendArray:om,copyArray:rm,deepExtend:nm,deepObjectAssign:zy,easingFunctions:Tm,equalArray:function(t,e){if(t.length!==e.length)return!1;for(var i=0,n=t.length;i&lt;n;i++)if(t[i]!=e[i])return!1;return!0},extend:tm,fillIfDefined:Jy,forEach:hm,getAbsoluteLeft:sm,getAbsoluteRight:function(t){return t.getBoundingClientRect().right},getAbsoluteTop:am,getScrollBarWidth:function(){var t=document.createElement(&quot;p&quot;);t.style.width=&quot;100%&quot;,t.style.height=&quot;200px&quot;;var e=document.createElement(&quot;div&quot;);e.style.position=&quot;absolute&quot;,e.style.top=&quot;0px&quot;,e.style.left=&quot;0px&quot;,e.style.visibility=&quot;hidden&quot;,e.style.width=&quot;200px&quot;,e.style.height=&quot;150px&quot;,e.style.overflow=&quot;hidden&quot;,e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow=&quot;scroll&quot;;var n=t.offsetWidth;return i==n&amp;&amp;(n=e.clientWidth),document.body.removeChild(e),i-n},getTarget:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:window.event,e=null;return t&amp;&amp;(t.target?e=t.target:t.srcElement&amp;&amp;(e=t.srcElement)),e instanceof Element&amp;&amp;(null==e.nodeType||3!=e.nodeType||(e=e.parentNode)instanceof Element)?e:null},getType:function(t){var e=Qc(t);return&quot;object&quot;===e?null===t?&quot;null&quot;:t instanceof Boolean?&quot;Boolean&quot;:t instanceof Number?&quot;Number&quot;:t instanceof String?&quot;String&quot;:lu(t)?&quot;Array&quot;:t instanceof Date?&quot;Date&quot;:&quot;Object&quot;:&quot;number&quot;===e?&quot;Number&quot;:&quot;boolean&quot;===e?&quot;Boolean&quot;:&quot;string&quot;===e?&quot;String&quot;:void 0===e?&quot;undefined&quot;:e},hasParent:function(t,e){for(var i=t;i;){if(i===e)return!0;if(!i.parentNode)return!1;i=i.parentNode}return!1},hexToHSV:_m,hexToRGB:fm,insertSort:function(t,e){for(var i=0;i&lt;t.length;i++){var n=t[i],o=void 0;for(o=i;o&gt;0&amp;&amp;e(n,t[o-1])&lt;0;o--)t[o]=t[o-1];t[o]=n}return t},isDate:function(t){if(t instanceof Date)return!0;if($y(t)){if(qy.exec(t))return!0;if(!isNaN(Date.parse(t)))return!0}return!1},isNumber:Gy,isObject:Zy,isString:$y,isValidHex:xm,isValidRGB:Em,isValidRGBA:Om,mergeOptions:Sm,option:um,overrideOpacity:pm,parseColor:gm,preventDefault:function(t){t||(t=window.event),t&amp;&amp;(t.preventDefault?t.preventDefault():t.returnValue=!1)},pureDeepObjectAssign:By,recursiveDOMDelete:Ky,removeClassName:function(t,e){var i=t.className.split(&quot; &quot;),n=e.split(&quot; &quot;);i=Xf(i).call(i,(function(t){return!Nf(n).call(n,t)})),t.className=i.join(&quot; &quot;)},removeCssText:function(t,e){var i=mm(t.style.cssText),n=mm(e);for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&amp;&amp;delete i[o];t.style.cssText=bm(i)},removeEventListener:cm,selectiveBridgeObject:function(t,e){if(null!==e&amp;&amp;&quot;object&quot;===Qc(e)){for(var i=Kp(e),n=0;n&lt;t.length;n++)Object.prototype.hasOwnProperty.call(e,t[n])&amp;&amp;&quot;object&quot;==Qc(e[t[n]])&amp;&amp;(i[t[n]]=Cm(e[t[n]]));return i}return null},selectiveDeepExtend:em,selectiveExtend:function(t,e){if(!lu(t))throw new Error(&quot;Array with property names expected as first argument&quot;);for(var i=arguments.length,n=new Array(i&gt;2?i-2:0),o=2;o&lt;i;o++)n[o-2]=arguments[o];for(var r=0,s=n;r&lt;s.length;r++)for(var a=s[r],h=0;h&lt;t.length;h++){var l=t[h];a&amp;&amp;Object.prototype.hasOwnProperty.call(a,l)&amp;&amp;(e[l]=a[l])}return e},selectiveNotDeepExtend:im,throttle:function(t){var e=!1;return function(){e||(e=!0,requestAnimationFrame((function(){e=!1,t()})))}},toArray:lm,topMost:Mm,updateProperty:function(t,e,i){return t[e]!==i&amp;&amp;(t[e]=i,!0)}});function Xm(t){return eb=t,function(){var t={};ib=0,void(nb=eb.charAt(0)),pb(),&quot;strict&quot;===ob&amp;&amp;(t.strict=!0,pb());&quot;graph&quot;!==ob&amp;&amp;&quot;digraph&quot;!==ob||(t.type=ob,pb());rb===Qm&amp;&amp;(t.id=ob,pb());if(&quot;{&quot;!=ob)throw wb(&quot;Angle bracket { expected&quot;);if(pb(),vb(t),&quot;}&quot;!=ob)throw wb(&quot;Angle bracket } expected&quot;);if(pb(),&quot;&quot;!==ob)throw wb(&quot;End of file expected&quot;);return pb(),delete t.node,delete t.edge,delete t.graph,t}()}var Gm={fontsize:&quot;font.size&quot;,fontcolor:&quot;font.color&quot;,labelfontcolor:&quot;font.color&quot;,fontname:&quot;font.face&quot;,color:[&quot;color.border&quot;,&quot;color.background&quot;],fillcolor:&quot;color.background&quot;,tooltip:&quot;title&quot;,labeltooltip:&quot;title&quot;},Km=Kp(Gm);Km.color=&quot;color.color&quot;,Km.style=&quot;dashes&quot;;var $m=0,Zm=1,Qm=2,Jm=3,tb={&quot;{&quot;:!0,&quot;}&quot;:!0,&quot;[&quot;:!0,&quot;]&quot;:!0,&quot;;&quot;:!0,&quot;=&quot;:!0,&quot;,&quot;:!0,&quot;-&gt;&quot;:!0,&quot;--&quot;:!0},eb=&quot;&quot;,ib=0,nb=&quot;&quot;,ob=&quot;&quot;,rb=$m;function sb(){ib++,nb=eb.charAt(ib)}function ab(){return eb.charAt(ib+1)}function hb(t){var e=t.charCodeAt(0);return e&lt;47?35===e||46===e:e&lt;59?e&gt;47:e&lt;91?e&gt;64:e&lt;96?95===e:e&lt;123&amp;&amp;e&gt;96}function lb(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&amp;&amp;(t[i]=e[i]);return t}function db(t,e,i){for(var n=e.split(&quot;.&quot;),o=t;n.length;){var r=n.shift();n.length?(o[r]||(o[r]={}),o=o[r]):o[r]=i}}function cb(t,e){for(var i,n,o=null,r=[t],s=t;s.parent;)r.push(s.parent),s=s.parent;if(s.nodes)for(i=0,n=s.nodes.length;i&lt;n;i++)if(e.id===s.nodes[i].id){o=s.nodes[i];break}for(o||(o={id:e.id},t.node&amp;&amp;(o.attr=lb(o.attr,t.node))),i=r.length-1;i&gt;=0;i--){var a,h=r[i];h.nodes||(h.nodes=[]),-1===Fp(a=h.nodes).call(a,o)&amp;&amp;h.nodes.push(o)}e.attr&amp;&amp;(o.attr=lb(o.attr,e.attr))}function ub(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=lb({},t.edge);e.attr=lb(i,e.attr)}}function fb(t,e,i,n,o){var r={from:e,to:i,type:n};return t.edge&amp;&amp;(r.attr=lb({},t.edge)),r.attr=lb(r.attr||{},o),null!=o&amp;&amp;o.hasOwnProperty(&quot;arrows&quot;)&amp;&amp;null!=o.arrows&amp;&amp;(r.arrows={to:{enabled:!0,type:o.arrows.type}},o.arrows=null),r}function pb(){for(rb=$m,ob=&quot;&quot;;&quot; &quot;===nb||&quot;\\t&quot;===nb||&quot;\\n&quot;===nb||&quot;\\r&quot;===nb;)sb();do{var t=!1;if(&quot;#&quot;===nb){for(var e=ib-1;&quot; &quot;===eb.charAt(e)||&quot;\\t&quot;===eb.charAt(e);)e--;if(&quot;\\n&quot;===eb.charAt(e)||&quot;&quot;===eb.charAt(e)){for(;&quot;&quot;!=nb&amp;&amp;&quot;\\n&quot;!=nb;)sb();t=!0}}if(&quot;/&quot;===nb&amp;&amp;&quot;/&quot;===ab()){for(;&quot;&quot;!=nb&amp;&amp;&quot;\\n&quot;!=nb;)sb();t=!0}if(&quot;/&quot;===nb&amp;&amp;&quot;*&quot;===ab()){for(;&quot;&quot;!=nb;){if(&quot;*&quot;===nb&amp;&amp;&quot;/&quot;===ab()){sb(),sb();break}sb()}t=!0}for(;&quot; &quot;===nb||&quot;\\t&quot;===nb||&quot;\\n&quot;===nb||&quot;\\r&quot;===nb;)sb()}while(t);if(&quot;&quot;!==nb){var i=nb+ab();if(tb[i])return rb=Zm,ob=i,sb(),void sb();if(tb[nb])return rb=Zm,ob=nb,void sb();if(hb(nb)||&quot;-&quot;===nb){for(ob+=nb,sb();hb(nb);)ob+=nb,sb();return&quot;false&quot;===ob?ob=!1:&quot;true&quot;===ob?ob=!0:isNaN(Number(ob))||(ob=Number(ob)),void(rb=Qm)}if('&quot;'===nb){for(sb();&quot;&quot;!=nb&amp;&amp;('&quot;'!=nb||'&quot;'===nb&amp;&amp;'&quot;'===ab());)'&quot;'===nb?(ob+=nb,sb()):&quot;\\\\&quot;===nb&amp;&amp;&quot;n&quot;===ab()?(ob+=&quot;\\n&quot;,sb()):ob+=nb,sb();if('&quot;'!=nb)throw wb('End of string &quot; expected');return sb(),void(rb=Qm)}for(rb=Jm;&quot;&quot;!=nb;)ob+=nb,sb();throw new SyntaxError('Syntax error in part &quot;'+kb(ob,30)+'&quot;')}rb=Zm}function vb(t){for(;&quot;&quot;!==ob&amp;&amp;&quot;}&quot;!=ob;)gb(t),&quot;;&quot;===ob&amp;&amp;pb()}function gb(t){var e=yb(t);if(e)mb(t,e);else{var i=function(t){if(&quot;node&quot;===ob)return pb(),t.node=bb(),&quot;node&quot;;if(&quot;edge&quot;===ob)return pb(),t.edge=bb(),&quot;edge&quot;;if(&quot;graph&quot;===ob)return pb(),t.graph=bb(),&quot;graph&quot;;return null}(t);if(!i){if(rb!=Qm)throw wb(&quot;Identifier expected&quot;);var n=ob;if(pb(),&quot;=&quot;===ob){if(pb(),rb!=Qm)throw wb(&quot;Identifier expected&quot;);t[n]=ob,pb()}else!function(t,e){var i={id:e},n=bb();n&amp;&amp;(i.attr=n);cb(t,i),mb(t,e)}(t,n)}}}function yb(t){var e=null;if(&quot;subgraph&quot;===ob&amp;&amp;((e={}).type=&quot;subgraph&quot;,pb(),rb===Qm&amp;&amp;(e.id=ob,pb())),&quot;{&quot;===ob){if(pb(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,vb(e),&quot;}&quot;!=ob)throw wb(&quot;Angle bracket } expected&quot;);pb(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function mb(t,e){for(;&quot;-&gt;&quot;===ob||&quot;--&quot;===ob;){var i,n=ob;pb();var o=yb(t);if(o)i=o;else{if(rb!=Qm)throw wb(&quot;Identifier or subgraph expected&quot;);cb(t,{id:i=ob}),pb()}ub(t,fb(t,e,i,n,bb())),e=i}}function bb(){for(var t,e,i=null,n={dashed:!0,solid:!1,dotted:[1,5]},o={dot:&quot;circle&quot;,box:&quot;box&quot;,crow:&quot;crow&quot;,curve:&quot;curve&quot;,icurve:&quot;inv_curve&quot;,normal:&quot;triangle&quot;,inv:&quot;inv_triangle&quot;,diamond:&quot;diamond&quot;,tee:&quot;bar&quot;,vee:&quot;vee&quot;},r=new Array,s=new Array;&quot;[&quot;===ob;){for(pb(),i={};&quot;&quot;!==ob&amp;&amp;&quot;]&quot;!=ob;){if(rb!=Qm)throw wb(&quot;Attribute name expected&quot;);var a=ob;if(pb(),&quot;=&quot;!=ob)throw wb(&quot;Equal sign = expected&quot;);if(pb(),rb!=Qm)throw wb(&quot;Attribute value expected&quot;);var h=ob;&quot;style&quot;===a&amp;&amp;(h=n[h]),&quot;arrowhead&quot;===a&amp;&amp;(a=&quot;arrows&quot;,h={to:{enabled:!0,type:o[h]}}),&quot;arrowtail&quot;===a&amp;&amp;(a=&quot;arrows&quot;,h={from:{enabled:!0,type:o[h]}}),r.push({attr:i,name:a,value:h}),s.push(a),pb(),&quot;,&quot;==ob&amp;&amp;pb()}if(&quot;]&quot;!=ob)throw wb(&quot;Bracket ] expected&quot;);pb()}if(Nf(s).call(s,&quot;dir&quot;)){var l={arrows:{}};for(t=0;t&lt;r.length;t++)if(&quot;arrows&quot;===r[t].name)if(null!=r[t].value.to)l.arrows.to=t;else{if(null==r[t].value.from)throw wb(&quot;Invalid value of arrows&quot;);l.arrows.from=t}else&quot;dir&quot;===r[t].name&amp;&amp;(l.dir=t);var d,c,u=r[l.dir].value;if(!Nf(s).call(s,&quot;arrows&quot;))if(&quot;both&quot;===u)r.push({attr:r[l.dir].attr,name:&quot;arrows&quot;,value:{to:{enabled:!0}}}),l.arrows.to=r.length-1,r.push({attr:r[l.dir].attr,name:&quot;arrows&quot;,value:{from:{enabled:!0}}}),l.arrows.from=r.length-1;else if(&quot;forward&quot;===u)r.push({attr:r[l.dir].attr,name:&quot;arrows&quot;,value:{to:{enabled:!0}}}),l.arrows.to=r.length-1;else if(&quot;back&quot;===u)r.push({attr:r[l.dir].attr,name:&quot;arrows&quot;,value:{from:{enabled:!0}}}),l.arrows.from=r.length-1;else{if(&quot;none&quot;!==u)throw wb('Invalid dir type &quot;'+u+'&quot;');r.push({attr:r[l.dir].attr,name:&quot;arrows&quot;,value:&quot;&quot;}),l.arrows.to=r.length-1}if(&quot;both&quot;===u)l.arrows.to&amp;&amp;l.arrows.from?(c=r[l.arrows.to].value.to.type,d=r[l.arrows.from].value.from.type,r[l.arrows.to]={attr:r[l.arrows.to].attr,name:r[l.arrows.to].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}},ff(r).call(r,l.arrows.from,1)):l.arrows.to?(c=r[l.arrows.to].value.to.type,d=&quot;arrow&quot;,r[l.arrows.to]={attr:r[l.arrows.to].attr,name:r[l.arrows.to].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}):l.arrows.from&amp;&amp;(c=&quot;arrow&quot;,d=r[l.arrows.from].value.from.type,r[l.arrows.from]={attr:r[l.arrows.from].attr,name:r[l.arrows.from].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}});else if(&quot;back&quot;===u)l.arrows.to&amp;&amp;l.arrows.from?(c=&quot;&quot;,d=r[l.arrows.from].value.from.type,r[l.arrows.from]={attr:r[l.arrows.from].attr,name:r[l.arrows.from].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}):l.arrows.to?(c=&quot;&quot;,d=&quot;arrow&quot;,l.arrows.from=l.arrows.to,r[l.arrows.from]={attr:r[l.arrows.from].attr,name:r[l.arrows.from].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}):l.arrows.from&amp;&amp;(c=&quot;&quot;,d=r[l.arrows.from].value.from.type,r[l.arrows.to]={attr:r[l.arrows.from].attr,name:r[l.arrows.from].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}),r[l.arrows.from]={attr:r[l.arrows.from].attr,name:r[l.arrows.from].name,value:{from:{enabled:!0,type:r[l.arrows.from].value.from.type}}};else if(&quot;none&quot;===u){var f;r[f=l.arrows.to?l.arrows.to:l.arrows.from]={attr:r[f].attr,name:r[f].name,value:&quot;&quot;}}else{if(&quot;forward&quot;!==u)throw wb('Invalid dir type &quot;'+u+'&quot;');l.arrows.to&amp;&amp;l.arrows.from||l.arrows.to?(c=r[l.arrows.to].value.to.type,d=&quot;&quot;,r[l.arrows.to]={attr:r[l.arrows.to].attr,name:r[l.arrows.to].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}):l.arrows.from&amp;&amp;(c=&quot;arrow&quot;,d=&quot;&quot;,l.arrows.to=l.arrows.from,r[l.arrows.to]={attr:r[l.arrows.to].attr,name:r[l.arrows.to].name,value:{to:{enabled:!0,type:c},from:{enabled:!0,type:d}}}),r[l.arrows.to]={attr:r[l.arrows.to].attr,name:r[l.arrows.to].name,value:{to:{enabled:!0,type:r[l.arrows.to].value.to.type}}}}ff(r).call(r,l.dir,1)}if(Nf(s).call(s,&quot;penwidth&quot;)){var p=[];for(e=r.length,t=0;t&lt;e;t++)&quot;width&quot;!==r[t].name&amp;&amp;(&quot;penwidth&quot;===r[t].name&amp;&amp;(r[t].name=&quot;width&quot;),p.push(r[t]));r=p}for(e=r.length,t=0;t&lt;e;t++)db(r[t].attr,r[t].name,r[t].value);return i}function wb(t){return new SyntaxError(t+', got &quot;'+kb(ob,30)+'&quot; (char '+ib+&quot;)&quot;)}function kb(t,e){return t.length&lt;=e?t:t.substr(0,27)+&quot;...&quot;}function _b(t,e,i){for(var n=e.split(&quot;.&quot;),o=n.pop(),r=t,s=0;s&lt;n.length;s++){var a=n[s];a in r||(r[a]={}),r=r[a]}return r[o]=i,t}function xb(t,e){var i={};for(var n in t)if(t.hasOwnProperty(n)){var o=e[n];lu(o)?Fu(o).call(o,(function(e){_b(i,e,t[n])})):_b(i,&quot;string&quot;==typeof o?o:n,t[n])}return i}function Eb(t){var e,i=Xm(t),n={nodes:[],edges:[],options:{}};i.nodes&amp;&amp;Fu(e=i.nodes).call(e,(function(t){var e={id:t.id,label:String(t.label||t.id)};lb(e,xb(t.attr,Gm)),e.image&amp;&amp;(e.shape=&quot;image&quot;),n.nodes.push(e)}));if(i.edges){var o,r=function(t){var e={from:t.from,to:t.to};return lb(e,xb(t.attr,Km)),null==e.arrows&amp;&amp;&quot;-&gt;&quot;===t.type&amp;&amp;(e.arrows=&quot;to&quot;),e};Fu(o=i.edges).call(o,(function(t){var e,i,o,s,a,h,l;(e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&amp;&amp;t.from.edges)&amp;&amp;Fu(o=t.from.edges).call(o,(function(t){var e=r(t);n.edges.push(e)}));(a=i,h=function(e,i){var o=fb(n,e.id,i.id,t.type,t.attr),s=r(o);n.edges.push(s)},lu(s=e)?Fu(s).call(s,(function(t){lu(a)?Fu(a).call(a,(function(e){h(t,e)})):h(t,a)})):lu(a)?Fu(a).call(a,(function(t){h(s,t)})):h(s,a),t.to instanceof Object&amp;&amp;t.to.edges)&amp;&amp;Fu(l=t.to.edges).call(l,(function(t){var e=r(t);n.edges.push(e)}))}))}return i.attr&amp;&amp;(n.options=i.attr),n}var Ob=Object.freeze({__proto__:null,parseDOT:Xm,DOTToGraph:Eb});function Cb(t,e){var i,n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};null!=e&amp;&amp;(null!=e.fixed&amp;&amp;(n.nodes.fixed=e.fixed),null!=e.parseColor&amp;&amp;(n.nodes.parseColor=e.parseColor),null!=e.inheritColor&amp;&amp;(n.edges.inheritColor=e.inheritColor));var o=t.edges,r=gu(o).call(o,(function(t){var e={from:t.source,id:t.id,to:t.target};return null!=t.attributes&amp;&amp;(e.attributes=t.attributes),null!=t.label&amp;&amp;(e.label=t.label),null!=t.attributes&amp;&amp;null!=t.attributes.title&amp;&amp;(e.title=t.attributes.title),&quot;Directed&quot;===t.type&amp;&amp;(e.arrows=&quot;to&quot;),t.color&amp;&amp;!1===n.edges.inheritColor&amp;&amp;(e.color=t.color),e}));return{nodes:gu(i=t.nodes).call(i,(function(t){var e={id:t.id,fixed:n.nodes.fixed&amp;&amp;null!=t.x&amp;&amp;null!=t.y};return null!=t.attributes&amp;&amp;(e.attributes=t.attributes),null!=t.label&amp;&amp;(e.label=t.label),null!=t.size&amp;&amp;(e.size=t.size),null!=t.attributes&amp;&amp;null!=t.attributes.title&amp;&amp;(e.title=t.attributes.title),null!=t.title&amp;&amp;(e.title=t.title),null!=t.x&amp;&amp;(e.x=t.x),null!=t.y&amp;&amp;(e.y=t.y),null!=t.color&amp;&amp;(!0===n.nodes.parseColor?e.color=t.color:e.color={background:t.color,border:t.color,highlight:{background:t.color,border:t.color},hover:{background:t.color,border:t.color}}),e})),edges:r}}var Sb=Object.freeze({__proto__:null,parseGephi:Cb}),Tb=Object.freeze({__proto__:null,en:{addDescription:&quot;Click in an empty space to place a new node.&quot;,addEdge:&quot;Add Edge&quot;,addNode:&quot;Add Node&quot;,back:&quot;Back&quot;,close:&quot;Close&quot;,createEdgeError:&quot;Cannot link edges to a cluster.&quot;,del:&quot;Delete selected&quot;,deleteClusterError:&quot;Clusters cannot be deleted.&quot;,edgeDescription:&quot;Click on a node and drag the edge to another node to connect them.&quot;,edit:&quot;Edit&quot;,editClusterError:&quot;Clusters cannot be edited.&quot;,editEdge:&quot;Edit Edge&quot;,editEdgeDescription:&quot;Click on the control points and drag them to a node to connect to it.&quot;,editNode:&quot;Edit Node&quot;},de:{addDescription:&quot;Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.&quot;,addEdge:&quot;Kante hinzufügen&quot;,addNode:&quot;Knoten hinzufügen&quot;,back:&quot;Zurück&quot;,close:&quot;Schließen&quot;,createEdgeError:&quot;Es ist nicht möglich, Kanten mit Clustern zu verbinden.&quot;,del:&quot;Lösche Auswahl&quot;,deleteClusterError:&quot;Cluster können nicht gelöscht werden.&quot;,edgeDescription:&quot;Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.&quot;,edit:&quot;Editieren&quot;,editClusterError:&quot;Cluster können nicht editiert werden.&quot;,editEdge:&quot;Kante editieren&quot;,editEdgeDescription:&quot;Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.&quot;,editNode:&quot;Knoten editieren&quot;},es:{addDescription:&quot;Haga clic en un lugar vacío para colocar un nuevo nodo.&quot;,addEdge:&quot;Añadir arista&quot;,addNode:&quot;Añadir nodo&quot;,back:&quot;Atrás&quot;,close:&quot;Cerrar&quot;,createEdgeError:&quot;No se puede conectar una arista a un grupo.&quot;,del:&quot;Eliminar selección&quot;,deleteClusterError:&quot;No es posible eliminar grupos.&quot;,edgeDescription:&quot;Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.&quot;,edit:&quot;Editar&quot;,editClusterError:&quot;No es posible editar grupos.&quot;,editEdge:&quot;Editar arista&quot;,editEdgeDescription:&quot;Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.&quot;,editNode:&quot;Editar nodo&quot;},it:{addDescription:&quot;Clicca per aggiungere un nuovo nodo&quot;,addEdge:&quot;Aggiungi un vertice&quot;,addNode:&quot;Aggiungi un nodo&quot;,back:&quot;Indietro&quot;,close:&quot;Chiudere&quot;,createEdgeError:&quot;Non si possono collegare vertici ad un cluster&quot;,del:&quot;Cancella la selezione&quot;,deleteClusterError:&quot;I cluster non possono essere cancellati&quot;,edgeDescription:&quot;Clicca su un nodo e trascinalo ad un altro nodo per connetterli.&quot;,edit:&quot;Modifica&quot;,editClusterError:&quot;I clusters non possono essere modificati.&quot;,editEdge:&quot;Modifica il vertice&quot;,editEdgeDescription:&quot;Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.&quot;,editNode:&quot;Modifica il nodo&quot;},nl:{addDescription:&quot;Klik op een leeg gebied om een nieuwe node te maken.&quot;,addEdge:&quot;Link toevoegen&quot;,addNode:&quot;Node toevoegen&quot;,back:&quot;Terug&quot;,close:&quot;Sluiten&quot;,createEdgeError:&quot;Kan geen link maken naar een cluster.&quot;,del:&quot;Selectie verwijderen&quot;,deleteClusterError:&quot;Clusters kunnen niet worden verwijderd.&quot;,edgeDescription:&quot;Klik op een node en sleep de link naar een andere node om ze te verbinden.&quot;,edit:&quot;Wijzigen&quot;,editClusterError:&quot;Clusters kunnen niet worden aangepast.&quot;,editEdge:&quot;Link wijzigen&quot;,editEdgeDescription:&quot;Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.&quot;,editNode:&quot;Node wijzigen&quot;},pt:{addDescription:&quot;Clique em um espaço em branco para adicionar um novo nó&quot;,addEdge:&quot;Adicionar aresta&quot;,addNode:&quot;Adicionar nó&quot;,back:&quot;Voltar&quot;,close:&quot;Fechar&quot;,createEdgeError:&quot;Não foi possível linkar arestas a um cluster.&quot;,del:&quot;Remover selecionado&quot;,deleteClusterError:&quot;Clusters não puderam ser removidos.&quot;,edgeDescription:&quot;Clique em um nó e arraste a aresta até outro nó para conectá-los&quot;,edit:&quot;Editar&quot;,editClusterError:&quot;Clusters não puderam ser editados.&quot;,editEdge:&quot;Editar aresta&quot;,editEdgeDescription:&quot;Clique nos pontos de controle e os arraste para um nó para conectá-los&quot;,editNode:&quot;Editar nó&quot;},ru:{addDescription:&quot;Кликните в свободное место, чтобы добавить новый узел.&quot;,addEdge:&quot;Добавить ребро&quot;,addNode:&quot;Добавить узел&quot;,back:&quot;Назад&quot;,close:&quot;Закрывать&quot;,createEdgeError:&quot;Невозможно соединить ребра в кластер.&quot;,del:&quot;Удалить выбранное&quot;,deleteClusterError:&quot;Кластеры не могут быть удалены&quot;,edgeDescription:&quot;Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.&quot;,edit:&quot;Редактировать&quot;,editClusterError:&quot;Кластеры недоступны для редактирования.&quot;,editEdge:&quot;Редактировать ребро&quot;,editEdgeDescription:&quot;Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.&quot;,editNode:&quot;Редактировать узел&quot;},cn:{addDescription:&quot;单击空白处放置新节点。&quot;,addEdge:&quot;添加连接线&quot;,addNode:&quot;添加节点&quot;,back:&quot;返回&quot;,close:&quot;關閉&quot;,createEdgeError:&quot;无法将连接线连接到群集。&quot;,del:&quot;删除选定&quot;,deleteClusterError:&quot;无法删除群集。&quot;,edgeDescription:&quot;单击某个节点并将该连接线拖动到另一个节点以连接它们。&quot;,edit:&quot;编辑&quot;,editClusterError:&quot;无法编辑群集。&quot;,editEdge:&quot;编辑连接线&quot;,editEdgeDescription:&quot;单击控制节点并将它们拖到节点上连接。&quot;,editNode:&quot;编辑节点&quot;},uk:{addDescription:&quot;Kлікніть на вільне місце, щоб додати новий вузол.&quot;,addEdge:&quot;Додати край&quot;,addNode:&quot;Додати вузол&quot;,back:&quot;Назад&quot;,close:&quot;Закрити&quot;,createEdgeError:&quot;Не можливо об'єднати краї в групу.&quot;,del:&quot;Видалити обране&quot;,deleteClusterError:&quot;Групи не можуть бути видалені.&quot;,edgeDescription:&quot;Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.&quot;,edit:&quot;Редагувати&quot;,editClusterError:&quot;Групи недоступні для редагування.&quot;,editEdge:&quot;Редагувати край&quot;,editEdgeDescription:&quot;Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.&quot;,editNode:&quot;Редагувати вузол&quot;},fr:{addDescription:&quot;Cliquez dans un endroit vide pour placer un nœud.&quot;,addEdge:&quot;Ajouter un lien&quot;,addNode:&quot;Ajouter un nœud&quot;,back:&quot;Retour&quot;,close:&quot;Fermer&quot;,createEdgeError:&quot;Impossible de créer un lien vers un cluster.&quot;,del:&quot;Effacer la sélection&quot;,deleteClusterError:&quot;Les clusters ne peuvent pas être effacés.&quot;,edgeDescription:&quot;Cliquez sur un nœud et glissez le lien vers un autre nœud pour les connecter.&quot;,edit:&quot;Éditer&quot;,editClusterError:&quot;Les clusters ne peuvent pas être édités.&quot;,editEdge:&quot;Éditer le lien&quot;,editEdgeDescription:&quot;Cliquez sur les points de contrôle et glissez-les pour connecter un nœud.&quot;,editNode:&quot;Éditer le nœud&quot;},cs:{addDescription:&quot;Kluknutím do prázdného prostoru můžete přidat nový vrchol.&quot;,addEdge:&quot;Přidat hranu&quot;,addNode:&quot;Přidat vrchol&quot;,back:&quot;Zpět&quot;,close:&quot;Zavřít&quot;,createEdgeError:&quot;Nelze připojit hranu ke shluku.&quot;,del:&quot;Smazat výběr&quot;,deleteClusterError:&quot;Nelze mazat shluky.&quot;,edgeDescription:&quot;Přetažením z jednoho vrcholu do druhého můžete spojit tyto vrcholy novou hranou.&quot;,edit:&quot;Upravit&quot;,editClusterError:&quot;Nelze upravovat shluky.&quot;,editEdge:&quot;Upravit hranu&quot;,editEdgeDescription:&quot;Přetažením kontrolního vrcholu hrany ji můžete připojit k jinému vrcholu.&quot;,editNode:&quot;Upravit vrchol&quot;}});var Mb=function(){function t(){Yd(this,t),this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement(&quot;canvas&quot;)}return Kd(t,[{key:&quot;init&quot;,value:function(){if(!this.initialized()){this.src=this.image.src;var t=this.image.width,e=this.image.height;this.width=t,this.height=e;var i=Math.floor(e/2),n=Math.floor(e/4),o=Math.floor(e/8),r=Math.floor(e/16),s=Math.floor(t/2),a=Math.floor(t/4),h=Math.floor(t/8),l=Math.floor(t/16);this.canvas.width=3*a,this.canvas.height=i,this.coordinates=[[0,0,s,i],[s,0,a,n],[s,n,h,o],[5*h,n,l,r]],this._fillMipMap()}}},{key:&quot;initialized&quot;,value:function(){return void 0!==this.coordinates}},{key:&quot;_fillMipMap&quot;,value:function(){var t=this.canvas.getContext(&quot;2d&quot;),e=this.coordinates[0];t.drawImage(this.image,e[0],e[1],e[2],e[3]);for(var i=1;i&lt;this.NUM_ITERATIONS;i++){var n=this.coordinates[i-1],o=this.coordinates[i];t.drawImage(this.canvas,n[0],n[1],n[2],n[3],o[0],o[1],o[2],o[3])}}},{key:&quot;drawImageAtPosition&quot;,value:function(t,e,i,n,o,r){if(this.initialized())if(e&gt;2){e*=.5;for(var s=0;e&gt;2&amp;&amp;s&lt;this.NUM_ITERATIONS;)e*=.5,s+=1;s&gt;=this.NUM_ITERATIONS&amp;&amp;(s=this.NUM_ITERATIONS-1);var a=this.coordinates[s];t.drawImage(this.canvas,a[0],a[1],a[2],a[3],i,n,o,r)}else t.drawImage(this.image,i,n,o,r)}}]),t}(),Pb=function(){function t(e){Yd(this,t),this.images={},this.imageBroken={},this.callback=e}return Kd(t,[{key:&quot;_tryloadBrokenUrl&quot;,value:function(t,e,i){void 0!==t&amp;&amp;void 0!==i&amp;&amp;(void 0!==e?(i.image.onerror=function(){console.error(&quot;Could not load brokenImage:&quot;,e)},i.image.src=e):console.warn(&quot;No broken url image defined&quot;))}},{key:&quot;_redrawWithImage&quot;,value:function(t){this.callback&amp;&amp;this.callback(t)}},{key:&quot;load&quot;,value:function(t,e){var i=this,n=this.images[t];if(n)return n;var o=new Mb;return this.images[t]=o,o.image.onload=function(){i._fixImageCoordinates(o.image),o.init(),i._redrawWithImage(o)},o.image.onerror=function(){console.error(&quot;Could not load image:&quot;,t),i._tryloadBrokenUrl(t,e,o)},o.image.src=t,o}},{key:&quot;_fixImageCoordinates&quot;,value:function(t){0===t.width&amp;&amp;(document.body.appendChild(t),t.width=t.offsetWidth,t.height=t.offsetHeight,document.body.removeChild(t))}}]),t}(),Db={exports:{}},Ib=o((function(){if(&quot;function&quot;==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&amp;&amp;Object.defineProperty(t,&quot;a&quot;,{value:8})}})),Bb=o,zb=Y,Nb=B,Fb=Ib,Ab=Object.isExtensible,jb=Bb((function(){Ab(1)}))||Fb?function(t){return!!zb(t)&amp;&amp;((!Fb||&quot;ArrayBuffer&quot;!=Nb(t))&amp;&amp;(!Ab||Ab(t)))}:Ab,Rb=!o((function(){return Object.isExtensible(Object.preventExtensions({}))})),Lb=_i,Hb=g,Wb=Ri,qb=Y,Vb=Wt,Ub=Ve.f,Yb=rh,Xb=hh,Gb=jb,Kb=Rb,$b=!1,Zb=Xt(&quot;meta&quot;),Qb=0,Jb=function(t){Ub(t,Zb,{value:{objectID:&quot;O&quot;+Qb++,weakData:{}}})},tw=Db.exports={enable:function(){tw.enable=function(){},$b=!0;var t=Yb.f,e=Hb([].splice),i={};i[Zb]=1,t(i).length&amp;&amp;(Yb.f=function(i){for(var n=t(i),o=0,r=n.length;o&lt;r;o++)if(n[o]===Zb){e(n,o,1);break}return n},Lb({target:&quot;Object&quot;,stat:!0,forced:!0},{getOwnPropertyNames:Xb.f}))},fastKey:function(t,e){if(!qb(t))return&quot;symbol&quot;==typeof t?t:(&quot;string&quot;==typeof t?&quot;S&quot;:&quot;P&quot;)+t;if(!Vb(t,Zb)){if(!Gb(t))return&quot;F&quot;;if(!e)return&quot;E&quot;;Jb(t)}return t[Zb].objectID},getWeakData:function(t,e){if(!Vb(t,Zb)){if(!Gb(t))return!0;if(!e)return!1;Jb(t)}return t[Zb].weakData},onFreeze:function(t){return Kb&amp;&amp;$b&amp;&amp;Gb(t)&amp;&amp;!Vb(t,Zb)&amp;&amp;Jb(t),t}};Wb[Zb]=!0;var ew=qe,iw=_,nw=$e,ow=bt,rw=qs,sw=Bi,aw=J,hw=ba,lw=ua,dw=As,cw=n.TypeError,uw=function(t,e){this.stopped=t,this.result=e},fw=uw.prototype,pw=function(t,e,i){var n,o,r,s,a,h,l,d=i&amp;&amp;i.that,c=!(!i||!i.AS_ENTRIES),u=!(!i||!i.IS_ITERATOR),f=!(!i||!i.INTERRUPTED),p=ew(e,d),v=function(t){return n&amp;&amp;dw(n,&quot;normal&quot;,t),new uw(!0,t)},g=function(t){return c?(nw(t),f?p(t[0],t[1],v):p(t[0],t[1])):f?p(t,v):p(t)};if(u)n=t;else{if(!(o=lw(t)))throw cw(ow(t)+&quot; is not iterable&quot;);if(rw(o)){for(r=0,s=sw(t);s&gt;r;r++)if((a=g(t[r]))&amp;&amp;aw(fw,a))return a;return new uw(!1)}n=hw(t,o)}for(h=n.next;!(l=iw(h,n)).done;){try{a=g(l.value)}catch(t){dw(n,&quot;throw&quot;,t)}if(&quot;object&quot;==typeof a&amp;&amp;a&amp;&amp;aw(fw,a))return a}return new uw(!1)},vw=J,gw=n.TypeError,yw=function(t,e){if(vw(e,t))return t;throw gw(&quot;Incorrect invocation&quot;)},mw=_i,bw=n,ww=Db.exports,kw=o,_w=di,xw=pw,Ew=yw,Ow=y,Cw=Y,Sw=$r,Tw=Ve.f,Mw=Wh.forEach,Pw=b,Dw=Vo.set,Iw=Vo.getterFor,Bw=function(t,e,i){var n,o=-1!==t.indexOf(&quot;Map&quot;),r=-1!==t.indexOf(&quot;Weak&quot;),s=o?&quot;set&quot;:&quot;add&quot;,a=bw[t],h=a&amp;&amp;a.prototype,l={};if(Pw&amp;&amp;Ow(a)&amp;&amp;(r||h.forEach&amp;&amp;!kw((function(){(new a).entries().next()})))){var d=(n=e((function(e,i){Dw(Ew(e,d),{type:t,collection:new a}),null!=i&amp;&amp;xw(i,e[s],{that:e,AS_ENTRIES:o})}))).prototype,c=Iw(t);Mw([&quot;add&quot;,&quot;clear&quot;,&quot;delete&quot;,&quot;forEach&quot;,&quot;get&quot;,&quot;has&quot;,&quot;set&quot;,&quot;keys&quot;,&quot;values&quot;,&quot;entries&quot;],(function(t){var e=&quot;add&quot;==t||&quot;set&quot;==t;!(t in h)||r&amp;&amp;&quot;clear&quot;==t||_w(d,t,(function(i,n){var o=c(this).collection;if(!e&amp;&amp;r&amp;&amp;!Cw(i))return&quot;get&quot;==t&amp;&amp;void 0;var s=o[t](0===i?0:i,n);return e?this:s}))})),r||Tw(d,&quot;size&quot;,{configurable:!0,get:function(){return c(this).collection.size}})}else n=i.getConstructor(e,t,o,s),ww.enable();return Sw(n,t,!1,!0),l[t]=n,mw({global:!0,forced:!0},l),r||i.setStrong(n,t,o),n},zw=Ir,Nw=function(t,e,i){for(var n in e)i&amp;&amp;i.unsafe&amp;&amp;t[n]?t[n]=e[n]:zw(t,n,e[n],i);return t},Fw=Q,Aw=Ve,jw=b,Rw=oe(&quot;species&quot;),Lw=Ve.f,Hw=wr,Ww=Nw,qw=qe,Vw=yw,Uw=pw,Yw=Cs,Xw=function(t){var e=Fw(t),i=Aw.f;jw&amp;&amp;e&amp;&amp;!e[Rw]&amp;&amp;i(e,Rw,{configurable:!0,get:function(){return this}})},Gw=b,Kw=Db.exports.fastKey,$w=Vo.set,Zw=Vo.getterFor,Qw={getConstructor:function(t,e,i,n){var o=t((function(t,o){Vw(t,r),$w(t,{type:e,index:Hw(null),first:void 0,last:void 0,size:0}),Gw||(t.size=0),null!=o&amp;&amp;Uw(o,t[n],{that:t,AS_ENTRIES:i})})),r=o.prototype,s=Zw(e),a=function(t,e,i){var n,o,r=s(t),a=h(t,e);return a?a.value=i:(r.last=a={index:o=Kw(e,!0),key:e,value:i,previous:n=r.last,next:void 0,removed:!1},r.first||(r.first=a),n&amp;&amp;(n.next=a),Gw?r.size++:t.size++,&quot;F&quot;!==o&amp;&amp;(r.index[o]=a)),t},h=function(t,e){var i,n=s(t),o=Kw(e);if(&quot;F&quot;!==o)return n.index[o];for(i=n.first;i;i=i.next)if(i.key==e)return i};return Ww(r,{clear:function(){for(var t=s(this),e=t.index,i=t.first;i;)i.removed=!0,i.previous&amp;&amp;(i.previous=i.previous.next=void 0),delete e[i.index],i=i.next;t.first=t.last=void 0,Gw?t.size=0:this.size=0},delete:function(t){var e=this,i=s(e),n=h(e,t);if(n){var o=n.next,r=n.previous;delete i.index[n.index],n.removed=!0,r&amp;&amp;(r.next=o),o&amp;&amp;(o.previous=r),i.first==n&amp;&amp;(i.first=o),i.last==n&amp;&amp;(i.last=r),Gw?i.size--:e.size--}return!!n},forEach:function(t){for(var e,i=s(this),n=qw(t,arguments.length&gt;1?arguments[1]:void 0);e=e?e.next:i.first;)for(n(e.value,e.key,this);e&amp;&amp;e.removed;)e=e.previous},has:function(t){return!!h(this,t)}}),Ww(r,i?{get:function(t){var e=h(this,t);return e&amp;&amp;e.value},set:function(t,e){return a(this,0===t?0:t,e)}}:{add:function(t){return a(this,t=0===t?0:t,t)}}),Gw&amp;&amp;Lw(r,&quot;size&quot;,{get:function(){return s(this).size}}),o},setStrong:function(t,e,i){var n=e+&quot; Iterator&quot;,o=Zw(e),r=Zw(n);Yw(t,e,(function(t,e){$w(this,{type:n,target:t,state:o(t),kind:e,last:void 0})}),(function(){for(var t=r(this),e=t.kind,i=t.last;i&amp;&amp;i.removed;)i=i.previous;return t.target&amp;&amp;(t.last=i=i?i.next:t.state.first)?&quot;keys&quot;==e?{value:i.key,done:!1}:&quot;values&quot;==e?{value:i.value,done:!1}:{value:[i.key,i.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),i?&quot;entries&quot;:&quot;values&quot;,!i,!0),Xw(e)}};Bw(&quot;Map&quot;,(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Qw);var Jw=X.Map,tk=function(){function t(){Yd(this,t),this.clear(),this._defaultIndex=0,this._groupIndex=0,this._defaultGroups=[{border:&quot;#2B7CE9&quot;,background:&quot;#97C2FC&quot;,highlight:{border:&quot;#2B7CE9&quot;,background:&quot;#D2E5FF&quot;},hover:{border:&quot;#2B7CE9&quot;,background:&quot;#D2E5FF&quot;}},{border:&quot;#FFA500&quot;,background:&quot;#FFFF00&quot;,highlight:{border:&quot;#FFA500&quot;,background:&quot;#FFFFA3&quot;},hover:{border:&quot;#FFA500&quot;,background:&quot;#FFFFA3&quot;}},{border:&quot;#FA0A10&quot;,background:&quot;#FB7E81&quot;,highlight:{border:&quot;#FA0A10&quot;,background:&quot;#FFAFB1&quot;},hover:{border:&quot;#FA0A10&quot;,background:&quot;#FFAFB1&quot;}},{border:&quot;#41A906&quot;,background:&quot;#7BE141&quot;,highlight:{border:&quot;#41A906&quot;,background:&quot;#A1EC76&quot;},hover:{border:&quot;#41A906&quot;,background:&quot;#A1EC76&quot;}},{border:&quot;#E129F0&quot;,background:&quot;#EB7DF4&quot;,highlight:{border:&quot;#E129F0&quot;,background:&quot;#F0B3F5&quot;},hover:{border:&quot;#E129F0&quot;,background:&quot;#F0B3F5&quot;}},{border:&quot;#7C29F0&quot;,background:&quot;#AD85E4&quot;,highlight:{border:&quot;#7C29F0&quot;,background:&quot;#D3BDF0&quot;},hover:{border:&quot;#7C29F0&quot;,background:&quot;#D3BDF0&quot;}},{border:&quot;#C37F00&quot;,background:&quot;#FFA807&quot;,highlight:{border:&quot;#C37F00&quot;,background:&quot;#FFCA66&quot;},hover:{border:&quot;#C37F00&quot;,background:&quot;#FFCA66&quot;}},{border:&quot;#4220FB&quot;,background:&quot;#6E6EFD&quot;,highlight:{border:&quot;#4220FB&quot;,background:&quot;#9B9BFD&quot;},hover:{border:&quot;#4220FB&quot;,background:&quot;#9B9BFD&quot;}},{border:&quot;#FD5A77&quot;,background:&quot;#FFC0CB&quot;,highlight:{border:&quot;#FD5A77&quot;,background:&quot;#FFD1D9&quot;},hover:{border:&quot;#FD5A77&quot;,background:&quot;#FFD1D9&quot;}},{border:&quot;#4AD63A&quot;,background:&quot;#C2FABC&quot;,highlight:{border:&quot;#4AD63A&quot;,background:&quot;#E6FFE3&quot;},hover:{border:&quot;#4AD63A&quot;,background:&quot;#E6FFE3&quot;}},{border:&quot;#990000&quot;,background:&quot;#EE0000&quot;,highlight:{border:&quot;#BB0000&quot;,background:&quot;#FF3333&quot;},hover:{border:&quot;#BB0000&quot;,background:&quot;#FF3333&quot;}},{border:&quot;#FF6000&quot;,background:&quot;#FF6000&quot;,highlight:{border:&quot;#FF6000&quot;,background:&quot;#FF6000&quot;},hover:{border:&quot;#FF6000&quot;,background:&quot;#FF6000&quot;}},{border:&quot;#97C2FC&quot;,background:&quot;#2B7CE9&quot;,highlight:{border:&quot;#D2E5FF&quot;,background:&quot;#2B7CE9&quot;},hover:{border:&quot;#D2E5FF&quot;,background:&quot;#2B7CE9&quot;}},{border:&quot;#399605&quot;,background:&quot;#255C03&quot;,highlight:{border:&quot;#399605&quot;,background:&quot;#255C03&quot;},hover:{border:&quot;#399605&quot;,background:&quot;#255C03&quot;}},{border:&quot;#B70054&quot;,background:&quot;#FF007E&quot;,highlight:{border:&quot;#B70054&quot;,background:&quot;#FF007E&quot;},hover:{border:&quot;#B70054&quot;,background:&quot;#FF007E&quot;}},{border:&quot;#AD85E4&quot;,background:&quot;#7C29F0&quot;,highlight:{border:&quot;#D3BDF0&quot;,background:&quot;#7C29F0&quot;},hover:{border:&quot;#D3BDF0&quot;,background:&quot;#7C29F0&quot;}},{border:&quot;#4557FA&quot;,background:&quot;#000EA1&quot;,highlight:{border:&quot;#6E6EFD&quot;,background:&quot;#000EA1&quot;},hover:{border:&quot;#6E6EFD&quot;,background:&quot;#000EA1&quot;}},{border:&quot;#FFC0CB&quot;,background:&quot;#FD5A77&quot;,highlight:{border:&quot;#FFD1D9&quot;,background:&quot;#FD5A77&quot;},hover:{border:&quot;#FFD1D9&quot;,background:&quot;#FD5A77&quot;}},{border:&quot;#C2FABC&quot;,background:&quot;#74D66A&quot;,highlight:{border:&quot;#E6FFE3&quot;,background:&quot;#74D66A&quot;},hover:{border:&quot;#E6FFE3&quot;,background:&quot;#74D66A&quot;}},{border:&quot;#EE0000&quot;,background:&quot;#990000&quot;,highlight:{border:&quot;#FF3333&quot;,background:&quot;#BB0000&quot;},hover:{border:&quot;#FF3333&quot;,background:&quot;#BB0000&quot;}}],this.options={},this.defaultOptions={useDefaultGroups:!0},un(this.options,this.defaultOptions)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){var e=[&quot;useDefaultGroups&quot;];if(void 0!==t)for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)&amp;&amp;-1===Fp(e).call(e,i)){var n=t[i];this.add(i,n)}}},{key:&quot;clear&quot;,value:function(){this._groups=new Jw,this._groupNames=[]}},{key:&quot;get&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1],i=this._groups.get(t);if(void 0===i&amp;&amp;e)if(!1===this.options.useDefaultGroups&amp;&amp;this._groupNames.length&gt;0){var n=this._groupIndex%this._groupNames.length;++this._groupIndex,(i={}).color=this._groups.get(this._groupNames[n]),this._groups.set(t,i)}else{var o=this._defaultIndex%this._defaultGroups.length;this._defaultIndex++,(i={}).color=this._defaultGroups[o],this._groups.set(t,i)}return i}},{key:&quot;add&quot;,value:function(t,e){return this._groups.has(t)||this._groupNames.push(t),this._groups.set(t,e),e}}]),t}();_i({target:&quot;Number&quot;,stat:!0},{isNaN:function(t){return t!=t}});var ek=X.Number.isNaN,ik=n.isFinite,nk=Number.isFinite||function(t){return&quot;number&quot;==typeof t&amp;&amp;ik(t)};_i({target:&quot;Number&quot;,stat:!0},{isFinite:nk});var ok=X.Number.isFinite,rk=Wh.some;_i({target:&quot;Array&quot;,proto:!0,forced:!Cu(&quot;some&quot;)},{some:function(t){return rk(this,t,arguments.length&gt;1?arguments[1]:void 0)}});var sk=Tn(&quot;Array&quot;).some,ak=J,hk=sk,lk=Array.prototype,dk=function(t){var e=t.some;return t===lk||ak(lk,t)&amp;&amp;e===lk.some?hk:e},ck=dk,uk=na,fk=bt,pk=n.TypeError,vk=_i,gk=d,yk=On,mk=function(t){if(uk(t))return t;throw pk(fk(t)+&quot; is not a constructor&quot;)},bk=$e,wk=Y,kk=wr,_k=o,xk=Q(&quot;Reflect&quot;,&quot;construct&quot;),Ek=Object.prototype,Ok=[].push,Ck=_k((function(){function t(){}return!(xk((function(){}),[],t)instanceof t)})),Sk=!_k((function(){xk((function(){}))})),Tk=Ck||Sk;vk({target:&quot;Reflect&quot;,stat:!0,forced:Tk,sham:Tk},{construct:function(t,e){mk(t),bk(e);var i=arguments.length&lt;3?t:mk(arguments[2]);if(Sk&amp;&amp;!Ck)return xk(t,e,i);if(t==i){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return gk(Ok,n,e),new(gk(yk,t,n))}var o=i.prototype,r=kk(wk(o)?o:Ek),s=gk(t,r,e);return wk(s)?s:r}});var Mk=X.Reflect.construct;function Pk(t){if(void 0===t)throw new ReferenceError(&quot;this hasn't been initialised - super() hasn't been called&quot;);return t}var Dk=Gp;_i({target:&quot;Object&quot;,stat:!0},{setPrototypeOf:cs});var Ik=X.Object.setPrototypeOf;function Bk(t,e){return Bk=Ik||function(t,e){return t.__proto__=e,t},Bk(t,e)}function zk(t,e){if(&quot;function&quot;!=typeof e&amp;&amp;null!==e)throw new TypeError(&quot;Super expression must either be null or a function&quot;);t.prototype=Dk(e&amp;&amp;e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Xd(t,&quot;prototype&quot;,{writable:!1}),e&amp;&amp;Bk(t,e)}function Nk(t,e){if(e&amp;&amp;(&quot;object&quot;===Qc(e)||&quot;function&quot;==typeof e))return e;if(void 0!==e)throw new TypeError(&quot;Derived constructors may only return object or undefined&quot;);return Pk(t)}var Fk=Rf;function Ak(t){return Ak=Ik?Fk:function(t){return t.__proto__||Fk(t)},Ak(t)}var jk={exports:{}};!function(t){var e=function(t){var e,i=Object.prototype,n=i.hasOwnProperty,o=&quot;function&quot;==typeof Symbol?Symbol:{},r=o.iterator||&quot;@@iterator&quot;,s=o.asyncIterator||&quot;@@asyncIterator&quot;,a=o.toStringTag||&quot;@@toStringTag&quot;;function h(t,e,i){return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},&quot;&quot;)}catch(t){h=function(t,e,i){return t[e]=i}}function l(t,e,i,n){var o=e&amp;&amp;e.prototype instanceof g?e:g,r=Object.create(o.prototype),s=new T(n||[]);return r._invoke=function(t,e,i){var n=c;return function(o,r){if(n===f)throw new Error(&quot;Generator is already running&quot;);if(n===p){if(&quot;throw&quot;===o)throw r;return P()}for(i.method=o,i.arg=r;;){var s=i.delegate;if(s){var a=O(s,i);if(a){if(a===v)continue;return a}}if(&quot;next&quot;===i.method)i.sent=i._sent=i.arg;else if(&quot;throw&quot;===i.method){if(n===c)throw n=p,i.arg;i.dispatchException(i.arg)}else&quot;return&quot;===i.method&amp;&amp;i.abrupt(&quot;return&quot;,i.arg);n=f;var h=d(t,e,i);if(&quot;normal&quot;===h.type){if(n=i.done?p:u,h.arg===v)continue;return{value:h.arg,done:i.done}}&quot;throw&quot;===h.type&amp;&amp;(n=p,i.method=&quot;throw&quot;,i.arg=h.arg)}}}(t,i,s),r}function d(t,e,i){try{return{type:&quot;normal&quot;,arg:t.call(e,i)}}catch(t){return{type:&quot;throw&quot;,arg:t}}}t.wrap=l;var c=&quot;suspendedStart&quot;,u=&quot;suspendedYield&quot;,f=&quot;executing&quot;,p=&quot;completed&quot;,v={};function g(){}function y(){}function m(){}var b={};h(b,r,(function(){return this}));var w=Object.getPrototypeOf,k=w&amp;&amp;w(w(M([])));k&amp;&amp;k!==i&amp;&amp;n.call(k,r)&amp;&amp;(b=k);var _=m.prototype=g.prototype=Object.create(b);function x(t){[&quot;next&quot;,&quot;throw&quot;,&quot;return&quot;].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function i(o,r,s,a){var h=d(t[o],t,r);if(&quot;throw&quot;!==h.type){var l=h.arg,c=l.value;return c&amp;&amp;&quot;object&quot;==typeof c&amp;&amp;n.call(c,&quot;__await&quot;)?e.resolve(c.__await).then((function(t){i(&quot;next&quot;,t,s,a)}),(function(t){i(&quot;throw&quot;,t,s,a)})):e.resolve(c).then((function(t){l.value=t,s(l)}),(function(t){return i(&quot;throw&quot;,t,s,a)}))}a(h.arg)}var o;this._invoke=function(t,n){function r(){return new e((function(e,o){i(t,n,e,o)}))}return o=o?o.then(r,r):r()}}function O(t,i){var n=t.iterator[i.method];if(n===e){if(i.delegate=null,&quot;throw&quot;===i.method){if(t.iterator.return&amp;&amp;(i.method=&quot;return&quot;,i.arg=e,O(t,i),&quot;throw&quot;===i.method))return v;i.method=&quot;throw&quot;,i.arg=new TypeError(&quot;The iterator does not provide a 'throw' method&quot;)}return v}var o=d(n,t.iterator,i.arg);if(&quot;throw&quot;===o.type)return i.method=&quot;throw&quot;,i.arg=o.arg,i.delegate=null,v;var r=o.arg;return r?r.done?(i[t.resultName]=r.value,i.next=t.nextLoc,&quot;return&quot;!==i.method&amp;&amp;(i.method=&quot;next&quot;,i.arg=e),i.delegate=null,v):r:(i.method=&quot;throw&quot;,i.arg=new TypeError(&quot;iterator result is not an object&quot;),i.delegate=null,v)}function C(t){var e={tryLoc:t[0]};1 in t&amp;&amp;(e.catchLoc=t[1]),2 in t&amp;&amp;(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type=&quot;normal&quot;,delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:&quot;root&quot;}],t.forEach(C,this),this.reset(!0)}function M(t){if(t){var i=t[r];if(i)return i.call(t);if(&quot;function&quot;==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,s=function i(){for(;++o&lt;t.length;)if(n.call(t,o))return i.value=t[o],i.done=!1,i;return i.value=e,i.done=!0,i};return s.next=s}}return{next:P}}function P(){return{value:e,done:!0}}return y.prototype=m,h(_,&quot;constructor&quot;,m),h(m,&quot;constructor&quot;,y),y.displayName=h(m,a,&quot;GeneratorFunction&quot;),t.isGeneratorFunction=function(t){var e=&quot;function&quot;==typeof t&amp;&amp;t.constructor;return!!e&amp;&amp;(e===y||&quot;GeneratorFunction&quot;===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,h(t,a,&quot;GeneratorFunction&quot;)),t.prototype=Object.create(_),t},t.awrap=function(t){return{__await:t}},x(E.prototype),h(E.prototype,s,(function(){return this})),t.AsyncIterator=E,t.async=function(e,i,n,o,r){void 0===r&amp;&amp;(r=Promise);var s=new E(l(e,i,n,o),r);return t.isGeneratorFunction(i)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},x(_),h(_,a,&quot;Generator&quot;),h(_,r,(function(){return this})),h(_,&quot;toString&quot;,(function(){return&quot;[object Generator]&quot;})),t.keys=function(t){var e=[];for(var i in t)e.push(i);return e.reverse(),function i(){for(;e.length;){var n=e.pop();if(n in t)return i.value=n,i.done=!1,i}return i.done=!0,i}},t.values=M,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method=&quot;next&quot;,this.arg=e,this.tryEntries.forEach(S),!t)for(var i in this)&quot;t&quot;===i.charAt(0)&amp;&amp;n.call(this,i)&amp;&amp;!isNaN(+i.slice(1))&amp;&amp;(this[i]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if(&quot;throw&quot;===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var i=this;function o(n,o){return a.type=&quot;throw&quot;,a.arg=t,i.next=n,o&amp;&amp;(i.method=&quot;next&quot;,i.arg=e),!!o}for(var r=this.tryEntries.length-1;r&gt;=0;--r){var s=this.tryEntries[r],a=s.completion;if(&quot;root&quot;===s.tryLoc)return o(&quot;end&quot;);if(s.tryLoc&lt;=this.prev){var h=n.call(s,&quot;catchLoc&quot;),l=n.call(s,&quot;finallyLoc&quot;);if(h&amp;&amp;l){if(this.prev&lt;s.catchLoc)return o(s.catchLoc,!0);if(this.prev&lt;s.finallyLoc)return o(s.finallyLoc)}else if(h){if(this.prev&lt;s.catchLoc)return o(s.catchLoc,!0)}else{if(!l)throw new Error(&quot;try statement without catch or finally&quot;);if(this.prev&lt;s.finallyLoc)return o(s.finallyLoc)}}}},abrupt:function(t,e){for(var i=this.tryEntries.length-1;i&gt;=0;--i){var o=this.tryEntries[i];if(o.tryLoc&lt;=this.prev&amp;&amp;n.call(o,&quot;finallyLoc&quot;)&amp;&amp;this.prev&lt;o.finallyLoc){var r=o;break}}r&amp;&amp;(&quot;break&quot;===t||&quot;continue&quot;===t)&amp;&amp;r.tryLoc&lt;=e&amp;&amp;e&lt;=r.finallyLoc&amp;&amp;(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method=&quot;next&quot;,this.next=r.finallyLoc,v):this.complete(s)},complete:function(t,e){if(&quot;throw&quot;===t.type)throw t.arg;return&quot;break&quot;===t.type||&quot;continue&quot;===t.type?this.next=t.arg:&quot;return&quot;===t.type?(this.rval=this.arg=t.arg,this.method=&quot;return&quot;,this.next=&quot;end&quot;):&quot;normal&quot;===t.type&amp;&amp;e&amp;&amp;(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e&gt;=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),S(i),v}},catch:function(t){for(var e=this.tryEntries.length-1;e&gt;=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var n=i.completion;if(&quot;throw&quot;===n.type){var o=n.arg;S(i)}return o}}throw new Error(&quot;illegal catch attempt&quot;)},delegateYield:function(t,i,n){return this.delegate={iterator:M(t),resultName:i,nextLoc:n},&quot;next&quot;===this.method&amp;&amp;(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=e}catch(t){&quot;object&quot;==typeof globalThis?globalThis.regeneratorRuntime=e:Function(&quot;r&quot;,&quot;regeneratorRuntime = r&quot;)(e)}}(jk);var Rk=jk.exports,Lk=xt,Hk=Rt,Wk=R,qk=Bi,Vk=n.TypeError,Uk=function(t){return function(e,i,n,o){Lk(i);var r=Hk(e),s=Wk(r),a=qk(r),h=t?a-1:0,l=t?-1:1;if(n&lt;2)for(;;){if(h in s){o=s[h],h+=l;break}if(h+=l,t?h&lt;0:a&lt;=h)throw Vk(&quot;Reduce of empty array with no initial value&quot;)}for(;t?h&gt;=0:a&gt;h;h+=l)h in s&amp;&amp;(o=i(o,s[h],h,r));return o}},Yk={left:Uk(!1),right:Uk(!0)},Xk=&quot;process&quot;==B(n.process),Gk=Yk.left,Kk=at,$k=Xk;_i({target:&quot;Array&quot;,proto:!0,forced:!Cu(&quot;reduce&quot;)||!$k&amp;&amp;Kk&gt;79&amp;&amp;Kk&lt;83},{reduce:function(t){var e=arguments.length;return Gk(this,t,e,e&gt;1?arguments[1]:void 0)}});var Zk=Tn(&quot;Array&quot;).reduce,Qk=J,Jk=Zk,t_=Array.prototype,e_=function(t){var e=t.reduce;return t===t_||Qk(t_,t)&amp;&amp;e===t_.reduce?Jk:e},i_=e_,n_=oh,o_=Bi,r_=qe,s_=n.TypeError,a_=function(t,e,i,n,o,r,s,a){for(var h,l,d=o,c=0,u=!!s&amp;&amp;r_(s,a);c&lt;n;){if(c in i){if(h=u?u(i[c],c,e):i[c],r&gt;0&amp;&amp;n_(h))l=o_(h),d=a_(t,e,h,l,d,r-1)-1;else{if(d&gt;=9007199254740991)throw s_(&quot;Exceed the acceptable array length&quot;);t[d]=h}d++}c++}return d},h_=a_,l_=xt,d_=Rt,c_=Bi,u_=zh;_i({target:&quot;Array&quot;,proto:!0},{flatMap:function(t){var e,i=d_(this),n=c_(i);return l_(t),(e=u_(i,0)).length=h_(e,i,i,n,0,1,t,arguments.length&gt;1?arguments[1]:void 0),e}});var f_=Tn(&quot;Array&quot;).flatMap,p_=J,v_=f_,g_=Array.prototype,y_=function(t){var e=t.flatMap;return t===g_||p_(g_,t)&amp;&amp;e===g_.flatMap?v_:e},m_=y_;Bw(&quot;Set&quot;,(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Qw);var b_=X.Set,w_=$c,k_=ba,__=ph,x_=Math.floor,E_=function(t,e){var i=t.length,n=x_(i/2);return i&lt;8?O_(t,e):C_(t,E_(__(t,0,n),e),E_(__(t,n),e),e)},O_=function(t,e){for(var i,n,o=t.length,r=1;r&lt;o;){for(n=r,i=t[r];n&amp;&amp;e(t[n-1],i)&gt;0;)t[n]=t[--n];n!==r++&amp;&amp;(t[n]=i)}return t},C_=function(t,e,i,n){for(var o=e.length,r=i.length,s=0,a=0;s&lt;o||a&lt;r;)t[s+a]=s&lt;o&amp;&amp;a&lt;r?n(e[s],i[a])&lt;=0?e[s++]:i[a++]:s&lt;o?e[s++]:i[a++];return t},S_=E_,T_=tt.match(/firefox\\/(\\d+)/i),M_=!!T_&amp;&amp;+T_[1],P_=/MSIE|Trident/.test(tt),D_=tt.match(/AppleWebKit\\/(\\d+)\\./),I_=!!D_&amp;&amp;+D_[1],B_=_i,z_=g,N_=xt,F_=Rt,A_=Bi,j_=eo,R_=o,L_=S_,H_=Cu,W_=M_,q_=P_,V_=at,U_=I_,Y_=[],X_=z_(Y_.sort),G_=z_(Y_.push),K_=R_((function(){Y_.sort(void 0)})),$_=R_((function(){Y_.sort(null)})),Z_=H_(&quot;sort&quot;),Q_=!R_((function(){if(V_)return V_&lt;70;if(!(W_&amp;&amp;W_&gt;3)){if(q_)return!0;if(U_)return U_&lt;603;var t,e,i,n,o=&quot;&quot;;for(t=65;t&lt;76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(n=0;n&lt;47;n++)Y_.push({k:e+n,v:i})}for(Y_.sort((function(t,e){return e.v-t.v})),n=0;n&lt;Y_.length;n++)e=Y_[n].k.charAt(0),o.charAt(o.length-1)!==e&amp;&amp;(o+=e);return&quot;DGBEFHACIJK&quot;!==o}}));B_({target:&quot;Array&quot;,proto:!0,forced:K_||!$_||!Z_||!Q_},{sort:function(t){void 0!==t&amp;&amp;N_(t);var e=F_(this);if(Q_)return void 0===t?X_(e):X_(e,t);var i,n,o=[],r=A_(e);for(n=0;n&lt;r;n++)n in e&amp;&amp;G_(o,e[n]);for(L_(o,function(t){return function(e,i){return void 0===i?-1:void 0===e?1:void 0!==t?+t(e,i)||0:j_(e)&gt;j_(i)?1:-1}}(t)),i=o.length,n=0;n&lt;i;)e[n]=o[n++];for(;n&lt;r;)delete e[n++];return e}});var J_,tx=Tn(&quot;Array&quot;).sort,ex=J,ix=tx,nx=Array.prototype,ox=function(t){var e=t.sort;return t===nx||ex(nx,t)&amp;&amp;e===nx.sort?ix:e},rx=ox,sx=Tn(&quot;Array&quot;).keys,ax=Qn,hx=Wt,lx=J,dx=sx,cx=Array.prototype,ux={DOMTokenList:!0,NodeList:!0},fx=function(t){var e=t.keys;return t===cx||lx(cx,t)&amp;&amp;e===cx.keys||hx(ux,ax(t))?dx:e},px=Tn(&quot;Array&quot;).values,vx=Qn,gx=Wt,yx=J,mx=px,bx=Array.prototype,wx={DOMTokenList:!0,NodeList:!0},kx=function(t){var e=t.values;return t===bx||yx(bx,t)&amp;&amp;e===bx.values||gx(wx,vx(t))?mx:e},_x=Tn(&quot;Array&quot;).entries,xx=Qn,Ex=Wt,Ox=J,Cx=_x,Sx=Array.prototype,Tx={DOMTokenList:!0,NodeList:!0},Mx=function(t){var e=t.entries;return t===Sx||Ox(Sx,t)&amp;&amp;e===Sx.entries||Ex(Tx,xx(t))?Cx:e},Px=new Uint8Array(16);function Dx(){if(!J_&amp;&amp;!(J_=&quot;undefined&quot;!=typeof crypto&amp;&amp;crypto.getRandomValues&amp;&amp;crypto.getRandomValues.bind(crypto)||&quot;undefined&quot;!=typeof msCrypto&amp;&amp;&quot;function&quot;==typeof msCrypto.getRandomValues&amp;&amp;msCrypto.getRandomValues.bind(msCrypto)))throw new Error(&quot;crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported&quot;);return J_(Px)}var Ix=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Bx(t){return&quot;string&quot;==typeof t&amp;&amp;Ix.test(t)}for(var zx,Nx=[],Fx=0;Fx&lt;256;++Fx)Nx.push((Fx+256).toString(16).substr(1));function Ax(t,e,i){var n=(t=t||{}).random||(t.rng||Dx)();if(n[6]=15&amp;n[6]|64,n[8]=63&amp;n[8]|128,e){i=i||0;for(var o=0;o&lt;16;++o)e[i+o]=n[o];return e}return function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:0,i=(Nx[t[e+0]]+Nx[t[e+1]]+Nx[t[e+2]]+Nx[t[e+3]]+&quot;-&quot;+Nx[t[e+4]]+Nx[t[e+5]]+&quot;-&quot;+Nx[t[e+6]]+Nx[t[e+7]]+&quot;-&quot;+Nx[t[e+8]]+Nx[t[e+9]]+&quot;-&quot;+Nx[t[e+10]]+Nx[t[e+11]]+Nx[t[e+12]]+Nx[t[e+13]]+Nx[t[e+14]]+Nx[t[e+15]]).toLowerCase();if(!Bx(i))throw TypeError(&quot;Stringified UUID is invalid&quot;);return i}(n)}function jx(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function Rx(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=jx(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=jx(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}function Lx(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}function Hx(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return Wx(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Wx(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function Wx(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var qx=function(){function t(e,i,n){var o,r,s;Yd(this,t),$d(this,&quot;_source&quot;,void 0),$d(this,&quot;_transformers&quot;,void 0),$d(this,&quot;_target&quot;,void 0),$d(this,&quot;_listeners&quot;,{add:zn(o=this._add).call(o,this),remove:zn(r=this._remove).call(r,this),update:zn(s=this._update).call(s,this)}),this._source=e,this._transformers=i,this._target=n}return Kd(t,[{key:&quot;all&quot;,value:function(){return this._target.update(this._transformItems(this._source.get())),this}},{key:&quot;start&quot;,value:function(){return this._source.on(&quot;add&quot;,this._listeners.add),this._source.on(&quot;remove&quot;,this._listeners.remove),this._source.on(&quot;update&quot;,this._listeners.update),this}},{key:&quot;stop&quot;,value:function(){return this._source.off(&quot;add&quot;,this._listeners.add),this._source.off(&quot;remove&quot;,this._listeners.remove),this._source.off(&quot;update&quot;,this._listeners.update),this}},{key:&quot;_transformItems&quot;,value:function(t){var e;return i_(e=this._transformers).call(e,(function(t,e){return e(t)}),t)}},{key:&quot;_add&quot;,value:function(t,e){null!=e&amp;&amp;this._target.add(this._transformItems(this._source.get(e.items)))}},{key:&quot;_update&quot;,value:function(t,e){null!=e&amp;&amp;this._target.update(this._transformItems(this._source.get(e.items)))}},{key:&quot;_remove&quot;,value:function(t,e){null!=e&amp;&amp;this._target.remove(this._transformItems(e.oldData))}}]),t}(),Vx=function(){function t(e){Yd(this,t),$d(this,&quot;_source&quot;,void 0),$d(this,&quot;_transformers&quot;,[]),this._source=e}return Kd(t,[{key:&quot;filter&quot;,value:function(t){return this._transformers.push((function(e){return Xf(e).call(e,t)})),this}},{key:&quot;map&quot;,value:function(t){return this._transformers.push((function(e){return gu(e).call(e,t)})),this}},{key:&quot;flatMap&quot;,value:function(t){return this._transformers.push((function(e){return m_(e).call(e,t)})),this}},{key:&quot;to&quot;,value:function(t){return new qx(this._source,this._transformers,t)}}]),t}();function Ux(t){return&quot;string&quot;==typeof t||&quot;number&quot;==typeof t}var Yx=function(){function t(e){Yd(this,t),$d(this,&quot;delay&quot;,void 0),$d(this,&quot;max&quot;,void 0),$d(this,&quot;_queue&quot;,[]),$d(this,&quot;_timeout&quot;,null),$d(this,&quot;_extended&quot;,null),this.delay=null,this.max=1/0,this.setOptions(e)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){t&amp;&amp;void 0!==t.delay&amp;&amp;(this.delay=t.delay),t&amp;&amp;void 0!==t.max&amp;&amp;(this.max=t.max),this._flushIfNeeded()}},{key:&quot;destroy&quot;,value:function(){if(this.flush(),this._extended){for(var t=this._extended.object,e=this._extended.methods,i=0;i&lt;e.length;i++){var n=e[i];n.original?t[n.name]=n.original:delete t[n.name]}this._extended=null}}},{key:&quot;replace&quot;,value:function(t,e){var i=this,n=t[e];if(!n)throw new Error(&quot;Method &quot;+e+&quot; undefined&quot;);t[e]=function(){for(var t=arguments.length,e=new Array(t),o=0;o&lt;t;o++)e[o]=arguments[o];i.queue({args:e,fn:n,context:this})}}},{key:&quot;queue&quot;,value:function(t){&quot;function&quot;==typeof t?this._queue.push({fn:t}):this._queue.push(t),this._flushIfNeeded()}},{key:&quot;_flushIfNeeded&quot;,value:function(){var t=this;this._queue.length&gt;this.max&amp;&amp;this.flush(),null!=this._timeout&amp;&amp;(clearTimeout(this._timeout),this._timeout=null),this.queue.length&gt;0&amp;&amp;&quot;number&quot;==typeof this.delay&amp;&amp;(this._timeout=Sv((function(){t.flush()}),this.delay))}},{key:&quot;flush&quot;,value:function(){var t,e;Fu(t=ff(e=this._queue).call(e,0)).call(t,(function(t){t.fn.apply(t.context||t.fn,t.args||[])}))}}],[{key:&quot;extend&quot;,value:function(e,i){var n=new t(i);if(void 0!==e.flush)throw new Error(&quot;Target object already has a property flush&quot;);e.flush=function(){n.flush()};var o=[{name:&quot;flush&quot;,original:void 0}];if(i&amp;&amp;i.replace)for(var r=0;r&lt;i.replace.length;r++){var s=i.replace[r];o.push({name:s,original:e[s]}),n.replace(e,s)}return n._extended={object:e,methods:o},n}}]),t}(),Xx=function(){function t(){Yd(this,t),$d(this,&quot;_subscribers&quot;,{&quot;*&quot;:[],add:[],remove:[],update:[]}),$d(this,&quot;subscribe&quot;,t.prototype.on),$d(this,&quot;unsubscribe&quot;,t.prototype.off)}return Kd(t,[{key:&quot;_trigger&quot;,value:function(t,e,i){var n,o;if(&quot;*&quot;===t)throw new Error(&quot;Cannot trigger event *&quot;);Fu(n=su(o=[]).call(o,Jc(this._subscribers[t]),Jc(this._subscribers[&quot;*&quot;]))).call(n,(function(n){n(t,e,null!=i?i:null)}))}},{key:&quot;on&quot;,value:function(t,e){&quot;function&quot;==typeof e&amp;&amp;this._subscribers[t].push(e)}},{key:&quot;off&quot;,value:function(t,e){var i;this._subscribers[t]=Xf(i=this._subscribers[t]).call(i,(function(t){return t!==e}))}}]),t}();zx=w_;var Gx=function(){function t(e){Yd(this,t),$d(this,&quot;_pairs&quot;,void 0),this._pairs=e}return Kd(t,[{key:zx,value:Rk.mark((function t(){var e,i,n,o,r;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Hx(this._pairs),t.prev=1,e.s();case 3:if((i=e.n()).done){t.next=9;break}return n=Kc(i.value,2),o=n[0],r=n[1],t.next=7,[o,r];case 7:t.next=3;break;case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),e.e(t.t0);case 14:return t.prev=14,e.f(),t.finish(14);case 17:case&quot;end&quot;:return t.stop()}}),t,this,[[1,11,14,17]])}))},{key:&quot;entries&quot;,value:Rk.mark((function t(){var e,i,n,o,r;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Hx(this._pairs),t.prev=1,e.s();case 3:if((i=e.n()).done){t.next=9;break}return n=Kc(i.value,2),o=n[0],r=n[1],t.next=7,[o,r];case 7:t.next=3;break;case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),e.e(t.t0);case 14:return t.prev=14,e.f(),t.finish(14);case 17:case&quot;end&quot;:return t.stop()}}),t,this,[[1,11,14,17]])}))},{key:&quot;keys&quot;,value:Rk.mark((function t(){var e,i,n,o;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Hx(this._pairs),t.prev=1,e.s();case 3:if((i=e.n()).done){t.next=9;break}return n=Kc(i.value,1),o=n[0],t.next=7,o;case 7:t.next=3;break;case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),e.e(t.t0);case 14:return t.prev=14,e.f(),t.finish(14);case 17:case&quot;end&quot;:return t.stop()}}),t,this,[[1,11,14,17]])}))},{key:&quot;values&quot;,value:Rk.mark((function t(){var e,i,n,o;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=Hx(this._pairs),t.prev=1,e.s();case 3:if((i=e.n()).done){t.next=9;break}return n=Kc(i.value,2),o=n[1],t.next=7,o;case 7:t.next=3;break;case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),e.e(t.t0);case 14:return t.prev=14,e.f(),t.finish(14);case 17:case&quot;end&quot;:return t.stop()}}),t,this,[[1,11,14,17]])}))},{key:&quot;toIdArray&quot;,value:function(){var t;return gu(t=Jc(this._pairs)).call(t,(function(t){return t[0]}))}},{key:&quot;toItemArray&quot;,value:function(){var t;return gu(t=Jc(this._pairs)).call(t,(function(t){return t[1]}))}},{key:&quot;toEntryArray&quot;,value:function(){return Jc(this._pairs)}},{key:&quot;toObjectMap&quot;,value:function(){var t,e=Kp(null),i=Hx(this._pairs);try{for(i.s();!(t=i.n()).done;){var n=Kc(t.value,2),o=n[0],r=n[1];e[o]=r}}catch(t){i.e(t)}finally{i.f()}return e}},{key:&quot;toMap&quot;,value:function(){return new Jw(this._pairs)}},{key:&quot;toIdSet&quot;,value:function(){return new b_(this.toIdArray())}},{key:&quot;toItemSet&quot;,value:function(){return new b_(this.toItemArray())}},{key:&quot;cache&quot;,value:function(){return new t(Jc(this._pairs))}},{key:&quot;distinct&quot;,value:function(t){var e,i=new b_,n=Hx(this._pairs);try{for(n.s();!(e=n.n()).done;){var o=Kc(e.value,2),r=o[0],s=o[1];i.add(t(s,r))}}catch(t){n.e(t)}finally{n.f()}return i}},{key:&quot;filter&quot;,value:function(e){var i=this._pairs;return new t($d({},w_,Rk.mark((function t(){var n,o,r,s,a;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=Hx(i),t.prev=1,n.s();case 3:if((o=n.n()).done){t.next=10;break}if(r=Kc(o.value,2),s=r[0],a=r[1],!e(a,s)){t.next=8;break}return t.next=8,[s,a];case 8:t.next=3;break;case 10:t.next=15;break;case 12:t.prev=12,t.t0=t.catch(1),n.e(t.t0);case 15:return t.prev=15,n.f(),t.finish(15);case 18:case&quot;end&quot;:return t.stop()}}),t,null,[[1,12,15,18]])}))))}},{key:&quot;forEach&quot;,value:function(t){var e,i=Hx(this._pairs);try{for(i.s();!(e=i.n()).done;){var n=Kc(e.value,2),o=n[0];t(n[1],o)}}catch(t){i.e(t)}finally{i.f()}}},{key:&quot;map&quot;,value:function(e){var i=this._pairs;return new t($d({},w_,Rk.mark((function t(){var n,o,r,s,a;return Rk.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=Hx(i),t.prev=1,n.s();case 3:if((o=n.n()).done){t.next=9;break}return r=Kc(o.value,2),s=r[0],a=r[1],t.next=7,[s,e(a,s)];case 7:t.next=3;break;case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),n.e(t.t0);case 14:return t.prev=14,n.f(),t.finish(14);case 17:case&quot;end&quot;:return t.stop()}}),t,null,[[1,11,14,17]])}))))}},{key:&quot;max&quot;,value:function(t){var e=k_(this._pairs),i=e.next();if(i.done)return null;for(var n=i.value[1],o=t(i.value[1],i.value[0]);!(i=e.next()).done;){var r=Kc(i.value,2),s=r[0],a=r[1],h=t(a,s);h&gt;o&amp;&amp;(o=h,n=a)}return n}},{key:&quot;min&quot;,value:function(t){var e=k_(this._pairs),i=e.next();if(i.done)return null;for(var n=i.value[1],o=t(i.value[1],i.value[0]);!(i=e.next()).done;){var r=Kc(i.value,2),s=r[0],a=r[1],h=t(a,s);h&lt;o&amp;&amp;(o=h,n=a)}return n}},{key:&quot;reduce&quot;,value:function(t,e){var i,n=Hx(this._pairs);try{for(n.s();!(i=n.n()).done;){var o=Kc(i.value,2),r=o[0];e=t(e,o[1],r)}}catch(t){n.e(t)}finally{n.f()}return e}},{key:&quot;sort&quot;,value:function(e){var i=this;return new t($d({},w_,(function(){var t;return k_(rx(t=Jc(i._pairs)).call(t,(function(t,i){var n=Kc(t,2),o=n[0],r=n[1],s=Kc(i,2),a=s[0],h=s[1];return e(r,h,o,a)})))})))}}]),t}();var Kx=function(t){zk(i,t);var e=Lx(i);function i(t,n){var o;return Yd(this,i),$d(Pk(o=e.call(this)),&quot;flush&quot;,void 0),$d(Pk(o),&quot;length&quot;,void 0),$d(Pk(o),&quot;_options&quot;,void 0),$d(Pk(o),&quot;_data&quot;,void 0),$d(Pk(o),&quot;_idProp&quot;,void 0),$d(Pk(o),&quot;_queue&quot;,null),t&amp;&amp;!lu(t)&amp;&amp;(n=t,t=[]),o._options=n||{},o._data=new Jw,o.length=0,o._idProp=o._options.fieldId||&quot;id&quot;,t&amp;&amp;t.length&amp;&amp;o.add(t),o.setOptions(n),o}return Kd(i,[{key:&quot;idProp&quot;,get:function(){return this._idProp}},{key:&quot;setOptions&quot;,value:function(t){t&amp;&amp;void 0!==t.queue&amp;&amp;(!1===t.queue?this._queue&amp;&amp;(this._queue.destroy(),this._queue=null):(this._queue||(this._queue=Yx.extend(this,{replace:[&quot;add&quot;,&quot;update&quot;,&quot;remove&quot;]})),t.queue&amp;&amp;&quot;object&quot;===Qc(t.queue)&amp;&amp;this._queue.setOptions(t.queue)))}},{key:&quot;add&quot;,value:function(t,e){var i,n=this,o=[];if(lu(t)){var r=gu(t).call(t,(function(t){return t[n._idProp]}));if(ck(r).call(r,(function(t){return n._data.has(t)})))throw new Error(&quot;A duplicate id was found in the parameter array.&quot;);for(var s=0,a=t.length;s&lt;a;s++)i=this._addItem(t[s]),o.push(i)}else{if(!t||&quot;object&quot;!==Qc(t))throw new Error(&quot;Unknown dataType&quot;);i=this._addItem(t),o.push(i)}return o.length&amp;&amp;this._trigger(&quot;add&quot;,{items:o},e),o}},{key:&quot;update&quot;,value:function(t,e){var i=this,n=[],o=[],r=[],s=[],a=this._idProp,h=function(t){var e=t[a];if(null!=e&amp;&amp;i._data.has(e)){var h=t,l=un({},i._data.get(e)),d=i._updateItem(h);o.push(d),s.push(h),r.push(l)}else{var c=i._addItem(t);n.push(c)}};if(lu(t))for(var l=0,d=t.length;l&lt;d;l++)t[l]&amp;&amp;&quot;object&quot;===Qc(t[l])?h(t[l]):console.warn(&quot;Ignoring input item, which is not an object at index &quot;+l);else{if(!t||&quot;object&quot;!==Qc(t))throw new Error(&quot;Unknown dataType&quot;);h(t)}if(n.length&amp;&amp;this._trigger(&quot;add&quot;,{items:n},e),o.length){var c={items:o,oldData:r,data:s};this._trigger(&quot;update&quot;,c,e)}return su(n).call(n,o)}},{key:&quot;updateOnly&quot;,value:function(t,e){var i,n=this;lu(t)||(t=[t]);var o=gu(i=gu(t).call(t,(function(t){var e=n._data.get(t[n._idProp]);if(null==e)throw new Error(&quot;Updating non-existent items is not allowed.&quot;);return{oldData:e,update:t}}))).call(i,(function(t){var e=t.oldData,i=t.update,o=e[n._idProp],r=By(e,i);return n._data.set(o,r),{id:o,oldData:e,updatedData:r}}));if(o.length){var r={items:gu(o).call(o,(function(t){return t.id})),oldData:gu(o).call(o,(function(t){return t.oldData})),data:gu(o).call(o,(function(t){return t.updatedData}))};return this._trigger(&quot;update&quot;,r,e),r.items}return[]}},{key:&quot;get&quot;,value:function(t,e){var i=void 0,n=void 0,o=void 0;Ux(t)?(i=t,o=e):lu(t)?(n=t,o=e):o=t;var r,s=o&amp;&amp;&quot;Object&quot;===o.returnType?&quot;Object&quot;:&quot;Array&quot;,a=o&amp;&amp;Xf(o),h=[],l=void 0,d=void 0,c=void 0;if(null!=i)(l=this._data.get(i))&amp;&amp;a&amp;&amp;!a(l)&amp;&amp;(l=void 0);else if(null!=n)for(var u=0,f=n.length;u&lt;f;u++)null==(l=this._data.get(n[u]))||a&amp;&amp;!a(l)||h.push(l);else for(var p,v=0,g=(d=Jc(fx(p=this._data).call(p))).length;v&lt;g;v++)c=d[v],null==(l=this._data.get(c))||a&amp;&amp;!a(l)||h.push(l);if(o&amp;&amp;o.order&amp;&amp;null==i&amp;&amp;this._sort(h,o.order),o&amp;&amp;o.fields){var y=o.fields;if(null!=i&amp;&amp;null!=l)l=this._filterFields(l,y);else for(var m=0,b=h.length;m&lt;b;m++)h[m]=this._filterFields(h[m],y)}if(&quot;Object&quot;==s){for(var w={},k=0,_=h.length;k&lt;_;k++){var x=h[k];w[x[this._idProp]]=x}return w}return null!=i?null!==(r=l)&amp;&amp;void 0!==r?r:null:h}},{key:&quot;getIds&quot;,value:function(t){var e=this._data,i=t&amp;&amp;Xf(t),n=t&amp;&amp;t.order,o=Jc(fx(e).call(e)),r=[];if(i)if(n){for(var s=[],a=0,h=o.length;a&lt;h;a++){var l=o[a],d=this._data.get(l);null!=d&amp;&amp;i(d)&amp;&amp;s.push(d)}this._sort(s,n);for(var c=0,u=s.length;c&lt;u;c++)r.push(s[c][this._idProp])}else for(var f=0,p=o.length;f&lt;p;f++){var v=o[f],g=this._data.get(v);null!=g&amp;&amp;i(g)&amp;&amp;r.push(g[this._idProp])}else if(n){for(var y=[],m=0,b=o.length;m&lt;b;m++){var w=o[m];y.push(e.get(w))}this._sort(y,n);for(var k=0,_=y.length;k&lt;_;k++)r.push(y[k][this._idProp])}else for(var x=0,E=o.length;x&lt;E;x++){var O=o[x],C=e.get(O);null!=C&amp;&amp;r.push(C[this._idProp])}return r}},{key:&quot;getDataSet&quot;,value:function(){return this}},{key:&quot;forEach&quot;,value:function(t,e){var i=e&amp;&amp;Xf(e),n=this._data,o=Jc(fx(n).call(n));if(e&amp;&amp;e.order)for(var r=this.get(e),s=0,a=r.length;s&lt;a;s++){var h=r[s];t(h,h[this._idProp])}else for(var l=0,d=o.length;l&lt;d;l++){var c=o[l],u=this._data.get(c);null==u||i&amp;&amp;!i(u)||t(u,c)}}},{key:&quot;map&quot;,value:function(t,e){for(var i=e&amp;&amp;Xf(e),n=[],o=this._data,r=Jc(fx(o).call(o)),s=0,a=r.length;s&lt;a;s++){var h=r[s],l=this._data.get(h);null==l||i&amp;&amp;!i(l)||n.push(t(l,h))}return e&amp;&amp;e.order&amp;&amp;this._sort(n,e.order),n}},{key:&quot;_filterFields&quot;,value:function(t,e){var i;return t?i_(i=lu(e)?e:bu(e)).call(i,(function(e,i){return e[i]=t[i],e}),{}):t}},{key:&quot;_sort&quot;,value:function(t,e){if(&quot;string&quot;==typeof e){var i=e;rx(t).call(t,(function(t,e){var n=t[i],o=e[i];return n&gt;o?1:n&lt;o?-1:0}))}else{if(&quot;function&quot;!=typeof e)throw new TypeError(&quot;Order must be a function or a string&quot;);rx(t).call(t,e)}}},{key:&quot;remove&quot;,value:function(t,e){for(var i=[],n=[],o=lu(t)?t:[t],r=0,s=o.length;r&lt;s;r++){var a=this._remove(o[r]);if(a){var h=a[this._idProp];null!=h&amp;&amp;(i.push(h),n.push(a))}}return i.length&amp;&amp;this._trigger(&quot;remove&quot;,{items:i,oldData:n},e),i}},{key:&quot;_remove&quot;,value:function(t){var e;if(Ux(t)?e=t:t&amp;&amp;&quot;object&quot;===Qc(t)&amp;&amp;(e=t[this._idProp]),null!=e&amp;&amp;this._data.has(e)){var i=this._data.get(e)||null;return this._data.delete(e),--this.length,i}return null}},{key:&quot;clear&quot;,value:function(t){for(var e,i=Jc(fx(e=this._data).call(e)),n=[],o=0,r=i.length;o&lt;r;o++)n.push(this._data.get(i[o]));return this._data.clear(),this.length=0,this._trigger(&quot;remove&quot;,{items:i,oldData:n},t),i}},{key:&quot;max&quot;,value:function(t){var e,i,n=null,o=null,r=Hx(kx(e=this._data).call(e));try{for(r.s();!(i=r.n()).done;){var s=i.value,a=s[t];&quot;number&quot;==typeof a&amp;&amp;(null==o||a&gt;o)&amp;&amp;(n=s,o=a)}}catch(t){r.e(t)}finally{r.f()}return n||null}},{key:&quot;min&quot;,value:function(t){var e,i,n=null,o=null,r=Hx(kx(e=this._data).call(e));try{for(r.s();!(i=r.n()).done;){var s=i.value,a=s[t];&quot;number&quot;==typeof a&amp;&amp;(null==o||a&lt;o)&amp;&amp;(n=s,o=a)}}catch(t){r.e(t)}finally{r.f()}return n||null}},{key:&quot;distinct&quot;,value:function(t){for(var e=this._data,i=Jc(fx(e).call(e)),n=[],o=0,r=0,s=i.length;r&lt;s;r++){for(var a=i[r],h=e.get(a)[t],l=!1,d=0;d&lt;o;d++)if(n[d]==h){l=!0;break}l||void 0===h||(n[o]=h,o++)}return n}},{key:&quot;_addItem&quot;,value:function(t){var e=function(t,e){return null==t[e]&amp;&amp;(t[e]=Ax()),t}(t,this._idProp),i=e[this._idProp];if(this._data.has(i))throw new Error(&quot;Cannot add item: item with id &quot;+i+&quot; already exists&quot;);return this._data.set(i,e),++this.length,i}},{key:&quot;_updateItem&quot;,value:function(t){var e=t[this._idProp];if(null==e)throw new Error(&quot;Cannot update item: item has no id (item: &quot;+gv(t)+&quot;)&quot;);var i=this._data.get(e);if(!i)throw new Error(&quot;Cannot update item: no item with id &quot;+e+&quot; found&quot;);return this._data.set(e,Rx(Rx({},i),t)),e}},{key:&quot;stream&quot;,value:function(t){if(t){var e=this._data;return new Gx($d({},w_,Rk.mark((function i(){var n,o,r,s;return Rk.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:n=Hx(t),i.prev=1,n.s();case 3:if((o=n.n()).done){i.next=11;break}if(r=o.value,null==(s=e.get(r))){i.next=9;break}return i.next=9,[r,s];case 9:i.next=3;break;case 11:i.next=16;break;case 13:i.prev=13,i.t0=i.catch(1),n.e(i.t0);case 16:return i.prev=16,n.f(),i.finish(16);case 19:case&quot;end&quot;:return i.stop()}}),i,null,[[1,13,16,19]])}))))}var i;return new Gx($d({},w_,zn(i=Mx(this._data)).call(i,this._data)))}}]),i}(Xx),$x=function(t){zk(i,t);var e=Lx(i);function i(t,n){var o,r;return Yd(this,i),$d(Pk(r=e.call(this)),&quot;length&quot;,0),$d(Pk(r),&quot;_listener&quot;,void 0),$d(Pk(r),&quot;_data&quot;,void 0),$d(Pk(r),&quot;_ids&quot;,new b_),$d(Pk(r),&quot;_options&quot;,void 0),r._options=n||{},r._listener=zn(o=r._onEvent).call(o,Pk(r)),r.setData(t),r}return Kd(i,[{key:&quot;idProp&quot;,get:function(){return this.getDataSet().idProp}},{key:&quot;setData&quot;,value:function(t){if(this._data){this._data.off&amp;&amp;this._data.off(&quot;*&quot;,this._listener);var e=this._data.getIds({filter:Xf(this._options)}),i=this._data.get(e);this._ids.clear(),this.length=0,this._trigger(&quot;remove&quot;,{items:e,oldData:i})}if(null!=t){this._data=t;for(var n=this._data.getIds({filter:Xf(this._options)}),o=0,r=n.length;o&lt;r;o++){var s=n[o];this._ids.add(s)}this.length=n.length,this._trigger(&quot;add&quot;,{items:n})}else this._data=new Kx;this._data.on&amp;&amp;this._data.on(&quot;*&quot;,this._listener)}},{key:&quot;refresh&quot;,value:function(){for(var t=this._data.getIds({filter:Xf(this._options)}),e=Jc(this._ids),i={},n=[],o=[],r=[],s=0,a=t.length;s&lt;a;s++){var h=t[s];i[h]=!0,this._ids.has(h)||(n.push(h),this._ids.add(h))}for(var l=0,d=e.length;l&lt;d;l++){var c=e[l],u=this._data.get(c);null==u?console.error(&quot;If you see this, report it please.&quot;):i[c]||(o.push(c),r.push(u),this._ids.delete(c))}this.length+=n.length-o.length,n.length&amp;&amp;this._trigger(&quot;add&quot;,{items:n}),o.length&amp;&amp;this._trigger(&quot;remove&quot;,{items:o,oldData:r})}},{key:&quot;get&quot;,value:function(t,e){if(null==this._data)return null;var i,n=null;Ux(t)||lu(t)?(n=t,i=e):i=t;var o=un({},this._options,i),r=Xf(this._options),s=i&amp;&amp;Xf(i);return r&amp;&amp;s&amp;&amp;(o.filter=function(t){return r(t)&amp;&amp;s(t)}),null==n?this._data.get(o):this._data.get(n,o)}},{key:&quot;getIds&quot;,value:function(t){if(this._data.length){var e,i=Xf(this._options),n=null!=t?Xf(t):null;return e=n?i?function(t){return i(t)&amp;&amp;n(t)}:n:i,this._data.getIds({filter:e,order:t&amp;&amp;t.order})}return[]}},{key:&quot;forEach&quot;,value:function(t,e){if(this._data){var i,n,o=Xf(this._options),r=e&amp;&amp;Xf(e);n=r?o?function(t){return o(t)&amp;&amp;r(t)}:r:o,Fu(i=this._data).call(i,t,{filter:n,order:e&amp;&amp;e.order})}}},{key:&quot;map&quot;,value:function(t,e){if(this._data){var i,n,o=Xf(this._options),r=e&amp;&amp;Xf(e);return n=r?o?function(t){return o(t)&amp;&amp;r(t)}:r:o,gu(i=this._data).call(i,t,{filter:n,order:e&amp;&amp;e.order})}return[]}},{key:&quot;getDataSet&quot;,value:function(){return this._data.getDataSet()}},{key:&quot;stream&quot;,value:function(t){var e;return this._data.stream(t||$d({},w_,zn(e=fx(this._ids)).call(e,this._ids)))}},{key:&quot;dispose&quot;,value:function(){var t;null!==(t=this._data)&amp;&amp;void 0!==t&amp;&amp;t.off&amp;&amp;this._data.off(&quot;*&quot;,this._listener);var e,n=&quot;This data view has already been disposed of.&quot;,o={get:function(){throw new Error(n)},set:function(){throw new Error(n)},configurable:!1},r=Hx(hu(i.prototype));try{for(r.s();!(e=r.n()).done;){var s=e.value;Ud(this,s,o)}}catch(t){r.e(t)}finally{r.f()}}},{key:&quot;_onEvent&quot;,value:function(t,e,i){if(e&amp;&amp;e.items&amp;&amp;this._data){var n=e.items,o=[],r=[],s=[],a=[],h=[],l=[];switch(t){case&quot;add&quot;:for(var d=0,c=n.length;d&lt;c;d++){var u=n[d];this.get(u)&amp;&amp;(this._ids.add(u),o.push(u))}break;case&quot;update&quot;:for(var f=0,p=n.length;f&lt;p;f++){var v=n[f];this.get(v)?this._ids.has(v)?(r.push(v),h.push(e.data[f]),a.push(e.oldData[f])):(this._ids.add(v),o.push(v)):this._ids.has(v)&amp;&amp;(this._ids.delete(v),s.push(v),l.push(e.oldData[f]))}break;case&quot;remove&quot;:for(var g=0,y=n.length;g&lt;y;g++){var m=n[g];this._ids.has(m)&amp;&amp;(this._ids.delete(m),s.push(m),l.push(e.oldData[g]))}}this.length+=o.length-s.length,o.length&amp;&amp;this._trigger(&quot;add&quot;,{items:o},i),r.length&amp;&amp;this._trigger(&quot;update&quot;,{items:r,oldData:a,data:h},i),s.length&amp;&amp;this._trigger(&quot;remove&quot;,{items:s,oldData:l},i)}}}]),i}(Xx);function Zx(t,e){return&quot;object&quot;===Qc(e)&amp;&amp;null!==e&amp;&amp;t===e.idProp&amp;&amp;&quot;function&quot;==typeof e.add&amp;&amp;&quot;function&quot;==typeof e.clear&amp;&amp;&quot;function&quot;==typeof e.distinct&amp;&amp;&quot;function&quot;==typeof Fu(e)&amp;&amp;&quot;function&quot;==typeof e.get&amp;&amp;&quot;function&quot;==typeof e.getDataSet&amp;&amp;&quot;function&quot;==typeof e.getIds&amp;&amp;&quot;number&quot;==typeof e.length&amp;&amp;&quot;function&quot;==typeof gu(e)&amp;&amp;&quot;function&quot;==typeof e.max&amp;&amp;&quot;function&quot;==typeof e.min&amp;&amp;&quot;function&quot;==typeof e.off&amp;&amp;&quot;function&quot;==typeof e.on&amp;&amp;&quot;function&quot;==typeof e.remove&amp;&amp;&quot;function&quot;==typeof e.setOptions&amp;&amp;&quot;function&quot;==typeof e.stream&amp;&amp;&quot;function&quot;==typeof e.update&amp;&amp;&quot;function&quot;==typeof e.updateOnly}function Qx(t,e){return&quot;object&quot;===Qc(e)&amp;&amp;null!==e&amp;&amp;t===e.idProp&amp;&amp;&quot;function&quot;==typeof Fu(e)&amp;&amp;&quot;function&quot;==typeof e.get&amp;&amp;&quot;function&quot;==typeof e.getDataSet&amp;&amp;&quot;function&quot;==typeof e.getIds&amp;&amp;&quot;number&quot;==typeof e.length&amp;&amp;&quot;function&quot;==typeof gu(e)&amp;&amp;&quot;function&quot;==typeof e.off&amp;&amp;&quot;function&quot;==typeof e.on&amp;&amp;&quot;function&quot;==typeof e.stream&amp;&amp;Zx(t,e.getDataSet())}var Jx=Object.freeze({__proto__:null,DELETE:Iy,DataSet:Kx,DataStream:Gx,DataView:$x,Queue:Yx,createNewDataPipeFrom:function(t){return new Vx(t)},isDataSetLike:Zx,isDataViewLike:Qx}),tE=n,eE=o,iE=eo,nE=cp.trim,oE=g(&quot;&quot;.charAt),rE=tE.parseFloat,sE=tE.Symbol,aE=sE&amp;&amp;sE.iterator,hE=1/rE(&quot;\\t\\n\\v\\f\\r                　\\u2028\\u2029\\ufeff-0&quot;)!=-1/0||aE&amp;&amp;!eE((function(){rE(Object(aE))}))?function(t){var e=nE(iE(t)),i=rE(e);return 0===i&amp;&amp;&quot;-&quot;==oE(e,0)?-0:i}:rE;_i({global:!0,forced:parseFloat!=hE},{parseFloat:hE});var lE=X.parseFloat,dE=_i,cE=o,uE=hh.f;dE({target:&quot;Object&quot;,stat:!0,forced:cE((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:uE});var fE=X.Object,pE=function(t){return fE.getOwnPropertyNames(t)},vE=pE;function gE(t,e){var i=[&quot;node&quot;,&quot;edge&quot;,&quot;label&quot;],n=!0,o=Mm(e,&quot;chosen&quot;);if(&quot;boolean&quot;==typeof o)n=o;else if(&quot;object&quot;===Qc(o)){if(-1===Fp(i).call(i,t))throw new Error(&quot;choosify: subOption '&quot;+t+&quot;' should be one of '&quot;+i.join(&quot;', '&quot;)+&quot;'&quot;);var r=Mm(e,[&quot;chosen&quot;,t]);&quot;boolean&quot;!=typeof r&amp;&amp;&quot;function&quot;!=typeof r||(n=r)}return n}function yE(t,e,i){if(t.width&lt;=0||t.height&lt;=0)return!1;if(void 0!==i){var n={x:e.x-i.x,y:e.y-i.y};if(0!==i.angle){var o=-i.angle;e={x:Math.cos(o)*n.x-Math.sin(o)*n.y,y:Math.sin(o)*n.x+Math.cos(o)*n.y}}else e=n}var r=t.x+t.width,s=t.y+t.width;return t.left&lt;e.x&amp;&amp;r&gt;e.x&amp;&amp;t.top&lt;e.y&amp;&amp;s&gt;e.y}function mE(t){return&quot;string&quot;==typeof t&amp;&amp;&quot;&quot;!==t}function bE(t,e,i,n){var o=n.x,r=n.y;if(&quot;function&quot;==typeof n.distanceToBorder){var s=n.distanceToBorder(t,e),a=Math.sin(e)*s,h=Math.cos(e)*s;h===s?(o+=s,r=n.y):a===s?(o=n.x,r-=s):(o+=h,r-=a)}else n.shape.width&gt;n.shape.height?(o=n.x+.5*n.shape.width,r=n.y-i):(o=n.x+i,r=n.y-.5*n.shape.height);return{x:o,y:r}}var wE=function(){function t(e){Yd(this,t),this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}return Kd(t,[{key:&quot;_add&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:&quot;normal&quot;;void 0===this.lines[t]&amp;&amp;(this.lines[t]={width:0,height:0,blocks:[]});var n=e;void 0!==e&amp;&amp;&quot;&quot;!==e||(n=&quot; &quot;);var o=this.measureText(n,i),r=un({},kx(o));r.text=e,r.width=o.width,r.mod=i,void 0!==e&amp;&amp;&quot;&quot;!==e||(r.width=0),this.lines[t].blocks.push(r),this.lines[t].width+=r.width}},{key:&quot;curWidth&quot;,value:function(){var t=this.lines[this.current];return void 0===t?0:t.width}},{key:&quot;append&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:&quot;normal&quot;;this._add(this.current,t,e)}},{key:&quot;newLine&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:&quot;normal&quot;;this._add(this.current,t,e),this.current++}},{key:&quot;determineLineHeights&quot;,value:function(){for(var t=0;t&lt;this.lines.length;t++){var e=this.lines[t],i=0;if(void 0!==e.blocks)for(var n=0;n&lt;e.blocks.length;n++){var o=e.blocks[n];i&lt;o.height&amp;&amp;(i=o.height)}e.height=i}}},{key:&quot;determineLabelSize&quot;,value:function(){for(var t=0,e=0,i=0;i&lt;this.lines.length;i++){var n=this.lines[i];n.width&gt;t&amp;&amp;(t=n.width),e+=n.height}this.width=t,this.height=e}},{key:&quot;removeEmptyBlocks&quot;,value:function(){for(var t=[],e=0;e&lt;this.lines.length;e++){var i=this.lines[e];if(0!==i.blocks.length&amp;&amp;(e!==this.lines.length-1||0!==i.width)){var n={};un(n,i),n.blocks=[];for(var o=void 0,r=[],s=0;s&lt;i.blocks.length;s++){var a=i.blocks[s];0!==a.width?r.push(a):void 0===o&amp;&amp;(o=a)}0===r.length&amp;&amp;void 0!==o&amp;&amp;r.push(o),n.blocks=r,t.push(n)}}return t}},{key:&quot;finalize&quot;,value:function(){this.determineLineHeights(),this.determineLabelSize();var t=this.removeEmptyBlocks();return{width:this.width,height:this.height,lines:t}}}]),t}(),kE={&quot;&lt;b&gt;&quot;:/&lt;b&gt;/,&quot;&lt;i&gt;&quot;:/&lt;i&gt;/,&quot;&lt;code&gt;&quot;:/&lt;code&gt;/,&quot;&lt;/b&gt;&quot;:/&lt;\\/b&gt;/,&quot;&lt;/i&gt;&quot;:/&lt;\\/i&gt;/,&quot;&lt;/code&gt;&quot;:/&lt;\\/code&gt;/,&quot;*&quot;:/\\*/,_:/_/,&quot;`&quot;:/`/,afterBold:/[^*]/,afterItal:/[^_]/,afterMono:/[^`]/},_E=function(){function t(e){Yd(this,t),this.text=e,this.bold=!1,this.ital=!1,this.mono=!1,this.spacing=!1,this.position=0,this.buffer=&quot;&quot;,this.modStack=[],this.blocks=[]}return Kd(t,[{key:&quot;mod&quot;,value:function(){return 0===this.modStack.length?&quot;normal&quot;:this.modStack[0]}},{key:&quot;modName&quot;,value:function(){return 0===this.modStack.length?&quot;normal&quot;:&quot;mono&quot;===this.modStack[0]?&quot;mono&quot;:this.bold&amp;&amp;this.ital?&quot;boldital&quot;:this.bold?&quot;bold&quot;:this.ital?&quot;ital&quot;:void 0}},{key:&quot;emitBlock&quot;,value:function(){this.spacing&amp;&amp;(this.add(&quot; &quot;),this.spacing=!1),this.buffer.length&gt;0&amp;&amp;(this.blocks.push({text:this.buffer,mod:this.modName()}),this.buffer=&quot;&quot;)}},{key:&quot;add&quot;,value:function(t){&quot; &quot;===t&amp;&amp;(this.spacing=!0),this.spacing&amp;&amp;(this.buffer+=&quot; &quot;,this.spacing=!1),&quot; &quot;!=t&amp;&amp;(this.buffer+=t)}},{key:&quot;parseWS&quot;,value:function(t){return!!/[ \\t]/.test(t)&amp;&amp;(this.mono?this.add(t):this.spacing=!0,!0)}},{key:&quot;setTag&quot;,value:function(t){this.emitBlock(),this[t]=!0,this.modStack.unshift(t)}},{key:&quot;unsetTag&quot;,value:function(t){this.emitBlock(),this[t]=!1,this.modStack.shift()}},{key:&quot;parseStartTag&quot;,value:function(t,e){return!(this.mono||this[t]||!this.match(e))&amp;&amp;(this.setTag(t),!0)}},{key:&quot;match&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1],i=this.prepareRegExp(t),n=Kc(i,2),o=n[0],r=n[1],s=o.test(this.text.substr(this.position,r));return s&amp;&amp;e&amp;&amp;(this.position+=r-1),s}},{key:&quot;parseEndTag&quot;,value:function(t,e,i){var n=this.mod()===t;return!(!(n=&quot;mono&quot;===t?n&amp;&amp;this.mono:n&amp;&amp;!this.mono)||!this.match(e))&amp;&amp;(void 0!==i?(this.position===this.text.length-1||this.match(i,!1))&amp;&amp;this.unsetTag(t):this.unsetTag(t),!0)}},{key:&quot;replace&quot;,value:function(t,e){return!!this.match(t)&amp;&amp;(this.add(e),this.position+=length-1,!0)}},{key:&quot;prepareRegExp&quot;,value:function(t){var e,i;if(t instanceof RegExp)i=t,e=1;else{var n=kE[t];i=void 0!==n?n:new RegExp(t),e=t.length}return[i,e]}}]),t}(),xE=function(){function t(e,i,n,o){var r=this;Yd(this,t),this.ctx=e,this.parent=i,this.selected=n,this.hover=o;this.lines=new wE((function(t,i){if(void 0===t)return 0;var s=r.parent.getFormattingValues(e,n,o,i),a=0;&quot;&quot;!==t&amp;&amp;(a=r.ctx.measureText(t).width);return{width:a,values:s}}))}return Kd(t,[{key:&quot;process&quot;,value:function(t){if(!mE(t))return this.lines.finalize();var e=this.parent.fontOptions;t=(t=t.replace(/\\r\\n/g,&quot;\\n&quot;)).replace(/\\r/g,&quot;\\n&quot;);var i=String(t).split(&quot;\\n&quot;),n=i.length;if(e.multi)for(var o=0;o&lt;n;o++){var r=this.splitBlocks(i[o],e.multi);if(void 0!==r)if(0!==r.length){if(e.maxWdt&gt;0)for(var s=0;s&lt;r.length;s++){var a=r[s].mod,h=r[s].text;this.splitStringIntoLines(h,a,!0)}else for(var l=0;l&lt;r.length;l++){var d=r[l].mod,c=r[l].text;this.lines.append(c,d)}this.lines.newLine()}else this.lines.newLine(&quot;&quot;)}else if(e.maxWdt&gt;0)for(var u=0;u&lt;n;u++)this.splitStringIntoLines(i[u]);else for(var f=0;f&lt;n;f++)this.lines.newLine(i[f]);return this.lines.finalize()}},{key:&quot;decodeMarkupSystem&quot;,value:function(t){var e=&quot;none&quot;;return&quot;markdown&quot;===t||&quot;md&quot;===t?e=&quot;markdown&quot;:!0!==t&amp;&amp;&quot;html&quot;!==t||(e=&quot;html&quot;),e}},{key:&quot;splitHtmlBlocks&quot;,value:function(t){for(var e=new _E(t),i=function(t){return!!/&amp;/.test(t)&amp;&amp;(e.replace(e.text,&quot;&amp;lt;&quot;,&quot;&lt;&quot;)||e.replace(e.text,&quot;&amp;amp;&quot;,&quot;&amp;&quot;)||e.add(&quot;&amp;&quot;),!0)};e.position&lt;e.text.length;){var n=e.text.charAt(e.position);e.parseWS(n)||/&lt;/.test(n)&amp;&amp;(e.parseStartTag(&quot;bold&quot;,&quot;&lt;b&gt;&quot;)||e.parseStartTag(&quot;ital&quot;,&quot;&lt;i&gt;&quot;)||e.parseStartTag(&quot;mono&quot;,&quot;&lt;code&gt;&quot;)||e.parseEndTag(&quot;bold&quot;,&quot;&lt;/b&gt;&quot;)||e.parseEndTag(&quot;ital&quot;,&quot;&lt;/i&gt;&quot;)||e.parseEndTag(&quot;mono&quot;,&quot;&lt;/code&gt;&quot;))||i(n)||e.add(n),e.position++}return e.emitBlock(),e.blocks}},{key:&quot;splitMarkdownBlocks&quot;,value:function(t){for(var e=this,i=new _E(t),n=!0,o=function(t){return!!/\\\\/.test(t)&amp;&amp;(i.position&lt;e.text.length+1&amp;&amp;(i.position++,t=e.text.charAt(i.position),/ \\t/.test(t)?i.spacing=!0:(i.add(t),n=!1)),!0)};i.position&lt;i.text.length;){var r=i.text.charAt(i.position);i.parseWS(r)||o(r)||(n||i.spacing)&amp;&amp;(i.parseStartTag(&quot;bold&quot;,&quot;*&quot;)||i.parseStartTag(&quot;ital&quot;,&quot;_&quot;)||i.parseStartTag(&quot;mono&quot;,&quot;`&quot;))||i.parseEndTag(&quot;bold&quot;,&quot;*&quot;,&quot;afterBold&quot;)||i.parseEndTag(&quot;ital&quot;,&quot;_&quot;,&quot;afterItal&quot;)||i.parseEndTag(&quot;mono&quot;,&quot;`&quot;,&quot;afterMono&quot;)||(i.add(r),n=!1),i.position++}return i.emitBlock(),i.blocks}},{key:&quot;splitBlocks&quot;,value:function(t,e){var i=this.decodeMarkupSystem(e);return&quot;none&quot;===i?[{text:t,mod:&quot;normal&quot;}]:&quot;markdown&quot;===i?this.splitMarkdownBlocks(t):&quot;html&quot;===i?this.splitHtmlBlocks(t):void 0}},{key:&quot;overMaxWidth&quot;,value:function(t){var e=this.ctx.measureText(t).width;return this.lines.curWidth()+e&gt;this.parent.fontOptions.maxWdt}},{key:&quot;getLongestFit&quot;,value:function(t){for(var e=&quot;&quot;,i=0;i&lt;t.length;){var n=e+(&quot;&quot;===e?&quot;&quot;:&quot; &quot;)+t[i];if(this.overMaxWidth(n))break;e=n,i++}return i}},{key:&quot;getLongestFitWord&quot;,value:function(t){for(var e=0;e&lt;t.length&amp;&amp;!this.overMaxWidth(au(t).call(t,0,e));)e++;return e}},{key:&quot;splitStringIntoLines&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:&quot;normal&quot;,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2];this.parent.getFormattingValues(this.ctx,this.selected,this.hover,e);for(var n=(t=(t=t.replace(/^( +)/g,&quot;$1\\r&quot;)).replace(/([^\\r][^ ]*)( +)/g,&quot;$1\\r$2\\r&quot;)).split(&quot;\\r&quot;);n.length&gt;0;){var o=this.getLongestFit(n);if(0===o){var r=n[0],s=this.getLongestFitWord(r);this.lines.newLine(au(r).call(r,0,s),e),n[0]=au(r).call(r,s)}else{var a=o;&quot; &quot;===n[o-1]?o--:&quot; &quot;===n[a]&amp;&amp;a++;var h=au(n).call(n,0,o).join(&quot;&quot;);o==n.length&amp;&amp;i?this.lines.append(h,e):this.lines.newLine(h,e),n=au(n).call(n,a)}}}}]),t}(),EE=[&quot;bold&quot;,&quot;ital&quot;,&quot;boldital&quot;,&quot;mono&quot;],OE=function(){function t(e,i){var n=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2];Yd(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=n}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){if(this.elementOptions=t,this.initFontOptions(t.font),mE(t.label)?this.labelDirty=!0:t.label=void 0,void 0!==t.font&amp;&amp;null!==t.font)if(&quot;string&quot;==typeof t.font)this.baseSize=this.fontOptions.size;else if(&quot;object&quot;===Qc(t.font)){var e=t.font.size;void 0!==e&amp;&amp;(this.baseSize=e)}}},{key:&quot;initFontOptions&quot;,value:function(e){var i=this;hm(EE,(function(t){i.fontOptions[t]={}})),t.parseFontString(this.fontOptions,e)?this.fontOptions.vadjust=0:hm(e,(function(t,e){null!=t&amp;&amp;&quot;object&quot;!==Qc(t)&amp;&amp;(i.fontOptions[e]=t)}))}},{key:&quot;constrain&quot;,value:function(t){var e={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:&quot;middle&quot;},i=Mm(t,&quot;widthConstraint&quot;);if(&quot;number&quot;==typeof i)e.maxWdt=Number(i),e.minWdt=Number(i);else if(&quot;object&quot;===Qc(i)){var n=Mm(t,[&quot;widthConstraint&quot;,&quot;maximum&quot;]);&quot;number&quot;==typeof n&amp;&amp;(e.maxWdt=Number(n));var o=Mm(t,[&quot;widthConstraint&quot;,&quot;minimum&quot;]);&quot;number&quot;==typeof o&amp;&amp;(e.minWdt=Number(o))}var r=Mm(t,&quot;heightConstraint&quot;);if(&quot;number&quot;==typeof r)e.minHgt=Number(r);else if(&quot;object&quot;===Qc(r)){var s=Mm(t,[&quot;heightConstraint&quot;,&quot;minimum&quot;]);&quot;number&quot;==typeof s&amp;&amp;(e.minHgt=Number(s));var a=Mm(t,[&quot;heightConstraint&quot;,&quot;valign&quot;]);&quot;string&quot;==typeof a&amp;&amp;(&quot;top&quot;!==a&amp;&amp;&quot;bottom&quot;!==a||(e.valign=a))}return e}},{key:&quot;update&quot;,value:function(t,e){this.setOptions(t,!0),this.propagateFonts(e),nm(this.fontOptions,this.constrain(e)),this.fontOptions.chooser=gE(&quot;label&quot;,e)}},{key:&quot;adjustSizes&quot;,value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&amp;&amp;(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&amp;&amp;(this.fontOptions.minHgt-=i)}},{key:&quot;addFontOptionsToPile&quot;,value:function(t,e){for(var i=0;i&lt;e.length;++i)this.addFontToPile(t,e[i])}},{key:&quot;addFontToPile&quot;,value:function(t,e){if(void 0!==e&amp;&amp;void 0!==e.font&amp;&amp;null!==e.font){var i=e.font;t.push(i)}}},{key:&quot;getBasicOptions&quot;,value:function(e){for(var i={},n=0;n&lt;e.length;++n){var o=e[n],r={};t.parseFontString(r,o)&amp;&amp;(o=r),hm(o,(function(t,e){void 0!==t&amp;&amp;(Object.prototype.hasOwnProperty.call(i,e)||(-1!==Fp(EE).call(EE,e)?i[e]={}:i[e]=t))}))}return i}},{key:&quot;getFontOption&quot;,value:function(e,i,n){for(var o,r=0;r&lt;e.length;++r){var s=e[r];if(Object.prototype.hasOwnProperty.call(s,i)){if(null==(o=s[i]))continue;var a={};if(t.parseFontString(a,o)&amp;&amp;(o=a),Object.prototype.hasOwnProperty.call(o,n))return o[n]}}if(Object.prototype.hasOwnProperty.call(this.fontOptions,n))return this.fontOptions[n];throw new Error(&quot;Did not find value for multi-font for property: '&quot;+n+&quot;'&quot;)}},{key:&quot;getFontOptions&quot;,value:function(t,e){for(var i={},n=[&quot;color&quot;,&quot;size&quot;,&quot;face&quot;,&quot;mod&quot;,&quot;vadjust&quot;],o=0;o&lt;n.length;++o){var r=n[o];i[r]=this.getFontOption(t,e,r)}return i}},{key:&quot;propagateFonts&quot;,value:function(t){var e=this,i=[];this.addFontOptionsToPile(i,t),this.fontOptions=this.getBasicOptions(i);for(var n=function(t){var n=EE[t],o=e.fontOptions[n];hm(e.getFontOptions(i,n),(function(t,e){o[e]=t})),o.size=Number(o.size),o.vadjust=Number(o.vadjust)},o=0;o&lt;EE.length;++o)n(o)}},{key:&quot;draw&quot;,value:function(t,e,i,n,o){var r=arguments.length&gt;5&amp;&amp;void 0!==arguments[5]?arguments[5]:&quot;middle&quot;;if(void 0!==this.elementOptions.label){var s=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&amp;&amp;s&lt;this.elementOptions.scaling.label.drawThreshold-1||(s&gt;=this.elementOptions.scaling.label.maxVisible&amp;&amp;(s=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(t,n,o,e,i,r),this._drawBackground(t),this._drawText(t,e,this.size.yLine,r,s))}}},{key:&quot;_drawBackground&quot;,value:function(t){if(void 0!==this.fontOptions.background&amp;&amp;&quot;none&quot;!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;var e=this.getSize();t.fillRect(e.left,e.top,e.width,e.height)}}},{key:&quot;_drawText&quot;,value:function(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:&quot;middle&quot;,o=arguments.length&gt;4?arguments[4]:void 0,r=this._setAlignment(t,e,i,n),s=Kc(r,2);e=s[0],i=s[1],t.textAlign=&quot;left&quot;,e-=this.size.width/2,this.fontOptions.valign&amp;&amp;this.size.height&gt;this.size.labelHeight&amp;&amp;(&quot;top&quot;===this.fontOptions.valign&amp;&amp;(i-=(this.size.height-this.size.labelHeight)/2),&quot;bottom&quot;===this.fontOptions.valign&amp;&amp;(i+=(this.size.height-this.size.labelHeight)/2));for(var a=0;a&lt;this.lineCount;a++){var h=this.lines[a];if(h&amp;&amp;h.blocks){var l=0;this.isEdgeLabel||&quot;center&quot;===this.fontOptions.align?l+=(this.size.width-h.width)/2:&quot;right&quot;===this.fontOptions.align&amp;&amp;(l+=this.size.width-h.width);for(var d=0;d&lt;h.blocks.length;d++){var c=h.blocks[d];t.font=c.font;var u=this._getColor(c.color,o,c.strokeColor),f=Kc(u,2),p=f[0],v=f[1];c.strokeWidth&gt;0&amp;&amp;(t.lineWidth=c.strokeWidth,t.strokeStyle=v,t.lineJoin=&quot;round&quot;),t.fillStyle=p,c.strokeWidth&gt;0&amp;&amp;t.strokeText(c.text,e+l,i+c.vadjust),t.fillText(c.text,e+l,i+c.vadjust),l+=c.width}i+=h.height}}}},{key:&quot;_setAlignment&quot;,value:function(t,e,i,n){if(this.isEdgeLabel&amp;&amp;&quot;horizontal&quot;!==this.fontOptions.align&amp;&amp;!1===this.pointToSelf){e=0,i=0;&quot;top&quot;===this.fontOptions.align?(t.textBaseline=&quot;alphabetic&quot;,i-=4):&quot;bottom&quot;===this.fontOptions.align?(t.textBaseline=&quot;hanging&quot;,i+=4):t.textBaseline=&quot;middle&quot;}else t.textBaseline=n;return[e,i]}},{key:&quot;_getColor&quot;,value:function(t,e,i){var n=t||&quot;#000000&quot;,o=i||&quot;#ffffff&quot;;if(e&lt;=this.elementOptions.scaling.label.drawThreshold){var r=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));n=pm(n,r),o=pm(o,r)}return[n,o]}},{key:&quot;getTextSize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:&quot;getSize&quot;,value:function(){var t=this.size.left,e=this.size.top-1;if(this.isEdgeLabel){var i=.5*-this.size.width;switch(this.fontOptions.align){case&quot;middle&quot;:t=i,e=.5*-this.size.height;break;case&quot;top&quot;:t=i,e=-(this.size.height+2);break;case&quot;bottom&quot;:t=i,e=2}}return{left:t,top:e,width:this.size.width,height:this.size.height}}},{key:&quot;calculateLabelSize&quot;,value:function(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:0,o=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]?arguments[4]:0,r=arguments.length&gt;5&amp;&amp;void 0!==arguments[5]?arguments[5]:&quot;middle&quot;;this._processLabel(t,e,i),this.size.left=n-.5*this.size.width,this.size.top=o-.5*this.size.height,this.size.yLine=o+.5*(1-this.lineCount)*this.fontOptions.size,&quot;hanging&quot;===r&amp;&amp;(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}},{key:&quot;getFormattingValues&quot;,value:function(t,e,i,n){var o=function(t,e,i){return&quot;normal&quot;===e?&quot;mod&quot;===i?&quot;&quot;:t[i]:void 0!==t[e][i]?t[e][i]:t[i]},r={color:o(this.fontOptions,n,&quot;color&quot;),size:o(this.fontOptions,n,&quot;size&quot;),face:o(this.fontOptions,n,&quot;face&quot;),mod:o(this.fontOptions,n,&quot;mod&quot;),vadjust:o(this.fontOptions,n,&quot;vadjust&quot;),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(e||i)&amp;&amp;(&quot;normal&quot;===n&amp;&amp;!0===this.fontOptions.chooser&amp;&amp;this.elementOptions.labelHighlightBold?r.mod=&quot;bold&quot;:&quot;function&quot;==typeof this.fontOptions.chooser&amp;&amp;this.fontOptions.chooser(r,this.elementOptions.id,e,i));var s=&quot;&quot;;return void 0!==r.mod&amp;&amp;&quot;&quot;!==r.mod&amp;&amp;(s+=r.mod+&quot; &quot;),s+=r.size+&quot;px &quot;+r.face,t.font=s.replace(/&quot;/g,&quot;&quot;),r.font=t.font,r.height=r.size,r}},{key:&quot;differentState&quot;,value:function(t,e){return t!==this.selectedState||e!==this.hoverState}},{key:&quot;_processLabelText&quot;,value:function(t,e,i,n){return new xE(t,this,e,i).process(n)}},{key:&quot;_processLabel&quot;,value:function(t,e,i){if(!1!==this.labelDirty||this.differentState(e,i)){var n=this._processLabelText(t,e,i,this.elementOptions.label);this.fontOptions.minWdt&gt;0&amp;&amp;n.width&lt;this.fontOptions.minWdt&amp;&amp;(n.width=this.fontOptions.minWdt),this.size.labelHeight=n.height,this.fontOptions.minHgt&gt;0&amp;&amp;n.height&lt;this.fontOptions.minHgt&amp;&amp;(n.height=this.fontOptions.minHgt),this.lines=n.lines,this.lineCount=n.lines.length,this.size.width=n.width,this.size.height=n.height,this.selectedState=e,this.hoverState=i,this.labelDirty=!1}}},{key:&quot;visible&quot;,value:function(){return 0!==this.size.width&amp;&amp;0!==this.size.height&amp;&amp;void 0!==this.elementOptions.label&amp;&amp;!(this.fontOptions.size*this.body.view.scale&lt;this.elementOptions.scaling.label.drawThreshold-1)}}],[{key:&quot;parseFontString&quot;,value:function(t,e){if(!e||&quot;string&quot;!=typeof e)return!1;var i=e.split(&quot; &quot;);return t.size=+i[0].replace(&quot;px&quot;,&quot;&quot;),t.face=i[1],t.color=i[2],!0}}]),t}(),CE=function(){function t(e,i,n){Yd(this,t),this.body=i,this.labelModule=n,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.refreshNeeded=!0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t}},{key:&quot;_setMargins&quot;,value:function(t){this.margin={},this.options.margin&amp;&amp;(&quot;object&quot;==Qc(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:&quot;_distanceToBorder&quot;,value:function(t,e){var i=this.options.borderWidth;return t&amp;&amp;this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:&quot;enableShadow&quot;,value:function(t,e){e.shadow&amp;&amp;(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:&quot;disableShadow&quot;,value:function(t,e){e.shadow&amp;&amp;(t.shadowColor=&quot;rgba(0,0,0,0)&quot;,t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:&quot;enableBorderDashes&quot;,value:function(t,e){if(!1!==e.borderDashes)if(void 0!==t.setLineDash){var i=e.borderDashes;!0===i&amp;&amp;(i=[5,15]),t.setLineDash(i)}else console.warn(&quot;setLineDash is not supported in this browser. The dashed borders cannot be used.&quot;),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:&quot;disableBorderDashes&quot;,value:function(t,e){!1!==e.borderDashes&amp;&amp;(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn(&quot;setLineDash is not supported in this browser. The dashed borders cannot be used.&quot;),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}},{key:&quot;needsRefresh&quot;,value:function(t,e){return!0===this.refreshNeeded?(this.refreshNeeded=!1,!0):void 0===this.width||this.labelModule.differentState(t,e)}},{key:&quot;initContextForDraw&quot;,value:function(t,e){var i=e.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,i),t.strokeStyle=e.borderColor,t.fillStyle=e.color}},{key:&quot;performStroke&quot;,value:function(t,e){var i=e.borderWidth/this.body.view.scale;t.save(),i&gt;0&amp;&amp;(this.enableBorderDashes(t,e),t.stroke(),this.disableBorderDashes(t,e)),t.restore()}},{key:&quot;performFill&quot;,value:function(t,e){t.save(),t.fillStyle=e.color,this.enableShadow(t,e),jv(t).call(t),this.disableShadow(t,e),t.restore(),this.performStroke(t,e)}},{key:&quot;_addBoundingBoxMargin&quot;,value:function(t){this.boundingBox.left-=t,this.boundingBox.top-=t,this.boundingBox.bottom+=t,this.boundingBox.right+=t}},{key:&quot;_updateBoundingBox&quot;,value:function(t,e,i,n,o){void 0!==i&amp;&amp;this.resize(i,n,o),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:&quot;updateBoundingBox&quot;,value:function(t,e,i,n,o){this._updateBoundingBox(t,e,i,n,o)}},{key:&quot;getDimensionsFromLabel&quot;,value:function(t,e,i){this.textSize=this.labelModule.getTextSize(t,e,i);var n=this.textSize.width,o=this.textSize.height;return 0===n&amp;&amp;(n=14,o=14),{width:n,height:o}}}]),t}();function SE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var TE=function(t){zk(i,t);var e=SE(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._setMargins(o),r}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var n=this.getDimensionsFromLabel(t,e,i);this.width=n.width+this.margin.right+this.margin.left,this.height=n.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,r),Fn(t,this.left,this.top,this.width,this.height,r.borderRadius),this.performFill(t,r),this.updateBoundingBox(e,i,t,n,o),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,n,o)}},{key:&quot;updateBoundingBox&quot;,value:function(t,e,i,n,o){this._updateBoundingBox(t,e,i,n,o);var r=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){t&amp;&amp;this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),i}(CE);function ME(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var PE=function(t){zk(i,t);var e=ME(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o)).labelOffset=0,r.selected=!1,r}return Kd(i,[{key:&quot;setOptions&quot;,value:function(t,e,i){this.options=t,void 0===e&amp;&amp;void 0===i||this.setImages(e,i)}},{key:&quot;setImages&quot;,value:function(t,e){e&amp;&amp;this.selected?(this.imageObj=e,this.imageObjAlt=t):(this.imageObj=t,this.imageObjAlt=e)}},{key:&quot;switchImages&quot;,value:function(t){var e=t&amp;&amp;!this.selected||!t&amp;&amp;this.selected;if(this.selected=t,void 0!==this.imageObjAlt&amp;&amp;e){var i=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=i}}},{key:&quot;_getImagePadding&quot;,value:function(){var t={top:0,right:0,bottom:0,left:0};if(this.options.imagePadding){var e=this.options.imagePadding;&quot;object&quot;==Qc(e)?(t.top=e.top,t.right=e.right,t.bottom=e.bottom,t.left=e.left):(t.top=e,t.right=e,t.bottom=e,t.left=e)}return t}},{key:&quot;_resizeImage&quot;,value:function(){var t,e;if(!1===this.options.shapeProperties.useImageSize){var i=1,n=1;this.imageObj.width&amp;&amp;this.imageObj.height&amp;&amp;(this.imageObj.width&gt;this.imageObj.height?i=this.imageObj.width/this.imageObj.height:n=this.imageObj.height/this.imageObj.width),t=2*this.options.size*i,e=2*this.options.size*n}else{var o=this._getImagePadding();t=this.imageObj.width+o.left+o.right,e=this.imageObj.height+o.top+o.bottom}this.width=t,this.height=e,this.radius=.5*this.width}},{key:&quot;_drawRawCircle&quot;,value:function(t,e,i,n){this.initContextForDraw(t,n),Nn(t,e,i,n.size),this.performFill(t,n)}},{key:&quot;_drawImageAtPosition&quot;,value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=void 0!==e.opacity?e.opacity:1,this.enableShadow(t,e);var i=1;!0===this.options.shapeProperties.interpolation&amp;&amp;(i=this.imageObj.width/this.width/this.body.view.scale);var n=this._getImagePadding(),o=this.left+n.left,r=this.top+n.top,s=this.width-n.left-n.right,a=this.height-n.top-n.bottom;this.imageObj.drawImageAtPosition(t,i,o,r,s,a),this.disableShadow(t,e)}}},{key:&quot;_drawImageLabel&quot;,value:function(t,e,i,n,o){var r=0;if(void 0!==this.height){r=.5*this.height;var s=this.labelModule.getTextSize(t,n,o);s.lineCount&gt;=1&amp;&amp;(r+=s.height/2)}var a=i+r;this.options.label&amp;&amp;(this.labelOffset=r),this.labelModule.draw(t,e,a,n,o,&quot;hanging&quot;)}}]),i}(CE);function DE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var IE=function(t){zk(i,t);var e=DE(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._setMargins(o),r}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var n=this.getDimensionsFromLabel(t,e,i),o=Math.max(n.width+this.margin.right+this.margin.left,n.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,r),this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,n,o)}},{key:&quot;updateBoundingBox&quot;,value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:&quot;distanceToBorder&quot;,value:function(t){return t&amp;&amp;this.resize(t),.5*this.width}}]),i}(PE);function BE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var zE=function(t){zk(i,t);var e=BE(i);function i(t,n,o,r,s){var a;return Yd(this,i),(a=e.call(this,t,n,o)).setImages(r,s),a}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover,n=void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height;if(n){var o=2*this.options.size;return this.width=o,this.height=o,void(this.radius=.5*this.width)}this.needsRefresh(e,i)&amp;&amp;this._resizeImage()}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.switchImages(n),this.resize();var s=e,a=i;&quot;top-left&quot;===this.options.shapeProperties.coordinateOrigin?(this.left=e,this.top=i,s+=this.width/2,a+=this.height/2):(this.left=e-this.width/2,this.top=i-this.height/2),this._drawRawCircle(t,s,a,r),t.save(),t.clip(),this._drawImageAtPosition(t,r),t.restore(),this._drawImageLabel(t,s,a,n,o),this.updateBoundingBox(e,i)}},{key:&quot;updateBoundingBox&quot;,value:function(t,e){&quot;top-left&quot;===this.options.shapeProperties.coordinateOrigin?(this.boundingBox.top=e,this.boundingBox.left=t,this.boundingBox.right=t+2*this.options.size,this.boundingBox.bottom=e+2*this.options.size):(this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:&quot;distanceToBorder&quot;,value:function(t){return t&amp;&amp;this.resize(t),.5*this.width}}]),i}(PE);function NE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var FE=function(t){zk(i,t);var e=NE(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover,n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(this.needsRefresh(e,i)){var o,r;this.labelModule.getTextSize(t,e,i);var s=2*n.size;this.width=null!==(o=this.customSizeWidth)&amp;&amp;void 0!==o?o:s,this.height=null!==(r=this.customSizeHeight)&amp;&amp;void 0!==r?r:s,this.radius=.5*this.width}}},{key:&quot;_drawShape&quot;,value:function(t,e,i,n,o,r,s,a){var h,l=this;return this.resize(t,r,s,a),this.left=n-this.width/2,this.top=o-this.height/2,this.initContextForDraw(t,a),(h=e,Object.prototype.hasOwnProperty.call(Ln,h)?Ln[h]:function(t){for(var e=arguments.length,i=new Array(e&gt;1?e-1:0),n=1;n&lt;e;n++)i[n-1]=arguments[n];CanvasRenderingContext2D.prototype[h].call(t,i)})(t,n,o,a.size),this.performFill(t,a),void 0!==this.options.icon&amp;&amp;void 0!==this.options.icon.code&amp;&amp;(t.font=(r?&quot;bold &quot;:&quot;&quot;)+this.height/2+&quot;px &quot;+(this.options.icon.face||&quot;FontAwesome&quot;),t.fillStyle=this.options.icon.color||&quot;black&quot;,t.textAlign=&quot;center&quot;,t.textBaseline=&quot;middle&quot;,t.fillText(this.options.icon.code,n,o)),{drawExternalLabel:function(){if(void 0!==l.options.label){l.labelModule.calculateLabelSize(t,r,s,n,o,&quot;hanging&quot;);var e=o+.5*l.height+.5*l.labelModule.size.height;l.labelModule.draw(t,n,e,r,s,&quot;hanging&quot;)}l.updateBoundingBox(n,o)}}}},{key:&quot;updateBoundingBox&quot;,value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&amp;&amp;this.labelModule.size.width&gt;0&amp;&amp;(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}]),i}(CE);function AE(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function jE(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=AE(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=AE(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}function RE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var LE=function(t){zk(i,t);var e=RE(i);function i(t,n,o,r){var s;return Yd(this,i),(s=e.call(this,t,n,o,r)).ctxRenderer=r,s}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o,r),this.left=e-this.width/2,this.top=i-this.height/2,t.save();var s=this.ctxRenderer({ctx:t,id:this.options.id,x:e,y:i,state:{selected:n,hover:o},style:jE({},r),label:this.options.label});if(null!=s.drawNode&amp;&amp;s.drawNode(),t.restore(),s.drawExternalLabel){var a=s.drawExternalLabel;s.drawExternalLabel=function(){t.save(),a(),t.restore()}}return s.nodeDimensions&amp;&amp;(this.customSizeWidth=s.nodeDimensions.width,this.customSizeHeight=s.nodeDimensions.height),s}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function HE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var WE=function(t){zk(i,t);var e=HE(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._setMargins(o),r}return Kd(i,[{key:&quot;resize&quot;,value:function(t,e,i){if(this.needsRefresh(e,i)){var n=this.getDimensionsFromLabel(t,e,i).width+this.margin.right+this.margin.left;this.width=n,this.height=n,this.radius=this.width/2}}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,r),jn(t,e-this.width/2,i-this.height/2,this.width,this.height),this.performFill(t,r),this.updateBoundingBox(e,i,t,n,o),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,n,o)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(CE);function qE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var VE=function(t){zk(i,t);var e=qE(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;diamond&quot;,4,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function UE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var YE=function(t){zk(i,t);var e=UE(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;circle&quot;,2,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t){return t&amp;&amp;this.resize(t),this.options.size}}]),i}(FE);function XE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var GE=function(t){zk(i,t);var e=XE(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var n=this.getDimensionsFromLabel(t,e,i);this.height=2*n.height,this.width=n.width+n.height,this.radius=.5*this.width}}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o),this.left=e-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(t,r),An(t,this.left,this.top,this.width,this.height),this.performFill(t,r),this.updateBoundingBox(e,i,t,n,o),this.labelModule.draw(t,e,i,n,o)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){t&amp;&amp;this.resize(t);var i=.5*this.width,n=.5*this.height,o=Math.sin(e)*i,r=Math.cos(e)*n;return i*n/Math.sqrt(o*o+r*r)}}]),i}(CE);function KE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var $E=function(t){zk(i,t);var e=KE(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._setMargins(o),r}return Kd(i,[{key:&quot;resize&quot;,value:function(t,e,i){this.needsRefresh(e,i)&amp;&amp;(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){var s=this;return this.resize(t,n,o),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,n,o,r),{drawExternalLabel:function(){if(void 0!==s.options.label){s.labelModule.draw(t,s.left+s.iconSize.width/2+s.margin.left,i+s.height/2+5,n)}s.updateBoundingBox(e,i)}}}},{key:&quot;updateBoundingBox&quot;,value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&amp;&amp;this.labelModule.size.width&gt;0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:&quot;_icon&quot;,value:function(t,e,i,n,o,r){var s=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=[null!=this.options.icon.weight?this.options.icon.weight:n?&quot;bold&quot;:&quot;&quot;,(null!=this.options.icon.weight&amp;&amp;n?5:0)+s+&quot;px&quot;,this.options.icon.face].join(&quot; &quot;),t.fillStyle=this.options.icon.color||&quot;black&quot;,t.textAlign=&quot;center&quot;,t.textBaseline=&quot;middle&quot;,this.enableShadow(t,r),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,r)):console.error(&quot;When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.&quot;)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(CE);function ZE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var QE=function(t){zk(i,t);var e=ZE(i);function i(t,n,o,r,s){var a;return Yd(this,i),(a=e.call(this,t,n,o)).setImages(r,s),a}return Kd(i,[{key:&quot;resize&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this.hover,n=void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height;if(n){var o=2*this.options.size;return this.width=o,void(this.height=o)}this.needsRefresh(e,i)&amp;&amp;this._resizeImage()}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){t.save(),this.switchImages(n),this.resize();var s=e,a=i;if(&quot;top-left&quot;===this.options.shapeProperties.coordinateOrigin?(this.left=e,this.top=i,s+=this.width/2,a+=this.height/2):(this.left=e-this.width/2,this.top=i-this.height/2),!0===this.options.shapeProperties.useBorderWithImage){var h=this.options.borderWidth,l=this.options.borderWidthSelected||2*this.options.borderWidth,d=(n?l:h)/this.body.view.scale;t.lineWidth=Math.min(this.width,d),t.beginPath();var c=n?this.options.color.highlight.border:o?this.options.color.hover.border:this.options.color.border,u=n?this.options.color.highlight.background:o?this.options.color.hover.background:this.options.color.background;void 0!==r.opacity&amp;&amp;(c=pm(c,r.opacity),u=pm(u,r.opacity)),t.strokeStyle=c,t.fillStyle=u,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),jv(t).call(t),this.performStroke(t,r),t.closePath()}this._drawImageAtPosition(t,r),this._drawImageLabel(t,s,a,n,o),this.updateBoundingBox(e,i),t.restore()}},{key:&quot;updateBoundingBox&quot;,value:function(t,e){this.resize(),&quot;top-left&quot;===this.options.shapeProperties.coordinateOrigin?(this.left=t,this.top=e):(this.left=t-this.width/2,this.top=e-this.height/2),this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width,void 0!==this.options.label&amp;&amp;this.labelModule.size.width&gt;0&amp;&amp;(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(PE);function JE(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var tO=function(t){zk(i,t);var e=JE(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;square&quot;,2,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function eO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var iO=function(t){zk(i,t);var e=eO(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;hexagon&quot;,4,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function nO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var oO=function(t){zk(i,t);var e=nO(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;star&quot;,4,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function rO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var sO=function(t){zk(i,t);var e=rO(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._setMargins(o),r}return Kd(i,[{key:&quot;resize&quot;,value:function(t,e,i){this.needsRefresh(e,i)&amp;&amp;(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){this.resize(t,n,o),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,r),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,n,o),this.disableShadow(t,r),this.updateBoundingBox(e,i,t,n,o)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(CE);function aO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var hO=function(t){zk(i,t);var e=aO(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;triangle&quot;,3,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function lO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var dO=function(t){zk(i,t);var e=lO(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;draw&quot;,value:function(t,e,i,n,o,r){return this._drawShape(t,&quot;triangleDown&quot;,3,e,i,n,o,r)}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this._distanceToBorder(t,e)}}]),i}(FE);function cO(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function uO(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=cO(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=cO(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}var fO=function(){function t(e,i,n,o,r,s){Yd(this,t),this.options=Cm(r),this.globalOptions=r,this.defaultOptions=s,this.body=i,this.edges=[],this.id=void 0,this.imagelist=n,this.grouplist=o,this.x=void 0,this.y=void 0,this.baseSize=this.options.size,this.baseFontSize=this.options.font.size,this.predefinedPosition=!1,this.selected=!1,this.hover=!1,this.labelModule=new OE(this.body,this.options,!1),this.setOptions(e)}return Kd(t,[{key:&quot;attachEdge&quot;,value:function(t){var e;-1===Fp(e=this.edges).call(e,t)&amp;&amp;this.edges.push(t)}},{key:&quot;detachEdge&quot;,value:function(t){var e,i,n=Fp(e=this.edges).call(e,t);-1!=n&amp;&amp;ff(i=this.edges).call(i,n,1)}},{key:&quot;setOptions&quot;,value:function(e){var i=this.options.shape;if(e){if(void 0!==e.color&amp;&amp;(this._localColor=e.color),void 0!==e.id&amp;&amp;(this.id=e.id),void 0===this.id)throw new Error(&quot;Node must have an id&quot;);t.checkMass(e,this.id),void 0!==e.x&amp;&amp;(null===e.x?(this.x=void 0,this.predefinedPosition=!1):(this.x=Ep(e.x),this.predefinedPosition=!0)),void 0!==e.y&amp;&amp;(null===e.y?(this.y=void 0,this.predefinedPosition=!1):(this.y=Ep(e.y),this.predefinedPosition=!0)),void 0!==e.size&amp;&amp;(this.baseSize=e.size),void 0!==e.value&amp;&amp;(e.value=lE(e.value)),t.parseOptions(this.options,e,!0,this.globalOptions,this.grouplist);var n=[e,this.options,this.defaultOptions];return this.chooser=gE(&quot;node&quot;,n),this._load_images(),this.updateLabelModule(e),void 0!==e.opacity&amp;&amp;t.checkOpacity(e.opacity)&amp;&amp;(this.options.opacity=e.opacity),this.updateShape(i),void 0!==e.hidden||void 0!==e.physics}}},{key:&quot;_load_images&quot;,value:function(){if((&quot;circularImage&quot;===this.options.shape||&quot;image&quot;===this.options.shape)&amp;&amp;void 0===this.options.image)throw new Error(&quot;Option image must be defined for node type '&quot;+this.options.shape+&quot;'&quot;);if(void 0!==this.options.image){if(void 0===this.imagelist)throw new Error(&quot;Internal Error: No images provided&quot;);if(&quot;string&quot;==typeof this.options.image)this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id);else{if(void 0===this.options.image.unselected)throw new Error(&quot;No unselected image provided&quot;);this.imageObj=this.imagelist.load(this.options.image.unselected,this.options.brokenImage,this.id),void 0!==this.options.image.selected?this.imageObjAlt=this.imagelist.load(this.options.image.selected,this.options.brokenImage,this.id):this.imageObjAlt=void 0}}}},{key:&quot;getFormattingValues&quot;,value:function(){var t={color:this.options.color.background,opacity:this.options.opacity,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};if(this.selected||this.hover?!0===this.chooser?this.selected?(null!=this.options.borderWidthSelected?t.borderWidth=this.options.borderWidthSelected:t.borderWidth*=2,t.color=this.options.color.highlight.background,t.borderColor=this.options.color.highlight.border,t.shadow=this.options.shadow.enabled):this.hover&amp;&amp;(t.color=this.options.color.hover.background,t.borderColor=this.options.color.hover.border,t.shadow=this.options.shadow.enabled):&quot;function&quot;==typeof this.chooser&amp;&amp;(this.chooser(t,this.options.id,this.selected,this.hover),!1===t.shadow&amp;&amp;(t.shadowColor===this.options.shadow.color&amp;&amp;t.shadowSize===this.options.shadow.size&amp;&amp;t.shadowX===this.options.shadow.x&amp;&amp;t.shadowY===this.options.shadow.y||(t.shadow=!0))):t.shadow=this.options.shadow.enabled,void 0!==this.options.opacity){var e=this.options.opacity;t.borderColor=pm(t.borderColor,e),t.color=pm(t.color,e),t.shadowColor=pm(t.shadowColor,e)}return t}},{key:&quot;updateLabelModule&quot;,value:function(e){void 0!==this.options.label&amp;&amp;null!==this.options.label||(this.options.label=&quot;&quot;),t.updateGroupOptions(this.options,uO(uO({},e),{},{color:e&amp;&amp;e.color||this._localColor||void 0}),this.grouplist);var i=this.grouplist.get(this.options.group,!1),n=[e,this.options,i,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,n),void 0!==this.labelModule.baseSize&amp;&amp;(this.baseFontSize=this.labelModule.baseSize)}},{key:&quot;updateShape&quot;,value:function(t){if(t===this.options.shape&amp;&amp;this.shape)this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt);else switch(this.options.shape){case&quot;box&quot;:this.shape=new TE(this.options,this.body,this.labelModule);break;case&quot;circle&quot;:this.shape=new IE(this.options,this.body,this.labelModule);break;case&quot;circularImage&quot;:this.shape=new zE(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case&quot;custom&quot;:this.shape=new LE(this.options,this.body,this.labelModule,this.options.ctxRenderer);break;case&quot;database&quot;:this.shape=new WE(this.options,this.body,this.labelModule);break;case&quot;diamond&quot;:this.shape=new VE(this.options,this.body,this.labelModule);break;case&quot;dot&quot;:this.shape=new YE(this.options,this.body,this.labelModule);break;case&quot;ellipse&quot;:default:this.shape=new GE(this.options,this.body,this.labelModule);break;case&quot;icon&quot;:this.shape=new $E(this.options,this.body,this.labelModule);break;case&quot;image&quot;:this.shape=new QE(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case&quot;square&quot;:this.shape=new tO(this.options,this.body,this.labelModule);break;case&quot;hexagon&quot;:this.shape=new iO(this.options,this.body,this.labelModule);break;case&quot;star&quot;:this.shape=new oO(this.options,this.body,this.labelModule);break;case&quot;text&quot;:this.shape=new sO(this.options,this.body,this.labelModule);break;case&quot;triangle&quot;:this.shape=new hO(this.options,this.body,this.labelModule);break;case&quot;triangleDown&quot;:this.shape=new dO(this.options,this.body,this.labelModule)}this.needsRefresh()}},{key:&quot;select&quot;,value:function(){this.selected=!0,this.needsRefresh()}},{key:&quot;unselect&quot;,value:function(){this.selected=!1,this.needsRefresh()}},{key:&quot;needsRefresh&quot;,value:function(){this.shape.refreshNeeded=!0}},{key:&quot;getTitle&quot;,value:function(){return this.options.title}},{key:&quot;distanceToBorder&quot;,value:function(t,e){return this.shape.distanceToBorder(t,e)}},{key:&quot;isFixed&quot;,value:function(){return this.options.fixed.x&amp;&amp;this.options.fixed.y}},{key:&quot;isSelected&quot;,value:function(){return this.selected}},{key:&quot;getValue&quot;,value:function(){return this.options.value}},{key:&quot;getLabelSize&quot;,value:function(){return this.labelModule.size()}},{key:&quot;setValueRange&quot;,value:function(t,e,i){if(void 0!==this.options.value){var n=this.options.scaling.customScalingFunction(t,e,i,this.options.value),o=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var r=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+n*r}this.options.size=this.options.scaling.min+n*o}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}},{key:&quot;draw&quot;,value:function(t){var e=this.getFormattingValues();return this.shape.draw(t,this.x,this.y,this.selected,this.hover,e)||{}}},{key:&quot;updateBoundingBox&quot;,value:function(t){this.shape.updateBoundingBox(this.x,this.y,t)}},{key:&quot;resize&quot;,value:function(t){var e=this.getFormattingValues();this.shape.resize(t,this.selected,this.hover,e)}},{key:&quot;getItemsOnPoint&quot;,value:function(t){var e=[];return this.labelModule.visible()&amp;&amp;yE(this.labelModule.getSize(),t)&amp;&amp;e.push({nodeId:this.id,labelId:0}),yE(this.shape.boundingBox,t)&amp;&amp;e.push({nodeId:this.id}),e}},{key:&quot;isOverlappingWith&quot;,value:function(t){return this.shape.left&lt;t.right&amp;&amp;this.shape.left+this.shape.width&gt;t.left&amp;&amp;this.shape.top&lt;t.bottom&amp;&amp;this.shape.top+this.shape.height&gt;t.top}},{key:&quot;isBoundingBoxOverlappingWith&quot;,value:function(t){return this.shape.boundingBox.left&lt;t.right&amp;&amp;this.shape.boundingBox.right&gt;t.left&amp;&amp;this.shape.boundingBox.top&lt;t.bottom&amp;&amp;this.shape.boundingBox.bottom&gt;t.top}}],[{key:&quot;checkOpacity&quot;,value:function(t){return 0&lt;=t&amp;&amp;t&lt;=1}},{key:&quot;checkCoordinateOrigin&quot;,value:function(t){return void 0===t||&quot;center&quot;===t||&quot;top-left&quot;===t}},{key:&quot;updateGroupOptions&quot;,value:function(e,i,n){var o;if(void 0!==n){var r=e.group;if(void 0!==i&amp;&amp;void 0!==i.group&amp;&amp;r!==i.group)throw new Error(&quot;updateGroupOptions: group values in options don't match.&quot;);if(&quot;number&quot;==typeof r||&quot;string&quot;==typeof r&amp;&amp;&quot;&quot;!=r){var s=n.get(r);void 0!==s.opacity&amp;&amp;void 0===i.opacity&amp;&amp;(t.checkOpacity(s.opacity)||(console.error(&quot;Invalid option for node opacity. Value must be between 0 and 1, found: &quot;+s.opacity),s.opacity=void 0));var a=Xf(o=vE(i)).call(o,(function(t){return null!=i[t]}));a.push(&quot;font&quot;),im(a,e,s),e.color=gm(e.color)}}}},{key:&quot;parseOptions&quot;,value:function(e,i){var n=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],o=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:{},r=arguments.length&gt;4?arguments[4]:void 0,s=[&quot;color&quot;,&quot;fixed&quot;,&quot;shadow&quot;];if(im(s,e,i,n),t.checkMass(i),void 0!==e.opacity&amp;&amp;(t.checkOpacity(e.opacity)||(console.error(&quot;Invalid option for node opacity. Value must be between 0 and 1, found: &quot;+e.opacity),e.opacity=void 0)),void 0!==i.opacity&amp;&amp;(t.checkOpacity(i.opacity)||(console.error(&quot;Invalid option for node opacity. Value must be between 0 and 1, found: &quot;+i.opacity),i.opacity=void 0)),i.shapeProperties&amp;&amp;!t.checkCoordinateOrigin(i.shapeProperties.coordinateOrigin)&amp;&amp;console.error(&quot;Invalid option for node coordinateOrigin, found: &quot;+i.shapeProperties.coordinateOrigin),Sm(e,i,&quot;shadow&quot;,o),void 0!==i.color&amp;&amp;null!==i.color){var a=gm(i.color);Jy(e.color,a)}else!0===n&amp;&amp;null===i.color&amp;&amp;(e.color=Cm(o.color));void 0!==i.fixed&amp;&amp;null!==i.fixed&amp;&amp;(&quot;boolean&quot;==typeof i.fixed?(e.fixed.x=i.fixed,e.fixed.y=i.fixed):(void 0!==i.fixed.x&amp;&amp;&quot;boolean&quot;==typeof i.fixed.x&amp;&amp;(e.fixed.x=i.fixed.x),void 0!==i.fixed.y&amp;&amp;&quot;boolean&quot;==typeof i.fixed.y&amp;&amp;(e.fixed.y=i.fixed.y))),!0===n&amp;&amp;null===i.font&amp;&amp;(e.font=Cm(o.font)),t.updateGroupOptions(e,i,r),void 0!==i.scaling&amp;&amp;Sm(e.scaling,i.scaling,&quot;label&quot;,o.scaling)}},{key:&quot;checkMass&quot;,value:function(t,e){if(void 0!==t.mass&amp;&amp;t.mass&lt;=0){var i=&quot;&quot;;void 0!==e&amp;&amp;(i=&quot; in node id: &quot;+e),console.error(&quot;%cNegative or zero mass disallowed&quot;+i+&quot;, setting mass to 1.&quot;,Vm),t.mass=1}}}]),t}();function pO(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return vO(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return vO(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function vO(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var gO=function(){function t(e,i,n,o){var r,s=this;if(Yd(this,t),this.body=e,this.images=i,this.groups=n,this.layoutEngine=o,this.body.functions.createNode=zn(r=this.create).call(r,this),this.nodesListeners={add:function(t,e){s.add(e.items)},update:function(t,e){s.update(e.items,e.data,e.oldData)},remove:function(t,e){s.remove(e.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:void 0,brokenImage:void 0,color:{border:&quot;#2B7CE9&quot;,background:&quot;#97C2FC&quot;,highlight:{border:&quot;#2B7CE9&quot;,background:&quot;#D2E5FF&quot;},hover:{border:&quot;#2B7CE9&quot;,background:&quot;#D2E5FF&quot;}},opacity:void 0,fixed:{x:!1,y:!1},font:{color:&quot;#343434&quot;,size:14,face:&quot;arial&quot;,background:&quot;none&quot;,strokeWidth:0,strokeColor:&quot;#ffffff&quot;,align:&quot;center&quot;,vadjust:0,multi:!1,bold:{mod:&quot;bold&quot;},boldital:{mod:&quot;bold italic&quot;},ital:{mod:&quot;italic&quot;},mono:{mod:&quot;&quot;,size:15,face:&quot;monospace&quot;,vadjust:2}},group:void 0,hidden:!1,icon:{face:&quot;FontAwesome&quot;,code:void 0,size:50,color:&quot;#2B7CE9&quot;},image:void 0,imagePadding:{top:0,right:0,bottom:0,left:0},label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,n){if(e===t)return.5;var o=1/(e-t);return Math.max(0,(n-t)*o)}},shadow:{enabled:!1,color:&quot;rgba(0,0,0,0.5)&quot;,size:10,x:5,y:5},shape:&quot;ellipse&quot;,shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1,coordinateOrigin:&quot;center&quot;},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass&lt;=0)throw&quot;Internal error: mass in defaultOptions of NodesHandler may not be zero or negative&quot;;this.options=Cm(this.defaultOptions),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t,e,i=this;this.body.emitter.on(&quot;refreshNodes&quot;,zn(t=this.refresh).call(t,this)),this.body.emitter.on(&quot;refresh&quot;,zn(e=this.refresh).call(e,this)),this.body.emitter.on(&quot;destroy&quot;,(function(){hm(i.nodesListeners,(function(t,e){i.body.data.nodes&amp;&amp;i.body.data.nodes.off(e,t)})),delete i.body.functions.createNode,delete i.nodesListeners.add,delete i.nodesListeners.update,delete i.nodesListeners.remove,delete i.nodesListeners}))}},{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){if(fO.parseOptions(this.options,t),void 0!==t.opacity&amp;&amp;(ek(t.opacity)||!ok(t.opacity)||t.opacity&lt;0||t.opacity&gt;1?console.error(&quot;Invalid option for node opacity. Value must be between 0 and 1, found: &quot;+t.opacity):this.options.opacity=t.opacity),void 0!==t.shape)for(var e in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,e)&amp;&amp;this.body.nodes[e].updateShape();if(void 0!==t.font||void 0!==t.widthConstraint||void 0!==t.heightConstraint)for(var i=0,n=bu(this.body.nodes);i&lt;n.length;i++){var o=n[i];this.body.nodes[o].updateLabelModule(),this.body.nodes[o].needsRefresh()}if(void 0!==t.size)for(var r in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,r)&amp;&amp;this.body.nodes[r].needsRefresh();void 0===t.hidden&amp;&amp;void 0===t.physics||this.body.emitter.emit(&quot;_dataChanged&quot;)}}},{key:&quot;setData&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],i=this.body.data.nodes;if(Qx(&quot;id&quot;,t))this.body.data.nodes=t;else if(lu(t))this.body.data.nodes=new Kx,this.body.data.nodes.add(t);else{if(t)throw new TypeError(&quot;Array or DataSet expected&quot;);this.body.data.nodes=new Kx}if(i&amp;&amp;hm(this.nodesListeners,(function(t,e){i.off(e,t)})),this.body.nodes={},this.body.data.nodes){var n=this;hm(this.nodesListeners,(function(t,e){n.body.data.nodes.on(e,t)}));var o=this.body.data.nodes.getIds();this.add(o,!0)}!1===e&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;add&quot;,value:function(t){for(var e,i=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],n=[],o=0;o&lt;t.length;o++){e=t[o];var r=this.body.data.nodes.get(e),s=this.create(r);n.push(s),this.body.nodes[e]=s}this.layoutEngine.positionInitially(n),!1===i&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;update&quot;,value:function(t,e,i){for(var n=this.body.nodes,o=!1,r=0;r&lt;t.length;r++){var s=t[r],a=n[s],h=e[r];void 0!==a?a.setOptions(h)&amp;&amp;(o=!0):(o=!0,a=this.create(h),n[s]=a)}o||void 0===i||(o=ck(e).call(e,(function(t,e){var n=i[e];return n&amp;&amp;n.level!==t.level}))),!0===o?this.body.emitter.emit(&quot;_dataChanged&quot;):this.body.emitter.emit(&quot;_dataUpdated&quot;)}},{key:&quot;remove&quot;,value:function(t){for(var e=this.body.nodes,i=0;i&lt;t.length;i++){delete e[t[i]]}this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;create&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:fO;return new e(t,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:&quot;refresh&quot;,value:function(){var t=this,e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]&amp;&amp;arguments[0];hm(this.body.nodes,(function(i,n){var o=t.body.data.nodes.get(n);void 0!==o&amp;&amp;(!0===e&amp;&amp;i.setOptions({x:null,y:null}),i.setOptions({fixed:!1}),i.setOptions(o))}))}},{key:&quot;getPositions&quot;,value:function(t){var e={};if(void 0!==t){if(!0===lu(t)){for(var i=0;i&lt;t.length;i++)if(void 0!==this.body.nodes[t[i]]){var n=this.body.nodes[t[i]];e[t[i]]={x:Math.round(n.x),y:Math.round(n.y)}}}else if(void 0!==this.body.nodes[t]){var o=this.body.nodes[t];e[t]={x:Math.round(o.x),y:Math.round(o.y)}}}else for(var r=0;r&lt;this.body.nodeIndices.length;r++){var s=this.body.nodes[this.body.nodeIndices[r]];e[this.body.nodeIndices[r]]={x:Math.round(s.x),y:Math.round(s.y)}}return e}},{key:&quot;getPosition&quot;,value:function(t){if(null==t)throw new TypeError(&quot;No id was specified for getPosition method.&quot;);if(null==this.body.nodes[t])throw new ReferenceError(&quot;NodeId provided for getPosition does not exist. Provided: &quot;.concat(t));return{x:Math.round(this.body.nodes[t].x),y:Math.round(this.body.nodes[t].y)}}},{key:&quot;storePositions&quot;,value:function(){var t,e=[],i=this.body.data.nodes.getDataSet(),n=pO(i.get());try{for(n.s();!(t=n.n()).done;){var o=t.value,r=o.id,s=this.body.nodes[r],a=Math.round(s.x),h=Math.round(s.y);o.x===a&amp;&amp;o.y===h||e.push({id:r,x:a,y:h})}}catch(t){n.e(t)}finally{n.f()}i.update(e)}},{key:&quot;getBoundingBox&quot;,value:function(t){if(void 0!==this.body.nodes[t])return this.body.nodes[t].shape.boundingBox}},{key:&quot;getConnectedNodes&quot;,value:function(t,e){var i=[];if(void 0!==this.body.nodes[t])for(var n=this.body.nodes[t],o={},r=0;r&lt;n.edges.length;r++){var s=n.edges[r];&quot;to&quot;!==e&amp;&amp;s.toId==n.id?void 0===o[s.fromId]&amp;&amp;(i.push(s.fromId),o[s.fromId]=!0):&quot;from&quot;!==e&amp;&amp;s.fromId==n.id&amp;&amp;void 0===o[s.toId]&amp;&amp;(i.push(s.toId),o[s.toId]=!0)}return i}},{key:&quot;getConnectedEdges&quot;,value:function(t){var e=[];if(void 0!==this.body.nodes[t])for(var i=this.body.nodes[t],n=0;n&lt;i.edges.length;n++)e.push(i.edges[n].id);else console.error(&quot;NodeId provided for getConnectedEdges does not exist. Provided: &quot;,t);return e}},{key:&quot;moveNode&quot;,value:function(t,e,i){var n=this;void 0!==this.body.nodes[t]?(this.body.nodes[t].x=Number(e),this.body.nodes[t].y=Number(i),Sv((function(){n.body.emitter.emit(&quot;startSimulation&quot;)}),0)):console.error(&quot;Node id supplied to moveNode does not exist. Provided: &quot;,t)}}]),t}(),yO=Wt,mO=_,bO=Y,wO=$e,kO=function(t){return void 0!==t&amp;&amp;(yO(t,&quot;value&quot;)||yO(t,&quot;writable&quot;))},_O=m,xO=Pr;_i({target:&quot;Reflect&quot;,stat:!0},{get:function t(e,i){var n,o,r=arguments.length&lt;3?e:arguments[2];return wO(e)===r?e[i]:(n=_O.f(e,i))?kO(n)?n.value:void 0===n.get?void 0:mO(n.get,r):bO(o=xO(e))?t(o,i,r):void 0}});var EO=X.Reflect.get,OO=md;function CO(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;null!==(t=Ak(t)););return t}function SO(){return SO=&quot;undefined&quot;!=typeof Reflect&amp;&amp;EO?EO:function(t,e,i){var n=CO(t,e);if(n){var o=OO(n,e);return o.get?o.get.call(arguments.length&lt;3?t:i):o.value}},SO.apply(this,arguments)}var TO=_i,MO=Math.hypot,PO=Math.abs,DO=Math.sqrt;TO({target:&quot;Math&quot;,stat:!0,forced:!!MO&amp;&amp;MO(1/0,NaN)!==1/0},{hypot:function(t,e){for(var i,n,o=0,r=0,s=arguments.length,a=0;r&lt;s;)a&lt;(i=PO(arguments[r++]))?(o=o*(n=a/i)*n+1,a=i):o+=i&gt;0?(n=i/a)*n:i;return a===1/0?1/0:a*DO(o)}});var IO=X.Math.hypot;function BO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var zO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;transform&quot;,value:function(t,e){lu(t)||(t=[t]);for(var i=e.point.x,n=e.point.y,o=e.angle,r=e.length,s=0;s&lt;t.length;++s){var a=t[s],h=a.x*Math.cos(o)-a.y*Math.sin(o),l=a.x*Math.sin(o)+a.y*Math.cos(o);a.x=i+r*h,a.y=n+r*l}}},{key:&quot;drawPath&quot;,value:function(t,e){t.beginPath(),t.moveTo(e[0].x,e[0].y);for(var i=1;i&lt;e.length;++i)t.lineTo(e[i].x,e[i].y);t.closePath()}}]),t}(),NO=function(t){zk(i,t);var e=BO(i);function i(){return Yd(this,i),e.apply(this,arguments)}return Kd(i,null,[{key:&quot;draw&quot;,value:function(t,e){if(e.image){t.save(),t.translate(e.point.x,e.point.y),t.rotate(Math.PI/2+e.angle);var i=null!=e.imageWidth?e.imageWidth:e.image.width,n=null!=e.imageHeight?e.imageHeight:e.image.height;e.image.drawImageAtPosition(t,1,-i/2,0,i,n),t.restore()}return!1}}]),i}(zO),FO=function(t){zk(i,t);var e=BO(i);function i(){return Yd(this,i),e.apply(this,arguments)}return Kd(i,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:0,y:0},{x:-1,y:.3},{x:-.9,y:0},{x:-1,y:-.3}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),i}(zO),AO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:-1,y:0},{x:0,y:.3},{x:-.4,y:0},{x:0,y:-.3}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),jO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i={x:-.4,y:0};zO.transform(i,e),t.strokeStyle=t.fillStyle,t.fillStyle=&quot;rgba(0, 0, 0, 0)&quot;;var n=Math.PI,o=e.angle-n/2,r=e.angle+n/2;return t.beginPath(),t.arc(i.x,i.y,.4*e.length,o,r,!1),t.stroke(),!0}}]),t}(),RO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i={x:-.3,y:0};zO.transform(i,e),t.strokeStyle=t.fillStyle,t.fillStyle=&quot;rgba(0, 0, 0, 0)&quot;;var n=Math.PI,o=e.angle+n/2,r=e.angle+3*n/2;return t.beginPath(),t.arc(i.x,i.y,.4*e.length,o,r,!1),t.stroke(),!0}}]),t}(),LO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:.02,y:0},{x:-1,y:.3},{x:-1,y:-.3}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),HO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:0,y:.3},{x:0,y:-.3},{x:-1,y:0}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),WO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i={x:-.4,y:0};return zO.transform(i,e),Nn(t,i.x,i.y,.4*e.length),!0}}]),t}(),qO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:0,y:.5},{x:0,y:-.5},{x:-.15,y:-.5},{x:-.15,y:.5}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),VO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:0,y:.3},{x:0,y:-.3},{x:-.6,y:-.3},{x:-.6,y:.3}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),UO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:0,y:0},{x:-.5,y:-.3},{x:-1,y:0},{x:-.5,y:.3}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),YO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i=[{x:-1,y:.3},{x:-.5,y:0},{x:-1,y:-.3},{x:0,y:0}];return zO.transform(i,e),zO.drawPath(t,i),!0}}]),t}(),XO=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;draw&quot;,value:function(t,e){var i;switch(e.type&amp;&amp;(i=e.type.toLowerCase()),i){case&quot;image&quot;:return NO.draw(t,e);case&quot;circle&quot;:return WO.draw(t,e);case&quot;box&quot;:return VO.draw(t,e);case&quot;crow&quot;:return AO.draw(t,e);case&quot;curve&quot;:return jO.draw(t,e);case&quot;diamond&quot;:return UO.draw(t,e);case&quot;inv_curve&quot;:return RO.draw(t,e);case&quot;triangle&quot;:return LO.draw(t,e);case&quot;inv_triangle&quot;:return HO.draw(t,e);case&quot;bar&quot;:return qO.draw(t,e);case&quot;vee&quot;:return YO.draw(t,e);default:return FO.draw(t,e)}}}]),t}();function GO(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function KO(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=GO(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=GO(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}var $O=function(){function t(e,i,n){Yd(this,t),this._body=i,this._labelModule=n,this.color={},this.colorDirty=!0,this.hoverWidth=1.5,this.selectionWidth=2,this.setOptions(e),this.fromPoint=this.from,this.toPoint=this.to}return Kd(t,[{key:&quot;connect&quot;,value:function(){this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to]}},{key:&quot;cleanup&quot;,value:function(){return!1}},{key:&quot;setOptions&quot;,value:function(t){this.options=t,this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.id=this.options.id}},{key:&quot;drawLine&quot;,value:function(t,e,i,n){var o=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]?arguments[4]:this.getViaNode();t.strokeStyle=this.getColor(t,e),t.lineWidth=e.width,!1!==e.dashes?this._drawDashedLine(t,e,o):this._drawLine(t,e,o)}},{key:&quot;_drawLine&quot;,value:function(t,e,i,n,o){if(this.from!=this.to)this._line(t,e,i,n,o);else{var r=Kc(this._getCircleData(t),3),s=r[0],a=r[1],h=r[2];this._circle(t,e,s,a,h)}}},{key:&quot;_drawDashedLine&quot;,value:function(t,e,i,n,o){t.lineCap=&quot;round&quot;;var r=lu(e.dashes)?e.dashes:[5,5];if(void 0!==t.setLineDash){if(t.save(),t.setLineDash(r),t.lineDashOffset=0,this.from!=this.to)this._line(t,e,i);else{var s=Kc(this._getCircleData(t),3),a=s[0],h=s[1],l=s[2];this._circle(t,e,a,h,l)}t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else{if(this.from!=this.to)Rn(t,this.from.x,this.from.y,this.to.x,this.to.y,r);else{var d=Kc(this._getCircleData(t),3),c=d[0],u=d[1],f=d[2];this._circle(t,e,c,u,f)}this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}}},{key:&quot;findBorderPosition&quot;,value:function(t,e,i){return this.from!=this.to?this._findBorderPosition(t,e,i):this._findBorderPositionCircle(t,e,i)}},{key:&quot;findBorderPositions&quot;,value:function(t){if(this.from!=this.to)return{from:this._findBorderPosition(this.from,t),to:this._findBorderPosition(this.to,t)};var e,i=Kc(au(e=this._getCircleData(t)).call(e,0,2),2),n=i[0],o=i[1];return{from:this._findBorderPositionCircle(this.from,t,{x:n,y:o,low:.25,high:.6,direction:-1}),to:this._findBorderPositionCircle(this.from,t,{x:n,y:o,low:.6,high:.8,direction:1})}}},{key:&quot;_getCircleData&quot;,value:function(t){var e=this.options.selfReference.size;void 0!==t&amp;&amp;void 0===this.from.shape.width&amp;&amp;this.from.shape.resize(t);var i=bE(t,this.options.selfReference.angle,e,this.from);return[i.x,i.y,e]}},{key:&quot;_pointOnCircle&quot;,value:function(t,e,i,n){var o=2*n*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}}},{key:&quot;_findBorderPositionCircle&quot;,value:function(t,e,i){var n,o=i.x,r=i.y,s=i.low,a=i.high,h=i.direction,l=this.options.selfReference.size,d=.5*(s+a),c=0;!0===this.options.arrowStrikethrough&amp;&amp;(-1===h?c=this.options.endPointOffset.from:1===h&amp;&amp;(c=this.options.endPointOffset.to));var u=0;do{d=.5*(s+a),n=this._pointOnCircle(o,r,l,d);var f=Math.atan2(t.y-n.y,t.x-n.x),p=t.distanceToBorder(e,f)+c-Math.sqrt(Math.pow(n.x-t.x,2)+Math.pow(n.y-t.y,2));if(Math.abs(p)&lt;.05)break;p&gt;0?h&gt;0?s=d:a=d:h&gt;0?a=d:s=d,++u}while(s&lt;=a&amp;&amp;u&lt;10);return KO(KO({},n),{},{t:d})}},{key:&quot;getLineWidth&quot;,value:function(t,e){return!0===t?Math.max(this.selectionWidth,.3/this._body.view.scale):!0===e?Math.max(this.hoverWidth,.3/this._body.view.scale):Math.max(this.options.width,.3/this._body.view.scale)}},{key:&quot;getColor&quot;,value:function(t,e){if(!1!==e.inheritsColor){if(&quot;both&quot;===e.inheritsColor&amp;&amp;this.from.id!==this.to.id){var i=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),n=this.from.options.color.highlight.border,o=this.to.options.color.highlight.border;return!1===this.from.selected&amp;&amp;!1===this.to.selected?(n=pm(this.from.options.color.border,e.opacity),o=pm(this.to.options.color.border,e.opacity)):!0===this.from.selected&amp;&amp;!1===this.to.selected?o=this.to.options.color.border:!1===this.from.selected&amp;&amp;!0===this.to.selected&amp;&amp;(n=this.from.options.color.border),i.addColorStop(0,n),i.addColorStop(1,o),i}return&quot;to&quot;===e.inheritsColor?pm(this.to.options.color.border,e.opacity):pm(this.from.options.color.border,e.opacity)}return pm(e.color,e.opacity)}},{key:&quot;_circle&quot;,value:function(t,e,i,n,o){this.enableShadow(t,e);var r=0,s=2*Math.PI;if(!this.options.selfReference.renderBehindTheNode){var a=this.options.selfReference.angle,h=this.options.selfReference.angle+Math.PI,l=this._findBorderPositionCircle(this.from,t,{x:i,y:n,low:a,high:h,direction:-1}),d=this._findBorderPositionCircle(this.from,t,{x:i,y:n,low:a,high:h,direction:1});r=Math.atan2(l.y-n,l.x-i),s=Math.atan2(d.y-n,d.x-i)}t.beginPath(),t.arc(i,n,o,r,s,!1),t.stroke(),this.disableShadow(t,e)}},{key:&quot;getDistanceToEdge&quot;,value:function(t,e,i,n,o,r){if(this.from!=this.to)return this._getDistanceToEdge(t,e,i,n,o,r);var s=Kc(this._getCircleData(void 0),3),a=s[0],h=s[1],l=s[2],d=a-o,c=h-r;return Math.abs(Math.sqrt(d*d+c*c)-l)}},{key:&quot;_getDistanceToLine&quot;,value:function(t,e,i,n,o,r){var s=i-t,a=n-e,h=((o-t)*s+(r-e)*a)/(s*s+a*a);h&gt;1?h=1:h&lt;0&amp;&amp;(h=0);var l=t+h*s-o,d=e+h*a-r;return Math.sqrt(l*l+d*d)}},{key:&quot;getArrowData&quot;,value:function(t,e,i,n,o,r){var s,a,h,l,d,c,u,f=r.width;&quot;from&quot;===e?(h=this.from,l=this.to,d=r.fromArrowScale&lt;0,c=Math.abs(r.fromArrowScale),u=r.fromArrowType):&quot;to&quot;===e?(h=this.to,l=this.from,d=r.toArrowScale&lt;0,c=Math.abs(r.toArrowScale),u=r.toArrowType):(h=this.to,l=this.from,d=r.middleArrowScale&lt;0,c=Math.abs(r.middleArrowScale),u=r.middleArrowType);var p=15*c+3*f;if(h!=l){var v=p/IO(h.x-l.x,h.y-l.y);if(&quot;middle&quot;!==e)if(!0===this.options.smooth.enabled){var g=this._findBorderPosition(h,t,{via:i}),y=this.getPoint(g.t+v*(&quot;from&quot;===e?1:-1),i);s=Math.atan2(g.y-y.y,g.x-y.x),a=g}else s=Math.atan2(h.y-l.y,h.x-l.x),a=this._findBorderPosition(h,t);else{var m=(d?-v:v)/2,b=this.getPoint(.5+m,i),w=this.getPoint(.5-m,i);s=Math.atan2(b.y-w.y,b.x-w.x),a=this.getPoint(.5,i)}}else{var k=Kc(this._getCircleData(t),3),_=k[0],x=k[1],E=k[2];if(&quot;from&quot;===e){var O=this.options.selfReference.angle,C=this.options.selfReference.angle+Math.PI,S=this._findBorderPositionCircle(this.from,t,{x:_,y:x,low:O,high:C,direction:-1});s=-2*S.t*Math.PI+1.5*Math.PI+.1*Math.PI,a=S}else if(&quot;to&quot;===e){var T=this.options.selfReference.angle,M=this.options.selfReference.angle+Math.PI,P=this._findBorderPositionCircle(this.from,t,{x:_,y:x,low:T,high:M,direction:1});s=-2*P.t*Math.PI+1.5*Math.PI-1.1*Math.PI,a=P}else{var D=this.options.selfReference.angle/(2*Math.PI);a=this._pointOnCircle(_,x,E,D),s=-2*D*Math.PI+1.5*Math.PI+.1*Math.PI}}return{point:a,core:{x:a.x-.9*p*Math.cos(s),y:a.y-.9*p*Math.sin(s)},angle:s,length:p,type:u}}},{key:&quot;drawArrowHead&quot;,value:function(t,e,i,n,o){t.strokeStyle=this.getColor(t,e),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,XO.draw(t,o)&amp;&amp;(this.enableShadow(t,e),jv(t).call(t),this.disableShadow(t,e))}},{key:&quot;enableShadow&quot;,value:function(t,e){!0===e.shadow&amp;&amp;(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:&quot;disableShadow&quot;,value:function(t,e){!0===e.shadow&amp;&amp;(t.shadowColor=&quot;rgba(0,0,0,0)&quot;,t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:&quot;drawBackground&quot;,value:function(t,e){if(!1!==e.background){var i={strokeStyle:t.strokeStyle,lineWidth:t.lineWidth,dashes:t.dashes};t.strokeStyle=e.backgroundColor,t.lineWidth=e.backgroundSize,this.setStrokeDashed(t,e.backgroundDashes),t.stroke(),t.strokeStyle=i.strokeStyle,t.lineWidth=i.lineWidth,t.dashes=i.dashes,this.setStrokeDashed(t,e.dashes)}}},{key:&quot;setStrokeDashed&quot;,value:function(t,e){if(!1!==e)if(void 0!==t.setLineDash){var i=lu(e)?e:[5,5];t.setLineDash(i)}else console.warn(&quot;setLineDash is not supported in this browser. The dashed stroke cannot be used.&quot;);else void 0!==t.setLineDash?t.setLineDash([]):console.warn(&quot;setLineDash is not supported in this browser. The dashed stroke cannot be used.&quot;)}}]),t}();function ZO(t,e){var i=bu(t);if(hd){var n=hd(t);e&amp;&amp;(n=Xf(n).call(n,(function(e){return bd(t,e).enumerable}))),i.push.apply(i,n)}return i}function QO(t){for(var e=1;e&lt;arguments.length;e++){var i,n,o=null!=arguments[e]?arguments[e]:{};e%2?Fu(i=ZO(Object(o),!0)).call(i,(function(e){$d(t,e,o[e])})):Pd?Ad(t,Pd(o)):Fu(n=ZO(Object(o))).call(n,(function(e){Ud(t,e,bd(o,e))}))}return t}function JO(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var tC=function(t){zk(i,t);var e=JO(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_findBorderPositionBezier&quot;,value:function(t,e){var i,n,o=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),r=10,s=.2,a=!1,h=1,l=0,d=this.to,c=this.options.endPointOffset?this.options.endPointOffset.to:0;t.id===this.from.id&amp;&amp;(d=this.from,a=!0,c=this.options.endPointOffset?this.options.endPointOffset.from:0),!1===this.options.arrowStrikethrough&amp;&amp;(c=0);var u=0;do{n=.5*(l+h),i=this.getPoint(n,o);var f=Math.atan2(d.y-i.y,d.x-i.x),p=d.distanceToBorder(e,f)+c,v=Math.sqrt(Math.pow(i.x-d.x,2)+Math.pow(i.y-d.y,2)),g=p-v;if(Math.abs(g)&lt;s)break;g&lt;0?!1===a?l=n:h=n:!1===a?h=n:l=n,++u}while(l&lt;=h&amp;&amp;u&lt;r);return QO(QO({},i),{},{t:n})}},{key:&quot;_getDistanceToBezierEdge&quot;,value:function(t,e,i,n,o,r,s){var a,h,l,d,c,u=1e9,f=t,p=e;for(h=1;h&lt;10;h++)l=.1*h,d=Math.pow(1-l,2)*t+2*l*(1-l)*s.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*e+2*l*(1-l)*s.y+Math.pow(l,2)*n,h&gt;0&amp;&amp;(u=(a=this._getDistanceToLine(f,p,d,c,o,r))&lt;u?a:u),f=d,p=c;return u}},{key:&quot;_bezierCurve&quot;,value:function(t,e,i,n){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),null!=i&amp;&amp;null!=i.x?null!=n&amp;&amp;null!=n.x?t.bezierCurveTo(i.x,i.y,n.x,n.y,this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y):t.lineTo(this.toPoint.x,this.toPoint.y),this.drawBackground(t,e),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:&quot;getViaNode&quot;,value:function(){return this._getViaCoordinates()}}]),i}($O);function eC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var iC=function(t){zk(i,t);var e=eC(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o)).via=r.via,r._boundFunction=function(){r.positionBezierNode()},r._body.emitter.on(&quot;_repositionBezierNodes&quot;,r._boundFunction),r}return Kd(i,[{key:&quot;setOptions&quot;,value:function(t){SO(Ak(i.prototype),&quot;setOptions&quot;,this).call(this,t);var e=!1;this.options.physics!==t.physics&amp;&amp;(e=!0),this.options=t,this.id=this.options.id,this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],this.setupSupportNode(),this.connect(),!0===e&amp;&amp;(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:&quot;connect&quot;,value:function(){this.from=this._body.nodes[this.options.from],this.to=this._body.nodes[this.options.to],void 0===this.from||void 0===this.to||!1===this.options.physics||this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:&quot;cleanup&quot;,value:function(){return this._body.emitter.off(&quot;_repositionBezierNodes&quot;,this._boundFunction),void 0!==this.via&amp;&amp;(delete this._body.nodes[this.via.id],this.via=void 0,!0)}},{key:&quot;setupSupportNode&quot;,value:function(){if(void 0===this.via){var t=&quot;edgeId:&quot;+this.id,e=this._body.functions.createNode({id:t,shape:&quot;circle&quot;,physics:!0,hidden:!0});this._body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:&quot;positionBezierNode&quot;,value:function(){void 0!==this.via&amp;&amp;void 0!==this.from&amp;&amp;void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&amp;&amp;(this.via.x=0,this.via.y=0)}},{key:&quot;_line&quot;,value:function(t,e,i){this._bezierCurve(t,e,i)}},{key:&quot;_getViaCoordinates&quot;,value:function(){return this.via}},{key:&quot;getViaNode&quot;,value:function(){return this.via}},{key:&quot;getPoint&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.via;if(this.from===this.to){var i=this._getCircleData(),n=Kc(i,3),o=n[0],r=n[1],s=n[2],a=2*Math.PI*(1-t);return{x:o+s*Math.sin(a),y:r+s-s*(1-Math.cos(a))}}return{x:Math.pow(1-t,2)*this.fromPoint.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.toPoint.x,y:Math.pow(1-t,2)*this.fromPoint.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.toPoint.y}}},{key:&quot;_findBorderPosition&quot;,value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:&quot;_getDistanceToEdge&quot;,value:function(t,e,i,n,o,r){return this._getDistanceToBezierEdge(t,e,i,n,o,r,this.via)}}]),i}(tC);function nC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var oC=function(t){zk(i,t);var e=nC(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_line&quot;,value:function(t,e,i){this._bezierCurve(t,e,i)}},{key:&quot;getViaNode&quot;,value:function(){return this._getViaCoordinates()}},{key:&quot;_getViaCoordinates&quot;,value:function(){var t,e,i=this.options.smooth.roundness,n=this.options.smooth.type,o=Math.abs(this.from.x-this.to.x),r=Math.abs(this.from.y-this.to.y);if(&quot;discrete&quot;===n||&quot;diagonalCross&quot;===n){var s,a;s=a=o&lt;=r?i*r:i*o,this.from.x&gt;this.to.x&amp;&amp;(s=-s),this.from.y&gt;=this.to.y&amp;&amp;(a=-a);var h=this.from.x+s,l=this.from.y+a;return&quot;discrete&quot;===n&amp;&amp;(o&lt;=r?h=o&lt;i*r?this.from.x:h:l=r&lt;i*o?this.from.y:l),{x:h,y:l}}if(&quot;straightCross&quot;===n){var d=(1-i)*o,c=(1-i)*r;return o&lt;=r?(d=0,this.from.y&lt;this.to.y&amp;&amp;(c=-c)):(this.from.x&lt;this.to.x&amp;&amp;(d=-d),c=0),{x:this.to.x+d,y:this.to.y+c}}if(&quot;horizontal&quot;===n){var u=(1-i)*o;return this.from.x&lt;this.to.x&amp;&amp;(u=-u),{x:this.to.x+u,y:this.from.y}}if(&quot;vertical&quot;===n){var f=(1-i)*r;return this.from.y&lt;this.to.y&amp;&amp;(f=-f),{x:this.from.x,y:this.to.y+f}}if(&quot;curvedCW&quot;===n){o=this.to.x-this.from.x,r=this.from.y-this.to.y;var p=Math.sqrt(o*o+r*r),v=Math.PI,g=(Math.atan2(r,o)+(.5*i+.5)*v)%(2*v);return{x:this.from.x+(.5*i+.5)*p*Math.sin(g),y:this.from.y+(.5*i+.5)*p*Math.cos(g)}}if(&quot;curvedCCW&quot;===n){o=this.to.x-this.from.x,r=this.from.y-this.to.y;var y=Math.sqrt(o*o+r*r),m=Math.PI,b=(Math.atan2(r,o)+(.5*-i+.5)*m)%(2*m);return{x:this.from.x+(.5*i+.5)*y*Math.sin(b),y:this.from.y+(.5*i+.5)*y*Math.cos(b)}}t=e=o&lt;=r?i*r:i*o,this.from.x&gt;this.to.x&amp;&amp;(t=-t),this.from.y&gt;=this.to.y&amp;&amp;(e=-e);var w=this.from.x+t,k=this.from.y+e;return o&lt;=r?w=this.from.x&lt;=this.to.x?this.to.x&lt;w?this.to.x:w:this.to.x&gt;w?this.to.x:w:k=this.from.y&gt;=this.to.y?this.to.y&gt;k?this.to.y:k:this.to.y&lt;k?this.to.y:k,{x:w,y:k}}},{key:&quot;_findBorderPosition&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:&quot;_getDistanceToEdge&quot;,value:function(t,e,i,n,o,r){var s=arguments.length&gt;6&amp;&amp;void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,n,o,r,s)}},{key:&quot;getPoint&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t,n=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,o=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:n,y:o}}}]),i}(tC);function rC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var sC=function(t){zk(i,t);var e=rC(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_getDistanceToBezierEdge2&quot;,value:function(t,e,i,n,o,r,s,a){for(var h=1e9,l=t,d=e,c=[0,0,0,0],u=1;u&lt;10;u++){var f=.1*u;c[0]=Math.pow(1-f,3),c[1]=3*f*Math.pow(1-f,2),c[2]=3*Math.pow(f,2)*(1-f),c[3]=Math.pow(f,3);var p=c[0]*t+c[1]*s.x+c[2]*a.x+c[3]*i,v=c[0]*e+c[1]*s.y+c[2]*a.y+c[3]*n;if(u&gt;0){var g=this._getDistanceToLine(l,d,p,v,o,r);h=g&lt;h?g:h}l=p,d=v}return h}}]),i}(tC);function aC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var hC=function(t){zk(i,t);var e=aC(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_line&quot;,value:function(t,e,i){var n=i[0],o=i[1];this._bezierCurve(t,e,n,o)}},{key:&quot;_getViaCoordinates&quot;,value:function(){var t,e,i,n,o=this.from.x-this.to.x,r=this.from.y-this.to.y,s=this.options.smooth.roundness;return(Math.abs(o)&gt;Math.abs(r)||!0===this.options.smooth.forceDirection||&quot;horizontal&quot;===this.options.smooth.forceDirection)&amp;&amp;&quot;vertical&quot;!==this.options.smooth.forceDirection?(e=this.from.y,n=this.to.y,t=this.from.x-s*o,i=this.to.x+s*o):(e=this.from.y-s*r,n=this.to.y+s*r,t=this.from.x,i=this.to.x),[{x:t,y:e},{x:i,y:n}]}},{key:&quot;getViaNode&quot;,value:function(){return this._getViaCoordinates()}},{key:&quot;_findBorderPosition&quot;,value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:&quot;_getDistanceToEdge&quot;,value:function(t,e,i,n,o,r){var s=arguments.length&gt;6&amp;&amp;void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),a=Kc(s,2),h=a[0],l=a[1];return this._getDistanceToBezierEdge2(t,e,i,n,o,r,h,l)}},{key:&quot;getPoint&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=Kc(e,2),n=i[0],o=i[1],r=t,s=[Math.pow(1-r,3),3*r*Math.pow(1-r,2),3*Math.pow(r,2)*(1-r),Math.pow(r,3)],a=s[0]*this.fromPoint.x+s[1]*n.x+s[2]*o.x+s[3]*this.toPoint.x,h=s[0]*this.fromPoint.y+s[1]*n.y+s[2]*o.y+s[3]*this.toPoint.y;return{x:a,y:h}}}]),i}(sC);function lC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var dC=function(t){zk(i,t);var e=lC(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_line&quot;,value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:&quot;getViaNode&quot;,value:function(){}},{key:&quot;getPoint&quot;,value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:&quot;_findBorderPosition&quot;,value:function(t,e){var i=this.to,n=this.from;t.id===this.from.id&amp;&amp;(i=this.from,n=this.to);var o=Math.atan2(i.y-n.y,i.x-n.x),r=i.x-n.x,s=i.y-n.y,a=Math.sqrt(r*r+s*s),h=(a-t.distanceToBorder(e,o))/a;return{x:(1-h)*n.x+h*i.x,y:(1-h)*n.y+h*i.y,t:0}}},{key:&quot;_getDistanceToEdge&quot;,value:function(t,e,i,n,o,r){return this._getDistanceToLine(t,e,i,n,o,r)}}]),i}($O),cC=function(){function t(e,i,n,o,r){if(Yd(this,t),void 0===i)throw new Error(&quot;No body provided&quot;);this.options=Cm(o),this.globalOptions=o,this.defaultOptions=r,this.body=i,this.imagelist=n,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new OE(this.body,this.options,!0),this.setOptions(e)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(e){if(e){var i=void 0!==e.physics&amp;&amp;this.options.physics!==e.physics||void 0!==e.hidden&amp;&amp;(this.options.hidden||!1)!==(e.hidden||!1)||void 0!==e.from&amp;&amp;this.options.from!==e.from||void 0!==e.to&amp;&amp;this.options.to!==e.to;t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==e.id&amp;&amp;(this.id=e.id),void 0!==e.from&amp;&amp;(this.fromId=e.from),void 0!==e.to&amp;&amp;(this.toId=e.to),void 0!==e.title&amp;&amp;(this.title=e.title),void 0!==e.value&amp;&amp;(e.value=lE(e.value));var n=[e,this.options,this.defaultOptions];return this.chooser=gE(&quot;edge&quot;,n),this.updateLabelModule(e),i=this.updateEdgeType()||i,this._setInteractionWidths(),this.connect(),i}}},{key:&quot;getFormattingValues&quot;,value:function(){var t=!0===this.options.arrows.to||!0===this.options.arrows.to.enabled,e=!0===this.options.arrows.from||!0===this.options.arrows.from.enabled,i=!0===this.options.arrows.middle||!0===this.options.arrows.middle.enabled,n=this.options.color.inherit,o={toArrow:t,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,toArrowSrc:this.options.arrows.to.src,toArrowImageWidth:this.options.arrows.to.imageWidth,toArrowImageHeight:this.options.arrows.to.imageHeight,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,middleArrowSrc:this.options.arrows.middle.src,middleArrowImageWidth:this.options.arrows.middle.imageWidth,middleArrowImageHeight:this.options.arrows.middle.imageHeight,fromArrow:e,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,fromArrowSrc:this.options.arrows.from.src,fromArrowImageWidth:this.options.arrows.from.imageWidth,fromArrowImageHeight:this.options.arrows.from.imageHeight,arrowStrikethrough:this.options.arrowStrikethrough,color:n?void 0:this.options.color.color,inheritsColor:n,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width,background:this.options.background.enabled,backgroundColor:this.options.background.color,backgroundSize:this.options.background.size,backgroundDashes:this.options.background.dashes};if(this.selected||this.hover)if(!0===this.chooser){if(this.selected){var r=this.options.selectionWidth;&quot;function&quot;==typeof r?o.width=r(o.width):&quot;number&quot;==typeof r&amp;&amp;(o.width+=r),o.width=Math.max(o.width,.3/this.body.view.scale),o.color=this.options.color.highlight,o.shadow=this.options.shadow.enabled}else if(this.hover){var s=this.options.hoverWidth;&quot;function&quot;==typeof s?o.width=s(o.width):&quot;number&quot;==typeof s&amp;&amp;(o.width+=s),o.width=Math.max(o.width,.3/this.body.view.scale),o.color=this.options.color.hover,o.shadow=this.options.shadow.enabled}}else&quot;function&quot;==typeof this.chooser&amp;&amp;(this.chooser(o,this.options.id,this.selected,this.hover),void 0!==o.color&amp;&amp;(o.inheritsColor=!1),!1===o.shadow&amp;&amp;(o.shadowColor===this.options.shadow.color&amp;&amp;o.shadowSize===this.options.shadow.size&amp;&amp;o.shadowX===this.options.shadow.x&amp;&amp;o.shadowY===this.options.shadow.y||(o.shadow=!0)));else o.shadow=this.options.shadow.enabled,o.width=Math.max(o.width,.3/this.body.view.scale);return o}},{key:&quot;updateLabelModule&quot;,value:function(t){var e=[t,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,e),void 0!==this.labelModule.baseSize&amp;&amp;(this.baseFontSize=this.labelModule.baseSize)}},{key:&quot;updateEdgeType&quot;,value:function(){var t=this.options.smooth,e=!1,i=!0;return void 0!==this.edgeType&amp;&amp;((this.edgeType instanceof iC&amp;&amp;!0===t.enabled&amp;&amp;&quot;dynamic&quot;===t.type||this.edgeType instanceof hC&amp;&amp;!0===t.enabled&amp;&amp;&quot;cubicBezier&quot;===t.type||this.edgeType instanceof oC&amp;&amp;!0===t.enabled&amp;&amp;&quot;dynamic&quot;!==t.type&amp;&amp;&quot;cubicBezier&quot;!==t.type||this.edgeType instanceof dC&amp;&amp;!1===t.type.enabled)&amp;&amp;(i=!1),!0===i&amp;&amp;(e=this.cleanup())),!0===i?!0===t.enabled?&quot;dynamic&quot;===t.type?(e=!0,this.edgeType=new iC(this.options,this.body,this.labelModule)):&quot;cubicBezier&quot;===t.type?this.edgeType=new hC(this.options,this.body,this.labelModule):this.edgeType=new oC(this.options,this.body,this.labelModule):this.edgeType=new dC(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),e}},{key:&quot;connect&quot;,value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&amp;&amp;void 0!==this.to,!0===this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&amp;&amp;this.from.detachEdge(this),this.to&amp;&amp;this.to.detachEdge(this)),this.edgeType.connect()}},{key:&quot;disconnect&quot;,value:function(){this.from&amp;&amp;(this.from.detachEdge(this),this.from=void 0),this.to&amp;&amp;(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:&quot;getTitle&quot;,value:function(){return this.title}},{key:&quot;isSelected&quot;,value:function(){return this.selected}},{key:&quot;getValue&quot;,value:function(){return this.options.value}},{key:&quot;setValueRange&quot;,value:function(t,e,i){if(void 0!==this.options.value){var n=this.options.scaling.customScalingFunction(t,e,i,this.options.value),o=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var r=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+n*r}this.options.width=this.options.scaling.min+n*o}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:&quot;_setInteractionWidths&quot;,value:function(){&quot;function&quot;==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,&quot;function&quot;==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:&quot;draw&quot;,value:function(t){var e=this.getFormattingValues();if(!e.hidden){var i=this.edgeType.getViaNode();this.edgeType.drawLine(t,e,this.selected,this.hover,i),this.drawLabel(t,i)}}},{key:&quot;drawArrows&quot;,value:function(t){var e=this.getFormattingValues();if(!e.hidden){var i=this.edgeType.getViaNode(),n={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,e.fromArrow&amp;&amp;(n.from=this.edgeType.getArrowData(t,&quot;from&quot;,i,this.selected,this.hover,e),!1===e.arrowStrikethrough&amp;&amp;(this.edgeType.fromPoint=n.from.core),e.fromArrowSrc&amp;&amp;(n.from.image=this.imagelist.load(e.fromArrowSrc)),e.fromArrowImageWidth&amp;&amp;(n.from.imageWidth=e.fromArrowImageWidth),e.fromArrowImageHeight&amp;&amp;(n.from.imageHeight=e.fromArrowImageHeight)),e.toArrow&amp;&amp;(n.to=this.edgeType.getArrowData(t,&quot;to&quot;,i,this.selected,this.hover,e),!1===e.arrowStrikethrough&amp;&amp;(this.edgeType.toPoint=n.to.core),e.toArrowSrc&amp;&amp;(n.to.image=this.imagelist.load(e.toArrowSrc)),e.toArrowImageWidth&amp;&amp;(n.to.imageWidth=e.toArrowImageWidth),e.toArrowImageHeight&amp;&amp;(n.to.imageHeight=e.toArrowImageHeight)),e.middleArrow&amp;&amp;(n.middle=this.edgeType.getArrowData(t,&quot;middle&quot;,i,this.selected,this.hover,e),e.middleArrowSrc&amp;&amp;(n.middle.image=this.imagelist.load(e.middleArrowSrc)),e.middleArrowImageWidth&amp;&amp;(n.middle.imageWidth=e.middleArrowImageWidth),e.middleArrowImageHeight&amp;&amp;(n.middle.imageHeight=e.middleArrowImageHeight)),e.fromArrow&amp;&amp;this.edgeType.drawArrowHead(t,e,this.selected,this.hover,n.from),e.middleArrow&amp;&amp;this.edgeType.drawArrowHead(t,e,this.selected,this.hover,n.middle),e.toArrow&amp;&amp;this.edgeType.drawArrowHead(t,e,this.selected,this.hover,n.to)}}},{key:&quot;drawLabel&quot;,value:function(t,e){if(void 0!==this.options.label){var i,n=this.from,o=this.to;if(this.labelModule.differentState(this.selected,this.hover)&amp;&amp;this.labelModule.getTextSize(t,this.selected,this.hover),n.id!=o.id){this.labelModule.pointToSelf=!1,i=this.edgeType.getPoint(.5,e),t.save();var r=this._getRotation(t);0!=r.angle&amp;&amp;(t.translate(r.x,r.y),t.rotate(r.angle)),this.labelModule.draw(t,i.x,i.y,this.selected,this.hover),t.restore()}else{this.labelModule.pointToSelf=!0;var s=bE(t,this.options.selfReference.angle,this.options.selfReference.size,n);i=this._pointOnCircle(s.x,s.y,this.options.selfReference.size,this.options.selfReference.angle),this.labelModule.draw(t,i.x,i.y,this.selected,this.hover)}}}},{key:&quot;getItemsOnPoint&quot;,value:function(t){var e=[];if(this.labelModule.visible()){var i=this._getRotation();yE(this.labelModule.getSize(),t,i)&amp;&amp;e.push({edgeId:this.id,labelId:0})}var n={left:t.x,top:t.y};return this.isOverlappingWith(n)&amp;&amp;e.push({edgeId:this.id}),e}},{key:&quot;isOverlappingWith&quot;,value:function(t){if(this.connected){var e=this.from.x,i=this.from.y,n=this.to.x,o=this.to.y,r=t.left,s=t.top;return this.edgeType.getDistanceToEdge(e,i,n,o,r,s)&lt;10}return!1}},{key:&quot;_getRotation&quot;,value:function(t){var e=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,e);void 0!==t&amp;&amp;this.labelModule.calculateLabelSize(t,this.selected,this.hover,i.x,i.y);var n={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible())return n;if(&quot;horizontal&quot;===this.options.font.align)return n;var o=this.from.y-this.to.y,r=this.from.x-this.to.x,s=Math.atan2(o,r);return(s&lt;-1&amp;&amp;r&lt;0||s&gt;0&amp;&amp;r&lt;0)&amp;&amp;(s+=Math.PI),n.angle=s,n}},{key:&quot;_pointOnCircle&quot;,value:function(t,e,i,n){return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:&quot;select&quot;,value:function(){this.selected=!0}},{key:&quot;unselect&quot;,value:function(){this.selected=!1}},{key:&quot;cleanup&quot;,value:function(){return this.edgeType.cleanup()}},{key:&quot;remove&quot;,value:function(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}},{key:&quot;endPointsValid&quot;,value:function(){return void 0!==this.body.nodes[this.fromId]&amp;&amp;void 0!==this.body.nodes[this.toId]}}],[{key:&quot;parseOptions&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:{},o=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]&amp;&amp;arguments[4],r=[&quot;endPointOffset&quot;,&quot;arrowStrikethrough&quot;,&quot;id&quot;,&quot;from&quot;,&quot;hidden&quot;,&quot;hoverWidth&quot;,&quot;labelHighlightBold&quot;,&quot;length&quot;,&quot;line&quot;,&quot;opacity&quot;,&quot;physics&quot;,&quot;scaling&quot;,&quot;selectionWidth&quot;,&quot;selfReferenceSize&quot;,&quot;selfReference&quot;,&quot;to&quot;,&quot;title&quot;,&quot;value&quot;,&quot;width&quot;,&quot;font&quot;,&quot;chosen&quot;,&quot;widthConstraint&quot;];if(em(r,t,e,i),void 0!==e.endPointOffset&amp;&amp;void 0!==e.endPointOffset.from&amp;&amp;(ok(e.endPointOffset.from)?t.endPointOffset.from=e.endPointOffset.from:(t.endPointOffset.from=void 0!==n.endPointOffset.from?n.endPointOffset.from:0,console.error(&quot;endPointOffset.from is not a valid number&quot;))),void 0!==e.endPointOffset&amp;&amp;void 0!==e.endPointOffset.to&amp;&amp;(ok(e.endPointOffset.to)?t.endPointOffset.to=e.endPointOffset.to:(t.endPointOffset.to=void 0!==n.endPointOffset.to?n.endPointOffset.to:0,console.error(&quot;endPointOffset.to is not a valid number&quot;))),mE(e.label)?t.label=e.label:mE(t.label)||(t.label=void 0),Sm(t,e,&quot;smooth&quot;,n),Sm(t,e,&quot;shadow&quot;,n),Sm(t,e,&quot;background&quot;,n),void 0!==e.dashes&amp;&amp;null!==e.dashes?t.dashes=e.dashes:!0===i&amp;&amp;null===e.dashes&amp;&amp;(t.dashes=Kp(n.dashes)),void 0!==e.scaling&amp;&amp;null!==e.scaling?(void 0!==e.scaling.min&amp;&amp;(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&amp;&amp;(t.scaling.max=e.scaling.max),Sm(t.scaling,e.scaling,&quot;label&quot;,n.scaling)):!0===i&amp;&amp;null===e.scaling&amp;&amp;(t.scaling=Kp(n.scaling)),void 0!==e.arrows&amp;&amp;null!==e.arrows)if(&quot;string&quot;==typeof e.arrows){var s=e.arrows.toLowerCase();t.arrows.to.enabled=-1!=Fp(s).call(s,&quot;to&quot;),t.arrows.middle.enabled=-1!=Fp(s).call(s,&quot;middle&quot;),t.arrows.from.enabled=-1!=Fp(s).call(s,&quot;from&quot;)}else{if(&quot;object&quot;!==Qc(e.arrows))throw new Error(&quot;The arrow newOptions can only be an object or a string. Refer to the documentation. You used:&quot;+gv(e.arrows));Sm(t.arrows,e.arrows,&quot;to&quot;,n.arrows),Sm(t.arrows,e.arrows,&quot;middle&quot;,n.arrows),Sm(t.arrows,e.arrows,&quot;from&quot;,n.arrows)}else!0===i&amp;&amp;null===e.arrows&amp;&amp;(t.arrows=Kp(n.arrows));if(void 0!==e.color&amp;&amp;null!==e.color){var a=$y(e.color)?{color:e.color,highlight:e.color,hover:e.color,inherit:!1,opacity:1}:e.color,h=t.color;if(o)nm(h,n.color,!1,i);else for(var l in h)Object.prototype.hasOwnProperty.call(h,l)&amp;&amp;delete h[l];if($y(h))h.color=h,h.highlight=h,h.hover=h,h.inherit=!1,void 0===a.opacity&amp;&amp;(h.opacity=1);else{var d=!1;void 0!==a.color&amp;&amp;(h.color=a.color,d=!0),void 0!==a.highlight&amp;&amp;(h.highlight=a.highlight,d=!0),void 0!==a.hover&amp;&amp;(h.hover=a.hover,d=!0),void 0!==a.inherit&amp;&amp;(h.inherit=a.inherit),void 0!==a.opacity&amp;&amp;(h.opacity=Math.min(1,Math.max(0,a.opacity))),!0===d?h.inherit=!1:void 0===h.inherit&amp;&amp;(h.inherit=&quot;from&quot;)}}else!0===i&amp;&amp;null===e.color&amp;&amp;(t.color=Cm(n.color));!0===i&amp;&amp;null===e.font&amp;&amp;(t.font=Cm(n.font)),Object.prototype.hasOwnProperty.call(e,&quot;selfReferenceSize&quot;)&amp;&amp;(console.warn(&quot;The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}&quot;),t.selfReference.size=e.selfReferenceSize)}}]),t}(),uC=function(){function t(e,i,n){var o,r=this;Yd(this,t),this.body=e,this.images=i,this.groups=n,this.body.functions.createEdge=zn(o=this.create).call(o,this),this.edgesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:&quot;arrow&quot;},middle:{enabled:!1,scaleFactor:1,type:&quot;arrow&quot;},from:{enabled:!1,scaleFactor:1,type:&quot;arrow&quot;}},endPointOffset:{from:0,to:0},arrowStrikethrough:!0,color:{color:&quot;#848484&quot;,highlight:&quot;#848484&quot;,hover:&quot;#848484&quot;,inherit:&quot;from&quot;,opacity:1},dashes:!1,font:{color:&quot;#343434&quot;,size:14,face:&quot;arial&quot;,background:&quot;none&quot;,strokeWidth:2,strokeColor:&quot;#ffffff&quot;,align:&quot;horizontal&quot;,multi:!1,vadjust:0,bold:{mod:&quot;bold&quot;},boldital:{mod:&quot;bold italic&quot;},ital:{mod:&quot;italic&quot;},mono:{mod:&quot;&quot;,size:15,face:&quot;courier new&quot;,vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,n){if(e===t)return.5;var o=1/(e-t);return Math.max(0,(n-t)*o)}},selectionWidth:1.5,selfReference:{size:20,angle:Math.PI/4,renderBehindTheNode:!0},shadow:{enabled:!1,color:&quot;rgba(0,0,0,0.5)&quot;,size:10,x:5,y:5},background:{enabled:!1,color:&quot;rgba(111,111,111,1)&quot;,size:10,dashes:!1},smooth:{enabled:!0,type:&quot;dynamic&quot;,forceDirection:&quot;none&quot;,roundness:.5},title:void 0,width:1,value:void 0},nm(this.options,this.defaultOptions),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t,e,i=this;this.body.emitter.on(&quot;_forceDisableDynamicCurves&quot;,(function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];&quot;dynamic&quot;===t&amp;&amp;(t=&quot;continuous&quot;);var n=!1;for(var o in i.body.edges)if(Object.prototype.hasOwnProperty.call(i.body.edges,o)){var r=i.body.edges[o],s=i.body.data.edges.get(o);if(null!=s){var a=s.smooth;void 0!==a&amp;&amp;!0===a.enabled&amp;&amp;&quot;dynamic&quot;===a.type&amp;&amp;(void 0===t?r.setOptions({smooth:!1}):r.setOptions({smooth:{type:t}}),n=!0)}}!0===e&amp;&amp;!0===n&amp;&amp;i.body.emitter.emit(&quot;_dataChanged&quot;)})),this.body.emitter.on(&quot;_dataUpdated&quot;,(function(){i.reconnectEdges()})),this.body.emitter.on(&quot;refreshEdges&quot;,zn(t=this.refresh).call(t,this)),this.body.emitter.on(&quot;refresh&quot;,zn(e=this.refresh).call(e,this)),this.body.emitter.on(&quot;destroy&quot;,(function(){hm(i.edgesListeners,(function(t,e){i.body.data.edges&amp;&amp;i.body.data.edges.off(e,t)})),delete i.body.functions.createEdge,delete i.edgesListeners.add,delete i.edgesListeners.update,delete i.edgesListeners.remove,delete i.edgesListeners}))}},{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){cC.parseOptions(this.options,t,!0,this.defaultOptions,!0);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,i)&amp;&amp;(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font)for(var n in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,n)&amp;&amp;this.body.edges[n].updateLabelModule();void 0===t.hidden&amp;&amp;void 0===t.physics&amp;&amp;!0!==e||this.body.emitter.emit(&quot;_dataChanged&quot;)}}},{key:&quot;setData&quot;,value:function(t){var e=this,i=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],n=this.body.data.edges;if(Qx(&quot;id&quot;,t))this.body.data.edges=t;else if(lu(t))this.body.data.edges=new Kx,this.body.data.edges.add(t);else{if(t)throw new TypeError(&quot;Array or DataSet expected&quot;);this.body.data.edges=new Kx}if(n&amp;&amp;hm(this.edgesListeners,(function(t,e){n.off(e,t)})),this.body.edges={},this.body.data.edges){hm(this.edgesListeners,(function(t,i){e.body.data.edges.on(i,t)}));var o=this.body.data.edges.getIds();this.add(o,!0)}this.body.emitter.emit(&quot;_adjustEdgesForHierarchicalLayout&quot;),!1===i&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;add&quot;,value:function(t){for(var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],i=this.body.edges,n=this.body.data.edges,o=0;o&lt;t.length;o++){var r=t[o],s=i[r];s&amp;&amp;s.disconnect();var a=n.get(r,{showInternalIds:!0});i[r]=this.create(a)}this.body.emitter.emit(&quot;_adjustEdgesForHierarchicalLayout&quot;),!1===e&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;update&quot;,value:function(t){for(var e=this.body.edges,i=this.body.data.edges,n=!1,o=0;o&lt;t.length;o++){var r=t[o],s=i.get(r),a=e[r];void 0!==a?(a.disconnect(),n=a.setOptions(s)||n,a.connect()):(this.body.edges[r]=this.create(s),n=!0)}!0===n?(this.body.emitter.emit(&quot;_adjustEdgesForHierarchicalLayout&quot;),this.body.emitter.emit(&quot;_dataChanged&quot;)):this.body.emitter.emit(&quot;_dataUpdated&quot;)}},{key:&quot;remove&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];if(0!==t.length){var i=this.body.edges;hm(t,(function(t){var e=i[t];void 0!==e&amp;&amp;e.remove()})),e&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}}},{key:&quot;refresh&quot;,value:function(){var t=this;hm(this.body.edges,(function(e,i){var n=t.body.data.edges.get(i);void 0!==n&amp;&amp;e.setOptions(n)}))}},{key:&quot;create&quot;,value:function(t){return new cC(t,this.body,this.images,this.options,this.defaultOptions)}},{key:&quot;reconnectEdges&quot;,value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)Object.prototype.hasOwnProperty.call(e,t)&amp;&amp;(e[t].edges=[]);for(t in i)if(Object.prototype.hasOwnProperty.call(i,t)){var n=i[t];n.from=null,n.to=null,n.connect()}}},{key:&quot;getConnectedNodes&quot;,value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];void 0!==i.fromId&amp;&amp;e.push(i.fromId),void 0!==i.toId&amp;&amp;e.push(i.toId)}return e}},{key:&quot;_updateState&quot;,value:function(){this._addMissingEdges(),this._removeInvalidEdges()}},{key:&quot;_removeInvalidEdges&quot;,value:function(){var t=this,e=[];hm(this.body.edges,(function(i,n){var o=t.body.nodes[i.toId],r=t.body.nodes[i.fromId];void 0!==o&amp;&amp;!0===o.isCluster||void 0!==r&amp;&amp;!0===r.isCluster||void 0!==o&amp;&amp;void 0!==r||e.push(n)})),this.remove(e,!1)}},{key:&quot;_addMissingEdges&quot;,value:function(){var t=this.body.data.edges;if(null!=t){var e=this.body.edges,i=[];Fu(t).call(t,(function(t,n){void 0===e[n]&amp;&amp;i.push(n)})),this.add(i,!0)}}}]),t}(),fC=function(){function t(e,i,n){Yd(this,t),this.body=e,this.physicsBody=i,this.barnesHutTree,this.setOptions(n),this._rng=jy(&quot;BARNES HUT SOLVER&quot;)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:&quot;solve&quot;,value:function(){if(0!==this.options.gravitationalConstant&amp;&amp;this.physicsBody.physicsNodeIndices.length&gt;0){var t,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,n=i.length,o=this._formBarnesHutTree(e,i);this.barnesHutTree=o;for(var r=0;r&lt;n;r++)(t=e[i[r]]).options.mass&gt;0&amp;&amp;this._getForceContributions(o.root,t)}}},{key:&quot;_getForceContributions&quot;,value:function(t,e){this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)}},{key:&quot;_getForceContribution&quot;,value:function(t,e){if(t.childrenCount&gt;0){var i=t.centerOfMass.x-e.x,n=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+n*n);o*t.calcSize&gt;this.thetaInversed?this._calculateForces(o,i,n,e,t):4===t.childrenCount?this._getForceContributions(t,e):t.children.data.id!=e.id&amp;&amp;this._calculateForces(o,i,n,e,t)}}},{key:&quot;_calculateForces&quot;,value:function(t,e,i,n,o){0===t&amp;&amp;(e=t=.1),this.overlapAvoidanceFactor&lt;1&amp;&amp;n.shape.radius&amp;&amp;(t=Math.max(.1+this.overlapAvoidanceFactor*n.shape.radius,t-n.shape.radius));var r=this.options.gravitationalConstant*o.mass*n.options.mass/Math.pow(t,3),s=e*r,a=i*r;this.physicsBody.forces[n.id].x+=s,this.physicsBody.forces[n.id].y+=a}},{key:&quot;_formBarnesHutTree&quot;,value:function(t,e){for(var i,n=e.length,o=t[e[0]].x,r=t[e[0]].y,s=t[e[0]].x,a=t[e[0]].y,h=1;h&lt;n;h++){var l=t[e[h]],d=l.x,c=l.y;l.options.mass&gt;0&amp;&amp;(d&lt;o&amp;&amp;(o=d),d&gt;s&amp;&amp;(s=d),c&lt;r&amp;&amp;(r=c),c&gt;a&amp;&amp;(a=c))}var u=Math.abs(s-o)-Math.abs(a-r);u&gt;0?(r-=.5*u,a+=.5*u):(o+=.5*u,s-=.5*u);var f=Math.max(1e-5,Math.abs(s-o)),p=.5*f,v=.5*(o+s),g=.5*(r+a),y={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-p,maxX:v+p,minY:g-p,maxY:g+p},size:f,calcSize:1/f,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(y.root);for(var m=0;m&lt;n;m++)(i=t[e[m]]).options.mass&gt;0&amp;&amp;this._placeInTree(y.root,i);return y}},{key:&quot;_updateBranchMass&quot;,value:function(t,e){var i=t.centerOfMass,n=t.mass+e.options.mass,o=1/n;i.x=i.x*t.mass+e.x*e.options.mass,i.x*=o,i.y=i.y*t.mass+e.y*e.options.mass,i.y*=o,t.mass=n;var r=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidth&lt;r?r:t.maxWidth}},{key:&quot;_placeInTree&quot;,value:function(t,e,i){1==i&amp;&amp;void 0!==i||this._updateBranchMass(t,e);var n,o=t.children.NW.range;n=o.maxX&gt;e.x?o.maxY&gt;e.y?&quot;NW&quot;:&quot;SW&quot;:o.maxY&gt;e.y?&quot;NE&quot;:&quot;SE&quot;,this._placeInRegion(t,e,n)}},{key:&quot;_placeInRegion&quot;,value:function(t,e,i){var n=t.children[i];switch(n.childrenCount){case 0:n.children.data=e,n.childrenCount=1,this._updateBranchMass(n,e);break;case 1:n.children.data.x===e.x&amp;&amp;n.children.data.y===e.y?(e.x+=this._rng(),e.y+=this._rng()):(this._splitBranch(n),this._placeInTree(n,e));break;case 4:this._placeInTree(n,e)}}},{key:&quot;_splitBranch&quot;,value:function(t){var e=null;1===t.childrenCount&amp;&amp;(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,&quot;NW&quot;),this._insertRegion(t,&quot;NE&quot;),this._insertRegion(t,&quot;SW&quot;),this._insertRegion(t,&quot;SE&quot;),null!=e&amp;&amp;this._placeInTree(t,e)}},{key:&quot;_insertRegion&quot;,value:function(t,e){var i,n,o,r,s=.5*t.size;switch(e){case&quot;NW&quot;:i=t.range.minX,n=t.range.minX+s,o=t.range.minY,r=t.range.minY+s;break;case&quot;NE&quot;:i=t.range.minX+s,n=t.range.maxX,o=t.range.minY,r=t.range.minY+s;break;case&quot;SW&quot;:i=t.range.minX,n=t.range.minX+s,o=t.range.minY+s,r=t.range.maxY;break;case&quot;SE&quot;:i=t.range.minX+s,n=t.range.maxX,o=t.range.minY+s,r=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:n,minY:o,maxY:r},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:&quot;_debug&quot;,value:function(t,e){void 0!==this.barnesHutTree&amp;&amp;(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:&quot;_drawBranch&quot;,value:function(t,e,i){void 0===i&amp;&amp;(i=&quot;#FF0000&quot;),4===t.childrenCount&amp;&amp;(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}(),pC=function(){function t(e,i,n){Yd(this,t),this._rng=jy(&quot;REPULSION SOLVER&quot;),this.body=e,this.physicsBody=i,this.setOptions(n)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t}},{key:&quot;solve&quot;,value:function(){for(var t,e,i,n,o,r,s,a,h=this.body.nodes,l=this.physicsBody.physicsNodeIndices,d=this.physicsBody.forces,c=this.options.nodeDistance,u=-2/3/c,f=0;f&lt;l.length-1;f++){s=h[l[f]];for(var p=f+1;p&lt;l.length;p++)t=(a=h[l[p]]).x-s.x,e=a.y-s.y,0===(i=Math.sqrt(t*t+e*e))&amp;&amp;(t=i=.1*this._rng()),i&lt;2*c&amp;&amp;(r=i&lt;.5*c?1:u*i+1.3333333333333333,n=t*(r/=i),o=e*r,d[s.id].x-=n,d[s.id].y-=o,d[a.id].x+=n,d[a.id].y+=o)}}}]),t}(),vC=function(){function t(e,i,n){Yd(this,t),this.body=e,this.physicsBody=i,this.setOptions(n)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t,this.overlapAvoidanceFactor=Math.max(0,Math.min(1,this.options.avoidOverlap||0))}},{key:&quot;solve&quot;,value:function(){for(var t=this.body.nodes,e=this.physicsBody.physicsNodeIndices,i=this.physicsBody.forces,n=this.options.nodeDistance,o=0;o&lt;e.length-1;o++)for(var r=t[e[o]],s=o+1;s&lt;e.length;s++){var a=t[e[s]];if(r.level===a.level){var h=n+this.overlapAvoidanceFactor*((r.shape.radius||0)/2+(a.shape.radius||0)/2),l=a.x-r.x,d=a.y-r.y,c=Math.sqrt(l*l+d*d),u=void 0;u=c&lt;h?-Math.pow(.05*c,2)+Math.pow(.05*h,2):0,0!==c&amp;&amp;(u/=c);var f=l*u,p=d*u;i[r.id].x-=f,i[r.id].y-=p,i[a.id].x+=f,i[a.id].y+=p}}}}]),t}(),gC=function(){function t(e,i,n){Yd(this,t),this.body=e,this.physicsBody=i,this.setOptions(n)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t}},{key:&quot;solve&quot;,value:function(){for(var t,e,i,n,o,r=this.physicsBody.physicsEdgeIndices,s=this.body.edges,a=0;a&lt;r.length;a++)!0===(e=s[r[a]]).connected&amp;&amp;e.toId!==e.fromId&amp;&amp;void 0!==this.body.nodes[e.toId]&amp;&amp;void 0!==this.body.nodes[e.fromId]&amp;&amp;(void 0!==e.edgeType.via?(t=void 0===e.options.length?this.options.springLength:e.options.length,i=e.to,n=e.edgeType.via,o=e.from,this._calculateSpringForce(i,n,.5*t),this._calculateSpringForce(n,o,.5*t)):(t=void 0===e.options.length?1.5*this.options.springLength:e.options.length,this._calculateSpringForce(e.from,e.to,t)))}},{key:&quot;_calculateSpringForce&quot;,value:function(t,e,i){var n=t.x-e.x,o=t.y-e.y,r=Math.max(Math.sqrt(n*n+o*o),.01),s=this.options.springConstant*(i-r)/r,a=n*s,h=o*s;void 0!==this.physicsBody.forces[t.id]&amp;&amp;(this.physicsBody.forces[t.id].x+=a,this.physicsBody.forces[t.id].y+=h),void 0!==this.physicsBody.forces[e.id]&amp;&amp;(this.physicsBody.forces[e.id].x-=a,this.physicsBody.forces[e.id].y-=h)}}]),t}(),yC=function(){function t(e,i,n){Yd(this,t),this.body=e,this.physicsBody=i,this.setOptions(n)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t}},{key:&quot;solve&quot;,value:function(){for(var t,e,i,n,o,r,s,a,h,l,d=this.body.edges,c=.5,u=this.physicsBody.physicsEdgeIndices,f=this.physicsBody.physicsNodeIndices,p=this.physicsBody.forces,v=0;v&lt;f.length;v++){var g=f[v];p[g].springFx=0,p[g].springFy=0}for(var y=0;y&lt;u.length;y++)!0===(e=d[u[y]]).connected&amp;&amp;(t=void 0===e.options.length?this.options.springLength:e.options.length,i=e.from.x-e.to.x,n=e.from.y-e.to.y,a=0===(a=Math.sqrt(i*i+n*n))?.01:a,o=i*(s=this.options.springConstant*(t-a)/a),r=n*s,e.to.level!=e.from.level?(void 0!==p[e.toId]&amp;&amp;(p[e.toId].springFx-=o,p[e.toId].springFy-=r),void 0!==p[e.fromId]&amp;&amp;(p[e.fromId].springFx+=o,p[e.fromId].springFy+=r)):(void 0!==p[e.toId]&amp;&amp;(p[e.toId].x-=c*o,p[e.toId].y-=c*r),void 0!==p[e.fromId]&amp;&amp;(p[e.fromId].x+=c*o,p[e.fromId].y+=c*r)));s=1;for(var m=0;m&lt;f.length;m++){var b=f[m];h=Math.min(s,Math.max(-s,p[b].springFx)),l=Math.min(s,Math.max(-s,p[b].springFy)),p[b].x+=h,p[b].y+=l}for(var w=0,k=0,_=0;_&lt;f.length;_++){var x=f[_];w+=p[x].x,k+=p[x].y}for(var E=w/f.length,O=k/f.length,C=0;C&lt;f.length;C++){var S=f[C];p[S].x-=E,p[S].y-=O}}}]),t}(),mC=function(){function t(e,i,n){Yd(this,t),this.body=e,this.physicsBody=i,this.setOptions(n)}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){this.options=t}},{key:&quot;solve&quot;,value:function(){for(var t,e,i,n,o=this.body.nodes,r=this.physicsBody.physicsNodeIndices,s=this.physicsBody.forces,a=0;a&lt;r.length;a++){t=-(n=o[r[a]]).x,e=-n.y,i=Math.sqrt(t*t+e*e),this._calculateForces(i,t,e,s,n)}}},{key:&quot;_calculateForces&quot;,value:function(t,e,i,n,o){var r=0===t?0:this.options.centralGravity/t;n[o.id].x=e*r,n[o.id].y=i*r}}]),t}();function bC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var wC=function(t){zk(i,t);var e=bC(i);function i(t,n,o){var r;return Yd(this,i),(r=e.call(this,t,n,o))._rng=jy(&quot;FORCE ATLAS 2 BASED REPULSION SOLVER&quot;),r}return Kd(i,[{key:&quot;_calculateForces&quot;,value:function(t,e,i,n,o){0===t&amp;&amp;(e=t=.1*this._rng()),this.overlapAvoidanceFactor&lt;1&amp;&amp;n.shape.radius&amp;&amp;(t=Math.max(.1+this.overlapAvoidanceFactor*n.shape.radius,t-n.shape.radius));var r=n.edges.length+1,s=this.options.gravitationalConstant*o.mass*n.options.mass*r/Math.pow(t,2),a=e*s,h=i*s;this.physicsBody.forces[n.id].x+=a,this.physicsBody.forces[n.id].y+=h}}]),i}(fC);function kC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var _C=function(t){zk(i,t);var e=kC(i);function i(t,n,o){return Yd(this,i),e.call(this,t,n,o)}return Kd(i,[{key:&quot;_calculateForces&quot;,value:function(t,e,i,n,o){if(t&gt;0){var r=o.edges.length+1,s=this.options.centralGravity*r*o.options.mass;n[o.id].x=e*s,n[o.id].y=i*s}}}]),i}(mC),xC=function(){function t(e){Yd(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:&quot;barnesHut&quot;,stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0,wind:{x:0,y:0}},un(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t=this;this.body.emitter.on(&quot;initPhysics&quot;,(function(){t.initPhysics()})),this.body.emitter.on(&quot;_layoutFailed&quot;,(function(){t.layoutFailed=!0})),this.body.emitter.on(&quot;resetPhysics&quot;,(function(){t.stopSimulation(),t.ready=!1})),this.body.emitter.on(&quot;disablePhysics&quot;,(function(){t.physicsEnabled=!1,t.stopSimulation()})),this.body.emitter.on(&quot;restorePhysics&quot;,(function(){t.setOptions(t.options),!0===t.ready&amp;&amp;t.startSimulation()})),this.body.emitter.on(&quot;startSimulation&quot;,(function(){!0===t.ready&amp;&amp;t.startSimulation()})),this.body.emitter.on(&quot;stopSimulation&quot;,(function(){t.stopSimulation()})),this.body.emitter.on(&quot;destroy&quot;,(function(){t.stopSimulation(!1),t.body.emitter.off()})),this.body.emitter.on(&quot;_dataChanged&quot;,(function(){t.updatePhysicsData()}))}},{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t)if(!1===t)this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation();else if(!0===t)this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation();else{this.physicsEnabled=!0,im([&quot;stabilization&quot;],this.options,t),Sm(this.options,t,&quot;stabilization&quot;),void 0===t.enabled&amp;&amp;(this.options.enabled=!0),!1===this.options.enabled&amp;&amp;(this.physicsEnabled=!1,this.stopSimulation());var e=this.options.wind;e&amp;&amp;((&quot;number&quot;!=typeof e.x||ek(e.x))&amp;&amp;(e.x=0),(&quot;number&quot;!=typeof e.y||ek(e.y))&amp;&amp;(e.y=0)),this.timestep=this.options.timestep}this.init()}},{key:&quot;init&quot;,value:function(){var t;&quot;forceAtlas2Based&quot;===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new wC(this.body,this.physicsBody,t),this.edgesSolver=new gC(this.body,this.physicsBody,t),this.gravitySolver=new _C(this.body,this.physicsBody,t)):&quot;repulsion&quot;===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new pC(this.body,this.physicsBody,t),this.edgesSolver=new gC(this.body,this.physicsBody,t),this.gravitySolver=new mC(this.body,this.physicsBody,t)):&quot;hierarchicalRepulsion&quot;===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new vC(this.body,this.physicsBody,t),this.edgesSolver=new yC(this.body,this.physicsBody,t),this.gravitySolver=new mC(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new fC(this.body,this.physicsBody,t),this.edgesSolver=new gC(this.body,this.physicsBody,t),this.gravitySolver=new mC(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:&quot;initPhysics&quot;,value:function(){!0===this.physicsEnabled&amp;&amp;!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit(&quot;fit&quot;,{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit(&quot;fit&quot;))}},{key:&quot;startSimulation&quot;,value:function(){var t;!0===this.physicsEnabled&amp;&amp;!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit(&quot;_resizeNodes&quot;),void 0===this.viewFunction&amp;&amp;(this.viewFunction=zn(t=this.simulationStep).call(t,this),this.body.emitter.on(&quot;initRedraw&quot;,this.viewFunction),this.body.emitter.emit(&quot;_startRendering&quot;))):this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;stopSimulation&quot;,value:function(){var t=!(arguments.length&gt;0&amp;&amp;void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===t&amp;&amp;this._emitStabilized(),void 0!==this.viewFunction&amp;&amp;(this.body.emitter.off(&quot;initRedraw&quot;,this.viewFunction),this.viewFunction=void 0,!0===t&amp;&amp;this.body.emitter.emit(&quot;_stopRendering&quot;))}},{key:&quot;simulationStep&quot;,value:function(){var t=Eu();this.physicsTick(),(Eu()-t&lt;.4*this.simulationInterval||!0===this.runDoubleSpeed)&amp;&amp;!1===this.stabilized&amp;&amp;(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&amp;&amp;this.stopSimulation()}},{key:&quot;_emitStabilized&quot;,value:function(){var t=this,e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations&gt;1||!0===this.startedStabilization)&amp;&amp;Sv((function(){t.body.emitter.emit(&quot;stabilized&quot;,{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0}),0)}},{key:&quot;physicsStep&quot;,value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}},{key:&quot;adjustTimeStep&quot;,value:function(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2&lt;this.options.timestep?this.timestep=this.options.timestep:(this.adaptiveCounter=-1,this.timestep=Math.max(this.options.timestep,this.timestep/1.2))}},{key:&quot;physicsTick&quot;,value:function(){if(this._startStabilizing(),!0!==this.stabilized){if(!0===this.adaptiveTimestep&amp;&amp;!0===this.adaptiveTimestepEnabled)this.adaptiveCounter%this.adaptiveInterval==0?(this.timestep=2*this.timestep,this.physicsStep(),this.revert(),this.timestep=.5*this.timestep,this.physicsStep(),this.physicsStep(),this.adjustTimeStep()):this.physicsStep(),this.adaptiveCounter+=1;else this.timestep=this.options.timestep,this.physicsStep();!0===this.stabilized&amp;&amp;this.revert(),this.stabilizationIterations++}}},{key:&quot;updatePhysicsData&quot;,value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var t=this.body.nodes,e=this.body.edges;for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&amp;&amp;!0===t[i].options.physics&amp;&amp;this.physicsBody.physicsNodeIndices.push(t[i].id);for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&amp;&amp;!0===e[n].options.physics&amp;&amp;this.physicsBody.physicsEdgeIndices.push(e[n].id);for(var o=0;o&lt;this.physicsBody.physicsNodeIndices.length;o++){var r=this.physicsBody.physicsNodeIndices[o];this.physicsBody.forces[r]={x:0,y:0},void 0===this.physicsBody.velocities[r]&amp;&amp;(this.physicsBody.velocities[r]={x:0,y:0})}for(var s in this.physicsBody.velocities)void 0===t[s]&amp;&amp;delete this.physicsBody.velocities[s]}},{key:&quot;revert&quot;,value:function(){var t=bu(this.previousStates),e=this.body.nodes,i=this.physicsBody.velocities;this.referenceState={};for(var n=0;n&lt;t.length;n++){var o=t[n];void 0!==e[o]?!0===e[o].options.physics&amp;&amp;(this.referenceState[o]={positions:{x:e[o].x,y:e[o].y}},i[o].x=this.previousStates[o].vx,i[o].y=this.previousStates[o].vy,e[o].x=this.previousStates[o].x,e[o].y=this.previousStates[o].y):delete this.previousStates[o]}}},{key:&quot;_evaluateStepQuality&quot;,value:function(){var t,e,i=this.body.nodes,n=this.referenceState;for(var o in this.referenceState)if(Object.prototype.hasOwnProperty.call(this.referenceState,o)&amp;&amp;void 0!==i[o]&amp;&amp;(t=i[o].x-n[o].positions.x,e=i[o].y-n[o].positions.y,Math.sqrt(Math.pow(t,2)+Math.pow(e,2))&gt;.3))return!1;return!0}},{key:&quot;moveNodes&quot;,value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=0,i=0,n=0;n&lt;t.length;n++){var o=t[n],r=this._performStep(o);e=Math.max(e,r),i+=r}this.adaptiveTimestepEnabled=i/t.length&lt;5,this.stabilized=e&lt;this.options.minVelocity}},{key:&quot;calculateComponentVelocity&quot;,value:function(t,e,i){t+=(e-this.modelOptions.damping*t)/i*this.timestep;var n=this.options.maxVelocity||1e9;return Math.abs(t)&gt;n&amp;&amp;(t=t&gt;0?n:-n),t}},{key:&quot;_performStep&quot;,value:function(t){var e=this.body.nodes[t],i=this.physicsBody.forces[t];this.options.wind&amp;&amp;(i.x+=this.options.wind.x,i.y+=this.options.wind.y);var n=this.physicsBody.velocities[t];return this.previousStates[t]={x:e.x,y:e.y,vx:n.x,vy:n.y},!1===e.options.fixed.x?(n.x=this.calculateComponentVelocity(n.x,i.x,e.options.mass),e.x+=n.x*this.timestep):(i.x=0,n.x=0),!1===e.options.fixed.y?(n.y=this.calculateComponentVelocity(n.y,i.y,e.options.mass),e.y+=n.y*this.timestep):(i.y=0,n.y=0),Math.sqrt(Math.pow(n.x,2)+Math.pow(n.y,2))}},{key:&quot;_freezeNodes&quot;,value:function(){var t=this.body.nodes;for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;t[e].x&amp;&amp;t[e].y){var i=t[e].options.fixed;this.freezeCache[e]={x:i.x,y:i.y},i.x=!0,i.y=!0}}},{key:&quot;_restoreFrozenNodes&quot;,value:function(){var t=this.body.nodes;for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;void 0!==this.freezeCache[e]&amp;&amp;(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:&quot;stabilize&quot;,value:function(){var t=this,e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;&quot;number&quot;!=typeof e&amp;&amp;(e=this.options.stabilization.iterations,console.error(&quot;The stabilize method needs a numeric amount of iterations. Switching to default: &quot;,e)),0!==this.physicsBody.physicsNodeIndices.length?(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit(&quot;_resizeNodes&quot;),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit(&quot;_blockRedraw&quot;),this.targetIterations=e,!0===this.options.stabilization.onlyDynamicEdges&amp;&amp;this._freezeNodes(),this.stabilizationIterations=0,Sv((function(){return t._stabilizationBatch()}),0)):this.ready=!0}},{key:&quot;_startStabilizing&quot;,value:function(){return!0!==this.startedStabilization&amp;&amp;(this.body.emitter.emit(&quot;startStabilizing&quot;),this.startedStabilization=!0,!0)}},{key:&quot;_stabilizationBatch&quot;,value:function(){var t=this,e=function(){return!1===t.stabilized&amp;&amp;t.stabilizationIterations&lt;t.targetIterations},i=function(){t.body.emitter.emit(&quot;stabilizationProgress&quot;,{iterations:t.stabilizationIterations,total:t.targetIterations})};this._startStabilizing()&amp;&amp;i();for(var n,o=0;e()&amp;&amp;o&lt;this.options.stabilization.updateInterval;)this.physicsTick(),o++;(i(),e())?Sv(zn(n=this._stabilizationBatch).call(n,this),0):this._finalizeStabilization()}},{key:&quot;_finalizeStabilization&quot;,value:function(){this.body.emitter.emit(&quot;_allowRedraw&quot;),!0===this.options.stabilization.fit&amp;&amp;this.body.emitter.emit(&quot;fit&quot;),!0===this.options.stabilization.onlyDynamicEdges&amp;&amp;this._restoreFrozenNodes(),this.body.emitter.emit(&quot;stabilizationIterationsDone&quot;),this.body.emitter.emit(&quot;_requestRedraw&quot;),!0===this.stabilized?this._emitStabilized():this.startSimulation(),this.ready=!0}},{key:&quot;_drawForces&quot;,value:function(t){for(var e=0;e&lt;this.physicsBody.physicsNodeIndices.length;e++){var i=this.physicsBody.physicsNodeIndices[e],n=this.body.nodes[i],o=this.physicsBody.forces[i],r=Math.sqrt(Math.pow(o.x,2)+Math.pow(o.x,2)),s=Math.min(Math.max(5,r),15),a=3*s,h=km((180-180*Math.min(1,Math.max(0,.03*r)))/360,1,1),l={x:n.x+20*o.x,y:n.y+20*o.y};t.lineWidth=s,t.strokeStyle=h,t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(l.x,l.y),t.stroke();var d=Math.atan2(o.y,o.x);t.fillStyle=h,XO.draw(t,{type:&quot;arrow&quot;,point:l,angle:d,length:a}),jv(t).call(t)}}}]),t}(),EC=function(){function t(){Yd(this,t)}return Kd(t,null,[{key:&quot;getRange&quot;,value:function(t){var e,i=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:[],n=1e9,o=-1e9,r=1e9,s=-1e9;if(i.length&gt;0)for(var a=0;a&lt;i.length;a++)r&gt;(e=t[i[a]]).shape.boundingBox.left&amp;&amp;(r=e.shape.boundingBox.left),s&lt;e.shape.boundingBox.right&amp;&amp;(s=e.shape.boundingBox.right),n&gt;e.shape.boundingBox.top&amp;&amp;(n=e.shape.boundingBox.top),o&lt;e.shape.boundingBox.bottom&amp;&amp;(o=e.shape.boundingBox.bottom);return 1e9===r&amp;&amp;-1e9===s&amp;&amp;1e9===n&amp;&amp;-1e9===o&amp;&amp;(n=0,o=0,r=0,s=0),{minX:r,maxX:s,minY:n,maxY:o}}},{key:&quot;getRangeCore&quot;,value:function(t){var e,i=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:[],n=1e9,o=-1e9,r=1e9,s=-1e9;if(i.length&gt;0)for(var a=0;a&lt;i.length;a++)r&gt;(e=t[i[a]]).x&amp;&amp;(r=e.x),s&lt;e.x&amp;&amp;(s=e.x),n&gt;e.y&amp;&amp;(n=e.y),o&lt;e.y&amp;&amp;(o=e.y);return 1e9===r&amp;&amp;-1e9===s&amp;&amp;1e9===n&amp;&amp;-1e9===o&amp;&amp;(n=0,o=0,r=0,s=0),{minX:r,maxX:s,minY:n,maxY:o}}},{key:&quot;findCenter&quot;,value:function(t){return{x:.5*(t.maxX+t.minX),y:.5*(t.maxY+t.minY)}}},{key:&quot;cloneOptions&quot;,value:function(t,e){var i={};return void 0===e||&quot;node&quot;===e?(nm(i,t.options,!0),i.x=t.x,i.y=t.y,i.amountOfConnections=t.edges.length):nm(i,t.options,!0),i}}]),t}();function OC(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var CC=function(t){zk(i,t);var e=OC(i);function i(t,n,o,r,s,a){var h;return Yd(this,i),(h=e.call(this,t,n,o,r,s,a)).isCluster=!0,h.containedNodes={},h.containedEdges={},h}return Kd(i,[{key:&quot;_openChildCluster&quot;,value:function(t){var e=this,i=this.body.nodes[t];if(void 0===this.containedNodes[t])throw new Error(&quot;node with id: &quot;+t+&quot; not in current cluster&quot;);if(!i.isCluster)throw new Error(&quot;node with id: &quot;+t+&quot; is not a cluster&quot;);delete this.containedNodes[t],hm(i.edges,(function(t){delete e.containedEdges[t.id]})),hm(i.containedNodes,(function(t,i){e.containedNodes[i]=t})),i.containedNodes={},hm(i.containedEdges,(function(t,i){e.containedEdges[i]=t})),i.containedEdges={},hm(i.edges,(function(t){hm(e.edges,(function(i){var n,o,r=Fp(n=i.clusteringEdgeReplacingIds).call(n,t.id);-1!==r&amp;&amp;(hm(t.clusteringEdgeReplacingIds,(function(t){i.clusteringEdgeReplacingIds.push(t),e.body.edges[t].edgeReplacedById=i.id})),ff(o=i.clusteringEdgeReplacingIds).call(o,r,1))}))})),i.edges=[]}}]),i}(fO),SC=function(){function t(e){var i=this;Yd(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},un(this.options,this.defaultOptions),this.body.emitter.on(&quot;_resetData&quot;,(function(){i.clusteredNodes={},i.clusteredEdges={}}))}return Kd(t,[{key:&quot;clusterByHubsize&quot;,value:function(t,e){void 0===t?t=this._getHubSize():&quot;object&quot;===Qc(t)&amp;&amp;(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],n=0;n&lt;this.body.nodeIndices.length;n++){var o=this.body.nodes[this.body.nodeIndices[n]];o.edges.length&gt;=t&amp;&amp;i.push(o.id)}for(var r=0;r&lt;i.length;r++)this.clusterByConnection(i[r],e,!0);this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;cluster&quot;,value:function(){var t=this,e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:{},i=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];if(void 0===e.joinCondition)throw new Error(&quot;Cannot call clusterByNodeData without a joinCondition function in the options.&quot;);e=this._checkOptions(e);var n={},o={};hm(this.body.nodes,(function(i,r){i.options&amp;&amp;!0===e.joinCondition(i.options)&amp;&amp;(n[r]=i,hm(i.edges,(function(e){void 0===t.clusteredEdges[e.id]&amp;&amp;(o[e.id]=e)})))})),this._cluster(n,o,e,i)}},{key:&quot;clusterByEdgeCount&quot;,value:function(t,e){var i=this,n=!(arguments.length&gt;2&amp;&amp;void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o,r,s,a=[],h={},l=function(n){var l={},d={},c=i.body.nodeIndices[n],u=i.body.nodes[c];if(void 0===h[c]){s=0,r=[];for(var f=0;f&lt;u.edges.length;f++)o=u.edges[f],void 0===i.clusteredEdges[o.id]&amp;&amp;(o.toId!==o.fromId&amp;&amp;s++,r.push(o));if(s===t){for(var p=function(t){if(void 0===e.joinCondition||null===e.joinCondition)return!0;var i=EC.cloneOptions(t);return e.joinCondition(i)},v=!0,g=0;g&lt;r.length;g++){o=r[g];var y=i._getConnectedId(o,c);if(!p(u)){v=!1;break}d[o.id]=o,l[c]=u,l[y]=i.body.nodes[y],h[c]=!0}if(bu(l).length&gt;0&amp;&amp;bu(d).length&gt;0&amp;&amp;!0===v){var m=function(){for(var t=0;t&lt;a.length;++t)for(var e in l)if(void 0!==a[t].nodes[e])return a[t]}();if(void 0!==m){for(var b in l)void 0===m.nodes[b]&amp;&amp;(m.nodes[b]=l[b]);for(var w in d)void 0===m.edges[w]&amp;&amp;(m.edges[w]=d[w])}else a.push({nodes:l,edges:d})}}}},d=0;d&lt;this.body.nodeIndices.length;d++)l(d);for(var c=0;c&lt;a.length;c++)this._cluster(a[c].nodes,a[c].edges,e,!1);!0===n&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;clusterOutliers&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:&quot;clusterBridges&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:&quot;clusterByConnection&quot;,value:function(t,e){var i,n=!(arguments.length&gt;2&amp;&amp;void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error(&quot;No nodeId supplied to clusterByConnection!&quot;);if(void 0===this.body.nodes[t])throw new Error(&quot;The nodeId given to clusterByConnection does not exist!&quot;);var o=this.body.nodes[t];void 0===(e=this._checkOptions(e,o)).clusterNodeProperties.x&amp;&amp;(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&amp;&amp;(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&amp;&amp;(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var r={},s={},a=o.id,h=EC.cloneOptions(o);r[a]=o;for(var l=0;l&lt;o.edges.length;l++){var d=o.edges[l];if(void 0===this.clusteredEdges[d.id]){var c=this._getConnectedId(d,a);if(void 0===this.clusteredNodes[c])if(c!==a)if(void 0===e.joinCondition)s[d.id]=d,r[c]=this.body.nodes[c];else{var u=EC.cloneOptions(this.body.nodes[c]);!0===e.joinCondition(h,u)&amp;&amp;(s[d.id]=d,r[c]=this.body.nodes[c])}else s[d.id]=d}}var f=gu(i=bu(r)).call(i,(function(t){return r[t].id}));for(var p in r)if(Object.prototype.hasOwnProperty.call(r,p))for(var v=r[p],g=0;g&lt;v.edges.length;g++){var y=v.edges[g];Fp(f).call(f,this._getConnectedId(y,v.id))&gt;-1&amp;&amp;(s[y.id]=y)}this._cluster(r,s,e,n)}},{key:&quot;_createClusterEdges&quot;,value:function(t,e,i,n){for(var o,r,s,a,h,l,d=bu(t),c=[],u=0;u&lt;d.length;u++){s=t[r=d[u]];for(var f=0;f&lt;s.edges.length;f++)o=s.edges[f],void 0===this.clusteredEdges[o.id]&amp;&amp;(o.toId==o.fromId?e[o.id]=o:o.toId==r?(a=i.id,l=h=o.fromId):(a=o.toId,h=i.id,l=a),void 0===t[l]&amp;&amp;c.push({edge:o,fromId:h,toId:a}))}for(var p=[],v=function(t){for(var e=0;e&lt;p.length;e++){var i=p[e],n=t.fromId===i.fromId&amp;&amp;t.toId===i.toId,o=t.fromId===i.toId&amp;&amp;t.toId===i.fromId;if(n||o)return i}return null},g=0;g&lt;c.length;g++){var y=c[g],m=y.edge,b=v(y);null===b?(b=this._createClusteredEdge(y.fromId,y.toId,m,n),p.push(b)):b.clusteringEdgeReplacingIds.push(m.id),this.body.edges[m.id].edgeReplacedById=b.id,this._backupEdgeOptions(m),m.setOptions({physics:!1})}}},{key:&quot;_checkOptions&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&amp;&amp;(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&amp;&amp;(t.clusterNodeProperties={}),t}},{key:&quot;_cluster&quot;,value:function(t,e,i){var n=!(arguments.length&gt;3&amp;&amp;void 0!==arguments[3])||arguments[3],o=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&amp;&amp;void 0!==this.clusteredNodes[r]&amp;&amp;o.push(r);for(var s=0;s&lt;o.length;++s)delete t[o[s]];if(0!=bu(t).length&amp;&amp;(1!=bu(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){var a=nm({},i.clusterNodeProperties);if(void 0!==i.processProperties){var h=[];for(var l in t)if(Object.prototype.hasOwnProperty.call(t,l)){var d=EC.cloneOptions(t[l]);h.push(d)}var c=[];for(var u in e)if(Object.prototype.hasOwnProperty.call(e,u)&amp;&amp;&quot;clusterEdge:&quot;!==u.substr(0,12)){var f=EC.cloneOptions(e[u],&quot;edge&quot;);c.push(f)}if(!(a=i.processProperties(a,h,c)))throw new Error(&quot;The processProperties function does not return properties!&quot;)}void 0===a.id&amp;&amp;(a.id=&quot;cluster:&quot;+Ax());var p=a.id;void 0===a.label&amp;&amp;(a.label=&quot;cluster&quot;);var v=void 0;void 0===a.x&amp;&amp;(v=this._getClusterPosition(t),a.x=v.x),void 0===a.y&amp;&amp;(void 0===v&amp;&amp;(v=this._getClusterPosition(t)),a.y=v.y),a.id=p;var g=this.body.functions.createNode(a,CC);g.containedNodes=t,g.containedEdges=e,g.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[a.id]=g,this._clusterEdges(t,e,a,i.clusterEdgeProperties),a.id=void 0,!0===n&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}}},{key:&quot;_backupEdgeOptions&quot;,value:function(t){void 0===this.clusteredEdges[t.id]&amp;&amp;(this.clusteredEdges[t.id]={physics:t.options.physics})}},{key:&quot;_restoreEdge&quot;,value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&amp;&amp;(t.setOptions({physics:e.physics}),delete this.clusteredEdges[t.id])}},{key:&quot;isCluster&quot;,value:function(t){return void 0!==this.body.nodes[t]?!0===this.body.nodes[t].isCluster:(console.error(&quot;Node does not exist.&quot;),!1)}},{key:&quot;_getClusterPosition&quot;,value:function(t){for(var e,i=bu(t),n=t[i[0]].x,o=t[i[0]].x,r=t[i[0]].y,s=t[i[0]].y,a=1;a&lt;i.length;a++)n=(e=t[i[a]]).x&lt;n?e.x:n,o=e.x&gt;o?e.x:o,r=e.y&lt;r?e.y:r,s=e.y&gt;s?e.y:s;return{x:.5*(n+o),y:.5*(r+s)}}},{key:&quot;openCluster&quot;,value:function(t,e){var i=!(arguments.length&gt;2&amp;&amp;void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error(&quot;No clusterNodeId supplied to openCluster.&quot;);var n=this.body.nodes[t];if(void 0===n)throw new Error(&quot;The clusterNodeId supplied to openCluster does not exist.&quot;);if(!0!==n.isCluster||void 0===n.containedNodes||void 0===n.containedEdges)throw new Error(&quot;The node:&quot;+t+&quot; is not a valid cluster.&quot;);var o=this.findNode(t),r=Fp(o).call(o,t)-1;if(r&gt;=0){var s=o[r],a=this.body.nodes[s];return a._openChildCluster(t),delete this.body.nodes[t],void(!0===i&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;))}var h=n.containedNodes,l=n.containedEdges;if(void 0!==e&amp;&amp;void 0!==e.releaseFunction&amp;&amp;&quot;function&quot;==typeof e.releaseFunction){var d={},c={x:n.x,y:n.y};for(var u in h)if(Object.prototype.hasOwnProperty.call(h,u)){var f=this.body.nodes[u];d[u]={x:f.x,y:f.y}}var p=e.releaseFunction(c,d);for(var v in h)if(Object.prototype.hasOwnProperty.call(h,v)){var g=this.body.nodes[v];void 0!==p[v]&amp;&amp;(g.x=void 0===p[v].x?n.x:p[v].x,g.y=void 0===p[v].y?n.y:p[v].y)}}else hm(h,(function(t){!1===t.options.fixed.x&amp;&amp;(t.x=n.x),!1===t.options.fixed.y&amp;&amp;(t.y=n.y)}));for(var y in h)if(Object.prototype.hasOwnProperty.call(h,y)){var m=this.body.nodes[y];m.vx=n.vx,m.vy=n.vy,m.setOptions({physics:!0}),delete this.clusteredNodes[y]}for(var b=[],w=0;w&lt;n.edges.length;w++)b.push(n.edges[w]);for(var k=0;k&lt;b.length;k++){for(var _=b[k],x=this._getConnectedId(_,t),E=this.clusteredNodes[x],O=0;O&lt;_.clusteringEdgeReplacingIds.length;O++){var C=_.clusteringEdgeReplacingIds[O],S=this.body.edges[C];if(void 0!==S)if(void 0!==E){var T=this.body.nodes[E.clusterId];T.containedEdges[S.id]=S,delete l[S.id];var M=S.fromId,P=S.toId;S.toId==x?P=E.clusterId:M=E.clusterId,this._createClusteredEdge(M,P,S,T.clusterEdgeProperties,{hidden:!1,physics:!0})}else this._restoreEdge(S)}_.remove()}for(var D in l)Object.prototype.hasOwnProperty.call(l,D)&amp;&amp;this._restoreEdge(l[D]);delete this.body.nodes[t],!0===i&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;getNodesInCluster&quot;,value:function(t){var e=[];if(!0===this.isCluster(t)){var i=this.body.nodes[t].containedNodes;for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&amp;&amp;e.push(this.body.nodes[n].id)}return e}},{key:&quot;findNode&quot;,value:function(t){for(var e,i=[],n=0;void 0!==this.clusteredNodes[t]&amp;&amp;n&lt;100;){if(void 0===(e=this.body.nodes[t]))return[];i.push(e.id),t=this.clusteredNodes[t].clusterId,n++}return void 0===(e=this.body.nodes[t])?[]:(i.push(e.id),Yu(i).call(i),i)}},{key:&quot;updateClusteredNode&quot;,value:function(t,e){if(void 0===t)throw new Error(&quot;No clusteredNodeId supplied to updateClusteredNode.&quot;);if(void 0===e)throw new Error(&quot;No newOptions supplied to updateClusteredNode.&quot;);if(void 0===this.body.nodes[t])throw new Error(&quot;The clusteredNodeId supplied to updateClusteredNode does not exist.&quot;);this.body.nodes[t].setOptions(e),this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;updateEdge&quot;,value:function(t,e){if(void 0===t)throw new Error(&quot;No startEdgeId supplied to updateEdge.&quot;);if(void 0===e)throw new Error(&quot;No newOptions supplied to updateEdge.&quot;);if(void 0===this.body.edges[t])throw new Error(&quot;The startEdgeId supplied to updateEdge does not exist.&quot;);for(var i=this.getClusteredEdges(t),n=0;n&lt;i.length;n++){this.body.edges[i[n]].setOptions(e)}this.body.emitter.emit(&quot;_dataChanged&quot;)}},{key:&quot;getClusteredEdges&quot;,value:function(t){for(var e=[],i=0;void 0!==t&amp;&amp;void 0!==this.body.edges[t]&amp;&amp;i&lt;100;)e.push(this.body.edges[t].id),t=this.body.edges[t].edgeReplacedById,i++;return Yu(e).call(e),e}},{key:&quot;getBaseEdge&quot;,value:function(t){return this.getBaseEdges(t)[0]}},{key:&quot;getBaseEdges&quot;,value:function(t){for(var e=[t],i=[],n=[],o=0;e.length&gt;0&amp;&amp;o&lt;100;){var r=e.pop();if(void 0!==r){var s=this.body.edges[r];if(void 0!==s){o++;var a=s.clusteringEdgeReplacingIds;if(void 0===a)n.push(r);else for(var h=0;h&lt;a.length;++h){var l=a[h];-1===Fp(e).call(e,a)&amp;&amp;-1===Fp(i).call(i,a)&amp;&amp;e.push(l)}i.push(r)}}}return n}},{key:&quot;_getConnectedId&quot;,value:function(t,e){return t.toId!=e?t.toId:(t.fromId,t.fromId)}},{key:&quot;_getHubSize&quot;,value:function(){for(var t=0,e=0,i=0,n=0,o=0;o&lt;this.body.nodeIndices.length;o++){var r=this.body.nodes[this.body.nodeIndices[o]];r.edges.length&gt;n&amp;&amp;(n=r.edges.length),t+=r.edges.length,e+=Math.pow(r.edges.length,2),i+=1}t/=i;var s=(e/=i)-Math.pow(t,2),a=Math.sqrt(s),h=Math.floor(t+2*a);return h&gt;n&amp;&amp;(h=n),h}},{key:&quot;_createClusteredEdge&quot;,value:function(t,e,i,n,o){var r=EC.cloneOptions(i,&quot;edge&quot;);nm(r,n),r.from=t,r.to=e,r.id=&quot;clusterEdge:&quot;+Ax(),void 0!==o&amp;&amp;nm(r,o);var s=this.body.functions.createEdge(r);return s.clusteringEdgeReplacingIds=[i.id],s.connect(),this.body.edges[s.id]=s,s}},{key:&quot;_clusterEdges&quot;,value:function(t,e,i,n){if(e instanceof cC){var o=e,r={};r[o.id]=o,e=r}if(t instanceof fO){var s=t,a={};a[s.id]=s,t=a}if(null==i)throw new Error(&quot;_clusterEdges: parameter clusterNode required&quot;);for(var h in void 0===n&amp;&amp;(n=i.clusterEdgeProperties),this._createClusterEdges(t,e,i,n),e)if(Object.prototype.hasOwnProperty.call(e,h)&amp;&amp;void 0!==this.body.edges[h]){var l=this.body.edges[h];this._backupEdgeOptions(l),l.setOptions({physics:!1})}for(var d in t)Object.prototype.hasOwnProperty.call(t,d)&amp;&amp;(this.clusteredNodes[d]={clusterId:i.id,node:this.body.nodes[d]},this.body.nodes[d].setOptions({physics:!1}))}},{key:&quot;_getClusterNodeForNode&quot;,value:function(t){if(void 0!==t){var e=this.clusteredNodes[t];if(void 0!==e){var i=e.clusterId;if(void 0!==i)return this.body.nodes[i]}}}},{key:&quot;_filter&quot;,value:function(t,e){var i=[];return hm(t,(function(t){e(t)&amp;&amp;i.push(t)})),i}},{key:&quot;_updateState&quot;,value:function(){var t,e=this,i=[],n={},o=function(t){hm(e.body.nodes,(function(e){!0===e.isCluster&amp;&amp;t(e)}))};for(t in this.clusteredNodes){if(Object.prototype.hasOwnProperty.call(this.clusteredNodes,t))void 0===this.body.nodes[t]&amp;&amp;i.push(t)}o((function(t){for(var e=0;e&lt;i.length;e++)delete t.containedNodes[i[e]]}));for(var r=0;r&lt;i.length;r++)delete this.clusteredNodes[i[r]];hm(this.clusteredEdges,(function(t){var i=e.body.edges[t];void 0!==i&amp;&amp;i.endPointsValid()||(n[t]=t)})),o((function(t){hm(t.containedEdges,(function(t,e){t.endPointsValid()||n[e]||(n[e]=e)}))})),hm(this.body.edges,(function(t,i){var o=!0,r=t.clusteringEdgeReplacingIds;if(void 0!==r){var s=0;hm(r,(function(t){var i=e.body.edges[t];void 0!==i&amp;&amp;i.endPointsValid()&amp;&amp;(s+=1)})),o=s&gt;0}t.endPointsValid()&amp;&amp;o||(n[i]=i)})),o((function(t){hm(n,(function(i){delete t.containedEdges[i],hm(t.edges,(function(o,r){o.id!==i?o.clusteringEdgeReplacingIds=e._filter(o.clusteringEdgeReplacingIds,(function(t){return!n[t]})):t.edges[r]=null})),t.edges=e._filter(t.edges,(function(t){return null!==t}))}))})),hm(n,(function(t){delete e.clusteredEdges[t]})),hm(n,(function(t){delete e.body.edges[t]})),hm(bu(this.body.edges),(function(t){var i=e.body.edges[t],n=e._isClusteredNode(i.fromId)||e._isClusteredNode(i.toId);if(n!==e._isClusteredEdge(i.id))if(n){var o=e._getClusterNodeForNode(i.fromId);void 0!==o&amp;&amp;e._clusterEdges(e.body.nodes[i.fromId],i,o);var r=e._getClusterNodeForNode(i.toId);void 0!==r&amp;&amp;e._clusterEdges(e.body.nodes[i.toId],i,r)}else delete e._clusterEdges[t],e._restoreEdge(i)}));for(var s=!1,a=!0,h=function(){var t=[];o((function(e){var i=bu(e.containedNodes).length,n=!0===e.options.allowSingleNodeCluster;(n&amp;&amp;i&lt;1||!n&amp;&amp;i&lt;2)&amp;&amp;t.push(e.id)}));for(var i=0;i&lt;t.length;++i)e.openCluster(t[i],{},!1);a=t.length&gt;0,s=s||a};a;)h();s&amp;&amp;this._updateState()}},{key:&quot;_isClusteredNode&quot;,value:function(t){return void 0!==this.clusteredNodes[t]}},{key:&quot;_isClusteredEdge&quot;,value:function(t){return void 0!==this.clusteredEdges[t]}}]),t}();function TC(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return MC(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return MC(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function MC(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var PC=function(){function t(e,i){var n;Yd(this,t),void 0!==window&amp;&amp;(n=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),window.requestAnimationFrame=void 0===n?function(t){t()}:n,this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.zooming=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1},un(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t,e=this;this.body.emitter.on(&quot;dragStart&quot;,(function(){e.dragging=!0})),this.body.emitter.on(&quot;dragEnd&quot;,(function(){e.dragging=!1})),this.body.emitter.on(&quot;zoom&quot;,(function(){e.zooming=!0,window.clearTimeout(e.zoomTimeoutId),e.zoomTimeoutId=Sv((function(){var t;e.zooming=!1,zn(t=e._requestRedraw).call(t,e)()}),250)})),this.body.emitter.on(&quot;_resizeNodes&quot;,(function(){e._resizeNodes()})),this.body.emitter.on(&quot;_redraw&quot;,(function(){!1===e.renderingActive&amp;&amp;e._redraw()})),this.body.emitter.on(&quot;_blockRedraw&quot;,(function(){e.allowRedraw=!1})),this.body.emitter.on(&quot;_allowRedraw&quot;,(function(){e.allowRedraw=!0,e.redrawRequested=!1})),this.body.emitter.on(&quot;_requestRedraw&quot;,zn(t=this._requestRedraw).call(t,this)),this.body.emitter.on(&quot;_startRendering&quot;,(function(){e.renderRequests+=1,e.renderingActive=!0,e._startRendering()})),this.body.emitter.on(&quot;_stopRendering&quot;,(function(){e.renderRequests-=1,e.renderingActive=e.renderRequests&gt;0,e.renderTimer=void 0})),this.body.emitter.on(&quot;destroy&quot;,(function(){e.renderRequests=0,e.allowRedraw=!1,e.renderingActive=!1,!0===e.requiresTimeout?clearTimeout(e.renderTimer):window.cancelAnimationFrame(e.renderTimer),e.body.emitter.off()}))}},{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){em([&quot;hideEdgesOnDrag&quot;,&quot;hideEdgesOnZoom&quot;,&quot;hideNodesOnDrag&quot;],this.options,t)}}},{key:&quot;_requestNextFrame&quot;,value:function(t,e){if(&quot;undefined&quot;!=typeof window){var i,n=window;return!0===this.requiresTimeout?i=Sv(t,e):n.requestAnimationFrame&amp;&amp;(i=n.requestAnimationFrame(t)),i}}},{key:&quot;_startRendering&quot;,value:function(){var t;!0===this.renderingActive&amp;&amp;(void 0===this.renderTimer&amp;&amp;(this.renderTimer=this._requestNextFrame(zn(t=this._renderStep).call(t,this),this.simulationInterval)))}},{key:&quot;_renderStep&quot;,value:function(){!0===this.renderingActive&amp;&amp;(this.renderTimer=void 0,!0===this.requiresTimeout&amp;&amp;this._startRendering(),this._redraw(),!1===this.requiresTimeout&amp;&amp;this._startRendering())}},{key:&quot;redraw&quot;,value:function(){this.body.emitter.emit(&quot;setSize&quot;),this._redraw()}},{key:&quot;_requestRedraw&quot;,value:function(){var t=this;!0!==this.redrawRequested&amp;&amp;!1===this.renderingActive&amp;&amp;!0===this.allowRedraw&amp;&amp;(this.redrawRequested=!0,this._requestNextFrame((function(){t._redraw(!1)}),0))}},{key:&quot;_redraw&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]&amp;&amp;arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit(&quot;initRedraw&quot;),this.redrawRequested=!1;var e={drawExternalLabels:null};0!==this.canvas.frame.canvas.width&amp;&amp;0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();var i=this.canvas.getContext(),n=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(i.clearRect(0,0,n,o),0===this.canvas.frame.clientWidth)return;if(i.save(),i.translate(this.body.view.translation.x,this.body.view.translation.y),i.scale(this.body.view.scale,this.body.view.scale),i.beginPath(),this.body.emitter.emit(&quot;beforeDrawing&quot;,i),i.closePath(),!1===t&amp;&amp;(!1===this.dragging||!0===this.dragging&amp;&amp;!1===this.options.hideEdgesOnDrag)&amp;&amp;(!1===this.zooming||!0===this.zooming&amp;&amp;!1===this.options.hideEdgesOnZoom)&amp;&amp;this._drawEdges(i),!1===this.dragging||!0===this.dragging&amp;&amp;!1===this.options.hideNodesOnDrag){var r=this._drawNodes(i,t),s=r.drawExternalLabels;e.drawExternalLabels=s}!1===t&amp;&amp;(!1===this.dragging||!0===this.dragging&amp;&amp;!1===this.options.hideEdgesOnDrag)&amp;&amp;(!1===this.zooming||!0===this.zooming&amp;&amp;!1===this.options.hideEdgesOnZoom)&amp;&amp;this._drawArrows(i),null!=e.drawExternalLabels&amp;&amp;e.drawExternalLabels(),!1===t&amp;&amp;this._drawSelectionBox(i),i.beginPath(),this.body.emitter.emit(&quot;afterDrawing&quot;,i),i.closePath(),i.restore(),!0===t&amp;&amp;i.clearRect(0,0,n,o)}}},{key:&quot;_resizeNodes&quot;,value:function(){this.canvas.setTransform();var t=this.canvas.getContext();t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e,i=this.body.nodes;for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&amp;&amp;((e=i[n]).resize(t),e.updateBoundingBox(t,e.selected));t.restore()}},{key:&quot;_drawNodes&quot;,value:function(t){for(var e,i,n=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1],o=this.body.nodes,r=this.body.nodeIndices,s=[],a=[],h=20,l=this.canvas.DOMtoCanvas({x:-h,y:-h}),d=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+h,y:this.canvas.frame.canvas.clientHeight+h}),c={top:l.y,left:l.x,bottom:d.y,right:d.x},u=[],f=0;f&lt;r.length;f++)if((e=o[r[f]]).hover)a.push(r[f]);else if(e.isSelected())s.push(r[f]);else if(!0===n){var p=e.draw(t);null!=p.drawExternalLabel&amp;&amp;u.push(p.drawExternalLabel)}else if(!0===e.isBoundingBoxOverlappingWith(c)){var v=e.draw(t);null!=v.drawExternalLabel&amp;&amp;u.push(v.drawExternalLabel)}else e.updateBoundingBox(t,e.selected);var g=s.length,y=a.length;for(i=0;i&lt;g;i++){var m=(e=o[s[i]]).draw(t);null!=m.drawExternalLabel&amp;&amp;u.push(m.drawExternalLabel)}for(i=0;i&lt;y;i++){var b=(e=o[a[i]]).draw(t);null!=b.drawExternalLabel&amp;&amp;u.push(b.drawExternalLabel)}return{drawExternalLabels:function(){var t,e=TC(u);try{for(e.s();!(t=e.n()).done;){(0,t.value)()}}catch(t){e.e(t)}finally{e.f()}}}}},{key:&quot;_drawEdges&quot;,value:function(t){for(var e=this.body.edges,i=this.body.edgeIndices,n=0;n&lt;i.length;n++){var o=e[i[n]];!0===o.connected&amp;&amp;o.draw(t)}}},{key:&quot;_drawArrows&quot;,value:function(t){for(var e=this.body.edges,i=this.body.edgeIndices,n=0;n&lt;i.length;n++){var o=e[i[n]];!0===o.connected&amp;&amp;o.drawArrows(t)}}},{key:&quot;_determineBrowserMethod&quot;,value:function(){if(&quot;undefined&quot;!=typeof window){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,(-1!=Fp(t).call(t,&quot;msie 9.0&quot;)||-1!=Fp(t).call(t,&quot;safari&quot;)&amp;&amp;Fp(t).call(t,&quot;chrome&quot;)&lt;=-1)&amp;&amp;(this.requiresTimeout=!0)}else this.requiresTimeout=!0}},{key:&quot;_drawSelectionBox&quot;,value:function(t){if(this.body.selectionBox.show){t.beginPath();var e=this.body.selectionBox.position.end.x-this.body.selectionBox.position.start.x,i=this.body.selectionBox.position.end.y-this.body.selectionBox.position.start.y;t.rect(this.body.selectionBox.position.start.x,this.body.selectionBox.position.start.y,e,i),t.fillStyle=&quot;rgba(151, 194, 252, 0.2)&quot;,t.fillRect(this.body.selectionBox.position.start.x,this.body.selectionBox.position.start.y,e,i),t.strokeStyle=&quot;rgba(151, 194, 252, 1)&quot;,t.stroke()}else t.closePath()}}]),t}(),DC=X.setInterval;function IC(t,e){e.inputHandler=function(t){t.isFirst&amp;&amp;e(t)},t.on(&quot;hammer.input&quot;,e.inputHandler)}function BC(t,e){return e.inputHandler=function(t){t.isFinal&amp;&amp;e(t)},t.on(&quot;hammer.input&quot;,e.inputHandler)}var zC=function(){function t(e){Yd(this,t),this.body=e,this.pixelRatio=1,this.cameraState={},this.initialized=!1,this.canvasViewCenter={},this._cleanupCallbacks=[],this.options={},this.defaultOptions={autoResize:!0,height:&quot;100%&quot;,width:&quot;100%&quot;},un(this.options,this.defaultOptions),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t,e=this;this.body.emitter.once(&quot;resize&quot;,(function(t){0!==t.width&amp;&amp;(e.body.view.translation.x=.5*t.width),0!==t.height&amp;&amp;(e.body.view.translation.y=.5*t.height)})),this.body.emitter.on(&quot;setSize&quot;,zn(t=this.setSize).call(t,this)),this.body.emitter.on(&quot;destroy&quot;,(function(){e.hammerFrame.destroy(),e.hammer.destroy(),e._cleanUp()}))}},{key:&quot;setOptions&quot;,value:function(t){var e=this;if(void 0!==t){em([&quot;width&quot;,&quot;height&quot;,&quot;autoResize&quot;],this.options,t)}if(this._cleanUp(),!0===this.options.autoResize){var i;if(window.ResizeObserver){var n=new ResizeObserver((function(){!0===e.setSize()&amp;&amp;e.body.emitter.emit(&quot;_requestRedraw&quot;)})),o=this.frame;n.observe(o),this._cleanupCallbacks.push((function(){n.unobserve(o)}))}else{var r=DC((function(){!0===e.setSize()&amp;&amp;e.body.emitter.emit(&quot;_requestRedraw&quot;)}),1e3);this._cleanupCallbacks.push((function(){clearInterval(r)}))}var s=zn(i=this._onResize).call(i,this);dm(window,&quot;resize&quot;,s),this._cleanupCallbacks.push((function(){cm(window,&quot;resize&quot;,s)}))}}},{key:&quot;_cleanUp&quot;,value:function(){var t,e,i;Fu(t=Yu(e=ff(i=this._cleanupCallbacks).call(i,0)).call(e)).call(t,(function(t){try{t()}catch(t){console.error(t)}}))}},{key:&quot;_onResize&quot;,value:function(){this.setSize(),this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;_getCameraState&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&amp;&amp;(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:&quot;_setCameraState&quot;,value:function(){if(void 0!==this.cameraState.scale&amp;&amp;0!==this.frame.canvas.clientWidth&amp;&amp;0!==this.frame.canvas.clientHeight&amp;&amp;0!==this.pixelRatio&amp;&amp;this.cameraState.previousWidth&gt;0&amp;&amp;this.cameraState.previousHeight&gt;0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&amp;&amp;1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&amp;&amp;(i=this.cameraState.scale*e),this.body.view.scale=i;var n=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),o={x:n.x-this.cameraState.position.x,y:n.y-this.cameraState.position.y};this.body.view.translation.x+=o.x*this.body.view.scale,this.body.view.translation.y+=o.y*this.body.view.scale}}},{key:&quot;_prepareValue&quot;,value:function(t){if(&quot;number&quot;==typeof t)return t+&quot;px&quot;;if(&quot;string&quot;==typeof t){if(-1!==Fp(t).call(t,&quot;%&quot;)||-1!==Fp(t).call(t,&quot;px&quot;))return t;if(-1===Fp(t).call(t,&quot;%&quot;))return t+&quot;px&quot;}throw new Error(&quot;Could not use the value supplied for width or height:&quot;+t)}},{key:&quot;_create&quot;,value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement(&quot;div&quot;),this.frame.className=&quot;vis-network&quot;,this.frame.style.position=&quot;relative&quot;,this.frame.style.overflow=&quot;hidden&quot;,this.frame.tabIndex=0,this.frame.canvas=document.createElement(&quot;canvas&quot;),this.frame.canvas.style.position=&quot;relative&quot;,this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{var t=document.createElement(&quot;DIV&quot;);t.style.color=&quot;red&quot;,t.style.fontWeight=&quot;bold&quot;,t.style.padding=&quot;10px&quot;,t.innerText=&quot;Error: your browser does not support HTML canvas&quot;,this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:&quot;_bindHammer&quot;,value:function(){var t=this;void 0!==this.hammer&amp;&amp;this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new Wm(this.frame.canvas),this.hammer.get(&quot;pinch&quot;).set({enable:!0}),this.hammer.get(&quot;pan&quot;).set({threshold:5,direction:Wm.DIRECTION_ALL}),IC(this.hammer,(function(e){t.body.eventListeners.onTouch(e)})),this.hammer.on(&quot;tap&quot;,(function(e){t.body.eventListeners.onTap(e)})),this.hammer.on(&quot;doubletap&quot;,(function(e){t.body.eventListeners.onDoubleTap(e)})),this.hammer.on(&quot;press&quot;,(function(e){t.body.eventListeners.onHold(e)})),this.hammer.on(&quot;panstart&quot;,(function(e){t.body.eventListeners.onDragStart(e)})),this.hammer.on(&quot;panmove&quot;,(function(e){t.body.eventListeners.onDrag(e)})),this.hammer.on(&quot;panend&quot;,(function(e){t.body.eventListeners.onDragEnd(e)})),this.hammer.on(&quot;pinch&quot;,(function(e){t.body.eventListeners.onPinch(e)})),this.frame.canvas.addEventListener(&quot;wheel&quot;,(function(e){t.body.eventListeners.onMouseWheel(e)})),this.frame.canvas.addEventListener(&quot;mousemove&quot;,(function(e){t.body.eventListeners.onMouseMove(e)})),this.frame.canvas.addEventListener(&quot;contextmenu&quot;,(function(e){t.body.eventListeners.onContext(e)})),this.hammerFrame=new Wm(this.frame),BC(this.hammerFrame,(function(e){t.body.eventListeners.onRelease(e)}))}},{key:&quot;setSize&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,n=this.frame.canvas.width,o=this.frame.canvas.height,r=this.pixelRatio;if(this._setPixelRatio(),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e)this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width=&quot;100%&quot;,this.frame.canvas.style.height=&quot;100%&quot;,this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{var s=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),a=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.frame.canvas.width===s&amp;&amp;this.frame.canvas.height===a||this._getCameraState(r),this.frame.canvas.width!==s&amp;&amp;(this.frame.canvas.width=s,i=!0),this.frame.canvas.height!==a&amp;&amp;(this.frame.canvas.height=a,i=!0)}return!0===i&amp;&amp;(this.body.emitter.emit(&quot;resize&quot;,{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(n/this.pixelRatio),oldHeight:Math.round(o/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:&quot;getContext&quot;,value:function(){return this.frame.canvas.getContext(&quot;2d&quot;)}},{key:&quot;_determinePixelRatio&quot;,value:function(){var t=this.getContext();if(void 0===t)throw new Error(&quot;Could not get canvax context&quot;);var e=1;return&quot;undefined&quot;!=typeof window&amp;&amp;(e=window.devicePixelRatio||1),e/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}},{key:&quot;_setPixelRatio&quot;,value:function(){this.pixelRatio=this._determinePixelRatio()}},{key:&quot;setTransform&quot;,value:function(){var t=this.getContext();if(void 0===t)throw new Error(&quot;Could not get canvax context&quot;);t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:&quot;_XconvertDOMtoCanvas&quot;,value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:&quot;_XconvertCanvasToDOM&quot;,value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:&quot;_YconvertDOMtoCanvas&quot;,value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:&quot;_YconvertCanvasToDOM&quot;,value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:&quot;canvasToDOM&quot;,value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:&quot;DOMtoCanvas&quot;,value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();function NC(t,e){var i=un({nodes:e,minZoomLevel:Number.MIN_VALUE,maxZoomLevel:1},null!=t?t:{});if(!lu(i.nodes))throw new TypeError(&quot;Nodes has to be an array of ids.&quot;);if(0===i.nodes.length&amp;&amp;(i.nodes=e),!(&quot;number&quot;==typeof i.minZoomLevel&amp;&amp;i.minZoomLevel&gt;0))throw new TypeError(&quot;Min zoom level has to be a number higher than zero.&quot;);if(!(&quot;number&quot;==typeof i.maxZoomLevel&amp;&amp;i.minZoomLevel&lt;=i.maxZoomLevel))throw new TypeError(&quot;Max zoom level has to be a number higher than min zoom level.&quot;);return i}var FC=function(){function t(e,i){var n,o,r=this;Yd(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction=&quot;easeInOutQuint&quot;,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on(&quot;fit&quot;,zn(n=this.fit).call(n,this)),this.body.emitter.on(&quot;animationFinished&quot;,(function(){r.body.emitter.emit(&quot;_stopRendering&quot;)})),this.body.emitter.on(&quot;unlockNode&quot;,zn(o=this.releaseNode).call(o,this))}return Kd(t,[{key:&quot;setOptions&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:&quot;fit&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1];t=NC(t,this.body.nodeIndices);var i,n,o=this.canvas.frame.canvas.clientWidth,r=this.canvas.frame.canvas.clientHeight;if(0===o||0===r)n=1,i=EC.getRange(this.body.nodes,t.nodes);else if(!0===e){var s=0;for(var a in this.body.nodes)if(Object.prototype.hasOwnProperty.call(this.body.nodes,a)){var h=this.body.nodes[a];!0===h.predefinedPosition&amp;&amp;(s+=1)}if(s&gt;.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=EC.getRange(this.body.nodes,t.nodes);var l=this.body.nodeIndices.length;n=12.662/(l+7.4147)+.0964822;var d=Math.min(o/600,r/600);n*=d}else{this.body.emitter.emit(&quot;_resizeNodes&quot;),i=EC.getRange(this.body.nodes,t.nodes);var c=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),f=o/c,p=r/u;n=f&lt;=p?f:p}n&gt;t.maxZoomLevel?n=t.maxZoomLevel:n&lt;t.minZoomLevel&amp;&amp;(n=t.minZoomLevel);var v=EC.findCenter(i),g={position:v,scale:n,animation:t.animation};this.moveTo(g)}},{key:&quot;focus&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.error(&quot;Node: &quot;+t+&quot; cannot be found.&quot;)}},{key:&quot;moveTo&quot;,value:function(t){if(void 0!==t){if(null!=t.offset){if(null!=t.offset.x){if(t.offset.x=+t.offset.x,!ok(t.offset.x))throw new TypeError('The option &quot;offset.x&quot; has to be a finite number.')}else t.offset.x=0;if(null!=t.offset.y){if(t.offset.y=+t.offset.y,!ok(t.offset.y))throw new TypeError('The option &quot;offset.y&quot; has to be a finite number.')}else t.offset.x=0}else t.offset={x:0,y:0};if(null!=t.position){if(null!=t.position.x){if(t.position.x=+t.position.x,!ok(t.position.x))throw new TypeError('The option &quot;position.x&quot; has to be a finite number.')}else t.position.x=0;if(null!=t.position.y){if(t.position.y=+t.position.y,!ok(t.position.y))throw new TypeError('The option &quot;position.y&quot; has to be a finite number.')}else t.position.x=0}else t.position=this.getViewPosition();if(null!=t.scale){if(t.scale=+t.scale,!(t.scale&gt;0))throw new TypeError('The option &quot;scale&quot; has to be a number greater than zero.')}else t.scale=this.body.view.scale;void 0===t.animation&amp;&amp;(t.animation={duration:0}),!1===t.animation&amp;&amp;(t.animation={duration:0}),!0===t.animation&amp;&amp;(t.animation={}),void 0===t.animation.duration&amp;&amp;(t.animation.duration=1e3),void 0===t.animation.easingFunction&amp;&amp;(t.animation.easingFunction=&quot;easeInOutQuad&quot;),this.animateView(t)}else t={}}},{key:&quot;animateView&quot;,value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),!0===t.locked&amp;&amp;(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&amp;&amp;this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e,i,n=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),o=n.x-t.position.x,r=n.y-t.position.y;if(this.targetTranslation={x:this.sourceTranslation.x+o*this.targetScale+t.offset.x,y:this.sourceTranslation.y+r*this.targetScale+t.offset.y},0===t.animation.duration)if(null!=this.lockedOnNodeId)this.viewFunction=zn(e=this._lockedRedraw).call(e,this),this.body.emitter.on(&quot;initRedraw&quot;,this.viewFunction);else this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit(&quot;_requestRedraw&quot;);else this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=zn(i=this._transitionRedraw).call(i,this),this.body.emitter.on(&quot;initRedraw&quot;,this.viewFunction),this.body.emitter.emit(&quot;_startRendering&quot;)}}},{key:&quot;_lockedRedraw&quot;,value:function(){var t=this.body.nodes[this.lockedOnNodeId].x,e=this.body.nodes[this.lockedOnNodeId].y,i=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),n=i.x-t,o=i.y-e,r=this.body.view.translation,s={x:r.x+n*this.body.view.scale+this.lockedOnNodeOffset.x,y:r.y+o*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=s}},{key:&quot;releaseNode&quot;,value:function(){void 0!==this.lockedOnNodeId&amp;&amp;void 0!==this.viewFunction&amp;&amp;(this.body.emitter.off(&quot;initRedraw&quot;,this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:&quot;_transitionRedraw&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]&amp;&amp;arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=!0===t?1:this.easingTime;var e=Tm[this.animationEasingFunction](this.easingTime);if(this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime&gt;=1){var i;if(this.body.emitter.off(&quot;initRedraw&quot;,this.viewFunction),this.easingTime=0,null!=this.lockedOnNodeId)this.viewFunction=zn(i=this._lockedRedraw).call(i,this),this.body.emitter.on(&quot;initRedraw&quot;,this.viewFunction);this.body.emitter.emit(&quot;animationFinished&quot;)}}},{key:&quot;getScale&quot;,value:function(){return this.body.view.scale}},{key:&quot;getViewPosition&quot;,value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();function AC(t){var e,i=t&amp;&amp;t.preventDefault||!1,n=t&amp;&amp;t.container||window,o={},r={keydown:{},keyup:{}},s={};for(e=97;e&lt;=122;e++)s[String.fromCharCode(e)]={code:e-97+65,shift:!1};for(e=65;e&lt;=90;e++)s[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e&lt;=9;e++)s[&quot;&quot;+e]={code:48+e,shift:!1};for(e=1;e&lt;=12;e++)s[&quot;F&quot;+e]={code:111+e,shift:!1};for(e=0;e&lt;=9;e++)s[&quot;num&quot;+e]={code:96+e,shift:!1};s[&quot;num*&quot;]={code:106,shift:!1},s[&quot;num+&quot;]={code:107,shift:!1},s[&quot;num-&quot;]={code:109,shift:!1},s[&quot;num/&quot;]={code:111,shift:!1},s[&quot;num.&quot;]={code:110,shift:!1},s.left={code:37,shift:!1},s.up={code:38,shift:!1},s.right={code:39,shift:!1},s.down={code:40,shift:!1},s.space={code:32,shift:!1},s.enter={code:13,shift:!1},s.shift={code:16,shift:void 0},s.esc={code:27,shift:!1},s.backspace={code:8,shift:!1},s.tab={code:9,shift:!1},s.ctrl={code:17,shift:!1},s.alt={code:18,shift:!1},s.delete={code:46,shift:!1},s.pageup={code:33,shift:!1},s.pagedown={code:34,shift:!1},s[&quot;=&quot;]={code:187,shift:!1},s[&quot;-&quot;]={code:189,shift:!1},s[&quot;]&quot;]={code:221,shift:!1},s[&quot;[&quot;]={code:219,shift:!1};var a=function(t){l(t,&quot;keydown&quot;)},h=function(t){l(t,&quot;keyup&quot;)},l=function(t,e){if(void 0!==r[e][t.keyCode]){for(var n=r[e][t.keyCode],o=0;o&lt;n.length;o++)(void 0===n[o].shift||1==n[o].shift&amp;&amp;1==t.shiftKey||0==n[o].shift&amp;&amp;0==t.shiftKey)&amp;&amp;n[o].fn(t);1==i&amp;&amp;t.preventDefault()}};return o.bind=function(t,e,i){if(void 0===i&amp;&amp;(i=&quot;keydown&quot;),void 0===s[t])throw new Error(&quot;unsupported key: &quot;+t);void 0===r[i][s[t].code]&amp;&amp;(r[i][s[t].code]=[]),r[i][s[t].code].push({fn:e,shift:s[t].shift})},o.bindAll=function(t,e){for(var i in void 0===e&amp;&amp;(e=&quot;keydown&quot;),s)s.hasOwnProperty(i)&amp;&amp;o.bind(i,t,e)},o.getKey=function(t){for(var e in s)if(s.hasOwnProperty(e)){if(1==t.shiftKey&amp;&amp;1==s[e].shift&amp;&amp;t.keyCode==s[e].code)return e;if(0==t.shiftKey&amp;&amp;0==s[e].shift&amp;&amp;t.keyCode==s[e].code)return e;if(t.keyCode==s[e].code&amp;&amp;&quot;shift&quot;==e)return e}return&quot;unknown key, currently not supported&quot;},o.unbind=function(t,e,i){if(void 0===i&amp;&amp;(i=&quot;keydown&quot;),void 0===s[t])throw new Error(&quot;unsupported key: &quot;+t);if(void 0!==e){var n=[],o=r[i][s[t].code];if(void 0!==o)for(var a=0;a&lt;o.length;a++)o[a].fn==e&amp;&amp;o[a].shift==s[t].shift||n.push(r[i][s[t].code][a]);r[i][s[t].code]=n}else r[i][s[t].code]=[]},o.reset=function(){r={keydown:{},keyup:{}}},o.destroy=function(){r={keydown:{},keyup:{}},n.removeEventListener(&quot;keydown&quot;,a,!0),n.removeEventListener(&quot;keyup&quot;,h,!0)},n.addEventListener(&quot;keydown&quot;,a,!0),n.addEventListener(&quot;keyup&quot;,h,!0),o}var jC=Object.freeze({__proto__:null,default:AC}),RC=function(){function t(e,i){var n=this;Yd(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on(&quot;activate&quot;,(function(){n.activated=!0,n.configureKeyboardBindings()})),this.body.emitter.on(&quot;deactivate&quot;,(function(){n.activated=!1,n.configureKeyboardBindings()})),this.body.emitter.on(&quot;destroy&quot;,(function(){void 0!==n.keycharm&amp;&amp;n.keycharm.destroy()})),this.options={}}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){void 0!==t&amp;&amp;(this.options=t,this.create())}},{key:&quot;create&quot;,value:function(){!0===this.options.navigationButtons?!1===this.iconsCreated&amp;&amp;this.loadNavigationElements():!0===this.iconsCreated&amp;&amp;this.cleanNavigation(),this.configureKeyboardBindings()}},{key:&quot;cleanNavigation&quot;,value:function(){if(0!=this.navigationHammers.length){for(var t=0;t&lt;this.navigationHammers.length;t++)this.navigationHammers[t].destroy();this.navigationHammers=[]}this.navigationDOM&amp;&amp;this.navigationDOM.wrapper&amp;&amp;this.navigationDOM.wrapper.parentNode&amp;&amp;this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper),this.iconsCreated=!1}},{key:&quot;loadNavigationElements&quot;,value:function(){var t=this;this.cleanNavigation(),this.navigationDOM={};var e=[&quot;up&quot;,&quot;down&quot;,&quot;left&quot;,&quot;right&quot;,&quot;zoomIn&quot;,&quot;zoomOut&quot;,&quot;zoomExtends&quot;],i=[&quot;_moveUp&quot;,&quot;_moveDown&quot;,&quot;_moveLeft&quot;,&quot;_moveRight&quot;,&quot;_zoomIn&quot;,&quot;_zoomOut&quot;,&quot;_fit&quot;];this.navigationDOM.wrapper=document.createElement(&quot;div&quot;),this.navigationDOM.wrapper.className=&quot;vis-navigation&quot;,this.canvas.frame.appendChild(this.navigationDOM.wrapper);for(var n=0;n&lt;e.length;n++){this.navigationDOM[e[n]]=document.createElement(&quot;div&quot;),this.navigationDOM[e[n]].className=&quot;vis-button vis-&quot;+e[n],this.navigationDOM.wrapper.appendChild(this.navigationDOM[e[n]]);var o,r,s=new Wm(this.navigationDOM[e[n]]);if(&quot;_fit&quot;===i[n])IC(s,zn(o=this._fit).call(o,this));else IC(s,zn(r=this.bindToRedraw).call(r,this,i[n]));this.navigationHammers.push(s)}var a=new Wm(this.canvas.frame);BC(a,(function(){t._stopMovement()})),this.navigationHammers.push(a),this.iconsCreated=!0}},{key:&quot;bindToRedraw&quot;,value:function(t){var e;void 0===this.boundFunctions[t]&amp;&amp;(this.boundFunctions[t]=zn(e=this[t]).call(e,this),this.body.emitter.on(&quot;initRedraw&quot;,this.boundFunctions[t]),this.body.emitter.emit(&quot;_startRendering&quot;))}},{key:&quot;unbindFromRedraw&quot;,value:function(t){void 0!==this.boundFunctions[t]&amp;&amp;(this.body.emitter.off(&quot;initRedraw&quot;,this.boundFunctions[t]),this.body.emitter.emit(&quot;_stopRendering&quot;),delete this.boundFunctions[t])}},{key:&quot;_fit&quot;,value:function(){(new Date).valueOf()-this.touchTime&gt;700&amp;&amp;(this.body.emitter.emit(&quot;fit&quot;,{duration:700}),this.touchTime=(new Date).valueOf())}},{key:&quot;_stopMovement&quot;,value:function(){for(var t in this.boundFunctions)Object.prototype.hasOwnProperty.call(this.boundFunctions,t)&amp;&amp;(this.body.emitter.off(&quot;initRedraw&quot;,this.boundFunctions[t]),this.body.emitter.emit(&quot;_stopRendering&quot;));this.boundFunctions={}}},{key:&quot;_moveUp&quot;,value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:&quot;_moveDown&quot;,value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:&quot;_moveLeft&quot;,value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:&quot;_moveRight&quot;,value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:&quot;_zoomIn&quot;,value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,n=e/t,o=(1-n)*this.canvas.canvasViewCenter.x+i.x*n,r=(1-n)*this.canvas.canvasViewCenter.y+i.y*n;this.body.view.scale=e,this.body.view.translation={x:o,y:r},this.body.emitter.emit(&quot;zoom&quot;,{direction:&quot;+&quot;,scale:this.body.view.scale,pointer:null})}},{key:&quot;_zoomOut&quot;,value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,n=e/t,o=(1-n)*this.canvas.canvasViewCenter.x+i.x*n,r=(1-n)*this.canvas.canvasViewCenter.y+i.y*n;this.body.view.scale=e,this.body.view.translation={x:o,y:r},this.body.emitter.emit(&quot;zoom&quot;,{direction:&quot;-&quot;,scale:this.body.view.scale,pointer:null})}},{key:&quot;configureKeyboardBindings&quot;,value:function(){var t,e,i,n,o,r,s,a,h,l,d,c,u,f,p,v,g,y,m,b,w,k,_,x,E=this;(void 0!==this.keycharm&amp;&amp;this.keycharm.destroy(),!0===this.options.keyboard.enabled)&amp;&amp;(!0===this.options.keyboard.bindToWindow?this.keycharm=AC({container:window,preventDefault:!0}):this.keycharm=AC({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),!0===this.activated&amp;&amp;(zn(t=this.keycharm).call(t,&quot;up&quot;,(function(){E.bindToRedraw(&quot;_moveUp&quot;)}),&quot;keydown&quot;),zn(e=this.keycharm).call(e,&quot;down&quot;,(function(){E.bindToRedraw(&quot;_moveDown&quot;)}),&quot;keydown&quot;),zn(i=this.keycharm).call(i,&quot;left&quot;,(function(){E.bindToRedraw(&quot;_moveLeft&quot;)}),&quot;keydown&quot;),zn(n=this.keycharm).call(n,&quot;right&quot;,(function(){E.bindToRedraw(&quot;_moveRight&quot;)}),&quot;keydown&quot;),zn(o=this.keycharm).call(o,&quot;=&quot;,(function(){E.bindToRedraw(&quot;_zoomIn&quot;)}),&quot;keydown&quot;),zn(r=this.keycharm).call(r,&quot;num+&quot;,(function(){E.bindToRedraw(&quot;_zoomIn&quot;)}),&quot;keydown&quot;),zn(s=this.keycharm).call(s,&quot;num-&quot;,(function(){E.bindToRedraw(&quot;_zoomOut&quot;)}),&quot;keydown&quot;),zn(a=this.keycharm).call(a,&quot;-&quot;,(function(){E.bindToRedraw(&quot;_zoomOut&quot;)}),&quot;keydown&quot;),zn(h=this.keycharm).call(h,&quot;[&quot;,(function(){E.bindToRedraw(&quot;_zoomOut&quot;)}),&quot;keydown&quot;),zn(l=this.keycharm).call(l,&quot;]&quot;,(function(){E.bindToRedraw(&quot;_zoomIn&quot;)}),&quot;keydown&quot;),zn(d=this.keycharm).call(d,&quot;pageup&quot;,(function(){E.bindToRedraw(&quot;_zoomIn&quot;)}),&quot;keydown&quot;),zn(c=this.keycharm).call(c,&quot;pagedown&quot;,(function(){E.bindToRedraw(&quot;_zoomOut&quot;)}),&quot;keydown&quot;),zn(u=this.keycharm).call(u,&quot;up&quot;,(function(){E.unbindFromRedraw(&quot;_moveUp&quot;)}),&quot;keyup&quot;),zn(f=this.keycharm).call(f,&quot;down&quot;,(function(){E.unbindFromRedraw(&quot;_moveDown&quot;)}),&quot;keyup&quot;),zn(p=this.keycharm).call(p,&quot;left&quot;,(function(){E.unbindFromRedraw(&quot;_moveLeft&quot;)}),&quot;keyup&quot;),zn(v=this.keycharm).call(v,&quot;right&quot;,(function(){E.unbindFromRedraw(&quot;_moveRight&quot;)}),&quot;keyup&quot;),zn(g=this.keycharm).call(g,&quot;=&quot;,(function(){E.unbindFromRedraw(&quot;_zoomIn&quot;)}),&quot;keyup&quot;),zn(y=this.keycharm).call(y,&quot;num+&quot;,(function(){E.unbindFromRedraw(&quot;_zoomIn&quot;)}),&quot;keyup&quot;),zn(m=this.keycharm).call(m,&quot;num-&quot;,(function(){E.unbindFromRedraw(&quot;_zoomOut&quot;)}),&quot;keyup&quot;),zn(b=this.keycharm).call(b,&quot;-&quot;,(function(){E.unbindFromRedraw(&quot;_zoomOut&quot;)}),&quot;keyup&quot;),zn(w=this.keycharm).call(w,&quot;[&quot;,(function(){E.unbindFromRedraw(&quot;_zoomOut&quot;)}),&quot;keyup&quot;),zn(k=this.keycharm).call(k,&quot;]&quot;,(function(){E.unbindFromRedraw(&quot;_zoomIn&quot;)}),&quot;keyup&quot;),zn(_=this.keycharm).call(_,&quot;pageup&quot;,(function(){E.unbindFromRedraw(&quot;_zoomIn&quot;)}),&quot;keyup&quot;),zn(x=this.keycharm).call(x,&quot;pagedown&quot;,(function(){E.unbindFromRedraw(&quot;_zoomOut&quot;)}),&quot;keyup&quot;)))}}]),t}();function LC(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return HC(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return HC(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function HC(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var WC=function(){function t(e,i,n){var o,r,s,a,h,l,d,c,u,f,p,v,g;Yd(this,t),this.body=e,this.canvas=i,this.selectionHandler=n,this.navigationHandler=new RC(e,i),this.body.eventListeners.onTap=zn(o=this.onTap).call(o,this),this.body.eventListeners.onTouch=zn(r=this.onTouch).call(r,this),this.body.eventListeners.onDoubleTap=zn(s=this.onDoubleTap).call(s,this),this.body.eventListeners.onHold=zn(a=this.onHold).call(a,this),this.body.eventListeners.onDragStart=zn(h=this.onDragStart).call(h,this),this.body.eventListeners.onDrag=zn(l=this.onDrag).call(l,this),this.body.eventListeners.onDragEnd=zn(d=this.onDragEnd).call(d,this),this.body.eventListeners.onMouseWheel=zn(c=this.onMouseWheel).call(c,this),this.body.eventListeners.onPinch=zn(u=this.onPinch).call(u,this),this.body.eventListeners.onMouseMove=zn(f=this.onMouseMove).call(f,this),this.body.eventListeners.onRelease=zn(p=this.onRelease).call(p,this),this.body.eventListeners.onContext=zn(v=this.onContext).call(v,this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=zn(g=this.getPointer).call(g,this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0,autoFocus:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0,zoomSpeed:1},un(this.options,this.defaultOptions),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t=this;this.body.emitter.on(&quot;destroy&quot;,(function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer}))}},{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){im([&quot;hideEdgesOnDrag&quot;,&quot;hideEdgesOnZoom&quot;,&quot;hideNodesOnDrag&quot;,&quot;keyboard&quot;,&quot;multiselect&quot;,&quot;selectable&quot;,&quot;selectConnectedEdges&quot;],this.options,t),Sm(this.options,t,&quot;keyboard&quot;),t.tooltip&amp;&amp;(un(this.options.tooltip,t.tooltip),t.tooltip.color&amp;&amp;(this.options.tooltip.color=gm(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:&quot;getPointer&quot;,value:function(t){return{x:t.x-sm(this.canvas.frame.canvas),y:t.y-am(this.canvas.frame.canvas)}}},{key:&quot;onTouch&quot;,value:function(t){(new Date).valueOf()-this.touchTime&gt;50&amp;&amp;(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:&quot;onTap&quot;,value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&amp;&amp;(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,i),this.selectionHandler.commitAndEmit(e,t),this.selectionHandler.generateClickEvent(&quot;click&quot;,t,e)}},{key:&quot;onDoubleTap&quot;,value:function(t){var e=this.getPointer(t.center);this.selectionHandler.generateClickEvent(&quot;doubleClick&quot;,t,e)}},{key:&quot;onHold&quot;,value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,i),this.selectionHandler.commitAndEmit(e,t),this.selectionHandler.generateClickEvent(&quot;click&quot;,t,e),this.selectionHandler.generateClickEvent(&quot;hold&quot;,t,e)}},{key:&quot;onRelease&quot;,value:function(t){if((new Date).valueOf()-this.touchTime&gt;10){var e=this.getPointer(t.center);this.selectionHandler.generateClickEvent(&quot;release&quot;,t,e),this.touchTime=(new Date).valueOf()}}},{key:&quot;onContext&quot;,value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler.generateClickEvent(&quot;oncontext&quot;,t,e)}},{key:&quot;checkSelectionChanges&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]&amp;&amp;arguments[1];!0===e?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t)}},{key:&quot;_determineDifference&quot;,value:function(t,e){var i=function(t,e){for(var i=[],n=0;n&lt;t.length;n++){var o=t[n];-1===Fp(e).call(e,o)&amp;&amp;i.push(o)}return i};return{nodes:i(t.nodes,e.nodes),edges:i(t.edges,e.edges)}}},{key:&quot;onDragStart&quot;,value:function(t){if(!this.drag.dragging){void 0===this.drag.pointer&amp;&amp;this.onTouch(t);var e=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=un({},this.body.view.translation),this.drag.nodeId=void 0,t.srcEvent.shiftKey){this.body.selectionBox.show=!0;var i=this.getPointer(t.center);this.body.selectionBox.position.start={x:this.canvas._XconvertDOMtoCanvas(i.x),y:this.canvas._YconvertDOMtoCanvas(i.y)},this.body.selectionBox.position.end={x:this.canvas._XconvertDOMtoCanvas(i.x),y:this.canvas._YconvertDOMtoCanvas(i.y)}}if(void 0!==e&amp;&amp;!0===this.options.dragNodes){this.drag.nodeId=e.id,!1===e.isSelected()&amp;&amp;this.selectionHandler.setSelection({nodes:[e.id]}),this.selectionHandler.generateClickEvent(&quot;dragStart&quot;,t,this.drag.pointer);var n,o=LC(this.selectionHandler.getSelectedNodes());try{for(o.s();!(n=o.n()).done;){var r=n.value,s={id:r.id,node:r,x:r.x,y:r.y,xFixed:r.options.fixed.x,yFixed:r.options.fixed.y};r.options.fixed.x=!0,r.options.fixed.y=!0,this.drag.selection.push(s)}}catch(t){o.e(t)}finally{o.f()}}else this.selectionHandler.generateClickEvent(&quot;dragStart&quot;,t,this.drag.pointer,void 0,!0)}}},{key:&quot;onDrag&quot;,value:function(t){var e=this;if(!0!==this.drag.pinched){this.body.emitter.emit(&quot;unlockNode&quot;);var i=this.getPointer(t.center),n=this.drag.selection;if(n&amp;&amp;n.length&amp;&amp;!0===this.options.dragNodes){this.selectionHandler.generateClickEvent(&quot;dragging&quot;,t,i);var o=i.x-this.drag.pointer.x,r=i.y-this.drag.pointer.y;Fu(n).call(n,(function(t){var i=t.node;!1===t.xFixed&amp;&amp;(i.x=e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(t.x)+o)),!1===t.yFixed&amp;&amp;(i.y=e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(t.y)+r))})),this.body.emitter.emit(&quot;startSimulation&quot;)}else{if(t.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent(&quot;dragging&quot;,t,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);this.body.selectionBox.position.end={x:this.canvas._XconvertDOMtoCanvas(i.x),y:this.canvas._YconvertDOMtoCanvas(i.y)},this.body.emitter.emit(&quot;_requestRedraw&quot;)}if(!0===this.options.dragView&amp;&amp;!t.srcEvent.shiftKey){if(this.selectionHandler.generateClickEvent(&quot;dragging&quot;,t,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(t);var s=i.x-this.drag.pointer.x,a=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+s,y:this.drag.translation.y+a},this.body.emitter.emit(&quot;_requestRedraw&quot;)}}}}},{key:&quot;onDragEnd&quot;,value:function(t){var e=this;if(this.drag.dragging=!1,this.body.selectionBox.show){var i;this.body.selectionBox.show=!1;var n=this.body.selectionBox.position,o={minX:Math.min(n.start.x,n.end.x),minY:Math.min(n.start.y,n.end.y),maxX:Math.max(n.start.x,n.end.x),maxY:Math.max(n.start.y,n.end.y)},r=Xf(i=this.body.nodeIndices).call(i,(function(t){var i=e.body.nodes[t];return i.x&gt;=o.minX&amp;&amp;i.x&lt;=o.maxX&amp;&amp;i.y&gt;=o.minY&amp;&amp;i.y&lt;=o.maxY}));Fu(r).call(r,(function(t){return e.selectionHandler.selectObject(e.body.nodes[t])}));var s=this.getPointer(t.center);this.selectionHandler.commitAndEmit(s,t),this.selectionHandler.generateClickEvent(&quot;dragEnd&quot;,t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit(&quot;_requestRedraw&quot;)}else{var a=this.drag.selection;a&amp;&amp;a.length?(Fu(a).call(a,(function(t){t.node.options.fixed.x=t.xFixed,t.node.options.fixed.y=t.yFixed})),this.selectionHandler.generateClickEvent(&quot;dragEnd&quot;,t,this.getPointer(t.center)),this.body.emitter.emit(&quot;startSimulation&quot;)):(this.selectionHandler.generateClickEvent(&quot;dragEnd&quot;,t,this.getPointer(t.center),void 0,!0),this.body.emitter.emit(&quot;_requestRedraw&quot;))}}},{key:&quot;onPinch&quot;,value:function(t){var e=this.getPointer(t.center);this.drag.pinched=!0,void 0===this.pinch.scale&amp;&amp;(this.pinch.scale=1);var i=this.pinch.scale*t.scale;this.zoom(i,e)}},{key:&quot;zoom&quot;,value:function(t,e){if(!0===this.options.zoomView){var i=this.body.view.scale;t&lt;1e-5&amp;&amp;(t=1e-5),t&gt;10&amp;&amp;(t=10);var n=void 0;void 0!==this.drag&amp;&amp;!0===this.drag.dragging&amp;&amp;(n=this.canvas.DOMtoCanvas(this.drag.pointer));var o=this.body.view.translation,r=t/i,s=(1-r)*e.x+o.x*r,a=(1-r)*e.y+o.y*r;if(this.body.view.scale=t,this.body.view.translation={x:s,y:a},null!=n){var h=this.canvas.canvasToDOM(n);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit(&quot;_requestRedraw&quot;),i&lt;t?this.body.emitter.emit(&quot;zoom&quot;,{direction:&quot;+&quot;,scale:this.body.view.scale,pointer:e}):this.body.emitter.emit(&quot;zoom&quot;,{direction:&quot;-&quot;,scale:this.body.view.scale,pointer:e})}}},{key:&quot;onMouseWheel&quot;,value:function(t){if(!0===this.options.zoomView){if(0!==t.deltaY){var e=this.body.view.scale;e*=1+(t.deltaY&lt;0?1:-1)*(.1*this.options.zoomSpeed);var i=this.getPointer({x:t.clientX,y:t.clientY});this.zoom(e,i)}t.preventDefault()}}},{key:&quot;onMouseMove&quot;,value:function(t){var e=this,i=this.getPointer({x:t.clientX,y:t.clientY}),n=!1;void 0!==this.popup&amp;&amp;(!1===this.popup.hidden&amp;&amp;this._checkHidePopup(i),!1===this.popup.hidden&amp;&amp;(n=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),this.options.keyboard.autoFocus&amp;&amp;!1===this.options.keyboard.bindToWindow&amp;&amp;!0===this.options.keyboard.enabled&amp;&amp;this.canvas.frame.focus(),!1===n&amp;&amp;(void 0!==this.popupTimer&amp;&amp;(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=Sv((function(){return e._checkShowPopup(i)}),this.options.tooltipDelay))),!0===this.options.hover&amp;&amp;this.selectionHandler.hoverObject(t,i)}},{key:&quot;_checkShowPopup&quot;,value:function(t){var e=this.canvas._XconvertDOMtoCanvas(t.x),i=this.canvas._YconvertDOMtoCanvas(t.y),n={left:e,top:i,right:e,bottom:i},o=void 0===this.popupObj?void 0:this.popupObj.id,r=!1,s=&quot;node&quot;;if(void 0===this.popupObj){for(var a,h=this.body.nodeIndices,l=this.body.nodes,d=[],c=0;c&lt;h.length;c++)!0===(a=l[h[c]]).isOverlappingWith(n)&amp;&amp;(r=!0,void 0!==a.getTitle()&amp;&amp;d.push(h[c]));d.length&gt;0&amp;&amp;(this.popupObj=l[d[d.length-1]],r=!0)}if(void 0===this.popupObj&amp;&amp;!1===r){for(var u,f=this.body.edgeIndices,p=this.body.edges,v=[],g=0;g&lt;f.length;g++)!0===(u=p[f[g]]).isOverlappingWith(n)&amp;&amp;!0===u.connected&amp;&amp;void 0!==u.getTitle()&amp;&amp;v.push(f[g]);v.length&gt;0&amp;&amp;(this.popupObj=p[v[v.length-1]],s=&quot;edge&quot;)}void 0!==this.popupObj?this.popupObj.id!==o&amp;&amp;(void 0===this.popup&amp;&amp;(this.popup=new qm(this.canvas.frame)),this.popup.popupTargetType=s,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit(&quot;showPopup&quot;,this.popupObj.id)):void 0!==this.popup&amp;&amp;(this.popup.hide(),this.body.emitter.emit(&quot;hidePopup&quot;))}},{key:&quot;_checkHidePopup&quot;,value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if(&quot;node&quot;===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&amp;&amp;!0===(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e))){var n=this.selectionHandler.getNodeAt(t);i=void 0!==n&amp;&amp;n.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&amp;&amp;void 0!==this.body.edges[this.popup.popupTargetId]&amp;&amp;(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));!1===i&amp;&amp;(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit(&quot;hidePopup&quot;))}}]),t}(),qC=g,VC=Nw,UC=Db.exports.getWeakData,YC=$e,XC=Y,GC=yw,KC=pw,$C=Wt,ZC=Vo.set,QC=Vo.getterFor,JC=Wh.find,tS=Wh.findIndex,eS=qC([].splice),iS=0,nS=function(t){return t.frozen||(t.frozen=new oS)},oS=function(){this.entries=[]},rS=function(t,e){return JC(t.entries,(function(t){return t[0]===e}))};oS.prototype={get:function(t){var e=rS(this,t);if(e)return e[1]},has:function(t){return!!rS(this,t)},set:function(t,e){var i=rS(this,t);i?i[1]=e:this.entries.push([t,e])},delete:function(t){var e=tS(this.entries,(function(e){return e[0]===t}));return~e&amp;&amp;eS(this.entries,e,1),!!~e}};var sS,aS={getConstructor:function(t,e,i,n){var o=t((function(t,o){GC(t,r),ZC(t,{type:e,id:iS++,frozen:void 0}),null!=o&amp;&amp;KC(o,t[n],{that:t,AS_ENTRIES:i})})),r=o.prototype,s=QC(e),a=function(t,e,i){var n=s(t),o=UC(YC(e),!0);return!0===o?nS(n).set(e,i):o[n.id]=i,t};return VC(r,{delete:function(t){var e=s(this);if(!XC(t))return!1;var i=UC(t);return!0===i?nS(e).delete(t):i&amp;&amp;$C(i,e.id)&amp;&amp;delete i[e.id]},has:function(t){var e=s(this);if(!XC(t))return!1;var i=UC(t);return!0===i?nS(e).has(t):i&amp;&amp;$C(i,e.id)}}),VC(r,i?{get:function(t){var e=s(this);if(XC(t)){var i=UC(t);return!0===i?nS(e).get(t):i?i[e.id]:void 0}},set:function(t,e){return a(this,t,e)}}:{add:function(t){return a(this,t,!0)}}),o}},hS=n,lS=g,dS=Nw,cS=Db.exports,uS=Bw,fS=aS,pS=Y,vS=jb,gS=Vo.enforce,yS=_o,mS=!hS.ActiveXObject&amp;&amp;&quot;ActiveXObject&quot;in hS,bS=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},wS=uS(&quot;WeakMap&quot;,bS,fS);if(yS&amp;&amp;mS){sS=fS.getConstructor(bS,&quot;WeakMap&quot;,!0),cS.enable();var kS=wS.prototype,_S=lS(kS.delete),xS=lS(kS.has),ES=lS(kS.get),OS=lS(kS.set);dS(kS,{delete:function(t){if(pS(t)&amp;&amp;!vS(t)){var e=gS(this);return e.frozen||(e.frozen=new sS),_S(this,t)||e.frozen.delete(t)}return _S(this,t)},has:function(t){if(pS(t)&amp;&amp;!vS(t)){var e=gS(this);return e.frozen||(e.frozen=new sS),xS(this,t)||e.frozen.has(t)}return xS(this,t)},get:function(t){if(pS(t)&amp;&amp;!vS(t)){var e=gS(this);return e.frozen||(e.frozen=new sS),xS(this,t)?ES(this,t):e.frozen.get(t)}return ES(this,t)},set:function(t,e){if(pS(t)&amp;&amp;!vS(t)){var i=gS(this);i.frozen||(i.frozen=new sS),xS(this,t)?OS(this,t,e):i.frozen.set(t,e)}else OS(this,t,e);return this}})}var CS,SS,TS,MS,PS,DS=X.WeakMap;function IS(t,e,i,n){if(&quot;a&quot;===i&amp;&amp;!n)throw new TypeError(&quot;Private accessor was defined without a getter&quot;);if(&quot;function&quot;==typeof e?t!==e||!n:!e.has(t))throw new TypeError(&quot;Cannot read private member from an object whose class did not declare it&quot;);return&quot;m&quot;===i?n:&quot;a&quot;===i?n.call(t):n?n.value:e.get(t)}function BS(t,e,i,n,o){if(&quot;m&quot;===n)throw new TypeError(&quot;Private method is not writable&quot;);if(&quot;a&quot;===n&amp;&amp;!o)throw new TypeError(&quot;Private accessor was defined without a setter&quot;);if(&quot;function&quot;==typeof e?t!==e||!o:!e.has(t))throw new TypeError(&quot;Cannot write private member to an object whose class did not declare it&quot;);return&quot;a&quot;===n?o.call(t,i):o?o.value=i:e.set(t,i),i}function zS(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return NS(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return NS(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function NS(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}function FS(t,e){var i,n=new b_,o=zS(e);try{for(o.s();!(i=o.n()).done;){var r=i.value;t.has(r)||n.add(r)}}catch(t){o.e(t)}finally{o.f()}return n}var AS=function(){function t(){Yd(this,t),CS.set(this,new b_),SS.set(this,new b_)}return Kd(t,[{key:&quot;size&quot;,get:function(){return IS(this,SS,&quot;f&quot;).size}},{key:&quot;add&quot;,value:function(){for(var t=arguments.length,e=new Array(t),i=0;i&lt;t;i++)e[i]=arguments[i];for(var n=0,o=e;n&lt;o.length;n++){var r=o[n];IS(this,SS,&quot;f&quot;).add(r)}}},{key:&quot;delete&quot;,value:function(){for(var t=arguments.length,e=new Array(t),i=0;i&lt;t;i++)e[i]=arguments[i];for(var n=0,o=e;n&lt;o.length;n++){var r=o[n];IS(this,SS,&quot;f&quot;).delete(r)}}},{key:&quot;clear&quot;,value:function(){IS(this,SS,&quot;f&quot;).clear()}},{key:&quot;getSelection&quot;,value:function(){return Jc(IS(this,SS,&quot;f&quot;))}},{key:&quot;getChanges&quot;,value:function(){return{added:Jc(FS(IS(this,CS,&quot;f&quot;),IS(this,SS,&quot;f&quot;))),deleted:Jc(FS(IS(this,SS,&quot;f&quot;),IS(this,CS,&quot;f&quot;))),previous:Jc(new b_(IS(this,CS,&quot;f&quot;))),current:Jc(new b_(IS(this,SS,&quot;f&quot;)))}}},{key:&quot;commit&quot;,value:function(){var t=this.getChanges();BS(this,CS,IS(this,SS,&quot;f&quot;),&quot;f&quot;),BS(this,SS,new b_(IS(this,CS,&quot;f&quot;)),&quot;f&quot;);var e,i=zS(t.added);try{for(i.s();!(e=i.n()).done;){e.value.select()}}catch(t){i.e(t)}finally{i.f()}var n,o=zS(t.deleted);try{for(o.s();!(n=o.n()).done;){n.value.unselect()}}catch(t){o.e(t)}finally{o.f()}return t}}]),t}();CS=new DS,SS=new DS;var jS=function(){function t(){var e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:function(){};Yd(this,t),TS.set(this,new AS),MS.set(this,new AS),PS.set(this,void 0),BS(this,PS,e,&quot;f&quot;)}return Kd(t,[{key:&quot;sizeNodes&quot;,get:function(){return IS(this,TS,&quot;f&quot;).size}},{key:&quot;sizeEdges&quot;,get:function(){return IS(this,MS,&quot;f&quot;).size}},{key:&quot;getNodes&quot;,value:function(){return IS(this,TS,&quot;f&quot;).getSelection()}},{key:&quot;getEdges&quot;,value:function(){return IS(this,MS,&quot;f&quot;).getSelection()}},{key:&quot;addNodes&quot;,value:function(){var t;(t=IS(this,TS,&quot;f&quot;)).add.apply(t,arguments)}},{key:&quot;addEdges&quot;,value:function(){var t;(t=IS(this,MS,&quot;f&quot;)).add.apply(t,arguments)}},{key:&quot;deleteNodes&quot;,value:function(t){IS(this,TS,&quot;f&quot;).delete(t)}},{key:&quot;deleteEdges&quot;,value:function(t){IS(this,MS,&quot;f&quot;).delete(t)}},{key:&quot;clear&quot;,value:function(){IS(this,TS,&quot;f&quot;).clear(),IS(this,MS,&quot;f&quot;).clear()}},{key:&quot;commit&quot;,value:function(){for(var t,e,i={nodes:IS(this,TS,&quot;f&quot;).commit(),edges:IS(this,MS,&quot;f&quot;).commit()},n=arguments.length,o=new Array(n),r=0;r&lt;n;r++)o[r]=arguments[r];return(t=IS(this,PS,&quot;f&quot;)).call.apply(t,su(e=[this,i]).call(e,o)),i}}]),t}();function RS(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return LS(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return LS(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function LS(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}TS=new DS,MS=new DS,PS=new DS;var HS=function(){function t(e,i){var n=this;Yd(this,t),this.body=e,this.canvas=i,this._selectionAccumulator=new jS,this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},un(this.options,this.defaultOptions),this.body.emitter.on(&quot;_dataChanged&quot;,(function(){n.updateSelection()}))}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){if(void 0!==t){em([&quot;multiselect&quot;,&quot;hoverConnectedEdges&quot;,&quot;selectable&quot;,&quot;selectConnectedEdges&quot;],this.options,t)}}},{key:&quot;selectOnPoint&quot;,value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&amp;&amp;(e=this.selectObject(i)),this.body.emitter.emit(&quot;_requestRedraw&quot;)}return e}},{key:&quot;selectAdditionalOnPoint&quot;,value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&amp;&amp;(e=!0,!0===i.isSelected()?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit(&quot;_requestRedraw&quot;))}return e}},{key:&quot;_initBaseEvent&quot;,value:function(t,e){var i={};return i.pointer={DOM:{x:e.x,y:e.y},canvas:this.canvas.DOMtoCanvas(e)},i.event=t,i}},{key:&quot;generateClickEvent&quot;,value:function(t,e,i,n){var o=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]&amp;&amp;arguments[4],r=this._initBaseEvent(e,i);if(!0===o)r.nodes=[],r.edges=[];else{var s=this.getSelection();r.nodes=s.nodes,r.edges=s.edges}void 0!==n&amp;&amp;(r.previousSelection=n),&quot;click&quot;==t&amp;&amp;(r.items=this.getClickedItems(i)),void 0!==e.controlEdge&amp;&amp;(r.controlEdge=e.controlEdge),this.body.emitter.emit(t,r)}},{key:&quot;selectObject&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;if(void 0!==t){if(t instanceof fO){var i;if(!0===e)(i=this._selectionAccumulator).addEdges.apply(i,Jc(t.edges));this._selectionAccumulator.addNodes(t)}else this._selectionAccumulator.addEdges(t);return!0}return!1}},{key:&quot;deselectObject&quot;,value:function(t){!0===t.isSelected()&amp;&amp;(t.selected=!1,this._removeFromSelection(t))}},{key:&quot;_getAllNodesOverlappingWith&quot;,value:function(t){for(var e=[],i=this.body.nodes,n=0;n&lt;this.body.nodeIndices.length;n++){var o=this.body.nodeIndices[n];i[o].isOverlappingWith(t)&amp;&amp;e.push(o)}return e}},{key:&quot;_pointerToPositionObject&quot;,value:function(t){var e=this.canvas.DOMtoCanvas(t);return{left:e.x-1,top:e.y+1,right:e.x+1,bottom:e.y-1}}},{key:&quot;getNodeAt&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),n=this._getAllNodesOverlappingWith(i);return n.length&gt;0?!0===e?this.body.nodes[n[n.length-1]]:n[n.length-1]:void 0}},{key:&quot;_getEdgesOverlappingWith&quot;,value:function(t,e){for(var i=this.body.edges,n=0;n&lt;this.body.edgeIndices.length;n++){var o=this.body.edgeIndices[n];i[o].isOverlappingWith(t)&amp;&amp;e.push(o)}}},{key:&quot;_getAllEdgesOverlappingWith&quot;,value:function(t){var e=[];return this._getEdgesOverlappingWith(t,e),e}},{key:&quot;getEdgeAt&quot;,value:function(t){for(var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),n=10,o=null,r=this.body.edges,s=0;s&lt;this.body.edgeIndices.length;s++){var a=this.body.edgeIndices[s],h=r[a];if(h.connected){var l=h.from.x,d=h.from.y,c=h.to.x,u=h.to.y,f=h.edgeType.getDistanceToEdge(l,d,c,u,i.x,i.y);f&lt;n&amp;&amp;(o=a,n=f)}}return null!==o?!0===e?this.body.edges[o]:o:void 0}},{key:&quot;_addToHover&quot;,value:function(t){t instanceof fO?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t}},{key:&quot;_removeFromSelection&quot;,value:function(t){var e;t instanceof fO?(this._selectionAccumulator.deleteNodes(t),(e=this._selectionAccumulator).deleteEdges.apply(e,Jc(t.edges))):this._selectionAccumulator.deleteEdges(t)}},{key:&quot;unselectAll&quot;,value:function(){this._selectionAccumulator.clear()}},{key:&quot;getSelectedNodeCount&quot;,value:function(){return this._selectionAccumulator.sizeNodes}},{key:&quot;getSelectedEdgeCount&quot;,value:function(){return this._selectionAccumulator.sizeEdges}},{key:&quot;_hoverConnectedEdges&quot;,value:function(t){for(var e=0;e&lt;t.edges.length;e++){var i=t.edges[e];i.hover=!0,this._addToHover(i)}}},{key:&quot;emitBlurEvent&quot;,value:function(t,e,i){var n=this._initBaseEvent(t,e);!0===i.hover&amp;&amp;(i.hover=!1,i instanceof fO?(n.node=i.id,this.body.emitter.emit(&quot;blurNode&quot;,n)):(n.edge=i.id,this.body.emitter.emit(&quot;blurEdge&quot;,n)))}},{key:&quot;emitHoverEvent&quot;,value:function(t,e,i){var n=this._initBaseEvent(t,e),o=!1;return!1===i.hover&amp;&amp;(i.hover=!0,this._addToHover(i),o=!0,i instanceof fO?(n.node=i.id,this.body.emitter.emit(&quot;hoverNode&quot;,n)):(n.edge=i.id,this.body.emitter.emit(&quot;hoverEdge&quot;,n))),o}},{key:&quot;hoverObject&quot;,value:function(t,e){var i=this.getNodeAt(e);void 0===i&amp;&amp;(i=this.getEdgeAt(e));var n=!1;for(var o in this.hoverObj.nodes)Object.prototype.hasOwnProperty.call(this.hoverObj.nodes,o)&amp;&amp;(void 0===i||i instanceof fO&amp;&amp;i.id!=o||i instanceof cC)&amp;&amp;(this.emitBlurEvent(t,e,this.hoverObj.nodes[o]),delete this.hoverObj.nodes[o],n=!0);for(var r in this.hoverObj.edges)Object.prototype.hasOwnProperty.call(this.hoverObj.edges,r)&amp;&amp;(!0===n?(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]):(void 0===i||i instanceof cC&amp;&amp;i.id!=r||i instanceof fO&amp;&amp;!i.hover)&amp;&amp;(this.emitBlurEvent(t,e,this.hoverObj.edges[r]),delete this.hoverObj.edges[r],n=!0));if(void 0!==i){var s=bu(this.hoverObj.edges).length,a=bu(this.hoverObj.nodes).length;(n||i instanceof cC&amp;&amp;0===s&amp;&amp;0===a||i instanceof fO&amp;&amp;0===s&amp;&amp;0===a)&amp;&amp;(n=this.emitHoverEvent(t,e,i)),i instanceof fO&amp;&amp;!0===this.options.hoverConnectedEdges&amp;&amp;this._hoverConnectedEdges(i)}!0===n&amp;&amp;this.body.emitter.emit(&quot;_requestRedraw&quot;)}},{key:&quot;commitWithoutEmitting&quot;,value:function(){this._selectionAccumulator.commit()}},{key:&quot;commitAndEmit&quot;,value:function(t,e){var i=!1,n=this._selectionAccumulator.commit(),o={nodes:n.nodes.previous,edges:n.edges.previous};n.edges.deleted.length&gt;0&amp;&amp;(this.generateClickEvent(&quot;deselectEdge&quot;,e,t,o),i=!0),n.nodes.deleted.length&gt;0&amp;&amp;(this.generateClickEvent(&quot;deselectNode&quot;,e,t,o),i=!0),n.nodes.added.length&gt;0&amp;&amp;(this.generateClickEvent(&quot;selectNode&quot;,e,t),i=!0),n.edges.added.length&gt;0&amp;&amp;(this.generateClickEvent(&quot;selectEdge&quot;,e,t),i=!0),!0===i&amp;&amp;this.generateClickEvent(&quot;select&quot;,e,t)}},{key:&quot;getSelection&quot;,value:function(){return{nodes:this.getSelectedNodeIds(),edges:this.getSelectedEdgeIds()}}},{key:&quot;getSelectedNodes&quot;,value:function(){return this._selectionAccumulator.getNodes()}},{key:&quot;getSelectedEdges&quot;,value:function(){return this._selectionAccumulator.getEdges()}},{key:&quot;getSelectedNodeIds&quot;,value:function(){var t;return gu(t=this._selectionAccumulator.getNodes()).call(t,(function(t){return t.id}))}},{key:&quot;getSelectedEdgeIds&quot;,value:function(){var t;return gu(t=this._selectionAccumulator.getEdges()).call(t,(function(t){return t.id}))}},{key:&quot;setSelection&quot;,value:function(t){var e=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:{};if(!t||!t.nodes&amp;&amp;!t.edges)throw new TypeError(&quot;Selection must be an object with nodes and/or edges properties&quot;);if((e.unselectAll||void 0===e.unselectAll)&amp;&amp;this.unselectAll(),t.nodes){var i,n=RS(t.nodes);try{for(n.s();!(i=n.n()).done;){var o=i.value,r=this.body.nodes[o];if(!r)throw new RangeError('Node with id &quot;'+o+'&quot; not found');this.selectObject(r,e.highlightEdges)}}catch(t){n.e(t)}finally{n.f()}}if(t.edges){var s,a=RS(t.edges);try{for(a.s();!(s=a.n()).done;){var h=s.value,l=this.body.edges[h];if(!l)throw new RangeError('Edge with id &quot;'+h+'&quot; not found');this.selectObject(l)}}catch(t){a.e(t)}finally{a.f()}}this.body.emitter.emit(&quot;_requestRedraw&quot;),this._selectionAccumulator.commit()}},{key:&quot;selectNodes&quot;,value:function(t){var e=!(arguments.length&gt;1&amp;&amp;void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw&quot;Selection must be an array with ids&quot;;this.setSelection({nodes:t},{highlightEdges:e})}},{key:&quot;selectEdges&quot;,value:function(t){if(!t||void 0===t.length)throw&quot;Selection must be an array with ids&quot;;this.setSelection({edges:t})}},{key:&quot;updateSelection&quot;,value:function(){for(var t in this._selectionAccumulator.getNodes())Object.prototype.hasOwnProperty.call(this.body.nodes,t.id)||this._selectionAccumulator.deleteNodes(t);for(var e in this._selectionAccumulator.getEdges())Object.prototype.hasOwnProperty.call(this.body.edges,e.id)||this._selectionAccumulator.deleteEdges(e)}},{key:&quot;getClickedItems&quot;,value:function(t){for(var e=this.canvas.DOMtoCanvas(t),i=[],n=this.body.nodeIndices,o=this.body.nodes,r=n.length-1;r&gt;=0;r--){var s=o[n[r]].getItemsOnPoint(e);i.push.apply(i,s)}for(var a=this.body.edgeIndices,h=this.body.edges,l=a.length-1;l&gt;=0;l--){var d=h[a[l]].getItemsOnPoint(e);i.push.apply(i,d)}return i}}]),t}(),WS={};!function(t){!function(t){function e(t,e){if(!(t instanceof e))throw new TypeError(&quot;Cannot call a class as a function&quot;)}t.__esModule=!0,t.sort=v;var i=32,n=7,o=256,r=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function s(t){return t&lt;1e5?t&lt;100?t&lt;10?0:1:t&lt;1e4?t&lt;1e3?2:3:4:t&lt;1e7?t&lt;1e6?5:6:t&lt;1e9?t&lt;1e8?7:8:9}function a(t,e){if(t===e)return 0;if(~~t===t&amp;&amp;~~e===e){if(0===t||0===e)return t&lt;e?-1:1;if(t&lt;0||e&lt;0){if(e&gt;=0)return-1;if(t&gt;=0)return 1;t=-t,e=-e}var i=s(t),n=s(e),o=0;return i&lt;n?(t*=r[n-i-1],e/=10,o=-1):i&gt;n&amp;&amp;(e*=r[i-n-1],t/=10,o=1),t===e?o:t&lt;e?-1:1}var a=String(t),h=String(e);return a===h?0:a&lt;h?-1:1}function h(t){for(var e=0;t&gt;=i;)e|=1&amp;t,t&gt;&gt;=1;return t+e}function l(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])&lt;0){for(;o&lt;i&amp;&amp;n(t[o],t[o-1])&lt;0;)o++;d(t,e,o)}else for(;o&lt;i&amp;&amp;n(t[o],t[o-1])&gt;=0;)o++;return o-e}function d(t,e,i){for(i--;e&lt;i;){var n=t[e];t[e++]=t[i],t[i--]=n}}function c(t,e,i,n,o){for(n===e&amp;&amp;n++;n&lt;i;n++){for(var r=t[n],s=e,a=n;s&lt;a;){var h=s+a&gt;&gt;&gt;1;o(r,t[h])&lt;0?a=h:s=h+1}var l=n-s;switch(l){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;l&gt;0;)t[s+l]=t[s+l-1],l--}t[s]=r}}function u(t,e,i,n,o,r){var s=0,a=0,h=1;if(r(t,e[i+o])&gt;0){for(a=n-o;h&lt;a&amp;&amp;r(t,e[i+o+h])&gt;0;)s=h,(h=1+(h&lt;&lt;1))&lt;=0&amp;&amp;(h=a);h&gt;a&amp;&amp;(h=a),s+=o,h+=o}else{for(a=o+1;h&lt;a&amp;&amp;r(t,e[i+o-h])&lt;=0;)s=h,(h=1+(h&lt;&lt;1))&lt;=0&amp;&amp;(h=a);h&gt;a&amp;&amp;(h=a);var l=s;s=o-h,h=o-l}for(s++;s&lt;h;){var d=s+(h-s&gt;&gt;&gt;1);r(t,e[i+d])&gt;0?s=d+1:h=d}return h}function f(t,e,i,n,o,r){var s=0,a=0,h=1;if(r(t,e[i+o])&lt;0){for(a=o+1;h&lt;a&amp;&amp;r(t,e[i+o-h])&lt;0;)s=h,(h=1+(h&lt;&lt;1))&lt;=0&amp;&amp;(h=a);h&gt;a&amp;&amp;(h=a);var l=s;s=o-h,h=o-l}else{for(a=n-o;h&lt;a&amp;&amp;r(t,e[i+o+h])&gt;=0;)s=h,(h=1+(h&lt;&lt;1))&lt;=0&amp;&amp;(h=a);h&gt;a&amp;&amp;(h=a),s+=o,h+=o}for(s++;s&lt;h;){var d=s+(h-s&gt;&gt;&gt;1);r(t,e[i+d])&lt;0?h=d:s=d+1}return h}var p=function(){function t(i,r){e(this,t),this.array=null,this.compare=null,this.minGallop=n,this.length=0,this.tmpStorageLength=o,this.stackLength=0,this.runStart=null,this.runLength=null,this.stackSize=0,this.array=i,this.compare=r,this.length=i.length,this.length&lt;2*o&amp;&amp;(this.tmpStorageLength=this.length&gt;&gt;&gt;1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length&lt;120?5:this.length&lt;1542?10:this.length&lt;119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}return t.prototype.pushRun=function(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1},t.prototype.mergeRuns=function(){for(;this.stackSize&gt;1;){var t=this.stackSize-2;if(t&gt;=1&amp;&amp;this.runLength[t-1]&lt;=this.runLength[t]+this.runLength[t+1]||t&gt;=2&amp;&amp;this.runLength[t-2]&lt;=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]&lt;this.runLength[t+1]&amp;&amp;t--;else if(this.runLength[t]&gt;this.runLength[t+1])break;this.mergeAt(t)}},t.prototype.forceMergeRuns=function(){for(;this.stackSize&gt;1;){var t=this.stackSize-2;t&gt;0&amp;&amp;this.runLength[t-1]&lt;this.runLength[t+1]&amp;&amp;t--,this.mergeAt(t)}},t.prototype.mergeAt=function(t){var e=this.compare,i=this.array,n=this.runStart[t],o=this.runLength[t],r=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=o+s,t===this.stackSize-3&amp;&amp;(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;var a=f(i[r],i,n,o,0,e);n+=a,0!=(o-=a)&amp;&amp;0!==(s=u(i[n+o-1],i,r,s,s-1,e))&amp;&amp;(o&lt;=s?this.mergeLow(n,o,r,s):this.mergeHigh(n,o,r,s))},t.prototype.mergeLow=function(t,e,i,o){var r=this.compare,s=this.array,a=this.tmp,h=0;for(h=0;h&lt;e;h++)a[h]=s[t+h];var l=0,d=i,c=t;if(s[c++]=s[d++],0!=--o)if(1!==e){for(var p=this.minGallop;;){var v=0,g=0,y=!1;do{if(r(s[d],a[l])&lt;0){if(s[c++]=s[d++],g++,v=0,0==--o){y=!0;break}}else if(s[c++]=a[l++],v++,g=0,1==--e){y=!0;break}}while((v|g)&lt;p);if(y)break;do{if(0!==(v=f(s[d],a,l,e,0,r))){for(h=0;h&lt;v;h++)s[c+h]=a[l+h];if(c+=v,l+=v,(e-=v)&lt;=1){y=!0;break}}if(s[c++]=s[d++],0==--o){y=!0;break}if(0!==(g=u(a[l],s,d,o,0,r))){for(h=0;h&lt;g;h++)s[c+h]=s[d+h];if(c+=g,d+=g,0==(o-=g)){y=!0;break}}if(s[c++]=a[l++],1==--e){y=!0;break}p--}while(v&gt;=n||g&gt;=n);if(y)break;p&lt;0&amp;&amp;(p=0),p+=2}if(this.minGallop=p,p&lt;1&amp;&amp;(this.minGallop=1),1===e){for(h=0;h&lt;o;h++)s[c+h]=s[d+h];s[c+o]=a[l]}else{if(0===e)throw new Error(&quot;mergeLow preconditions were not respected&quot;);for(h=0;h&lt;e;h++)s[c+h]=a[l+h]}}else{for(h=0;h&lt;o;h++)s[c+h]=s[d+h];s[c+o]=a[l]}else for(h=0;h&lt;e;h++)s[c+h]=a[l+h]},t.prototype.mergeHigh=function(t,e,i,o){var r=this.compare,s=this.array,a=this.tmp,h=0;for(h=0;h&lt;o;h++)a[h]=s[i+h];var l=t+e-1,d=o-1,c=i+o-1,p=0,v=0;if(s[c--]=s[l--],0!=--e)if(1!==o){for(var g=this.minGallop;;){var y=0,m=0,b=!1;do{if(r(a[d],s[l])&lt;0){if(s[c--]=s[l--],y++,m=0,0==--e){b=!0;break}}else if(s[c--]=a[d--],m++,y=0,1==--o){b=!0;break}}while((y|m)&lt;g);if(b)break;do{if(0!=(y=e-f(a[d],s,t,e,e-1,r))){for(e-=y,v=1+(c-=y),p=1+(l-=y),h=y-1;h&gt;=0;h--)s[v+h]=s[p+h];if(0===e){b=!0;break}}if(s[c--]=a[d--],1==--o){b=!0;break}if(0!=(m=o-u(s[l],a,0,o,o-1,r))){for(o-=m,v=1+(c-=m),p=1+(d-=m),h=0;h&lt;m;h++)s[v+h]=a[p+h];if(o&lt;=1){b=!0;break}}if(s[c--]=s[l--],0==--e){b=!0;break}g--}while(y&gt;=n||m&gt;=n);if(b)break;g&lt;0&amp;&amp;(g=0),g+=2}if(this.minGallop=g,g&lt;1&amp;&amp;(this.minGallop=1),1===o){for(v=1+(c-=e),p=1+(l-=e),h=e-1;h&gt;=0;h--)s[v+h]=s[p+h];s[c]=a[d]}else{if(0===o)throw new Error(&quot;mergeHigh preconditions were not respected&quot;);for(p=c-(o-1),h=0;h&lt;o;h++)s[p+h]=a[h]}}else{for(v=1+(c-=e),p=1+(l-=e),h=e-1;h&gt;=0;h--)s[v+h]=s[p+h];s[c]=a[d]}else for(p=c-(o-1),h=0;h&lt;o;h++)s[p+h]=a[h]},t}();function v(t,e,n,o){if(!Array.isArray(t))throw new TypeError(&quot;Can only sort arrays&quot;);e?&quot;function&quot;!=typeof e&amp;&amp;(o=n,n=e,e=a):e=a,n||(n=0),o||(o=t.length);var r=o-n;if(!(r&lt;2)){var s=0;if(r&lt;i)c(t,n,o,n+(s=l(t,n,o,e)),e);else{var d=new p(t,e),u=h(r);do{if((s=l(t,n,o,e))&lt;u){var f=r;f&gt;u&amp;&amp;(f=u),c(t,n,n+f,n+s,e),s=f}d.pushRun(n,s),d.mergeRuns(),r-=s,n+=s}while(0!==r);d.forceMergeRuns()}}}}(t)}(WS);var qS=WS;function VS(t){var e=function(){if(&quot;undefined&quot;==typeof Reflect||!Mk)return!1;if(Mk.sham)return!1;if(&quot;function&quot;==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Mk(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var i,n=Ak(t);if(e){var o=Ak(this).constructor;i=Mk(n,arguments,o)}else i=n.apply(this,arguments);return Nk(this,i)}}var US=function(){function t(){Yd(this,t)}return Kd(t,[{key:&quot;abstract&quot;,value:function(){throw new Error(&quot;Can't instantiate abstract class!&quot;)}},{key:&quot;fake_use&quot;,value:function(){}},{key:&quot;curveType&quot;,value:function(){return this.abstract()}},{key:&quot;getPosition&quot;,value:function(t){return this.fake_use(t),this.abstract()}},{key:&quot;setPosition&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:void 0;this.fake_use(t,e,i),this.abstract()}},{key:&quot;getTreeSize&quot;,value:function(t){return this.fake_use(t),this.abstract()}},{key:&quot;sort&quot;,value:function(t){this.fake_use(t),this.abstract()}},{key:&quot;fix&quot;,value:function(t,e){this.fake_use(t,e),this.abstract()}},{key:&quot;shift&quot;,value:function(t,e){this.fake_use(t,e),this.abstract()}}]),t}(),YS=function(t){zk(i,t);var e=VS(i);function i(t){var n;return Yd(this,i),(n=e.call(this)).layout=t,n}return Kd(i,[{key:&quot;curveType&quot;,value:function(){return&quot;horizontal&quot;}},{key:&quot;getPosition&quot;,value:function(t){return t.x}},{key:&quot;setPosition&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&amp;&amp;this.layout.hierarchical.addToOrdering(t,i),t.x=e}},{key:&quot;getTreeSize&quot;,value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_x,max:e.max_x}}},{key:&quot;sort&quot;,value:function(t){qS.sort(t,(function(t,e){return t.x-e.x}))}},{key:&quot;fix&quot;,value:function(t,e){t.y=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.y=!0}},{key:&quot;shift&quot;,value:function(t,e){this.layout.body.nodes[t].x+=e}}]),i}(US),XS=function(t){zk(i,t);var e=VS(i);function i(t){var n;return Yd(this,i),(n=e.call(this)).layout=t,n}return Kd(i,[{key:&quot;curveType&quot;,value:function(){return&quot;vertical&quot;}},{key:&quot;getPosition&quot;,value:function(t){return t.y}},{key:&quot;setPosition&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&amp;&amp;this.layout.hierarchical.addToOrdering(t,i),t.y=e}},{key:&quot;getTreeSize&quot;,value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_y,max:e.max_y}}},{key:&quot;sort&quot;,value:function(t){qS.sort(t,(function(t,e){return t.y-e.y}))}},{key:&quot;fix&quot;,value:function(t,e){t.x=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.x=!0}},{key:&quot;shift&quot;,value:function(t,e){this.layout.body.nodes[t].y+=e}}]),i}(US),GS=Wh.every;_i({target:&quot;Array&quot;,proto:!0,forced:!Cu(&quot;every&quot;)},{every:function(t){return GS(this,t,arguments.length&gt;1?arguments[1]:void 0)}});var KS=Tn(&quot;Array&quot;).every,$S=J,ZS=KS,QS=Array.prototype,JS=function(t){var e=t.every;return t===QS||$S(QS,t)&amp;&amp;e===QS.every?ZS:e},tT=JS;function eT(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return iT(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return iT(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function iT(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}function nT(t,e){var i=new b_;return Fu(t).call(t,(function(t){var e;Fu(e=t.edges).call(e,(function(t){t.connected&amp;&amp;i.add(t)}))})),Fu(i).call(i,(function(t){var i=t.from.id,n=t.to.id;null==e[i]&amp;&amp;(e[i]=0),(null==e[n]||e[i]&gt;=e[n])&amp;&amp;(e[n]=e[i]+1)})),e}function oT(t,e,i,n){var o,r,s=Kp(null),a=i_(o=Jc(kx(n).call(n))).call(o,(function(t,e){return t+1+e.edges.length}),0),h=i+&quot;Id&quot;,l=&quot;to&quot;===i?1:-1,d=eT(n);try{var c=function(){var o=Kc(r.value,2),d=o[0],c=o[1];if(!n.has(d)||!t(c))return&quot;continue&quot;;s[d]=0;for(var u=[c],f=0,p=void 0,v=function(){var t,o;if(!n.has(d))return&quot;continue&quot;;var r=s[p.id]+l;if(Fu(t=Xf(o=p.edges).call(o,(function(t){return t.connected&amp;&amp;t.to!==t.from&amp;&amp;t[i]!==p&amp;&amp;n.has(t.toId)&amp;&amp;n.has(t.fromId)}))).call(t,(function(t){var n=t[h],o=s[n];(null==o||e(r,o))&amp;&amp;(s[n]=r,u.push(t[i]))})),f&gt;a)return{v:{v:nT(n,s)}};++f};p=u.pop();){var g=v();if(&quot;continue&quot;!==g&amp;&amp;&quot;object&quot;===Qc(g))return g.v}};for(d.s();!(r=d.n()).done;){var u=c();if(&quot;continue&quot;!==u&amp;&amp;&quot;object&quot;===Qc(u))return u.v}}catch(t){d.e(t)}finally{d.f()}return s}var rT=function(){function t(){Yd(this,t),this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}return Kd(t,[{key:&quot;addRelation&quot;,value:function(t,e){void 0===this.childrenReference[t]&amp;&amp;(this.childrenReference[t]=[]),this.childrenReference[t].push(e),void 0===this.parentReference[e]&amp;&amp;(this.parentReference[e]=[]),this.parentReference[e].push(t)}},{key:&quot;checkIfTree&quot;,value:function(){for(var t in this.parentReference)if(this.parentReference[t].length&gt;1)return void(this.isTree=!1);this.isTree=!0}},{key:&quot;numTrees&quot;,value:function(){return this.treeIndex+1}},{key:&quot;setTreeIndex&quot;,value:function(t,e){void 0!==e&amp;&amp;void 0===this.trees[t.id]&amp;&amp;(this.trees[t.id]=e,this.treeIndex=Math.max(e,this.treeIndex))}},{key:&quot;ensureLevel&quot;,value:function(t){void 0===this.levels[t]&amp;&amp;(this.levels[t]=0)}},{key:&quot;getMaxLevel&quot;,value:function(t){var e=this,i={};return function t(n){if(void 0!==i[n])return i[n];var o=e.levels[n];if(e.childrenReference[n]){var r=e.childrenReference[n];if(r.length&gt;0)for(var s=0;s&lt;r.length;s++)o=Math.max(o,t(r[s]))}return i[n]=o,o}(t)}},{key:&quot;levelDownstream&quot;,value:function(t,e){void 0===this.levels[e.id]&amp;&amp;(void 0===this.levels[t.id]&amp;&amp;(this.levels[t.id]=0),this.levels[e.id]=this.levels[t.id]+1)}},{key:&quot;setMinLevelToZero&quot;,value:function(t){var e=1e9;for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&amp;&amp;void 0!==this.levels[i]&amp;&amp;(e=Math.min(this.levels[i],e));for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&amp;&amp;void 0!==this.levels[n]&amp;&amp;(this.levels[n]-=e)}},{key:&quot;getTreeSize&quot;,value:function(t,e){var i=1e9,n=-1e9,o=1e9,r=-1e9;for(var s in this.trees)if(Object.prototype.hasOwnProperty.call(this.trees,s)&amp;&amp;this.trees[s]===e){var a=t[s];i=Math.min(a.x,i),n=Math.max(a.x,n),o=Math.min(a.y,o),r=Math.max(a.y,r)}return{min_x:i,max_x:n,min_y:o,max_y:r}}},{key:&quot;hasSameParent&quot;,value:function(t,e){var i=this.parentReference[t.id],n=this.parentReference[e.id];if(void 0===i||void 0===n)return!1;for(var o=0;o&lt;i.length;o++)for(var r=0;r&lt;n.length;r++)if(i[o]==n[r])return!0;return!1}},{key:&quot;inSameSubNetwork&quot;,value:function(t,e){return this.trees[t.id]===this.trees[e.id]}},{key:&quot;getLevels&quot;,value:function(){return bu(this.distributionOrdering)}},{key:&quot;addToOrdering&quot;,value:function(t,e){void 0===this.distributionOrdering[e]&amp;&amp;(this.distributionOrdering[e]=[]);var i=!1,n=this.distributionOrdering[e];for(var o in n)if(n[o]===t){i=!0;break}i||(this.distributionOrdering[e].push(t),this.distributionIndex[t.id]=this.distributionOrdering[e].length-1)}}]),t}(),sT=function(){function t(e){Yd(this,t),this.body=e,this._resetRNG(Math.random()+&quot;:&quot;+Eu()),this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,clusterThreshold:150,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:&quot;UD&quot;,sortMethod:&quot;hubsize&quot;}},un(this.options,this.defaultOptions),this.bindEventListeners()}return Kd(t,[{key:&quot;bindEventListeners&quot;,value:function(){var t=this;this.body.emitter.on(&quot;_dataChanged&quot;,(function(){t.setupHierarchicalLayout()})),this.body.emitter.on(&quot;_dataLoaded&quot;,(function(){t.layoutNetwork()})),this.body.emitter.on(&quot;_resetHierarchicalLayout&quot;,(function(){t.setupHierarchicalLayout()})),this.body.emitter.on(&quot;_adjustEdgesForHierarchicalLayout&quot;,(function(){if(!0===t.options.hierarchical.enabled){var e=t.direction.curveType();t.body.emitter.emit(&quot;_forceDisableDynamicCurves&quot;,e,!1)}}))}},{key:&quot;setOptions&quot;,value:function(t,e){if(void 0!==t){var i=this.options.hierarchical,n=i.enabled;if(em([&quot;randomSeed&quot;,&quot;improvedLayout&quot;,&quot;clusterThreshold&quot;],this.options,t),Sm(this.options,t,&quot;hierarchical&quot;),void 0!==t.randomSeed&amp;&amp;this._resetRNG(t.randomSeed),!0===i.enabled)return!0===n&amp;&amp;this.body.emitter.emit(&quot;refresh&quot;,!0),&quot;RL&quot;===i.direction||&quot;DU&quot;===i.direction?i.levelSeparation&gt;0&amp;&amp;(i.levelSeparation*=-1):i.levelSeparation&lt;0&amp;&amp;(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit(&quot;_resetHierarchicalLayout&quot;),this.adaptAllOptionsForHierarchicalLayout(e);if(!0===n)return this.body.emitter.emit(&quot;refresh&quot;),nm(e,this.optionsBackup)}return e}},{key:&quot;_resetRNG&quot;,value:function(t){this.initialRandomSeed=t,this._rng=jy(this.initialRandomSeed)}},{key:&quot;adaptAllOptionsForHierarchicalLayout&quot;,value:function(t){if(!0===this.options.hierarchical.enabled){var e=this.optionsBackup.physics;void 0===t.physics||!0===t.physics?(t.physics={enabled:void 0===e.enabled||e.enabled,solver:&quot;hierarchicalRepulsion&quot;},e.enabled=void 0===e.enabled||e.enabled,e.solver=e.solver||&quot;barnesHut&quot;):&quot;object&quot;===Qc(t.physics)?(e.enabled=void 0===t.physics.enabled||t.physics.enabled,e.solver=t.physics.solver||&quot;barnesHut&quot;,t.physics.solver=&quot;hierarchicalRepulsion&quot;):!1!==t.physics&amp;&amp;(e.solver=&quot;barnesHut&quot;,t.physics={solver:&quot;hierarchicalRepulsion&quot;});var i=this.direction.curveType();if(void 0===t.edges)this.optionsBackup.edges={smooth:{enabled:!0,type:&quot;dynamic&quot;}},t.edges={smooth:!1};else if(void 0===t.edges.smooth)this.optionsBackup.edges={smooth:{enabled:!0,type:&quot;dynamic&quot;}},t.edges.smooth=!1;else if(&quot;boolean&quot;==typeof t.edges.smooth)this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:i};else{var n=t.edges.smooth;void 0!==n.type&amp;&amp;&quot;dynamic&quot;!==n.type&amp;&amp;(i=n.type),this.optionsBackup.edges={smooth:{enabled:void 0===n.enabled||n.enabled,type:void 0===n.type?&quot;dynamic&quot;:n.type,roundness:void 0===n.roundness?.5:n.roundness,forceDirection:void 0!==n.forceDirection&amp;&amp;n.forceDirection}},t.edges.smooth={enabled:void 0===n.enabled||n.enabled,type:i,roundness:void 0===n.roundness?.5:n.roundness,forceDirection:void 0!==n.forceDirection&amp;&amp;n.forceDirection}}this.body.emitter.emit(&quot;_forceDisableDynamicCurves&quot;,i)}return t}},{key:&quot;positionInitially&quot;,value:function(t){if(!0!==this.options.hierarchical.enabled){this._resetRNG(this.initialRandomSeed);for(var e=t.length+50,i=0;i&lt;t.length;i++){var n=t[i],o=2*Math.PI*this._rng();void 0===n.x&amp;&amp;(n.x=e*Math.cos(o)),void 0===n.y&amp;&amp;(n.y=e*Math.sin(o))}}}},{key:&quot;layoutNetwork&quot;,value:function(){if(!0!==this.options.hierarchical.enabled&amp;&amp;!0===this.options.improvedLayout){for(var t=this.body.nodeIndices,e=0,i=0;i&lt;t.length;i++){!0===this.body.nodes[t[i]].predefinedPosition&amp;&amp;(e+=1)}if(e&lt;.5*t.length){var n=0,o=this.options.clusterThreshold,r={clusterNodeProperties:{shape:&quot;ellipse&quot;,label:&quot;&quot;,group:&quot;&quot;,font:{multi:!1}},clusterEdgeProperties:{label:&quot;&quot;,font:{multi:!1},smooth:{enabled:!1}}};if(t.length&gt;o){for(var s=t.length;t.length&gt;o&amp;&amp;n&lt;=10;){n+=1;var a=t.length;if(n%3==0?this.body.modules.clustering.clusterBridges(r):this.body.modules.clustering.clusterOutliers(r),a==t.length&amp;&amp;n%3!=0)return this._declusterAll(),this.body.emitter.emit(&quot;_layoutFailed&quot;),void console.info(&quot;This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.&quot;)}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*s)})}n&gt;10&amp;&amp;console.info(&quot;The clustering didn't succeed within the amount of interations allowed, progressing with partial result.&quot;),this.body.modules.kamadaKawai.solve(t,this.body.edgeIndices,!0),this._shiftToCenter();for(var h=0;h&lt;t.length;h++){var l=this.body.nodes[t[h]];!1===l.predefinedPosition&amp;&amp;(l.x+=70*(.5-this._rng()),l.y+=70*(.5-this._rng()))}this._declusterAll(),this.body.emitter.emit(&quot;_repositionBezierNodes&quot;)}}}},{key:&quot;_shiftToCenter&quot;,value:function(){for(var t=EC.getRangeCore(this.body.nodes,this.body.nodeIndices),e=EC.findCenter(t),i=0;i&lt;this.body.nodeIndices.length;i++){var n=this.body.nodes[this.body.nodeIndices[i]];n.x-=e.x,n.y-=e.y}}},{key:&quot;_declusterAll&quot;,value:function(){for(var t=!0;!0===t;){t=!1;for(var e=0;e&lt;this.body.nodeIndices.length;e++)!0===this.body.nodes[this.body.nodeIndices[e]].isCluster&amp;&amp;(t=!0,this.body.modules.clustering.openCluster(this.body.nodeIndices[e],{},!1));!0===t&amp;&amp;this.body.emitter.emit(&quot;_dataChanged&quot;)}}},{key:&quot;getSeed&quot;,value:function(){return this.initialRandomSeed}},{key:&quot;setupHierarchicalLayout&quot;,value:function(){if(!0===this.options.hierarchical.enabled&amp;&amp;this.body.nodeIndices.length&gt;0){var t,e,i=!1,n=!1;for(e in this.lastNodeOnLevel={},this.hierarchical=new rT,this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,e)&amp;&amp;(void 0!==(t=this.body.nodes[e]).options.level?(i=!0,this.hierarchical.levels[e]=t.options.level):n=!0);if(!0===n&amp;&amp;!0===i)throw new Error(&quot;To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.&quot;);if(!0===n){var o=this.options.hierarchical.sortMethod;&quot;hubsize&quot;===o?this._determineLevelsByHubsize():&quot;directed&quot;===o?this._determineLevelsDirected():&quot;custom&quot;===o&amp;&amp;this._determineLevelsCustomCallback()}for(var r in this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,r)&amp;&amp;this.hierarchical.ensureLevel(r);var s=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(s),this._condenseHierarchy(),this._shiftToCenter()}}},{key:&quot;_condenseHierarchy&quot;,value:function(){var t=this,e=!1,i={},n=function(e,i){var n=t.hierarchical.trees;for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&amp;&amp;n[o]===e&amp;&amp;t.direction.shift(o,i)},o=function(){for(var e=[],i=0;i&lt;t.hierarchical.numTrees();i++)e.push(t.direction.getTreeSize(i));return e},r=function e(i,n){if(!n[i.id]&amp;&amp;(n[i.id]=!0,t.hierarchical.childrenReference[i.id])){var o=t.hierarchical.childrenReference[i.id];if(o.length&gt;0)for(var r=0;r&lt;o.length;r++)e(t.body.nodes[o[r]],n)}},s=function(e){var i=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:1e9,n=1e9,o=1e9,r=1e9,s=-1e9;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var h=t.body.nodes[a],l=t.hierarchical.levels[h.id],d=t.direction.getPosition(h),c=t._getSpaceAroundNode(h,e),u=Kc(c,2),f=u[0],p=u[1];n=Math.min(f,n),o=Math.min(p,o),l&lt;=i&amp;&amp;(r=Math.min(d,r),s=Math.max(d,s))}return[r,s,n,o]},a=function(e,i){var n=t.hierarchical.getMaxLevel(e.id),o=t.hierarchical.getMaxLevel(i.id);return Math.min(n,o)},h=function(e,i,n){for(var o=t.hierarchical,r=0;r&lt;i.length;r++){var s=i[r],a=o.distributionOrdering[s];if(a.length&gt;1)for(var h=0;h&lt;a.length-1;h++){var l=a[h],d=a[h+1];o.hasSameParent(l,d)&amp;&amp;o.inSameSubNetwork(l,d)&amp;&amp;e(l,d,n)}}},l=function(i,n){var o=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],h=t.direction.getPosition(i),l=t.direction.getPosition(n),d=Math.abs(l-h),c=t.options.hierarchical.nodeSpacing;if(d&gt;c){var u={},f={};r(i,u),r(n,f);var p=a(i,n),v=s(u,p),g=s(f,p),y=v[1],m=g[0],b=g[2],w=Math.abs(y-m);if(w&gt;c){var k=y-m+c;k&lt;-b+c&amp;&amp;(k=-b+c),k&lt;0&amp;&amp;(t._shiftBlock(n.id,k),e=!0,!0===o&amp;&amp;t._centerParent(n))}}},d=function(n,o){for(var a=o.id,h=o.edges,l=t.hierarchical.levels[o.id],d=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},u=[],f=0;f&lt;h.length;f++){var p=h[f];if(p.toId!=p.fromId){var v=p.toId==a?p.from:p.to;c[h[f].id]=v,t.hierarchical.levels[v.id]&lt;l&amp;&amp;u.push(p)}}var g=function(e,i){for(var n=0,o=0;o&lt;i.length;o++)if(void 0!==c[i[o].id]){var r=t.direction.getPosition(c[i[o].id])-e;n+=r/Math.sqrt(r*r+d)}return n},y=function(e,i){for(var n=0,o=0;o&lt;i.length;o++)if(void 0!==c[i[o].id]){var r=t.direction.getPosition(c[i[o].id])-e;n-=d*Math.pow(r*r+d,-1.5)}return n},m=function(e,i){for(var n=t.direction.getPosition(o),r={},s=0;s&lt;e;s++){var a=g(n,i),h=y(n,i);if(void 0!==r[n-=Math.max(-40,Math.min(40,Math.round(a/h)))])break;r[n]=s}return n},b=m(n,u);!function(n){var a=t.direction.getPosition(o);if(void 0===i[o.id]){var h={};r(o,h),i[o.id]=h}var l=s(i[o.id]),d=l[2],c=l[3],u=n-a,f=0;u&gt;0?f=Math.min(u,c-t.options.hierarchical.nodeSpacing):u&lt;0&amp;&amp;(f=-Math.min(-u,d-t.options.hierarchical.nodeSpacing)),0!=f&amp;&amp;(t._shiftBlock(o.id,f),e=!0)}(b),function(i){var n=t.direction.getPosition(o),r=Kc(t._getSpaceAroundNode(o),2),s=r[0],a=r[1],h=i-n,l=n;h&gt;0?l=Math.min(n+(a-t.options.hierarchical.nodeSpacing),i):h&lt;0&amp;&amp;(l=Math.max(n-(s-t.options.hierarchical.nodeSpacing),i)),l!==n&amp;&amp;(t.direction.setPosition(o,l),e=!0)}(b=m(n,h))};!0===this.options.hierarchical.blockShifting&amp;&amp;(function(i){var n=t.hierarchical.getLevels();n=Yu(n).call(n);for(var o=0;o&lt;i&amp;&amp;(e=!1,h(l,n,!0),!0===e);o++);}(5),function(){for(var e in t.body.nodes)Object.prototype.hasOwnProperty.call(t.body.nodes,e)&amp;&amp;t._centerParent(t.body.nodes[e])}()),!0===this.options.hierarchical.edgeMinimization&amp;&amp;function(i){var n=t.hierarchical.getLevels();n=Yu(n).call(n);for(var o=0;o&lt;i;o++){e=!1;for(var r=0;r&lt;n.length;r++)for(var s=n[r],a=t.hierarchical.distributionOrdering[s],h=0;h&lt;a.length;h++)d(1e3,a[h]);if(!0!==e)break}}(20),!0===this.options.hierarchical.parentCentralization&amp;&amp;function(){var e=t.hierarchical.getLevels();e=Yu(e).call(e);for(var i=0;i&lt;e.length;i++)for(var n=e[i],o=t.hierarchical.distributionOrdering[n],r=0;r&lt;o.length;r++)t._centerParent(o[r])}(),function(){for(var e=o(),i=0,r=0;r&lt;e.length-1;r++){i+=e[r].max-e[r+1].min+t.options.hierarchical.treeSpacing,n(r+1,i)}}()}},{key:&quot;_getSpaceAroundNode&quot;,value:function(t,e){var i=!0;void 0===e&amp;&amp;(i=!1);var n=this.hierarchical.levels[t.id];if(void 0!==n){var o=this.hierarchical.distributionIndex[t.id],r=this.direction.getPosition(t),s=this.hierarchical.distributionOrdering[n],a=1e9,h=1e9;if(0!==o){var l=s[o-1];if(!0===i&amp;&amp;void 0===e[l.id]||!1===i)a=r-this.direction.getPosition(l)}if(o!=s.length-1){var d=s[o+1];if(!0===i&amp;&amp;void 0===e[d.id]||!1===i){var c=this.direction.getPosition(d);h=Math.min(h,c-r)}}return[a,h]}return[0,0]}},{key:&quot;_centerParent&quot;,value:function(t){if(this.hierarchical.parentReference[t.id])for(var e=this.hierarchical.parentReference[t.id],i=0;i&lt;e.length;i++){var n=e[i],o=this.body.nodes[n],r=this.hierarchical.childrenReference[n];if(void 0!==r){var s=this._getCenterPosition(r),a=this.direction.getPosition(o),h=Kc(this._getSpaceAroundNode(o),2),l=h[0],d=h[1],c=a-s;(c&lt;0&amp;&amp;Math.abs(c)&lt;d-this.options.hierarchical.nodeSpacing||c&gt;0&amp;&amp;Math.abs(c)&lt;l-this.options.hierarchical.nodeSpacing)&amp;&amp;this.direction.setPosition(o,s)}}}},{key:&quot;_placeNodesByHierarchy&quot;,value:function(t){for(var e in this.positionedNodes={},t)if(Object.prototype.hasOwnProperty.call(t,e)){var i,n=bu(t[e]);n=this._indexArrayToNodes(n),rx(i=this.direction).call(i,n);for(var o=0,r=0;r&lt;n.length;r++){var s=n[r];if(void 0===this.positionedNodes[s.id]){var a=this.options.hierarchical.nodeSpacing,h=a*o;o&gt;0&amp;&amp;(h=this.direction.getPosition(n[r-1])+a),this.direction.setPosition(s,h,e),this._validatePositionAndContinue(s,e,h),o++}}}}},{key:&quot;_placeBranchNodes&quot;,value:function(t,e){var i,n=this.hierarchical.childrenReference[t];if(void 0!==n){for(var o=[],r=0;r&lt;n.length;r++)o.push(this.body.nodes[n[r]]);rx(i=this.direction).call(i,o);for(var s=0;s&lt;o.length;s++){var a=o[s],h=this.hierarchical.levels[a.id];if(!(h&gt;e&amp;&amp;void 0===this.positionedNodes[a.id]))return;var l=this.options.hierarchical.nodeSpacing,d=void 0;d=0===s?this.direction.getPosition(this.body.nodes[t]):this.direction.getPosition(o[s-1])+l,this.direction.setPosition(a,d,h),this._validatePositionAndContinue(a,h,d)}var c=this._getCenterPosition(o);this.direction.setPosition(this.body.nodes[t],c,e)}}},{key:&quot;_validatePositionAndContinue&quot;,value:function(t,e,i){if(this.hierarchical.isTree){if(void 0!==this.lastNodeOnLevel[e]){var n=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[e]]);if(i-n&lt;this.options.hierarchical.nodeSpacing){var o=n+this.options.hierarchical.nodeSpacing-i,r=this._findCommonParent(this.lastNodeOnLevel[e],t.id);this._shiftBlock(r.withChild,o)}}this.lastNodeOnLevel[e]=t.id,this.positionedNodes[t.id]=!0,this._placeBranchNodes(t.id,e)}}},{key:&quot;_indexArrayToNodes&quot;,value:function(t){for(var e=[],i=0;i&lt;t.length;i++)e.push(this.body.nodes[t[i]]);return e}},{key:&quot;_getDistribution&quot;,value:function(){var t,e,i={};for(t in this.body.nodes)if(Object.prototype.hasOwnProperty.call(this.body.nodes,t)){e=this.body.nodes[t];var n=void 0===this.hierarchical.levels[t]?0:this.hierarchical.levels[t];this.direction.fix(e,n),void 0===i[n]&amp;&amp;(i[n]={}),i[n][t]=e}return i}},{key:&quot;_getActiveEdges&quot;,value:function(t){var e=this,i=[];return hm(t.edges,(function(t){var n;-1!==Fp(n=e.body.edgeIndices).call(n,t.id)&amp;&amp;i.push(t)})),i}},{key:&quot;_getHubSizes&quot;,value:function(){var t=this,e={};hm(this.body.nodeIndices,(function(i){var n=t.body.nodes[i],o=t._getActiveEdges(n).length;e[o]=!0}));var i=[];return hm(e,(function(t){i.push(Number(t))})),rx(qS).call(qS,i,(function(t,e){return e-t})),i}},{key:&quot;_determineLevelsByHubsize&quot;,value:function(){for(var t=this,e=function(e,i){t.hierarchical.levelDownstream(e,i)},i=this._getHubSizes(),n=function(n){var o=i[n];if(0===o)return&quot;break&quot;;hm(t.body.nodeIndices,(function(i){var n=t.body.nodes[i];o===t._getActiveEdges(n).length&amp;&amp;t._crawlNetwork(e,i)}))},o=0;o&lt;i.length;++o){if(&quot;break&quot;===n(o))break}}},{key:&quot;_determineLevelsCustomCallback&quot;,value:function(){var t=this;this._crawlNetwork((function(e,i,n){var o=t.hierarchical.levels[e.id];void 0===o&amp;&amp;(o=t.hierarchical.levels[e.id]=1e5);var r=(EC.cloneOptions(e,&quot;node&quot;),EC.cloneOptions(i,&quot;node&quot;),void EC.cloneOptions(n,&quot;edge&quot;));t.hierarchical.levels[i.id]=o+r})),this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:&quot;_determineLevelsDirected&quot;,value:function(){var t,e=this,i=i_(t=this.body.nodeIndices).call(t,(function(t,i){return t.set(i,e.body.nodes[i]),t}),new Jw);&quot;roots&quot;===this.options.hierarchical.shakeTowards?this.hierarchical.levels=function(t){return oT((function(e){var i,n;return tT(i=Xf(n=e.edges).call(n,(function(e){return t.has(e.toId)}))).call(i,(function(t){return t.from===e}))}),(function(t,e){return e&lt;t}),&quot;to&quot;,t)}(i):this.hierarchical.levels=function(t){return oT((function(e){var i,n;return tT(i=Xf(n=e.edges).call(n,(function(e){return t.has(e.toId)}))).call(i,(function(t){return t.to===e}))}),(function(t,e){return e&gt;t}),&quot;from&quot;,t)}(i),this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:&quot;_generateMap&quot;,value:function(){var t=this;this._crawlNetwork((function(e,i){t.hierarchical.levels[i.id]&gt;t.hierarchical.levels[e.id]&amp;&amp;t.hierarchical.addRelation(e.id,i.id)})),this.hierarchical.checkIfTree()}},{key:&quot;_crawlNetwork&quot;,value:function(){var t=this,e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:function(){},i=arguments.length&gt;1?arguments[1]:void 0,n={},o=function i(o,r){if(void 0===n[o.id]){var s;t.hierarchical.setTreeIndex(o,r),n[o.id]=!0;for(var a=t._getActiveEdges(o),h=0;h&lt;a.length;h++){var l=a[h];!0===l.connected&amp;&amp;(s=l.toId==o.id?l.from:l.to,o.id!=s.id&amp;&amp;(e(o,s,l),i(s,r)))}}};if(void 0===i)for(var r=0,s=0;s&lt;this.body.nodeIndices.length;s++){var a=this.body.nodeIndices[s];if(void 0===n[a]){var h=this.body.nodes[a];o(h,r),r+=1}}else{var l=this.body.nodes[i];if(void 0===l)return void console.error(&quot;Node not found:&quot;,i);o(l)}}},{key:&quot;_shiftBlock&quot;,value:function(t,e){var i=this,n={};!function t(o){if(!n[o]){n[o]=!0,i.direction.shift(o,e);var r=i.hierarchical.childrenReference[o];if(void 0!==r)for(var s=0;s&lt;r.length;s++)t(r[s])}}(t)}},{key:&quot;_findCommonParent&quot;,value:function(t,e){var i=this,n={};return function t(e,n){var o=i.hierarchical.parentReference[n];if(void 0!==o)for(var r=0;r&lt;o.length;r++){var s=o[r];e[s]=!0,t(e,s)}}(n,t),function t(e,n){var o=i.hierarchical.parentReference[n];if(void 0!==o)for(var r=0;r&lt;o.length;r++){var s=o[r];if(void 0!==e[s])return{foundParent:s,withChild:n};var a=t(e,s);if(null!==a.foundParent)return a}return{foundParent:null,withChild:n}}(n,e)}},{key:&quot;setDirectionStrategy&quot;,value:function(){var t=&quot;UD&quot;===this.options.hierarchical.direction||&quot;DU&quot;===this.options.hierarchical.direction;this.direction=t?new YS(this):new XS(this)}},{key:&quot;_getCenterPosition&quot;,value:function(t){for(var e=1e9,i=-1e9,n=0;n&lt;t.length;n++){var o=void 0;if(void 0!==t[n].id)o=t[n];else{var r=t[n];o=this.body.nodes[r]}var s=this.direction.getPosition(o);e=Math.min(e,s),i=Math.max(i,s)}return.5*(e+i)}}]),t}();function aT(t,e){var i=void 0!==tu&amp;&amp;ih(t)||t[&quot;@@iterator&quot;];if(!i){if(lu(t)||(i=function(t,e){var i;if(!t)return;if(&quot;string&quot;==typeof t)return hT(t,e);var n=au(i=Object.prototype.toString.call(t)).call(i,8,-1);&quot;Object&quot;===n&amp;&amp;t.constructor&amp;&amp;(n=t.constructor.name);if(&quot;Map&quot;===n||&quot;Set&quot;===n)return ja(t);if(&quot;Arguments&quot;===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return hT(t,e)}(t))||e&amp;&amp;t&amp;&amp;&quot;number&quot;==typeof t.length){i&amp;&amp;(t=i);var n=0,o=function(){};return{s:o,n:function(){return n&gt;=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError(&quot;Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.&quot;)}var r,s=!0,a=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return s=t.done,t},e:function(t){a=!0,r=t},f:function(){try{s||null==i.return||i.return()}finally{if(a)throw r}}}}function hT(t,e){(null==e||e&gt;t.length)&amp;&amp;(e=t.length);for(var i=0,n=new Array(e);i&lt;e;i++)n[i]=t[i];return n}var lT=function(){function t(e,i,n,o){var r,s,a=this;Yd(this,t),this.body=e,this.canvas=i,this.selectionHandler=n,this.interactionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._domEventListenerCleanupQueue=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:&quot;dot&quot;,size:6,color:{background:&quot;#ff0000&quot;,border:&quot;#3c3c3c&quot;,highlight:{background:&quot;#07f968&quot;,border:&quot;#3c3c3c&quot;}},borderWidth:2,borderWidthSelected:2}},un(this.options,this.defaultOptions),this.body.emitter.on(&quot;destroy&quot;,(function(){a._clean()})),this.body.emitter.on(&quot;_dataChanged&quot;,zn(r=this._restore).call(r,this)),this.body.emitter.on(&quot;_resetData&quot;,zn(s=this._restore).call(s,this))}return Kd(t,[{key:&quot;_restore&quot;,value:function(){!1!==this.inMode&amp;&amp;(!0===this.options.initiallyActive?this.enableEditMode():this.disableEditMode())}},{key:&quot;setOptions&quot;,value:function(t,e,i){void 0!==e&amp;&amp;(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&amp;&amp;(&quot;boolean&quot;==typeof t?this.options.enabled=t:(this.options.enabled=!0,nm(this.options,t)),!0===this.options.initiallyActive&amp;&amp;(this.editMode=!0),this._setup())}},{key:&quot;toggleEditMode&quot;,value:function(){!0===this.editMode?this.disableEditMode():this.enableEditMode()}},{key:&quot;enableEditMode&quot;,value:function(){this.editMode=!0,this._clean(),!0===this.guiEnabled&amp;&amp;(this.manipulationDiv.style.display=&quot;block&quot;,this.closeDiv.style.display=&quot;block&quot;,this.editModeDiv.style.display=&quot;none&quot;,this.showManipulatorToolbar())}},{key:&quot;disableEditMode&quot;,value:function(){this.editMode=!1,this._clean(),!0===this.guiEnabled&amp;&amp;(this.manipulationDiv.style.display=&quot;none&quot;,this.closeDiv.style.display=&quot;none&quot;,this.editModeDiv.style.display=&quot;block&quot;,this._createEditButton())}},{key:&quot;showManipulatorToolbar&quot;,value:function(){if(this._clean(),this.manipulationDOM={},!0===this.guiEnabled){var t,e;this.editMode=!0,this.manipulationDiv.style.display=&quot;block&quot;,this.closeDiv.style.display=&quot;block&quot;;var i=this.selectionHandler.getSelectedNodeCount(),n=this.selectionHandler.getSelectedEdgeCount(),o=i+n,r=this.options.locales[this.options.locale],s=!1;!1!==this.options.addNode&amp;&amp;(this._createAddNodeButton(r),s=!0),!1!==this.options.addEdge&amp;&amp;(!0===s?this._createSeperator(1):s=!0,this._createAddEdgeButton(r)),1===i&amp;&amp;&quot;function&quot;==typeof this.options.editNode?(!0===s?this._createSeperator(2):s=!0,this._createEditNodeButton(r)):1===n&amp;&amp;0===i&amp;&amp;!1!==this.options.editEdge&amp;&amp;(!0===s?this._createSeperator(3):s=!0,this._createEditEdgeButton(r)),0!==o&amp;&amp;(i&gt;0&amp;&amp;!1!==this.options.deleteNode||0===i&amp;&amp;!1!==this.options.deleteEdge)&amp;&amp;(!0===s&amp;&amp;this._createSeperator(4),this._createDeleteButton(r)),this._bindElementEvents(this.closeDiv,zn(t=this.toggleEditMode).call(t,this)),this._temporaryBindEvent(&quot;select&quot;,zn(e=this.showManipulatorToolbar).call(e,this))}this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;addNodeMode&quot;,value:function(){var t;if(!0!==this.editMode&amp;&amp;this.enableEditMode(),this._clean(),this.inMode=&quot;addNode&quot;,!0===this.guiEnabled){var e,i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.addDescription||this.options.locales.en.addDescription),this._bindElementEvents(this.closeDiv,zn(e=this.toggleEditMode).call(e,this))}this._temporaryBindEvent(&quot;click&quot;,zn(t=this._performAddNode).call(t,this))}},{key:&quot;editNode&quot;,value:function(){var t=this;!0!==this.editMode&amp;&amp;this.enableEditMode(),this._clean();var e=this.selectionHandler.getSelectedNodes()[0];if(void 0!==e){if(this.inMode=&quot;editNode&quot;,&quot;function&quot;!=typeof this.options.editNode)throw new Error(&quot;No function has been configured to handle the editing of nodes.&quot;);if(!0!==e.isCluster){var i=nm({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error(&quot;The function for edit does not support two arguments (data, callback)&quot;);this.options.editNode(i,(function(e){null!=e&amp;&amp;&quot;editNode&quot;===t.inMode&amp;&amp;t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()}))}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:&quot;addEdgeMode&quot;,value:function(){var t,e,i,n,o;if(!0!==this.editMode&amp;&amp;this.enableEditMode(),this._clean(),this.inMode=&quot;addEdge&quot;,!0===this.guiEnabled){var r,s=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(s),this._createSeperator(),this._createDescription(s.edgeDescription||this.options.locales.en.edgeDescription),this._bindElementEvents(this.closeDiv,zn(r=this.toggleEditMode).call(r,this))}this._temporaryBindUI(&quot;onTouch&quot;,zn(t=this._handleConnect).call(t,this)),this._temporaryBindUI(&quot;onDragEnd&quot;,zn(e=this._finishConnect).call(e,this)),this._temporaryBindUI(&quot;onDrag&quot;,zn(i=this._dragControlNode).call(i,this)),this._temporaryBindUI(&quot;onRelease&quot;,zn(n=this._finishConnect).call(n,this)),this._temporaryBindUI(&quot;onDragStart&quot;,zn(o=this._dragStartEdge).call(o,this)),this._temporaryBindUI(&quot;onHold&quot;,(function(){}))}},{key:&quot;editEdgeMode&quot;,value:function(){if(!0!==this.editMode&amp;&amp;this.enableEditMode(),this._clean(),this.inMode=&quot;editEdge&quot;,&quot;object&quot;!==Qc(this.options.editEdge)||&quot;function&quot;!=typeof this.options.editEdge.editWithoutDrag||(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],void 0===this.edgeBeingEditedId)){if(!0===this.guiEnabled){var t,e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindElementEvents(this.closeDiv,zn(t=this.toggleEditMode).call(t,this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdgeIds()[0],void 0!==this.edgeBeingEditedId){var i,n,o,r,s=this.body.edges[this.edgeBeingEditedId],a=this._getNewTargetNode(s.from.x,s.from.y),h=this._getNewTargetNode(s.to.x,s.to.y);this.temporaryIds.nodes.push(a.id),this.temporaryIds.nodes.push(h.id),this.body.nodes[a.id]=a,this.body.nodeIndices.push(a.id),this.body.nodes[h.id]=h,this.body.nodeIndices.push(h.id),this._temporaryBindUI(&quot;onTouch&quot;,zn(i=this._controlNodeTouch).call(i,this)),this._temporaryBindUI(&quot;onTap&quot;,(function(){})),this._temporaryBindUI(&quot;onHold&quot;,(function(){})),this._temporaryBindUI(&quot;onDragStart&quot;,zn(n=this._controlNodeDragStart).call(n,this)),this._temporaryBindUI(&quot;onDrag&quot;,zn(o=this._controlNodeDrag).call(o,this)),this._temporaryBindUI(&quot;onDragEnd&quot;,zn(r=this._controlNodeDragEnd).call(r,this)),this._temporaryBindUI(&quot;onMouseMove&quot;,(function(){})),this._temporaryBindEvent(&quot;beforeDrawing&quot;,(function(t){var e=s.edgeType.findBorderPositions(t);!1===a.selected&amp;&amp;(a.x=e.from.x,a.y=e.from.y),!1===h.selected&amp;&amp;(h.x=e.to.x,h.y=e.to.y)})),this.body.emitter.emit(&quot;_redraw&quot;)}else this.showManipulatorToolbar()}else{var l=this.body.edges[this.edgeBeingEditedId];this._performEditEdge(l.from.id,l.to.id)}}},{key:&quot;deleteSelected&quot;,value:function(){var t=this;!0!==this.editMode&amp;&amp;this.enableEditMode(),this._clean(),this.inMode=&quot;delete&quot;;var e=this.selectionHandler.getSelectedNodeIds(),i=this.selectionHandler.getSelectedEdgeIds(),n=void 0;if(e.length&gt;0){for(var o=0;o&lt;e.length;o++)if(!0===this.body.nodes[e[o]].isCluster)return void alert(this.options.locales[this.options.locale].deleteClusterError||this.options.locales.en.deleteClusterError);&quot;function&quot;==typeof this.options.deleteNode&amp;&amp;(n=this.options.deleteNode)}else i.length&gt;0&amp;&amp;&quot;function&quot;==typeof this.options.deleteEdge&amp;&amp;(n=this.options.deleteEdge);if(&quot;function&quot;==typeof n){var r={nodes:e,edges:i};if(2!==n.length)throw new Error(&quot;The function for delete does not support two arguments (data, callback)&quot;);n(r,(function(e){null!=e&amp;&amp;&quot;delete&quot;===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit(&quot;startSimulation&quot;),t.showManipulatorToolbar()):(t.body.emitter.emit(&quot;startSimulation&quot;),t.showManipulatorToolbar())}))}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit(&quot;startSimulation&quot;),this.showManipulatorToolbar()}},{key:&quot;_setup&quot;,value:function(){!0===this.options.enabled?(this.guiEnabled=!0,this._createWrappers(),!1===this.editMode?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:&quot;_createWrappers&quot;,value:function(){var t,e;(void 0===this.manipulationDiv&amp;&amp;(this.manipulationDiv=document.createElement(&quot;div&quot;),this.manipulationDiv.className=&quot;vis-manipulation&quot;,!0===this.editMode?this.manipulationDiv.style.display=&quot;block&quot;:this.manipulationDiv.style.display=&quot;none&quot;,this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&amp;&amp;(this.editModeDiv=document.createElement(&quot;div&quot;),this.editModeDiv.className=&quot;vis-edit-mode&quot;,!0===this.editMode?this.editModeDiv.style.display=&quot;none&quot;:this.editModeDiv.style.display=&quot;block&quot;,this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv)&amp;&amp;(this.closeDiv=document.createElement(&quot;button&quot;),this.closeDiv.className=&quot;vis-close&quot;,this.closeDiv.setAttribute(&quot;aria-label&quot;,null!==(t=null===(e=this.options.locales[this.options.locale])||void 0===e?void 0:e.close)&amp;&amp;void 0!==t?t:this.options.locales.en.close),this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:&quot;_getNewTargetNode&quot;,value:function(t,e){var i=nm({},this.options.controlNodeStyle);i.id=&quot;targetNode&quot;+Ax(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var n=this.body.functions.createNode(i);return n.shape.boundingBox={left:t,right:t,top:e,bottom:e},n}},{key:&quot;_createEditButton&quot;,value:function(){var t;this._clean(),this.manipulationDOM={},Ky(this.editModeDiv);var e=this.options.locales[this.options.locale],i=this._createButton(&quot;editMode&quot;,&quot;vis-edit vis-edit-mode&quot;,e.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(i),this._bindElementEvents(i,zn(t=this.toggleEditMode).call(t,this))}},{key:&quot;_clean&quot;,value:function(){this.inMode=!1,!0===this.guiEnabled&amp;&amp;(Ky(this.editModeDiv),Ky(this.manipulationDiv),this._cleanupDOMEventListeners()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit(&quot;restorePhysics&quot;)}},{key:&quot;_cleanupDOMEventListeners&quot;,value:function(){var t,e,i=aT(ff(t=this._domEventListenerCleanupQueue).call(t,0));try{for(i.s();!(e=i.n()).done;){(0,e.value)()}}catch(t){i.e(t)}finally{i.f()}}},{key:&quot;_removeManipulationDOM&quot;,value:function(){this._clean(),Ky(this.manipulationDiv),Ky(this.editModeDiv),Ky(this.closeDiv),this.manipulationDiv&amp;&amp;this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&amp;&amp;this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&amp;&amp;this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}},{key:&quot;_createSeperator&quot;,value:function(){var t=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM[&quot;seperatorLineDiv&quot;+t]=document.createElement(&quot;div&quot;),this.manipulationDOM[&quot;seperatorLineDiv&quot;+t].className=&quot;vis-separator-line&quot;,this.manipulationDiv.appendChild(this.manipulationDOM[&quot;seperatorLineDiv&quot;+t])}},{key:&quot;_createAddNodeButton&quot;,value:function(t){var e,i=this._createButton(&quot;addNode&quot;,&quot;vis-add&quot;,t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,zn(e=this.addNodeMode).call(e,this))}},{key:&quot;_createAddEdgeButton&quot;,value:function(t){var e,i=this._createButton(&quot;addEdge&quot;,&quot;vis-connect&quot;,t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,zn(e=this.addEdgeMode).call(e,this))}},{key:&quot;_createEditNodeButton&quot;,value:function(t){var e,i=this._createButton(&quot;editNode&quot;,&quot;vis-edit&quot;,t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,zn(e=this.editNode).call(e,this))}},{key:&quot;_createEditEdgeButton&quot;,value:function(t){var e,i=this._createButton(&quot;editEdge&quot;,&quot;vis-edit&quot;,t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,zn(e=this.editEdgeMode).call(e,this))}},{key:&quot;_createDeleteButton&quot;,value:function(t){var e,i;i=this.options.rtl?&quot;vis-delete-rtl&quot;:&quot;vis-delete&quot;;var n=this._createButton(&quot;delete&quot;,i,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(n),this._bindElementEvents(n,zn(e=this.deleteSelected).call(e,this))}},{key:&quot;_createBackButton&quot;,value:function(t){var e,i=this._createButton(&quot;back&quot;,&quot;vis-back&quot;,t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(i),this._bindElementEvents(i,zn(e=this.showManipulatorToolbar).call(e,this))}},{key:&quot;_createButton&quot;,value:function(t,e,i){var n=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:&quot;vis-label&quot;;return this.manipulationDOM[t+&quot;Div&quot;]=document.createElement(&quot;button&quot;),this.manipulationDOM[t+&quot;Div&quot;].className=&quot;vis-button &quot;+e,this.manipulationDOM[t+&quot;Label&quot;]=document.createElement(&quot;div&quot;),this.manipulationDOM[t+&quot;Label&quot;].className=n,this.manipulationDOM[t+&quot;Label&quot;].innerText=i,this.manipulationDOM[t+&quot;Div&quot;].appendChild(this.manipulationDOM[t+&quot;Label&quot;]),this.manipulationDOM[t+&quot;Div&quot;]}},{key:&quot;_createDescription&quot;,value:function(t){this.manipulationDOM.descriptionLabel=document.createElement(&quot;div&quot;),this.manipulationDOM.descriptionLabel.className=&quot;vis-none&quot;,this.manipulationDOM.descriptionLabel.innerText=t,this.manipulationDiv.appendChild(this.manipulationDOM.descriptionLabel)}},{key:&quot;_temporaryBindEvent&quot;,value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:&quot;_temporaryBindUI&quot;,value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error(&quot;This UI function does not exist. Typo? You tried: &quot;+t+&quot; possible are: &quot;+gv(bu(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:&quot;_unbindTemporaryUIs&quot;,value:function(){for(var t in this.temporaryUIFunctions)Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions,t)&amp;&amp;(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:&quot;_unbindTemporaryEvents&quot;,value:function(){for(var t=0;t&lt;this.temporaryEventFunctions.length;t++){var e=this.temporaryEventFunctions[t].event,i=this.temporaryEventFunctions[t].boundFunction;this.body.emitter.off(e,i)}this.temporaryEventFunctions=[]}},{key:&quot;_bindElementEvents&quot;,value:function(t,e){var i=new Wm(t,{});IC(i,e),this._domEventListenerCleanupQueue.push((function(){i.destroy()}));var n=function(t){var i=t.keyCode,n=t.key;&quot;Enter&quot;!==n&amp;&amp;&quot; &quot;!==n&amp;&amp;13!==i&amp;&amp;32!==i||e()};t.addEventListener(&quot;keyup&quot;,n,!1),this._domEventListenerCleanupQueue.push((function(){t.removeEventListener(&quot;keyup&quot;,n,!1)}))}},{key:&quot;_cleanupTemporaryNodesAndEdges&quot;,value:function(){for(var t=0;t&lt;this.temporaryIds.edges.length;t++){var e;this.body.edges[this.temporaryIds.edges[t]].disconnect(),delete this.body.edges[this.temporaryIds.edges[t]];var i,n=Fp(e=this.body.edgeIndices).call(e,this.temporaryIds.edges[t]);if(-1!==n)ff(i=this.body.edgeIndices).call(i,n,1)}for(var o=0;o&lt;this.temporaryIds.nodes.length;o++){var r;delete this.body.nodes[this.temporaryIds.nodes[o]];var s,a=Fp(r=this.body.nodeIndices).call(r,this.temporaryIds.nodes[o]);if(-1!==a)ff(s=this.body.nodeIndices).call(s,a,1)}this.temporaryIds={nodes:[],edges:[]}}},{key:&quot;_controlNodeTouch&quot;,value:function(t){this.selectionHandler.unselectAll(),this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=un({},this.body.view.translation)}},{key:&quot;_controlNodeDragStart&quot;,value:function(){var t=this.lastTouch,e=this.selectionHandler._pointerToPositionObject(t),i=this.body.nodes[this.temporaryIds.nodes[0]],n=this.body.nodes[this.temporaryIds.nodes[1]],o=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=void 0;var r=i.isOverlappingWith(e),s=n.isOverlappingWith(e);!0===r?(this.selectedControlNode=i,o.edgeType.from=i):!0===s&amp;&amp;(this.selectedControlNode=n,o.edgeType.to=n),void 0!==this.selectedControlNode&amp;&amp;this.selectionHandler.selectObject(this.selectedControlNode),this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;_controlNodeDrag&quot;,value:function(t){this.body.emitter.emit(&quot;disablePhysics&quot;);var e=this.body.functions.getPointer(t.center),i=this.canvas.DOMtoCanvas(e);void 0!==this.selectedControlNode?(this.selectedControlNode.x=i.x,this.selectedControlNode.y=i.y):this.interactionHandler.onDrag(t),this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;_controlNodeDragEnd&quot;,value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),n=this.body.edges[this.edgeBeingEditedId];if(void 0!==this.selectedControlNode){this.selectionHandler.unselectAll();for(var o=this.selectionHandler._getAllNodesOverlappingWith(i),r=void 0,s=o.length-1;s&gt;=0;s--)if(o[s]!==this.selectedControlNode.id){r=this.body.nodes[o[s]];break}if(void 0!==r&amp;&amp;void 0!==this.selectedControlNode)if(!0===r.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(r.id,n.to.id):this._performEditEdge(n.from.id,r.id)}else n.updateEdgeType(),this.body.emitter.emit(&quot;restorePhysics&quot;);this.body.emitter.emit(&quot;_redraw&quot;)}}},{key:&quot;_handleConnect&quot;,value:function(t){if((new Date).valueOf()-this.touchTime&gt;100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=un({},this.body.view.translation),this.interactionHandler.drag.pointer=this.lastTouch,this.interactionHandler.drag.translation=this.lastTouch.translation;var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(!0===i.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var n=this._getNewTargetNode(i.x,i.y);this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id);var o=this.body.functions.createEdge({id:&quot;connectionEdge&quot;+Ax(),from:i.id,to:n.id,physics:!1,smooth:{enabled:!0,type:&quot;continuous&quot;,roundness:.5}});this.body.edges[o.id]=o,this.body.edgeIndices.push(o.id),this.temporaryIds.nodes.push(n.id),this.temporaryIds.edges.push(o.id)}this.touchTime=(new Date).valueOf()}}},{key:&quot;_dragControlNode&quot;,value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),n=void 0;void 0!==this.temporaryIds.edges[0]&amp;&amp;(n=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var o=this.selectionHandler._getAllNodesOverlappingWith(i),r=void 0,s=o.length-1;s&gt;=0;s--){var a;if(-1===Fp(a=this.temporaryIds.nodes).call(a,o[s])){r=this.body.nodes[o[s]];break}}if(t.controlEdge={from:n,to:r?r.id:void 0},this.selectionHandler.generateClickEvent(&quot;controlNodeDragging&quot;,t,e),void 0!==this.temporaryIds.nodes[0]){var h=this.body.nodes[this.temporaryIds.nodes[0]];h.x=this.canvas._XconvertDOMtoCanvas(e.x),h.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit(&quot;_redraw&quot;)}else this.interactionHandler.onDrag(t)}},{key:&quot;_finishConnect&quot;,value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),n=void 0;void 0!==this.temporaryIds.edges[0]&amp;&amp;(n=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var o=this.selectionHandler._getAllNodesOverlappingWith(i),r=void 0,s=o.length-1;s&gt;=0;s--){var a;if(-1===Fp(a=this.temporaryIds.nodes).call(a,o[s])){r=this.body.nodes[o[s]];break}}this._cleanupTemporaryNodesAndEdges(),void 0!==r&amp;&amp;(!0===r.isCluster?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[n]&amp;&amp;void 0!==this.body.nodes[r.id]&amp;&amp;this._performAddEdge(n,r.id)),t.controlEdge={from:n,to:r?r.id:void 0},this.selectionHandler.generateClickEvent(&quot;controlNodeDragEnd&quot;,t,e),this.body.emitter.emit(&quot;_redraw&quot;)}},{key:&quot;_dragStartEdge&quot;,value:function(t){var e=this.lastTouch;this.selectionHandler.generateClickEvent(&quot;dragStart&quot;,t,e,void 0,!0)}},{key:&quot;_performAddNode&quot;,value:function(t){var e=this,i={id:Ax(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:&quot;new&quot;};if(&quot;function&quot;==typeof this.options.addNode){if(2!==this.options.addNode.length)throw this.showManipulatorToolbar(),new Error(&quot;The function for add does not support two arguments (data,callback)&quot;);this.options.addNode(i,(function(t){null!=t&amp;&amp;&quot;addNode&quot;===e.inMode&amp;&amp;e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar()}))}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:&quot;_performAddEdge&quot;,value:function(t,e){var i=this,n={from:t,to:e};if(&quot;function&quot;==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error(&quot;The function for connect does not support two arguments (data,callback)&quot;);this.options.addEdge(n,(function(t){null!=t&amp;&amp;&quot;addEdge&quot;===i.inMode&amp;&amp;(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())}))}else this.body.data.edges.getDataSet().add(n),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:&quot;_performEditEdge&quot;,value:function(t,e){var i=this,n={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges.get(this.edgeBeingEditedId).label},o=this.options.editEdge;if(&quot;object&quot;===Qc(o)&amp;&amp;(o=o.editWithoutDrag),&quot;function&quot;==typeof o){if(2!==o.length)throw new Error(&quot;The function for edit does not support two arguments (data, callback)&quot;);o(n,(function(t){null==t||&quot;editEdge&quot;!==i.inMode?(i.body.edges[n.id].updateEdgeType(),i.body.emitter.emit(&quot;_redraw&quot;),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())}))}else this.body.data.edges.getDataSet().update(n),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}(),dT=&quot;string&quot;,cT=&quot;boolean&quot;,uT=&quot;number&quot;,fT=&quot;array&quot;,pT=&quot;object&quot;,vT=[&quot;arrow&quot;,&quot;bar&quot;,&quot;box&quot;,&quot;circle&quot;,&quot;crow&quot;,&quot;curve&quot;,&quot;diamond&quot;,&quot;image&quot;,&quot;inv_curve&quot;,&quot;inv_triangle&quot;,&quot;triangle&quot;,&quot;vee&quot;],gT={borderWidth:{number:uT},borderWidthSelected:{number:uT,undefined:&quot;undefined&quot;},brokenImage:{string:dT,undefined:&quot;undefined&quot;},chosen:{label:{boolean:cT,function:&quot;function&quot;},node:{boolean:cT,function:&quot;function&quot;},__type__:{object:pT,boolean:cT}},color:{border:{string:dT},background:{string:dT},highlight:{border:{string:dT},background:{string:dT},__type__:{object:pT,string:dT}},hover:{border:{string:dT},background:{string:dT},__type__:{object:pT,string:dT}},__type__:{object:pT,string:dT}},opacity:{number:uT,undefined:&quot;undefined&quot;},fixed:{x:{boolean:cT},y:{boolean:cT},__type__:{object:pT,boolean:cT}},font:{align:{string:dT},color:{string:dT},size:{number:uT},face:{string:dT},background:{string:dT},strokeWidth:{number:uT},strokeColor:{string:dT},vadjust:{number:uT},multi:{boolean:cT,string:dT},bold:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},boldital:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},ital:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},mono:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},__type__:{object:pT,string:dT}},group:{string:dT,number:uT,undefined:&quot;undefined&quot;},heightConstraint:{minimum:{number:uT},valign:{string:dT},__type__:{object:pT,boolean:cT,number:uT}},hidden:{boolean:cT},icon:{face:{string:dT},code:{string:dT},size:{number:uT},color:{string:dT},weight:{string:dT,number:uT},__type__:{object:pT}},id:{string:dT,number:uT},image:{selected:{string:dT,undefined:&quot;undefined&quot;},unselected:{string:dT,undefined:&quot;undefined&quot;},__type__:{object:pT,string:dT}},imagePadding:{top:{number:uT},right:{number:uT},bottom:{number:uT},left:{number:uT},__type__:{object:pT,number:uT}},label:{string:dT,undefined:&quot;undefined&quot;},labelHighlightBold:{boolean:cT},level:{number:uT,undefined:&quot;undefined&quot;},margin:{top:{number:uT},right:{number:uT},bottom:{number:uT},left:{number:uT},__type__:{object:pT,number:uT}},mass:{number:uT},physics:{boolean:cT},scaling:{min:{number:uT},max:{number:uT},label:{enabled:{boolean:cT},min:{number:uT},max:{number:uT},maxVisible:{number:uT},drawThreshold:{number:uT},__type__:{object:pT,boolean:cT}},customScalingFunction:{function:&quot;function&quot;},__type__:{object:pT}},shadow:{enabled:{boolean:cT},color:{string:dT},size:{number:uT},x:{number:uT},y:{number:uT},__type__:{object:pT,boolean:cT}},shape:{string:[&quot;custom&quot;,&quot;ellipse&quot;,&quot;circle&quot;,&quot;database&quot;,&quot;box&quot;,&quot;text&quot;,&quot;image&quot;,&quot;circularImage&quot;,&quot;diamond&quot;,&quot;dot&quot;,&quot;star&quot;,&quot;triangle&quot;,&quot;triangleDown&quot;,&quot;square&quot;,&quot;icon&quot;,&quot;hexagon&quot;]},ctxRenderer:{function:&quot;function&quot;},shapeProperties:{borderDashes:{boolean:cT,array:fT},borderRadius:{number:uT},interpolation:{boolean:cT},useImageSize:{boolean:cT},useBorderWithImage:{boolean:cT},coordinateOrigin:{string:[&quot;center&quot;,&quot;top-left&quot;]},__type__:{object:pT}},size:{number:uT},title:{string:dT,dom:&quot;dom&quot;,undefined:&quot;undefined&quot;},value:{number:uT,undefined:&quot;undefined&quot;},widthConstraint:{minimum:{number:uT},maximum:{number:uT},__type__:{object:pT,boolean:cT,number:uT}},x:{number:uT},y:{number:uT},__type__:{object:pT}},yT={configure:{enabled:{boolean:cT},filter:{boolean:cT,string:dT,array:fT,function:&quot;function&quot;},container:{dom:&quot;dom&quot;},showButton:{boolean:cT},__type__:{object:pT,boolean:cT,string:dT,array:fT,function:&quot;function&quot;}},edges:{arrows:{to:{enabled:{boolean:cT},scaleFactor:{number:uT},type:{string:vT},imageHeight:{number:uT},imageWidth:{number:uT},src:{string:dT},__type__:{object:pT,boolean:cT}},middle:{enabled:{boolean:cT},scaleFactor:{number:uT},type:{string:vT},imageWidth:{number:uT},imageHeight:{number:uT},src:{string:dT},__type__:{object:pT,boolean:cT}},from:{enabled:{boolean:cT},scaleFactor:{number:uT},type:{string:vT},imageWidth:{number:uT},imageHeight:{number:uT},src:{string:dT},__type__:{object:pT,boolean:cT}},__type__:{string:[&quot;from&quot;,&quot;to&quot;,&quot;middle&quot;],object:pT}},endPointOffset:{from:{number:uT},to:{number:uT},__type__:{object:pT,number:uT}},arrowStrikethrough:{boolean:cT},background:{enabled:{boolean:cT},color:{string:dT},size:{number:uT},dashes:{boolean:cT,array:fT},__type__:{object:pT,boolean:cT}},chosen:{label:{boolean:cT,function:&quot;function&quot;},edge:{boolean:cT,function:&quot;function&quot;},__type__:{object:pT,boolean:cT}},color:{color:{string:dT},highlight:{string:dT},hover:{string:dT},inherit:{string:[&quot;from&quot;,&quot;to&quot;,&quot;both&quot;],boolean:cT},opacity:{number:uT},__type__:{object:pT,string:dT}},dashes:{boolean:cT,array:fT},font:{color:{string:dT},size:{number:uT},face:{string:dT},background:{string:dT},strokeWidth:{number:uT},strokeColor:{string:dT},align:{string:[&quot;horizontal&quot;,&quot;top&quot;,&quot;middle&quot;,&quot;bottom&quot;]},vadjust:{number:uT},multi:{boolean:cT,string:dT},bold:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},boldital:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},ital:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},mono:{color:{string:dT},size:{number:uT},face:{string:dT},mod:{string:dT},vadjust:{number:uT},__type__:{object:pT,string:dT}},__type__:{object:pT,string:dT}},hidden:{boolean:cT},hoverWidth:{function:&quot;function&quot;,number:uT},label:{string:dT,undefined:&quot;undefined&quot;},labelHighlightBold:{boolean:cT},length:{number:uT,undefined:&quot;undefined&quot;},physics:{boolean:cT},scaling:{min:{number:uT},max:{number:uT},label:{enabled:{boolean:cT},min:{number:uT},max:{number:uT},maxVisible:{number:uT},drawThreshold:{number:uT},__type__:{object:pT,boolean:cT}},customScalingFunction:{function:&quot;function&quot;},__type__:{object:pT}},selectionWidth:{function:&quot;function&quot;,number:uT},selfReferenceSize:{number:uT},selfReference:{size:{number:uT},angle:{number:uT},renderBehindTheNode:{boolean:cT},__type__:{object:pT}},shadow:{enabled:{boolean:cT},color:{string:dT},size:{number:uT},x:{number:uT},y:{number:uT},__type__:{object:pT,boolean:cT}},smooth:{enabled:{boolean:cT},type:{string:[&quot;dynamic&quot;,&quot;continuous&quot;,&quot;discrete&quot;,&quot;diagonalCross&quot;,&quot;straightCross&quot;,&quot;horizontal&quot;,&quot;vertical&quot;,&quot;curvedCW&quot;,&quot;curvedCCW&quot;,&quot;cubicBezier&quot;]},roundness:{number:uT},forceDirection:{string:[&quot;horizontal&quot;,&quot;vertical&quot;,&quot;none&quot;],boolean:cT},__type__:{object:pT,boolean:cT}},title:{string:dT,undefined:&quot;undefined&quot;},width:{number:uT},widthConstraint:{maximum:{number:uT},__type__:{object:pT,boolean:cT,number:uT}},value:{number:uT,undefined:&quot;undefined&quot;},__type__:{object:pT}},groups:{useDefaultGroups:{boolean:cT},__any__:gT,__type__:{object:pT}},interaction:{dragNodes:{boolean:cT},dragView:{boolean:cT},hideEdgesOnDrag:{boolean:cT},hideEdgesOnZoom:{boolean:cT},hideNodesOnDrag:{boolean:cT},hover:{boolean:cT},keyboard:{enabled:{boolean:cT},speed:{x:{number:uT},y:{number:uT},zoom:{number:uT},__type__:{object:pT}},bindToWindow:{boolean:cT},autoFocus:{boolean:cT},__type__:{object:pT,boolean:cT}},multiselect:{boolean:cT},navigationButtons:{boolean:cT},selectable:{boolean:cT},selectConnectedEdges:{boolean:cT},hoverConnectedEdges:{boolean:cT},tooltipDelay:{number:uT},zoomView:{boolean:cT},zoomSpeed:{number:uT},__type__:{object:pT}},layout:{randomSeed:{undefined:&quot;undefined&quot;,number:uT,string:dT},improvedLayout:{boolean:cT},clusterThreshold:{number:uT},hierarchical:{enabled:{boolean:cT},levelSeparation:{number:uT},nodeSpacing:{number:uT},treeSpacing:{number:uT},blockShifting:{boolean:cT},edgeMinimization:{boolean:cT},parentCentralization:{boolean:cT},direction:{string:[&quot;UD&quot;,&quot;DU&quot;,&quot;LR&quot;,&quot;RL&quot;]},sortMethod:{string:[&quot;hubsize&quot;,&quot;directed&quot;]},shakeTowards:{string:[&quot;leaves&quot;,&quot;roots&quot;]},__type__:{object:pT,boolean:cT}},__type__:{object:pT}},manipulation:{enabled:{boolean:cT},initiallyActive:{boolean:cT},addNode:{boolean:cT,function:&quot;function&quot;},addEdge:{boolean:cT,function:&quot;function&quot;},editNode:{function:&quot;function&quot;},editEdge:{editWithoutDrag:{function:&quot;function&quot;},__type__:{object:pT,boolean:cT,function:&quot;function&quot;}},deleteNode:{boolean:cT,function:&quot;function&quot;},deleteEdge:{boolean:cT,function:&quot;function&quot;},controlNodeStyle:gT,__type__:{object:pT,boolean:cT}},nodes:gT,physics:{enabled:{boolean:cT},barnesHut:{theta:{number:uT},gravitationalConstant:{number:uT},centralGravity:{number:uT},springLength:{number:uT},springConstant:{number:uT},damping:{number:uT},avoidOverlap:{number:uT},__type__:{object:pT}},forceAtlas2Based:{theta:{number:uT},gravitationalConstant:{number:uT},centralGravity:{number:uT},springLength:{number:uT},springConstant:{number:uT},damping:{number:uT},avoidOverlap:{number:uT},__type__:{object:pT}},repulsion:{centralGravity:{number:uT},springLength:{number:uT},springConstant:{number:uT},nodeDistance:{number:uT},damping:{number:uT},__type__:{object:pT}},hierarchicalRepulsion:{centralGravity:{number:uT},springLength:{number:uT},springConstant:{number:uT},nodeDistance:{number:uT},damping:{number:uT},avoidOverlap:{number:uT},__type__:{object:pT}},maxVelocity:{number:uT},minVelocity:{number:uT},solver:{string:[&quot;barnesHut&quot;,&quot;repulsion&quot;,&quot;hierarchicalRepulsion&quot;,&quot;forceAtlas2Based&quot;]},stabilization:{enabled:{boolean:cT},iterations:{number:uT},updateInterval:{number:uT},onlyDynamicEdges:{boolean:cT},fit:{boolean:cT},__type__:{object:pT,boolean:cT}},timestep:{number:uT},adaptiveTimestep:{boolean:cT},wind:{x:{number:uT},y:{number:uT},__type__:{object:pT}},__type__:{object:pT,boolean:cT}},autoResize:{boolean:cT},clickToUse:{boolean:cT},locale:{string:dT},locales:{__any__:{any:&quot;any&quot;},__type__:{object:pT}},height:{string:dT},width:{string:dT},__type__:{object:pT}},mT={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:[&quot;color&quot;,&quot;#2B7CE9&quot;],background:[&quot;color&quot;,&quot;#97C2FC&quot;],highlight:{border:[&quot;color&quot;,&quot;#2B7CE9&quot;],background:[&quot;color&quot;,&quot;#D2E5FF&quot;]},hover:{border:[&quot;color&quot;,&quot;#2B7CE9&quot;],background:[&quot;color&quot;,&quot;#D2E5FF&quot;]}},opacity:[0,0,1,.1],fixed:{x:!1,y:!1},font:{color:[&quot;color&quot;,&quot;#343434&quot;],size:[14,0,100,1],face:[&quot;arial&quot;,&quot;verdana&quot;,&quot;tahoma&quot;],background:[&quot;color&quot;,&quot;none&quot;],strokeWidth:[0,0,50,1],strokeColor:[&quot;color&quot;,&quot;#ffffff&quot;]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:&quot;rgba(0,0,0,0.5)&quot;,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:[&quot;ellipse&quot;,&quot;box&quot;,&quot;circle&quot;,&quot;database&quot;,&quot;diamond&quot;,&quot;dot&quot;,&quot;square&quot;,&quot;star&quot;,&quot;text&quot;,&quot;triangle&quot;,&quot;triangleDown&quot;,&quot;hexagon&quot;],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:&quot;arrow&quot;},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:&quot;arrow&quot;},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:&quot;arrow&quot;}},endPointOffset:{from:[0,-10,10,1],to:[0,-10,10,1]},arrowStrikethrough:!0,color:{color:[&quot;color&quot;,&quot;#848484&quot;],highlight:[&quot;color&quot;,&quot;#848484&quot;],hover:[&quot;color&quot;,&quot;#848484&quot;],inherit:[&quot;from&quot;,&quot;to&quot;,&quot;both&quot;,!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:[&quot;color&quot;,&quot;#343434&quot;],size:[14,0,100,1],face:[&quot;arial&quot;,&quot;verdana&quot;,&quot;tahoma&quot;],background:[&quot;color&quot;,&quot;none&quot;],strokeWidth:[2,0,50,1],strokeColor:[&quot;color&quot;,&quot;#ffffff&quot;],align:[&quot;horizontal&quot;,&quot;top&quot;,&quot;middle&quot;,&quot;bottom&quot;]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],selfReference:{size:[20,0,200,1],angle:[Math.PI/2,-6*Math.PI,6*Math.PI,Math.PI/8],renderBehindTheNode:!0},shadow:{enabled:!1,color:&quot;rgba(0,0,0,0.5)&quot;,size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:[&quot;dynamic&quot;,&quot;continuous&quot;,&quot;discrete&quot;,&quot;diagonalCross&quot;,&quot;straightCross&quot;,&quot;horizontal&quot;,&quot;vertical&quot;,&quot;curvedCW&quot;,&quot;curvedCCW&quot;,&quot;cubicBezier&quot;],forceDirection:[&quot;horizontal&quot;,&quot;vertical&quot;,&quot;none&quot;],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:[&quot;UD&quot;,&quot;DU&quot;,&quot;LR&quot;,&quot;RL&quot;],sortMethod:[&quot;hubsize&quot;,&quot;directed&quot;],shakeTowards:[&quot;leaves&quot;,&quot;roots&quot;]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0,autoFocus:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0,zoomSpeed:[1,.1,2,.1]},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{theta:[.5,.1,1,.05],gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{theta:[.5,.1,1,.05],gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:[&quot;barnesHut&quot;,&quot;forceAtlas2Based&quot;,&quot;repulsion&quot;,&quot;hierarchicalRepulsion&quot;],timestep:[.5,.01,1,.01],wind:{x:[0,-10,10,.1],y:[0,-10,10,.1]}}},bT=function(t,e,i){var n;return!(!Nf(t).call(t,&quot;physics&quot;)||!Nf(n=mT.physics.solver).call(n,e)||i.physics.solver===e||&quot;wind&quot;===e)},wT=Object.freeze({__proto__:null,configuratorHideOption:bT,allOptions:yT,configureOptions:mT}),kT=function(){function t(){Yd(this,t)}return Kd(t,[{key:&quot;getDistances&quot;,value:function(t,e,i){for(var n={},o=t.edges,r=0;r&lt;e.length;r++){var s={};n[e[r]]=s;for(var a=0;a&lt;e.length;a++)s[e[a]]=r==a?0:1e9}for(var h=0;h&lt;i.length;h++){var l=o[i[h]];!0===l.connected&amp;&amp;void 0!==n[l.fromId]&amp;&amp;void 0!==n[l.toId]&amp;&amp;(n[l.fromId][l.toId]=1,n[l.toId][l.fromId]=1)}for(var d=e.length,c=0;c&lt;d;c++)for(var u=e[c],f=n[u],p=0;p&lt;d-1;p++)for(var v=e[p],g=n[v],y=p+1;y&lt;d;y++){var m=e[y],b=n[m],w=Math.min(g[m],g[u]+f[m]);g[m]=w,b[v]=w}return n}}]),t}(),_T=function(){function t(e,i,n){Yd(this,t),this.body=e,this.springLength=i,this.springConstant=n,this.distanceSolver=new kT}return Kd(t,[{key:&quot;setOptions&quot;,value:function(t){t&amp;&amp;(t.springLength&amp;&amp;(this.springLength=t.springLength),t.springConstant&amp;&amp;(this.springConstant=t.springConstant))}},{key:&quot;solve&quot;,value:function(t,e){var i=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]&amp;&amp;arguments[2],n=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(n),this._createK_matrix(n),this._createE_matrix();for(var o=.01,r=1,s=0,a=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),h=5,l=1e9,d=0,c=0,u=0,f=0,p=0;l&gt;o&amp;&amp;s&lt;a;){s+=1;var v=this._getHighestEnergyNode(i),g=Kc(v,4);for(d=g[0],l=g[1],c=g[2],u=g[3],f=l,p=0;f&gt;r&amp;&amp;p&lt;h;){p+=1,this._moveNode(d,c,u);var y=this._getEnergy(d),m=Kc(y,3);f=m[0],c=m[1],u=m[2]}}}},{key:&quot;_getHighestEnergyNode&quot;,value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,n=0,o=e[0],r=0,s=0,a=0;a&lt;e.length;a++){var h=e[a];if(!0!==i[h].predefinedPosition||!0===i[h].isCluster&amp;&amp;!0===t||!0!==i[h].options.fixed.x||!0!==i[h].options.fixed.y){var l=Kc(this._getEnergy(h),3),d=l[0],c=l[1],u=l[2];n&lt;d&amp;&amp;(n=d,o=h,r=c,s=u)}}return[o,n,r,s]}},{key:&quot;_getEnergy&quot;,value:function(t){var e=Kc(this.E_sums[t],2),i=e[0],n=e[1];return[Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),i,n]}},{key:&quot;_moveNode&quot;,value:function(t,e,i){for(var n=this.body.nodeIndices,o=this.body.nodes,r=0,s=0,a=0,h=o[t].x,l=o[t].y,d=this.K_matrix[t],c=this.L_matrix[t],u=0;u&lt;n.length;u++){var f=n[u];if(f!==t){var p=o[f].x,v=o[f].y,g=d[f],y=c[f],m=1/Math.pow(Math.pow(h-p,2)+Math.pow(l-v,2),1.5);r+=g*(1-y*Math.pow(l-v,2)*m),s+=g*(y*(h-p)*(l-v)*m),a+=g*(1-y*Math.pow(h-p,2)*m)}}var b=(e/r+i/s)/(s/r-a/s),w=-(s*b+e)/r;o[t].x+=w,o[t].y+=b,this._updateE_matrix(t)}},{key:&quot;_createL_matrix&quot;,value:function(t){var e=this.body.nodeIndices,i=this.springLength;this.L_matrix=[];for(var n=0;n&lt;e.length;n++){this.L_matrix[e[n]]={};for(var o=0;o&lt;e.length;o++)this.L_matrix[e[n]][e[o]]=i*t[e[n]][e[o]]}}},{key:&quot;_createK_matrix&quot;,value:function(t){var e=this.body.nodeIndices,i=this.springConstant;this.K_matrix=[];for(var n=0;n&lt;e.length;n++){this.K_matrix[e[n]]={};for(var o=0;o&lt;e.length;o++)this.K_matrix[e[n]][e[o]]=i*Math.pow(t[e[n]][e[o]],-2)}}},{key:&quot;_createE_matrix&quot;,value:function(){var t=this.body.nodeIndices,e=this.body.nodes;this.E_matrix={},this.E_sums={};for(var i=0;i&lt;t.length;i++)this.E_matrix[t[i]]=[];for(var n=0;n&lt;t.length;n++){for(var o=t[n],r=e[o].x,s=e[o].y,a=0,h=0,l=n;l&lt;t.length;l++){var d=t[l];if(d!==o){var c=e[d].x,u=e[d].y,f=1/Math.sqrt(Math.pow(r-c,2)+Math.pow(s-u,2));this.E_matrix[o][l]=[this.K_matrix[o][d]*(r-c-this.L_matrix[o][d]*(r-c)*f),this.K_matrix[o][d]*(s-u-this.L_matrix[o][d]*(s-u)*f)],this.E_matrix[d][n]=this.E_matrix[o][l],a+=this.E_matrix[o][l][0],h+=this.E_matrix[o][l][1]}}this.E_sums[o]=[a,h]}}},{key:&quot;_updateE_matrix&quot;,value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,n=this.E_matrix[t],o=this.K_matrix[t],r=this.L_matrix[t],s=i[t].x,a=i[t].y,h=0,l=0,d=0;d&lt;e.length;d++){var c=e[d];if(c!==t){var u=n[d],f=u[0],p=u[1],v=i[c].x,g=i[c].y,y=1/Math.sqrt(Math.pow(s-v,2)+Math.pow(a-g,2)),m=o[c]*(s-v-r[c]*(s-v)*y),b=o[c]*(a-g-r[c]*(a-g)*y);n[d]=[m,b],h+=m,l+=b;var w=this.E_sums[c];w[0]+=m-f,w[1]+=b-p}}this.E_sums[t]=[h,l]}}]),t}();function xT(t,e,i){var n,o,r,s,a=this;if(!(this instanceof xT))throw new SyntaxError(&quot;Constructor must be called with the new operator&quot;);this.options={},this.defaultOptions={locale:&quot;en&quot;,locales:Tb,clickToUse:!1},un(this.options,this.defaultOptions),this.body={container:t,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:zn(n=this.on).call(n,this),off:zn(o=this.off).call(o,this),emit:zn(r=this.emit).call(r,this),once:zn(s=this.once).call(s,this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}},selectionBox:{show:!1,position:{start:{x:0,y:0},end:{x:0,y:0}}}},this.bindEventListeners(),this.images=new Pb((function(){return a.body.emitter.emit(&quot;_requestRedraw&quot;)})),this.groups=new tk,this.canvas=new zC(this.body),this.selectionHandler=new HS(this.body,this.canvas),this.interactionHandler=new WC(this.body,this.canvas,this.selectionHandler),this.view=new FC(this.body,this.canvas),this.renderer=new PC(this.body,this.canvas),this.physics=new xC(this.body),this.layoutEngine=new sT(this.body),this.clustering=new SC(this.body),this.manipulation=new lT(this.body,this.canvas,this.selectionHandler,this.interactionHandler),this.nodesHandler=new gO(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new uC(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new _T(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}function ET(t){for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;(t[e].redundant=t[e].used,t[e].used=[])}function OT(t){for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;t[e].redundant){for(var i=0;i&lt;t[e].redundant.length;i++)t[e].redundant[i].parentNode.removeChild(t[e].redundant[i]);t[e].redundant=[]}}function CT(t,e,i){var n;return Object.prototype.hasOwnProperty.call(e,t)?e[t].redundant.length&gt;0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;,t),i.appendChild(n)):(n=document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;,t),e[t]={used:[],redundant:[]},i.appendChild(n)),e[t].used.push(n),n}Wn(xT.prototype),xT.prototype.setOptions=function(t){var e=this;if(null===t&amp;&amp;(t=void 0),void 0!==t){!0===Um.validate(t,yT)&amp;&amp;console.error(&quot;%cErrors have been found in the supplied options object.&quot;,Vm);if(em([&quot;locale&quot;,&quot;locales&quot;,&quot;clickToUse&quot;],this.options,t),void 0!==t.locale&amp;&amp;(t.locale=function(t,e){try{var i=Kc(e.split(/[-_ /]/,2),2),n=i[0],o=i[1],r=null!=n?n.toLowerCase():null,s=null!=o?o.toUpperCase():null;if(r&amp;&amp;s){var a,h=r+&quot;-&quot;+s;if(Object.prototype.hasOwnProperty.call(t,h))return h;console.warn(su(a=&quot;Unknown variant &quot;.concat(s,&quot; of language &quot;)).call(a,r,&quot;.&quot;))}if(r){var l=r;if(Object.prototype.hasOwnProperty.call(t,l))return l;console.warn(&quot;Unknown language &quot;.concat(r))}return console.warn(&quot;Unknown locale &quot;.concat(e,&quot;, falling back to English.&quot;)),&quot;en&quot;}catch(t){return console.error(t),console.warn(&quot;Unexpected error while normalizing locale &quot;.concat(e,&quot;, falling back to English.&quot;)),&quot;en&quot;}}(t.locales||this.options.locales,t.locale)),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&amp;&amp;this.body.emitter.emit(&quot;refreshNodes&quot;),&quot;configure&quot;in t&amp;&amp;(this.configurator||(this.configurator=new Hm(this,this.body.container,mT,this.canvas.pixelRatio,bT)),this.configurator.setOptions(t.configure)),this.configurator&amp;&amp;!0===this.configurator.options.enabled){var i={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};nm(i.nodes,this.nodesHandler.options),nm(i.edges,this.edgesHandler.options),nm(i.layout,this.layoutEngine.options),nm(i.interaction,this.selectionHandler.options),nm(i.interaction,this.renderer.options),nm(i.interaction,this.interactionHandler.options),nm(i.manipulation,this.manipulation.options),nm(i.physics,this.physics.options),nm(i.global,this.canvas.options),nm(i.global,this.options),this.configurator.setModuleOptions(i)}void 0!==t.clickToUse?!0===t.clickToUse?void 0===this.activator&amp;&amp;(this.activator=new Rm(this.canvas.frame),this.activator.on(&quot;change&quot;,(function(){e.body.emitter.emit(&quot;activate&quot;)}))):(void 0!==this.activator&amp;&amp;(this.activator.destroy(),delete this.activator),this.body.emitter.emit(&quot;activate&quot;)):this.body.emitter.emit(&quot;activate&quot;),this.canvas.setSize(),this.body.emitter.emit(&quot;startSimulation&quot;)}},xT.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;for(var i in this.body.nodeIndices=[],this.body.edgeIndices=[],t)Object.prototype.hasOwnProperty.call(t,i)&amp;&amp;(this.clustering._isClusteredNode(i)||!1!==t[i].options.hidden||this.body.nodeIndices.push(t[i].id));for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var o=e[n],r=t[o.fromId],s=t[o.toId],a=void 0!==r&amp;&amp;void 0!==s;!this.clustering._isClusteredEdge(n)&amp;&amp;!1===o.options.hidden&amp;&amp;a&amp;&amp;!1===r.options.hidden&amp;&amp;!1===s.options.hidden&amp;&amp;this.body.edgeIndices.push(o.id)}},xT.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on(&quot;_dataChanged&quot;,(function(){t.edgesHandler._updateState(),t.body.emitter.emit(&quot;_dataUpdated&quot;)})),this.body.emitter.on(&quot;_dataUpdated&quot;,(function(){t.clustering._updateState(),t._updateVisibleIndices(),t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit(&quot;startSimulation&quot;),t.body.emitter.emit(&quot;_requestRedraw&quot;)}))},xT.prototype.setData=function(t){if(this.body.emitter.emit(&quot;resetPhysics&quot;),this.body.emitter.emit(&quot;_resetData&quot;),this.selectionHandler.unselectAll(),t&amp;&amp;t.dot&amp;&amp;(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter &quot;dot&quot; or  parameter pair &quot;nodes&quot; and &quot;edges&quot;, but not both.');if(this.setOptions(t&amp;&amp;t.options),t&amp;&amp;t.dot){console.warn(&quot;The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);&quot;);var e=Eb(t.dot);this.setData(e)}else if(t&amp;&amp;t.gephi){console.warn(&quot;The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);&quot;);var i=Cb(t.gephi);this.setData(i)}else this.nodesHandler.setData(t&amp;&amp;t.nodes,!0),this.edgesHandler.setData(t&amp;&amp;t.edges,!0),this.body.emitter.emit(&quot;_dataChanged&quot;),this.body.emitter.emit(&quot;_dataLoaded&quot;),this.body.emitter.emit(&quot;initPhysics&quot;)},xT.prototype.destroy=function(){for(var t in this.body.emitter.emit(&quot;destroy&quot;),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images,this.body.nodes)Object.prototype.hasOwnProperty.call(this.body.nodes,t)&amp;&amp;delete this.body.nodes[t];for(var e in this.body.edges)Object.prototype.hasOwnProperty.call(this.body.edges,e)&amp;&amp;delete this.body.edges[e];Ky(this.body.container)},xT.prototype._updateValueRange=function(t){var e,i=void 0,n=void 0,o=0;for(e in t)if(Object.prototype.hasOwnProperty.call(t,e)){var r=t[e].getValue();void 0!==r&amp;&amp;(i=void 0===i?r:Math.min(r,i),n=void 0===n?r:Math.max(r,n),o+=r)}if(void 0!==i&amp;&amp;void 0!==n)for(e in t)Object.prototype.hasOwnProperty.call(t,e)&amp;&amp;t[e].setValueRange(i,n,o)},xT.prototype.isActive=function(){return!this.activator||this.activator.active},xT.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},xT.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},xT.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},xT.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},xT.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},xT.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},xT.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},xT.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},xT.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},xT.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},xT.prototype.updateClusteredNode=function(){return this.clustering.updateClusteredNode.apply(this.clustering,arguments)},xT.prototype.getClusteredEdges=function(){return this.clustering.getClusteredEdges.apply(this.clustering,arguments)},xT.prototype.getBaseEdge=function(){return this.clustering.getBaseEdge.apply(this.clustering,arguments)},xT.prototype.getBaseEdges=function(){return this.clustering.getBaseEdges.apply(this.clustering,arguments)},xT.prototype.updateEdge=function(){return this.clustering.updateEdge.apply(this.clustering,arguments)},xT.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},xT.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},xT.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},xT.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},xT.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},xT.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},xT.prototype.editNodeMode=function(){return console.warn(&quot;Deprecated: Please use editNode instead of editNodeMode.&quot;),this.manipulation.editNode.apply(this.manipulation,arguments)},xT.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},xT.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},xT.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},xT.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},xT.prototype.getPosition=function(){return this.nodesHandler.getPosition.apply(this.nodesHandler,arguments)},xT.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},xT.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},xT.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},xT.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},xT.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},xT.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},xT.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},xT.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},xT.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},xT.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},xT.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodeIds.apply(this.selectionHandler,arguments)},xT.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdgeIds.apply(this.selectionHandler,arguments)},xT.prototype.getNodeAt=function(){var t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&amp;&amp;void 0!==t.id?t.id:t},xT.prototype.getEdgeAt=function(){var t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&amp;&amp;void 0!==t.id?t.id:t},xT.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},xT.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},xT.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.selectionHandler.commitWithoutEmitting.apply(this.selectionHandler),this.redraw()},xT.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},xT.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},xT.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},xT.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},xT.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},xT.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},xT.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},xT.prototype.getOptionsFromConfigurator=function(){var t={};return this.configurator&amp;&amp;(t=this.configurator.getOptions.apply(this.configurator)),t};var ST=Object.freeze({__proto__:null,prepareElements:ET,cleanupElements:OT,resetElements:function(t){ET(t),OT(t),ET(t)},getSVGElement:CT,getDOMElement:function(t,e,i,n){var o;return Object.prototype.hasOwnProperty.call(e,t)?e[t].redundant.length&gt;0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==n?i.insertBefore(o,n):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==n?i.insertBefore(o,n):i.appendChild(o)),e[t].used.push(o),o},drawPoint:function(t,e,i,n,o,r){var s;if(&quot;circle&quot;==i.style?((s=CT(&quot;circle&quot;,n,o)).setAttributeNS(null,&quot;cx&quot;,t),s.setAttributeNS(null,&quot;cy&quot;,e),s.setAttributeNS(null,&quot;r&quot;,.5*i.size)):((s=CT(&quot;rect&quot;,n,o)).setAttributeNS(null,&quot;x&quot;,t-.5*i.size),s.setAttributeNS(null,&quot;y&quot;,e-.5*i.size),s.setAttributeNS(null,&quot;width&quot;,i.size),s.setAttributeNS(null,&quot;height&quot;,i.size)),void 0!==i.styles&amp;&amp;s.setAttributeNS(null,&quot;style&quot;,i.styles),s.setAttributeNS(null,&quot;class&quot;,i.className+&quot; vis-point&quot;),r){var a=CT(&quot;text&quot;,n,o);r.xOffset&amp;&amp;(t+=r.xOffset),r.yOffset&amp;&amp;(e+=r.yOffset),r.content&amp;&amp;(a.textContent=r.content),r.className&amp;&amp;a.setAttributeNS(null,&quot;class&quot;,r.className+&quot; vis-label&quot;),a.setAttributeNS(null,&quot;x&quot;,t),a.setAttributeNS(null,&quot;y&quot;,e)}return s},drawBar:function(t,e,i,n,o,r,s,a){if(0!=n){n&lt;0&amp;&amp;(e-=n*=-1);var h=CT(&quot;rect&quot;,r,s);h.setAttributeNS(null,&quot;x&quot;,t-.5*i),h.setAttributeNS(null,&quot;y&quot;,e),h.setAttributeNS(null,&quot;width&quot;,i),h.setAttributeNS(null,&quot;height&quot;,n),h.setAttributeNS(null,&quot;class&quot;,o),a&amp;&amp;h.setAttributeNS(null,&quot;style&quot;,a)}}}),TT={Images:Pb,dotparser:Ob,gephiParser:Sb,allOptions:wT,convertDot:Eb,convertGephi:Cb},MT=Object.freeze({__proto__:null,network:TT,DOMutil:ST,util:Ym,data:Jx,Hammer:Wm,keycharm:jC,DataSet:Kx,DataView:$x,Queue:Yx,Network:xT});t.DOMutil=ST,t.DataSet=Kx,t.DataView=$x,t.Hammer=Wm,t.Network=xT,t.Queue=Yx,t.data=Jx,t.default=MT,t.keycharm=jC,t.network=TT,t.util=Ym,Object.defineProperty(t,&quot;__esModule&quot;,{value:!0})}));\n",
       "//# sourceMappingURL=vis-network.min.js.map&lt;/script&gt;\n",
       "            \n",
       "        \n",
       "&lt;center&gt;\n",
       "&lt;h1&gt;&lt;/h1&gt;\n",
       "&lt;/center&gt;\n",
       "\n",
       "&lt;!-- &lt;link rel=&quot;stylesheet&quot; href=&quot;../node_modules/vis/dist/vis.min.css&quot; type=&quot;text/css&quot; /&gt;\n",
       "&lt;script type=&quot;text/javascript&quot; src=&quot;../node_modules/vis/dist/vis.js&quot;&gt; &lt;/script&gt;--&gt;\n",
       "        &lt;link\n",
       "          href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css&quot;\n",
       "          rel=&quot;stylesheet&quot;\n",
       "          integrity=&quot;sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6&quot;\n",
       "          crossorigin=&quot;anonymous&quot;\n",
       "        /&gt;\n",
       "        &lt;script\n",
       "          src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js&quot;\n",
       "          integrity=&quot;sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf&quot;\n",
       "          crossorigin=&quot;anonymous&quot;\n",
       "        &gt;&lt;/script&gt;\n",
       "\n",
       "\n",
       "        &lt;center&gt;\n",
       "          &lt;h1&gt;&lt;/h1&gt;\n",
       "        &lt;/center&gt;\n",
       "        &lt;style type=&quot;text/css&quot;&gt;\n",
       "\n",
       "             #mynetwork {\n",
       "                 width: 100%;\n",
       "                 height: 750px;\n",
       "                 background-color: #F5F5F5;\n",
       "                 border: 1px solid lightgray;\n",
       "                 position: relative;\n",
       "                 float: left;\n",
       "             }\n",
       "\n",
       "             \n",
       "\n",
       "             \n",
       "\n",
       "             \n",
       "        &lt;/style&gt;\n",
       "    &lt;/head&gt;\n",
       "\n",
       "\n",
       "    &lt;body&gt;\n",
       "        &lt;div class=&quot;card&quot; style=&quot;width: 100%&quot;&gt;\n",
       "            \n",
       "            \n",
       "            &lt;div id=&quot;mynetwork&quot; class=&quot;card-body&quot;&gt;&lt;/div&gt;\n",
       "        &lt;/div&gt;\n",
       "\n",
       "        \n",
       "        \n",
       "\n",
       "        &lt;script type=&quot;text/javascript&quot;&gt;\n",
       "\n",
       "              // initialize global variables.\n",
       "              var edges;\n",
       "              var nodes;\n",
       "              var allNodes;\n",
       "              var allEdges;\n",
       "              var nodeColors;\n",
       "              var originalNodes;\n",
       "              var network;\n",
       "              var container;\n",
       "              var options, data;\n",
       "              var filter = {\n",
       "                  item : '',\n",
       "                  property : '',\n",
       "                  value : []\n",
       "              };\n",
       "\n",
       "              \n",
       "\n",
       "              \n",
       "\n",
       "              // This method is responsible for drawing the graph, returns the drawn network\n",
       "              function drawGraph() {\n",
       "                  var container = document.getElementById('mynetwork');\n",
       "\n",
       "                  \n",
       "\n",
       "                  // parsing and collecting nodes and edges from the python\n",
       "                  nodes = new vis.DataSet([{&quot;aliasesText&quot;: &quot;&quot;, &quot;color&quot;: &quot;#2a78d6&quot;, &quot;confRaw&quot;: 1.0, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PERSON::trevor&quot;, &quot;kind&quot;: &quot;PERSON&quot;, &quot;label&quot;: &quot;Trevor&quot;, &quot;props&quot;: {&quot;liquid_assets&quot;: &quot;a few hundred thousand USD (as of 2026-09)&quot;, &quot;profession&quot;: &quot;consultant and financial analyst&quot;, &quot;stock_holdings&quot;: &quot;a few hundred thousand USD, on top of liquidity (as of 2026-09)&quot;, &quot;years_of_experience&quot;: &quot;15 years (as of 2026-09)&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eTrevor\\u003c/b\\u003e (PERSON)\\u003cbr\\u003eliquid_assets: a few hundred thousand USD (as of 2026-09)\\u003cbr\\u003eprofession: consultant and financial analyst\\u003cbr\\u003estock_holdings: a few hundred thousand USD, on top of liquidity (as of 2026-09)\\u003cbr\\u003eyears_of_experience: 15 years (as of 2026-09)\\u003cbr\\u003econfidence: 1.0&quot;}, {&quot;aliasesText&quot;: &quot;Deloitte Consulting&quot;, &quot;color&quot;: &quot;#eb6834&quot;, &quot;confRaw&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;ORG::deloitte&quot;, &quot;kind&quot;: &quot;ORG&quot;, &quot;label&quot;: &quot;Deloitte&quot;, &quot;props&quot;: {&quot;industry&quot;: &quot;professional services / management consulting&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eDeloitte\\u003c/b\\u003e (ORG)\\u003cbr\\u003ealiases: Deloitte Consulting\\u003cbr\\u003eindustry: professional services / management consulting\\u003cbr\\u003econfidence: 0.95&quot;}, {&quot;aliasesText&quot;: &quot;Joshua (Trevor\\u0027s boss at Deloitte)&quot;, &quot;color&quot;: &quot;#2a78d6&quot;, &quot;confRaw&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PERSON::joshua&quot;, &quot;kind&quot;: &quot;PERSON&quot;, &quot;label&quot;: &quot;Joshua&quot;, &quot;props&quot;: {}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eJoshua\\u003c/b\\u003e (PERSON)\\u003cbr\\u003ealiases: Joshua (Trevor\\u0027s boss at Deloitte)\\u003cbr\\u003econfidence: 0.9&quot;}, {&quot;aliasesText&quot;: &quot;agency, autonomy, workplace autonomy&quot;, &quot;color&quot;: &quot;#008300&quot;, &quot;confRaw&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PREFERENCE::agency_workplace_autonomy&quot;, &quot;kind&quot;: &quot;PREFERENCE&quot;, &quot;label&quot;: &quot;Agency (workplace autonomy)&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;Trevor\\u0027s top stated value: autonomy over his work and decisions&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eAgency (workplace autonomy)\\u003c/b\\u003e (PREFERENCE)\\u003cbr\\u003ealiases: agency, autonomy, workplace autonomy\\u003cbr\\u003edescription: Trevor\\u0027s top stated value: autonomy over his work and decisions\\u003cbr\\u003econfidence: 0.95&quot;}, {&quot;aliasesText&quot;: &quot;no boss, being boss-free, avoiding bosses&quot;, &quot;color&quot;: &quot;#008300&quot;, &quot;confRaw&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PREFERENCE::working_without_a_boss&quot;, &quot;kind&quot;: &quot;PREFERENCE&quot;, &quot;label&quot;: &quot;Working without a boss&quot;, &quot;props&quot;: {&quot;intensity&quot;: &quot;strong \\u2014 stated as \\&quot;I hate having a boss\\&quot;&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eWorking without a boss\\u003c/b\\u003e (PREFERENCE)\\u003cbr\\u003ealiases: no boss, being boss-free, avoiding bosses\\u003cbr\\u003eintensity: strong \\u2014 stated as \\&quot;I hate having a boss\\&quot;\\u003cbr\\u003econfidence: 0.9&quot;}, {&quot;aliasesText&quot;: &quot;lean environments, minimal bureaucracy, low-bureaucracy environments&quot;, &quot;color&quot;: &quot;#008300&quot;, &quot;confRaw&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PREFERENCE::low_bureaucracy_work_environments&quot;, &quot;kind&quot;: &quot;PREFERENCE&quot;, &quot;label&quot;: &quot;Low-bureaucracy work environments&quot;, &quot;props&quot;: {&quot;scope&quot;: &quot;large companies and banks; never acclimated to them despite a consulting career&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eLow-bureaucracy work environments\\u003c/b\\u003e (PREFERENCE)\\u003cbr\\u003ealiases: lean environments, minimal bureaucracy, low-bureaucracy environments\\u003cbr\\u003escope: large companies and banks; never acclimated to them despite a consulting career\\u003cbr\\u003econfidence: 0.85&quot;}, {&quot;aliasesText&quot;: &quot;skin in the game, ownership of big decisions, decision ownership&quot;, &quot;color&quot;: &quot;#008300&quot;, &quot;confRaw&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PREFERENCE::skin_in_the_game_decision_making&quot;, &quot;kind&quot;: &quot;PREFERENCE&quot;, &quot;label&quot;: &quot;Skin in the game (decision-making)&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;making big decisions with personal ownership and real stakes&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eSkin in the game (decision-making)\\u003c/b\\u003e (PREFERENCE)\\u003cbr\\u003ealiases: skin in the game, ownership of big decisions, decision ownership\\u003cbr\\u003edescription: making big decisions with personal ownership and real stakes\\u003cbr\\u003econfidence: 0.85&quot;}, {&quot;aliasesText&quot;: &quot;AI&quot;, &quot;color&quot;: &quot;#e87ba4&quot;, &quot;confRaw&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;TOPIC::artificial_intelligence&quot;, &quot;kind&quot;: &quot;TOPIC&quot;, &quot;label&quot;: &quot;Artificial intelligence&quot;, &quot;props&quot;: {}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eArtificial intelligence\\u003c/b\\u003e (TOPIC)\\u003cbr\\u003ealiases: AI\\u003cbr\\u003econfidence: 0.9&quot;}, {&quot;aliasesText&quot;: &quot;tech startups Trevor consults at, fast-growing AI startups (Trevor\\u0027s clients)&quot;, &quot;color&quot;: &quot;#4a3aa7&quot;, &quot;confRaw&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;THING::ai_startups_trevor_s_consulting_clients&quot;, &quot;kind&quot;: &quot;THING&quot;, &quot;label&quot;: &quot;AI startups (Trevor\\u0027s consulting clients)&quot;, &quot;props&quot;: {&quot;profile&quot;: &quot;mainly AI startups growing really fast; Trevor\\u0027s recent consulting engagements as of 2026-09&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eAI startups (Trevor\\u0027s consulting clients)\\u003c/b\\u003e (THING)\\u003cbr\\u003ealiases: tech startups Trevor consults at, fast-growing AI startups (Trevor\\u0027s clients)\\u003cbr\\u003eprofile: mainly AI startups growing really fast; Trevor\\u0027s recent consulting engagements as of 2026-09\\u003cbr\\u003econfidence: 0.9&quot;}, {&quot;aliasesText&quot;: &quot;NovaAI&quot;, &quot;color&quot;: &quot;#eb6834&quot;, &quot;confRaw&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;ORG::nova_ai&quot;, &quot;kind&quot;: &quot;ORG&quot;, &quot;label&quot;: &quot;Nova AI&quot;, &quot;props&quot;: {&quot;founders&quot;: &quot;college students, who reached out to Trevor for help&quot;, &quot;growth_rate&quot;: &quot;around 24% month-over-month (as of 2026-09)&quot;, &quot;profitability&quot;: &quot;still loss-making (as of 2026-09)&quot;, &quot;quarterly_revenue&quot;: &quot;almost $1M per quarter (as of 2026-09)&quot;, &quot;stage&quot;: &quot;early-stage, revenue-generating startup&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eNova AI\\u003c/b\\u003e (ORG)\\u003cbr\\u003ealiases: NovaAI\\u003cbr\\u003efounders: college students, who reached out to Trevor for help\\u003cbr\\u003egrowth_rate: around 24% month-over-month (as of 2026-09)\\u003cbr\\u003eprofitability: still loss-making (as of 2026-09)\\u003cbr\\u003equarterly_revenue: almost $1M per quarter (as of 2026-09)\\u003cbr\\u003estage: early-stage, revenue-generating startup\\u003cbr\\u003econfidence: 0.95&quot;}, {&quot;aliasesText&quot;: &quot;CFO offer at Nova AI, Nova AI CFO role&quot;, &quot;color&quot;: &quot;#4a3aa7&quot;, &quot;confRaw&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;THING::nova_ai_cfo_offer&quot;, &quot;kind&quot;: &quot;THING&quot;, &quot;label&quot;: &quot;Nova AI CFO offer&quot;, &quot;props&quot;: {&quot;status&quot;: &quot;extended to Trevor; under active consideration as of Sep 2026&quot;, &quot;title&quot;: &quot;Chief Financial Officer (CFO)&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eNova AI CFO offer\\u003c/b\\u003e (THING)\\u003cbr\\u003ealiases: CFO offer at Nova AI, Nova AI CFO role\\u003cbr\\u003estatus: extended to Trevor; under active consideration as of Sep 2026\\u003cbr\\u003etitle: Chief Financial Officer (CFO)\\u003cbr\\u003econfidence: 0.95&quot;}, {&quot;aliasesText&quot;: &quot;big bank job, large banking firm path, bank path&quot;, &quot;color&quot;: &quot;#4a3aa7&quot;, &quot;confRaw&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;THING::large_bank_career_path&quot;, &quot;kind&quot;: &quot;THING&quot;, &quot;label&quot;: &quot;Large-bank career path&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;option to leave consulting for a full-time role at a large banking firm&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eLarge-bank career path\\u003c/b\\u003e (THING)\\u003cbr\\u003ealiases: big bank job, large banking firm path, bank path\\u003cbr\\u003edescription: option to leave consulting for a full-time role at a large banking firm\\u003cbr\\u003econfidence: 0.85&quot;}, {&quot;aliasesText&quot;: &quot;AI IPO wave, wave of AI company IPOs&quot;, &quot;color&quot;: &quot;#e87ba4&quot;, &quot;confRaw&quot;: 0.7, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;TOPIC::ai_company_ipo_wave&quot;, &quot;kind&quot;: &quot;TOPIC&quot;, &quot;label&quot;: &quot;AI company IPO wave&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;anticipated wave of AI-company IPOs that banks are competing to organize, expected within months to years (per Trevor, Sep 2026)&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eAI company IPO wave\\u003c/b\\u003e (TOPIC)\\u003cbr\\u003ealiases: AI IPO wave, wave of AI company IPOs\\u003cbr\\u003edescription: anticipated wave of AI-company IPOs that banks are competing to organize, expected within months to years (per Trevor, Sep 2026)\\u003cbr\\u003econfidence: 0.7&quot;}, {&quot;aliasesText&quot;: &quot;starting something on his own, own venture, entrepreneurship&quot;, &quot;color&quot;: &quot;#008300&quot;, &quot;confRaw&quot;: 0.6, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;PREFERENCE::founding_his_own_company&quot;, &quot;kind&quot;: &quot;PREFERENCE&quot;, &quot;label&quot;: &quot;Founding his own company&quot;, &quot;props&quot;: {&quot;tentativeness&quot;: &quot;hedged with \\&quot;maybe\\&quot;; something he wonders about (Sep 2026)&quot;, &quot;timing&quot;: &quot;when fully independent financially&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eFounding his own company\\u003c/b\\u003e (PREFERENCE)\\u003cbr\\u003ealiases: starting something on his own, own venture, entrepreneurship\\u003cbr\\u003etentativeness: hedged with \\&quot;maybe\\&quot;; something he wonders about (Sep 2026)\\u003cbr\\u003etiming: when fully independent financially\\u003cbr\\u003econfidence: 0.6&quot;}, {&quot;aliasesText&quot;: &quot;AI financials, financial side of AI companies&quot;, &quot;color&quot;: &quot;#e87ba4&quot;, &quot;confRaw&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;TOPIC::financial_side_of_ai&quot;, &quot;kind&quot;: &quot;TOPIC&quot;, &quot;label&quot;: &quot;Financial side of AI&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;the financial/business side of AI companies, as distinct from the technical side&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eFinancial side of AI\\u003c/b\\u003e (TOPIC)\\u003cbr\\u003ealiases: AI financials, financial side of AI companies\\u003cbr\\u003edescription: the financial/business side of AI companies, as distinct from the technical side\\u003cbr\\u003econfidence: 0.85&quot;}, {&quot;aliasesText&quot;: &quot;AI startup full-time path, joining an AI startup full-time&quot;, &quot;color&quot;: &quot;#4a3aa7&quot;, &quot;confRaw&quot;: 0.75, &quot;font&quot;: {&quot;color&quot;: &quot;#000003&quot;}, &quot;id&quot;: &quot;THING::full_time_ai_startup_career_path&quot;, &quot;kind&quot;: &quot;THING&quot;, &quot;label&quot;: &quot;Full-time AI startup career path&quot;, &quot;props&quot;: {&quot;description&quot;: &quot;career option of taking a full-time job at the tech companies Trevor consults for, mainly fast-growing AI startups&quot;}, &quot;shape&quot;: &quot;dot&quot;, &quot;size&quot;: 18, &quot;title&quot;: &quot;\\u003cb\\u003eFull-time AI startup career path\\u003c/b\\u003e (THING)\\u003cbr\\u003ealiases: AI startup full-time path, joining an AI startup full-time\\u003cbr\\u003edescription: career option of taking a full-time job at the tech companies Trevor consults for, mainly fast-growing AI startups\\u003cbr\\u003econfidence: 0.75&quot;}]);\n",
       "                  edges = new vis.DataSet([{&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;WORKS_AT&quot;, &quot;props&quot;: {&quot;compensation&quot;: &quot;$300,000/year (as of 2026-09)&quot;, &quot;role&quot;: &quot;consultant&quot;, &quot;title&quot;: &quot;financial analyst&quot;}, &quot;relation&quot;: &quot;WORKS_AT&quot;, &quot;snippetText&quot;: &quot;I\\u0027m Trevor, a consultant at Deloitte. I work as a financial analyst right now, and I am confused as to what I should do next in my career.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.95, &quot;title&quot;: &quot;\\u003cb\\u003eWORKS_AT\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.95 \\u00b7 confidence: 0.95\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_one\\u003cbr\\u003ecompensation: $300,000/year (as of 2026-09)\\u003cbr\\u003erole: consultant\\u003cbr\\u003etitle: financial analyst\\u003cbr\\u003e\\u003ci\\u003e\\u201cI\\u0027m Trevor, a consultant at Deloitte. I work as a financial analyst right now, and I am confused as to what I should do next in my career.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;ORG::deloitte&quot;, &quot;width&quot;: 2.999}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;REPORTS_TO&quot;, &quot;props&quot;: {&quot;notability&quot;: &quot;the only boss Trevor has ever been able to tolerate and work with (across a 15-year career)&quot;}, &quot;relation&quot;: &quot;REPORTS_TO&quot;, &quot;snippetText&quot;: &quot;I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.95, &quot;title&quot;: &quot;\\u003cb\\u003eREPORTS_TO\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.95 \\u00b7 confidence: 0.9\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_one\\u003cbr\\u003enotability: the only boss Trevor has ever been able to tolerate and work with (across a 15-year career)\\u003cbr\\u003e\\u003ci\\u003e\\u201cI hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PERSON::joshua&quot;, &quot;width&quot;: 2.999}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::joshua&quot;, &quot;label&quot;: &quot;WORKS_AT&quot;, &quot;props&quot;: {&quot;role&quot;: &quot;manages Trevor; Trevor\\u0027s current boss&quot;}, &quot;relation&quot;: &quot;WORKS_AT&quot;, &quot;snippetText&quot;: &quot;my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.95, &quot;title&quot;: &quot;\\u003cb\\u003eWORKS_AT\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.95 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_one\\u003cbr\\u003erole: manages Trevor; Trevor\\u0027s current boss\\u003cbr\\u003e\\u003ci\\u003e\\u201cmy currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;ORG::deloitte&quot;, &quot;width&quot;: 2.999}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;VALUES_MOST&quot;, &quot;props&quot;: {&quot;rank&quot;: &quot;single most valued thing (stated Sep 2026)&quot;}, &quot;relation&quot;: &quot;VALUES_MOST&quot;, &quot;snippetText&quot;: &quot;Well, I guess the thing I value the most is agency. I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.&quot;, &quot;stability&quot;: &quot;stable&quot;, &quot;strengthRaw&quot;: 99.99, &quot;title&quot;: &quot;\\u003cb\\u003eVALUES_MOST\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.99 \\u00b7 confidence: 0.95\\u003cbr\\u003estability: stable \\u00b7 cardinality: one_to_one\\u003cbr\\u003erank: single most valued thing (stated Sep 2026)\\u003cbr\\u003e\\u003ci\\u003e\\u201cWell, I guess the thing I value the most is agency. I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::agency_workplace_autonomy&quot;, &quot;width&quot;: 2.9997999999999996}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;PREFERS&quot;, &quot;props&quot;: {&quot;intensity&quot;: &quot;hates having a boss; in 15 years has tolerated only one (Joshua)&quot;}, &quot;relation&quot;: &quot;PREFERS&quot;, &quot;snippetText&quot;: &quot;I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.&quot;, &quot;stability&quot;: &quot;stable&quot;, &quot;strengthRaw&quot;: 99.99, &quot;title&quot;: &quot;\\u003cb\\u003ePREFERS\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.99 \\u00b7 confidence: 0.9\\u003cbr\\u003estability: stable \\u00b7 cardinality: one_to_many\\u003cbr\\u003eintensity: hates having a boss; in 15 years has tolerated only one (Joshua)\\u003cbr\\u003e\\u003ci\\u003e\\u201cI hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::working_without_a_boss&quot;, &quot;width&quot;: 2.9997999999999996}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;PREFERS&quot;, &quot;props&quot;: {&quot;context&quot;: &quot;counterintuitive for a consultant, who is expected to have learned to deal with bureaucracies and large companies; deep down he dislikes them&quot;}, &quot;relation&quot;: &quot;PREFERS&quot;, &quot;snippetText&quot;: &quot;I fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.&quot;, &quot;stability&quot;: &quot;stable&quot;, &quot;strengthRaw&quot;: 99.99, &quot;title&quot;: &quot;\\u003cb\\u003ePREFERS\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.99 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: stable \\u00b7 cardinality: one_to_many\\u003cbr\\u003econtext: counterintuitive for a consultant, who is expected to have learned to deal with bureaucracies and large companies; deep down he dislikes them\\u003cbr\\u003e\\u003ci\\u003e\\u201cI fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::low_bureaucracy_work_environments&quot;, &quot;width&quot;: 2.9997999999999996}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.8, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;SEEKS&quot;, &quot;props&quot;: {&quot;context&quot;: &quot;people in his profession (consulting) are mocked for lacking skin in the game; he dislikes that framing but admits an element of it is true&quot;}, &quot;relation&quot;: &quot;SEEKS&quot;, &quot;snippetText&quot;: &quot;At a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having. I don\\u0027t like that framing, but I have to admit than an element of it s true.&quot;, &quot;stability&quot;: &quot;stable&quot;, &quot;strengthRaw&quot;: 99.99, &quot;title&quot;: &quot;\\u003cb\\u003eSEEKS\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.99 \\u00b7 confidence: 0.8\\u003cbr\\u003estability: stable \\u00b7 cardinality: one_to_many\\u003cbr\\u003econtext: people in his profession (consulting) are mocked for lacking skin in the game; he dislikes that framing but admits an element of it is true\\u003cbr\\u003e\\u003ci\\u003e\\u201cAt a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having. I don\\u0027t like that framing, but I have to admit than an element of it s true.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::skin_in_the_game_decision_making&quot;, &quot;width&quot;: 2.9997999999999996}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;LACKS_TECHNICAL_KNOWLEDGE_OF&quot;, &quot;props&quot;: {&quot;level&quot;: &quot;not much technical knowledge (self-assessed, Sep 2026)&quot;}, &quot;relation&quot;: &quot;LACKS_TECHNICAL_KNOWLEDGE_OF&quot;, &quot;snippetText&quot;: &quot;I don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.95, &quot;title&quot;: &quot;\\u003cb\\u003eLACKS_TECHNICAL_KNOWLEDGE_OF\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.95 \\u00b7 confidence: 0.9\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_many\\u003cbr\\u003elevel: not much technical knowledge (self-assessed, Sep 2026)\\u003cbr\\u003e\\u003ci\\u003e\\u201cI don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;TOPIC::artificial_intelligence&quot;, &quot;width&quot;: 2.999}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;CONSULTS_FOR&quot;, &quot;props&quot;: {&quot;client_profile&quot;: &quot;mainly AI startups that are growing really fast&quot;, &quot;recency&quot;: &quot;recent engagements as of 2026-09&quot;}, &quot;relation&quot;: &quot;CONSULTS_FOR&quot;, &quot;snippetText&quot;: &quot;I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.95, &quot;title&quot;: &quot;\\u003cb\\u003eCONSULTS_FOR\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.95 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_many\\u003cbr\\u003eclient_profile: mainly AI startups that are growing really fast\\u003cbr\\u003erecency: recent engagements as of 2026-09\\u003cbr\\u003e\\u003ci\\u003e\\u201cI can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;THING::ai_startups_trevor_s_consulting_clients&quot;, &quot;width&quot;: 2.999}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.95, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;THING::nova_ai_cfo_offer&quot;, &quot;label&quot;: &quot;OFFERED_BY&quot;, &quot;props&quot;: {&quot;origin&quot;: &quot;Nova AI\\u0027s founders (college students) reached out to Trevor for help&quot;}, &quot;relation&quot;: &quot;OFFERED_BY&quot;, &quot;snippetText&quot;: &quot;The company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.&quot;, &quot;stability&quot;: &quot;immutable&quot;, &quot;strengthRaw&quot;: 100.0, &quot;title&quot;: &quot;\\u003cb\\u003eOFFERED_BY\\u003c/b\\u003e\\u003cbr\\u003estrength: 100.0 \\u00b7 confidence: 0.95\\u003cbr\\u003estability: immutable \\u00b7 cardinality: one_to_one\\u003cbr\\u003eorigin: Nova AI\\u0027s founders (college students) reached out to Trevor for help\\u003cbr\\u003e\\u003ci\\u003e\\u201cThe company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;ORG::nova_ai&quot;, &quot;width&quot;: 3.0}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;CONSIDERING&quot;, &quot;props&quot;: {&quot;hoped_for&quot;: &quot;leaner environment, faster action, big decisions with skin in the game&quot;, &quot;status&quot;: &quot;actively weighing vs the bank path; \\&quot;my heart and brain are in conflict\\&quot;&quot;, &quot;tradeoff&quot;: &quot;trades liquidity/salary for stock and upside&quot;}, &quot;relation&quot;: &quot;CONSIDERING&quot;, &quot;snippetText&quot;: &quot;Otherwise, I could become a CFO at a smaller company and trade liquidity for a lot of stock and increddible upside. ... The company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.89, &quot;title&quot;: &quot;\\u003cb\\u003eCONSIDERING\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.89 \\u00b7 confidence: 0.9\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003ehoped_for: leaner environment, faster action, big decisions with skin in the game\\u003cbr\\u003estatus: actively weighing vs the bank path; \\&quot;my heart and brain are in conflict\\&quot;\\u003cbr\\u003etradeoff: trades liquidity/salary for stock and upside\\u003cbr\\u003e\\u003ci\\u003e\\u201cOtherwise, I could become a CFO at a smaller company and trade liquidity for a lot of stock and increddible upside. ... The company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;THING::nova_ai_cfo_offer&quot;, &quot;width&quot;: 2.9978}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;CONSIDERING&quot;, &quot;props&quot;: {&quot;compensation&quot;: &quot;over $500,000/year, largely cash (\\&quot;I could get paid a lot in cash\\&quot;)&quot;, &quot;rationale&quot;: &quot;his AI-startup consulting experience would be valuable to big banks&quot;, &quot;tension&quot;: &quot;the immediate money seems exciting, but his heart and brain are in conflict&quot;}, &quot;relation&quot;: &quot;CONSIDERING&quot;, &quot;snippetText&quot;: &quot;At the bank though, I will be making over $500,000 a year, which is a big step up from the $300,000 Ive been earning in my current job. So what do you think? The immedate money seems exciting, but my heart and brain are in conflict&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eCONSIDERING\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003ecompensation: over $500,000/year, largely cash (\\&quot;I could get paid a lot in cash\\&quot;)\\u003cbr\\u003erationale: his AI-startup consulting experience would be valuable to big banks\\u003cbr\\u003etension: the immediate money seems exciting, but his heart and brain are in conflict\\u003cbr\\u003e\\u003ci\\u003e\\u201cAt the bank though, I will be making over $500,000 a year, which is a big step up from the $300,000 Ive been earning in my current job. So what do you think? The immedate money seems exciting, but my heart and brain are in conflict\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;THING::large_bank_career_path&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;THING::large_bank_career_path&quot;, &quot;label&quot;: &quot;CONFLICTS_WITH&quot;, &quot;props&quot;: {&quot;fear&quot;: &quot;Trevor fears the bureaucracy at a big bank would drive him crazy&quot;, &quot;note&quot;: &quot;counterintuitive for a consultant expected to be used to large-company bureaucracy; deep down he dislikes it&quot;}, &quot;relation&quot;: &quot;CONFLICTS_WITH&quot;, &quot;snippetText&quot;: &quot;I fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eCONFLICTS_WITH\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003efear: Trevor fears the bureaucracy at a big bank would drive him crazy\\u003cbr\\u003enote: counterintuitive for a consultant expected to be used to large-company bureaucracy; deep down he dislikes it\\u003cbr\\u003e\\u003ci\\u003e\\u201cI fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::low_bureaucracy_work_environments&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.65, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;ANTICIPATES&quot;, &quot;props&quot;: {&quot;source&quot;: &quot;hearsay (\\&quot;I hear\\&quot;), as of Sep 2026&quot;, &quot;timing&quot;: &quot;next few months and years&quot;}, &quot;relation&quot;: &quot;ANTICIPATES&quot;, &quot;snippetText&quot;: &quot;I know it\\u0027s the next big thing, and I hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eANTICIPATES\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.65\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003esource: hearsay (\\&quot;I hear\\&quot;), as of Sep 2026\\u003cbr\\u003etiming: next few months and years\\u003cbr\\u003e\\u003ci\\u003e\\u201cI know it\\u0027s the next big thing, and I hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;TOPIC::ai_company_ipo_wave&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.7, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;THING::large_bank_career_path&quot;, &quot;label&quot;: &quot;MOTIVATED_BY&quot;, &quot;props&quot;: {&quot;rationale&quot;: &quot;banks are competing to organize the coming AI-company IPO wave, so Trevor\\u0027s AI-startup consulting experience would be valuable to them; plus high cash pay&quot;}, &quot;relation&quot;: &quot;MOTIVATED_BY&quot;, &quot;snippetText&quot;: &quot;I hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years. My experieence at teech startups might be valuable for these big banks and I could get paid a lot in cash.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eMOTIVATED_BY\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.7\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003erationale: banks are competing to organize the coming AI-company IPO wave, so Trevor\\u0027s AI-startup consulting experience would be valuable to them; plus high cash pay\\u003cbr\\u003e\\u003ci\\u003e\\u201cI hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years. My experieence at teech startups might be valuable for these big banks and I could get paid a lot in cash.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;TOPIC::ai_company_ipo_wave&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.6, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;ASPIRES_TO&quot;, &quot;props&quot;: {&quot;status&quot;: &quot;tentative \\u2014 hedged with \\&quot;maybe\\&quot;; something he wonders about&quot;, &quot;timing&quot;: &quot;once fully independent financially&quot;}, &quot;relation&quot;: &quot;ASPIRES_TO&quot;, &quot;snippetText&quot;: &quot;I am not in the dire need for money, but I wonder if I should just go after liquidity and maybe start something on my own when I am fully independent.&quot;, &quot;stability&quot;: &quot;mutable&quot;, &quot;strengthRaw&quot;: 99.96, &quot;title&quot;: &quot;\\u003cb\\u003eASPIRES_TO\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.96 \\u00b7 confidence: 0.6\\u003cbr\\u003estability: mutable \\u00b7 cardinality: one_to_many\\u003cbr\\u003estatus: tentative \\u2014 hedged with \\&quot;maybe\\&quot;; something he wonders about\\u003cbr\\u003etiming: once fully independent financially\\u003cbr\\u003e\\u003ci\\u003e\\u201cI am not in the dire need for money, but I wonder if I should just go after liquidity and maybe start something on my own when I am fully independent.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::founding_his_own_company&quot;, &quot;width&quot;: 2.9992}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.7, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;THING::nova_ai_cfo_offer&quot;, &quot;label&quot;: &quot;ALIGNS_WITH&quot;, &quot;props&quot;: {&quot;basis&quot;: &quot;Trevor\\u0027s stated hope about smaller companies, applied to the Nova AI CFO option; not a confirmed attribute of Nova AI&quot;}, &quot;relation&quot;: &quot;ALIGNS_WITH&quot;, &quot;snippetText&quot;: &quot;At a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eALIGNS_WITH\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.7\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003ebasis: Trevor\\u0027s stated hope about smaller companies, applied to the Nova AI CFO option; not a confirmed attribute of Nova AI\\u003cbr\\u003e\\u003ci\\u003e\\u201cAt a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;PREFERENCE::skin_in_the_game_decision_making&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.85, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;UNDERSTANDS&quot;, &quot;props&quot;: {&quot;belief&quot;: &quot;considers AI the next big thing&quot;}, &quot;relation&quot;: &quot;UNDERSTANDS&quot;, &quot;snippetText&quot;: &quot;I don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.&quot;, &quot;stability&quot;: &quot;stable&quot;, &quot;strengthRaw&quot;: 99.99, &quot;title&quot;: &quot;\\u003cb\\u003eUNDERSTANDS\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.99 \\u00b7 confidence: 0.85\\u003cbr\\u003estability: stable \\u00b7 cardinality: one_to_many\\u003cbr\\u003ebelief: considers AI the next big thing\\u003cbr\\u003e\\u003ci\\u003e\\u201cI don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;TOPIC::financial_side_of_ai&quot;, &quot;width&quot;: 2.9997999999999996}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_one&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.9, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;TOPIC::financial_side_of_ai&quot;, &quot;label&quot;: &quot;ASPECT_OF&quot;, &quot;props&quot;: {}, &quot;relation&quot;: &quot;ASPECT_OF&quot;, &quot;snippetText&quot;: &quot;I don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.&quot;, &quot;stability&quot;: &quot;immutable&quot;, &quot;strengthRaw&quot;: 100.0, &quot;title&quot;: &quot;\\u003cb\\u003eASPECT_OF\\u003c/b\\u003e\\u003cbr\\u003estrength: 100.0 \\u00b7 confidence: 0.9\\u003cbr\\u003estability: immutable \\u00b7 cardinality: one_to_one\\u003cbr\\u003e\\u003ci\\u003e\\u201cI don\\u0027t know much about AI technically, but I understand the financials, and I know it\\u0027s the next big thing.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;TOPIC::artificial_intelligence&quot;, &quot;width&quot;: 3.0}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.75, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;PERSON::trevor&quot;, &quot;label&quot;: &quot;CONSIDERING&quot;, &quot;props&quot;: {&quot;status&quot;: &quot;one of three options under consideration, Sep 2026; the vaguest of the three&quot;}, &quot;relation&quot;: &quot;CONSIDERING&quot;, &quot;snippetText&quot;: &quot;I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eCONSIDERING\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.75\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003estatus: one of three options under consideration, Sep 2026; the vaguest of the three\\u003cbr\\u003e\\u003ci\\u003e\\u201cI can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;THING::full_time_ai_startup_career_path&quot;, &quot;width&quot;: 2.998}, {&quot;arrows&quot;: &quot;to&quot;, &quot;cardinality&quot;: &quot;one_to_many&quot;, &quot;color&quot;: &quot;#8a8a8a&quot;, &quot;confidence&quot;: 0.8, &quot;font&quot;: {&quot;color&quot;: &quot;#b0b0b0&quot;, &quot;size&quot;: 10, &quot;strokeWidth&quot;: 0}, &quot;from&quot;: &quot;THING::full_time_ai_startup_career_path&quot;, &quot;label&quot;: &quot;WOULD_JOIN&quot;, &quot;props&quot;: {&quot;note&quot;: &quot;the option is to convert his current consulting engagements into full-time employment&quot;}, &quot;relation&quot;: &quot;WOULD_JOIN&quot;, &quot;snippetText&quot;: &quot;I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.&quot;, &quot;stability&quot;: &quot;time_bound&quot;, &quot;strengthRaw&quot;: 99.9, &quot;title&quot;: &quot;\\u003cb\\u003eWOULD_JOIN\\u003c/b\\u003e\\u003cbr\\u003estrength: 99.9 \\u00b7 confidence: 0.8\\u003cbr\\u003estability: time_bound \\u00b7 cardinality: one_to_many\\u003cbr\\u003enote: the option is to convert his current consulting engagements into full-time employment\\u003cbr\\u003e\\u003ci\\u003e\\u201cI can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\\u201d\\u003c/i\\u003e&quot;, &quot;to&quot;: &quot;THING::ai_startups_trevor_s_consulting_clients&quot;, &quot;width&quot;: 2.998}]);\n",
       "\n",
       "                  nodeColors = {};\n",
       "                  allNodes = nodes.get({ returnType: &quot;Object&quot; });\n",
       "                  for (nodeId in allNodes) {\n",
       "                    nodeColors[nodeId] = allNodes[nodeId].color;\n",
       "                  }\n",
       "                  allEdges = edges.get({ returnType: &quot;Object&quot; });\n",
       "                  // adding nodes and edges to the graph\n",
       "                  data = {nodes: nodes, edges: edges};\n",
       "\n",
       "                  var options = {&quot;physics&quot;: {&quot;barnesHut&quot;: {&quot;gravitationalConstant&quot;: -9000, &quot;springLength&quot;: 150, &quot;springConstant&quot;: 0.04, &quot;avoidOverlap&quot;: 0.4}, &quot;stabilization&quot;: {&quot;iterations&quot;: 300}}, &quot;interaction&quot;: {&quot;hover&quot;: true, &quot;tooltipDelay&quot;: 120}};\n",
       "\n",
       "                  \n",
       "\n",
       "\n",
       "                  \n",
       "\n",
       "                  network = new vis.Network(container, data, options);\n",
       "\n",
       "                  \n",
       "\n",
       "                  \n",
       "\n",
       "                  \n",
       "\n",
       "\n",
       "                  \n",
       "\n",
       "                  return network;\n",
       "\n",
       "              }\n",
       "              drawGraph();\n",
       "        &lt;/script&gt;\n",
       "    \n",
       "&lt;div id=&quot;pegasus-inspector&quot;&gt;\n",
       "  &lt;div id=&quot;pi-header&quot;&gt;&lt;h3&gt;Graph Inspector&lt;/h3&gt;&lt;button id=&quot;pi-close&quot; type=&quot;button&quot; aria-label=&quot;Close&quot;&gt;✕&lt;/button&gt;&lt;/div&gt;\n",
       "  &lt;div id=&quot;pi-body&quot;&gt;&lt;div class=&quot;pi-empty&quot;&gt;Click a node or edge to see its details.&lt;/div&gt;&lt;/div&gt;\n",
       "&lt;/div&gt;\n",
       "&lt;style&gt;\n",
       "  #pegasus-inspector {\n",
       "    position: fixed; top: 0; right: 0; height: 100%; width: min(380px, 90vw);\n",
       "    background: #141414; color: #e6e6e6; border-left: 1px solid #2a2a2a;\n",
       "    transform: translateX(100%); transition: transform .2s ease-out;\n",
       "    z-index: 9999; display: flex; flex-direction: column;\n",
       "    font-family: -apple-system, &quot;Segoe UI&quot;, Roboto, sans-serif;\n",
       "    box-shadow: -18px 0 48px rgba(0,0,0,0.4);\n",
       "  }\n",
       "  #pegasus-inspector.open { transform: translateX(0); }\n",
       "  #pi-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #2a2a2a; flex-shrink: 0; }\n",
       "  #pi-header h3 { margin: 0; font-size: 14px; }\n",
       "  #pi-close { background: none; border: 1px solid #2a2a2a; color: #e6e6e6; border-radius: 6px; width: 28px; height: 28px; cursor: pointer; font-size: 13px; }\n",
       "  #pi-close:hover { background: #202020; }\n",
       "  #pi-body { flex: 1; overflow-y: auto; padding: 14px 16px; font-size: 13px; }\n",
       "  #pi-body h2 { margin: 0 0 10px; font-size: 16px; }\n",
       "  .pi-empty { color: #8a8a8a; font-style: italic; font-size: 13px; }\n",
       "  .pi-kv { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; }\n",
       "  .pi-kv .pi-k { color: #9a9a9a; }\n",
       "  .pi-sub { margin-top: 14px; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: #8a8a8a; }\n",
       "  .pi-edge { padding: 8px 0; border-top: 1px solid #2a2a2a; }\n",
       "  .pi-edge:first-child { border-top: none; }\n",
       "  .pi-rel { font-weight: 600; }\n",
       "  .pi-meta { color: #8a8a8a; font-size: 11px; margin-top: 2px; }\n",
       "  .pi-snippet { color: #c8c8c8; font-style: italic; margin-top: 6px; font-size: 12px; }\n",
       "&lt;/style&gt;\n",
       "&lt;script&gt;\n",
       "(function() {\n",
       "  function esc(s) { return String(s).replace(/[&amp;&lt;&gt;]/g, function(c) { return {&quot;&amp;&quot;:&quot;&amp;amp;&quot;,&quot;&lt;&quot;:&quot;&amp;lt;&quot;,&quot;&gt;&quot;:&quot;&amp;gt;&quot;}[c]; }); }\n",
       "  function nodeName(id) { var n = nodes.get(id); return n ? n.label : id; }\n",
       "  function kv(k, v) { return '&lt;div class=&quot;pi-kv&quot;&gt;&lt;span class=&quot;pi-k&quot;&gt;' + esc(k) + '&lt;/span&gt;&lt;span&gt;' + esc(v) + '&lt;/span&gt;&lt;/div&gt;'; }\n",
       "  function propsHtml(props) {\n",
       "    return Object.keys(props || {}).map(function(k) {\n",
       "      var v = props[k];\n",
       "      return kv(k, typeof v === &quot;object&quot; ? JSON.stringify(v) : v);\n",
       "    }).join(&quot;&quot;);\n",
       "  }\n",
       "  function showNodeDetail(id) {\n",
       "    var node = nodes.get(id);\n",
       "    if (!node) return;\n",
       "    var connected = edges.get().filter(function(e) { return e.from === id || e.to === id; });\n",
       "    var edgesHtml = connected.map(function(e) {\n",
       "      var out = e.from === id;\n",
       "      var other = out ? e.to : e.from;\n",
       "      var arrow = out ? &quot;→&quot; : &quot;←&quot;;\n",
       "      return '&lt;div class=&quot;pi-edge&quot;&gt;&lt;div class=&quot;pi-rel&quot;&gt;' + arrow + &quot; &quot; + esc(e.relation) + &quot; &quot; + arrow + &quot; &quot; + esc(nodeName(other)) + &quot;&lt;/div&gt;&quot; +\n",
       "        '&lt;div class=&quot;pi-meta&quot;&gt;strength ' + (e.strengthRaw || 0).toFixed(1) + &quot; · confidence &quot; + e.confidence + &quot; · &quot; + esc(e.stability) + &quot;&lt;/div&gt;&quot; +\n",
       "        (e.snippetText ? '&lt;div class=&quot;pi-snippet&quot;&gt;“' + esc(e.snippetText) + '”&lt;/div&gt;' : &quot;&quot;) +\n",
       "        &quot;&lt;/div&gt;&quot;;\n",
       "    }).join(&quot;&quot;);\n",
       "    document.getElementById(&quot;pi-body&quot;).innerHTML =\n",
       "      &quot;&lt;h2&gt;&quot; + esc(node.kind) + &quot;&lt;/h2&gt;&quot; +\n",
       "      kv(&quot;name&quot;, node.label) +\n",
       "      kv(&quot;confidence&quot;, node.confRaw) +\n",
       "      (node.aliasesText ? kv(&quot;aliases&quot;, node.aliasesText) : &quot;&quot;) +\n",
       "      propsHtml(node.props) +\n",
       "      '&lt;div class=&quot;pi-sub&quot;&gt;' + connected.length + &quot; edge(s)&lt;/div&gt;&quot; +\n",
       "      edgesHtml;\n",
       "    openInspector();\n",
       "  }\n",
       "  function showEdgeDetail(id) {\n",
       "    var edge = edges.get(id);\n",
       "    if (!edge) return;\n",
       "    document.getElementById(&quot;pi-body&quot;).innerHTML =\n",
       "      &quot;&lt;h2&gt;&quot; + esc(edge.relation) + &quot;&lt;/h2&gt;&quot; +\n",
       "      kv(&quot;from&quot;, nodeName(edge.from)) +\n",
       "      kv(&quot;to&quot;, nodeName(edge.to)) +\n",
       "      kv(&quot;strength&quot;, (edge.strengthRaw || 0).toFixed(1)) +\n",
       "      kv(&quot;confidence&quot;, edge.confidence) +\n",
       "      kv(&quot;stability&quot;, edge.stability) +\n",
       "      kv(&quot;cardinality&quot;, edge.cardinality) +\n",
       "      propsHtml(edge.props) +\n",
       "      (edge.snippetText ? '&lt;div class=&quot;pi-snippet&quot;&gt;“' + esc(edge.snippetText) + '”&lt;/div&gt;' : &quot;&quot;);\n",
       "    openInspector();\n",
       "  }\n",
       "  function openInspector() { document.getElementById(&quot;pegasus-inspector&quot;).classList.add(&quot;open&quot;); }\n",
       "  function closeInspector() { document.getElementById(&quot;pegasus-inspector&quot;).classList.remove(&quot;open&quot;); }\n",
       "  document.getElementById(&quot;pi-close&quot;).onclick = closeInspector;\n",
       "  network.on(&quot;click&quot;, function(params) {\n",
       "    if (params.nodes.length) showNodeDetail(params.nodes[0]);\n",
       "    else if (params.edges.length) showEdgeDetail(params.edges[0]);\n",
       "    else closeInspector();\n",
       "  });\n",
       "})();\n",
       "&lt;/script&gt;\n",
       "&lt;/body&gt;\n",
       "&lt;/html&gt;\" width=\"100%\" height=\"770\" style=\"border:none;\"></iframe>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%pip install -q pyvis\n",
    "\n",
    "import json\n",
    "from IPython.display import HTML\n",
    "from pyvis.network import Network\n",
    "\n",
    "# Embedded graph data (the exact result of the two-turn Trevor/Deloitte/\n",
    "# Joshua/Nova AI conversation above: 16 nodes, 21 edges) -- no external\n",
    "# file needed, this cell is fully self-contained.\n",
    "GRAPH_JSON = '{\"nodes\":[{\"id\":\"PERSON::trevor\",\"label\":\"Trevor\",\"kind\":\"PERSON\",\"aliases\":[],\"properties\":{\"liquid_assets\":\"a few hundred thousand USD (as of 2026-09)\",\"profession\":\"consultant and financial analyst\",\"stock_holdings\":\"a few hundred thousand USD, on top of liquidity (as of 2026-09)\",\"years_of_experience\":\"15 years (as of 2026-09)\"},\"confidence\":1.0},{\"id\":\"ORG::deloitte\",\"label\":\"Deloitte\",\"kind\":\"ORG\",\"aliases\":[\"Deloitte Consulting\"],\"properties\":{\"industry\":\"professional services / management consulting\"},\"confidence\":0.95},{\"id\":\"PERSON::joshua\",\"label\":\"Joshua\",\"kind\":\"PERSON\",\"aliases\":[\"Joshua (Trevor\\'s boss at Deloitte)\"],\"properties\":{},\"confidence\":0.9},{\"id\":\"PREFERENCE::agency_workplace_autonomy\",\"label\":\"Agency (workplace autonomy)\",\"kind\":\"PREFERENCE\",\"aliases\":[\"agency\",\"autonomy\",\"workplace autonomy\"],\"properties\":{\"description\":\"Trevor\\'s top stated value: autonomy over his work and decisions\"},\"confidence\":0.95},{\"id\":\"PREFERENCE::working_without_a_boss\",\"label\":\"Working without a boss\",\"kind\":\"PREFERENCE\",\"aliases\":[\"no boss\",\"being boss-free\",\"avoiding bosses\"],\"properties\":{\"intensity\":\"strong \\\\u2014 stated as \\\\\"I hate having a boss\\\\\"\"},\"confidence\":0.9},{\"id\":\"PREFERENCE::low_bureaucracy_work_environments\",\"label\":\"Low-bureaucracy work environments\",\"kind\":\"PREFERENCE\",\"aliases\":[\"lean environments\",\"minimal bureaucracy\",\"low-bureaucracy environments\"],\"properties\":{\"scope\":\"large companies and banks; never acclimated to them despite a consulting career\"},\"confidence\":0.85},{\"id\":\"PREFERENCE::skin_in_the_game_decision_making\",\"label\":\"Skin in the game (decision-making)\",\"kind\":\"PREFERENCE\",\"aliases\":[\"skin in the game\",\"ownership of big decisions\",\"decision ownership\"],\"properties\":{\"description\":\"making big decisions with personal ownership and real stakes\"},\"confidence\":0.85},{\"id\":\"TOPIC::artificial_intelligence\",\"label\":\"Artificial intelligence\",\"kind\":\"TOPIC\",\"aliases\":[\"AI\"],\"properties\":{},\"confidence\":0.9},{\"id\":\"THING::ai_startups_trevor_s_consulting_clients\",\"label\":\"AI startups (Trevor\\'s consulting clients)\",\"kind\":\"THING\",\"aliases\":[\"tech startups Trevor consults at\",\"fast-growing AI startups (Trevor\\'s clients)\"],\"properties\":{\"profile\":\"mainly AI startups growing really fast; Trevor\\'s recent consulting engagements as of 2026-09\"},\"confidence\":0.9},{\"id\":\"ORG::nova_ai\",\"label\":\"Nova AI\",\"kind\":\"ORG\",\"aliases\":[\"NovaAI\"],\"properties\":{\"founders\":\"college students, who reached out to Trevor for help\",\"growth_rate\":\"around 24% month-over-month (as of 2026-09)\",\"profitability\":\"still loss-making (as of 2026-09)\",\"quarterly_revenue\":\"almost $1M per quarter (as of 2026-09)\",\"stage\":\"early-stage, revenue-generating startup\"},\"confidence\":0.95},{\"id\":\"THING::nova_ai_cfo_offer\",\"label\":\"Nova AI CFO offer\",\"kind\":\"THING\",\"aliases\":[\"CFO offer at Nova AI\",\"Nova AI CFO role\"],\"properties\":{\"status\":\"extended to Trevor; under active consideration as of Sep 2026\",\"title\":\"Chief Financial Officer (CFO)\"},\"confidence\":0.95},{\"id\":\"THING::large_bank_career_path\",\"label\":\"Large-bank career path\",\"kind\":\"THING\",\"aliases\":[\"big bank job\",\"large banking firm path\",\"bank path\"],\"properties\":{\"description\":\"option to leave consulting for a full-time role at a large banking firm\"},\"confidence\":0.85},{\"id\":\"TOPIC::ai_company_ipo_wave\",\"label\":\"AI company IPO wave\",\"kind\":\"TOPIC\",\"aliases\":[\"AI IPO wave\",\"wave of AI company IPOs\"],\"properties\":{\"description\":\"anticipated wave of AI-company IPOs that banks are competing to organize, expected within months to years (per Trevor, Sep 2026)\"},\"confidence\":0.7},{\"id\":\"PREFERENCE::founding_his_own_company\",\"label\":\"Founding his own company\",\"kind\":\"PREFERENCE\",\"aliases\":[\"starting something on his own\",\"own venture\",\"entrepreneurship\"],\"properties\":{\"tentativeness\":\"hedged with \\\\\"maybe\\\\\"; something he wonders about (Sep 2026)\",\"timing\":\"when fully independent financially\"},\"confidence\":0.6},{\"id\":\"TOPIC::financial_side_of_ai\",\"label\":\"Financial side of AI\",\"kind\":\"TOPIC\",\"aliases\":[\"AI financials\",\"financial side of AI companies\"],\"properties\":{\"description\":\"the financial/business side of AI companies, as distinct from the technical side\"},\"confidence\":0.85},{\"id\":\"THING::full_time_ai_startup_career_path\",\"label\":\"Full-time AI startup career path\",\"kind\":\"THING\",\"aliases\":[\"AI startup full-time path\",\"joining an AI startup full-time\"],\"properties\":{\"description\":\"career option of taking a full-time job at the tech companies Trevor consults for, mainly fast-growing AI startups\"},\"confidence\":0.75}],\"edges\":[{\"id\":\"PERSON::trevor::WORKS_AT::ORG::deloitte\",\"from\":\"PERSON::trevor\",\"to\":\"ORG::deloitte\",\"relation\":\"WORKS_AT\",\"strength\":99.95,\"confidence\":0.95,\"stability\":\"mutable\",\"cardinality\":\"one_to_one\",\"snippet\":\"I\\'m Trevor, a consultant at Deloitte. I work as a financial analyst right now, and I am confused as to what I should do next in my career.\",\"properties\":{\"compensation\":\"$300,000/year (as of 2026-09)\",\"role\":\"consultant\",\"title\":\"financial analyst\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:04.175643+00:00\"},{\"id\":\"PERSON::trevor::REPORTS_TO::PERSON::joshua\",\"from\":\"PERSON::trevor\",\"to\":\"PERSON::joshua\",\"relation\":\"REPORTS_TO\",\"strength\":99.95,\"confidence\":0.9,\"stability\":\"mutable\",\"cardinality\":\"one_to_one\",\"snippet\":\"I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\",\"properties\":{\"notability\":\"the only boss Trevor has ever been able to tolerate and work with (across a 15-year career)\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:09.067083+00:00\"},{\"id\":\"PERSON::joshua::WORKS_AT::ORG::deloitte\",\"from\":\"PERSON::joshua\",\"to\":\"ORG::deloitte\",\"relation\":\"WORKS_AT\",\"strength\":99.95,\"confidence\":0.85,\"stability\":\"mutable\",\"cardinality\":\"one_to_one\",\"snippet\":\"my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\",\"properties\":{\"role\":\"manages Trevor; Trevor\\'s current boss\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:11.424810+00:00\"},{\"id\":\"PERSON::trevor::VALUES_MOST::PREFERENCE::agency_workplace_autonomy\",\"from\":\"PERSON::trevor\",\"to\":\"PREFERENCE::agency_workplace_autonomy\",\"relation\":\"VALUES_MOST\",\"strength\":99.99,\"confidence\":0.95,\"stability\":\"stable\",\"cardinality\":\"one_to_one\",\"snippet\":\"Well, I guess the thing I value the most is agency. I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\",\"properties\":{\"rank\":\"single most valued thing (stated Sep 2026)\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:16.623347+00:00\"},{\"id\":\"PERSON::trevor::PREFERS::PREFERENCE::working_without_a_boss\",\"from\":\"PERSON::trevor\",\"to\":\"PREFERENCE::working_without_a_boss\",\"relation\":\"PREFERS\",\"strength\":99.99,\"confidence\":0.9,\"stability\":\"stable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I hate having a boss, and my currect boss Joshua at Deloitte is the only one Ive ever been able to tolerate and work with.\",\"properties\":{\"intensity\":\"hates having a boss; in 15 years has tolerated only one (Joshua)\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:22.861831+00:00\"},{\"id\":\"PERSON::trevor::PREFERS::PREFERENCE::low_bureaucracy_work_environments\",\"from\":\"PERSON::trevor\",\"to\":\"PREFERENCE::low_bureaucracy_work_environments\",\"relation\":\"PREFERS\",\"strength\":99.99,\"confidence\":0.85,\"stability\":\"stable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.\",\"properties\":{\"context\":\"counterintuitive for a consultant, who is expected to have learned to deal with bureaucracies and large companies; deep down he dislikes them\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:33.303842+00:00\"},{\"id\":\"PERSON::trevor::SEEKS::PREFERENCE::skin_in_the_game_decision_making\",\"from\":\"PERSON::trevor\",\"to\":\"PREFERENCE::skin_in_the_game_decision_making\",\"relation\":\"SEEKS\",\"strength\":99.99,\"confidence\":0.8,\"stability\":\"stable\",\"cardinality\":\"one_to_many\",\"snippet\":\"At a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having. I don\\'t like that framing, but I have to admit than an element of it s true.\",\"properties\":{\"context\":\"people in his profession (consulting) are mocked for lacking skin in the game; he dislikes that framing but admits an element of it is true\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:41.155277+00:00\"},{\"id\":\"PERSON::trevor::LACKS_TECHNICAL_KNOWLEDGE_OF::TOPIC::artificial_intelligence\",\"from\":\"PERSON::trevor\",\"to\":\"TOPIC::artificial_intelligence\",\"relation\":\"LACKS_TECHNICAL_KNOWLEDGE_OF\",\"strength\":99.95,\"confidence\":0.9,\"stability\":\"mutable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I don\\'t know much about AI technically, but I understand the financials, and I know it\\'s the next big thing.\",\"properties\":{\"level\":\"not much technical knowledge (self-assessed, Sep 2026)\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:11:48.874371+00:00\"},{\"id\":\"PERSON::trevor::CONSULTS_FOR::THING::ai_startups_trevor_s_consulting_clients\",\"from\":\"PERSON::trevor\",\"to\":\"THING::ai_startups_trevor_s_consulting_clients\",\"relation\":\"CONSULTS_FOR\",\"strength\":99.95,\"confidence\":0.85,\"stability\":\"mutable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\",\"properties\":{\"client_profile\":\"mainly AI startups that are growing really fast\",\"recency\":\"recent engagements as of 2026-09\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:12:14.594998+00:00\"},{\"id\":\"THING::nova_ai_cfo_offer::OFFERED_BY::ORG::nova_ai\",\"from\":\"THING::nova_ai_cfo_offer\",\"to\":\"ORG::nova_ai\",\"relation\":\"OFFERED_BY\",\"strength\":100.0,\"confidence\":0.95,\"stability\":\"immutable\",\"cardinality\":\"one_to_one\",\"snippet\":\"The company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.\",\"properties\":{\"origin\":\"Nova AI\\'s founders (college students) reached out to Trevor for help\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:14:12.462727+00:00\"},{\"id\":\"PERSON::trevor::CONSIDERING::THING::nova_ai_cfo_offer\",\"from\":\"PERSON::trevor\",\"to\":\"THING::nova_ai_cfo_offer\",\"relation\":\"CONSIDERING\",\"strength\":99.89,\"confidence\":0.9,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"Otherwise, I could become a CFO at a smaller company and trade liquidity for a lot of stock and increddible upside. ... The company where I have been offered a role as CFO (Nova AI) has revenue already, and they are growing at around 24 percent month over month, but they are still in a loss, and have reached out to me for help.\",\"properties\":{\"hoped_for\":\"leaner environment, faster action, big decisions with skin in the game\",\"status\":\"actively weighing vs the bank path; \\\\\"my heart and brain are in conflict\\\\\"\",\"tradeoff\":\"trades liquidity/salary for stock and upside\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:15:48.930343+00:00\"},{\"id\":\"PERSON::trevor::CONSIDERING::THING::large_bank_career_path\",\"from\":\"PERSON::trevor\",\"to\":\"THING::large_bank_career_path\",\"relation\":\"CONSIDERING\",\"strength\":99.9,\"confidence\":0.85,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"At the bank though, I will be making over $500,000 a year, which is a big step up from the $300,000 Ive been earning in my current job. So what do you think? The immedate money seems exciting, but my heart and brain are in conflict\",\"properties\":{\"compensation\":\"over $500,000/year, largely cash (\\\\\"I could get paid a lot in cash\\\\\")\",\"rationale\":\"his AI-startup consulting experience would be valuable to big banks\",\"tension\":\"the immediate money seems exciting, but his heart and brain are in conflict\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:25.348819+00:00\"},{\"id\":\"THING::large_bank_career_path::CONFLICTS_WITH::PREFERENCE::low_bureaucracy_work_environments\",\"from\":\"THING::large_bank_career_path\",\"to\":\"PREFERENCE::low_bureaucracy_work_environments\",\"relation\":\"CONFLICTS_WITH\",\"strength\":99.9,\"confidence\":0.85,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"I fear that the bureaucracy at a big bank will drive me crazy. I know it sounds counterintuitive. As someone in consulting, I guess the expectation is that I would have already learnt to deal with bureaucracies and large companies, but deep down, I dont like it.\",\"properties\":{\"fear\":\"Trevor fears the bureaucracy at a big bank would drive him crazy\",\"note\":\"counterintuitive for a consultant expected to be used to large-company bureaucracy; deep down he dislikes it\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:32.226976+00:00\"},{\"id\":\"PERSON::trevor::ANTICIPATES::TOPIC::ai_company_ipo_wave\",\"from\":\"PERSON::trevor\",\"to\":\"TOPIC::ai_company_ipo_wave\",\"relation\":\"ANTICIPATES\",\"strength\":99.9,\"confidence\":0.65,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"I know it\\'s the next big thing, and I hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years.\",\"properties\":{\"source\":\"hearsay (\\\\\"I hear\\\\\"), as of Sep 2026\",\"timing\":\"next few months and years\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:35.025781+00:00\"},{\"id\":\"THING::large_bank_career_path::MOTIVATED_BY::TOPIC::ai_company_ipo_wave\",\"from\":\"THING::large_bank_career_path\",\"to\":\"TOPIC::ai_company_ipo_wave\",\"relation\":\"MOTIVATED_BY\",\"strength\":99.9,\"confidence\":0.7,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"I hear that many banks are trying to be the ones that organize the big wave of AI company IPOs in the next few months and years. My experieence at teech startups might be valuable for these big banks and I could get paid a lot in cash.\",\"properties\":{\"rationale\":\"banks are competing to organize the coming AI-company IPO wave, so Trevor\\'s AI-startup consulting experience would be valuable to them; plus high cash pay\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:38.744980+00:00\"},{\"id\":\"PERSON::trevor::ASPIRES_TO::PREFERENCE::founding_his_own_company\",\"from\":\"PERSON::trevor\",\"to\":\"PREFERENCE::founding_his_own_company\",\"relation\":\"ASPIRES_TO\",\"strength\":99.96,\"confidence\":0.6,\"stability\":\"mutable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I am not in the dire need for money, but I wonder if I should just go after liquidity and maybe start something on my own when I am fully independent.\",\"properties\":{\"status\":\"tentative \\\\u2014 hedged with \\\\\"maybe\\\\\"; something he wonders about\",\"timing\":\"once fully independent financially\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:41.438474+00:00\"},{\"id\":\"THING::nova_ai_cfo_offer::ALIGNS_WITH::PREFERENCE::skin_in_the_game_decision_making\",\"from\":\"THING::nova_ai_cfo_offer\",\"to\":\"PREFERENCE::skin_in_the_game_decision_making\",\"relation\":\"ALIGNS_WITH\",\"strength\":99.9,\"confidence\":0.7,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"At a smaller company, I was hoping things would be leaner and I would be able to act faster and make big decisions with skin in the game, something people in my profession are mocked for not having.\",\"properties\":{\"basis\":\"Trevor\\'s stated hope about smaller companies, applied to the Nova AI CFO option; not a confirmed attribute of Nova AI\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:44.103175+00:00\"},{\"id\":\"PERSON::trevor::UNDERSTANDS::TOPIC::financial_side_of_ai\",\"from\":\"PERSON::trevor\",\"to\":\"TOPIC::financial_side_of_ai\",\"relation\":\"UNDERSTANDS\",\"strength\":99.99,\"confidence\":0.85,\"stability\":\"stable\",\"cardinality\":\"one_to_many\",\"snippet\":\"I don\\'t know much about AI technically, but I understand the financials, and I know it\\'s the next big thing.\",\"properties\":{\"belief\":\"considers AI the next big thing\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:53.312450+00:00\"},{\"id\":\"TOPIC::financial_side_of_ai::ASPECT_OF::TOPIC::artificial_intelligence\",\"from\":\"TOPIC::financial_side_of_ai\",\"to\":\"TOPIC::artificial_intelligence\",\"relation\":\"ASPECT_OF\",\"strength\":100.0,\"confidence\":0.9,\"stability\":\"immutable\",\"cardinality\":\"one_to_one\",\"snippet\":\"I don\\'t know much about AI technically, but I understand the financials, and I know it\\'s the next big thing.\",\"properties\":{},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:16:55.672083+00:00\"},{\"id\":\"PERSON::trevor::CONSIDERING::THING::full_time_ai_startup_career_path\",\"from\":\"PERSON::trevor\",\"to\":\"THING::full_time_ai_startup_career_path\",\"relation\":\"CONSIDERING\",\"strength\":99.9,\"confidence\":0.75,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\",\"properties\":{\"status\":\"one of three options under consideration, Sep 2026; the vaguest of the three\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:17:49.672560+00:00\"},{\"id\":\"THING::full_time_ai_startup_career_path::WOULD_JOIN::THING::ai_startups_trevor_s_consulting_clients\",\"from\":\"THING::full_time_ai_startup_career_path\",\"to\":\"THING::ai_startups_trevor_s_consulting_clients\",\"relation\":\"WOULD_JOIN\",\"strength\":99.9,\"confidence\":0.8,\"stability\":\"time_bound\",\"cardinality\":\"one_to_many\",\"snippet\":\"I can either get a full time job at the tech companies I am consulting at recently (mainly AI startups that are growing really fast), or I could switch lanes and work for a large banking firm.\",\"properties\":{\"note\":\"the option is to convert his current consulting engagements into full-time employment\"},\"dormant\":false,\"superseded_by\":null,\"updated_at\":\"2026-09-14T18:17:52.348746+00:00\"}]}\\n'\n",
    "graph = json.loads(GRAPH_JSON)\n",
    "print(f\"{len(graph['nodes'])} nodes, {len(graph['edges'])} edges\")\n",
    "\n",
    "# Same palette as engine/src/ontomem/static/viewer.html's KIND_COLOR (light\n",
    "# mode values), so this matches the live in-app viewer's colors.\n",
    "KIND_COLOR = {\n",
    "    \"PERSON\": \"#2a78d6\",\n",
    "    \"ORG\": \"#eb6834\",\n",
    "    \"PLACE\": \"#1baf7a\",\n",
    "    \"EVENT\": \"#eda100\",\n",
    "    \"TOPIC\": \"#e87ba4\",\n",
    "    \"PREFERENCE\": \"#008300\",\n",
    "    \"THING\": \"#4a3aa7\",\n",
    "    \"OTHER\": \"#e34948\",\n",
    "}\n",
    "\n",
    "\n",
    "def node_tooltip(node):\n",
    "    lines = [f\"<b>{node['label']}</b> ({node['kind']})\"]\n",
    "    if node.get(\"aliases\"):\n",
    "        lines.append(\"aliases: \" + \", \".join(node[\"aliases\"]))\n",
    "    for k, v in (node.get(\"properties\") or {}).items():\n",
    "        lines.append(f\"{k}: {v}\")\n",
    "    lines.append(f\"confidence: {node['confidence']}\")\n",
    "    return \"<br>\".join(lines)\n",
    "\n",
    "\n",
    "def edge_tooltip(edge):\n",
    "    lines = [\n",
    "        f\"<b>{edge['relation']}</b>\",\n",
    "        f\"strength: {edge['strength']} \\u00b7 confidence: {edge['confidence']}\",\n",
    "        f\"stability: {edge['stability']} \\u00b7 cardinality: {edge['cardinality']}\",\n",
    "    ]\n",
    "    for k, v in (edge.get(\"properties\") or {}).items():\n",
    "        lines.append(f\"{k}: {v}\")\n",
    "    if edge.get(\"snippet\"):\n",
    "        lines.append(f\"<i>\\u201c{edge['snippet']}\\u201d</i>\")\n",
    "    return \"<br>\".join(lines)\n",
    "\n",
    "\n",
    "net = Network(\n",
    "    height=\"750px\",\n",
    "    width=\"100%\",\n",
    "    directed=True,\n",
    "    notebook=False,\n",
    "    cdn_resources=\"in_line\",  # embed vis.js itself -- no external CDN dependency\n",
    "    bgcolor=\"#F5F5F5\",\n",
    "    font_color=\"#000003\",\n",
    ")\n",
    "\n",
    "for node in graph[\"nodes\"]:\n",
    "    net.add_node(\n",
    "        node[\"id\"],\n",
    "        label=node[\"label\"],\n",
    "        title=node_tooltip(node),\n",
    "        color=KIND_COLOR.get(node[\"kind\"], KIND_COLOR[\"OTHER\"]),\n",
    "        shape=\"dot\",\n",
    "        size=18,\n",
    "        # Extra fields beyond what vis-network needs for rendering -- pyvis\n",
    "        # passes any unrecognized kwarg straight through onto the node\n",
    "        # object, so the click handler injected below can read the full\n",
    "        # structured record back out (same data the tooltip above is built\n",
    "        # from), not just re-parse the tooltip's HTML.\n",
    "        kind=node[\"kind\"],\n",
    "        aliasesText=\", \".join(node.get(\"aliases\") or []),\n",
    "        props=node.get(\"properties\") or {},\n",
    "        confRaw=node[\"confidence\"],\n",
    "    )\n",
    "\n",
    "for edge in graph[\"edges\"]:\n",
    "    net.add_edge(\n",
    "        edge[\"from\"],\n",
    "        edge[\"to\"],\n",
    "        label=edge[\"relation\"],\n",
    "        title=edge_tooltip(edge),\n",
    "        color=\"#8a8a8a\" if not edge.get(\"dormant\") else \"#3a3a3a\",\n",
    "        arrows=\"to\",\n",
    "        width=1 + edge[\"strength\"] / 50,\n",
    "        font={\"size\": 10, \"color\": \"#b0b0b0\", \"strokeWidth\": 0},\n",
    "        relation=edge[\"relation\"],\n",
    "        strengthRaw=edge[\"strength\"],\n",
    "        confidence=edge[\"confidence\"],\n",
    "        stability=edge[\"stability\"],\n",
    "        cardinality=edge[\"cardinality\"],\n",
    "        props=edge.get(\"properties\") or {},\n",
    "        snippetText=edge.get(\"snippet\") or \"\",\n",
    "    )\n",
    "\n",
    "net.set_options(\"\"\"\n",
    "{\n",
    "  \"physics\": {\n",
    "    \"barnesHut\": {\n",
    "      \"gravitationalConstant\": -9000,\n",
    "      \"springLength\": 150,\n",
    "      \"springConstant\": 0.04,\n",
    "      \"avoidOverlap\": 0.4\n",
    "    },\n",
    "    \"stabilization\": { \"iterations\": 300 }\n",
    "  },\n",
    "  \"interaction\": { \"hover\": true, \"tooltipDelay\": 120 }\n",
    "}\n",
    "\"\"\")\n",
    "\n",
    "# Sidebar/\"Graph Inspector\" behavior -- mirrors engine/src/ontomem/static/\n",
    "# viewer.html's own inspector drawer (same field layout: kind/name/\n",
    "# confidence/aliases/properties for nodes, relation/from/to/strength/\n",
    "# confidence/stability/cardinality/properties/snippet for edges). Injected\n",
    "# as raw CSS+JS right before </body> in the generated HTML -- `nodes`,\n",
    "# `edges`, and `network` are pyvis's own top-level `var`s in that same\n",
    "# document, so this script reuses them directly rather than redeclaring\n",
    "# its own copies of the graph data.\n",
    "SIDEBAR_HTML = \"\"\"\n",
    "<div id=\"pegasus-inspector\">\n",
    "  <div id=\"pi-header\"><h3>Graph Inspector</h3><button id=\"pi-close\" type=\"button\" aria-label=\"Close\">\\u2715</button></div>\n",
    "  <div id=\"pi-body\"><div class=\"pi-empty\">Click a node or edge to see its details.</div></div>\n",
    "</div>\n",
    "<style>\n",
    "  #pegasus-inspector {\n",
    "    position: fixed; top: 0; right: 0; height: 100%; width: min(380px, 90vw);\n",
    "    background: #141414; color: #e6e6e6; border-left: 1px solid #2a2a2a;\n",
    "    transform: translateX(100%); transition: transform .2s ease-out;\n",
    "    z-index: 9999; display: flex; flex-direction: column;\n",
    "    font-family: -apple-system, \"Segoe UI\", Roboto, sans-serif;\n",
    "    box-shadow: -18px 0 48px rgba(0,0,0,0.4);\n",
    "  }\n",
    "  #pegasus-inspector.open { transform: translateX(0); }\n",
    "  #pi-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #2a2a2a; flex-shrink: 0; }\n",
    "  #pi-header h3 { margin: 0; font-size: 14px; }\n",
    "  #pi-close { background: none; border: 1px solid #2a2a2a; color: #e6e6e6; border-radius: 6px; width: 28px; height: 28px; cursor: pointer; font-size: 13px; }\n",
    "  #pi-close:hover { background: #202020; }\n",
    "  #pi-body { flex: 1; overflow-y: auto; padding: 14px 16px; font-size: 13px; }\n",
    "  #pi-body h2 { margin: 0 0 10px; font-size: 16px; }\n",
    "  .pi-empty { color: #8a8a8a; font-style: italic; font-size: 13px; }\n",
    "  .pi-kv { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; }\n",
    "  .pi-kv .pi-k { color: #9a9a9a; }\n",
    "  .pi-sub { margin-top: 14px; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; color: #8a8a8a; }\n",
    "  .pi-edge { padding: 8px 0; border-top: 1px solid #2a2a2a; }\n",
    "  .pi-edge:first-child { border-top: none; }\n",
    "  .pi-rel { font-weight: 600; }\n",
    "  .pi-meta { color: #8a8a8a; font-size: 11px; margin-top: 2px; }\n",
    "  .pi-snippet { color: #c8c8c8; font-style: italic; margin-top: 6px; font-size: 12px; }\n",
    "</style>\n",
    "<script>\n",
    "(function() {\n",
    "  function esc(s) { return String(s).replace(/[&<>]/g, function(c) { return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\"}[c]; }); }\n",
    "  function nodeName(id) { var n = nodes.get(id); return n ? n.label : id; }\n",
    "  function kv(k, v) { return '<div class=\"pi-kv\"><span class=\"pi-k\">' + esc(k) + '</span><span>' + esc(v) + '</span></div>'; }\n",
    "  function propsHtml(props) {\n",
    "    return Object.keys(props || {}).map(function(k) {\n",
    "      var v = props[k];\n",
    "      return kv(k, typeof v === \"object\" ? JSON.stringify(v) : v);\n",
    "    }).join(\"\");\n",
    "  }\n",
    "  function showNodeDetail(id) {\n",
    "    var node = nodes.get(id);\n",
    "    if (!node) return;\n",
    "    var connected = edges.get().filter(function(e) { return e.from === id || e.to === id; });\n",
    "    var edgesHtml = connected.map(function(e) {\n",
    "      var out = e.from === id;\n",
    "      var other = out ? e.to : e.from;\n",
    "      var arrow = out ? \"\\u2192\" : \"\\u2190\";\n",
    "      return '<div class=\"pi-edge\"><div class=\"pi-rel\">' + arrow + \" \" + esc(e.relation) + \" \" + arrow + \" \" + esc(nodeName(other)) + \"</div>\" +\n",
    "        '<div class=\"pi-meta\">strength ' + (e.strengthRaw || 0).toFixed(1) + \" \\u00b7 confidence \" + e.confidence + \" \\u00b7 \" + esc(e.stability) + \"</div>\" +\n",
    "        (e.snippetText ? '<div class=\"pi-snippet\">\\u201c' + esc(e.snippetText) + '\\u201d</div>' : \"\") +\n",
    "        \"</div>\";\n",
    "    }).join(\"\");\n",
    "    document.getElementById(\"pi-body\").innerHTML =\n",
    "      \"<h2>\" + esc(node.kind) + \"</h2>\" +\n",
    "      kv(\"name\", node.label) +\n",
    "      kv(\"confidence\", node.confRaw) +\n",
    "      (node.aliasesText ? kv(\"aliases\", node.aliasesText) : \"\") +\n",
    "      propsHtml(node.props) +\n",
    "      '<div class=\"pi-sub\">' + connected.length + \" edge(s)</div>\" +\n",
    "      edgesHtml;\n",
    "    openInspector();\n",
    "  }\n",
    "  function showEdgeDetail(id) {\n",
    "    var edge = edges.get(id);\n",
    "    if (!edge) return;\n",
    "    document.getElementById(\"pi-body\").innerHTML =\n",
    "      \"<h2>\" + esc(edge.relation) + \"</h2>\" +\n",
    "      kv(\"from\", nodeName(edge.from)) +\n",
    "      kv(\"to\", nodeName(edge.to)) +\n",
    "      kv(\"strength\", (edge.strengthRaw || 0).toFixed(1)) +\n",
    "      kv(\"confidence\", edge.confidence) +\n",
    "      kv(\"stability\", edge.stability) +\n",
    "      kv(\"cardinality\", edge.cardinality) +\n",
    "      propsHtml(edge.props) +\n",
    "      (edge.snippetText ? '<div class=\"pi-snippet\">\\u201c' + esc(edge.snippetText) + '\\u201d</div>' : \"\");\n",
    "    openInspector();\n",
    "  }\n",
    "  function openInspector() { document.getElementById(\"pegasus-inspector\").classList.add(\"open\"); }\n",
    "  function closeInspector() { document.getElementById(\"pegasus-inspector\").classList.remove(\"open\"); }\n",
    "  document.getElementById(\"pi-close\").onclick = closeInspector;\n",
    "  network.on(\"click\", function(params) {\n",
    "    if (params.nodes.length) showNodeDetail(params.nodes[0]);\n",
    "    else if (params.edges.length) showEdgeDetail(params.edges[0]);\n",
    "    else closeInspector();\n",
    "  });\n",
    "})();\n",
    "</script>\n",
    "\"\"\"\n",
    "\n",
    "graph_html = net.generate_html()\n",
    "graph_html = graph_html.replace(\"</body>\", SIDEBAR_HTML + \"</body>\")\n",
    "\n",
    "escaped = (\n",
    "    graph_html.replace(\"&\", \"&amp;\").replace('\"', \"&quot;\").replace(\"<\", \"&lt;\").replace(\">\", \"&gt;\")\n",
    ")\n",
    "HTML(f'<iframe srcdoc=\"{escaped}\" width=\"100%\" height=\"770\" style=\"border:none;\"></iframe>')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0fc252ee-3825-4125-a391-0933c5ec9715",
   "metadata": {},
   "source": [
    "### Testing Recall"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7546286e-bf03-4a10-84ea-9300ef07c3a2",
   "metadata": {},
   "source": [
    "Here is the fun part. With a system that captures every data point, you can start conversations cold, without any context, and the model will stick pick up right where it left off:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c6eb8a2-07b4-4c14-81b8-91bd6bc53f48",
   "metadata": {},
   "source": [
    "(This happened in a fresh conversation. We bring up the manager by name, the specifics of the role, and a personal preference that was captured in the snippets)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ef572dd-d01b-418d-9404-f6d8aa8c93d5",
   "metadata": {},
   "source": [
    "User: <blockquote>I just spoke to joshua. He did encourage me to take the CFO role instead of taking the job at a big bank which I clearly didnt like!</blockquote>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12075e93-1d22-467e-b6f2-e5925d06fd80",
   "metadata": {},
   "source": [
    "Model: \n",
    "<blockquote>\n",
    "That's a meaningful vote of confidence — especially coming from Joshua, the only boss you've ever actually worked well with. His logic tracks too: the bank money is tempting, but you'd be trading one tolerable boss for an unknown one, while Nova AI offers you equity-level upside, a CFO title, and no one above you but two college founders who came to you for help.\n",
    "The real question now is probably the loss-making financials — do you want to dig into Nova AI's numbers (burn rate, runway, margin structure) before you commit?\n",
    "</blockquote>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "beaf5ae7-9110-4b52-9f4d-05afbbd4c7ae",
   "metadata": {},
   "source": [
    "(The model picked off right where it ended, and even brought in specifics such as its concerns about the startup's burn rate and other economics)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd8cc82b-ffcc-4027-89f7-330783ac3dd5",
   "metadata": {},
   "source": [
    "User: <blockquote>I've also spoken to my wife, and we decided that the pay hike isn't worth the misery. I'd rather live a little and take risks now, rather than chase a paycheck only to wake up one day too old to enjoy the fruits of my labor.</blockquote>\n",
    "\n",
    "Model: \n",
    "<blockquote>\n",
    "Sounds like you've got your answer, then — and it's telling that the two people whose judgment you actually trust (Joshua and your wife) both landed on the same side of it. Walking away from $500k to protect your agency and take a real swing at upside is exactly the \"skin in the game\" move you said you wanted.\n",
    "The one remaining box to tick is diligence on Nova AI itself: burn rate and runway at current growth, what's driving the losses (growth spend vs. structural margin problems), and the terms of your equity. Want to work through any of that?\n",
    "</blockquote>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "45730a17-0e0e-43bd-9be9-da53e34a1ada",
   "metadata": {},
   "source": [
    "(The model understood the question, brought up the $500,000 specifics, and even remembered niche expressions that the user mentioned previously like \"Skin in the game\", while continuing the previous conversation fluidly)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9acb1a17-96b4-41aa-aee4-53718ddf7354",
   "metadata": {},
   "source": [
    "## Everything that Broke, and learnings"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6ba2a01-10c2-4521-a2ed-8b9c30b8be80",
   "metadata": {},
   "source": [
    "### The choice of extractor model"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8473e156-abd6-4cad-a677-04104105e178",
   "metadata": {},
   "source": [
    "During the first few rounds of graph construction, I used a lightweight model without reasoning capabilites in an attempt to make the extraction as token efficient as possible. This was mistake. With the model unable to reason and deliberate as to what information really deserved to make it into the graph, and double check its work, the quality of the graph produced was poor, with important user specific information never making into the graph, edges being invented for facts that should have been properties of an existing edge, and absence of second order edges between two nodes that were connected to the user node, but also connected to each other.  \n",
    "\n",
    "On swapping the model for a reasoning model, the quality of output for smaller conversations went up immediately. The model identified all important facts, thought through higher order relationships, and also differentiated between information that was user-specific (and worth adding to the graph), vs universal facts that are known by LLMs already. However for longer conversations, the model thought for large amounts of time — sometimes up to 15 minutes and timed out without any output. One reason behind this was me sending the entire conversation transcript to the extraction model, and including the agent's turns, to provide context around why the user responded the way that they did. As the transcript got very long, the bookkeeping of facts that the model had to do became overwhelming, and it simply could not construct the graph in time.  \n",
    "\n",
    "However, even after sending only the user's turns to the model, graph construction still took a long time (5-7) minutes before a suboptimal graph was produced. Looking at the reasoning logs of the model, I discovered that it essentially tried to build up the entire graph in its \"head\" (its reasoning trace) before commiting the entire graph all at once to the database. To do so, it would keep repeating the entire graph's schema every time it updated it, modifying it in its head as it made changes. The solution to this problem was to instruct the model to write every node and edge into the graph the moment it considered them, and modifying or appending to them in the graph later if new information about them was revealed later on in the conversation.  \n",
    "\n",
    "This approach provided an extra layer of redundancy. If the model was cut off midway, its work wouldnt be lost, and it would be able to read the graph and pick up from where it left off when resumed. Both of these changes reduced extraction time for a reasonable conversation (with 10-20 turns) to around 2-3 minutes which was far more reasonable."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77c9bb0e-3f53-4297-83c7-c98d16087bde",
   "metadata": {},
   "source": [
    "### Overfitting to the system prompt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4dd5117b-8afd-452f-a044-17e534f4f284",
   "metadata": {},
   "source": [
    "Another mistake that I made was including examples of previous extraction failures in the system prompt of the extractor model to demonstrate common failure modes and get the model to avoid them. This didn't work, and caused the model to overfit to the system prompt. It produced the right output when the exact example mentioned in the system prompt was tested, but failed when a different version of the same example was tested.  \n",
    "\n",
    "However, by generalizing the instructions to the model, and having it reason over whether it was following those instructions, the quality of output got a lot better in general."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78b103a4-607f-4dcd-b57d-dfe4b805d30d",
   "metadata": {},
   "source": [
    "### Attempting to build the model harness myself"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8d5429b-59c6-4fa5-a497-94d16d0fc354",
   "metadata": {},
   "source": [
    "To prototype early iterations of this system, I figured that if I couldn't reliably connect and test this memory system with chatbots on the web, it might make more sense to build a simple model harness locally on my laptop. I built one and used a free Gemini API key from Google AI Studio to set up a simple chat interface. This was not a great idea in hindsight. I wasted a lot of time building the harness and being unsatisfied with the output. To make things worse, I tightly coupled the memory system and harness together, to a point where I was spending more time trying to fix bugs in the harness than actually iterating on the memory system. At times, it was hard to locate the source of errors. Was there a mistake in how I built the harness, or how I connected it to the memory system, or in some part of the memory system itself? This was unclear.\n",
    "\n",
    "Eventually, I switched to Opencode, which should have been my first pick. Being open source, I was free to tinker with it as I liked. Fortunately, I didn't have to, and was able to build the memory system to be modular and work as a plugin with Opencode rather than requiring any deep integration. This also made it easier for others to try the system out as it reduced installation times, and was somewhat straightforward to setup as a plugin."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c0f8079-5788-4eea-a08a-c2df8e1be8eb",
   "metadata": {},
   "source": [
    "## Open Problems"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bdbf9b1b-bf1e-464c-8a91-d6563b5cc093",
   "metadata": {},
   "source": [
    "### Extraction is still an active process"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd23c6db-a3bd-45f9-a972-42ac9068be78",
   "metadata": {},
   "source": [
    "The central principle behind building this system was to use the dynamics of memory in humans as a design inspiration for our architecuture. A key deviation from this principle however, is that the consolidation of memories into the graph in this system is still an active process that uses another LLM, unlike the passive consolidation that happens in humans — presumably when we sleep.  \n",
    "\n",
    "I don't fully understand how consolidation of memories works in human brains, but I believe that it is pretty evident that we don't reason about our day when we sleep and chose to write things into our memory. Using an LLM to build the knowledge graph and decide what goes in and goes out is akin to that.  \n",
    "\n",
    "Perhaps, in later implementations of this system, we will be able to connect the consolidation process more closely to the transformer running in the chat session itself, marking facts as important and worth remembering during the chat session rather than after it. Possibly, we may even be able to drop the knowledge graph with its engineered decay rates and artifical construction altogether, in favour of something even more natural, like a dedicated neural network that is small enough to learn important details continously on its own and act as a storehouse of information. In that context, phenomena like catastophic forgetting that is common with continual learning may be viewed as a feature rather than a bug, similar to how humans forget old memories to make room for new ones. However at this point  these are all speculations, and I have no experimental backing to suggest that such an architecture is feasible."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a589185a-5a60-4911-8458-afe24fc54eb5",
   "metadata": {},
   "source": [
    "### The system is currently untested at very large sizes"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d5a50ee-9f56-451c-b950-8b3f97debd4d",
   "metadata": {},
   "source": [
    "As of my writing of this writeup in September 2026, I have not yet been able to test the graph at extremely large sizes and observe its behaviour when holding extremely large amounts of information. It shows promise compared to sumary based memory systems, and recalls specific details far more accurately than providers on the internet when tested over a small number of conversations (10 - 15 turns over 4-5 conversations), but unexpected behaviour is possible at larger sizes. I plan on writing a follow up to this writeup in the near future after I have stress tested the system for its failure modes."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "951e3eff-2599-495c-9b4e-06bfa3ead70b",
   "metadata": {},
   "source": [
    "### Gimmicks with the Opencode Plugin"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9718a350-6379-4440-8a58-a48f9a4a911c",
   "metadata": {},
   "source": [
    "The opencode plugin for this system is registered on the npm registry under the name \"pegasus-opencode\". The current implementation of this plugin (version 0.2.0) has a few issues that need to be worked out, such as the first write to the graph often taking very long (3-4 minutes), and possibly some other issues that I haven't hit yet. Working on resolving these as quickly as possible."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80ee370f-f21b-4a46-a833-f8abdb771cb9",
   "metadata": {},
   "source": [
    "## Trying it yourself"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03b82d73-4611-44d9-9429-589d33d573ae",
   "metadata": {},
   "source": [
    "Since the nodes and edges of the graph resemble a constellation of stars, I've decided to call this system \"Pegasus\", although in most parts of the code, you will simple see it referred to as \"onto-mem\" or some variation of that name."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53340112-e86a-4de6-bc12-55a69b7eefef",
   "metadata": {},
   "source": [
    "The entire source code for this project is open-source with an MIT license at my Github: [Pegasus - Github](https://github.com/Stponnada/Pegasus)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15ceba42-fe41-449b-bbd3-93e199d6ce20",
   "metadata": {},
   "source": [
    "Currently, this engine as a plugin only exists for Opencode, (preferrably with a go subscription) but I am working on making it available for Claude Code and Codex as well. \n",
    "\n",
    "To install for Opencode, run:\n",
    "\n",
    "```bash\n",
    "npm install pegasus-opencode\n",
    "opencode plugin pegasus-opencode\n",
    "```"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
