[{"data":1,"prerenderedAt":9250},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":374,"course-wordcounts":9118,"ref-card-index":9174},[4,28,50,71,120,152,205,230,286,306,331,352],{"module":5,"moduleNumber":6,"slug":7,"lessons":8},"Foundations",1,"foundations",[9,15,21],{"title":10,"path":11,"lessonNumber":6,"topics":12,"summary":14},"What Is an Algorithm?","\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm",[5,13],"Correctness & Induction","An algorithm is a finite, mechanical recipe that transforms inputs into outputs. We pin down what counts as an algorithm, how we write one down, and the three things we always ask of it: is it correct, is it fast, and can we prove it.\n",{"title":16,"path":17,"lessonNumber":18,"topics":19,"summary":20},"Asymptotic Analysis","\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis",2,[16],"We measure an algorithm's running time as a function of its input size, then strip away machine-specific constants and lower-order terms to compare algorithms cleanly. This lesson defines the RAM model and the $O$, $\\Omega$, $\\Theta$, $o$, and $\\omega$ notations, and shows how to read the cost of loops off the page.\n",{"title":22,"path":23,"lessonNumber":24,"topics":25,"summary":27},"Recurrences and the Master Theorem","\u002Falgorithms\u002Ffoundations\u002Frecurrences",3,[26],"Recurrences","Recursive and divide-and-conquer algorithms describe their own running time with a recurrence: $T(n)$ in terms of $T$ on smaller inputs. We solve recurrences three ways — drawing the recursion tree, guessing-and-verifying by induction, and applying the Master Theorem — using merge sort as the running example.\n",{"module":29,"moduleNumber":18,"slug":30,"lessons":31},"Divide & Conquer","divide-and-conquer",[32,38,44],{"title":33,"path":34,"lessonNumber":6,"topics":35,"summary":37},"Divide and Conquer & Mergesort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort",[29,36],"Comparison Sorting","Divide and conquer breaks a problem into smaller copies of itself, solves them recursively, and stitches the answers together. We meet the paradigm through mergesort — its merge step, its loop-invariant proof, and the recursion tree that pins its cost at $\\Theta(n\\log n)$ — then glimpse Karatsuba multiplication as a second example of the same idea.",{"title":39,"path":40,"lessonNumber":18,"topics":41,"summary":43},"Quicksort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort",[36,42],"Probabilistic Analysis","Quicksort sorts in place by partitioning around a pivot and recursing on each side. We give Lomuto and Hoare partitioning with a correctness invariant, see why a bad pivot costs $\\Theta(n^2)$ while a balanced one gives $\\Theta(n\\log n)$, and prove that randomizing the pivot makes the expected cost $\\Theta(n\\log n)$ on every input.",{"title":45,"path":46,"lessonNumber":24,"topics":47,"summary":49},"Linear-Time Selection","\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection",[48,29],"Order Statistics","Finding the $k$-th smallest element looks like it should require sorting, but it does not. Quickselect adapts quicksort's partition to recurse on just one side, achieving expected $O(n)$. The median-of-medians algorithm guarantees a good pivot with the groups-of-five trick, pushing the worst case down to a provable $O(n)$.",{"module":51,"moduleNumber":24,"slug":52,"lessons":53},"Sorting & Order Statistics","sorting",[54,60,65],{"title":55,"path":56,"lessonNumber":6,"topics":57,"summary":59},"Heaps and Heapsort","\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort",[58,36],"Heaps","A binary heap is a tree we store flat in an array, with index arithmetic standing in for pointers. We build the max-heap property bottom-up in $O(n)$ time, sort in place in $\\Theta(n\\log n)$ by repeatedly extracting the maximum, and reuse the same structure to implement a priority queue.",{"title":61,"path":62,"lessonNumber":18,"topics":63,"summary":64},"Lower Bounds for Comparison Sorting","\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds",[36],"Every sort we have seen runs in $\\Omega(n\\log n)$, and that is no accident. Modeling a sort as a decision tree of comparisons, we show any such tree must have $n!$ leaves, forcing height $\\ge \\log_2(n!) = \\Omega(n\\log n)$ — a worst-case bound no comparison sort can ever beat.",{"title":66,"path":67,"lessonNumber":24,"topics":68,"summary":70},"Sorting in Linear Time","\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting",[69],"Linear-Time Sorting","The $\\Omega(n\\log n)$ barrier only binds algorithms that compare. By instead using keys as array indices we slip past it: counting sort runs in $\\Theta(n+k)$ and is stable, radix sort layers it digit by digit, and bucket sort averages $\\Theta(n)$ on uniform data. We see exactly when each applies.",{"module":72,"moduleNumber":73,"slug":74,"lessons":75},"Data Structures",4,"data-structures",[76,82,88,93,99,105,113],{"title":77,"path":78,"lessonNumber":6,"topics":79,"summary":81},"Elementary Data Structures","\u002Falgorithms\u002Fdata-structures\u002Felementary-structures",[80],"Linear Structures","Every container is built one of two ways: **contiguous** in an array, or **linked** through pointers. We trade cache-friendly random access against $O(1)$ splicing, derive the **amortized $O(1)$** append of a doubling dynamic array, and assemble the two ordered access disciplines — the LIFO **stack** and the FIFO **queue** (with its generalization, the **deque**) — on top of both.",{"title":83,"path":84,"lessonNumber":18,"topics":85,"summary":87},"Hash Tables","\u002Falgorithms\u002Fdata-structures\u002Fhash-tables",[86],"Hashing","A hash table implements the dictionary — insert, search, delete — in expected $O(1)$ time by scattering keys across an array with a hash function. We build up from direct addressing, handle collisions by chaining and by open addressing, analyze the load factor $\\alpha$, and see how universal hashing earns its expected-time guarantee against every input.",{"title":89,"path":90,"lessonNumber":24,"topics":91,"summary":92},"Binary Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees",[89],"A binary search tree keeps keys ordered so that every operation follows a single root-to-leaf path. We state the BST property, give search and insert, find minimum, maximum, and successor, see that an inorder walk emits the keys in sorted order, and confront the catch — every operation costs $O(h)$, and a carelessly built tree degrades to height $h = \\Theta(n)$, motivating balance.",{"title":94,"path":95,"lessonNumber":73,"topics":96,"summary":98},"AVL Trees","\u002Falgorithms\u002Fdata-structures\u002Favl-trees",[97],"Balanced Trees","An AVL tree is the first balanced BST: at every node the two subtrees' heights differ by at most $1$. A Fibonacci-style minimal-node argument forces height $h \\le 1.44\\log_2 n = O(\\log n)$, so search, insert, and delete are all $O(\\log n)$. Insertion rebalances with at most one of four rotation cases (LL, RR, LR, RL); deletion may rotate all the way to the root.",{"title":100,"path":101,"lessonNumber":102,"topics":103,"summary":104},"Balanced Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees",5,[97],"An ordinary BST can degrade to height $\\Theta(n)$; balanced search trees guarantee $h = O(\\log n)$ by maintaining invariants and repairing them after every update. We meet rotations, the local restructuring primitive, then red-black trees, whose color invariants force logarithmic height, and finally B-trees, which trade tall-and-thin for short-and-wide to win on disk.",{"title":106,"path":107,"lessonNumber":108,"topics":109,"summary":112},"Disjoint Sets (Union-Find)","\u002Falgorithms\u002Fdata-structures\u002Funion-find",6,[110,111],"Disjoint Sets","Amortized Analysis","The disjoint-set data structure tracks a partition of elements into groups, answering \"are these two in the same group?\" and merging groups on demand. A forest of parent pointers, sped up by union by rank and path compression, drives every operation to near-constant $O(\\alpha(n))$ amortized time — the engine behind connectivity queries and Kruskal's minimum spanning tree.",{"title":114,"path":115,"lessonNumber":116,"topics":117,"summary":119},"Fenwick & Segment Trees","\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees",7,[118],"Range Queries","A prefix-sum array answers a range sum in $O(1)$ but pays $O(n)$ per update; a plain array updates in $O(1)$ but pays $O(n)$ per range sum. Fenwick and segment trees give us _both_ in $O(\\log n)$. The Fenwick (binary indexed) tree is a tiny array keyed by the low bit; the segment tree is a general balanced tree over canonical ranges that handles any associative aggregate and, with lazy propagation, range updates too.",{"module":121,"moduleNumber":102,"slug":122,"lessons":123},"Sequences & Strings","sequences",[124,130,135,141,147],{"title":125,"path":126,"lessonNumber":6,"topics":127,"summary":129},"Two Pointers, Sliding Windows & Prefix Sums","\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows",[128],"Array Techniques","A family of array idioms that collapse an obvious $O(n^2)$ scan into a single $O(n)$ pass by maintaining an invariant as indices move. We meet two pointers (converging on a sorted array, and a fast\u002Fslow pair for in-place rewriting), the sliding window (fixed and variable size, amortized $O(n)$), and prefix sums, which answer any range-sum in $O(1)$ and count subarrays summing to $k$.",{"title":131,"path":132,"lessonNumber":18,"topics":133,"summary":134},"Monotonic Stacks & Queues","\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks",[128],"A **monotonic stack** keeps its contents sorted by popping every element that would break the order before each push — turning a family of \"previous\u002Fnext greater (or smaller) element\" questions into a single $O(n)$ scan. We derive the next-greater-element routine and its amortized analysis, fuse two such scans to measure the **largest rectangle in a histogram** in linear time, and extend the idea to a **monotonic deque** that streams the **sliding-window maximum** in $O(n)$.",{"title":136,"path":137,"lessonNumber":24,"topics":138,"summary":140},"Binary Search on the Answer","\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer",[139],"Searching","Binary search is not really about arrays — it is about locating the boundary of a **monotone predicate** $p(x)$ in $O(\\log(\\text{range}))$ probes. We first pin down the half-open `while (lo \u003C hi)` template for $\\textsc{lower\\_bound}$ and $\\textsc{upper\\_bound}$, then generalize to \"binary search on the answer\": whenever feasibility is monotone in a numeric parameter, we binary search the parameter itself, calling a feasibility check at each step.",{"title":142,"path":143,"lessonNumber":73,"topics":144,"summary":146},"String Matching: Rabin–Karp, KMP & Z","\u002Falgorithms\u002Fsequences\u002Fstring-matching",[145],"Strings","Given a text $T$ of length $n$ and a pattern $P$ of length $m$, find every occurrence of $P$ in $T$. The naive scan costs $O(nm)$; we beat it three ways. Rabin–Karp uses a **rolling hash** to test alignments in $O(1)$ amortised each, with expected $O(n+m)$. KMP precomputes a **failure function** so the scan never re-reads a text character, for worst-case $O(n+m)$. The **Z-function** gives the same bound from a different angle and converts freely to KMP's table.",{"title":148,"path":149,"lessonNumber":102,"topics":150,"summary":151},"Tries & Prefix Trees","\u002Falgorithms\u002Fsequences\u002Ftries",[145],"A **trie** stores a set of strings in a tree keyed by _characters_, so that insert, search, and prefix-test all run in $O(L)$ time — the length of the key, _independent of how many keys are stored_. Shared prefixes are stored once, which makes tries the natural structure for autocomplete, wildcard dictionaries, board word-search, and — over the alphabet $\\{0,1\\}$ — the maximum-XOR-pair problem.",{"module":153,"moduleNumber":108,"slug":154,"lessons":155},"Graphs","graphs",[156,163,168,173,178,183,188,193,199],{"title":157,"path":158,"lessonNumber":6,"topics":159,"summary":162},"Graph Representations and Traversal","\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal",[160,161],"Graph Representations","Graph Traversal","A graph captures _relationships_ — who connects to whom. We fix the vocabulary, weigh the two standard representations (adjacency list versus matrix), then meet the two explorations you'll use constantly: breadth-first search, which finds shortest paths by number of edges, and depth-first search, whose discovery and finish times reveal a graph's hidden structure. Both run in $O(V + E)$.",{"title":164,"path":165,"lessonNumber":18,"topics":166,"summary":167},"Topological Sort and Strong Connectivity","\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc",[161],"Directed acyclic graphs model dependencies: tasks that must precede other tasks. A _topological order_ lays such a graph out in a line so every edge points forward, and depth-first finish times hand it to us almost for free. We then ask the harder question for graphs _with_ cycles: which vertices can reach each other? The answer is the strongly connected components, found by a two-pass DFS.",{"title":169,"path":170,"lessonNumber":24,"topics":171,"summary":172},"Minimum Spanning Trees","\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees",[169],"Given a weighted network, how do we connect everything as cheaply as possible? The answer is a minimum spanning tree. One lemma, the cut property, justifies _every_ correct MST algorithm, and from it two famous greedy methods fall out: Kruskal's, which grows a forest edge by edge with a union-find structure, and Prim's, which grows a single tree using a priority queue.",{"title":174,"path":175,"lessonNumber":73,"topics":176,"summary":177},"Shortest Paths","\u002Falgorithms\u002Fgraphs\u002Fshortest-paths",[174],"Finding the cheapest route through a weighted network is one of the most-used algorithms in computing. A single operation — _relaxation_ — underlies them all. Dijkstra's algorithm solves the non-negative case greedily; Bellman-Ford handles negative edges and detects negative cycles; and Floyd-Warshall finds the shortest path between _every_ pair of vertices.",{"title":179,"path":180,"lessonNumber":102,"topics":181,"summary":182},"Network Flow","\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow",[179],"How much can flow through a network from source to sink? Max-flow is a surprisingly general model — once you see a problem as flow, a whole toolbox opens up. We build flow networks, find maximum flows by repeatedly pushing along augmenting paths in the residual graph, prove the max-flow min-cut theorem, and watch bipartite matching fall out as a special case.",{"title":184,"path":185,"lessonNumber":108,"topics":186,"summary":187},"Bridges & Articulation Points","\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points",[153],"A **bridge** is an edge whose removal disconnects the graph; an **articulation point** is a vertex whose removal does. Both are single points of failure in a network. A single depth-first search computes discovery times and **low-links**, and two local criteria — $low[v] > disc[u]$ for bridges, $low[v] \\ge disc[u]$ for cut vertices — find them all in $O(V+E)$.",{"title":189,"path":190,"lessonNumber":116,"topics":191,"summary":192},"Lowest Common Ancestor & Binary Lifting","\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor",[153],"Given a rooted tree, the lowest common ancestor of $u$ and $v$ is the deepest node that is an ancestor of both. A naive walk answers one query in $O(h)$; **binary lifting** precomputes the $2^k$-th ancestor of every node in $O(n\\log n)$, then answers $k$-th-ancestor and LCA queries in $O(\\log n)$ each. We derive both jumps, apply them to tree distance, and compare against the Euler-tour + RMQ and Tarjan offline alternatives.",{"title":194,"path":195,"lessonNumber":196,"topics":197,"summary":198},"2-SAT via Implication Graphs","\u002Falgorithms\u002Fgraphs\u002Ftwo-sat",8,[153],"A boolean formula whose every clause has exactly two literals can be solved in _linear_ time — even though its three-literal cousin is NP-complete. The trick is to read each clause as a pair of implications, build a directed graph on the $2n$ literals, and ask a question we already know how to answer: which literals share a strongly connected component? The formula is satisfiable iff no variable lands in the same SCC as its own negation, and the SCCs' topological order hands us a satisfying assignment for free.",{"title":200,"path":201,"lessonNumber":202,"topics":203,"summary":204},"Eulerian Tours","\u002Falgorithms\u002Fgraphs\u002Feulerian-tours",9,[153],"An **Eulerian tour** uses every _edge_ of a graph exactly once. We give the exact parity and balance conditions under which one exists (even degree for undirected graphs, in-degree equal to out-degree for directed) and Hierholzer's $O(E)$ algorithm that constructs one by splicing closed sub-tours. We contrast this sharply with the **Hamiltonian** problem (visit every _vertex_ once), which is NP-complete: visiting edges is easy, visiting vertices is hard.",{"module":206,"moduleNumber":116,"slug":207,"lessons":208},"Greedy Algorithms","greedy",[209,214,220,225],{"title":210,"path":211,"lessonNumber":6,"topics":212,"summary":213},"The Greedy Method","\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method",[206],"A greedy algorithm builds a solution one locally-best choice at a time and never looks back. We pin down the two properties that make this work — the greedy-choice property and optimal substructure — prove the canonical activity-selection algorithm correct with an exchange argument, watch greedy fail spectacularly on the 0\u002F1 knapsack, and glimpse matroids as the theory that says exactly when greed is good.",{"title":215,"path":216,"lessonNumber":18,"topics":217,"summary":219},"Scheduling & Interval Partitioning","\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals",[218],"Greedy","Three classic scheduling problems all yield to greedy algorithms — and all three turn on a single design decision: which key to sort by. Interval scheduling sorts by **finish** time to pack the most compatible jobs; interval partitioning sorts by **start** time and proves the rooms needed equal the maximum overlap **depth**; minimizing maximum lateness sorts by **deadline** and is justified by an adjacent-swap exchange argument.",{"title":221,"path":222,"lessonNumber":24,"topics":223,"summary":224},"Huffman Codes","\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes",[206],"Huffman coding is the greedy method's most beautiful application: it builds a provably optimal prefix-free binary code by repeatedly merging the two least frequent symbols. We develop prefix-free codes as binary trees, give the algorithm with a priority queue, build a Huffman tree from example frequencies, prove optimality with the same greedy-choice-plus-substructure argument, and pin the running time at $O(n\\log n)$.",{"title":226,"path":227,"lessonNumber":73,"topics":228,"summary":229},"Matroids & Exchange Arguments","\u002Falgorithms\u002Fgreedy\u002Fmatroids",[218],"The capstone of the greedy module: _why_ and _when_ a greedy algorithm is provably optimal. We recap the two correctness templates — **greedy-stays-ahead** and the **exchange argument** — then meet the **matroid** $M=(S,\\mathcal{I})$, an abstraction whose **exchange property** is exactly the structure greedy needs. The matroid–greedy theorem says sorting by weight and taking what stays independent yields a maximum-weight basis _if and only if_ the structure is a matroid. Kruskal's MST is the canonical instance; 0\u002F1 knapsack and TSP are the canonical failures.",{"module":231,"moduleNumber":196,"slug":232,"lessons":233},"Dynamic Programming","dynamic-programming",[234,239,245,250,255,260,265,270,275,280],{"title":235,"path":236,"lessonNumber":6,"topics":237,"summary":238},"Principles of Dynamic Programming","\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples",[231,26],"Dynamic programming is recursion with memory: when a recursive solution re-solves the same subproblems again and again, we solve each one once and store the answer. We pin down the two structural conditions that make this work — overlapping subproblems and optimal substructure — contrast top-down memoization with bottom-up tabulation, and distil the whole method into a five-step recipe.",{"title":240,"path":241,"lessonNumber":18,"topics":242,"summary":244},"Sequence Alignment & LCS","\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp",[231,243],"String Structures","Two strings can be compared by asking how much of one survives inside the other. The longest common subsequence (LCS) and edit distance are the two classic answers, and they are the _same_ dynamic program wearing different costs. We derive the LCS recurrence by examining the last characters, fill a worked DP table, reconstruct the subsequence, and then show edit distance as the identical $\\Theta(mn)$ pattern.",{"title":246,"path":247,"lessonNumber":24,"topics":248,"summary":249},"Longest Increasing Subsequence","\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence",[231],"Given a sequence of numbers, how long is its longest strictly increasing subsequence? A first dynamic program indexes subproblems by the element each subsequence _ends at_, giving an $O(n^2)$ solution with parent-pointer reconstruction. A sharper idea, the patience-sorting _tails_ array searched by binary search, drops the time to $O(n\\log n)$. We then fold in the variants: non-decreasing, counting, Russian-doll envelopes, and bitonic.",{"title":251,"path":252,"lessonNumber":73,"topics":253,"summary":254},"Knapsack & Subset Problems","\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack",[231],"We start from $\\textsc{Subset-sum}$ — does some sublist hit a target $t$? — and its include\u002Fexclude recurrence over a boolean table $A(i, u)$, then bolt on values to get 0\u002F1 knapsack as the same machine with $\\lor$ promoted to $\\max$. We fill both tables, recover the chosen items, and confront the surprise that the $\\Theta(nt)$ running time is only _pseudo-polynomial_ — exponential in the bit length $b$, and unimprovable unless $\\mathrm{P}=\\mathrm{NP}$ since subset-sum is $\\textsc{NP-complete}$. The fractional variant reveals the sharp line between greedy and dynamic programming.",{"title":256,"path":257,"lessonNumber":102,"topics":258,"summary":259},"Coin Change & Unbounded Knapsack","\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded",[231],"The previous lesson let each item be taken at most once. Drop that cap — items may be reused _any number of times_ — and the 0\u002F1 knapsack collapses from a two-dimensional table to a one-dimensional one, because there is no longer a prefix of \"already-used\" items to track. We meet **unbounded knapsack**, then its most famous instance, **coin change**: the minimum-coins recurrence $C[a] = 1 + \\min_c C[a-c]$, and the counting variant where the _order of the loops_ decides whether you count unordered combinations or ordered sequences — the classic bug. Greed fails in general but works for canonical coin systems.",{"title":261,"path":262,"lessonNumber":108,"topics":263,"summary":264},"Interval DP","\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp",[231],"Many problems ask for the best way to combine a contiguous range of items, and the answer is a dynamic program over subintervals $[i,j]$ that chooses a split point $k$. We derive the pattern from matrix-chain multiplication — parenthesising a product to minimize scalar multiplications in $O(n^3)$ — distil it into a reusable template filled by increasing interval length, and then meet its sharpest variant: the \"last operation\" trick behind Burst Balloons and cutting a stick, where fixing the _last_ move (not the first) makes the two sides independent.",{"title":266,"path":267,"lessonNumber":116,"topics":268,"summary":269},"Dynamic Programming on Trees","\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp",[231],"When the subproblems of a dynamic program are _rooted subtrees_, a single post-order DFS solves the whole thing in $O(n)$: each node combines the already-computed answers of its children. We meet the archetype — maximum-weight independent set on a tree — then the \"path through a node\" pattern behind tree diameter and maximum path sum, and finally **rerooting**, which computes a per-node answer for _every_ node as root in $O(n)$ with two passes.",{"title":271,"path":272,"lessonNumber":196,"topics":273,"summary":274},"Bitmask DP","\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp",[231],"When a subproblem depends not on an index or a prefix but on _which subset_ of a small ground set has been used, we can encode that subset as the bits of an integer and index a DP table by it. With $n \\le \\sim 20$ the $2^n$ subsets fit in a table, turning $\\Theta(n!)$ brute force into $O(2^n \\cdot \\text{poly}(n))$. We meet the bit tricks, the Held–Karp TSP archetype, assignment by mask, subset-sum partitioning, and submask enumeration with its $3^n$ bound.",{"title":276,"path":277,"lessonNumber":202,"topics":278,"summary":279},"DP Optimizations","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations",[231],"A correct DP recurrence is only half the battle; its naive evaluation is often a factor of $n$ slower than necessary. This capstone surveys five techniques, monotonic-queue, the convex hull trick, divide-and-conquer optimization, Knuth's optimization, and SOS DP, that each exploit _structure in the transition_ (a sliding window, linear costs, monotone optimal splits, the quadrangle inequality, or subset lattices) to shave an $O(n)$, $O(\\log n)$, or worse factor off the running time.",{"title":281,"path":282,"lessonNumber":283,"topics":284,"summary":285},"Dynamic Programming on Graphs","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs",10,[231],"Many graph algorithms are dynamic programs in disguise: the subproblem is the _best value reachable under a restricted resource_ — intermediate vertices allowed, edges allowed, or a topological prefix — and edge _relaxation_ is the DP transition. We frame Floyd–Warshall as the archetype ($O(V^3)$ all-pairs shortest paths), Bellman–Ford as a DP over path length (the at-most-$K$-stops variant), DAG-DP in topological order ($O(V+E)$), and Warshall's transitive closure as the boolean analog.",{"module":287,"moduleNumber":202,"slug":288,"lessons":289},"Backtracking & Search","backtracking",[290,296,301],{"title":291,"path":292,"lessonNumber":6,"topics":293,"summary":295},"Backtracking: Subsets, Permutations & Combinations","\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals",[294],"Backtracking","Backtracking builds a solution one choice at a time and abandons a partial solution the moment it cannot be completed, exploring a state-space tree by depth-first search. We meet the universal choose\u002Fexplore\u002Fun-choose template, derive the canonical enumerations — subsets ($2^n$), permutations ($n!$), and combinations ($\\binom{n}{k}$) — handle duplicate elements by skipping equal siblings, and see how pruning turns an exponential search into a tractable one.",{"title":297,"path":298,"lessonNumber":18,"topics":299,"summary":300},"Constraint Search: N-Queens & Sudoku","\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search",[294],"Many hard puzzles are **constraint satisfaction problems**: assign each variable a value from its domain so that every constraint holds. Backtracking solves them by assigning variables one at a time and rejecting a partial assignment the instant a constraint breaks. We make the rejection cheap — $O(1)$ conflict checks for N-Queens via column and diagonal sets — and prune harder with **forward checking**, **MRV** ordering, and **constraint propagation**, which is what lets an exponential search actually finish.",{"title":302,"path":303,"lessonNumber":24,"topics":304,"summary":305},"Branch & Bound and Meet in the Middle","\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound",[294],"Plain backtracking prunes a search tree by _feasibility_; for _optimization_ problems we can prune far more aggressively by _value_. **Branch and bound** keeps the best complete solution found so far and discards any partial solution whose optimistic bound cannot beat it. **Meet in the middle** splits the instance in two, enumerates each half, and recombines by binary search — turning $2^n$ into $O(2^{n\u002F2}\\,n)$ and pushing exact search out to $n \\approx 40$.",{"module":307,"moduleNumber":283,"slug":308,"lessons":309},"Mathematical Algorithms","mathematical-algorithms",[310,316,321,326],{"title":311,"path":312,"lessonNumber":6,"topics":313,"summary":315},"Number Theory: GCD & Modular Arithmetic","\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics",[314],"Number Theory","This lesson opens the mathematical-algorithms module with the bedrock of computational number theory. We prove Euclid's recurrence $\\gcd(a,b)=\\gcd(b,\\,a\\bmod b)$ and its $O(\\log\\min(a,b))$ running time, extend it to recover Bézout coefficients $x,y$ with $ax+by=\\gcd(a,b)$, and build modular arithmetic on residue classes — including when a modular inverse $a^{-1}\\bmod m$ exists and how to compute it.",{"title":317,"path":318,"lessonNumber":18,"topics":319,"summary":320},"Modular Exponentiation & Primality","\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality",[314],"Computing $a^n \\bmod m$ naively costs $n$ multiplications; **repeated squaring** does it in $O(\\log n)$ by reading the bits of the exponent. We use this routine to state **Fermat's little theorem** (and the modular inverse it gives), then to test primality — trial division, the probabilistic **Fermat** and **Miller–Rabin** tests, and the deterministic witness set that settles primality for every 64-bit number.",{"title":322,"path":323,"lessonNumber":24,"topics":324,"summary":325},"Sieves & Factorization","\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization",[314],"The previous lesson tested one number for primality; here we ask for _all_ primes up to $n$ at once. The **sieve of Eratosthenes** cross-cuts composites in $O(n\\log\\log n)$, and a **linear sieve** does it in $O(n)$ while recording each number's **smallest prime factor**, which then factors any $x \\le n$ in $O(\\log x)$. From a factorization $x = \\prod p_i^{e_i}$ the multiplicative functions $\\tau$, $\\sigma$, and Euler's totient $\\varphi$ fall out immediately.",{"title":327,"path":328,"lessonNumber":73,"topics":329,"summary":330},"Combinatorics & Counting","\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics",[314],"Counting is the arithmetic of finite sets. We build up from permutations $n!$ and combinations $\\binom{n}{k}$, prove Pascal's rule by a bijection, and count multisets with stars and bars. The practical core is computing $\\binom{n}{k}\\bmod p$ in $O(1)$ from precomputed factorials and inverse factorials. We close with inclusion–exclusion and the Chinese Remainder Theorem, both of which lean on the modular inverse from the previous lesson.",{"module":332,"moduleNumber":333,"slug":334,"lessons":335},"Computational Geometry",11,"computational-geometry",[336,342,347],{"title":337,"path":338,"lessonNumber":6,"topics":339,"summary":341},"Geometric Primitives & Orientation","\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives",[340],"Geometry","Computational geometry is built on a single reliable primitive — the **orientation test**, a sign of a cross product that tells whether three points turn left, right, or lie collinear. From points-as-vectors and the dot and cross products we derive orientation, segment intersection, the shoelace area formula, and point-in-polygon tests, keeping all arithmetic **exact and integer** so that no floating-point rounding can corrupt a sign.",{"title":343,"path":344,"lessonNumber":18,"topics":345,"summary":346},"Convex Hull","\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull",[340],"The convex hull is the smallest convex polygon enclosing a point set — the rubber band snapped around the nails. We build it with Andrew's monotone chain, sorting by $(x,y)$ and sweeping a lower and upper hull while popping any non-left turn via the orientation primitive, in $O(n\\log n)$. A reduction from sorting shows that bound is optimal, and the hull unlocks diameter, smallest enclosing rectangle, and more through rotating calipers.",{"title":348,"path":349,"lessonNumber":24,"topics":350,"summary":351},"Sweep-Line Algorithms","\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line",[340],"The plane-sweep paradigm turns a static $2$-D geometry problem into a dynamic $1$-D ordered-set problem: a vertical line sweeps left to right, stopping at an $x$-sorted **event queue** while a balanced-BST **status structure** tracks the objects it currently crosses, ordered by $y$. We derive Bentley–Ottmann segment intersection in $O((n+k)\\log n)$, recover closest-pair in $O(n\\log n)$, and reduce skyline, rectangle-area, and overlap problems to $\\pm1$ event sweeps.",{"module":353,"moduleNumber":354,"slug":355,"lessons":356},"Intractability",12,"intractability",[357,363,367],{"title":358,"path":359,"lessonNumber":6,"topics":360,"summary":362},"P, NP, and Reductions","\u002Falgorithms\u002Fintractability\u002Fp-np-reductions",[361],"NP-Completeness","Most problems we have met so far have fast algorithms. A vast and important family seemingly does not. This lesson builds the vocabulary for that divide: decision problems, the class $\\mathsf{P}$ of problems we can solve quickly, the class $\\mathsf{NP}$ of problems whose solutions we can _check_ quickly, and polynomial-time reductions, the tool that lets us compare the difficulty of two problems without solving either.",{"title":361,"path":364,"lessonNumber":18,"topics":365,"summary":366},"\u002Falgorithms\u002Fintractability\u002Fnp-completeness",[361],"Some problems in $\\mathsf{NP}$ are universally hardest: every other problem in $\\mathsf{NP}$ reduces to them. This lesson defines $\\mathsf{NP}$-hard and $\\mathsf{NP}$-complete, states the Cook–Levin theorem that anchors the whole edifice on **SAT**, walks the web of reductions that grows from it, and gives the four-step recipe for proving a brand-new problem $\\mathsf{NP}$-complete.",{"title":368,"path":369,"lessonNumber":24,"topics":370,"summary":373},"Coping with NP-Hardness","\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness",[371,372],"Approximation","Heuristics","Proving a problem $\\mathsf{NP}$-hard is the beginning, not the end. The world still needs answers. This lesson surveys the four honest responses to hardness: approximation algorithms with a provable ratio (worked through a 2-approximation for vertex cover), heuristics and local search, exact exponential methods like branch and bound, and exploiting special structure in the instances you actually face.",{"id":375,"title":83,"blurb":376,"body":377,"description":9077,"extension":9078,"meta":9079,"module":72,"navigation":9081,"path":84,"practice":9082,"rawbody":9100,"readingTime":9101,"seo":9106,"sources":9107,"status":9114,"stem":9115,"summary":87,"topics":9116,"__hash__":9117},"course\u002F01.algorithms\u002F04.data-structures\u002F02.hash-tables.md","",{"type":378,"value":379,"toc":9064},"minimark",[380,548,553,783,827,971,1087,1268,1272,1359,1600,1836,1876,1933,1938,1973,2081,2120,2202,2257,2552,2829,2833,2901,3083,3215,3270,3313,3891,3894,4101,4492,5042,5909,5913,5975,6250,6449,6772,6776,6799,7334,7509,7513,7587,7757,7964,8092,8290,8483,8638,8642,8930,9060],[381,382,383,384,388,389,392,393,397,398,402,403,458,459,462,463,467,492,493,502,503,506,507,511,512,547],"p",{},"Many problems need only three operations on a set of records, each identified by\na ",[385,386,387],"strong",{},"key",": insert a record, search for the record with a given key, and delete a\nrecord. This is the ",[385,390,391],{},"dictionary"," abstract data type (also called an\nassociative array or map), and it is one of the most heavily used data\nstructures in all of computing: symbol tables in compilers, routing tables in\nnetworks, the ",[394,395,396],"code",{},"dict"," in your favorite scripting language. A ",[399,400,401],"a",{"href":101},"balanced search tree","\ndoes all three in ",[404,405,408],"span",{"className":406},[407],"katex",[404,409,413],{"className":410,"ariaHidden":412},[411],"katex-html","true",[404,414,417,422,429,434,444,449,453],{"className":415},[416],"base",[404,418],{"className":419,"style":421},[420],"strut","height:1em;vertical-align:-0.25em;",[404,423,428],{"className":424,"style":427},[425,426],"mord","mathnormal","margin-right:0.0278em;","O",[404,430,433],{"className":431},[432],"mopen","(",[404,435,438],{"className":436},[437],"mop",[404,439,443],{"className":440,"style":442},[425,441],"mathrm","margin-right:0.0139em;","log",[404,445],{"className":446,"style":448},[447],"mspace","margin-right:0.1667em;",[404,450,452],{"className":451},[425,426],"n",[404,454,457],{"className":455},[456],"mclose",")"," time. A ",[385,460,461],{},"hash table"," does them in ",[464,465,466],"em",{},"expected",[404,468,470],{"className":469},[407],[404,471,473],{"className":472,"ariaHidden":412},[411],[404,474,476,479,482,485,489],{"className":475},[416],[404,477],{"className":478,"style":421},[420],[404,480,428],{"className":481,"style":427},[425,426],[404,483,433],{"className":484},[432],[404,486,488],{"className":487},[425],"1",[404,490,457],{"className":491},[456]," time: constant, independent of how many keys are stored.",[494,495,496],"sup",{},[399,497,488],{"href":498,"ariaDescribedBy":499,"dataFootnoteRef":376,"id":501},"#user-content-fn-clrs-hash",[500],"footnote-label","user-content-fnref-clrs-hash"," The price is\nthat it gives up the ",[464,504,505],{},"ordering"," a tree provides, with no efficient ",[508,509,510],"q",{},"next larger key"," or \"all keys in ",[404,513,515],{"className":514},[407],[404,516,518],{"className":517,"ariaHidden":412},[411],[404,519,521,524,528,531,536,539,543],{"className":520},[416],[404,522],{"className":523,"style":421},[420],[404,525,527],{"className":526},[432],"[",[404,529,399],{"className":530},[425,426],[404,532,535],{"className":533},[534],"mpunct",",",[404,537],{"className":538,"style":448},[447],[404,540,542],{"className":541},[425,426],"b",[404,544,546],{"className":545},[456],"]","\", in exchange for raw speed on the point\noperations.",[549,550,552],"h2",{"id":551},"from-direct-addressing-to-hashing","From direct addressing to hashing",[381,554,555,556,559,660,661,709,710,713,714,732,733,757,758,782],{},"Start with the easy case. Suppose every key is drawn from a small ",[385,557,558],{},"universe",[404,560,562],{"className":561},[407],[404,563,565,589],{"className":564,"ariaHidden":412},[411],[404,566,568,572,577,581,586],{"className":567},[416],[404,569],{"className":570,"style":571},[420],"height:0.6833em;",[404,573,576],{"className":574,"style":575},[425,426],"margin-right:0.109em;","U",[404,578],{"className":579,"style":580},[447],"margin-right:0.2778em;",[404,582,585],{"className":583},[584],"mrel","=",[404,587],{"className":588,"style":580},[447],[404,590,592,595],{"className":591},[416],[404,593],{"className":594,"style":421},[420],[404,596,599,605,609,612,615,618,621,624,628,631,634,637,641,645,650,653,656],{"className":597},[598],"minner",[404,600,604],{"className":601,"style":603},[432,602],"delimcenter","top:0em;","{",[404,606,608],{"className":607},[425],"0",[404,610,535],{"className":611},[534],[404,613],{"className":614,"style":448},[447],[404,616,488],{"className":617},[425],[404,619,535],{"className":620},[534],[404,622],{"className":623,"style":448},[447],[404,625,627],{"className":626},[598],"…",[404,629],{"className":630,"style":448},[447],[404,632,535],{"className":633},[534],[404,635],{"className":636,"style":448},[447],[404,638,640],{"className":639},[425,426],"m",[404,642],{"className":643,"style":644},[447],"margin-right:0.2222em;",[404,646,649],{"className":647},[648],"mbin","−",[404,651],{"className":652,"style":644},[447],[404,654,488],{"className":655},[425],[404,657,659],{"className":658,"style":603},[456,602],"}",". Then we can keep an array ",[404,662,664],{"className":663},[407],[404,665,667,697],{"className":666,"ariaHidden":412},[411],[404,668,670,673,678,681,685,688,691,694],{"className":669},[416],[404,671],{"className":672,"style":421},[420],[404,674,677],{"className":675,"style":676},[425,426],"margin-right:0.1389em;","T",[404,679,527],{"className":680},[432],[404,682,684],{"className":683},[425],"0..",[404,686,640],{"className":687},[425,426],[404,689],{"className":690,"style":644},[447],[404,692,649],{"className":693},[648],[404,695],{"className":696,"style":644},[447],[404,698,700,703,706],{"className":699},[416],[404,701],{"className":702,"style":421},[420],[404,704,488],{"className":705},[425],[404,707,546],{"className":708},[456],", a\n",[385,711,712],{},"direct-address table",", and store the record with key ",[404,715,717],{"className":716},[407],[404,718,720],{"className":719,"ariaHidden":412},[411],[404,721,723,727],{"className":722},[416],[404,724],{"className":725,"style":726},[420],"height:0.6944em;",[404,728,731],{"className":729,"style":730},[425,426],"margin-right:0.0315em;","k"," in slot ",[404,734,736],{"className":735},[407],[404,737,739],{"className":738,"ariaHidden":412},[411],[404,740,742,745,748,751,754],{"className":741},[416],[404,743],{"className":744,"style":421},[420],[404,746,677],{"className":747,"style":676},[425,426],[404,749,527],{"className":750},[432],[404,752,731],{"className":753,"style":730},[425,426],[404,755,546],{"className":756},[456],".\nInsert, search, and delete are each a single array access: worst-case ",[404,759,761],{"className":760},[407],[404,762,764],{"className":763,"ariaHidden":412},[411],[404,765,767,770,773,776,779],{"className":766},[416],[404,768],{"className":769,"style":421},[420],[404,771,428],{"className":772,"style":427},[425,426],[404,774,433],{"className":775},[432],[404,777,488],{"className":778},[425],[404,780,457],{"className":781},[456],",\nunbeatable.",[784,785,789],"pre",{"className":786,"code":787,"language":788,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: Direct-address dictionary operations on table $T$\nDirect-Address-Insert(T, x):\n  $T[key(x)] \\gets x$\nDirect-Address-Search(T, k):\n  return $T[k]$\nDirect-Address-Delete(T, x):\n  $T[key(x)] \\gets \\text{nil}$\n","algorithm",[394,790,791,797,802,807,812,817,822],{"__ignoreMap":376},[404,792,794],{"class":793,"line":6},"line",[404,795,796],{},"caption: Direct-address dictionary operations on table $T$\n",[404,798,799],{"class":793,"line":18},[404,800,801],{},"Direct-Address-Insert(T, x):\n",[404,803,804],{"class":793,"line":24},[404,805,806],{},"  $T[key(x)] \\gets x$\n",[404,808,809],{"class":793,"line":73},[404,810,811],{},"Direct-Address-Search(T, k):\n",[404,813,814],{"class":793,"line":102},[404,815,816],{},"  return $T[k]$\n",[404,818,819],{"class":793,"line":108},[404,820,821],{},"Direct-Address-Delete(T, x):\n",[404,823,824],{"class":793,"line":116},[404,825,826],{},"  $T[key(x)] \\gets \\text{nil}$\n",[381,828,829,830,847,848,905,906,921,922,967,968],{},"Direct addressing fails the moment the universe is large. To store ",[404,831,833],{"className":832},[407],[404,834,836],{"className":835,"ariaHidden":412},[411],[404,837,839,843],{"className":838},[416],[404,840],{"className":841,"style":842},[420],"height:0.6444em;",[404,844,846],{"className":845},[425],"64","-bit\nintegers we would need an array of ",[404,849,851],{"className":850},[407],[404,852,854],{"className":853,"ariaHidden":412},[411],[404,855,857,861],{"className":856},[416],[404,858],{"className":859,"style":860},[420],"height:0.8141em;",[404,862,864,868],{"className":863},[425],[404,865,867],{"className":866},[425],"2",[404,869,872],{"className":870},[871],"msupsub",[404,873,876],{"className":874},[875],"vlist-t",[404,877,880],{"className":878},[879],"vlist-r",[404,881,884],{"className":882,"style":860},[883],"vlist",[404,885,887,892],{"style":886},"top:-3.063em;margin-right:0.05em;",[404,888],{"className":889,"style":891},[890],"pstrut","height:2.7em;",[404,893,899],{"className":894},[895,896,897,898],"sizing","reset-size6","size3","mtight",[404,900,902],{"className":901},[425,898],[404,903,846],{"className":904},[425,898]," slots, impossible, even though we\nmay hold only a few thousand keys. The waste is glaring: ",[404,907,909],{"className":908},[407],[404,910,912],{"className":911,"ariaHidden":412},[411],[404,913,915,918],{"className":914},[416],[404,916],{"className":917,"style":571},[420],[404,919,677],{"className":920,"style":676},[425,426]," is almost entirely\nempty. The remedy is to use a table ",[404,923,925],{"className":924},[407],[404,926,928,955],{"className":927,"ariaHidden":412},[411],[404,929,931,934,937,940,943,946,949,952],{"className":930},[416],[404,932],{"className":933,"style":421},[420],[404,935,677],{"className":936,"style":676},[425,426],[404,938,527],{"className":939},[432],[404,941,684],{"className":942},[425],[404,944,640],{"className":945},[425,426],[404,947],{"className":948,"style":644},[447],[404,950,649],{"className":951},[648],[404,953],{"className":954,"style":644},[447],[404,956,958,961,964],{"className":957},[416],[404,959],{"className":960,"style":421},[420],[404,962,488],{"className":963},[425],[404,965,546],{"className":966},[456]," that is only as big as the number\nof keys we expect, and to compute a slot from the key with a ",[385,969,970],{},"hash function",[404,972,975],{"className":973},[974],"katex-display",[404,976,978],{"className":977},[407],[404,979,981,1001,1020],{"className":980,"ariaHidden":412},[411],[404,982,984,987,991,994,998],{"className":983},[416],[404,985],{"className":986,"style":726},[420],[404,988,990],{"className":989},[425,426],"h",[404,992],{"className":993,"style":580},[447],[404,995,997],{"className":996},[584],":",[404,999],{"className":1000,"style":580},[447],[404,1002,1004,1007,1010,1013,1017],{"className":1003},[416],[404,1005],{"className":1006,"style":571},[420],[404,1008,576],{"className":1009,"style":575},[425,426],[404,1011],{"className":1012,"style":580},[447],[404,1014,1016],{"className":1015},[584],"→",[404,1018],{"className":1019,"style":580},[447],[404,1021,1023,1026,1080,1083],{"className":1022},[416],[404,1024],{"className":1025,"style":421},[420],[404,1027,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077],{"className":1028},[598],[404,1030,604],{"className":1031,"style":603},[432,602],[404,1033,608],{"className":1034},[425],[404,1036,535],{"className":1037},[534],[404,1039],{"className":1040,"style":448},[447],[404,1042,488],{"className":1043},[425],[404,1045,535],{"className":1046},[534],[404,1048],{"className":1049,"style":448},[447],[404,1051,627],{"className":1052},[598],[404,1054],{"className":1055,"style":448},[447],[404,1057,535],{"className":1058},[534],[404,1060],{"className":1061,"style":448},[447],[404,1063,640],{"className":1064},[425,426],[404,1066],{"className":1067,"style":644},[447],[404,1069,649],{"className":1070},[648],[404,1072],{"className":1073,"style":644},[447],[404,1075,488],{"className":1076},[425],[404,1078,659],{"className":1079,"style":603},[456,602],[404,1081],{"className":1082,"style":448},[447],[404,1084,1086],{"className":1085},[425],".",[381,1088,1089,1090,1105,1106,1130,1131,1146,1147,1150,1151,1175,1176,1200,1201,1204,1205,1247,1248,1263,1264,1267],{},"The key ",[404,1091,1093],{"className":1092},[407],[404,1094,1096],{"className":1095,"ariaHidden":412},[411],[404,1097,1099,1102],{"className":1098},[416],[404,1100],{"className":1101,"style":726},[420],[404,1103,731],{"className":1104,"style":730},[425,426]," lives in slot ",[404,1107,1109],{"className":1108},[407],[404,1110,1112],{"className":1111,"ariaHidden":412},[411],[404,1113,1115,1118,1121,1124,1127],{"className":1114},[416],[404,1116],{"className":1117,"style":421},[420],[404,1119,990],{"className":1120},[425,426],[404,1122,433],{"className":1123},[432],[404,1125,731],{"className":1126,"style":730},[425,426],[404,1128,457],{"className":1129},[456],". We say ",[404,1132,1134],{"className":1133},[407],[404,1135,1137],{"className":1136,"ariaHidden":412},[411],[404,1138,1140,1143],{"className":1139},[416],[404,1141],{"className":1142,"style":726},[420],[404,1144,731],{"className":1145,"style":730},[425,426]," ",[385,1148,1149],{},"hashes"," to slot ",[404,1152,1154],{"className":1153},[407],[404,1155,1157],{"className":1156,"ariaHidden":412},[411],[404,1158,1160,1163,1166,1169,1172],{"className":1159},[416],[404,1161],{"className":1162,"style":421},[420],[404,1164,990],{"className":1165},[425,426],[404,1167,433],{"className":1168},[432],[404,1170,731],{"className":1171,"style":730},[425,426],[404,1173,457],{"className":1174},[456],", and\n",[404,1177,1179],{"className":1178},[407],[404,1180,1182],{"className":1181,"ariaHidden":412},[411],[404,1183,1185,1188,1191,1194,1197],{"className":1184},[416],[404,1186],{"className":1187,"style":421},[420],[404,1189,990],{"className":1190},[425,426],[404,1192,433],{"className":1193},[432],[404,1195,731],{"className":1196,"style":730},[425,426],[404,1198,457],{"className":1199},[456]," is the ",[385,1202,1203],{},"hash value",". Because ",[404,1206,1208],{"className":1207},[407],[404,1209,1211,1237],{"className":1210,"ariaHidden":412},[411],[404,1212,1214,1217,1221,1224,1227,1230,1234],{"className":1213},[416],[404,1215],{"className":1216,"style":421},[420],[404,1218,1220],{"className":1219},[425],"∣",[404,1222,576],{"className":1223,"style":575},[425,426],[404,1225,1220],{"className":1226},[425],[404,1228],{"className":1229,"style":580},[447],[404,1231,1233],{"className":1232},[584],">",[404,1235],{"className":1236,"style":580},[447],[404,1238,1240,1244],{"className":1239},[416],[404,1241],{"className":1242,"style":1243},[420],"height:0.4306em;",[404,1245,640],{"className":1246},[425,426],", the function ",[404,1249,1251],{"className":1250},[407],[404,1252,1254],{"className":1253,"ariaHidden":412},[411],[404,1255,1257,1260],{"className":1256},[416],[404,1258],{"className":1259,"style":726},[420],[404,1261,990],{"className":1262},[425,426]," cannot be\ninjective: two distinct keys can map to the same slot. That event is a\n",[385,1265,1266],{},"collision",", and the entire theory of hash tables is the theory of coping with\ncollisions gracefully.",[549,1269,1271],{"id":1270},"collision-resolution-by-chaining","Collision resolution by chaining",[381,1273,1274,1275,1278,1279,1305,1306,1309,1310,1326,1327,1358],{},"The most natural fix is ",[385,1276,1277],{},"chaining",": each slot ",[404,1280,1282],{"className":1281},[407],[404,1283,1285],{"className":1284,"ariaHidden":412},[411],[404,1286,1288,1291,1294,1297,1302],{"className":1287},[416],[404,1289],{"className":1290,"style":421},[420],[404,1292,677],{"className":1293,"style":676},[425,426],[404,1295,527],{"className":1296},[432],[404,1298,1301],{"className":1299,"style":1300},[425,426],"margin-right:0.0572em;","j",[404,1303,546],{"className":1304},[456]," holds a ",[399,1307,1308],{"href":78},"linked list"," of all\nthe keys that hash to ",[404,1311,1313],{"className":1312},[407],[404,1314,1316],{"className":1315,"ariaHidden":412},[411],[404,1317,1319,1323],{"className":1318},[416],[404,1320],{"className":1321,"style":1322},[420],"height:0.854em;vertical-align:-0.1944em;",[404,1324,1301],{"className":1325,"style":1300},[425,426],". To insert, prepend to the list at ",[404,1328,1330],{"className":1329},[407],[404,1331,1333],{"className":1332,"ariaHidden":412},[411],[404,1334,1336,1339,1342,1345,1348,1351,1354],{"className":1335},[416],[404,1337],{"className":1338,"style":421},[420],[404,1340,677],{"className":1341,"style":676},[425,426],[404,1343,527],{"className":1344},[432],[404,1346,990],{"className":1347},[425,426],[404,1349,433],{"className":1350},[432],[404,1352,731],{"className":1353,"style":730},[425,426],[404,1355,1357],{"className":1356},[456],")]","; to\nsearch, scan that one list; to delete, splice the record out of its list.",[1360,1361,1365,1594],"figure",{"className":1362},[1363,1364],"tikz-figure","tikz-diagram-rendered",[1366,1367,1372],"svg",{"xmlns":1368,"width":1369,"height":1370,"viewBox":1371},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","227.676","186.838","-75 -75 170.757 140.128",[1373,1374,1377,1382,1391,1394,1401,1404,1411,1414,1421,1424,1431,1434,1441,1463,1482,1485,1488,1491,1494,1513,1516,1519,1538,1557,1576,1579,1582,1585,1588,1591],"g",{"stroke":1375,"style":1376},"currentColor","stroke-miterlimit:10;stroke-width:.4",[1378,1379],"path",{"fill":1380,"d":1381},"none","M-65.403-52.153h22.762V-72.07h-22.762Z",[1373,1383,1385],{"transform":1384},"translate(-2.5 3.222)",[1378,1386],{"d":1387,"fill":1375,"stroke":1375,"className":1388,"style":1390},"M-51.522-61.892Q-52.748-61.892-53.189-62.901Q-53.631-63.909-53.631-65.300Q-53.631-66.170-53.473-66.936Q-53.314-67.703-52.843-68.237Q-52.372-68.772-51.522-68.772Q-50.863-68.772-50.443-68.450Q-50.023-68.128-49.803-67.617Q-49.584-67.107-49.503-66.524Q-49.422-65.940-49.422-65.300Q-49.422-64.441-49.581-63.692Q-49.740-62.942-50.204-62.417Q-50.668-61.892-51.522-61.892M-51.522-62.151Q-50.965-62.151-50.692-62.722Q-50.418-63.294-50.355-63.987Q-50.292-64.680-50.292-65.462Q-50.292-66.214-50.355-66.848Q-50.418-67.483-50.689-67.998Q-50.960-68.513-51.522-68.513Q-52.088-68.513-52.362-67.996Q-52.635-67.478-52.699-66.846Q-52.762-66.214-52.762-65.462Q-52.762-64.905-52.735-64.412Q-52.709-63.919-52.591-63.394Q-52.474-62.869-52.213-62.510Q-51.952-62.151-51.522-62.151",[1389],"tikz-text","stroke-width:0.300",[1378,1392],{"fill":1380,"d":1393},"M-65.403-29.39h22.762v-19.918h-22.762Z",[1373,1395,1397],{"transform":1396},"translate(-2.5 25.984)",[1378,1398],{"d":1399,"fill":1375,"stroke":1375,"className":1400,"style":1390},"M-49.813-62.112L-53.094-62.112L-53.094-62.464Q-51.844-62.464-51.844-62.781L-51.844-68.030Q-52.362-67.781-53.153-67.781L-53.153-68.133Q-51.927-68.133-51.302-68.772L-51.161-68.772Q-51.126-68.772-51.095-68.745Q-51.063-68.718-51.063-68.684L-51.063-62.781Q-51.063-62.464-49.813-62.464",[1389],[1378,1402],{"fill":1380,"d":1403},"M-65.403-6.629h22.762v-19.916h-22.762Z",[1373,1405,1407],{"transform":1406},"translate(-2.5 48.747)",[1378,1408],{"d":1409,"fill":1375,"stroke":1375,"className":1410,"style":1390},"M-49.813-62.112L-53.524-62.112L-53.524-62.381Q-53.524-62.405-53.504-62.434L-51.952-64.153Q-51.600-64.534-51.380-64.793Q-51.161-65.051-50.946-65.388Q-50.731-65.725-50.606-66.074Q-50.482-66.424-50.482-66.814Q-50.482-67.224-50.633-67.598Q-50.785-67.971-51.085-68.196Q-51.385-68.421-51.810-68.421Q-52.245-68.421-52.591-68.159Q-52.938-67.898-53.080-67.483Q-53.041-67.493-52.972-67.493Q-52.748-67.493-52.589-67.341Q-52.430-67.190-52.430-66.951Q-52.430-66.721-52.589-66.563Q-52.748-66.404-52.972-66.404Q-53.207-66.404-53.365-66.568Q-53.524-66.731-53.524-66.951Q-53.524-67.327-53.382-67.656Q-53.241-67.986-52.975-68.242Q-52.709-68.499-52.374-68.635Q-52.040-68.772-51.664-68.772Q-51.092-68.772-50.599-68.530Q-50.106-68.289-49.818-67.847Q-49.530-67.405-49.530-66.814Q-49.530-66.380-49.720-65.989Q-49.911-65.598-50.209-65.279Q-50.506-64.959-50.970-64.553Q-51.434-64.148-51.581-64.011L-52.713-62.923L-51.751-62.923Q-51.043-62.923-50.567-62.935Q-50.091-62.947-50.062-62.971Q-49.945-63.098-49.823-63.894L-49.530-63.894",[1389],[1378,1412],{"fill":1380,"d":1413},"M-65.403 16.134h22.762V-3.783h-22.762Z",[1373,1415,1417],{"transform":1416},"translate(-2.5 71.509)",[1378,1418],{"d":1419,"fill":1375,"stroke":1375,"className":1420,"style":1390},"M-53.021-62.883L-53.070-62.883Q-52.835-62.542-52.440-62.376Q-52.044-62.210-51.590-62.210Q-51.009-62.210-50.765-62.705Q-50.521-63.201-50.521-63.831Q-50.521-64.114-50.572-64.397Q-50.624-64.680-50.746-64.924Q-50.868-65.169-51.080-65.315Q-51.293-65.462-51.600-65.462L-52.264-65.462Q-52.352-65.462-52.352-65.554L-52.352-65.642Q-52.352-65.720-52.264-65.720L-51.712-65.764Q-51.361-65.764-51.129-66.028Q-50.897-66.292-50.790-66.670Q-50.682-67.049-50.682-67.390Q-50.682-67.869-50.907-68.176Q-51.131-68.484-51.590-68.484Q-51.971-68.484-52.318-68.340Q-52.665-68.196-52.870-67.903Q-52.850-67.908-52.835-67.910Q-52.821-67.913-52.801-67.913Q-52.577-67.913-52.425-67.757Q-52.274-67.600-52.274-67.381Q-52.274-67.166-52.425-67.009Q-52.577-66.853-52.801-66.853Q-53.021-66.853-53.177-67.009Q-53.334-67.166-53.334-67.381Q-53.334-67.810-53.075-68.128Q-52.816-68.445-52.408-68.609Q-52.001-68.772-51.590-68.772Q-51.288-68.772-50.951-68.682Q-50.614-68.591-50.340-68.423Q-50.067-68.255-49.894-67.991Q-49.720-67.727-49.720-67.390Q-49.720-66.970-49.908-66.614Q-50.096-66.258-50.423-65.999Q-50.751-65.740-51.141-65.613Q-50.707-65.530-50.316-65.286Q-49.925-65.042-49.689-64.661Q-49.452-64.280-49.452-63.841Q-49.452-63.289-49.754-62.842Q-50.057-62.395-50.550-62.144Q-51.043-61.892-51.590-61.892Q-52.059-61.892-52.530-62.070Q-53.001-62.249-53.302-62.605Q-53.602-62.962-53.602-63.460Q-53.602-63.709-53.436-63.875Q-53.270-64.041-53.021-64.041Q-52.860-64.041-52.726-63.965Q-52.591-63.889-52.516-63.753Q-52.440-63.616-52.440-63.460Q-52.440-63.216-52.611-63.050Q-52.782-62.883-53.021-62.883",[1389],[1378,1422],{"fill":1380,"d":1423},"M-65.403 38.896h22.762V18.979h-22.762Z",[1373,1425,1427],{"transform":1426},"translate(-2.5 94.271)",[1378,1428],{"d":1429,"fill":1375,"stroke":1375,"className":1430,"style":1390},"M-51.102-63.762L-53.744-63.762L-53.744-64.114L-50.653-68.723Q-50.619-68.772-50.550-68.772L-50.404-68.772Q-50.292-68.772-50.292-68.660L-50.292-64.114L-49.310-64.114L-49.310-63.762L-50.292-63.762L-50.292-62.781Q-50.292-62.576-49.999-62.520Q-49.706-62.464-49.320-62.464L-49.320-62.112L-52.074-62.112L-52.074-62.464Q-51.688-62.464-51.395-62.520Q-51.102-62.576-51.102-62.781L-51.102-63.762M-51.043-67.654L-53.412-64.114L-51.043-64.114",[1389],[1378,1432],{"fill":1380,"d":1433},"M-65.403 61.658h22.762V41.741h-22.762Z",[1373,1435,1437],{"transform":1436},"translate(-2.5 117.034)",[1378,1438],{"d":1439,"fill":1375,"stroke":1375,"className":1440,"style":1390},"M-53.153-63.250Q-53.050-62.957-52.838-62.717Q-52.626-62.478-52.335-62.344Q-52.044-62.210-51.732-62.210Q-51.009-62.210-50.736-62.771Q-50.462-63.333-50.462-64.133Q-50.462-64.480-50.475-64.717Q-50.487-64.954-50.541-65.174Q-50.633-65.525-50.865-65.789Q-51.097-66.052-51.434-66.052Q-51.771-66.052-52.013-65.950Q-52.254-65.847-52.406-65.711Q-52.557-65.574-52.674-65.423Q-52.792-65.271-52.821-65.261L-52.933-65.261Q-52.958-65.261-52.994-65.293Q-53.031-65.325-53.031-65.354L-53.031-68.694Q-53.031-68.718-52.999-68.745Q-52.967-68.772-52.933-68.772L-52.904-68.772Q-52.230-68.450-51.473-68.450Q-50.731-68.450-50.043-68.772L-50.013-68.772Q-49.979-68.772-49.950-68.748Q-49.920-68.723-49.920-68.694L-49.920-68.601Q-49.920-68.552-49.940-68.552Q-50.282-68.098-50.797-67.844Q-51.312-67.591-51.864-67.591Q-52.264-67.591-52.684-67.703L-52.684-65.813Q-52.352-66.082-52.091-66.196Q-51.830-66.311-51.424-66.311Q-50.873-66.311-50.436-65.994Q-49.999-65.676-49.764-65.166Q-49.530-64.656-49.530-64.124Q-49.530-63.523-49.825-63.010Q-50.121-62.498-50.628-62.195Q-51.136-61.892-51.732-61.892Q-52.225-61.892-52.638-62.146Q-53.050-62.400-53.287-62.830Q-53.524-63.259-53.524-63.743Q-53.524-63.967-53.377-64.109Q-53.231-64.251-53.011-64.251Q-52.792-64.251-52.643-64.107Q-52.494-63.963-52.494-63.743Q-52.494-63.528-52.643-63.379Q-52.792-63.230-53.011-63.230Q-53.045-63.230-53.089-63.237Q-53.133-63.245-53.153-63.250",[1389],[1373,1442,1444,1447],{"fill":1443},"var(--tk-soft-accent)",[1378,1445],{"d":1446},"M2.128-47.885h-17.607a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4H2.128a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4Zm-21.607 17.072",[1373,1448,1449,1456],{"fill":1375,"stroke":1380},[1373,1450,1452],{"transform":1451},"translate(42.5 25.484)",[1378,1453],{"d":1454,"fill":1375,"stroke":1375,"className":1455,"style":1390},"M-53.490-62.293Q-53.490-62.351-53.480-62.381L-52.030-68.162Q-51.991-68.333-51.981-68.430Q-51.981-68.591-52.630-68.591Q-52.733-68.591-52.733-68.723Q-52.728-68.748-52.711-68.811Q-52.694-68.875-52.667-68.909Q-52.640-68.943-52.591-68.943L-51.244-69.050L-51.214-69.050Q-51.214-69.041-51.180-69.024Q-51.146-69.007-51.141-69.002Q-51.122-68.953-51.122-68.924L-52.171-64.744Q-51.810-64.895-51.261-65.464Q-50.711-66.033-50.401-66.282Q-50.091-66.531-49.623-66.531Q-49.344-66.531-49.149-66.341Q-48.954-66.150-48.954-65.872Q-48.954-65.696-49.027-65.547Q-49.100-65.398-49.232-65.305Q-49.364-65.213-49.540-65.213Q-49.701-65.213-49.811-65.313Q-49.920-65.413-49.920-65.574Q-49.920-65.813-49.752-65.977Q-49.584-66.140-49.344-66.140Q-49.442-66.272-49.642-66.272Q-49.940-66.272-50.216-66.101Q-50.492-65.930-50.812-65.611Q-51.131-65.291-51.395-65.025Q-51.659-64.758-51.883-64.622Q-51.293-64.553-50.858-64.312Q-50.423-64.070-50.423-63.572Q-50.423-63.469-50.462-63.313Q-50.550-62.937-50.550-62.713Q-50.550-62.263-50.243-62.263Q-49.881-62.263-49.693-62.659Q-49.505-63.054-49.383-63.582Q-49.364-63.640-49.300-63.640L-49.183-63.640Q-49.144-63.640-49.117-63.616Q-49.090-63.591-49.090-63.552Q-49.090-63.543-49.100-63.523Q-49.476-62-50.262-62Q-50.545-62-50.763-62.132Q-50.980-62.263-51.097-62.490Q-51.214-62.717-51.214-63.001Q-51.214-63.162-51.170-63.333Q-51.141-63.450-51.141-63.552Q-51.141-63.938-51.483-64.138Q-51.825-64.339-52.264-64.383L-52.772-62.341Q-52.811-62.190-52.923-62.095Q-53.036-62-53.182-62Q-53.309-62-53.399-62.085Q-53.490-62.171-53.490-62.293",[1389],[1373,1457,1458],{"transform":1451},[1378,1459],{"d":1460,"fill":1375,"stroke":1375,"className":1461,"style":1462},"M-45.490-60.612L-48.375-60.612L-48.375-60.814Q-48.375-60.844-48.348-60.872L-47.100-62.089Q-47.028-62.164-46.986-62.206Q-46.943-62.249-46.864-62.328Q-46.451-62.741-46.220-63.099Q-45.989-63.456-45.989-63.880Q-45.989-64.112-46.068-64.315Q-46.147-64.519-46.288-64.669Q-46.430-64.820-46.625-64.900Q-46.820-64.980-47.052-64.980Q-47.363-64.980-47.621-64.821Q-47.879-64.662-48.009-64.385L-47.989-64.385Q-47.821-64.385-47.714-64.274Q-47.606-64.163-47.606-63.999Q-47.606-63.842-47.715-63.729Q-47.825-63.616-47.989-63.616Q-48.149-63.616-48.262-63.729Q-48.375-63.842-48.375-63.999Q-48.375-64.375-48.167-64.662Q-47.958-64.949-47.623-65.105Q-47.288-65.260-46.933-65.260Q-46.509-65.260-46.129-65.102Q-45.750-64.943-45.516-64.626Q-45.282-64.310-45.282-63.880Q-45.282-63.569-45.422-63.300Q-45.562-63.032-45.767-62.827Q-45.972-62.622-46.335-62.340Q-46.697-62.058-46.806-61.962L-47.661-61.234L-47.018-61.234Q-46.755-61.234-46.466-61.236Q-46.177-61.237-45.959-61.246Q-45.740-61.255-45.723-61.272Q-45.661-61.337-45.624-61.504Q-45.586-61.672-45.548-61.914L-45.282-61.914",[1389],"stroke-width:0.210",[1373,1464,1465,1468],{"fill":1443},[1378,1466],{"d":1467},"M45.208-47.885H27.6a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h17.608a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4ZM23.6-30.813",[1373,1469,1470,1476],{"fill":1375,"stroke":1380},[1373,1471,1473],{"transform":1472},"translate(85.58 25.484)",[1378,1474],{"d":1454,"fill":1375,"stroke":1375,"className":1475,"style":1390},[1389],[1373,1477,1478],{"transform":1472},[1378,1479],{"d":1480,"fill":1375,"stroke":1375,"className":1481,"style":1462},"M-47.380-60.820Q-47.380-61.326-47.251-61.834Q-47.121-62.341-46.883-62.803Q-46.646-63.264-46.311-63.685L-45.665-64.498L-46.478-64.498Q-47.063-64.498-47.459-64.490Q-47.856-64.481-47.879-64.461Q-47.982-64.344-48.061-63.818L-48.327-63.818L-48.081-65.342L-47.815-65.342L-47.815-65.322Q-47.815-65.254-47.739-65.211Q-47.664-65.168-47.586-65.161Q-47.394-65.137-47.199-65.131Q-47.004-65.124-46.813-65.122Q-46.622-65.120-46.423-65.120L-45.002-65.120L-45.002-64.932Q-45.012-64.884-45.022-64.874L-46.078-63.551Q-46.297-63.278-46.420-62.965Q-46.543-62.653-46.601-62.304Q-46.659-61.955-46.673-61.624Q-46.687-61.292-46.687-60.820Q-46.687-60.670-46.786-60.571Q-46.885-60.472-47.032-60.472Q-47.182-60.472-47.281-60.571Q-47.380-60.670-47.380-60.820",[1389],[1378,1483],{"fill":1380,"d":1484},"M-42.441-39.35h20.762",[1378,1486],{"stroke":1380,"d":1487},"m-19.679-39.35-3.2-1.6 1.2 1.6-1.2 1.6",[1378,1489],{"fill":1380,"d":1490},"M6.328-39.35H21.4",[1378,1492],{"stroke":1380,"d":1493},"m23.4-39.35-3.2-1.6 1.2 1.6-1.2 1.6",[1373,1495,1496,1499],{"fill":1443},[1378,1497],{"d":1498},"M2.128-2.36h-17.607a4 4 0 0 0-4 4v9.071a4 4 0 0 0 4 4H2.128a4 4 0 0 0 4-4V1.64a4 4 0 0 0-4-4ZM-19.479 14.71",[1373,1500,1501,1507],{"fill":1375,"stroke":1380},[1373,1502,1504],{"transform":1503},"translate(42.5 71.01)",[1378,1505],{"d":1454,"fill":1375,"stroke":1375,"className":1506,"style":1390},[1389],[1373,1508,1509],{"transform":1503},[1378,1510],{"d":1511,"fill":1375,"stroke":1375,"className":1512,"style":1462},"M-46.499-61.760L-48.543-61.760L-48.543-62.041L-46.212-65.213Q-46.177-65.260-46.112-65.260L-45.976-65.260Q-45.931-65.260-45.904-65.233Q-45.877-65.206-45.877-65.161L-45.877-62.041L-45.114-62.041L-45.114-61.760L-45.877-61.760L-45.877-61.101Q-45.877-60.892-45.121-60.892L-45.121-60.612L-47.254-60.612L-47.254-60.892Q-46.499-60.892-46.499-61.101L-46.499-61.760M-46.451-64.485L-48.242-62.041L-46.451-62.041",[1389],[1378,1514],{"fill":1380,"d":1515},"M-42.441 6.175h20.762",[1378,1517],{"stroke":1380,"d":1518},"m-19.679 6.175-3.2-1.6 1.2 1.6-1.2 1.6",[1373,1520,1521,1524],{"fill":1443},[1378,1522],{"d":1523},"M2.128 20.402h-17.607a4 4 0 0 0-4 4v9.071a4 4 0 0 0 4 4H2.128a4 4 0 0 0 4-4v-9.071a4 4 0 0 0-4-4Zm-21.607 17.071",[1373,1525,1526,1532],{"fill":1375,"stroke":1380},[1373,1527,1529],{"transform":1528},"translate(42.5 93.771)",[1378,1530],{"d":1454,"fill":1375,"stroke":1375,"className":1531,"style":1390},[1389],[1373,1533,1534],{"transform":1528},[1378,1535],{"d":1536,"fill":1375,"stroke":1375,"className":1537,"style":1462},"M-45.490-60.612L-48.020-60.612L-48.020-60.892Q-47.052-60.892-47.052-61.101L-47.052-64.720Q-47.445-64.532-48.067-64.532L-48.067-64.813Q-47.650-64.813-47.286-64.914Q-46.922-65.014-46.666-65.260L-46.540-65.260Q-46.475-65.243-46.458-65.175L-46.458-61.101Q-46.458-60.892-45.490-60.892",[1389],[1373,1539,1540,1543],{"fill":1443},[1378,1541],{"d":1542},"M45.208 20.402H27.6a4 4 0 0 0-4 4v9.071a4 4 0 0 0 4 4h17.608a4 4 0 0 0 4-4v-9.071a4 4 0 0 0-4-4ZM23.6 37.473",[1373,1544,1545,1551],{"fill":1375,"stroke":1380},[1373,1546,1548],{"transform":1547},"translate(85.58 93.771)",[1378,1549],{"d":1454,"fill":1375,"stroke":1375,"className":1550,"style":1390},[1389],[1373,1552,1553],{"transform":1547},[1378,1554],{"d":1555,"fill":1375,"stroke":1375,"className":1556,"style":1462},"M-48.009-61.374L-48.040-61.374Q-47.903-61.077-47.606-60.901Q-47.309-60.725-46.981-60.725Q-46.618-60.725-46.391-60.903Q-46.164-61.080-46.070-61.369Q-45.976-61.658-45.976-62.020Q-45.976-62.335-46.030-62.620Q-46.085-62.905-46.258-63.111Q-46.430-63.316-46.745-63.316Q-47.018-63.316-47.201-63.249Q-47.384-63.182-47.488-63.093Q-47.592-63.005-47.688-62.895Q-47.784-62.786-47.828-62.776L-47.907-62.776Q-47.979-62.793-47.996-62.864L-47.996-65.182Q-47.996-65.216-47.972-65.238Q-47.948-65.260-47.914-65.260L-47.886-65.260Q-47.599-65.144-47.331-65.090Q-47.063-65.035-46.786-65.035Q-46.509-65.035-46.239-65.090Q-45.969-65.144-45.689-65.260L-45.665-65.260Q-45.630-65.260-45.607-65.237Q-45.583-65.213-45.583-65.182L-45.583-65.113Q-45.583-65.086-45.603-65.066Q-45.877-64.751-46.261-64.575Q-46.646-64.399-47.059-64.399Q-47.398-64.399-47.715-64.485L-47.715-63.203Q-47.319-63.538-46.745-63.538Q-46.341-63.538-46.005-63.328Q-45.668-63.117-45.475-62.765Q-45.282-62.413-45.282-62.013Q-45.282-61.682-45.422-61.396Q-45.562-61.111-45.806-60.901Q-46.051-60.691-46.353-60.581Q-46.656-60.472-46.974-60.472Q-47.333-60.472-47.659-60.636Q-47.985-60.800-48.180-61.092Q-48.375-61.384-48.375-61.747Q-48.375-61.897-48.269-62.003Q-48.163-62.109-48.009-62.109Q-47.856-62.109-47.751-62.005Q-47.647-61.901-47.647-61.747Q-47.647-61.590-47.751-61.482Q-47.856-61.374-48.009-61.374",[1389],[1373,1558,1559,1562],{"fill":1443},[1378,1560],{"d":1561},"M88.287 20.402H70.679a4 4 0 0 0-4 4v9.071a4 4 0 0 0 4 4h17.608a4 4 0 0 0 4-4v-9.071a4 4 0 0 0-4-4ZM66.679 37.473",[1373,1563,1564,1570],{"fill":1375,"stroke":1380},[1373,1565,1567],{"transform":1566},"translate(128.66 93.771)",[1378,1568],{"d":1454,"fill":1375,"stroke":1375,"className":1569,"style":1390},[1389],[1373,1571,1572],{"transform":1566},[1378,1573],{"d":1574,"fill":1375,"stroke":1375,"className":1575,"style":1462},"M-47.842-60.926Q-47.722-60.810-47.545-60.768Q-47.367-60.725-47.151-60.725Q-46.912-60.725-46.702-60.834Q-46.492-60.944-46.338-61.126Q-46.184-61.309-46.085-61.542Q-45.918-61.969-45.918-62.789Q-46.068-62.495-46.331-62.316Q-46.594-62.136-46.912-62.136Q-47.346-62.136-47.693-62.345Q-48.040-62.553-48.238-62.914Q-48.437-63.275-48.437-63.698Q-48.437-64.033-48.307-64.322Q-48.177-64.611-47.946-64.825Q-47.715-65.038-47.416-65.149Q-47.117-65.260-46.786-65.260Q-45.928-65.260-45.572-64.546Q-45.217-63.832-45.217-62.875Q-45.217-62.458-45.345-62.030Q-45.473-61.603-45.730-61.248Q-45.986-60.892-46.348-60.682Q-46.711-60.472-47.151-60.472Q-47.606-60.472-47.924-60.660Q-48.242-60.848-48.242-61.272Q-48.242-61.422-48.143-61.521Q-48.044-61.620-47.893-61.620Q-47.825-61.620-47.758-61.593Q-47.691-61.566-47.647-61.521Q-47.603-61.477-47.575-61.410Q-47.548-61.343-47.548-61.272Q-47.548-61.142-47.628-61.044Q-47.709-60.947-47.842-60.926M-46.871-62.362Q-46.577-62.362-46.362-62.540Q-46.147-62.717-46.039-62.993Q-45.931-63.268-45.931-63.558Q-45.931-63.603-45.933-63.630Q-45.935-63.657-45.938-63.692Q-45.935-63.702-45.933-63.709Q-45.931-63.716-45.931-63.726Q-45.931-64.228-46.129-64.628Q-46.328-65.028-46.786-65.028Q-47.353-65.028-47.546-64.669Q-47.739-64.310-47.739-63.698Q-47.739-63.312-47.685-63.029Q-47.630-62.745-47.435-62.553Q-47.240-62.362-46.871-62.362",[1389],[1378,1577],{"fill":1380,"d":1578},"M-42.441 28.938h20.762",[1378,1580],{"stroke":1380,"d":1581},"m-19.679 28.938-3.2-1.6 1.2 1.6-1.2 1.6",[1378,1583],{"fill":1380,"d":1584},"M6.328 28.938H21.4",[1378,1586],{"stroke":1380,"d":1587},"m23.4 28.938-3.2-1.6 1.2 1.6-1.2 1.6",[1378,1589],{"fill":1380,"d":1590},"M49.408 28.938h15.071",[1378,1592],{"stroke":1380,"d":1593},"m66.48 28.938-3.2-1.6 1.2 1.6-1.2 1.6",[1595,1596,1599],"figcaption",{"className":1597},[1598],"tikz-cap","Chained hash table where colliding keys share a linked list per slot",[381,1601,1602,1603,1618,1619,1635,1636,1652,1653,1618,1712,1765,1766,1819,1820,1835],{},"Slots ",[404,1604,1606],{"className":1605},[407],[404,1607,1609],{"className":1608,"ariaHidden":412},[411],[404,1610,1612,1615],{"className":1611},[416],[404,1613],{"className":1614,"style":842},[420],[404,1616,488],{"className":1617},[425],", ",[404,1620,1622],{"className":1621},[407],[404,1623,1625],{"className":1624,"ariaHidden":412},[411],[404,1626,1628,1631],{"className":1627},[416],[404,1629],{"className":1630,"style":842},[420],[404,1632,1634],{"className":1633},[425],"3",", and ",[404,1637,1639],{"className":1638},[407],[404,1640,1642],{"className":1641,"ariaHidden":412},[411],[404,1643,1645,1648],{"className":1644},[416],[404,1646],{"className":1647,"style":842},[420],[404,1649,1651],{"className":1650},[425],"4"," hold chains; the rest are empty. Keys ",[404,1654,1656],{"className":1655},[407],[404,1657,1659],{"className":1658,"ariaHidden":412},[411],[404,1660,1662,1666],{"className":1661},[416],[404,1663],{"className":1664,"style":1665},[420],"height:0.8444em;vertical-align:-0.15em;",[404,1667,1669,1672],{"className":1668},[425],[404,1670,731],{"className":1671,"style":730},[425,426],[404,1673,1675],{"className":1674},[871],[404,1676,1679,1703],{"className":1677},[875,1678],"vlist-t2",[404,1680,1682,1698],{"className":1681},[879],[404,1683,1686],{"className":1684,"style":1685},[883],"height:0.3011em;",[404,1687,1689,1692],{"style":1688},"top:-2.55em;margin-left:-0.0315em;margin-right:0.05em;",[404,1690],{"className":1691,"style":891},[890],[404,1693,1695],{"className":1694},[895,896,897,898],[404,1696,488],{"className":1697},[425,898],[404,1699,1702],{"className":1700},[1701],"vlist-s","​",[404,1704,1706],{"className":1705},[879],[404,1707,1710],{"className":1708,"style":1709},[883],"height:0.15em;",[404,1711],{},[404,1713,1715],{"className":1714},[407],[404,1716,1718],{"className":1717,"ariaHidden":412},[411],[404,1719,1721,1724],{"className":1720},[416],[404,1722],{"className":1723,"style":1665},[420],[404,1725,1727,1730],{"className":1726},[425],[404,1728,731],{"className":1729,"style":730},[425,426],[404,1731,1733],{"className":1732},[871],[404,1734,1736,1757],{"className":1735},[875,1678],[404,1737,1739,1754],{"className":1738},[879],[404,1740,1742],{"className":1741,"style":1685},[883],[404,1743,1744,1747],{"style":1688},[404,1745],{"className":1746,"style":891},[890],[404,1748,1750],{"className":1749},[895,896,897,898],[404,1751,1753],{"className":1752},[425,898],"5",[404,1755,1702],{"className":1756},[1701],[404,1758,1760],{"className":1759},[879],[404,1761,1763],{"className":1762,"style":1709},[883],[404,1764],{},",\n",[404,1767,1769],{"className":1768},[407],[404,1770,1772],{"className":1771,"ariaHidden":412},[411],[404,1773,1775,1778],{"className":1774},[416],[404,1776],{"className":1777,"style":1665},[420],[404,1779,1781,1784],{"className":1780},[425],[404,1782,731],{"className":1783,"style":730},[425,426],[404,1785,1787],{"className":1786},[871],[404,1788,1790,1811],{"className":1789},[875,1678],[404,1791,1793,1808],{"className":1792},[879],[404,1794,1796],{"className":1795,"style":1685},[883],[404,1797,1798,1801],{"style":1688},[404,1799],{"className":1800,"style":891},[890],[404,1802,1804],{"className":1803},[895,896,897,898],[404,1805,1807],{"className":1806},[425,898],"9",[404,1809,1702],{"className":1810},[1701],[404,1812,1814],{"className":1813},[879],[404,1815,1817],{"className":1816,"style":1709},[883],[404,1818],{}," all collided at slot ",[404,1821,1823],{"className":1822},[407],[404,1824,1826],{"className":1825,"ariaHidden":412},[411],[404,1827,1829,1832],{"className":1828},[416],[404,1830],{"className":1831,"style":842},[420],[404,1833,1651],{"className":1834},[425],", so they share a list.",[784,1837,1839],{"className":786,"code":1838,"language":788,"meta":376,"style":376},"caption: Chained-hash dictionary operations on table $T$\nChained-Hash-Insert(T, x):\n  insert $x$ at the head of list $T[h(key(x))]$\nChained-Hash-Search(T, k):\n  search the list $T[h(k)]$ for an element with key $k$\nChained-Hash-Delete(T, x):\n  delete $x$ from the list $T[h(key(x))]$\n",[394,1840,1841,1846,1851,1856,1861,1866,1871],{"__ignoreMap":376},[404,1842,1843],{"class":793,"line":6},[404,1844,1845],{},"caption: Chained-hash dictionary operations on table $T$\n",[404,1847,1848],{"class":793,"line":18},[404,1849,1850],{},"Chained-Hash-Insert(T, x):\n",[404,1852,1853],{"class":793,"line":24},[404,1854,1855],{},"  insert $x$ at the head of list $T[h(key(x))]$\n",[404,1857,1858],{"class":793,"line":73},[404,1859,1860],{},"Chained-Hash-Search(T, k):\n",[404,1862,1863],{"class":793,"line":102},[404,1864,1865],{},"  search the list $T[h(k)]$ for an element with key $k$\n",[404,1867,1868],{"class":793,"line":108},[404,1869,1870],{},"Chained-Hash-Delete(T, x):\n",[404,1872,1873],{"class":793,"line":116},[404,1874,1875],{},"  delete $x$ from the list $T[h(key(x))]$\n",[381,1877,1878,1879,1903,1904,1928,1929,1932],{},"Insertion is ",[404,1880,1882],{"className":1881},[407],[404,1883,1885],{"className":1884,"ariaHidden":412},[411],[404,1886,1888,1891,1894,1897,1900],{"className":1887},[416],[404,1889],{"className":1890,"style":421},[420],[404,1892,428],{"className":1893,"style":427},[425,426],[404,1895,433],{"className":1896},[432],[404,1898,488],{"className":1899},[425],[404,1901,457],{"className":1902},[456]," (prepend, assuming the key is not already present). Deletion\nis ",[404,1905,1907],{"className":1906},[407],[404,1908,1910],{"className":1909,"ariaHidden":412},[411],[404,1911,1913,1916,1919,1922,1925],{"className":1912},[416],[404,1914],{"className":1915,"style":421},[420],[404,1917,428],{"className":1918,"style":427},[425,426],[404,1920,433],{"className":1921},[432],[404,1923,488],{"className":1924},[425],[404,1926,457],{"className":1927},[456]," given a pointer to the record in a doubly linked list. Search costs\ntime proportional to the length of the chain it scans, and ",[464,1930,1931],{},"that"," is what we\nmust analyze.",[1934,1935,1937],"h3",{"id":1936},"the-load-factor-and-expected-search-time","The load factor and expected search time",[381,1939,1940,1941,1956,1957,1972],{},"Let ",[404,1942,1944],{"className":1943},[407],[404,1945,1947],{"className":1946,"ariaHidden":412},[411],[404,1948,1950,1953],{"className":1949},[416],[404,1951],{"className":1952,"style":1243},[420],[404,1954,452],{"className":1955},[425,426]," be the number of keys stored in a table of ",[404,1958,1960],{"className":1959},[407],[404,1961,1963],{"className":1962,"ariaHidden":412},[411],[404,1964,1966,1969],{"className":1965},[416],[404,1967],{"className":1968,"style":1243},[420],[404,1970,640],{"className":1971},[425,426]," slots. The ratio",[404,1974,1976],{"className":1975},[974],[404,1977,1979],{"className":1978},[407],[404,1980,1982,2002],{"className":1981,"ariaHidden":412},[411],[404,1983,1985,1988,1993,1996,1999],{"className":1984},[416],[404,1986],{"className":1987,"style":1243},[420],[404,1989,1992],{"className":1990,"style":1991},[425,426],"margin-right:0.0037em;","α",[404,1994],{"className":1995,"style":580},[447],[404,1997,585],{"className":1998},[584],[404,2000],{"className":2001,"style":580},[447],[404,2003,2005,2009],{"className":2004},[416],[404,2006],{"className":2007,"style":2008},[420],"height:1.7936em;vertical-align:-0.686em;",[404,2010,2012,2016,2078],{"className":2011},[425],[404,2013],{"className":2014},[432,2015],"nulldelimiter",[404,2017,2020],{"className":2018},[2019],"mfrac",[404,2021,2023,2069],{"className":2022},[875,1678],[404,2024,2026,2066],{"className":2025},[879],[404,2027,2030,2043,2054],{"className":2028,"style":2029},[883],"height:1.1076em;",[404,2031,2033,2037],{"style":2032},"top:-2.314em;",[404,2034],{"className":2035,"style":2036},[890],"height:3em;",[404,2038,2040],{"className":2039},[425],[404,2041,640],{"className":2042},[425,426],[404,2044,2046,2049],{"style":2045},"top:-3.23em;",[404,2047],{"className":2048,"style":2036},[890],[404,2050],{"className":2051,"style":2053},[2052],"frac-line","border-bottom-width:0.04em;",[404,2055,2057,2060],{"style":2056},"top:-3.677em;",[404,2058],{"className":2059,"style":2036},[890],[404,2061,2063],{"className":2062},[425],[404,2064,452],{"className":2065},[425,426],[404,2067,1702],{"className":2068},[1701],[404,2070,2072],{"className":2071},[879],[404,2073,2076],{"className":2074,"style":2075},[883],"height:0.686em;",[404,2077],{},[404,2079],{"className":2080},[456,2015],[381,2082,2083,2084,2087,2088,2103,2104,2119],{},"is the ",[385,2085,2086],{},"load factor",", the average number of keys per slot. With chaining\n",[404,2089,2091],{"className":2090},[407],[404,2092,2094],{"className":2093,"ariaHidden":412},[411],[404,2095,2097,2100],{"className":2096},[416],[404,2098],{"className":2099,"style":1243},[420],[404,2101,1992],{"className":2102,"style":1991},[425,426]," may exceed ",[404,2105,2107],{"className":2106},[407],[404,2108,2110],{"className":2109,"ariaHidden":412},[411],[404,2111,2113,2116],{"className":2112},[416],[404,2114],{"className":2115,"style":842},[420],[404,2117,488],{"className":2118},[425],"; it is the average chain length.",[381,2121,2122,2123,2125,2126,2129,2130,2145,2146,2153,2154,2169,2170,2185,2186,2201],{},"To say anything about ",[464,2124,466],{}," chain length we need an assumption about how\nkeys spread out. The standard one is ",[385,2127,2128],{},"simple uniform hashing",": each key is\nequally likely to hash to any of the ",[404,2131,2133],{"className":2132},[407],[404,2134,2136],{"className":2135,"ariaHidden":412},[411],[404,2137,2139,2142],{"className":2138},[416],[404,2140],{"className":2141,"style":1243},[420],[404,2143,640],{"className":2144},[425,426]," slots, independently of the others.",[494,2147,2148],{},[399,2149,867],{"href":2150,"ariaDescribedBy":2151,"dataFootnoteRef":376,"id":2152},"#user-content-fn-erickson-hash",[500],"user-content-fnref-erickson-hash","\nUnder this assumption a chain has expected length ",[404,2155,2157],{"className":2156},[407],[404,2158,2160],{"className":2159,"ariaHidden":412},[411],[404,2161,2163,2166],{"className":2162},[416],[404,2164],{"className":2165,"style":1243},[420],[404,2167,1992],{"className":2168,"style":1991},[425,426],", and a search\nexamines on average ",[404,2171,2173],{"className":2172},[407],[404,2174,2176],{"className":2175,"ariaHidden":412},[411],[404,2177,2179,2182],{"className":2178},[416],[404,2180],{"className":2181,"style":1243},[420],[404,2183,1992],{"className":2184,"style":1991},[425,426]," keys plus the cost of computing ",[404,2187,2189],{"className":2188},[407],[404,2190,2192],{"className":2191,"ariaHidden":412},[411],[404,2193,2195,2198],{"className":2194},[416],[404,2196],{"className":2197,"style":726},[420],[404,2199,990],{"className":2200},[425,426]," and indexing\nthe table:",[2203,2204,2206],"callout",{"type":2205},"theorem",[381,2207,2208,2211,2212,2256],{},[385,2209,2210],{},"Theorem."," Under simple uniform hashing, an unsuccessful search in a chained\nhash table takes expected time ",[404,2213,2215],{"className":2214},[407],[404,2216,2218,2244],{"className":2217,"ariaHidden":412},[411],[404,2219,2221,2224,2228,2231,2234,2237,2241],{"className":2220},[416],[404,2222],{"className":2223,"style":421},[420],[404,2225,2227],{"className":2226},[425],"Θ",[404,2229,433],{"className":2230},[432],[404,2232,488],{"className":2233},[425],[404,2235],{"className":2236,"style":644},[447],[404,2238,2240],{"className":2239},[648],"+",[404,2242],{"className":2243,"style":644},[447],[404,2245,2247,2250,2253],{"className":2246},[416],[404,2248],{"className":2249,"style":421},[420],[404,2251,1992],{"className":2252,"style":1991},[425,426],[404,2254,457],{"className":2255},[456],", and so does a successful\nsearch.",[381,2258,2259,2262,2263,2278,2279,2309,2310,2325,2326,2350,2351,2375,2376,2391,2392,2509,2510,1086],{},[464,2260,2261],{},"Sketch."," For an unsuccessful search on key ",[404,2264,2266],{"className":2265},[407],[404,2267,2269],{"className":2268,"ariaHidden":412},[411],[404,2270,2272,2275],{"className":2271},[416],[404,2273],{"className":2274,"style":726},[420],[404,2276,731],{"className":2277,"style":730},[425,426],", we scan the entire chain\n",[404,2280,2282],{"className":2281},[407],[404,2283,2285],{"className":2284,"ariaHidden":412},[411],[404,2286,2288,2291,2294,2297,2300,2303,2306],{"className":2287},[416],[404,2289],{"className":2290,"style":421},[420],[404,2292,677],{"className":2293,"style":676},[425,426],[404,2295,527],{"className":2296},[432],[404,2298,990],{"className":2299},[425,426],[404,2301,433],{"className":2302},[432],[404,2304,731],{"className":2305,"style":730},[425,426],[404,2307,1357],{"className":2308},[456],", whose expected length is ",[404,2311,2313],{"className":2312},[407],[404,2314,2316],{"className":2315,"ariaHidden":412},[411],[404,2317,2319,2322],{"className":2318},[416],[404,2320],{"className":2321,"style":1243},[420],[404,2323,1992],{"className":2324,"style":1991},[425,426],"; add ",[404,2327,2329],{"className":2328},[407],[404,2330,2332],{"className":2331,"ariaHidden":412},[411],[404,2333,2335,2338,2341,2344,2347],{"className":2334},[416],[404,2336],{"className":2337,"style":421},[420],[404,2339,2227],{"className":2340},[425],[404,2342,433],{"className":2343},[432],[404,2345,488],{"className":2346},[425],[404,2348,457],{"className":2349},[456]," to compute ",[404,2352,2354],{"className":2353},[407],[404,2355,2357],{"className":2356,"ariaHidden":412},[411],[404,2358,2360,2363,2366,2369,2372],{"className":2359},[416],[404,2361],{"className":2362,"style":421},[420],[404,2364,990],{"className":2365},[425,426],[404,2367,433],{"className":2368},[432],[404,2370,731],{"className":2371,"style":730},[425,426],[404,2373,457],{"className":2374},[456],".\nFor a successful search, the expected number of elements examined before finding\n",[404,2377,2379],{"className":2378},[407],[404,2380,2382],{"className":2381,"ariaHidden":412},[411],[404,2383,2385,2388],{"className":2384},[416],[404,2386],{"className":2387,"style":726},[420],[404,2389,731],{"className":2390,"style":730},[425,426]," is ",[404,2393,2395],{"className":2394},[407],[404,2396,2398,2417,2439,2473,2497],{"className":2397,"ariaHidden":412},[411],[404,2399,2401,2405,2408,2411,2414],{"className":2400},[416],[404,2402],{"className":2403,"style":2404},[420],"height:0.7278em;vertical-align:-0.0833em;",[404,2406,488],{"className":2407},[425],[404,2409],{"className":2410,"style":644},[447],[404,2412,2240],{"className":2413},[648],[404,2415],{"className":2416,"style":644},[447],[404,2418,2420,2423,2426,2430,2433,2436],{"className":2419},[416],[404,2421],{"className":2422,"style":421},[420],[404,2424,1992],{"className":2425,"style":1991},[425,426],[404,2427,2429],{"className":2428},[425],"\u002F2",[404,2431],{"className":2432,"style":644},[447],[404,2434,649],{"className":2435},[648],[404,2437],{"className":2438,"style":644},[447],[404,2440,2442,2445,2448,2452,2455,2458,2461,2464,2467,2470],{"className":2441},[416],[404,2443],{"className":2444,"style":421},[420],[404,2446,1992],{"className":2447,"style":1991},[425,426],[404,2449,2451],{"className":2450},[425],"\u002F",[404,2453,433],{"className":2454},[432],[404,2456,867],{"className":2457},[425],[404,2459,452],{"className":2460},[425,426],[404,2462,457],{"className":2463},[456],[404,2465],{"className":2466,"style":580},[447],[404,2468,585],{"className":2469},[584],[404,2471],{"className":2472,"style":580},[447],[404,2474,2476,2479,2482,2485,2488,2491,2494],{"className":2475},[416],[404,2477],{"className":2478,"style":421},[420],[404,2480,2227],{"className":2481},[425],[404,2483,433],{"className":2484},[432],[404,2486,488],{"className":2487},[425],[404,2489],{"className":2490,"style":644},[447],[404,2492,2240],{"className":2493},[648],[404,2495],{"className":2496,"style":644},[447],[404,2498,2500,2503,2506],{"className":2499},[416],[404,2501],{"className":2502,"style":421},[420],[404,2504,1992],{"className":2505,"style":1991},[425,426],[404,2507,457],{"className":2508},[456]," by averaging over the\norder in which keys were inserted. Either way the bound is ",[404,2511,2513],{"className":2512},[407],[404,2514,2516,2540],{"className":2515,"ariaHidden":412},[411],[404,2517,2519,2522,2525,2528,2531,2534,2537],{"className":2518},[416],[404,2520],{"className":2521,"style":421},[420],[404,2523,2227],{"className":2524},[425],[404,2526,433],{"className":2527},[432],[404,2529,488],{"className":2530},[425],[404,2532],{"className":2533,"style":644},[447],[404,2535,2240],{"className":2536},[648],[404,2538],{"className":2539,"style":644},[447],[404,2541,2543,2546,2549],{"className":2542},[416],[404,2544],{"className":2545,"style":421},[420],[404,2547,1992],{"className":2548,"style":1991},[425,426],[404,2550,457],{"className":2551},[456],[381,2553,2554,2555,2597,2598,2640,2641,2644,2645,2673,2674,2689,2690,2693,2694,2709,2710,2725,2726,2750,2751,2775,2776,2779,2780,2804,2805,1086],{},"The consequence is the headline result. If we keep the table size proportional\nto the number of keys, ",[404,2556,2558],{"className":2557},[407],[404,2559,2561,2579],{"className":2560,"ariaHidden":412},[411],[404,2562,2564,2567,2570,2573,2576],{"className":2563},[416],[404,2565],{"className":2566,"style":1243},[420],[404,2568,640],{"className":2569},[425,426],[404,2571],{"className":2572,"style":580},[447],[404,2574,585],{"className":2575},[584],[404,2577],{"className":2578,"style":580},[447],[404,2580,2582,2585,2588,2591,2594],{"className":2581},[416],[404,2583],{"className":2584,"style":421},[420],[404,2586,2227],{"className":2587},[425],[404,2589,433],{"className":2590},[432],[404,2592,452],{"className":2593},[425,426],[404,2595,457],{"className":2596},[456]," so ",[404,2599,2601],{"className":2600},[407],[404,2602,2604,2622],{"className":2603,"ariaHidden":412},[411],[404,2605,2607,2610,2613,2616,2619],{"className":2606},[416],[404,2608],{"className":2609,"style":1243},[420],[404,2611,1992],{"className":2612,"style":1991},[425,426],[404,2614],{"className":2615,"style":580},[447],[404,2617,585],{"className":2618},[584],[404,2620],{"className":2621,"style":580},[447],[404,2623,2625,2628,2631,2634,2637],{"className":2624},[416],[404,2626],{"className":2627,"style":421},[420],[404,2629,428],{"className":2630,"style":427},[425,426],[404,2632,433],{"className":2633},[432],[404,2635,488],{"className":2636},[425],[404,2638,457],{"className":2639},[456],", then ",[464,2642,2643],{},"every","\ndictionary operation runs in ",[399,2646,2647,2648,2672],{"href":17},"expected ",[404,2649,2651],{"className":2650},[407],[404,2652,2654],{"className":2653,"ariaHidden":412},[411],[404,2655,2657,2660,2663,2666,2669],{"className":2656},[416],[404,2658],{"className":2659,"style":421},[420],[404,2661,2227],{"className":2662},[425],[404,2664,433],{"className":2665},[432],[404,2667,488],{"className":2668},[425],[404,2670,457],{"className":2671},[456]," time",". Keeping ",[404,2675,2677],{"className":2676},[407],[404,2678,2680],{"className":2679,"ariaHidden":412},[411],[404,2681,2683,2686],{"className":2682},[416],[404,2684],{"className":2685,"style":1243},[420],[404,2687,1992],{"className":2688,"style":1991},[425,426]," bounded\nis the job of ",[385,2691,2692],{},"dynamic resizing",": when ",[404,2695,2697],{"className":2696},[407],[404,2698,2700],{"className":2699,"ariaHidden":412},[411],[404,2701,2703,2706],{"className":2702},[416],[404,2704],{"className":2705,"style":1243},[420],[404,2707,1992],{"className":2708,"style":1991},[425,426]," grows past a threshold (say\n",[404,2711,2713],{"className":2712},[407],[404,2714,2716],{"className":2715,"ariaHidden":412},[411],[404,2717,2719,2722],{"className":2718},[416],[404,2720],{"className":2721,"style":842},[420],[404,2723,488],{"className":2724},[425],"), allocate a table of double the size and rehash every key into it. A single\nresize costs ",[404,2727,2729],{"className":2728},[407],[404,2730,2732],{"className":2731,"ariaHidden":412},[411],[404,2733,2735,2738,2741,2744,2747],{"className":2734},[416],[404,2736],{"className":2737,"style":421},[420],[404,2739,2227],{"className":2740},[425],[404,2742,433],{"className":2743},[432],[404,2745,452],{"className":2746},[425,426],[404,2748,457],{"className":2749},[456],", but it is triggered only after ",[404,2752,2754],{"className":2753},[407],[404,2755,2757],{"className":2756,"ariaHidden":412},[411],[404,2758,2760,2763,2766,2769,2772],{"className":2759},[416],[404,2761],{"className":2762,"style":421},[420],[404,2764,2227],{"className":2765},[425],[404,2767,433],{"className":2768},[432],[404,2770,452],{"className":2771},[425,426],[404,2773,457],{"className":2774},[456]," cheap\noperations, so the ",[464,2777,2778],{},"amortized"," cost per operation stays ",[404,2781,2783],{"className":2782},[407],[404,2784,2786],{"className":2785,"ariaHidden":412},[411],[404,2787,2789,2792,2795,2798,2801],{"className":2788},[416],[404,2790],{"className":2791,"style":421},[420],[404,2793,428],{"className":2794,"style":427},[425,426],[404,2796,433],{"className":2797},[432],[404,2799,488],{"className":2800},[425],[404,2802,457],{"className":2803},[456],", the same\ndoubling argument that makes a dynamic array's append amortized ",[404,2806,2808],{"className":2807},[407],[404,2809,2811],{"className":2810,"ariaHidden":412},[411],[404,2812,2814,2817,2820,2823,2826],{"className":2813},[416],[404,2815],{"className":2816,"style":421},[420],[404,2818,428],{"className":2819,"style":427},[425,426],[404,2821,433],{"className":2822},[432],[404,2824,488],{"className":2825},[425],[404,2827,457],{"className":2828},[456],[549,2830,2832],{"id":2831},"collision-resolution-by-open-addressing","Collision resolution by open addressing",[381,2834,2835,2836,2839,2840,2843,2844,2879,2880,2883,2884,997],{},"Chaining stores keys outside the table. ",[385,2837,2838],{},"Open addressing"," stores every key\n",[464,2841,2842],{},"inside"," the array itself: there are no lists and no pointers, so ",[404,2845,2847],{"className":2846},[407],[404,2848,2850,2870],{"className":2849,"ariaHidden":412},[411],[404,2851,2853,2857,2860,2863,2867],{"className":2852},[416],[404,2854],{"className":2855,"style":2856},[420],"height:0.7719em;vertical-align:-0.136em;",[404,2858,1992],{"className":2859,"style":1991},[425,426],[404,2861],{"className":2862,"style":580},[447],[404,2864,2866],{"className":2865},[584],"≤",[404,2868],{"className":2869,"style":580},[447],[404,2871,2873,2876],{"className":2872},[416],[404,2874],{"className":2875,"style":842},[420],[404,2877,488],{"className":2878},[425],"\nalways. When a key's preferred slot is occupied, we ",[385,2881,2882],{},"probe"," a deterministic\nsequence of alternative slots until we find an empty one. The probe sequence is\ndefined by extending the hash function with a probe number ",[404,2885,2887],{"className":2886},[407],[404,2888,2890],{"className":2889,"ariaHidden":412},[411],[404,2891,2893,2897],{"className":2892},[416],[404,2894],{"className":2895,"style":2896},[420],"height:0.6595em;",[404,2898,2900],{"className":2899},[425,426],"i",[404,2902,2904],{"className":2903},[974],[404,2905,2907],{"className":2906},[407],[404,2908,2910,2928,2948,3017],{"className":2909,"ariaHidden":412},[411],[404,2911,2913,2916,2919,2922,2925],{"className":2912},[416],[404,2914],{"className":2915,"style":726},[420],[404,2917,990],{"className":2918},[425,426],[404,2920],{"className":2921,"style":580},[447],[404,2923,997],{"className":2924},[584],[404,2926],{"className":2927,"style":580},[447],[404,2929,2931,2935,2938,2941,2945],{"className":2930},[416],[404,2932],{"className":2933,"style":2934},[420],"height:0.7667em;vertical-align:-0.0833em;",[404,2936,576],{"className":2937,"style":575},[425,426],[404,2939],{"className":2940,"style":644},[447],[404,2942,2944],{"className":2943},[648],"×",[404,2946],{"className":2947,"style":644},[447],[404,2949,2951,2954,3008,3011,3014],{"className":2950},[416],[404,2952],{"className":2953,"style":421},[420],[404,2955,2957,2960,2963,2966,2969,2972,2975,2978,2981,2984,2987,2990,2993,2996,2999,3002,3005],{"className":2956},[598],[404,2958,604],{"className":2959,"style":603},[432,602],[404,2961,608],{"className":2962},[425],[404,2964,535],{"className":2965},[534],[404,2967],{"className":2968,"style":448},[447],[404,2970,488],{"className":2971},[425],[404,2973,535],{"className":2974},[534],[404,2976],{"className":2977,"style":448},[447],[404,2979,627],{"className":2980},[598],[404,2982],{"className":2983,"style":448},[447],[404,2985,535],{"className":2986},[534],[404,2988],{"className":2989,"style":448},[447],[404,2991,640],{"className":2992},[425,426],[404,2994],{"className":2995,"style":644},[447],[404,2997,649],{"className":2998},[648],[404,3000],{"className":3001,"style":644},[447],[404,3003,488],{"className":3004},[425],[404,3006,659],{"className":3007,"style":603},[456,602],[404,3009],{"className":3010,"style":580},[447],[404,3012,1016],{"className":3013},[584],[404,3015],{"className":3016,"style":580},[447],[404,3018,3020,3023,3077,3080],{"className":3019},[416],[404,3021],{"className":3022,"style":421},[420],[404,3024,3026,3029,3032,3035,3038,3041,3044,3047,3050,3053,3056,3059,3062,3065,3068,3071,3074],{"className":3025},[598],[404,3027,604],{"className":3028,"style":603},[432,602],[404,3030,608],{"className":3031},[425],[404,3033,535],{"className":3034},[534],[404,3036],{"className":3037,"style":448},[447],[404,3039,488],{"className":3040},[425],[404,3042,535],{"className":3043},[534],[404,3045],{"className":3046,"style":448},[447],[404,3048,627],{"className":3049},[598],[404,3051],{"className":3052,"style":448},[447],[404,3054,535],{"className":3055},[534],[404,3057],{"className":3058,"style":448},[447],[404,3060,640],{"className":3061},[425,426],[404,3063],{"className":3064,"style":644},[447],[404,3066,649],{"className":3067},[648],[404,3069],{"className":3070,"style":644},[447],[404,3072,488],{"className":3073},[425],[404,3075,659],{"className":3076,"style":603},[456,602],[404,3078],{"className":3079,"style":448},[447],[404,3081,535],{"className":3082},[534],[381,3084,3085,3086,3101,3102,3198,3199,3214],{},"so the slots tried for key ",[404,3087,3089],{"className":3088},[407],[404,3090,3092],{"className":3091,"ariaHidden":412},[411],[404,3093,3095,3098],{"className":3094},[416],[404,3096],{"className":3097,"style":726},[420],[404,3099,731],{"className":3100,"style":730},[425,426]," are ",[404,3103,3105],{"className":3104},[407],[404,3106,3108],{"className":3107,"ariaHidden":412},[411],[404,3109,3111,3114,3117,3120,3123,3126,3129,3132,3135,3138,3141,3144,3147,3150,3153,3156,3159,3162,3165,3168,3171,3174,3177,3180,3183,3186,3189,3192,3195],{"className":3110},[416],[404,3112],{"className":3113,"style":421},[420],[404,3115,990],{"className":3116},[425,426],[404,3118,433],{"className":3119},[432],[404,3121,731],{"className":3122,"style":730},[425,426],[404,3124,535],{"className":3125},[534],[404,3127],{"className":3128,"style":448},[447],[404,3130,608],{"className":3131},[425],[404,3133,457],{"className":3134},[456],[404,3136,535],{"className":3137},[534],[404,3139],{"className":3140,"style":448},[447],[404,3142,990],{"className":3143},[425,426],[404,3145,433],{"className":3146},[432],[404,3148,731],{"className":3149,"style":730},[425,426],[404,3151,535],{"className":3152},[534],[404,3154],{"className":3155,"style":448},[447],[404,3157,488],{"className":3158},[425],[404,3160,457],{"className":3161},[456],[404,3163,535],{"className":3164},[534],[404,3166],{"className":3167,"style":448},[447],[404,3169,990],{"className":3170},[425,426],[404,3172,433],{"className":3173},[432],[404,3175,731],{"className":3176,"style":730},[425,426],[404,3178,535],{"className":3179},[534],[404,3181],{"className":3182,"style":448},[447],[404,3184,867],{"className":3185},[425],[404,3187,457],{"className":3188},[456],[404,3190,535],{"className":3191},[534],[404,3193],{"className":3194,"style":448},[447],[404,3196,627],{"className":3197},[598],", which must\nform a permutation of all ",[404,3200,3202],{"className":3201},[407],[404,3203,3205],{"className":3204,"ariaHidden":412},[411],[404,3206,3208,3211],{"className":3207},[416],[404,3209],{"className":3210,"style":1243},[420],[404,3212,640],{"className":3213},[425,426]," slots so that probing can examine every slot.",[784,3216,3218],{"className":786,"code":3217,"language":788,"meta":376,"style":376},"caption: $\\textsc{Hash-Insert}(T, k)$ — open addressing, returns the slot used\n$i \\gets 0$\nrepeat\n  $j \\gets h(k, i)$\n  if $T[j] = \\text{nil}$ then\n    $T[j] \\gets k$\n    return $j$\n  $i \\gets i + 1$\nuntil $i = m$\nerror \"hash table overflow\"\n",[394,3219,3220,3225,3230,3235,3240,3245,3250,3255,3260,3265],{"__ignoreMap":376},[404,3221,3222],{"class":793,"line":6},[404,3223,3224],{},"caption: $\\textsc{Hash-Insert}(T, k)$ — open addressing, returns the slot used\n",[404,3226,3227],{"class":793,"line":18},[404,3228,3229],{},"$i \\gets 0$\n",[404,3231,3232],{"class":793,"line":24},[404,3233,3234],{},"repeat\n",[404,3236,3237],{"class":793,"line":73},[404,3238,3239],{},"  $j \\gets h(k, i)$\n",[404,3241,3242],{"class":793,"line":102},[404,3243,3244],{},"  if $T[j] = \\text{nil}$ then\n",[404,3246,3247],{"class":793,"line":108},[404,3248,3249],{},"    $T[j] \\gets k$\n",[404,3251,3252],{"class":793,"line":116},[404,3253,3254],{},"    return $j$\n",[404,3256,3257],{"class":793,"line":196},[404,3258,3259],{},"  $i \\gets i + 1$\n",[404,3261,3262],{"class":793,"line":202},[404,3263,3264],{},"until $i = m$\n",[404,3266,3267],{"class":793,"line":283},[404,3268,3269],{},"error \"hash table overflow\"\n",[381,3271,3272,3273,3276,3277,3292,3293,3308,3309,3312],{},"Search follows the ",[464,3274,3275],{},"same"," probe sequence, stopping when it finds ",[404,3278,3280],{"className":3279},[407],[404,3281,3283],{"className":3282,"ariaHidden":412},[411],[404,3284,3286,3289],{"className":3285},[416],[404,3287],{"className":3288,"style":726},[420],[404,3290,731],{"className":3291,"style":730},[425,426]," (success)\nor an empty slot (failure, since ",[404,3294,3296],{"className":3295},[407],[404,3297,3299],{"className":3298,"ariaHidden":412},[411],[404,3300,3302,3305],{"className":3301},[416],[404,3303],{"className":3304,"style":726},[420],[404,3306,731],{"className":3307,"style":730},[425,426]," is not present, because insertion would have\nused that empty slot). Deletion is the awkward case: simply emptying a slot would\nbreak the probe chains of other keys, so deleted slots are marked with a special\n",[394,3310,3311],{},"deleted"," sentinel that search skips over but insertion may reuse. Heavy\ndeletion is the classic reason to prefer chaining.",[1360,3314,3316,3574],{"className":3315},[1363,1364],[1366,3317,3321],{"xmlns":1368,"width":3318,"height":3319,"viewBox":3320},"372.254","91.995","-75 -75 279.191 68.996",[1373,3322,3323,3345,3348,3365,3368,3375,3378,3392,3395,3411,3414,3427,3430,3437,3440,3453,3456,3511,3565],{"stroke":1375,"style":1376},[1373,3324,3326,3333,3339],{"stroke":1380,"fontSize":3325},"7",[1373,3327,3329],{"transform":3328},"translate(-54.61 2.43)",[1378,3330],{"d":3331,"fill":1375,"stroke":1375,"className":3332,"style":1462},"M-7.387-63.647Q-7.387-63.968-7.262-64.257Q-7.137-64.546-6.911-64.769Q-6.686-64.993-6.390-65.113Q-6.095-65.233-5.777-65.233Q-5.449-65.233-5.187-65.133Q-4.926-65.034-4.750-64.852Q-4.574-64.669-4.480-64.411Q-4.386-64.153-4.386-63.821Q-4.386-63.729-4.468-63.708L-6.723-63.708L-6.723-63.647Q-6.723-63.059-6.440-62.676Q-6.156-62.293-5.589-62.293Q-5.267-62.293-4.999-62.486Q-4.731-62.679-4.642-62.994Q-4.635-63.035-4.560-63.049L-4.468-63.049Q-4.386-63.025-4.386-62.953Q-4.386-62.946-4.392-62.919Q-4.505-62.522-4.876-62.283Q-5.247-62.044-5.671-62.044Q-6.108-62.044-6.508-62.252Q-6.908-62.461-7.147-62.828Q-7.387-63.195-7.387-63.647M-6.717-63.917L-4.902-63.917Q-4.902-64.194-4.999-64.446Q-5.097-64.699-5.295-64.855Q-5.493-65.010-5.777-65.010Q-6.054-65.010-6.267-64.852Q-6.481-64.693-6.599-64.438Q-6.717-64.183-6.717-63.917M-2.048-62.112L-3.784-62.112L-3.784-62.392Q-3.555-62.392-3.406-62.426Q-3.258-62.461-3.258-62.601L-3.258-64.450Q-3.258-64.720-3.365-64.781Q-3.473-64.843-3.784-64.843L-3.784-65.123L-2.755-65.198L-2.755-64.491Q-2.625-64.799-2.383-64.998Q-2.140-65.198-1.822-65.198Q-1.603-65.198-1.432-65.074Q-1.262-64.949-1.262-64.737Q-1.262-64.600-1.361-64.501Q-1.460-64.402-1.593-64.402Q-1.730-64.402-1.829-64.501Q-1.928-64.600-1.928-64.737Q-1.928-64.877-1.829-64.976Q-2.119-64.976-2.319-64.780Q-2.519-64.583-2.612-64.289Q-2.704-63.995-2.704-63.715L-2.704-62.601Q-2.704-62.392-2.048-62.392L-2.048-62.112M-0.619-62.840Q-0.619-63.172-0.395-63.399Q-0.171-63.626 0.172-63.754Q0.516-63.883 0.888-63.935Q1.261-63.988 1.565-63.988L1.565-64.241Q1.565-64.446 1.457-64.626Q1.350-64.805 1.169-64.908Q0.987-65.010 0.779-65.010Q0.372-65.010 0.136-64.918Q0.225-64.881 0.271-64.797Q0.318-64.713 0.318-64.611Q0.318-64.515 0.271-64.436Q0.225-64.358 0.145-64.313Q0.065-64.269-0.024-64.269Q-0.175-64.269-0.275-64.366Q-0.376-64.464-0.376-64.611Q-0.376-65.233 0.779-65.233Q0.991-65.233 1.240-65.169Q1.490-65.106 1.692-64.987Q1.893-64.867 2.020-64.682Q2.146-64.498 2.146-64.255L2.146-62.679Q2.146-62.563 2.208-62.467Q2.269-62.372 2.382-62.372Q2.491-62.372 2.556-62.466Q2.621-62.560 2.621-62.679L2.621-63.127L2.888-63.127L2.888-62.679Q2.888-62.409 2.661-62.244Q2.433-62.078 2.153-62.078Q1.944-62.078 1.808-62.232Q1.671-62.385 1.647-62.601Q1.500-62.334 1.218-62.189Q0.936-62.044 0.611-62.044Q0.335-62.044 0.051-62.119Q-0.233-62.194-0.426-62.373Q-0.619-62.553-0.619-62.840M-0.004-62.840Q-0.004-62.666 0.097-62.536Q0.198-62.406 0.353-62.336Q0.509-62.266 0.673-62.266Q0.892-62.266 1.100-62.363Q1.309-62.461 1.437-62.642Q1.565-62.823 1.565-63.049L1.565-63.777Q1.240-63.777 0.875-63.686Q0.509-63.595 0.253-63.383Q-0.004-63.172-0.004-62.840M3.305-62.119L3.305-63.182Q3.305-63.206 3.332-63.233Q3.360-63.260 3.383-63.260L3.493-63.260Q3.558-63.260 3.571-63.202Q3.667-62.768 3.913-62.517Q4.159-62.266 4.573-62.266Q4.915-62.266 5.168-62.399Q5.421-62.532 5.421-62.840Q5.421-62.997 5.327-63.112Q5.233-63.226 5.094-63.295Q4.956-63.363 4.788-63.401L4.207-63.500Q3.852-63.568 3.578-63.789Q3.305-64.009 3.305-64.351Q3.305-64.600 3.416-64.775Q3.527-64.949 3.713-65.048Q3.900-65.147 4.115-65.190Q4.330-65.233 4.573-65.233Q4.986-65.233 5.267-65.051L5.482-65.226Q5.492-65.229 5.499-65.231Q5.506-65.233 5.516-65.233L5.568-65.233Q5.595-65.233 5.619-65.209Q5.643-65.185 5.643-65.157L5.643-64.310Q5.643-64.289 5.619-64.262Q5.595-64.235 5.568-64.235L5.455-64.235Q5.427-64.235 5.402-64.260Q5.376-64.286 5.376-64.310Q5.376-64.546 5.270-64.710Q5.164-64.874 4.981-64.956Q4.798-65.038 4.566-65.038Q4.238-65.038 3.982-64.935Q3.725-64.833 3.725-64.556Q3.725-64.361 3.908-64.252Q4.091-64.142 4.320-64.101L4.894-63.995Q5.140-63.947 5.354-63.819Q5.568-63.691 5.704-63.488Q5.841-63.284 5.841-63.035Q5.841-62.522 5.475-62.283Q5.110-62.044 4.573-62.044Q4.077-62.044 3.746-62.338L3.479-62.064Q3.459-62.044 3.431-62.044L3.383-62.044Q3.360-62.044 3.332-62.071Q3.305-62.098 3.305-62.119M6.429-63.647Q6.429-63.968 6.554-64.257Q6.678-64.546 6.904-64.769Q7.130-64.993 7.425-65.113Q7.721-65.233 8.039-65.233Q8.367-65.233 8.628-65.133Q8.890-65.034 9.066-64.852Q9.242-64.669 9.336-64.411Q9.430-64.153 9.430-63.821Q9.430-63.729 9.348-63.708L7.092-63.708L7.092-63.647Q7.092-63.059 7.376-62.676Q7.659-62.293 8.227-62.293Q8.548-62.293 8.816-62.486Q9.085-62.679 9.173-62.994Q9.180-63.035 9.256-63.049L9.348-63.049Q9.430-63.025 9.430-62.953Q9.430-62.946 9.423-62.919Q9.310-62.522 8.939-62.283Q8.569-62.044 8.145-62.044Q7.707-62.044 7.307-62.252Q6.907-62.461 6.668-62.828Q6.429-63.195 6.429-63.647M7.099-63.917L8.914-63.917Q8.914-64.194 8.816-64.446Q8.719-64.699 8.521-64.855Q8.322-65.010 8.039-65.010Q7.762-65.010 7.548-64.852Q7.335-64.693 7.217-64.438Q7.099-64.183 7.099-63.917",[1389],[1373,3334,3335],{"transform":3328},[1378,3336],{"d":3337,"fill":1375,"stroke":1375,"className":3338,"style":1462},"M18.857-63.688L13.132-63.688Q13.067-63.688 13.019-63.741Q12.971-63.794 12.971-63.862Q12.971-63.927 13.019-63.978Q13.067-64.029 13.132-64.029L18.857-64.029Q18.607-64.214 18.399-64.462Q18.190-64.710 18.050-64.998Q17.910-65.287 17.848-65.598Q17.848-65.691 17.941-65.704L18.108-65.704Q18.183-65.694 18.194-65.619Q18.276-65.219 18.499-64.875Q18.723-64.532 19.055-64.294Q19.386-64.057 19.786-63.954Q19.844-63.934 19.844-63.862Q19.844-63.831 19.829-63.802Q19.814-63.773 19.786-63.770Q19.390-63.667 19.055-63.425Q18.720-63.182 18.496-62.837Q18.272-62.491 18.194-62.098Q18.183-62.023 18.108-62.013L17.941-62.013Q17.848-62.027 17.848-62.119Q17.944-62.587 18.205-62.994Q18.467-63.401 18.857-63.688",[1389],[1373,3340,3341],{"transform":3328},[1378,3342],{"d":3343,"fill":1375,"stroke":1375,"className":3344,"style":1462},"M25.087-62.112L23.453-62.112L23.453-62.392Q23.682-62.392 23.831-62.426Q23.980-62.461 23.980-62.601L23.980-64.450Q23.980-64.720 23.872-64.781Q23.764-64.843 23.453-64.843L23.453-65.123L24.513-65.198L24.513-64.549Q24.684-64.857 24.988-65.028Q25.292-65.198 25.637-65.198Q26.143-65.198 26.427-64.975Q26.711-64.751 26.711-64.255L26.711-62.601Q26.711-62.464 26.859-62.428Q27.008-62.392 27.234-62.392L27.234-62.112L25.603-62.112L25.603-62.392Q25.832-62.392 25.981-62.426Q26.130-62.461 26.130-62.601L26.130-64.241Q26.130-64.576 26.010-64.776Q25.890-64.976 25.576-64.976Q25.306-64.976 25.072-64.840Q24.838-64.703 24.699-64.469Q24.561-64.235 24.561-63.961L24.561-62.601Q24.561-62.464 24.711-62.428Q24.862-62.392 25.087-62.392L25.087-62.112M29.438-62.112L27.886-62.112L27.886-62.392Q28.112-62.392 28.261-62.426Q28.409-62.461 28.409-62.601L28.409-64.450Q28.409-64.638 28.362-64.722Q28.314-64.805 28.216-64.824Q28.119-64.843 27.907-64.843L27.907-65.123L28.963-65.198L28.963-62.601Q28.963-62.461 29.095-62.426Q29.226-62.392 29.438-62.392L29.438-62.112M28.167-66.419Q28.167-66.590 28.290-66.709Q28.413-66.829 28.584-66.829Q28.751-66.829 28.874-66.709Q28.997-66.590 28.997-66.419Q28.997-66.244 28.874-66.121Q28.751-65.998 28.584-65.998Q28.413-65.998 28.290-66.121Q28.167-66.244 28.167-66.419M31.752-62.112L30.149-62.112L30.149-62.392Q30.375-62.392 30.523-62.426Q30.672-62.461 30.672-62.601L30.672-66.220Q30.672-66.490 30.564-66.552Q30.457-66.613 30.149-66.613L30.149-66.894L31.226-66.969L31.226-62.601Q31.226-62.464 31.376-62.428Q31.527-62.392 31.752-62.392",[1389],[1378,3346],{"fill":1380,"d":3347},"M-21.887-52.153H6.566V-72.07h-28.453Z",[1373,3349,3350,3358],{"stroke":1380},[1373,3351,3353],{"transform":3352},"translate(-4.491 2.625)",[1378,3354],{"d":3355,"fill":1375,"stroke":1375,"className":3356,"style":3357},"M-7.172-62.283Q-7.172-62.336-7.163-62.362L-5.858-67.583Q-5.823-67.733-5.823-67.807Q-5.823-67.944-6.390-67.944Q-6.491-67.944-6.491-68.062Q-6.491-68.119-6.460-68.190Q-6.430-68.260-6.364-68.260L-5.142-68.357L-5.102-68.357Q-5.063-68.339-5.043-68.310Q-5.023-68.282-5.023-68.251L-5.023-68.216L-5.951-64.507Q-5.687-64.617-5.498-64.788Q-5.309-64.960-4.905-65.360Q-4.500-65.759-4.230-65.924Q-3.960-66.089-3.608-66.089Q-3.345-66.089-3.171-65.911Q-2.997-65.733-2.997-65.469Q-2.997-65.228-3.145-65.048Q-3.292-64.867-3.529-64.867Q-3.670-64.867-3.775-64.960Q-3.881-65.052-3.881-65.197Q-3.881-65.399-3.725-65.555Q-3.569-65.711-3.367-65.711Q-3.454-65.830-3.626-65.830Q-3.951-65.830-4.261-65.603Q-4.571-65.377-5.004-64.949Q-5.436-64.520-5.660-64.380Q-5.120-64.318-4.724-64.103Q-4.329-63.887-4.329-63.426Q-4.329-63.342-4.364-63.184Q-4.426-62.916-4.439-62.688Q-4.439-62.275-4.158-62.275Q-3.837-62.275-3.659-62.628Q-3.481-62.982-3.375-63.426Q-3.367-63.457-3.342-63.481Q-3.318-63.505-3.287-63.505L-3.178-63.505Q-3.134-63.505-3.112-63.472Q-3.090-63.439-3.090-63.391Q-3.230-62.833-3.483-62.422Q-3.736-62.011-4.175-62.011Q-4.571-62.011-4.823-62.272Q-5.076-62.534-5.076-62.921Q-5.076-63.017-5.041-63.219Q-5.014-63.312-5.014-63.408Q-5.014-63.641-5.175-63.800Q-5.335-63.958-5.579-64.037Q-5.823-64.116-6.038-64.138L-6.500-62.319Q-6.544-62.182-6.647-62.097Q-6.750-62.011-6.887-62.011Q-7.014-62.011-7.093-62.086Q-7.172-62.160-7.172-62.283",[1389],"stroke-width:0.270",[1373,3359,3360],{"transform":3352},[1378,3361],{"d":3362,"fill":1375,"stroke":1375,"className":3363,"style":3364},"M0.196-61.112L-2.095-61.112L-2.095-61.370Q-1.219-61.370-1.219-61.543L-1.219-64.622Q-1.412-64.534-1.644-64.497Q-1.875-64.461-2.130-64.461L-2.130-64.718Q-1.752-64.718-1.431-64.803Q-1.111-64.888-0.882-65.102L-0.762-65.102Q-0.730-65.102-0.705-65.079Q-0.680-65.055-0.680-65.017L-0.680-61.543Q-0.680-61.370 0.196-61.370",[1389],"stroke-width:0.180",[1378,3366],{"fill":1380,"d":3367},"M6.966-52.153h28.453V-72.07H6.966Z",[1373,3369,3371],{"transform":3370},"translate(23.714 3.125)",[1378,3372],{"d":3373,"fill":1375,"stroke":1375,"className":3374,"style":3357},"M-5.274-62.112L-7.361-62.112L-7.361-62.428Q-7.054-62.428-6.862-62.481Q-6.671-62.534-6.671-62.723L-6.671-65.171Q-6.671-65.412-6.742-65.520Q-6.812-65.628-6.946-65.652Q-7.080-65.676-7.361-65.676L-7.361-65.992L-6.021-66.089L-6.021-65.254Q-5.823-65.636-5.469-65.863Q-5.116-66.089-4.689-66.089Q-3.410-66.089-3.410-64.876L-3.410-62.723Q-3.410-62.534-3.219-62.481Q-3.028-62.428-2.721-62.428L-2.721-62.112L-4.808-62.112L-4.808-62.428Q-4.496-62.428-4.305-62.481Q-4.114-62.534-4.114-62.723L-4.114-64.841Q-4.114-65.100-4.158-65.322Q-4.202-65.544-4.347-65.687Q-4.492-65.830-4.751-65.830Q-5.094-65.830-5.375-65.641Q-5.656-65.452-5.812-65.140Q-5.968-64.828-5.968-64.481L-5.968-62.723Q-5.968-62.534-5.775-62.481Q-5.581-62.428-5.274-62.428L-5.274-62.112M-0.229-62.112L-2.215-62.112L-2.215-62.428Q-1.908-62.428-1.716-62.481Q-1.525-62.534-1.525-62.723L-1.525-65.171Q-1.525-65.417-1.591-65.522Q-1.657-65.628-1.782-65.652Q-1.908-65.676-2.180-65.676L-2.180-65.992L-0.848-66.089L-0.848-62.723Q-0.848-62.529-0.684-62.479Q-0.519-62.428-0.229-62.428L-0.229-62.112M-1.828-67.636Q-1.828-67.842-1.679-67.992Q-1.530-68.141-1.327-68.141Q-1.196-68.141-1.079-68.071Q-0.963-68.001-0.892-67.884Q-0.822-67.768-0.822-67.636Q-0.822-67.434-0.972-67.284Q-1.121-67.135-1.327-67.135Q-1.530-67.135-1.679-67.284Q-1.828-67.434-1.828-67.636M2.412-62.112L0.351-62.112L0.351-62.428Q0.659-62.428 0.850-62.481Q1.041-62.534 1.041-62.723L1.041-67.438Q1.041-67.680 0.971-67.788Q0.901-67.895 0.767-67.919Q0.632-67.944 0.351-67.944L0.351-68.260L1.718-68.357L1.718-62.723Q1.718-62.534 1.911-62.481Q2.105-62.428 2.412-62.428",[1389],[1378,3376],{"fill":1380,"d":3377},"M35.819-52.153H64.27V-72.07H35.82Z",[1373,3379,3380,3386],{"stroke":1380},[1373,3381,3383],{"transform":3382},"translate(53.214 2.625)",[1378,3384],{"d":3355,"fill":1375,"stroke":1375,"className":3385,"style":3357},[1389],[1373,3387,3388],{"transform":3382},[1378,3389],{"d":3390,"fill":1375,"stroke":1375,"className":3391,"style":3364},"M-2.072-61.563Q-1.776-61.226-1.046-61.226Q-0.788-61.226-0.608-61.354Q-0.428-61.481-0.340-61.689Q-0.252-61.897-0.252-62.155Q-0.252-62.550-0.459-62.821Q-0.665-63.092-1.052-63.092L-1.518-63.092Q-1.582-63.107-1.597-63.169L-1.597-63.236Q-1.582-63.292-1.518-63.309L-1.116-63.333Q-0.906-63.333-0.737-63.475Q-0.569-63.617-0.476-63.831Q-0.384-64.045-0.384-64.261Q-0.384-64.549-0.569-64.714Q-0.753-64.880-1.046-64.880Q-1.307-64.880-1.531-64.812Q-1.755-64.745-1.902-64.587Q-1.773-64.569-1.694-64.480Q-1.615-64.390-1.615-64.261Q-1.615-64.124-1.710-64.029Q-1.805-63.933-1.946-63.933Q-2.080-63.933-2.177-64.030Q-2.274-64.127-2.274-64.261Q-2.274-64.549-2.083-64.740Q-1.893-64.932-1.612-65.017Q-1.330-65.102-1.046-65.102Q-0.771-65.102-0.470-65.011Q-0.170-64.921 0.038-64.732Q0.246-64.543 0.246-64.261Q0.246-63.8920-63.620Q-0.246-63.347-0.618-63.218Q-0.199-63.125 0.118-62.842Q0.436-62.559 0.436-62.161Q0.436-61.798 0.217-61.532Q-0.003-61.267-0.349-61.127Q-0.695-60.986-1.046-60.986Q-1.269-60.986-1.516-61.034Q-1.764-61.083-1.984-61.193Q-2.203-61.302-2.335-61.481Q-2.467-61.660-2.467-61.915Q-2.467-62.064-2.365-62.167Q-2.262-62.269-2.113-62.269Q-1.963-62.269-1.861-62.167Q-1.758-62.064-1.758-61.915Q-1.758-61.783-1.847-61.682Q-1.937-61.581-2.072-61.563",[1389],[1378,3393],{"fill":1380,"d":3394},"M64.671-52.153h28.453V-72.07H64.671Z",[1373,3396,3398,3405],{"stroke":1380,"fontFamily":3397,"fontSize":3325},"cmr7",[1373,3399,3401],{"transform":3400},"translate(-51.047 45.11)",[1378,3402],{"d":3403,"fill":1375,"stroke":1375,"className":3404,"style":1462},"M-6.819-62.953L-6.819-64.850L-7.458-64.850L-7.458-65.072Q-7.140-65.072-6.923-65.282Q-6.706-65.492-6.606-65.802Q-6.505-66.111-6.505-66.419L-6.238-66.419L-6.238-65.130L-5.161-65.130L-5.161-64.850L-6.238-64.850L-6.238-62.966Q-6.238-62.690-6.134-62.491Q-6.030-62.293-5.770-62.293Q-5.613-62.293-5.507-62.397Q-5.401-62.502-5.351-62.655Q-5.302-62.809-5.302-62.966L-5.302-63.380L-5.035-63.380L-5.035-62.953Q-5.035-62.727-5.134-62.517Q-5.233-62.307-5.418-62.175Q-5.602-62.044-5.831-62.044Q-6.269-62.044-6.544-62.281Q-6.819-62.519-6.819-62.953M-4.266-63.595Q-4.266-63.937-4.131-64.236Q-3.996-64.535-3.757-64.759Q-3.517-64.983-3.200-65.108Q-2.882-65.233-2.550-65.233Q-2.106-65.233-1.706-65.017Q-1.306-64.802-1.072-64.424Q-0.838-64.047-0.838-63.595Q-0.838-63.254-0.980-62.970Q-1.121-62.686-1.366-62.479Q-1.610-62.273-1.920-62.158Q-2.229-62.044-2.550-62.044Q-2.981-62.044-3.382-62.245Q-3.784-62.447-4.025-62.799Q-4.266-63.151-4.266-63.595M-2.550-62.293Q-1.949-62.293-1.725-62.671Q-1.501-63.049-1.501-63.681Q-1.501-64.293-1.735-64.652Q-1.969-65.010-2.550-65.010Q-3.603-65.010-3.603-63.681Q-3.603-63.049-3.377-62.671Q-3.152-62.293-2.550-62.293M1.439-62.112L-0.195-62.112L-0.195-62.392Q0.034-62.392 0.183-62.426Q0.331-62.461 0.331-62.601L0.331-64.450Q0.331-64.720 0.224-64.781Q0.116-64.843-0.195-64.843L-0.195-65.123L0.864-65.198L0.864-64.549Q1.035-64.857 1.340-65.028Q1.644-65.198 1.989-65.198Q2.389-65.198 2.666-65.058Q2.943-64.918 3.028-64.570Q3.195-64.863 3.495-65.031Q3.794-65.198 4.139-65.198Q4.645-65.198 4.928-64.975Q5.212-64.751 5.212-64.255L5.212-62.601Q5.212-62.464 5.361-62.428Q5.509-62.392 5.735-62.392L5.735-62.112L4.105-62.112L4.105-62.392Q4.330-62.392 4.481-62.428Q4.631-62.464 4.631-62.601L4.631-64.241Q4.631-64.576 4.511-64.776Q4.392-64.976 4.077-64.976Q3.807-64.976 3.573-64.840Q3.339-64.703 3.201-64.469Q3.062-64.235 3.062-63.961L3.062-62.601Q3.062-62.464 3.211-62.428Q3.360-62.392 3.585-62.392L3.585-62.112L1.955-62.112L1.955-62.392Q2.184-62.392 2.332-62.426Q2.481-62.461 2.481-62.601L2.481-64.241Q2.481-64.576 2.361-64.776Q2.242-64.976 1.927-64.976Q1.657-64.976 1.423-64.840Q1.189-64.703 1.051-64.469Q0.912-64.235 0.912-63.961L0.912-62.601Q0.912-62.464 1.063-62.428Q1.213-62.392 1.439-62.392",[1389],[1373,3406,3407],{"transform":3400},[1378,3408],{"d":3409,"fill":1375,"stroke":1375,"className":3410,"style":1462},"M6.926-62.112L6.659-62.112L6.659-66.220Q6.659-66.490 6.552-66.552Q6.444-66.613 6.133-66.613L6.133-66.894L7.213-66.969L7.213-64.799Q7.422-64.990 7.707-65.094Q7.992-65.198 8.290-65.198Q8.608-65.198 8.905-65.077Q9.202-64.956 9.425-64.740Q9.647-64.525 9.773-64.240Q9.900-63.954 9.900-63.623Q9.900-63.178 9.660-62.814Q9.421-62.450 9.028-62.247Q8.635-62.044 8.191-62.044Q7.996-62.044 7.806-62.100Q7.617-62.156 7.456-62.261Q7.295-62.365 7.155-62.526L6.926-62.112M7.241-64.457L7.241-62.840Q7.377-62.580 7.618-62.423Q7.859-62.266 8.136-62.266Q8.430-62.266 8.642-62.373Q8.854-62.481 8.987-62.673Q9.120-62.864 9.179-63.103Q9.237-63.342 9.237-63.623Q9.237-63.982 9.143-64.286Q9.049-64.590 8.821-64.783Q8.594-64.976 8.228-64.976Q7.928-64.976 7.661-64.840Q7.394-64.703 7.241-64.457M10.535-62.119L10.535-63.182Q10.535-63.206 10.563-63.233Q10.590-63.260 10.614-63.260L10.723-63.260Q10.788-63.260 10.802-63.202Q10.898-62.768 11.144-62.517Q11.390-62.266 11.804-62.266Q12.145-62.266 12.398-62.399Q12.651-62.532 12.651-62.840Q12.651-62.997 12.557-63.112Q12.463-63.226 12.325-63.295Q12.186-63.363 12.019-63.401L11.438-63.500Q11.082-63.568 10.809-63.789Q10.535-64.009 10.535-64.351Q10.535-64.600 10.647-64.775Q10.758-64.949 10.944-65.048Q11.130-65.147 11.346-65.190Q11.561-65.233 11.804-65.233Q12.217-65.233 12.497-65.051L12.713-65.226Q12.723-65.229 12.730-65.231Q12.737-65.233 12.747-65.233L12.798-65.233Q12.826-65.233 12.849-65.209Q12.873-65.185 12.873-65.157L12.873-64.310Q12.873-64.289 12.849-64.262Q12.826-64.235 12.798-64.235L12.685-64.235Q12.658-64.235 12.632-64.260Q12.607-64.286 12.607-64.310Q12.607-64.546 12.501-64.710Q12.395-64.874 12.212-64.956Q12.029-65.038 11.797-65.038Q11.469-65.038 11.212-64.935Q10.956-64.833 10.956-64.556Q10.956-64.361 11.139-64.252Q11.322-64.142 11.551-64.101L12.125-63.995Q12.371-63.947 12.585-63.819Q12.798-63.691 12.935-63.488Q13.072-63.284 13.072-63.035Q13.072-62.522 12.706-62.283Q12.340-62.044 11.804-62.044Q11.308-62.044 10.976-62.338L10.710-62.064Q10.689-62.044 10.662-62.044L10.614-62.044Q10.590-62.044 10.563-62.071Q10.535-62.098 10.535-62.119M14.227-62.953L14.227-64.850L13.588-64.850L13.588-65.072Q13.906-65.072 14.123-65.282Q14.340-65.492 14.440-65.802Q14.541-66.111 14.541-66.419L14.808-66.419L14.808-65.130L15.885-65.130L15.885-64.850L14.808-64.850L14.808-62.966Q14.808-62.690 14.912-62.491Q15.016-62.293 15.276-62.293Q15.433-62.293 15.539-62.397Q15.645-62.502 15.695-62.655Q15.744-62.809 15.744-62.966L15.744-63.380L16.011-63.380L16.011-62.953Q16.011-62.727 15.912-62.517Q15.813-62.307 15.628-62.175Q15.444-62.044 15.215-62.044Q14.777-62.044 14.502-62.281Q14.227-62.519 14.227-62.953M16.780-63.595Q16.780-63.937 16.915-64.236Q17.050-64.535 17.289-64.759Q17.529-64.983 17.847-65.108Q18.164-65.233 18.496-65.233Q18.940-65.233 19.340-65.017Q19.740-64.802 19.974-64.424Q20.208-64.047 20.208-63.595Q20.208-63.254 20.066-62.970Q19.925-62.686 19.680-62.479Q19.436-62.273 19.127-62.158Q18.817-62.044 18.496-62.044Q18.065-62.044 17.664-62.245Q17.262-62.447 17.021-62.799Q16.780-63.151 16.780-63.595M18.496-62.293Q19.097-62.293 19.321-62.671Q19.545-63.049 19.545-63.681Q19.545-64.293 19.311-64.652Q19.077-65.010 18.496-65.010Q17.443-65.010 17.443-63.681Q17.443-63.049 17.669-62.671Q17.894-62.293 18.496-62.293M22.485-62.112L20.851-62.112L20.851-62.392Q21.080-62.392 21.229-62.426Q21.377-62.461 21.377-62.601L21.377-64.450Q21.377-64.720 21.270-64.781Q21.162-64.843 20.851-64.843L20.851-65.123L21.910-65.198L21.910-64.549Q22.081-64.857 22.386-65.028Q22.690-65.198 23.035-65.198Q23.541-65.198 23.825-64.975Q24.108-64.751 24.108-64.255L24.108-62.601Q24.108-62.464 24.257-62.428Q24.406-62.392 24.631-62.392L24.631-62.112L23.001-62.112L23.001-62.392Q23.230-62.392 23.378-62.426Q23.527-62.461 23.527-62.601L23.527-64.241Q23.527-64.576 23.408-64.776Q23.288-64.976 22.973-64.976Q22.703-64.976 22.469-64.840Q22.235-64.703 22.097-64.469Q21.958-64.235 21.958-63.961L21.958-62.601Q21.958-62.464 22.109-62.428Q22.259-62.392 22.485-62.392L22.485-62.112M25.178-63.647Q25.178-63.968 25.303-64.257Q25.428-64.546 25.653-64.769Q25.879-64.993 26.174-65.113Q26.470-65.233 26.788-65.233Q27.116-65.233 27.378-65.133Q27.639-65.034 27.815-64.852Q27.991-64.669 28.085-64.411Q28.179-64.153 28.179-63.821Q28.179-63.729 28.097-63.708L25.841-63.708L25.841-63.647Q25.841-63.059 26.125-62.676Q26.409-62.293 26.976-62.293Q27.297-62.293 27.565-62.486Q27.834-62.679 27.923-62.994Q27.930-63.035 28.005-63.049L28.097-63.049Q28.179-63.025 28.179-62.953Q28.179-62.946 28.172-62.919Q28.059-62.522 27.689-62.283Q27.318-62.044 26.894-62.044Q26.456-62.044 26.056-62.252Q25.657-62.461 25.417-62.828Q25.178-63.195 25.178-63.647M25.848-63.917L27.663-63.917Q27.663-64.194 27.565-64.446Q27.468-64.699 27.270-64.855Q27.072-65.010 26.788-65.010Q26.511-65.010 26.297-64.852Q26.084-64.693 25.966-64.438Q25.848-64.183 25.848-63.917",[1389],[1378,3412],{"fill":1380,"d":3413},"M-21.887-9.474H6.566v-19.917h-28.453Z",[1373,3415,3416,3422],{"stroke":1380},[1373,3417,3419],{"transform":3418},"translate(-4.491 45.304)",[1378,3420],{"d":3355,"fill":1375,"stroke":1375,"className":3421,"style":3357},[1389],[1373,3423,3424],{"transform":3418},[1378,3425],{"d":3362,"fill":1375,"stroke":1375,"className":3426,"style":3364},[1389],[1378,3428],{"fill":1380,"d":3429},"M6.966-9.474h28.453v-19.917H6.966Z",[1373,3431,3433],{"transform":3432},"translate(21.223 44.992)",[1378,3434],{"d":3435,"fill":1375,"stroke":1375,"className":3436,"style":3357},"M-4.698-62.112L-7.273-62.112L-7.273-62.371Q-7.062-62.371-6.931-62.389Q-6.799-62.406-6.711-62.481Q-6.623-62.556-6.623-62.714L-6.623-66.133Q-6.623-66.366-6.788-66.421Q-6.952-66.476-7.273-66.476L-7.273-66.739L-4.698-66.739Q-4.232-66.739-3.828-66.548Q-3.424-66.357-3.129-66.030Q-2.835-65.702-2.668-65.274Q-2.501-64.845-2.501-64.380Q-2.501-63.782-2.795-63.257Q-3.090-62.732-3.593-62.422Q-4.096-62.112-4.698-62.112M-5.643-62.371L-4.905-62.371Q-4.039-62.371-3.663-62.923Q-3.287-63.474-3.287-64.380Q-3.287-64.815-3.367-65.186Q-3.446-65.557-3.632-65.852Q-3.819-66.146-4.131-66.311Q-4.443-66.476-4.905-66.476L-5.643-66.476Q-5.849-66.476-5.909-66.412Q-5.968-66.348-5.968-66.133L-5.968-62.714Q-5.968-62.508-5.907-62.439Q-5.845-62.371-5.643-62.371M2.456-62.112L-1.675-62.112L-1.675-62.371Q-1.464-62.371-1.332-62.389Q-1.200-62.406-1.114-62.481Q-1.029-62.556-1.029-62.714L-1.029-66.133Q-1.029-66.366-1.191-66.421Q-1.354-66.476-1.675-66.476L-1.675-66.739L2.346-66.739L2.518-65.179L2.258-65.179Q2.193-65.759 2.048-66.030Q1.902-66.300 1.604-66.388Q1.305-66.476 0.720-66.476L-0.018-66.476Q-0.224-66.476-0.284-66.412Q-0.343-66.348-0.343-66.133L-0.343-64.639L0.171-64.639Q0.531-64.639 0.705-64.692Q0.879-64.744 0.951-64.909Q1.024-65.074 1.024-65.425L1.287-65.425L1.287-63.597L1.024-63.597Q1.024-63.949 0.951-64.112Q0.879-64.274 0.703-64.327Q0.527-64.380 0.171-64.380L-0.343-64.380L-0.343-62.714Q-0.343-62.508-0.282-62.439Q-0.220-62.371-0.018-62.371L0.773-62.371Q1.274-62.371 1.562-62.439Q1.850-62.508 2.023-62.668Q2.197-62.828 2.291-63.118Q2.386-63.408 2.456-63.896L2.715-63.896L2.456-62.112M7.057-62.112L3.340-62.112L3.340-62.371Q3.550-62.371 3.682-62.389Q3.814-62.406 3.900-62.481Q3.986-62.556 3.986-62.714L3.986-66.133Q3.986-66.366 3.823-66.421Q3.660-66.476 3.340-66.476L3.340-66.739L5.480-66.739L5.480-66.476Q5.128-66.476 4.900-66.419Q4.671-66.362 4.671-66.133L4.671-62.714Q4.671-62.508 4.733-62.439Q4.794-62.371 4.996-62.371L5.572-62.371Q6.965-62.371 6.965-63.896L7.229-63.896",[1389],[1378,3438],{"fill":1380,"d":3439},"M35.819-9.474H64.27v-19.917H35.82Z",[1373,3441,3442,3448],{"stroke":1380},[1373,3443,3445],{"transform":3444},"translate(53.214 45.304)",[1378,3446],{"d":3355,"fill":1375,"stroke":1375,"className":3447,"style":3357},[1389],[1373,3449,3450],{"transform":3444},[1378,3451],{"d":3390,"fill":1375,"stroke":1375,"className":3452,"style":3364},[1389],[1378,3454],{"fill":1380,"d":3455},"M64.671-9.474h28.453v-19.917H64.671Z",[1373,3457,3459],{"fill":3458,"stroke":3458},"var(--tk-accent)",[1373,3460,3461,3468,3474,3480,3487,3493,3499,3505],{"fill":3458,"stroke":1380},[1373,3462,3464],{"transform":3463},"translate(101.757 1.75)",[1378,3465],{"d":3466,"fill":3458,"stroke":3458,"className":3467,"style":1462},"M-7.346-62.119L-7.346-63.182Q-7.346-63.206-7.318-63.233Q-7.291-63.260-7.267-63.260L-7.158-63.260Q-7.093-63.260-7.079-63.202Q-6.983-62.768-6.737-62.517Q-6.491-62.266-6.077-62.266Q-5.736-62.266-5.483-62.399Q-5.230-62.532-5.230-62.840Q-5.230-62.997-5.324-63.112Q-5.418-63.226-5.556-63.295Q-5.695-63.363-5.862-63.401L-6.443-63.500Q-6.799-63.568-7.072-63.789Q-7.346-64.009-7.346-64.351Q-7.346-64.600-7.234-64.775Q-7.123-64.949-6.937-65.048Q-6.751-65.147-6.535-65.190Q-6.320-65.233-6.077-65.233Q-5.664-65.233-5.384-65.051L-5.168-65.226Q-5.158-65.229-5.151-65.231Q-5.144-65.233-5.134-65.233L-5.083-65.233Q-5.056-65.233-5.032-65.209Q-5.008-65.185-5.008-65.157L-5.008-64.310Q-5.008-64.289-5.032-64.262Q-5.056-64.235-5.083-64.235L-5.196-64.235Q-5.223-64.235-5.249-64.260Q-5.274-64.286-5.274-64.310Q-5.274-64.546-5.380-64.710Q-5.486-64.874-5.669-64.956Q-5.852-65.038-6.084-65.038Q-6.412-65.038-6.669-64.935Q-6.925-64.833-6.925-64.556Q-6.925-64.361-6.742-64.252Q-6.559-64.142-6.330-64.101L-5.756-63.995Q-5.510-63.947-5.296-63.819Q-5.083-63.691-4.946-63.488Q-4.809-63.284-4.809-63.035Q-4.809-62.522-5.175-62.283Q-5.541-62.044-6.077-62.044Q-6.573-62.044-6.905-62.338L-7.171-62.064Q-7.192-62.044-7.219-62.044L-7.267-62.044Q-7.291-62.044-7.318-62.071Q-7.346-62.098-7.346-62.119M-4.222-63.647Q-4.222-63.968-4.097-64.257Q-3.972-64.546-3.746-64.769Q-3.521-64.993-3.225-65.113Q-2.930-65.233-2.612-65.233Q-2.284-65.233-2.022-65.133Q-1.761-65.034-1.585-64.852Q-1.409-64.669-1.315-64.411Q-1.221-64.153-1.221-63.821Q-1.221-63.729-1.303-63.708L-3.558-63.708L-3.558-63.647Q-3.558-63.059-3.275-62.676Q-2.991-62.293-2.424-62.293Q-2.102-62.293-1.834-62.486Q-1.566-62.679-1.477-62.994Q-1.470-63.035-1.395-63.049L-1.303-63.049Q-1.221-63.025-1.221-62.953Q-1.221-62.946-1.227-62.919Q-1.340-62.522-1.711-62.283Q-2.082-62.044-2.506-62.044Q-2.943-62.044-3.343-62.252Q-3.743-62.461-3.982-62.828Q-4.222-63.195-4.222-63.647M-3.552-63.917L-1.737-63.917Q-1.737-64.194-1.834-64.446Q-1.931-64.699-2.130-64.855Q-2.328-65.010-2.612-65.010Q-2.889-65.010-3.102-64.852Q-3.316-64.693-3.434-64.438Q-3.552-64.183-3.552-63.917M-0.575-62.840Q-0.575-63.172-0.351-63.399Q-0.127-63.626 0.217-63.754Q0.560-63.883 0.933-63.935Q1.305-63.988 1.610-63.988L1.610-64.241Q1.610-64.446 1.502-64.626Q1.394-64.805 1.213-64.908Q1.032-65.010 0.823-65.010Q0.417-65.010 0.181-64.918Q0.270-64.881 0.316-64.797Q0.362-64.713 0.362-64.611Q0.362-64.515 0.316-64.436Q0.270-64.358 0.189-64.313Q0.109-64.269 0.020-64.269Q-0.130-64.269-0.231-64.366Q-0.332-64.464-0.332-64.611Q-0.332-65.233 0.823-65.233Q1.035-65.233 1.285-65.169Q1.534-65.106 1.736-64.987Q1.938-64.867 2.064-64.682Q2.191-64.498 2.191-64.255L2.191-62.679Q2.191-62.563 2.252-62.467Q2.314-62.372 2.426-62.372Q2.536-62.372 2.601-62.466Q2.666-62.560 2.666-62.679L2.666-63.127L2.932-63.127L2.932-62.679Q2.932-62.409 2.705-62.244Q2.478-62.078 2.197-62.078Q1.989-62.078 1.852-62.232Q1.715-62.385 1.692-62.601Q1.545-62.334 1.263-62.189Q0.981-62.044 0.656-62.044Q0.379-62.044 0.095-62.119Q-0.188-62.194-0.381-62.373Q-0.575-62.553-0.575-62.840M0.041-62.840Q0.041-62.666 0.142-62.536Q0.242-62.406 0.398-62.336Q0.553-62.266 0.717-62.266Q0.936-62.266 1.145-62.363Q1.353-62.461 1.481-62.642Q1.610-62.823 1.610-63.049L1.610-63.777Q1.285-63.777 0.919-63.686Q0.553-63.595 0.297-63.383Q0.041-63.172 0.041-62.840M5.099-62.112L3.363-62.112L3.363-62.392Q3.592-62.392 3.741-62.426Q3.889-62.461 3.889-62.601L3.889-64.450Q3.889-64.720 3.782-64.781Q3.674-64.843 3.363-64.843L3.363-65.123L4.392-65.198L4.392-64.491Q4.522-64.799 4.764-64.998Q5.007-65.198 5.325-65.198Q5.544-65.198 5.715-65.074Q5.885-64.949 5.885-64.737Q5.885-64.600 5.786-64.501Q5.687-64.402 5.554-64.402Q5.417-64.402 5.318-64.501Q5.219-64.600 5.219-64.737Q5.219-64.877 5.318-64.976Q5.027-64.976 4.828-64.780Q4.628-64.583 4.535-64.289Q4.443-63.995 4.443-63.715L4.443-62.601Q4.443-62.392 5.099-62.392L5.099-62.112M6.470-63.623Q6.470-63.951 6.605-64.252Q6.740-64.552 6.976-64.773Q7.212-64.993 7.516-65.113Q7.820-65.233 8.145-65.233Q8.651-65.233 8.999-65.130Q9.348-65.028 9.348-64.652Q9.348-64.505 9.250-64.404Q9.153-64.303 9.006-64.303Q8.852-64.303 8.753-64.402Q8.654-64.501 8.654-64.652Q8.654-64.840 8.794-64.932Q8.592-64.983 8.152-64.983Q7.796-64.983 7.567-64.787Q7.338-64.590 7.237-64.281Q7.136-63.971 7.136-63.623Q7.136-63.274 7.263-62.968Q7.389-62.662 7.644-62.478Q7.899-62.293 8.254-62.293Q8.476-62.293 8.661-62.377Q8.845-62.461 8.980-62.616Q9.115-62.772 9.173-62.980Q9.187-63.035 9.242-63.035L9.355-63.035Q9.385-63.035 9.408-63.011Q9.430-62.987 9.430-62.953L9.430-62.932Q9.344-62.645 9.156-62.447Q8.968-62.249 8.704-62.146Q8.439-62.044 8.145-62.044Q7.714-62.044 7.326-62.250Q6.938-62.457 6.704-62.820Q6.470-63.182 6.470-63.623",[1389],[1373,3469,3470],{"transform":3463},[1378,3471],{"d":3472,"fill":3458,"stroke":3458,"className":3473,"style":1462},"M11.511-62.112L9.877-62.112L9.877-62.392Q10.106-62.392 10.255-62.426Q10.404-62.461 10.404-62.601L10.404-66.220Q10.404-66.490 10.296-66.552Q10.188-66.613 9.877-66.613L9.877-66.894L10.957-66.969L10.957-64.583Q11.063-64.768 11.241-64.910Q11.419-65.051 11.627-65.125Q11.836-65.198 12.061-65.198Q12.567-65.198 12.851-64.975Q13.135-64.751 13.135-64.255L13.135-62.601Q13.135-62.464 13.283-62.428Q13.432-62.392 13.658-62.392L13.658-62.112L12.027-62.112L12.027-62.392Q12.256-62.392 12.405-62.426Q12.554-62.461 12.554-62.601L12.554-64.241Q12.554-64.576 12.434-64.776Q12.314-64.976 12-64.976Q11.730-64.976 11.496-64.840Q11.262-64.703 11.123-64.469Q10.985-64.235 10.985-63.961L10.985-62.601Q10.985-62.464 11.135-62.428Q11.286-62.392 11.511-62.392",[1389],[1373,3475,3476],{"transform":3463},[1378,3477],{"d":3478,"fill":3458,"stroke":3458,"className":3479,"style":1462},"M17.152-62.273Q17.152-62.314 17.159-62.338L18.150-66.333Q18.188-66.429 18.188-66.521Q18.188-66.613 17.754-66.613Q17.668-66.641 17.668-66.726L17.696-66.836Q17.703-66.877 17.774-66.894L18.755-66.969Q18.800-66.969 18.829-66.943Q18.858-66.918 18.858-66.866L18.137-63.988Q18.349-64.077 18.497-64.202Q18.646-64.327 18.984-64.631Q19.323-64.935 19.564-65.067Q19.805-65.198 20.064-65.198Q20.283-65.198 20.432-65.053Q20.581-64.908 20.581-64.689Q20.581-64.494 20.464-64.349Q20.348-64.204 20.160-64.204Q20.044-64.204 19.962-64.277Q19.880-64.351 19.880-64.470Q19.880-64.624 19.993-64.754Q20.105-64.884 20.259-64.884Q20.177-64.976 20.047-64.976Q19.788-64.976 19.538-64.807Q19.289-64.638 18.937-64.317Q18.584-63.995 18.410-63.889Q19.511-63.770 19.511-63.141Q19.511-63.042 19.475-62.878Q19.439-62.714 19.439-62.625Q19.439-62.266 19.678-62.266Q19.921-62.266 20.068-62.538Q20.215-62.809 20.293-63.141Q20.317-63.202 20.372-63.202L20.481-63.202Q20.516-63.202 20.538-63.177Q20.560-63.151 20.560-63.120Q20.560-63.107 20.553-63.093Q20.454-62.693 20.232-62.368Q20.010-62.044 19.665-62.044Q19.336-62.044 19.116-62.242Q18.896-62.440 18.896-62.761Q18.896-62.820 18.916-62.939Q18.937-63.059 18.937-63.120Q18.937-63.387 18.646-63.534Q18.355-63.681 18.062-63.681L17.716-62.286Q17.686-62.184 17.592-62.114Q17.498-62.044 17.395-62.044Q17.296-62.044 17.224-62.107Q17.152-62.170 17.152-62.273",[1389],[1373,3481,3482],{"transform":3463},[1378,3483],{"d":3484,"fill":3458,"stroke":3458,"className":3485,"style":3486},"M21.663-61.451Q21.917-61.227 22.552-61.227Q22.774-61.227 22.939-61.326Q23.104-61.425 23.188-61.600Q23.272-61.776 23.272-61.991Q23.272-62.213 23.185-62.385Q23.099-62.557 22.933-62.657Q22.767-62.758 22.547-62.758L22.122-62.758Q22.068-62.770 22.056-62.821L22.056-62.882Q22.068-62.926 22.122-62.943L22.481-62.967Q22.667-62.967 22.823-63.079Q22.979-63.190 23.066-63.369Q23.152-63.549 23.152-63.727Q23.152-63.885 23.072-64.001Q22.991-64.117 22.857-64.175Q22.723-64.232 22.557-64.232Q22.042-64.232 21.807-64.003Q21.915-63.981 21.981-63.901Q22.046-63.822 22.046-63.712Q22.046-63.588 21.961-63.502Q21.876-63.417 21.746-63.417Q21.624-63.417 21.539-63.502Q21.453-63.588 21.453-63.712Q21.453-63.968 21.625-64.133Q21.797-64.298 22.051-64.370Q22.305-64.442 22.557-64.442Q22.789-64.442 23.058-64.366Q23.328-64.291 23.515-64.130Q23.702-63.968 23.702-63.727Q23.702-63.409 23.483-63.186Q23.265-62.963 22.938-62.862Q23.108-62.828 23.271-62.756Q23.433-62.684 23.572-62.573Q23.711-62.462 23.794-62.316Q23.877-62.169 23.877-61.991Q23.877-61.754 23.759-61.569Q23.641-61.383 23.438-61.255Q23.235-61.127 23.003-61.064Q22.772-61.002 22.557-61.002Q22.266-61.002 21.976-61.067Q21.685-61.132 21.481-61.301Q21.277-61.471 21.277-61.761Q21.277-61.896 21.368-61.986Q21.458-62.076 21.597-62.076Q21.685-62.076 21.757-62.035Q21.829-61.993 21.871-61.921Q21.912-61.849 21.912-61.761Q21.912-61.644 21.844-61.560Q21.775-61.476 21.663-61.451",[1389],"stroke-width:0.150",[1373,3488,3489],{"transform":3463},[1378,3490],{"d":3491,"fill":3458,"stroke":3458,"className":3492,"style":1462},"M25.494-62.532Q25.494-62.700 25.617-62.823Q25.740-62.946 25.915-62.946Q26.082-62.946 26.205-62.823Q26.328-62.700 26.328-62.532Q26.328-62.358 26.205-62.235Q26.082-62.112 25.915-62.112Q25.740-62.112 25.617-62.235Q25.494-62.358 25.494-62.532M25.494-64.716Q25.494-64.884 25.617-65.007Q25.740-65.130 25.915-65.130Q26.082-65.130 26.205-65.007Q26.328-64.884 26.328-64.716Q26.328-64.542 26.205-64.419Q26.082-64.296 25.915-64.296Q25.740-64.296 25.617-64.419Q25.494-64.542 25.494-64.716",[1389],[1373,3494,3495],{"transform":3463},[1378,3496],{"d":3497,"fill":3458,"stroke":3458,"className":3498,"style":1462},"M30.913-62.119L30.913-63.182Q30.913-63.206 30.941-63.233Q30.968-63.260 30.992-63.260L31.101-63.260Q31.166-63.260 31.180-63.202Q31.276-62.768 31.522-62.517Q31.768-62.266 32.182-62.266Q32.523-62.266 32.776-62.399Q33.029-62.532 33.029-62.840Q33.029-62.997 32.935-63.112Q32.841-63.226 32.703-63.295Q32.564-63.363 32.397-63.401L31.816-63.500Q31.460-63.568 31.187-63.789Q30.913-64.009 30.913-64.351Q30.913-64.600 31.025-64.775Q31.136-64.949 31.322-65.048Q31.508-65.147 31.724-65.190Q31.939-65.233 32.182-65.233Q32.595-65.233 32.875-65.051L33.091-65.226Q33.101-65.229 33.108-65.231Q33.115-65.233 33.125-65.233L33.176-65.233Q33.203-65.233 33.227-65.209Q33.251-65.185 33.251-65.157L33.251-64.310Q33.251-64.289 33.227-64.262Q33.203-64.235 33.176-64.235L33.063-64.235Q33.036-64.235 33.010-64.260Q32.985-64.286 32.985-64.310Q32.985-64.546 32.879-64.710Q32.773-64.874 32.590-64.956Q32.407-65.038 32.175-65.038Q31.847-65.038 31.590-64.935Q31.334-64.833 31.334-64.556Q31.334-64.361 31.517-64.252Q31.700-64.142 31.929-64.101L32.503-63.995Q32.749-63.947 32.963-63.819Q33.176-63.691 33.313-63.488Q33.450-63.284 33.450-63.035Q33.450-62.522 33.084-62.283Q32.718-62.044 32.182-62.044Q31.686-62.044 31.354-62.338L31.088-62.064Q31.067-62.044 31.040-62.044L30.992-62.044Q30.968-62.044 30.941-62.071Q30.913-62.098 30.913-62.119M34.605-62.953L34.605-64.850L33.966-64.850L33.966-65.072Q34.284-65.072 34.501-65.282Q34.718-65.492 34.818-65.802Q34.919-66.111 34.919-66.419L35.186-66.419L35.186-65.130L36.263-65.130L36.263-64.850L35.186-64.850L35.186-62.966Q35.186-62.690 35.290-62.491Q35.394-62.293 35.654-62.293Q35.811-62.293 35.917-62.397Q36.023-62.502 36.073-62.655Q36.122-62.809 36.122-62.966L36.122-63.380L36.389-63.380L36.389-62.953Q36.389-62.727 36.290-62.517Q36.191-62.307 36.006-62.175Q35.822-62.044 35.593-62.044Q35.155-62.044 34.880-62.281Q34.605-62.519 34.605-62.953M37.158-63.595Q37.158-63.937 37.293-64.236Q37.428-64.535 37.667-64.759Q37.907-64.983 38.224-65.108Q38.542-65.233 38.874-65.233Q39.318-65.233 39.718-65.017Q40.118-64.802 40.352-64.424Q40.586-64.047 40.586-63.595Q40.586-63.254 40.444-62.970Q40.303-62.686 40.058-62.479Q39.814-62.273 39.505-62.158Q39.195-62.044 38.874-62.044Q38.443-62.044 38.042-62.245Q37.640-62.447 37.399-62.799Q37.158-63.151 37.158-63.595M38.874-62.293Q39.475-62.293 39.699-62.671Q39.923-63.049 39.923-63.681Q39.923-64.293 39.689-64.652Q39.455-65.010 38.874-65.010Q37.821-65.010 37.821-63.681Q37.821-63.049 38.047-62.671Q38.272-62.293 38.874-62.293M42.825-60.755L41.195-60.755L41.195-61.035Q41.424-61.035 41.572-61.070Q41.721-61.104 41.721-61.244L41.721-64.590Q41.721-64.761 41.584-64.802Q41.448-64.843 41.195-64.843L41.195-65.123L42.275-65.198L42.275-64.792Q42.497-64.993 42.784-65.096Q43.071-65.198 43.379-65.198Q43.806-65.198 44.170-64.985Q44.534-64.771 44.748-64.407Q44.961-64.043 44.961-63.623Q44.961-63.178 44.722-62.814Q44.483-62.450 44.090-62.247Q43.697-62.044 43.252-62.044Q42.986-62.044 42.738-62.144Q42.490-62.245 42.302-62.426L42.302-61.244Q42.302-61.107 42.451-61.071Q42.599-61.035 42.825-61.035L42.825-60.755M42.302-64.443L42.302-62.833Q42.435-62.580 42.678-62.423Q42.921-62.266 43.198-62.266Q43.526-62.266 43.779-62.467Q44.032-62.669 44.165-62.987Q44.298-63.305 44.298-63.623Q44.298-63.852 44.233-64.081Q44.168-64.310 44.040-64.508Q43.912-64.706 43.717-64.826Q43.522-64.945 43.290-64.945Q42.996-64.945 42.728-64.816Q42.459-64.686 42.302-64.443M45.597-62.119L45.597-63.182Q45.597-63.206 45.624-63.233Q45.652-63.260 45.676-63.260L45.785-63.260Q45.850-63.260 45.864-63.202Q45.959-62.768 46.205-62.517Q46.452-62.266 46.865-62.266Q47.207-62.266 47.460-62.399Q47.713-62.532 47.713-62.840Q47.713-62.997 47.619-63.112Q47.525-63.226 47.386-63.295Q47.248-63.363 47.080-63.401L46.499-63.500Q46.144-63.568 45.870-63.789Q45.597-64.009 45.597-64.351Q45.597-64.600 45.708-64.775Q45.819-64.949 46.005-65.048Q46.192-65.147 46.407-65.190Q46.622-65.233 46.865-65.233Q47.279-65.233 47.559-65.051L47.774-65.226Q47.785-65.229 47.791-65.231Q47.798-65.233 47.808-65.233L47.860-65.233Q47.887-65.233 47.911-65.209Q47.935-65.185 47.935-65.157L47.935-64.310Q47.935-64.289 47.911-64.262Q47.887-64.235 47.860-64.235L47.747-64.235Q47.720-64.235 47.694-64.260Q47.668-64.286 47.668-64.310Q47.668-64.546 47.562-64.710Q47.456-64.874 47.274-64.956Q47.091-65.038 46.858-65.038Q46.530-65.038 46.274-64.935Q46.017-64.833 46.017-64.556Q46.017-64.361 46.200-64.252Q46.383-64.142 46.612-64.101L47.186-63.995Q47.432-63.947 47.646-63.819Q47.860-63.691 47.996-63.488Q48.133-63.284 48.133-63.035Q48.133-62.522 47.767-62.283Q47.402-62.044 46.865-62.044Q46.370-62.044 46.038-62.338L45.771-62.064Q45.751-62.044 45.724-62.044L45.676-62.044Q45.652-62.044 45.624-62.071Q45.597-62.098 45.597-62.119",[1389],[1373,3500,3501],{"transform":3463},[1378,3502],{"d":3503,"fill":3458,"stroke":3458,"className":3504,"style":1462},"M51.531-62.840Q51.531-63.172 51.754-63.399Q51.978-63.626 52.322-63.754Q52.665-63.883 53.038-63.935Q53.410-63.988 53.715-63.988L53.715-64.241Q53.715-64.446 53.607-64.626Q53.499-64.805 53.318-64.908Q53.137-65.010 52.929-65.010Q52.522-65.010 52.286-64.918Q52.375-64.881 52.421-64.797Q52.467-64.713 52.467-64.611Q52.467-64.515 52.421-64.436Q52.375-64.358 52.294-64.313Q52.214-64.269 52.125-64.269Q51.975-64.269 51.874-64.366Q51.773-64.464 51.773-64.611Q51.773-65.233 52.929-65.233Q53.140-65.233 53.390-65.169Q53.639-65.106 53.841-64.987Q54.043-64.867 54.169-64.682Q54.296-64.498 54.296-64.255L54.296-62.679Q54.296-62.563 54.357-62.467Q54.419-62.372 54.532-62.372Q54.641-62.372 54.706-62.466Q54.771-62.560 54.771-62.679L54.771-63.127L55.037-63.127L55.037-62.679Q55.037-62.409 54.810-62.244Q54.583-62.078 54.303-62.078Q54.094-62.078 53.957-62.232Q53.821-62.385 53.797-62.601Q53.650-62.334 53.368-62.189Q53.086-62.044 52.761-62.044Q52.484-62.044 52.200-62.119Q51.917-62.194 51.724-62.373Q51.531-62.553 51.531-62.840M52.146-62.840Q52.146-62.666 52.247-62.536Q52.347-62.406 52.503-62.336Q52.658-62.266 52.823-62.266Q53.041-62.266 53.250-62.363Q53.458-62.461 53.586-62.642Q53.715-62.823 53.715-63.049L53.715-63.777Q53.390-63.777 53.024-63.686Q52.658-63.595 52.402-63.383Q52.146-63.172 52.146-62.840M55.981-62.953L55.981-64.850L55.342-64.850L55.342-65.072Q55.659-65.072 55.877-65.282Q56.094-65.492 56.194-65.802Q56.295-66.111 56.295-66.419L56.562-66.419L56.562-65.130L57.638-65.130L57.638-64.850L56.562-64.850L56.562-62.966Q56.562-62.690 56.666-62.491Q56.770-62.293 57.030-62.293Q57.187-62.293 57.293-62.397Q57.399-62.502 57.449-62.655Q57.498-62.809 57.498-62.966L57.498-63.380L57.765-63.380L57.765-62.953Q57.765-62.727 57.666-62.517Q57.567-62.307 57.382-62.175Q57.198-62.044 56.969-62.044Q56.531-62.044 56.256-62.281Q55.981-62.519 55.981-62.953",[1389],[1373,3506,3507],{"transform":3463},[1378,3508],{"d":3509,"fill":3458,"stroke":3458,"className":3510,"style":1462},"M61.236-61.579Q61.236-61.825 61.433-62.009Q61.630-62.194 61.886-62.273Q61.749-62.385 61.677-62.546Q61.606-62.707 61.606-62.888Q61.606-63.209 61.817-63.455Q61.483-63.753 61.483-64.163Q61.483-64.624 61.872-64.911Q62.262-65.198 62.740-65.198Q63.212-65.198 63.547-64.952Q63.721-65.106 63.932-65.188Q64.142-65.270 64.371-65.270Q64.535-65.270 64.656-65.163Q64.777-65.055 64.777-64.891Q64.777-64.795 64.706-64.723Q64.634-64.652 64.542-64.652Q64.442-64.652 64.372-64.725Q64.302-64.799 64.302-64.898Q64.302-64.952 64.316-64.983L64.323-64.997Q64.330-65.017 64.338-65.028Q64.347-65.038 64.350-65.045Q63.995-65.045 63.708-64.822Q63.995-64.529 63.995-64.163Q63.995-63.848 63.810-63.616Q63.626-63.383 63.337-63.255Q63.048-63.127 62.740-63.127Q62.539-63.127 62.347-63.177Q62.156-63.226 61.978-63.336Q61.886-63.209 61.886-63.066Q61.886-62.884 62.014-62.749Q62.142-62.614 62.327-62.614L62.959-62.614Q63.407-62.614 63.776-62.543Q64.145-62.471 64.405-62.242Q64.665-62.013 64.665-61.579Q64.665-61.258 64.369-61.056Q64.073-60.854 63.670-60.765Q63.267-60.676 62.952-60.676Q62.634-60.676 62.231-60.765Q61.828-60.854 61.532-61.056Q61.236-61.258 61.236-61.579M61.691-61.579Q61.691-61.350 61.910-61.201Q62.129-61.052 62.421-60.984Q62.713-60.916 62.952-60.916Q63.116-60.916 63.325-60.952Q63.533-60.987 63.740-61.068Q63.947-61.148 64.078-61.276Q64.210-61.404 64.210-61.579Q64.210-61.931 63.829-62.025Q63.448-62.119 62.945-62.119L62.327-62.119Q62.088-62.119 61.889-61.968Q61.691-61.818 61.691-61.579M62.740-63.366Q63.407-63.366 63.407-64.163Q63.407-64.963 62.740-64.963Q62.070-64.963 62.070-64.163Q62.070-63.366 62.740-63.366M65.317-62.840Q65.317-63.172 65.541-63.399Q65.765-63.626 66.109-63.754Q66.452-63.883 66.825-63.935Q67.197-63.988 67.502-63.988L67.502-64.241Q67.502-64.446 67.394-64.626Q67.286-64.805 67.105-64.908Q66.924-65.010 66.715-65.010Q66.309-65.010 66.073-64.918Q66.162-64.881 66.208-64.797Q66.254-64.713 66.254-64.611Q66.254-64.515 66.208-64.436Q66.162-64.358 66.081-64.313Q66.001-64.269 65.912-64.269Q65.762-64.269 65.661-64.366Q65.560-64.464 65.560-64.611Q65.560-65.233 66.715-65.233Q66.927-65.233 67.177-65.169Q67.426-65.106 67.628-64.987Q67.830-64.867 67.956-64.682Q68.083-64.498 68.083-64.255L68.083-62.679Q68.083-62.563 68.144-62.467Q68.206-62.372 68.318-62.372Q68.428-62.372 68.493-62.466Q68.558-62.560 68.558-62.679L68.558-63.127L68.824-63.127L68.824-62.679Q68.824-62.409 68.597-62.244Q68.370-62.078 68.089-62.078Q67.881-62.078 67.744-62.232Q67.608-62.385 67.584-62.601Q67.437-62.334 67.155-62.189Q66.873-62.044 66.548-62.044Q66.271-62.044 65.987-62.119Q65.704-62.194 65.511-62.373Q65.317-62.553 65.317-62.840M65.933-62.840Q65.933-62.666 66.034-62.536Q66.134-62.406 66.290-62.336Q66.445-62.266 66.609-62.266Q66.828-62.266 67.037-62.363Q67.245-62.461 67.373-62.642Q67.502-62.823 67.502-63.049L67.502-63.777Q67.177-63.777 66.811-63.686Q66.445-63.595 66.189-63.383Q65.933-63.172 65.933-62.840M70.885-60.755L69.255-60.755L69.255-61.035Q69.484-61.035 69.633-61.070Q69.781-61.104 69.781-61.244L69.781-64.590Q69.781-64.761 69.645-64.802Q69.508-64.843 69.255-64.843L69.255-65.123L70.335-65.198L70.335-64.792Q70.557-64.993 70.844-65.096Q71.131-65.198 71.439-65.198Q71.866-65.198 72.230-64.985Q72.594-64.771 72.808-64.407Q73.022-64.043 73.022-63.623Q73.022-63.178 72.782-62.814Q72.543-62.450 72.150-62.247Q71.757-62.044 71.313-62.044Q71.046-62.044 70.798-62.144Q70.550-62.245 70.362-62.426L70.362-61.244Q70.362-61.107 70.511-61.071Q70.660-61.035 70.885-61.035L70.885-60.755M70.362-64.443L70.362-62.833Q70.496-62.580 70.738-62.423Q70.981-62.266 71.258-62.266Q71.586-62.266 71.839-62.467Q72.092-62.669 72.225-62.987Q72.359-63.305 72.359-63.623Q72.359-63.852 72.294-64.081Q72.229-64.310 72.100-64.508Q71.972-64.706 71.777-64.826Q71.583-64.945 71.350-64.945Q71.056-64.945 70.788-64.816Q70.520-64.686 70.362-64.443",[1389],[1373,3512,3513],{"fill":3458,"stroke":3458},[1373,3514,3515,3521,3526,3531,3536,3541,3547,3553,3559],{"fill":3458,"stroke":1380},[1373,3516,3518],{"transform":3517},"translate(102.041 44.43)",[1378,3519],{"d":3466,"fill":3458,"stroke":3458,"className":3520,"style":1462},[1389],[1373,3522,3523],{"transform":3517},[1378,3524],{"d":3472,"fill":3458,"stroke":3458,"className":3525,"style":1462},[1389],[1373,3527,3528],{"transform":3517},[1378,3529],{"d":3478,"fill":3458,"stroke":3458,"className":3530,"style":1462},[1389],[1373,3532,3533],{"transform":3517},[1378,3534],{"d":3484,"fill":3458,"stroke":3458,"className":3535,"style":3486},[1389],[1373,3537,3538],{"transform":3517},[1378,3539],{"d":3491,"fill":3458,"stroke":3458,"className":3540,"style":1462},[1389],[1373,3542,3543],{"transform":3517},[1378,3544],{"d":3545,"fill":3458,"stroke":3458,"className":3546,"style":1462},"M32.557-60.755L30.927-60.755L30.927-61.035Q31.156-61.035 31.305-61.070Q31.453-61.104 31.453-61.244L31.453-64.590Q31.453-64.761 31.317-64.802Q31.180-64.843 30.927-64.843L30.927-65.123L32.007-65.198L32.007-64.792Q32.229-64.993 32.516-65.096Q32.804-65.198 33.111-65.198Q33.538-65.198 33.902-64.985Q34.266-64.771 34.480-64.407Q34.694-64.043 34.694-63.623Q34.694-63.178 34.454-62.814Q34.215-62.450 33.822-62.247Q33.429-62.044 32.985-62.044Q32.718-62.044 32.470-62.144Q32.223-62.245 32.035-62.426L32.035-61.244Q32.035-61.107 32.183-61.071Q32.332-61.035 32.557-61.035L32.557-60.755M32.035-64.443L32.035-62.833Q32.168-62.580 32.411-62.423Q32.653-62.266 32.930-62.266Q33.258-62.266 33.511-62.467Q33.764-62.669 33.897-62.987Q34.031-63.305 34.031-63.623Q34.031-63.852 33.966-64.081Q33.901-64.310 33.773-64.508Q33.644-64.706 33.450-64.826Q33.255-64.945 33.022-64.945Q32.728-64.945 32.460-64.816Q32.192-64.686 32.035-64.443M37.079-62.112L35.343-62.112L35.343-62.392Q35.572-62.392 35.721-62.426Q35.870-62.461 35.870-62.601L35.870-64.450Q35.870-64.720 35.762-64.781Q35.654-64.843 35.343-64.843L35.343-65.123L36.372-65.198L36.372-64.491Q36.502-64.799 36.745-64.998Q36.987-65.198 37.305-65.198Q37.524-65.198 37.695-65.074Q37.866-64.949 37.866-64.737Q37.866-64.600 37.766-64.501Q37.667-64.402 37.534-64.402Q37.397-64.402 37.298-64.501Q37.199-64.600 37.199-64.737Q37.199-64.877 37.298-64.976Q37.008-64.976 36.808-64.780Q36.608-64.583 36.516-64.289Q36.423-63.995 36.423-63.715L36.423-62.601Q36.423-62.392 37.079-62.392L37.079-62.112M38.409-63.595Q38.409-63.937 38.544-64.236Q38.679-64.535 38.918-64.759Q39.158-64.983 39.475-65.108Q39.793-65.233 40.125-65.233Q40.569-65.233 40.969-65.017Q41.369-64.802 41.603-64.424Q41.837-64.047 41.837-63.595Q41.837-63.254 41.695-62.970Q41.554-62.686 41.309-62.479Q41.065-62.273 40.755-62.158Q40.446-62.044 40.125-62.044Q39.694-62.044 39.293-62.245Q38.891-62.447 38.650-62.799Q38.409-63.151 38.409-63.595M40.125-62.293Q40.726-62.293 40.950-62.671Q41.174-63.049 41.174-63.681Q41.174-64.293 40.940-64.652Q40.706-65.010 40.125-65.010Q39.072-65.010 39.072-63.681Q39.072-63.049 39.298-62.671Q39.523-62.293 40.125-62.293M43.239-62.112L42.972-62.112L42.972-66.220Q42.972-66.490 42.864-66.552Q42.757-66.613 42.446-66.613L42.446-66.894L43.526-66.969L43.526-64.799Q43.734-64.990 44.020-65.094Q44.305-65.198 44.602-65.198Q44.920-65.198 45.218-65.077Q45.515-64.956 45.737-64.740Q45.959-64.525 46.086-64.240Q46.212-63.954 46.212-63.623Q46.212-63.178 45.973-62.814Q45.734-62.450 45.341-62.247Q44.948-62.044 44.503-62.044Q44.308-62.044 44.119-62.100Q43.929-62.156 43.768-62.261Q43.608-62.365 43.468-62.526L43.239-62.112M43.553-64.457L43.553-62.840Q43.690-62.580 43.931-62.423Q44.172-62.266 44.449-62.266Q44.743-62.266 44.954-62.373Q45.166-62.481 45.300-62.673Q45.433-62.864 45.491-63.103Q45.549-63.342 45.549-63.623Q45.549-63.982 45.455-64.286Q45.361-64.590 45.134-64.783Q44.907-64.976 44.541-64.976Q44.240-64.976 43.974-64.840Q43.707-64.703 43.553-64.457",[1389],[1373,3548,3549],{"transform":3517},[1378,3550],{"d":3551,"fill":3458,"stroke":3458,"className":3552,"style":1462},"M47.032-63.647Q47.032-63.968 47.157-64.257Q47.282-64.546 47.508-64.769Q47.733-64.993 48.029-65.113Q48.324-65.233 48.642-65.233Q48.970-65.233 49.232-65.133Q49.493-65.034 49.669-64.852Q49.845-64.669 49.939-64.411Q50.033-64.153 50.033-63.821Q50.033-63.729 49.951-63.708L47.696-63.708L47.696-63.647Q47.696-63.059 47.979-62.676Q48.263-62.293 48.830-62.293Q49.152-62.293 49.420-62.486Q49.688-62.679 49.777-62.994Q49.784-63.035 49.859-63.049L49.951-63.049Q50.033-63.025 50.033-62.953Q50.033-62.946 50.027-62.919Q49.914-62.522 49.543-62.283Q49.172-62.044 48.748-62.044Q48.311-62.044 47.911-62.252Q47.511-62.461 47.272-62.828Q47.032-63.195 47.032-63.647M47.702-63.917L49.517-63.917Q49.517-64.194 49.420-64.446Q49.322-64.699 49.124-64.855Q48.926-65.010 48.642-65.010Q48.365-65.010 48.152-64.852Q47.938-64.693 47.820-64.438Q47.702-64.183 47.702-63.917M50.621-62.119L50.621-63.182Q50.621-63.206 50.649-63.233Q50.676-63.260 50.700-63.260L50.809-63.260Q50.874-63.260 50.888-63.202Q50.984-62.768 51.230-62.517Q51.476-62.266 51.889-62.266Q52.231-62.266 52.484-62.399Q52.737-62.532 52.737-62.840Q52.737-62.997 52.643-63.112Q52.549-63.226 52.411-63.295Q52.272-63.363 52.105-63.401L51.524-63.500Q51.168-63.568 50.895-63.789Q50.621-64.009 50.621-64.351Q50.621-64.600 50.732-64.775Q50.843-64.949 51.030-65.048Q51.216-65.147 51.431-65.190Q51.647-65.233 51.889-65.233Q52.303-65.233 52.583-65.051L52.799-65.226Q52.809-65.229 52.816-65.231Q52.822-65.233 52.833-65.233L52.884-65.233Q52.911-65.233 52.935-65.209Q52.959-65.185 52.959-65.157L52.959-64.310Q52.959-64.289 52.935-64.262Q52.911-64.235 52.884-64.235L52.771-64.235Q52.744-64.235 52.718-64.260Q52.693-64.286 52.693-64.310Q52.693-64.546 52.587-64.710Q52.481-64.874 52.298-64.956Q52.115-65.038 51.883-65.038Q51.554-65.038 51.298-64.935Q51.042-64.833 51.042-64.556Q51.042-64.361 51.225-64.252Q51.407-64.142 51.636-64.101L52.211-63.995Q52.457-63.947 52.670-63.819Q52.884-63.691 53.021-63.488Q53.157-63.284 53.157-63.035Q53.157-62.522 52.792-62.283Q52.426-62.044 51.889-62.044Q51.394-62.044 51.062-62.338L50.796-62.064Q50.775-62.044 50.748-62.044L50.700-62.044Q50.676-62.044 50.649-62.071Q50.621-62.098 50.621-62.119",[1389],[1373,3554,3555],{"transform":3517},[1378,3556],{"d":3557,"fill":3458,"stroke":3458,"className":3558,"style":1462},"M58.135-60.755L56.505-60.755L56.505-61.035Q56.734-61.035 56.883-61.070Q57.031-61.104 57.031-61.244L57.031-64.590Q57.031-64.761 56.895-64.802Q56.758-64.843 56.505-64.843L56.505-65.123L57.585-65.198L57.585-64.792Q57.807-64.993 58.094-65.096Q58.382-65.198 58.689-65.198Q59.116-65.198 59.480-64.985Q59.844-64.771 60.058-64.407Q60.272-64.043 60.272-63.623Q60.272-63.178 60.032-62.814Q59.793-62.450 59.400-62.247Q59.007-62.044 58.563-62.044Q58.296-62.044 58.048-62.144Q57.801-62.245 57.613-62.426L57.613-61.244Q57.613-61.107 57.761-61.071Q57.910-61.035 58.135-61.035L58.135-60.755M57.613-64.443L57.613-62.833Q57.746-62.580 57.989-62.423Q58.231-62.266 58.508-62.266Q58.836-62.266 59.089-62.467Q59.342-62.669 59.475-62.987Q59.609-63.305 59.609-63.623Q59.609-63.852 59.544-64.081Q59.479-64.310 59.351-64.508Q59.222-64.706 59.028-64.826Q58.833-64.945 58.600-64.945Q58.306-64.945 58.038-64.816Q57.770-64.686 57.613-64.443M60.966-62.840Q60.966-63.172 61.189-63.399Q61.413-63.626 61.757-63.754Q62.100-63.883 62.473-63.935Q62.845-63.988 63.150-63.988L63.150-64.241Q63.150-64.446 63.042-64.626Q62.934-64.805 62.753-64.908Q62.572-65.010 62.364-65.010Q61.957-65.010 61.721-64.918Q61.810-64.881 61.856-64.797Q61.902-64.713 61.902-64.611Q61.902-64.515 61.856-64.436Q61.810-64.358 61.729-64.313Q61.649-64.269 61.560-64.269Q61.410-64.269 61.309-64.366Q61.208-64.464 61.208-64.611Q61.208-65.233 62.364-65.233Q62.575-65.233 62.825-65.169Q63.074-65.106 63.276-64.987Q63.478-64.867 63.604-64.682Q63.731-64.498 63.731-64.255L63.731-62.679Q63.731-62.563 63.792-62.467Q63.854-62.372 63.967-62.372Q64.076-62.372 64.141-62.466Q64.206-62.560 64.206-62.679L64.206-63.127L64.472-63.127L64.472-62.679Q64.472-62.409 64.245-62.244Q64.018-62.078 63.738-62.078Q63.529-62.078 63.392-62.232Q63.256-62.385 63.232-62.601Q63.085-62.334 62.803-62.189Q62.521-62.044 62.196-62.044Q61.919-62.044 61.635-62.119Q61.352-62.194 61.159-62.373Q60.966-62.553 60.966-62.840M61.581-62.840Q61.581-62.666 61.682-62.536Q61.782-62.406 61.938-62.336Q62.094-62.266 62.258-62.266Q62.476-62.266 62.685-62.363Q62.893-62.461 63.021-62.642Q63.150-62.823 63.150-63.049L63.150-63.777Q62.825-63.777 62.459-63.686Q62.094-63.595 61.837-63.383Q61.581-63.172 61.581-62.840M64.889-62.119L64.889-63.182Q64.889-63.206 64.917-63.233Q64.944-63.260 64.968-63.260L65.077-63.260Q65.142-63.260 65.156-63.202Q65.252-62.768 65.498-62.517Q65.744-62.266 66.157-62.266Q66.499-62.266 66.752-62.399Q67.005-62.532 67.005-62.840Q67.005-62.997 66.911-63.112Q66.817-63.226 66.679-63.295Q66.540-63.363 66.373-63.401L65.792-63.500Q65.436-63.568 65.163-63.789Q64.889-64.009 64.889-64.351Q64.889-64.600 65-64.775Q65.112-64.949 65.298-65.048Q65.484-65.147 65.699-65.190Q65.915-65.233 66.157-65.233Q66.571-65.233 66.851-65.051L67.067-65.226Q67.077-65.229 67.084-65.231Q67.091-65.233 67.101-65.233L67.152-65.233Q67.179-65.233 67.203-65.209Q67.227-65.185 67.227-65.157L67.227-64.310Q67.227-64.289 67.203-64.262Q67.179-64.235 67.152-64.235L67.039-64.235Q67.012-64.235 66.986-64.260Q66.961-64.286 66.961-64.310Q66.961-64.546 66.855-64.710Q66.749-64.874 66.566-64.956Q66.383-65.038 66.151-65.038Q65.823-65.038 65.566-64.935Q65.310-64.833 65.310-64.556Q65.310-64.361 65.493-64.252Q65.676-64.142 65.905-64.101L66.479-63.995Q66.725-63.947 66.938-63.819Q67.152-63.691 67.289-63.488Q67.426-63.284 67.426-63.035Q67.426-62.522 67.060-62.283Q66.694-62.044 66.157-62.044Q65.662-62.044 65.330-62.338L65.064-62.064Q65.043-62.044 65.016-62.044L64.968-62.044Q64.944-62.044 64.917-62.071Q64.889-62.098 64.889-62.119M68.581-62.953L68.581-64.850L67.942-64.850L67.942-65.072Q68.260-65.072 68.477-65.282Q68.694-65.492 68.794-65.802Q68.895-66.111 68.895-66.419L69.162-66.419L69.162-65.130L70.239-65.130L70.239-64.850L69.162-64.850L69.162-62.966Q69.162-62.690 69.266-62.491Q69.370-62.293 69.630-62.293Q69.787-62.293 69.893-62.397Q69.999-62.502 70.049-62.655Q70.098-62.809 70.098-62.966L70.098-63.380L70.365-63.380L70.365-62.953Q70.365-62.727 70.266-62.517Q70.167-62.307 69.982-62.175Q69.798-62.044 69.569-62.044Q69.131-62.044 68.856-62.281Q68.581-62.519 68.581-62.953M71.674-60.882Q71.674-60.916 71.701-60.943Q71.971-61.172 72.120-61.495Q72.269-61.818 72.269-62.174L72.269-62.211Q72.159-62.112 71.995-62.112Q71.814-62.112 71.695-62.232Q71.575-62.351 71.575-62.532Q71.575-62.707 71.695-62.826Q71.814-62.946 71.995-62.946Q72.252-62.946 72.371-62.707Q72.491-62.467 72.491-62.174Q72.491-61.774 72.322-61.403Q72.153-61.032 71.855-60.776Q71.824-60.755 71.797-60.755Q71.756-60.755 71.715-60.796Q71.674-60.837 71.674-60.882",[1389],[1373,3560,3561],{"transform":3517},[1378,3562],{"d":3563,"fill":3458,"stroke":3458,"className":3564,"style":1462},"M77.943-62.112L76.210-62.112L76.210-62.392Q76.436-62.392 76.585-62.426Q76.733-62.461 76.733-62.601L76.733-64.850L76.145-64.850L76.145-65.130L76.733-65.130L76.733-65.947Q76.733-66.265 76.911-66.513Q77.089-66.760 77.379-66.901Q77.670-67.041 77.981-67.041Q78.237-67.041 78.441-66.899Q78.644-66.757 78.644-66.514Q78.644-66.378 78.545-66.279Q78.446-66.179 78.309-66.179Q78.172-66.179 78.073-66.279Q77.974-66.378 77.974-66.514Q77.974-66.695 78.114-66.788Q78.036-66.815 77.936-66.815Q77.728-66.815 77.574-66.682Q77.420-66.549 77.340-66.345Q77.260-66.142 77.260-65.933L77.260-65.130L78.148-65.130L78.148-64.850L77.287-64.850L77.287-62.601Q77.287-62.392 77.943-62.392L77.943-62.112M78.582-63.595Q78.582-63.937 78.717-64.236Q78.852-64.535 79.092-64.759Q79.331-64.983 79.649-65.108Q79.967-65.233 80.298-65.233Q80.743-65.233 81.143-65.017Q81.542-64.802 81.777-64.424Q82.011-64.047 82.011-63.595Q82.011-63.254 81.869-62.970Q81.727-62.686 81.483-62.479Q81.238-62.273 80.929-62.158Q80.620-62.044 80.298-62.044Q79.868-62.044 79.466-62.245Q79.064-62.447 78.823-62.799Q78.582-63.151 78.582-63.595M80.298-62.293Q80.900-62.293 81.124-62.671Q81.348-63.049 81.348-63.681Q81.348-64.293 81.113-64.652Q80.879-65.010 80.298-65.010Q79.246-65.010 79.246-63.681Q79.246-63.049 79.471-62.671Q79.697-62.293 80.298-62.293M83.180-62.946L83.180-64.450Q83.180-64.720 83.072-64.781Q82.964-64.843 82.653-64.843L82.653-65.123L83.761-65.198L83.761-62.966L83.761-62.946Q83.761-62.666 83.812-62.522Q83.863-62.379 84.005-62.322Q84.147-62.266 84.434-62.266Q84.687-62.266 84.892-62.406Q85.097-62.546 85.213-62.772Q85.330-62.997 85.330-63.247L85.330-64.450Q85.330-64.720 85.222-64.781Q85.114-64.843 84.803-64.843L84.803-65.123L85.911-65.198L85.911-62.785Q85.911-62.594 85.964-62.512Q86.017-62.430 86.117-62.411Q86.218-62.392 86.434-62.392L86.434-62.112L85.357-62.044L85.357-62.608Q85.248-62.426 85.102-62.303Q84.957-62.180 84.771-62.112Q84.584-62.044 84.383-62.044Q83.180-62.044 83.180-62.946M88.703-62.112L87.069-62.112L87.069-62.392Q87.298-62.392 87.447-62.426Q87.596-62.461 87.596-62.601L87.596-64.450Q87.596-64.720 87.488-64.781Q87.380-64.843 87.069-64.843L87.069-65.123L88.129-65.198L88.129-64.549Q88.300-64.857 88.604-65.028Q88.908-65.198 89.253-65.198Q89.759-65.198 90.043-64.975Q90.327-64.751 90.327-64.255L90.327-62.601Q90.327-62.464 90.475-62.428Q90.624-62.392 90.850-62.392L90.850-62.112L89.219-62.112L89.219-62.392Q89.448-62.392 89.597-62.426Q89.746-62.461 89.746-62.601L89.746-64.241Q89.746-64.576 89.626-64.776Q89.506-64.976 89.192-64.976Q88.922-64.976 88.688-64.840Q88.454-64.703 88.315-64.469Q88.177-64.235 88.177-63.961L88.177-62.601Q88.177-62.464 88.327-62.428Q88.477-62.392 88.703-62.392L88.703-62.112M91.437-63.623Q91.437-63.961 91.578-64.252Q91.718-64.542 91.962-64.756Q92.206-64.969 92.511-65.084Q92.815-65.198 93.140-65.198Q93.410-65.198 93.673-65.099Q93.936-65 94.127-64.822L94.127-66.220Q94.127-66.490 94.020-66.552Q93.912-66.613 93.601-66.613L93.601-66.894L94.678-66.969L94.678-62.785Q94.678-62.597 94.732-62.514Q94.787-62.430 94.888-62.411Q94.989-62.392 95.204-62.392L95.204-62.112L94.097-62.044L94.097-62.461Q93.680-62.044 93.054-62.044Q92.623-62.044 92.251-62.256Q91.878-62.467 91.658-62.828Q91.437-63.189 91.437-63.623M93.112-62.266Q93.321-62.266 93.507-62.338Q93.693-62.409 93.847-62.546Q94.001-62.683 94.097-62.861L94.097-64.470Q94.011-64.617 93.866-64.737Q93.721-64.857 93.551-64.916Q93.382-64.976 93.201-64.976Q92.641-64.976 92.372-64.587Q92.104-64.197 92.104-63.616Q92.104-63.045 92.338-62.655Q92.572-62.266 93.112-62.266",[1389],[1373,3566,3568,3571],{"fill":3567,"stroke":3567},"var(--tk-warn)",[1378,3569],{"fill":1380,"d":3570},"M20.792-32.236c8.5-7.132 19.953-7.132 26.921-1.286",[1378,3572],{"stroke":1380,"d":3573},"m49.245-32.236-1.423-3.283-.109 1.997-1.948.455",[1595,3575,3577,3578,3723,3724,3739,3740,3792,3793,3813,3814,3866,3867,3890],{"className":3576},[1598],"Why deletion needs a tombstone. Keys ",[404,3579,3581],{"className":3580},[407],[404,3582,3584],{"className":3583,"ariaHidden":412},[411],[404,3585,3587,3591,3631,3634,3637,3677,3680,3683],{"className":3586},[416],[404,3588],{"className":3589,"style":3590},[420],"height:0.8889em;vertical-align:-0.1944em;",[404,3592,3594,3597],{"className":3593},[425],[404,3595,731],{"className":3596,"style":730},[425,426],[404,3598,3600],{"className":3599},[871],[404,3601,3603,3623],{"className":3602},[875,1678],[404,3604,3606,3620],{"className":3605},[879],[404,3607,3609],{"className":3608,"style":1685},[883],[404,3610,3611,3614],{"style":1688},[404,3612],{"className":3613,"style":891},[890],[404,3615,3617],{"className":3616},[895,896,897,898],[404,3618,488],{"className":3619},[425,898],[404,3621,1702],{"className":3622},[1701],[404,3624,3626],{"className":3625},[879],[404,3627,3629],{"className":3628,"style":1709},[883],[404,3630],{},[404,3632,535],{"className":3633},[534],[404,3635],{"className":3636,"style":448},[447],[404,3638,3640,3643],{"className":3639},[425],[404,3641,731],{"className":3642,"style":730},[425,426],[404,3644,3646],{"className":3645},[871],[404,3647,3649,3669],{"className":3648},[875,1678],[404,3650,3652,3666],{"className":3651},[879],[404,3653,3655],{"className":3654,"style":1685},[883],[404,3656,3657,3660],{"style":1688},[404,3658],{"className":3659,"style":891},[890],[404,3661,3663],{"className":3662},[895,896,897,898],[404,3664,867],{"className":3665},[425,898],[404,3667,1702],{"className":3668},[1701],[404,3670,3672],{"className":3671},[879],[404,3673,3675],{"className":3674,"style":1709},[883],[404,3676],{},[404,3678,535],{"className":3679},[534],[404,3681],{"className":3682,"style":448},[447],[404,3684,3686,3689],{"className":3685},[425],[404,3687,731],{"className":3688,"style":730},[425,426],[404,3690,3692],{"className":3691},[871],[404,3693,3695,3715],{"className":3694},[875,1678],[404,3696,3698,3712],{"className":3697},[879],[404,3699,3701],{"className":3700,"style":1685},[883],[404,3702,3703,3706],{"style":1688},[404,3704],{"className":3705,"style":891},[890],[404,3707,3709],{"className":3708},[895,896,897,898],[404,3710,1634],{"className":3711},[425,898],[404,3713,1702],{"className":3714},[1701],[404,3716,3718],{"className":3717},[879],[404,3719,3721],{"className":3720,"style":1709},[883],[404,3722],{}," probed into a run ending at slot ",[404,3725,3727],{"className":3726},[407],[404,3728,3730],{"className":3729,"ariaHidden":412},[411],[404,3731,3733,3736],{"className":3732},[416],[404,3734],{"className":3735,"style":842},[420],[404,3737,1753],{"className":3738},[425],". Erasing ",[404,3741,3743],{"className":3742},[407],[404,3744,3746],{"className":3745,"ariaHidden":412},[411],[404,3747,3749,3752],{"className":3748},[416],[404,3750],{"className":3751,"style":1665},[420],[404,3753,3755,3758],{"className":3754},[425],[404,3756,731],{"className":3757,"style":730},[425,426],[404,3759,3761],{"className":3760},[871],[404,3762,3764,3784],{"className":3763},[875,1678],[404,3765,3767,3781],{"className":3766},[879],[404,3768,3770],{"className":3769,"style":1685},[883],[404,3771,3772,3775],{"style":1688},[404,3773],{"className":3774,"style":891},[890],[404,3776,3778],{"className":3777},[895,896,897,898],[404,3779,867],{"className":3780},[425,898],[404,3782,1702],{"className":3783},[1701],[404,3785,3787],{"className":3786},[879],[404,3788,3790],{"className":3789,"style":1709},[883],[404,3791],{}," to ",[404,3794,3796],{"className":3795},[407],[404,3797,3799],{"className":3798,"ariaHidden":412},[411],[404,3800,3802,3805],{"className":3801},[416],[404,3803],{"className":3804,"style":726},[420],[404,3806,3809],{"className":3807},[425,3808],"text",[404,3810,3812],{"className":3811},[425],"nil"," (top) would make a later search for ",[404,3815,3817],{"className":3816},[407],[404,3818,3820],{"className":3819,"ariaHidden":412},[411],[404,3821,3823,3826],{"className":3822},[416],[404,3824],{"className":3825,"style":1665},[420],[404,3827,3829,3832],{"className":3828},[425],[404,3830,731],{"className":3831,"style":730},[425,426],[404,3833,3835],{"className":3834},[871],[404,3836,3838,3858],{"className":3837},[875,1678],[404,3839,3841,3855],{"className":3840},[879],[404,3842,3844],{"className":3843,"style":1685},[883],[404,3845,3846,3849],{"style":1688},[404,3847],{"className":3848,"style":891},[890],[404,3850,3852],{"className":3851},[895,896,897,898],[404,3853,1634],{"className":3854},[425,898],[404,3856,1702],{"className":3857},[1701],[404,3859,3861],{"className":3860},[879],[404,3862,3864],{"className":3863,"style":1709},[883],[404,3865],{}," stop early at the gap; marking it ",[404,3868,3870],{"className":3869},[407],[404,3871,3873],{"className":3872,"ariaHidden":412},[411],[404,3874,3876,3879],{"className":3875},[416],[404,3877],{"className":3878,"style":726},[420],[404,3880,3884],{"className":3881},[3882,3883],"enclosing","textsc",[404,3885,3887],{"className":3886},[425,3808],[404,3888,3311],{"className":3889},[425]," (bottom) lets search probe past while insertion may reuse the slot.",[381,3892,3893],{},"Three probing schemes are standard:",[3895,3896,3897],"ul",{},[3898,3899,3900,1146,3903,4051,4052,4096,4097,4100],"li",{},[385,3901,3902],{},"Linear probing.",[404,3904,3906],{"className":3905},[407],[404,3907,3909,3945,4007,4042],{"className":3908,"ariaHidden":412},[411],[404,3910,3912,3915,3918,3921,3924,3927,3930,3933,3936,3939,3942],{"className":3911},[416],[404,3913],{"className":3914,"style":421},[420],[404,3916,990],{"className":3917},[425,426],[404,3919,433],{"className":3920},[432],[404,3922,731],{"className":3923,"style":730},[425,426],[404,3925,535],{"className":3926},[534],[404,3928],{"className":3929,"style":448},[447],[404,3931,2900],{"className":3932},[425,426],[404,3934,457],{"className":3935},[456],[404,3937],{"className":3938,"style":580},[447],[404,3940,585],{"className":3941},[584],[404,3943],{"className":3944,"style":580},[447],[404,3946,3948,3952,3955,3989,3992,3995,3998,4001,4004],{"className":3947},[416],[404,3949],{"className":3950,"style":3951},[420],"height:1.0019em;vertical-align:-0.25em;",[404,3953,433],{"className":3954},[432],[404,3956,3958,3961],{"className":3957},[425],[404,3959,990],{"className":3960},[425,426],[404,3962,3964],{"className":3963},[871],[404,3965,3967],{"className":3966},[875],[404,3968,3970],{"className":3969},[879],[404,3971,3974],{"className":3972,"style":3973},[883],"height:0.7519em;",[404,3975,3976,3979],{"style":886},[404,3977],{"className":3978,"style":891},[890],[404,3980,3982],{"className":3981},[895,896,897,898],[404,3983,3985],{"className":3984},[425,898],[404,3986,3988],{"className":3987},[425,898],"′",[404,3990,433],{"className":3991},[432],[404,3993,731],{"className":3994,"style":730},[425,426],[404,3996,457],{"className":3997},[456],[404,3999],{"className":4000,"style":644},[447],[404,4002,2240],{"className":4003},[648],[404,4005],{"className":4006,"style":644},[447],[404,4008,4010,4013,4016,4019,4023,4026,4036,4039],{"className":4009},[416],[404,4011],{"className":4012,"style":421},[420],[404,4014,2900],{"className":4015},[425,426],[404,4017,457],{"className":4018},[456],[404,4020],{"className":4021,"style":4022},[447],"margin-right:0.0556em;",[404,4024],{"className":4025,"style":644},[447],[404,4027,4029],{"className":4028},[648],[404,4030,4032],{"className":4031},[425],[404,4033,4035],{"className":4034},[425,441],"mod",[404,4037],{"className":4038,"style":4022},[447],[404,4040],{"className":4041,"style":644},[447],[404,4043,4045,4048],{"className":4044},[416],[404,4046],{"className":4047,"style":1243},[420],[404,4049,640],{"className":4050},[425,426]," for an ordinary hash\nfunction ",[404,4053,4055],{"className":4054},[407],[404,4056,4058],{"className":4057,"ariaHidden":412},[411],[404,4059,4061,4064],{"className":4060},[416],[404,4062],{"className":4063,"style":3973},[420],[404,4065,4067,4070],{"className":4066},[425],[404,4068,990],{"className":4069},[425,426],[404,4071,4073],{"className":4072},[871],[404,4074,4076],{"className":4075},[875],[404,4077,4079],{"className":4078},[879],[404,4080,4082],{"className":4081,"style":3973},[883],[404,4083,4084,4087],{"style":886},[404,4085],{"className":4086,"style":891},[890],[404,4088,4090],{"className":4089},[895,896,897,898],[404,4091,4093],{"className":4092},[425,898],[404,4094,3988],{"className":4095},[425,898],". Simple and cache-friendly, but it suffers ",[385,4098,4099],{},"primary\nclustering",": long runs of occupied slots build up and grow ever faster,\nsince any key hashing anywhere into a run must walk to its end.",[1360,4102,4104,4355],{"className":4103},[1363,1364],[1366,4105,4109],{"xmlns":1368,"width":4106,"height":4107,"viewBox":4108},"339.886","98.894","-75 -75 254.915 74.171",[1373,4110,4111,4114,4121,4124,4131,4134,4141,4145,4148,4155,4158,4161,4168,4171,4174,4181,4184,4187,4194,4197,4204,4207,4214,4217,4224,4227,4234,4238,4315,4350],{"stroke":1375,"style":1376},[1378,4112],{"fill":1380,"d":4113},"M-65.403-29.422h19.917V-49.34h-19.917Z",[1373,4115,4117],{"transform":4116},"translate(-1.993 2.256)",[1378,4118],{"d":4119,"fill":1375,"stroke":1375,"className":4120,"style":1462},"M-53.456-39.241Q-54.091-39.241-54.455-39.586Q-54.820-39.931-54.955-40.456Q-55.090-40.981-55.090-41.606Q-55.090-42.631-54.734-43.330Q-54.379-44.029-53.456-44.029Q-52.529-44.029-52.177-43.330Q-51.825-42.631-51.825-41.606Q-51.825-40.981-51.960-40.456Q-52.095-39.931-52.458-39.586Q-52.820-39.241-53.456-39.241M-53.456-39.466Q-53.018-39.466-52.805-39.841Q-52.591-40.215-52.541-40.682Q-52.492-41.148-52.492-41.726Q-52.492-42.279-52.541-42.707Q-52.591-43.134-52.803-43.469Q-53.015-43.804-53.456-43.804Q-53.798-43.804-54.001-43.597Q-54.204-43.390-54.291-43.078Q-54.379-42.765-54.401-42.449Q-54.423-42.132-54.423-41.726Q-54.423-41.309-54.401-40.967Q-54.379-40.625-54.290-40.277Q-54.201-39.928-53.996-39.697Q-53.791-39.466-53.456-39.466",[1389],[1378,4122],{"fill":1380,"d":4123},"M-43.21-29.422h19.917V-49.34H-43.21Z",[1373,4125,4127],{"transform":4126},"translate(20.2 2.256)",[1378,4128],{"d":4129,"fill":1375,"stroke":1375,"className":4130,"style":1462},"M-52.119-39.381L-54.649-39.381L-54.649-39.661Q-53.681-39.661-53.681-39.870L-53.681-43.489Q-54.074-43.301-54.696-43.301L-54.696-43.582Q-54.279-43.582-53.915-43.683Q-53.551-43.783-53.295-44.029L-53.169-44.029Q-53.104-44.012-53.087-43.944L-53.087-39.870Q-53.087-39.661-52.119-39.661",[1389],[1378,4132],{"fill":1380,"d":4133},"M-21.017-29.422H-1.1V-49.34h-19.917Z",[1373,4135,4137],{"transform":4136},"translate(42.393 2.256)",[1378,4138],{"d":4139,"fill":1375,"stroke":1375,"className":4140,"style":1462},"M-52.119-39.381L-55.004-39.381L-55.004-39.583Q-55.004-39.613-54.977-39.641L-53.729-40.858Q-53.657-40.933-53.615-40.975Q-53.572-41.018-53.493-41.097Q-53.080-41.510-52.849-41.868Q-52.618-42.225-52.618-42.649Q-52.618-42.881-52.697-43.084Q-52.776-43.288-52.917-43.438Q-53.059-43.589-53.254-43.669Q-53.449-43.749-53.681-43.749Q-53.992-43.749-54.250-43.590Q-54.508-43.431-54.638-43.154L-54.618-43.154Q-54.450-43.154-54.343-43.043Q-54.235-42.932-54.235-42.768Q-54.235-42.611-54.344-42.498Q-54.454-42.385-54.618-42.385Q-54.778-42.385-54.891-42.498Q-55.004-42.611-55.004-42.768Q-55.004-43.144-54.796-43.431Q-54.587-43.718-54.252-43.874Q-53.917-44.029-53.562-44.029Q-53.138-44.029-52.758-43.871Q-52.379-43.712-52.145-43.395Q-51.911-43.079-51.911-42.649Q-51.911-42.338-52.051-42.069Q-52.191-41.801-52.396-41.596Q-52.601-41.391-52.964-41.109Q-53.326-40.827-53.435-40.731L-54.290-40.003L-53.647-40.003Q-53.384-40.003-53.095-40.005Q-52.806-40.006-52.588-40.015Q-52.369-40.024-52.352-40.041Q-52.290-40.106-52.253-40.273Q-52.215-40.441-52.177-40.683L-51.911-40.683",[1389],[1378,4142],{"fill":4143,"stroke":1380,"d":4144},"var(--tk-soft-neutral)","M1.176-29.422v-19.917h19.917v19.917Zm19.917-19.917",[1378,4146],{"fill":1380,"d":4147},"M1.176-29.422h19.917V-49.34H1.176Z",[1373,4149,4151],{"transform":4150},"translate(64.586 2.256)",[1378,4152],{"d":4153,"fill":1375,"stroke":1375,"className":4154,"style":1462},"M-54.649-39.928Q-54.529-39.771-54.338-39.672Q-54.146-39.572-53.931-39.533Q-53.716-39.494-53.493-39.494Q-53.196-39.494-53.001-39.649Q-52.806-39.805-52.716-40.059Q-52.625-40.314-52.625-40.598Q-52.625-40.892-52.717-41.143Q-52.810-41.394-53.008-41.550Q-53.206-41.705-53.500-41.705L-54.016-41.705Q-54.044-41.705-54.069-41.731Q-54.095-41.756-54.095-41.780L-54.095-41.852Q-54.095-41.883-54.069-41.905Q-54.044-41.927-54.016-41.927L-53.575-41.958Q-53.213-41.958-52.993-42.315Q-52.772-42.673-52.772-43.062Q-52.772-43.390-52.967-43.594Q-53.162-43.797-53.493-43.797Q-53.780-43.797-54.033-43.713Q-54.286-43.630-54.450-43.442Q-54.303-43.442-54.203-43.327Q-54.102-43.213-54.102-43.062Q-54.102-42.912-54.208-42.802Q-54.314-42.693-54.471-42.693Q-54.632-42.693-54.741-42.802Q-54.850-42.912-54.850-43.062Q-54.850-43.387-54.642-43.606Q-54.433-43.824-54.117-43.927Q-53.801-44.029-53.493-44.029Q-53.175-44.029-52.847-43.925Q-52.519-43.821-52.292-43.599Q-52.065-43.377-52.065-43.062Q-52.065-42.628-52.352-42.303Q-52.639-41.979-53.073-41.832Q-52.762-41.767-52.482-41.601Q-52.201-41.435-52.024-41.177Q-51.846-40.919-51.846-40.598Q-51.846-40.188-52.090-39.878Q-52.335-39.569-52.716-39.405Q-53.097-39.241-53.493-39.241Q-53.862-39.241-54.220-39.354Q-54.577-39.466-54.821-39.716Q-55.066-39.965-55.066-40.335Q-55.066-40.506-54.949-40.618Q-54.833-40.731-54.662-40.731Q-54.553-40.731-54.462-40.680Q-54.372-40.629-54.317-40.536Q-54.262-40.444-54.262-40.335Q-54.262-40.167-54.375-40.048Q-54.488-39.928-54.649-39.928",[1389],[1378,4156],{"fill":4143,"stroke":1380,"d":4157},"M23.369-29.422v-19.917h19.917v19.917Zm19.917-19.917",[1378,4159],{"fill":1380,"d":4160},"M23.37-29.422h19.916V-49.34H23.369Z",[1373,4162,4164],{"transform":4163},"translate(86.78 2.256)",[1378,4165],{"d":4166,"fill":1375,"stroke":1375,"className":4167,"style":1462},"M-53.128-40.529L-55.172-40.529L-55.172-40.810L-52.841-43.982Q-52.806-44.029-52.741-44.029L-52.605-44.029Q-52.560-44.029-52.533-44.002Q-52.506-43.975-52.506-43.930L-52.506-40.810L-51.743-40.810L-51.743-40.529L-52.506-40.529L-52.506-39.870Q-52.506-39.661-51.750-39.661L-51.750-39.381L-53.883-39.381L-53.883-39.661Q-53.128-39.661-53.128-39.870L-53.128-40.529M-53.080-43.254L-54.871-40.810L-53.080-40.810",[1389],[1378,4169],{"fill":4143,"stroke":1380,"d":4170},"M45.562-29.422v-19.917h19.917v19.917Zm19.917-19.917",[1378,4172],{"fill":1380,"d":4173},"M45.562-29.422H65.48V-49.34H45.562Z",[1373,4175,4177],{"transform":4176},"translate(108.972 2.256)",[1378,4178],{"d":4179,"fill":1375,"stroke":1375,"className":4180,"style":1462},"M-54.638-40.143L-54.669-40.143Q-54.532-39.846-54.235-39.670Q-53.938-39.494-53.610-39.494Q-53.247-39.494-53.020-39.672Q-52.793-39.849-52.699-40.138Q-52.605-40.427-52.605-40.789Q-52.605-41.104-52.659-41.389Q-52.714-41.674-52.887-41.880Q-53.059-42.085-53.374-42.085Q-53.647-42.085-53.830-42.018Q-54.013-41.951-54.117-41.862Q-54.221-41.774-54.317-41.664Q-54.413-41.555-54.457-41.545L-54.536-41.545Q-54.608-41.562-54.625-41.633L-54.625-43.951Q-54.625-43.985-54.601-44.007Q-54.577-44.029-54.543-44.029L-54.515-44.029Q-54.228-43.913-53.960-43.859Q-53.692-43.804-53.415-43.804Q-53.138-43.804-52.868-43.859Q-52.598-43.913-52.318-44.029L-52.294-44.029Q-52.259-44.029-52.236-44.006Q-52.212-43.982-52.212-43.951L-52.212-43.882Q-52.212-43.855-52.232-43.835Q-52.506-43.520-52.890-43.344Q-53.275-43.168-53.688-43.168Q-54.027-43.168-54.344-43.254L-54.344-41.972Q-53.948-42.307-53.374-42.307Q-52.970-42.307-52.634-42.097Q-52.297-41.886-52.104-41.534Q-51.911-41.182-51.911-40.782Q-51.911-40.451-52.051-40.165Q-52.191-39.880-52.435-39.670Q-52.680-39.460-52.982-39.350Q-53.285-39.241-53.603-39.241Q-53.962-39.241-54.288-39.405Q-54.614-39.569-54.809-39.861Q-55.004-40.153-55.004-40.516Q-55.004-40.666-54.898-40.772Q-54.792-40.878-54.638-40.878Q-54.485-40.878-54.380-40.774Q-54.276-40.670-54.276-40.516Q-54.276-40.359-54.380-40.251Q-54.485-40.143-54.638-40.143",[1389],[1378,4182],{"fill":4143,"stroke":1380,"d":4183},"M67.755-29.422v-19.917h19.917v19.917Zm19.917-19.917",[1378,4185],{"fill":1380,"d":4186},"M67.755-29.422h19.917V-49.34H67.755Z",[1373,4188,4190],{"transform":4189},"translate(131.166 2.256)",[1378,4191],{"d":4192,"fill":1375,"stroke":1375,"className":4193,"style":1462},"M-53.456-39.241Q-53.914-39.241-54.232-39.456Q-54.549-39.672-54.731-40.024Q-54.912-40.376-54.989-40.796Q-55.066-41.216-55.066-41.644Q-55.066-42.228-54.813-42.784Q-54.560-43.339-54.090-43.684Q-53.620-44.029-53.022-44.029Q-52.612-44.029-52.328-43.831Q-52.044-43.633-52.044-43.230Q-52.044-43.134-52.090-43.055Q-52.136-42.977-52.217-42.932Q-52.297-42.888-52.386-42.888Q-52.533-42.888-52.634-42.985Q-52.735-43.083-52.735-43.230Q-52.735-43.360-52.644-43.467Q-52.553-43.575-52.420-43.575Q-52.608-43.797-53.022-43.797Q-53.336-43.797-53.610-43.633Q-53.883-43.469-54.050-43.195Q-54.238-42.905-54.303-42.539Q-54.368-42.173-54.368-41.719Q-54.218-42.013-53.953-42.191Q-53.688-42.368-53.374-42.368Q-52.943-42.368-52.594-42.162Q-52.246-41.955-52.046-41.599Q-51.846-41.244-51.846-40.817Q-51.846-40.372-52.063-40.012Q-52.280-39.651-52.653-39.446Q-53.025-39.241-53.456-39.241M-53.456-39.494Q-53.080-39.494-52.876-39.677Q-52.673-39.860-52.610-40.143Q-52.547-40.427-52.547-40.817Q-52.547-41.203-52.601-41.483Q-52.656-41.763-52.851-41.955Q-53.046-42.146-53.415-42.146Q-53.705-42.146-53.917-41.970Q-54.129-41.794-54.237-41.521Q-54.344-41.247-54.344-40.964L-54.344-40.823L-54.344-40.782Q-54.344-40.277-54.133-39.885Q-53.921-39.494-53.456-39.494",[1389],[1378,4195],{"fill":1380,"d":4196},"M89.948-29.422h19.917V-49.34H89.948Z",[1373,4198,4200],{"transform":4199},"translate(153.359 2.256)",[1378,4201],{"d":4202,"fill":1375,"stroke":1375,"className":4203,"style":1462},"M-54.009-39.589Q-54.009-40.095-53.880-40.603Q-53.750-41.110-53.512-41.572Q-53.275-42.033-52.940-42.454L-52.294-43.267L-53.107-43.267Q-53.692-43.267-54.088-43.259Q-54.485-43.250-54.508-43.230Q-54.611-43.113-54.690-42.587L-54.956-42.587L-54.710-44.111L-54.444-44.111L-54.444-44.091Q-54.444-44.023-54.368-43.980Q-54.293-43.937-54.215-43.930Q-54.023-43.906-53.828-43.900Q-53.633-43.893-53.442-43.891Q-53.251-43.889-53.052-43.889L-51.631-43.889L-51.631-43.701Q-51.641-43.653-51.651-43.643L-52.707-42.320Q-52.926-42.047-53.049-41.734Q-53.172-41.422-53.230-41.073Q-53.288-40.724-53.302-40.393Q-53.316-40.061-53.316-39.589Q-53.316-39.439-53.415-39.340Q-53.514-39.241-53.661-39.241Q-53.811-39.241-53.910-39.340Q-54.009-39.439-54.009-39.589",[1389],[1378,4205],{"fill":1380,"d":4206},"M112.141-29.422h19.917V-49.34h-19.917Z",[1373,4208,4210],{"transform":4209},"translate(175.552 2.256)",[1378,4211],{"d":4212,"fill":1375,"stroke":1375,"className":4213,"style":1462},"M-55.066-40.458Q-55.066-40.899-54.763-41.220Q-54.461-41.541-54.009-41.733L-54.249-41.873Q-54.519-42.033-54.685-42.291Q-54.850-42.549-54.850-42.847Q-54.850-43.199-54.645-43.471Q-54.440-43.742-54.119-43.886Q-53.798-44.029-53.456-44.029Q-53.134-44.029-52.811-43.913Q-52.488-43.797-52.277-43.556Q-52.065-43.315-52.065-42.980Q-52.065-42.618-52.309-42.355Q-52.553-42.091-52.933-41.914L-52.533-41.678Q-52.338-41.565-52.179-41.396Q-52.020-41.227-51.933-41.018Q-51.846-40.810-51.846-40.577Q-51.846-40.174-52.080-39.870Q-52.314-39.566-52.688-39.403Q-53.063-39.241-53.456-39.241Q-53.842-39.241-54.211-39.378Q-54.580-39.514-54.823-39.791Q-55.066-40.068-55.066-40.458M-54.618-40.458Q-54.618-40.171-54.449-39.948Q-54.279-39.726-54.011-39.610Q-53.743-39.494-53.456-39.494Q-53.018-39.494-52.656-39.711Q-52.294-39.928-52.294-40.335Q-52.294-40.536-52.422-40.714Q-52.550-40.892-52.728-40.991L-53.750-41.586Q-53.989-41.476-54.187-41.310Q-54.385-41.145-54.502-40.929Q-54.618-40.714-54.618-40.458M-54.095-42.587L-53.175-42.054Q-52.868-42.214-52.666-42.447Q-52.465-42.679-52.465-42.980Q-52.465-43.219-52.610-43.409Q-52.755-43.599-52.987-43.698Q-53.220-43.797-53.456-43.797Q-53.678-43.797-53.907-43.727Q-54.136-43.657-54.293-43.500Q-54.450-43.342-54.450-43.113Q-54.450-42.799-54.095-42.587",[1389],[1378,4215],{"fill":1380,"d":4216},"M134.335-29.422h19.916V-49.34h-19.916Z",[1373,4218,4220],{"transform":4219},"translate(197.745 2.256)",[1378,4221],{"d":4222,"fill":1375,"stroke":1375,"className":4223,"style":1462},"M-54.471-39.695Q-54.351-39.579-54.174-39.537Q-53.996-39.494-53.780-39.494Q-53.541-39.494-53.331-39.603Q-53.121-39.713-52.967-39.895Q-52.813-40.078-52.714-40.311Q-52.547-40.738-52.547-41.558Q-52.697-41.264-52.960-41.085Q-53.223-40.905-53.541-40.905Q-53.975-40.905-54.322-41.114Q-54.669-41.322-54.867-41.683Q-55.066-42.044-55.066-42.467Q-55.066-42.802-54.936-43.091Q-54.806-43.380-54.575-43.594Q-54.344-43.807-54.045-43.918Q-53.746-44.029-53.415-44.029Q-52.557-44.029-52.201-43.315Q-51.846-42.601-51.846-41.644Q-51.846-41.227-51.974-40.799Q-52.102-40.372-52.359-40.017Q-52.615-39.661-52.977-39.451Q-53.340-39.241-53.780-39.241Q-54.235-39.241-54.553-39.429Q-54.871-39.617-54.871-40.041Q-54.871-40.191-54.772-40.290Q-54.673-40.389-54.522-40.389Q-54.454-40.389-54.387-40.362Q-54.320-40.335-54.276-40.290Q-54.232-40.246-54.204-40.179Q-54.177-40.112-54.177-40.041Q-54.177-39.911-54.257-39.813Q-54.338-39.716-54.471-39.695M-53.500-41.131Q-53.206-41.131-52.991-41.309Q-52.776-41.486-52.668-41.762Q-52.560-42.037-52.560-42.327Q-52.560-42.372-52.562-42.399Q-52.564-42.426-52.567-42.461Q-52.564-42.471-52.562-42.478Q-52.560-42.485-52.560-42.495Q-52.560-42.997-52.758-43.397Q-52.957-43.797-53.415-43.797Q-53.982-43.797-54.175-43.438Q-54.368-43.079-54.368-42.467Q-54.368-42.081-54.314-41.798Q-54.259-41.514-54.064-41.322Q-53.869-41.131-53.500-41.131",[1389],[1378,4225],{"fill":1380,"d":4226},"M156.528-29.422h19.917V-49.34h-19.917Z",[1373,4228,4230],{"transform":4229},"translate(217.945 2.256)",[1378,4231],{"d":4232,"fill":1375,"stroke":1375,"className":4233,"style":1462},"M-52.119-39.381L-54.649-39.381L-54.649-39.661Q-53.681-39.661-53.681-39.870L-53.681-43.489Q-54.074-43.301-54.696-43.301L-54.696-43.582Q-54.279-43.582-53.915-43.683Q-53.551-43.783-53.295-44.029L-53.169-44.029Q-53.104-44.012-53.087-43.944L-53.087-39.870Q-53.087-39.661-52.119-39.661L-52.119-39.381M-49.474-39.241Q-50.110-39.241-50.474-39.586Q-50.838-39.931-50.973-40.456Q-51.108-40.981-51.108-41.606Q-51.108-42.631-50.752-43.330Q-50.397-44.029-49.474-44.029Q-48.548-44.029-48.195-43.330Q-47.843-42.631-47.843-41.606Q-47.843-40.981-47.978-40.456Q-48.113-39.931-48.476-39.586Q-48.838-39.241-49.474-39.241M-49.474-39.466Q-49.036-39.466-48.823-39.841Q-48.609-40.215-48.560-40.682Q-48.510-41.148-48.510-41.726Q-48.510-42.279-48.560-42.707Q-48.609-43.134-48.821-43.469Q-49.033-43.804-49.474-43.804Q-49.816-43.804-50.019-43.597Q-50.222-43.390-50.310-43.078Q-50.397-42.765-50.419-42.449Q-50.441-42.132-50.441-41.726Q-50.441-41.309-50.419-40.967Q-50.397-40.625-50.308-40.277Q-50.219-39.928-50.014-39.697Q-49.809-39.466-49.474-39.466",[1389],[1378,4235],{"fill":1380,"stroke":3458,"d":4236,"style":4237},"M1.176-23.732v5.69h86.496v-5.69","stroke-width:.8",[1373,4239,4240],{"fill":3458,"stroke":3458},[1373,4241,4242,4249,4255,4261,4267,4273,4279,4285,4291,4297,4303,4309],{"fill":3458,"stroke":1380,"fontFamily":3397,"fontSize":3325},[1373,4243,4245],{"transform":4244},"translate(35.176 30.587)",[1378,4246],{"d":4247,"fill":3458,"stroke":3458,"className":4248,"style":1462},"M-53.381-39.381L-55.117-39.381L-55.117-39.661Q-54.888-39.661-54.739-39.695Q-54.591-39.730-54.591-39.870L-54.591-41.719Q-54.591-41.989-54.698-42.050Q-54.806-42.112-55.117-42.112L-55.117-42.392L-54.088-42.467L-54.088-41.760Q-53.958-42.068-53.716-42.267Q-53.473-42.467-53.155-42.467Q-52.936-42.467-52.765-42.343Q-52.594-42.218-52.594-42.006Q-52.594-41.869-52.694-41.770Q-52.793-41.671-52.926-41.671Q-53.063-41.671-53.162-41.770Q-53.261-41.869-53.261-42.006Q-53.261-42.146-53.162-42.245Q-53.452-42.245-53.652-42.049Q-53.852-41.852-53.945-41.558Q-54.037-41.264-54.037-40.984L-54.037-39.870Q-54.037-39.661-53.381-39.661L-53.381-39.381M-51.436-40.215L-51.436-41.719Q-51.436-41.989-51.543-42.050Q-51.651-42.112-51.962-42.112L-51.962-42.392L-50.855-42.467L-50.855-40.235L-50.855-40.215Q-50.855-39.935-50.803-39.791Q-50.752-39.648-50.610-39.591Q-50.468-39.535-50.181-39.535Q-49.928-39.535-49.723-39.675Q-49.518-39.815-49.402-40.041Q-49.286-40.266-49.286-40.516L-49.286-41.719Q-49.286-41.989-49.393-42.050Q-49.501-42.112-49.812-42.112L-49.812-42.392L-48.705-42.467L-48.705-40.054Q-48.705-39.863-48.652-39.781Q-48.599-39.699-48.498-39.680Q-48.397-39.661-48.182-39.661L-48.182-39.381L-49.258-39.313L-49.258-39.877Q-49.368-39.695-49.513-39.572Q-49.658-39.449-49.845-39.381Q-50.031-39.313-50.233-39.313Q-51.436-39.313-51.436-40.215M-45.912-39.381L-47.546-39.381L-47.546-39.661Q-47.317-39.661-47.168-39.695Q-47.020-39.730-47.020-39.870L-47.020-41.719Q-47.020-41.989-47.127-42.050Q-47.235-42.112-47.546-42.112L-47.546-42.392L-46.487-42.467L-46.487-41.818Q-46.316-42.126-46.011-42.297Q-45.707-42.467-45.362-42.467Q-44.856-42.467-44.572-42.244Q-44.289-42.020-44.289-41.524L-44.289-39.870Q-44.289-39.733-44.140-39.697Q-43.991-39.661-43.766-39.661L-43.766-39.381L-45.396-39.381L-45.396-39.661Q-45.167-39.661-45.018-39.695Q-44.870-39.730-44.870-39.870L-44.870-41.510Q-44.870-41.845-44.989-42.045Q-45.109-42.245-45.424-42.245Q-45.694-42.245-45.928-42.109Q-46.162-41.972-46.300-41.738Q-46.439-41.504-46.439-41.230L-46.439-39.870Q-46.439-39.733-46.288-39.697Q-46.138-39.661-45.912-39.661",[1389],[1373,4250,4251],{"transform":4244},[1378,4252],{"d":4253,"fill":3458,"stroke":3458,"className":4254,"style":1462},"M-40.519-40.864Q-40.519-41.206-40.384-41.505Q-40.249-41.804-40.009-42.028Q-39.770-42.252-39.452-42.377Q-39.134-42.502-38.803-42.502Q-38.358-42.502-37.959-42.286Q-37.559-42.071-37.324-41.693Q-37.090-41.316-37.090-40.864Q-37.090-40.523-37.232-40.239Q-37.374-39.955-37.618-39.748Q-37.863-39.542-38.172-39.427Q-38.481-39.313-38.803-39.313Q-39.233-39.313-39.635-39.514Q-40.037-39.716-40.278-40.068Q-40.519-40.420-40.519-40.864M-38.803-39.562Q-38.201-39.562-37.977-39.940Q-37.753-40.318-37.753-40.950Q-37.753-41.562-37.988-41.921Q-38.222-42.279-38.803-42.279Q-39.855-42.279-39.855-40.950Q-39.855-40.318-39.630-39.940Q-39.404-39.562-38.803-39.562M-34.698-39.381L-36.431-39.381L-36.431-39.661Q-36.205-39.661-36.056-39.695Q-35.908-39.730-35.908-39.870L-35.908-42.119L-36.496-42.119L-36.496-42.399L-35.908-42.399L-35.908-43.216Q-35.908-43.534-35.730-43.782Q-35.552-44.029-35.262-44.170Q-34.971-44.310-34.660-44.310Q-34.404-44.310-34.200-44.168Q-33.997-44.026-33.997-43.783Q-33.997-43.647-34.096-43.548Q-34.195-43.448-34.332-43.448Q-34.469-43.448-34.568-43.548Q-34.667-43.647-34.667-43.783Q-34.667-43.964-34.527-44.057Q-34.605-44.084-34.705-44.084Q-34.913-44.084-35.067-43.951Q-35.221-43.818-35.301-43.614Q-35.381-43.411-35.381-43.202L-35.381-42.399L-34.493-42.399L-34.493-42.119L-35.354-42.119L-35.354-39.870Q-35.354-39.661-34.698-39.661",[1389],[1373,4256,4257],{"transform":4244},[1378,4258],{"d":4259,"fill":3458,"stroke":3458,"className":4260,"style":1462},"M-29.315-40.529L-31.359-40.529L-31.359-40.810L-29.028-43.982Q-28.993-44.029-28.928-44.029L-28.792-44.029Q-28.747-44.029-28.720-44.002Q-28.693-43.975-28.693-43.930L-28.693-40.810L-27.930-40.810L-27.930-40.529L-28.693-40.529L-28.693-39.870Q-28.693-39.661-27.937-39.661L-27.937-39.381L-30.070-39.381L-30.070-39.661Q-29.315-39.661-29.315-39.870L-29.315-40.529M-29.267-43.254L-31.058-40.810L-29.267-40.810L-29.267-43.254M-26.936-39.801Q-26.936-39.969-26.813-40.092Q-26.690-40.215-26.515-40.215Q-26.348-40.215-26.225-40.092Q-26.102-39.969-26.102-39.801Q-26.102-39.627-26.225-39.504Q-26.348-39.381-26.515-39.381Q-26.690-39.381-26.813-39.504Q-26.936-39.627-26.936-39.801M-26.936-41.985Q-26.936-42.153-26.813-42.276Q-26.690-42.399-26.515-42.399Q-26.348-42.399-26.225-42.276Q-26.102-42.153-26.102-41.985Q-26.102-41.811-26.225-41.688Q-26.348-41.565-26.515-41.565Q-26.690-41.565-26.813-41.688Q-26.936-41.811-26.936-41.985",[1389],[1373,4262,4263],{"transform":4244},[1378,4264],{"d":4265,"fill":3458,"stroke":3458,"className":4266,"style":1462},"M-21.454-40.109Q-21.454-40.441-21.231-40.668Q-21.007-40.895-20.663-41.023Q-20.320-41.152-19.947-41.204Q-19.575-41.257-19.270-41.257L-19.270-41.510Q-19.270-41.715-19.378-41.895Q-19.486-42.074-19.667-42.177Q-19.848-42.279-20.056-42.279Q-20.463-42.279-20.699-42.187Q-20.610-42.150-20.564-42.066Q-20.518-41.982-20.518-41.880Q-20.518-41.784-20.564-41.705Q-20.610-41.627-20.691-41.582Q-20.771-41.538-20.860-41.538Q-21.010-41.538-21.111-41.635Q-21.212-41.733-21.212-41.880Q-21.212-42.502-20.056-42.502Q-19.845-42.502-19.595-42.438Q-19.346-42.375-19.144-42.256Q-18.942-42.136-18.816-41.951Q-18.689-41.767-18.689-41.524L-18.689-39.948Q-18.689-39.832-18.628-39.736Q-18.566-39.641-18.453-39.641Q-18.344-39.641-18.279-39.735Q-18.214-39.829-18.214-39.948L-18.214-40.396L-17.948-40.396L-17.948-39.948Q-17.948-39.678-18.175-39.513Q-18.402-39.347-18.682-39.347Q-18.891-39.347-19.028-39.501Q-19.164-39.654-19.188-39.870Q-19.335-39.603-19.617-39.458Q-19.899-39.313-20.224-39.313Q-20.501-39.313-20.785-39.388Q-21.068-39.463-21.261-39.642Q-21.454-39.822-21.454-40.109M-20.839-40.109Q-20.839-39.935-20.738-39.805Q-20.638-39.675-20.482-39.605Q-20.327-39.535-20.162-39.535Q-19.944-39.535-19.735-39.632Q-19.527-39.730-19.399-39.911Q-19.270-40.092-19.270-40.318L-19.270-41.046Q-19.595-41.046-19.961-40.955Q-20.327-40.864-20.583-40.652Q-20.839-40.441-20.839-40.109M-15.849-39.381L-17.483-39.381L-17.483-39.661Q-17.254-39.661-17.105-39.695Q-16.956-39.730-16.956-39.870L-16.956-41.719Q-16.956-41.989-17.064-42.050Q-17.172-42.112-17.483-42.112L-17.483-42.392L-16.423-42.467L-16.423-41.818Q-16.252-42.126-15.948-42.297Q-15.644-42.467-15.299-42.467Q-14.793-42.467-14.509-42.244Q-14.225-42.020-14.225-41.524L-14.225-39.870Q-14.225-39.733-14.077-39.697Q-13.928-39.661-13.702-39.661L-13.702-39.381L-15.333-39.381L-15.333-39.661Q-15.104-39.661-14.955-39.695Q-14.806-39.730-14.806-39.870L-14.806-41.510Q-14.806-41.845-14.926-42.045Q-15.046-42.245-15.360-42.245Q-15.630-42.245-15.864-42.109Q-16.098-41.972-16.237-41.738Q-16.375-41.504-16.375-41.230L-16.375-39.870Q-16.375-39.733-16.225-39.697Q-16.075-39.661-15.849-39.661",[1389],[1373,4268,4269],{"transform":4244},[1378,4270],{"d":4271,"fill":3458,"stroke":3458,"className":4272,"style":1462},"M-12.990-38.246Q-12.860-38.178-12.723-38.178Q-12.552-38.178-12.402-38.267Q-12.251-38.356-12.140-38.501Q-12.029-38.646-11.951-38.814L-11.687-39.381L-12.856-41.907Q-12.931-42.054-13.061-42.086Q-13.191-42.119-13.424-42.119L-13.424-42.399L-11.903-42.399L-11.903-42.119Q-12.251-42.119-12.251-41.972Q-12.248-41.951-12.246-41.934Q-12.244-41.917-12.244-41.907L-11.387-40.048L-10.614-41.719Q-10.580-41.787-10.580-41.866Q-10.580-41.979-10.664-42.049Q-10.747-42.119-10.860-42.119L-10.860-42.399L-9.664-42.399L-9.664-42.119Q-9.883-42.119-10.055-42.015Q-10.228-41.910-10.320-41.719L-11.657-38.814Q-11.827-38.444-12.097-38.198Q-12.368-37.952-12.723-37.952Q-12.993-37.952-13.212-38.118Q-13.431-38.284-13.431-38.547Q-13.431-38.684-13.338-38.773Q-13.246-38.861-13.106-38.861Q-12.969-38.861-12.880-38.773Q-12.791-38.684-12.791-38.547Q-12.791-38.444-12.844-38.366Q-12.897-38.287-12.990-38.246",[1389],[1373,4274,4275],{"transform":4244},[1378,4276],{"d":4277,"fill":3458,"stroke":3458,"className":4278,"style":1462},"M-4.747-39.381L-6.381-39.381L-6.381-39.661Q-6.152-39.661-6.003-39.695Q-5.854-39.730-5.854-39.870L-5.854-43.489Q-5.854-43.759-5.962-43.821Q-6.070-43.882-6.381-43.882L-6.381-44.163L-5.301-44.238L-5.301-41.852Q-5.195-42.037-5.017-42.179Q-4.839-42.320-4.631-42.394Q-4.422-42.467-4.197-42.467Q-3.691-42.467-3.407-42.244Q-3.123-42.020-3.123-41.524L-3.123-39.870Q-3.123-39.733-2.975-39.697Q-2.826-39.661-2.600-39.661L-2.600-39.381L-4.231-39.381L-4.231-39.661Q-4.002-39.661-3.853-39.695Q-3.704-39.730-3.704-39.870L-3.704-41.510Q-3.704-41.845-3.824-42.045Q-3.944-42.245-4.258-42.245Q-4.528-42.245-4.762-42.109Q-4.996-41.972-5.135-41.738Q-5.273-41.504-5.273-41.230L-5.273-39.870Q-5.273-39.733-5.123-39.697Q-4.972-39.661-4.747-39.661L-4.747-39.381M-0.396-39.381L-1.948-39.381L-1.948-39.661Q-1.722-39.661-1.573-39.695Q-1.425-39.730-1.425-39.870L-1.425-41.719Q-1.425-41.907-1.472-41.991Q-1.520-42.074-1.618-42.093Q-1.715-42.112-1.927-42.112L-1.927-42.392L-0.871-42.467L-0.871-39.870Q-0.871-39.730-0.739-39.695Q-0.608-39.661-0.396-39.661L-0.396-39.381M-1.667-43.688Q-1.667-43.859-1.544-43.978Q-1.421-44.098-1.250-44.098Q-1.083-44.098-0.960-43.978Q-0.837-43.859-0.837-43.688Q-0.837-43.513-0.960-43.390Q-1.083-43.267-1.250-43.267Q-1.421-43.267-1.544-43.390Q-1.667-43.513-1.667-43.688M0.777-40.222L0.777-42.119L0.137-42.119L0.137-42.341Q0.455-42.341 0.672-42.551Q0.889-42.761 0.990-43.071Q1.091-43.380 1.091-43.688L1.358-43.688L1.358-42.399L2.434-42.399L2.434-42.119L1.358-42.119L1.358-40.235Q1.358-39.959 1.462-39.760Q1.566-39.562 1.826-39.562Q1.983-39.562 2.089-39.666Q2.195-39.771 2.245-39.924Q2.294-40.078 2.294-40.235L2.294-40.649L2.561-40.649L2.561-40.222Q2.561-39.996 2.462-39.786Q2.362-39.576 2.178-39.444Q1.993-39.313 1.764-39.313Q1.327-39.313 1.052-39.550Q0.777-39.788 0.777-40.222",[1389],[1373,4280,4281],{"transform":4244},[1378,4282],{"d":4283,"fill":3458,"stroke":3458,"className":4284,"style":1462},"M7.753-39.381L6.119-39.381L6.119-39.661Q6.348-39.661 6.497-39.695Q6.646-39.730 6.646-39.870L6.646-43.489Q6.646-43.759 6.538-43.821Q6.430-43.882 6.119-43.882L6.119-44.163L7.199-44.238L7.199-41.852Q7.305-42.037 7.483-42.179Q7.661-42.320 7.869-42.394Q8.078-42.467 8.303-42.467Q8.809-42.467 9.093-42.244Q9.377-42.020 9.377-41.524L9.377-39.870Q9.377-39.733 9.525-39.697Q9.674-39.661 9.900-39.661L9.900-39.381L8.269-39.381L8.269-39.661Q8.498-39.661 8.647-39.695Q8.796-39.730 8.796-39.870L8.796-41.510Q8.796-41.845 8.676-42.045Q8.556-42.245 8.242-42.245Q7.972-42.245 7.738-42.109Q7.504-41.972 7.365-41.738Q7.227-41.504 7.227-41.230L7.227-39.870Q7.227-39.733 7.377-39.697Q7.528-39.661 7.753-39.661L7.753-39.381M10.446-40.916Q10.446-41.237 10.571-41.526Q10.696-41.815 10.922-42.038Q11.147-42.262 11.443-42.382Q11.738-42.502 12.056-42.502Q12.384-42.502 12.646-42.402Q12.907-42.303 13.083-42.121Q13.259-41.938 13.353-41.680Q13.447-41.422 13.447-41.090Q13.447-40.998 13.365-40.977L11.110-40.977L11.110-40.916Q11.110-40.328 11.393-39.945Q11.677-39.562 12.244-39.562Q12.566-39.562 12.834-39.755Q13.102-39.948 13.191-40.263Q13.198-40.304 13.273-40.318L13.365-40.318Q13.447-40.294 13.447-40.222Q13.447-40.215 13.441-40.188Q13.328-39.791 12.957-39.552Q12.586-39.313 12.162-39.313Q11.725-39.313 11.325-39.521Q10.925-39.730 10.686-40.097Q10.446-40.464 10.446-40.916M11.116-41.186L12.931-41.186Q12.931-41.463 12.834-41.715Q12.736-41.968 12.538-42.124Q12.340-42.279 12.056-42.279Q11.779-42.279 11.566-42.121Q11.352-41.962 11.234-41.707Q11.116-41.452 11.116-41.186M15.785-39.381L14.049-39.381L14.049-39.661Q14.278-39.661 14.427-39.695Q14.575-39.730 14.575-39.870L14.575-41.719Q14.575-41.989 14.468-42.050Q14.360-42.112 14.049-42.112L14.049-42.392L15.078-42.467L15.078-41.760Q15.208-42.068 15.450-42.267Q15.693-42.467 16.011-42.467Q16.230-42.467 16.401-42.343Q16.571-42.218 16.571-42.006Q16.571-41.869 16.472-41.770Q16.373-41.671 16.240-41.671Q16.103-41.671 16.004-41.770Q15.905-41.869 15.905-42.006Q15.905-42.146 16.004-42.245Q15.714-42.245 15.514-42.049Q15.314-41.852 15.221-41.558Q15.129-41.264 15.129-40.984L15.129-39.870Q15.129-39.661 15.785-39.661L15.785-39.381M17.115-40.916Q17.115-41.237 17.240-41.526Q17.364-41.815 17.590-42.038Q17.816-42.262 18.111-42.382Q18.407-42.502 18.725-42.502Q19.053-42.502 19.314-42.402Q19.576-42.303 19.752-42.121Q19.928-41.938 20.022-41.680Q20.116-41.422 20.116-41.090Q20.116-40.998 20.034-40.977L17.778-40.977L17.778-40.916Q17.778-40.328 18.062-39.945Q18.345-39.562 18.913-39.562Q19.234-39.562 19.502-39.755Q19.771-39.948 19.860-40.263Q19.866-40.304 19.942-40.318L20.034-40.318Q20.116-40.294 20.116-40.222Q20.116-40.215 20.109-40.188Q19.996-39.791 19.625-39.552Q19.255-39.313 18.831-39.313Q18.393-39.313 17.993-39.521Q17.593-39.730 17.354-40.097Q17.115-40.464 17.115-40.916M17.785-41.186L19.600-41.186Q19.600-41.463 19.502-41.715Q19.405-41.968 19.207-42.124Q19.008-42.279 18.725-42.279Q18.448-42.279 18.234-42.121Q18.021-41.962 17.903-41.707Q17.785-41.452 17.785-41.186",[1389],[1373,4286,4287],{"transform":4244},[1378,4288],{"d":4289,"fill":3458,"stroke":3458,"className":4290,"style":1462},"M24.806-39.408L23.825-41.907Q23.764-42.050 23.646-42.085Q23.528-42.119 23.312-42.119L23.312-42.399L24.792-42.399L24.792-42.119Q24.413-42.119 24.413-41.958Q24.413-41.948 24.427-41.907L25.141-40.075L25.814-41.780Q25.784-41.852 25.784-41.880Q25.784-41.907 25.756-41.907Q25.695-42.054 25.577-42.086Q25.459-42.119 25.247-42.119L25.247-42.399L26.645-42.399L26.645-42.119Q26.269-42.119 26.269-41.958Q26.269-41.927 26.276-41.907L27.031-39.969L27.718-41.719Q27.739-41.770 27.739-41.825Q27.739-41.965 27.626-42.042Q27.513-42.119 27.373-42.119L27.373-42.399L28.593-42.399L28.593-42.119Q28.388-42.119 28.233-42.013Q28.077-41.907 28.005-41.719L27.100-39.408Q27.065-39.313 26.953-39.313L26.884-39.313Q26.775-39.313 26.737-39.408L25.955-41.411L25.168-39.408Q25.134-39.313 25.021-39.313L24.953-39.313Q24.844-39.313 24.806-39.408",[1389],[1373,4292,4293],{"transform":4244},[1378,4294],{"d":4295,"fill":3458,"stroke":3458,"className":4296,"style":1462},"M28.970-40.109Q28.970-40.441 29.193-40.668Q29.417-40.895 29.761-41.023Q30.104-41.152 30.477-41.204Q30.849-41.257 31.154-41.257L31.154-41.510Q31.154-41.715 31.046-41.895Q30.938-42.074 30.757-42.177Q30.576-42.279 30.368-42.279Q29.961-42.279 29.725-42.187Q29.814-42.150 29.860-42.066Q29.906-41.982 29.906-41.880Q29.906-41.784 29.860-41.705Q29.814-41.627 29.733-41.582Q29.653-41.538 29.564-41.538Q29.414-41.538 29.313-41.635Q29.212-41.733 29.212-41.880Q29.212-42.502 30.368-42.502Q30.579-42.502 30.829-42.438Q31.078-42.375 31.280-42.256Q31.482-42.136 31.608-41.951Q31.735-41.767 31.735-41.524L31.735-39.948Q31.735-39.832 31.796-39.736Q31.858-39.641 31.971-39.641Q32.080-39.641 32.145-39.735Q32.210-39.829 32.210-39.948L32.210-40.396L32.476-40.396L32.476-39.948Q32.476-39.678 32.249-39.513Q32.022-39.347 31.742-39.347Q31.533-39.347 31.396-39.501Q31.260-39.654 31.236-39.870Q31.089-39.603 30.807-39.458Q30.525-39.313 30.200-39.313Q29.923-39.313 29.639-39.388Q29.356-39.463 29.163-39.642Q28.970-39.822 28.970-40.109M29.585-40.109Q29.585-39.935 29.686-39.805Q29.786-39.675 29.942-39.605Q30.097-39.535 30.262-39.535Q30.480-39.535 30.689-39.632Q30.897-39.730 31.025-39.911Q31.154-40.092 31.154-40.318L31.154-41.046Q30.829-41.046 30.463-40.955Q30.097-40.864 29.841-40.652Q29.585-40.441 29.585-40.109M34.561-39.381L32.958-39.381L32.958-39.661Q33.184-39.661 33.333-39.695Q33.481-39.730 33.481-39.870L33.481-43.489Q33.481-43.759 33.374-43.821Q33.266-43.882 32.958-43.882L32.958-44.163L34.035-44.238L34.035-39.870Q34.035-39.733 34.185-39.697Q34.336-39.661 34.561-39.661L34.561-39.381M36.752-39.381L35.170-39.381L35.170-39.661Q35.399-39.661 35.547-39.695Q35.696-39.730 35.696-39.870L35.696-43.489Q35.696-43.759 35.588-43.821Q35.481-43.882 35.170-43.882L35.170-44.163L36.250-44.238L36.250-40.950L37.234-41.719Q37.439-41.856 37.439-42.006Q37.439-42.050 37.398-42.085Q37.357-42.119 37.313-42.119L37.313-42.399L38.677-42.399L38.677-42.119Q38.188-42.119 37.668-41.719L37.111-41.285L38.089-40.061Q38.290-39.815 38.424-39.738Q38.557-39.661 38.844-39.661L38.844-39.381L37.412-39.381L37.412-39.661Q37.600-39.661 37.600-39.774Q37.600-39.870 37.446-40.061L36.711-40.970L36.229-40.591L36.229-39.870Q36.229-39.733 36.378-39.697Q36.527-39.661 36.752-39.661L36.752-39.381M39.357-39.388L39.357-40.451Q39.357-40.475 39.384-40.502Q39.411-40.529 39.435-40.529L39.545-40.529Q39.610-40.529 39.623-40.471Q39.719-40.037 39.965-39.786Q40.211-39.535 40.625-39.535Q40.967-39.535 41.220-39.668Q41.472-39.801 41.472-40.109Q41.472-40.266 41.378-40.381Q41.285-40.495 41.146-40.564Q41.008-40.632 40.840-40.670L40.259-40.769Q39.904-40.837 39.630-41.058Q39.357-41.278 39.357-41.620Q39.357-41.869 39.468-42.044Q39.579-42.218 39.765-42.317Q39.951-42.416 40.167-42.459Q40.382-42.502 40.625-42.502Q41.038-42.502 41.319-42.320L41.534-42.495Q41.544-42.498 41.551-42.500Q41.558-42.502 41.568-42.502L41.619-42.502Q41.647-42.502 41.671-42.478Q41.695-42.454 41.695-42.426L41.695-41.579Q41.695-41.558 41.671-41.531Q41.647-41.504 41.619-41.504L41.507-41.504Q41.479-41.504 41.454-41.529Q41.428-41.555 41.428-41.579Q41.428-41.815 41.322-41.979Q41.216-42.143 41.033-42.225Q40.850-42.307 40.618-42.307Q40.290-42.307 40.034-42.204Q39.777-42.102 39.777-41.825Q39.777-41.630 39.960-41.521Q40.143-41.411 40.372-41.370L40.946-41.264Q41.192-41.216 41.406-41.088Q41.619-40.960 41.756-40.757Q41.893-40.553 41.893-40.304Q41.893-39.791 41.527-39.552Q41.161-39.313 40.625-39.313Q40.129-39.313 39.798-39.607L39.531-39.333Q39.511-39.313 39.483-39.313L39.435-39.313Q39.411-39.313 39.384-39.340Q39.357-39.367 39.357-39.388",[1389],[1373,4298,4299],{"transform":4244},[1378,4300],{"d":4301,"fill":3458,"stroke":3458,"className":4302,"style":1462},"M45.752-40.222L45.752-42.119L45.113-42.119L45.113-42.341Q45.431-42.341 45.648-42.551Q45.865-42.761 45.965-43.071Q46.066-43.380 46.066-43.688L46.333-43.688L46.333-42.399L47.410-42.399L47.410-42.119L46.333-42.119L46.333-40.235Q46.333-39.959 46.437-39.760Q46.541-39.562 46.801-39.562Q46.958-39.562 47.064-39.666Q47.170-39.771 47.220-39.924Q47.269-40.078 47.269-40.235L47.269-40.649L47.536-40.649L47.536-40.222Q47.536-39.996 47.437-39.786Q47.338-39.576 47.153-39.444Q46.969-39.313 46.740-39.313Q46.302-39.313 46.027-39.550Q45.752-39.788 45.752-40.222M48.305-40.864Q48.305-41.206 48.440-41.505Q48.575-41.804 48.814-42.028Q49.054-42.252 49.371-42.377Q49.689-42.502 50.021-42.502Q50.465-42.502 50.865-42.286Q51.265-42.071 51.499-41.693Q51.733-41.316 51.733-40.864Q51.733-40.523 51.591-40.239Q51.450-39.955 51.205-39.748Q50.961-39.542 50.651-39.427Q50.342-39.313 50.021-39.313Q49.590-39.313 49.189-39.514Q48.787-39.716 48.546-40.068Q48.305-40.420 48.305-40.864M50.021-39.562Q50.622-39.562 50.846-39.940Q51.070-40.318 51.070-40.950Q51.070-41.562 50.836-41.921Q50.602-42.279 50.021-42.279Q48.968-42.279 48.968-40.950Q48.968-40.318 49.194-39.940Q49.419-39.562 50.021-39.562",[1389],[1373,4304,4305],{"transform":4244},[1378,4306],{"d":4307,"fill":3458,"stroke":3458,"className":4308,"style":1462},"M55.031-39.388L55.031-40.451Q55.031-40.475 55.059-40.502Q55.086-40.529 55.110-40.529L55.219-40.529Q55.284-40.529 55.298-40.471Q55.394-40.037 55.640-39.786Q55.886-39.535 56.300-39.535Q56.641-39.535 56.894-39.668Q57.147-39.801 57.147-40.109Q57.147-40.266 57.053-40.381Q56.959-40.495 56.821-40.564Q56.682-40.632 56.515-40.670L55.934-40.769Q55.578-40.837 55.305-41.058Q55.031-41.278 55.031-41.620Q55.031-41.869 55.143-42.044Q55.254-42.218 55.440-42.317Q55.626-42.416 55.842-42.459Q56.057-42.502 56.300-42.502Q56.713-42.502 56.993-42.320L57.209-42.495Q57.219-42.498 57.226-42.500Q57.233-42.502 57.243-42.502L57.294-42.502Q57.321-42.502 57.345-42.478Q57.369-42.454 57.369-42.426L57.369-41.579Q57.369-41.558 57.345-41.531Q57.321-41.504 57.294-41.504L57.181-41.504Q57.154-41.504 57.128-41.529Q57.103-41.555 57.103-41.579Q57.103-41.815 56.997-41.979Q56.891-42.143 56.708-42.225Q56.525-42.307 56.293-42.307Q55.965-42.307 55.708-42.204Q55.452-42.102 55.452-41.825Q55.452-41.630 55.635-41.521Q55.818-41.411 56.047-41.370L56.621-41.264Q56.867-41.216 57.081-41.088Q57.294-40.960 57.431-40.757Q57.568-40.553 57.568-40.304Q57.568-39.791 57.202-39.552Q56.836-39.313 56.300-39.313Q55.804-39.313 55.472-39.607L55.206-39.333Q55.185-39.313 55.158-39.313L55.110-39.313Q55.086-39.313 55.059-39.340Q55.031-39.367 55.031-39.388M59.864-39.381L58.261-39.381L58.261-39.661Q58.487-39.661 58.636-39.695Q58.784-39.730 58.784-39.870L58.784-43.489Q58.784-43.759 58.677-43.821Q58.569-43.882 58.261-43.882L58.261-44.163L59.338-44.238L59.338-39.870Q59.338-39.733 59.488-39.697Q59.639-39.661 59.864-39.661L59.864-39.381M60.418-40.864Q60.418-41.206 60.553-41.505Q60.688-41.804 60.927-42.028Q61.167-42.252 61.485-42.377Q61.802-42.502 62.134-42.502Q62.578-42.502 62.978-42.286Q63.378-42.071 63.612-41.693Q63.846-41.316 63.846-40.864Q63.846-40.523 63.705-40.239Q63.563-39.955 63.318-39.748Q63.074-39.542 62.765-39.427Q62.455-39.313 62.134-39.313Q61.703-39.313 61.302-39.514Q60.900-39.716 60.659-40.068Q60.418-40.420 60.418-40.864M62.134-39.562Q62.736-39.562 62.959-39.940Q63.183-40.318 63.183-40.950Q63.183-41.562 62.949-41.921Q62.715-42.279 62.134-42.279Q61.081-42.279 61.081-40.950Q61.081-40.318 61.307-39.940Q61.532-39.562 62.134-39.562M64.967-40.222L64.967-42.119L64.328-42.119L64.328-42.341Q64.646-42.341 64.863-42.551Q65.080-42.761 65.181-43.071Q65.282-43.380 65.282-43.688L65.549-43.688L65.549-42.399L66.625-42.399L66.625-42.119L65.549-42.119L65.549-40.235Q65.549-39.959 65.653-39.760Q65.757-39.562 66.017-39.562Q66.174-39.562 66.280-39.666Q66.386-39.771 66.436-39.924Q66.485-40.078 66.485-40.235L66.485-40.649L66.752-40.649L66.752-40.222Q66.752-39.996 66.653-39.786Q66.553-39.576 66.369-39.444Q66.184-39.313 65.955-39.313Q65.518-39.313 65.243-39.550Q64.967-39.788 64.967-40.222",[1389],[1373,4310,4311],{"transform":4244},[1378,4312],{"d":4313,"fill":3458,"stroke":3458,"className":4314,"style":1462},"M71.390-39.589Q71.390-40.095 71.519-40.603Q71.649-41.110 71.887-41.572Q72.124-42.033 72.459-42.454L73.105-43.267L72.292-43.267Q71.707-43.267 71.311-43.259Q70.914-43.250 70.891-43.230Q70.788-43.113 70.709-42.587L70.443-42.587L70.689-44.111L70.955-44.111L70.955-44.091Q70.955-44.023 71.031-43.980Q71.106-43.937 71.184-43.930Q71.376-43.906 71.571-43.900Q71.766-43.893 71.957-43.891Q72.148-43.889 72.347-43.889L73.768-43.889L73.768-43.701Q73.758-43.653 73.748-43.643L72.692-42.320Q72.473-42.047 72.350-41.734Q72.227-41.422 72.169-41.073Q72.111-40.724 72.097-40.393Q72.083-40.061 72.083-39.589Q72.083-39.439 71.984-39.340Q71.885-39.241 71.738-39.241Q71.588-39.241 71.489-39.340Q71.390-39.439 71.390-39.589",[1389],[1373,4316,4317,4320,4323],{"fill":3567,"stroke":3567},[1378,4318],{"fill":1380,"d":4319},"M33.328-51.33c19.889-16.69 46.69-16.69 65.047-1.286",[1378,4321],{"stroke":1380,"d":4322},"m99.907-51.33-1.423-3.283-.11 1.997-1.947.454",[1373,4324,4326,4329],{"fill":4325},"var(--tk-bg)",[1378,4327],{"stroke":1380,"d":4328},"M50.426-64.048h32.382v-8.222H50.426Z",[1373,4330,4331,4338,4344],{"fill":3567,"stroke":1380,"fontSize":3325},[1373,4332,4334],{"transform":4333},"translate(106.871 -27.028)",[1378,4335],{"d":4336,"fill":3567,"stroke":3567,"className":4337,"style":1462},"M-53.487-38.024L-55.117-38.024L-55.117-38.304Q-54.888-38.304-54.739-38.339Q-54.591-38.373-54.591-38.513L-54.591-41.859Q-54.591-42.030-54.727-42.071Q-54.864-42.112-55.117-42.112L-55.117-42.392L-54.037-42.467L-54.037-42.061Q-53.815-42.262-53.528-42.365Q-53.240-42.467-52.933-42.467Q-52.506-42.467-52.142-42.254Q-51.778-42.040-51.564-41.676Q-51.350-41.312-51.350-40.892Q-51.350-40.447-51.590-40.083Q-51.829-39.719-52.222-39.516Q-52.615-39.313-53.059-39.313Q-53.326-39.313-53.574-39.413Q-53.821-39.514-54.009-39.695L-54.009-38.513Q-54.009-38.376-53.861-38.340Q-53.712-38.304-53.487-38.304L-53.487-38.024M-54.009-41.712L-54.009-40.102Q-53.876-39.849-53.633-39.692Q-53.391-39.535-53.114-39.535Q-52.786-39.535-52.533-39.736Q-52.280-39.938-52.147-40.256Q-52.013-40.574-52.013-40.892Q-52.013-41.121-52.078-41.350Q-52.143-41.579-52.271-41.777Q-52.400-41.975-52.594-42.095Q-52.789-42.214-53.022-42.214Q-53.316-42.214-53.584-42.085Q-53.852-41.955-54.009-41.712M-48.965-39.381L-50.701-39.381L-50.701-39.661Q-50.472-39.661-50.323-39.695Q-50.174-39.730-50.174-39.870L-50.174-41.719Q-50.174-41.989-50.282-42.050Q-50.390-42.112-50.701-42.112L-50.701-42.392L-49.672-42.467L-49.672-41.760Q-49.542-42.068-49.299-42.267Q-49.057-42.467-48.739-42.467Q-48.520-42.467-48.349-42.343Q-48.178-42.218-48.178-42.006Q-48.178-41.869-48.278-41.770Q-48.377-41.671-48.510-41.671Q-48.647-41.671-48.746-41.770Q-48.845-41.869-48.845-42.006Q-48.845-42.146-48.746-42.245Q-49.036-42.245-49.236-42.049Q-49.436-41.852-49.528-41.558Q-49.621-41.264-49.621-40.984L-49.621-39.870Q-49.621-39.661-48.965-39.661L-48.965-39.381M-47.635-40.864Q-47.635-41.206-47.500-41.505Q-47.365-41.804-47.126-42.028Q-46.886-42.252-46.569-42.377Q-46.251-42.502-45.919-42.502Q-45.475-42.502-45.075-42.286Q-44.675-42.071-44.441-41.693Q-44.207-41.316-44.207-40.864Q-44.207-40.523-44.349-40.239Q-44.490-39.955-44.735-39.748Q-44.979-39.542-45.289-39.427Q-45.598-39.313-45.919-39.313Q-46.350-39.313-46.751-39.514Q-47.153-39.716-47.394-40.068Q-47.635-40.420-47.635-40.864M-45.919-39.562Q-45.318-39.562-45.094-39.940Q-44.870-40.318-44.870-40.950Q-44.870-41.562-45.104-41.921Q-45.338-42.279-45.919-42.279Q-46.972-42.279-46.972-40.950Q-46.972-40.318-46.746-39.940Q-46.521-39.562-45.919-39.562M-42.805-39.381L-43.072-39.381L-43.072-43.489Q-43.072-43.759-43.180-43.821Q-43.287-43.882-43.598-43.882L-43.598-44.163L-42.518-44.238L-42.518-42.068Q-42.310-42.259-42.024-42.363Q-41.739-42.467-41.442-42.467Q-41.124-42.467-40.826-42.346Q-40.529-42.225-40.307-42.009Q-40.085-41.794-39.958-41.509Q-39.832-41.223-39.832-40.892Q-39.832-40.447-40.071-40.083Q-40.310-39.719-40.703-39.516Q-41.096-39.313-41.541-39.313Q-41.736-39.313-41.925-39.369Q-42.115-39.425-42.276-39.530Q-42.436-39.634-42.576-39.795L-42.805-39.381M-42.491-41.726L-42.491-40.109Q-42.354-39.849-42.113-39.692Q-41.872-39.535-41.595-39.535Q-41.301-39.535-41.090-39.642Q-40.878-39.750-40.744-39.942Q-40.611-40.133-40.553-40.372Q-40.495-40.611-40.495-40.892Q-40.495-41.251-40.589-41.555Q-40.683-41.859-40.910-42.052Q-41.137-42.245-41.503-42.245Q-41.804-42.245-42.070-42.109Q-42.337-41.972-42.491-41.726",[1389],[1373,4339,4340],{"transform":4333},[1378,4341],{"d":4342,"fill":3567,"stroke":3567,"className":4343,"style":1462},"M-39.012-40.916Q-39.012-41.237-38.887-41.526Q-38.762-41.815-38.536-42.038Q-38.311-42.262-38.015-42.382Q-37.720-42.502-37.402-42.502Q-37.074-42.502-36.812-42.402Q-36.551-42.303-36.375-42.121Q-36.199-41.938-36.105-41.680Q-36.011-41.422-36.011-41.090Q-36.011-40.998-36.093-40.977L-38.348-40.977L-38.348-40.916Q-38.348-40.328-38.065-39.945Q-37.781-39.562-37.214-39.562Q-36.892-39.562-36.624-39.755Q-36.356-39.948-36.267-40.263Q-36.260-40.304-36.185-40.318L-36.093-40.318Q-36.011-40.294-36.011-40.222Q-36.011-40.215-36.017-40.188Q-36.130-39.791-36.501-39.552Q-36.872-39.313-37.296-39.313Q-37.733-39.313-38.133-39.521Q-38.533-39.730-38.772-40.097Q-39.012-40.464-39.012-40.916M-38.342-41.186L-36.527-41.186Q-36.527-41.463-36.624-41.715Q-36.722-41.968-36.920-42.124Q-37.118-42.279-37.402-42.279Q-37.679-42.279-37.892-42.121Q-38.106-41.962-38.224-41.707Q-38.342-41.452-38.342-41.186",[1389],[1373,4345,4346],{"transform":4333},[1378,4347],{"d":4348,"fill":3567,"stroke":3567,"className":4349,"style":1462},"M-26.602-40.957L-32.327-40.957Q-32.392-40.957-32.440-41.010Q-32.488-41.063-32.488-41.131Q-32.488-41.196-32.440-41.247Q-32.392-41.298-32.327-41.298L-26.602-41.298Q-26.852-41.483-27.060-41.731Q-27.269-41.979-27.409-42.267Q-27.549-42.556-27.611-42.867Q-27.611-42.960-27.518-42.973L-27.351-42.973Q-27.276-42.963-27.265-42.888Q-27.183-42.488-26.960-42.144Q-26.736-41.801-26.404-41.563Q-26.073-41.326-25.673-41.223Q-25.615-41.203-25.615-41.131Q-25.615-41.100-25.630-41.071Q-25.645-41.042-25.673-41.039Q-26.069-40.936-26.404-40.694Q-26.739-40.451-26.963-40.106Q-27.187-39.760-27.265-39.367Q-27.276-39.292-27.351-39.282L-27.518-39.282Q-27.611-39.296-27.611-39.388Q-27.515-39.856-27.254-40.263Q-26.992-40.670-26.602-40.957",[1389],[1373,4351,4353],{"stroke":3458,"style":4352},"stroke-width:1.2",[1378,4354],{"fill":1380,"d":4196},[1595,4356,4358,4359,4412,4413,1618,4428,1618,4443,4458,4459,4475,4476,4491],{"className":4357},[1598],"Primary clustering. A run of four occupied slots (shaded) absorbs any new key whose hash ",[404,4360,4362],{"className":4361},[407],[404,4363,4365],{"className":4364,"ariaHidden":412},[411],[404,4366,4368,4371,4403,4406,4409],{"className":4367},[416],[404,4369],{"className":4370,"style":3951},[420],[404,4372,4374,4377],{"className":4373},[425],[404,4375,990],{"className":4376},[425,426],[404,4378,4380],{"className":4379},[871],[404,4381,4383],{"className":4382},[875],[404,4384,4386],{"className":4385},[879],[404,4387,4389],{"className":4388,"style":3973},[883],[404,4390,4391,4394],{"style":886},[404,4392],{"className":4393,"style":891},[890],[404,4395,4397],{"className":4396},[895,896,897,898],[404,4398,4400],{"className":4399},[425,898],[404,4401,3988],{"className":4402},[425,898],[404,4404,433],{"className":4405},[432],[404,4407,731],{"className":4408,"style":730},[425,426],[404,4410,457],{"className":4411},[456]," lands on slot ",[404,4414,4416],{"className":4415},[407],[404,4417,4419],{"className":4418,"ariaHidden":412},[411],[404,4420,4422,4425],{"className":4421},[416],[404,4423],{"className":4424,"style":842},[420],[404,4426,1634],{"className":4427},[425],[404,4429,4431],{"className":4430},[407],[404,4432,4434],{"className":4433,"ariaHidden":412},[411],[404,4435,4437,4440],{"className":4436},[416],[404,4438],{"className":4439,"style":842},[420],[404,4441,1651],{"className":4442},[425],[404,4444,4446],{"className":4445},[407],[404,4447,4449],{"className":4448,"ariaHidden":412},[411],[404,4450,4452,4455],{"className":4451},[416],[404,4453],{"className":4454,"style":842},[420],[404,4456,1753],{"className":4457},[425],", or ",[404,4460,4462],{"className":4461},[407],[404,4463,4465],{"className":4464,"ariaHidden":412},[411],[404,4466,4468,4471],{"className":4467},[416],[404,4469],{"className":4470,"style":842},[420],[404,4472,4474],{"className":4473},[425],"6"," — four of the eleven slots, each forcing a walk to the run's right end at slot ",[404,4477,4479],{"className":4478},[407],[404,4480,4482],{"className":4481,"ariaHidden":412},[411],[404,4483,4485,4488],{"className":4484},[416],[404,4486],{"className":4487,"style":842},[420],[404,4489,3325],{"className":4490},[425]," (red). Every such insertion lengthens the run, so clusters snowball: the bigger the run, the likelier the next key extends it.",[3895,4493,4494,4794],{},[3898,4495,4496,1146,4499,4770,4771,4773,4774,4777,4778,4793],{},[385,4497,4498],{},"Quadratic probing.",[404,4500,4502],{"className":4501},[407],[404,4503,4505,4541,4600,4661,4761],{"className":4504,"ariaHidden":412},[411],[404,4506,4508,4511,4514,4517,4520,4523,4526,4529,4532,4535,4538],{"className":4507},[416],[404,4509],{"className":4510,"style":421},[420],[404,4512,990],{"className":4513},[425,426],[404,4515,433],{"className":4516},[432],[404,4518,731],{"className":4519,"style":730},[425,426],[404,4521,535],{"className":4522},[534],[404,4524],{"className":4525,"style":448},[447],[404,4527,2900],{"className":4528},[425,426],[404,4530,457],{"className":4531},[456],[404,4533],{"className":4534,"style":580},[447],[404,4536,585],{"className":4537},[584],[404,4539],{"className":4540,"style":580},[447],[404,4542,4544,4547,4550,4582,4585,4588,4591,4594,4597],{"className":4543},[416],[404,4545],{"className":4546,"style":3951},[420],[404,4548,433],{"className":4549},[432],[404,4551,4553,4556],{"className":4552},[425],[404,4554,990],{"className":4555},[425,426],[404,4557,4559],{"className":4558},[871],[404,4560,4562],{"className":4561},[875],[404,4563,4565],{"className":4564},[879],[404,4566,4568],{"className":4567,"style":3973},[883],[404,4569,4570,4573],{"style":886},[404,4571],{"className":4572,"style":891},[890],[404,4574,4576],{"className":4575},[895,896,897,898],[404,4577,4579],{"className":4578},[425,898],[404,4580,3988],{"className":4581},[425,898],[404,4583,433],{"className":4584},[432],[404,4586,731],{"className":4587,"style":730},[425,426],[404,4589,457],{"className":4590},[456],[404,4592],{"className":4593,"style":644},[447],[404,4595,2240],{"className":4596},[648],[404,4598],{"className":4599,"style":644},[447],[404,4601,4603,4607,4649,4652,4655,4658],{"className":4602},[416],[404,4604],{"className":4605,"style":4606},[420],"height:0.8095em;vertical-align:-0.15em;",[404,4608,4610,4614],{"className":4609},[425],[404,4611,4613],{"className":4612},[425,426],"c",[404,4615,4617],{"className":4616},[871],[404,4618,4620,4641],{"className":4619},[875,1678],[404,4621,4623,4638],{"className":4622},[879],[404,4624,4626],{"className":4625,"style":1685},[883],[404,4627,4629,4632],{"style":4628},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[404,4630],{"className":4631,"style":891},[890],[404,4633,4635],{"className":4634},[895,896,897,898],[404,4636,488],{"className":4637},[425,898],[404,4639,1702],{"className":4640},[1701],[404,4642,4644],{"className":4643},[879],[404,4645,4647],{"className":4646,"style":1709},[883],[404,4648],{},[404,4650,2900],{"className":4651},[425,426],[404,4653],{"className":4654,"style":644},[447],[404,4656,2240],{"className":4657},[648],[404,4659],{"className":4660,"style":644},[447],[404,4662,4664,4668,4708,4737,4740,4743,4746,4755,4758],{"className":4663},[416],[404,4665],{"className":4666,"style":4667},[420],"height:1.0641em;vertical-align:-0.25em;",[404,4669,4671,4674],{"className":4670},[425],[404,4672,4613],{"className":4673},[425,426],[404,4675,4677],{"className":4676},[871],[404,4678,4680,4700],{"className":4679},[875,1678],[404,4681,4683,4697],{"className":4682},[879],[404,4684,4686],{"className":4685,"style":1685},[883],[404,4687,4688,4691],{"style":4628},[404,4689],{"className":4690,"style":891},[890],[404,4692,4694],{"className":4693},[895,896,897,898],[404,4695,867],{"className":4696},[425,898],[404,4698,1702],{"className":4699},[1701],[404,4701,4703],{"className":4702},[879],[404,4704,4706],{"className":4705,"style":1709},[883],[404,4707],{},[404,4709,4711,4714],{"className":4710},[425],[404,4712,2900],{"className":4713},[425,426],[404,4715,4717],{"className":4716},[871],[404,4718,4720],{"className":4719},[875],[404,4721,4723],{"className":4722},[879],[404,4724,4726],{"className":4725,"style":860},[883],[404,4727,4728,4731],{"style":886},[404,4729],{"className":4730,"style":891},[890],[404,4732,4734],{"className":4733},[895,896,897,898],[404,4735,867],{"className":4736},[425,898],[404,4738,457],{"className":4739},[456],[404,4741],{"className":4742,"style":4022},[447],[404,4744],{"className":4745,"style":644},[447],[404,4747,4749],{"className":4748},[648],[404,4750,4752],{"className":4751},[425],[404,4753,4035],{"className":4754},[425,441],[404,4756],{"className":4757,"style":4022},[447],[404,4759],{"className":4760,"style":644},[447],[404,4762,4764,4767],{"className":4763},[416],[404,4765],{"className":4766,"style":1243},[420],[404,4768,640],{"className":4769},[425,426],". The\nquadratic step spreads probes out, eliminating primary clustering, but two\nkeys with the same initial slot follow the ",[464,4772,3275],{}," sequence, a milder\n",[385,4775,4776],{},"secondary clustering",". The constants and ",[404,4779,4781],{"className":4780},[407],[404,4782,4784],{"className":4783,"ariaHidden":412},[411],[404,4785,4787,4790],{"className":4786},[416],[404,4788],{"className":4789,"style":1243},[420],[404,4791,640],{"className":4792},[425,426]," must be chosen so the\nsequence hits every slot.",[3898,4795,4796,1146,4799,5013,5014,5017,5018,5021,5022,5041],{},[385,4797,4798],{},"Double hashing.",[404,4800,4802],{"className":4801},[407],[404,4803,4805,4841,4908,4927,5004],{"className":4804,"ariaHidden":412},[411],[404,4806,4808,4811,4814,4817,4820,4823,4826,4829,4832,4835,4838],{"className":4807},[416],[404,4809],{"className":4810,"style":421},[420],[404,4812,990],{"className":4813},[425,426],[404,4815,433],{"className":4816},[432],[404,4818,731],{"className":4819,"style":730},[425,426],[404,4821,535],{"className":4822},[534],[404,4824],{"className":4825,"style":448},[447],[404,4827,2900],{"className":4828},[425,426],[404,4830,457],{"className":4831},[456],[404,4833],{"className":4834,"style":580},[447],[404,4836,585],{"className":4837},[584],[404,4839],{"className":4840,"style":580},[447],[404,4842,4844,4847,4850,4890,4893,4896,4899,4902,4905],{"className":4843},[416],[404,4845],{"className":4846,"style":421},[420],[404,4848,433],{"className":4849},[432],[404,4851,4853,4856],{"className":4852},[425],[404,4854,990],{"className":4855},[425,426],[404,4857,4859],{"className":4858},[871],[404,4860,4862,4882],{"className":4861},[875,1678],[404,4863,4865,4879],{"className":4864},[879],[404,4866,4868],{"className":4867,"style":1685},[883],[404,4869,4870,4873],{"style":4628},[404,4871],{"className":4872,"style":891},[890],[404,4874,4876],{"className":4875},[895,896,897,898],[404,4877,488],{"className":4878},[425,898],[404,4880,1702],{"className":4881},[1701],[404,4883,4885],{"className":4884},[879],[404,4886,4888],{"className":4887,"style":1709},[883],[404,4889],{},[404,4891,433],{"className":4892},[432],[404,4894,731],{"className":4895,"style":730},[425,426],[404,4897,457],{"className":4898},[456],[404,4900],{"className":4901,"style":644},[447],[404,4903,2240],{"className":4904},[648],[404,4906],{"className":4907,"style":644},[447],[404,4909,4911,4914,4917,4920,4924],{"className":4910},[416],[404,4912],{"className":4913,"style":2896},[420],[404,4915,2900],{"className":4916},[425,426],[404,4918],{"className":4919,"style":644},[447],[404,4921,4923],{"className":4922},[648],"⋅",[404,4925],{"className":4926,"style":644},[447],[404,4928,4930,4933,4973,4976,4979,4983,4986,4989,4998,5001],{"className":4929},[416],[404,4931],{"className":4932,"style":421},[420],[404,4934,4936,4939],{"className":4935},[425],[404,4937,990],{"className":4938},[425,426],[404,4940,4942],{"className":4941},[871],[404,4943,4945,4965],{"className":4944},[875,1678],[404,4946,4948,4962],{"className":4947},[879],[404,4949,4951],{"className":4950,"style":1685},[883],[404,4952,4953,4956],{"style":4628},[404,4954],{"className":4955,"style":891},[890],[404,4957,4959],{"className":4958},[895,896,897,898],[404,4960,867],{"className":4961},[425,898],[404,4963,1702],{"className":4964},[1701],[404,4966,4968],{"className":4967},[879],[404,4969,4971],{"className":4970,"style":1709},[883],[404,4972],{},[404,4974,433],{"className":4975},[432],[404,4977,731],{"className":4978,"style":730},[425,426],[404,4980,4982],{"className":4981},[456],"))",[404,4984],{"className":4985,"style":4022},[447],[404,4987],{"className":4988,"style":644},[447],[404,4990,4992],{"className":4991},[648],[404,4993,4995],{"className":4994},[425],[404,4996,4035],{"className":4997},[425,441],[404,4999],{"className":5000,"style":4022},[447],[404,5002],{"className":5003,"style":644},[447],[404,5005,5007,5010],{"className":5006},[416],[404,5008],{"className":5009,"style":1243},[420],[404,5011,640],{"className":5012},[425,426],", using a\nsecond hash function to set the step size. Different keys with the same start\nget ",[464,5015,5016],{},"different"," step sizes, so probe sequences rarely coincide. Double hashing\ncomes closest to the ideal of ",[385,5019,5020],{},"uniform hashing"," (every key's probe sequence\nequally likely to be any of the ",[404,5023,5025],{"className":5024},[407],[404,5026,5028],{"className":5027,"ariaHidden":412},[411],[404,5029,5031,5034,5037],{"className":5030},[416],[404,5032],{"className":5033,"style":726},[420],[404,5035,640],{"className":5036},[425,426],[404,5038,5040],{"className":5039},[456],"!"," permutations), and is the strongest of\nthe three.",[1360,5043,5045,5516],{"className":5044},[1363,1364],[1366,5046,5050],{"xmlns":1368,"width":5047,"height":5048,"viewBox":5049},"382.447","153.904","-75 -75 286.835 115.428",[1373,5051,5052,5059,5062,5065,5068,5074,5077,5084,5087,5094,5097,5104,5107,5114,5117,5124,5127,5134,5137,5144,5147,5154,5157,5164,5167,5174,5178,5186,5194,5202,5209,5212,5215,5218,5224,5227,5233,5236,5242,5245,5251,5254,5260,5263,5269,5272,5278,5281,5287,5290,5296,5299,5305,5308,5314,5318,5326,5334,5342,5350,5383,5386,5389,5392,5398,5401,5407,5410,5416,5419,5425,5428,5434,5437,5443,5446,5452,5455,5461,5464,5470,5473,5479,5482,5488,5492,5500,5508],{"stroke":1375,"style":1376},[1373,5053,5055],{"transform":5054},"translate(-31.68 2.43)",[1378,5056],{"d":5057,"fill":1375,"stroke":1375,"className":5058,"style":1462},"M-3.760-52.357L-5.363-52.357L-5.363-52.637Q-5.137-52.637-4.988-52.671Q-4.840-52.706-4.840-52.846L-4.840-56.465Q-4.840-56.735-4.947-56.797Q-5.055-56.858-5.363-56.858L-5.363-57.139L-4.286-57.214L-4.286-52.846Q-4.286-52.709-4.136-52.673Q-3.985-52.637-3.760-52.637L-3.760-52.357M-1.548-52.357L-3.100-52.357L-3.100-52.637Q-2.874-52.637-2.726-52.671Q-2.577-52.706-2.577-52.846L-2.577-54.695Q-2.577-54.883-2.625-54.967Q-2.673-55.050-2.770-55.069Q-2.867-55.088-3.079-55.088L-3.079-55.368L-2.023-55.443L-2.023-52.846Q-2.023-52.706-1.892-52.671Q-1.760-52.637-1.548-52.637L-1.548-52.357M-2.820-56.664Q-2.820-56.835-2.697-56.954Q-2.574-57.074-2.403-57.074Q-2.235-57.074-2.112-56.954Q-1.989-56.835-1.989-56.664Q-1.989-56.489-2.112-56.366Q-2.235-56.243-2.403-56.243Q-2.574-56.243-2.697-56.366Q-2.820-56.489-2.820-56.664M0.779-52.357L-0.854-52.357L-0.854-52.637Q-0.625-52.637-0.477-52.671Q-0.328-52.706-0.328-52.846L-0.328-54.695Q-0.328-54.965-0.436-55.026Q-0.543-55.088-0.854-55.088L-0.854-55.368L0.205-55.443L0.205-54.794Q0.376-55.102 0.680-55.273Q0.985-55.443 1.330-55.443Q1.836-55.443 2.119-55.220Q2.403-54.996 2.403-54.500L2.403-52.846Q2.403-52.709 2.552-52.673Q2.700-52.637 2.926-52.637L2.926-52.357L1.296-52.357L1.296-52.637Q1.525-52.637 1.673-52.671Q1.822-52.706 1.822-52.846L1.822-54.486Q1.822-54.821 1.702-55.021Q1.583-55.221 1.268-55.221Q0.998-55.221 0.764-55.085Q0.530-54.948 0.392-54.714Q0.253-54.480 0.253-54.206L0.253-52.846Q0.253-52.709 0.404-52.673Q0.554-52.637 0.779-52.637L0.779-52.357M3.473-53.892Q3.473-54.213 3.598-54.502Q3.722-54.791 3.948-55.014Q4.174-55.238 4.469-55.358Q4.765-55.478 5.083-55.478Q5.411-55.478 5.672-55.378Q5.934-55.279 6.110-55.097Q6.286-54.914 6.380-54.656Q6.474-54.398 6.474-54.066Q6.474-53.974 6.392-53.953L4.136-53.953L4.136-53.892Q4.136-53.304 4.420-52.921Q4.703-52.538 5.271-52.538Q5.592-52.538 5.860-52.731Q6.129-52.924 6.217-53.239Q6.224-53.280 6.300-53.294L6.392-53.294Q6.474-53.270 6.474-53.198Q6.474-53.191 6.467-53.164Q6.354-52.767 5.983-52.528Q5.612-52.289 5.189-52.289Q4.751-52.289 4.351-52.497Q3.951-52.706 3.712-53.073Q3.473-53.440 3.473-53.892M4.143-54.162L5.958-54.162Q5.958-54.439 5.860-54.691Q5.763-54.944 5.565-55.100Q5.366-55.255 5.083-55.255Q4.806-55.255 4.592-55.097Q4.379-54.938 4.261-54.683Q4.143-54.428 4.143-54.162M7.120-53.085Q7.120-53.417 7.344-53.644Q7.568-53.871 7.911-53.999Q8.255-54.128 8.627-54.180Q9-54.233 9.304-54.233L9.304-54.486Q9.304-54.691 9.196-54.871Q9.089-55.050 8.907-55.153Q8.726-55.255 8.518-55.255Q8.111-55.255 7.875-55.163Q7.964-55.126 8.010-55.042Q8.056-54.958 8.056-54.856Q8.056-54.760 8.010-54.681Q7.964-54.603 7.884-54.558Q7.803-54.514 7.715-54.514Q7.564-54.514 7.463-54.611Q7.362-54.709 7.362-54.856Q7.362-55.478 8.518-55.478Q8.730-55.478 8.979-55.414Q9.229-55.351 9.430-55.232Q9.632-55.112 9.758-54.927Q9.885-54.743 9.885-54.500L9.885-52.924Q9.885-52.808 9.946-52.712Q10.008-52.617 10.121-52.617Q10.230-52.617 10.295-52.711Q10.360-52.805 10.360-52.924L10.360-53.372L10.627-53.372L10.627-52.924Q10.627-52.654 10.399-52.489Q10.172-52.323 9.892-52.323Q9.683-52.323 9.547-52.477Q9.410-52.630 9.386-52.846Q9.239-52.579 8.957-52.434Q8.675-52.289 8.350-52.289Q8.073-52.289 7.790-52.364Q7.506-52.439 7.313-52.618Q7.120-52.798 7.120-53.085M7.735-53.085Q7.735-52.911 7.836-52.781Q7.937-52.651 8.092-52.581Q8.248-52.511 8.412-52.511Q8.631-52.511 8.839-52.608Q9.048-52.706 9.176-52.887Q9.304-53.068 9.304-53.294L9.304-54.022Q8.979-54.022 8.613-53.931Q8.248-53.840 7.991-53.628Q7.735-53.417 7.735-53.085M12.794-52.357L11.057-52.357L11.057-52.637Q11.286-52.637 11.435-52.671Q11.584-52.706 11.584-52.846L11.584-54.695Q11.584-54.965 11.476-55.026Q11.368-55.088 11.057-55.088L11.057-55.368L12.086-55.443L12.086-54.736Q12.216-55.044 12.459-55.243Q12.701-55.443 13.019-55.443Q13.238-55.443 13.409-55.319Q13.580-55.194 13.580-54.982Q13.580-54.845 13.481-54.746Q13.382-54.647 13.248-54.647Q13.112-54.647 13.012-54.746Q12.913-54.845 12.913-54.982Q12.913-55.122 13.012-55.221Q12.722-55.221 12.522-55.025Q12.322-54.828 12.230-54.534Q12.137-54.240 12.137-53.960L12.137-52.846Q12.137-52.637 12.794-52.637",[1389],[1378,5060],{"fill":4143,"stroke":1380,"d":5061},"M-14.989-43.11v-18.494H3.505v18.494ZM128.413-43.11v-18.494h18.494v18.494ZM148.9-43.11v-18.494h18.493v18.494ZM189.871-43.11v-18.494h18.494v18.494Zm18.494-18.494",[1378,5063],{"fill":1443,"stroke":1380,"d":5064},"M169.385-43.11v-18.494h18.494v18.494Zm18.494-18.494",[1378,5066],{"fill":1380,"d":5067},"M-14.989-43.11H3.505v-18.494h-18.494Z",[1373,5069,5070],{"transform":4116},[1378,5071],{"d":5072,"fill":1375,"stroke":1375,"className":5073,"style":1462},"M-3.753-52.217Q-4.388-52.217-4.752-52.562Q-5.117-52.907-5.252-53.432Q-5.387-53.957-5.387-54.582Q-5.387-55.607-5.031-56.306Q-4.676-57.005-3.753-57.005Q-2.826-57.005-2.474-56.306Q-2.122-55.607-2.122-54.582Q-2.122-53.957-2.257-53.432Q-2.392-52.907-2.755-52.562Q-3.117-52.217-3.753-52.217M-3.753-52.442Q-3.315-52.442-3.102-52.817Q-2.888-53.191-2.838-53.658Q-2.789-54.124-2.789-54.702Q-2.789-55.255-2.838-55.683Q-2.888-56.110-3.100-56.445Q-3.312-56.780-3.753-56.780Q-4.095-56.780-4.298-56.573Q-4.501-56.366-4.588-56.054Q-4.676-55.741-4.698-55.425Q-4.720-55.108-4.720-54.702Q-4.720-54.285-4.698-53.943Q-4.676-53.601-4.587-53.253Q-4.498-52.904-4.293-52.673Q-4.088-52.442-3.753-52.442",[1389],[1378,5075],{"fill":1380,"d":5076},"M5.497-43.11h18.494v-18.494H5.497Z",[1373,5078,5080],{"transform":5079},"translate(18.493 2.256)",[1378,5081],{"d":5082,"fill":1375,"stroke":1375,"className":5083,"style":1462},"M-2.416-52.357L-4.946-52.357L-4.946-52.637Q-3.978-52.637-3.978-52.846L-3.978-56.465Q-4.371-56.277-4.993-56.277L-4.993-56.558Q-4.576-56.558-4.212-56.659Q-3.848-56.759-3.592-57.005L-3.466-57.005Q-3.401-56.988-3.384-56.920L-3.384-52.846Q-3.384-52.637-2.416-52.637",[1389],[1378,5085],{"fill":1380,"d":5086},"M25.983-43.11h18.494v-18.494H25.983Z",[1373,5088,5090],{"transform":5089},"translate(38.979 2.256)",[1378,5091],{"d":5092,"fill":1375,"stroke":1375,"className":5093,"style":1462},"M-2.416-52.357L-5.301-52.357L-5.301-52.559Q-5.301-52.589-5.274-52.617L-4.026-53.834Q-3.954-53.909-3.912-53.951Q-3.869-53.994-3.790-54.073Q-3.377-54.486-3.146-54.844Q-2.915-55.201-2.915-55.625Q-2.915-55.857-2.994-56.060Q-3.073-56.264-3.214-56.414Q-3.356-56.565-3.551-56.645Q-3.746-56.725-3.978-56.725Q-4.289-56.725-4.547-56.566Q-4.805-56.407-4.935-56.130L-4.915-56.130Q-4.747-56.130-4.640-56.019Q-4.532-55.908-4.532-55.744Q-4.532-55.587-4.641-55.474Q-4.751-55.361-4.915-55.361Q-5.075-55.361-5.188-55.474Q-5.301-55.587-5.301-55.744Q-5.301-56.120-5.093-56.407Q-4.884-56.694-4.549-56.850Q-4.214-57.005-3.859-57.005Q-3.435-57.005-3.055-56.847Q-2.676-56.688-2.442-56.371Q-2.208-56.055-2.208-55.625Q-2.208-55.314-2.348-55.045Q-2.488-54.777-2.693-54.572Q-2.898-54.367-3.261-54.085Q-3.623-53.803-3.732-53.707L-4.587-52.979L-3.944-52.979Q-3.681-52.979-3.392-52.981Q-3.103-52.982-2.885-52.991Q-2.666-53-2.649-53.017Q-2.587-53.082-2.550-53.249Q-2.512-53.417-2.474-53.659L-2.208-53.659",[1389],[1378,5095],{"fill":1380,"d":5096},"M46.47-43.11h18.493v-18.494H46.47Z",[1373,5098,5100],{"transform":5099},"translate(59.465 2.256)",[1378,5101],{"d":5102,"fill":1375,"stroke":1375,"className":5103,"style":1462},"M-4.946-52.904Q-4.826-52.747-4.635-52.648Q-4.443-52.548-4.228-52.509Q-4.013-52.470-3.790-52.470Q-3.493-52.470-3.298-52.625Q-3.103-52.781-3.013-53.035Q-2.922-53.290-2.922-53.574Q-2.922-53.868-3.014-54.119Q-3.107-54.370-3.305-54.526Q-3.503-54.681-3.797-54.681L-4.313-54.681Q-4.341-54.681-4.366-54.707Q-4.392-54.732-4.392-54.756L-4.392-54.828Q-4.392-54.859-4.366-54.881Q-4.341-54.903-4.313-54.903L-3.872-54.934Q-3.510-54.934-3.290-55.291Q-3.069-55.649-3.069-56.038Q-3.069-56.366-3.264-56.570Q-3.459-56.773-3.790-56.773Q-4.077-56.773-4.330-56.689Q-4.583-56.606-4.747-56.418Q-4.600-56.418-4.500-56.303Q-4.399-56.189-4.399-56.038Q-4.399-55.888-4.505-55.778Q-4.611-55.669-4.768-55.669Q-4.929-55.669-5.038-55.778Q-5.147-55.888-5.147-56.038Q-5.147-56.363-4.939-56.582Q-4.730-56.800-4.414-56.903Q-4.098-57.005-3.790-57.005Q-3.472-57.005-3.144-56.901Q-2.816-56.797-2.589-56.575Q-2.362-56.353-2.362-56.038Q-2.362-55.604-2.649-55.279Q-2.936-54.955-3.370-54.808Q-3.059-54.743-2.779-54.577Q-2.498-54.411-2.321-54.153Q-2.143-53.895-2.143-53.574Q-2.143-53.164-2.387-52.854Q-2.632-52.545-3.013-52.381Q-3.394-52.217-3.790-52.217Q-4.159-52.217-4.517-52.330Q-4.874-52.442-5.118-52.692Q-5.363-52.941-5.363-53.311Q-5.363-53.482-5.246-53.594Q-5.130-53.707-4.959-53.707Q-4.850-53.707-4.759-53.656Q-4.669-53.605-4.614-53.512Q-4.559-53.420-4.559-53.311Q-4.559-53.143-4.672-53.024Q-4.785-52.904-4.946-52.904",[1389],[1378,5105],{"fill":1380,"d":5106},"M66.955-43.11H85.45v-18.494H66.955Z",[1373,5108,5110],{"transform":5109},"translate(79.951 2.256)",[1378,5111],{"d":5112,"fill":1375,"stroke":1375,"className":5113,"style":1462},"M-3.425-53.505L-5.469-53.505L-5.469-53.786L-3.138-56.958Q-3.103-57.005-3.038-57.005L-2.902-57.005Q-2.857-57.005-2.830-56.978Q-2.803-56.951-2.803-56.906L-2.803-53.786L-2.040-53.786L-2.040-53.505L-2.803-53.505L-2.803-52.846Q-2.803-52.637-2.047-52.637L-2.047-52.357L-4.180-52.357L-4.180-52.637Q-3.425-52.637-3.425-52.846L-3.425-53.505M-3.377-56.230L-5.168-53.786L-3.377-53.786",[1389],[1378,5115],{"fill":1380,"d":5116},"M87.441-43.11h18.494v-18.494H87.441Z",[1373,5118,5120],{"transform":5119},"translate(100.437 2.256)",[1378,5121],{"d":5122,"fill":1375,"stroke":1375,"className":5123,"style":1462},"M-4.935-53.119L-4.966-53.119Q-4.829-52.822-4.532-52.646Q-4.235-52.470-3.907-52.470Q-3.544-52.470-3.317-52.648Q-3.090-52.825-2.996-53.114Q-2.902-53.403-2.902-53.765Q-2.902-54.080-2.956-54.365Q-3.011-54.650-3.184-54.856Q-3.356-55.061-3.671-55.061Q-3.944-55.061-4.127-54.994Q-4.310-54.927-4.414-54.838Q-4.518-54.750-4.614-54.640Q-4.710-54.531-4.754-54.521L-4.833-54.521Q-4.905-54.538-4.922-54.609L-4.922-56.927Q-4.922-56.961-4.898-56.983Q-4.874-57.005-4.840-57.005L-4.812-57.005Q-4.525-56.889-4.257-56.835Q-3.989-56.780-3.712-56.780Q-3.435-56.780-3.165-56.835Q-2.895-56.889-2.615-57.005L-2.591-57.005Q-2.556-57.005-2.533-56.982Q-2.509-56.958-2.509-56.927L-2.509-56.858Q-2.509-56.831-2.529-56.811Q-2.803-56.496-3.187-56.320Q-3.572-56.144-3.985-56.144Q-4.324-56.144-4.641-56.230L-4.641-54.948Q-4.245-55.283-3.671-55.283Q-3.267-55.283-2.931-55.073Q-2.594-54.862-2.401-54.510Q-2.208-54.158-2.208-53.758Q-2.208-53.427-2.348-53.141Q-2.488-52.856-2.732-52.646Q-2.977-52.436-3.279-52.326Q-3.582-52.217-3.900-52.217Q-4.259-52.217-4.585-52.381Q-4.911-52.545-5.106-52.837Q-5.301-53.129-5.301-53.492Q-5.301-53.642-5.195-53.748Q-5.089-53.854-4.935-53.854Q-4.782-53.854-4.677-53.750Q-4.573-53.646-4.573-53.492Q-4.573-53.335-4.677-53.227Q-4.782-53.119-4.935-53.119",[1389],[1378,5125],{"fill":1380,"d":5126},"M107.927-43.11h18.494v-18.494h-18.494Z",[1373,5128,5130],{"transform":5129},"translate(120.923 2.256)",[1378,5131],{"d":5132,"fill":1375,"stroke":1375,"className":5133,"style":1462},"M-3.753-52.217Q-4.211-52.217-4.529-52.432Q-4.846-52.648-5.028-53Q-5.209-53.352-5.286-53.772Q-5.363-54.192-5.363-54.620Q-5.363-55.204-5.110-55.760Q-4.857-56.315-4.387-56.660Q-3.917-57.005-3.319-57.005Q-2.909-57.005-2.625-56.807Q-2.341-56.609-2.341-56.206Q-2.341-56.110-2.387-56.031Q-2.433-55.953-2.514-55.908Q-2.594-55.864-2.683-55.864Q-2.830-55.864-2.931-55.961Q-3.032-56.059-3.032-56.206Q-3.032-56.336-2.941-56.443Q-2.850-56.551-2.717-56.551Q-2.905-56.773-3.319-56.773Q-3.633-56.773-3.907-56.609Q-4.180-56.445-4.347-56.171Q-4.535-55.881-4.600-55.515Q-4.665-55.149-4.665-54.695Q-4.515-54.989-4.250-55.167Q-3.985-55.344-3.671-55.344Q-3.240-55.344-2.891-55.138Q-2.543-54.931-2.343-54.575Q-2.143-54.220-2.143-53.793Q-2.143-53.348-2.360-52.988Q-2.577-52.627-2.950-52.422Q-3.322-52.217-3.753-52.217M-3.753-52.470Q-3.377-52.470-3.173-52.653Q-2.970-52.836-2.907-53.119Q-2.844-53.403-2.844-53.793Q-2.844-54.179-2.898-54.459Q-2.953-54.739-3.148-54.931Q-3.343-55.122-3.712-55.122Q-4.002-55.122-4.214-54.946Q-4.426-54.770-4.534-54.497Q-4.641-54.223-4.641-53.940L-4.641-53.799L-4.641-53.758Q-4.641-53.253-4.429-52.861Q-4.218-52.470-3.753-52.470",[1389],[1378,5135],{"fill":1380,"d":5136},"M128.413-43.11h18.494v-18.494h-18.494Z",[1373,5138,5140],{"transform":5139},"translate(141.409 2.256)",[1378,5141],{"d":5142,"fill":1375,"stroke":1375,"className":5143,"style":1462},"M-4.306-52.565Q-4.306-53.071-4.177-53.579Q-4.047-54.086-3.809-54.548Q-3.572-55.009-3.237-55.430L-2.591-56.243L-3.404-56.243Q-3.989-56.243-4.385-56.235Q-4.782-56.226-4.805-56.206Q-4.908-56.089-4.987-55.563L-5.253-55.563L-5.007-57.087L-4.741-57.087L-4.741-57.067Q-4.741-56.999-4.665-56.956Q-4.590-56.913-4.512-56.906Q-4.320-56.882-4.125-56.876Q-3.930-56.869-3.739-56.867Q-3.548-56.865-3.349-56.865L-1.928-56.865L-1.928-56.677Q-1.938-56.629-1.948-56.619L-3.004-55.296Q-3.223-55.023-3.346-54.710Q-3.469-54.398-3.527-54.049Q-3.585-53.700-3.599-53.369Q-3.613-53.037-3.613-52.565Q-3.613-52.415-3.712-52.316Q-3.811-52.217-3.958-52.217Q-4.108-52.217-4.207-52.316Q-4.306-52.415-4.306-52.565",[1389],[1378,5145],{"fill":1380,"d":5146},"M148.9-43.11h18.493v-18.494H148.9Z",[1373,5148,5150],{"transform":5149},"translate(161.895 2.256)",[1378,5151],{"d":5152,"fill":1375,"stroke":1375,"className":5153,"style":1462},"M-5.363-53.434Q-5.363-53.875-5.060-54.196Q-4.758-54.517-4.306-54.709L-4.546-54.849Q-4.816-55.009-4.982-55.267Q-5.147-55.525-5.147-55.823Q-5.147-56.175-4.942-56.447Q-4.737-56.718-4.416-56.862Q-4.095-57.005-3.753-57.005Q-3.431-57.005-3.108-56.889Q-2.785-56.773-2.574-56.532Q-2.362-56.291-2.362-55.956Q-2.362-55.594-2.606-55.331Q-2.850-55.067-3.230-54.890L-2.830-54.654Q-2.635-54.541-2.476-54.372Q-2.317-54.203-2.230-53.994Q-2.143-53.786-2.143-53.553Q-2.143-53.150-2.377-52.846Q-2.611-52.542-2.985-52.379Q-3.360-52.217-3.753-52.217Q-4.139-52.217-4.508-52.354Q-4.877-52.490-5.120-52.767Q-5.363-53.044-5.363-53.434M-4.915-53.434Q-4.915-53.147-4.746-52.924Q-4.576-52.702-4.308-52.586Q-4.040-52.470-3.753-52.470Q-3.315-52.470-2.953-52.687Q-2.591-52.904-2.591-53.311Q-2.591-53.512-2.719-53.690Q-2.847-53.868-3.025-53.967L-4.047-54.562Q-4.286-54.452-4.484-54.286Q-4.682-54.121-4.799-53.905Q-4.915-53.690-4.915-53.434M-4.392-55.563L-3.472-55.030Q-3.165-55.190-2.963-55.423Q-2.762-55.655-2.762-55.956Q-2.762-56.195-2.907-56.385Q-3.052-56.575-3.284-56.674Q-3.517-56.773-3.753-56.773Q-3.975-56.773-4.204-56.703Q-4.433-56.633-4.590-56.476Q-4.747-56.318-4.747-56.089Q-4.747-55.775-4.392-55.563",[1389],[1378,5155],{"fill":1380,"d":5156},"M169.385-43.11h18.494v-18.494h-18.494Z",[1373,5158,5160],{"transform":5159},"translate(182.381 2.256)",[1378,5161],{"d":5162,"fill":1375,"stroke":1375,"className":5163,"style":1462},"M-4.768-52.671Q-4.648-52.555-4.471-52.513Q-4.293-52.470-4.077-52.470Q-3.838-52.470-3.628-52.579Q-3.418-52.689-3.264-52.871Q-3.110-53.054-3.011-53.287Q-2.844-53.714-2.844-54.534Q-2.994-54.240-3.257-54.061Q-3.520-53.881-3.838-53.881Q-4.272-53.881-4.619-54.090Q-4.966-54.298-5.164-54.659Q-5.363-55.020-5.363-55.443Q-5.363-55.778-5.233-56.067Q-5.103-56.356-4.872-56.570Q-4.641-56.783-4.342-56.894Q-4.043-57.005-3.712-57.005Q-2.854-57.005-2.498-56.291Q-2.143-55.577-2.143-54.620Q-2.143-54.203-2.271-53.775Q-2.399-53.348-2.656-52.993Q-2.912-52.637-3.274-52.427Q-3.637-52.217-4.077-52.217Q-4.532-52.217-4.850-52.405Q-5.168-52.593-5.168-53.017Q-5.168-53.167-5.069-53.266Q-4.970-53.365-4.819-53.365Q-4.751-53.365-4.684-53.338Q-4.617-53.311-4.573-53.266Q-4.529-53.222-4.501-53.155Q-4.474-53.088-4.474-53.017Q-4.474-52.887-4.554-52.789Q-4.635-52.692-4.768-52.671M-3.797-54.107Q-3.503-54.107-3.288-54.285Q-3.073-54.462-2.965-54.738Q-2.857-55.013-2.857-55.303Q-2.857-55.348-2.859-55.375Q-2.861-55.402-2.864-55.437Q-2.861-55.447-2.859-55.454Q-2.857-55.461-2.857-55.471Q-2.857-55.973-3.055-56.373Q-3.254-56.773-3.712-56.773Q-4.279-56.773-4.472-56.414Q-4.665-56.055-4.665-55.443Q-4.665-55.057-4.611-54.774Q-4.556-54.490-4.361-54.298Q-4.166-54.107-3.797-54.107",[1389],[1378,5165],{"fill":1380,"d":5166},"M189.871-43.11h18.494v-18.494h-18.494Z",[1373,5168,5170],{"transform":5169},"translate(200.874 2.256)",[1378,5171],{"d":5172,"fill":1375,"stroke":1375,"className":5173,"style":1462},"M-2.416-52.357L-4.946-52.357L-4.946-52.637Q-3.978-52.637-3.978-52.846L-3.978-56.465Q-4.371-56.277-4.993-56.277L-4.993-56.558Q-4.576-56.558-4.212-56.659Q-3.848-56.759-3.592-57.005L-3.466-57.005Q-3.401-56.988-3.384-56.920L-3.384-52.846Q-3.384-52.637-2.416-52.637L-2.416-52.357M0.229-52.217Q-0.407-52.217-0.771-52.562Q-1.135-52.907-1.270-53.432Q-1.405-53.957-1.405-54.582Q-1.405-55.607-1.049-56.306Q-0.694-57.005 0.229-57.005Q1.155-57.005 1.508-56.306Q1.860-55.607 1.860-54.582Q1.860-53.957 1.725-53.432Q1.590-52.907 1.227-52.562Q0.865-52.217 0.229-52.217M0.229-52.442Q0.667-52.442 0.880-52.817Q1.094-53.191 1.143-53.658Q1.193-54.124 1.193-54.702Q1.193-55.255 1.143-55.683Q1.094-56.110 0.882-56.445Q0.670-56.780 0.229-56.780Q-0.113-56.780-0.316-56.573Q-0.519-56.366-0.607-56.054Q-0.694-55.741-0.716-55.425Q-0.738-55.108-0.738-54.702Q-0.738-54.285-0.716-53.943Q-0.694-53.601-0.605-53.253Q-0.516-52.904-0.311-52.673Q-0.106-52.442 0.229-52.442",[1389],[1373,5175,5176],{"stroke":3458,"style":4352},[1378,5177],{"fill":1380,"d":5156},[1373,5179,5180],{"fill":3458,"stroke":3458},[1373,5181,5183],{"transform":5182},"translate(141.409 -12.069)",[1378,5184],{"d":5072,"fill":3458,"stroke":3458,"className":5185,"style":1462},[1389],[1373,5187,5188],{"fill":3458,"stroke":3458},[1373,5189,5191],{"transform":5190},"translate(161.895 -12.069)",[1378,5192],{"d":5082,"fill":3458,"stroke":3458,"className":5193,"style":1462},[1389],[1373,5195,5196],{"fill":3458,"stroke":3458},[1373,5197,5199],{"transform":5198},"translate(182.381 -12.069)",[1378,5200],{"d":5092,"fill":3458,"stroke":3458,"className":5201,"style":1462},[1389],[1373,5203,5205],{"transform":5204},"translate(-45.145 41.584)",[1378,5206],{"d":5207,"fill":1375,"stroke":1375,"className":5208,"style":1462},"M-3.804-52.289Q-4.235-52.289-4.611-52.501Q-4.987-52.712-5.207-53.073Q-5.428-53.434-5.428-53.868Q-5.428-54.312-5.190-54.673Q-4.952-55.033-4.566-55.238Q-4.180-55.443-3.739-55.443Q-3.421-55.443-3.138-55.288Q-2.854-55.132-2.669-54.856L-2.423-55.443L-2.187-55.443L-2.187-51.489Q-2.187-51.352-2.037-51.316Q-1.887-51.280-1.661-51.280L-1.661-51L-3.291-51L-3.291-51.280Q-3.066-51.280-2.917-51.315Q-2.768-51.349-2.768-51.489L-2.768-52.750Q-2.967-52.531-3.238-52.410Q-3.510-52.289-3.804-52.289M-3.753-52.511Q-3.421-52.511-3.149-52.716Q-2.878-52.921-2.738-53.246L-2.738-54.380Q-2.796-54.603-2.927-54.785Q-3.059-54.968-3.249-55.079Q-3.438-55.190-3.664-55.190Q-3.992-55.190-4.243-54.994Q-4.494-54.797-4.628-54.490Q-4.761-54.182-4.761-53.861Q-4.761-53.560-4.645-53.244Q-4.529-52.928-4.300-52.719Q-4.071-52.511-3.753-52.511M-0.653-53.191L-0.653-54.695Q-0.653-54.965-0.760-55.026Q-0.868-55.088-1.179-55.088L-1.179-55.368L-0.072-55.443L-0.072-53.211L-0.072-53.191Q-0.072-52.911-0.020-52.767Q0.031-52.624 0.173-52.567Q0.315-52.511 0.602-52.511Q0.855-52.511 1.060-52.651Q1.265-52.791 1.381-53.017Q1.497-53.242 1.497-53.492L1.497-54.695Q1.497-54.965 1.390-55.026Q1.282-55.088 0.971-55.088L0.971-55.368L2.078-55.443L2.078-53.030Q2.078-52.839 2.131-52.757Q2.184-52.675 2.285-52.656Q2.386-52.637 2.601-52.637L2.601-52.357L1.525-52.289L1.525-52.853Q1.415-52.671 1.270-52.548Q1.125-52.425 0.938-52.357Q0.752-52.289 0.550-52.289Q-0.653-52.289-0.653-53.191M3.247-53.085Q3.247-53.417 3.471-53.644Q3.695-53.871 4.039-53.999Q4.382-54.128 4.755-54.180Q5.127-54.233 5.431-54.233L5.431-54.486Q5.431-54.691 5.324-54.871Q5.216-55.050 5.035-55.153Q4.854-55.255 4.645-55.255Q4.238-55.255 4.003-55.163Q4.091-55.126 4.138-55.042Q4.184-54.958 4.184-54.856Q4.184-54.760 4.138-54.681Q4.091-54.603 4.011-54.558Q3.931-54.514 3.842-54.514Q3.692-54.514 3.591-54.611Q3.490-54.709 3.490-54.856Q3.490-55.478 4.645-55.478Q4.857-55.478 5.107-55.414Q5.356-55.351 5.558-55.232Q5.759-55.112 5.886-54.927Q6.012-54.743 6.012-54.500L6.012-52.924Q6.012-52.808 6.074-52.712Q6.135-52.617 6.248-52.617Q6.358-52.617 6.423-52.711Q6.487-52.805 6.487-52.924L6.487-53.372L6.754-53.372L6.754-52.924Q6.754-52.654 6.527-52.489Q6.300-52.323 6.019-52.323Q5.811-52.323 5.674-52.477Q5.537-52.630 5.513-52.846Q5.366-52.579 5.084-52.434Q4.802-52.289 4.478-52.289Q4.201-52.289 3.917-52.364Q3.633-52.439 3.440-52.618Q3.247-52.798 3.247-53.085M3.862-53.085Q3.862-52.911 3.963-52.781Q4.064-52.651 4.220-52.581Q4.375-52.511 4.539-52.511Q4.758-52.511 4.966-52.608Q5.175-52.706 5.303-52.887Q5.431-53.068 5.431-53.294L5.431-54.022Q5.107-54.022 4.741-53.931Q4.375-53.840 4.119-53.628Q3.862-53.417 3.862-53.085M7.171-53.868Q7.171-54.206 7.311-54.497Q7.451-54.787 7.696-55.001Q7.940-55.214 8.244-55.329Q8.549-55.443 8.873-55.443Q9.143-55.443 9.406-55.344Q9.670-55.245 9.861-55.067L9.861-56.465Q9.861-56.735 9.753-56.797Q9.646-56.858 9.335-56.858L9.335-57.139L10.411-57.214L10.411-53.030Q10.411-52.842 10.466-52.759Q10.521-52.675 10.622-52.656Q10.722-52.637 10.938-52.637L10.938-52.357L9.830-52.289L9.830-52.706Q9.413-52.289 8.788-52.289Q8.357-52.289 7.985-52.501Q7.612-52.712 7.392-53.073Q7.171-53.434 7.171-53.868M8.846-52.511Q9.054-52.511 9.241-52.583Q9.427-52.654 9.581-52.791Q9.735-52.928 9.830-53.106L9.830-54.715Q9.745-54.862 9.600-54.982Q9.454-55.102 9.285-55.161Q9.116-55.221 8.935-55.221Q8.374-55.221 8.106-54.832Q7.838-54.442 7.838-53.861Q7.838-53.290 8.072-52.900Q8.306-52.511 8.846-52.511M13.337-52.357L11.601-52.357L11.601-52.637Q11.830-52.637 11.978-52.671Q12.127-52.706 12.127-52.846L12.127-54.695Q12.127-54.965 12.019-55.026Q11.912-55.088 11.601-55.088L11.601-55.368L12.630-55.443L12.630-54.736Q12.759-55.044 13.002-55.243Q13.245-55.443 13.563-55.443Q13.781-55.443 13.952-55.319Q14.123-55.194 14.123-54.982Q14.123-54.845 14.024-54.746Q13.925-54.647 13.792-54.647Q13.655-54.647 13.556-54.746Q13.457-54.845 13.457-54.982Q13.457-55.122 13.556-55.221Q13.265-55.221 13.065-55.025Q12.865-54.828 12.773-54.534Q12.681-54.240 12.681-53.960L12.681-52.846Q12.681-52.637 13.337-52.637L13.337-52.357M14.766-53.085Q14.766-53.417 14.990-53.644Q15.214-53.871 15.557-53.999Q15.901-54.128 16.273-54.180Q16.646-54.233 16.950-54.233L16.950-54.486Q16.950-54.691 16.842-54.871Q16.735-55.050 16.553-55.153Q16.372-55.255 16.164-55.255Q15.757-55.255 15.521-55.163Q15.610-55.126 15.656-55.042Q15.702-54.958 15.702-54.856Q15.702-54.760 15.656-54.681Q15.610-54.603 15.530-54.558Q15.449-54.514 15.361-54.514Q15.210-54.514 15.109-54.611Q15.008-54.709 15.008-54.856Q15.008-55.478 16.164-55.478Q16.376-55.478 16.625-55.414Q16.875-55.351 17.076-55.232Q17.278-55.112 17.404-54.927Q17.531-54.743 17.531-54.500L17.531-52.924Q17.531-52.808 17.592-52.712Q17.654-52.617 17.767-52.617Q17.876-52.617 17.941-52.711Q18.006-52.805 18.006-52.924L18.006-53.372L18.273-53.372L18.273-52.924Q18.273-52.654 18.045-52.489Q17.818-52.323 17.538-52.323Q17.329-52.323 17.193-52.477Q17.056-52.630 17.032-52.846Q16.885-52.579 16.603-52.434Q16.321-52.289 15.996-52.289Q15.719-52.289 15.436-52.364Q15.152-52.439 14.959-52.618Q14.766-52.798 14.766-53.085M15.381-53.085Q15.381-52.911 15.482-52.781Q15.583-52.651 15.738-52.581Q15.894-52.511 16.058-52.511Q16.277-52.511 16.485-52.608Q16.694-52.706 16.822-52.887Q16.950-53.068 16.950-53.294L16.950-54.022Q16.625-54.022 16.259-53.931Q15.894-53.840 15.637-53.628Q15.381-53.417 15.381-53.085M19.216-53.198L19.216-55.095L18.577-55.095L18.577-55.317Q18.895-55.317 19.112-55.527Q19.329-55.737 19.430-56.047Q19.530-56.356 19.530-56.664L19.797-56.664L19.797-55.375L20.874-55.375L20.874-55.095L19.797-55.095L19.797-53.211Q19.797-52.935 19.901-52.736Q20.006-52.538 20.265-52.538Q20.423-52.538 20.529-52.642Q20.634-52.747 20.684-52.900Q20.734-53.054 20.734-53.211L20.734-53.625L21-53.625L21-53.198Q21-52.972 20.901-52.762Q20.802-52.552 20.617-52.420Q20.433-52.289 20.204-52.289Q19.766-52.289 19.491-52.526Q19.216-52.764 19.216-53.198M23.427-52.357L21.875-52.357L21.875-52.637Q22.101-52.637 22.249-52.671Q22.398-52.706 22.398-52.846L22.398-54.695Q22.398-54.883 22.350-54.967Q22.302-55.050 22.205-55.069Q22.108-55.088 21.896-55.088L21.896-55.368L22.952-55.443L22.952-52.846Q22.952-52.706 23.083-52.671Q23.215-52.637 23.427-52.637L23.427-52.357M22.155-56.664Q22.155-56.835 22.279-56.954Q22.402-57.074 22.572-57.074Q22.740-57.074 22.863-56.954Q22.986-56.835 22.986-56.664Q22.986-56.489 22.863-56.366Q22.740-56.243 22.572-56.243Q22.402-56.243 22.279-56.366Q22.155-56.489 22.155-56.664M24.073-53.868Q24.073-54.196 24.208-54.497Q24.343-54.797 24.579-55.018Q24.815-55.238 25.119-55.358Q25.423-55.478 25.748-55.478Q26.254-55.478 26.602-55.375Q26.951-55.273 26.951-54.897Q26.951-54.750 26.853-54.649Q26.756-54.548 26.609-54.548Q26.455-54.548 26.356-54.647Q26.257-54.746 26.257-54.897Q26.257-55.085 26.397-55.177Q26.195-55.228 25.755-55.228Q25.399-55.228 25.170-55.032Q24.941-54.835 24.840-54.526Q24.739-54.216 24.739-53.868Q24.739-53.519 24.866-53.213Q24.992-52.907 25.247-52.723Q25.502-52.538 25.857-52.538Q26.079-52.538 26.264-52.622Q26.448-52.706 26.583-52.861Q26.718-53.017 26.777-53.225Q26.790-53.280 26.845-53.280L26.958-53.280Q26.988-53.280 27.011-53.256Q27.033-53.232 27.033-53.198L27.033-53.177Q26.947-52.890 26.759-52.692Q26.571-52.494 26.307-52.391Q26.042-52.289 25.748-52.289Q25.317-52.289 24.929-52.495Q24.541-52.702 24.307-53.065Q24.073-53.427 24.073-53.868",[1389],[1378,5210],{"fill":4143,"stroke":1380,"d":5211},"M-14.989-3.277V-21.77H3.505v18.494ZM128.413-3.277V-21.77h18.494v18.494ZM148.9-3.277V-21.77h18.493v18.494ZM189.871-3.277V-21.77h18.494v18.494Zm18.494-18.494",[1378,5213],{"fill":1443,"stroke":1380,"d":5214},"M87.441-3.277V-21.77h18.494v18.494Zm18.494-18.494",[1378,5216],{"fill":1380,"d":5217},"M-14.989-3.276H3.505v-18.495h-18.494Z",[1373,5219,5221],{"transform":5220},"translate(-1.993 42.09)",[1378,5222],{"d":5072,"fill":1375,"stroke":1375,"className":5223,"style":1462},[1389],[1378,5225],{"fill":1380,"d":5226},"M5.497-3.276h18.494v-18.495H5.497Z",[1373,5228,5230],{"transform":5229},"translate(18.493 42.09)",[1378,5231],{"d":5082,"fill":1375,"stroke":1375,"className":5232,"style":1462},[1389],[1378,5234],{"fill":1380,"d":5235},"M25.983-3.276h18.494v-18.495H25.983Z",[1373,5237,5239],{"transform":5238},"translate(38.979 42.09)",[1378,5240],{"d":5092,"fill":1375,"stroke":1375,"className":5241,"style":1462},[1389],[1378,5243],{"fill":1380,"d":5244},"M46.47-3.276h18.493v-18.495H46.47Z",[1373,5246,5248],{"transform":5247},"translate(59.465 42.09)",[1378,5249],{"d":5102,"fill":1375,"stroke":1375,"className":5250,"style":1462},[1389],[1378,5252],{"fill":1380,"d":5253},"M66.955-3.276H85.45v-18.495H66.955Z",[1373,5255,5257],{"transform":5256},"translate(79.951 42.09)",[1378,5258],{"d":5112,"fill":1375,"stroke":1375,"className":5259,"style":1462},[1389],[1378,5261],{"fill":1380,"d":5262},"M87.441-3.276h18.494v-18.495H87.441Z",[1373,5264,5266],{"transform":5265},"translate(100.437 42.09)",[1378,5267],{"d":5122,"fill":1375,"stroke":1375,"className":5268,"style":1462},[1389],[1378,5270],{"fill":1380,"d":5271},"M107.927-3.276h18.494v-18.495h-18.494Z",[1373,5273,5275],{"transform":5274},"translate(120.923 42.09)",[1378,5276],{"d":5132,"fill":1375,"stroke":1375,"className":5277,"style":1462},[1389],[1378,5279],{"fill":1380,"d":5280},"M128.413-3.276h18.494v-18.495h-18.494Z",[1373,5282,5284],{"transform":5283},"translate(141.409 42.09)",[1378,5285],{"d":5142,"fill":1375,"stroke":1375,"className":5286,"style":1462},[1389],[1378,5288],{"fill":1380,"d":5289},"M148.9-3.276h18.493v-18.495H148.9Z",[1373,5291,5293],{"transform":5292},"translate(161.895 42.09)",[1378,5294],{"d":5152,"fill":1375,"stroke":1375,"className":5295,"style":1462},[1389],[1378,5297],{"fill":1380,"d":5298},"M169.385-3.276h18.494v-18.495h-18.494Z",[1373,5300,5302],{"transform":5301},"translate(182.381 42.09)",[1378,5303],{"d":5162,"fill":1375,"stroke":1375,"className":5304,"style":1462},[1389],[1378,5306],{"fill":1380,"d":5307},"M189.871-3.276h18.494v-18.495h-18.494Z",[1373,5309,5311],{"transform":5310},"translate(200.874 42.09)",[1378,5312],{"d":5172,"fill":1375,"stroke":1375,"className":5313,"style":1462},[1389],[1373,5315,5316],{"stroke":3458,"style":4352},[1378,5317],{"fill":1380,"d":5262},[1373,5319,5320],{"fill":3458,"stroke":3458},[1373,5321,5323],{"transform":5322},"translate(141.409 27.765)",[1378,5324],{"d":5072,"fill":3458,"stroke":3458,"className":5325,"style":1462},[1389],[1373,5327,5328],{"fill":3458,"stroke":3458},[1373,5329,5331],{"transform":5330},"translate(161.895 27.765)",[1378,5332],{"d":5082,"fill":3458,"stroke":3458,"className":5333,"style":1462},[1389],[1373,5335,5336],{"fill":3458,"stroke":3458},[1373,5337,5339],{"transform":5338},"translate(-1.993 27.765)",[1378,5340],{"d":5092,"fill":3458,"stroke":3458,"className":5341,"style":1462},[1389],[1373,5343,5344],{"fill":3458,"stroke":3458},[1373,5345,5347],{"transform":5346},"translate(100.437 27.765)",[1378,5348],{"d":5102,"fill":3458,"stroke":3458,"className":5349,"style":1462},[1389],[1373,5351,5352,5359,5365,5371,5377],{"stroke":1380},[1373,5353,5355],{"transform":5354},"translate(-56.529 81.598)",[1378,5356],{"d":5357,"fill":1375,"stroke":1375,"className":5358,"style":1462},"M-5.428-53.868Q-5.428-54.206-5.287-54.497Q-5.147-54.787-4.903-55.001Q-4.659-55.214-4.354-55.329Q-4.050-55.443-3.725-55.443Q-3.455-55.443-3.192-55.344Q-2.929-55.245-2.738-55.067L-2.738-56.465Q-2.738-56.735-2.845-56.797Q-2.953-56.858-3.264-56.858L-3.264-57.139L-2.187-57.214L-2.187-53.030Q-2.187-52.842-2.133-52.759Q-2.078-52.675-1.977-52.656Q-1.876-52.637-1.661-52.637L-1.661-52.357L-2.768-52.289L-2.768-52.706Q-3.185-52.289-3.811-52.289Q-4.242-52.289-4.614-52.501Q-4.987-52.712-5.207-53.073Q-5.428-53.434-5.428-53.868M-3.753-52.511Q-3.544-52.511-3.358-52.583Q-3.172-52.654-3.018-52.791Q-2.864-52.928-2.768-53.106L-2.768-54.715Q-2.854-54.862-2.999-54.982Q-3.144-55.102-3.314-55.161Q-3.483-55.221-3.664-55.221Q-4.224-55.221-4.493-54.832Q-4.761-54.442-4.761-53.861Q-4.761-53.290-4.527-52.900Q-4.293-52.511-3.753-52.511M-1.053-53.840Q-1.053-54.182-0.918-54.481Q-0.783-54.780-0.543-55.004Q-0.304-55.228 0.014-55.353Q0.332-55.478 0.663-55.478Q1.108-55.478 1.508-55.262Q1.907-55.047 2.142-54.669Q2.376-54.292 2.376-53.840Q2.376-53.499 2.234-53.215Q2.092-52.931 1.848-52.724Q1.603-52.518 1.294-52.403Q0.985-52.289 0.663-52.289Q0.233-52.289-0.169-52.490Q-0.571-52.692-0.812-53.044Q-1.053-53.396-1.053-53.840M0.663-52.538Q1.265-52.538 1.489-52.916Q1.713-53.294 1.713-53.926Q1.713-54.538 1.478-54.897Q1.244-55.255 0.663-55.255Q-0.389-55.255-0.389-53.926Q-0.389-53.294-0.164-52.916Q0.062-52.538 0.663-52.538M3.545-53.191L3.545-54.695Q3.545-54.965 3.437-55.026Q3.329-55.088 3.018-55.088L3.018-55.368L4.126-55.443L4.126-53.211L4.126-53.191Q4.126-52.911 4.177-52.767Q4.228-52.624 4.370-52.567Q4.512-52.511 4.799-52.511Q5.052-52.511 5.257-52.651Q5.462-52.791 5.578-53.017Q5.695-53.242 5.695-53.492L5.695-54.695Q5.695-54.965 5.587-55.026Q5.479-55.088 5.168-55.088L5.168-55.368L6.276-55.443L6.276-53.030Q6.276-52.839 6.329-52.757Q6.382-52.675 6.482-52.656Q6.583-52.637 6.799-52.637L6.799-52.357L5.722-52.289L5.722-52.853Q5.612-52.671 5.467-52.548Q5.322-52.425 5.136-52.357Q4.949-52.289 4.748-52.289Q3.545-52.289 3.545-53.191M8.193-52.357L7.926-52.357L7.926-56.465Q7.926-56.735 7.819-56.797Q7.711-56.858 7.400-56.858L7.400-57.139L8.480-57.214L8.480-55.044Q8.689-55.235 8.974-55.339Q9.259-55.443 9.557-55.443Q9.875-55.443 10.172-55.322Q10.469-55.201 10.692-54.985Q10.914-54.770 11.040-54.485Q11.167-54.199 11.167-53.868Q11.167-53.423 10.927-53.059Q10.688-52.695 10.295-52.492Q9.902-52.289 9.458-52.289Q9.263-52.289 9.073-52.345Q8.883-52.401 8.723-52.506Q8.562-52.610 8.422-52.771L8.193-52.357M8.508-54.702L8.508-53.085Q8.644-52.825 8.885-52.668Q9.126-52.511 9.403-52.511Q9.697-52.511 9.909-52.618Q10.121-52.726 10.254-52.918Q10.387-53.109 10.445-53.348Q10.504-53.587 10.504-53.868Q10.504-54.227 10.410-54.531Q10.316-54.835 10.088-55.028Q9.861-55.221 9.495-55.221Q9.195-55.221 8.928-55.085Q8.661-54.948 8.508-54.702M13.470-52.357L11.867-52.357L11.867-52.637Q12.093-52.637 12.242-52.671Q12.390-52.706 12.390-52.846L12.390-56.465Q12.390-56.735 12.283-56.797Q12.175-56.858 11.867-56.858L11.867-57.139L12.944-57.214L12.944-52.846Q12.944-52.709 13.094-52.673Q13.245-52.637 13.470-52.637L13.470-52.357M14.024-53.892Q14.024-54.213 14.149-54.502Q14.274-54.791 14.499-55.014Q14.725-55.238 15.020-55.358Q15.316-55.478 15.634-55.478Q15.962-55.478 16.224-55.378Q16.485-55.279 16.661-55.097Q16.837-54.914 16.931-54.656Q17.025-54.398 17.025-54.066Q17.025-53.974 16.943-53.953L14.687-53.953L14.687-53.892Q14.687-53.304 14.971-52.921Q15.255-52.538 15.822-52.538Q16.143-52.538 16.412-52.731Q16.680-52.924 16.769-53.239Q16.776-53.280 16.851-53.294L16.943-53.294Q17.025-53.270 17.025-53.198Q17.025-53.191 17.018-53.164Q16.905-52.767 16.535-52.528Q16.164-52.289 15.740-52.289Q15.302-52.289 14.903-52.497Q14.503-52.706 14.263-53.073Q14.024-53.440 14.024-53.892M14.694-54.162L16.509-54.162Q16.509-54.439 16.412-54.691Q16.314-54.944 16.116-55.100Q15.918-55.255 15.634-55.255Q15.357-55.255 15.143-55.097Q14.930-54.938 14.812-54.683Q14.694-54.428 14.694-54.162",[1389],[1373,5360,5361],{"transform":5354},[1378,5362],{"d":5363,"fill":1375,"stroke":1375,"className":5364,"style":1462},"M20.534-52.518Q20.534-52.559 20.541-52.583L21.532-56.578Q21.570-56.674 21.570-56.766Q21.570-56.858 21.136-56.858Q21.050-56.886 21.050-56.971L21.078-57.081Q21.085-57.122 21.156-57.139L22.137-57.214Q22.182-57.214 22.211-57.188Q22.240-57.163 22.240-57.111L21.690-54.883Q21.915-55.146 22.199-55.295Q22.483-55.443 22.800-55.443Q23.217-55.443 23.470-55.247Q23.723-55.050 23.723-54.654Q23.723-54.203 23.269-53.085Q23.194-52.890 23.194-52.743Q23.194-52.511 23.361-52.511Q23.638-52.511 23.831-52.788Q24.024-53.065 24.103-53.386Q24.127-53.447 24.181-53.447L24.291-53.447Q24.325-53.447 24.347-53.422Q24.369-53.396 24.369-53.365Q24.369-53.352 24.362-53.338Q24.301-53.088 24.161-52.847Q24.021-52.607 23.810-52.448Q23.600-52.289 23.347-52.289Q23.064-52.289 22.862-52.451Q22.660-52.613 22.660-52.883Q22.660-53.006 22.712-53.133Q22.917-53.652 23.048-54.057Q23.180-54.462 23.180-54.750Q23.180-54.958 23.084-55.090Q22.988-55.221 22.787-55.221Q22.366-55.221 22.052-54.934Q21.737-54.647 21.519-54.213L21.098-52.531Q21.068-52.429 20.974-52.359Q20.880-52.289 20.777-52.289Q20.678-52.289 20.606-52.352Q20.534-52.415 20.534-52.518",[1389],[1373,5366,5367],{"transform":5354},[1378,5368],{"d":5369,"fill":1375,"stroke":1375,"className":5370,"style":3486},"M27.471-51.357L25.144-51.357L25.144-51.538Q25.147-51.550 25.166-51.577L26.206-52.453Q26.514-52.712 26.668-52.856Q26.821-53 26.951-53.217Q27.080-53.435 27.080-53.676Q27.080-53.918 26.953-54.094Q26.826-54.270 26.622-54.359Q26.419-54.448 26.179-54.448Q25.972-54.448 25.776-54.360Q25.581-54.272 25.476-54.106Q25.596-54.106 25.673-54.014Q25.750-53.923 25.750-53.808Q25.750-53.681 25.663-53.592Q25.576-53.503 25.449-53.503Q25.320-53.503 25.232-53.593Q25.144-53.684 25.144-53.808Q25.144-54.089 25.317-54.288Q25.491-54.487 25.762-54.587Q26.033-54.687 26.306-54.687Q26.631-54.687 26.936-54.580Q27.241-54.472 27.438-54.245Q27.634-54.018 27.634-53.681Q27.634-53.444 27.521-53.252Q27.407-53.059 27.247-52.921Q27.087-52.783 26.805-52.595Q26.523-52.407 26.445-52.348L25.779-51.857L26.235-51.857Q26.668-51.857 26.962-51.864Q27.256-51.870 27.271-51.882Q27.349-51.980 27.405-52.341L27.634-52.341",[1389],[1373,5372,5373],{"transform":5354},[1378,5374],{"d":5375,"fill":1375,"stroke":1375,"className":5376,"style":1462},"M34.075-53.164L29.242-53.164Q29.174-53.174 29.128-53.220Q29.082-53.266 29.082-53.338Q29.082-53.403 29.128-53.449Q29.174-53.495 29.242-53.505L34.075-53.505Q34.144-53.495 34.190-53.449Q34.236-53.403 34.236-53.338Q34.236-53.266 34.190-53.220Q34.144-53.174 34.075-53.164M34.075-54.702L29.242-54.702Q29.174-54.712 29.128-54.758Q29.082-54.804 29.082-54.876Q29.082-55.020 29.242-55.044L34.075-55.044Q34.236-55.020 34.236-54.876Q34.236-54.804 34.190-54.758Q34.144-54.712 34.075-54.702",[1389],[1373,5378,5379],{"transform":5354},[1378,5380],{"d":5381,"fill":1375,"stroke":1375,"className":5382,"style":1462},"M35.528-52.904Q35.648-52.747 35.839-52.648Q36.031-52.548 36.246-52.509Q36.461-52.470 36.684-52.470Q36.981-52.470 37.176-52.625Q37.371-52.781 37.461-53.035Q37.552-53.290 37.552-53.574Q37.552-53.868 37.460-54.119Q37.367-54.370 37.169-54.526Q36.971-54.681 36.677-54.681L36.161-54.681Q36.133-54.681 36.108-54.707Q36.082-54.732 36.082-54.756L36.082-54.828Q36.082-54.859 36.108-54.881Q36.133-54.903 36.161-54.903L36.602-54.934Q36.964-54.934 37.184-55.291Q37.405-55.649 37.405-56.038Q37.405-56.366 37.210-56.570Q37.015-56.773 36.684-56.773Q36.397-56.773 36.144-56.689Q35.891-56.606 35.727-56.418Q35.874-56.418 35.974-56.303Q36.075-56.189 36.075-56.038Q36.075-55.888 35.969-55.778Q35.863-55.669 35.706-55.669Q35.545-55.669 35.436-55.778Q35.327-55.888 35.327-56.038Q35.327-56.363 35.535-56.582Q35.744-56.800 36.060-56.903Q36.376-57.005 36.684-57.005Q37.002-57.005 37.330-56.901Q37.658-56.797 37.885-56.575Q38.112-56.353 38.112-56.038Q38.112-55.604 37.825-55.279Q37.538-54.955 37.104-54.808Q37.415-54.743 37.695-54.577Q37.976-54.411 38.153-54.153Q38.331-53.895 38.331-53.574Q38.331-53.164 38.087-52.854Q37.842-52.545 37.461-52.381Q37.080-52.217 36.684-52.217Q36.315-52.217 35.957-52.330Q35.600-52.442 35.356-52.692Q35.111-52.941 35.111-53.311Q35.111-53.482 35.228-53.594Q35.344-53.707 35.515-53.707Q35.624-53.707 35.715-53.656Q35.805-53.605 35.860-53.512Q35.915-53.420 35.915-53.311Q35.915-53.143 35.802-53.024Q35.689-52.904 35.528-52.904",[1389],[1378,5384],{"fill":4143,"stroke":1380,"d":5385},"M-14.989 36.558V18.064H3.505v18.494ZM128.413 36.558V18.064h18.494v18.494ZM148.9 36.558V18.064h18.493v18.494ZM189.871 36.558V18.064h18.494v18.494Zm18.494-18.494",[1378,5387],{"fill":1443,"stroke":1380,"d":5388},"M25.983 36.558V18.064h18.494v18.494Zm18.494-18.494",[1378,5390],{"fill":1380,"d":5391},"M-14.989 36.558H3.505V18.063h-18.494Z",[1373,5393,5395],{"transform":5394},"translate(-1.993 81.923)",[1378,5396],{"d":5072,"fill":1375,"stroke":1375,"className":5397,"style":1462},[1389],[1378,5399],{"fill":1380,"d":5400},"M5.497 36.558h18.494V18.063H5.497Z",[1373,5402,5404],{"transform":5403},"translate(18.493 81.923)",[1378,5405],{"d":5082,"fill":1375,"stroke":1375,"className":5406,"style":1462},[1389],[1378,5408],{"fill":1380,"d":5409},"M25.983 36.558h18.494V18.063H25.983Z",[1373,5411,5413],{"transform":5412},"translate(38.979 81.923)",[1378,5414],{"d":5092,"fill":1375,"stroke":1375,"className":5415,"style":1462},[1389],[1378,5417],{"fill":1380,"d":5418},"M46.47 36.558h18.493V18.063H46.47Z",[1373,5420,5422],{"transform":5421},"translate(59.465 81.923)",[1378,5423],{"d":5102,"fill":1375,"stroke":1375,"className":5424,"style":1462},[1389],[1378,5426],{"fill":1380,"d":5427},"M66.955 36.558H85.45V18.063H66.955Z",[1373,5429,5431],{"transform":5430},"translate(79.951 81.923)",[1378,5432],{"d":5112,"fill":1375,"stroke":1375,"className":5433,"style":1462},[1389],[1378,5435],{"fill":1380,"d":5436},"M87.441 36.558h18.494V18.063H87.441Z",[1373,5438,5440],{"transform":5439},"translate(100.437 81.923)",[1378,5441],{"d":5122,"fill":1375,"stroke":1375,"className":5442,"style":1462},[1389],[1378,5444],{"fill":1380,"d":5445},"M107.927 36.558h18.494V18.063h-18.494Z",[1373,5447,5449],{"transform":5448},"translate(120.923 81.923)",[1378,5450],{"d":5132,"fill":1375,"stroke":1375,"className":5451,"style":1462},[1389],[1378,5453],{"fill":1380,"d":5454},"M128.413 36.558h18.494V18.063h-18.494Z",[1373,5456,5458],{"transform":5457},"translate(141.409 81.923)",[1378,5459],{"d":5142,"fill":1375,"stroke":1375,"className":5460,"style":1462},[1389],[1378,5462],{"fill":1380,"d":5463},"M148.9 36.558h18.493V18.063H148.9Z",[1373,5465,5467],{"transform":5466},"translate(161.895 81.923)",[1378,5468],{"d":5152,"fill":1375,"stroke":1375,"className":5469,"style":1462},[1389],[1378,5471],{"fill":1380,"d":5472},"M169.385 36.558h18.494V18.063h-18.494Z",[1373,5474,5476],{"transform":5475},"translate(182.381 81.923)",[1378,5477],{"d":5162,"fill":1375,"stroke":1375,"className":5478,"style":1462},[1389],[1378,5480],{"fill":1380,"d":5481},"M189.871 36.558h18.494V18.063h-18.494Z",[1373,5483,5485],{"transform":5484},"translate(200.874 81.923)",[1378,5486],{"d":5172,"fill":1375,"stroke":1375,"className":5487,"style":1462},[1389],[1373,5489,5490],{"stroke":3458,"style":4352},[1378,5491],{"fill":1380,"d":5409},[1373,5493,5494],{"fill":3458,"stroke":3458},[1373,5495,5497],{"transform":5496},"translate(141.409 67.6)",[1378,5498],{"d":5072,"fill":3458,"stroke":3458,"className":5499,"style":1462},[1389],[1373,5501,5502],{"fill":3458,"stroke":3458},[1373,5503,5505],{"transform":5504},"translate(202.867 67.6)",[1378,5506],{"d":5082,"fill":3458,"stroke":3458,"className":5507,"style":1462},[1389],[1373,5509,5510],{"fill":3458,"stroke":3458},[1373,5511,5513],{"transform":5512},"translate(38.979 67.6)",[1378,5514],{"d":5092,"fill":3458,"stroke":3458,"className":5515,"style":1462},[1389],[1595,5517,5519,5520,5591,5592,5626,5627,5677,5678,5721,5722,5740,5741,5756,5757,5740,5798,5813,5814,5740,5893,5908],{"className":5518},[1598],"Three probe sequences from ",[404,5521,5523],{"className":5522},[407],[404,5524,5526,5582],{"className":5525,"ariaHidden":412},[411],[404,5527,5529,5532,5564,5567,5570,5573,5576,5579],{"className":5528},[416],[404,5530],{"className":5531,"style":3951},[420],[404,5533,5535,5538],{"className":5534},[425],[404,5536,990],{"className":5537},[425,426],[404,5539,5541],{"className":5540},[871],[404,5542,5544],{"className":5543},[875],[404,5545,5547],{"className":5546},[879],[404,5548,5550],{"className":5549,"style":3973},[883],[404,5551,5552,5555],{"style":886},[404,5553],{"className":5554,"style":891},[890],[404,5556,5558],{"className":5557},[895,896,897,898],[404,5559,5561],{"className":5560},[425,898],[404,5562,3988],{"className":5563},[425,898],[404,5565,433],{"className":5566},[432],[404,5568,731],{"className":5569,"style":730},[425,426],[404,5571,457],{"className":5572},[456],[404,5574],{"className":5575,"style":580},[447],[404,5577,585],{"className":5578},[584],[404,5580],{"className":5581,"style":580},[447],[404,5583,5585,5588],{"className":5584},[416],[404,5586],{"className":5587,"style":842},[420],[404,5589,3325],{"className":5590},[425]," in a table of size ",[404,5593,5595],{"className":5594},[407],[404,5596,5598,5616],{"className":5597,"ariaHidden":412},[411],[404,5599,5601,5604,5607,5610,5613],{"className":5600},[416],[404,5602],{"className":5603,"style":1243},[420],[404,5605,640],{"className":5606},[425,426],[404,5608],{"className":5609,"style":580},[447],[404,5611,585],{"className":5612},[584],[404,5614],{"className":5615,"style":580},[447],[404,5617,5619,5622],{"className":5618},[416],[404,5620],{"className":5621,"style":842},[420],[404,5623,5625],{"className":5624},[425],"11"," with slots ",[404,5628,5630],{"className":5629},[407],[404,5631,5633],{"className":5632,"ariaHidden":412},[411],[404,5634,5636,5639,5642,5645,5648,5651,5654,5657,5660,5664,5667,5670,5674],{"className":5635},[416],[404,5637],{"className":5638,"style":421},[420],[404,5640,604],{"className":5641},[432],[404,5643,608],{"className":5644},[425],[404,5646,535],{"className":5647},[534],[404,5649],{"className":5650,"style":448},[447],[404,5652,3325],{"className":5653},[425],[404,5655,535],{"className":5656},[534],[404,5658],{"className":5659,"style":448},[447],[404,5661,5663],{"className":5662},[425],"8",[404,5665,535],{"className":5666},[534],[404,5668],{"className":5669,"style":448},[447],[404,5671,5673],{"className":5672},[425],"10",[404,5675,659],{"className":5676},[456]," occupied (shaded). Labels ",[404,5679,5681],{"className":5680},[407],[404,5682,5684],{"className":5683,"ariaHidden":412},[411],[404,5685,5687,5691,5694,5697,5700,5703,5706,5709,5712,5715,5718],{"className":5686},[416],[404,5688],{"className":5689,"style":5690},[420],"height:0.8389em;vertical-align:-0.1944em;",[404,5692,608],{"className":5693},[425],[404,5695,535],{"className":5696},[534],[404,5698],{"className":5699,"style":448},[447],[404,5701,488],{"className":5702},[425],[404,5704,535],{"className":5705},[534],[404,5707],{"className":5708,"style":448},[447],[404,5710,867],{"className":5711},[425],[404,5713,535],{"className":5714},[534],[404,5716],{"className":5717,"style":448},[447],[404,5719,627],{"className":5720},[598]," give probe order; the boxed slot is where the key lands. Linear walks ",[404,5723,5725],{"className":5724},[407],[404,5726,5728],{"className":5727,"ariaHidden":412},[411],[404,5729,5731,5734,5737],{"className":5730},[416],[404,5732],{"className":5733,"style":2404},[420],[404,5735,2240],{"className":5736},[425],[404,5738,488],{"className":5739},[425]," (lands ",[404,5742,5744],{"className":5743},[407],[404,5745,5747],{"className":5746,"ariaHidden":412},[411],[404,5748,5750,5753],{"className":5749},[416],[404,5751],{"className":5752,"style":842},[420],[404,5754,1807],{"className":5755},[425],"); quadratic adds ",[404,5758,5760],{"className":5759},[407],[404,5761,5763],{"className":5762,"ariaHidden":412},[411],[404,5764,5766,5769],{"className":5765},[416],[404,5767],{"className":5768,"style":860},[420],[404,5770,5772,5775],{"className":5771},[425],[404,5773,2900],{"className":5774},[425,426],[404,5776,5778],{"className":5777},[871],[404,5779,5781],{"className":5780},[875],[404,5782,5784],{"className":5783},[879],[404,5785,5787],{"className":5786,"style":860},[883],[404,5788,5789,5792],{"style":886},[404,5790],{"className":5791,"style":891},[890],[404,5793,5795],{"className":5794},[895,896,897,898],[404,5796,867],{"className":5797},[425,898],[404,5799,5801],{"className":5800},[407],[404,5802,5804],{"className":5803,"ariaHidden":412},[411],[404,5805,5807,5810],{"className":5806},[416],[404,5808],{"className":5809,"style":842},[420],[404,5811,1753],{"className":5812},[425],"); double hashing steps by ",[404,5815,5817],{"className":5816},[407],[404,5818,5820,5884],{"className":5819,"ariaHidden":412},[411],[404,5821,5823,5826,5866,5869,5872,5875,5878,5881],{"className":5822},[416],[404,5824],{"className":5825,"style":421},[420],[404,5827,5829,5832],{"className":5828},[425],[404,5830,990],{"className":5831},[425,426],[404,5833,5835],{"className":5834},[871],[404,5836,5838,5858],{"className":5837},[875,1678],[404,5839,5841,5855],{"className":5840},[879],[404,5842,5844],{"className":5843,"style":1685},[883],[404,5845,5846,5849],{"style":4628},[404,5847],{"className":5848,"style":891},[890],[404,5850,5852],{"className":5851},[895,896,897,898],[404,5853,867],{"className":5854},[425,898],[404,5856,1702],{"className":5857},[1701],[404,5859,5861],{"className":5860},[879],[404,5862,5864],{"className":5863,"style":1709},[883],[404,5865],{},[404,5867,433],{"className":5868},[432],[404,5870,731],{"className":5871,"style":730},[425,426],[404,5873,457],{"className":5874},[456],[404,5876],{"className":5877,"style":580},[447],[404,5879,585],{"className":5880},[584],[404,5882],{"className":5883,"style":580},[447],[404,5885,5887,5890],{"className":5886},[416],[404,5888],{"className":5889,"style":842},[420],[404,5891,1634],{"className":5892},[425],[404,5894,5896],{"className":5895},[407],[404,5897,5899],{"className":5898,"ariaHidden":412},[411],[404,5900,5902,5905],{"className":5901},[416],[404,5903],{"className":5904,"style":842},[420],[404,5906,867],{"className":5907},[425],").",[1934,5910,5912],{"id":5911},"cost-of-open-addressing","Cost of open addressing",[381,5914,5915,5916,5974],{},"Under the uniform-hashing assumption, with load factor ",[404,5917,5919],{"className":5918},[407],[404,5920,5922,5940,5965],{"className":5921,"ariaHidden":412},[411],[404,5923,5925,5928,5931,5934,5937],{"className":5924},[416],[404,5926],{"className":5927,"style":1243},[420],[404,5929,1992],{"className":5930,"style":1991},[425,426],[404,5932],{"className":5933,"style":580},[447],[404,5935,585],{"className":5936},[584],[404,5938],{"className":5939,"style":580},[447],[404,5941,5943,5946,5949,5952,5955,5958,5962],{"className":5942},[416],[404,5944],{"className":5945,"style":421},[420],[404,5947,452],{"className":5948},[425,426],[404,5950,2451],{"className":5951},[425],[404,5953,640],{"className":5954},[425,426],[404,5956],{"className":5957,"style":580},[447],[404,5959,5961],{"className":5960},[584],"\u003C",[404,5963],{"className":5964,"style":580},[447],[404,5966,5968,5971],{"className":5967},[416],[404,5969],{"className":5970,"style":842},[420],[404,5972,488],{"className":5973},[425],", the\nexpected number of probes is",[404,5976,5978],{"className":5977},[974],[404,5979,5981],{"className":5980},[407],[404,5982,5984],{"className":5983,"ariaHidden":412},[411],[404,5985,5987,5991,5998,6002,6078,6081,6085,6088,6095,6098,6160,6163,6170,6173,6247],{"className":5986},[416],[404,5988],{"className":5989,"style":5990},[420],"height:2.0908em;vertical-align:-0.7693em;",[404,5992,5994],{"className":5993},[425,3808],[404,5995,5997],{"className":5996},[425],"unsuccessful search:",[404,5999],{"className":6000,"style":6001},[447],"margin-right:1em;",[404,6003,6005,6008,6075],{"className":6004},[425],[404,6006],{"className":6007},[432,2015],[404,6009,6011],{"className":6010},[2019],[404,6012,6014,6066],{"className":6013},[875,1678],[404,6015,6017,6063],{"className":6016},[879],[404,6018,6021,6044,6052],{"className":6019,"style":6020},[883],"height:1.3214em;",[404,6022,6023,6026],{"style":2032},[404,6024],{"className":6025,"style":2036},[890],[404,6027,6029,6032,6035,6038,6041],{"className":6028},[425],[404,6030,488],{"className":6031},[425],[404,6033],{"className":6034,"style":644},[447],[404,6036,649],{"className":6037},[648],[404,6039],{"className":6040,"style":644},[447],[404,6042,1992],{"className":6043,"style":1991},[425,426],[404,6045,6046,6049],{"style":2045},[404,6047],{"className":6048,"style":2036},[890],[404,6050],{"className":6051,"style":2053},[2052],[404,6053,6054,6057],{"style":2056},[404,6055],{"className":6056,"style":2036},[890],[404,6058,6060],{"className":6059},[425],[404,6061,488],{"className":6062},[425],[404,6064,1702],{"className":6065},[1701],[404,6067,6069],{"className":6068},[879],[404,6070,6073],{"className":6071,"style":6072},[883],"height:0.7693em;",[404,6074],{},[404,6076],{"className":6077},[456,2015],[404,6079,535],{"className":6080},[534],[404,6082],{"className":6083,"style":6084},[447],"margin-right:2em;",[404,6086],{"className":6087,"style":448},[447],[404,6089,6091],{"className":6090},[425,3808],[404,6092,6094],{"className":6093},[425],"successful search:",[404,6096],{"className":6097,"style":6001},[447],[404,6099,6101,6104,6157],{"className":6100},[425],[404,6102],{"className":6103},[432,2015],[404,6105,6107],{"className":6106},[2019],[404,6108,6110,6149],{"className":6109},[875,1678],[404,6111,6113,6146],{"className":6112},[879],[404,6114,6116,6127,6135],{"className":6115,"style":6020},[883],[404,6117,6118,6121],{"style":2032},[404,6119],{"className":6120,"style":2036},[890],[404,6122,6124],{"className":6123},[425],[404,6125,1992],{"className":6126,"style":1991},[425,426],[404,6128,6129,6132],{"style":2045},[404,6130],{"className":6131,"style":2036},[890],[404,6133],{"className":6134,"style":2053},[2052],[404,6136,6137,6140],{"style":2056},[404,6138],{"className":6139,"style":2036},[890],[404,6141,6143],{"className":6142},[425],[404,6144,488],{"className":6145},[425],[404,6147,1702],{"className":6148},[1701],[404,6150,6152],{"className":6151},[879],[404,6153,6155],{"className":6154,"style":2075},[883],[404,6156],{},[404,6158],{"className":6159},[456,2015],[404,6161],{"className":6162,"style":448},[447],[404,6164,6166],{"className":6165},[437],[404,6167,6169],{"className":6168},[425,441],"ln",[404,6171],{"className":6172,"style":448},[447],[404,6174,6176,6179,6244],{"className":6175},[425],[404,6177],{"className":6178},[432,2015],[404,6180,6182],{"className":6181},[2019],[404,6183,6185,6236],{"className":6184},[875,1678],[404,6186,6188,6233],{"className":6187},[879],[404,6189,6191,6214,6222],{"className":6190,"style":6020},[883],[404,6192,6193,6196],{"style":2032},[404,6194],{"className":6195,"style":2036},[890],[404,6197,6199,6202,6205,6208,6211],{"className":6198},[425],[404,6200,488],{"className":6201},[425],[404,6203],{"className":6204,"style":644},[447],[404,6206,649],{"className":6207},[648],[404,6209],{"className":6210,"style":644},[447],[404,6212,1992],{"className":6213,"style":1991},[425,426],[404,6215,6216,6219],{"style":2045},[404,6217],{"className":6218,"style":2036},[890],[404,6220],{"className":6221,"style":2053},[2052],[404,6223,6224,6227],{"style":2056},[404,6225],{"className":6226,"style":2036},[890],[404,6228,6230],{"className":6229},[425],[404,6231,488],{"className":6232},[425],[404,6234,1702],{"className":6235},[1701],[404,6237,6239],{"className":6238},[879],[404,6240,6242],{"className":6241,"style":6072},[883],[404,6243],{},[404,6245],{"className":6246},[456,2015],[404,6248,1086],{"className":6249},[425],[381,6251,6252,6253,6296,6297,6331,6332,6347,6348,6382,6383,6416,6417,6432,6433,1086],{},"The shape of ",[404,6254,6256],{"className":6255},[407],[404,6257,6259,6284],{"className":6258,"ariaHidden":412},[411],[404,6260,6262,6265,6269,6272,6275,6278,6281],{"className":6261},[416],[404,6263],{"className":6264,"style":421},[420],[404,6266,6268],{"className":6267},[425],"1\u002F",[404,6270,433],{"className":6271},[432],[404,6273,488],{"className":6274},[425],[404,6276],{"className":6277,"style":644},[447],[404,6279,649],{"className":6280},[648],[404,6282],{"className":6283,"style":644},[447],[404,6285,6287,6290,6293],{"className":6286},[416],[404,6288],{"className":6289,"style":421},[420],[404,6291,1992],{"className":6292,"style":1991},[425,426],[404,6294,457],{"className":6295},[456]," is the whole story: at ",[404,6298,6300],{"className":6299},[407],[404,6301,6303,6321],{"className":6302,"ariaHidden":412},[411],[404,6304,6306,6309,6312,6315,6318],{"className":6305},[416],[404,6307],{"className":6308,"style":1243},[420],[404,6310,1992],{"className":6311,"style":1991},[425,426],[404,6313],{"className":6314,"style":580},[447],[404,6316,585],{"className":6317},[584],[404,6319],{"className":6320,"style":580},[447],[404,6322,6324,6327],{"className":6323},[416],[404,6325],{"className":6326,"style":842},[420],[404,6328,6330],{"className":6329},[425],"0.5"," we expect ",[404,6333,6335],{"className":6334},[407],[404,6336,6338],{"className":6337,"ariaHidden":412},[411],[404,6339,6341,6344],{"className":6340},[416],[404,6342],{"className":6343,"style":842},[420],[404,6345,867],{"className":6346},[425],"\nprobes; at ",[404,6349,6351],{"className":6350},[407],[404,6352,6354,6372],{"className":6353,"ariaHidden":412},[411],[404,6355,6357,6360,6363,6366,6369],{"className":6356},[416],[404,6358],{"className":6359,"style":1243},[420],[404,6361,1992],{"className":6362,"style":1991},[425,426],[404,6364],{"className":6365,"style":580},[447],[404,6367,585],{"className":6368},[584],[404,6370],{"className":6371,"style":580},[447],[404,6373,6375,6378],{"className":6374},[416],[404,6376],{"className":6377,"style":842},[420],[404,6379,6381],{"className":6380},[425],"0.9",", ten probes; as ",[404,6384,6386],{"className":6385},[407],[404,6387,6389,6407],{"className":6388,"ariaHidden":412},[411],[404,6390,6392,6395,6398,6401,6404],{"className":6391},[416],[404,6393],{"className":6394,"style":1243},[420],[404,6396,1992],{"className":6397,"style":1991},[425,426],[404,6399],{"className":6400,"style":580},[447],[404,6402,1016],{"className":6403},[584],[404,6405],{"className":6406,"style":580},[447],[404,6408,6410,6413],{"className":6409},[416],[404,6411],{"className":6412,"style":842},[420],[404,6414,488],{"className":6415},[425]," the cost explodes. Open\naddressing is fast only when the table is kept comfortably below full; a\npractical rule of thumb is to resize once ",[404,6418,6420],{"className":6419},[407],[404,6421,6423],{"className":6422,"ariaHidden":412},[411],[404,6424,6426,6429],{"className":6425},[416],[404,6427],{"className":6428,"style":1243},[420],[404,6430,1992],{"className":6431,"style":1991},[425,426]," exceeds about ",[404,6434,6436],{"className":6435},[407],[404,6437,6439],{"className":6438,"ariaHidden":412},[411],[404,6440,6442,6445],{"className":6441},[416],[404,6443],{"className":6444,"style":842},[420],[404,6446,6448],{"className":6447},[425],"0.7",[1360,6450,6452,6641],{"className":6451},[1363,1364],[1366,6453,6457],{"xmlns":1368,"width":6454,"height":6455,"viewBox":6456},"362.112","207.168","-75 -75 271.584 155.376",[1373,6458,6459,6462,6465,6472,6475,6478,6494,6501,6521,6528,6531,6538,6541,6548,6551,6558,6562,6603,6606,6638],{"stroke":1375,"style":1376},[1378,6460],{"fill":1380,"d":6461},"M-29.754 62.766h207.128",[1378,6463],{"stroke":1380,"d":6464},"m179.374 62.766-3.2-1.6 1.2 1.6-1.2 1.6",[1373,6466,6468],{"transform":6467},"translate(212.661 1.937)",[1378,6469],{"d":6470,"fill":1375,"stroke":1375,"className":6471,"style":3357},"M-27.882 62.867Q-28.313 62.867-28.658 62.665Q-29.003 62.463-29.194 62.107Q-29.385 61.751-29.385 61.325Q-29.385 60.863-29.183 60.406Q-28.981 59.949-28.625 59.580Q-28.269 59.211-27.825 59Q-27.381 58.789-26.911 58.789Q-26.555 58.789-26.258 58.923Q-25.962 59.057-25.755 59.294Q-25.548 59.532-25.436 59.848Q-25.324 60.164-25.324 60.507L-25.316 61.074Q-25.025 60.679-24.812 60.228Q-24.599 59.778-24.481 59.312Q-24.463 59.228-24.388 59.228L-24.283 59.228Q-24.191 59.228-24.191 59.347Q-24.494 60.556-25.307 61.505Q-25.307 62.603-25.039 62.603Q-24.858 62.603-24.757 62.509Q-24.656 62.414-24.577 62.274Q-24.498 62.133-24.463 62.129L-24.353 62.129Q-24.265 62.129-24.265 62.243Q-24.331 62.502-24.560 62.685Q-24.788 62.867-25.056 62.867Q-25.390 62.867-25.610 62.661Q-25.830 62.454-25.931 62.107Q-26.370 62.467-26.869 62.667Q-27.368 62.867-27.882 62.867M-27.864 62.603Q-26.898 62.603-25.983 61.821Q-25.992 61.760-25.992 61.623L-26.010 60.661Q-26.010 60.037-26.205 59.543Q-26.401 59.048-26.928 59.048Q-27.460 59.048-27.856 59.477Q-28.251 59.905-28.458 60.525Q-28.664 61.144-28.664 61.659Q-28.664 61.909-28.574 62.129Q-28.484 62.349-28.304 62.476Q-28.124 62.603-27.864 62.603",[1389],[1378,6473],{"fill":1380,"d":6474},"M-29.754 62.766V-66.685",[1378,6476],{"stroke":1380,"d":6477},"m-29.754-68.685-1.6 3.2 1.6-1.2 1.6 1.2",[1373,6479,6481,6488],{"stroke":1380,"fontFamily":6480,"fontSize":1807},"cmr9",[1373,6482,6484],{"transform":6483},"translate(-13.27 -136.734)",[1378,6485],{"d":6486,"fill":1375,"stroke":1375,"className":6487,"style":3357},"M-27.416 64.511L-29.504 64.511L-29.504 64.199Q-29.192 64.199-29 64.148Q-28.809 64.098-28.809 63.900L-28.809 59.562Q-28.809 59.321-28.983 59.261Q-29.156 59.202-29.504 59.202L-29.504 58.886L-28.132 58.789L-28.132 59.329Q-27.873 59.061-27.539 58.925Q-27.205 58.789-26.836 58.789Q-26.436 58.789-26.080 58.956Q-25.724 59.123-25.469 59.404Q-25.214 59.685-25.072 60.050Q-24.929 60.415-24.929 60.824Q-24.929 61.386-25.206 61.852Q-25.483 62.318-25.957 62.592Q-26.432 62.867-26.981 62.867Q-27.293 62.867-27.583 62.733Q-27.873 62.599-28.106 62.353L-28.106 63.900Q-28.106 64.098-27.915 64.148Q-27.724 64.199-27.416 64.199L-27.416 64.511M-28.106 59.743L-28.106 61.874Q-27.948 62.199-27.664 62.401Q-27.381 62.603-27.038 62.603Q-26.625 62.603-26.331 62.327Q-26.036 62.050-25.889 61.632Q-25.742 61.215-25.742 60.824Q-25.742 60.446-25.876 60.037Q-26.010 59.628-26.285 59.351Q-26.559 59.075-26.937 59.075Q-27.179 59.075-27.394 59.151Q-27.609 59.228-27.801 59.389Q-27.992 59.549-28.106 59.743M-22.134 62.766L-24.366 62.766L-24.366 62.450Q-24.054 62.450-23.863 62.397Q-23.672 62.344-23.672 62.155L-23.672 59.707Q-23.672 59.466-23.742 59.358Q-23.813 59.250-23.947 59.226Q-24.081 59.202-24.366 59.202L-24.366 58.886L-23.052 58.789L-23.052 59.650Q-22.890 59.259-22.622 59.024Q-22.354 58.789-21.962 58.789Q-21.690 58.789-21.475 58.952Q-21.259 59.114-21.259 59.373Q-21.259 59.549-21.378 59.668Q-21.497 59.787-21.672 59.787Q-21.853 59.787-21.971 59.668Q-22.090 59.549-22.090 59.373Q-22.090 59.158-21.936 59.048L-21.954 59.048Q-22.332 59.048-22.565 59.310Q-22.797 59.571-22.896 59.958Q-22.995 60.345-22.995 60.705L-22.995 62.155Q-22.995 62.344-22.738 62.397Q-22.481 62.450-22.134 62.450L-22.134 62.766M-20.741 60.859Q-20.741 60.292-20.468 59.804Q-20.196 59.316-19.726 59.024Q-19.255 58.732-18.689 58.732Q-18.267 58.732-17.891 58.901Q-17.515 59.070-17.238 59.362Q-16.962 59.655-16.803 60.050Q-16.645 60.446-16.645 60.859Q-16.645 61.408-16.924 61.870Q-17.203 62.331-17.671 62.599Q-18.139 62.867-18.689 62.867Q-19.242 62.867-19.712 62.599Q-20.183 62.331-20.462 61.870Q-20.741 61.408-20.741 60.859M-18.689 62.577Q-18.192 62.577-17.915 62.316Q-17.638 62.054-17.546 61.650Q-17.454 61.245-17.454 60.749Q-17.454 60.274-17.553 59.885Q-17.651 59.496-17.924 59.246Q-18.196 58.995-18.689 58.995Q-19.400 58.995-19.664 59.490Q-19.928 59.984-19.928 60.749Q-19.928 61.549-19.673 62.063Q-19.418 62.577-18.689 62.577M-15.147 62.766L-15.437 62.766L-15.437 57.440Q-15.437 57.198-15.507 57.090Q-15.577 56.983-15.711 56.959Q-15.845 56.934-16.131 56.934L-16.131 56.618L-14.760 56.521L-14.760 59.321Q-14.514 59.070-14.180 58.930Q-13.846 58.789-13.494 58.789Q-13.094 58.789-12.732 58.952Q-12.369 59.114-12.112 59.393Q-11.855 59.672-11.706 60.050Q-11.556 60.428-11.556 60.824Q-11.556 61.386-11.833 61.852Q-12.110 62.318-12.585 62.592Q-13.059 62.867-13.608 62.867Q-13.973 62.867-14.294 62.698Q-14.615 62.529-14.835 62.234L-15.147 62.766M-14.733 59.734L-14.733 61.865Q-14.575 62.199-14.292 62.401Q-14.008 62.603-13.666 62.603Q-12.976 62.603-12.672 62.083Q-12.369 61.562-12.369 60.824Q-12.369 60.099-12.635 59.573Q-12.901 59.048-13.565 59.048Q-13.925 59.048-14.239 59.233Q-14.553 59.417-14.733 59.734",[1389],[1373,6489,6490],{"transform":6483},[1378,6491],{"d":6492,"fill":1375,"stroke":1375,"className":6493,"style":3357},"M-8.665 62.867Q-9.224 62.867-9.696 62.584Q-10.168 62.300-10.443 61.823Q-10.718 61.347-10.718 60.793Q-10.718 60.397-10.575 60.022Q-10.432 59.646-10.175 59.358Q-9.918 59.070-9.560 58.901Q-9.202 58.732-8.797 58.732Q-8.252 58.732-7.881 58.969Q-7.510 59.206-7.323 59.624Q-7.136 60.041-7.136 60.578Q-7.136 60.630-7.160 60.668Q-7.185 60.705-7.233 60.705L-9.905 60.705L-9.905 60.784Q-9.905 61.531-9.593 62.054Q-9.281 62.577-8.582 62.577Q-8.178 62.577-7.857 62.320Q-7.536 62.063-7.413 61.659Q-7.395 61.579-7.312 61.579L-7.233 61.579Q-7.193 61.579-7.165 61.610Q-7.136 61.641-7.136 61.685L-7.136 61.720Q-7.242 62.063-7.464 62.322Q-7.685 62.581-8 62.724Q-8.314 62.867-8.665 62.867M-9.896 60.454L-7.782 60.454Q-7.782 60.186-7.835 59.940Q-7.888 59.694-8.008 59.472Q-8.129 59.250-8.327 59.123Q-8.525 58.995-8.797 58.995Q-9.140 58.995-9.393 59.220Q-9.645 59.444-9.771 59.782Q-9.896 60.120-9.896 60.454M-6.556 62.784L-6.556 61.342Q-6.556 61.311-6.528 61.287Q-6.499 61.263-6.468 61.263L-6.358 61.263Q-6.323 61.263-6.301 61.285Q-6.279 61.307-6.270 61.342Q-6.011 62.603-5.044 62.603Q-4.618 62.603-4.324 62.419Q-4.029 62.234-4.029 61.830Q-4.029 61.536-4.260 61.340Q-4.491 61.144-4.803 61.083L-5.405 60.964Q-5.871 60.876-6.213 60.593Q-6.556 60.309-6.556 59.870Q-6.556 59.277-6.119 59.004Q-5.682 58.732-5.044 58.732Q-4.565 58.732-4.218 58.978L-3.968 58.754Q-3.911 58.732-3.911 58.732L-3.858 58.732Q-3.831 58.732-3.799 58.758Q-3.766 58.785-3.766 58.815L-3.766 59.975Q-3.766 60.006-3.801 60.033Q-3.836 60.059-3.858 60.059L-3.968 60.059Q-3.990 60.059-4.023 60.030Q-4.056 60.002-4.056 59.975Q-4.056 59.510-4.321 59.239Q-4.587 58.969-5.053 58.969Q-5.457 58.969-5.761 59.114Q-6.064 59.259-6.064 59.615Q-6.064 59.861-5.846 60.015Q-5.629 60.169-5.352 60.226L-4.724 60.353Q-4.407 60.415-4.137 60.582Q-3.867 60.749-3.700 61.015Q-3.533 61.281-3.533 61.597Q-3.533 62.239-3.959 62.553Q-4.385 62.867-5.044 62.867Q-5.317 62.867-5.583 62.773Q-5.849 62.678-6.029 62.489L-6.350 62.828Q-6.367 62.867-6.415 62.867L-6.468 62.867Q-6.490 62.867-6.523 62.839Q-6.556 62.810-6.556 62.784",[1389],[1373,6495,6497],{"transform":6496},"translate(-1.993 8.044)",[1378,6498],{"d":6499,"fill":1375,"stroke":1375,"className":6500,"style":1462},"M-27.765 62.906Q-28.400 62.906-28.764 62.561Q-29.129 62.216-29.264 61.691Q-29.399 61.166-29.399 60.541Q-29.399 59.516-29.043 58.817Q-28.688 58.118-27.765 58.118Q-26.838 58.118-26.486 58.817Q-26.134 59.516-26.134 60.541Q-26.134 61.166-26.269 61.691Q-26.404 62.216-26.767 62.561Q-27.129 62.906-27.765 62.906M-27.765 62.681Q-27.327 62.681-27.114 62.306Q-26.900 61.932-26.850 61.465Q-26.801 60.999-26.801 60.421Q-26.801 59.868-26.850 59.440Q-26.900 59.013-27.112 58.678Q-27.324 58.343-27.765 58.343Q-28.107 58.343-28.310 58.550Q-28.513 58.757-28.600 59.069Q-28.688 59.382-28.710 59.698Q-28.732 60.015-28.732 60.421Q-28.732 60.838-28.710 61.180Q-28.688 61.522-28.599 61.870Q-28.510 62.219-28.305 62.450Q-28.100 62.681-27.765 62.681",[1389],[1373,6502,6503,6509,6515],{"stroke":1380,"fontSize":3325},[1373,6504,6506],{"transform":6505},"translate(94.411 8.044)",[1378,6507],{"d":6499,"fill":1375,"stroke":1375,"className":6508,"style":1462},[1389],[1373,6510,6511],{"transform":6505},[1378,6512],{"d":6513,"fill":1375,"stroke":1375,"className":6514,"style":1462},"M-24.999 62.346Q-24.999 62.178-24.872 62.055Q-24.746 61.932-24.579 61.932Q-24.411 61.932-24.288 62.055Q-24.165 62.178-24.165 62.346Q-24.165 62.520-24.288 62.643Q-24.411 62.766-24.579 62.766Q-24.746 62.766-24.872 62.643Q-24.999 62.520-24.999 62.346",[1389],[1373,6516,6517],{"transform":6505},[1378,6518],{"d":6519,"fill":1375,"stroke":1375,"className":6520,"style":1462},"M-22.586 62.004L-22.617 62.004Q-22.480 62.301-22.183 62.477Q-21.886 62.653-21.558 62.653Q-21.195 62.653-20.968 62.475Q-20.741 62.298-20.647 62.009Q-20.553 61.720-20.553 61.358Q-20.553 61.043-20.607 60.758Q-20.662 60.473-20.835 60.267Q-21.007 60.062-21.322 60.062Q-21.595 60.062-21.778 60.129Q-21.961 60.196-22.065 60.285Q-22.169 60.373-22.265 60.483Q-22.361 60.592-22.405 60.602L-22.484 60.602Q-22.556 60.585-22.573 60.514L-22.573 58.196Q-22.573 58.162-22.549 58.140Q-22.525 58.118-22.491 58.118L-22.463 58.118Q-22.176 58.234-21.908 58.288Q-21.640 58.343-21.363 58.343Q-21.086 58.343-20.816 58.288Q-20.546 58.234-20.266 58.118L-20.242 58.118Q-20.207 58.118-20.184 58.141Q-20.160 58.165-20.160 58.196L-20.160 58.265Q-20.160 58.292-20.180 58.312Q-20.454 58.627-20.838 58.803Q-21.223 58.979-21.636 58.979Q-21.975 58.979-22.292 58.893L-22.292 60.175Q-21.896 59.840-21.322 59.840Q-20.918 59.840-20.582 60.050Q-20.245 60.261-20.052 60.613Q-19.859 60.965-19.859 61.365Q-19.859 61.696-19.999 61.982Q-20.139 62.267-20.383 62.477Q-20.628 62.687-20.930 62.797Q-21.233 62.906-21.551 62.906Q-21.910 62.906-22.236 62.742Q-22.562 62.578-22.757 62.286Q-22.952 61.994-22.952 61.631Q-22.952 61.481-22.846 61.375Q-22.740 61.269-22.586 61.269Q-22.433 61.269-22.328 61.373Q-22.224 61.477-22.224 61.631Q-22.224 61.788-22.328 61.896Q-22.433 62.004-22.586 62.004",[1389],[1373,6522,6524],{"transform":6523},"translate(197.176 8.044)",[1378,6525],{"d":6526,"fill":1375,"stroke":1375,"className":6527,"style":1462},"M-26.428 62.766L-28.958 62.766L-28.958 62.486Q-27.990 62.486-27.990 62.277L-27.990 58.658Q-28.383 58.846-29.005 58.846L-29.005 58.565Q-28.588 58.565-28.224 58.464Q-27.860 58.364-27.604 58.118L-27.478 58.118Q-27.413 58.135-27.396 58.203L-27.396 62.277Q-27.396 62.486-26.428 62.486",[1389],[1378,6529],{"fill":1380,"stroke":4143,"d":6530},"M-29.754 38.866h199.169",[1373,6532,6534],{"transform":6533},"translate(-10.364 -21.645)",[1378,6535],{"d":6536,"fill":1375,"stroke":1375,"className":6537,"style":1462},"M-26.428 62.766L-29.313 62.766L-29.313 62.564Q-29.313 62.534-29.286 62.506L-28.038 61.289Q-27.966 61.214-27.924 61.172Q-27.881 61.129-27.802 61.050Q-27.389 60.637-27.158 60.279Q-26.927 59.922-26.927 59.498Q-26.927 59.266-27.006 59.063Q-27.085 58.859-27.226 58.709Q-27.368 58.558-27.563 58.478Q-27.758 58.398-27.990 58.398Q-28.301 58.398-28.559 58.557Q-28.817 58.716-28.947 58.993L-28.927 58.993Q-28.759 58.993-28.652 59.104Q-28.544 59.215-28.544 59.379Q-28.544 59.536-28.653 59.649Q-28.763 59.762-28.927 59.762Q-29.087 59.762-29.200 59.649Q-29.313 59.536-29.313 59.379Q-29.313 59.003-29.105 58.716Q-28.896 58.429-28.561 58.273Q-28.226 58.118-27.871 58.118Q-27.447 58.118-27.067 58.276Q-26.688 58.435-26.454 58.752Q-26.220 59.068-26.220 59.498Q-26.220 59.809-26.360 60.078Q-26.500 60.346-26.705 60.551Q-26.910 60.756-27.273 61.038Q-27.635 61.320-27.744 61.416L-28.599 62.144L-27.956 62.144Q-27.693 62.144-27.404 62.142Q-27.115 62.141-26.897 62.132Q-26.678 62.123-26.661 62.106Q-26.599 62.041-26.562 61.874Q-26.524 61.706-26.486 61.464L-26.220 61.464",[1389],[1378,6539],{"fill":1380,"stroke":4143,"d":6540},"M-29.754 3.016h199.169",[1373,6542,6544],{"transform":6543},"translate(-10.364 -57.495)",[1378,6545],{"d":6546,"fill":1375,"stroke":1375,"className":6547,"style":1462},"M-28.947 62.004L-28.978 62.004Q-28.841 62.301-28.544 62.477Q-28.247 62.653-27.919 62.653Q-27.556 62.653-27.329 62.475Q-27.102 62.298-27.008 62.009Q-26.914 61.720-26.914 61.358Q-26.914 61.043-26.968 60.758Q-27.023 60.473-27.196 60.267Q-27.368 60.062-27.683 60.062Q-27.956 60.062-28.139 60.129Q-28.322 60.196-28.426 60.285Q-28.530 60.373-28.626 60.483Q-28.722 60.592-28.766 60.602L-28.845 60.602Q-28.917 60.585-28.934 60.514L-28.934 58.196Q-28.934 58.162-28.910 58.140Q-28.886 58.118-28.852 58.118L-28.824 58.118Q-28.537 58.234-28.269 58.288Q-28.001 58.343-27.724 58.343Q-27.447 58.343-27.177 58.288Q-26.907 58.234-26.627 58.118L-26.603 58.118Q-26.568 58.118-26.545 58.141Q-26.521 58.165-26.521 58.196L-26.521 58.265Q-26.521 58.292-26.541 58.312Q-26.815 58.627-27.199 58.803Q-27.584 58.979-27.997 58.979Q-28.336 58.979-28.653 58.893L-28.653 60.175Q-28.257 59.840-27.683 59.840Q-27.279 59.840-26.943 60.050Q-26.606 60.261-26.413 60.613Q-26.220 60.965-26.220 61.365Q-26.220 61.696-26.360 61.982Q-26.500 62.267-26.744 62.477Q-26.989 62.687-27.291 62.797Q-27.594 62.906-27.912 62.906Q-28.271 62.906-28.597 62.742Q-28.923 62.578-29.118 62.286Q-29.313 61.994-29.313 61.631Q-29.313 61.481-29.207 61.375Q-29.101 61.269-28.947 61.269Q-28.794 61.269-28.689 61.373Q-28.585 61.477-28.585 61.631Q-28.585 61.788-28.689 61.896Q-28.794 62.004-28.947 62.004",[1389],[1378,6549],{"fill":1380,"stroke":4143,"d":6550},"M-29.754-56.735h199.169",[1373,6552,6554],{"transform":6553},"translate(-14.35 -117.245)",[1378,6555],{"d":6556,"fill":1375,"stroke":1375,"className":6557,"style":1462},"M-26.428 62.766L-28.958 62.766L-28.958 62.486Q-27.990 62.486-27.990 62.277L-27.990 58.658Q-28.383 58.846-29.005 58.846L-29.005 58.565Q-28.588 58.565-28.224 58.464Q-27.860 58.364-27.604 58.118L-27.478 58.118Q-27.413 58.135-27.396 58.203L-27.396 62.277Q-27.396 62.486-26.428 62.486L-26.428 62.766M-23.783 62.906Q-24.419 62.906-24.783 62.561Q-25.147 62.216-25.282 61.691Q-25.417 61.166-25.417 60.541Q-25.417 59.516-25.061 58.817Q-24.706 58.118-23.783 58.118Q-22.857 58.118-22.504 58.817Q-22.152 59.516-22.152 60.541Q-22.152 61.166-22.287 61.691Q-22.422 62.216-22.785 62.561Q-23.147 62.906-23.783 62.906M-23.783 62.681Q-23.345 62.681-23.132 62.306Q-22.918 61.932-22.869 61.465Q-22.819 60.999-22.819 60.421Q-22.819 59.868-22.869 59.440Q-22.918 59.013-23.130 58.678Q-23.342 58.343-23.783 58.343Q-24.125 58.343-24.328 58.550Q-24.531 58.757-24.619 59.069Q-24.706 59.382-24.728 59.698Q-24.750 60.015-24.750 60.421Q-24.750 60.838-24.728 61.180Q-24.706 61.522-24.617 61.870Q-24.528 62.219-24.323 62.450Q-24.118 62.681-23.783 62.681",[1389],[1378,6559],{"fill":1380,"stroke":3567,"d":6560,"style":6561},"M109.664 62.766v-119.5","stroke-dasharray:3.0,3.0",[1373,6563,6564],{"fill":3567,"stroke":3567},[1373,6565,6566,6573,6579,6585,6591,6597],{"fill":3567,"stroke":1380,"fontSize":3325},[1373,6567,6569],{"transform":6568},"translate(128.575 -123.034)",[1378,6570],{"d":6571,"fill":3567,"stroke":3567,"className":6572,"style":1462},"M-26.460 54.766L-28.196 54.766L-28.196 54.486Q-27.967 54.486-27.818 54.452Q-27.670 54.417-27.670 54.277L-27.670 52.428Q-27.670 52.158-27.777 52.097Q-27.885 52.035-28.196 52.035L-28.196 51.755L-27.167 51.680L-27.167 52.387Q-27.037 52.079-26.795 51.880Q-26.552 51.680-26.234 51.680Q-26.015 51.680-25.844 51.804Q-25.673 51.929-25.673 52.141Q-25.673 52.278-25.773 52.377Q-25.872 52.476-26.005 52.476Q-26.142 52.476-26.241 52.377Q-26.340 52.278-26.340 52.141Q-26.340 52.001-26.241 51.902Q-26.531 51.902-26.731 52.098Q-26.931 52.295-27.024 52.589Q-27.116 52.883-27.116 53.163L-27.116 54.277Q-27.116 54.486-26.460 54.486L-26.460 54.766M-25.130 53.231Q-25.130 52.910-25.005 52.621Q-24.880 52.332-24.655 52.109Q-24.429 51.885-24.134 51.765Q-23.838 51.645-23.520 51.645Q-23.192 51.645-22.930 51.745Q-22.669 51.844-22.493 52.026Q-22.317 52.209-22.223 52.467Q-22.129 52.725-22.129 53.057Q-22.129 53.149-22.211 53.170L-24.467 53.170L-24.467 53.231Q-24.467 53.819-24.183 54.202Q-23.899 54.585-23.332 54.585Q-23.011 54.585-22.743 54.392Q-22.474 54.199-22.385 53.884Q-22.378 53.843-22.303 53.829L-22.211 53.829Q-22.129 53.853-22.129 53.925Q-22.129 53.932-22.136 53.959Q-22.249 54.356-22.619 54.595Q-22.990 54.834-23.414 54.834Q-23.852 54.834-24.252 54.626Q-24.651 54.417-24.891 54.050Q-25.130 53.683-25.130 53.231M-24.460 52.961L-22.645 52.961Q-22.645 52.684-22.743 52.432Q-22.840 52.179-23.038 52.023Q-23.236 51.868-23.520 51.868Q-23.797 51.868-24.011 52.026Q-24.224 52.185-24.342 52.440Q-24.460 52.695-24.460 52.961M-21.541 54.759L-21.541 53.696Q-21.541 53.672-21.514 53.645Q-21.486 53.618-21.462 53.618L-21.353 53.618Q-21.288 53.618-21.274 53.676Q-21.179 54.110-20.933 54.361Q-20.687 54.612-20.273 54.612Q-19.931 54.612-19.678 54.479Q-19.425 54.346-19.425 54.038Q-19.425 53.881-19.519 53.766Q-19.613 53.652-19.752 53.583Q-19.890 53.515-20.058 53.477L-20.639 53.378Q-20.994 53.310-21.268 53.089Q-21.541 52.869-21.541 52.527Q-21.541 52.278-21.430 52.103Q-21.319 51.929-21.133 51.830Q-20.946 51.731-20.731 51.688Q-20.516 51.645-20.273 51.645Q-19.859 51.645-19.579 51.827L-19.364 51.652Q-19.354 51.649-19.347 51.647Q-19.340 51.645-19.330 51.645L-19.278 51.645Q-19.251 51.645-19.227 51.669Q-19.203 51.693-19.203 51.721L-19.203 52.568Q-19.203 52.589-19.227 52.616Q-19.251 52.643-19.278 52.643L-19.391 52.643Q-19.419 52.643-19.444 52.618Q-19.470 52.592-19.470 52.568Q-19.470 52.332-19.576 52.168Q-19.682 52.004-19.865 51.922Q-20.047 51.840-20.280 51.840Q-20.608 51.840-20.864 51.943Q-21.121 52.045-21.121 52.322Q-21.121 52.517-20.938 52.626Q-20.755 52.736-20.526 52.777L-19.952 52.883Q-19.706 52.931-19.492 53.059Q-19.278 53.187-19.142 53.390Q-19.005 53.594-19.005 53.843Q-19.005 54.356-19.371 54.595Q-19.736 54.834-20.273 54.834Q-20.769 54.834-21.100 54.540L-21.367 54.814Q-21.387 54.834-21.415 54.834L-21.462 54.834Q-21.486 54.834-21.514 54.807Q-21.541 54.780-21.541 54.759M-16.759 54.766L-18.311 54.766L-18.311 54.486Q-18.086 54.486-17.937 54.452Q-17.788 54.417-17.788 54.277L-17.788 52.428Q-17.788 52.240-17.836 52.156Q-17.884 52.073-17.981 52.054Q-18.079 52.035-18.291 52.035L-18.291 51.755L-17.234 51.680L-17.234 54.277Q-17.234 54.417-17.103 54.452Q-16.971 54.486-16.759 54.486L-16.759 54.766M-18.031 50.459Q-18.031 50.288-17.908 50.169Q-17.785 50.049-17.614 50.049Q-17.446 50.049-17.323 50.169Q-17.200 50.288-17.200 50.459Q-17.200 50.634-17.323 50.757Q-17.446 50.880-17.614 50.880Q-17.785 50.880-17.908 50.757Q-18.031 50.634-18.031 50.459M-13.382 54.766L-16.055 54.766Q-16.100 54.766-16.127 54.739Q-16.154 54.711-16.154 54.667L-16.154 54.599Q-16.154 54.558-16.127 54.527L-14.018 51.974L-14.657 51.974Q-15.081 51.974-15.314 52.040Q-15.546 52.107-15.666 52.317Q-15.785 52.527-15.785 52.948L-16.048 52.948L-15.966 51.748L-13.376 51.748Q-13.335 51.748-13.305 51.775Q-13.276 51.803-13.276 51.847L-13.276 51.895Q-13.276 51.939-13.300 51.967L-15.406 54.513L-14.726 54.513Q-14.398 54.513-14.180 54.477Q-13.963 54.441-13.796 54.291Q-13.656 54.154-13.603 53.930Q-13.550 53.706-13.523 53.378L-13.256 53.378L-13.382 54.766M-12.607 53.231Q-12.607 52.910-12.482 52.621Q-12.357 52.332-12.131 52.109Q-11.906 51.885-11.610 51.765Q-11.315 51.645-10.997 51.645Q-10.669 51.645-10.407 51.745Q-10.146 51.844-9.970 52.026Q-9.794 52.209-9.700 52.467Q-9.606 52.725-9.606 53.057Q-9.606 53.149-9.688 53.170L-11.943 53.170L-11.943 53.231Q-11.943 53.819-11.660 54.202Q-11.376 54.585-10.809 54.585Q-10.487 54.585-10.219 54.392Q-9.951 54.199-9.862 53.884Q-9.855 53.843-9.780 53.829L-9.688 53.829Q-9.606 53.853-9.606 53.925Q-9.606 53.932-9.612 53.959Q-9.725 54.356-10.096 54.595Q-10.467 54.834-10.891 54.834Q-11.328 54.834-11.728 54.626Q-12.128 54.417-12.367 54.050Q-12.607 53.683-12.607 53.231M-11.937 52.961L-10.122 52.961Q-10.122 52.684-10.219 52.432Q-10.316 52.179-10.515 52.023Q-10.713 51.868-10.997 51.868Q-11.274 51.868-11.487 52.026Q-11.701 52.185-11.819 52.440Q-11.937 52.695-11.937 52.961",[1389],[1373,6574,6575],{"transform":6568},[1378,6576],{"d":6577,"fill":3567,"stroke":3567,"className":6578,"style":1462},"M-29.334 61.611Q-29.334 61.115-29.036 60.666Q-28.739 60.216-28.267 59.948Q-27.796 59.680-27.303 59.680Q-27.020 59.680-26.772 59.779Q-26.524 59.878-26.339 60.057Q-26.155 60.237-26.051 60.483Q-25.946 60.729-25.946 61.009L-25.933 61.402Q-25.464 60.790-25.287 60.073Q-25.273 60.015-25.218 60.015L-25.106 60.015Q-25.068 60.015-25.049 60.038Q-25.030 60.062-25.030 60.100L-25.030 60.120Q-25.109 60.428-25.234 60.712Q-25.358 60.995-25.528 61.259Q-25.697 61.522-25.912 61.765Q-25.912 61.929-25.899 62.105Q-25.885 62.281-25.830 62.446Q-25.775 62.612-25.673 62.612Q-25.533 62.612-25.451 62.546Q-25.369 62.479-25.306 62.373Q-25.242 62.267-25.212 62.264L-25.099 62.264Q-25.068 62.264-25.046 62.287Q-25.024 62.311-25.024 62.346Q-25.024 62.475-25.133 62.587Q-25.242 62.698-25.401 62.766Q-25.560 62.834-25.687 62.834Q-25.960 62.834-26.151 62.672Q-26.343 62.510-26.428 62.240Q-26.791 62.520-27.202 62.677Q-27.614 62.834-28.052 62.834Q-28.407 62.834-28.701 62.681Q-28.995 62.527-29.164 62.248Q-29.334 61.970-29.334 61.611M-28.031 62.612Q-27.621 62.612-27.221 62.443Q-26.821 62.274-26.486 61.990Q-26.486 61.949-26.488 61.923Q-26.490 61.898-26.493 61.870L-26.527 61.136Q-26.527 60.855-26.603 60.572Q-26.678 60.288-26.856 60.095Q-27.033 59.902-27.317 59.902Q-27.649 59.902-27.913 60.086Q-28.178 60.271-28.358 60.572Q-28.537 60.872-28.631 61.218Q-28.725 61.563-28.725 61.864Q-28.725 62.185-28.537 62.399Q-28.349 62.612-28.031 62.612",[1389],[1373,6580,6581],{"transform":6568},[1378,6582],{"d":6583,"fill":3567,"stroke":3567,"className":6584,"style":1462},"M-19.074 61.959L-23.907 61.959Q-23.975 61.949-24.021 61.903Q-24.067 61.857-24.067 61.785Q-24.067 61.720-24.021 61.674Q-23.975 61.628-23.907 61.618L-19.074 61.618Q-19.005 61.628-18.959 61.674Q-18.913 61.720-18.913 61.785Q-18.913 61.857-18.959 61.903Q-19.005 61.949-19.074 61.959M-19.074 60.421L-23.907 60.421Q-23.975 60.411-24.021 60.365Q-24.067 60.319-24.067 60.247Q-24.067 60.103-23.907 60.079L-19.074 60.079Q-18.913 60.103-18.913 60.247Q-18.913 60.319-18.959 60.365Q-19.005 60.411-19.074 60.421",[1389],[1373,6586,6587],{"transform":6568},[1378,6588],{"d":6589,"fill":3567,"stroke":3567,"className":6590,"style":1462},"M-16.428 62.906Q-17.063 62.906-17.427 62.561Q-17.792 62.216-17.927 61.691Q-18.062 61.166-18.062 60.541Q-18.062 59.516-17.706 58.817Q-17.351 58.118-16.428 58.118Q-15.501 58.118-15.149 58.817Q-14.797 59.516-14.797 60.541Q-14.797 61.166-14.932 61.691Q-15.067 62.216-15.430 62.561Q-15.792 62.906-16.428 62.906M-16.428 62.681Q-15.990 62.681-15.777 62.306Q-15.563 61.932-15.513 61.465Q-15.464 60.999-15.464 60.421Q-15.464 59.868-15.513 59.440Q-15.563 59.013-15.775 58.678Q-15.987 58.343-16.428 58.343Q-16.770 58.343-16.973 58.550Q-17.176 58.757-17.263 59.069Q-17.351 59.382-17.373 59.698Q-17.395 60.015-17.395 60.421Q-17.395 60.838-17.373 61.180Q-17.351 61.522-17.262 61.870Q-17.173 62.219-16.968 62.450Q-16.763 62.681-16.428 62.681",[1389],[1373,6592,6593],{"transform":6568},[1378,6594],{"d":6595,"fill":3567,"stroke":3567,"className":6596,"style":1462},"M-13.662 62.346Q-13.662 62.178-13.535 62.055Q-13.409 61.932-13.242 61.932Q-13.074 61.932-12.951 62.055Q-12.828 62.178-12.828 62.346Q-12.828 62.520-12.951 62.643Q-13.074 62.766-13.242 62.766Q-13.409 62.766-13.535 62.643Q-13.662 62.520-13.662 62.346",[1389],[1373,6598,6599],{"transform":6568},[1378,6600],{"d":6601,"fill":3567,"stroke":3567,"className":6602,"style":1462},"M-10.620 62.558Q-10.620 62.052-10.491 61.544Q-10.361 61.037-10.123 60.575Q-9.886 60.114-9.551 59.693L-8.905 58.880L-9.718 58.880Q-10.303 58.880-10.699 58.888Q-11.096 58.897-11.119 58.917Q-11.222 59.034-11.301 59.560L-11.567 59.560L-11.321 58.036L-11.055 58.036L-11.055 58.056Q-11.055 58.124-10.979 58.167Q-10.904 58.210-10.826 58.217Q-10.634 58.241-10.439 58.247Q-10.244 58.254-10.053 58.256Q-9.862 58.258-9.663 58.258L-8.242 58.258L-8.242 58.446Q-8.252 58.494-8.262 58.504L-9.318 59.827Q-9.537 60.100-9.660 60.413Q-9.783 60.725-9.841 61.074Q-9.899 61.423-9.913 61.754Q-9.927 62.086-9.927 62.558Q-9.927 62.708-10.026 62.807Q-10.125 62.906-10.272 62.906Q-10.422 62.906-10.521 62.807Q-10.620 62.708-10.620 62.558",[1389],[1378,6604],{"fill":1380,"stroke":3458,"d":6605,"style":4352},"m-29.754 50.816 3.036-.184a1698 1698 0 0 0 9.108-.592 1739 1739 0 0 0 6.072-.426 1428 1428 0 0 0 6.072-.457 1337 1337 0 0 0 6.072-.49 1186 1186 0 0 0 6.072-.526 1030 1030 0 0 0 6.072-.568 891.81 891.81 0 0 0 6.072-.612c.843-.088 2.194-.233 3.036-.325a789 789 0 0 0 6.072-.693c.843-.1 2.194-.264 3.037-.368a656 656 0 0 0 6.072-.789 576 576 0 0 0 3.036-.422c.842-.12 2.193-.316 3.036-.442a507 507 0 0 0 3.036-.465c.842-.132 2.193-.35 3.036-.488.842-.139 2.193-.367 3.036-.513.842-.146 2.193-.386 3.036-.54.842-.154 2.193-.408 3.036-.57.842-.163 2.193-.43 3.036-.602.842-.171 2.193-.454 3.036-.636a279.141 279.141 0 0 0 6.072-1.387c.843-.205 2.194-.543 3.036-.76.843-.219 2.194-.58 3.036-.813s2.194-.616 3.036-.865 2.194-.66 3.036-.926c.843-.267 2.194-.708 3.036-.994s2.194-.76 3.036-1.067c.843-.308 2.194-.819 3.036-1.151s2.194-.885 3.036-1.246c.843-.36 2.194-.959 3.036-1.35s2.194-1.044 3.036-1.47c.843-.427 2.194-1.137 3.037-1.604.842-.467 2.193-1.248 3.036-1.762a95 95 0 0 0 3.036-1.941 90 90 0 0 0 3.036-2.152c.842-.63 2.193-1.69 3.036-2.394a83 83 0 0 0 3.036-2.682 82 82 0 0 0 3.036-3.026 83 83 0 0 0 3.036-3.441 86 86 0 0 0 3.036-3.947 92 92 0 0 0 3.036-4.572c.842-1.379 2.193-3.736 3.036-5.365.842-1.63 2.194-4.423 3.036-6.376s2.194-5.316 3.036-7.701 2.194-6.51 3.036-9.49 2.194-8.155 3.036-11.986 3.036-15.628 3.036-15.628",[1373,6607,6608],{"fill":3458,"stroke":3458},[1373,6609,6610,6617,6620,6626,6632],{"fill":3458,"stroke":1380},[1373,6611,6613],{"transform":6612},"translate(104.165 -36.907)",[1378,6614],{"d":6615,"fill":3458,"stroke":3458,"className":6616,"style":3486},"M-20.782 60.079L-22.823 60.079L-22.823 59.840Q-22.042 59.840-22.042 59.720L-22.042 57.174Q-22.220 57.249-22.424 57.279Q-22.628 57.308-22.857 57.308L-22.857 57.069Q-22.521 57.069-22.237 57Q-21.954 56.932-21.744 56.749L-21.639 56.749Q-21.612 56.749-21.588 56.773Q-21.563 56.798-21.563 56.825L-21.563 59.720Q-21.563 59.840-20.782 59.840",[1389],[1378,6618],{"d":6619},"M75.61 23.939h13.387v.34H75.61z",[1373,6621,6622],{"transform":6612},[1378,6623],{"d":6624,"fill":3458,"stroke":3458,"className":6625,"style":3486},"M-25.773 65.176L-27.814 65.176L-27.814 64.937Q-27.033 64.937-27.033 64.817L-27.033 62.271Q-27.211 62.346-27.415 62.376Q-27.619 62.405-27.848 62.405L-27.848 62.166Q-27.512 62.166-27.228 62.097Q-26.945 62.029-26.735 61.846L-26.630 61.846Q-26.603 61.846-26.579 61.870Q-26.554 61.895-26.554 61.922L-26.554 64.817Q-26.554 64.937-25.773 64.937",[1389],[1373,6627,6628],{"transform":6612},[1378,6629],{"d":6630,"fill":3458,"stroke":3458,"className":6631,"style":3486},"M-24.351 63.941L-24.351 63.911Q-24.329 63.801-24.217 63.787L-20.667 63.787Q-20.560 63.801-20.538 63.911L-20.538 63.941Q-20.560 64.051-20.667 64.065L-24.217 64.065Q-24.329 64.051-24.351 63.941",[1389],[1373,6633,6634],{"transform":6612},[1378,6635],{"d":6636,"fill":3458,"stroke":3458,"className":6637,"style":3486},"M-19.210 64.322Q-19.210 63.953-18.970 63.639Q-18.729 63.325-18.358 63.146Q-17.987 62.967-17.621 62.967Q-17.176 62.967-16.869 63.211Q-16.766 63.294-16.684 63.406Q-16.603 63.518-16.551 63.653Q-16.500 63.787-16.500 63.906L-16.476 64.180Q-16.122 63.748-16 63.252Q-15.995 63.223-15.946 63.211L-15.841 63.211Q-15.775 63.228-15.775 63.281Q-15.775 63.286-15.780 63.306Q-15.858 63.621-16.030 63.917Q-16.202 64.214-16.449 64.466Q-16.449 64.624-16.396 64.835Q-16.344 65.047-16.234 65.047Q-16.117 65.047-16.057 65Q-15.997 64.954-15.951 64.882Q-15.904 64.810-15.880 64.805L-15.775 64.805Q-15.714 64.815-15.714 64.876Q-15.714 64.976-15.803 65.059Q-15.892 65.142-16.019 65.187Q-16.146 65.232-16.251 65.232Q-16.451 65.232-16.612 65.116Q-16.774 65-16.854 64.800Q-17.159 65.008-17.491 65.120Q-17.823 65.232-18.155 65.232Q-18.429 65.232-18.673 65.124Q-18.917 65.015-19.064 64.810Q-19.210 64.605-19.210 64.322M-18.729 64.480Q-18.729 64.654-18.657 64.783Q-18.585 64.912-18.453 64.979Q-18.321 65.047-18.146 65.047Q-17.823 65.047-17.505 64.928Q-17.186 64.810-16.905 64.595Q-16.915 64.556-16.915 64.536L-16.959 64.021Q-16.959 63.816-17.038 63.615Q-17.118 63.413-17.273 63.283Q-17.428 63.152-17.635 63.152Q-17.960 63.152-18.212 63.349Q-18.463 63.545-18.596 63.852Q-18.729 64.158-18.729 64.480",[1389],[1378,6639],{"fill":3458,"stroke":1380,"d":6640},"M70.92999999999999 38.866a1.1 1.1 0 1 0-2.2 0 1.1 1.1 0 0 0 2.2 0M150.597-56.735a1.1 1.1 0 1 0-2.2 0 1.1 1.1 0 0 0 2.2 0m-1.1 0",[1595,6642,6644,6645,6687,6688,6703,6704,6737,6738,6771],{"className":6643},[1598],"Expected probes for an unsuccessful search, ",[404,6646,6648],{"className":6647},[407],[404,6649,6651,6675],{"className":6650,"ariaHidden":412},[411],[404,6652,6654,6657,6660,6663,6666,6669,6672],{"className":6653},[416],[404,6655],{"className":6656,"style":421},[420],[404,6658,6268],{"className":6659},[425],[404,6661,433],{"className":6662},[432],[404,6664,488],{"className":6665},[425],[404,6667],{"className":6668,"style":644},[447],[404,6670,649],{"className":6671},[648],[404,6673],{"className":6674,"style":644},[447],[404,6676,6678,6681,6684],{"className":6677},[416],[404,6679],{"className":6680,"style":421},[420],[404,6682,1992],{"className":6683,"style":1991},[425,426],[404,6685,457],{"className":6686},[456],", against load factor ",[404,6689,6691],{"className":6690},[407],[404,6692,6694],{"className":6693,"ariaHidden":412},[411],[404,6695,6697,6700],{"className":6696},[416],[404,6698],{"className":6699,"style":1243},[420],[404,6701,1992],{"className":6702,"style":1991},[425,426],". Flat and cheap while the table is half-empty, the curve turns sharply upward near ",[404,6705,6707],{"className":6706},[407],[404,6708,6710,6728],{"className":6709,"ariaHidden":412},[411],[404,6711,6713,6716,6719,6722,6725],{"className":6712},[416],[404,6714],{"className":6715,"style":1243},[420],[404,6717,1992],{"className":6718,"style":1991},[425,426],[404,6720],{"className":6721,"style":580},[447],[404,6723,585],{"className":6724},[584],[404,6726],{"className":6727,"style":580},[447],[404,6729,6731,6734],{"className":6730},[416],[404,6732],{"className":6733,"style":842},[420],[404,6735,6448],{"className":6736},[425]," (the resize threshold, dashed) and diverges as ",[404,6739,6741],{"className":6740},[407],[404,6742,6744,6762],{"className":6743,"ariaHidden":412},[411],[404,6745,6747,6750,6753,6756,6759],{"className":6746},[416],[404,6748],{"className":6749,"style":1243},[420],[404,6751,1992],{"className":6752,"style":1991},[425,426],[404,6754],{"className":6755,"style":580},[447],[404,6757,1016],{"className":6758},[584],[404,6760],{"className":6761,"style":580},[447],[404,6763,6765,6768],{"className":6764},[416],[404,6766],{"className":6767,"style":842},[420],[404,6769,488],{"className":6770},[425]," — the reason open addressing must never run near full.",[549,6773,6775],{"id":6774},"what-makes-a-hash-function-good","What makes a hash function good",[381,6777,6778,6779,6782,6783,6798],{},"Simple uniform hashing is an ",[464,6780,6781],{},"assumption","; a real hash function must approximate\nit on real data. A good ",[404,6784,6786],{"className":6785},[407],[404,6787,6789],{"className":6788,"ariaHidden":412},[411],[404,6790,6792,6795],{"className":6791},[416],[404,6793],{"className":6794,"style":726},[420],[404,6796,990],{"className":6797},[425,426]," should scatter keys so that any regularities in the\ninput, such as sequential integers, common prefixes, or similar strings, do not pile up\nin the same slots. Two classic constructions:",[3895,6800,6801,7007],{},[3898,6802,6803,1146,6806,6878,6879,6894,6895,6910,6911,6926,6927,6942,6943,6958,6959,6974,6975,6990,6991,7006],{},[385,6804,6805],{},"The division method.",[404,6807,6809],{"className":6808},[407],[404,6810,6812,6839,6869],{"className":6811,"ariaHidden":412},[411],[404,6813,6815,6818,6821,6824,6827,6830,6833,6836],{"className":6814},[416],[404,6816],{"className":6817,"style":421},[420],[404,6819,990],{"className":6820},[425,426],[404,6822,433],{"className":6823},[432],[404,6825,731],{"className":6826,"style":730},[425,426],[404,6828,457],{"className":6829},[456],[404,6831],{"className":6832,"style":580},[447],[404,6834,585],{"className":6835},[584],[404,6837],{"className":6838,"style":580},[447],[404,6840,6842,6845,6848,6851,6854,6863,6866],{"className":6841},[416],[404,6843],{"className":6844,"style":726},[420],[404,6846,731],{"className":6847,"style":730},[425,426],[404,6849],{"className":6850,"style":4022},[447],[404,6852],{"className":6853,"style":644},[447],[404,6855,6857],{"className":6856},[648],[404,6858,6860],{"className":6859},[425],[404,6861,4035],{"className":6862},[425,441],[404,6864],{"className":6865,"style":4022},[447],[404,6867],{"className":6868,"style":644},[447],[404,6870,6872,6875],{"className":6871},[416],[404,6873],{"className":6874,"style":1243},[420],[404,6876,640],{"className":6877},[425,426],". Fast, but sensitive to ",[404,6880,6882],{"className":6881},[407],[404,6883,6885],{"className":6884,"ariaHidden":412},[411],[404,6886,6888,6891],{"className":6887},[416],[404,6889],{"className":6890,"style":1243},[420],[404,6892,640],{"className":6893},[425,426],":\nchoosing ",[404,6896,6898],{"className":6897},[407],[404,6899,6901],{"className":6900,"ariaHidden":412},[411],[404,6902,6904,6907],{"className":6903},[416],[404,6905],{"className":6906,"style":1243},[420],[404,6908,640],{"className":6909},[425,426]," a power of ",[404,6912,6914],{"className":6913},[407],[404,6915,6917],{"className":6916,"ariaHidden":412},[411],[404,6918,6920,6923],{"className":6919},[416],[404,6921],{"className":6922,"style":842},[420],[404,6924,867],{"className":6925},[425]," makes ",[404,6928,6930],{"className":6929},[407],[404,6931,6933],{"className":6932,"ariaHidden":412},[411],[404,6934,6936,6939],{"className":6935},[416],[404,6937],{"className":6938,"style":726},[420],[404,6940,990],{"className":6941},[425,426]," depend only on the low bits of ",[404,6944,6946],{"className":6945},[407],[404,6947,6949],{"className":6948,"ariaHidden":412},[411],[404,6950,6952,6955],{"className":6951},[416],[404,6953],{"className":6954,"style":726},[420],[404,6956,731],{"className":6957,"style":730},[425,426],", and\nvalues near a power of ",[404,6960,6962],{"className":6961},[407],[404,6963,6965],{"className":6964,"ariaHidden":412},[411],[404,6966,6968,6971],{"className":6967},[416],[404,6969],{"className":6970,"style":842},[420],[404,6972,5673],{"className":6973},[425]," are bad for decimal data. A prime ",[404,6976,6978],{"className":6977},[407],[404,6979,6981],{"className":6980,"ariaHidden":412},[411],[404,6982,6984,6987],{"className":6983},[416],[404,6985],{"className":6986,"style":1243},[420],[404,6988,640],{"className":6989},[425,426]," not close to\na power of ",[404,6992,6994],{"className":6993},[407],[404,6995,6997],{"className":6996,"ariaHidden":412},[411],[404,6998,7000,7003],{"className":6999},[416],[404,7001],{"className":7002,"style":842},[420],[404,7004,867],{"className":7005},[425]," is the safe choice.",[3898,7008,7009,1146,7012,7111,7112,7165,7166,7285,7286,7301,7302,7317,7318,7333],{},[385,7010,7011],{},"The multiplication method.",[404,7013,7015],{"className":7014},[407],[404,7016,7018,7045],{"className":7017,"ariaHidden":412},[411],[404,7019,7021,7024,7027,7030,7033,7036,7039,7042],{"className":7020},[416],[404,7022],{"className":7023,"style":421},[420],[404,7025,990],{"className":7026},[425,426],[404,7028,433],{"className":7029},[432],[404,7031,731],{"className":7032,"style":730},[425,426],[404,7034,457],{"className":7035},[456],[404,7037],{"className":7038,"style":580},[447],[404,7040,585],{"className":7041},[584],[404,7043],{"className":7044,"style":580},[447],[404,7046,7048,7051],{"className":7047},[416],[404,7049],{"className":7050,"style":421},[420],[404,7052,7054,7058,7061,7064,7067,7070,7073,7076,7080,7083,7086,7095,7098,7101,7104,7107],{"className":7053},[598],[404,7055,7057],{"className":7056,"style":603},[432,602],"⌊",[404,7059,640],{"className":7060},[425,426],[404,7062],{"className":7063,"style":644},[447],[404,7065,4923],{"className":7066},[648],[404,7068],{"className":7069,"style":644},[447],[404,7071,433],{"className":7072},[432],[404,7074,731],{"className":7075,"style":730},[425,426],[404,7077,7079],{"className":7078},[425,426],"A",[404,7081],{"className":7082,"style":4022},[447],[404,7084],{"className":7085,"style":644},[447],[404,7087,7089],{"className":7088},[648],[404,7090,7092],{"className":7091},[425],[404,7093,4035],{"className":7094},[425,441],[404,7096],{"className":7097,"style":4022},[447],[404,7099],{"className":7100,"style":644},[447],[404,7102,488],{"className":7103},[425],[404,7105,457],{"className":7106},[456],[404,7108,7110],{"className":7109,"style":603},[456,602],"⌋"," for a\nconstant ",[404,7113,7115],{"className":7114},[407],[404,7116,7118,7137,7156],{"className":7117,"ariaHidden":412},[411],[404,7119,7121,7125,7128,7131,7134],{"className":7120},[416],[404,7122],{"className":7123,"style":7124},[420],"height:0.6835em;vertical-align:-0.0391em;",[404,7126,608],{"className":7127},[425],[404,7129],{"className":7130,"style":580},[447],[404,7132,5961],{"className":7133},[584],[404,7135],{"className":7136,"style":580},[447],[404,7138,7140,7144,7147,7150,7153],{"className":7139},[416],[404,7141],{"className":7142,"style":7143},[420],"height:0.7224em;vertical-align:-0.0391em;",[404,7145,7079],{"className":7146},[425,426],[404,7148],{"className":7149,"style":580},[447],[404,7151,5961],{"className":7152},[584],[404,7154],{"className":7155,"style":580},[447],[404,7157,7159,7162],{"className":7158},[416],[404,7160],{"className":7161,"style":842},[420],[404,7163,488],{"className":7164},[425]," (",[404,7167,7169],{"className":7168},[407],[404,7170,7172,7190,7270],{"className":7171,"ariaHidden":412},[411],[404,7173,7175,7178,7181,7184,7187],{"className":7174},[416],[404,7176],{"className":7177,"style":571},[420],[404,7179,7079],{"className":7180},[425,426],[404,7182],{"className":7183,"style":580},[447],[404,7185,585],{"className":7186},[584],[404,7188],{"className":7189,"style":580},[447],[404,7191,7193,7197,7200,7261,7264,7267],{"className":7192},[416],[404,7194],{"className":7195,"style":7196},[420],"height:1.1572em;vertical-align:-0.25em;",[404,7198,433],{"className":7199},[432],[404,7201,7204],{"className":7202},[425,7203],"sqrt",[404,7205,7207,7252],{"className":7206},[875,1678],[404,7208,7210,7249],{"className":7209},[879],[404,7211,7214,7229],{"className":7212,"style":7213},[883],"height:0.9072em;",[404,7215,7219,7222],{"className":7216,"style":7218},[7217],"svg-align","top:-3em;",[404,7220],{"className":7221,"style":2036},[890],[404,7223,7226],{"className":7224,"style":7225},[425],"padding-left:0.833em;",[404,7227,1753],{"className":7228},[425],[404,7230,7232,7235],{"style":7231},"top:-2.8672em;",[404,7233],{"className":7234,"style":2036},[890],[404,7236,7240],{"className":7237,"style":7239},[7238],"hide-tail","min-width:0.853em;height:1.08em;",[1366,7241,7246],{"xmlns":1368,"width":7242,"height":7243,"viewBox":7244,"preserveAspectRatio":7245},"400em","1.08em","0 0 400000 1080","xMinYMin slice",[1378,7247],{"d":7248},"M95,702\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl0 -0\nc5.3,-9.3,12,-14,20,-14\nH400000v40H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM834 80h400000v40h-400000z",[404,7250,1702],{"className":7251},[1701],[404,7253,7255],{"className":7254},[879],[404,7256,7259],{"className":7257,"style":7258},[883],"height:0.1328em;",[404,7260],{},[404,7262],{"className":7263,"style":644},[447],[404,7265,649],{"className":7266},[648],[404,7268],{"className":7269,"style":644},[447],[404,7271,7273,7276,7279,7282],{"className":7272},[416],[404,7274],{"className":7275,"style":421},[420],[404,7277,488],{"className":7278},[425],[404,7280,457],{"className":7281},[456],[404,7283,2429],{"className":7284},[425]," is a good choice). It is insensitive\nto the value of ",[404,7287,7289],{"className":7288},[407],[404,7290,7292],{"className":7291,"ariaHidden":412},[411],[404,7293,7295,7298],{"className":7294},[416],[404,7296],{"className":7297,"style":1243},[420],[404,7299,640],{"className":7300},[425,426],", so ",[404,7303,7305],{"className":7304},[407],[404,7306,7308],{"className":7307,"ariaHidden":412},[411],[404,7309,7311,7314],{"className":7310},[416],[404,7312],{"className":7313,"style":1243},[420],[404,7315,640],{"className":7316},[425,426]," can be a power of ",[404,7319,7321],{"className":7320},[407],[404,7322,7324],{"className":7323,"ariaHidden":412},[411],[404,7325,7327,7330],{"className":7326},[416],[404,7328],{"className":7329,"style":842},[420],[404,7331,867],{"className":7332},[425]," for fast bit shifts.",[381,7335,7336,7337,7352,7353,7459,7460,7475,7476,7483,7484,7508],{},"For string keys, treat the string as a base-",[404,7338,7340],{"className":7339},[407],[404,7341,7343],{"className":7342,"ariaHidden":412},[411],[404,7344,7346,7349],{"className":7345},[416],[404,7347],{"className":7348,"style":726},[420],[404,7350,542],{"className":7351},[425,426]," number and fold it down, e.g.\nHorner's rule, ",[404,7354,7356],{"className":7355},[407],[404,7357,7359,7377,7398,7417,7450],{"className":7358,"ariaHidden":412},[411],[404,7360,7362,7365,7368,7371,7374],{"className":7361},[416],[404,7363],{"className":7364,"style":726},[420],[404,7366,990],{"className":7367},[425,426],[404,7369],{"className":7370,"style":580},[447],[404,7372,585],{"className":7373},[584],[404,7375],{"className":7376,"style":580},[447],[404,7378,7380,7383,7386,7389,7392,7395],{"className":7379},[416],[404,7381],{"className":7382,"style":421},[420],[404,7384,433],{"className":7385},[432],[404,7387,990],{"className":7388},[425,426],[404,7390],{"className":7391,"style":644},[447],[404,7393,4923],{"className":7394},[648],[404,7396],{"className":7397,"style":644},[447],[404,7399,7401,7405,7408,7411,7414],{"className":7400},[416],[404,7402],{"className":7403,"style":7404},[420],"height:0.7778em;vertical-align:-0.0833em;",[404,7406,542],{"className":7407},[425,426],[404,7409],{"className":7410,"style":644},[447],[404,7412,2240],{"className":7413},[648],[404,7415],{"className":7416,"style":644},[447],[404,7418,7420,7423,7426,7429,7432,7435,7444,7447],{"className":7419},[416],[404,7421],{"className":7422,"style":421},[420],[404,7424,4613],{"className":7425},[425,426],[404,7427,457],{"className":7428},[456],[404,7430],{"className":7431,"style":4022},[447],[404,7433],{"className":7434,"style":644},[447],[404,7436,7438],{"className":7437},[648],[404,7439,7441],{"className":7440},[425],[404,7442,4035],{"className":7443},[425,441],[404,7445],{"className":7446,"style":4022},[447],[404,7448],{"className":7449,"style":644},[447],[404,7451,7453,7456],{"className":7452},[416],[404,7454],{"className":7455,"style":1243},[420],[404,7457,640],{"className":7458},[425,426]," over the characters ",[404,7461,7463],{"className":7462},[407],[404,7464,7466],{"className":7465,"ariaHidden":412},[411],[404,7467,7469,7472],{"className":7468},[416],[404,7470],{"className":7471,"style":1243},[420],[404,7473,4613],{"className":7474},[425,426],", so that\nevery character and its position influence the result.",[494,7477,7478],{},[399,7479,1634],{"href":7480,"ariaDescribedBy":7481,"dataFootnoteRef":376,"id":7482},"#user-content-fn-skiena-hash",[500],"user-content-fnref-skiena-hash"," Skiena stresses the\nengineer's view: a hash function turns an arbitrary key into a pseudo-random\nslot, and the quality of that pseudo-randomness is exactly what protects the\n",[404,7485,7487],{"className":7486},[407],[404,7488,7490],{"className":7489,"ariaHidden":412},[411],[404,7491,7493,7496,7499,7502,7505],{"className":7492},[416],[404,7494],{"className":7495,"style":421},[420],[404,7497,428],{"className":7498,"style":427},[425,426],[404,7500,433],{"className":7501},[432],[404,7503,488],{"className":7504},[425],[404,7506,457],{"className":7507},[456]," bound.",[549,7510,7512],{"id":7511},"universal-hashing-a-guarantee-against-every-input","Universal hashing: a guarantee against every input",[381,7514,7515,7516,7519,7520,7544,7545,7548,7549,1146,7564,7567,7568,7586],{},"Any ",[464,7517,7518],{},"fixed"," hash function has an Achilles' heel: there exists a set of keys that\nall collide, and an adversary (or merely unlucky data) can hand it to us,\ndegrading every operation to ",[404,7521,7523],{"className":7522},[407],[404,7524,7526],{"className":7525,"ariaHidden":412},[411],[404,7527,7529,7532,7535,7538,7541],{"className":7528},[416],[404,7530],{"className":7531,"style":421},[420],[404,7533,2227],{"className":7534},[425],[404,7536,433],{"className":7537},[432],[404,7539,452],{"className":7540},[425,426],[404,7542,457],{"className":7543},[456],". ",[385,7546,7547],{},"Universal hashing"," defeats this by\nchoosing ",[404,7550,7552],{"className":7551},[407],[404,7553,7555],{"className":7554,"ariaHidden":412},[411],[404,7556,7558,7561],{"className":7557},[416],[404,7559],{"className":7560,"style":726},[420],[404,7562,990],{"className":7563},[425,426],[464,7565,7566],{},"at random"," from a carefully designed family ",[404,7569,7571],{"className":7570},[407],[404,7572,7574],{"className":7573,"ariaHidden":412},[411],[404,7575,7577,7580],{"className":7576},[416],[404,7578],{"className":7579,"style":571},[420],[404,7581,7585],{"className":7582,"style":7584},[425,7583],"mathcal","margin-right:0.0097em;","H"," of hash\nfunctions at runtime, so no single input is bad for all choices.",[381,7588,7589,7590,7605,7606,3792,7621,7678,7679,7682,7683,535],{},"A family ",[404,7591,7593],{"className":7592},[407],[404,7594,7596],{"className":7595,"ariaHidden":412},[411],[404,7597,7599,7602],{"className":7598},[416],[404,7600],{"className":7601,"style":571},[420],[404,7603,7585],{"className":7604,"style":7584},[425,7583]," of functions from ",[404,7607,7609],{"className":7608},[407],[404,7610,7612],{"className":7611,"ariaHidden":412},[411],[404,7613,7615,7618],{"className":7614},[416],[404,7616],{"className":7617,"style":571},[420],[404,7619,576],{"className":7620,"style":575},[425,426],[404,7622,7624],{"className":7623},[407],[404,7625,7627],{"className":7626,"ariaHidden":412},[411],[404,7628,7630,7633],{"className":7629},[416],[404,7631],{"className":7632,"style":421},[420],[404,7634,7636,7639,7642,7645,7648,7651,7654,7657,7660,7663,7666,7669,7672,7675],{"className":7635},[598],[404,7637,604],{"className":7638,"style":603},[432,602],[404,7640,608],{"className":7641},[425],[404,7643,535],{"className":7644},[534],[404,7646],{"className":7647,"style":448},[447],[404,7649,627],{"className":7650},[598],[404,7652],{"className":7653,"style":448},[447],[404,7655,535],{"className":7656},[534],[404,7658],{"className":7659,"style":448},[447],[404,7661,640],{"className":7662},[425,426],[404,7664],{"className":7665,"style":644},[447],[404,7667,649],{"className":7668},[648],[404,7670],{"className":7671,"style":644},[447],[404,7673,488],{"className":7674},[425],[404,7676,659],{"className":7677,"style":603},[456,602]," is\n",[385,7680,7681],{},"universal"," if, for every pair of distinct keys ",[404,7684,7686],{"className":7685},[407],[404,7687,7689,7747],{"className":7688,"ariaHidden":412},[411],[404,7690,7692,7695,7698,7701,7744],{"className":7691},[416],[404,7693],{"className":7694,"style":3590},[420],[404,7696,731],{"className":7697,"style":730},[425,426],[404,7699],{"className":7700,"style":580},[447],[404,7702,7704,7737,7741],{"className":7703},[584],[404,7705,7707],{"className":7706},[584],[404,7708,7711],{"className":7709},[425,7710],"vbox",[404,7712,7715],{"className":7713},[7714],"thinbox",[404,7716,7719,7722,7733],{"className":7717},[7718],"rlap",[404,7720],{"className":7721,"style":3590},[420],[404,7723,7726],{"className":7724},[7725],"inner",[404,7727,7729],{"className":7728},[425],[404,7730,7732],{"className":7731},[584],"",[404,7734],{"className":7735},[7736],"fix",[404,7738],{"className":7739},[447,7740],"nobreak",[404,7742,585],{"className":7743},[584],[404,7745],{"className":7746,"style":580},[447],[404,7748,7750,7753],{"className":7749},[416],[404,7751],{"className":7752,"style":726},[420],[404,7754,7756],{"className":7755},[425],"ℓ",[404,7758,7760],{"className":7759},[974],[404,7761,7763],{"className":7762},[407],[404,7764,7766,7859,7892],{"className":7765,"ariaHidden":412},[411],[404,7767,7769,7773,7830,7838,7841,7844,7847,7850,7853,7856],{"className":7768},[416],[404,7770],{"className":7771,"style":7772},[420],"height:1.2em;vertical-align:-0.35em;",[404,7774,7776,7783],{"className":7775},[437],[404,7777,7779],{"className":7778},[437],[404,7780,7782],{"className":7781},[425,441],"Pr",[404,7784,7786],{"className":7785},[871],[404,7787,7789,7821],{"className":7788},[875,1678],[404,7790,7792,7818],{"className":7791},[879],[404,7793,7796],{"className":7794,"style":7795},[883],"height:0.3361em;",[404,7797,7799,7802],{"style":7798},"top:-2.55em;margin-right:0.05em;",[404,7800],{"className":7801,"style":891},[890],[404,7803,7805],{"className":7804},[895,896,897,898],[404,7806,7808,7811,7815],{"className":7807},[425,898],[404,7809,990],{"className":7810},[425,426,898],[404,7812,7814],{"className":7813},[584,898],"∈",[404,7816,7585],{"className":7817,"style":7584},[425,7583,898],[404,7819,1702],{"className":7820},[1701],[404,7822,7824],{"className":7823},[879],[404,7825,7828],{"className":7826,"style":7827},[883],"height:0.1774em;",[404,7829],{},[404,7831,7833],{"className":7832},[432],[404,7834,527],{"className":7835},[7836,7837],"delimsizing","size1",[404,7839,990],{"className":7840},[425,426],[404,7842,433],{"className":7843},[432],[404,7845,731],{"className":7846,"style":730},[425,426],[404,7848,457],{"className":7849},[456],[404,7851],{"className":7852,"style":580},[447],[404,7854,585],{"className":7855},[584],[404,7857],{"className":7858,"style":580},[447],[404,7860,7862,7865,7868,7871,7874,7877,7883,7886,7889],{"className":7861},[416],[404,7863],{"className":7864,"style":7772},[420],[404,7866,990],{"className":7867},[425,426],[404,7869,433],{"className":7870},[432],[404,7872,7756],{"className":7873},[425],[404,7875,457],{"className":7876},[456],[404,7878,7880],{"className":7879},[456],[404,7881,546],{"className":7882},[7836,7837],[404,7884],{"className":7885,"style":580},[447],[404,7887,2866],{"className":7888},[584],[404,7890],{"className":7891,"style":580},[447],[404,7893,7895,7899,7961],{"className":7894},[416],[404,7896],{"className":7897,"style":7898},[420],"height:2.0074em;vertical-align:-0.686em;",[404,7900,7902,7905,7958],{"className":7901},[425],[404,7903],{"className":7904},[432,2015],[404,7906,7908],{"className":7907},[2019],[404,7909,7911,7950],{"className":7910},[875,1678],[404,7912,7914,7947],{"className":7913},[879],[404,7915,7917,7928,7936],{"className":7916,"style":6020},[883],[404,7918,7919,7922],{"style":2032},[404,7920],{"className":7921,"style":2036},[890],[404,7923,7925],{"className":7924},[425],[404,7926,640],{"className":7927},[425,426],[404,7929,7930,7933],{"style":2045},[404,7931],{"className":7932,"style":2036},[890],[404,7934],{"className":7935,"style":2053},[2052],[404,7937,7938,7941],{"style":2056},[404,7939],{"className":7940,"style":2036},[890],[404,7942,7944],{"className":7943},[425],[404,7945,488],{"className":7946},[425],[404,7948,1702],{"className":7949},[1701],[404,7951,7953],{"className":7952},[879],[404,7954,7956],{"className":7955,"style":2075},[883],[404,7957],{},[404,7959],{"className":7960},[456,2015],[404,7962,535],{"className":7963},[534],[381,7965,7966,7967,7982,7983,7998,7999,8002,8003,8036,8037,8079,8080,8083,8084,8091],{},"where the probability is over the random choice of ",[404,7968,7970],{"className":7969},[407],[404,7971,7973],{"className":7972,"ariaHidden":412},[411],[404,7974,7976,7979],{"className":7975},[416],[404,7977],{"className":7978,"style":726},[420],[404,7980,990],{"className":7981},[425,426],". That is, a randomly\nchosen ",[404,7984,7986],{"className":7985},[407],[404,7987,7989],{"className":7988,"ariaHidden":412},[411],[404,7990,7992,7995],{"className":7991},[416],[404,7993],{"className":7994,"style":726},[420],[404,7996,990],{"className":7997},[425,426]," collides any fixed pair no more often than picking two random slots\nwould. This single property suffices to prove that, for ",[464,8000,8001],{},"any"," input set of keys,\nthe expected length of the chain holding a given key is at most ",[404,8004,8006],{"className":8005},[407],[404,8007,8009,8027],{"className":8008,"ariaHidden":412},[411],[404,8010,8012,8015,8018,8021,8024],{"className":8011},[416],[404,8013],{"className":8014,"style":2404},[420],[404,8016,488],{"className":8017},[425],[404,8019],{"className":8020,"style":644},[447],[404,8022,2240],{"className":8023},[648],[404,8025],{"className":8026,"style":644},[447],[404,8028,8030,8033],{"className":8029},[416],[404,8031],{"className":8032,"style":1243},[420],[404,8034,1992],{"className":8035,"style":1991},[425,426],",\nrecovering the ",[404,8038,8040],{"className":8039},[407],[404,8041,8043,8067],{"className":8042,"ariaHidden":412},[411],[404,8044,8046,8049,8052,8055,8058,8061,8064],{"className":8045},[416],[404,8047],{"className":8048,"style":421},[420],[404,8050,2227],{"className":8051},[425],[404,8053,433],{"className":8054},[432],[404,8056,488],{"className":8057},[425],[404,8059],{"className":8060,"style":644},[447],[404,8062,2240],{"className":8063},[648],[404,8065],{"className":8066,"style":644},[447],[404,8068,8070,8073,8076],{"className":8069},[416],[404,8071],{"className":8072,"style":421},[420],[404,8074,1992],{"className":8075,"style":1991},[425,426],[404,8077,457],{"className":8078},[456]," bound ",[464,8081,8082],{},"without"," assuming anything about the\ndata.",[494,8085,8086],{},[399,8087,1651],{"href":8088,"ariaDescribedBy":8089,"dataFootnoteRef":376,"id":8090},"#user-content-fn-clrs-universal",[500],"user-content-fnref-clrs-universal"," The randomness lives in our coin flips, not in an assumption about the\nworld.",[381,8093,8094,8095,8135,8136,8212,8213,8289],{},"A concrete universal family: pick a prime ",[404,8096,8098],{"className":8097},[407],[404,8099,8101,8120],{"className":8100,"ariaHidden":412},[411],[404,8102,8104,8108,8111,8114,8117],{"className":8103},[416],[404,8105],{"className":8106,"style":8107},[420],"height:0.7335em;vertical-align:-0.1944em;",[404,8109,381],{"className":8110},[425,426],[404,8112],{"className":8113,"style":580},[447],[404,8115,1233],{"className":8116},[584],[404,8118],{"className":8119,"style":580},[447],[404,8121,8123,8126,8129,8132],{"className":8122},[416],[404,8124],{"className":8125,"style":421},[420],[404,8127,1220],{"className":8128},[425],[404,8130,576],{"className":8131,"style":575},[425,426],[404,8133,1220],{"className":8134},[425],", draw random\n",[404,8137,8139],{"className":8138},[407],[404,8140,8142,8161],{"className":8141,"ariaHidden":412},[411],[404,8143,8145,8149,8152,8155,8158],{"className":8144},[416],[404,8146],{"className":8147,"style":8148},[420],"height:0.5782em;vertical-align:-0.0391em;",[404,8150,399],{"className":8151},[425,426],[404,8153],{"className":8154,"style":580},[447],[404,8156,7814],{"className":8157},[584],[404,8159],{"className":8160,"style":580},[447],[404,8162,8164,8167],{"className":8163},[416],[404,8165],{"className":8166,"style":421},[420],[404,8168,8170,8173,8176,8179,8182,8185,8188,8191,8194,8197,8200,8203,8206,8209],{"className":8169},[598],[404,8171,604],{"className":8172,"style":603},[432,602],[404,8174,488],{"className":8175},[425],[404,8177,535],{"className":8178},[534],[404,8180],{"className":8181,"style":448},[447],[404,8183,627],{"className":8184},[598],[404,8186],{"className":8187,"style":448},[447],[404,8189,535],{"className":8190},[534],[404,8192],{"className":8193,"style":448},[447],[404,8195,381],{"className":8196},[425,426],[404,8198],{"className":8199,"style":644},[447],[404,8201,649],{"className":8202},[648],[404,8204],{"className":8205,"style":644},[447],[404,8207,488],{"className":8208},[425],[404,8210,659],{"className":8211,"style":603},[456,602]," and ",[404,8214,8216],{"className":8215},[407],[404,8217,8219,8238],{"className":8218,"ariaHidden":412},[411],[404,8220,8222,8226,8229,8232,8235],{"className":8221},[416],[404,8223],{"className":8224,"style":8225},[420],"height:0.7335em;vertical-align:-0.0391em;",[404,8227,542],{"className":8228},[425,426],[404,8230],{"className":8231,"style":580},[447],[404,8233,7814],{"className":8234},[584],[404,8236],{"className":8237,"style":580},[447],[404,8239,8241,8244],{"className":8240},[416],[404,8242],{"className":8243,"style":421},[420],[404,8245,8247,8250,8253,8256,8259,8262,8265,8268,8271,8274,8277,8280,8283,8286],{"className":8246},[598],[404,8248,604],{"className":8249,"style":603},[432,602],[404,8251,608],{"className":8252},[425],[404,8254,535],{"className":8255},[534],[404,8257],{"className":8258,"style":448},[447],[404,8260,627],{"className":8261},[598],[404,8263],{"className":8264,"style":448},[447],[404,8266,535],{"className":8267},[534],[404,8269],{"className":8270,"style":448},[447],[404,8272,381],{"className":8273},[425,426],[404,8275],{"className":8276,"style":644},[447],[404,8278,649],{"className":8279},[648],[404,8281],{"className":8282,"style":644},[447],[404,8284,488],{"className":8285},[425],[404,8287,659],{"className":8288,"style":603},[456,602],", and set",[404,8291,8293],{"className":8292},[974],[404,8294,8296],{"className":8295},[407],[404,8297,8299,8374,8402,8435,8471],{"className":8298,"ariaHidden":412},[411],[404,8300,8302,8306,8356,8359,8362,8365,8368,8371],{"className":8301},[416],[404,8303],{"className":8304,"style":8305},[420],"height:1.0361em;vertical-align:-0.2861em;",[404,8307,8309,8312],{"className":8308},[425],[404,8310,990],{"className":8311},[425,426],[404,8313,8315],{"className":8314},[871],[404,8316,8318,8347],{"className":8317},[875,1678],[404,8319,8321,8344],{"className":8320},[879],[404,8322,8324],{"className":8323,"style":7795},[883],[404,8325,8326,8329],{"style":4628},[404,8327],{"className":8328,"style":891},[890],[404,8330,8332],{"className":8331},[895,896,897,898],[404,8333,8335,8338,8341],{"className":8334},[425,898],[404,8336,399],{"className":8337},[425,426,898],[404,8339,535],{"className":8340},[534,898],[404,8342,542],{"className":8343},[425,426,898],[404,8345,1702],{"className":8346},[1701],[404,8348,8350],{"className":8349},[879],[404,8351,8354],{"className":8352,"style":8353},[883],"height:0.2861em;",[404,8355],{},[404,8357,433],{"className":8358},[432],[404,8360,731],{"className":8361,"style":730},[425,426],[404,8363,457],{"className":8364},[456],[404,8366],{"className":8367,"style":580},[447],[404,8369,585],{"className":8370},[584],[404,8372],{"className":8373,"style":580},[447],[404,8375,8377,8380,8386,8389,8393,8396,8399],{"className":8376},[416],[404,8378],{"className":8379,"style":7772},[420],[404,8381,8383],{"className":8382},[432],[404,8384,433],{"className":8385},[7836,7837],[404,8387,433],{"className":8388},[432],[404,8390,8392],{"className":8391,"style":730},[425,426],"ak",[404,8394],{"className":8395,"style":644},[447],[404,8397,2240],{"className":8398},[648],[404,8400],{"className":8401,"style":644},[447],[404,8403,8405,8408,8411,8414,8417,8420,8429,8432],{"className":8404},[416],[404,8406],{"className":8407,"style":421},[420],[404,8409,542],{"className":8410},[425,426],[404,8412,457],{"className":8413},[456],[404,8415],{"className":8416,"style":4022},[447],[404,8418],{"className":8419,"style":644},[447],[404,8421,8423],{"className":8422},[648],[404,8424,8426],{"className":8425},[425],[404,8427,4035],{"className":8428},[425,441],[404,8430],{"className":8431,"style":4022},[447],[404,8433],{"className":8434,"style":644},[447],[404,8436,8438,8441,8444,8450,8453,8456,8465,8468],{"className":8437},[416],[404,8439],{"className":8440,"style":7772},[420],[404,8442,381],{"className":8443},[425,426],[404,8445,8447],{"className":8446},[456],[404,8448,457],{"className":8449},[7836,7837],[404,8451],{"className":8452,"style":4022},[447],[404,8454],{"className":8455,"style":644},[447],[404,8457,8459],{"className":8458},[648],[404,8460,8462],{"className":8461},[425],[404,8463,4035],{"className":8464},[425,441],[404,8466],{"className":8467,"style":4022},[447],[404,8469],{"className":8470,"style":644},[447],[404,8472,8474,8477,8480],{"className":8473},[416],[404,8475],{"className":8476,"style":1243},[420],[404,8478,640],{"className":8479},[425,426],[404,8481,1086],{"className":8482},[425],[381,8484,8485,8486,8556,8557,8581,8582,8609,8610,1146,8634,8637],{},"The collection ",[404,8487,8489],{"className":8488},[407],[404,8490,8492],{"className":8491,"ariaHidden":412},[411],[404,8493,8495,8498],{"className":8494},[416],[404,8496],{"className":8497,"style":8305},[420],[404,8499,8501,8504,8553],{"className":8500},[598],[404,8502,604],{"className":8503,"style":603},[432,602],[404,8505,8507,8510],{"className":8506},[425],[404,8508,990],{"className":8509},[425,426],[404,8511,8513],{"className":8512},[871],[404,8514,8516,8545],{"className":8515},[875,1678],[404,8517,8519,8542],{"className":8518},[879],[404,8520,8522],{"className":8521,"style":7795},[883],[404,8523,8524,8527],{"style":4628},[404,8525],{"className":8526,"style":891},[890],[404,8528,8530],{"className":8529},[895,896,897,898],[404,8531,8533,8536,8539],{"className":8532},[425,898],[404,8534,399],{"className":8535},[425,426,898],[404,8537,535],{"className":8538},[534,898],[404,8540,542],{"className":8541},[425,426,898],[404,8543,1702],{"className":8544},[1701],[404,8546,8548],{"className":8547},[879],[404,8549,8551],{"className":8550,"style":8353},[883],[404,8552],{},[404,8554,659],{"className":8555,"style":603},[456,602]," over all valid ",[404,8558,8560],{"className":8559},[407],[404,8561,8563],{"className":8562,"ariaHidden":412},[411],[404,8564,8566,8569,8572,8575,8578],{"className":8565},[416],[404,8567],{"className":8568,"style":3590},[420],[404,8570,399],{"className":8571},[425,426],[404,8573,535],{"className":8574},[534],[404,8576],{"className":8577,"style":448},[447],[404,8579,542],{"className":8580},[425,426]," is universal. Universal\nhashing is the rigorous foundation under the everyday claim that ",[508,8583,8584,8585],{},"hashing is ",[404,8586,8588],{"className":8587},[407],[404,8589,8591],{"className":8590,"ariaHidden":412},[411],[404,8592,8594,8597,8600,8603,8606],{"className":8593},[416],[404,8595],{"className":8596,"style":421},[420],[404,8598,428],{"className":8599,"style":427},[425,426],[404,8601,433],{"className":8602},[432],[404,8604,488],{"className":8605},[425],[404,8607,457],{"className":8608},[456],": it is ",[404,8611,8613],{"className":8612},[407],[404,8614,8616],{"className":8615,"ariaHidden":412},[411],[404,8617,8619,8622,8625,8628,8631],{"className":8618},[416],[404,8620],{"className":8621,"style":421},[420],[404,8623,428],{"className":8624,"style":427},[425,426],[404,8626,433],{"className":8627},[432],[404,8629,488],{"className":8630},[425],[404,8632,457],{"className":8633},[456],[464,8635,8636],{},"in expectation, on every input",", precisely because we\nrandomize the hash function.",[549,8639,8641],{"id":8640},"takeaways","Takeaways",[3895,8643,8644,8681,8715,8810,8879],{},[3898,8645,8646,8647,8649,8650,8652,8653,8677,8678,8680],{},"A ",[385,8648,461],{}," implements the ",[385,8651,391],{}," ADT — insert, search, delete —\nin expected ",[404,8654,8656],{"className":8655},[407],[404,8657,8659],{"className":8658,"ariaHidden":412},[411],[404,8660,8662,8665,8668,8671,8674],{"className":8661},[416],[404,8663],{"className":8664,"style":421},[420],[404,8666,428],{"className":8667,"style":427},[425,426],[404,8669,433],{"className":8670},[432],[404,8672,488],{"className":8673},[425],[404,8675,457],{"className":8676},[456]," time by mapping keys into an array with a ",[385,8679,970],{},",\ntrading away the ordered queries a search tree supports.",[3898,8682,8683,8686,8687,8711,8712,1086],{},[385,8684,8685],{},"Direct addressing"," is perfect but needs one slot per possible key; hashing\nshrinks the table to ",[404,8688,8690],{"className":8689},[407],[404,8691,8693],{"className":8692,"ariaHidden":412},[411],[404,8694,8696,8699,8702,8705,8708],{"className":8695},[416],[404,8697],{"className":8698,"style":421},[420],[404,8700,2227],{"className":8701},[425],[404,8703,433],{"className":8704},[432],[404,8706,452],{"className":8707},[425,426],[404,8709,457],{"className":8710},[456]," and resolves the resulting ",[385,8713,8714],{},"collisions",[3898,8716,8717,8720,8721,8763,8764,8767,8768,1086],{},[385,8718,8719],{},"Chaining"," keeps a list per slot (search cost ",[404,8722,8724],{"className":8723},[407],[404,8725,8727,8751],{"className":8726,"ariaHidden":412},[411],[404,8728,8730,8733,8736,8739,8742,8745,8748],{"className":8729},[416],[404,8731],{"className":8732,"style":421},[420],[404,8734,2227],{"className":8735},[425],[404,8737,433],{"className":8738},[432],[404,8740,488],{"className":8741},[425],[404,8743],{"className":8744,"style":644},[447],[404,8746,2240],{"className":8747},[648],[404,8749],{"className":8750,"style":644},[447],[404,8752,8754,8757,8760],{"className":8753},[416],[404,8755],{"className":8756,"style":421},[420],[404,8758,1992],{"className":8759,"style":1991},[425,426],[404,8761,457],{"className":8762},[456],");\n",[385,8765,8766],{},"open addressing"," stores keys in the array and probes (linear, quadratic, or\ndouble hashing), with cost governed by ",[404,8769,8771],{"className":8770},[407],[404,8772,8774,8798],{"className":8773,"ariaHidden":412},[411],[404,8775,8777,8780,8783,8786,8789,8792,8795],{"className":8776},[416],[404,8778],{"className":8779,"style":421},[420],[404,8781,6268],{"className":8782},[425],[404,8784,433],{"className":8785},[432],[404,8787,488],{"className":8788},[425],[404,8790],{"className":8791,"style":644},[447],[404,8793,649],{"className":8794},[648],[404,8796],{"className":8797,"style":644},[447],[404,8799,8801,8804,8807],{"className":8800},[416],[404,8802],{"className":8803,"style":421},[420],[404,8805,1992],{"className":8806,"style":1991},[425,426],[404,8808,457],{"className":8809},[456],[3898,8811,8812,8813,1146,8815,8854,8855,1086],{},"Keeping the ",[385,8814,2086],{},[404,8816,8818],{"className":8817},[407],[404,8819,8821,8839],{"className":8820,"ariaHidden":412},[411],[404,8822,8824,8827,8830,8833,8836],{"className":8823},[416],[404,8825],{"className":8826,"style":1243},[420],[404,8828,1992],{"className":8829,"style":1991},[425,426],[404,8831],{"className":8832,"style":580},[447],[404,8834,585],{"className":8835},[584],[404,8837],{"className":8838,"style":580},[447],[404,8840,8842,8845,8848,8851],{"className":8841},[416],[404,8843],{"className":8844,"style":421},[420],[404,8846,452],{"className":8847},[425,426],[404,8849,2451],{"className":8850},[425],[404,8852,640],{"className":8853},[425,426]," bounded, via resizing, keeps every\noperation expected ",[404,8856,8858],{"className":8857},[407],[404,8859,8861],{"className":8860,"ariaHidden":412},[411],[404,8862,8864,8867,8870,8873,8876],{"className":8863},[416],[404,8865],{"className":8866,"style":421},[420],[404,8868,428],{"className":8869,"style":427},[425,426],[404,8871,433],{"className":8872},[432],[404,8874,488],{"className":8875},[425],[404,8877,457],{"className":8878},[456],[3898,8880,8881,8882,8885,8886,8901,8902,8926,8927,8929],{},"A good hash function scatters structured keys; ",[385,8883,8884],{},"universal hashing"," randomizes\nthe choice of ",[404,8887,8889],{"className":8888},[407],[404,8890,8892],{"className":8891,"ariaHidden":412},[411],[404,8893,8895,8898],{"className":8894},[416],[404,8896],{"className":8897,"style":726},[420],[404,8899,990],{"className":8900},[425,426]," so the ",[404,8903,8905],{"className":8904},[407],[404,8906,8908],{"className":8907,"ariaHidden":412},[411],[404,8909,8911,8914,8917,8920,8923],{"className":8910},[416],[404,8912],{"className":8913,"style":421},[420],[404,8915,428],{"className":8916,"style":427},[425,426],[404,8918,433],{"className":8919},[432],[404,8921,488],{"className":8922},[425],[404,8924,457],{"className":8925},[456]," expectation holds against ",[464,8928,2643],{}," input, not\njust under an assumption.",[8931,8932,8935,8940],"section",{"className":8933,"dataFootnotes":376},[8934],"footnotes",[549,8936,8939],{"className":8937,"id":500},[8938],"sr-only","Footnotes",[8941,8942,8943,8982,8994,9006],"ol",{},[3898,8944,8946,8949,8950,8974,8975],{"id":8945},"user-content-fn-clrs-hash",[385,8947,8948],{},"CLRS",", Ch. 11 — Hash Tables (§11.1–11.2): the dictionary ADT and the expected ",[404,8951,8953],{"className":8952},[407],[404,8954,8956],{"className":8955,"ariaHidden":412},[411],[404,8957,8959,8962,8965,8968,8971],{"className":8958},[416],[404,8960],{"className":8961,"style":421},[420],[404,8963,428],{"className":8964,"style":427},[425,426],[404,8966,433],{"className":8967},[432],[404,8969,488],{"className":8970},[425],[404,8972,457],{"className":8973},[456]," guarantee from hashing. ",[399,8976,8981],{"href":8977,"ariaLabel":8978,"className":8979,"dataFootnoteBackref":376},"#user-content-fnref-clrs-hash","Back to reference 1",[8980],"data-footnote-backref","↩",[3898,8983,8985,8988,8989],{"id":8984},"user-content-fn-erickson-hash",[385,8986,8987],{},"Erickson",", Ch. 5 — Hash Tables: the simple uniform hashing assumption and expected chain length. ",[399,8990,8981],{"href":8991,"ariaLabel":8992,"className":8993,"dataFootnoteBackref":376},"#user-content-fnref-erickson-hash","Back to reference 2",[8980],[3898,8995,8997,9000,9001],{"id":8996},"user-content-fn-skiena-hash",[385,8998,8999],{},"Skiena",", §3.7 — Hashing and Strings: hashing string keys via Horner's-rule polynomial evaluation. ",[399,9002,8981],{"href":9003,"ariaLabel":9004,"className":9005,"dataFootnoteBackref":376},"#user-content-fnref-skiena-hash","Back to reference 3",[8980],[3898,9007,9009,9011,9012,9054,9055],{"id":9008},"user-content-fn-clrs-universal",[385,9010,8948],{},", Ch. 11 — Hash Tables (§11.3.3): universal families and the ",[404,9013,9015],{"className":9014},[407],[404,9016,9018,9042],{"className":9017,"ariaHidden":412},[411],[404,9019,9021,9024,9027,9030,9033,9036,9039],{"className":9020},[416],[404,9022],{"className":9023,"style":421},[420],[404,9025,2227],{"className":9026},[425],[404,9028,433],{"className":9029},[432],[404,9031,488],{"className":9032},[425],[404,9034],{"className":9035,"style":644},[447],[404,9037,2240],{"className":9038},[648],[404,9040],{"className":9041,"style":644},[447],[404,9043,9045,9048,9051],{"className":9044},[416],[404,9046],{"className":9047,"style":421},[420],[404,9049,1992],{"className":9050,"style":1991},[425,426],[404,9052,457],{"className":9053},[456]," bound without distributional assumptions. ",[399,9056,8981],{"href":9057,"ariaLabel":9058,"className":9059,"dataFootnoteBackref":376},"#user-content-fnref-clrs-universal","Back to reference 4",[8980],[9061,9062,9063],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}html.dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}",{"title":376,"searchDepth":18,"depth":18,"links":9065},[9066,9067,9070,9073,9074,9075,9076],{"id":551,"depth":18,"text":552},{"id":1270,"depth":18,"text":1271,"children":9068},[9069],{"id":1936,"depth":24,"text":1937},{"id":2831,"depth":18,"text":2832,"children":9071},[9072],{"id":5911,"depth":24,"text":5912},{"id":6774,"depth":18,"text":6775},{"id":7511,"depth":18,"text":7512},{"id":8640,"depth":18,"text":8641},{"id":500,"depth":18,"text":8939},"Many problems need only three operations on a set of records, each identified by\na key: insert a record, search for the record with a given key, and delete a\nrecord. This is the dictionary abstract data type (also called an\nassociative array or map), and it is one of the most heavily used data\nstructures in all of computing: symbol tables in compilers, routing tables in\nnetworks, the dict in your favorite scripting language. A balanced search tree\ndoes all three in O(logn) time. A hash table does them in expectedO(1) time: constant, independent of how many keys are stored.1 The price is\nthat it gives up the ordering a tree provides, with no efficient next larger key or \"all keys in [a,b]\", in exchange for raw speed on the point\noperations.","md",{"moduleNumber":73,"lessonNumber":6,"order":9080},401,true,[9083,9087,9091,9094,9097],{"title":9084,"slug":9085,"difficulty":9086},"Two Sum","two-sum","Easy",{"title":9088,"slug":9089,"difficulty":9090},"Group Anagrams","group-anagrams","Medium",{"title":9092,"slug":9093,"difficulty":9090},"Longest Consecutive Sequence","longest-consecutive-sequence",{"title":9095,"slug":9096,"difficulty":9090},"LRU Cache","lru-cache",{"title":9098,"slug":9099,"difficulty":9086},"Design HashMap","design-hashmap","---\ntitle: Hash Tables\nmodule: Data Structures\nmoduleNumber: 4\nlessonNumber: 1\norder: 401\nsummary: >-\n  A hash table implements the dictionary — insert, search, delete — in expected\n  $O(1)$ time by scattering keys across an array with a hash function. We build\n  up from direct addressing, handle collisions by chaining and by open\n  addressing, analyze the load factor $\\alpha$, and see how universal hashing\n  earns its expected-time guarantee against every input.\ntopics: [Hashing]\nsources:\n  - book: CLRS\n    ref: \"Ch. 11 — Hash Tables\"\n  - book: Skiena\n    ref: \"§3.7 — Hashing and Strings\"\n  - book: Erickson\n    ref: \"Ch. 5 — Hash Tables\"\npractice:\n  - title: 'Two Sum'\n    slug: two-sum\n    difficulty: Easy\n  - title: 'Group Anagrams'\n    slug: group-anagrams\n    difficulty: Medium\n  - title: 'Longest Consecutive Sequence'\n    slug: longest-consecutive-sequence\n    difficulty: Medium\n  - title: 'LRU Cache'\n    slug: lru-cache\n    difficulty: Medium\n  - title: 'Design HashMap'\n    slug: design-hashmap\n    difficulty: Easy\n---\n\nMany problems need only three operations on a set of records, each identified by\na **key**: insert a record, search for the record with a given key, and delete a\nrecord. This is the **dictionary** abstract data type (also called an\nassociative array or map), and it is one of the most heavily used data\nstructures in all of computing: symbol tables in compilers, routing tables in\nnetworks, the `dict` in your favorite scripting language. A [balanced search tree](\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees)\ndoes all three in $O(\\log n)$ time. A **hash table** does them in _expected_\n$O(1)$ time: constant, independent of how many keys are stored.[^clrs-hash] The price is\nthat it gives up the _ordering_ a tree provides, with no efficient \"next\nlarger key\" or \"all keys in $[a,b]$\", in exchange for raw speed on the point\noperations.\n\n## From direct addressing to hashing\n\nStart with the easy case. Suppose every key is drawn from a small **universe**\n$U = \\set{0, 1, \\dots, m-1}$. Then we can keep an array $T[0..m-1]$, a\n**direct-address table**, and store the record with key $k$ in slot $T[k]$.\nInsert, search, and delete are each a single array access: worst-case $O(1)$,\nunbeatable.\n\n```algorithm\ncaption: Direct-address dictionary operations on table $T$\nDirect-Address-Insert(T, x):\n  $T[key(x)] \\gets x$\nDirect-Address-Search(T, k):\n  return $T[k]$\nDirect-Address-Delete(T, x):\n  $T[key(x)] \\gets \\text{nil}$\n```\n\nDirect addressing fails the moment the universe is large. To store $64$-bit\nintegers we would need an array of $2^{64}$ slots, impossible, even though we\nmay hold only a few thousand keys. The waste is glaring: $T$ is almost entirely\nempty. The remedy is to use a table $T[0..m-1]$ that is only as big as the number\nof keys we expect, and to compute a slot from the key with a **hash function**\n\n$$\nh : U \\to \\set{0, 1, \\dots, m-1}.\n$$\n\nThe key $k$ lives in slot $h(k)$. We say $k$ **hashes** to slot $h(k)$, and\n$h(k)$ is the **hash value**. Because $|U| > m$, the function $h$ cannot be\ninjective: two distinct keys can map to the same slot. That event is a\n**collision**, and the entire theory of hash tables is the theory of coping with\ncollisions gracefully.\n\n## Collision resolution by chaining\n\nThe most natural fix is **chaining**: each slot $T[j]$ holds a [linked list](\u002Falgorithms\u002Fdata-structures\u002Felementary-structures) of all\nthe keys that hash to $j$. To insert, prepend to the list at $T[h(k)]$; to\nsearch, scan that one list; to delete, splice the record out of its list.\n\n$$\n% caption: Chained hash table where colliding keys share a linked list per slot\n\\begin{tikzpicture}[\n  slot\u002F.style={draw, minimum width=8mm, minimum height=7mm},\n  cell\u002F.style={draw, rounded corners, minimum width=9mm, minimum height=6mm, fill=acc!12},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\i in {0,...,5} {\n    \\node[slot] (s\\i) at (0,{-0.8*\\i}) {\\i};\n  }\n  \\node[cell] (a) [right=8mm of s1] {$k_2$};\n  \\node[cell] (b) [right=6mm of a] {$k_7$};\n  \\draw[->] (s1.east) -- (a.west);\n  \\draw[->] (a.east) -- (b.west);\n  \\node[cell] (c) [right=8mm of s3] {$k_4$};\n  \\draw[->] (s3.east) -- (c.west);\n  \\node[cell] (d) [right=8mm of s4] {$k_1$};\n  \\node[cell] (e) [right=6mm of d] {$k_5$};\n  \\node[cell] (f) [right=6mm of e] {$k_9$};\n  \\draw[->] (s4.east) -- (d.west);\n  \\draw[->] (d.east) -- (e.west);\n  \\draw[->] (e.east) -- (f.west);\n\\end{tikzpicture}\n$$\n\nSlots $1$, $3$, and $4$ hold chains; the rest are empty. Keys $k_1$, $k_5$,\n$k_9$ all collided at slot $4$, so they share a list.\n\n```algorithm\ncaption: Chained-hash dictionary operations on table $T$\nChained-Hash-Insert(T, x):\n  insert $x$ at the head of list $T[h(key(x))]$\nChained-Hash-Search(T, k):\n  search the list $T[h(k)]$ for an element with key $k$\nChained-Hash-Delete(T, x):\n  delete $x$ from the list $T[h(key(x))]$\n```\n\nInsertion is $O(1)$ (prepend, assuming the key is not already present). Deletion\nis $O(1)$ given a pointer to the record in a doubly linked list. Search costs\ntime proportional to the length of the chain it scans, and _that_ is what we\nmust analyze.\n\n### The load factor and expected search time\n\nLet $n$ be the number of keys stored in a table of $m$ slots. The ratio\n\n$$\n\\alpha = \\frac{n}{m}\n$$\n\nis the **load factor**, the average number of keys per slot. With chaining\n$\\alpha$ may exceed $1$; it is the average chain length.\n\nTo say anything about _expected_ chain length we need an assumption about how\nkeys spread out. The standard one is **simple uniform hashing**: each key is\nequally likely to hash to any of the $m$ slots, independently of the others.[^erickson-hash]\nUnder this assumption a chain has expected length $\\alpha$, and a search\nexamines on average $\\alpha$ keys plus the cost of computing $h$ and indexing\nthe table:\n\n> **Theorem.** Under simple uniform hashing, an unsuccessful search in a chained\n> hash table takes expected time $\\Theta(1 + \\alpha)$, and so does a successful\n> search.\n\n_Sketch._ For an unsuccessful search on key $k$, we scan the entire chain\n$T[h(k)]$, whose expected length is $\\alpha$; add $\\Theta(1)$ to compute $h(k)$.\nFor a successful search, the expected number of elements examined before finding\n$k$ is $1 + \\alpha\u002F2 - \\alpha\u002F(2n) = \\Theta(1 + \\alpha)$ by averaging over the\norder in which keys were inserted. Either way the bound is $\\Theta(1 + \\alpha)$.\n\nThe consequence is the headline result. If we keep the table size proportional\nto the number of keys, $m = \\Theta(n)$ so $\\alpha = O(1)$, then _every_\ndictionary operation runs in [expected $\\Theta(1)$ time](\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis). Keeping $\\alpha$ bounded\nis the job of **dynamic resizing**: when $\\alpha$ grows past a threshold (say\n$1$), allocate a table of double the size and rehash every key into it. A single\nresize costs $\\Theta(n)$, but it is triggered only after $\\Theta(n)$ cheap\noperations, so the _amortized_ cost per operation stays $O(1)$, the same\ndoubling argument that makes a dynamic array's append amortized $O(1)$.\n\n## Collision resolution by open addressing\n\nChaining stores keys outside the table. **Open addressing** stores every key\n_inside_ the array itself: there are no lists and no pointers, so $\\alpha \\le 1$\nalways. When a key's preferred slot is occupied, we **probe** a deterministic\nsequence of alternative slots until we find an empty one. The probe sequence is\ndefined by extending the hash function with a probe number $i$:\n\n$$\nh : U \\times \\set{0, 1, \\dots, m-1} \\to \\set{0, 1, \\dots, m-1},\n$$\n\nso the slots tried for key $k$ are $h(k,0), h(k,1), h(k,2), \\dots$, which must\nform a permutation of all $m$ slots so that probing can examine every slot.\n\n```algorithm\ncaption: $\\textsc{Hash-Insert}(T, k)$ — open addressing, returns the slot used\n$i \\gets 0$\nrepeat\n  $j \\gets h(k, i)$\n  if $T[j] = \\text{nil}$ then\n    $T[j] \\gets k$\n    return $j$\n  $i \\gets i + 1$\nuntil $i = m$\nerror \"hash table overflow\"\n```\n\nSearch follows the _same_ probe sequence, stopping when it finds $k$ (success)\nor an empty slot (failure, since $k$ is not present, because insertion would have\nused that empty slot). Deletion is the awkward case: simply emptying a slot would\nbreak the probe chains of other keys, so deleted slots are marked with a special\n`deleted` sentinel that search skips over but insertion may reuse. Heavy\ndeletion is the classic reason to prefer chaining.\n\n$$\n% caption: Why deletion needs a tombstone. Keys $k_1,k_2,k_3$ probed into a run ending at\n%          slot $5$. Erasing $k_2$ to $\\text{nil}$ (top) would make a later search for\n%          $k_3$ stop early at the gap; marking it $\\textsc{deleted}$ (bottom) lets search\n%          probe past while insertion may reuse the slot.\n\\begin{tikzpicture}[\n  slot\u002F.style={draw, minimum width=10mm, minimum height=7mm, font=\\small, inner sep=1pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\name\u002F\\yy\u002F\\mid in {%\n    {erase $\\to$ nil}\u002F{0}\u002F{nil},%\n    {tombstone}\u002F{-1.5}\u002F{\\textsc{del}}%\n  }{\n    \\begin{scope}[yshift=\\yy cm]\n      \\node[font=\\scriptsize, anchor=east] at (-0.4,0) {\\name};\n      \\node[slot] (a) at (0,0) {$k_1$};\n      \\node[slot, right=0mm of a] (b) {\\mid};\n      \\node[slot, right=0mm of b] (c) {$k_3$};\n      \\node[slot, right=0mm of c] (d) {};\n    \\end{scope}\n  }\n  \\node[font=\\scriptsize, acc] at (5.0,0) {search $k_3$: stops at gap};\n  \\node[font=\\scriptsize, acc] at (5.4,-1.5) {search $k_3$: probes past, found};\n  \\draw[->, red!75!black] (1.0,-1.05) to[bend left=40] (2.0,-1.05);\n\\end{tikzpicture}\n$$\n\nThree probing schemes are standard:\n\n- **Linear probing.** $h(k, i) = (h'(k) + i) \\bmod m$ for an ordinary hash\n  function $h'$. Simple and cache-friendly, but it suffers **primary\n  clustering**: long runs of occupied slots build up and grow ever faster,\n  since any key hashing anywhere into a run must walk to its end.\n\n$$\n% caption: Primary clustering. A run of four occupied slots (shaded) absorbs any new key\n%          whose hash $h'(k)$ lands on slot $3$, $4$, $5$, or $6$ — four of the eleven\n%          slots, each forcing a walk to the run's right end at slot $7$ (red). Every such\n%          insertion lengthens the run, so clusters snowball: the bigger the run, the\n%          likelier the next key extends it.\n\\begin{tikzpicture}[\n  slot\u002F.style={draw, minimum width=7mm, minimum height=7mm, font=\\scriptsize, inner sep=0},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\j in {0,...,10} {\n    \\ifnum\\j>2 \\ifnum\\j\u003C7 \\fill[black!12] ({\\j*0.78-0.35},-0.35) rectangle ({\\j*0.78+0.35},0.35); \\fi\\fi\n    \\node[slot] (c\\j) at ({\\j*0.78},0) {\\j};\n  }\n  % brace under the run\n  \\draw[acc, thick] (3*0.78-0.35,-0.55) -- (3*0.78-0.35,-0.75) -- (6*0.78+0.35,-0.75) -- (6*0.78+0.35,-0.55);\n  \\node[acc, font=\\scriptsize, below] at (4.5*0.78,-0.78) {run of $4$: any hit here walks to slot $7$};\n  % red probe arc from a hit at slot 4 to landing at 7\n  \\draw[->, red!75!black] (4*0.78,0.42) to[bend left=40] node[above, font=\\scriptsize, fill=white, inner sep=1pt] {probe $\\to$} (7*0.78,0.42);\n  \\node[draw=acc, very thick, minimum width=7mm, minimum height=7mm, inner sep=0] at (7*0.78,0) {};\n\\end{tikzpicture}\n$$\n- **Quadratic probing.** $h(k, i) = (h'(k) + c_1 i + c_2 i^2) \\bmod m$. The\n  quadratic step spreads probes out, eliminating primary clustering, but two\n  keys with the same initial slot follow the _same_ sequence, a milder\n  **secondary clustering**. The constants and $m$ must be chosen so the\n  sequence hits every slot.\n- **Double hashing.** $h(k, i) = (h_1(k) + i \\cdot h_2(k)) \\bmod m$, using a\n  second hash function to set the step size. Different keys with the same start\n  get _different_ step sizes, so probe sequences rarely coincide. Double hashing\n  comes closest to the ideal of **uniform hashing** (every key's probe sequence\n  equally likely to be any of the $m!$ permutations), and is the strongest of\n  the three.\n\n$$\n% caption: Three probe sequences from $h'(k)=7$ in a table of size $m=11$ with slots\n%          $\\{0,7,8,10\\}$ occupied (shaded). Labels $0,1,2,\\dots$ give probe order; the\n%          boxed slot is where the key lands. Linear walks $+1$ (lands $9$); quadratic\n%          adds $i^2$ (lands $5$); double hashing steps by $h_2(k)=3$ (lands $2$).\n\\begin{tikzpicture}[\n  slot\u002F.style={draw, minimum width=6.5mm, minimum height=6.5mm, font=\\scriptsize, inner sep=0},\n  pn\u002F.style={font=\\scriptsize, acc},\n  land\u002F.style={draw=acc, very thick, minimum width=6.5mm, minimum height=6.5mm, inner sep=0},\n  >=stealth, node distance=0mm]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\foreach \\name\u002F\\yy\u002F\\occ\u002F\\probes\u002F\\landed in {%\n    {linear}\u002F{0}\u002F{0,7,8,10}\u002F{7\u002F0,8\u002F1,9\u002F2}\u002F{9},%\n    {quadratic}\u002F{-1.4}\u002F{0,7,8,10}\u002F{7\u002F0,8\u002F1,0\u002F2,5\u002F3}\u002F{5},%\n    {double $h_2{=}3$}\u002F{-2.8}\u002F{0,7,8,10}\u002F{7\u002F0,10\u002F1,2\u002F2}\u002F{2}%\n  }{\n    \\begin{scope}[yshift=\\yy cm]\n      \\node[font=\\scriptsize, anchor=east] at (-0.3,0) {\\name};\n      \\foreach \\o in \\occ { \\fill[black!12] ({\\o*0.72-0.325},-0.325) rectangle ({\\o*0.72+0.325},0.325); }\n      \\fill[acc!15] ({\\landed*0.72-0.325},-0.325) rectangle ({\\landed*0.72+0.325},0.325);\n      \\foreach \\j in {0,...,10} {\n        \\node[slot] (c\\j) at ({\\j*0.72},0) {\\j};\n      }\n      \\node[land] at ({\\landed*0.72},0) {};\n      \\foreach \\s\u002F\\i in \\probes { \\node[pn, above=1mm] at ({\\s*0.72},0.2) {\\i}; }\n    \\end{scope}\n  }\n\\end{tikzpicture}\n$$\n\n### Cost of open addressing\n\nUnder the uniform-hashing assumption, with load factor $\\alpha = n\u002Fm \u003C 1$, the\nexpected number of probes is\n\n$$\n\\text{unsuccessful search:} \\quad \\frac{1}{1 - \\alpha},\n\\qquad\n\\text{successful search:} \\quad \\frac{1}{\\alpha}\\ln\\frac{1}{1 - \\alpha}.\n$$\n\nThe shape of $1\u002F(1-\\alpha)$ is the whole story: at $\\alpha = 0.5$ we expect $2$\nprobes; at $\\alpha = 0.9$, ten probes; as $\\alpha \\to 1$ the cost explodes. Open\naddressing is fast only when the table is kept comfortably below full; a\npractical rule of thumb is to resize once $\\alpha$ exceeds about $0.7$.\n\n$$\n% caption: Expected probes for an unsuccessful search, $1\u002F(1-\\alpha)$, against load factor\n%          $\\alpha$. Flat and cheap while the table is half-empty, the curve turns sharply\n%          upward near $\\alpha=0.7$ (the resize threshold, dashed) and diverges as\n%          $\\alpha\\to 1$ — the reason open addressing must never run near full.\n\\begin{tikzpicture}[>=stealth, x=7cm, y=0.42cm]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\useasboundingbox (-0.18,-1.2) rectangle (1.12,11.3);\n  % axes\n  \\draw[->] (0,0) -- (1.05,0) node[right, font=\\small] {$\\alpha$};\n  \\draw[->] (0,0) -- (0,11) node[above, font=\\small] {probes};\n  \\foreach \\a in {0,0.5,1} { \\node[font=\\scriptsize, below] at (\\a,0) {$\\a$}; }\n  \\foreach \\p in {2,5,10} {\n    \\draw[black!15] (0,\\p) -- (1,\\p);\n    \\node[font=\\scriptsize, left=1mm] at (0,\\p) {\\p};\n  }\n  % resize threshold\n  \\draw[red!75!black, dashed] (0.7,0) -- (0.7,10);\n  \\node[font=\\scriptsize, red!75!black, anchor=south, align=center] at (0.7,10) {resize\\\\$\\alpha{=}0.7$};\n  % curve 1\u002F(1-a), sampled to a=0.9\n  \\draw[acc, very thick, samples=60, domain=0:0.9, smooth]\n    plot (\\x, {1\u002F(1-\\x)});\n  \\node[acc, font=\\scriptsize, anchor=east] at (0.62,3.2) {$\\tfrac{1}{1-\\alpha}$};\n  % markers\n  \\fill[acc] (0.5,2) circle (1.1pt);\n  \\fill[acc] (0.9,10) circle (1.1pt);\n\\end{tikzpicture}\n$$\n\n## What makes a hash function good\n\nSimple uniform hashing is an _assumption_; a real hash function must approximate\nit on real data. A good $h$ should scatter keys so that any regularities in the\ninput, such as sequential integers, common prefixes, or similar strings, do not pile up\nin the same slots. Two classic constructions:\n\n- **The division method.** $h(k) = k \\bmod m$. Fast, but sensitive to $m$:\n  choosing $m$ a power of $2$ makes $h$ depend only on the low bits of $k$, and\n  values near a power of $10$ are bad for decimal data. A prime $m$ not close to\n  a power of $2$ is the safe choice.\n- **The multiplication method.** $h(k) = \\floor{m \\cdot (kA \\bmod 1)}$ for a\n  constant $0 \u003C A \u003C 1$ ($A = (\\sqrt{5}-1)\u002F2$ is a good choice). It is insensitive\n  to the value of $m$, so $m$ can be a power of $2$ for fast bit shifts.\n\nFor string keys, treat the string as a base-$b$ number and fold it down, e.g.\nHorner's rule, $h = (h \\cdot b + c) \\bmod m$ over the characters $c$, so that\nevery character and its position influence the result.[^skiena-hash] Skiena stresses the\nengineer's view: a hash function turns an arbitrary key into a pseudo-random\nslot, and the quality of that pseudo-randomness is exactly what protects the\n$O(1)$ bound.\n\n## Universal hashing: a guarantee against every input\n\nAny _fixed_ hash function has an Achilles' heel: there exists a set of keys that\nall collide, and an adversary (or merely unlucky data) can hand it to us,\ndegrading every operation to $\\Theta(n)$. **Universal hashing** defeats this by\nchoosing $h$ _at random_ from a carefully designed family $\\mathcal{H}$ of hash\nfunctions at runtime, so no single input is bad for all choices.\n\nA family $\\mathcal{H}$ of functions from $U$ to $\\set{0,\\dots,m-1}$ is\n**universal** if, for every pair of distinct keys $k \\ne \\ell$,\n\n$$\n\\Pr_{h \\in \\mathcal{H}}\\bigl[h(k) = h(\\ell)\\bigr] \\le \\frac{1}{m},\n$$\n\nwhere the probability is over the random choice of $h$. That is, a randomly\nchosen $h$ collides any fixed pair no more often than picking two random slots\nwould. This single property suffices to prove that, for _any_ input set of keys,\nthe expected length of the chain holding a given key is at most $1 + \\alpha$,\nrecovering the $\\Theta(1 + \\alpha)$ bound _without_ assuming anything about the\ndata.[^clrs-universal] The randomness lives in our coin flips, not in an assumption about the\nworld.\n\nA concrete universal family: pick a prime $p > |U|$, draw random\n$a \\in \\set{1,\\dots,p-1}$ and $b \\in \\set{0,\\dots,p-1}$, and set\n\n$$\nh_{a,b}(k) = \\bigl((a k + b) \\bmod p\\bigr) \\bmod m.\n$$\n\nThe collection $\\set{h_{a,b}}$ over all valid $a, b$ is universal. Universal\nhashing is the rigorous foundation under the everyday claim that \"hashing is\n$O(1)$\": it is $O(1)$ _in expectation, on every input_, precisely because we\nrandomize the hash function.\n\n## Takeaways\n\n- A **hash table** implements the **dictionary** ADT — insert, search, delete —\n  in expected $O(1)$ time by mapping keys into an array with a **hash function**,\n  trading away the ordered queries a search tree supports.\n- **Direct addressing** is perfect but needs one slot per possible key; hashing\n  shrinks the table to $\\Theta(n)$ and resolves the resulting **collisions**.\n- **Chaining** keeps a list per slot (search cost $\\Theta(1 + \\alpha)$);\n  **open addressing** stores keys in the array and probes (linear, quadratic, or\n  double hashing), with cost governed by $1\u002F(1-\\alpha)$.\n- Keeping the **load factor** $\\alpha = n\u002Fm$ bounded, via resizing, keeps every\n  operation expected $O(1)$.\n- A good hash function scatters structured keys; **universal hashing** randomizes\n  the choice of $h$ so the $O(1)$ expectation holds against _every_ input, not\n  just under an assumption.\n\n[^clrs-hash]: **CLRS**, Ch. 11 — Hash Tables (§11.1–11.2): the dictionary ADT and the expected $O(1)$ guarantee from hashing.\n[^erickson-hash]: **Erickson**, Ch. 5 — Hash Tables: the simple uniform hashing assumption and expected chain length.\n[^skiena-hash]: **Skiena**, §3.7 — Hashing and Strings: hashing string keys via Horner's-rule polynomial evaluation.\n[^clrs-universal]: **CLRS**, Ch. 11 — Hash Tables (§11.3.3): universal families and the $\\Theta(1+\\alpha)$ bound without distributional assumptions.\n",{"text":9102,"minutes":9103,"time":9104,"words":9105},"9 min read",8.395,503700,1679,{"title":83,"description":9077},[9108,9110,9112],{"book":8948,"ref":9109},"Ch. 11 — Hash Tables",{"book":8999,"ref":9111},"§3.7 — Hashing and Strings",{"book":8987,"ref":9113},"Ch. 5 — Hash Tables","available","01.algorithms\u002F04.data-structures\u002F02.hash-tables",[86],"j1_kjCyT9r9fw-nfxKFke0OCSvJqqkL5I57EWxsAnl8",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":9119,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9120,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9121,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9122,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9123,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9124,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9125,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9126,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9127,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9128,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9105,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9129,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9130,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9131,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9132,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9133,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9134,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9135,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9136,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9137,"\u002Falgorithms\u002Fsequences\u002Ftries":9138,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9139,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9140,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9141,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9142,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9143,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9144,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9145,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9146,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9147,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9148,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9149,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9150,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9151,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9152,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9153,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9154,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9155,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9156,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9157,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9158,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9159,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9160,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9161,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9162,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9163,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9164,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9134,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9165,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9166,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9167,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9168,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9150,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9169,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9170,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9130,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9171,"\u002Falgorithms":9172,"\u002Ftheory-of-computation":9173,"\u002Fcomputer-architecture":9173,"\u002Fphysical-computing":9173,"\u002Fdatabases":9173,"\u002Fdeep-learning":9173},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1586,1388,1465,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1568,1451,1291,1543,1883,1443,1599,2038,2241,1744,1678,2288,1929,1657,1412,1554,1418,1713,1798,1694,1762,1534,1595,1262,1495,1630,2306,2142,107,0,{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":9175,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":9176,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":9177,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":9178,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":9179,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":9180,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":9181,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":9182,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":9183,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":9184,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":9185,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":9186,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":9187,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":9188,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":9189,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":9190,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":9191,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":9192,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":9193,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":9194,"\u002Falgorithms\u002Fsequences\u002Ftries":9195,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":9196,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":9197,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":9198,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":9199,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":9200,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":9201,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":9202,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":9203,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":9204,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":9205,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":9206,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":9207,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":9208,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":9209,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":9210,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":9211,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":9212,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":9213,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":9214,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":9215,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":9216,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":9217,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":9218,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":9219,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":9220,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":9221,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":9222,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":9223,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":9224,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":9225,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":9226,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":9227,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":9228,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":9229,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":9230,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":9231,"\u002Falgorithms":9232,"\u002Ftheory-of-computation":9235,"\u002Fcomputer-architecture":9238,"\u002Fphysical-computing":9241,"\u002Fdatabases":9244,"\u002Fdeep-learning":9247},{"path":11,"title":10,"module":5,"summary":14},{"path":17,"title":16,"module":5,"summary":20},{"path":23,"title":22,"module":5,"summary":27},{"path":34,"title":33,"module":29,"summary":37},{"path":40,"title":39,"module":29,"summary":43},{"path":46,"title":45,"module":29,"summary":49},{"path":56,"title":55,"module":51,"summary":59},{"path":62,"title":61,"module":51,"summary":64},{"path":67,"title":66,"module":51,"summary":70},{"path":78,"title":77,"module":72,"summary":81},{"path":84,"title":83,"module":72,"summary":87},{"path":90,"title":89,"module":72,"summary":92},{"path":95,"title":94,"module":72,"summary":98},{"path":101,"title":100,"module":72,"summary":104},{"path":107,"title":106,"module":72,"summary":112},{"path":115,"title":114,"module":72,"summary":119},{"path":126,"title":125,"module":121,"summary":129},{"path":132,"title":131,"module":121,"summary":134},{"path":137,"title":136,"module":121,"summary":140},{"path":143,"title":142,"module":121,"summary":146},{"path":149,"title":148,"module":121,"summary":151},{"path":158,"title":157,"module":153,"summary":162},{"path":165,"title":164,"module":153,"summary":167},{"path":170,"title":169,"module":153,"summary":172},{"path":175,"title":174,"module":153,"summary":177},{"path":180,"title":179,"module":153,"summary":182},{"path":185,"title":184,"module":153,"summary":187},{"path":190,"title":189,"module":153,"summary":192},{"path":195,"title":194,"module":153,"summary":198},{"path":201,"title":200,"module":153,"summary":204},{"path":211,"title":210,"module":206,"summary":213},{"path":216,"title":215,"module":206,"summary":219},{"path":222,"title":221,"module":206,"summary":224},{"path":227,"title":226,"module":206,"summary":229},{"path":236,"title":235,"module":231,"summary":238},{"path":241,"title":240,"module":231,"summary":244},{"path":247,"title":246,"module":231,"summary":249},{"path":252,"title":251,"module":231,"summary":254},{"path":257,"title":256,"module":231,"summary":259},{"path":262,"title":261,"module":231,"summary":264},{"path":267,"title":266,"module":231,"summary":269},{"path":272,"title":271,"module":231,"summary":274},{"path":277,"title":276,"module":231,"summary":279},{"path":282,"title":281,"module":231,"summary":285},{"path":292,"title":291,"module":287,"summary":295},{"path":298,"title":297,"module":287,"summary":300},{"path":303,"title":302,"module":287,"summary":305},{"path":312,"title":311,"module":307,"summary":315},{"path":318,"title":317,"module":307,"summary":320},{"path":323,"title":322,"module":307,"summary":325},{"path":328,"title":327,"module":307,"summary":330},{"path":338,"title":337,"module":332,"summary":341},{"path":344,"title":343,"module":332,"summary":346},{"path":349,"title":348,"module":332,"summary":351},{"path":359,"title":358,"module":353,"summary":362},{"path":364,"title":361,"module":353,"summary":366},{"path":369,"title":368,"module":353,"summary":373},{"path":9233,"title":9234,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":9236,"title":9237,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":9239,"title":9240,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":9242,"title":9243,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":9245,"title":9246,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":9248,"title":9249,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560522164]