diff --git a/exercise/1. Introduction Julia/Julia Installation.html b/exercise/1. Introduction Julia/Julia Installation.html new file mode 100644 index 0000000..2e267bb --- /dev/null +++ b/exercise/1. Introduction Julia/Julia Installation.html @@ -0,0 +1,75 @@ + + + + + + ⚑ Pluto.jl ⚑ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/exercise/1. Introduction Julia/Julia Intro - exercise.jl b/exercise/1. Introduction Julia/Julia Intro - exercise.jl new file mode 100644 index 0000000..f73c8eb --- /dev/null +++ b/exercise/1. Introduction Julia/Julia Intro - exercise.jl @@ -0,0 +1,1755 @@ +### A Pluto.jl notebook ### +# v0.19.14 + +using Markdown +using InteractiveUtils + +# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error). +macro bind(def, element) + quote + local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end + local el = $(esc(element)) + global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el) + el + end +end + +# ╔═║ 96ec00fc-6f14-11eb-329e-19e4835643db +using PlutoUI; PlutoUI.TableOfContents(depth=2) + +# ╔═║ fec108ca-6f97-11eb-06d9-6fe1646f8b98 +using Plots + +# ╔═║ 349d7534-6212-11eb-2bc5-db5be39b6bb6 +md""" +# Numerical Methods of Medical Imaging - Exercise 1 + +[Institute for Biomedical Imaging](https://www.tuhh.de/ibi/home.html), Hamburg University of Technology + +* πŸ‘¨β€πŸ« Prof. Dr. Tobias Knopp +* πŸ‘¨β€πŸ« Dr. Martin MΓΆddel + +###### Lab Course & Exercises + +Exercises will cover numerical problems related to the lecture. It will be your task to solve these problems with the methods provided within the scope of the lecture and lab course. The lab course aims to teach you some core programming paradigms related to medical imaging and scientific programming. +""" + +# ╔═║ 6abc4d6a-da75-42bf-a62a-b98bb69585aa +md""" +# Getting Started with Julia + +* πŸ“… Due date: 01.11.2022, 12 a.m. +* You can earn 0.5 point for exercise 1 to 10 and 1 point for the last exercise (6 points in total). + +![](https://imgs.xkcd.com/comics/automation.png) + +"Automation" taken from [xkcd](https://xkcd.com/1319/) is licensed under [CC](https://en.wikipedia.org/wiki/en:Creative_Commons) [BY-NC 2.5](https://creativecommons.org/licenses/by-nc/2.5/) license. +""" + +# ╔═║ 237ef27e-6266-11eb-3cf4-1b2223eabfd9 +md" +## 1. Assignment Statements + +An assignment statement creates a new variable and assigns a value to it. E.g. +" + +# ╔═║ 6c060eec-6266-11eb-0b23-e5be08d78823 +text = "Hello World!" + +# ╔═║ 830c9ed0-6266-11eb-27ba-07773c842fed +md""" +assigns `"Hello World!"` to the variable `text`. + +Variable names can be as long as you like. They can contain almost all Unicode characters, but must not begin with a number. It is allowed to use upper case letters, but it is common to use only lower case letters for variable names. +""" + +# ╔═║ f4270146-6216-11eb-391e-01a476fcfccd +md" +###### πŸŽ“ a) +**Assign the number `10` to the Variable `n`.** +" + +# ╔═║ b5fff126-6215-11eb-1018-bd2e4f638f65 +n = 10 + +# ╔═║ 3249157e-6267-11eb-3dca-8949d7c0e3c9 +md" +###### πŸŽ“ b) + +Unicode characters can be entered using the tab completion of $\mathrm{\LaTeX}$-like abbreviations. + +**Assign a value to the Unicode character for the small alpha.** +" + +# ╔═║ ce1d05da-6267-11eb-136c-23c5c54a1559 +Ξ± = 3 + +# ╔═║ 1695a810-6268-11eb-3932-fb8885097f70 +md""" +## 2. Arithmetic Operators + +Arithmetic operations such as addition, subtraction, multiplication, division, and exponentiation can be performed by the operators `+`, `-`, `*`, `/`, and `^`, respectively. E.g. +""" + +# ╔═║ 77cefbd4-662e-11eb-1b1d-91da61cc3823 +a1 = 2+2 + +# ╔═║ 88776120-662e-11eb-1542-fd26e4f126b1 +md""" +stores the result of $2+2$ in the variable `a1`. A full list of supported operations can be found [here](https://docs.julialang.org/en/v1/manual/mathematical-operations/). +""" + +# ╔═║ 874a1a5c-6632-11eb-2705-e914f01b9762 +md""" +For mathematical operators, Julia follows mathematical conventions. Therefore, the following two expressions are equivalent. +""" + +# ╔═║ 812bbd7e-6632-11eb-29f8-3f48329f0ac9 +2*a1 + +# ╔═║ aeaa97ae-6632-11eb-0ea2-7febd8b3e965 +2a1 + +# ╔═║ b0d35a9a-662e-11eb-34f5-c9a5fd9bb9a6 +md" +###### πŸŽ“ a) + +**Calculate $2^8$ with Julia and store the result in the variable `a2`.** +" + +# ╔═║ d285737a-662f-11eb-390e-1d1e2437de71 +a2 = 2^8 + +# ╔═║ 5d04cbea-6630-11eb-3bee-c182aa912653 +md" +###### πŸŽ“ b) + +When an expression contains more than one operator, the order of evaluation depends on the operator precedence. + +**Make use of parentheses `()` to group addition and exponentiation correctly to calculate $2^{4+4}$ with Julia and store the result in the variable `a3`.** +" + +# ╔═║ 0ae0cf56-6632-11eb-262a-191ea74ec517 +a3 = 2^(4+4) + +# ╔═║ 0fe8c31e-663a-11eb-1acb-17d3d7615e64 +md""" +## 3. Functions + +In Julia, a function is an object that maps a tuple of argument values to a return value. They are not pure mathematical functions, because they can alter and be affected by the global state of the program. + +The basic syntax for defining functions in Julia is: +""" + +# ╔═║ 478dde3c-663a-11eb-3244-e7449c93b3a5 +function f(x,y) + return x + y +end + +# ╔═║ 68f2b1b0-663a-11eb-1b6d-b176d905f65b +md" +###### πŸŽ“ a) + +**Write a function `double(x)` that multiplies its input argument by 2.** +" + +# ╔═║ 8d509116-663b-11eb-0e98-dd27598740fe +function double(x) + return 2 * x +end + +# ╔═║ 06c9bcec-663d-11eb-3062-85c0983a79eb +md""" +## 4. Conditional Evaluation + +Conditional evaluation allows portions of code to be evaluated or not evaluated depending on the value of a boolean expression. + +###### πŸŽ“ a) + +Read the julia documentation on [Conditional Evaluation](https://docs.julialang.org/en/v1/manual/control-flow/#man-conditional-evaluation). + +**Define the Heaviside step function `heaviside(x)`, whose value is `0` for negative arguments and `1` for non-negative arguments.** +""" + +# ╔═║ 9fd96950-6651-11eb-25f7-c964ab504b4a +function heaviside(x) + return x < 0 ? 0 : 1 +end + +# ╔═║ 34824462-6654-11eb-2b38-19d14aa309af +md""" +## 5. Iteration + +There are two constructs for repeated evaluation of expressions: the while loop and the for loop. Both are documented [here](https://docs.julialang.org/en/v1/manual/control-flow/#man-loops). + +###### πŸŽ“ a) + +A prime number is only evenly divisible by itself and 1. + +**Implement a function `isprime(x)` that returns `true` for any prime input and `false` else.** +""" + +# ╔═║ 6895356c-6655-11eb-3849-b3fa387df754 +function isprime(x) + if x < 2 return false end + for i in 2:trunc(Int, sqrt(x)) + if x % i == 0 return false end + end + return true +end + +# ╔═║ 9687bc24-666c-11eb-3b1e-edb5c448bad8 +md""" +If you have trouble figuring out a solution you may find this hint helpful. However, first try solving the problem on your own! +""" + +# ╔═║ 9d3e9a92-6469-11eb-2952-b37367644c48 +md""" +## 6. Primitive Numeric Types + +In the documentation on [Integers and Floating-Point Numbers](https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Integers-and-Floating-Point-Numbers) we find: + +> Julia provides a broad range of primitive numeric types, and a full complement of arithmetic and bitwise operators as well as standard mathematical functions are defined over them. These map directly onto numeric types and operations that are natively supported on modern computers, thus allowing Julia to take full advantage of computational resources. + +You can inspect the type of any variable or value by using the `typeof` function +""" + +# ╔═║ f3cd5320-66d6-11eb-191c-4b4d8cba940d +typeof(1) + +# ╔═║ f5805956-66d6-11eb-04e8-b1faae8f0d3c +typeof(1.0) + +# ╔═║ c72359f4-66d7-11eb-395f-b3a1983a6eea +typeof(1+1.0) + +# ╔═║ bdea6774-66d7-11eb-1c62-8f0e935f98ef +md""" +###### πŸŽ“ a) +Take a look into the documentation and assign an 8-bit unsigned integer of any value to the variable `m`. +""" + +# ╔═║ fb73ea0c-66d7-11eb-001c-23033aee228a +m = UInt8(4) + +# ╔═║ 2b99da2c-666d-11eb-1c64-337654a9d8f2 +md""" +## 7. Ranges + +In Julia one can use range objects to represent a sequence of numbers. These can then be used to iterate through a loop. E.g. +""" + +# ╔═║ d39fbca0-66db-11eb-1aae-7b29f559cb01 +for i in 1:5 + continue # this does nothing and skips to the next iteration +end + +# ╔═║ 1bcd317c-66e8-11eb-10df-c132d5f79155 +md""" +###### πŸŽ“ a) +**Use a range object to sum up all values from `1` to `n` in the function `sumup(n)`.** +""" + +# ╔═║ 66c4f3fc-66db-11eb-0927-ebe1d40eeb3b +function sumup(n) + return sum(1:n) +end + +# ╔═║ 575d9e52-6468-11eb-2f95-63cd3920f91a +md""" +## 8. Vectors + +Often we want to store and process multiple values. In Julia one can combine a a sequence of values of any type into a vector. + +There are several ways to create a new array, the simplest is to enclose the elements in square brackets. +""" + +# ╔═║ 2e6c3c30-66e6-11eb-10f0-ddaa1752cff9 +["first element",2,3.0] + +# ╔═║ d701d778-66e7-11eb-16c2-ab49fc06e992 +md""" +###### πŸŽ“ a) +**Create a vector `v` containing the numbers 1 to 10 in ascending order.** +""" + +# ╔═║ 055baa32-66e7-11eb-20fc-575565bda51b +v = collect(1:10) + +# ╔═║ 91c222ea-66e6-11eb-28ce-c1f1424525c8 +md""" +## 9. Comprehensions + +[Comprehensions](https://docs.julialang.org/en/v1/manual/arrays/#man-comprehensions) provide a general and powerful way to construct arrays. Comprehension syntax is similar to set construction notation in mathematics. +""" + +# ╔═║ b5db566a-66e6-11eb-35fb-17d3fc4e258c +A = [Ο€*i for i in 1:5] + +# ╔═║ a44eb7ea-66e9-11eb-10fa-2b0936b9f489 +md""" +###### πŸŽ“ a) +**Create a vector `w` containing the numbers 2,4,6,... to 1000 in ascending order.** +""" + +# ╔═║ d8f306ca-66e9-11eb-3728-156d0328250b +w = [2*i for i in 1:500] + +# ╔═║ 673cc322-666e-11eb-107f-2b9bd6826ad5 +md""" +## 10. Broadcasting + +[Broadcasting](https://docs.julialang.org/en/v1/manual/arrays/#Broadcasting) enables the convenient vectorization of mathematical and other operations. To this end Julia provides the dot syntax, e.g. +""" + +# ╔═║ 1bf921be-66eb-11eb-089a-97dfe9418b32 +sin.(A) + +# ╔═║ 455d0b7c-66eb-11eb-3167-4b204ac741a5 +md""" +for element wise operations over arrays +""" + +# ╔═║ 529a7324-66eb-11eb-0c1f-c37639e37a6e +md""" +###### πŸŽ“ a) +**Use the dot syntax to divide all elements of `A` by Ο€ and store the result in the variable `B`.** +""" + +# ╔═║ a87e36c4-66eb-11eb-223e-a1b077dca672 +B = A./Ο€ + +# ╔═║ 0aa99f86-6f97-11eb-2141-2d35c3e0857d +md""" +## 11. Julia Eco System + +Julia has a wide ecosystem of packages, maintained by a wide variety of people. In the best of academic ideals, Julia users from across the world come together to create mutually compatible and supporting packages for their domains. To manage these collections of packages they often use GitHub organizations and various other communication channels, most also have channels on the main Julia Slack channel, and sub-forums on the main Julia Discourse forum (see [Community](https://discourse.julialang.org/)). + +###### Pkg +Pkg is Julia's built-in package manager and handles operations such as installing, updating and removing packages. + +Before we can start we need to add the packages we want to use. This can be done using the package manager `Pkg`. However Pluto has it's own build-in package manager and Pkg is not needed anymore if one works inside Pluto notebooks. +""" + +# ╔═║ f77039b0-6f97-11eb-177b-2730efcb4dcd +md""" +We will focus on how to make use of the `Plots` package. + +We can start `using` methods and objects exported by packages by +""" + +# ╔═║ 1559f57e-6f98-11eb-3539-1b1ae82c439b +md""" +## 12. Plotting + +[Plots](https://github.com/JuliaPlots/Plots.jl) is a visualization interface and tool set. It sits above other backends, like GR, PyPlot, PGFPlotsX, or Plotly, connecting commands with implementation. If one backend does not support your desired features or make the right trade-offs, you can just switch to another backend with one command. No need to change your code. No need to learn a new syntax. + +The goals with the package are: + +* Powerful. Do more with less. Complex visualizations become easy. +* Intuitive. Start generating plots without reading volumes of documentation. Commands should "just work." +* Concise. Less code means fewer mistakes and more efficient development and analysis. +* Consistent. Don't commit to one graphics package. Use the same code and access the strengths of all backends. + +A `Plots` cheat sheet is available [here](https://github.com/sswatson/cheatsheets/blob/master/plotsjl-cheatsheet.pdf). +""" + +# ╔═║ 36e6783c-6f98-11eb-0b09-db56907e370d +md""" +Data is supplied to the `plot` function as arguments (`x`, or `x`,`y`, or `x`,`y`,`z`). To this end let us consider the following arguments +""" + +# ╔═║ 3f4422ce-6f98-11eb-111f-4d1624a326c7 +begin + x = range(0,2Ο€,length=100) + y = map(sin,x) + z = map(cos,x) +end; + +# ╔═║ 44ee1586-6f98-11eb-3452-f7db9e3738ad +md""" +###### πŸŽ“ a) +**Call the plot function with a single argument. Try out all arguments `x`, `y`, and `z`.** +""" + +# ╔═║ 4a8f3088-6f98-11eb-1d0e-4b1ba2e676ae +plot(z) + +# ╔═║ 50cc4f32-6f98-11eb-25a4-ebaf581955ea +md""" +###### πŸŽ“ b) +**Call the plot function with two argument. Try out different combinations of arguments.** +""" + +# ╔═║ 56177258-6f98-11eb-276f-7d8053bdcb86 +plot(y,z) + +# ╔═║ 5733a026-6f98-11eb-1b50-c75f87fbabe5 +md""" +###### πŸŽ“ c) +**Call the plot function with all three arguments. What happens if you exchange their order?** +""" + +# ╔═║ 5d770eb4-6f98-11eb-3206-8d26f2717981 +plot(x,y,z) + +# ╔═║ 6824d1f2-6f98-11eb-12f1-adf1271af917 +md""" +Arguments are interpreted flexible. We have already seen that we can plot `x`, which is no `Vector`, but an iterable object. + +###### πŸŽ“ d) +**Plot the `exp` function over the range given by `x` by passing `x` and `exp` directly.** +""" + +# ╔═║ 6debc444-6f98-11eb-3c9e-4dc533fe13ec +plot(x, exp) + +# ╔═║ 77d17b00-6f98-11eb-37ad-dd347db13fb3 +md""" +Data can be plotted together as series, as is the default. There are different series types available to change the way the data is visualized. + +###### πŸŽ“ e) +**This can be achieved by using the `seriestype` keyword argument. Take your time and explore the different `seriestype` options listed.** +""" + +# ╔═║ 8b852fd4-6f98-11eb-1b3a-7ff47c51e99e +@bind seriestype1 Select(["line" => :line,"path" => :path, "steppre" => :steppre, "steppost" => :steppost, "sticks" => :sticks, "scatter" => :scatter]) + +# ╔═║ 8f566768-6f98-11eb-20ae-45d6f39cd210 +plot(y,z, seriestype=seriestype1, color = :green) + +# ╔═║ 961e9cd2-6f98-11eb-362c-517edab85a8c +md""" +We can modify [attributes](https://docs.juliaplots.org/latest/attributes/) of a plot by passing keyword arguments (for example, `plot(y, color = :blue)`). + +###### πŸŽ“ f) +**Recreate the plot above with a label using the keyword `label`. Pass the `String` `"circle"` to the argument.** +""" + +# ╔═║ a32f2a4a-6f98-11eb-18f9-efb51aac288c +plot(y,z, label="circle") + +# ╔═║ acc530cc-6f98-11eb-330e-077fcaf5bd62 +md""" +In most cases, passing a (`n` Γ— `m`) matrix of values (numbers, etc) will create `m` series, each with `n` data points. + +###### πŸŽ“ g) +**Take your time and explore how the different options affect the plot.** +""" + +# ╔═║ e5ca1bf8-6f98-11eb-1bd9-6f2f1fbe55c9 +# 100 data points in 4 series +yseries = [sin.(x) cos.(x) 2sin.(x) 2cos.(x)] + +# ╔═║ eba05204-6f98-11eb-1e7c-4f7b49962f23 +@bind seriestype2 Select(["line" => :line,"path" => :path, "steppre" => :steppre, "steppost" => :steppost, "sticks" => :sticks, "scatter" => :scatter]) + +# ╔═║ f22b7874-6f98-11eb-0417-1de0d171c4ad +plot(yseries,z, seriestype=seriestype2) + +# ╔═║ f8265ba4-6f98-11eb-3938-0b38b2b93285 +md""" +We can pass attributes for each element in a series by passing a row vector + +###### πŸŽ“ h) +**Recreate the plot above with labels `["circle" "ellipse" "line1" "line2"]`.** +""" + +# ╔═║ fd8522ec-6f98-11eb-0a3c-01a91ee48de9 +plot(yseries,z, seriestype=seriestype2, label = ["circle" "ellipse" "line1" "line2"]) + +# ╔═║ 0cce95b2-6f99-11eb-1161-1d446c3bbe44 +md""" +Using Plots we can also visualize rectangular data arrays using the heatmap function. This could be a map of temperatures, or population density for example. + +Here a simple academic example of such an array +""" + +# ╔═║ 1a12d5a8-6f99-11eb-0e46-1529f881a3b0 +begin + function pyramid(x,y) + u = abs(x) + v = abs(y) + return (1-max(u,v)) + end + + xs = -1.95:0.1:1.95 + ys = -1.95:0.1:1.95 + zs = [pyramid(x,y) for x in xs, y in ys] +end; + +# ╔═║ 214ce458-6f99-11eb-0963-7965b5fba93a +md""" +and its visualization +""" + +# ╔═║ 29efc990-6f99-11eb-0633-63fb74c5bebf +heatmap(xs,ys,zs) + +# ╔═║ 2f3b762e-6f99-11eb-12f0-2d42ed8237e0 +md""" +Colorizing images helps the human visual system pick out detail, estimate quantitative values, and notice patterns in data in a more intuitive fashion. However, the choice of the color map can have a significant impact on a given task. + +To this end `Plots` has a very large number of color maps available. A complete list of readily available schemes can be found [here](https://docs.juliaplots.org/latest/generated/colorschemes/). + +###### πŸŽ“ i) +**Explore the different color maps. Do they influence your perception of the linear rise flanks of the pyramid?** +""" + +# ╔═║ 372fa56c-6f99-11eb-115d-275699f1c05c +begin + colors = Dict("viridis" => :viridis, "blackbody" => :blackbody, "temperaturemap" => :temperaturemap, "thermometer" => :thermometer, "turbo" => :turbo, "vangogh" => :vangogh, "vermeer" => :vermeer, "pastel" => :pastel, "coffee" => :coffee); + @bind cname Select(collect(keys(colors))) +end + +# ╔═║ 473b6dec-6f99-11eb-04f0-07006f1996ba +heatmap(xs, ys, zs, + c = colors[cname], + xlims = (-2,2), + ylims = (-2,2), + aspect_ratio = 1, + xlabel = "x", + ylabel = "y" +) + +# ╔═║ bf493588-6f14-11eb-3ddf-b7ce036aff36 +begin + hint(text) = Markdown.MD(Markdown.Admonition("hint", "Hint", [text])) + not_defined(variable_name) = Markdown.MD(Markdown.Admonition("danger", "Oh, oh! 😱", [md"Variable **$(Markdown.Code(string(variable_name)))** is not defined. You should probably do something about this."])) + still_missing(text=md"Replace `missing` with your solution.") = Markdown.MD(Markdown.Admonition("warning", "Let's go!", [text])) + keep_working(text=md"The answer is not quite right.") = Markdown.MD(Markdown.Admonition("danger", "Keep working on it!", [text])); + yays = [md"Great! πŸ₯³", md"Correct! πŸ‘", md"Tada! πŸŽ‰"] + correct(text=md"$(rand(yays)) Let's move on to the next task.") = Markdown.MD(Markdown.Admonition("correct", "Got it!", [text])) +end; + +# ╔═║ b9dbaf62-6215-11eb-3a7d-0b882b1a10b0 +if !@isdefined(n) + not_defined(:n) +elseif ismissing(n) + still_missing() +elseif !(n isa Number) + keep_working(md"`n` has not been assigned a number.") +elseif n != 10 + keep_working(md"`n` has been assigned the wrong value.") +else + correct() +end + +# ╔═║ cf933c04-6267-11eb-3317-ed1a42e8c64e +if !@isdefined(Ξ±) + not_defined(:Ξ±) +else + correct() +end + +# ╔═║ de2a045c-662f-11eb-1d80-65fe7d8e0db3 +if !@isdefined(a2) + not_defined(:a2) +elseif ismissing(a2) + still_missing() +elseif !(a2 isa Number) + keep_working(md"`a2` has not been assigned a number.") +elseif a2 != 256 + keep_working(md"`a2` has been assigned the wrong value.") +else + correct() +end + +# ╔═║ f279b1ee-6631-11eb-0809-bf0699c636f2 +if !@isdefined(a3) + not_defined(:a3) +elseif ismissing(a3) + still_missing() +elseif !(a3 isa Number) + keep_working(md"`a3` has not been assigned a number.") +elseif a3 != 256 + keep_working(md"`a3` has been assigned the wrong value.") +else + correct() +end + +# ╔═║ bb8694b8-663b-11eb-03a1-49713346bdf3 +let x = rand() + if !@isdefined(double) + not_defined(:double) + elseif !hasmethod(double,Tuple{Int}) + keep_working(md"No method `double` with a single input argument defined.") + elseif ismissing(double(0)) + still_missing() + elseif double(0) !=0 || double(x) != 2x + keep_working(md"`double(x)` does not return twice its value.") + else + correct() + end +end + +# ╔═║ de2903cc-6652-11eb-30c3-7114b15fa6e1 +if !@isdefined(heaviside) + not_defined(:heaviside) +elseif ismissing(heaviside(0)) + still_missing() +elseif heaviside(0) !=1 + keep_working(md"`heaviside(0)` does not return 1.") +elseif heaviside(-1) != 0 + keep_working(md"`heaviside(-1)` does not return 0") +elseif heaviside(1) != 1 + keep_working(md"`heaviside(0)` does not return 1.") +else + correct() +end + +# ╔═║ 6b9a4b64-6656-11eb-10ce-7b4a8b3cd6a4 +if !@isdefined(isprime) + not_defined(:isprime) +elseif ismissing(isprime(1)) + still_missing() +elseif typeof(isprime(1)) != Bool + keep_working(md"`isprime(1)` does return neither `true` or `false`.") +elseif isprime(1) + keep_working(md"`isprime(1)` does not return `false`.") +elseif !isprime(2) + keep_working(md"`isprime(2)` does not return `true`.") +elseif !isprime(2) + keep_working(md"`isprime(3)` does not return `true`.") +elseif isprime(4) + keep_working(md"`isprime(4)` does not return `false`.") +elseif !isprime(999331) + keep_working(md"`isprime(999331)` does not return `true`.") +else + correct() +end + +# ╔═║ a4a9afe4-6656-11eb-0664-83cb32ce934b +hint(md"Take a look at the documentations of the functions `rem` and `sqrt`. They might be helpful.") + +# ╔═║ 07491ca8-66d8-11eb-3304-99f911b4bd1d +if !@isdefined(m) + not_defined(:m) +elseif ismissing(m) + still_missing() +elseif !(m isa UInt8) + keep_working(md"`m` is not assigned a 8-bit unsigned integer.") +else + correct() +end + +# ╔═║ 2c63db0a-66dc-11eb-1a45-7902d591c3e1 +if !@isdefined(sumup) + not_defined(:sumup) +elseif ismissing(sumup(0)) + still_missing() +elseif sumup(0) != 0 + keep_working(md"`sumup(0)` is expected to return 0.") +elseif sumup(100) != 5050 + keep_working(md"`sumup(100)` is expected to return 5050.") +else + correct() +end + +# ╔═║ 6a3905f4-66e6-11eb-0607-5534821caee6 +if !@isdefined(v) + not_defined(:v) +elseif ismissing(v) + still_missing() +elseif !(typeof(v) <: AbstractVector) + keep_working(md"`v` is no vector.") +elseif diff(v) != ones(9) || v[1] != 1 + keep_working(md"`v` does not seem to contain the numbers 1 to 10.") +else + correct() +end + +# ╔═║ 2561d38a-66ea-11eb-10ab-27db1a87970b +if !@isdefined(w) + not_defined(:w) +elseif ismissing(w) + still_missing() +elseif !(typeof(w) <: AbstractVector) + keep_working(md"`w` is no vector.") +elseif diff(w) != 2*ones(499) || w[1] != 2 + keep_working(md"`w` does not seem to contain the numbers 2,4,6,... to 1000.") +else + correct() +end + +# ╔═║ b135affc-66eb-11eb-188b-a32ef1478ee6 +if !@isdefined(B) + not_defined(:B) +elseif ismissing(B) + still_missing() +elseif !(typeof(B) <: AbstractVector) + keep_working(md"`B` is no vector.") +elseif diff(B) != ones(4) || B[1] != 1 + keep_working(md"`B` is expected to contain 1,2,3,4,5.") +else + correct() +end + +# ╔═║ 00000000-0000-0000-0000-000000000001 +PLUTO_PROJECT_TOML_CONTENTS = """ +[deps] +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" + +[compat] +Plots = "~1.35.2" +PlutoUI = "~0.7.43" +""" + +# ╔═║ 00000000-0000-0000-0000-000000000002 +PLUTO_MANIFEST_TOML_CONTENTS = """ +# This file is machine-generated - editing it directly is not advised + +[[AbstractPlutoDingetjes]] +deps = ["Pkg"] +git-tree-sha1 = "8eaf9f1b4921132a4cff3f36a1d9ba923b14a481" +uuid = "6e696c72-6542-2067-7265-42206c756150" +version = "1.1.4" + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BitFlags]] +git-tree-sha1 = "84259bb6172806304b9101094a7cc4bc6f56dbc6" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.5" + +[[Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+0" + +[[Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.1+1" + +[[ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "e7ff6cadf743c098e08fca25c91103ee4303c9bb" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.15.6" + +[[ChangesOfVariables]] +deps = ["ChainRulesCore", "LinearAlgebra", "Test"] +git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" +uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" +version = "0.1.4" + +[[CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.0" + +[[ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random"] +git-tree-sha1 = "1fd869cc3875b57347f7027521f561cf46d1fcd8" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.19.0" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.4" + +[[ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] +git-tree-sha1 = "d08c20eef1f2cbc6e60fd3612ac4340b89fea322" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.9.9" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.8" + +[[Compat]] +deps = ["Dates", "LinearAlgebra", "UUIDs"] +git-tree-sha1 = "5856d3031cdb1f3b2b6340dfdc66b6d9a149a374" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.2.0" + +[[CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "0.5.2+0" + +[[Contour]] +git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.2" + +[[DataAPI]] +git-tree-sha1 = "46d2680e618f8abd007bce0c3026cb0c4a8f2032" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.12.0" + +[[DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.13" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "5158c2b41018c5f7eb1470d558127ac274eca0c9" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.1" + +[[Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.4.8+0" + +[[FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.1" + +[[FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.2+2" + +[[FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.93+0" + +[[Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.10.4+0" + +[[FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.10+0" + +[[GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.8+0" + +[[GR]] +deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] +git-tree-sha1 = "a9ec6a35bc5ddc3aeb8938f800dc599e652d0029" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.69.3" + +[[GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "bc9f7725571ddb4ab2c4bc74fa397c1c5ad08943" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.69.1+0" + +[[Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "fb83fbe02fe57f2c068013aa94bcdf6760d3a7a7" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.74.0+1" + +[[Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.14+0" + +[[Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[HTTP]] +deps = ["Base64", "CodecZlib", "Dates", "IniFile", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "4abede886fcba15cd5fd041fef776b230d004cee" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.4.0" + +[[HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] +git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "2.8.1+1" + +[[Hyperscript]] +deps = ["Test"] +git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" +uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" +version = "0.0.4" + +[[HypertextLiteral]] +deps = ["Tricks"] +git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" +uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" +version = "0.9.4" + +[[IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.2" + +[[IniFile]] +git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.1" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "49510dfcb407e572524ba94aeae2fced1f3feb0f" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.8" + +[[IrrationalConstants]] +git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.1.1" + +[[JLFzf]] +deps = ["Pipe", "REPL", "Random", "fzf_jll"] +git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.5" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.4.1" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.3" + +[[JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b53380851c6e6664204efb2e62cd24fa5c47e4ba" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "2.1.2+0" + +[[LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+0" + +[[LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "3.0.0+1" + +[[LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.1+0" + +[[LaTeXStrings]] +git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.0" + +[[Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] +git-tree-sha1 = "ab9aa169d2160129beb241cb2750ca499b4e90e9" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.15.17" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.3" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "7.84.0+0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.10.2+0" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+1" + +[[Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.7+0" + +[[Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.3.0+3" + +[[Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.42.0+0" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.1+1" + +[[Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+0" + +[[Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.4.0+0" + +[[Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + +[[LinearAlgebra]] +deps = ["Libdl", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[LogExpFunctions]] +deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "94d9c52ca447e23eac0c0f074effbcd38830deb5" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.18" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "5d4d2d9904227b8bd66386c1138cf4d5ffa826bf" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "0.4.9" + +[[MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.10" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] +git-tree-sha1 = "6872f9594ff273da6d13c7c1a1545d5a8c7d0c1c" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.6" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.0+0" + +[[Measures]] +git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.1" + +[[Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.0.2" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.2.1" + +[[NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.1" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.20+0" + +[[OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+0" + +[[OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "ebe81469e9d7b471d7ddb611d9e147ea16de0add" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.2.1" + +[[OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e60321e3f2616584ff98f0a4f18d98ae6f89bbb3" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "1.1.17+0" + +[[OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.2+0" + +[[OrderedCollections]] +git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.4.1" + +[[PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.40.0+0" + +[[Parsers]] +deps = ["Dates"] +git-tree-sha1 = "3d5bf43e3e8b412656404ed9466f1dcbf7c50269" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.4.0" + +[[Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[Pixman_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.40.1+0" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.8.0" + +[[PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "8162b2f8547bc23876edd0c5181b27702ae58dce" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.0.0" + +[[PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "SnoopPrecompile", "Statistics"] +git-tree-sha1 = "21303256d239f6b484977314674aef4bb1fe4420" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.3.1" + +[[Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SnoopPrecompile", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] +git-tree-sha1 = "65451f70d8d71bd9d06821c7a53adbed162454c9" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.35.2" + +[[PlutoUI]] +deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "Random", "Reexport", "UUIDs"] +git-tree-sha1 = "2777a5c2c91b3145f5aa75b61bb4c2eb38797136" +uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" +version = "0.7.43" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.3.0" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[Qt5Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] +git-tree-sha1 = "c6c0f690d0cc7caddb74cef7aa847b824a16b256" +uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" +version = "5.15.3+1" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[RecipesBase]] +deps = ["SnoopPrecompile"] +git-tree-sha1 = "612a4d76ad98e9722c8ba387614539155a59e30c" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.0" + +[[RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] +git-tree-sha1 = "017f217e647cf20b0081b9be938b78c3443356a0" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.6" + +[[Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.0" + +[[Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[Scratch]] +deps = ["Dates"] +git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.1.1" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[SnoopPrecompile]] +git-tree-sha1 = "f604441450a3c0569830946e5b33b78c928e1a85" +uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" +version = "1.0.1" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.0.1" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.1.7" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.5.0" + +[[StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.33.21" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.0" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.1" + +[[TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[TranscodingStreams]] +deps = ["Random", "Test"] +git-tree-sha1 = "8a75929dcd3c38611db2f8d08546decb514fcadf" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.9.9" + +[[Tricks]] +git-tree-sha1 = "6bac775f2d42a611cdfcd1fb217ee719630c4175" +uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" +version = "0.1.6" + +[[URIs]] +git-tree-sha1 = "e59ecc5a41b000fa94423a578d29290c7266fc10" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.4.0" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "3e61f0b86f90dacb0bc0e73a0c5a83f6a8636e23" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.19.0+0" + +[[Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.25.0+0" + +[[XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "58443b63fb7e465a8a7210828c91c08b92132dff" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.14+0" + +[[XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.34+0" + +[[Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.0+4" + +[[Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.2+4" + +[[Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.27.0+4" + +[[Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.12+3" + +[[Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e45044cd873ded54b6a5bac0eb5c971392cf1927" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.2+0" + +[[fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.29.0+0" + +[[libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.4.0+0" + +[[libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.1+0" + +[[libblastrampoline_jll]] +deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.1.1+0" + +[[libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.2+0" + +[[libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.38+0" + +[[libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+1" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.48.0+0" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+0" + +[[x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.4.1+0" +""" + +# ╔═║ Cell order: +# β•Ÿβ”€349d7534-6212-11eb-2bc5-db5be39b6bb6 +# ╠═96ec00fc-6f14-11eb-329e-19e4835643db +# β•Ÿβ”€6abc4d6a-da75-42bf-a62a-b98bb69585aa +# β•Ÿβ”€237ef27e-6266-11eb-3cf4-1b2223eabfd9 +# ╠═6c060eec-6266-11eb-0b23-e5be08d78823 +# β•Ÿβ”€830c9ed0-6266-11eb-27ba-07773c842fed +# β•Ÿβ”€f4270146-6216-11eb-391e-01a476fcfccd +# ╠═b5fff126-6215-11eb-1018-bd2e4f638f65 +# β•Ÿβ”€b9dbaf62-6215-11eb-3a7d-0b882b1a10b0 +# β•Ÿβ”€3249157e-6267-11eb-3dca-8949d7c0e3c9 +# ╠═ce1d05da-6267-11eb-136c-23c5c54a1559 +# β•Ÿβ”€cf933c04-6267-11eb-3317-ed1a42e8c64e +# β•Ÿβ”€1695a810-6268-11eb-3932-fb8885097f70 +# ╠═77cefbd4-662e-11eb-1b1d-91da61cc3823 +# β•Ÿβ”€88776120-662e-11eb-1542-fd26e4f126b1 +# β•Ÿβ”€874a1a5c-6632-11eb-2705-e914f01b9762 +# ╠═812bbd7e-6632-11eb-29f8-3f48329f0ac9 +# ╠═aeaa97ae-6632-11eb-0ea2-7febd8b3e965 +# β•Ÿβ”€b0d35a9a-662e-11eb-34f5-c9a5fd9bb9a6 +# ╠═d285737a-662f-11eb-390e-1d1e2437de71 +# β•Ÿβ”€de2a045c-662f-11eb-1d80-65fe7d8e0db3 +# β•Ÿβ”€5d04cbea-6630-11eb-3bee-c182aa912653 +# ╠═0ae0cf56-6632-11eb-262a-191ea74ec517 +# β•Ÿβ”€f279b1ee-6631-11eb-0809-bf0699c636f2 +# β•Ÿβ”€0fe8c31e-663a-11eb-1acb-17d3d7615e64 +# ╠═478dde3c-663a-11eb-3244-e7449c93b3a5 +# β•Ÿβ”€68f2b1b0-663a-11eb-1b6d-b176d905f65b +# ╠═8d509116-663b-11eb-0e98-dd27598740fe +# β•Ÿβ”€bb8694b8-663b-11eb-03a1-49713346bdf3 +# β•Ÿβ”€06c9bcec-663d-11eb-3062-85c0983a79eb +# ╠═9fd96950-6651-11eb-25f7-c964ab504b4a +# β•Ÿβ”€de2903cc-6652-11eb-30c3-7114b15fa6e1 +# β•Ÿβ”€34824462-6654-11eb-2b38-19d14aa309af +# ╠═6895356c-6655-11eb-3849-b3fa387df754 +# β•Ÿβ”€6b9a4b64-6656-11eb-10ce-7b4a8b3cd6a4 +# β•Ÿβ”€9687bc24-666c-11eb-3b1e-edb5c448bad8 +# β•Ÿβ”€a4a9afe4-6656-11eb-0664-83cb32ce934b +# β•Ÿβ”€9d3e9a92-6469-11eb-2952-b37367644c48 +# ╠═f3cd5320-66d6-11eb-191c-4b4d8cba940d +# ╠═f5805956-66d6-11eb-04e8-b1faae8f0d3c +# ╠═c72359f4-66d7-11eb-395f-b3a1983a6eea +# β•Ÿβ”€bdea6774-66d7-11eb-1c62-8f0e935f98ef +# ╠═fb73ea0c-66d7-11eb-001c-23033aee228a +# β•Ÿβ”€07491ca8-66d8-11eb-3304-99f911b4bd1d +# β•Ÿβ”€2b99da2c-666d-11eb-1c64-337654a9d8f2 +# ╠═d39fbca0-66db-11eb-1aae-7b29f559cb01 +# β•Ÿβ”€1bcd317c-66e8-11eb-10df-c132d5f79155 +# ╠═66c4f3fc-66db-11eb-0927-ebe1d40eeb3b +# β•Ÿβ”€2c63db0a-66dc-11eb-1a45-7902d591c3e1 +# β•Ÿβ”€575d9e52-6468-11eb-2f95-63cd3920f91a +# ╠═2e6c3c30-66e6-11eb-10f0-ddaa1752cff9 +# β•Ÿβ”€d701d778-66e7-11eb-16c2-ab49fc06e992 +# ╠═055baa32-66e7-11eb-20fc-575565bda51b +# β•Ÿβ”€6a3905f4-66e6-11eb-0607-5534821caee6 +# β•Ÿβ”€91c222ea-66e6-11eb-28ce-c1f1424525c8 +# ╠═b5db566a-66e6-11eb-35fb-17d3fc4e258c +# β•Ÿβ”€a44eb7ea-66e9-11eb-10fa-2b0936b9f489 +# ╠═d8f306ca-66e9-11eb-3728-156d0328250b +# β•Ÿβ”€2561d38a-66ea-11eb-10ab-27db1a87970b +# β•Ÿβ”€673cc322-666e-11eb-107f-2b9bd6826ad5 +# ╠═1bf921be-66eb-11eb-089a-97dfe9418b32 +# β•Ÿβ”€455d0b7c-66eb-11eb-3167-4b204ac741a5 +# β•Ÿβ”€529a7324-66eb-11eb-0c1f-c37639e37a6e +# ╠═a87e36c4-66eb-11eb-223e-a1b077dca672 +# β•Ÿβ”€b135affc-66eb-11eb-188b-a32ef1478ee6 +# β•Ÿβ”€0aa99f86-6f97-11eb-2141-2d35c3e0857d +# β•Ÿβ”€f77039b0-6f97-11eb-177b-2730efcb4dcd +# ╠═fec108ca-6f97-11eb-06d9-6fe1646f8b98 +# β•Ÿβ”€1559f57e-6f98-11eb-3539-1b1ae82c439b +# β•Ÿβ”€36e6783c-6f98-11eb-0b09-db56907e370d +# ╠═3f4422ce-6f98-11eb-111f-4d1624a326c7 +# β•Ÿβ”€44ee1586-6f98-11eb-3452-f7db9e3738ad +# ╠═4a8f3088-6f98-11eb-1d0e-4b1ba2e676ae +# β•Ÿβ”€50cc4f32-6f98-11eb-25a4-ebaf581955ea +# ╠═56177258-6f98-11eb-276f-7d8053bdcb86 +# β•Ÿβ”€5733a026-6f98-11eb-1b50-c75f87fbabe5 +# ╠═5d770eb4-6f98-11eb-3206-8d26f2717981 +# β•Ÿβ”€6824d1f2-6f98-11eb-12f1-adf1271af917 +# ╠═6debc444-6f98-11eb-3c9e-4dc533fe13ec +# β•Ÿβ”€77d17b00-6f98-11eb-37ad-dd347db13fb3 +# β•Ÿβ”€8b852fd4-6f98-11eb-1b3a-7ff47c51e99e +# ╠═8f566768-6f98-11eb-20ae-45d6f39cd210 +# β•Ÿβ”€961e9cd2-6f98-11eb-362c-517edab85a8c +# ╠═a32f2a4a-6f98-11eb-18f9-efb51aac288c +# β•Ÿβ”€acc530cc-6f98-11eb-330e-077fcaf5bd62 +# ╠═e5ca1bf8-6f98-11eb-1bd9-6f2f1fbe55c9 +# β•Ÿβ”€eba05204-6f98-11eb-1e7c-4f7b49962f23 +# ╠═f22b7874-6f98-11eb-0417-1de0d171c4ad +# β•Ÿβ”€f8265ba4-6f98-11eb-3938-0b38b2b93285 +# ╠═fd8522ec-6f98-11eb-0a3c-01a91ee48de9 +# β•Ÿβ”€0cce95b2-6f99-11eb-1161-1d446c3bbe44 +# ╠═1a12d5a8-6f99-11eb-0e46-1529f881a3b0 +# β•Ÿβ”€214ce458-6f99-11eb-0963-7965b5fba93a +# ╠═29efc990-6f99-11eb-0633-63fb74c5bebf +# β•Ÿβ”€2f3b762e-6f99-11eb-12f0-2d42ed8237e0 +# β•Ÿβ”€372fa56c-6f99-11eb-115d-275699f1c05c +# ╠═473b6dec-6f99-11eb-04f0-07006f1996ba +# β•Ÿβ”€bf493588-6f14-11eb-3ddf-b7ce036aff36 +# β•Ÿβ”€00000000-0000-0000-0000-000000000001 +# β•Ÿβ”€00000000-0000-0000-0000-000000000002