[{"data":1,"prerenderedAt":8061},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":374,"course-wordcounts":7929,"ref-card-index":7985},[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":221,"blurb":376,"body":377,"description":7890,"extension":7891,"meta":7892,"module":206,"navigation":7894,"path":222,"practice":7895,"rawbody":7911,"readingTime":7912,"seo":7917,"sources":7918,"status":7925,"stem":7926,"summary":224,"topics":7927,"__hash__":7928},"course\u002F01.algorithms\u002F07.greedy\u002F03.huffman-codes.md","",{"type":378,"value":379,"toc":7876},"minimark",[380,570,602,607,659,666,687,947,951,1146,1345,1490,1597,1601,1666,1678,1742,1779,1783,1786,1852,1855,2204,2207,2607,2616,2919,2922,2989,3000,3265,3451,3455,3477,3482,3573,5133,5139,5269,5653,5657,6038,6899,6954,6958,7102,7279,7375,7379,7512,7516,7811,7872],[381,382,383,384,388,389,413,414,430,431,547,548,552,553,556,557,552,560,563,564,566,567,569],"p",{},"Suppose we want to store or transmit a file of text drawn from some alphabet of\nsymbols, letters being the obvious case. A ",[385,386,387],"strong",{},"fixed-length code"," assigns every\nsymbol a bit string of the same length: with ",[390,391,394],"span",{"className":392},[393],"katex",[390,395,399],{"className":396,"ariaHidden":398},[397],"katex-html","true",[390,400,403,408],{"className":401},[402],"base",[390,404],{"className":405,"style":407},[406],"strut","height:0.6444em;",[390,409,412],{"className":410},[411],"mord","6"," symbols we would spend ",[390,415,417],{"className":416},[393],[390,418,420],{"className":419,"ariaHidden":398},[397],[390,421,423,426],{"className":422},[402],[390,424],{"className":425,"style":407},[406],[390,427,429],{"className":428},[411],"3"," bits\neach (",[390,432,434],{"className":433},[393],[390,435,437,538],{"className":436,"ariaHidden":398},[397],[390,438,440,444,449,513,518,521,526,530,535],{"className":439},[402],[390,441],{"className":442,"style":443},[406],"height:1em;vertical-align:-0.25em;",[390,445,448],{"className":446},[447],"mopen","⌈",[390,450,453,462],{"className":451},[452],"mop",[390,454,456],{"className":455},[452],[390,457,461],{"className":458,"style":460},[411,459],"mathrm","margin-right:0.0139em;","log",[390,463,466],{"className":464},[465],"msupsub",[390,467,471,504],{"className":468},[469,470],"vlist-t","vlist-t2",[390,472,475,499],{"className":473},[474],"vlist-r",[390,476,480],{"className":477,"style":479},[478],"vlist","height:0.207em;",[390,481,483,488],{"style":482},"top:-2.4559em;margin-right:0.05em;",[390,484],{"className":485,"style":487},[486],"pstrut","height:2.7em;",[390,489,495],{"className":490},[491,492,493,494],"sizing","reset-size6","size3","mtight",[390,496,498],{"className":497},[411,494],"2",[390,500,503],{"className":501},[502],"vlist-s","​",[390,505,507],{"className":506},[474],[390,508,511],{"className":509,"style":510},[478],"height:0.2441em;",[390,512],{},[390,514],{"className":515,"style":517},[516],"mspace","margin-right:0.1667em;",[390,519,412],{"className":520},[411],[390,522,525],{"className":523},[524],"mclose","⌉",[390,527],{"className":528,"style":529},[516],"margin-right:0.2778em;",[390,531,534],{"className":532},[533],"mrel","=",[390,536],{"className":537,"style":529},[516],[390,539,541,544],{"className":540},[402],[390,542],{"className":543,"style":407},[406],[390,545,429],{"className":546},[411],"), regardless of how often each symbol appears. But\nreal text is lopsided. In English, ",[549,550,551],"code",{},"e"," and ",[549,554,555],{},"t"," are everywhere while ",[549,558,559],{},"q",[549,561,562],{},"z","\nare rare. It is wasteful to spend as many bits on ",[549,565,562],{}," as on ",[549,568,551],{},".",[381,571,572,573,576,577,581,582,585,586,597,598,601],{},"A ",[385,574,575],{},"variable-length code"," exploits this skew: give the frequent symbols ",[578,579,580],"em",{},"short","\ncodewords and the rare symbols ",[578,583,584],{},"long"," ones, so the total bit count drops.\nHuffman's 1952 algorithm finds the variable-length code that compresses a given\nfile as much as any such code possibly can, and it does so with a beautifully\nsimple greedy rule.",[587,588,589],"sup",{},[590,591,596],"a",{"href":592,"ariaDescribedBy":593,"dataFootnoteRef":376,"id":595},"#user-content-fn-skiena-huffman",[594],"footnote-label","user-content-fnref-skiena-huffman","1"," This lesson is the payoff of the ",[590,599,600],{"href":211},"greedy\nmethod",": a non-obvious algorithm, an\nelegant correctness proof, and a result used billions of times a day inside\nJPEG, MP3, gzip, and PNG.",[603,604,606],"h2",{"id":605},"prefix-free-codes","Prefix-free codes",[381,608,609,610,612,613,552,616,612,618,621,622,625,626,629,630,633,634,636,637,640,641,643,644,647,648,651,652],{},"Variable-length codes carry a hazard. If ",[549,611,551],{}," is ",[549,614,615],{},"0",[549,617,555],{},[549,619,620],{},"01",", then the\nstream ",[549,623,624],{},"001"," is ambiguous (is it ",[549,627,628],{},"e e t","? ",[549,631,632],{},"e ?","?) because the codeword for ",[549,635,551],{},"\nis a ",[578,638,639],{},"prefix"," of the codeword for ",[549,642,555],{},". To decode unambiguously without separator\nsymbols, we insist on a ",[385,645,646],{},"prefix-free code"," (also called a ",[578,649,650],{},"prefix code","): no\ncodeword is a prefix of any other.",[587,653,654],{},[590,655,498],{"href":656,"ariaDescribedBy":657,"dataFootnoteRef":376,"id":658},"#user-content-fn-clrs-prefix",[594],"user-content-fnref-clrs-prefix",[381,660,661,662,665],{},"Prefix-freeness buys us instant, unambiguous decoding: read bits left to right,\nand the moment the bits so far match a codeword, that codeword is the ",[578,663,664],{},"only","\npossible symbol, so emit it and start fresh. Remarkably, restricting to\nprefix-free codes costs nothing in compression: for any uniquely decodable code\nthere is a prefix-free code at least as good, so we lose no optimality by\nconsidering only these.",[381,667,668,669,672,673,676,677,679,680,682,683,686],{},"Every prefix-free code corresponds to a ",[385,670,671],{},"binary tree",". Symbols sit at the\n",[578,674,675],{},"leaves","; the path from the root to a leaf spells its codeword, taking ",[549,678,615],{}," for a\nleft edge and ",[549,681,596],{}," for a right edge. Because symbols are only at leaves, no\ncodeword can be a prefix of another: a prefix would mean one symbol's leaf lies\non the path to another's, impossible when both are leaves. The ",[385,684,685],{},"depth"," of a\nleaf is its codeword's length.",[688,689,693,909],"figure",{"className":690},[691,692],"tikz-figure","tikz-diagram-rendered",[694,695,700],"svg",{"xmlns":696,"width":697,"height":698,"viewBox":699},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","236.523","156.488","-75 -75 177.392 117.366",[701,702,705,712,727,731,739,744,747,759,762,768,773,776,788,791,797,809,812,819,825,831],"g",{"stroke":703,"style":704},"currentColor","stroke-miterlimit:10;stroke-width:.4",[701,706,708],{"fill":707},"var(--tk-soft-neutral)",[709,710],"path",{"d":711},"M-5.653-64.957a7.113 7.113 0 1 0-14.226 0 7.113 7.113 0 0 0 14.226 0Zm-7.113 0",[701,713,715,718],{"fill":714},"var(--tk-soft-accent)",[709,716],{"d":717},"M-49.486-43.617h-11.917a4 4 0 0 0-4 4V-27.7a4 4 0 0 0 4 4h11.917a4 4 0 0 0 4-4v-11.917a4 4 0 0 0-4-4ZM-65.403-23.7",[701,719,721],{"transform":720},"translate(-46.147 34.373)",[709,722],{"d":723,"fill":703,"stroke":703,"className":724,"style":726},"M-10.490-64.957L-12.458-64.957L-12.458-65.273Q-12.234-65.273-12.039-65.324Q-11.843-65.374-11.692-65.495Q-11.540-65.616-11.470-65.823L-9.510-71.294Q-9.457-71.399-9.347-71.399L-9.255-71.399Q-9.145-71.399-9.092-71.294L-7.040-65.568Q-6.961-65.379-6.728-65.326Q-6.495-65.273-6.143-65.273L-6.143-64.957L-8.644-64.957L-8.644-65.273Q-7.906-65.273-7.906-65.524Q-7.906-65.550-7.914-65.568L-8.420-66.983L-10.714-66.983L-11.127-65.823Q-11.153-65.766-11.153-65.713Q-11.153-65.489-10.947-65.381Q-10.740-65.273-10.490-65.273L-10.490-64.957M-9.571-70.186L-10.604-67.295L-8.534-67.295",[725],"tikz-text","stroke-width:0.270",[709,728],{"fill":729,"d":730},"none","m-18.663-60.632-26.623 19.526",[701,732,734],{"transform":733},"translate(-26.728 16.344)",[709,735],{"d":736,"fill":703,"stroke":703,"className":737,"style":738},"M-10.777-64.817Q-11.412-64.817-11.776-65.162Q-12.141-65.507-12.276-66.032Q-12.411-66.557-12.411-67.182Q-12.411-68.207-12.055-68.906Q-11.700-69.605-10.777-69.605Q-9.850-69.605-9.498-68.906Q-9.146-68.207-9.146-67.182Q-9.146-66.557-9.281-66.032Q-9.416-65.507-9.779-65.162Q-10.141-64.817-10.777-64.817M-10.777-65.042Q-10.339-65.042-10.126-65.417Q-9.912-65.791-9.862-66.258Q-9.813-66.724-9.813-67.302Q-9.813-67.855-9.862-68.283Q-9.912-68.710-10.124-69.045Q-10.336-69.380-10.777-69.380Q-11.119-69.380-11.322-69.173Q-11.525-68.966-11.612-68.654Q-11.700-68.341-11.722-68.025Q-11.744-67.708-11.744-67.302Q-11.744-66.885-11.722-66.543Q-11.700-66.201-11.611-65.853Q-11.522-65.504-11.317-65.273Q-11.112-65.042-10.777-65.042",[725],"stroke-width:0.210",[701,740,741],{"fill":707},[709,742],{"d":743},"M37.027-33.659a7.113 7.113 0 1 0-14.227 0 7.113 7.113 0 0 0 14.227 0Zm-7.114 0",[709,745],{"fill":729,"d":746},"m-6.869-60.632 30.885 22.649",[701,748,749,752],{"fill":714},[709,750],{"d":751},"M13.11-12.32H1.193a4 4 0 0 0-4 4V3.599a4 4 0 0 0 4 4H13.11a4 4 0 0 0 4-4V-8.32a4 4 0 0 0-4-4ZM-2.807 7.599",[701,753,755],{"transform":754},"translate(16.641 65.671)",[709,756],{"d":757,"fill":703,"stroke":703,"className":758,"style":726},"M-8.789-64.957L-12.414-64.957L-12.414-65.273Q-11.496-65.273-11.496-65.568L-11.496-70.494Q-11.496-70.789-12.414-70.789L-12.414-71.105L-9.048-71.105Q-8.582-71.105-8.103-70.927Q-7.624-70.749-7.310-70.404Q-6.996-70.059-6.996-69.576Q-6.996-69.026-7.457-68.655Q-7.919-68.284-8.516-68.169Q-8.222-68.169-7.906-68.046Q-7.589-67.923-7.326-67.710Q-7.062-67.497-6.899-67.211Q-6.737-66.926-6.737-66.614Q-6.737-66.113-7.044-65.733Q-7.352-65.353-7.829-65.155Q-8.306-64.957-8.789-64.957M-10.705-68.024L-10.705-65.568Q-10.705-65.374-10.599-65.324Q-10.494-65.273-10.248-65.273L-9.048-65.273Q-8.688-65.273-8.365-65.454Q-8.042-65.634-7.853-65.939Q-7.664-66.245-7.664-66.614Q-7.664-66.957-7.822-67.286Q-7.980-67.616-8.273-67.820Q-8.565-68.024-8.925-68.024L-10.705-68.024M-10.705-70.494L-10.705-68.288L-9.303-68.288Q-8.754-68.288-8.325-68.659Q-7.897-69.031-7.897-69.576Q-7.897-69.901-8.048-70.176Q-8.200-70.450-8.464-70.619Q-8.727-70.789-9.048-70.789L-10.248-70.789Q-10.494-70.789-10.599-70.740Q-10.705-70.692-10.705-70.494",[725],[709,760],{"fill":729,"d":761},"M25.611-27.745 14.536-12.519",[701,763,765],{"transform":764},"translate(25.32 47.08)",[709,766],{"d":736,"fill":703,"stroke":703,"className":767,"style":738},[725],[701,769,770],{"fill":707},[709,771],{"d":772},"M59.789-2.36a7.113 7.113 0 1 0-14.226 0 7.113 7.113 0 0 0 14.226 0Zm-7.113 0",[709,774],{"fill":729,"d":775},"m34.215-27.745 14.16 19.47",[701,777,778,781],{"fill":714},[709,779],{"d":780},"M35.872 18.979H23.955a4 4 0 0 0-4 4v11.917a4 4 0 0 0 4 4h11.917a4 4 0 0 0 4-4V22.979a4 4 0 0 0-4-4ZM19.955 38.896",[701,782,784],{"transform":783},"translate(39.339 96.969)",[709,785],{"d":786,"fill":703,"stroke":703,"className":787,"style":726},"M-10.687-65.919Q-10.367-65.528-9.892-65.302Q-9.417-65.076-8.903-65.076Q-8.341-65.076-7.884-65.359Q-7.427-65.643-7.163-66.126Q-6.899-66.609-6.899-67.154Q-6.899-67.185-6.869-67.209Q-6.838-67.233-6.807-67.233L-6.702-67.233Q-6.609-67.233-6.609-67.119Q-6.609-66.478-6.939-65.935Q-7.268-65.392-7.827-65.076Q-8.385-64.759-9.022-64.759Q-9.901-64.759-10.643-65.203Q-11.386-65.647-11.819-66.403Q-12.252-67.159-12.252-68.033Q-12.252-68.679-12.004-69.279Q-11.755-69.879-11.307-70.336Q-10.859-70.793-10.270-71.048Q-9.681-71.303-9.022-71.303Q-8.547-71.303-8.106-71.096Q-7.664-70.890-7.339-70.529L-6.816-71.268Q-6.798-71.303-6.754-71.303L-6.702-71.303Q-6.666-71.303-6.638-71.274Q-6.609-71.246-6.609-71.219L-6.609-68.789Q-6.609-68.767-6.642-68.738Q-6.675-68.710-6.702-68.710L-6.833-68.710Q-6.860-68.710-6.893-68.738Q-6.926-68.767-6.926-68.789Q-6.926-69.075-7.066-69.468Q-7.207-69.861-7.374-70.103Q-7.651-70.507-8.048-70.747Q-8.446-70.986-8.912-70.986Q-9.250-70.986-9.580-70.885Q-9.910-70.784-10.193-70.591Q-10.476-70.397-10.687-70.143Q-11.298-69.391-11.298-68.033Q-11.298-67.414-11.162-66.875Q-11.026-66.337-10.687-65.919",[725],[709,789],{"fill":729,"d":790},"M48.374 3.553 37.298 18.78",[701,792,794],{"transform":793},"translate(48.083 78.378)",[709,795],{"d":736,"fill":703,"stroke":703,"className":796,"style":738},[725],[701,798,799,802],{"fill":714},[709,800],{"d":801},"M81.396 18.979H69.48a4 4 0 0 0-4 4v11.917a4 4 0 0 0 4 4h11.917a4 4 0 0 0 4-4V22.979a4 4 0 0 0-4-4ZM65.48 38.896",[701,803,805],{"transform":804},"translate(84.671 96.969)",[709,806],{"d":807,"fill":703,"stroke":703,"className":808,"style":726},"M-9.048-64.957L-12.423-64.957L-12.423-65.273Q-11.505-65.273-11.505-65.568L-11.505-70.494Q-11.505-70.789-12.423-70.789L-12.423-71.105L-9.048-71.105Q-8.433-71.105-7.908-70.846Q-7.383-70.586-7.007-70.145Q-6.631-69.703-6.427-69.138Q-6.223-68.574-6.223-67.972Q-6.223-67.194-6.592-66.495Q-6.961-65.796-7.609-65.377Q-8.257-64.957-9.048-64.957M-10.687-70.494L-10.687-65.568Q-10.687-65.374-10.582-65.324Q-10.476-65.273-10.226-65.273L-9.281-65.273Q-8.807-65.273-8.374-65.469Q-7.941-65.665-7.655-66.029Q-7.361-66.394-7.255-66.875Q-7.150-67.356-7.150-67.972Q-7.150-68.372-7.189-68.730Q-7.229-69.088-7.339-69.406Q-7.449-69.725-7.655-69.998Q-7.844-70.252-8.103-70.428Q-8.363-70.604-8.662-70.696Q-8.960-70.789-9.281-70.789L-10.226-70.789Q-10.476-70.789-10.582-70.740Q-10.687-70.692-10.687-70.494",[725],[709,810],{"fill":729,"d":811},"M56.977 3.553 68.053 18.78",[701,813,815],{"transform":814},"translate(78.814 78.378)",[709,816],{"d":817,"fill":703,"stroke":703,"className":818,"style":738},"M-9.440-64.957L-11.970-64.957L-11.970-65.237Q-11.002-65.237-11.002-65.446L-11.002-69.065Q-11.395-68.877-12.017-68.877L-12.017-69.158Q-11.600-69.158-11.236-69.259Q-10.872-69.359-10.616-69.605L-10.490-69.605Q-10.425-69.588-10.408-69.520L-10.408-65.446Q-10.408-65.237-9.440-65.237",[725],[701,820,822],{"transform":821},"translate(57.593 49.203)",[709,823],{"d":817,"fill":703,"stroke":703,"className":824,"style":738},[725],[701,826,828],{"transform":827},"translate(24.873 17.905)",[709,829],{"d":817,"fill":703,"stroke":703,"className":830,"style":738},[725],[701,832,835,843,849,855,861,867,873,879,885,891,897,903],{"stroke":729,"fontFamily":833,"fontSize":834},"cmr8","8",[701,836,838],{"transform":837},"translate(77.51 34.055)",[709,839],{"d":840,"fill":703,"stroke":703,"className":841,"style":842},"M-10.727-93.457L-12.477-93.457L-12.477-93.754Q-11.778-93.754-11.590-94.234L-9.789-99.059Q-9.735-99.168-9.621-99.168L-9.551-99.168Q-9.438-99.168-9.383-99.059L-7.493-94.016Q-7.414-93.848-7.211-93.801Q-7.008-93.754-6.696-93.754L-6.696-93.457L-8.918-93.457L-8.918-93.754Q-8.278-93.754-8.278-93.969Q-8.278-93.988-8.280-93.998Q-8.282-94.008-8.286-94.016L-8.750-95.250L-10.895-95.250L-11.278-94.234Q-11.282-94.219-11.287-94.189Q-11.293-94.160-11.293-94.137Q-11.293-93.996-11.203-93.912Q-11.114-93.828-10.981-93.791Q-10.848-93.754-10.727-93.754L-10.727-93.457M-9.821-98.113L-10.789-95.547L-8.864-95.547",[725],"stroke-width:0.240",[701,844,845],{"transform":837},[709,846],{"d":847,"fill":703,"stroke":703,"className":848,"style":842},"M2.395-94.434L-2.918-94.434Q-2.996-94.441-3.045-94.490Q-3.093-94.539-3.093-94.617Q-3.093-94.687-3.046-94.738Q-3-94.789-2.918-94.801L2.395-94.801Q2.469-94.789 2.516-94.738Q2.563-94.687 2.563-94.617Q2.563-94.539 2.514-94.490Q2.465-94.441 2.395-94.434M2.395-96.121L-2.918-96.121Q-2.996-96.129-3.045-96.178Q-3.093-96.227-3.093-96.305Q-3.093-96.375-3.046-96.426Q-3-96.477-2.918-96.488L2.395-96.488Q2.469-96.477 2.516-96.426Q2.563-96.375 2.563-96.305Q2.563-96.227 2.514-96.178Q2.465-96.129 2.395-96.121",[725],[701,850,851],{"transform":837},[709,852],{"d":853,"fill":703,"stroke":703,"className":854,"style":842},"M7.528-93.289Q6.825-93.289 6.425-93.689Q6.024-94.090 5.880-94.699Q5.735-95.309 5.735-96.008Q5.735-96.531 5.805-96.994Q5.876-97.457 6.069-97.869Q6.262-98.281 6.620-98.529Q6.977-98.777 7.528-98.777Q8.079-98.777 8.436-98.529Q8.794-98.281 8.985-97.871Q9.177-97.461 9.247-96.992Q9.317-96.523 9.317-96.008Q9.317-95.309 9.175-94.701Q9.032-94.094 8.632-93.691Q8.231-93.289 7.528-93.289M7.528-93.547Q8.001-93.547 8.233-93.982Q8.466-94.418 8.520-94.957Q8.575-95.496 8.575-96.137Q8.575-97.133 8.391-97.826Q8.208-98.519 7.528-98.519Q7.161-98.519 6.940-98.281Q6.720-98.043 6.624-97.686Q6.528-97.328 6.503-96.957Q6.477-96.586 6.477-96.137Q6.477-95.496 6.532-94.957Q6.587-94.418 6.819-93.982Q7.052-93.547 7.528-93.547",[725],[701,856,857],{"transform":837},[709,858],{"d":859,"fill":703,"stroke":703,"className":860,"style":842},"M-9.118-83.957L-12.399-83.957L-12.399-84.254Q-12.075-84.254-11.832-84.301Q-11.590-84.348-11.590-84.516L-11.590-88.859Q-11.590-89.031-11.832-89.078Q-12.075-89.125-12.399-89.125L-12.399-89.422L-9.352-89.422Q-8.926-89.422-8.493-89.268Q-8.059-89.113-7.764-88.805Q-7.469-88.496-7.469-88.062Q-7.469-87.809-7.594-87.592Q-7.719-87.375-7.920-87.219Q-8.121-87.062-8.354-86.963Q-8.586-86.863-8.844-86.812Q-8.469-86.777-8.090-86.600Q-7.711-86.422-7.471-86.123Q-7.231-85.824-7.231-85.430Q-7.231-84.977-7.514-84.643Q-7.797-84.309-8.233-84.133Q-8.668-83.957-9.118-83.957M-10.879-86.668L-10.879-84.516Q-10.879-84.344-10.787-84.299Q-10.696-84.254-10.477-84.254L-9.352-84.254Q-9.114-84.254-8.879-84.342Q-8.645-84.430-8.459-84.590Q-8.274-84.750-8.172-84.963Q-8.071-85.176-8.071-85.430Q-8.071-85.750-8.223-86.035Q-8.375-86.320-8.645-86.494Q-8.914-86.668-9.231-86.668L-10.879-86.668M-10.879-88.859L-10.879-86.926L-9.590-86.926Q-9.348-86.926-9.110-87.008Q-8.871-87.090-8.688-87.236Q-8.504-87.383-8.391-87.600Q-8.278-87.816-8.278-88.062Q-8.278-88.273-8.364-88.475Q-8.450-88.676-8.596-88.818Q-8.743-88.961-8.938-89.043Q-9.133-89.125-9.352-89.125L-10.477-89.125Q-10.696-89.125-10.787-89.082Q-10.879-89.039-10.879-88.859",[725],[701,862,863],{"transform":837},[709,864],{"d":865,"fill":703,"stroke":703,"className":866,"style":842},"M2.045-84.934L-3.268-84.934Q-3.346-84.941-3.395-84.990Q-3.443-85.039-3.443-85.117Q-3.443-85.187-3.396-85.238Q-3.350-85.289-3.268-85.301L2.045-85.301Q2.119-85.289 2.166-85.238Q2.213-85.187 2.213-85.117Q2.213-85.039 2.164-84.990Q2.115-84.941 2.045-84.934M2.045-86.621L-3.268-86.621Q-3.346-86.629-3.395-86.678Q-3.443-86.727-3.443-86.805Q-3.443-86.875-3.396-86.926Q-3.350-86.977-3.268-86.988L2.045-86.988Q2.119-86.977 2.166-86.926Q2.213-86.875 2.213-86.805Q2.213-86.727 2.164-86.678Q2.115-86.629 2.045-86.621",[725],[701,868,869],{"transform":837},[709,870],{"d":871,"fill":703,"stroke":703,"className":872,"style":842},"M8.651-83.957L5.858-83.957L5.858-84.254Q6.920-84.254 6.920-84.516L6.920-88.684Q6.491-88.469 5.811-88.469L5.811-88.766Q6.830-88.766 7.346-89.277L7.491-89.277Q7.565-89.258 7.584-89.180L7.584-84.516Q7.584-84.254 8.651-84.254L8.651-83.957M11.424-83.789Q10.721-83.789 10.321-84.189Q9.920-84.590 9.776-85.199Q9.631-85.809 9.631-86.508Q9.631-87.031 9.702-87.494Q9.772-87.957 9.965-88.369Q10.159-88.781 10.516-89.029Q10.873-89.277 11.424-89.277Q11.975-89.277 12.332-89.029Q12.690-88.781 12.881-88.371Q13.073-87.961 13.143-87.492Q13.213-87.023 13.213-86.508Q13.213-85.809 13.071-85.201Q12.928-84.594 12.528-84.191Q12.127-83.789 11.424-83.789M11.424-84.047Q11.897-84.047 12.129-84.482Q12.362-84.918 12.416-85.457Q12.471-85.996 12.471-86.637Q12.471-87.633 12.287-88.326Q12.104-89.019 11.424-89.019Q11.057-89.019 10.836-88.781Q10.616-88.543 10.520-88.186Q10.424-87.828 10.399-87.457Q10.373-87.086 10.373-86.637Q10.373-85.996 10.428-85.457Q10.483-84.918 10.715-84.482Q10.948-84.047 11.424-84.047",[725],[701,874,875],{"transform":837},[709,876],{"d":877,"fill":703,"stroke":703,"className":878,"style":842},"M-12.293-77.191Q-12.293-77.785-12.061-78.316Q-11.828-78.848-11.412-79.248Q-10.996-79.648-10.463-79.869Q-9.930-80.090-9.325-80.090Q-8.887-80.090-8.489-79.908Q-8.090-79.727-7.782-79.394L-7.309-80.059Q-7.278-80.090-7.246-80.090L-7.200-80.090Q-7.172-80.090-7.141-80.059Q-7.110-80.027-7.110-80L-7.110-77.863Q-7.110-77.840-7.141-77.809Q-7.172-77.777-7.200-77.777L-7.317-77.777Q-7.344-77.777-7.375-77.809Q-7.407-77.840-7.407-77.863Q-7.407-78.129-7.549-78.482Q-7.692-78.836-7.871-79.074Q-8.125-79.406-8.475-79.600Q-8.825-79.793-9.231-79.793Q-9.735-79.793-10.188-79.574Q-10.641-79.355-10.934-78.961Q-11.430-78.293-11.430-77.191Q-11.430-76.660-11.293-76.193Q-11.157-75.727-10.881-75.361Q-10.606-74.996-10.186-74.791Q-9.766-74.586-9.223-74.586Q-8.735-74.586-8.311-74.830Q-7.887-75.074-7.639-75.494Q-7.391-75.914-7.391-76.410Q-7.391-76.445-7.362-76.471Q-7.332-76.496-7.301-76.496L-7.200-76.496Q-7.157-76.496-7.133-76.467Q-7.110-76.437-7.110-76.394Q-7.110-75.957-7.286-75.568Q-7.461-75.180-7.772-74.896Q-8.082-74.613-8.493-74.451Q-8.903-74.289-9.325-74.289Q-9.914-74.289-10.455-74.510Q-10.996-74.730-11.412-75.135Q-11.828-75.539-12.061-76.068Q-12.293-76.598-12.293-77.191",[725],[701,880,881],{"transform":837},[709,882],{"d":883,"fill":703,"stroke":703,"className":884,"style":842},"M2.168-75.434L-3.145-75.434Q-3.223-75.441-3.272-75.490Q-3.320-75.539-3.320-75.617Q-3.320-75.687-3.273-75.738Q-3.227-75.789-3.145-75.801L2.168-75.801Q2.242-75.789 2.289-75.738Q2.336-75.687 2.336-75.617Q2.336-75.539 2.287-75.490Q2.238-75.441 2.168-75.434M2.168-77.121L-3.145-77.121Q-3.223-77.129-3.272-77.178Q-3.320-77.227-3.320-77.305Q-3.320-77.375-3.273-77.426Q-3.227-77.477-3.145-77.488L2.168-77.488Q2.242-77.477 2.289-77.426Q2.336-77.375 2.336-77.305Q2.336-77.227 2.287-77.178Q2.238-77.129 2.168-77.121",[725],[701,886,887],{"transform":837},[709,888],{"d":889,"fill":703,"stroke":703,"className":890,"style":842},"M8.773-74.457L5.980-74.457L5.980-74.754Q7.042-74.754 7.042-75.016L7.042-79.184Q6.613-78.969 5.933-78.969L5.933-79.266Q6.952-79.266 7.468-79.777L7.613-79.777Q7.687-79.758 7.706-79.680L7.706-75.016Q7.706-74.754 8.773-74.754L8.773-74.457M13.019-74.457L10.226-74.457L10.226-74.754Q11.288-74.754 11.288-75.016L11.288-79.184Q10.859-78.969 10.179-78.969L10.179-79.266Q11.199-79.266 11.714-79.777L11.859-79.777Q11.933-79.758 11.952-79.680L11.952-75.016Q11.952-74.754 13.019-74.754L13.019-74.457M15.792-74.289Q15.089-74.289 14.689-74.689Q14.288-75.090 14.144-75.699Q13.999-76.309 13.999-77.008Q13.999-77.531 14.070-77.994Q14.140-78.457 14.333-78.869Q14.527-79.281 14.884-79.529Q15.242-79.777 15.792-79.777Q16.343-79.777 16.700-79.529Q17.058-79.281 17.249-78.871Q17.441-78.461 17.511-77.992Q17.581-77.523 17.581-77.008Q17.581-76.309 17.439-75.701Q17.296-75.094 16.896-74.691Q16.495-74.289 15.792-74.289M15.792-74.547Q16.265-74.547 16.497-74.982Q16.730-75.418 16.784-75.957Q16.839-76.496 16.839-77.137Q16.839-78.133 16.656-78.826Q16.472-79.519 15.792-79.519Q15.425-79.519 15.204-79.281Q14.984-79.043 14.888-78.686Q14.792-78.328 14.767-77.957Q14.742-77.586 14.742-77.137Q14.742-76.496 14.796-75.957Q14.851-75.418 15.083-74.982Q15.316-74.547 15.792-74.547",[725],[701,892,893],{"transform":837},[709,894],{"d":895,"fill":703,"stroke":703,"className":896,"style":842},"M-9.352-64.957L-12.414-64.957L-12.414-65.254Q-12.090-65.254-11.848-65.301Q-11.606-65.348-11.606-65.516L-11.606-69.859Q-11.606-70.031-11.848-70.078Q-12.090-70.125-12.414-70.125L-12.414-70.422L-9.352-70.422Q-8.801-70.422-8.323-70.195Q-7.844-69.969-7.491-69.574Q-7.137-69.180-6.948-68.680Q-6.758-68.180-6.758-67.637Q-6.758-66.930-7.102-66.312Q-7.446-65.695-8.041-65.326Q-8.637-64.957-9.352-64.957M-10.864-69.859L-10.864-65.516Q-10.864-65.344-10.772-65.299Q-10.680-65.254-10.461-65.254L-9.567-65.254Q-9.121-65.254-8.729-65.424Q-8.336-65.594-8.065-65.918Q-7.793-66.242-7.696-66.662Q-7.598-67.082-7.598-67.637Q-7.598-67.992-7.635-68.305Q-7.672-68.617-7.778-68.912Q-7.883-69.207-8.063-69.430Q-8.246-69.664-8.485-69.814Q-8.723-69.965-9.004-70.045Q-9.286-70.125-9.567-70.125L-10.461-70.125Q-10.680-70.125-10.772-70.082Q-10.864-70.039-10.864-69.859",[725],[701,898,899],{"transform":837},[709,900],{"d":901,"fill":703,"stroke":703,"className":902,"style":842},"M2.518-65.934L-2.795-65.934Q-2.873-65.941-2.922-65.990Q-2.970-66.039-2.970-66.117Q-2.970-66.187-2.923-66.238Q-2.877-66.289-2.795-66.301L2.518-66.301Q2.592-66.289 2.639-66.238Q2.686-66.187 2.686-66.117Q2.686-66.039 2.637-65.990Q2.588-65.941 2.518-65.934M2.518-67.621L-2.795-67.621Q-2.873-67.629-2.922-67.678Q-2.970-67.727-2.970-67.805Q-2.970-67.875-2.923-67.926Q-2.877-67.977-2.795-67.988L2.518-67.988Q2.592-67.977 2.639-67.926Q2.686-67.875 2.686-67.805Q2.686-67.727 2.637-67.678Q2.588-67.629 2.518-67.621",[725],[701,904,905],{"transform":837},[709,906],{"d":907,"fill":703,"stroke":703,"className":908,"style":842},"M9.123-64.957L6.330-64.957L6.330-65.254Q7.392-65.254 7.392-65.516L7.392-69.684Q6.963-69.469 6.283-69.469L6.283-69.766Q7.302-69.766 7.818-70.277L7.963-70.277Q8.037-70.258 8.056-70.180L8.056-65.516Q8.056-65.254 9.123-65.254L9.123-64.957M13.369-64.957L10.576-64.957L10.576-65.254Q11.638-65.254 11.638-65.516L11.638-69.684Q11.209-69.469 10.529-69.469L10.529-69.766Q11.549-69.766 12.064-70.277L12.209-70.277Q12.283-70.258 12.302-70.180L12.302-65.516Q12.302-65.254 13.369-65.254L13.369-64.957M17.615-64.957L14.822-64.957L14.822-65.254Q15.884-65.254 15.884-65.516L15.884-69.684Q15.455-69.469 14.775-69.469L14.775-69.766Q15.795-69.766 16.310-70.277L16.455-70.277Q16.529-70.258 16.549-70.180L16.549-65.516Q16.549-65.254 17.615-65.254",[725],[910,911,914,915,930,931,946],"figcaption",{"className":912},[913],"tikz-cap","A prefix-free code as a binary tree. Symbols sit only at leaves; the root-to-leaf path spells the codeword (",[390,916,918],{"className":917},[393],[390,919,921],{"className":920,"ariaHidden":398},[397],[390,922,924,927],{"className":923},[402],[390,925],{"className":926,"style":407},[406],[390,928,615],{"className":929},[411]," left, ",[390,932,934],{"className":933},[393],[390,935,937],{"className":936,"ariaHidden":398},[397],[390,938,940,943],{"className":939},[402],[390,941],{"className":942,"style":407},[406],[390,944,596],{"className":945},[411]," right). No codeword is a prefix of another because no leaf lies on the path to another.",[603,948,950],{"id":949},"the-compression-problem","The compression problem",[381,952,953,954,973,974,1010,1011,1038,1039,1056,1057,1124,1125,1141,1142,1145],{},"Let the alphabet be ",[390,955,957],{"className":956},[393],[390,958,960],{"className":959,"ariaHidden":398},[397],[390,961,963,967],{"className":962},[402],[390,964],{"className":965,"style":966},[406],"height:0.6833em;",[390,968,972],{"className":969,"style":971},[411,970],"mathnormal","margin-right:0.0715em;","C",", and let symbol ",[390,975,977],{"className":976},[393],[390,978,980,1001],{"className":979,"ariaHidden":398},[397],[390,981,983,987,991,994,998],{"className":982},[402],[390,984],{"className":985,"style":986},[406],"height:0.5782em;vertical-align:-0.0391em;",[390,988,990],{"className":989},[411,970],"c",[390,992],{"className":993,"style":529},[516],[390,995,997],{"className":996},[533],"∈",[390,999],{"className":1000,"style":529},[516],[390,1002,1004,1007],{"className":1003},[402],[390,1005],{"className":1006,"style":966},[406],[390,1008,972],{"className":1009,"style":971},[411,970]," occur with frequency\n",[390,1012,1014],{"className":1013},[393],[390,1015,1017],{"className":1016,"ariaHidden":398},[397],[390,1018,1020,1024,1027,1030],{"className":1019},[402],[390,1021],{"className":1022,"style":1023},[406],"height:0.8889em;vertical-align:-0.1944em;",[390,1025,990],{"className":1026},[411,970],[390,1028,569],{"className":1029},[411],[390,1031,1033],{"className":1032},[411],[390,1034,1037],{"className":1035},[411,1036],"mathit","freq"," (its count, or its probability) in the file. In a code tree\n",[390,1040,1042],{"className":1041},[393],[390,1043,1045],{"className":1044,"ariaHidden":398},[397],[390,1046,1048,1051],{"className":1047},[402],[390,1049],{"className":1050,"style":966},[406],[390,1052,1055],{"className":1053,"style":1054},[411,970],"margin-right:0.1389em;","T",", let ",[390,1058,1060],{"className":1059},[393],[390,1061,1063],{"className":1062,"ariaHidden":398},[397],[390,1064,1066,1069,1113,1117,1120],{"className":1065},[402],[390,1067],{"className":1068,"style":443},[406],[390,1070,1072,1076],{"className":1071},[411],[390,1073,1075],{"className":1074},[411,970],"d",[390,1077,1079],{"className":1078},[465],[390,1080,1082,1104],{"className":1081},[469,470],[390,1083,1085,1101],{"className":1084},[474],[390,1086,1089],{"className":1087,"style":1088},[478],"height:0.3283em;",[390,1090,1092,1095],{"style":1091},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[390,1093],{"className":1094,"style":487},[486],[390,1096,1098],{"className":1097},[491,492,493,494],[390,1099,1055],{"className":1100,"style":1054},[411,970,494],[390,1102,503],{"className":1103},[502],[390,1105,1107],{"className":1106},[474],[390,1108,1111],{"className":1109,"style":1110},[478],"height:0.15em;",[390,1112],{},[390,1114,1116],{"className":1115},[447],"(",[390,1118,990],{"className":1119},[411,970],[390,1121,1123],{"className":1122},[524],")"," be the depth of ",[390,1126,1128],{"className":1127},[393],[390,1129,1131],{"className":1130,"ariaHidden":398},[397],[390,1132,1134,1138],{"className":1133},[402],[390,1135],{"className":1136,"style":1137},[406],"height:0.4306em;",[390,1139,990],{"className":1140},[411,970],"'s leaf, the number of bits in its\ncodeword. The total number of bits to encode the whole file is the ",[385,1143,1144],{},"cost"," of\nthe tree:",[390,1147,1150],{"className":1148},[1149],"katex-display",[390,1151,1153],{"className":1152},[393],[390,1154,1156,1191,1287],{"className":1155,"ariaHidden":398},[397],[390,1157,1159,1162,1167,1170,1173,1176,1179,1182,1185,1188],{"className":1158},[402],[390,1160],{"className":1161,"style":443},[406],[390,1163,1166],{"className":1164,"style":1165},[411,970],"margin-right:0.0502em;","B",[390,1168,1116],{"className":1169},[447],[390,1171,1055],{"className":1172,"style":1054},[411,970],[390,1174,1123],{"className":1175},[524],[390,1177],{"className":1178,"style":529},[516],[390,1180],{"className":1181,"style":529},[516],[390,1183,534],{"className":1184},[533],[390,1186],{"className":1187,"style":529},[516],[390,1189],{"className":1190,"style":529},[516],[390,1192,1194,1198,1260,1263,1266,1269,1275,1279,1284],{"className":1193},[402],[390,1195],{"className":1196,"style":1197},[406],"height:2.3717em;vertical-align:-1.3217em;",[390,1199,1202],{"className":1200},[452,1201],"op-limits",[390,1203,1205,1251],{"className":1204},[469,470],[390,1206,1208,1248],{"className":1207},[474],[390,1209,1212,1234],{"className":1210,"style":1211},[478],"height:1.05em;",[390,1213,1215,1219],{"style":1214},"top:-1.8557em;margin-left:0em;",[390,1216],{"className":1217,"style":1218},[486],"height:3.05em;",[390,1220,1222],{"className":1221},[491,492,493,494],[390,1223,1225,1228,1231],{"className":1224},[411,494],[390,1226,990],{"className":1227},[411,970,494],[390,1229,997],{"className":1230},[533,494],[390,1232,972],{"className":1233,"style":971},[411,970,494],[390,1235,1237,1240],{"style":1236},"top:-3.05em;",[390,1238],{"className":1239,"style":1218},[486],[390,1241,1242],{},[390,1243,1247],{"className":1244},[452,1245,1246],"op-symbol","large-op","∑",[390,1249,503],{"className":1250},[502],[390,1252,1254],{"className":1253},[474],[390,1255,1258],{"className":1256,"style":1257},[478],"height:1.3217em;",[390,1259],{},[390,1261],{"className":1262,"style":517},[516],[390,1264,990],{"className":1265},[411,970],[390,1267,569],{"className":1268},[411],[390,1270,1272],{"className":1271},[411],[390,1273,1037],{"className":1274},[411,1036],[390,1276],{"className":1277,"style":1278},[516],"margin-right:0.2222em;",[390,1280,1283],{"className":1281},[1282],"mbin","⋅",[390,1285],{"className":1286,"style":1278},[516],[390,1288,1290,1293,1333,1336,1339,1342],{"className":1289},[402],[390,1291],{"className":1292,"style":443},[406],[390,1294,1296,1299],{"className":1295},[411],[390,1297,1075],{"className":1298},[411,970],[390,1300,1302],{"className":1301},[465],[390,1303,1305,1325],{"className":1304},[469,470],[390,1306,1308,1322],{"className":1307},[474],[390,1309,1311],{"className":1310,"style":1088},[478],[390,1312,1313,1316],{"style":1091},[390,1314],{"className":1315,"style":487},[486],[390,1317,1319],{"className":1318},[491,492,493,494],[390,1320,1055],{"className":1321,"style":1054},[411,970,494],[390,1323,503],{"className":1324},[502],[390,1326,1328],{"className":1327},[474],[390,1329,1331],{"className":1330,"style":1110},[478],[390,1332],{},[390,1334,1116],{"className":1335},[447],[390,1337,990],{"className":1338},[411,970],[390,1340,1123],{"className":1341},[524],[390,1343,569],{"className":1344},[411],[1346,1347,1349],"callout",{"type":1348},"problem",[381,1350,1351,1354,1355,1370,1371,1395,1396,1429,1430,1433,1434,1449,1450,1465,1466,569],{},[385,1352,1353],{},"Input:"," an alphabet ",[390,1356,1358],{"className":1357},[393],[390,1359,1361],{"className":1360,"ariaHidden":398},[397],[390,1362,1364,1367],{"className":1363},[402],[390,1365],{"className":1366,"style":966},[406],[390,1368,972],{"className":1369,"style":971},[411,970]," with a frequency ",[390,1372,1374],{"className":1373},[393],[390,1375,1377],{"className":1376,"ariaHidden":398},[397],[390,1378,1380,1383,1386,1389],{"className":1379},[402],[390,1381],{"className":1382,"style":1023},[406],[390,1384,990],{"className":1385},[411,970],[390,1387,569],{"className":1388},[411],[390,1390,1392],{"className":1391},[411],[390,1393,1037],{"className":1394},[411,1036]," for each\n",[390,1397,1399],{"className":1398},[393],[390,1400,1402,1420],{"className":1401,"ariaHidden":398},[397],[390,1403,1405,1408,1411,1414,1417],{"className":1404},[402],[390,1406],{"className":1407,"style":986},[406],[390,1409,990],{"className":1410},[411,970],[390,1412],{"className":1413,"style":529},[516],[390,1415,997],{"className":1416},[533],[390,1418],{"className":1419,"style":529},[516],[390,1421,1423,1426],{"className":1422},[402],[390,1424],{"className":1425,"style":966},[406],[390,1427,972],{"className":1428,"style":971},[411,970],".\n",[385,1431,1432],{},"Output:"," a binary tree ",[390,1435,1437],{"className":1436},[393],[390,1438,1440],{"className":1439,"ariaHidden":398},[397],[390,1441,1443,1446],{"className":1442},[402],[390,1444],{"className":1445,"style":966},[406],[390,1447,1055],{"className":1448,"style":1054},[411,970]," whose leaves are the symbols of ",[390,1451,1453],{"className":1452},[393],[390,1454,1456],{"className":1455,"ariaHidden":398},[397],[390,1457,1459,1462],{"className":1458},[402],[390,1460],{"className":1461,"style":966},[406],[390,1463,972],{"className":1464,"style":971},[411,970],", minimizing\nthe cost ",[390,1467,1469],{"className":1468},[393],[390,1470,1472],{"className":1471,"ariaHidden":398},[397],[390,1473,1475,1478,1481,1484,1487],{"className":1474},[402],[390,1476],{"className":1477,"style":443},[406],[390,1479,1166],{"className":1480,"style":1165},[411,970],[390,1482,1116],{"className":1483},[447],[390,1485,1055],{"className":1486,"style":1054},[411,970],[390,1488,1123],{"className":1489},[524],[381,1491,1492,1493,1496,1497,1544,1545,1560,1561,1596],{},"An optimal code's tree is always ",[385,1494,1495],{},"full"," — every internal node has exactly two\nchildren. (A one-child node wastes a bit: promote its subtree and every codeword\nbeneath it shortens.) So with ",[390,1498,1500],{"className":1499},[393],[390,1501,1503,1522],{"className":1502,"ariaHidden":398},[397],[390,1504,1506,1509,1513,1516,1519],{"className":1505},[402],[390,1507],{"className":1508,"style":1137},[406],[390,1510,1512],{"className":1511},[411,970],"n",[390,1514],{"className":1515,"style":529},[516],[390,1517,534],{"className":1518},[533],[390,1520],{"className":1521,"style":529},[516],[390,1523,1525,1528],{"className":1524},[402],[390,1526],{"className":1527,"style":443},[406],[390,1529,1532,1538,1541],{"className":1530},[1531],"minner",[390,1533,1537],{"className":1534,"style":1536},[447,1535],"delimcenter","top:0em;","∣",[390,1539,972],{"className":1540,"style":971},[411,970],[390,1542,1537],{"className":1543,"style":1536},[524,1535]," symbols, an optimal tree has ",[390,1546,1548],{"className":1547},[393],[390,1549,1551],{"className":1550,"ariaHidden":398},[397],[390,1552,1554,1557],{"className":1553},[402],[390,1555],{"className":1556,"style":1137},[406],[390,1558,1512],{"className":1559},[411,970],"\nleaves and exactly ",[390,1562,1564],{"className":1563},[393],[390,1565,1567,1587],{"className":1566,"ariaHidden":398},[397],[390,1568,1570,1574,1577,1580,1584],{"className":1569},[402],[390,1571],{"className":1572,"style":1573},[406],"height:0.6667em;vertical-align:-0.0833em;",[390,1575,1512],{"className":1576},[411,970],[390,1578],{"className":1579,"style":1278},[516],[390,1581,1583],{"className":1582},[1282],"−",[390,1585],{"className":1586,"style":1278},[516],[390,1588,1590,1593],{"className":1589},[402],[390,1591],{"className":1592,"style":407},[406],[390,1594,596],{"className":1595},[411]," internal nodes.",[603,1598,1600],{"id":1599},"huffmans-algorithm","Huffman's algorithm",[381,1602,1603,1604,1607,1608,1611,1612,1615,1616,1623,1624,1627,1628,1631,1632,1665],{},"Huffman's greedy insight is to think about the tree ",[578,1605,1606],{},"bottom-up",", and to ask:\nwhich two symbols belong ",[385,1609,1610],{},"deepest"," in the tree? Surely the two ",[578,1613,1614],{},"least frequent","\nones, since they are the cheapest to bury: multiplying their long codewords by\nsmall frequencies costs little.",[587,1617,1618],{},[590,1619,429],{"href":1620,"ariaDescribedBy":1621,"dataFootnoteRef":376,"id":1622},"#user-content-fn-clrs-huffman",[594],"user-content-fnref-clrs-huffman"," So make the two rarest symbols siblings at the\nbottom, merge them into a single ",[559,1625,1626],{},"super-symbol"," whose frequency is their sum, and\n",[578,1629,1630],{},"repeat"," on the smaller alphabet. Each merge fuses two nodes into one, so after\n",[390,1633,1635],{"className":1634},[393],[390,1636,1638,1656],{"className":1637,"ariaHidden":398},[397],[390,1639,1641,1644,1647,1650,1653],{"className":1640},[402],[390,1642],{"className":1643,"style":1573},[406],[390,1645,1512],{"className":1646},[411,970],[390,1648],{"className":1649,"style":1278},[516],[390,1651,1583],{"className":1652},[1282],[390,1654],{"className":1655,"style":1278},[516],[390,1657,1659,1662],{"className":1658},[402],[390,1660],{"className":1661,"style":407},[406],[390,1663,596],{"className":1664},[411]," merges a single tree remains.",[381,1667,572,1668,1673,1674,1677],{},[590,1669,1670],{"href":56},[385,1671,1672],{},"min-priority queue"," keyed on\nfrequency makes ",[559,1675,1676],{},"the two least frequent"," cheap to extract.",[1679,1680,1684],"pre",{"className":1681,"code":1682,"language":1683,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Huffman}(C)$ — build an optimal prefix-free code tree\nnumber: 1\n$n \\gets \\abs{C}$\n$Q \\gets$ a min-priority queue holding all symbols of $C$, keyed on $\\mathit{freq}$\nfor $i \\gets 1$ to $n - 1$ do\n  allocate a new internal node $z$\n  $z.\\mathit{left} \\gets x \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F rarest remaining\n  $z.\\mathit{right} \\gets y \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F next rarest\n  $z.\\mathit{freq} \\gets x.\\mathit{freq} + y.\\mathit{freq}$\n  call $\\textsc{Insert}(Q, z)$ \u002F\u002F re-insert merged super-symbol\nreturn $\\textsc{Extract-Min}(Q)$ \u002F\u002F last node is the root\n","algorithm",[549,1685,1686,1692,1697,1702,1707,1712,1717,1722,1727,1732,1737],{"__ignoreMap":376},[390,1687,1689],{"class":1688,"line":6},"line",[390,1690,1691],{},"caption: $\\textsc{Huffman}(C)$ — build an optimal prefix-free code tree\n",[390,1693,1694],{"class":1688,"line":18},[390,1695,1696],{},"number: 1\n",[390,1698,1699],{"class":1688,"line":24},[390,1700,1701],{},"$n \\gets \\abs{C}$\n",[390,1703,1704],{"class":1688,"line":73},[390,1705,1706],{},"$Q \\gets$ a min-priority queue holding all symbols of $C$, keyed on $\\mathit{freq}$\n",[390,1708,1709],{"class":1688,"line":102},[390,1710,1711],{},"for $i \\gets 1$ to $n - 1$ do\n",[390,1713,1714],{"class":1688,"line":108},[390,1715,1716],{},"  allocate a new internal node $z$\n",[390,1718,1719],{"class":1688,"line":116},[390,1720,1721],{},"  $z.\\mathit{left} \\gets x \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F rarest remaining\n",[390,1723,1724],{"class":1688,"line":196},[390,1725,1726],{},"  $z.\\mathit{right} \\gets y \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F next rarest\n",[390,1728,1729],{"class":1688,"line":202},[390,1730,1731],{},"  $z.\\mathit{freq} \\gets x.\\mathit{freq} + y.\\mathit{freq}$\n",[390,1733,1734],{"class":1688,"line":283},[390,1735,1736],{},"  call $\\textsc{Insert}(Q, z)$ \u002F\u002F re-insert merged super-symbol\n",[390,1738,1739],{"class":1688,"line":333},[390,1740,1741],{},"return $\\textsc{Extract-Min}(Q)$ \u002F\u002F last node is the root\n",[381,1743,1744,1745,1778],{},"Each iteration removes two nodes and inserts one, shrinking the queue by one; the\nsingle survivor after ",[390,1746,1748],{"className":1747},[393],[390,1749,1751,1769],{"className":1750,"ariaHidden":398},[397],[390,1752,1754,1757,1760,1763,1766],{"className":1753},[402],[390,1755],{"className":1756,"style":1573},[406],[390,1758,1512],{"className":1759},[411,970],[390,1761],{"className":1762,"style":1278},[516],[390,1764,1583],{"className":1765},[1282],[390,1767],{"className":1768,"style":1278},[516],[390,1770,1772,1775],{"className":1771},[402],[390,1773],{"className":1774,"style":407},[406],[390,1776,596],{"className":1777},[411]," rounds is the root of the finished tree. Reading\nthe tree from the root gives every symbol's codeword.",[603,1780,1782],{"id":1781},"building-a-huffman-tree-by-hand","Building a Huffman tree by hand",[381,1784,1785],{},"Take a six-symbol alphabet with these frequencies (in thousands of occurrences),\nthe classic CLRS example:",[1787,1788,1789,1825],"table",{},[1790,1791,1792],"thead",{},[1793,1794,1795,1799,1803,1808,1812,1816,1820],"tr",{},[1796,1797,1798],"th",{},"Symbol",[1796,1800,1801],{},[549,1802,590],{},[1796,1804,1805],{},[549,1806,1807],{},"b",[1796,1809,1810],{},[549,1811,990],{},[1796,1813,1814],{},[549,1815,1075],{},[1796,1817,1818],{},[549,1819,551],{},[1796,1821,1822],{},[549,1823,1824],{},"f",[1826,1827,1828],"tbody",{},[1793,1829,1830,1834,1837,1840,1843,1846,1849],{},[1831,1832,1833],"td",{},"Frequency",[1831,1835,1836],{},"45",[1831,1838,1839],{},"13",[1831,1841,1842],{},"12",[1831,1844,1845],{},"16",[1831,1847,1848],{},"9",[1831,1850,1851],{},"5",[381,1853,1854],{},"We repeatedly merge the two smallest frequencies:",[1856,1857,1858,1931,2001,2069,2135],"ol",{},[1859,1860,1861,1862,1864,552,1885,1887,1908,1909,569],"li",{},"Merge ",[549,1863,1824],{},[390,1865,1867],{"className":1866},[393],[390,1868,1870],{"className":1869,"ariaHidden":398},[397],[390,1871,1873,1876,1879,1882],{"className":1872},[402],[390,1874],{"className":1875,"style":443},[406],[390,1877,1116],{"className":1878},[447],[390,1880,1851],{"className":1881},[411],[390,1883,1123],{"className":1884},[524],[549,1886,551],{},[390,1888,1890],{"className":1889},[393],[390,1891,1893],{"className":1892,"ariaHidden":398},[397],[390,1894,1896,1899,1902,1905],{"className":1895},[402],[390,1897],{"className":1898,"style":443},[406],[390,1900,1116],{"className":1901},[447],[390,1903,1848],{"className":1904},[411],[390,1906,1123],{"className":1907},[524]," → node ",[390,1910,1912],{"className":1911},[393],[390,1913,1915],{"className":1914,"ariaHidden":398},[397],[390,1916,1918,1921,1924,1928],{"className":1917},[402],[390,1919],{"className":1920,"style":443},[406],[390,1922,1116],{"className":1923},[447],[390,1925,1927],{"className":1926},[411],"14",[390,1929,1123],{"className":1930},[524],[1859,1932,1861,1933,1935,552,1956,1958,1908,1979,569],{},[549,1934,990],{},[390,1936,1938],{"className":1937},[393],[390,1939,1941],{"className":1940,"ariaHidden":398},[397],[390,1942,1944,1947,1950,1953],{"className":1943},[402],[390,1945],{"className":1946,"style":443},[406],[390,1948,1116],{"className":1949},[447],[390,1951,1842],{"className":1952},[411],[390,1954,1123],{"className":1955},[524],[549,1957,1807],{},[390,1959,1961],{"className":1960},[393],[390,1962,1964],{"className":1963,"ariaHidden":398},[397],[390,1965,1967,1970,1973,1976],{"className":1966},[402],[390,1968],{"className":1969,"style":443},[406],[390,1971,1116],{"className":1972},[447],[390,1974,1839],{"className":1975},[411],[390,1977,1123],{"className":1978},[524],[390,1980,1982],{"className":1981},[393],[390,1983,1985],{"className":1984,"ariaHidden":398},[397],[390,1986,1988,1991,1994,1998],{"className":1987},[402],[390,1989],{"className":1990,"style":443},[406],[390,1992,1116],{"className":1993},[447],[390,1995,1997],{"className":1996},[411],"25",[390,1999,1123],{"className":2000},[524],[1859,2002,1861,2003,552,2024,2026,1908,2047,569],{},[390,2004,2006],{"className":2005},[393],[390,2007,2009],{"className":2008,"ariaHidden":398},[397],[390,2010,2012,2015,2018,2021],{"className":2011},[402],[390,2013],{"className":2014,"style":443},[406],[390,2016,1116],{"className":2017},[447],[390,2019,1927],{"className":2020},[411],[390,2022,1123],{"className":2023},[524],[549,2025,1075],{},[390,2027,2029],{"className":2028},[393],[390,2030,2032],{"className":2031,"ariaHidden":398},[397],[390,2033,2035,2038,2041,2044],{"className":2034},[402],[390,2036],{"className":2037,"style":443},[406],[390,2039,1116],{"className":2040},[447],[390,2042,1845],{"className":2043},[411],[390,2045,1123],{"className":2046},[524],[390,2048,2050],{"className":2049},[393],[390,2051,2053],{"className":2052,"ariaHidden":398},[397],[390,2054,2056,2059,2062,2066],{"className":2055},[402],[390,2057],{"className":2058,"style":443},[406],[390,2060,1116],{"className":2061},[447],[390,2063,2065],{"className":2064},[411],"30",[390,2067,1123],{"className":2068},[524],[1859,2070,1861,2071,552,2092,1908,2113,569],{},[390,2072,2074],{"className":2073},[393],[390,2075,2077],{"className":2076,"ariaHidden":398},[397],[390,2078,2080,2083,2086,2089],{"className":2079},[402],[390,2081],{"className":2082,"style":443},[406],[390,2084,1116],{"className":2085},[447],[390,2087,1997],{"className":2088},[411],[390,2090,1123],{"className":2091},[524],[390,2093,2095],{"className":2094},[393],[390,2096,2098],{"className":2097,"ariaHidden":398},[397],[390,2099,2101,2104,2107,2110],{"className":2100},[402],[390,2102],{"className":2103,"style":443},[406],[390,2105,1116],{"className":2106},[447],[390,2108,2065],{"className":2109},[411],[390,2111,1123],{"className":2112},[524],[390,2114,2116],{"className":2115},[393],[390,2117,2119],{"className":2118,"ariaHidden":398},[397],[390,2120,2122,2125,2128,2132],{"className":2121},[402],[390,2123],{"className":2124,"style":443},[406],[390,2126,1116],{"className":2127},[447],[390,2129,2131],{"className":2130},[411],"55",[390,2133,1123],{"className":2134},[524],[1859,2136,1861,2137,2139,552,2160,2181,2182,569],{},[549,2138,590],{},[390,2140,2142],{"className":2141},[393],[390,2143,2145],{"className":2144,"ariaHidden":398},[397],[390,2146,2148,2151,2154,2157],{"className":2147},[402],[390,2149],{"className":2150,"style":443},[406],[390,2152,1116],{"className":2153},[447],[390,2155,1836],{"className":2156},[411],[390,2158,1123],{"className":2159},[524],[390,2161,2163],{"className":2162},[393],[390,2164,2166],{"className":2165,"ariaHidden":398},[397],[390,2167,2169,2172,2175,2178],{"className":2168},[402],[390,2170],{"className":2171,"style":443},[406],[390,2173,1116],{"className":2174},[447],[390,2176,2131],{"className":2177},[411],[390,2179,1123],{"className":2180},[524]," → root ",[390,2183,2185],{"className":2184},[393],[390,2186,2188],{"className":2187,"ariaHidden":398},[397],[390,2189,2191,2194,2197,2201],{"className":2190},[402],[390,2192],{"className":2193,"style":443},[406],[390,2195,1116],{"className":2196},[447],[390,2198,2200],{"className":2199},[411],"100",[390,2202,1123],{"className":2203},[524],[381,2205,2206],{},"Watching the priority queue evolve makes the bottom-up construction concrete:\neach step extracts the two smallest weights and re-inserts their sum, so the\nqueue loses one element per round until a single root survives.",[688,2208,2210,2587],{"className":2209},[691,692],[694,2211,2215],{"xmlns":696,"width":2212,"height":2213,"viewBox":2214},"353.436","167.868","-75 -75 265.077 125.901",[701,2216,2217,2224,2236,2243,2255,2262,2274,2296,2303,2315,2321,2333,2339,2351,2371,2378,2389,2395,2407,2413,2425,2445,2452,2463,2469,2480,2486,2498,2518,2525,2537,2543,2554,2560,2572],{"stroke":703,"style":704},[701,2218,2220],{"transform":2219},"translate(-14.687 -125.459)",[709,2221],{"d":2222,"fill":703,"stroke":703,"className":2223,"style":842},"M-43.990 64.502L-46.783 64.502L-46.783 64.205Q-45.721 64.205-45.721 63.943L-45.721 59.775Q-46.150 59.990-46.830 59.990L-46.830 59.693Q-45.811 59.693-45.295 59.182L-45.150 59.182Q-45.076 59.201-45.057 59.279L-45.057 63.943Q-45.057 64.205-43.990 64.205L-43.990 64.502M-42.619 64.037Q-42.619 63.854-42.482 63.717Q-42.346 63.580-42.154 63.580Q-41.963 63.580-41.830 63.713Q-41.697 63.846-41.697 64.037Q-41.697 64.236-41.830 64.369Q-41.963 64.502-42.154 64.502Q-42.346 64.502-42.482 64.365Q-42.619 64.229-42.619 64.037",[725],[701,2225,2226,2229],{"fill":714},[709,2227],{"d":2228},"M-10.595-63.534a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[701,2230,2232],{"transform":2231},"translate(26.14 -125.136)",[709,2233],{"d":2234,"fill":703,"stroke":703,"className":2235,"style":726},"M-46.758 63.496Q-46.617 63.909-46.257 64.161Q-45.897 64.414-45.461 64.414Q-45.009 64.414-44.743 64.161Q-44.477 63.909-44.374 63.524Q-44.271 63.140-44.271 62.683Q-44.271 60.982-45.180 60.982Q-45.501 60.982-45.730 61.076Q-45.958 61.171-46.088 61.290Q-46.217 61.408-46.329 61.547Q-46.441 61.685-46.477 61.694L-46.560 61.694Q-46.604 61.694-46.635 61.663Q-46.666 61.632-46.666 61.584L-46.666 58.587Q-46.666 58.556-46.630 58.532Q-46.595 58.508-46.569 58.508L-46.529 58.508Q-45.897 58.798-45.224 58.798Q-44.552 58.798-43.910 58.508L-43.884 58.508Q-43.853 58.508-43.820 58.530Q-43.787 58.552-43.787 58.587L-43.787 58.688Q-43.787 58.692-43.796 58.710Q-43.805 58.728-43.805 58.732Q-44.121 59.127-44.591 59.349Q-45.062 59.571-45.558 59.571Q-45.967 59.571-46.349 59.461L-46.349 61.180Q-45.892 60.723-45.180 60.723Q-44.670 60.723-44.271 61.004Q-43.871 61.285-43.649 61.740Q-43.427 62.195-43.427 62.700Q-43.427 63.250-43.706 63.709Q-43.985 64.168-44.451 64.434Q-44.917 64.700-45.461 64.700Q-45.901 64.700-46.285 64.473Q-46.670 64.247-46.898 63.867Q-47.127 63.487-47.127 63.043Q-47.127 62.850-46.995 62.718Q-46.863 62.586-46.666 62.586Q-46.534 62.586-46.430 62.645Q-46.327 62.705-46.268 62.808Q-46.209 62.911-46.209 63.043Q-46.209 63.241-46.336 63.373Q-46.463 63.504-46.666 63.504Q-46.727 63.504-46.758 63.496",[725],[701,2237,2239],{"transform":2238},"translate(44.772 -125.786)",[709,2240],{"d":2241,"fill":703,"stroke":703,"className":2242,"style":726},"M-44.183 65.179L-44.183 62.450L-46.890 62.450Q-47.070 62.419-47.070 62.252Q-47.070 62.186-47.019 62.131Q-46.969 62.076-46.890 62.063L-44.183 62.063L-44.183 59.334Q-44.169 59.259-44.115 59.213Q-44.060 59.167-43.985 59.167Q-43.915 59.167-43.862 59.215Q-43.809 59.264-43.796 59.334L-43.796 62.063L-41.084 62.063Q-40.913 62.098-40.913 62.252Q-40.913 62.415-41.084 62.450L-43.796 62.450L-43.796 65.179Q-43.831 65.350-43.985 65.350Q-44.055 65.350-44.112 65.302Q-44.169 65.253-44.183 65.179",[725],[701,2244,2245,2248],{"fill":714},[709,2246],{"d":2247},"M29.238-63.534a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2249,2251],{"transform":2250},"translate(65.974 -125.136)",[709,2252],{"d":2253,"fill":703,"stroke":703,"className":2254,"style":726},"M-46.521 64.115Q-46.274 64.414-45.668 64.414Q-45.387 64.414-45.147 64.276Q-44.908 64.137-44.730 63.915Q-44.552 63.693-44.442 63.430Q-44.209 62.854-44.209 61.738Q-44.376 62.103-44.681 62.327Q-44.987 62.551-45.369 62.551Q-45.905 62.551-46.321 62.272Q-46.736 61.993-46.967 61.527Q-47.197 61.061-47.197 60.534Q-47.197 60.121-47.050 59.752Q-46.903 59.382-46.639 59.106Q-46.376 58.829-46.006 58.668Q-45.637 58.508-45.224 58.508Q-44.666 58.508-44.292 58.800Q-43.919 59.092-43.715 59.556Q-43.510 60.020-43.431 60.536Q-43.352 61.052-43.352 61.584Q-43.352 62.300-43.620 63.023Q-43.888 63.746-44.411 64.223Q-44.934 64.700-45.659 64.700Q-46.209 64.700-46.586 64.451Q-46.964 64.203-46.964 63.685Q-46.964 63.566-46.907 63.463Q-46.850 63.359-46.749 63.300Q-46.648 63.241-46.521 63.241Q-46.336 63.241-46.213 63.373Q-46.090 63.504-46.090 63.685Q-46.090 63.860-46.217 63.988Q-46.345 64.115-46.521 64.115M-45.325 62.287Q-44.956 62.287-44.708 62.045Q-44.459 61.804-44.343 61.446Q-44.227 61.087-44.227 60.714Q-44.227 60.604-44.235 60.551Q-44.231 60.538-44.229 60.527Q-44.227 60.516-44.227 60.499Q-44.227 59.844-44.442 59.305Q-44.657 58.767-45.224 58.767Q-45.584 58.767-45.813 58.917Q-46.042 59.066-46.158 59.323Q-46.274 59.580-46.307 59.861Q-46.340 60.143-46.340 60.516L-46.340 60.551Q-46.340 60.877-46.314 61.164Q-46.288 61.452-46.189 61.711Q-46.090 61.971-45.879 62.129Q-45.668 62.287-45.325 62.287",[725],[701,2256,2258],{"transform":2257},"translate(89.27 -126.361)",[709,2259],{"d":2260,"fill":703,"stroke":703,"className":2261,"style":726},"M-39.924 62.450L-46.881 62.450Q-46.960 62.450-47.015 62.390Q-47.070 62.331-47.070 62.252Q-47.070 62.182-47.015 62.122Q-46.960 62.063-46.881 62.063L-39.924 62.063Q-40.430 61.698-40.761 61.167Q-41.093 60.635-41.212 60.020Q-41.212 59.980-41.181 59.936Q-41.150 59.892-41.111 59.892L-40.935 59.892Q-40.856 59.892-40.834 59.976Q-40.737 60.468-40.478 60.907Q-40.219 61.347-39.830 61.665Q-39.441 61.984-38.953 62.142Q-38.852 62.186-38.852 62.252Q-38.852 62.335-38.953 62.371Q-39.441 62.529-39.830 62.847Q-40.219 63.166-40.478 63.606Q-40.737 64.045-40.834 64.537Q-40.856 64.621-40.935 64.621L-41.111 64.621Q-41.150 64.621-41.181 64.579Q-41.212 64.537-41.212 64.493Q-41.089 63.865-40.757 63.333Q-40.425 62.801-39.924 62.450",[725],[701,2263,2264,2267],{"fill":714},[709,2265],{"fill":714,"d":2266},"M77.608-63.534a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2268,2270],{"transform":2269},"translate(112.031 -125.136)",[709,2271],{"d":2272,"fill":703,"stroke":703,"className":2273,"style":726},"M-43.677 64.502L-46.709 64.502L-46.709 64.186Q-45.558 64.186-45.558 63.891L-45.558 59.167Q-46.046 59.400-46.767 59.400L-46.767 59.084Q-45.637 59.084-45.075 58.508L-44.930 58.508Q-44.895 58.508-44.862 58.541Q-44.829 58.574-44.829 58.609L-44.829 63.891Q-44.829 64.186-43.677 64.186L-43.677 64.502M-40.267 63.025L-42.706 63.025L-42.706 62.709L-39.880 58.561Q-39.836 58.508-39.771 58.508L-39.617 58.508Q-39.577 58.508-39.544 58.541Q-39.511 58.574-39.511 58.618L-39.511 62.709L-38.610 62.709L-38.610 63.025L-39.511 63.025L-39.511 63.891Q-39.511 64.186-38.610 64.186L-38.610 64.502L-41.164 64.502L-41.164 64.186Q-40.803 64.186-40.535 64.131Q-40.267 64.076-40.267 63.891L-40.267 63.025M-40.210 59.536L-42.372 62.709L-40.210 62.709",[725],[701,2275,2276,2283,2289],{"stroke":729,"fontFamily":833,"fontSize":834},[701,2277,2279],{"transform":2278},"translate(151.487 -126.236)",[709,2280],{"d":2281,"fill":703,"stroke":703,"className":2282,"style":842},"M-43.127 66.053L-44.982 66.053L-44.982 65.760Q-44.713 65.760-44.545 65.715Q-44.377 65.670-44.377 65.494L-44.377 64.045Q-44.580 64.291-44.881 64.436Q-45.182 64.580-45.514 64.580Q-45.998 64.580-46.410 64.338Q-46.822 64.096-47.063 63.684Q-47.303 63.272-47.303 62.775Q-47.303 62.279-47.047 61.865Q-46.791 61.451-46.361 61.213Q-45.932 60.975-45.439 60.975Q-45.084 60.975-44.777 61.154Q-44.471 61.334-44.279 61.647L-43.990 60.975L-43.736 60.975L-43.736 65.494Q-43.736 65.670-43.568 65.715Q-43.400 65.760-43.127 65.760L-43.127 66.053M-45.455 64.326Q-45.088 64.326-44.795 64.094Q-44.502 63.861-44.354 63.502L-44.354 62.166Q-44.447 61.783-44.721 61.520Q-44.994 61.256-45.369 61.256Q-45.729 61.256-46.002 61.486Q-46.275 61.717-46.418 62.074Q-46.561 62.432-46.561 62.783Q-46.561 63.119-46.436 63.481Q-46.311 63.842-46.059 64.084Q-45.807 64.326-45.455 64.326M-42.182 63.549L-42.182 61.807Q-42.182 61.592-42.244 61.496Q-42.307 61.400-42.426 61.379Q-42.545 61.357-42.791 61.357L-42.791 61.061L-41.545 60.975L-41.545 63.525L-41.545 63.549Q-41.545 63.861-41.490 64.023Q-41.436 64.186-41.285 64.256Q-41.135 64.326-40.814 64.326Q-40.385 64.326-40.111 63.988Q-39.838 63.650-39.838 63.205L-39.838 61.807Q-39.838 61.592-39.900 61.496Q-39.963 61.400-40.082 61.379Q-40.201 61.357-40.447 61.357L-40.447 61.061L-39.201 60.975L-39.201 63.760Q-39.201 63.971-39.139 64.066Q-39.076 64.162-38.957 64.184Q-38.838 64.205-38.592 64.205L-38.592 64.502L-39.814 64.580L-39.814 63.959Q-39.982 64.248-40.264 64.414Q-40.545 64.580-40.865 64.580Q-42.182 64.580-42.182 63.549M-38.147 62.748Q-38.147 62.268-37.914 61.852Q-37.682 61.436-37.272 61.186Q-36.861 60.936-36.385 60.936Q-35.654 60.936-35.256 61.377Q-34.857 61.818-34.857 62.549Q-34.857 62.654-34.951 62.678L-37.400 62.678L-37.400 62.748Q-37.400 63.158-37.279 63.514Q-37.158 63.869-36.887 64.086Q-36.615 64.303-36.186 64.303Q-35.822 64.303-35.525 64.074Q-35.229 63.846-35.127 63.494Q-35.119 63.447-35.033 63.432L-34.951 63.432Q-34.857 63.459-34.857 63.541Q-34.857 63.549-34.865 63.580Q-34.928 63.807-35.066 63.990Q-35.205 64.174-35.397 64.307Q-35.588 64.439-35.807 64.510Q-36.025 64.580-36.264 64.580Q-36.635 64.580-36.973 64.443Q-37.311 64.307-37.578 64.055Q-37.846 63.803-37.996 63.463Q-38.147 63.123-38.147 62.748M-37.393 62.439L-35.432 62.439Q-35.432 62.135-35.533 61.844Q-35.635 61.553-35.852 61.371Q-36.068 61.189-36.385 61.189Q-36.686 61.189-36.916 61.377Q-37.147 61.564-37.270 61.856Q-37.393 62.147-37.393 62.439M-33.686 63.549L-33.686 61.807Q-33.686 61.592-33.748 61.496Q-33.811 61.400-33.930 61.379Q-34.049 61.357-34.295 61.357L-34.295 61.061L-33.049 60.975L-33.049 63.525L-33.049 63.549Q-33.049 63.861-32.994 64.023Q-32.939 64.186-32.789 64.256Q-32.639 64.326-32.318 64.326Q-31.889 64.326-31.615 63.988Q-31.342 63.650-31.342 63.205L-31.342 61.807Q-31.342 61.592-31.404 61.496Q-31.467 61.400-31.586 61.379Q-31.705 61.357-31.951 61.357L-31.951 61.061L-30.705 60.975L-30.705 63.760Q-30.705 63.971-30.643 64.066Q-30.580 64.162-30.461 64.184Q-30.342 64.205-30.096 64.205L-30.096 64.502L-31.318 64.580L-31.318 63.959Q-31.486 64.248-31.768 64.414Q-32.049 64.580-32.369 64.580Q-33.686 64.580-33.686 63.549M-29.650 62.748Q-29.650 62.268-29.418 61.852Q-29.186 61.436-28.775 61.186Q-28.365 60.936-27.889 60.936Q-27.158 60.936-26.760 61.377Q-26.361 61.818-26.361 62.549Q-26.361 62.654-26.455 62.678L-28.904 62.678L-28.904 62.748Q-28.904 63.158-28.783 63.514Q-28.662 63.869-28.391 64.086Q-28.119 64.303-27.689 64.303Q-27.326 64.303-27.029 64.074Q-26.732 63.846-26.631 63.494Q-26.623 63.447-26.537 63.432L-26.455 63.432Q-26.361 63.459-26.361 63.541Q-26.361 63.549-26.369 63.580Q-26.432 63.807-26.570 63.990Q-26.709 64.174-26.900 64.307Q-27.092 64.439-27.311 64.510Q-27.529 64.580-27.768 64.580Q-28.139 64.580-28.477 64.443Q-28.814 64.307-29.082 64.055Q-29.350 63.803-29.500 63.463Q-29.650 63.123-29.650 62.748M-28.897 62.439L-26.936 62.439Q-26.936 62.135-27.037 61.844Q-27.139 61.553-27.355 61.371Q-27.572 61.189-27.889 61.189Q-28.189 61.189-28.420 61.377Q-28.650 61.564-28.773 61.856Q-28.897 62.147-28.897 62.439M-25.393 64.037Q-25.393 63.854-25.256 63.717Q-25.119 63.580-24.928 63.580Q-24.736 63.580-24.604 63.713Q-24.471 63.846-24.471 64.037Q-24.471 64.236-24.604 64.369Q-24.736 64.502-24.928 64.502Q-25.119 64.502-25.256 64.365Q-25.393 64.229-25.393 64.037M-25.393 61.510Q-25.393 61.326-25.256 61.189Q-25.119 61.053-24.928 61.053Q-24.736 61.053-24.604 61.186Q-24.471 61.318-24.471 61.510Q-24.471 61.709-24.604 61.842Q-24.736 61.975-24.928 61.975Q-25.119 61.975-25.256 61.838Q-25.393 61.701-25.393 61.510",[725],[701,2284,2285],{"transform":2278},[709,2286],{"d":2287,"fill":703,"stroke":703,"className":2288,"style":842},"M-16.364 64.502L-19.157 64.502L-19.157 64.205Q-18.095 64.205-18.095 63.943L-18.095 59.775Q-18.524 59.990-19.204 59.990L-19.204 59.693Q-18.185 59.693-17.669 59.182L-17.524 59.182Q-17.450 59.201-17.431 59.279L-17.431 63.943Q-17.431 64.205-16.364 64.205L-16.364 64.502M-12.126 64.502L-15.286 64.502L-15.286 64.295Q-15.286 64.268-15.263 64.236L-13.911 62.838Q-13.532 62.451-13.284 62.162Q-13.036 61.873-12.862 61.516Q-12.688 61.158-12.688 60.768Q-12.688 60.420-12.821 60.127Q-12.954 59.834-13.208 59.656Q-13.462 59.479-13.817 59.479Q-14.177 59.479-14.468 59.674Q-14.759 59.869-14.903 60.197L-14.849 60.197Q-14.665 60.197-14.540 60.318Q-14.415 60.439-14.415 60.631Q-14.415 60.811-14.540 60.939Q-14.665 61.068-14.849 61.068Q-15.028 61.068-15.157 60.939Q-15.286 60.811-15.286 60.631Q-15.286 60.229-15.065 59.893Q-14.845 59.557-14.479 59.369Q-14.114 59.182-13.712 59.182Q-13.231 59.182-12.815 59.369Q-12.399 59.557-12.147 59.918Q-11.895 60.279-11.895 60.768Q-11.895 61.127-12.050 61.430Q-12.204 61.732-12.456 61.992Q-12.708 62.252-13.058 62.537Q-13.407 62.822-13.575 62.975L-14.505 63.814L-13.790 63.814Q-12.415 63.814-12.376 63.775Q-12.306 63.697-12.263 63.512Q-12.220 63.326-12.177 63.037L-11.895 63.037L-12.126 64.502M-10.642 65.908Q-10.642 65.885-10.610 65.838Q-10.317 65.576-10.151 65.209Q-9.985 64.842-9.985 64.455L-9.985 64.397Q-10.114 64.502-10.282 64.502Q-10.474 64.502-10.610 64.369Q-10.747 64.236-10.747 64.037Q-10.747 63.846-10.610 63.713Q-10.474 63.580-10.282 63.580Q-9.981 63.580-9.856 63.850Q-9.731 64.119-9.731 64.455Q-9.731 64.904-9.913 65.318Q-10.095 65.732-10.435 66.029Q-10.458 66.053-10.497 66.053Q-10.544 66.053-10.593 66.008Q-10.642 65.963-10.642 65.908M-5.513 64.502L-8.306 64.502L-8.306 64.205Q-7.243 64.205-7.243 63.943L-7.243 59.775Q-7.673 59.990-8.353 59.990L-8.353 59.693Q-7.333 59.693-6.817 59.182L-6.673 59.182Q-6.599 59.201-6.579 59.279L-6.579 63.943Q-6.579 64.205-5.513 64.205L-5.513 64.502M-4.067 63.869Q-3.876 64.143-3.520 64.270Q-3.165 64.397-2.782 64.397Q-2.446 64.397-2.237 64.211Q-2.028 64.025-1.933 63.732Q-1.837 63.439-1.837 63.127Q-1.837 62.803-1.935 62.508Q-2.032 62.213-2.245 62.029Q-2.458 61.846-2.790 61.846L-3.356 61.846Q-3.388 61.846-3.417 61.816Q-3.446 61.787-3.446 61.760L-3.446 61.678Q-3.446 61.643-3.417 61.617Q-3.388 61.592-3.356 61.592L-2.876 61.557Q-2.591 61.557-2.394 61.352Q-2.196 61.147-2.101 60.852Q-2.005 60.557-2.005 60.279Q-2.005 59.900-2.204 59.662Q-2.403 59.424-2.782 59.424Q-3.103 59.424-3.392 59.531Q-3.681 59.639-3.845 59.861Q-3.665 59.861-3.542 59.988Q-3.419 60.115-3.419 60.287Q-3.419 60.459-3.544 60.584Q-3.669 60.709-3.845 60.709Q-4.017 60.709-4.142 60.584Q-4.267 60.459-4.267 60.287Q-4.267 59.920-4.042 59.672Q-3.817 59.424-3.478 59.303Q-3.138 59.182-2.782 59.182Q-2.435 59.182-2.071 59.303Q-1.708 59.424-1.460 59.674Q-1.212 59.924-1.212 60.279Q-1.212 60.764-1.530 61.147Q-1.849 61.529-2.325 61.701Q-1.774 61.811-1.374 62.197Q-0.974 62.584-0.974 63.119Q-0.974 63.576-1.237 63.932Q-1.501 64.287-1.923 64.479Q-2.345 64.670-2.782 64.670Q-3.192 64.670-3.585 64.535Q-3.978 64.400-4.243 64.115Q-4.509 63.830-4.509 63.412Q-4.509 63.217-4.376 63.088Q-4.243 62.959-4.052 62.959Q-3.927 62.959-3.823 63.018Q-3.720 63.076-3.657 63.182Q-3.595 63.287-3.595 63.412Q-3.595 63.607-3.729 63.738Q-3.864 63.869-4.067 63.869M0.210 65.908Q0.210 65.885 0.241 65.838Q0.534 65.576 0.700 65.209Q0.866 64.842 0.866 64.455L0.866 64.397Q0.737 64.502 0.569 64.502Q0.378 64.502 0.241 64.369Q0.105 64.236 0.105 64.037Q0.105 63.846 0.241 63.713Q0.378 63.580 0.569 63.580Q0.870 63.580 0.995 63.850Q1.120 64.119 1.120 64.455Q1.120 64.904 0.938 65.318Q0.757 65.732 0.417 66.029Q0.394 66.053 0.355 66.053Q0.308 66.053 0.259 66.008Q0.210 65.963 0.210 65.908M5.339 64.502L2.546 64.502L2.546 64.205Q3.608 64.205 3.608 63.943L3.608 59.775Q3.179 59.990 2.499 59.990L2.499 59.693Q3.519 59.693 4.034 59.182L4.179 59.182Q4.253 59.201 4.272 59.279L4.272 63.943Q4.272 64.205 5.339 64.205L5.339 64.502M8.112 64.670Q7.440 64.670 7.044 64.246Q6.647 63.822 6.495 63.203Q6.343 62.584 6.343 61.916Q6.343 61.256 6.614 60.623Q6.886 59.990 7.399 59.586Q7.913 59.182 8.585 59.182Q8.874 59.182 9.122 59.281Q9.370 59.381 9.517 59.582Q9.663 59.783 9.663 60.088Q9.663 60.193 9.612 60.285Q9.562 60.377 9.470 60.428Q9.378 60.479 9.272 60.479Q9.105 60.479 8.991 60.365Q8.878 60.252 8.878 60.088Q8.878 59.928 8.987 59.811Q9.097 59.693 9.265 59.693Q9.065 59.424 8.585 59.424Q8.167 59.424 7.835 59.701Q7.503 59.979 7.327 60.397Q7.128 60.897 7.128 61.799Q7.292 61.475 7.571 61.275Q7.851 61.076 8.198 61.076Q8.683 61.076 9.067 61.322Q9.452 61.568 9.665 61.977Q9.878 62.385 9.878 62.869Q9.878 63.361 9.647 63.773Q9.417 64.186 9.007 64.428Q8.597 64.670 8.112 64.670M8.112 64.397Q8.538 64.397 8.755 64.176Q8.972 63.955 9.034 63.629Q9.097 63.303 9.097 62.869Q9.097 62.557 9.071 62.307Q9.046 62.057 8.956 61.832Q8.866 61.607 8.671 61.471Q8.476 61.334 8.159 61.334Q7.831 61.334 7.599 61.543Q7.366 61.752 7.255 62.070Q7.144 62.389 7.144 62.701Q7.147 62.740 7.149 62.773Q7.151 62.807 7.151 62.861Q7.151 62.877 7.149 62.885Q7.147 62.893 7.144 62.900Q7.144 63.475 7.370 63.936Q7.597 64.397 8.112 64.397M11.062 65.908Q11.062 65.885 11.093 65.838Q11.386 65.576 11.552 65.209Q11.718 64.842 11.718 64.455L11.718 64.397Q11.589 64.502 11.421 64.502Q11.230 64.502 11.093 64.369Q10.956 64.236 10.956 64.037Q10.956 63.846 11.093 63.713Q11.230 63.580 11.421 63.580Q11.722 63.580 11.847 63.850Q11.972 64.119 11.972 64.455Q11.972 64.904 11.790 65.318Q11.608 65.732 11.269 66.029Q11.245 66.053 11.206 66.053Q11.159 66.053 11.110 66.008Q11.062 65.963 11.062 65.908M15.077 63.189L12.835 63.189L12.835 62.893L15.405 59.236Q15.444 59.182 15.507 59.182L15.651 59.182Q15.702 59.182 15.733 59.213Q15.765 59.244 15.765 59.295L15.765 62.893L16.597 62.893L16.597 63.189L15.765 63.189L15.765 63.943Q15.765 64.205 16.589 64.205L16.589 64.502L14.253 64.502L14.253 64.205Q15.077 64.205 15.077 63.943L15.077 63.189M15.132 60.088L13.163 62.893L15.132 62.893L15.132 60.088M17.683 63.623L17.620 63.623Q17.761 63.975 18.085 64.186Q18.409 64.397 18.796 64.397Q19.390 64.397 19.640 63.963Q19.890 63.529 19.890 62.893Q19.890 62.299 19.720 61.852Q19.550 61.404 19.050 61.404Q18.753 61.404 18.548 61.484Q18.343 61.564 18.241 61.656Q18.140 61.748 18.024 61.881Q17.909 62.014 17.858 62.029L17.788 62.029Q17.702 62.006 17.683 61.928L17.683 59.279Q17.714 59.182 17.788 59.182Q17.804 59.182 17.812 59.184Q17.819 59.186 17.827 59.189Q18.413 59.439 19.011 59.439Q19.593 59.439 20.210 59.182L20.233 59.182Q20.276 59.182 20.304 59.207Q20.331 59.232 20.331 59.272L20.331 59.350Q20.331 59.381 20.308 59.404Q20.011 59.756 19.589 59.953Q19.167 60.150 18.706 60.150Q18.358 60.150 17.980 60.045L17.980 61.541Q18.198 61.346 18.474 61.248Q18.749 61.150 19.050 61.150Q19.507 61.150 19.876 61.398Q20.245 61.647 20.452 62.051Q20.659 62.455 20.659 62.900Q20.659 63.389 20.403 63.797Q20.147 64.205 19.716 64.438Q19.284 64.670 18.796 64.670Q18.401 64.670 18.046 64.479Q17.690 64.287 17.480 63.953Q17.269 63.619 17.269 63.205Q17.269 63.025 17.386 62.912Q17.503 62.799 17.683 62.799Q17.800 62.799 17.892 62.852Q17.983 62.904 18.036 62.996Q18.089 63.088 18.089 63.205Q18.089 63.389 17.976 63.506Q17.862 63.623 17.683 63.623M21.913 65.908Q21.913 65.885 21.944 65.838Q22.237 65.576 22.403 65.209Q22.569 64.842 22.569 64.455L22.569 64.397Q22.440 64.502 22.272 64.502Q22.081 64.502 21.944 64.369Q21.808 64.236 21.808 64.037Q21.808 63.846 21.944 63.713Q22.081 63.580 22.272 63.580Q22.573 63.580 22.698 63.850Q22.823 64.119 22.823 64.455Q22.823 64.904 22.642 65.318Q22.460 65.732 22.120 66.029Q22.097 66.053 22.058 66.053Q22.011 66.053 21.962 66.008Q21.913 65.963 21.913 65.908",[725],[701,2290,2291],{"transform":2278},[709,2292],{"d":2293,"fill":2294,"stroke":2294,"className":2295,"style":842},"M27.081 64.502L24.288 64.502L24.288 64.205Q25.350 64.205 25.350 63.943L25.350 59.775Q24.921 59.990 24.241 59.990L24.241 59.693Q25.260 59.693 25.776 59.182L25.921 59.182Q25.995 59.201 26.014 59.279L26.014 63.943Q26.014 64.205 27.081 64.205L27.081 64.502M30.214 63.189L27.971 63.189L27.971 62.893L30.542 59.236Q30.581 59.182 30.643 59.182L30.788 59.182Q30.839 59.182 30.870 59.213Q30.901 59.244 30.901 59.295L30.901 62.893L31.733 62.893L31.733 63.189L30.901 63.189L30.901 63.943Q30.901 64.205 31.725 64.205L31.725 64.502L29.389 64.502L29.389 64.205Q30.214 64.205 30.214 63.943L30.214 63.189M30.268 60.088L28.299 62.893L30.268 62.893","var(--tk-accent)",[725],[701,2297,2299],{"transform":2298},"translate(-14.687 -99.851)",[709,2300],{"d":2301,"fill":703,"stroke":703,"className":2302,"style":842},"M-43.998 64.502L-47.158 64.502L-47.158 64.295Q-47.158 64.268-47.135 64.236L-45.783 62.838Q-45.404 62.451-45.156 62.162Q-44.908 61.873-44.734 61.516Q-44.561 61.158-44.561 60.768Q-44.561 60.420-44.693 60.127Q-44.826 59.834-45.080 59.656Q-45.334 59.479-45.689 59.479Q-46.049 59.479-46.340 59.674Q-46.631 59.869-46.775 60.197L-46.721 60.197Q-46.537 60.197-46.412 60.318Q-46.287 60.439-46.287 60.631Q-46.287 60.811-46.412 60.939Q-46.537 61.068-46.721 61.068Q-46.900 61.068-47.029 60.939Q-47.158 60.811-47.158 60.631Q-47.158 60.229-46.938 59.893Q-46.717 59.557-46.352 59.369Q-45.986 59.182-45.584 59.182Q-45.104 59.182-44.688 59.369Q-44.272 59.557-44.020 59.918Q-43.768 60.279-43.768 60.768Q-43.768 61.127-43.922 61.430Q-44.076 61.732-44.328 61.992Q-44.580 62.252-44.930 62.537Q-45.279 62.822-45.447 62.975L-46.377 63.814L-45.662 63.814Q-44.287 63.814-44.248 63.775Q-44.178 63.697-44.135 63.512Q-44.092 63.326-44.049 63.037L-43.768 63.037L-43.998 64.502M-42.619 64.037Q-42.619 63.854-42.482 63.717Q-42.346 63.580-42.154 63.580Q-41.963 63.580-41.830 63.713Q-41.697 63.846-41.697 64.037Q-41.697 64.236-41.830 64.369Q-41.963 64.502-42.154 64.502Q-42.346 64.502-42.482 64.365Q-42.619 64.229-42.619 64.037",[725],[701,2304,2305,2308],{"fill":714},[709,2306],{"d":2307},"M-10.595-37.927a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[701,2309,2311],{"transform":2310},"translate(23.828 -99.53)",[709,2312],{"d":2313,"fill":703,"stroke":703,"className":2314,"style":726},"M-43.677 64.502L-46.709 64.502L-46.709 64.186Q-45.558 64.186-45.558 63.891L-45.558 59.167Q-46.046 59.400-46.767 59.400L-46.767 59.084Q-45.637 59.084-45.075 58.508L-44.930 58.508Q-44.895 58.508-44.862 58.541Q-44.829 58.574-44.829 58.609L-44.829 63.891Q-44.829 64.186-43.677 64.186L-43.677 64.502M-39.059 64.502L-42.508 64.502L-42.508 64.269Q-42.508 64.256-42.478 64.225L-41.023 62.648Q-40.557 62.151-40.304 61.846Q-40.052 61.540-39.861 61.129Q-39.669 60.718-39.669 60.279Q-39.669 59.690-39.992 59.257Q-40.315 58.824-40.896 58.824Q-41.159 58.824-41.405 58.934Q-41.651 59.044-41.827 59.231Q-42.003 59.418-42.100 59.668L-42.021 59.668Q-41.818 59.668-41.676 59.804Q-41.533 59.940-41.533 60.156Q-41.533 60.362-41.676 60.501Q-41.818 60.639-42.021 60.639Q-42.223 60.639-42.365 60.496Q-42.508 60.354-42.508 60.156Q-42.508 59.694-42.271 59.321Q-42.034 58.947-41.634 58.728Q-41.234 58.508-40.786 58.508Q-40.263 58.508-39.808 58.723Q-39.353 58.939-39.081 59.338Q-38.808 59.738-38.808 60.279Q-38.808 60.674-38.980 61.028Q-39.151 61.382-39.417 61.661Q-39.683 61.940-40.133 62.325Q-40.584 62.709-40.663 62.784L-41.687 63.746L-40.869 63.746Q-40.219 63.746-39.782 63.735Q-39.344 63.724-39.313 63.702Q-39.243 63.619-39.188 63.379Q-39.133 63.140-39.094 62.872L-38.808 62.872",[725],[701,2316,2318],{"transform":2317},"translate(44.772 -100.18)",[709,2319],{"d":2241,"fill":703,"stroke":703,"className":2320,"style":726},[725],[701,2322,2323,2326],{"fill":714},[709,2324],{"d":2325},"M29.238-37.927a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2327,2329],{"transform":2328},"translate(63.661 -99.53)",[709,2330],{"d":2331,"fill":703,"stroke":703,"className":2332,"style":726},"M-43.677 64.502L-46.709 64.502L-46.709 64.186Q-45.558 64.186-45.558 63.891L-45.558 59.167Q-46.046 59.400-46.767 59.400L-46.767 59.084Q-45.637 59.084-45.075 58.508L-44.930 58.508Q-44.895 58.508-44.862 58.541Q-44.829 58.574-44.829 58.609L-44.829 63.891Q-44.829 64.186-43.677 64.186L-43.677 64.502M-42.064 63.781L-42.108 63.781Q-41.906 64.098-41.520 64.256Q-41.133 64.414-40.707 64.414Q-40.170 64.414-39.931 63.979Q-39.691 63.544-39.691 62.964Q-39.691 62.384-39.938 61.944Q-40.184 61.505-40.715 61.505L-41.335 61.505Q-41.361 61.505-41.394 61.476Q-41.427 61.448-41.427 61.426L-41.427 61.325Q-41.427 61.294-41.399 61.270Q-41.370 61.246-41.335 61.246L-40.816 61.206Q-40.351 61.206-40.105 60.734Q-39.858 60.261-39.858 59.743Q-39.858 59.316-40.072 59.042Q-40.285 58.767-40.707 58.767Q-41.049 58.767-41.375 58.897Q-41.700 59.026-41.884 59.281L-41.858 59.281Q-41.656 59.281-41.520 59.422Q-41.383 59.563-41.383 59.760Q-41.383 59.958-41.517 60.092Q-41.651 60.226-41.849 60.226Q-42.051 60.226-42.190 60.092Q-42.328 59.958-42.328 59.760Q-42.328 59.171-41.825 58.840Q-41.322 58.508-40.707 58.508Q-40.329 58.508-39.927 58.648Q-39.524 58.789-39.256 59.068Q-38.988 59.347-38.988 59.743Q-38.988 60.292-39.342 60.729Q-39.696 61.167-40.236 61.351Q-39.845 61.430-39.500 61.654Q-39.155 61.878-38.944 62.219Q-38.733 62.560-38.733 62.955Q-38.733 63.337-38.896 63.660Q-39.059 63.983-39.351 64.219Q-39.643 64.454-39.990 64.577Q-40.337 64.700-40.707 64.700Q-41.155 64.700-41.585 64.539Q-42.016 64.379-42.297 64.052Q-42.579 63.724-42.579 63.267Q-42.579 63.052-42.431 62.909Q-42.284 62.766-42.064 62.766Q-41.854 62.766-41.709 62.911Q-41.563 63.056-41.563 63.267Q-41.563 63.478-41.711 63.630Q-41.858 63.781-42.064 63.781",[725],[701,2334,2336],{"transform":2335},"translate(89.27 -100.754)",[709,2337],{"d":2260,"fill":703,"stroke":703,"className":2338,"style":726},[725],[701,2340,2341,2344],{"fill":714},[709,2342],{"fill":714,"d":2343},"M77.608-37.927a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2345,2347],{"transform":2346},"translate(112.031 -99.53)",[709,2348],{"d":2349,"fill":703,"stroke":703,"className":2350,"style":726},"M-43.677 64.502L-47.127 64.502L-47.127 64.269Q-47.127 64.256-47.096 64.225L-45.642 62.648Q-45.176 62.151-44.923 61.846Q-44.670 61.540-44.479 61.129Q-44.288 60.718-44.288 60.279Q-44.288 59.690-44.611 59.257Q-44.934 58.824-45.514 58.824Q-45.778 58.824-46.024 58.934Q-46.270 59.044-46.446 59.231Q-46.622 59.418-46.718 59.668L-46.639 59.668Q-46.437 59.668-46.294 59.804Q-46.151 59.940-46.151 60.156Q-46.151 60.362-46.294 60.501Q-46.437 60.639-46.639 60.639Q-46.841 60.639-46.984 60.496Q-47.127 60.354-47.127 60.156Q-47.127 59.694-46.890 59.321Q-46.652 58.947-46.252 58.728Q-45.853 58.508-45.404 58.508Q-44.881 58.508-44.427 58.723Q-43.972 58.939-43.699 59.338Q-43.427 59.738-43.427 60.279Q-43.427 60.674-43.598 61.028Q-43.770 61.382-44.035 61.661Q-44.301 61.940-44.752 62.325Q-45.202 62.709-45.281 62.784L-46.305 63.746L-45.488 63.746Q-44.837 63.746-44.400 63.735Q-43.963 63.724-43.932 63.702Q-43.862 63.619-43.807 63.379Q-43.752 63.140-43.712 62.872L-43.427 62.872L-43.677 64.502M-42.139 63.496Q-41.999 63.909-41.638 64.161Q-41.278 64.414-40.843 64.414Q-40.390 64.414-40.124 64.161Q-39.858 63.909-39.755 63.524Q-39.652 63.140-39.652 62.683Q-39.652 60.982-40.562 60.982Q-40.882 60.982-41.111 61.076Q-41.339 61.171-41.469 61.290Q-41.599 61.408-41.711 61.547Q-41.823 61.685-41.858 61.694L-41.941 61.694Q-41.985 61.694-42.016 61.663Q-42.047 61.632-42.047 61.584L-42.047 58.587Q-42.047 58.556-42.012 58.532Q-41.977 58.508-41.950 58.508L-41.911 58.508Q-41.278 58.798-40.605 58.798Q-39.933 58.798-39.292 58.508L-39.265 58.508Q-39.234 58.508-39.201 58.530Q-39.168 58.552-39.168 58.587L-39.168 58.688Q-39.168 58.692-39.177 58.710Q-39.186 58.728-39.186 58.732Q-39.502 59.127-39.973 59.349Q-40.443 59.571-40.939 59.571Q-41.348 59.571-41.730 59.461L-41.730 61.180Q-41.273 60.723-40.562 60.723Q-40.052 60.723-39.652 61.004Q-39.252 61.285-39.030 61.740Q-38.808 62.195-38.808 62.700Q-38.808 63.250-39.087 63.709Q-39.366 64.168-39.832 64.434Q-40.298 64.700-40.843 64.700Q-41.282 64.700-41.667 64.473Q-42.051 64.247-42.280 63.867Q-42.508 63.487-42.508 63.043Q-42.508 62.850-42.376 62.718Q-42.245 62.586-42.047 62.586Q-41.915 62.586-41.812 62.645Q-41.709 62.705-41.649 62.808Q-41.590 62.911-41.590 63.043Q-41.590 63.241-41.717 63.373Q-41.845 63.504-42.047 63.504Q-42.108 63.504-42.139 63.496",[725],[701,2352,2353,2359,2365],{"stroke":729,"fontFamily":833,"fontSize":834},[701,2354,2356],{"transform":2355},"translate(151.487 -100.63)",[709,2357],{"d":2281,"fill":703,"stroke":703,"className":2358,"style":842},[725],[701,2360,2361],{"transform":2355},[709,2362],{"d":2363,"fill":703,"stroke":703,"className":2364,"style":842},"M-16.364 64.502L-19.157 64.502L-19.157 64.205Q-18.095 64.205-18.095 63.943L-18.095 59.775Q-18.524 59.990-19.204 59.990L-19.204 59.693Q-18.185 59.693-17.669 59.182L-17.524 59.182Q-17.450 59.201-17.431 59.279L-17.431 63.943Q-17.431 64.205-16.364 64.205L-16.364 64.502M-13.231 63.189L-15.474 63.189L-15.474 62.893L-12.903 59.236Q-12.864 59.182-12.802 59.182L-12.657 59.182Q-12.606 59.182-12.575 59.213Q-12.544 59.244-12.544 59.295L-12.544 62.893L-11.712 62.893L-11.712 63.189L-12.544 63.189L-12.544 63.943Q-12.544 64.205-11.720 64.205L-11.720 64.502L-14.056 64.502L-14.056 64.205Q-13.231 64.205-13.231 63.943L-13.231 63.189M-13.177 60.088L-15.145 62.893L-13.177 62.893L-13.177 60.088M-10.642 65.908Q-10.642 65.885-10.610 65.838Q-10.317 65.576-10.151 65.209Q-9.985 64.842-9.985 64.455L-9.985 64.397Q-10.114 64.502-10.282 64.502Q-10.474 64.502-10.610 64.369Q-10.747 64.236-10.747 64.037Q-10.747 63.846-10.610 63.713Q-10.474 63.580-10.282 63.580Q-9.981 63.580-9.856 63.850Q-9.731 64.119-9.731 64.455Q-9.731 64.904-9.913 65.318Q-10.095 65.732-10.435 66.029Q-10.458 66.053-10.497 66.053Q-10.544 66.053-10.593 66.008Q-10.642 65.963-10.642 65.908M-5.513 64.502L-8.306 64.502L-8.306 64.205Q-7.243 64.205-7.243 63.943L-7.243 59.775Q-7.673 59.990-8.353 59.990L-8.353 59.693Q-7.333 59.693-6.817 59.182L-6.673 59.182Q-6.599 59.201-6.579 59.279L-6.579 63.943Q-6.579 64.205-5.513 64.205L-5.513 64.502M-2.739 64.670Q-3.411 64.670-3.808 64.246Q-4.204 63.822-4.356 63.203Q-4.509 62.584-4.509 61.916Q-4.509 61.256-4.237 60.623Q-3.966 59.990-3.452 59.586Q-2.938 59.182-2.267 59.182Q-1.978 59.182-1.729 59.281Q-1.481 59.381-1.335 59.582Q-1.188 59.783-1.188 60.088Q-1.188 60.193-1.239 60.285Q-1.290 60.377-1.382 60.428Q-1.474 60.479-1.579 60.479Q-1.747 60.479-1.860 60.365Q-1.974 60.252-1.974 60.088Q-1.974 59.928-1.864 59.811Q-1.755 59.693-1.587 59.693Q-1.786 59.424-2.267 59.424Q-2.685 59.424-3.017 59.701Q-3.349 59.979-3.524 60.397Q-3.724 60.897-3.724 61.799Q-3.560 61.475-3.280 61.275Q-3.001 61.076-2.653 61.076Q-2.169 61.076-1.784 61.322Q-1.399 61.568-1.187 61.977Q-0.974 62.385-0.974 62.869Q-0.974 63.361-1.204 63.773Q-1.435 64.186-1.845 64.428Q-2.255 64.670-2.739 64.670M-2.739 64.397Q-2.313 64.397-2.097 64.176Q-1.880 63.955-1.817 63.629Q-1.755 63.303-1.755 62.869Q-1.755 62.557-1.780 62.307Q-1.806 62.057-1.895 61.832Q-1.985 61.607-2.181 61.471Q-2.376 61.334-2.692 61.334Q-3.020 61.334-3.253 61.543Q-3.485 61.752-3.597 62.070Q-3.708 62.389-3.708 62.701Q-3.704 62.740-3.702 62.773Q-3.700 62.807-3.700 62.861Q-3.700 62.877-3.702 62.885Q-3.704 62.893-3.708 62.900Q-3.708 63.475-3.481 63.936Q-3.255 64.397-2.739 64.397M0.210 65.908Q0.210 65.885 0.241 65.838Q0.534 65.576 0.700 65.209Q0.866 64.842 0.866 64.455L0.866 64.397Q0.737 64.502 0.569 64.502Q0.378 64.502 0.241 64.369Q0.105 64.236 0.105 64.037Q0.105 63.846 0.241 63.713Q0.378 63.580 0.569 63.580Q0.870 63.580 0.995 63.850Q1.120 64.119 1.120 64.455Q1.120 64.904 0.938 65.318Q0.757 65.732 0.417 66.029Q0.394 66.053 0.355 66.053Q0.308 66.053 0.259 66.008Q0.210 65.963 0.210 65.908M4.226 63.189L1.983 63.189L1.983 62.893L4.554 59.236Q4.593 59.182 4.655 59.182L4.800 59.182Q4.851 59.182 4.882 59.213Q4.913 59.244 4.913 59.295L4.913 62.893L5.745 62.893L5.745 63.189L4.913 63.189L4.913 63.943Q4.913 64.205 5.737 64.205L5.737 64.502L3.401 64.502L3.401 64.205Q4.226 64.205 4.226 63.943L4.226 63.189M4.280 60.088L2.312 62.893L4.280 62.893L4.280 60.088M6.831 63.623L6.769 63.623Q6.909 63.975 7.233 64.186Q7.558 64.397 7.944 64.397Q8.538 64.397 8.788 63.963Q9.038 63.529 9.038 62.893Q9.038 62.299 8.868 61.852Q8.698 61.404 8.198 61.404Q7.901 61.404 7.696 61.484Q7.491 61.564 7.390 61.656Q7.288 61.748 7.173 61.881Q7.058 62.014 7.007 62.029L6.937 62.029Q6.851 62.006 6.831 61.928L6.831 59.279Q6.862 59.182 6.937 59.182Q6.952 59.182 6.960 59.184Q6.968 59.186 6.976 59.189Q7.562 59.439 8.159 59.439Q8.741 59.439 9.358 59.182L9.382 59.182Q9.425 59.182 9.452 59.207Q9.480 59.232 9.480 59.272L9.480 59.350Q9.480 59.381 9.456 59.404Q9.159 59.756 8.737 59.953Q8.315 60.150 7.855 60.150Q7.507 60.150 7.128 60.045L7.128 61.541Q7.347 61.346 7.622 61.248Q7.897 61.150 8.198 61.150Q8.655 61.150 9.024 61.398Q9.394 61.647 9.601 62.051Q9.808 62.455 9.808 62.900Q9.808 63.389 9.552 63.797Q9.296 64.205 8.864 64.438Q8.433 64.670 7.944 64.670Q7.550 64.670 7.194 64.479Q6.839 64.287 6.628 63.953Q6.417 63.619 6.417 63.205Q6.417 63.025 6.534 62.912Q6.651 62.799 6.831 62.799Q6.948 62.799 7.040 62.852Q7.132 62.904 7.185 62.996Q7.237 63.088 7.237 63.205Q7.237 63.389 7.124 63.506Q7.011 63.623 6.831 63.623M11.062 65.908Q11.062 65.885 11.093 65.838Q11.386 65.576 11.552 65.209Q11.718 64.842 11.718 64.455L11.718 64.397Q11.589 64.502 11.421 64.502Q11.230 64.502 11.093 64.369Q10.956 64.236 10.956 64.037Q10.956 63.846 11.093 63.713Q11.230 63.580 11.421 63.580Q11.722 63.580 11.847 63.850Q11.972 64.119 11.972 64.455Q11.972 64.904 11.790 65.318Q11.608 65.732 11.269 66.029Q11.245 66.053 11.206 66.053Q11.159 66.053 11.110 66.008Q11.062 65.963 11.062 65.908",[725],[701,2366,2367],{"transform":2355},[709,2368],{"d":2369,"fill":2294,"stroke":2294,"className":2370,"style":842},"M16.211 64.502L13.051 64.502L13.051 64.295Q13.051 64.268 13.074 64.236L14.426 62.838Q14.805 62.451 15.053 62.162Q15.301 61.873 15.475 61.516Q15.648 61.158 15.648 60.768Q15.648 60.420 15.516 60.127Q15.383 59.834 15.129 59.656Q14.875 59.479 14.520 59.479Q14.160 59.479 13.869 59.674Q13.578 59.869 13.434 60.197L13.488 60.197Q13.672 60.197 13.797 60.318Q13.922 60.439 13.922 60.631Q13.922 60.811 13.797 60.939Q13.672 61.068 13.488 61.068Q13.309 61.068 13.180 60.939Q13.051 60.811 13.051 60.631Q13.051 60.229 13.271 59.893Q13.492 59.557 13.857 59.369Q14.223 59.182 14.625 59.182Q15.105 59.182 15.521 59.369Q15.938 59.557 16.189 59.918Q16.441 60.279 16.441 60.768Q16.441 61.127 16.287 61.430Q16.133 61.732 15.881 61.992Q15.629 62.252 15.279 62.537Q14.930 62.822 14.762 62.975L13.832 63.814L14.547 63.814Q15.922 63.814 15.961 63.775Q16.031 63.697 16.074 63.512Q16.117 63.326 16.160 63.037L16.441 63.037L16.211 64.502M17.711 63.623L17.648 63.623Q17.789 63.975 18.113 64.186Q18.438 64.397 18.824 64.397Q19.418 64.397 19.668 63.963Q19.918 63.529 19.918 62.893Q19.918 62.299 19.748 61.852Q19.578 61.404 19.078 61.404Q18.781 61.404 18.576 61.484Q18.371 61.564 18.270 61.656Q18.168 61.748 18.053 61.881Q17.938 62.014 17.887 62.029L17.816 62.029Q17.730 62.006 17.711 61.928L17.711 59.279Q17.742 59.182 17.816 59.182Q17.832 59.182 17.840 59.184Q17.848 59.186 17.855 59.189Q18.441 59.439 19.039 59.439Q19.621 59.439 20.238 59.182L20.262 59.182Q20.305 59.182 20.332 59.207Q20.359 59.232 20.359 59.272L20.359 59.350Q20.359 59.381 20.336 59.404Q20.039 59.756 19.617 59.953Q19.195 60.150 18.734 60.150Q18.387 60.150 18.008 60.045L18.008 61.541Q18.227 61.346 18.502 61.248Q18.777 61.150 19.078 61.150Q19.535 61.150 19.904 61.398Q20.273 61.647 20.480 62.051Q20.688 62.455 20.688 62.900Q20.688 63.389 20.432 63.797Q20.176 64.205 19.744 64.438Q19.313 64.670 18.824 64.670Q18.430 64.670 18.074 64.479Q17.719 64.287 17.508 63.953Q17.297 63.619 17.297 63.205Q17.297 63.025 17.414 62.912Q17.531 62.799 17.711 62.799Q17.828 62.799 17.920 62.852Q18.012 62.904 18.064 62.996Q18.117 63.088 18.117 63.205Q18.117 63.389 18.004 63.506Q17.891 63.623 17.711 63.623",[725],[701,2372,2374],{"transform":2373},"translate(-14.687 -74.244)",[709,2375],{"d":2376,"fill":703,"stroke":703,"className":2377,"style":842},"M-46.791 63.869Q-46.600 64.143-46.244 64.270Q-45.889 64.397-45.506 64.397Q-45.170 64.397-44.961 64.211Q-44.752 64.025-44.656 63.732Q-44.561 63.439-44.561 63.127Q-44.561 62.803-44.658 62.508Q-44.756 62.213-44.969 62.029Q-45.182 61.846-45.514 61.846L-46.080 61.846Q-46.111 61.846-46.141 61.816Q-46.170 61.787-46.170 61.760L-46.170 61.678Q-46.170 61.643-46.141 61.617Q-46.111 61.592-46.080 61.592L-45.600 61.557Q-45.314 61.557-45.117 61.352Q-44.920 61.147-44.824 60.852Q-44.729 60.557-44.729 60.279Q-44.729 59.900-44.928 59.662Q-45.127 59.424-45.506 59.424Q-45.826 59.424-46.115 59.531Q-46.404 59.639-46.568 59.861Q-46.389 59.861-46.266 59.988Q-46.143 60.115-46.143 60.287Q-46.143 60.459-46.268 60.584Q-46.393 60.709-46.568 60.709Q-46.740 60.709-46.865 60.584Q-46.990 60.459-46.990 60.287Q-46.990 59.920-46.766 59.672Q-46.541 59.424-46.201 59.303Q-45.861 59.182-45.506 59.182Q-45.158 59.182-44.795 59.303Q-44.432 59.424-44.184 59.674Q-43.936 59.924-43.936 60.279Q-43.936 60.764-44.254 61.147Q-44.572 61.529-45.049 61.701Q-44.498 61.811-44.098 62.197Q-43.697 62.584-43.697 63.119Q-43.697 63.576-43.961 63.932Q-44.225 64.287-44.647 64.479Q-45.068 64.670-45.506 64.670Q-45.916 64.670-46.309 64.535Q-46.701 64.400-46.967 64.115Q-47.232 63.830-47.232 63.412Q-47.232 63.217-47.100 63.088Q-46.967 62.959-46.775 62.959Q-46.650 62.959-46.547 63.018Q-46.443 63.076-46.381 63.182Q-46.318 63.287-46.318 63.412Q-46.318 63.607-46.453 63.738Q-46.588 63.869-46.791 63.869M-42.619 64.037Q-42.619 63.854-42.482 63.717Q-42.346 63.580-42.154 63.580Q-41.963 63.580-41.830 63.713Q-41.697 63.846-41.697 64.037Q-41.697 64.236-41.830 64.369Q-41.963 64.502-42.154 64.502Q-42.346 64.502-42.482 64.365Q-42.619 64.229-42.619 64.037",[725],[701,2379,2380,2383],{"fill":714},[709,2381],{"d":2382},"M-10.595-12.32a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[701,2384,2386],{"transform":2385},"translate(23.828 -73.922)",[709,2387],{"d":2272,"fill":703,"stroke":703,"className":2388,"style":726},[725],[701,2390,2392],{"transform":2391},"translate(44.772 -74.572)",[709,2393],{"d":2241,"fill":703,"stroke":703,"className":2394,"style":726},[725],[701,2396,2397,2400],{"fill":714},[709,2398],{"d":2399},"M29.238-12.32a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2401,2403],{"transform":2402},"translate(63.661 -73.922)",[709,2404],{"d":2405,"fill":703,"stroke":703,"className":2406,"style":726},"M-43.677 64.502L-46.709 64.502L-46.709 64.186Q-45.558 64.186-45.558 63.891L-45.558 59.167Q-46.046 59.400-46.767 59.400L-46.767 59.084Q-45.637 59.084-45.075 58.508L-44.930 58.508Q-44.895 58.508-44.862 58.541Q-44.829 58.574-44.829 58.609L-44.829 63.891Q-44.829 64.186-43.677 64.186L-43.677 64.502M-40.654 64.700Q-41.388 64.700-41.818 64.219Q-42.249 63.737-42.414 63.045Q-42.579 62.353-42.579 61.606Q-42.579 60.877-42.286 60.154Q-41.994 59.431-41.440 58.969Q-40.887 58.508-40.140 58.508Q-39.643 58.508-39.307 58.774Q-38.971 59.040-38.971 59.523Q-38.971 59.703-39.098 59.831Q-39.226 59.958-39.401 59.958Q-39.582 59.958-39.711 59.833Q-39.841 59.708-39.841 59.523Q-39.841 59.409-39.784 59.305Q-39.727 59.202-39.626 59.143Q-39.524 59.084-39.401 59.084Q-39.397 59.084-39.393 59.086Q-39.388 59.088-39.384 59.092Q-39.498 58.925-39.707 58.846Q-39.916 58.767-40.140 58.767Q-40.584 58.767-40.942 59.068Q-41.300 59.369-41.489 59.822Q-41.722 60.428-41.722 61.461Q-41.550 61.096-41.249 60.868Q-40.948 60.639-40.562 60.639Q-40.157 60.639-39.812 60.806Q-39.467 60.973-39.230 61.254Q-38.993 61.536-38.863 61.898Q-38.733 62.261-38.733 62.665Q-38.733 63.210-38.977 63.676Q-39.221 64.142-39.661 64.421Q-40.100 64.700-40.654 64.700M-40.654 64.414Q-40.192 64.414-39.957 64.157Q-39.722 63.900-39.656 63.526Q-39.590 63.153-39.590 62.683L-39.590 62.648Q-39.590 62.160-39.647 61.795Q-39.705 61.430-39.933 61.167Q-40.162 60.903-40.605 60.903Q-40.975 60.903-41.225 61.147Q-41.476 61.391-41.590 61.755Q-41.704 62.120-41.704 62.467Q-41.704 62.586-41.695 62.648Q-41.695 62.665-41.698 62.676Q-41.700 62.687-41.704 62.700Q-41.704 63.351-41.467 63.882Q-41.230 64.414-40.654 64.414",[725],[701,2408,2410],{"transform":2409},"translate(89.27 -75.147)",[709,2411],{"d":2260,"fill":703,"stroke":703,"className":2412,"style":726},[725],[701,2414,2415,2418],{"fill":714},[709,2416],{"fill":714,"d":2417},"M77.608-12.32a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2419,2421],{"transform":2420},"translate(112.031 -73.922)",[709,2422],{"d":2423,"fill":703,"stroke":703,"className":2424,"style":726},"M-46.683 63.781L-46.727 63.781Q-46.525 64.098-46.138 64.256Q-45.751 64.414-45.325 64.414Q-44.789 64.414-44.550 63.979Q-44.310 63.544-44.310 62.964Q-44.310 62.384-44.556 61.944Q-44.802 61.505-45.334 61.505L-45.954 61.505Q-45.980 61.505-46.013 61.476Q-46.046 61.448-46.046 61.426L-46.046 61.325Q-46.046 61.294-46.017 61.270Q-45.989 61.246-45.954 61.246L-45.435 61.206Q-44.969 61.206-44.723 60.734Q-44.477 60.261-44.477 59.743Q-44.477 59.316-44.690 59.042Q-44.903 58.767-45.325 58.767Q-45.668 58.767-45.993 58.897Q-46.318 59.026-46.503 59.281L-46.477 59.281Q-46.274 59.281-46.138 59.422Q-46.002 59.563-46.002 59.760Q-46.002 59.958-46.136 60.092Q-46.270 60.226-46.468 60.226Q-46.670 60.226-46.808 60.092Q-46.947 59.958-46.947 59.760Q-46.947 59.171-46.444 58.840Q-45.940 58.508-45.325 58.508Q-44.947 58.508-44.545 58.648Q-44.143 58.789-43.875 59.068Q-43.607 59.347-43.607 59.743Q-43.607 60.292-43.961 60.729Q-44.314 61.167-44.855 61.351Q-44.464 61.430-44.119 61.654Q-43.774 61.878-43.563 62.219Q-43.352 62.560-43.352 62.955Q-43.352 63.337-43.515 63.660Q-43.677 63.983-43.969 64.219Q-44.262 64.454-44.609 64.577Q-44.956 64.700-45.325 64.700Q-45.773 64.700-46.204 64.539Q-46.635 64.379-46.916 64.052Q-47.197 63.724-47.197 63.267Q-47.197 63.052-47.050 62.909Q-46.903 62.766-46.683 62.766Q-46.472 62.766-46.327 62.911Q-46.182 63.056-46.182 63.267Q-46.182 63.478-46.329 63.630Q-46.477 63.781-46.683 63.781M-40.654 64.700Q-41.779 64.700-42.192 63.803Q-42.605 62.907-42.605 61.632Q-42.605 60.859-42.456 60.160Q-42.306 59.461-41.871 58.985Q-41.436 58.508-40.654 58.508Q-39.876 58.508-39.441 58.987Q-39.006 59.466-38.856 60.162Q-38.707 60.859-38.707 61.632Q-38.707 62.911-39.120 63.805Q-39.533 64.700-40.654 64.700M-40.654 64.440Q-40.135 64.440-39.885 63.929Q-39.634 63.417-39.577 62.806Q-39.520 62.195-39.520 61.487Q-39.520 60.802-39.577 60.242Q-39.634 59.681-39.887 59.224Q-40.140 58.767-40.654 58.767Q-41.058 58.767-41.295 59.044Q-41.533 59.321-41.640 59.762Q-41.748 60.204-41.772 60.597Q-41.796 60.991-41.796 61.487Q-41.796 61.993-41.772 62.421Q-41.748 62.850-41.640 63.333Q-41.533 63.816-41.293 64.128Q-41.054 64.440-40.654 64.440",[725],[701,2426,2427,2433,2439],{"stroke":729,"fontFamily":833,"fontSize":834},[701,2428,2430],{"transform":2429},"translate(151.487 -75.022)",[709,2431],{"d":2281,"fill":703,"stroke":703,"className":2432,"style":842},[725],[701,2434,2435],{"transform":2429},[709,2436],{"d":2437,"fill":703,"stroke":703,"className":2438,"style":842},"M-16.372 64.502L-19.532 64.502L-19.532 64.295Q-19.532 64.268-19.509 64.236L-18.157 62.838Q-17.778 62.451-17.530 62.162Q-17.282 61.873-17.108 61.516Q-16.935 61.158-16.935 60.768Q-16.935 60.420-17.067 60.127Q-17.200 59.834-17.454 59.656Q-17.708 59.479-18.063 59.479Q-18.423 59.479-18.714 59.674Q-19.005 59.869-19.149 60.197L-19.095 60.197Q-18.911 60.197-18.786 60.318Q-18.661 60.439-18.661 60.631Q-18.661 60.811-18.786 60.939Q-18.911 61.068-19.095 61.068Q-19.274 61.068-19.403 60.939Q-19.532 60.811-19.532 60.631Q-19.532 60.229-19.312 59.893Q-19.091 59.557-18.726 59.369Q-18.360 59.182-17.958 59.182Q-17.478 59.182-17.062 59.369Q-16.645 59.557-16.394 59.918Q-16.142 60.279-16.142 60.768Q-16.142 61.127-16.296 61.430Q-16.450 61.732-16.702 61.992Q-16.954 62.252-17.304 62.537Q-17.653 62.822-17.821 62.975L-18.751 63.814L-18.036 63.814Q-16.661 63.814-16.622 63.775Q-16.552 63.697-16.509 63.512Q-16.466 63.326-16.423 63.037L-16.142 63.037L-16.372 64.502M-14.872 63.623L-14.935 63.623Q-14.794 63.975-14.470 64.186Q-14.145 64.397-13.759 64.397Q-13.165 64.397-12.915 63.963Q-12.665 63.529-12.665 62.893Q-12.665 62.299-12.835 61.852Q-13.005 61.404-13.505 61.404Q-13.802 61.404-14.007 61.484Q-14.212 61.564-14.313 61.656Q-14.415 61.748-14.530 61.881Q-14.645 62.014-14.696 62.029L-14.767 62.029Q-14.853 62.006-14.872 61.928L-14.872 59.279Q-14.841 59.182-14.767 59.182Q-14.751 59.182-14.743 59.184Q-14.735 59.186-14.728 59.189Q-14.142 59.439-13.544 59.439Q-12.962 59.439-12.345 59.182L-12.321 59.182Q-12.278 59.182-12.251 59.207Q-12.224 59.232-12.224 59.272L-12.224 59.350Q-12.224 59.381-12.247 59.404Q-12.544 59.756-12.966 59.953Q-13.388 60.150-13.849 60.150Q-14.196 60.150-14.575 60.045L-14.575 61.541Q-14.356 61.346-14.081 61.248Q-13.806 61.150-13.505 61.150Q-13.048 61.150-12.679 61.398Q-12.310 61.647-12.103 62.051Q-11.895 62.455-11.895 62.900Q-11.895 63.389-12.151 63.797Q-12.407 64.205-12.839 64.438Q-13.270 64.670-13.759 64.670Q-14.153 64.670-14.509 64.479Q-14.864 64.287-15.075 63.953Q-15.286 63.619-15.286 63.205Q-15.286 63.025-15.169 62.912Q-15.052 62.799-14.872 62.799Q-14.755 62.799-14.663 62.852Q-14.571 62.904-14.519 62.996Q-14.466 63.088-14.466 63.205Q-14.466 63.389-14.579 63.506Q-14.692 63.623-14.872 63.623M-10.642 65.908Q-10.642 65.885-10.610 65.838Q-10.317 65.576-10.151 65.209Q-9.985 64.842-9.985 64.455L-9.985 64.397Q-10.114 64.502-10.282 64.502Q-10.474 64.502-10.610 64.369Q-10.747 64.236-10.747 64.037Q-10.747 63.846-10.610 63.713Q-10.474 63.580-10.282 63.580Q-9.981 63.580-9.856 63.850Q-9.731 64.119-9.731 64.455Q-9.731 64.904-9.913 65.318Q-10.095 65.732-10.435 66.029Q-10.458 66.053-10.497 66.053Q-10.544 66.053-10.593 66.008Q-10.642 65.963-10.642 65.908M-6.626 63.189L-8.868 63.189L-8.868 62.893L-6.298 59.236Q-6.259 59.182-6.196 59.182L-6.052 59.182Q-6.001 59.182-5.970 59.213Q-5.938 59.244-5.938 59.295L-5.938 62.893L-5.106 62.893L-5.106 63.189L-5.938 63.189L-5.938 63.943Q-5.938 64.205-5.114 64.205L-5.114 64.502L-7.450 64.502L-7.450 64.205Q-6.626 64.205-6.626 63.943L-6.626 63.189M-6.571 60.088L-8.540 62.893L-6.571 62.893L-6.571 60.088M-4.020 63.623L-4.083 63.623Q-3.942 63.975-3.618 64.186Q-3.294 64.397-2.907 64.397Q-2.313 64.397-2.063 63.963Q-1.813 63.529-1.813 62.893Q-1.813 62.299-1.983 61.852Q-2.153 61.404-2.653 61.404Q-2.950 61.404-3.155 61.484Q-3.360 61.564-3.462 61.656Q-3.563 61.748-3.679 61.881Q-3.794 62.014-3.845 62.029L-3.915 62.029Q-4.001 62.006-4.020 61.928L-4.020 59.279Q-3.989 59.182-3.915 59.182Q-3.899 59.182-3.892 59.184Q-3.884 59.186-3.876 59.189Q-3.290 59.439-2.692 59.439Q-2.110 59.439-1.493 59.182L-1.470 59.182Q-1.427 59.182-1.399 59.207Q-1.372 59.232-1.372 59.272L-1.372 59.350Q-1.372 59.381-1.395 59.404Q-1.692 59.756-2.114 59.953Q-2.536 60.150-2.997 60.150Q-3.345 60.150-3.724 60.045L-3.724 61.541Q-3.505 61.346-3.229 61.248Q-2.954 61.150-2.653 61.150Q-2.196 61.150-1.827 61.398Q-1.458 61.647-1.251 62.051Q-1.044 62.455-1.044 62.900Q-1.044 63.389-1.300 63.797Q-1.556 64.205-1.987 64.438Q-2.419 64.670-2.907 64.670Q-3.302 64.670-3.657 64.479Q-4.013 64.287-4.224 63.953Q-4.435 63.619-4.435 63.205Q-4.435 63.025-4.317 62.912Q-4.200 62.799-4.020 62.799Q-3.903 62.799-3.812 62.852Q-3.720 62.904-3.667 62.996Q-3.614 63.088-3.614 63.205Q-3.614 63.389-3.728 63.506Q-3.841 63.623-4.020 63.623M0.210 65.908Q0.210 65.885 0.241 65.838Q0.534 65.576 0.700 65.209Q0.866 64.842 0.866 64.455L0.866 64.397Q0.737 64.502 0.569 64.502Q0.378 64.502 0.241 64.369Q0.105 64.236 0.105 64.037Q0.105 63.846 0.241 63.713Q0.378 63.580 0.569 63.580Q0.870 63.580 0.995 63.850Q1.120 64.119 1.120 64.455Q1.120 64.904 0.938 65.318Q0.757 65.732 0.417 66.029Q0.394 66.053 0.355 66.053Q0.308 66.053 0.259 66.008Q0.210 65.963 0.210 65.908",[725],[701,2440,2441],{"transform":2429},[709,2442],{"d":2443,"fill":2294,"stroke":2294,"className":2444,"style":842},"M2.557 63.869Q2.748 64.143 3.104 64.270Q3.459 64.397 3.842 64.397Q4.178 64.397 4.387 64.211Q4.596 64.025 4.692 63.732Q4.787 63.439 4.787 63.127Q4.787 62.803 4.690 62.508Q4.592 62.213 4.379 62.029Q4.166 61.846 3.834 61.846L3.268 61.846Q3.237 61.846 3.207 61.816Q3.178 61.787 3.178 61.760L3.178 61.678Q3.178 61.643 3.207 61.617Q3.237 61.592 3.268 61.592L3.748 61.557Q4.034 61.557 4.231 61.352Q4.428 61.147 4.524 60.852Q4.619 60.557 4.619 60.279Q4.619 59.900 4.420 59.662Q4.221 59.424 3.842 59.424Q3.522 59.424 3.233 59.531Q2.944 59.639 2.780 59.861Q2.959 59.861 3.082 59.988Q3.205 60.115 3.205 60.287Q3.205 60.459 3.080 60.584Q2.955 60.709 2.780 60.709Q2.608 60.709 2.483 60.584Q2.358 60.459 2.358 60.287Q2.358 59.920 2.582 59.672Q2.807 59.424 3.147 59.303Q3.487 59.182 3.842 59.182Q4.190 59.182 4.553 59.303Q4.916 59.424 5.164 59.674Q5.412 59.924 5.412 60.279Q5.412 60.764 5.094 61.147Q4.776 61.529 4.299 61.701Q4.850 61.811 5.250 62.197Q5.651 62.584 5.651 63.119Q5.651 63.576 5.387 63.932Q5.123 64.287 4.702 64.479Q4.280 64.670 3.842 64.670Q3.432 64.670 3.039 64.535Q2.647 64.400 2.381 64.115Q2.116 63.830 2.116 63.412Q2.116 63.217 2.248 63.088Q2.381 62.959 2.573 62.959Q2.698 62.959 2.801 63.018Q2.905 63.076 2.967 63.182Q3.030 63.287 3.030 63.412Q3.030 63.607 2.895 63.738Q2.760 63.869 2.557 63.869M8.131 64.670Q7.428 64.670 7.028 64.270Q6.627 63.869 6.483 63.260Q6.338 62.650 6.338 61.951Q6.338 61.428 6.409 60.965Q6.479 60.502 6.672 60.090Q6.866 59.678 7.223 59.430Q7.580 59.182 8.131 59.182Q8.682 59.182 9.039 59.430Q9.397 59.678 9.588 60.088Q9.780 60.498 9.850 60.967Q9.920 61.436 9.920 61.951Q9.920 62.650 9.778 63.258Q9.635 63.865 9.235 64.268Q8.834 64.670 8.131 64.670M8.131 64.412Q8.604 64.412 8.836 63.977Q9.069 63.541 9.123 63.002Q9.178 62.463 9.178 61.822Q9.178 60.826 8.994 60.133Q8.811 59.439 8.131 59.439Q7.764 59.439 7.543 59.678Q7.323 59.916 7.227 60.273Q7.131 60.631 7.106 61.002Q7.080 61.373 7.080 61.822Q7.080 62.463 7.135 63.002Q7.190 63.541 7.422 63.977Q7.655 64.412 8.131 64.412",[725],[701,2446,2448],{"transform":2447},"translate(-14.687 -48.637)",[709,2449],{"d":2450,"fill":703,"stroke":703,"className":2451,"style":842},"M-45.104 63.189L-47.346 63.189L-47.346 62.893L-44.775 59.236Q-44.736 59.182-44.674 59.182L-44.529 59.182Q-44.479 59.182-44.447 59.213Q-44.416 59.244-44.416 59.295L-44.416 62.893L-43.584 62.893L-43.584 63.189L-44.416 63.189L-44.416 63.943Q-44.416 64.205-43.592 64.205L-43.592 64.502L-45.928 64.502L-45.928 64.205Q-45.104 64.205-45.104 63.943L-45.104 63.189M-45.049 60.088L-47.018 62.893L-45.049 62.893L-45.049 60.088M-42.619 64.037Q-42.619 63.854-42.482 63.717Q-42.346 63.580-42.154 63.580Q-41.963 63.580-41.830 63.713Q-41.697 63.846-41.697 64.037Q-41.697 64.236-41.830 64.369Q-41.963 64.502-42.154 64.502Q-42.346 64.502-42.482 64.365Q-42.619 64.229-42.619 64.037",[725],[701,2453,2454,2457],{"fill":714},[709,2455],{"d":2456},"M-10.595 13.288a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[701,2458,2460],{"transform":2459},"translate(23.828 -48.315)",[709,2461],{"d":2349,"fill":703,"stroke":703,"className":2462,"style":726},[725],[701,2464,2466],{"transform":2465},"translate(44.772 -48.965)",[709,2467],{"d":2241,"fill":703,"stroke":703,"className":2468,"style":726},[725],[701,2470,2471,2474],{"fill":714},[709,2472],{"d":2473},"M29.238 13.288a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2475,2477],{"transform":2476},"translate(63.661 -48.315)",[709,2478],{"d":2423,"fill":703,"stroke":703,"className":2479,"style":726},[725],[701,2481,2483],{"transform":2482},"translate(89.27 -49.54)",[709,2484],{"d":2260,"fill":703,"stroke":703,"className":2485,"style":726},[725],[701,2487,2488,2491],{"fill":714},[709,2489],{"fill":714,"d":2490},"M77.608 13.288a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2492,2494],{"transform":2493},"translate(112.031 -48.315)",[709,2495],{"d":2496,"fill":703,"stroke":703,"className":2497,"style":726},"M-46.758 63.496Q-46.617 63.909-46.257 64.161Q-45.897 64.414-45.461 64.414Q-45.009 64.414-44.743 64.161Q-44.477 63.909-44.374 63.524Q-44.271 63.140-44.271 62.683Q-44.271 60.982-45.180 60.982Q-45.501 60.982-45.730 61.076Q-45.958 61.171-46.088 61.290Q-46.217 61.408-46.329 61.547Q-46.441 61.685-46.477 61.694L-46.560 61.694Q-46.604 61.694-46.635 61.663Q-46.666 61.632-46.666 61.584L-46.666 58.587Q-46.666 58.556-46.630 58.532Q-46.595 58.508-46.569 58.508L-46.529 58.508Q-45.897 58.798-45.224 58.798Q-44.552 58.798-43.910 58.508L-43.884 58.508Q-43.853 58.508-43.820 58.530Q-43.787 58.552-43.787 58.587L-43.787 58.688Q-43.787 58.692-43.796 58.710Q-43.805 58.728-43.805 58.732Q-44.121 59.127-44.591 59.349Q-45.062 59.571-45.558 59.571Q-45.967 59.571-46.349 59.461L-46.349 61.180Q-45.892 60.723-45.180 60.723Q-44.670 60.723-44.271 61.004Q-43.871 61.285-43.649 61.740Q-43.427 62.195-43.427 62.700Q-43.427 63.250-43.706 63.709Q-43.985 64.168-44.451 64.434Q-44.917 64.700-45.461 64.700Q-45.901 64.700-46.285 64.473Q-46.670 64.247-46.898 63.867Q-47.127 63.487-47.127 63.043Q-47.127 62.850-46.995 62.718Q-46.863 62.586-46.666 62.586Q-46.534 62.586-46.430 62.645Q-46.327 62.705-46.268 62.808Q-46.209 62.911-46.209 63.043Q-46.209 63.241-46.336 63.373Q-46.463 63.504-46.666 63.504Q-46.727 63.504-46.758 63.496M-42.139 63.496Q-41.999 63.909-41.638 64.161Q-41.278 64.414-40.843 64.414Q-40.390 64.414-40.124 64.161Q-39.858 63.909-39.755 63.524Q-39.652 63.140-39.652 62.683Q-39.652 60.982-40.562 60.982Q-40.882 60.982-41.111 61.076Q-41.339 61.171-41.469 61.290Q-41.599 61.408-41.711 61.547Q-41.823 61.685-41.858 61.694L-41.941 61.694Q-41.985 61.694-42.016 61.663Q-42.047 61.632-42.047 61.584L-42.047 58.587Q-42.047 58.556-42.012 58.532Q-41.977 58.508-41.950 58.508L-41.911 58.508Q-41.278 58.798-40.605 58.798Q-39.933 58.798-39.292 58.508L-39.265 58.508Q-39.234 58.508-39.201 58.530Q-39.168 58.552-39.168 58.587L-39.168 58.688Q-39.168 58.692-39.177 58.710Q-39.186 58.728-39.186 58.732Q-39.502 59.127-39.973 59.349Q-40.443 59.571-40.939 59.571Q-41.348 59.571-41.730 59.461L-41.730 61.180Q-41.273 60.723-40.562 60.723Q-40.052 60.723-39.652 61.004Q-39.252 61.285-39.030 61.740Q-38.808 62.195-38.808 62.700Q-38.808 63.250-39.087 63.709Q-39.366 64.168-39.832 64.434Q-40.298 64.700-40.843 64.700Q-41.282 64.700-41.667 64.473Q-42.051 64.247-42.280 63.867Q-42.508 63.487-42.508 63.043Q-42.508 62.850-42.376 62.718Q-42.245 62.586-42.047 62.586Q-41.915 62.586-41.812 62.645Q-41.709 62.705-41.649 62.808Q-41.590 62.911-41.590 63.043Q-41.590 63.241-41.717 63.373Q-41.845 63.504-42.047 63.504Q-42.108 63.504-42.139 63.496",[725],[701,2499,2500,2506,2512],{"stroke":729,"fontFamily":833,"fontSize":834},[701,2501,2503],{"transform":2502},"translate(151.487 -49.415)",[709,2504],{"d":2281,"fill":703,"stroke":703,"className":2505,"style":842},[725],[701,2507,2508],{"transform":2502},[709,2509],{"d":2510,"fill":703,"stroke":703,"className":2511,"style":842},"M-17.478 63.189L-19.720 63.189L-19.720 62.893L-17.149 59.236Q-17.110 59.182-17.048 59.182L-16.903 59.182Q-16.853 59.182-16.821 59.213Q-16.790 59.244-16.790 59.295L-16.790 62.893L-15.958 62.893L-15.958 63.189L-16.790 63.189L-16.790 63.943Q-16.790 64.205-15.966 64.205L-15.966 64.502L-18.302 64.502L-18.302 64.205Q-17.478 64.205-17.478 63.943L-17.478 63.189M-17.423 60.088L-19.392 62.893L-17.423 62.893L-17.423 60.088M-14.872 63.623L-14.935 63.623Q-14.794 63.975-14.470 64.186Q-14.145 64.397-13.759 64.397Q-13.165 64.397-12.915 63.963Q-12.665 63.529-12.665 62.893Q-12.665 62.299-12.835 61.852Q-13.005 61.404-13.505 61.404Q-13.802 61.404-14.007 61.484Q-14.212 61.564-14.313 61.656Q-14.415 61.748-14.530 61.881Q-14.645 62.014-14.696 62.029L-14.767 62.029Q-14.853 62.006-14.872 61.928L-14.872 59.279Q-14.841 59.182-14.767 59.182Q-14.751 59.182-14.743 59.184Q-14.735 59.186-14.728 59.189Q-14.142 59.439-13.544 59.439Q-12.962 59.439-12.345 59.182L-12.321 59.182Q-12.278 59.182-12.251 59.207Q-12.224 59.232-12.224 59.272L-12.224 59.350Q-12.224 59.381-12.247 59.404Q-12.544 59.756-12.966 59.953Q-13.388 60.150-13.849 60.150Q-14.196 60.150-14.575 60.045L-14.575 61.541Q-14.356 61.346-14.081 61.248Q-13.806 61.150-13.505 61.150Q-13.048 61.150-12.679 61.398Q-12.310 61.647-12.103 62.051Q-11.895 62.455-11.895 62.900Q-11.895 63.389-12.151 63.797Q-12.407 64.205-12.839 64.438Q-13.270 64.670-13.759 64.670Q-14.153 64.670-14.509 64.479Q-14.864 64.287-15.075 63.953Q-15.286 63.619-15.286 63.205Q-15.286 63.025-15.169 62.912Q-15.052 62.799-14.872 62.799Q-14.755 62.799-14.663 62.852Q-14.571 62.904-14.519 62.996Q-14.466 63.088-14.466 63.205Q-14.466 63.389-14.579 63.506Q-14.692 63.623-14.872 63.623M-10.642 65.908Q-10.642 65.885-10.610 65.838Q-10.317 65.576-10.151 65.209Q-9.985 64.842-9.985 64.455L-9.985 64.397Q-10.114 64.502-10.282 64.502Q-10.474 64.502-10.610 64.369Q-10.747 64.236-10.747 64.037Q-10.747 63.846-10.610 63.713Q-10.474 63.580-10.282 63.580Q-9.981 63.580-9.856 63.850Q-9.731 64.119-9.731 64.455Q-9.731 64.904-9.913 65.318Q-10.095 65.732-10.435 66.029Q-10.458 66.053-10.497 66.053Q-10.544 66.053-10.593 66.008Q-10.642 65.963-10.642 65.908",[725],[701,2513,2514],{"transform":2502},[709,2515],{"d":2516,"fill":2294,"stroke":2294,"className":2517,"style":842},"M-8.257 63.623L-8.320 63.623Q-8.179 63.975-7.855 64.186Q-7.531 64.397-7.144 64.397Q-6.550 64.397-6.300 63.963Q-6.050 63.529-6.050 62.893Q-6.050 62.299-6.220 61.852Q-6.390 61.404-6.890 61.404Q-7.187 61.404-7.392 61.484Q-7.597 61.564-7.699 61.656Q-7.800 61.748-7.915 61.881Q-8.031 62.014-8.081 62.029L-8.152 62.029Q-8.238 62.006-8.257 61.928L-8.257 59.279Q-8.226 59.182-8.152 59.182Q-8.136 59.182-8.128 59.184Q-8.120 59.186-8.113 59.189Q-7.527 59.439-6.929 59.439Q-6.347 59.439-5.730 59.182L-5.706 59.182Q-5.663 59.182-5.636 59.207Q-5.609 59.232-5.609 59.272L-5.609 59.350Q-5.609 59.381-5.632 59.404Q-5.929 59.756-6.351 59.953Q-6.773 60.150-7.234 60.150Q-7.581 60.150-7.960 60.045L-7.960 61.541Q-7.742 61.346-7.466 61.248Q-7.191 61.150-6.890 61.150Q-6.433 61.150-6.064 61.398Q-5.695 61.647-5.488 62.051Q-5.281 62.455-5.281 62.900Q-5.281 63.389-5.536 63.797Q-5.792 64.205-6.224 64.438Q-6.656 64.670-7.144 64.670Q-7.538 64.670-7.894 64.479Q-8.249 64.287-8.460 63.953Q-8.671 63.619-8.671 63.205Q-8.671 63.025-8.554 62.912Q-8.437 62.799-8.257 62.799Q-8.140 62.799-8.048 62.852Q-7.956 62.904-7.904 62.996Q-7.851 63.088-7.851 63.205Q-7.851 63.389-7.964 63.506Q-8.077 63.623-8.257 63.623M-4.011 63.623L-4.074 63.623Q-3.933 63.975-3.609 64.186Q-3.284 64.397-2.898 64.397Q-2.304 64.397-2.054 63.963Q-1.804 63.529-1.804 62.893Q-1.804 62.299-1.974 61.852Q-2.144 61.404-2.644 61.404Q-2.941 61.404-3.146 61.484Q-3.351 61.564-3.452 61.656Q-3.554 61.748-3.669 61.881Q-3.784 62.014-3.835 62.029L-3.906 62.029Q-3.992 62.006-4.011 61.928L-4.011 59.279Q-3.980 59.182-3.906 59.182Q-3.890 59.182-3.882 59.184Q-3.874 59.186-3.867 59.189Q-3.281 59.439-2.683 59.439Q-2.101 59.439-1.484 59.182L-1.460 59.182Q-1.417 59.182-1.390 59.207Q-1.363 59.232-1.363 59.272L-1.363 59.350Q-1.363 59.381-1.386 59.404Q-1.683 59.756-2.105 59.953Q-2.527 60.150-2.988 60.150Q-3.335 60.150-3.714 60.045L-3.714 61.541Q-3.495 61.346-3.220 61.248Q-2.945 61.150-2.644 61.150Q-2.187 61.150-1.818 61.398Q-1.449 61.647-1.242 62.051Q-1.034 62.455-1.034 62.900Q-1.034 63.389-1.290 63.797Q-1.546 64.205-1.978 64.438Q-2.409 64.670-2.898 64.670Q-3.292 64.670-3.648 64.479Q-4.003 64.287-4.214 63.953Q-4.425 63.619-4.425 63.205Q-4.425 63.025-4.308 62.912Q-4.191 62.799-4.011 62.799Q-3.894 62.799-3.802 62.852Q-3.710 62.904-3.658 62.996Q-3.605 63.088-3.605 63.205Q-3.605 63.389-3.718 63.506Q-3.831 63.623-4.011 63.623",[725],[701,2519,2521],{"transform":2520},"translate(-14.687 -23.03)",[709,2522],{"d":2523,"fill":703,"stroke":703,"className":2524,"style":842},"M-46.744 63.623L-46.807 63.623Q-46.666 63.975-46.342 64.186Q-46.018 64.397-45.631 64.397Q-45.037 64.397-44.787 63.963Q-44.537 63.529-44.537 62.893Q-44.537 62.299-44.707 61.852Q-44.877 61.404-45.377 61.404Q-45.674 61.404-45.879 61.484Q-46.084 61.564-46.186 61.656Q-46.287 61.748-46.402 61.881Q-46.518 62.014-46.568 62.029L-46.639 62.029Q-46.725 62.006-46.744 61.928L-46.744 59.279Q-46.713 59.182-46.639 59.182Q-46.623 59.182-46.615 59.184Q-46.607 59.186-46.600 59.189Q-46.014 59.439-45.416 59.439Q-44.834 59.439-44.217 59.182L-44.193 59.182Q-44.150 59.182-44.123 59.207Q-44.096 59.232-44.096 59.272L-44.096 59.350Q-44.096 59.381-44.119 59.404Q-44.416 59.756-44.838 59.953Q-45.260 60.150-45.721 60.150Q-46.068 60.150-46.447 60.045L-46.447 61.541Q-46.229 61.346-45.953 61.248Q-45.678 61.150-45.377 61.150Q-44.920 61.150-44.551 61.398Q-44.182 61.647-43.975 62.051Q-43.768 62.455-43.768 62.900Q-43.768 63.389-44.023 63.797Q-44.279 64.205-44.711 64.438Q-45.143 64.670-45.631 64.670Q-46.025 64.670-46.381 64.479Q-46.736 64.287-46.947 63.953Q-47.158 63.619-47.158 63.205Q-47.158 63.025-47.041 62.912Q-46.924 62.799-46.744 62.799Q-46.627 62.799-46.535 62.852Q-46.443 62.904-46.391 62.996Q-46.338 63.088-46.338 63.205Q-46.338 63.389-46.451 63.506Q-46.564 63.623-46.744 63.623M-42.619 64.037Q-42.619 63.854-42.482 63.717Q-42.346 63.580-42.154 63.580Q-41.963 63.580-41.830 63.713Q-41.697 63.846-41.697 64.037Q-41.697 64.236-41.830 64.369Q-41.963 64.502-42.154 64.502Q-42.346 64.502-42.482 64.365Q-42.619 64.229-42.619 64.037",[725],[701,2526,2527,2530],{"fill":714},[709,2528],{"d":2529},"M-10.595 38.895a8.536 8.536 0 1 0-17.072 0 8.536 8.536 0 0 0 17.072 0Zm-8.536 0",[701,2531,2533],{"transform":2532},"translate(23.828 -22.707)",[709,2534],{"d":2535,"fill":703,"stroke":703,"className":2536,"style":726},"M-44.886 63.025L-47.325 63.025L-47.325 62.709L-44.499 58.561Q-44.455 58.508-44.389 58.508L-44.235 58.508Q-44.196 58.508-44.163 58.541Q-44.130 58.574-44.130 58.618L-44.130 62.709L-43.229 62.709L-43.229 63.025L-44.130 63.025L-44.130 63.891Q-44.130 64.186-43.229 64.186L-43.229 64.502L-45.782 64.502L-45.782 64.186Q-45.422 64.186-45.154 64.131Q-44.886 64.076-44.886 63.891L-44.886 63.025M-44.829 59.536L-46.991 62.709L-44.829 62.709L-44.829 59.536M-42.139 63.496Q-41.999 63.909-41.638 64.161Q-41.278 64.414-40.843 64.414Q-40.390 64.414-40.124 64.161Q-39.858 63.909-39.755 63.524Q-39.652 63.140-39.652 62.683Q-39.652 60.982-40.562 60.982Q-40.882 60.982-41.111 61.076Q-41.339 61.171-41.469 61.290Q-41.599 61.408-41.711 61.547Q-41.823 61.685-41.858 61.694L-41.941 61.694Q-41.985 61.694-42.016 61.663Q-42.047 61.632-42.047 61.584L-42.047 58.587Q-42.047 58.556-42.012 58.532Q-41.977 58.508-41.950 58.508L-41.911 58.508Q-41.278 58.798-40.605 58.798Q-39.933 58.798-39.292 58.508L-39.265 58.508Q-39.234 58.508-39.201 58.530Q-39.168 58.552-39.168 58.587L-39.168 58.688Q-39.168 58.692-39.177 58.710Q-39.186 58.728-39.186 58.732Q-39.502 59.127-39.973 59.349Q-40.443 59.571-40.939 59.571Q-41.348 59.571-41.730 59.461L-41.730 61.180Q-41.273 60.723-40.562 60.723Q-40.052 60.723-39.652 61.004Q-39.252 61.285-39.030 61.740Q-38.808 62.195-38.808 62.700Q-38.808 63.250-39.087 63.709Q-39.366 64.168-39.832 64.434Q-40.298 64.700-40.843 64.700Q-41.282 64.700-41.667 64.473Q-42.051 64.247-42.280 63.867Q-42.508 63.487-42.508 63.043Q-42.508 62.850-42.376 62.718Q-42.245 62.586-42.047 62.586Q-41.915 62.586-41.812 62.645Q-41.709 62.705-41.649 62.808Q-41.590 62.911-41.590 63.043Q-41.590 63.241-41.717 63.373Q-41.845 63.504-42.047 63.504Q-42.108 63.504-42.139 63.496",[725],[701,2538,2540],{"transform":2539},"translate(44.772 -23.357)",[709,2541],{"d":2241,"fill":703,"stroke":703,"className":2542,"style":726},[725],[701,2544,2545,2548],{"fill":714},[709,2546],{"d":2547},"M29.238 38.895a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2549,2551],{"transform":2550},"translate(63.661 -22.707)",[709,2552],{"d":2496,"fill":703,"stroke":703,"className":2553,"style":726},[725],[701,2555,2557],{"transform":2556},"translate(89.27 -23.932)",[709,2558],{"d":2260,"fill":703,"stroke":703,"className":2559,"style":726},[725],[701,2561,2562,2565],{"fill":714},[709,2563],{"fill":714,"d":2564},"M77.608 38.895a8.536 8.536 0 1 0-17.071 0 8.536 8.536 0 0 0 17.071 0Zm-8.535 0",[701,2566,2568],{"transform":2567},"translate(109.719 -22.707)",[709,2569],{"d":2570,"fill":703,"stroke":703,"className":2571,"style":726},"M-43.677 64.502L-46.709 64.502L-46.709 64.186Q-45.558 64.186-45.558 63.891L-45.558 59.167Q-46.046 59.400-46.767 59.400L-46.767 59.084Q-45.637 59.084-45.075 58.508L-44.930 58.508Q-44.895 58.508-44.862 58.541Q-44.829 58.574-44.829 58.609L-44.829 63.891Q-44.829 64.186-43.677 64.186L-43.677 64.502M-40.654 64.700Q-41.779 64.700-42.192 63.803Q-42.605 62.907-42.605 61.632Q-42.605 60.859-42.456 60.160Q-42.306 59.461-41.871 58.985Q-41.436 58.508-40.654 58.508Q-39.876 58.508-39.441 58.987Q-39.006 59.466-38.856 60.162Q-38.707 60.859-38.707 61.632Q-38.707 62.911-39.120 63.805Q-39.533 64.700-40.654 64.700M-40.654 64.440Q-40.135 64.440-39.885 63.929Q-39.634 63.417-39.577 62.806Q-39.520 62.195-39.520 61.487Q-39.520 60.802-39.577 60.242Q-39.634 59.681-39.887 59.224Q-40.140 58.767-40.654 58.767Q-41.058 58.767-41.295 59.044Q-41.533 59.321-41.640 59.762Q-41.748 60.204-41.772 60.597Q-41.796 60.991-41.796 61.487Q-41.796 61.993-41.772 62.421Q-41.748 62.850-41.640 63.333Q-41.533 63.816-41.293 64.128Q-41.054 64.440-40.654 64.440M-36.035 64.700Q-37.160 64.700-37.573 63.803Q-37.986 62.907-37.986 61.632Q-37.986 60.859-37.837 60.160Q-37.688 59.461-37.252 58.985Q-36.817 58.508-36.035 58.508Q-35.257 58.508-34.822 58.987Q-34.387 59.466-34.238 60.162Q-34.088 60.859-34.088 61.632Q-34.088 62.911-34.501 63.805Q-34.915 64.700-36.035 64.700M-36.035 64.440Q-35.517 64.440-35.266 63.929Q-35.016 63.417-34.959 62.806Q-34.901 62.195-34.901 61.487Q-34.901 60.802-34.959 60.242Q-35.016 59.681-35.268 59.224Q-35.521 58.767-36.035 58.767Q-36.439 58.767-36.677 59.044Q-36.914 59.321-37.022 59.762Q-37.129 60.204-37.154 60.597Q-37.178 60.991-37.178 61.487Q-37.178 61.993-37.154 62.421Q-37.129 62.850-37.022 63.333Q-36.914 63.816-36.675 64.128Q-36.435 64.440-36.035 64.440",[725],[701,2573,2574,2581],{"stroke":729,"fontFamily":833,"fontSize":834},[701,2575,2577],{"transform":2576},"translate(151.487 -23.147)",[709,2578],{"d":2579,"fill":703,"stroke":703,"className":2580,"style":842},"M-45.338 64.502L-47.318 64.502L-47.318 64.205Q-47.049 64.205-46.881 64.160Q-46.713 64.115-46.713 63.943L-46.713 61.807Q-46.713 61.592-46.775 61.496Q-46.838 61.400-46.955 61.379Q-47.072 61.357-47.318 61.357L-47.318 61.061L-46.150 60.975L-46.150 61.760Q-46.072 61.549-45.920 61.363Q-45.768 61.178-45.568 61.076Q-45.369 60.975-45.143 60.975Q-44.897 60.975-44.705 61.119Q-44.514 61.264-44.514 61.494Q-44.514 61.650-44.619 61.760Q-44.725 61.869-44.881 61.869Q-45.037 61.869-45.147 61.760Q-45.256 61.650-45.256 61.494Q-45.256 61.334-45.150 61.229Q-45.475 61.229-45.689 61.457Q-45.904 61.686-46 62.025Q-46.096 62.365-46.096 62.670L-46.096 63.943Q-46.096 64.111-45.869 64.158Q-45.643 64.205-45.338 64.205L-45.338 64.502M-44.033 62.807Q-44.033 62.303-43.777 61.871Q-43.522 61.439-43.086 61.188Q-42.650 60.936-42.150 60.936Q-41.764 60.936-41.422 61.080Q-41.080 61.225-40.818 61.486Q-40.557 61.748-40.414 62.084Q-40.272 62.420-40.272 62.807Q-40.272 63.299-40.535 63.709Q-40.799 64.119-41.229 64.350Q-41.658 64.580-42.150 64.580Q-42.643 64.580-43.076 64.348Q-43.510 64.115-43.772 63.707Q-44.033 63.299-44.033 62.807M-42.150 64.303Q-41.693 64.303-41.441 64.080Q-41.189 63.857-41.102 63.506Q-41.014 63.154-41.014 62.709Q-41.014 62.279-41.107 61.941Q-41.201 61.604-41.455 61.397Q-41.709 61.189-42.150 61.189Q-42.799 61.189-43.043 61.606Q-43.287 62.022-43.287 62.709Q-43.287 63.154-43.199 63.506Q-43.111 63.857-42.859 64.080Q-42.607 64.303-42.150 64.303",[725],[701,2582,2583],{"transform":2576},[709,2584],{"d":2585,"fill":703,"stroke":703,"className":2586,"style":842},"M-39.547 62.807Q-39.547 62.303-39.291 61.871Q-39.035 61.439-38.599 61.188Q-38.164 60.936-37.664 60.936Q-37.277 60.936-36.935 61.080Q-36.594 61.225-36.332 61.486Q-36.070 61.748-35.928 62.084Q-35.785 62.420-35.785 62.807Q-35.785 63.299-36.049 63.709Q-36.312 64.119-36.742 64.350Q-37.172 64.580-37.664 64.580Q-38.156 64.580-38.590 64.348Q-39.023 64.115-39.285 63.707Q-39.547 63.299-39.547 62.807M-37.664 64.303Q-37.207 64.303-36.955 64.080Q-36.703 63.857-36.615 63.506Q-36.527 63.154-36.527 62.709Q-36.527 62.279-36.621 61.941Q-36.715 61.604-36.969 61.397Q-37.222 61.189-37.664 61.189Q-38.312 61.189-38.556 61.606Q-38.801 62.022-38.801 62.709Q-38.801 63.154-38.713 63.506Q-38.625 63.857-38.373 64.080Q-38.121 64.303-37.664 64.303M-34.676 63.541L-34.676 61.350L-35.379 61.350L-35.379 61.096Q-35.023 61.096-34.781 60.863Q-34.539 60.631-34.428 60.283Q-34.316 59.936-34.316 59.580L-34.035 59.580L-34.035 61.053L-32.859 61.053L-32.859 61.350L-34.035 61.350L-34.035 63.525Q-34.035 63.846-33.916 64.074Q-33.797 64.303-33.515 64.303Q-33.336 64.303-33.219 64.180Q-33.101 64.057-33.049 63.877Q-32.996 63.697-32.996 63.525L-32.996 63.053L-32.715 63.053L-32.715 63.541Q-32.715 63.795-32.820 64.035Q-32.926 64.275-33.123 64.428Q-33.320 64.580-33.578 64.580Q-33.894 64.580-34.146 64.457Q-34.398 64.334-34.537 64.100Q-34.676 63.865-34.676 63.541",[725],[910,2588,2590,2591,2606],{"className":2589},[913],"The five priority-queue merges that build the Huffman tree. Each step extracts the two least-frequent nodes and inserts their sum; the queue shrinks by one until a single root of weight ",[390,2592,2594],{"className":2593},[393],[390,2595,2597],{"className":2596,"ariaHidden":398},[397],[390,2598,2600,2603],{"className":2599},[402],[390,2601],{"className":2602,"style":407},[406],[390,2604,2200],{"className":2605},[411]," remains.",[381,2608,2609,2610,2612,2613,2615],{},"The resulting tree, with left edges labeled ",[549,2611,615],{}," and right edges ",[549,2614,596],{},", is:",[688,2617,2619,2885],{"className":2618},[691,692],[694,2620,2624],{"xmlns":696,"width":2621,"height":2622,"viewBox":2623},"293.272","221.813","-75 -75 219.954 166.360",[701,2625,2626,2629,2636,2648,2651,2664,2667,2674,2677,2684,2687,2699,2702,2713,2725,2728,2740,2751,2754,2761,2764,2771,2774,2786,2789,2800,2812,2815,2826,2837,2849,2852,2863,2874],{"stroke":703,"style":704},[709,2627],{"fill":729,"d":2628},"M23.599-60.064c0-6.631-5.375-12.006-12.006-12.006-6.63 0-12.006 5.375-12.006 12.006 0 6.63 5.376 12.005 12.006 12.005S23.6-53.434 23.6-60.064Zm-12.006 0",[701,2630,2632],{"transform":2631},"translate(-6.937 2.9)",[709,2633],{"d":2634,"fill":703,"stroke":703,"className":2635,"style":726},"M15.500-60.064L12.468-60.064L12.468-60.380Q13.619-60.380 13.619-60.675L13.619-65.399Q13.131-65.166 12.410-65.166L12.410-65.482Q13.540-65.482 14.102-66.058L14.247-66.058Q14.282-66.058 14.315-66.025Q14.348-65.992 14.348-65.957L14.348-60.675Q14.348-60.380 15.500-60.380L15.500-60.064M18.523-59.866Q17.398-59.866 16.985-60.763Q16.572-61.659 16.572-62.934Q16.572-63.707 16.721-64.406Q16.871-65.105 17.306-65.581Q17.741-66.058 18.523-66.058Q19.301-66.058 19.736-65.579Q20.171-65.100 20.321-64.404Q20.470-63.707 20.470-62.934Q20.470-61.655 20.057-60.761Q19.644-59.866 18.523-59.866M18.523-60.126Q19.042-60.126 19.292-60.637Q19.543-61.149 19.600-61.760Q19.657-62.371 19.657-63.079Q19.657-63.764 19.600-64.324Q19.543-64.885 19.290-65.342Q19.037-65.799 18.523-65.799Q18.119-65.799 17.882-65.522Q17.644-65.245 17.537-64.804Q17.429-64.362 17.405-63.969Q17.381-63.575 17.381-63.079Q17.381-62.573 17.405-62.145Q17.429-61.716 17.537-61.233Q17.644-60.750 17.884-60.438Q18.123-60.126 18.523-60.126M23.142-59.866Q22.017-59.866 21.604-60.763Q21.191-61.659 21.191-62.934Q21.191-63.707 21.340-64.406Q21.489-65.105 21.925-65.581Q22.360-66.058 23.142-66.058Q23.920-66.058 24.355-65.579Q24.790-65.100 24.939-64.404Q25.089-63.707 25.089-62.934Q25.089-61.655 24.676-60.761Q24.262-59.866 23.142-59.866M23.142-60.126Q23.660-60.126 23.911-60.637Q24.161-61.149 24.218-61.760Q24.276-62.371 24.276-63.079Q24.276-63.764 24.218-64.324Q24.161-64.885 23.909-65.342Q23.656-65.799 23.142-65.799Q22.738-65.799 22.500-65.522Q22.263-65.245 22.155-64.804Q22.048-64.362 22.023-63.969Q21.999-63.575 21.999-63.079Q21.999-62.573 22.023-62.145Q22.048-61.716 22.155-61.233Q22.263-60.750 22.502-60.438Q22.742-60.126 23.142-60.126",[725],[701,2637,2638,2641],{"fill":714},[709,2639],{"d":2640},"M-46.293-37.302h-15.11a4 4 0 0 0-4 4v14.762a4 4 0 0 0 4 4h15.11a4 4 0 0 0 4-4v-14.762a4 4 0 0 0-4-4Zm-19.11 22.762",[701,2642,2644],{"transform":2643},"translate(-73.663 37.043)",[709,2645],{"d":2646,"fill":703,"stroke":703,"className":2647,"style":726},"M11.962-60.974Q11.962-61.514 12.395-61.848Q12.828-62.182 13.434-62.321Q14.041-62.459 14.572-62.459L14.572-62.793Q14.572-63.052 14.454-63.296Q14.335-63.540 14.126-63.687Q13.918-63.835 13.645-63.835Q13.083-63.835 12.771-63.637Q12.920-63.610 13.012-63.492Q13.105-63.373 13.105-63.215Q13.105-63.039 12.979-62.909Q12.854-62.780 12.674-62.780Q12.485-62.780 12.358-62.907Q12.230-63.035 12.230-63.215Q12.230-63.685 12.670-63.892Q13.109-64.098 13.645-64.098Q13.935-64.098 14.223-64.010Q14.511-63.922 14.744-63.762Q14.977-63.602 15.126-63.362Q15.276-63.123 15.276-62.828L15.276-60.793Q15.276-60.640 15.350-60.501Q15.425-60.363 15.570-60.363Q15.724-60.363 15.796-60.499Q15.869-60.635 15.869-60.793L15.869-61.369L16.155-61.369L16.155-60.793Q16.155-60.460 15.906-60.235Q15.658-60.011 15.328-60.011Q15.069-60.011 14.887-60.205Q14.704-60.398 14.660-60.675Q14.493-60.354 14.159-60.158Q13.825-59.963 13.456-59.963Q12.903-59.963 12.432-60.211Q11.962-60.460 11.962-60.974M12.718-60.974Q12.718-60.662 12.960-60.444Q13.201-60.227 13.518-60.227Q13.953-60.227 14.263-60.536Q14.572-60.846 14.572-61.277L14.572-62.204Q14.155-62.204 13.729-62.077Q13.302-61.949 13.010-61.672Q12.718-61.396 12.718-60.974M16.985-60.569Q16.985-60.697 17.053-60.813Q17.121-60.930 17.238-61Q17.354-61.070 17.490-61.070Q17.693-61.070 17.844-60.923Q17.996-60.776 17.996-60.569Q17.996-60.363 17.846-60.213Q17.697-60.064 17.490-60.064Q17.280-60.064 17.132-60.216Q16.985-60.367 16.985-60.569M16.985-63.439Q16.985-63.637 17.130-63.791Q17.275-63.944 17.490-63.944Q17.627-63.944 17.743-63.876Q17.860-63.808 17.928-63.692Q17.996-63.575 17.996-63.439Q17.996-63.237 17.844-63.085Q17.693-62.934 17.490-62.934Q17.284-62.934 17.135-63.087Q16.985-63.241 16.985-63.439M21.476-61.541L19.037-61.541L19.037-61.857L21.863-66.005Q21.907-66.058 21.973-66.058L22.127-66.058Q22.166-66.058 22.199-66.025Q22.232-65.992 22.232-65.948L22.232-61.857L23.133-61.857L23.133-61.541L22.232-61.541L22.232-60.675Q22.232-60.380 23.133-60.380L23.133-60.064L20.580-60.064L20.580-60.380Q20.940-60.380 21.208-60.435Q21.476-60.490 21.476-60.675L21.476-61.541M21.533-65.030L19.371-61.857L21.533-61.857L21.533-65.030M24.223-61.070Q24.364-60.657 24.724-60.405Q25.084-60.152 25.519-60.152Q25.972-60.152 26.238-60.405Q26.504-60.657 26.607-61.042Q26.710-61.426 26.710-61.883Q26.710-63.584 25.801-63.584Q25.480-63.584 25.251-63.490Q25.023-63.395 24.893-63.276Q24.763-63.158 24.651-63.019Q24.539-62.881 24.504-62.872L24.421-62.872Q24.377-62.872 24.346-62.903Q24.315-62.934 24.315-62.982L24.315-65.979Q24.315-66.010 24.350-66.034Q24.385-66.058 24.412-66.058L24.451-66.058Q25.084-65.768 25.757-65.768Q26.429-65.768 27.071-66.058L27.097-66.058Q27.128-66.058 27.161-66.036Q27.194-66.014 27.194-65.979L27.194-65.878Q27.194-65.874 27.185-65.856Q27.176-65.838 27.176-65.834Q26.860-65.439 26.389-65.217Q25.919-64.995 25.423-64.995Q25.014-64.995 24.632-65.105L24.632-63.386Q25.089-63.843 25.801-63.843Q26.310-63.843 26.710-63.562Q27.110-63.281 27.332-62.826Q27.554-62.371 27.554-61.866Q27.554-61.316 27.275-60.857Q26.996-60.398 26.530-60.132Q26.064-59.866 25.519-59.866Q25.080-59.866 24.695-60.093Q24.311-60.319 24.082-60.699Q23.854-61.079 23.854-61.523Q23.854-61.716 23.986-61.848Q24.117-61.980 24.315-61.980Q24.447-61.980 24.550-61.921Q24.654-61.861 24.713-61.758Q24.772-61.655 24.772-61.523Q24.772-61.325 24.645-61.193Q24.517-61.062 24.315-61.062Q24.254-61.062 24.223-61.070",[725],[709,2649],{"fill":729,"d":2650},"m.773-54.418-42.866 22.367",[701,2652,2654,2657],{"fill":2653},"#fff",[709,2655],{"stroke":729,"d":2656},"M-27.846-39.48h6.986v-7.51h-6.986Z",[701,2658,2660],{"transform":2659},"translate(-37.94 19.085)",[709,2661],{"d":2662,"fill":703,"stroke":703,"className":2663,"style":738},"M13.582-59.924Q12.947-59.924 12.583-60.269Q12.218-60.614 12.083-61.139Q11.948-61.664 11.948-62.289Q11.948-63.314 12.304-64.013Q12.659-64.712 13.582-64.712Q14.509-64.712 14.861-64.013Q15.213-63.314 15.213-62.289Q15.213-61.664 15.078-61.139Q14.943-60.614 14.580-60.269Q14.218-59.924 13.582-59.924M13.582-60.149Q14.020-60.149 14.233-60.524Q14.447-60.898 14.497-61.365Q14.546-61.831 14.546-62.409Q14.546-62.962 14.497-63.390Q14.447-63.817 14.235-64.152Q14.023-64.487 13.582-64.487Q13.240-64.487 13.037-64.280Q12.834-64.073 12.747-63.761Q12.659-63.448 12.637-63.132Q12.615-62.815 12.615-62.409Q12.615-61.992 12.637-61.650Q12.659-61.308 12.748-60.960Q12.837-60.611 13.042-60.380Q13.247-60.149 13.582-60.149",[725],[709,2665],{"fill":729,"d":2666},"M88.416-25.921c0-6.286-5.096-11.381-11.382-11.381s-11.38 5.095-11.38 11.38c0 6.287 5.095 11.382 11.38 11.382s11.382-5.095 11.382-11.381Zm-11.382 0",[701,2668,2670],{"transform":2669},"translate(60.816 37.043)",[709,2671],{"d":2672,"fill":703,"stroke":703,"className":2673,"style":726},"M12.419-61.070Q12.560-60.657 12.920-60.405Q13.280-60.152 13.716-60.152Q14.168-60.152 14.434-60.405Q14.700-60.657 14.803-61.042Q14.906-61.426 14.906-61.883Q14.906-63.584 13.997-63.584Q13.676-63.584 13.447-63.490Q13.219-63.395 13.089-63.276Q12.960-63.158 12.848-63.019Q12.736-62.881 12.700-62.872L12.617-62.872Q12.573-62.872 12.542-62.903Q12.511-62.934 12.511-62.982L12.511-65.979Q12.511-66.010 12.547-66.034Q12.582-66.058 12.608-66.058L12.648-66.058Q13.280-65.768 13.953-65.768Q14.625-65.768 15.267-66.058L15.293-66.058Q15.324-66.058 15.357-66.036Q15.390-66.014 15.390-65.979L15.390-65.878Q15.390-65.874 15.381-65.856Q15.372-65.838 15.372-65.834Q15.056-65.439 14.586-65.217Q14.115-64.995 13.619-64.995Q13.210-64.995 12.828-65.105L12.828-63.386Q13.285-63.843 13.997-63.843Q14.507-63.843 14.906-63.562Q15.306-63.281 15.528-62.826Q15.750-62.371 15.750-61.866Q15.750-61.316 15.471-60.857Q15.192-60.398 14.726-60.132Q14.260-59.866 13.716-59.866Q13.276-59.866 12.892-60.093Q12.507-60.319 12.279-60.699Q12.050-61.079 12.050-61.523Q12.050-61.716 12.182-61.848Q12.314-61.980 12.511-61.980Q12.643-61.980 12.747-61.921Q12.850-61.861 12.909-61.758Q12.968-61.655 12.968-61.523Q12.968-61.325 12.841-61.193Q12.714-61.062 12.511-61.062Q12.450-61.062 12.419-61.070M17.038-61.070Q17.178-60.657 17.539-60.405Q17.899-60.152 18.334-60.152Q18.787-60.152 19.053-60.405Q19.319-60.657 19.422-61.042Q19.525-61.426 19.525-61.883Q19.525-63.584 18.615-63.584Q18.295-63.584 18.066-63.490Q17.838-63.395 17.708-63.276Q17.578-63.158 17.466-63.019Q17.354-62.881 17.319-62.872L17.236-62.872Q17.192-62.872 17.161-62.903Q17.130-62.934 17.130-62.982L17.130-65.979Q17.130-66.010 17.165-66.034Q17.200-66.058 17.227-66.058L17.266-66.058Q17.899-65.768 18.572-65.768Q19.244-65.768 19.885-66.058L19.912-66.058Q19.943-66.058 19.976-66.036Q20.009-66.014 20.009-65.979L20.009-65.878Q20.009-65.874 20-65.856Q19.991-65.838 19.991-65.834Q19.675-65.439 19.204-65.217Q18.734-64.995 18.238-64.995Q17.829-64.995 17.447-65.105L17.447-63.386Q17.904-63.843 18.615-63.843Q19.125-63.843 19.525-63.562Q19.925-63.281 20.147-62.826Q20.369-62.371 20.369-61.866Q20.369-61.316 20.090-60.857Q19.811-60.398 19.345-60.132Q18.879-59.866 18.334-59.866Q17.895-59.866 17.510-60.093Q17.126-60.319 16.897-60.699Q16.669-61.079 16.669-61.523Q16.669-61.716 16.801-61.848Q16.932-61.980 17.130-61.980Q17.262-61.980 17.365-61.921Q17.468-61.861 17.528-61.758Q17.587-61.655 17.587-61.523Q17.587-61.325 17.460-61.193Q17.332-61.062 17.130-61.062Q17.069-61.062 17.038-61.070",[725],[709,2675],{"fill":729,"d":2676},"m22.414-54.419 44.353 23.141M55.695 8.222c0-6.285-5.095-11.38-11.381-11.38S32.933 1.936 32.933 8.221s5.095 11.381 11.38 11.381c6.287 0 11.382-5.095 11.382-11.38Zm-11.381 0",[701,2678,2680],{"transform":2679},"translate(28.096 71.187)",[709,2681],{"d":2682,"fill":703,"stroke":703,"className":2683,"style":726},"M15.500-60.064L12.050-60.064L12.050-60.297Q12.050-60.310 12.081-60.341L13.535-61.918Q14.001-62.415 14.254-62.720Q14.507-63.026 14.698-63.437Q14.889-63.848 14.889-64.287Q14.889-64.876 14.566-65.309Q14.243-65.742 13.663-65.742Q13.399-65.742 13.153-65.632Q12.907-65.522 12.731-65.335Q12.555-65.148 12.459-64.898L12.538-64.898Q12.740-64.898 12.883-64.762Q13.026-64.626 13.026-64.410Q13.026-64.204 12.883-64.065Q12.740-63.927 12.538-63.927Q12.336-63.927 12.193-64.070Q12.050-64.212 12.050-64.410Q12.050-64.872 12.287-65.245Q12.525-65.619 12.925-65.838Q13.324-66.058 13.773-66.058Q14.296-66.058 14.750-65.843Q15.205-65.627 15.478-65.228Q15.750-64.828 15.750-64.287Q15.750-63.892 15.579-63.538Q15.407-63.184 15.142-62.905Q14.876-62.626 14.425-62.241Q13.975-61.857 13.896-61.782L12.872-60.820L13.689-60.820Q14.340-60.820 14.777-60.831Q15.214-60.842 15.245-60.864Q15.315-60.947 15.370-61.187Q15.425-61.426 15.465-61.694L15.750-61.694L15.500-60.064M17.038-61.070Q17.178-60.657 17.539-60.405Q17.899-60.152 18.334-60.152Q18.787-60.152 19.053-60.405Q19.319-60.657 19.422-61.042Q19.525-61.426 19.525-61.883Q19.525-63.584 18.615-63.584Q18.295-63.584 18.066-63.490Q17.838-63.395 17.708-63.276Q17.578-63.158 17.466-63.019Q17.354-62.881 17.319-62.872L17.236-62.872Q17.192-62.872 17.161-62.903Q17.130-62.934 17.130-62.982L17.130-65.979Q17.130-66.010 17.165-66.034Q17.200-66.058 17.227-66.058L17.266-66.058Q17.899-65.768 18.572-65.768Q19.244-65.768 19.885-66.058L19.912-66.058Q19.943-66.058 19.976-66.036Q20.009-66.014 20.009-65.979L20.009-65.878Q20.009-65.874 20-65.856Q19.991-65.838 19.991-65.834Q19.675-65.439 19.204-65.217Q18.734-64.995 18.238-64.995Q17.829-64.995 17.447-65.105L17.447-63.386Q17.904-63.843 18.615-63.843Q19.125-63.843 19.525-63.562Q19.925-63.281 20.147-62.826Q20.369-62.371 20.369-61.866Q20.369-61.316 20.090-60.857Q19.811-60.398 19.345-60.132Q18.879-59.866 18.334-59.866Q17.895-59.866 17.510-60.093Q17.126-60.319 16.897-60.699Q16.669-61.079 16.669-61.523Q16.669-61.716 16.801-61.848Q16.932-61.980 17.130-61.980Q17.262-61.980 17.365-61.921Q17.468-61.861 17.528-61.758Q17.587-61.655 17.587-61.523Q17.587-61.325 17.460-61.193Q17.332-61.062 17.130-61.062Q17.069-61.062 17.038-61.070",[725],[709,2685],{"fill":729,"d":2686},"M69.022-17.56 52.327-.14",[701,2688,2689,2692],{"fill":714},[709,2690],{"d":2691},"M31.778 30.984H17.016a4 4 0 0 0-4 4v14.763a4 4 0 0 0 4 4h14.762a4 4 0 0 0 4-4V34.984a4 4 0 0 0-4-4ZM13.016 53.747",[701,2693,2695],{"transform":2694},"translate(4.839 105.33)",[709,2696],{"d":2697,"fill":703,"stroke":703,"className":2698,"style":726},"M13.905-59.963Q13.355-59.963 12.896-60.242Q12.437-60.521 12.169-60.991Q11.901-61.461 11.901-62.006Q11.901-62.419 12.050-62.797Q12.199-63.175 12.474-63.470Q12.749-63.764 13.118-63.931Q13.487-64.098 13.905-64.098Q14.239-64.098 14.559-64.032Q14.880-63.966 15.109-63.780Q15.337-63.593 15.337-63.268Q15.337-63.092 15.210-62.964Q15.082-62.837 14.906-62.837Q14.722-62.837 14.592-62.962Q14.463-63.087 14.463-63.268Q14.463-63.404 14.537-63.516Q14.612-63.628 14.744-63.681Q14.436-63.808 13.905-63.808Q13.469-63.808 13.201-63.531Q12.933-63.254 12.821-62.839Q12.709-62.424 12.709-62.006Q12.709-61.576 12.848-61.174Q12.986-60.772 13.280-60.512Q13.575-60.253 14.014-60.253Q14.436-60.253 14.739-60.503Q15.043-60.754 15.148-61.163Q15.157-61.193 15.181-61.218Q15.205-61.242 15.236-61.242L15.346-61.242Q15.434-61.242 15.434-61.127Q15.289-60.591 14.876-60.277Q14.463-59.963 13.905-59.963M16.471-60.569Q16.471-60.697 16.539-60.813Q16.607-60.930 16.724-61Q16.840-61.070 16.976-61.070Q17.178-61.070 17.330-60.923Q17.482-60.776 17.482-60.569Q17.482-60.363 17.332-60.213Q17.183-60.064 16.976-60.064Q16.765-60.064 16.618-60.216Q16.471-60.367 16.471-60.569M16.471-63.439Q16.471-63.637 16.616-63.791Q16.761-63.944 16.976-63.944Q17.113-63.944 17.229-63.876Q17.345-63.808 17.414-63.692Q17.482-63.575 17.482-63.439Q17.482-63.237 17.330-63.085Q17.178-62.934 16.976-62.934Q16.770-62.934 16.620-63.087Q16.471-63.241 16.471-63.439M22.171-60.064L19.138-60.064L19.138-60.380Q20.290-60.380 20.290-60.675L20.290-65.399Q19.802-65.166 19.081-65.166L19.081-65.482Q20.211-65.482 20.773-66.058L20.918-66.058Q20.953-66.058 20.986-66.025Q21.019-65.992 21.019-65.957L21.019-60.675Q21.019-60.380 22.171-60.380L22.171-60.064M26.789-60.064L23.340-60.064L23.340-60.297Q23.340-60.310 23.370-60.341L24.825-61.918Q25.291-62.415 25.543-62.720Q25.796-63.026 25.987-63.437Q26.178-63.848 26.178-64.287Q26.178-64.876 25.855-65.309Q25.532-65.742 24.952-65.742Q24.689-65.742 24.443-65.632Q24.197-65.522 24.021-65.335Q23.845-65.148 23.748-64.898L23.827-64.898Q24.030-64.898 24.172-64.762Q24.315-64.626 24.315-64.410Q24.315-64.204 24.172-64.065Q24.030-63.927 23.827-63.927Q23.625-63.927 23.482-64.070Q23.340-64.212 23.340-64.410Q23.340-64.872 23.577-65.245Q23.814-65.619 24.214-65.838Q24.614-66.058 25.062-66.058Q25.585-66.058 26.040-65.843Q26.495-65.627 26.767-65.228Q27.040-64.828 27.040-64.287Q27.040-63.892 26.868-63.538Q26.697-63.184 26.431-62.905Q26.165-62.626 25.715-62.241Q25.264-61.857 25.185-61.782L24.161-60.820L24.979-60.820Q25.629-60.820 26.066-60.831Q26.504-60.842 26.534-60.864Q26.605-60.947 26.660-61.187Q26.715-61.426 26.754-61.694L27.040-61.694",[725],[709,2700],{"fill":729,"d":2701},"m38.478 18.225-7.327 12.56",[701,2703,2704,2707],{"fill":2653},[709,2705],{"stroke":729,"d":2706},"M27.628 28.26h6.987v-7.51h-6.987Z",[701,2708,2710],{"transform":2709},"translate(17.535 86.825)",[709,2711],{"d":2662,"fill":703,"stroke":703,"className":2712,"style":738},[725],[701,2714,2715,2718],{"fill":714},[709,2716],{"d":2717},"M72.043 30.984H56.419a4 4 0 0 0-4 4v14.763a4 4 0 0 0 4 4h15.624a4 4 0 0 0 4-4V34.984a4 4 0 0 0-4-4ZM52.419 53.747",[701,2719,2721],{"transform":2720},"translate(44.159 105.555)",[709,2722],{"d":2723,"fill":703,"stroke":703,"className":2724,"style":726},"M12.828-60.064L12.538-60.064L12.538-65.390Q12.538-65.632 12.468-65.740Q12.397-65.847 12.263-65.871Q12.129-65.896 11.843-65.896L11.843-66.212L13.215-66.309L13.215-63.509Q13.461-63.760 13.795-63.900Q14.129-64.041 14.480-64.041Q14.880-64.041 15.243-63.878Q15.605-63.716 15.862-63.437Q16.119-63.158 16.269-62.780Q16.418-62.402 16.418-62.006Q16.418-61.444 16.141-60.978Q15.864-60.512 15.390-60.238Q14.915-59.963 14.366-59.963Q14.001-59.963 13.680-60.132Q13.360-60.301 13.140-60.596L12.828-60.064M13.241-63.096L13.241-60.965Q13.399-60.631 13.683-60.429Q13.966-60.227 14.309-60.227Q14.999-60.227 15.302-60.747Q15.605-61.268 15.605-62.006Q15.605-62.731 15.339-63.257Q15.073-63.782 14.410-63.782Q14.050-63.782 13.735-63.597Q13.421-63.413 13.241-63.096M17.504-60.569Q17.504-60.697 17.572-60.813Q17.640-60.930 17.756-61Q17.873-61.070 18.009-61.070Q18.211-61.070 18.363-60.923Q18.514-60.776 18.514-60.569Q18.514-60.363 18.365-60.213Q18.216-60.064 18.009-60.064Q17.798-60.064 17.651-60.216Q17.504-60.367 17.504-60.569M17.504-63.439Q17.504-63.637 17.649-63.791Q17.794-63.944 18.009-63.944Q18.145-63.944 18.262-63.876Q18.378-63.808 18.446-63.692Q18.514-63.575 18.514-63.439Q18.514-63.237 18.363-63.085Q18.211-62.934 18.009-62.934Q17.802-62.934 17.653-63.087Q17.504-63.241 17.504-63.439M23.203-60.064L20.171-60.064L20.171-60.380Q21.322-60.380 21.322-60.675L21.322-65.399Q20.835-65.166 20.114-65.166L20.114-65.482Q21.243-65.482 21.806-66.058L21.951-66.058Q21.986-66.058 22.019-66.025Q22.052-65.992 22.052-65.957L22.052-60.675Q22.052-60.380 23.203-60.380L23.203-60.064M24.816-60.785L24.772-60.785Q24.974-60.468 25.361-60.310Q25.748-60.152 26.174-60.152Q26.710-60.152 26.950-60.587Q27.189-61.022 27.189-61.602Q27.189-62.182 26.943-62.622Q26.697-63.061 26.165-63.061L25.546-63.061Q25.519-63.061 25.486-63.090Q25.453-63.118 25.453-63.140L25.453-63.241Q25.453-63.272 25.482-63.296Q25.510-63.320 25.546-63.320L26.064-63.360Q26.530-63.360 26.776-63.832Q27.022-64.305 27.022-64.823Q27.022-65.250 26.809-65.524Q26.596-65.799 26.174-65.799Q25.831-65.799 25.506-65.669Q25.181-65.540 24.996-65.285L25.023-65.285Q25.225-65.285 25.361-65.144Q25.497-65.003 25.497-64.806Q25.497-64.608 25.363-64.474Q25.229-64.340 25.031-64.340Q24.829-64.340 24.691-64.474Q24.552-64.608 24.552-64.806Q24.552-65.395 25.056-65.726Q25.559-66.058 26.174-66.058Q26.552-66.058 26.954-65.918Q27.356-65.777 27.624-65.498Q27.892-65.219 27.892-64.823Q27.892-64.274 27.539-63.837Q27.185-63.399 26.644-63.215Q27.035-63.136 27.380-62.912Q27.725-62.688 27.936-62.347Q28.147-62.006 28.147-61.611Q28.147-61.229 27.985-60.906Q27.822-60.583 27.530-60.347Q27.238-60.112 26.890-59.989Q26.543-59.866 26.174-59.866Q25.726-59.866 25.295-60.027Q24.864-60.187 24.583-60.514Q24.302-60.842 24.302-61.299Q24.302-61.514 24.449-61.657Q24.596-61.800 24.816-61.800Q25.027-61.800 25.172-61.655Q25.317-61.510 25.317-61.299Q25.317-61.088 25.170-60.936Q25.023-60.785 24.816-60.785",[725],[709,2726],{"fill":729,"d":2727},"m50.15 18.225 7.327 12.56",[701,2729,2730,2733],{"fill":2653},[709,2731],{"stroke":729,"d":2732},"M54.013 28.26H61v-7.51h-6.986Z",[701,2734,2736],{"transform":2735},"translate(43.92 86.825)",[709,2737],{"d":2738,"fill":703,"stroke":703,"className":2739,"style":738},"M14.919-60.064L12.389-60.064L12.389-60.344Q13.357-60.344 13.357-60.553L13.357-64.172Q12.964-63.984 12.342-63.984L12.342-64.265Q12.759-64.265 13.123-64.366Q13.487-64.466 13.743-64.712L13.869-64.712Q13.934-64.695 13.951-64.627L13.951-60.553Q13.951-60.344 14.919-60.344",[725],[701,2741,2742,2745],{"fill":2653},[709,2743],{"stroke":729,"d":2744},"M53.488-5.094h6.986v-7.511h-6.986Z",[701,2746,2748],{"transform":2747},"translate(43.395 53.47)",[709,2749],{"d":2662,"fill":703,"stroke":703,"className":2750,"style":738},[725],[709,2752],{"fill":729,"d":2753},"M121.136 8.222c0-6.285-5.095-11.38-11.38-11.38-6.287 0-11.382 5.095-11.382 11.38s5.095 11.381 11.381 11.381 11.381-5.095 11.381-11.38Zm-11.38 0",[701,2755,2757],{"transform":2756},"translate(93.537 71.187)",[709,2758],{"d":2759,"fill":703,"stroke":703,"className":2760,"style":726},"M12.494-60.785L12.450-60.785Q12.652-60.468 13.039-60.310Q13.426-60.152 13.852-60.152Q14.388-60.152 14.627-60.587Q14.867-61.022 14.867-61.602Q14.867-62.182 14.621-62.622Q14.375-63.061 13.843-63.061L13.223-63.061Q13.197-63.061 13.164-63.090Q13.131-63.118 13.131-63.140L13.131-63.241Q13.131-63.272 13.160-63.296Q13.188-63.320 13.223-63.320L13.742-63.360Q14.208-63.360 14.454-63.832Q14.700-64.305 14.700-64.823Q14.700-65.250 14.487-65.524Q14.274-65.799 13.852-65.799Q13.509-65.799 13.184-65.669Q12.859-65.540 12.674-65.285L12.700-65.285Q12.903-65.285 13.039-65.144Q13.175-65.003 13.175-64.806Q13.175-64.608 13.041-64.474Q12.907-64.340 12.709-64.340Q12.507-64.340 12.369-64.474Q12.230-64.608 12.230-64.806Q12.230-65.395 12.733-65.726Q13.237-66.058 13.852-66.058Q14.230-66.058 14.632-65.918Q15.034-65.777 15.302-65.498Q15.570-65.219 15.570-64.823Q15.570-64.274 15.216-63.837Q14.863-63.399 14.322-63.215Q14.713-63.136 15.058-62.912Q15.403-62.688 15.614-62.347Q15.825-62.006 15.825-61.611Q15.825-61.229 15.662-60.906Q15.500-60.583 15.208-60.347Q14.915-60.112 14.568-59.989Q14.221-59.866 13.852-59.866Q13.404-59.866 12.973-60.027Q12.542-60.187 12.261-60.514Q11.980-60.842 11.980-61.299Q11.980-61.514 12.127-61.657Q12.274-61.800 12.494-61.800Q12.705-61.800 12.850-61.655Q12.995-61.510 12.995-61.299Q12.995-61.088 12.848-60.936Q12.700-60.785 12.494-60.785M18.523-59.866Q17.398-59.866 16.985-60.763Q16.572-61.659 16.572-62.934Q16.572-63.707 16.721-64.406Q16.871-65.105 17.306-65.581Q17.741-66.058 18.523-66.058Q19.301-66.058 19.736-65.579Q20.171-65.100 20.321-64.404Q20.470-63.707 20.470-62.934Q20.470-61.655 20.057-60.761Q19.644-59.866 18.523-59.866M18.523-60.126Q19.042-60.126 19.292-60.637Q19.543-61.149 19.600-61.760Q19.657-62.371 19.657-63.079Q19.657-63.764 19.600-64.324Q19.543-64.885 19.290-65.342Q19.037-65.799 18.523-65.799Q18.119-65.799 17.882-65.522Q17.644-65.245 17.537-64.804Q17.429-64.362 17.405-63.969Q17.381-63.575 17.381-63.079Q17.381-62.573 17.405-62.145Q17.429-61.716 17.537-61.233Q17.644-60.750 17.884-60.438Q18.123-60.126 18.523-60.126",[725],[709,2762],{"fill":729,"d":2763},"M85.047-17.56 101.742-.14M101.22 42.365c0-6.285-5.096-11.38-11.382-11.38s-11.38 5.095-11.38 11.38 5.095 11.382 11.38 11.382 11.381-5.096 11.381-11.382Zm-11.382 0",[701,2765,2767],{"transform":2766},"translate(73.62 105.33)",[709,2768],{"d":2769,"fill":703,"stroke":703,"className":2770,"style":726},"M15.500-60.064L12.468-60.064L12.468-60.380Q13.619-60.380 13.619-60.675L13.619-65.399Q13.131-65.166 12.410-65.166L12.410-65.482Q13.540-65.482 14.102-66.058L14.247-66.058Q14.282-66.058 14.315-66.025Q14.348-65.992 14.348-65.957L14.348-60.675Q14.348-60.380 15.500-60.380L15.500-60.064M18.910-61.541L16.471-61.541L16.471-61.857L19.297-66.005Q19.341-66.058 19.406-66.058L19.560-66.058Q19.600-66.058 19.633-66.025Q19.666-65.992 19.666-65.948L19.666-61.857L20.567-61.857L20.567-61.541L19.666-61.541L19.666-60.675Q19.666-60.380 20.567-60.380L20.567-60.064L18.013-60.064L18.013-60.380Q18.374-60.380 18.642-60.435Q18.910-60.490 18.910-60.675L18.910-61.541M18.967-65.030L16.805-61.857L18.967-61.857",[725],[709,2772],{"fill":729,"d":2773},"m103.92 18.225-8.247 14.137",[701,2775,2776,2779],{"fill":714},[709,2777],{"d":2778},"M77.302 65.128H62.54a4 4 0 0 0-4 4V83.89a4 4 0 0 0 4 4h14.762a4 4 0 0 0 4-4V69.128a4 4 0 0 0-4-4ZM58.54 87.89",[701,2780,2782],{"transform":2781},"translate(53.318 139.698)",[709,2783],{"d":2784,"fill":703,"stroke":703,"className":2785,"style":726},"M14.133-60.064L11.901-60.064L11.901-60.380Q12.208-60.380 12.399-60.433Q12.591-60.486 12.591-60.675L12.591-63.628L11.901-63.628L11.901-63.944L12.591-63.944L12.591-65.012Q12.591-65.395 12.804-65.718Q13.017-66.041 13.371-66.225Q13.724-66.410 14.102-66.410Q14.423-66.410 14.674-66.232Q14.924-66.054 14.924-65.742Q14.924-65.566 14.805-65.447Q14.687-65.329 14.511-65.329Q14.331-65.329 14.208-65.447Q14.085-65.566 14.085-65.742Q14.085-65.983 14.300-66.111Q14.195-66.146 14.058-66.146Q13.790-66.146 13.608-65.964Q13.426-65.781 13.333-65.511Q13.241-65.241 13.241-64.977L13.241-63.944L14.291-63.944L14.291-63.628L13.267-63.628L13.267-60.675Q13.267-60.486 13.524-60.433Q13.781-60.380 14.133-60.380L14.133-60.064M15.192-60.569Q15.192-60.697 15.260-60.813Q15.328-60.930 15.445-61Q15.561-61.070 15.697-61.070Q15.900-61.070 16.051-60.923Q16.203-60.776 16.203-60.569Q16.203-60.363 16.053-60.213Q15.904-60.064 15.697-60.064Q15.487-60.064 15.339-60.216Q15.192-60.367 15.192-60.569M15.192-63.439Q15.192-63.637 15.337-63.791Q15.482-63.944 15.697-63.944Q15.834-63.944 15.950-63.876Q16.067-63.808 16.135-63.692Q16.203-63.575 16.203-63.439Q16.203-63.237 16.051-63.085Q15.900-62.934 15.697-62.934Q15.491-62.934 15.342-63.087Q15.192-63.241 15.192-63.439M17.811-61.070Q17.952-60.657 18.312-60.405Q18.673-60.152 19.108-60.152Q19.560-60.152 19.826-60.405Q20.092-60.657 20.195-61.042Q20.299-61.426 20.299-61.883Q20.299-63.584 19.389-63.584Q19.068-63.584 18.840-63.490Q18.611-63.395 18.481-63.276Q18.352-63.158 18.240-63.019Q18.128-62.881 18.093-62.872L18.009-62.872Q17.965-62.872 17.934-62.903Q17.904-62.934 17.904-62.982L17.904-65.979Q17.904-66.010 17.939-66.034Q17.974-66.058 18-66.058L18.040-66.058Q18.673-65.768 19.345-65.768Q20.017-65.768 20.659-66.058L20.685-66.058Q20.716-66.058 20.749-66.036Q20.782-66.014 20.782-65.979L20.782-65.878Q20.782-65.874 20.773-65.856Q20.764-65.838 20.764-65.834Q20.448-65.439 19.978-65.217Q19.508-64.995 19.011-64.995Q18.602-64.995 18.220-65.105L18.220-63.386Q18.677-63.843 19.389-63.843Q19.899-63.843 20.299-63.562Q20.698-63.281 20.920-62.826Q21.142-62.371 21.142-61.866Q21.142-61.316 20.863-60.857Q20.584-60.398 20.118-60.132Q19.653-59.866 19.108-59.866Q18.668-59.866 18.284-60.093Q17.899-60.319 17.671-60.699Q17.442-61.079 17.442-61.523Q17.442-61.716 17.574-61.848Q17.706-61.980 17.904-61.980Q18.035-61.980 18.139-61.921Q18.242-61.861 18.301-61.758Q18.361-61.655 18.361-61.523Q18.361-61.325 18.233-61.193Q18.106-61.062 17.904-61.062Q17.842-61.062 17.811-61.070",[725],[709,2787],{"fill":729,"d":2788},"m84.003 52.368-7.328 12.56",[701,2790,2791,2794],{"fill":2653},[709,2792],{"stroke":729,"d":2793},"M73.153 62.403h6.986v-7.51h-6.986Z",[701,2795,2797],{"transform":2796},"translate(63.06 120.968)",[709,2798],{"d":2662,"fill":703,"stroke":703,"className":2799,"style":738},[725],[701,2801,2802,2805],{"fill":714},[709,2803],{"d":2804},"M117.136 65.128h-14.762a4 4 0 0 0-4 4V83.89a4 4 0 0 0 4 4h14.762a4 4 0 0 0 4-4V69.128a4 4 0 0 0-4-4ZM98.374 87.89",[701,2806,2808],{"transform":2807},"translate(92.508 139.473)",[709,2809],{"d":2810,"fill":703,"stroke":703,"className":2811,"style":726},"M13.905-59.963Q13.346-59.963 12.874-60.246Q12.402-60.530 12.127-61.007Q11.852-61.483 11.852-62.037Q11.852-62.433 11.995-62.808Q12.138-63.184 12.395-63.472Q12.652-63.760 13.010-63.929Q13.368-64.098 13.773-64.098Q14.318-64.098 14.689-63.861Q15.060-63.624 15.247-63.206Q15.434-62.789 15.434-62.252Q15.434-62.200 15.410-62.162Q15.385-62.125 15.337-62.125L12.665-62.125L12.665-62.046Q12.665-61.299 12.977-60.776Q13.289-60.253 13.988-60.253Q14.392-60.253 14.713-60.510Q15.034-60.767 15.157-61.171Q15.175-61.251 15.258-61.251L15.337-61.251Q15.377-61.251 15.405-61.220Q15.434-61.189 15.434-61.145L15.434-61.110Q15.328-60.767 15.106-60.508Q14.885-60.249 14.570-60.106Q14.256-59.963 13.905-59.963M12.674-62.376L14.788-62.376Q14.788-62.644 14.735-62.890Q14.682-63.136 14.562-63.358Q14.441-63.580 14.243-63.707Q14.045-63.835 13.773-63.835Q13.430-63.835 13.177-63.610Q12.925-63.386 12.799-63.048Q12.674-62.710 12.674-62.376M16.480-60.569Q16.480-60.697 16.548-60.813Q16.616-60.930 16.732-61Q16.849-61.070 16.985-61.070Q17.187-61.070 17.339-60.923Q17.490-60.776 17.490-60.569Q17.490-60.363 17.341-60.213Q17.192-60.064 16.985-60.064Q16.774-60.064 16.627-60.216Q16.480-60.367 16.480-60.569M16.480-63.439Q16.480-63.637 16.625-63.791Q16.770-63.944 16.985-63.944Q17.121-63.944 17.238-63.876Q17.354-63.808 17.422-63.692Q17.490-63.575 17.490-63.439Q17.490-63.237 17.339-63.085Q17.187-62.934 16.985-62.934Q16.779-62.934 16.629-63.087Q16.480-63.241 16.480-63.439M19.336-60.451Q19.582-60.152 20.189-60.152Q20.470-60.152 20.709-60.290Q20.949-60.429 21.127-60.651Q21.305-60.873 21.415-61.136Q21.648-61.712 21.648-62.828Q21.481-62.463 21.175-62.239Q20.870-62.015 20.488-62.015Q19.951-62.015 19.536-62.294Q19.121-62.573 18.890-63.039Q18.659-63.505 18.659-64.032Q18.659-64.445 18.807-64.814Q18.954-65.184 19.218-65.460Q19.481-65.737 19.850-65.898Q20.219-66.058 20.633-66.058Q21.191-66.058 21.564-65.766Q21.938-65.474 22.142-65.010Q22.346-64.546 22.426-64.030Q22.505-63.514 22.505-62.982Q22.505-62.266 22.237-61.543Q21.968-60.820 21.446-60.343Q20.923-59.866 20.197-59.866Q19.648-59.866 19.270-60.115Q18.892-60.363 18.892-60.881Q18.892-61 18.949-61.103Q19.007-61.207 19.108-61.266Q19.209-61.325 19.336-61.325Q19.521-61.325 19.644-61.193Q19.767-61.062 19.767-60.881Q19.767-60.706 19.639-60.578Q19.512-60.451 19.336-60.451M20.531-62.279Q20.901-62.279 21.149-62.521Q21.397-62.762 21.514-63.120Q21.630-63.479 21.630-63.852Q21.630-63.962 21.621-64.015Q21.626-64.028 21.628-64.039Q21.630-64.050 21.630-64.067Q21.630-64.722 21.415-65.261Q21.199-65.799 20.633-65.799Q20.272-65.799 20.044-65.649Q19.815-65.500 19.699-65.243Q19.582-64.986 19.549-64.705Q19.516-64.423 19.516-64.050L19.516-64.015Q19.516-63.689 19.543-63.402Q19.569-63.114 19.668-62.855Q19.767-62.595 19.978-62.437Q20.189-62.279 20.531-62.279",[725],[709,2813],{"fill":729,"d":2814},"M95.674 52.368 103 64.928",[701,2816,2817,2820],{"fill":2653},[709,2818],{"stroke":729,"d":2819},"M99.538 62.403h6.986v-7.51h-6.986Z",[701,2821,2823],{"transform":2822},"translate(89.444 120.968)",[709,2824],{"d":2738,"fill":703,"stroke":703,"className":2825,"style":738},[725],[701,2827,2828,2831],{"fill":2653},[709,2829],{"stroke":729,"d":2830},"M92.61 29.05h6.987v-7.512H92.61Z",[701,2832,2834],{"transform":2833},"translate(82.517 87.614)",[709,2835],{"d":2662,"fill":703,"stroke":703,"className":2836,"style":738},[725],[701,2838,2839,2842],{"fill":714},[709,2840],{"d":2841},"M137.484 30.984H121.86a4 4 0 0 0-4 4v14.763a4 4 0 0 0 4 4h15.624a4 4 0 0 0 4-4V34.984a4 4 0 0 0-4-4ZM117.86 53.747",[701,2843,2845],{"transform":2844},"translate(109.6 105.555)",[709,2846],{"d":2847,"fill":703,"stroke":703,"className":2848,"style":726},"M13.843-59.963Q13.298-59.963 12.854-60.246Q12.410-60.530 12.155-61.002Q11.901-61.475 11.901-62.006Q11.901-62.560 12.177-63.026Q12.454-63.492 12.927-63.766Q13.399-64.041 13.944-64.041Q14.278-64.041 14.581-63.909Q14.885-63.777 15.104-63.540L15.104-65.390Q15.104-65.632 15.034-65.740Q14.964-65.847 14.830-65.871Q14.696-65.896 14.410-65.896L14.410-66.212L15.777-66.309L15.777-60.881Q15.777-60.644 15.847-60.536Q15.917-60.429 16.053-60.405Q16.190-60.380 16.471-60.380L16.471-60.064L15.078-59.963L15.078-60.512Q14.827-60.249 14.509-60.106Q14.190-59.963 13.843-59.963M13.905-60.227Q14.274-60.227 14.583-60.438Q14.893-60.648 15.078-60.991L15.078-63.123Q14.906-63.426 14.625-63.604Q14.344-63.782 14.006-63.782Q13.316-63.782 13.012-63.261Q12.709-62.740 12.709-61.998Q12.709-61.277 12.979-60.752Q13.250-60.227 13.905-60.227M17.504-60.569Q17.504-60.697 17.572-60.813Q17.640-60.930 17.756-61Q17.873-61.070 18.009-61.070Q18.211-61.070 18.363-60.923Q18.514-60.776 18.514-60.569Q18.514-60.363 18.365-60.213Q18.216-60.064 18.009-60.064Q17.798-60.064 17.651-60.216Q17.504-60.367 17.504-60.569M17.504-63.439Q17.504-63.637 17.649-63.791Q17.794-63.944 18.009-63.944Q18.145-63.944 18.262-63.876Q18.378-63.808 18.446-63.692Q18.514-63.575 18.514-63.439Q18.514-63.237 18.363-63.085Q18.211-62.934 18.009-62.934Q17.802-62.934 17.653-63.087Q17.504-63.241 17.504-63.439M23.203-60.064L20.171-60.064L20.171-60.380Q21.322-60.380 21.322-60.675L21.322-65.399Q20.835-65.166 20.114-65.166L20.114-65.482Q21.243-65.482 21.806-66.058L21.951-66.058Q21.986-66.058 22.019-66.025Q22.052-65.992 22.052-65.957L22.052-60.675Q22.052-60.380 23.203-60.380L23.203-60.064M26.227-59.866Q25.493-59.866 25.062-60.347Q24.632-60.829 24.467-61.521Q24.302-62.213 24.302-62.960Q24.302-63.689 24.594-64.412Q24.886-65.135 25.440-65.597Q25.994-66.058 26.741-66.058Q27.238-66.058 27.574-65.792Q27.910-65.526 27.910-65.043Q27.910-64.863 27.782-64.735Q27.655-64.608 27.479-64.608Q27.299-64.608 27.169-64.733Q27.040-64.858 27.040-65.043Q27.040-65.157 27.097-65.261Q27.154-65.364 27.255-65.423Q27.356-65.482 27.479-65.482Q27.484-65.482 27.488-65.480Q27.492-65.478 27.497-65.474Q27.383-65.641 27.174-65.720Q26.965-65.799 26.741-65.799Q26.297-65.799 25.939-65.498Q25.581-65.197 25.392-64.744Q25.159-64.138 25.159-63.105Q25.330-63.470 25.631-63.698Q25.932-63.927 26.319-63.927Q26.723-63.927 27.068-63.760Q27.413-63.593 27.651-63.312Q27.888-63.030 28.018-62.668Q28.147-62.305 28.147-61.901Q28.147-61.356 27.903-60.890Q27.659-60.424 27.220-60.145Q26.781-59.866 26.227-59.866M26.227-60.152Q26.688-60.152 26.923-60.409Q27.158-60.666 27.224-61.040Q27.290-61.413 27.290-61.883L27.290-61.918Q27.290-62.406 27.233-62.771Q27.176-63.136 26.947-63.399Q26.719-63.663 26.275-63.663Q25.906-63.663 25.656-63.419Q25.405-63.175 25.291-62.811Q25.176-62.446 25.176-62.099Q25.176-61.980 25.185-61.918Q25.185-61.901 25.183-61.890Q25.181-61.879 25.176-61.866Q25.176-61.215 25.414-60.684Q25.651-60.152 26.227-60.152",[725],[709,2850],{"fill":729,"d":2851},"m115.59 18.225 7.328 12.56",[701,2853,2854,2857],{"fill":2653},[709,2855],{"stroke":729,"d":2856},"M119.454 28.26h6.987v-7.51h-6.987Z",[701,2858,2860],{"transform":2859},"translate(109.361 86.825)",[709,2861],{"d":2738,"fill":703,"stroke":703,"className":2862,"style":738},[725],[701,2864,2865,2868],{"fill":2653},[709,2866],{"stroke":729,"d":2867},"M93.595-5.094h6.986v-7.511h-6.986Z",[701,2869,2871],{"transform":2870},"translate(83.502 53.47)",[709,2872],{"d":2738,"fill":703,"stroke":703,"className":2873,"style":738},[725],[701,2875,2876,2879],{"fill":2653},[709,2877],{"stroke":729,"d":2878},"M44.79-39.093h6.987v-7.51H44.79Z",[701,2880,2882],{"transform":2881},"translate(34.698 19.472)",[709,2883],{"d":2738,"fill":703,"stroke":703,"className":2884,"style":738},[725],[910,2886,2888,2889,552,2904,569],{"className":2887},[913],"Huffman code tree for the six-symbol example with edges labeled ",[390,2890,2892],{"className":2891},[393],[390,2893,2895],{"className":2894,"ariaHidden":398},[397],[390,2896,2898,2901],{"className":2897},[402],[390,2899],{"className":2900,"style":407},[406],[390,2902,615],{"className":2903},[411],[390,2905,2907],{"className":2906},[393],[390,2908,2910],{"className":2909,"ariaHidden":398},[397],[390,2911,2913,2916],{"className":2912},[402],[390,2914],{"className":2915,"style":407},[406],[390,2917,596],{"className":2918},[411],[381,2920,2921],{},"Reading root-to-leaf gives the codewords:",[1787,2923,2924,2954],{},[1790,2925,2926],{},[1793,2927,2928,2930,2934,2938,2942,2946,2950],{},[1796,2929,1798],{},[1796,2931,2932],{},[549,2933,590],{},[1796,2935,2936],{},[549,2937,1807],{},[1796,2939,2940],{},[549,2941,990],{},[1796,2943,2944],{},[549,2945,1075],{},[1796,2947,2948],{},[549,2949,551],{},[1796,2951,2952],{},[549,2953,1824],{},[1826,2955,2956],{},[1793,2957,2958,2961,2965,2970,2974,2979,2984],{},[1831,2959,2960],{},"Codeword",[1831,2962,2963],{},[549,2964,615],{},[1831,2966,2967],{},[549,2968,2969],{},"101",[1831,2971,2972],{},[549,2973,2200],{},[1831,2975,2976],{},[549,2977,2978],{},"111",[1831,2980,2981],{},[549,2982,2983],{},"1101",[1831,2985,2986],{},[549,2987,2988],{},"1100",[381,2990,2991,2992,2994,2995,552,2997,2999],{},"The frequent ",[549,2993,590],{}," gets a single bit; the rare ",[549,2996,551],{},[549,2998,1824],{}," get four. The cost is",[390,3001,3003],{"className":3002},[1149],[390,3004,3006],{"className":3005},[393],[390,3007,3009,3036,3054,3074,3092,3110,3128,3146,3164,3182,3200,3219,3237,3255],{"className":3008,"ariaHidden":398},[397],[390,3010,3012,3015,3018,3021,3024,3027,3030,3033],{"className":3011},[402],[390,3013],{"className":3014,"style":443},[406],[390,3016,1166],{"className":3017,"style":1165},[411,970],[390,3019,1116],{"className":3020},[447],[390,3022,1055],{"className":3023,"style":1054},[411,970],[390,3025,1123],{"className":3026},[524],[390,3028],{"className":3029,"style":529},[516],[390,3031,534],{"className":3032},[533],[390,3034],{"className":3035,"style":529},[516],[390,3037,3039,3042,3045,3048,3051],{"className":3038},[402],[390,3040],{"className":3041,"style":407},[406],[390,3043,1836],{"className":3044},[411],[390,3046],{"className":3047,"style":1278},[516],[390,3049,1283],{"className":3050},[1282],[390,3052],{"className":3053,"style":1278},[516],[390,3055,3057,3061,3064,3067,3071],{"className":3056},[402],[390,3058],{"className":3059,"style":3060},[406],"height:0.7278em;vertical-align:-0.0833em;",[390,3062,596],{"className":3063},[411],[390,3065],{"className":3066,"style":1278},[516],[390,3068,3070],{"className":3069},[1282],"+",[390,3072],{"className":3073,"style":1278},[516],[390,3075,3077,3080,3083,3086,3089],{"className":3076},[402],[390,3078],{"className":3079,"style":407},[406],[390,3081,1839],{"className":3082},[411],[390,3084],{"className":3085,"style":1278},[516],[390,3087,1283],{"className":3088},[1282],[390,3090],{"className":3091,"style":1278},[516],[390,3093,3095,3098,3101,3104,3107],{"className":3094},[402],[390,3096],{"className":3097,"style":3060},[406],[390,3099,429],{"className":3100},[411],[390,3102],{"className":3103,"style":1278},[516],[390,3105,3070],{"className":3106},[1282],[390,3108],{"className":3109,"style":1278},[516],[390,3111,3113,3116,3119,3122,3125],{"className":3112},[402],[390,3114],{"className":3115,"style":407},[406],[390,3117,1842],{"className":3118},[411],[390,3120],{"className":3121,"style":1278},[516],[390,3123,1283],{"className":3124},[1282],[390,3126],{"className":3127,"style":1278},[516],[390,3129,3131,3134,3137,3140,3143],{"className":3130},[402],[390,3132],{"className":3133,"style":3060},[406],[390,3135,429],{"className":3136},[411],[390,3138],{"className":3139,"style":1278},[516],[390,3141,3070],{"className":3142},[1282],[390,3144],{"className":3145,"style":1278},[516],[390,3147,3149,3152,3155,3158,3161],{"className":3148},[402],[390,3150],{"className":3151,"style":407},[406],[390,3153,1845],{"className":3154},[411],[390,3156],{"className":3157,"style":1278},[516],[390,3159,1283],{"className":3160},[1282],[390,3162],{"className":3163,"style":1278},[516],[390,3165,3167,3170,3173,3176,3179],{"className":3166},[402],[390,3168],{"className":3169,"style":3060},[406],[390,3171,429],{"className":3172},[411],[390,3174],{"className":3175,"style":1278},[516],[390,3177,3070],{"className":3178},[1282],[390,3180],{"className":3181,"style":1278},[516],[390,3183,3185,3188,3191,3194,3197],{"className":3184},[402],[390,3186],{"className":3187,"style":407},[406],[390,3189,1848],{"className":3190},[411],[390,3192],{"className":3193,"style":1278},[516],[390,3195,1283],{"className":3196},[1282],[390,3198],{"className":3199,"style":1278},[516],[390,3201,3203,3206,3210,3213,3216],{"className":3202},[402],[390,3204],{"className":3205,"style":3060},[406],[390,3207,3209],{"className":3208},[411],"4",[390,3211],{"className":3212,"style":1278},[516],[390,3214,3070],{"className":3215},[1282],[390,3217],{"className":3218,"style":1278},[516],[390,3220,3222,3225,3228,3231,3234],{"className":3221},[402],[390,3223],{"className":3224,"style":407},[406],[390,3226,1851],{"className":3227},[411],[390,3229],{"className":3230,"style":1278},[516],[390,3232,1283],{"className":3233},[1282],[390,3235],{"className":3236,"style":1278},[516],[390,3238,3240,3243,3246,3249,3252],{"className":3239},[402],[390,3241],{"className":3242,"style":407},[406],[390,3244,3209],{"className":3245},[411],[390,3247],{"className":3248,"style":529},[516],[390,3250,534],{"className":3251},[533],[390,3253],{"className":3254,"style":529},[516],[390,3256,3258,3261],{"className":3257},[402],[390,3259],{"className":3260,"style":407},[406],[390,3262,3264],{"className":3263},[411],"224",[381,3266,3267,3268,3283,3284,3432,3433,3450],{},"thousand bits. A fixed-length ",[390,3269,3271],{"className":3270},[393],[390,3272,3274],{"className":3273,"ariaHidden":398},[397],[390,3275,3277,3280],{"className":3276},[402],[390,3278],{"className":3279,"style":407},[406],[390,3281,429],{"className":3282},[411],"-bit code would spend\n",[390,3285,3287],{"className":3286},[393],[390,3288,3290,3308,3329,3347,3365,3383,3401,3422],{"className":3289,"ariaHidden":398},[397],[390,3291,3293,3296,3299,3302,3305],{"className":3292},[402],[390,3294],{"className":3295,"style":407},[406],[390,3297,429],{"className":3298},[411],[390,3300],{"className":3301,"style":1278},[516],[390,3303,1283],{"className":3304},[1282],[390,3306],{"className":3307,"style":1278},[516],[390,3309,3311,3314,3317,3320,3323,3326],{"className":3310},[402],[390,3312],{"className":3313,"style":443},[406],[390,3315,1116],{"className":3316},[447],[390,3318,1836],{"className":3319},[411],[390,3321],{"className":3322,"style":1278},[516],[390,3324,3070],{"className":3325},[1282],[390,3327],{"className":3328,"style":1278},[516],[390,3330,3332,3335,3338,3341,3344],{"className":3331},[402],[390,3333],{"className":3334,"style":3060},[406],[390,3336,1839],{"className":3337},[411],[390,3339],{"className":3340,"style":1278},[516],[390,3342,3070],{"className":3343},[1282],[390,3345],{"className":3346,"style":1278},[516],[390,3348,3350,3353,3356,3359,3362],{"className":3349},[402],[390,3351],{"className":3352,"style":3060},[406],[390,3354,1842],{"className":3355},[411],[390,3357],{"className":3358,"style":1278},[516],[390,3360,3070],{"className":3361},[1282],[390,3363],{"className":3364,"style":1278},[516],[390,3366,3368,3371,3374,3377,3380],{"className":3367},[402],[390,3369],{"className":3370,"style":3060},[406],[390,3372,1845],{"className":3373},[411],[390,3375],{"className":3376,"style":1278},[516],[390,3378,3070],{"className":3379},[1282],[390,3381],{"className":3382,"style":1278},[516],[390,3384,3386,3389,3392,3395,3398],{"className":3385},[402],[390,3387],{"className":3388,"style":3060},[406],[390,3390,1848],{"className":3391},[411],[390,3393],{"className":3394,"style":1278},[516],[390,3396,3070],{"className":3397},[1282],[390,3399],{"className":3400,"style":1278},[516],[390,3402,3404,3407,3410,3413,3416,3419],{"className":3403},[402],[390,3405],{"className":3406,"style":443},[406],[390,3408,1851],{"className":3409},[411],[390,3411,1123],{"className":3412},[524],[390,3414],{"className":3415,"style":529},[516],[390,3417,534],{"className":3418},[533],[390,3420],{"className":3421,"style":529},[516],[390,3423,3425,3428],{"className":3424},[402],[390,3426],{"className":3427,"style":407},[406],[390,3429,3431],{"className":3430},[411],"300"," thousand bits, so Huffman saves about ",[390,3434,3436],{"className":3435},[393],[390,3437,3439],{"className":3438,"ariaHidden":398},[397],[390,3440,3442,3446],{"className":3441},[402],[390,3443],{"className":3444,"style":3445},[406],"height:0.8056em;vertical-align:-0.0556em;",[390,3447,3449],{"className":3448},[411],"25%",", and\nno prefix-free code does better.",[603,3452,3454],{"id":3453},"why-huffman-is-optimal","Why Huffman is optimal",[381,3456,3457,3458,3461,3462,3465,3466,3469,3470],{},"Huffman is a greedy algorithm, so its proof follows the template from the\nprevious lesson exactly: a ",[385,3459,3460],{},"greedy-choice property"," proved by an ",[385,3463,3464],{},"exchange\nargument",", then ",[385,3467,3468],{},"optimal substructure"," to close the induction.",[587,3471,3472],{},[590,3473,3209],{"href":3474,"ariaDescribedBy":3475,"dataFootnoteRef":376,"id":3476},"#user-content-fn-erickson-huffman",[594],"user-content-fnref-erickson-huffman",[3478,3479,3481],"h3",{"id":3480},"the-greedy-choice-is-safe","The greedy choice is safe",[1346,3483,3485],{"type":3484},"lemma",[381,3486,3487,3490,3491,552,3507,3525,3526,3541,3542,552,3557,3572],{},[385,3488,3489],{},"Lemma (Greedy choice)."," Let ",[390,3492,3494],{"className":3493},[393],[390,3495,3497],{"className":3496,"ariaHidden":398},[397],[390,3498,3500,3503],{"className":3499},[402],[390,3501],{"className":3502,"style":1137},[406],[390,3504,3506],{"className":3505},[411,970],"x",[390,3508,3510],{"className":3509},[393],[390,3511,3513],{"className":3512,"ariaHidden":398},[397],[390,3514,3516,3520],{"className":3515},[402],[390,3517],{"className":3518,"style":3519},[406],"height:0.625em;vertical-align:-0.1944em;",[390,3521,3524],{"className":3522,"style":3523},[411,970],"margin-right:0.0359em;","y"," be the two symbols of lowest\nfrequency in ",[390,3527,3529],{"className":3528},[393],[390,3530,3532],{"className":3531,"ariaHidden":398},[397],[390,3533,3535,3538],{"className":3534},[402],[390,3536],{"className":3537,"style":966},[406],[390,3539,972],{"className":3540,"style":971},[411,970],". Then some optimal prefix-free code makes ",[390,3543,3545],{"className":3544},[393],[390,3546,3548],{"className":3547,"ariaHidden":398},[397],[390,3549,3551,3554],{"className":3550},[402],[390,3552],{"className":3553,"style":1137},[406],[390,3555,3506],{"className":3556},[411,970],[390,3558,3560],{"className":3559},[393],[390,3561,3563],{"className":3562,"ariaHidden":398},[397],[390,3564,3566,3569],{"className":3565},[402],[390,3567],{"className":3568,"style":3519},[406],[390,3570,3524],{"className":3571,"style":3523},[411,970],"\nsiblings at maximum depth.",[1346,3574,3576,3882,4201,4506],{"type":3575},"proof",[381,3577,3578,3490,3581,3596,3597,552,3612,3628,3629,3644,3645,552,3697,3748,3749,552,3764,3779,3780,552,3831,569],{},[385,3579,3580],{},"Proof (exchange argument).",[390,3582,3584],{"className":3583},[393],[390,3585,3587],{"className":3586,"ariaHidden":398},[397],[390,3588,3590,3593],{"className":3589},[402],[390,3591],{"className":3592,"style":966},[406],[390,3594,1055],{"className":3595,"style":1054},[411,970]," be any optimal tree. Let ",[390,3598,3600],{"className":3599},[393],[390,3601,3603],{"className":3602,"ariaHidden":398},[397],[390,3604,3606,3609],{"className":3605},[402],[390,3607],{"className":3608,"style":1137},[406],[390,3610,590],{"className":3611},[411,970],[390,3613,3615],{"className":3614},[393],[390,3616,3618],{"className":3617,"ariaHidden":398},[397],[390,3619,3621,3625],{"className":3620},[402],[390,3622],{"className":3623,"style":3624},[406],"height:0.6944em;",[390,3626,1807],{"className":3627},[411,970]," be\ntwo sibling leaves at the deepest level of ",[390,3630,3632],{"className":3631},[393],[390,3633,3635],{"className":3634,"ariaHidden":398},[397],[390,3636,3638,3641],{"className":3637},[402],[390,3639],{"className":3640,"style":966},[406],[390,3642,1055],{"className":3643,"style":1054},[411,970]," (a full tree's deepest leaves come\nin sibling pairs). Without loss of generality assume\n",[390,3646,3648],{"className":3647},[393],[390,3649,3651,3679],{"className":3650,"ariaHidden":398},[397],[390,3652,3654,3657,3660,3663,3669,3672,3676],{"className":3653},[402],[390,3655],{"className":3656,"style":1023},[406],[390,3658,590],{"className":3659},[411,970],[390,3661,569],{"className":3662},[411],[390,3664,3666],{"className":3665},[411],[390,3667,1037],{"className":3668},[411,1036],[390,3670],{"className":3671,"style":529},[516],[390,3673,3675],{"className":3674},[533],"≤",[390,3677],{"className":3678,"style":529},[516],[390,3680,3682,3685,3688,3691],{"className":3681},[402],[390,3683],{"className":3684,"style":1023},[406],[390,3686,1807],{"className":3687},[411,970],[390,3689,569],{"className":3690},[411],[390,3692,3694],{"className":3693},[411],[390,3695,1037],{"className":3696},[411,1036],[390,3698,3700],{"className":3699},[393],[390,3701,3703,3730],{"className":3702,"ariaHidden":398},[397],[390,3704,3706,3709,3712,3715,3721,3724,3727],{"className":3705},[402],[390,3707],{"className":3708,"style":1023},[406],[390,3710,3506],{"className":3711},[411,970],[390,3713,569],{"className":3714},[411],[390,3716,3718],{"className":3717},[411],[390,3719,1037],{"className":3720},[411,1036],[390,3722],{"className":3723,"style":529},[516],[390,3725,3675],{"className":3726},[533],[390,3728],{"className":3729,"style":529},[516],[390,3731,3733,3736,3739,3742],{"className":3732},[402],[390,3734],{"className":3735,"style":1023},[406],[390,3737,3524],{"className":3738,"style":3523},[411,970],[390,3740,569],{"className":3741},[411],[390,3743,3745],{"className":3744},[411],[390,3746,1037],{"className":3747},[411,1036],".\nSince ",[390,3750,3752],{"className":3751},[393],[390,3753,3755],{"className":3754,"ariaHidden":398},[397],[390,3756,3758,3761],{"className":3757},[402],[390,3759],{"className":3760,"style":1137},[406],[390,3762,3506],{"className":3763},[411,970],[390,3765,3767],{"className":3766},[393],[390,3768,3770],{"className":3769,"ariaHidden":398},[397],[390,3771,3773,3776],{"className":3772},[402],[390,3774],{"className":3775,"style":3519},[406],[390,3777,3524],{"className":3778,"style":3523},[411,970]," are globally least frequent,\n",[390,3781,3783],{"className":3782},[393],[390,3784,3786,3813],{"className":3785,"ariaHidden":398},[397],[390,3787,3789,3792,3795,3798,3804,3807,3810],{"className":3788},[402],[390,3790],{"className":3791,"style":1023},[406],[390,3793,3506],{"className":3794},[411,970],[390,3796,569],{"className":3797},[411],[390,3799,3801],{"className":3800},[411],[390,3802,1037],{"className":3803},[411,1036],[390,3805],{"className":3806,"style":529},[516],[390,3808,3675],{"className":3809},[533],[390,3811],{"className":3812,"style":529},[516],[390,3814,3816,3819,3822,3825],{"className":3815},[402],[390,3817],{"className":3818,"style":1023},[406],[390,3820,590],{"className":3821},[411,970],[390,3823,569],{"className":3824},[411],[390,3826,3828],{"className":3827},[411],[390,3829,1037],{"className":3830},[411,1036],[390,3832,3834],{"className":3833},[393],[390,3835,3837,3864],{"className":3836,"ariaHidden":398},[397],[390,3838,3840,3843,3846,3849,3855,3858,3861],{"className":3839},[402],[390,3841],{"className":3842,"style":1023},[406],[390,3844,3524],{"className":3845,"style":3523},[411,970],[390,3847,569],{"className":3848},[411],[390,3850,3852],{"className":3851},[411],[390,3853,1037],{"className":3854},[411,1036],[390,3856],{"className":3857,"style":529},[516],[390,3859,3675],{"className":3860},[533],[390,3862],{"className":3863,"style":529},[516],[390,3865,3867,3870,3873,3876],{"className":3866},[402],[390,3868],{"className":3869,"style":1023},[406],[390,3871,1807],{"className":3872},[411,970],[390,3874,569],{"className":3875},[411],[390,3877,3879],{"className":3878},[411],[390,3880,1037],{"className":3881},[411,1036],[381,3883,3884,3885,3932,3933,3948,3949,3964,3965,4010,4011,3948,4026,4041,4042,4045,4046,4061,4062,552,4123,4138,4139,4200],{},"Form ",[390,3886,3888],{"className":3887},[393],[390,3889,3891],{"className":3890,"ariaHidden":398},[397],[390,3892,3894,3898],{"className":3893},[402],[390,3895],{"className":3896,"style":3897},[406],"height:0.7519em;",[390,3899,3901,3904],{"className":3900},[411],[390,3902,1055],{"className":3903,"style":1054},[411,970],[390,3905,3907],{"className":3906},[465],[390,3908,3910],{"className":3909},[469],[390,3911,3913],{"className":3912},[474],[390,3914,3916],{"className":3915,"style":3897},[478],[390,3917,3919,3922],{"style":3918},"top:-3.063em;margin-right:0.05em;",[390,3920],{"className":3921,"style":487},[486],[390,3923,3925],{"className":3924},[491,492,493,494],[390,3926,3928],{"className":3927},[411,494],[390,3929,3931],{"className":3930},[411,494],"′"," by swapping ",[390,3934,3936],{"className":3935},[393],[390,3937,3939],{"className":3938,"ariaHidden":398},[397],[390,3940,3942,3945],{"className":3941},[402],[390,3943],{"className":3944,"style":1137},[406],[390,3946,3506],{"className":3947},[411,970]," with ",[390,3950,3952],{"className":3951},[393],[390,3953,3955],{"className":3954,"ariaHidden":398},[397],[390,3956,3958,3961],{"className":3957},[402],[390,3959],{"className":3960,"style":1137},[406],[390,3962,590],{"className":3963},[411,970],", and ",[390,3966,3968],{"className":3967},[393],[390,3969,3971],{"className":3970,"ariaHidden":398},[397],[390,3972,3974,3977],{"className":3973},[402],[390,3975],{"className":3976,"style":3897},[406],[390,3978,3980,3983],{"className":3979},[411],[390,3981,1055],{"className":3982,"style":1054},[411,970],[390,3984,3986],{"className":3985},[465],[390,3987,3989],{"className":3988},[469],[390,3990,3992],{"className":3991},[474],[390,3993,3995],{"className":3994,"style":3897},[478],[390,3996,3997,4000],{"style":3918},[390,3998],{"className":3999,"style":487},[486],[390,4001,4003],{"className":4002},[491,492,493,494],[390,4004,4006],{"className":4005},[411,494],[390,4007,4009],{"className":4008},[411,494],"′′"," by then swapping ",[390,4012,4014],{"className":4013},[393],[390,4015,4017],{"className":4016,"ariaHidden":398},[397],[390,4018,4020,4023],{"className":4019},[402],[390,4021],{"className":4022,"style":3519},[406],[390,4024,3524],{"className":4025,"style":3523},[411,970],[390,4027,4029],{"className":4028},[393],[390,4030,4032],{"className":4031,"ariaHidden":398},[397],[390,4033,4035,4038],{"className":4034},[402],[390,4036],{"className":4037,"style":3624},[406],[390,4039,1807],{"className":4040},[411,970],". We\nshow no swap ",[578,4043,4044],{},"increases"," the cost. Moving ",[390,4047,4049],{"className":4048},[393],[390,4050,4052],{"className":4051,"ariaHidden":398},[397],[390,4053,4055,4058],{"className":4054},[402],[390,4056],{"className":4057,"style":1137},[406],[390,4059,3506],{"className":4060},[411,970]," down to depth ",[390,4063,4065],{"className":4064},[393],[390,4066,4068],{"className":4067,"ariaHidden":398},[397],[390,4069,4071,4074,4114,4117,4120],{"className":4070},[402],[390,4072],{"className":4073,"style":443},[406],[390,4075,4077,4080],{"className":4076},[411],[390,4078,1075],{"className":4079},[411,970],[390,4081,4083],{"className":4082},[465],[390,4084,4086,4106],{"className":4085},[469,470],[390,4087,4089,4103],{"className":4088},[474],[390,4090,4092],{"className":4091,"style":1088},[478],[390,4093,4094,4097],{"style":1091},[390,4095],{"className":4096,"style":487},[486],[390,4098,4100],{"className":4099},[491,492,493,494],[390,4101,1055],{"className":4102,"style":1054},[411,970,494],[390,4104,503],{"className":4105},[502],[390,4107,4109],{"className":4108},[474],[390,4110,4112],{"className":4111,"style":1110},[478],[390,4113],{},[390,4115,1116],{"className":4116},[447],[390,4118,590],{"className":4119},[411,970],[390,4121,1123],{"className":4122},[524],[390,4124,4126],{"className":4125},[393],[390,4127,4129],{"className":4128,"ariaHidden":398},[397],[390,4130,4132,4135],{"className":4131},[402],[390,4133],{"className":4134,"style":1137},[406],[390,4136,590],{"className":4137},[411,970]," up to\ndepth ",[390,4140,4142],{"className":4141},[393],[390,4143,4145],{"className":4144,"ariaHidden":398},[397],[390,4146,4148,4151,4191,4194,4197],{"className":4147},[402],[390,4149],{"className":4150,"style":443},[406],[390,4152,4154,4157],{"className":4153},[411],[390,4155,1075],{"className":4156},[411,970],[390,4158,4160],{"className":4159},[465],[390,4161,4163,4183],{"className":4162},[469,470],[390,4164,4166,4180],{"className":4165},[474],[390,4167,4169],{"className":4168,"style":1088},[478],[390,4170,4171,4174],{"style":1091},[390,4172],{"className":4173,"style":487},[486],[390,4175,4177],{"className":4176},[491,492,493,494],[390,4178,1055],{"className":4179,"style":1054},[411,970,494],[390,4181,503],{"className":4182},[502],[390,4184,4186],{"className":4185},[474],[390,4187,4189],{"className":4188,"style":1110},[478],[390,4190],{},[390,4192,1116],{"className":4193},[447],[390,4195,3506],{"className":4196},[411,970],[390,4198,1123],{"className":4199},[524]," changes the cost by",[390,4202,4204],{"className":4203},[1149],[390,4205,4207],{"className":4206},[393],[390,4208,4210,4237,4296,4332,4420,4491],{"className":4209,"ariaHidden":398},[397],[390,4211,4213,4216,4219,4222,4225,4228,4231,4234],{"className":4212},[402],[390,4214],{"className":4215,"style":443},[406],[390,4217,1166],{"className":4218,"style":1165},[411,970],[390,4220,1116],{"className":4221},[447],[390,4223,1055],{"className":4224,"style":1054},[411,970],[390,4226,1123],{"className":4227},[524],[390,4229],{"className":4230,"style":1278},[516],[390,4232,1583],{"className":4233},[1282],[390,4235],{"className":4236,"style":1278},[516],[390,4238,4240,4244,4247,4250,4284,4287,4290,4293],{"className":4239},[402],[390,4241],{"className":4242,"style":4243},[406],"height:1.0519em;vertical-align:-0.25em;",[390,4245,1166],{"className":4246,"style":1165},[411,970],[390,4248,1116],{"className":4249},[447],[390,4251,4253,4256],{"className":4252},[411],[390,4254,1055],{"className":4255,"style":1054},[411,970],[390,4257,4259],{"className":4258},[465],[390,4260,4262],{"className":4261},[469],[390,4263,4265],{"className":4264},[474],[390,4266,4269],{"className":4267,"style":4268},[478],"height:0.8019em;",[390,4270,4272,4275],{"style":4271},"top:-3.113em;margin-right:0.05em;",[390,4273],{"className":4274,"style":487},[486],[390,4276,4278],{"className":4277},[491,492,493,494],[390,4279,4281],{"className":4280},[411,494],[390,4282,3931],{"className":4283},[411,494],[390,4285,1123],{"className":4286},[524],[390,4288],{"className":4289,"style":529},[516],[390,4291,534],{"className":4292},[533],[390,4294],{"className":4295,"style":529},[516],[390,4297,4299,4303,4311,4314,4317,4323,4326,4329],{"className":4298},[402],[390,4300],{"className":4301,"style":4302},[406],"height:1.2em;vertical-align:-0.35em;",[390,4304,4306],{"className":4305},[411],[390,4307,1116],{"className":4308},[4309,4310],"delimsizing","size1",[390,4312,590],{"className":4313},[411,970],[390,4315,569],{"className":4316},[411],[390,4318,4320],{"className":4319},[411],[390,4321,1037],{"className":4322},[411,1036],[390,4324],{"className":4325,"style":1278},[516],[390,4327,1583],{"className":4328},[1282],[390,4330],{"className":4331,"style":1278},[516],[390,4333,4335,4338,4341,4344,4350,4356,4362,4402,4405,4408,4411,4414,4417],{"className":4334},[402],[390,4336],{"className":4337,"style":4302},[406],[390,4339,3506],{"className":4340},[411,970],[390,4342,569],{"className":4343},[411],[390,4345,4347],{"className":4346},[411],[390,4348,1037],{"className":4349},[411,1036],[390,4351,4353],{"className":4352},[411],[390,4354,1123],{"className":4355},[4309,4310],[390,4357,4359],{"className":4358},[411],[390,4360,1116],{"className":4361},[4309,4310],[390,4363,4365,4368],{"className":4364},[411],[390,4366,1075],{"className":4367},[411,970],[390,4369,4371],{"className":4370},[465],[390,4372,4374,4394],{"className":4373},[469,470],[390,4375,4377,4391],{"className":4376},[474],[390,4378,4380],{"className":4379,"style":1088},[478],[390,4381,4382,4385],{"style":1091},[390,4383],{"className":4384,"style":487},[486],[390,4386,4388],{"className":4387},[491,492,493,494],[390,4389,1055],{"className":4390,"style":1054},[411,970,494],[390,4392,503],{"className":4393},[502],[390,4395,4397],{"className":4396},[474],[390,4398,4400],{"className":4399,"style":1110},[478],[390,4401],{},[390,4403,1116],{"className":4404},[447],[390,4406,590],{"className":4407},[411,970],[390,4409,1123],{"className":4410},[524],[390,4412],{"className":4413,"style":1278},[516],[390,4415,1583],{"className":4416},[1282],[390,4418],{"className":4419,"style":1278},[516],[390,4421,4423,4426,4466,4469,4472,4475,4481,4484,4488],{"className":4422},[402],[390,4424],{"className":4425,"style":4302},[406],[390,4427,4429,4432],{"className":4428},[411],[390,4430,1075],{"className":4431},[411,970],[390,4433,4435],{"className":4434},[465],[390,4436,4438,4458],{"className":4437},[469,470],[390,4439,4441,4455],{"className":4440},[474],[390,4442,4444],{"className":4443,"style":1088},[478],[390,4445,4446,4449],{"style":1091},[390,4447],{"className":4448,"style":487},[486],[390,4450,4452],{"className":4451},[491,492,493,494],[390,4453,1055],{"className":4454,"style":1054},[411,970,494],[390,4456,503],{"className":4457},[502],[390,4459,4461],{"className":4460},[474],[390,4462,4464],{"className":4463,"style":1110},[478],[390,4465],{},[390,4467,1116],{"className":4468},[447],[390,4470,3506],{"className":4471},[411,970],[390,4473,1123],{"className":4474},[524],[390,4476,4478],{"className":4477},[411],[390,4479,1123],{"className":4480},[4309,4310],[390,4482],{"className":4483,"style":529},[516],[390,4485,4487],{"className":4486},[533],"≥",[390,4489],{"className":4490,"style":529},[516],[390,4492,4494,4498,4501],{"className":4493},[402],[390,4495],{"className":4496,"style":4497},[406],"height:0.8389em;vertical-align:-0.1944em;",[390,4499,615],{"className":4500},[411],[390,4502,4505],{"className":4503},[4504],"mpunct",",",[381,4507,4508,4509,4524,4525,4540,4541,4610,4611,4626,4627,4540,4642,4785,4786,4867,4868,4977,4978,4993,4994,5038,5039,5083,5084,552,5099,5114,5115],{},"because ",[390,4510,4512],{"className":4511},[393],[390,4513,4515],{"className":4514,"ariaHidden":398},[397],[390,4516,4518,4521],{"className":4517},[402],[390,4519],{"className":4520,"style":1137},[406],[390,4522,590],{"className":4523},[411,970]," is at least as frequent as ",[390,4526,4528],{"className":4527},[393],[390,4529,4531],{"className":4530,"ariaHidden":398},[397],[390,4532,4534,4537],{"className":4533},[402],[390,4535],{"className":4536,"style":1137},[406],[390,4538,3506],{"className":4539},[411,970]," (",[390,4542,4544],{"className":4543},[393],[390,4545,4547,4574,4601],{"className":4546,"ariaHidden":398},[397],[390,4548,4550,4553,4556,4559,4565,4568,4571],{"className":4549},[402],[390,4551],{"className":4552,"style":1023},[406],[390,4554,590],{"className":4555},[411,970],[390,4557,569],{"className":4558},[411],[390,4560,4562],{"className":4561},[411],[390,4563,1037],{"className":4564},[411,1036],[390,4566],{"className":4567,"style":1278},[516],[390,4569,1583],{"className":4570},[1282],[390,4572],{"className":4573,"style":1278},[516],[390,4575,4577,4580,4583,4586,4592,4595,4598],{"className":4576},[402],[390,4578],{"className":4579,"style":1023},[406],[390,4581,3506],{"className":4582},[411,970],[390,4584,569],{"className":4585},[411],[390,4587,4589],{"className":4588},[411],[390,4590,1037],{"className":4591},[411,1036],[390,4593],{"className":4594,"style":529},[516],[390,4596,4487],{"className":4597},[533],[390,4599],{"className":4600,"style":529},[516],[390,4602,4604,4607],{"className":4603},[402],[390,4605],{"className":4606,"style":407},[406],[390,4608,615],{"className":4609},[411],") and ",[390,4612,4614],{"className":4613},[393],[390,4615,4617],{"className":4616,"ariaHidden":398},[397],[390,4618,4620,4623],{"className":4619},[402],[390,4621],{"className":4622,"style":1137},[406],[390,4624,590],{"className":4625},[411,970]," is at least as deep as ",[390,4628,4630],{"className":4629},[393],[390,4631,4633],{"className":4632,"ariaHidden":398},[397],[390,4634,4636,4639],{"className":4635},[402],[390,4637],{"className":4638,"style":1137},[406],[390,4640,3506],{"className":4641},[411,970],[390,4643,4645],{"className":4644},[393],[390,4646,4648,4712,4776],{"className":4647,"ariaHidden":398},[397],[390,4649,4651,4654,4694,4697,4700,4703,4706,4709],{"className":4650},[402],[390,4652],{"className":4653,"style":443},[406],[390,4655,4657,4660],{"className":4656},[411],[390,4658,1075],{"className":4659},[411,970],[390,4661,4663],{"className":4662},[465],[390,4664,4666,4686],{"className":4665},[469,470],[390,4667,4669,4683],{"className":4668},[474],[390,4670,4672],{"className":4671,"style":1088},[478],[390,4673,4674,4677],{"style":1091},[390,4675],{"className":4676,"style":487},[486],[390,4678,4680],{"className":4679},[491,492,493,494],[390,4681,1055],{"className":4682,"style":1054},[411,970,494],[390,4684,503],{"className":4685},[502],[390,4687,4689],{"className":4688},[474],[390,4690,4692],{"className":4691,"style":1110},[478],[390,4693],{},[390,4695,1116],{"className":4696},[447],[390,4698,590],{"className":4699},[411,970],[390,4701,1123],{"className":4702},[524],[390,4704],{"className":4705,"style":1278},[516],[390,4707,1583],{"className":4708},[1282],[390,4710],{"className":4711,"style":1278},[516],[390,4713,4715,4718,4758,4761,4764,4767,4770,4773],{"className":4714},[402],[390,4716],{"className":4717,"style":443},[406],[390,4719,4721,4724],{"className":4720},[411],[390,4722,1075],{"className":4723},[411,970],[390,4725,4727],{"className":4726},[465],[390,4728,4730,4750],{"className":4729},[469,470],[390,4731,4733,4747],{"className":4732},[474],[390,4734,4736],{"className":4735,"style":1088},[478],[390,4737,4738,4741],{"style":1091},[390,4739],{"className":4740,"style":487},[486],[390,4742,4744],{"className":4743},[491,492,493,494],[390,4745,1055],{"className":4746,"style":1054},[411,970,494],[390,4748,503],{"className":4749},[502],[390,4751,4753],{"className":4752},[474],[390,4754,4756],{"className":4755,"style":1110},[478],[390,4757],{},[390,4759,1116],{"className":4760},[447],[390,4762,3506],{"className":4763},[411,970],[390,4765,1123],{"className":4766},[524],[390,4768],{"className":4769,"style":529},[516],[390,4771,4487],{"className":4772},[533],[390,4774],{"className":4775,"style":529},[516],[390,4777,4779,4782],{"className":4778},[402],[390,4780],{"className":4781,"style":407},[406],[390,4783,615],{"className":4784},[411],"). So\n",[390,4787,4789],{"className":4788},[393],[390,4790,4792,4849],{"className":4791,"ariaHidden":398},[397],[390,4793,4795,4799,4802,4805,4837,4840,4843,4846],{"className":4794},[402],[390,4796],{"className":4797,"style":4798},[406],"height:1.0019em;vertical-align:-0.25em;",[390,4800,1166],{"className":4801,"style":1165},[411,970],[390,4803,1116],{"className":4804},[447],[390,4806,4808,4811],{"className":4807},[411],[390,4809,1055],{"className":4810,"style":1054},[411,970],[390,4812,4814],{"className":4813},[465],[390,4815,4817],{"className":4816},[469],[390,4818,4820],{"className":4819},[474],[390,4821,4823],{"className":4822,"style":3897},[478],[390,4824,4825,4828],{"style":3918},[390,4826],{"className":4827,"style":487},[486],[390,4829,4831],{"className":4830},[491,492,493,494],[390,4832,4834],{"className":4833},[411,494],[390,4835,3931],{"className":4836},[411,494],[390,4838,1123],{"className":4839},[524],[390,4841],{"className":4842,"style":529},[516],[390,4844,3675],{"className":4845},[533],[390,4847],{"className":4848,"style":529},[516],[390,4850,4852,4855,4858,4861,4864],{"className":4851},[402],[390,4853],{"className":4854,"style":443},[406],[390,4856,1166],{"className":4857,"style":1165},[411,970],[390,4859,1116],{"className":4860},[447],[390,4862,1055],{"className":4863,"style":1054},[411,970],[390,4865,1123],{"className":4866},[524],". The same argument gives ",[390,4869,4871],{"className":4870},[393],[390,4872,4874,4930],{"className":4873,"ariaHidden":398},[397],[390,4875,4877,4880,4883,4886,4918,4921,4924,4927],{"className":4876},[402],[390,4878],{"className":4879,"style":4798},[406],[390,4881,1166],{"className":4882,"style":1165},[411,970],[390,4884,1116],{"className":4885},[447],[390,4887,4889,4892],{"className":4888},[411],[390,4890,1055],{"className":4891,"style":1054},[411,970],[390,4893,4895],{"className":4894},[465],[390,4896,4898],{"className":4897},[469],[390,4899,4901],{"className":4900},[474],[390,4902,4904],{"className":4903,"style":3897},[478],[390,4905,4906,4909],{"style":3918},[390,4907],{"className":4908,"style":487},[486],[390,4910,4912],{"className":4911},[491,492,493,494],[390,4913,4915],{"className":4914},[411,494],[390,4916,4009],{"className":4917},[411,494],[390,4919,1123],{"className":4920},[524],[390,4922],{"className":4923,"style":529},[516],[390,4925,3675],{"className":4926},[533],[390,4928],{"className":4929,"style":529},[516],[390,4931,4933,4936,4939,4942,4974],{"className":4932},[402],[390,4934],{"className":4935,"style":4798},[406],[390,4937,1166],{"className":4938,"style":1165},[411,970],[390,4940,1116],{"className":4941},[447],[390,4943,4945,4948],{"className":4944},[411],[390,4946,1055],{"className":4947,"style":1054},[411,970],[390,4949,4951],{"className":4950},[465],[390,4952,4954],{"className":4953},[469],[390,4955,4957],{"className":4956},[474],[390,4958,4960],{"className":4959,"style":3897},[478],[390,4961,4962,4965],{"style":3918},[390,4963],{"className":4964,"style":487},[486],[390,4966,4968],{"className":4967},[491,492,493,494],[390,4969,4971],{"className":4970},[411,494],[390,4972,3931],{"className":4973},[411,494],[390,4975,1123],{"className":4976},[524],". Since ",[390,4979,4981],{"className":4980},[393],[390,4982,4984],{"className":4983,"ariaHidden":398},[397],[390,4985,4987,4990],{"className":4986},[402],[390,4988],{"className":4989,"style":966},[406],[390,4991,1055],{"className":4992,"style":1054},[411,970]," was\noptimal, ",[390,4995,4997],{"className":4996},[393],[390,4998,5000],{"className":4999,"ariaHidden":398},[397],[390,5001,5003,5006],{"className":5002},[402],[390,5004],{"className":5005,"style":3897},[406],[390,5007,5009,5012],{"className":5008},[411],[390,5010,1055],{"className":5011,"style":1054},[411,970],[390,5013,5015],{"className":5014},[465],[390,5016,5018],{"className":5017},[469],[390,5019,5021],{"className":5020},[474],[390,5022,5024],{"className":5023,"style":3897},[478],[390,5025,5026,5029],{"style":3918},[390,5027],{"className":5028,"style":487},[486],[390,5030,5032],{"className":5031},[491,492,493,494],[390,5033,5035],{"className":5034},[411,494],[390,5036,4009],{"className":5037},[411,494]," is optimal too, and in ",[390,5040,5042],{"className":5041},[393],[390,5043,5045],{"className":5044,"ariaHidden":398},[397],[390,5046,5048,5051],{"className":5047},[402],[390,5049],{"className":5050,"style":3897},[406],[390,5052,5054,5057],{"className":5053},[411],[390,5055,1055],{"className":5056,"style":1054},[411,970],[390,5058,5060],{"className":5059},[465],[390,5061,5063],{"className":5062},[469],[390,5064,5066],{"className":5065},[474],[390,5067,5069],{"className":5068,"style":3897},[478],[390,5070,5071,5074],{"style":3918},[390,5072],{"className":5073,"style":487},[486],[390,5075,5077],{"className":5076},[491,492,493,494],[390,5078,5080],{"className":5079},[411,494],[390,5081,4009],{"className":5082},[411,494]," the symbols ",[390,5085,5087],{"className":5086},[393],[390,5088,5090],{"className":5089,"ariaHidden":398},[397],[390,5091,5093,5096],{"className":5092},[402],[390,5094],{"className":5095,"style":1137},[406],[390,5097,3506],{"className":5098},[411,970],[390,5100,5102],{"className":5101},[393],[390,5103,5105],{"className":5104,"ariaHidden":398},[397],[390,5106,5108,5111],{"className":5107},[402],[390,5109],{"className":5110,"style":3519},[406],[390,5112,3524],{"className":5113,"style":3523},[411,970]," are sibling\nleaves at maximum depth. ",[390,5116,5118],{"className":5117},[393],[390,5119,5121],{"className":5120,"ariaHidden":398},[397],[390,5122,5124,5128],{"className":5123},[402],[390,5125],{"className":5126,"style":5127},[406],"height:0.675em;",[390,5129,5132],{"className":5130},[411,5131],"amsrm","■",[381,5134,5135,5136],{},"The intuition is the exchange argument in one sentence: ",[578,5137,5138],{},"the rarest symbols\nbelong deepest, so pushing them down and pulling frequent symbols up can never\ncost more.",[381,5140,5141,5142,5157,5158,5182,5183,5207,5208,3948,5223,552,5238,3948,5253,5268],{},"The two swaps are easiest to see side by side. In any optimal tree ",[390,5143,5145],{"className":5144},[393],[390,5146,5148],{"className":5147,"ariaHidden":398},[397],[390,5149,5151,5154],{"className":5150},[402],[390,5152],{"className":5153,"style":966},[406],[390,5155,1055],{"className":5156,"style":1054},[411,970]," the deepest\nsibling pair holds some leaves ",[390,5159,5161],{"className":5160},[393],[390,5162,5164],{"className":5163,"ariaHidden":398},[397],[390,5165,5167,5170,5173,5176,5179],{"className":5166},[402],[390,5168],{"className":5169,"style":1023},[406],[390,5171,590],{"className":5172},[411,970],[390,5174,4505],{"className":5175},[4504],[390,5177],{"className":5178,"style":517},[516],[390,5180,1807],{"className":5181},[411,970],"; the globally rarest symbols ",[390,5184,5186],{"className":5185},[393],[390,5187,5189],{"className":5188,"ariaHidden":398},[397],[390,5190,5192,5195,5198,5201,5204],{"className":5191},[402],[390,5193],{"className":5194,"style":3519},[406],[390,5196,3506],{"className":5197},[411,970],[390,5199,4505],{"className":5200},[4504],[390,5202],{"className":5203,"style":517},[516],[390,5205,3524],{"className":5206,"style":3523},[411,970]," may sit\nhigher up. Exchanging ",[390,5209,5211],{"className":5210},[393],[390,5212,5214],{"className":5213,"ariaHidden":398},[397],[390,5215,5217,5220],{"className":5216},[402],[390,5218],{"className":5219,"style":1137},[406],[390,5221,3506],{"className":5222},[411,970],[390,5224,5226],{"className":5225},[393],[390,5227,5229],{"className":5228,"ariaHidden":398},[397],[390,5230,5232,5235],{"className":5231},[402],[390,5233],{"className":5234,"style":1137},[406],[390,5236,590],{"className":5237},[411,970],[390,5239,5241],{"className":5240},[393],[390,5242,5244],{"className":5243,"ariaHidden":398},[397],[390,5245,5247,5250],{"className":5246},[402],[390,5248],{"className":5249,"style":3519},[406],[390,5251,3524],{"className":5252,"style":3523},[411,970],[390,5254,5256],{"className":5255},[393],[390,5257,5259],{"className":5258,"ariaHidden":398},[397],[390,5260,5262,5265],{"className":5261},[402],[390,5263],{"className":5264,"style":3624},[406],[390,5266,1807],{"className":5267},[411,970]," sends the rare symbols to the\nbottom and lifts the more frequent ones — and the cost only drops, because each\nmoved-down leaf is rarer and each moved-up leaf is more frequent.",[688,5270,5272,5515],{"className":5271},[691,692],[694,5273,5277],{"xmlns":696,"width":5274,"height":5275,"viewBox":5276},"317.955","146.772","-75 -75 238.466 110.079",[701,5278,5279,5294,5299,5311,5316,5328,5333,5345,5357,5360,5380,5385,5396,5401,5412,5417,5429,5440,5443,5492],{"stroke":703,"style":704},[701,5280,5281,5288],{"stroke":729,"fontSize":834},[701,5282,5284],{"transform":5283},"translate(-15.096 -67.829)",[709,5285],{"d":5286,"fill":703,"stroke":703,"className":5287,"style":842},"M-50.628 4.387L-50.628 2.196L-51.331 2.196L-51.331 1.942Q-50.975 1.942-50.733 1.709Q-50.491 1.477-50.380 1.129Q-50.268 0.782-50.268 0.426L-49.987 0.426L-49.987 1.899L-48.811 1.899L-48.811 2.196L-49.987 2.196L-49.987 4.371Q-49.987 4.692-49.868 4.920Q-49.749 5.149-49.468 5.149Q-49.288 5.149-49.171 5.026Q-49.053 4.903-49.001 4.723Q-48.948 4.543-48.948 4.371L-48.948 3.899L-48.667 3.899L-48.667 4.387Q-48.667 4.641-48.772 4.881Q-48.878 5.121-49.075 5.274Q-49.272 5.426-49.530 5.426Q-49.846 5.426-50.098 5.303Q-50.350 5.180-50.489 4.946Q-50.628 4.711-50.628 4.387M-45.940 5.348L-47.921 5.348L-47.921 5.051Q-47.651 5.051-47.483 5.006Q-47.315 4.961-47.315 4.789L-47.315 2.653Q-47.315 2.438-47.378 2.342Q-47.440 2.246-47.557 2.225Q-47.675 2.203-47.921 2.203L-47.921 1.907L-46.753 1.821L-46.753 2.606Q-46.675 2.395-46.522 2.209Q-46.370 2.024-46.171 1.922Q-45.971 1.821-45.745 1.821Q-45.499 1.821-45.307 1.965Q-45.116 2.110-45.116 2.340Q-45.116 2.496-45.221 2.606Q-45.327 2.715-45.483 2.715Q-45.639 2.715-45.749 2.606Q-45.858 2.496-45.858 2.340Q-45.858 2.180-45.753 2.075Q-46.077 2.075-46.292 2.303Q-46.507 2.532-46.602 2.871Q-46.698 3.211-46.698 3.516L-46.698 4.789Q-46.698 4.957-46.471 5.004Q-46.245 5.051-45.940 5.051L-45.940 5.348M-44.636 3.594Q-44.636 3.114-44.403 2.698Q-44.171 2.282-43.761 2.032Q-43.350 1.782-42.874 1.782Q-42.143 1.782-41.745 2.223Q-41.346 2.664-41.346 3.395Q-41.346 3.500-41.440 3.524L-43.889 3.524L-43.889 3.594Q-43.889 4.004-43.768 4.360Q-43.647 4.715-43.376 4.932Q-43.104 5.149-42.675 5.149Q-42.311 5.149-42.014 4.920Q-41.718 4.692-41.616 4.340Q-41.608 4.293-41.522 4.278L-41.440 4.278Q-41.346 4.305-41.346 4.387Q-41.346 4.395-41.354 4.426Q-41.417 4.653-41.555 4.836Q-41.694 5.020-41.886 5.153Q-42.077 5.285-42.296 5.356Q-42.514 5.426-42.753 5.426Q-43.124 5.426-43.462 5.289Q-43.800 5.153-44.067 4.901Q-44.335 4.649-44.485 4.309Q-44.636 3.969-44.636 3.594M-43.882 3.285L-41.921 3.285Q-41.921 2.981-42.022 2.690Q-42.124 2.399-42.341 2.217Q-42.557 2.035-42.874 2.035Q-43.175 2.035-43.405 2.223Q-43.636 2.410-43.759 2.702Q-43.882 2.993-43.882 3.285M-40.858 3.594Q-40.858 3.114-40.626 2.698Q-40.393 2.282-39.983 2.032Q-39.573 1.782-39.096 1.782Q-38.366 1.782-37.968 2.223Q-37.569 2.664-37.569 3.395Q-37.569 3.500-37.663 3.524L-40.112 3.524L-40.112 3.594Q-40.112 4.004-39.991 4.360Q-39.870 4.715-39.598 4.932Q-39.327 5.149-38.897 5.149Q-38.534 5.149-38.237 4.920Q-37.940 4.692-37.839 4.340Q-37.831 4.293-37.745 4.278L-37.663 4.278Q-37.569 4.305-37.569 4.387Q-37.569 4.395-37.577 4.426Q-37.639 4.653-37.778 4.836Q-37.917 5.020-38.108 5.153Q-38.300 5.285-38.518 5.356Q-38.737 5.426-38.975 5.426Q-39.346 5.426-39.684 5.289Q-40.022 5.153-40.290 4.901Q-40.557 4.649-40.708 4.309Q-40.858 3.969-40.858 3.594M-40.104 3.285L-38.143 3.285Q-38.143 2.981-38.245 2.690Q-38.346 2.399-38.563 2.217Q-38.780 2.035-39.096 2.035Q-39.397 2.035-39.628 2.223Q-39.858 2.410-39.981 2.702Q-40.104 2.993-40.104 3.285",[725],[701,5289,5290],{"transform":5283},[709,5291],{"d":5292,"fill":703,"stroke":703,"className":5293,"style":842},"M-33.925 5.219L-33.898 5.118Q-33.855 5.059-33.804 5.051Q-33.109 5.051-32.890 5.004Q-32.711 4.957-32.668 4.746L-31.589 0.426Q-31.547 0.254-31.547 0.227Q-31.547 0.180-31.797 0.180L-32.332 0.180Q-32.890 0.180-33.187 0.334Q-33.484 0.489-33.636 0.772Q-33.789 1.055-33.996 1.660Q-34.039 1.723-34.093 1.731L-34.172 1.731Q-34.269 1.703-34.269 1.621Q-34.269 1.614-34.261 1.571L-33.699-0.050Q-33.668-0.105-33.605-0.117L-28.605-0.117Q-28.507-0.090-28.507 0.004L-28.750 1.629Q-28.769 1.707-28.851 1.731L-28.933 1.731Q-29.027 1.703-29.027 1.606Q-28.957 1.055-28.949 0.836Q-28.949 0.407-29.183 0.293Q-29.418 0.180-29.918 0.180L-30.445 0.180Q-30.617 0.180-30.679 0.194Q-30.742 0.207-30.775 0.266Q-30.808 0.325-30.851 0.485L-31.933 4.805Q-31.941 4.836-31.941 4.891Q-31.941 4.942-31.922 4.967Q-31.902 4.993-31.851 5.012Q-31.644 5.051-30.980 5.051Q-30.882 5.082-30.882 5.172L-30.910 5.278Q-30.941 5.336-31.004 5.348L-33.828 5.348Q-33.863 5.348-33.894 5.307Q-33.925 5.266-33.925 5.219",[725],[701,5295,5296],{"fill":707},[709,5297],{"d":5298},"M-22.868-54.63a5.69 5.69 0 1 0-11.38 0 5.69 5.69 0 0 0 11.38 0Zm-5.69 0",[701,5300,5301,5304],{"fill":714},[709,5302],{"d":5303},"M-46.955-38.469h-9.072a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h9.072a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4Zm-13.072 17.072",[701,5305,5307],{"transform":5306},"translate(-2.622 -33.344)",[709,5308],{"d":5309,"fill":703,"stroke":703,"className":5310,"style":726},"M-50.762 5.058Q-50.586 5.185-50.313 5.185Q-50.023 5.185-49.810 4.931Q-49.597 4.676-49.518 4.359L-49.114 2.746Q-49.026 2.369-49.026 2.180Q-49.026 1.955-49.153 1.793Q-49.281 1.630-49.500 1.630Q-49.918 1.630-50.250 1.980Q-50.581 2.329-50.700 2.782Q-50.718 2.865-50.788 2.865L-50.898 2.865Q-50.986 2.865-50.986 2.746Q-50.854 2.206-50.432 1.788Q-50.010 1.371-49.483 1.371Q-49.149 1.371-48.874 1.542Q-48.599 1.714-48.485 2.008Q-48.327 1.736-48.081 1.553Q-47.835 1.371-47.549 1.371Q-47.211 1.371-46.938 1.538Q-46.666 1.705-46.666 2.026Q-46.666 2.254-46.809 2.423Q-46.951 2.593-47.189 2.593Q-47.329 2.593-47.435 2.500Q-47.540 2.408-47.540 2.263Q-47.540 2.078-47.417 1.936Q-47.294 1.793-47.110 1.758Q-47.290 1.630-47.567 1.630Q-47.857 1.630-48.068 1.887Q-48.279 2.144-48.358 2.461L-48.762 4.069Q-48.854 4.430-48.854 4.627Q-48.854 4.860-48.725 5.023Q-48.595 5.185-48.366 5.185Q-48.081 5.185-47.833 5.016Q-47.584 4.847-47.411 4.575Q-47.237 4.302-47.171 4.034Q-47.162 4.003-47.138 3.979Q-47.114 3.955-47.079 3.955L-46.973 3.955Q-46.934 3.955-46.908 3.992Q-46.881 4.030-46.881 4.069Q-46.969 4.416-47.189 4.735Q-47.408 5.054-47.725 5.251Q-48.041 5.449-48.384 5.449Q-48.722 5.449-48.997 5.280Q-49.272 5.111-49.395 4.807Q-49.544 5.076-49.793 5.262Q-50.041 5.449-50.322 5.449Q-50.665 5.449-50.939 5.282Q-51.214 5.115-51.214 4.790Q-51.214 4.566-51.065 4.394Q-50.915 4.223-50.682 4.223Q-50.537 4.223-50.434 4.315Q-50.331 4.408-50.331 4.557Q-50.331 4.733-50.454 4.880Q-50.577 5.027-50.762 5.058",[725],[701,5312,5313],{"fill":707},[709,5314],{"d":5315},"M.065-29.933a5.69 5.69 0 1 0-11.38 0 5.69 5.69 0 0 0 11.38 0Zm-5.69 0",[701,5317,5318,5321],{"fill":714},[709,5319],{"d":5320},"M-18.73-13.772h-9.072a4 4 0 0 0-4 4V-.7a4 4 0 0 0 4 4h9.072a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4ZM-31.802 3.3",[701,5322,5324],{"transform":5323},"translate(25.786 -9.522)",[709,5325],{"d":5326,"fill":703,"stroke":703,"className":5327,"style":726},"M-50.634 6.644Q-50.546 6.798-50.373 6.864Q-50.199 6.930-49.997 6.930Q-49.672 6.930-49.408 6.754Q-49.144 6.578-48.962 6.308Q-48.780 6.038-48.648 5.708Q-48.516 5.379-48.441 5.080Q-48.841 5.449-49.311 5.449Q-49.676 5.449-49.940 5.322Q-50.203 5.194-50.348 4.948Q-50.493 4.702-50.493 4.350Q-50.493 4.065-50.417 3.746Q-50.340 3.428-50.225 3.127Q-50.111 2.826-49.953 2.421Q-49.834 2.136-49.834 1.903Q-49.834 1.784-49.880 1.707Q-49.927 1.630-50.032 1.630Q-50.384 1.630-50.619 1.991Q-50.854 2.351-50.959 2.782Q-50.977 2.865-51.052 2.865L-51.157 2.865Q-51.205 2.865-51.227 2.826Q-51.249 2.786-51.249 2.746Q-51.161 2.404-51.001 2.098Q-50.841 1.793-50.590 1.582Q-50.340 1.371-50.014 1.371Q-49.676 1.371-49.445 1.577Q-49.215 1.784-49.215 2.127Q-49.215 2.307-49.276 2.461Q-49.307 2.549-49.459 2.944Q-49.610 3.340-49.680 3.570Q-49.751 3.801-49.797 4.025Q-49.843 4.249-49.843 4.473Q-49.843 4.772-49.713 4.979Q-49.584 5.185-49.303 5.185Q-48.727 5.185-48.296 4.491L-47.619 1.784Q-47.584 1.643-47.470 1.556Q-47.356 1.468-47.215 1.468Q-47.101 1.468-47.020 1.545Q-46.938 1.621-46.938 1.740Q-46.938 1.793-46.947 1.819L-47.826 5.366Q-47.953 5.853-48.279 6.271Q-48.604 6.688-49.061 6.941Q-49.518 7.194-50.006 7.194Q-50.256 7.194-50.487 7.104Q-50.718 7.014-50.860 6.833Q-51.003 6.653-51.003 6.403Q-51.003 6.152-50.856 5.974Q-50.709 5.796-50.476 5.796Q-50.331 5.796-50.228 5.889Q-50.124 5.981-50.124 6.130Q-50.124 6.332-50.276 6.488Q-50.428 6.644-50.634 6.644",[725],[701,5329,5330],{"fill":707},[709,5331],{"d":5332},"M14.177-5.236a5.69 5.69 0 1 0-11.38 0 5.69 5.69 0 0 0 11.38 0Zm-5.69 0",[701,5334,5335,5338],{"fill":714},[709,5336],{"d":5337},"M.674 10.925h-9.071a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4H.674a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4Zm-13.071 17.072",[701,5339,5341],{"transform":5340},"translate(45.18 16.05)",[709,5342],{"d":5343,"fill":703,"stroke":703,"className":5344,"style":726},"M-49.869 5.449Q-50.265 5.449-50.551 5.245Q-50.836 5.040-50.983 4.706Q-51.131 4.372-51.131 3.981Q-51.131 3.546-50.957 3.085Q-50.783 2.623-50.471 2.232Q-50.159 1.841-49.749 1.606Q-49.338 1.371-48.898 1.371Q-48.630 1.371-48.413 1.509Q-48.195 1.648-48.063 1.894Q-48.024 1.744-47.916 1.648Q-47.808 1.551-47.668 1.551Q-47.545 1.551-47.461 1.624Q-47.378 1.696-47.378 1.819Q-47.378 1.872-47.387 1.903L-48.006 4.394Q-48.063 4.592-48.063 4.790Q-48.063 5.185-47.800 5.185Q-47.514 5.185-47.380 4.862Q-47.246 4.539-47.127 4.034Q-47.118 4.003-47.094 3.979Q-47.070 3.955-47.035 3.955L-46.929 3.955Q-46.881 3.955-46.859 3.988Q-46.837 4.021-46.837 4.069Q-46.951 4.500-47.042 4.753Q-47.132 5.005-47.325 5.227Q-47.518 5.449-47.817 5.449Q-48.125 5.449-48.373 5.278Q-48.621 5.106-48.692 4.816Q-48.947 5.102-49.243 5.275Q-49.540 5.449-49.869 5.449M-49.852 5.185Q-49.522 5.185-49.212 4.944Q-48.903 4.702-48.692 4.386Q-48.683 4.377-48.683 4.359L-48.186 2.395Q-48.243 2.078-48.435 1.854Q-48.626 1.630-48.916 1.630Q-49.285 1.630-49.584 1.949Q-49.883 2.267-50.050 2.676Q-50.186 3.023-50.311 3.533Q-50.436 4.043-50.436 4.368Q-50.436 4.693-50.298 4.939Q-50.159 5.185-49.852 5.185",[725],[701,5346,5347,5350],{"fill":714},[709,5348],{"d":5349},"M25.371 10.925H16.3a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h9.071a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4ZM12.3 27.997",[701,5351,5353],{"transform":5352},"translate(70.344 17.237)",[709,5354],{"d":5355,"fill":703,"stroke":703,"className":5356,"style":726},"M-49.869 5.449Q-50.445 5.449-50.766 5.018Q-51.087 4.588-51.087 4.008Q-51.087 3.603-51.003 3.375L-50.124-0.123Q-50.089-0.273-50.089-0.347Q-50.089-0.484-50.656-0.484Q-50.753-0.484-50.753-0.602Q-50.753-0.659-50.722-0.730Q-50.691-0.800-50.625-0.800L-49.404-0.897Q-49.351-0.897-49.318-0.868Q-49.285-0.840-49.285-0.791L-49.285-0.756L-49.944 1.854Q-49.421 1.371-48.898 1.371Q-48.512 1.371-48.221 1.575Q-47.931 1.780-47.784 2.114Q-47.637 2.448-47.637 2.839Q-47.637 3.423-47.940 4.032Q-48.243 4.640-48.764 5.045Q-49.285 5.449-49.869 5.449M-49.852 5.185Q-49.483 5.185-49.179 4.862Q-48.876 4.539-48.718 4.144Q-48.573 3.788-48.452 3.280Q-48.331 2.773-48.331 2.452Q-48.331 2.127-48.476 1.879Q-48.621 1.630-48.916 1.630Q-49.518 1.630-50.089 2.430L-50.331 3.423Q-50.476 4.047-50.476 4.311Q-50.476 4.654-50.324 4.920Q-50.173 5.185-49.852 5.185",[725],[709,5358],{"fill":729,"d":5359},"M-32.565-50.318-43.38-38.672M-24.547-50.318-9.63-34.253M-9.045-25.142l-7.979 11.169M-2.698-24.822l8.268 14.47M5.858.032.511 10.725M11.128.03l5.347 10.695",[701,5361,5362,5368,5373],{"stroke":729},[701,5363,5365],{"transform":5364},"translate(105.943 -67.484)",[709,5366],{"d":5286,"fill":703,"stroke":703,"className":5367,"style":842},[725],[701,5369,5370],{"transform":5364},[709,5371],{"d":5292,"fill":703,"stroke":703,"className":5372,"style":842},[725],[701,5374,5375],{"transform":5364},[709,5376],{"d":5377,"fill":703,"stroke":703,"className":5378,"style":5379},"M-27.753 2.291L-27.935 2.220Q-27.988 2.200-27.988 2.141Q-27.988 2.135-27.982 2.112L-27.124-0.583Q-27.088-0.698-26.996-0.764Q-26.904-0.829-26.795-0.829Q-26.646-0.829-26.530-0.728Q-26.415-0.627-26.415-0.481Q-26.415-0.396-26.453-0.320L-27.639 2.250Q-27.668 2.296-27.718 2.296Q-27.724 2.296-27.753 2.291M-25.562 2.291L-25.744 2.220Q-25.796 2.200-25.796 2.141Q-25.796 2.135-25.791 2.112L-24.932-0.583Q-24.897-0.698-24.805-0.764Q-24.712-0.829-24.604-0.829Q-24.455-0.829-24.339-0.728Q-24.223-0.627-24.223-0.481Q-24.223-0.396-24.261-0.320L-25.448 2.250Q-25.477 2.296-25.527 2.296Q-25.533 2.296-25.562 2.291",[725],"stroke-width:0.180",[701,5381,5382],{"fill":707},[709,5383],{"d":5384},"M100.616-54.63a5.69 5.69 0 1 0-11.38 0 5.69 5.69 0 0 0 11.38 0Zm-5.69 0",[701,5386,5387,5390],{"fill":714},[709,5388],{"d":5389},"M76.529-38.469h-9.072a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h9.072a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4ZM63.457-21.397",[701,5391,5393],{"transform":5392},"translate(121.034 -33.344)",[709,5394],{"d":5343,"fill":703,"stroke":703,"className":5395,"style":726},[725],[701,5397,5398],{"fill":707},[709,5399],{"d":5400},"M123.55-29.933a5.69 5.69 0 1 0-11.382 0 5.69 5.69 0 0 0 11.381 0Zm-5.691 0",[701,5402,5403,5406],{"fill":714},[709,5404],{"d":5405},"M104.754-13.772h-9.072a4 4 0 0 0-4 4V-.7a4 4 0 0 0 4 4h9.072a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4ZM91.682 3.3",[701,5407,5409],{"transform":5408},"translate(149.727 -7.46)",[709,5410],{"d":5355,"fill":703,"stroke":703,"className":5411,"style":726},[725],[701,5413,5414],{"fill":707},[709,5415],{"d":5416},"M137.661-5.236a5.69 5.69 0 1 0-11.38 0 5.69 5.69 0 0 0 11.38 0Zm-5.69 0",[701,5418,5420,5423],{"fill":714,"stroke":2294,"style":5419},"stroke-width:1.2",[709,5421],{"d":5422},"M124.158 10.925h-9.071a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h9.071a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4Zm-13.071 17.072",[701,5424,5426],{"transform":5425},"translate(168.492 16.05)",[709,5427],{"d":5309,"fill":703,"stroke":703,"className":5428,"style":726},[725],[701,5430,5431,5434],{"fill":714,"stroke":2294,"style":5419},[709,5432],{"d":5433},"M148.855 10.925h-9.071a4 4 0 0 0-4 4v9.072a4 4 0 0 0 4 4h9.071a4 4 0 0 0 4-4v-9.072a4 4 0 0 0-4-4Zm-13.071 17.072",[701,5435,5437],{"transform":5436},"translate(193.371 15.175)",[709,5438],{"d":5326,"fill":703,"stroke":703,"className":5439,"style":726},[725],[709,5441],{"fill":729,"d":5442},"M90.919-50.318 80.104-38.672M98.937-50.318l14.917 16.065M114.439-25.142l-7.979 11.169M120.786-24.822l8.268 14.47M129.342.033l-5.147 10.292M134.612.03l5.147 10.295",[701,5444,5446,5449,5453],{"fill":5445,"stroke":5445,"style":5419},"var(--tk-warn)",[709,5447],{"fill":729,"d":5448},"M34.948-12.292h23.497",[709,5450],{"fill":729,"d":5451,"style":5452},"M56.005-16.137c.555 2.307 1.793 3.396 3.04 3.845-1.247.448-2.485 1.538-3.04 3.845","stroke-linecap:round;stroke-linejoin:round",[701,5454,5455,5462,5468,5474,5480,5486],{"fill":5445,"stroke":729,"fontSize":834},[701,5456,5458],{"transform":5457},"translate(78.176 -23.13)",[709,5459],{"d":5460,"fill":5445,"stroke":5445,"className":5461,"style":842},"M-51.210 5.340L-51.210 4.118Q-51.210 4.090-51.178 4.059Q-51.147 4.028-51.124 4.028L-51.018 4.028Q-50.948 4.028-50.932 4.090Q-50.870 4.410-50.731 4.651Q-50.593 4.891-50.360 5.032Q-50.128 5.172-49.819 5.172Q-49.581 5.172-49.372 5.112Q-49.163 5.051-49.026 4.903Q-48.889 4.754-48.889 4.508Q-48.889 4.254-49.100 4.088Q-49.311 3.922-49.581 3.868L-50.202 3.754Q-50.608 3.676-50.909 3.420Q-51.210 3.164-51.210 2.789Q-51.210 2.422-51.009 2.200Q-50.807 1.977-50.483 1.879Q-50.159 1.782-49.819 1.782Q-49.354 1.782-49.057 1.989L-48.835 1.805Q-48.811 1.782-48.780 1.782L-48.729 1.782Q-48.698 1.782-48.671 1.809Q-48.643 1.836-48.643 1.868L-48.643 2.852Q-48.643 2.883-48.669 2.912Q-48.694 2.942-48.729 2.942L-48.835 2.942Q-48.870 2.942-48.897 2.914Q-48.925 2.887-48.925 2.852Q-48.925 2.453-49.177 2.233Q-49.428 2.012-49.827 2.012Q-50.182 2.012-50.466 2.135Q-50.749 2.258-50.749 2.563Q-50.749 2.782-50.548 2.914Q-50.346 3.047-50.100 3.090L-49.475 3.203Q-49.046 3.293-48.737 3.590Q-48.428 3.887-48.428 4.301Q-48.428 4.871-48.827 5.149Q-49.225 5.426-49.819 5.426Q-50.370 5.426-50.721 5.090L-51.018 5.403Q-51.042 5.426-51.077 5.426L-51.124 5.426Q-51.147 5.426-51.178 5.395Q-51.210 5.364-51.210 5.340M-46.315 5.317L-47.386 2.461Q-47.452 2.282-47.583 2.239Q-47.714 2.196-47.971 2.196L-47.971 1.899L-46.292 1.899L-46.292 2.196Q-46.741 2.196-46.741 2.395Q-46.737 2.410-46.735 2.428Q-46.733 2.446-46.733 2.461L-45.940 4.555L-45.229 2.645Q-45.264 2.551-45.264 2.506Q-45.264 2.461-45.300 2.461Q-45.366 2.282-45.497 2.239Q-45.628 2.196-45.882 2.196L-45.882 1.899L-44.292 1.899L-44.292 2.196Q-44.741 2.196-44.741 2.395Q-44.737 2.414-44.735 2.432Q-44.733 2.450-44.733 2.461L-43.901 4.676L-43.147 2.676Q-43.124 2.618-43.124 2.547Q-43.124 2.387-43.261 2.291Q-43.397 2.196-43.565 2.196L-43.565 1.899L-42.178 1.899L-42.178 2.196Q-42.413 2.196-42.591 2.323Q-42.768 2.450-42.850 2.676L-43.835 5.317Q-43.889 5.426-44.003 5.426L-44.061 5.426Q-44.175 5.426-44.218 5.317L-45.077 3.043L-45.932 5.317Q-45.971 5.426-46.093 5.426L-46.147 5.426Q-46.261 5.426-46.315 5.317",[725],[701,5463,5464],{"transform":5457},[709,5465],{"d":5466,"fill":5445,"stroke":5445,"className":5467,"style":842},"M-41.899 4.516Q-41.899 4.032-41.497 3.737Q-41.094 3.442-40.544 3.323Q-39.993 3.203-39.501 3.203L-39.501 2.914Q-39.501 2.688-39.616 2.481Q-39.731 2.274-39.928 2.155Q-40.126 2.035-40.356 2.035Q-40.782 2.035-41.067 2.141Q-40.997 2.168-40.950 2.223Q-40.903 2.278-40.878 2.348Q-40.852 2.418-40.852 2.493Q-40.852 2.598-40.903 2.690Q-40.954 2.782-41.046 2.832Q-41.137 2.883-41.243 2.883Q-41.348 2.883-41.440 2.832Q-41.532 2.782-41.583 2.690Q-41.633 2.598-41.633 2.493Q-41.633 2.075-41.245 1.928Q-40.856 1.782-40.356 1.782Q-40.024 1.782-39.671 1.912Q-39.317 2.043-39.089 2.297Q-38.860 2.551-38.860 2.899L-38.860 4.700Q-38.860 4.832-38.788 4.942Q-38.715 5.051-38.587 5.051Q-38.462 5.051-38.393 4.946Q-38.325 4.840-38.325 4.700L-38.325 4.188L-38.044 4.188L-38.044 4.700Q-38.044 4.903-38.161 5.061Q-38.278 5.219-38.460 5.303Q-38.641 5.387-38.844 5.387Q-39.075 5.387-39.227 5.215Q-39.380 5.043-39.411 4.813Q-39.571 5.094-39.880 5.260Q-40.188 5.426-40.540 5.426Q-41.051 5.426-41.475 5.203Q-41.899 4.981-41.899 4.516M-41.212 4.516Q-41.212 4.801-40.985 4.987Q-40.758 5.172-40.465 5.172Q-40.219 5.172-39.995 5.055Q-39.770 4.938-39.635 4.735Q-39.501 4.532-39.501 4.278L-39.501 3.446Q-39.766 3.446-40.051 3.500Q-40.337 3.555-40.608 3.684Q-40.880 3.813-41.046 4.020Q-41.212 4.227-41.212 4.516M-35.868 6.899L-37.723 6.899L-37.723 6.606Q-37.454 6.606-37.286 6.561Q-37.118 6.516-37.118 6.340L-37.118 2.516Q-37.118 2.309-37.274 2.256Q-37.430 2.203-37.723 2.203L-37.723 1.907L-36.501 1.821L-36.501 2.285Q-36.270 2.063-35.956 1.942Q-35.641 1.821-35.301 1.821Q-34.829 1.821-34.424 2.067Q-34.020 2.313-33.788 2.729Q-33.555 3.145-33.555 3.621Q-33.555 3.996-33.704 4.325Q-33.852 4.653-34.122 4.905Q-34.391 5.157-34.735 5.291Q-35.079 5.426-35.438 5.426Q-35.727 5.426-35.999 5.305Q-36.270 5.184-36.477 4.973L-36.477 6.340Q-36.477 6.516-36.309 6.561Q-36.141 6.606-35.868 6.606L-35.868 6.899M-36.477 2.684L-36.477 4.524Q-36.325 4.813-36.063 4.993Q-35.801 5.172-35.493 5.172Q-35.208 5.172-34.985 5.034Q-34.762 4.895-34.610 4.664Q-34.458 4.434-34.380 4.162Q-34.301 3.891-34.301 3.621Q-34.301 3.289-34.426 2.932Q-34.551 2.575-34.799 2.338Q-35.047 2.102-35.395 2.102Q-35.719 2.102-36.014 2.258Q-36.309 2.414-36.477 2.684",[725],[701,5469,5470],{"transform":5457},[709,5471],{"d":5472,"fill":5445,"stroke":5445,"className":5473,"style":842},"M-29.741 5.059Q-29.574 5.172-29.331 5.172Q-29.081 5.172-28.884 4.946Q-28.687 4.719-28.628 4.461L-28.269 3.020Q-28.191 2.715-28.191 2.555Q-28.191 2.344-28.308 2.209Q-28.425 2.075-28.636 2.075Q-28.890 2.075-29.118 2.221Q-29.347 2.368-29.503 2.598Q-29.659 2.828-29.718 3.075Q-29.730 3.149-29.796 3.149L-29.902 3.149Q-29.933 3.149-29.960 3.114Q-29.988 3.078-29.988 3.051L-29.988 3.020Q-29.909 2.707-29.710 2.434Q-29.511 2.160-29.222 1.991Q-28.933 1.821-28.620 1.821Q-28.324 1.821-28.064 1.965Q-27.804 2.110-27.695 2.371Q-27.546 2.129-27.327 1.975Q-27.109 1.821-26.855 1.821Q-26.656 1.821-26.468 1.887Q-26.281 1.953-26.159 2.092Q-26.038 2.231-26.038 2.426Q-26.038 2.637-26.169 2.793Q-26.300 2.950-26.507 2.950Q-26.640 2.950-26.734 2.866Q-26.827 2.782-26.827 2.645Q-26.827 2.481-26.720 2.352Q-26.613 2.223-26.452 2.188Q-26.628 2.075-26.870 2.075Q-27.038 2.075-27.185 2.184Q-27.331 2.293-27.431 2.457Q-27.531 2.621-27.574 2.789L-27.933 4.227Q-28.003 4.571-28.003 4.692Q-28.003 4.907-27.886 5.039Q-27.769 5.172-27.558 5.172Q-27.179 5.172-26.878 4.866Q-26.577 4.559-26.484 4.172Q-26.456 4.102-26.398 4.102L-26.292 4.102Q-26.253 4.102-26.230 4.131Q-26.206 4.160-26.206 4.196Q-26.206 4.211-26.214 4.227Q-26.292 4.539-26.491 4.813Q-26.691 5.086-26.976 5.256Q-27.261 5.426-27.574 5.426Q-27.874 5.426-28.134 5.282Q-28.394 5.137-28.507 4.875Q-28.652 5.110-28.868 5.268Q-29.085 5.426-29.339 5.426Q-29.538 5.426-29.726 5.360Q-29.913 5.293-30.034 5.155Q-30.156 5.016-30.156 4.821Q-30.156 4.610-30.023 4.455Q-29.890 4.301-29.687 4.301Q-29.542 4.301-29.454 4.383Q-29.366 4.465-29.366 4.606Q-29.366 4.766-29.472 4.895Q-29.577 5.024-29.741 5.059",[725],[701,5475,5476],{"transform":5457},[709,5477],{"d":5478,"fill":5445,"stroke":5445,"className":5479,"style":842},"M-23.356 5.356Q-23.411 5.039-23.569 4.727Q-23.727 4.414-23.957 4.162Q-24.188 3.910-24.481 3.729Q-24.774 3.547-25.102 3.453Q-25.172 3.430-25.172 3.348Q-25.172 3.266-25.102 3.243Q-24.774 3.145-24.481 2.963Q-24.188 2.782-23.954 2.524Q-23.719 2.266-23.565 1.965Q-23.411 1.664-23.356 1.340Q-23.336 1.254-23.254 1.235L-23.086 1.235Q-22.989 1.262-22.989 1.364Q-23.086 1.891-23.387 2.364Q-23.688 2.836-24.141 3.164L-18.653 3.164Q-19.106 2.836-19.403 2.369Q-19.700 1.903-19.805 1.364Q-19.805 1.262-19.707 1.235L-19.540 1.235Q-19.457 1.254-19.438 1.340Q-19.309 2.016-18.829 2.534Q-18.348 3.051-17.684 3.243Q-17.622 3.266-17.622 3.348Q-17.622 3.430-17.684 3.453Q-18.348 3.641-18.829 4.160Q-19.309 4.680-19.438 5.356Q-19.457 5.442-19.540 5.461L-19.707 5.461Q-19.805 5.434-19.805 5.332Q-19.731 4.965-19.573 4.633Q-19.415 4.301-19.182 4.024Q-18.950 3.746-18.653 3.532L-24.141 3.532Q-23.844 3.746-23.612 4.024Q-23.379 4.301-23.221 4.633Q-23.063 4.965-22.989 5.332Q-22.989 5.434-23.086 5.461L-23.254 5.461Q-23.336 5.442-23.356 5.356",[725],[701,5481,5482],{"transform":5457},[709,5483],{"d":5484,"fill":5445,"stroke":5445,"className":5485,"style":842},"M-15.641 5.426Q-15.997 5.426-16.266 5.246Q-16.536 5.067-16.676 4.772Q-16.817 4.477-16.817 4.118Q-16.817 3.731-16.655 3.317Q-16.493 2.903-16.209 2.565Q-15.926 2.227-15.557 2.024Q-15.188 1.821-14.786 1.821Q-14.293 1.821-14.016 2.270Q-13.985 2.137-13.881 2.055Q-13.778 1.973-13.649 1.973Q-13.536 1.973-13.456 2.043Q-13.375 2.114-13.375 2.227Q-13.375 2.254-13.391 2.317L-13.946 4.516Q-13.985 4.762-13.985 4.813Q-13.985 5.172-13.739 5.172Q-13.594 5.172-13.493 5.065Q-13.391 4.957-13.327 4.803Q-13.262 4.649-13.213 4.459Q-13.165 4.270-13.145 4.172Q-13.118 4.102-13.055 4.102L-12.954 4.102Q-12.915 4.102-12.889 4.135Q-12.864 4.168-12.864 4.196Q-12.864 4.211-12.872 4.227Q-12.985 4.719-13.184 5.073Q-13.383 5.426-13.754 5.426Q-14.036 5.426-14.262 5.284Q-14.489 5.141-14.571 4.883Q-14.793 5.125-15.067 5.276Q-15.340 5.426-15.641 5.426M-15.625 5.172Q-15.415 5.172-15.206 5.059Q-14.997 4.946-14.827 4.772Q-14.657 4.598-14.528 4.403Q-14.540 4.418-14.549 4.432Q-14.559 4.446-14.571 4.461L-14.137 2.739Q-14.176 2.559-14.262 2.409Q-14.348 2.258-14.485 2.166Q-14.622 2.075-14.801 2.075Q-15.137 2.075-15.409 2.356Q-15.680 2.637-15.840 3.012Q-15.965 3.332-16.063 3.752Q-16.161 4.172-16.161 4.453Q-16.161 4.743-16.028 4.957Q-15.895 5.172-15.625 5.172",[725],[701,5487,5488],{"transform":5457},[709,5489],{"d":5490,"fill":5445,"stroke":5445,"className":5491,"style":842},"M-11.806 6.754Q-11.806 6.731-11.775 6.684Q-11.482 6.422-11.316 6.055Q-11.150 5.688-11.150 5.301L-11.150 5.243Q-11.278 5.348-11.446 5.348Q-11.638 5.348-11.775 5.215Q-11.911 5.082-11.911 4.883Q-11.911 4.692-11.775 4.559Q-11.638 4.426-11.446 4.426Q-11.146 4.426-11.021 4.696Q-10.896 4.965-10.896 5.301Q-10.896 5.750-11.077 6.164Q-11.259 6.578-11.599 6.875Q-11.622 6.899-11.661 6.899Q-11.708 6.899-11.757 6.854Q-11.806 6.809-11.806 6.754",[725],[701,5493,5494],{"fill":5445,"stroke":5445},[701,5495,5496,5503,5509],{"fill":5445,"stroke":729,"fontSize":834},[701,5497,5499],{"transform":5498},"translate(90.475 -3.292)",[709,5500],{"d":5501,"fill":5445,"stroke":5445,"className":5502,"style":842},"M-51.011 6.285Q-51.011 6.067-50.878 5.903Q-50.745 5.739-50.530 5.739Q-50.397 5.739-50.303 5.823Q-50.210 5.907-50.210 6.043Q-50.210 6.223-50.337 6.366Q-50.464 6.508-50.643 6.508Q-50.460 6.723-50.077 6.723Q-49.526 6.723-49.175 6.231Q-48.823 5.739-48.667 5.102Q-49.018 5.426-49.460 5.426Q-49.784 5.426-50.034 5.317Q-50.284 5.207-50.423 4.983Q-50.561 4.758-50.561 4.426Q-50.561 4.176-50.487 3.889Q-50.413 3.602-50.276 3.250Q-50.139 2.899-50.077 2.731Q-49.987 2.508-49.987 2.325Q-49.987 2.075-50.155 2.075Q-50.471 2.075-50.680 2.381Q-50.889 2.688-50.995 3.075Q-51.007 3.149-51.077 3.149L-51.178 3.149Q-51.214 3.149-51.241 3.114Q-51.268 3.078-51.268 3.051L-51.268 3.020Q-51.143 2.559-50.846 2.190Q-50.550 1.821-50.139 1.821Q-49.944 1.821-49.770 1.905Q-49.596 1.989-49.495 2.141Q-49.393 2.293-49.393 2.500Q-49.393 2.653-49.452 2.789Q-49.542 3.020-49.643 3.285Q-49.745 3.551-49.802 3.733Q-49.858 3.914-49.903 4.129Q-49.948 4.344-49.948 4.539Q-49.948 4.813-49.825 4.993Q-49.702 5.172-49.444 5.172Q-48.925 5.172-48.522 4.532L-47.940 2.188Q-47.901 2.063-47.798 1.981Q-47.694 1.899-47.569 1.899Q-47.460 1.899-47.380 1.973Q-47.300 2.047-47.300 2.157Q-47.300 2.203-47.307 2.227L-48.093 5.379Q-48.202 5.801-48.503 6.172Q-48.803 6.543-49.223 6.762Q-49.643 6.981-50.085 6.981Q-50.444 6.981-50.727 6.803Q-51.011 6.625-51.011 6.285",[725],[701,5504,5505],{"transform":5498},[709,5506],{"d":5507,"fill":5445,"stroke":5445,"className":5508,"style":842},"M-44.713 5.356Q-44.768 5.039-44.926 4.727Q-45.084 4.414-45.315 4.162Q-45.545 3.910-45.838 3.729Q-46.131 3.547-46.459 3.453Q-46.529 3.430-46.529 3.348Q-46.529 3.266-46.459 3.243Q-46.131 3.145-45.838 2.963Q-45.545 2.782-45.311 2.524Q-45.076 2.266-44.922 1.965Q-44.768 1.664-44.713 1.340Q-44.693 1.254-44.611 1.235L-44.443 1.235Q-44.346 1.262-44.346 1.364Q-44.443 1.891-44.744 2.364Q-45.045 2.836-45.498 3.164L-40.010 3.164Q-40.463 2.836-40.760 2.369Q-41.057 1.903-41.162 1.364Q-41.162 1.262-41.065 1.235L-40.897 1.235Q-40.815 1.254-40.795 1.340Q-40.666 2.016-40.186 2.534Q-39.705 3.051-39.041 3.243Q-38.979 3.266-38.979 3.348Q-38.979 3.430-39.041 3.453Q-39.705 3.641-40.186 4.160Q-40.666 4.680-40.795 5.356Q-40.815 5.442-40.897 5.461L-41.065 5.461Q-41.162 5.434-41.162 5.332Q-41.088 4.965-40.930 4.633Q-40.772 4.301-40.539 4.024Q-40.307 3.746-40.010 3.532L-45.498 3.532Q-45.201 3.746-44.969 4.024Q-44.736 4.301-44.578 4.633Q-44.420 4.965-44.346 5.332Q-44.346 5.434-44.443 5.461L-44.611 5.461Q-44.693 5.442-44.713 5.356",[725],[701,5510,5511],{"transform":5498},[709,5512],{"d":5513,"fill":5445,"stroke":5445,"className":5514,"style":842},"M-36.998 5.426Q-37.338 5.426-37.598 5.248Q-37.857 5.071-37.992 4.776Q-38.127 4.481-38.127 4.133Q-38.127 3.871-38.061 3.614L-37.311 0.586Q-37.299 0.539-37.272 0.438Q-37.244 0.336-37.244 0.285Q-37.244 0.180-37.740 0.180Q-37.838 0.149-37.838 0.051L-37.815-0.050Q-37.807-0.097-37.725-0.117L-36.623-0.203Q-36.580-0.203-36.541-0.172Q-36.502-0.140-36.502-0.086L-37.076 2.235Q-36.619 1.821-36.143 1.821Q-35.779 1.821-35.514 2Q-35.248 2.180-35.107 2.481Q-34.967 2.782-34.967 3.133Q-34.967 3.657-35.248 4.196Q-35.529 4.735-35.996 5.080Q-36.463 5.426-36.998 5.426M-36.982 5.172Q-36.647 5.172-36.367 4.881Q-36.088 4.590-35.951 4.235Q-35.826 3.942-35.725 3.508Q-35.623 3.075-35.623 2.797Q-35.623 2.512-35.756 2.293Q-35.889 2.075-36.158 2.075Q-36.369 2.075-36.565 2.176Q-36.760 2.278-36.920 2.434Q-37.080 2.590-37.213 2.782L-37.440 3.653Q-37.490 3.887-37.520 4.069Q-37.549 4.250-37.549 4.403Q-37.549 4.703-37.408 4.938Q-37.268 5.172-36.982 5.172",[725],[910,5516,5518,5519,5534,5535,5559,5560,5584,5585,552,5619,5652],{"className":5517},[913],"The greedy-choice exchange for Huffman. Left, an optimal tree ",[390,5520,5522],{"className":5521},[393],[390,5523,5525],{"className":5524,"ariaHidden":398},[397],[390,5526,5528,5531],{"className":5527},[402],[390,5529],{"className":5530,"style":966},[406],[390,5532,1055],{"className":5533,"style":1054},[411,970]," with deepest siblings ",[390,5536,5538],{"className":5537},[393],[390,5539,5541],{"className":5540,"ariaHidden":398},[397],[390,5542,5544,5547,5550,5553,5556],{"className":5543},[402],[390,5545],{"className":5546,"style":1023},[406],[390,5548,590],{"className":5549},[411,970],[390,5551,4505],{"className":5552},[4504],[390,5554],{"className":5555,"style":517},[516],[390,5557,1807],{"className":5558},[411,970]," and the rarest symbols ",[390,5561,5563],{"className":5562},[393],[390,5564,5566],{"className":5565,"ariaHidden":398},[397],[390,5567,5569,5572,5575,5578,5581],{"className":5568},[402],[390,5570],{"className":5571,"style":3519},[406],[390,5573,3506],{"className":5574},[411,970],[390,5576,4505],{"className":5577},[4504],[390,5579],{"className":5580,"style":517},[516],[390,5582,3524],{"className":5583,"style":3523},[411,970]," sitting higher. Right, after swapping ",[390,5586,5588],{"className":5587},[393],[390,5589,5591,5610],{"className":5590,"ariaHidden":398},[397],[390,5592,5594,5597,5600,5603,5607],{"className":5593},[402],[390,5595],{"className":5596,"style":1137},[406],[390,5598,3506],{"className":5599},[411,970],[390,5601],{"className":5602,"style":529},[516],[390,5604,5606],{"className":5605},[533],"↔",[390,5608],{"className":5609,"style":529},[516],[390,5611,5613,5616],{"className":5612},[402],[390,5614],{"className":5615,"style":1137},[406],[390,5617,590],{"className":5618},[411,970],[390,5620,5622],{"className":5621},[393],[390,5623,5625,5643],{"className":5624,"ariaHidden":398},[397],[390,5626,5628,5631,5634,5637,5640],{"className":5627},[402],[390,5629],{"className":5630,"style":3519},[406],[390,5632,3524],{"className":5633,"style":3523},[411,970],[390,5635],{"className":5636,"style":529},[516],[390,5638,5606],{"className":5639},[533],[390,5641],{"className":5642,"style":529},[516],[390,5644,5646,5649],{"className":5645},[402],[390,5647],{"className":5648,"style":3624},[406],[390,5650,1807],{"className":5651},[411,970]," the rarest symbols are deepest; cost cannot rise since rarer leaves moved down and more frequent leaves moved up.",[3478,5654,5656],{"id":5655},"optimal-substructure","Optimal substructure",[1346,5658,5659],{"type":3484},[381,5660,5661,3490,5664,5680,5681,5705,5706,5784,5785,5829,5830,5854,5855,5870,5871,5915,5916,5960,5961,5915,5976,5991,5992,6007,6008,552,6023,569],{},[385,5662,5663],{},"Lemma (Substructure).",[390,5665,5667],{"className":5666},[393],[390,5668,5670],{"className":5669,"ariaHidden":398},[397],[390,5671,5673,5676],{"className":5672},[402],[390,5674],{"className":5675,"style":1137},[406],[390,5677,562],{"className":5678,"style":5679},[411,970],"margin-right:0.044em;"," be the super-symbol replacing siblings ",[390,5682,5684],{"className":5683},[393],[390,5685,5687],{"className":5686,"ariaHidden":398},[397],[390,5688,5690,5693,5696,5699,5702],{"className":5689},[402],[390,5691],{"className":5692,"style":3519},[406],[390,5694,3506],{"className":5695},[411,970],[390,5697,4505],{"className":5698},[4504],[390,5700],{"className":5701,"style":517},[516],[390,5703,3524],{"className":5704,"style":3523},[411,970],",\nwith ",[390,5707,5709],{"className":5708},[393],[390,5710,5712,5739,5766],{"className":5711,"ariaHidden":398},[397],[390,5713,5715,5718,5721,5724,5730,5733,5736],{"className":5714},[402],[390,5716],{"className":5717,"style":1023},[406],[390,5719,562],{"className":5720,"style":5679},[411,970],[390,5722,569],{"className":5723},[411],[390,5725,5727],{"className":5726},[411],[390,5728,1037],{"className":5729},[411,1036],[390,5731],{"className":5732,"style":529},[516],[390,5734,534],{"className":5735},[533],[390,5737],{"className":5738,"style":529},[516],[390,5740,5742,5745,5748,5751,5757,5760,5763],{"className":5741},[402],[390,5743],{"className":5744,"style":1023},[406],[390,5746,3506],{"className":5747},[411,970],[390,5749,569],{"className":5750},[411],[390,5752,5754],{"className":5753},[411],[390,5755,1037],{"className":5756},[411,1036],[390,5758],{"className":5759,"style":1278},[516],[390,5761,3070],{"className":5762},[1282],[390,5764],{"className":5765,"style":1278},[516],[390,5767,5769,5772,5775,5778],{"className":5768},[402],[390,5770],{"className":5771,"style":1023},[406],[390,5773,3524],{"className":5774,"style":3523},[411,970],[390,5776,569],{"className":5777},[411],[390,5779,5781],{"className":5780},[411],[390,5782,1037],{"className":5783},[411,1036],", and let ",[390,5786,5788],{"className":5787},[393],[390,5789,5791],{"className":5790,"ariaHidden":398},[397],[390,5792,5794,5797],{"className":5793},[402],[390,5795],{"className":5796,"style":3897},[406],[390,5798,5800,5803],{"className":5799},[411],[390,5801,972],{"className":5802,"style":971},[411,970],[390,5804,5806],{"className":5805},[465],[390,5807,5809],{"className":5808},[469],[390,5810,5812],{"className":5811},[474],[390,5813,5815],{"className":5814,"style":3897},[478],[390,5816,5817,5820],{"style":3918},[390,5818],{"className":5819,"style":487},[486],[390,5821,5823],{"className":5822},[491,492,493,494],[390,5824,5826],{"className":5825},[411,494],[390,5827,3931],{"className":5828},[411,494]," be the\nalphabet with ",[390,5831,5833],{"className":5832},[393],[390,5834,5836],{"className":5835,"ariaHidden":398},[397],[390,5837,5839,5842,5845,5848,5851],{"className":5838},[402],[390,5840],{"className":5841,"style":3519},[406],[390,5843,3506],{"className":5844},[411,970],[390,5846,4505],{"className":5847},[4504],[390,5849],{"className":5850,"style":517},[516],[390,5852,3524],{"className":5853,"style":3523},[411,970]," replaced by ",[390,5856,5858],{"className":5857},[393],[390,5859,5861],{"className":5860,"ariaHidden":398},[397],[390,5862,5864,5867],{"className":5863},[402],[390,5865],{"className":5866,"style":1137},[406],[390,5868,562],{"className":5869,"style":5679},[411,970],". Any optimal tree ",[390,5872,5874],{"className":5873},[393],[390,5875,5877],{"className":5876,"ariaHidden":398},[397],[390,5878,5880,5883],{"className":5879},[402],[390,5881],{"className":5882,"style":3897},[406],[390,5884,5886,5889],{"className":5885},[411],[390,5887,1055],{"className":5888,"style":1054},[411,970],[390,5890,5892],{"className":5891},[465],[390,5893,5895],{"className":5894},[469],[390,5896,5898],{"className":5897},[474],[390,5899,5901],{"className":5900,"style":3897},[478],[390,5902,5903,5906],{"style":3918},[390,5904],{"className":5905,"style":487},[486],[390,5907,5909],{"className":5908},[491,492,493,494],[390,5910,5912],{"className":5911},[411,494],[390,5913,3931],{"className":5914},[411,494]," for ",[390,5917,5919],{"className":5918},[393],[390,5920,5922],{"className":5921,"ariaHidden":398},[397],[390,5923,5925,5928],{"className":5924},[402],[390,5926],{"className":5927,"style":3897},[406],[390,5929,5931,5934],{"className":5930},[411],[390,5932,972],{"className":5933,"style":971},[411,970],[390,5935,5937],{"className":5936},[465],[390,5938,5940],{"className":5939},[469],[390,5941,5943],{"className":5942},[474],[390,5944,5946],{"className":5945,"style":3897},[478],[390,5947,5948,5951],{"style":3918},[390,5949],{"className":5950,"style":487},[486],[390,5952,5954],{"className":5953},[491,492,493,494],[390,5955,5957],{"className":5956},[411,494],[390,5958,3931],{"className":5959},[411,494]," extends to\nan optimal tree ",[390,5962,5964],{"className":5963},[393],[390,5965,5967],{"className":5966,"ariaHidden":398},[397],[390,5968,5970,5973],{"className":5969},[402],[390,5971],{"className":5972,"style":966},[406],[390,5974,1055],{"className":5975,"style":1054},[411,970],[390,5977,5979],{"className":5978},[393],[390,5980,5982],{"className":5981,"ariaHidden":398},[397],[390,5983,5985,5988],{"className":5984},[402],[390,5986],{"className":5987,"style":966},[406],[390,5989,972],{"className":5990,"style":971},[411,970]," by replacing ",[390,5993,5995],{"className":5994},[393],[390,5996,5998],{"className":5997,"ariaHidden":398},[397],[390,5999,6001,6004],{"className":6000},[402],[390,6002],{"className":6003,"style":1137},[406],[390,6005,562],{"className":6006,"style":5679},[411,970],"'s leaf with an internal node whose\nchildren are ",[390,6009,6011],{"className":6010},[393],[390,6012,6014],{"className":6013,"ariaHidden":398},[397],[390,6015,6017,6020],{"className":6016},[402],[390,6018],{"className":6019,"style":1137},[406],[390,6021,3506],{"className":6022},[411,970],[390,6024,6026],{"className":6025},[393],[390,6027,6029],{"className":6028,"ariaHidden":398},[397],[390,6030,6032,6035],{"className":6031},[402],[390,6033],{"className":6034,"style":3519},[406],[390,6036,3524],{"className":6037,"style":3523},[411,970],[1346,6039,6040,6182,6334],{"type":3575},[381,6041,6042,6045,6046,6061,6062,6077,6078,6122,6123,6061,6147,6181],{},[385,6043,6044],{},"Proof."," When the leaf ",[390,6047,6049],{"className":6048},[393],[390,6050,6052],{"className":6051,"ariaHidden":398},[397],[390,6053,6055,6058],{"className":6054},[402],[390,6056],{"className":6057,"style":1137},[406],[390,6059,562],{"className":6060,"style":5679},[411,970]," at depth ",[390,6063,6065],{"className":6064},[393],[390,6066,6068],{"className":6067,"ariaHidden":398},[397],[390,6069,6071,6074],{"className":6070},[402],[390,6072],{"className":6073,"style":3624},[406],[390,6075,1075],{"className":6076},[411,970]," in ",[390,6079,6081],{"className":6080},[393],[390,6082,6084],{"className":6083,"ariaHidden":398},[397],[390,6085,6087,6090],{"className":6086},[402],[390,6088],{"className":6089,"style":3897},[406],[390,6091,6093,6096],{"className":6092},[411],[390,6094,1055],{"className":6095,"style":1054},[411,970],[390,6097,6099],{"className":6098},[465],[390,6100,6102],{"className":6101},[469],[390,6103,6105],{"className":6104},[474],[390,6106,6108],{"className":6107,"style":3897},[478],[390,6109,6110,6113],{"style":3918},[390,6111],{"className":6112,"style":487},[486],[390,6114,6116],{"className":6115},[491,492,493,494],[390,6117,6119],{"className":6118},[411,494],[390,6120,3931],{"className":6121},[411,494]," becomes an internal node with\nchildren ",[390,6124,6126],{"className":6125},[393],[390,6127,6129],{"className":6128,"ariaHidden":398},[397],[390,6130,6132,6135,6138,6141,6144],{"className":6131},[402],[390,6133],{"className":6134,"style":3519},[406],[390,6136,3506],{"className":6137},[411,970],[390,6139,4505],{"className":6140},[4504],[390,6142],{"className":6143,"style":517},[516],[390,6145,3524],{"className":6146,"style":3523},[411,970],[390,6148,6150],{"className":6149},[393],[390,6151,6153,6172],{"className":6152,"ariaHidden":398},[397],[390,6154,6156,6160,6163,6166,6169],{"className":6155},[402],[390,6157],{"className":6158,"style":6159},[406],"height:0.7778em;vertical-align:-0.0833em;",[390,6161,1075],{"className":6162},[411,970],[390,6164],{"className":6165,"style":1278},[516],[390,6167,3070],{"className":6168},[1282],[390,6170],{"className":6171,"style":1278},[516],[390,6173,6175,6178],{"className":6174},[402],[390,6176],{"className":6177,"style":407},[406],[390,6179,596],{"className":6180},[411],", the cost changes by a fixed amount independent of\nthe tree:",[390,6183,6185],{"className":6184},[1149],[390,6186,6188],{"className":6187},[393],[390,6189,6191,6218,6274,6307],{"className":6190,"ariaHidden":398},[397],[390,6192,6194,6197,6200,6203,6206,6209,6212,6215],{"className":6193},[402],[390,6195],{"className":6196,"style":443},[406],[390,6198,1166],{"className":6199,"style":1165},[411,970],[390,6201,1116],{"className":6202},[447],[390,6204,1055],{"className":6205,"style":1054},[411,970],[390,6207,1123],{"className":6208},[524],[390,6210],{"className":6211,"style":529},[516],[390,6213,534],{"className":6214},[533],[390,6216],{"className":6217,"style":529},[516],[390,6219,6221,6224,6227,6230,6262,6265,6268,6271],{"className":6220},[402],[390,6222],{"className":6223,"style":4243},[406],[390,6225,1166],{"className":6226,"style":1165},[411,970],[390,6228,1116],{"className":6229},[447],[390,6231,6233,6236],{"className":6232},[411],[390,6234,1055],{"className":6235,"style":1054},[411,970],[390,6237,6239],{"className":6238},[465],[390,6240,6242],{"className":6241},[469],[390,6243,6245],{"className":6244},[474],[390,6246,6248],{"className":6247,"style":4268},[478],[390,6249,6250,6253],{"style":4271},[390,6251],{"className":6252,"style":487},[486],[390,6254,6256],{"className":6255},[491,492,493,494],[390,6257,6259],{"className":6258},[411,494],[390,6260,3931],{"className":6261},[411,494],[390,6263,1123],{"className":6264},[524],[390,6266],{"className":6267,"style":1278},[516],[390,6269,3070],{"className":6270},[1282],[390,6272],{"className":6273,"style":1278},[516],[390,6275,6277,6280,6286,6289,6292,6298,6301,6304],{"className":6276},[402],[390,6278],{"className":6279,"style":4302},[406],[390,6281,6283],{"className":6282},[411],[390,6284,1116],{"className":6285},[4309,4310],[390,6287,3506],{"className":6288},[411,970],[390,6290,569],{"className":6291},[411],[390,6293,6295],{"className":6294},[411],[390,6296,1037],{"className":6297},[411,1036],[390,6299],{"className":6300,"style":1278},[516],[390,6302,3070],{"className":6303},[1282],[390,6305],{"className":6306,"style":1278},[516],[390,6308,6310,6313,6316,6319,6325,6331],{"className":6309},[402],[390,6311],{"className":6312,"style":4302},[406],[390,6314,3524],{"className":6315,"style":3523},[411,970],[390,6317,569],{"className":6318},[411],[390,6320,6322],{"className":6321},[411],[390,6323,1037],{"className":6324},[411,1036],[390,6326,6328],{"className":6327},[411],[390,6329,1123],{"className":6330},[4309,4310],[390,6332,4505],{"className":6333},[4504],[381,6335,6336,6337,552,6352,6367,6368,6383,6384,6399,6400,6451,6452,5915,6495,6510,6511,6526,6527,6551,6552,6593,6594,6609,6610,6654,6655,6822,6823,6867,6868,6883,6884],{},"since ",[390,6338,6340],{"className":6339},[393],[390,6341,6343],{"className":6342,"ariaHidden":398},[397],[390,6344,6346,6349],{"className":6345},[402],[390,6347],{"className":6348,"style":1137},[406],[390,6350,3506],{"className":6351},[411,970],[390,6353,6355],{"className":6354},[393],[390,6356,6358],{"className":6357,"ariaHidden":398},[397],[390,6359,6361,6364],{"className":6360},[402],[390,6362],{"className":6363,"style":3519},[406],[390,6365,3524],{"className":6366,"style":3523},[411,970]," each sit one level below where ",[390,6369,6371],{"className":6370},[393],[390,6372,6374],{"className":6373,"ariaHidden":398},[397],[390,6375,6377,6380],{"className":6376},[402],[390,6378],{"className":6379,"style":1137},[406],[390,6381,562],{"className":6382,"style":5679},[411,970]," sat, while ",[390,6385,6387],{"className":6386},[393],[390,6388,6390],{"className":6389,"ariaHidden":398},[397],[390,6391,6393,6396],{"className":6392},[402],[390,6394],{"className":6395,"style":1137},[406],[390,6397,562],{"className":6398,"style":5679},[411,970]," itself\n(weight ",[390,6401,6403],{"className":6402},[393],[390,6404,6406,6433],{"className":6405,"ariaHidden":398},[397],[390,6407,6409,6412,6415,6418,6424,6427,6430],{"className":6408},[402],[390,6410],{"className":6411,"style":1023},[406],[390,6413,3506],{"className":6414},[411,970],[390,6416,569],{"className":6417},[411],[390,6419,6421],{"className":6420},[411],[390,6422,1037],{"className":6423},[411,1036],[390,6425],{"className":6426,"style":1278},[516],[390,6428,3070],{"className":6429},[1282],[390,6431],{"className":6432,"style":1278},[516],[390,6434,6436,6439,6442,6445],{"className":6435},[402],[390,6437],{"className":6438,"style":1023},[406],[390,6440,3524],{"className":6441,"style":3523},[411,970],[390,6443,569],{"className":6444},[411],[390,6446,6448],{"className":6447},[411],[390,6449,1037],{"className":6450},[411,1036],") leaves the sum. Now suppose, for\ncontradiction, that some tree ",[390,6453,6455],{"className":6454},[393],[390,6456,6458],{"className":6457,"ariaHidden":398},[397],[390,6459,6461,6465],{"className":6460},[402],[390,6462],{"className":6463,"style":6464},[406],"height:0.6887em;",[390,6466,6468,6471],{"className":6467},[411],[390,6469,1055],{"className":6470,"style":1054},[411,970],[390,6472,6474],{"className":6473},[465],[390,6475,6477],{"className":6476},[469],[390,6478,6480],{"className":6479},[474],[390,6481,6483],{"className":6482,"style":6464},[478],[390,6484,6485,6488],{"style":3918},[390,6486],{"className":6487,"style":487},[486],[390,6489,6491],{"className":6490},[491,492,493,494],[390,6492,6494],{"className":6493},[1282,494],"⋆",[390,6496,6498],{"className":6497},[393],[390,6499,6501],{"className":6500,"ariaHidden":398},[397],[390,6502,6504,6507],{"className":6503},[402],[390,6505],{"className":6506,"style":966},[406],[390,6508,972],{"className":6509,"style":971},[411,970]," beats ",[390,6512,6514],{"className":6513},[393],[390,6515,6517],{"className":6516,"ariaHidden":398},[397],[390,6518,6520,6523],{"className":6519},[402],[390,6521],{"className":6522,"style":966},[406],[390,6524,1055],{"className":6525,"style":1054},[411,970],". By the greedy-choice\nlemma we may assume ",[390,6528,6530],{"className":6529},[393],[390,6531,6533],{"className":6532,"ariaHidden":398},[397],[390,6534,6536,6539,6542,6545,6548],{"className":6535},[402],[390,6537],{"className":6538,"style":3519},[406],[390,6540,3506],{"className":6541},[411,970],[390,6543,4505],{"className":6544},[4504],[390,6546],{"className":6547,"style":517},[516],[390,6549,3524],{"className":6550,"style":3523},[411,970]," are siblings in ",[390,6553,6555],{"className":6554},[393],[390,6556,6558],{"className":6557,"ariaHidden":398},[397],[390,6559,6561,6564],{"className":6560},[402],[390,6562],{"className":6563,"style":6464},[406],[390,6565,6567,6570],{"className":6566},[411],[390,6568,1055],{"className":6569,"style":1054},[411,970],[390,6571,6573],{"className":6572},[465],[390,6574,6576],{"className":6575},[469],[390,6577,6579],{"className":6578},[474],[390,6580,6582],{"className":6581,"style":6464},[478],[390,6583,6584,6587],{"style":3918},[390,6585],{"className":6586,"style":487},[486],[390,6588,6590],{"className":6589},[491,492,493,494],[390,6591,6494],{"className":6592},[1282,494],"; merging them into a single\nleaf ",[390,6595,6597],{"className":6596},[393],[390,6598,6600],{"className":6599,"ariaHidden":398},[397],[390,6601,6603,6606],{"className":6602},[402],[390,6604],{"className":6605,"style":1137},[406],[390,6607,562],{"className":6608,"style":5679},[411,970]," yields a tree for ",[390,6611,6613],{"className":6612},[393],[390,6614,6616],{"className":6615,"ariaHidden":398},[397],[390,6617,6619,6622],{"className":6618},[402],[390,6620],{"className":6621,"style":3897},[406],[390,6623,6625,6628],{"className":6624},[411],[390,6626,972],{"className":6627,"style":971},[411,970],[390,6629,6631],{"className":6630},[465],[390,6632,6634],{"className":6633},[469],[390,6635,6637],{"className":6636},[474],[390,6638,6640],{"className":6639,"style":3897},[478],[390,6641,6642,6645],{"style":3918},[390,6643],{"className":6644,"style":487},[486],[390,6646,6648],{"className":6647},[491,492,493,494],[390,6649,6651],{"className":6650},[411,494],[390,6652,3931],{"className":6653},[411,494]," of cost\n",[390,6656,6658],{"className":6657},[393],[390,6659,6661,6714,6744,6775],{"className":6660,"ariaHidden":398},[397],[390,6662,6664,6667,6670,6673,6702,6705,6708,6711],{"className":6663},[402],[390,6665],{"className":6666,"style":443},[406],[390,6668,1166],{"className":6669,"style":1165},[411,970],[390,6671,1116],{"className":6672},[447],[390,6674,6676,6679],{"className":6675},[411],[390,6677,1055],{"className":6678,"style":1054},[411,970],[390,6680,6682],{"className":6681},[465],[390,6683,6685],{"className":6684},[469],[390,6686,6688],{"className":6687},[474],[390,6689,6691],{"className":6690,"style":6464},[478],[390,6692,6693,6696],{"style":3918},[390,6694],{"className":6695,"style":487},[486],[390,6697,6699],{"className":6698},[491,492,493,494],[390,6700,6494],{"className":6701},[1282,494],[390,6703,1123],{"className":6704},[524],[390,6706],{"className":6707,"style":1278},[516],[390,6709,1583],{"className":6710},[1282],[390,6712],{"className":6713,"style":1278},[516],[390,6715,6717,6720,6723,6726,6729,6735,6738,6741],{"className":6716},[402],[390,6718],{"className":6719,"style":443},[406],[390,6721,1116],{"className":6722},[447],[390,6724,3506],{"className":6725},[411,970],[390,6727,569],{"className":6728},[411],[390,6730,6732],{"className":6731},[411],[390,6733,1037],{"className":6734},[411,1036],[390,6736],{"className":6737,"style":1278},[516],[390,6739,3070],{"className":6740},[1282],[390,6742],{"className":6743,"style":1278},[516],[390,6745,6747,6750,6753,6756,6762,6765,6768,6772],{"className":6746},[402],[390,6748],{"className":6749,"style":443},[406],[390,6751,3524],{"className":6752,"style":3523},[411,970],[390,6754,569],{"className":6755},[411],[390,6757,6759],{"className":6758},[411],[390,6760,1037],{"className":6761},[411,1036],[390,6763,1123],{"className":6764},[524],[390,6766],{"className":6767,"style":529},[516],[390,6769,6771],{"className":6770},[533],"\u003C",[390,6773],{"className":6774,"style":529},[516],[390,6776,6778,6781,6784,6787,6819],{"className":6777},[402],[390,6779],{"className":6780,"style":4798},[406],[390,6782,1166],{"className":6783,"style":1165},[411,970],[390,6785,1116],{"className":6786},[447],[390,6788,6790,6793],{"className":6789},[411],[390,6791,1055],{"className":6792,"style":1054},[411,970],[390,6794,6796],{"className":6795},[465],[390,6797,6799],{"className":6798},[469],[390,6800,6802],{"className":6801},[474],[390,6803,6805],{"className":6804,"style":3897},[478],[390,6806,6807,6810],{"style":3918},[390,6808],{"className":6809,"style":487},[486],[390,6811,6813],{"className":6812},[491,492,493,494],[390,6814,6816],{"className":6815},[411,494],[390,6817,3931],{"className":6818},[411,494],[390,6820,1123],{"className":6821},[524],", contradicting the\noptimality of ",[390,6824,6826],{"className":6825},[393],[390,6827,6829],{"className":6828,"ariaHidden":398},[397],[390,6830,6832,6835],{"className":6831},[402],[390,6833],{"className":6834,"style":3897},[406],[390,6836,6838,6841],{"className":6837},[411],[390,6839,1055],{"className":6840,"style":1054},[411,970],[390,6842,6844],{"className":6843},[465],[390,6845,6847],{"className":6846},[469],[390,6848,6850],{"className":6849},[474],[390,6851,6853],{"className":6852,"style":3897},[478],[390,6854,6855,6858],{"style":3918},[390,6856],{"className":6857,"style":487},[486],[390,6859,6861],{"className":6860},[491,492,493,494],[390,6862,6864],{"className":6863},[411,494],[390,6865,3931],{"className":6866},[411,494],". Hence ",[390,6869,6871],{"className":6870},[393],[390,6872,6874],{"className":6873,"ariaHidden":398},[397],[390,6875,6877,6880],{"className":6876},[402],[390,6878],{"className":6879,"style":966},[406],[390,6881,1055],{"className":6882,"style":1054},[411,970]," is optimal. ",[390,6885,6887],{"className":6886},[393],[390,6888,6890],{"className":6889,"ariaHidden":398},[397],[390,6891,6893,6896],{"className":6892},[402],[390,6894],{"className":6895,"style":5127},[406],[390,6897,5132],{"className":6898},[411,5131],[381,6900,6901,6902,6926,6927,6930,6931,6934,6935,6938,6939],{},"Together the two lemmas give the theorem by induction on ",[390,6903,6905],{"className":6904},[393],[390,6906,6908],{"className":6907,"ariaHidden":398},[397],[390,6909,6911,6914],{"className":6910},[402],[390,6912],{"className":6913,"style":443},[406],[390,6915,6917,6920,6923],{"className":6916},[1531],[390,6918,1537],{"className":6919,"style":1536},[447,1535],[390,6921,972],{"className":6922,"style":971},[411,970],[390,6924,1537],{"className":6925,"style":1536},[524,1535],": the base case\nof one symbol is trivial, and each merge is both ",[578,6928,6929],{},"safe"," (greedy choice) and\n",[578,6932,6933],{},"composable"," (substructure). ",[385,6936,6937],{},"Huffman's algorithm produces an optimal\nprefix-free code."," ",[390,6940,6942],{"className":6941},[393],[390,6943,6945],{"className":6944,"ariaHidden":398},[397],[390,6946,6948,6951],{"className":6947},[402],[390,6949],{"className":6950,"style":5127},[406],[390,6952,5132],{"className":6953},[411,5131],[603,6955,6957],{"id":6956},"running-time","Running time",[381,6959,6960,6961,6976,6977,7003,7004,7037,7038,7063,7064,7067,7068,7101],{},"The cost is dominated by the priority-queue operations. Building the initial\nmin-heap from ",[390,6962,6964],{"className":6963},[393],[390,6965,6967],{"className":6966,"ariaHidden":398},[397],[390,6968,6970,6973],{"className":6969},[402],[390,6971],{"className":6972,"style":1137},[406],[390,6974,1512],{"className":6975},[411,970]," symbols takes ",[390,6978,6980],{"className":6979},[393],[390,6981,6983],{"className":6982,"ariaHidden":398},[397],[390,6984,6986,6989,6994,6997,7000],{"className":6985},[402],[390,6987],{"className":6988,"style":443},[406],[390,6990,6993],{"className":6991,"style":6992},[411,970],"margin-right:0.0278em;","O",[390,6995,1116],{"className":6996},[447],[390,6998,1512],{"className":6999},[411,970],[390,7001,1123],{"className":7002},[524],". The loop runs ",[390,7005,7007],{"className":7006},[393],[390,7008,7010,7028],{"className":7009,"ariaHidden":398},[397],[390,7011,7013,7016,7019,7022,7025],{"className":7012},[402],[390,7014],{"className":7015,"style":1573},[406],[390,7017,1512],{"className":7018},[411,970],[390,7020],{"className":7021,"style":1278},[516],[390,7023,1583],{"className":7024},[1282],[390,7026],{"className":7027,"style":1278},[516],[390,7029,7031,7034],{"className":7030},[402],[390,7032],{"className":7033,"style":407},[406],[390,7035,596],{"className":7036},[411]," times, and each\niteration does two ",[390,7039,7041],{"className":7040},[393],[390,7042,7044],{"className":7043,"ariaHidden":398},[397],[390,7045,7047,7050],{"className":7046},[402],[390,7048],{"className":7049,"style":966},[406],[390,7051,7055],{"className":7052},[7053,7054],"enclosing","textsc",[390,7056,7059],{"className":7057},[411,7058],"text",[390,7060,7062],{"className":7061},[411],"Extract-Min","s and one ",[385,7065,7066],{},"Insert",", each ",[390,7069,7071],{"className":7070},[393],[390,7072,7074],{"className":7073,"ariaHidden":398},[397],[390,7075,7077,7080,7083,7086,7092,7095,7098],{"className":7076},[402],[390,7078],{"className":7079,"style":443},[406],[390,7081,6993],{"className":7082,"style":6992},[411,970],[390,7084,1116],{"className":7085},[447],[390,7087,7089],{"className":7088},[452],[390,7090,461],{"className":7091,"style":460},[411,459],[390,7093],{"className":7094,"style":517},[516],[390,7096,1512],{"className":7097},[411,970],[390,7099,1123],{"className":7100},[524]," on a\nbinary heap. Hence",[390,7103,7105],{"className":7104},[1149],[390,7106,7108],{"className":7107},[393],[390,7109,7111,7138,7165,7186,7207,7243],{"className":7110,"ariaHidden":398},[397],[390,7112,7114,7117,7120,7123,7126,7129,7132,7135],{"className":7113},[402],[390,7115],{"className":7116,"style":443},[406],[390,7118,1055],{"className":7119,"style":1054},[411,970],[390,7121,1116],{"className":7122},[447],[390,7124,1512],{"className":7125},[411,970],[390,7127,1123],{"className":7128},[524],[390,7130],{"className":7131,"style":529},[516],[390,7133,534],{"className":7134},[533],[390,7136],{"className":7137,"style":529},[516],[390,7139,7141,7144,7147,7150,7153,7156,7159,7162],{"className":7140},[402],[390,7142],{"className":7143,"style":443},[406],[390,7145,6993],{"className":7146,"style":6992},[411,970],[390,7148,1116],{"className":7149},[447],[390,7151,1512],{"className":7152},[411,970],[390,7154,1123],{"className":7155},[524],[390,7157],{"className":7158,"style":1278},[516],[390,7160,3070],{"className":7161},[1282],[390,7163],{"className":7164,"style":1278},[516],[390,7166,7168,7171,7174,7177,7180,7183],{"className":7167},[402],[390,7169],{"className":7170,"style":443},[406],[390,7172,1116],{"className":7173},[447],[390,7175,1512],{"className":7176},[411,970],[390,7178],{"className":7179,"style":1278},[516],[390,7181,1583],{"className":7182},[1282],[390,7184],{"className":7185,"style":1278},[516],[390,7187,7189,7192,7195,7198,7201,7204],{"className":7188},[402],[390,7190],{"className":7191,"style":443},[406],[390,7193,596],{"className":7194},[411],[390,7196,1123],{"className":7197},[524],[390,7199],{"className":7200,"style":1278},[516],[390,7202,1283],{"className":7203},[1282],[390,7205],{"className":7206,"style":1278},[516],[390,7208,7210,7213,7216,7219,7225,7228,7231,7234,7237,7240],{"className":7209},[402],[390,7211],{"className":7212,"style":443},[406],[390,7214,6993],{"className":7215,"style":6992},[411,970],[390,7217,1116],{"className":7218},[447],[390,7220,7222],{"className":7221},[452],[390,7223,461],{"className":7224,"style":460},[411,459],[390,7226],{"className":7227,"style":517},[516],[390,7229,1512],{"className":7230},[411,970],[390,7232,1123],{"className":7233},[524],[390,7235],{"className":7236,"style":529},[516],[390,7238,534],{"className":7239},[533],[390,7241],{"className":7242,"style":529},[516],[390,7244,7246,7249,7252,7255,7258,7261,7267,7270,7273,7276],{"className":7245},[402],[390,7247],{"className":7248,"style":443},[406],[390,7250,6993],{"className":7251,"style":6992},[411,970],[390,7253,1116],{"className":7254},[447],[390,7256,1512],{"className":7257},[411,970],[390,7259],{"className":7260,"style":517},[516],[390,7262,7264],{"className":7263},[452],[390,7265,461],{"className":7266,"style":460},[411,459],[390,7268],{"className":7269,"style":517},[516],[390,7271,1512],{"className":7272},[411,970],[390,7274,1123],{"className":7275},[524],[390,7277,569],{"className":7278},[411],[381,7280,7281,7282,612,7285,7309,7310,7334,7335,7374],{},"If the frequencies arrive already sorted, two simple FIFO queues replace the heap\n(one of original leaves, one of merged nodes, both kept in nondecreasing\nfrequency), and each ",[559,7283,7284],{},"extract two smallest",[390,7286,7288],{"className":7287},[393],[390,7289,7291],{"className":7290,"ariaHidden":398},[397],[390,7292,7294,7297,7300,7303,7306],{"className":7293},[402],[390,7295],{"className":7296,"style":443},[406],[390,7298,6993],{"className":7299,"style":6992},[411,970],[390,7301,1116],{"className":7302},[447],[390,7304,596],{"className":7305},[411],[390,7307,1123],{"className":7308},[524],", giving an ",[390,7311,7313],{"className":7312},[393],[390,7314,7316],{"className":7315,"ariaHidden":398},[397],[390,7317,7319,7322,7325,7328,7331],{"className":7318},[402],[390,7320],{"className":7321,"style":443},[406],[390,7323,6993],{"className":7324,"style":6992},[411,970],[390,7326,1116],{"className":7327},[447],[390,7329,1512],{"className":7330},[411,970],[390,7332,1123],{"className":7333},[524],"\nalgorithm. The ",[390,7336,7338],{"className":7337},[393],[390,7339,7341],{"className":7340,"ariaHidden":398},[397],[390,7342,7344,7347,7350,7353,7356,7359,7365,7368,7371],{"className":7343},[402],[390,7345],{"className":7346,"style":443},[406],[390,7348,6993],{"className":7349,"style":6992},[411,970],[390,7351,1116],{"className":7352},[447],[390,7354,1512],{"className":7355},[411,970],[390,7357],{"className":7358,"style":517},[516],[390,7360,7362],{"className":7361},[452],[390,7363,461],{"className":7364,"style":460},[411,459],[390,7366],{"className":7367,"style":517},[516],[390,7369,1512],{"className":7370},[411,970],[390,7372,1123],{"className":7373},[524]," bound, like activity selection's, is really the cost\nof getting the symbols into sorted order.",[603,7376,7378],{"id":7377},"where-huffman-lives-and-where-it-doesnt","Where Huffman lives and where it doesn't",[381,7380,7381,7382,7385,7386,7454,7455,7471,7472,7488,7489,7504,7505,552,7508,7511],{},"Huffman coding is optimal among codes that assign each symbol a ",[578,7383,7384],{},"whole number","\nof bits independently. That last clause hides its one weakness: when a symbol's\nideal codeword length ",[390,7387,7389],{"className":7388},[393],[390,7390,7392],{"className":7391,"ariaHidden":398},[397],[390,7393,7395,7398,7441,7444,7448,7451],{"className":7394},[402],[390,7396],{"className":7397,"style":443},[406],[390,7399,7401,7407],{"className":7400},[452],[390,7402,7404],{"className":7403},[452],[390,7405,461],{"className":7406,"style":460},[411,459],[390,7408,7410],{"className":7409},[465],[390,7411,7413,7433],{"className":7412},[469,470],[390,7414,7416,7430],{"className":7415},[474],[390,7417,7419],{"className":7418,"style":479},[478],[390,7420,7421,7424],{"style":482},[390,7422],{"className":7423,"style":487},[486],[390,7425,7427],{"className":7426},[491,492,493,494],[390,7428,498],{"className":7429},[411,494],[390,7431,503],{"className":7432},[502],[390,7434,7436],{"className":7435},[474],[390,7437,7439],{"className":7438,"style":510},[478],[390,7440],{},[390,7442,1116],{"className":7443},[447],[390,7445,7447],{"className":7446},[411],"1\u002F",[390,7449,381],{"className":7450},[411,970],[390,7452,1123],{"className":7453},[524]," is fractional (for a symbol of probability\n",[390,7456,7458],{"className":7457},[393],[390,7459,7461],{"className":7460,"ariaHidden":398},[397],[390,7462,7464,7467],{"className":7463},[402],[390,7465],{"className":7466,"style":407},[406],[390,7468,7470],{"className":7469},[411],"0.9",", ideally ",[390,7473,7475],{"className":7474},[393],[390,7476,7478],{"className":7477,"ariaHidden":398},[397],[390,7479,7481,7484],{"className":7480},[402],[390,7482],{"className":7483,"style":407},[406],[390,7485,7487],{"className":7486},[411],"0.15"," bits), Huffman must round up to ",[390,7490,7492],{"className":7491},[393],[390,7493,7495],{"className":7494,"ariaHidden":398},[397],[390,7496,7498,7501],{"className":7497},[402],[390,7499],{"className":7500,"style":407},[406],[390,7502,596],{"className":7503},[411]," bit and loses ground.\n",[385,7506,7507],{},"Arithmetic coding",[385,7509,7510],{},"range coding"," sidestep the whole-bit floor and can\nbeat Huffman on highly skewed sources, which is why modern compressors often\nprefer them. Still, Huffman's simplicity, speed, and provable optimality within\nits class keep it embedded in DEFLATE (gzip, PNG, ZIP), JPEG, and MP3 to this\nday. It remains the textbook proof that a greedy algorithm, properly justified,\ncan be exactly optimal, not merely a good heuristic.",[603,7513,7515],{"id":7514},"takeaways","Takeaways",[7517,7518,7519,7524,7694,7733,7743],"ul",{},[1859,7520,572,7521,7523],{},[385,7522,646],{}," lets a stream decode unambiguously; it is exactly a\nbinary tree with symbols at the leaves, codeword length = leaf depth.",[1859,7525,7526,7527,7691,7692,569],{},"The goal is to minimize ",[390,7528,7530],{"className":7529},[393],[390,7531,7533,7560,7636],{"className":7532,"ariaHidden":398},[397],[390,7534,7536,7539,7542,7545,7548,7551,7554,7557],{"className":7535},[402],[390,7537],{"className":7538,"style":443},[406],[390,7540,1166],{"className":7541,"style":1165},[411,970],[390,7543,1116],{"className":7544},[447],[390,7546,1055],{"className":7547,"style":1054},[411,970],[390,7549,1123],{"className":7550},[524],[390,7552],{"className":7553,"style":529},[516],[390,7555,534],{"className":7556},[533],[390,7558],{"className":7559,"style":529},[516],[390,7561,7563,7567,7612,7615,7618,7621,7627,7630,7633],{"className":7562},[402],[390,7564],{"className":7565,"style":7566},[406],"height:1.0497em;vertical-align:-0.2997em;",[390,7568,7570,7575],{"className":7569},[452],[390,7571,1247],{"className":7572,"style":7574},[452,1245,7573],"small-op","position:relative;top:0em;",[390,7576,7578],{"className":7577},[465],[390,7579,7581,7603],{"className":7580},[469,470],[390,7582,7584,7600],{"className":7583},[474],[390,7585,7588],{"className":7586,"style":7587},[478],"height:0.0017em;",[390,7589,7591,7594],{"style":7590},"top:-2.4003em;margin-left:0em;margin-right:0.05em;",[390,7592],{"className":7593,"style":487},[486],[390,7595,7597],{"className":7596},[491,492,493,494],[390,7598,990],{"className":7599},[411,970,494],[390,7601,503],{"className":7602},[502],[390,7604,7606],{"className":7605},[474],[390,7607,7610],{"className":7608,"style":7609},[478],"height:0.2997em;",[390,7611],{},[390,7613],{"className":7614,"style":517},[516],[390,7616,990],{"className":7617},[411,970],[390,7619,569],{"className":7620},[411],[390,7622,7624],{"className":7623},[411],[390,7625,1037],{"className":7626},[411,1036],[390,7628],{"className":7629,"style":1278},[516],[390,7631,1283],{"className":7632},[1282],[390,7634],{"className":7635,"style":1278},[516],[390,7637,7639,7642,7682,7685,7688],{"className":7638},[402],[390,7640],{"className":7641,"style":443},[406],[390,7643,7645,7648],{"className":7644},[411],[390,7646,1075],{"className":7647},[411,970],[390,7649,7651],{"className":7650},[465],[390,7652,7654,7674],{"className":7653},[469,470],[390,7655,7657,7671],{"className":7656},[474],[390,7658,7660],{"className":7659,"style":1088},[478],[390,7661,7662,7665],{"style":1091},[390,7663],{"className":7664,"style":487},[486],[390,7666,7668],{"className":7667},[491,492,493,494],[390,7669,1055],{"className":7670,"style":1054},[411,970,494],[390,7672,503],{"className":7673},[502],[390,7675,7677],{"className":7676},[474],[390,7678,7680],{"className":7679,"style":1110},[478],[390,7681],{},[390,7683,1116],{"className":7684},[447],[390,7686,990],{"className":7687},[411,970],[390,7689,1123],{"className":7690},[524],"; optimal\ntrees are ",[385,7693,1495],{},[1859,7695,7696,7698,7699,7732],{},[385,7697,1600],{}," greedily merges the two least-frequent nodes via a\nmin-priority queue, ",[390,7700,7702],{"className":7701},[393],[390,7703,7705,7723],{"className":7704,"ariaHidden":398},[397],[390,7706,7708,7711,7714,7717,7720],{"className":7707},[402],[390,7709],{"className":7710,"style":1573},[406],[390,7712,1512],{"className":7713},[411,970],[390,7715],{"className":7716,"style":1278},[516],[390,7718,1583],{"className":7719},[1282],[390,7721],{"className":7722,"style":1278},[516],[390,7724,7726,7729],{"className":7725},[402],[390,7727],{"className":7728,"style":407},[406],[390,7730,596],{"className":7731},[411]," times, building the tree bottom-up.",[1859,7734,7735,7736,7739,7740,7742],{},"Optimality follows the greedy template: an ",[385,7737,7738],{},"exchange argument"," shows the\nrarest symbols belong deepest (greedy choice), and ",[385,7741,3468],{},"\ncloses the induction.",[1859,7744,7745,7746,7785,7786,7810],{},"Running time is ",[390,7747,7749],{"className":7748},[393],[390,7750,7752],{"className":7751,"ariaHidden":398},[397],[390,7753,7755,7758,7761,7764,7767,7770,7776,7779,7782],{"className":7754},[402],[390,7756],{"className":7757,"style":443},[406],[390,7759,6993],{"className":7760,"style":6992},[411,970],[390,7762,1116],{"className":7763},[447],[390,7765,1512],{"className":7766},[411,970],[390,7768],{"className":7769,"style":517},[516],[390,7771,7773],{"className":7772},[452],[390,7774,461],{"className":7775,"style":460},[411,459],[390,7777],{"className":7778,"style":517},[516],[390,7780,1512],{"className":7781},[411,970],[390,7783,1123],{"className":7784},[524],", the cost of the heap operations, dropping to\n",[390,7787,7789],{"className":7788},[393],[390,7790,7792],{"className":7791,"ariaHidden":398},[397],[390,7793,7795,7798,7801,7804,7807],{"className":7794},[402],[390,7796],{"className":7797,"style":443},[406],[390,7799,6993],{"className":7800,"style":6992},[411,970],[390,7802,1116],{"className":7803},[447],[390,7805,1512],{"className":7806},[411,970],[390,7808,1123],{"className":7809},[524]," when frequencies are pre-sorted.",[7812,7813,7816,7821],"section",{"className":7814,"dataFootnotes":376},[7815],"footnotes",[603,7817,7820],{"className":7818,"id":594},[7819],"sr-only","Footnotes",[1856,7822,7823,7837,7849,7860],{},[1859,7824,7826,7829,7830],{"id":7825},"user-content-fn-skiena-huffman",[385,7827,7828],{},"Skiena",", §5 — Data Compression: Huffman's greedy construction of the optimal variable-length code for a given file. ",[590,7831,7836],{"href":7832,"ariaLabel":7833,"className":7834,"dataFootnoteBackref":376},"#user-content-fnref-skiena-huffman","Back to reference 1",[7835],"data-footnote-backref","↩",[1859,7838,7840,7843,7844],{"id":7839},"user-content-fn-clrs-prefix",[385,7841,7842],{},"CLRS",", Ch. 16 — Greedy Algorithms (§16.3): prefix-free codes and their representation as binary trees with symbols at the leaves. ",[590,7845,7836],{"href":7846,"ariaLabel":7847,"className":7848,"dataFootnoteBackref":376},"#user-content-fnref-clrs-prefix","Back to reference 2",[7835],[1859,7850,7852,7854,7855],{"id":7851},"user-content-fn-clrs-huffman",[385,7853,7842],{},", Ch. 16 — Greedy Algorithms (§16.3): the greedy rule of repeatedly merging the two least-frequent symbols, implemented with a min-priority queue. ",[590,7856,7836],{"href":7857,"ariaLabel":7858,"className":7859,"dataFootnoteBackref":376},"#user-content-fnref-clrs-huffman","Back to reference 3",[7835],[1859,7861,7863,7866,7867],{"id":7862},"user-content-fn-erickson-huffman",[385,7864,7865],{},"Erickson",", Ch. 4 — Greedy Algorithms (Huffman Codes): the optimality proof via greedy-choice exchange plus optimal substructure. ",[590,7868,7836],{"href":7869,"ariaLabel":7870,"className":7871,"dataFootnoteBackref":376},"#user-content-fnref-erickson-huffman","Back to reference 4",[7835],[7873,7874,7875],"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":7877},[7878,7879,7880,7881,7882,7886,7887,7888,7889],{"id":605,"depth":18,"text":606},{"id":949,"depth":18,"text":950},{"id":1599,"depth":18,"text":1600},{"id":1781,"depth":18,"text":1782},{"id":3453,"depth":18,"text":3454,"children":7883},[7884,7885],{"id":3480,"depth":24,"text":3481},{"id":5655,"depth":24,"text":5656},{"id":6956,"depth":18,"text":6957},{"id":7377,"depth":18,"text":7378},{"id":7514,"depth":18,"text":7515},{"id":594,"depth":18,"text":7820},"Suppose we want to store or transmit a file of text drawn from some alphabet of\nsymbols, letters being the obvious case. A fixed-length code assigns every\nsymbol a bit string of the same length: with 6 symbols we would spend 3 bits\neach (⌈log2​6⌉=3), regardless of how often each symbol appears. But\nreal text is lopsided. In English, e and t are everywhere while q and z\nare rare. It is wasteful to spend as many bits on z as on e.","md",{"moduleNumber":108,"lessonNumber":18,"order":7893},602,true,[7896,7900,7904,7907],{"title":7897,"slug":7898,"difficulty":7899},"Last Stone Weight","last-stone-weight","Easy",{"title":7901,"slug":7902,"difficulty":7903},"Minimum Cost to Connect Sticks","minimum-cost-to-connect-sticks","Medium",{"title":7905,"slug":7906,"difficulty":7903},"Reorganize String","reorganize-string",{"title":7908,"slug":7909,"difficulty":7910},"Minimum Cost to Merge Stones","minimum-cost-to-merge-stones","Hard","---\ntitle: Huffman Codes\nmodule: Greedy Algorithms\nmoduleNumber: 6\nlessonNumber: 2\norder: 602\nsummary: >-\n  Huffman coding is the greedy method's most beautiful application: it builds a\n  provably optimal prefix-free binary code by repeatedly merging the two least\n  frequent symbols. We develop prefix-free codes as binary trees, give the\n  algorithm with a priority queue, build a Huffman tree from example\n  frequencies, prove optimality with the same greedy-choice-plus-substructure\n  argument, and pin the running time at $O(n\\log n)$.\ntopics: [Greedy Algorithms]\nsources:\n  - book: CLRS\n    ref: \"Ch. 16 — Greedy Algorithms (Huffman Codes)\"\n  - book: Skiena\n    ref: \"§5 — Data Compression\"\n  - book: Erickson\n    ref: \"Ch. 4 — Greedy Algorithms (Huffman Codes)\"\npractice:\n  - title: 'Last Stone Weight'\n    slug: last-stone-weight\n    difficulty: Easy\n  - title: 'Minimum Cost to Connect Sticks'\n    slug: minimum-cost-to-connect-sticks\n    difficulty: Medium\n  - title: 'Reorganize String'\n    slug: reorganize-string\n    difficulty: Medium\n  - title: 'Minimum Cost to Merge Stones'\n    slug: minimum-cost-to-merge-stones\n    difficulty: Hard\n---\n\nSuppose we want to store or transmit a file of text drawn from some alphabet of\nsymbols, letters being the obvious case. A **fixed-length code** assigns every\nsymbol a bit string of the same length: with $6$ symbols we would spend $3$ bits\neach ($\\lceil \\log_2 6 \\rceil = 3$), regardless of how often each symbol appears. But\nreal text is lopsided. In English, `e` and `t` are everywhere while `q` and `z`\nare rare. It is wasteful to spend as many bits on `z` as on `e`.\n\nA **variable-length code** exploits this skew: give the frequent symbols _short_\ncodewords and the rare symbols _long_ ones, so the total bit count drops.\nHuffman's 1952 algorithm finds the variable-length code that compresses a given\nfile as much as any such code possibly can, and it does so with a beautifully\nsimple greedy rule.[^skiena-huffman] This lesson is the payoff of the [greedy\nmethod](\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method): a non-obvious algorithm, an\nelegant correctness proof, and a result used billions of times a day inside\nJPEG, MP3, gzip, and PNG.\n\n## Prefix-free codes\n\nVariable-length codes carry a hazard. If `e` is `0` and `t` is `01`, then the\nstream `001` is ambiguous (is it `e e t`? `e ?`?) because the codeword for `e`\nis a _prefix_ of the codeword for `t`. To decode unambiguously without separator\nsymbols, we insist on a **prefix-free code** (also called a _prefix code_): no\ncodeword is a prefix of any other.[^clrs-prefix]\n\nPrefix-freeness buys us instant, unambiguous decoding: read bits left to right,\nand the moment the bits so far match a codeword, that codeword is the _only_\npossible symbol, so emit it and start fresh. Remarkably, restricting to\nprefix-free codes costs nothing in compression: for any uniquely decodable code\nthere is a prefix-free code at least as good, so we lose no optimality by\nconsidering only these.\n\nEvery prefix-free code corresponds to a **binary tree**. Symbols sit at the\n_leaves_; the path from the root to a leaf spells its codeword, taking `0` for a\nleft edge and `1` for a right edge. Because symbols are only at leaves, no\ncodeword can be a prefix of another: a prefix would mean one symbol's leaf lies\non the path to another's, impossible when both are leaves. The **depth** of a\nleaf is its codeword's length.\n\n$$\n% caption: A prefix-free code as a binary tree. Symbols sit only at leaves; the root-to-leaf path spells the codeword ($0$ left, $1$ right). No codeword is a prefix of another because no leaf lies on the path to another.\n\\begin{tikzpicture}[level distance=11mm,\n  level 1\u002F.style={sibling distance=30mm},\n  level 2\u002F.style={sibling distance=16mm},\n  inner\u002F.style={draw, circle, minimum size=5mm, inner sep=0pt, fill=black!12},\n  leaf\u002F.style={draw, rounded corners, minimum size=7mm, fill=acc!18, font=\\small},\n  el\u002F.style={font=\\scriptsize, midway}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[inner] {}\n    child {node[leaf] {A} edge from parent node[el, left] {0}}\n    child {node[inner] {}\n      child {node[leaf] {B} edge from parent node[el, left] {0}}\n      child {node[inner] {}\n        child {node[leaf] {C} edge from parent node[el, left] {0}}\n        child {node[leaf] {D} edge from parent node[el, right] {1}}\n        edge from parent node[el, right] {1}}\n      edge from parent node[el, right] {1}};\n  \\node[font=\\footnotesize, align=left, anchor=west] at (2.6,-0.6)\n    {A $=0$\\\\ B $=10$\\\\ C $=110$\\\\ D $=111$};\n\\end{tikzpicture}\n$$\n\n## The compression problem\n\nLet the alphabet be $C$, and let symbol $c \\in C$ occur with frequency\n$c.\\mathit{freq}$ (its count, or its probability) in the file. In a code tree\n$T$, let $d_T(c)$ be the depth of $c$'s leaf, the number of bits in its\ncodeword. The total number of bits to encode the whole file is the **cost** of\nthe tree:\n\n$$\nB(T) \\;=\\; \\sum_{c \\in C} c.\\mathit{freq} \\cdot d_T(c).\n$$\n\n> **Input:** an alphabet $C$ with a frequency $c.\\mathit{freq}$ for each\n> $c \\in C$.\n> **Output:** a binary tree $T$ whose leaves are the symbols of $C$, minimizing\n> the cost $B(T)$.\n\nAn optimal code's tree is always **full** — every internal node has exactly two\nchildren. (A one-child node wastes a bit: promote its subtree and every codeword\nbeneath it shortens.) So with $n = \\abs{C}$ symbols, an optimal tree has $n$\nleaves and exactly $n - 1$ internal nodes.\n\n## Huffman's algorithm\n\nHuffman's greedy insight is to think about the tree _bottom-up_, and to ask:\nwhich two symbols belong **deepest** in the tree? Surely the two _least frequent_\nones, since they are the cheapest to bury: multiplying their long codewords by\nsmall frequencies costs little.[^clrs-huffman] So make the two rarest symbols siblings at the\nbottom, merge them into a single \"super-symbol\" whose frequency is their sum, and\n_repeat_ on the smaller alphabet. Each merge fuses two nodes into one, so after\n$n - 1$ merges a single tree remains.\n\nA [**min-priority queue**](\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort) keyed on\nfrequency makes \"the two least frequent\" cheap to extract.\n\n```algorithm\ncaption: $\\textsc{Huffman}(C)$ — build an optimal prefix-free code tree\nnumber: 1\n$n \\gets \\abs{C}$\n$Q \\gets$ a min-priority queue holding all symbols of $C$, keyed on $\\mathit{freq}$\nfor $i \\gets 1$ to $n - 1$ do\n  allocate a new internal node $z$\n  $z.\\mathit{left} \\gets x \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F rarest remaining\n  $z.\\mathit{right} \\gets y \\gets$ $\\textsc{Extract-Min}(Q)$ \u002F\u002F next rarest\n  $z.\\mathit{freq} \\gets x.\\mathit{freq} + y.\\mathit{freq}$\n  call $\\textsc{Insert}(Q, z)$ \u002F\u002F re-insert merged super-symbol\nreturn $\\textsc{Extract-Min}(Q)$ \u002F\u002F last node is the root\n```\n\nEach iteration removes two nodes and inserts one, shrinking the queue by one; the\nsingle survivor after $n - 1$ rounds is the root of the finished tree. Reading\nthe tree from the root gives every symbol's codeword.\n\n## Building a Huffman tree by hand\n\nTake a six-symbol alphabet with these frequencies (in thousands of occurrences),\nthe classic CLRS example:\n\n| Symbol | `a` | `b` | `c` | `d` | `e` | `f` |\n| --- | --- | --- | --- | --- | --- | --- |\n| Frequency | 45 | 13 | 12 | 16 | 9 | 5 |\n\nWe repeatedly merge the two smallest frequencies:\n\n1. Merge `f`$(5)$ and `e`$(9)$ → node $(14)$.\n2. Merge `c`$(12)$ and `b`$(13)$ → node $(25)$.\n3. Merge $(14)$ and `d`$(16)$ → node $(30)$.\n4. Merge $(25)$ and $(30)$ → node $(55)$.\n5. Merge `a`$(45)$ and $(55)$ → root $(100)$.\n\nWatching the priority queue evolve makes the bottom-up construction concrete:\neach step extracts the two smallest weights and re-inserts their sum, so the\nqueue loses one element per round until a single root survives.\n\n$$\n% caption: The five priority-queue merges that build the Huffman tree. Each step extracts the two least-frequent nodes and inserts their sum; the queue shrinks by one until a single root of weight $100$ remains.\n\\begin{tikzpicture}[font=\\small, yscale=0.9,\n  s\u002F.style={draw, circle, minimum size=6mm, inner sep=0pt, fill=acc!18}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[font=\\footnotesize] at (-0.4,5) {1.};\n  \\node[s] at (1.0,5) {5}; \\node at (1.7,5) {$+$}; \\node[s] at (2.4,5) {9};\n  \\node at (3.3,5) {$\\rightarrow$}; \\node[s, fill=acc!30] at (4.1,5) {14};\n  \\node[font=\\footnotesize, anchor=west] at (5.2,5) {queue: 12,13,16,45,{\\color{acc}14}};\n  \\node[font=\\footnotesize] at (-0.4,4) {2.};\n  \\node[s] at (1.0,4) {12}; \\node at (1.7,4) {$+$}; \\node[s] at (2.4,4) {13};\n  \\node at (3.3,4) {$\\rightarrow$}; \\node[s, fill=acc!30] at (4.1,4) {25};\n  \\node[font=\\footnotesize, anchor=west] at (5.2,4) {queue: 14,16,45,{\\color{acc}25}};\n  \\node[font=\\footnotesize] at (-0.4,3) {3.};\n  \\node[s] at (1.0,3) {14}; \\node at (1.7,3) {$+$}; \\node[s] at (2.4,3) {16};\n  \\node at (3.3,3) {$\\rightarrow$}; \\node[s, fill=acc!30] at (4.1,3) {30};\n  \\node[font=\\footnotesize, anchor=west] at (5.2,3) {queue: 25,45,{\\color{acc}30}};\n  \\node[font=\\footnotesize] at (-0.4,2) {4.};\n  \\node[s] at (1.0,2) {25}; \\node at (1.7,2) {$+$}; \\node[s] at (2.4,2) {30};\n  \\node at (3.3,2) {$\\rightarrow$}; \\node[s, fill=acc!30] at (4.1,2) {55};\n  \\node[font=\\footnotesize, anchor=west] at (5.2,2) {queue: 45,{\\color{acc}55}};\n  \\node[font=\\footnotesize] at (-0.4,1) {5.};\n  \\node[s] at (1.0,1) {45}; \\node at (1.7,1) {$+$}; \\node[s] at (2.4,1) {55};\n  \\node at (3.3,1) {$\\rightarrow$}; \\node[s, fill=acc!40] at (4.1,1) {100};\n  \\node[font=\\footnotesize, anchor=west] at (5.2,1) {root};\n\\end{tikzpicture}\n$$\n\nThe resulting tree, with left edges labeled `0` and right edges `1`, is:\n\n$$\n% caption: Huffman code tree for the six-symbol example with edges labeled $0$ and $1$.\n\\begin{tikzpicture}[level distance=12mm,\n  level 1\u002F.style={sibling distance=46mm},\n  level 2\u002F.style={sibling distance=23mm},\n  level 3\u002F.style={sibling distance=14mm},\n  inner\u002F.style={draw, circle, minimum size=8mm, font=\\small},\n  leaf\u002F.style={draw, rounded corners, minimum size=8mm, fill=acc!15, font=\\small},\n  edglbl\u002F.style={font=\\scriptsize, midway, fill=white, inner sep=1.5pt}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[inner] {100}\n    child {node[leaf] {a:45} edge from parent node[edglbl, left] {0}}\n    child {node[inner] {55}\n      child {node[inner] {25}\n        child {node[leaf] {c:12} edge from parent node[edglbl, left] {0}}\n        child {node[leaf] {b:13} edge from parent node[edglbl, right] {1}}\n        edge from parent node[edglbl, left] {0}}\n      child {node[inner] {30}\n        child {node[inner] {14}\n          child {node[leaf] {f:5} edge from parent node[edglbl, left] {0}}\n          child {node[leaf] {e:9} edge from parent node[edglbl, right] {1}}\n          edge from parent node[edglbl, left] {0}}\n        child {node[leaf] {d:16} edge from parent node[edglbl, right] {1}}\n        edge from parent node[edglbl, right] {1}}\n      edge from parent node[edglbl, right] {1}};\n\\end{tikzpicture}\n$$\n\nReading root-to-leaf gives the codewords:\n\n| Symbol | `a` | `b` | `c` | `d` | `e` | `f` |\n| --- | --- | --- | --- | --- | --- | --- |\n| Codeword | `0` | `101` | `100` | `111` | `1101` | `1100` |\n\nThe frequent `a` gets a single bit; the rare `e` and `f` get four. The cost is\n\n$$\nB(T) = 45\\cdot 1 + 13\\cdot 3 + 12\\cdot 3 + 16\\cdot 3 + 9\\cdot 4 + 5\\cdot 4 = 224\n$$\n\nthousand bits. A fixed-length $3$-bit code would spend\n$3 \\cdot (45+13+12+16+9+5) = 300$ thousand bits, so Huffman saves about $25\\%$, and\nno prefix-free code does better.\n\n## Why Huffman is optimal\n\nHuffman is a greedy algorithm, so its proof follows the template from the\nprevious lesson exactly: a **greedy-choice property** proved by an **exchange\nargument**, then **optimal substructure** to close the induction.[^erickson-huffman]\n\n### The greedy choice is safe\n\n> **Lemma (Greedy choice).** Let $x$ and $y$ be the two symbols of lowest\n> frequency in $C$. Then some optimal prefix-free code makes $x$ and $y$\n> siblings at maximum depth.\n\n> **Proof (exchange argument).** Let $T$ be any optimal tree. Let $a$ and $b$ be\n> two sibling leaves at the deepest level of $T$ (a full tree's deepest leaves come\n> in sibling pairs). Without loss of generality assume\n> $a.\\mathit{freq} \\le b.\\mathit{freq}$ and $x.\\mathit{freq} \\le y.\\mathit{freq}$.\n> Since $x$ and $y$ are globally least frequent,\n> $x.\\mathit{freq} \\le a.\\mathit{freq}$ and $y.\\mathit{freq} \\le b.\\mathit{freq}$.\n>\n> Form $T'$ by swapping $x$ with $a$, and $T''$ by then swapping $y$ with $b$. We\n> show no swap _increases_ the cost. Moving $x$ down to depth $d_T(a)$ and $a$ up to\n> depth $d_T(x)$ changes the cost by\n>\n> $$\n> B(T) - B(T') = \\big(a.\\mathit{freq} - x.\\mathit{freq}\\big)\\big(d_T(a) - d_T(x)\\big) \\ge 0,\n> $$\n>\n> because $a$ is at least as frequent as $x$ ($a.\\mathit{freq} - x.\\mathit{freq}\n> \\ge 0$) and $a$ is at least as deep as $x$ ($d_T(a) - d_T(x) \\ge 0$). So\n> $B(T') \\le B(T)$. The same argument gives $B(T'') \\le B(T')$. Since $T$ was\n> optimal, $T''$ is optimal too, and in $T''$ the symbols $x$ and $y$ are sibling\n> leaves at maximum depth. $\\blacksquare$\n\nThe intuition is the exchange argument in one sentence: _the rarest symbols\nbelong deepest, so pushing them down and pulling frequent symbols up can never\ncost more._\n\nThe two swaps are easiest to see side by side. In any optimal tree $T$ the deepest\nsibling pair holds some leaves $a, b$; the globally rarest symbols $x, y$ may sit\nhigher up. Exchanging $x$ with $a$ and $y$ with $b$ sends the rare symbols to the\nbottom and lifts the more frequent ones — and the cost only drops, because each\nmoved-down leaf is rarer and each moved-up leaf is more frequent.\n\n$$\n% caption: The greedy-choice exchange for Huffman. Left, an optimal tree $T$ with deepest siblings $a,b$ and the rarest symbols $x,y$ sitting higher. Right, after swapping $x\\leftrightarrow a$ and $y\\leftrightarrow b$ the rarest symbols are deepest; cost cannot rise since rarer leaves moved down and more frequent leaves moved up.\n\\begin{tikzpicture}[xscale=0.62, yscale=0.62, font=\\small,\n  inner\u002F.style={draw, circle, minimum size=4mm, inner sep=0pt, fill=black!12},\n  leaf\u002F.style={draw, rounded corners, minimum size=6mm, inner sep=1pt, fill=acc!15},\n  moved\u002F.style={draw=acc, very thick, rounded corners, minimum size=6mm, inner sep=1pt, fill=acc!15}]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\useasboundingbox (-0.8,-1.5) rectangle (12.0,4.4);\n  % ---------- left tree T (before) ----------\n  \\node[font=\\footnotesize] at (-0.2,4.0) {tree $T$};\n  \\node[inner] (r) at (1.3,3.4) {};\n  \\node[leaf] (x) at (0.0,2.0) {$x$};       % rare, sits shallow\n  \\node[inner] (m) at (2.6,2.0) {};\n  \\node[leaf] (y) at (1.6,0.6) {$y$};        % rare, sits shallow-ish\n  \\node[inner] (n) at (3.4,0.6) {};\n  \\node[leaf] (a) at (2.7,-0.8) {$a$};       % deepest sibling pair\n  \\node[leaf] (b) at (4.1,-0.8) {$b$};\n  \\draw (r)--(x); \\draw (r)--(m); \\draw (m)--(y); \\draw (m)--(n);\n  \\draw (n)--(a); \\draw (n)--(b);\n  % ---------- right tree T'' (after) ----------\n  \\begin{scope}[xshift=7.0cm]\n    \\node[font=\\footnotesize] at (-0.2,4.0) {tree $T''$};\n    \\node[inner] (r2) at (1.3,3.4) {};\n    \\node[leaf] (a2) at (0.0,2.0) {$a$};\n    \\node[inner] (m2) at (2.6,2.0) {};\n    \\node[leaf] (b2) at (1.6,0.6) {$b$};\n    \\node[inner] (n2) at (3.4,0.6) {};\n    \\node[moved] (x2) at (2.7,-0.8) {$x$};   % rarest now deepest\n    \\node[moved] (y2) at (4.1,-0.8) {$y$};\n    \\draw (r2)--(a2); \\draw (r2)--(m2); \\draw (m2)--(b2); \\draw (m2)--(n2);\n    \\draw (n2)--(x2); \\draw (n2)--(y2);\n  \\end{scope}\n  % swap arrow between panels\n  \\draw[->, red!75!black, very thick] (4.9,1.0) -- (6.3,1.0)\n    node[midway, above, font=\\footnotesize] {swap $x{\\leftrightarrow}a$,};\n  \\node[red!75!black, font=\\footnotesize] at (5.6,0.3) {$y{\\leftrightarrow}b$};\n\\end{tikzpicture}\n$$\n\n### Optimal substructure\n\n> **Lemma (Substructure).** Let $z$ be the super-symbol replacing siblings $x, y$,\n> with $z.\\mathit{freq} = x.\\mathit{freq} + y.\\mathit{freq}$, and let $C'$ be the\n> alphabet with $x, y$ replaced by $z$. Any optimal tree $T'$ for $C'$ extends to\n> an optimal tree $T$ for $C$ by replacing $z$'s leaf with an internal node whose\n> children are $x$ and $y$.\n\n> **Proof.** When the leaf $z$ at depth $d$ in $T'$ becomes an internal node with\n> children $x, y$ at depth $d+1$, the cost changes by a fixed amount independent of\n> the tree:\n>\n> $$\n> B(T) = B(T') + \\big(x.\\mathit{freq} + y.\\mathit{freq}\\big),\n> $$\n>\n> since $x$ and $y$ each sit one level below where $z$ sat, while $z$ itself\n> (weight $x.\\mathit{freq}+y.\\mathit{freq}$) leaves the sum. Now suppose, for\n> contradiction, that some tree $T^\\star$ for $C$ beats $T$. By the greedy-choice\n> lemma we may assume $x, y$ are siblings in $T^\\star$; merging them into a single\n> leaf $z$ yields a tree for $C'$ of cost\n> $B(T^\\star) - (x.\\mathit{freq}+y.\\mathit{freq}) \u003C B(T') $, contradicting the\n> optimality of $T'$. Hence $T$ is optimal. $\\blacksquare$\n\nTogether the two lemmas give the theorem by induction on $\\abs{C}$: the base case\nof one symbol is trivial, and each merge is both _safe_ (greedy choice) and\n_composable_ (substructure). **Huffman's algorithm produces an optimal\nprefix-free code.** $\\blacksquare$\n\n## Running time\n\nThe cost is dominated by the priority-queue operations. Building the initial\nmin-heap from $n$ symbols takes $O(n)$. The loop runs $n - 1$ times, and each\niteration does two $\\textsc{Extract-Min}$s and one **Insert**, each $O(\\log n)$ on a\nbinary heap. Hence\n\n$$\nT(n) = O(n) + (n-1)\\cdot O(\\log n) = O(n \\log n).\n$$\n\nIf the frequencies arrive already sorted, two simple FIFO queues replace the heap\n(one of original leaves, one of merged nodes, both kept in nondecreasing\nfrequency), and each \"extract two smallest\" is $O(1)$, giving an $O(n)$\nalgorithm. The $O(n\\log n)$ bound, like activity selection's, is really the cost\nof getting the symbols into sorted order.\n\n## Where Huffman lives and where it doesn't\n\nHuffman coding is optimal among codes that assign each symbol a _whole number_\nof bits independently. That last clause hides its one weakness: when a symbol's\nideal codeword length $\\log_2(1\u002Fp)$ is fractional (for a symbol of probability\n$0.9$, ideally $0.15$ bits), Huffman must round up to $1$ bit and loses ground.\n**Arithmetic coding** and **range coding** sidestep the whole-bit floor and can\nbeat Huffman on highly skewed sources, which is why modern compressors often\nprefer them. Still, Huffman's simplicity, speed, and provable optimality within\nits class keep it embedded in DEFLATE (gzip, PNG, ZIP), JPEG, and MP3 to this\nday. It remains the textbook proof that a greedy algorithm, properly justified,\ncan be exactly optimal, not merely a good heuristic.\n\n## Takeaways\n\n- A **prefix-free code** lets a stream decode unambiguously; it is exactly a\n  binary tree with symbols at the leaves, codeword length = leaf depth.\n- The goal is to minimize $B(T) = \\sum_c c.\\mathit{freq}\\cdot d_T(c)$; optimal\n  trees are **full**.\n- **Huffman's algorithm** greedily merges the two least-frequent nodes via a\n  min-priority queue, $n-1$ times, building the tree bottom-up.\n- Optimality follows the greedy template: an **exchange argument** shows the\n  rarest symbols belong deepest (greedy choice), and **optimal substructure**\n  closes the induction.\n- Running time is $O(n\\log n)$, the cost of the heap operations, dropping to\n  $O(n)$ when frequencies are pre-sorted.\n\n[^skiena-huffman]: **Skiena**, §5 — Data Compression: Huffman's greedy construction of the optimal variable-length code for a given file.\n[^clrs-prefix]: **CLRS**, Ch. 16 — Greedy Algorithms (§16.3): prefix-free codes and their representation as binary trees with symbols at the leaves.\n[^clrs-huffman]: **CLRS**, Ch. 16 — Greedy Algorithms (§16.3): the greedy rule of repeatedly merging the two least-frequent symbols, implemented with a min-priority queue.\n[^erickson-huffman]: **Erickson**, Ch. 4 — Greedy Algorithms (Huffman Codes): the optimality proof via greedy-choice exchange plus optimal substructure.\n",{"text":7913,"minutes":7914,"time":7915,"words":7916},"8 min read",7.995,479700,1599,{"title":221,"description":7890},[7919,7921,7923],{"book":7842,"ref":7920},"Ch. 16 — Greedy Algorithms (Huffman Codes)",{"book":7828,"ref":7922},"§5 — Data Compression",{"book":7865,"ref":7924},"Ch. 4 — Greedy Algorithms (Huffman Codes)","available","01.algorithms\u002F07.greedy\u002F03.huffman-codes",[206],"Yv6Gme0JP5KvM3cxtX-bJX1R6YwtuX07qKhbpBITkMk",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":7930,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":7931,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":7932,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":7933,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":7934,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":7935,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":7936,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":7937,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":7938,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":7939,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":7940,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":7941,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":7942,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":7943,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":7944,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":7945,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":7946,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":7947,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":7948,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":7949,"\u002Falgorithms\u002Fsequences\u002Ftries":7950,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":7951,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":7952,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":7953,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":7954,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":7955,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":7956,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":7957,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":7958,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":7959,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":7960,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":7961,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":7916,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":7962,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":7963,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":7964,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":7965,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":7966,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":7967,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":7968,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":7969,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":7970,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":7971,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":7972,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":7973,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":7974,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":7975,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":7946,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":7976,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":7977,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":7978,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":7979,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":7916,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":7980,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":7981,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":7942,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":7982,"\u002Falgorithms":7983,"\u002Ftheory-of-computation":7984,"\u002Fcomputer-architecture":7984,"\u002Fphysical-computing":7984,"\u002Fdatabases":7984,"\u002Fdeep-learning":7984},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1465,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1568,1451,1291,1543,1883,1443,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":7986,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":7987,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":7988,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":7989,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":7990,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":7991,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":7992,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":7993,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":7994,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":7995,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":7996,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":7997,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":7998,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":7999,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":8000,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":8001,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":8002,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":8003,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":8004,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":8005,"\u002Falgorithms\u002Fsequences\u002Ftries":8006,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":8007,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":8008,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":8009,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":8010,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":8011,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":8012,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":8013,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":8014,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":8015,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":8016,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":8017,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":8018,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":8019,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":8020,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":8021,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":8022,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":8023,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":8024,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":8025,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":8026,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":8027,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":8028,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":8029,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":8030,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":8031,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":8032,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":8033,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":8034,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":8035,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":8036,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":8037,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":8038,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":8039,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":8040,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":8041,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":8042,"\u002Falgorithms":8043,"\u002Ftheory-of-computation":8046,"\u002Fcomputer-architecture":8049,"\u002Fphysical-computing":8052,"\u002Fdatabases":8055,"\u002Fdeep-learning":8058},{"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":8044,"title":8045,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":8047,"title":8048,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":8050,"title":8051,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":8053,"title":8054,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":8056,"title":8057,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":8059,"title":8060,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781526657654]