From ff214773f5752bef66e5ac5fd666dafd6b5ac271 Mon Sep 17 00:00:00 2001 From: Preston Pan Date: Fri, 1 Mar 2024 23:59:45 -0800 Subject: [PATCH] change readme --- README.org | 39 + config/emacs.el | 20 +- config/emacs.org | 20 +- config/nix.org | 2516 ++++++++--------- index.org | 2 +- journal/20240301.org | 11 + mindmap/limit.org | 48 + ...aa3ea174cc91456ea23713ffe95af053dcb277.png | Bin 0 -> 1470 bytes ...47ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png | Bin 0 -> 224 bytes ...7619bf26ee5cdc69145c7ed2c2b224b89157f1.png | Bin 0 -> 1815 bytes ...e116a4a198d0ce1dc6d9f9887790227d19e957.png | Bin 0 -> 1813 bytes ...29e37ce0eb6a769c8b3f764b69522814cd276f.png | Bin 0 -> 247 bytes ...da09acf7c1c8d9e80aa074db5770053e61da4f.png | Bin 0 -> 805 bytes ...244e5b74b849f9b81d99797b3bd149296780fc.png | Bin 0 -> 319 bytes ...882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png | Bin 0 -> 246 bytes ...31ae29e601c6ac7ecc06693f894f145327ab9d.png | Bin 0 -> 265 bytes ...1efb83a45287d808391c0fb75227a21d372f1c.png | Bin 0 -> 960 bytes ...94ac98fc90ad51d44be7f0bddfda7149ce8042.png | Bin 0 -> 1504 bytes ...2848eb7906c9ed12c9c604b7ea46dcbb475963.png | Bin 0 -> 1428 bytes ...a9152abe257356e10d6bcf14b90f467755ea8a.png | Bin 0 -> 1428 bytes ...10faf9acf212232795e93c3510d0fe97468015.png | Bin 0 -> 1513 bytes ...801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png | Bin 0 -> 628 bytes ...00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png | Bin 0 -> 1042 bytes ...0d3071a4f57e81d06a60024812fa709c226a13.png | Bin 0 -> 1813 bytes ...a98c9bb08f07f584f8c5412432c67c3b0a6e6f.png | Bin 0 -> 699 bytes ...02b949dc40801941d169abb6484f949be7deca.png | Bin 0 -> 502 bytes ...57612d877b79f25160876e21c09f4a477eb402.png | Bin 0 -> 1951 bytes ...75639a2a55c6690a74f716ea57a8b344d56465.png | Bin 0 -> 484 bytes ...fffb6e58aaca63705d0802a5198e2a44b521ee.png | Bin 0 -> 1064 bytes ...af51c4403546d8b411e27b57b947181766471b.png | Bin 0 -> 254 bytes ...18fd90c2cdbf77a1865932d89612ee24845a24.png | Bin 0 -> 187 bytes ...ae828b4101a47202d449c337e4e360e5b9032e.png | Bin 0 -> 562 bytes ...13fb998dcfa9c71cf9f6a0599dda7092c147c3.png | Bin 0 -> 1400 bytes ...b84a731b6c881bbdc914223bc8e34684a5e351.png | Bin 0 -> 265 bytes ...1cf9411c47550152d2e408a23ef1f32d81e13a.png | Bin 0 -> 1857 bytes ...2bea268ced4d8ef1dfa95434f2ac46b41cd376.png | Bin 0 -> 1492 bytes ...02c2602c5f17e82648a9b183440f1dac90bb9c.png | Bin 0 -> 250 bytes ...64b6295265bbcd10591dbdda2a7089a6930bc0.png | Bin 0 -> 420 bytes ...a81bcc6ef74a723c73b2b8e30030118c53f95d.png | Bin 0 -> 1104 bytes ...4999ae9316287e809dabd9fc494e1c9b34a387.png | Bin 0 -> 1781 bytes ...153f1fdee390f625c656282b2c40d4e0a291d6.png | Bin 0 -> 1391 bytes ...bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png | Bin 0 -> 1490 bytes ...cad877d792037fb38843d7883bdeeb82eaad9d.png | Bin 0 -> 1949 bytes ...0960665bf0d91ee0770469f237c39dcfe22b98.png | Bin 0 -> 1781 bytes ...d769de777728ae8dde51dc94c51ad64963244e.png | Bin 0 -> 305 bytes ...4bb2859aff03c92a09e6a971ada1b8f17a9c39.png | Bin 0 -> 1428 bytes ...d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png | Bin 0 -> 720 bytes ...16adefafa2a4d0f294d224c776253425d38b95.png | Bin 0 -> 785 bytes ...2b866227121d901dcbc062e4a8f3fbbc121bf8.png | Bin 0 -> 1428 bytes ...265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png | Bin 0 -> 947 bytes mindmap/partial derivative.org | 2 +- 51 files changed, 1388 insertions(+), 1270 deletions(-) create mode 100644 journal/20240301.org create mode 100644 mindmap/limit.org create mode 100644 mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png create mode 100644 mindmap/ltximg/org-ltximg_0447ca2e63ccd0dd90f39c00f82c80bc1cbe8691.png create mode 100644 mindmap/ltximg/org-ltximg_117619bf26ee5cdc69145c7ed2c2b224b89157f1.png create mode 100644 mindmap/ltximg/org-ltximg_19e116a4a198d0ce1dc6d9f9887790227d19e957.png create mode 100644 mindmap/ltximg/org-ltximg_1c29e37ce0eb6a769c8b3f764b69522814cd276f.png create mode 100644 mindmap/ltximg/org-ltximg_23da09acf7c1c8d9e80aa074db5770053e61da4f.png create mode 100644 mindmap/ltximg/org-ltximg_27244e5b74b849f9b81d99797b3bd149296780fc.png create mode 100644 mindmap/ltximg/org-ltximg_2e882e7c90999ce3a67b3c7a8ff96f2a52c73f11.png create mode 100644 mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png create mode 100644 mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png create mode 100644 mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png create mode 100644 mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png create mode 100644 mindmap/ltximg/org-ltximg_36a9152abe257356e10d6bcf14b90f467755ea8a.png create mode 100644 mindmap/ltximg/org-ltximg_3910faf9acf212232795e93c3510d0fe97468015.png create mode 100644 mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png create mode 100644 mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png create mode 100644 mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png create mode 100644 mindmap/ltximg/org-ltximg_4ea98c9bb08f07f584f8c5412432c67c3b0a6e6f.png create mode 100644 mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png create mode 100644 mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png create mode 100644 mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png create mode 100644 mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png create mode 100644 mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png create mode 100644 mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png create mode 100644 mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png create mode 100644 mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png create mode 100644 mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png create mode 100644 mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png create mode 100644 mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png create mode 100644 mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png create mode 100644 mindmap/ltximg/org-ltximg_bd64b6295265bbcd10591dbdda2a7089a6930bc0.png create mode 100644 mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png create mode 100644 mindmap/ltximg/org-ltximg_c94999ae9316287e809dabd9fc494e1c9b34a387.png create mode 100644 mindmap/ltximg/org-ltximg_ca153f1fdee390f625c656282b2c40d4e0a291d6.png create mode 100644 mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png create mode 100644 mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png create mode 100644 mindmap/ltximg/org-ltximg_e80960665bf0d91ee0770469f237c39dcfe22b98.png create mode 100644 mindmap/ltximg/org-ltximg_ebd769de777728ae8dde51dc94c51ad64963244e.png create mode 100644 mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png create mode 100644 mindmap/ltximg/org-ltximg_f9d4fb0fcdd5debe5b000b7b272bd04d6d8298b9.png create mode 100644 mindmap/ltximg/org-ltximg_fa16adefafa2a4d0f294d224c776253425d38b95.png create mode 100644 mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png create mode 100644 mindmap/ltximg/org-ltximg_fe265cc5bfe020b69154d212c1f40dcd7cc2cfd6.png diff --git a/README.org b/README.org index c3133ae..6e2a7b3 100644 --- a/README.org +++ b/README.org @@ -20,5 +20,44 @@ as well as writing a lot of things with a literate config. ** So, where is this website of yours located? https://ret2pop.nullring.xyz, it is the road to enlightenment. +* Wait, so where are your dotfiles? +To use my dotfiles, clone this repository: +#+begin_src bash +git clone https://github.com/ret2pop/ret2pop-website.git ~/org/website +#+end_src +and install my ~configuration.nix~ file. The org files /are/ the dotfiles, or +at least in the case of emacs. + +To use my full system, you also need to have a ~password-store~ from the ~pass~ +password manager in its standard location with an entry called ~Mail~, and you need +to clone my [[https://github.com/ret2pop/wallpapers.git][wallpapers]] repository. Therefore, in full, my configuration can be fully +installed like so: +#+begin_src bash + # Run this in root, and after copying the configuration.nix file and running nixos-rebuild switch. + # You must also change the gpg key used for git and pass. Make sure + # you've installed your gpg keys and your ssh keys before this. + # Install your music to ~/music. Of course, also change your location + # of stuff like your mail server. + su preston # if you change your username, change this too + cd ~ + mkdir ~/org + # if you want to make this process deterministic, clone a particular commit + git clone https://github.com/ret2pop/ret2pop-website.git ~/org/website + git clone https://github.com/ret2pop/wallpapers.git + # replace this with your password-store + git clone git@nullring.xyz:/var/www/password_store.git ~/.password-store/ + mbsync prestonpan # change this with your own name in the nix config and here + # TODO: mu init/index + mpc add / + + # Afterwards, open firefox, enable all the plugins that are already installed, + # and install the catppuccin firefox theme. For vencord, use the catppuccin + # betterdiscord theme; open emacs and run pdf-tools-install, nerd-icons-install-fonts, + # and all-the-icons-install-fonts. These things are not completely set up for you but + # the good news is that the vast majority of the functionality is included. + +#+end_src +Without the comments, it is a 10 line program that installs everything needed to run my system, +and configures those programs as well! * License See the [[file:LICENSE.org][license]]. The style.css has its own license. diff --git a/config/emacs.el b/config/emacs.el index 3e3c1c2..03eefef 100644 --- a/config/emacs.el +++ b/config/emacs.el @@ -12,9 +12,9 @@ (setq make-backup-files nil) (setq org-export-with-broken-links t) (setq org-src-fontify-natively t) +(setq org-highlight-latex-and-related '(latex script entities)) (setq warning-minimum-level :emergency) (add-hook 'text-mode-hook 'visual-line-mode) -(add-hook 'after-save-hook 'eglot-format) (setq debug-ignored-errors (cons 'remote-file-error debug-ignored-errors)) @@ -58,10 +58,16 @@ Otherwise, just insert the typed character." (interactive) (if (eolp) (let (parens-require-spaces) (insert-pair)) (self-insert-command 1))) + (add-hook 'org-mode-hook (lambda () (define-key org-mode-map "\"" 'electric-pair) - (define-key org-mode-map "\'" 'electric-pair) + (define-key org-mode-map "(" 'electric-pair) + (define-key org-mode-map "[" 'electric-pair) + (define-key org-mode-map "{" 'electric-pair))) +(add-hook 'prog-mode-hook + (lambda () + (define-key org-mode-map "\"" 'electric-pair) (define-key org-mode-map "(" 'electric-pair) (define-key org-mode-map "[" 'electric-pair) (define-key org-mode-map "{" 'electric-pair))) @@ -210,6 +216,7 @@ Otherwise, just insert the typed character." "m P p" 'org-publish "s e" 'sudo-edit "m m" 'emms + "f f" 'eglot-format "h m" '(woman :wk "Manual") "h r r" '(lambda () (interactive) (org-babel-load-file (expand-file-name "~/org/website/config/emacs.org"))) )) @@ -241,12 +248,15 @@ Otherwise, just insert the typed character." (use-package org-roam :init + (setq org-roam-db-update-on-save t) (setq org-roam-graph-viewer "firefox") (setq org-roam-directory (file-truename "~/org/website/mindmap")) (setq org-roam-capture-templates '(("d" "default" plain "%?" - :target (file+head "${title}.org" - "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") - :unnarrowed t)))) + :target (file+head "${title}.org" + "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") + :unnarrowed t))) + :config + (org-roam-db-autosync-mode)) (use-package pinentry :init (setq epa-pinentry-mode `loopback) diff --git a/config/emacs.org b/config/emacs.org index ff6342e..ffd2d3a 100644 --- a/config/emacs.org +++ b/config/emacs.org @@ -26,9 +26,9 @@ emacs work in a semi-sane way and make it not look completely ugly: (setq make-backup-files nil) (setq org-export-with-broken-links t) (setq org-src-fontify-natively t) + (setq org-highlight-latex-and-related '(latex script entities)) (setq warning-minimum-level :emergency) (add-hook 'text-mode-hook 'visual-line-mode) - (add-hook 'after-save-hook 'eglot-format) (setq debug-ignored-errors (cons 'remote-file-error debug-ignored-errors)) #+end_src @@ -88,10 +88,16 @@ what electric-pair does based on the mode. Otherwise, just insert the typed character." (interactive) (if (eolp) (let (parens-require-spaces) (insert-pair)) (self-insert-command 1))) + (add-hook 'org-mode-hook (lambda () (define-key org-mode-map "\"" 'electric-pair) - (define-key org-mode-map "\'" 'electric-pair) + (define-key org-mode-map "(" 'electric-pair) + (define-key org-mode-map "[" 'electric-pair) + (define-key org-mode-map "{" 'electric-pair))) + (add-hook 'prog-mode-hook + (lambda () + (define-key org-mode-map "\"" 'electric-pair) (define-key org-mode-map "(" 'electric-pair) (define-key org-mode-map "[" 'electric-pair) (define-key org-mode-map "{" 'electric-pair))) @@ -274,6 +280,7 @@ Ivy is a pretty cool general program for displaying stuff: "m P p" 'org-publish "s e" 'sudo-edit "m m" 'emms + "f f" 'eglot-format "h m" '(woman :wk "Manual") "h r r" '(lambda () (interactive) (org-babel-load-file (expand-file-name "~/org/website/config/emacs.org"))) )) @@ -316,12 +323,15 @@ For all my mathematics and programming notes: #+begin_src emacs-lisp (use-package org-roam :init + (setq org-roam-db-update-on-save t) (setq org-roam-graph-viewer "firefox") (setq org-roam-directory (file-truename "~/org/website/mindmap")) (setq org-roam-capture-templates '(("d" "default" plain "%?" - :target (file+head "${title}.org" - "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") - :unnarrowed t)))) + :target (file+head "${title}.org" + "#+title: ${title}\n#+author: Preston Pan\n#+html_head: \n#+html_head: \n#+html_head: \n#+options: broken-links:t") + :unnarrowed t))) + :config + (org-roam-db-autosync-mode)) #+end_src ** Pinentry Set up pinentry so that I can use emacs as my pinentry frontend: diff --git a/config/nix.org b/config/nix.org index 5251748..8af80ff 100644 --- a/config/nix.org +++ b/config/nix.org @@ -4,1295 +4,1295 @@ #+html_head: * Configuration -#+begin_src nix :tangle t -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - -{ config, pkgs, ... }: - -{ - imports = - [ - # Include the results of the hardware scan. - ./hardware-configuration.nix - - ]; +#+begin_src nix :tangle + # Edit this configuration file to define what should be installed on + # your system. Help is available in the configuration.nix(5) man page + # and in the NixOS manual (accessible by running ‘nixos-help’). + + { config, pkgs, ... }: + + { + imports = + [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + + ]; - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "continuity"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "America/Vancouver"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_CA.UTF-8"; - - # Enable the X11 windowing system. - services.xserver.enable = true; - services.xserver.displayManager.startx.enable = true; - - # Configure keymap in X11 - services.xserver = { - layout = "us"; - xkbVariant = ""; - xkbOptions = "caps:escape"; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; - - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; - }; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - home-manager.users.preston = { - nixpkgs.config.packageOverrides = pkgs: { - nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { - inherit pkgs; - }; - }; - home.packages = [ - pkgs.vim - pkgs.git - pkgs.curl - pkgs.wget - pkgs.neofetch - pkgs.cowsay - pkgs.starship - pkgs.kitty - pkgs.ffmpeg - pkgs.hyprland - pkgs.grim - pkgs.acpilight - pkgs.light - pkgs.gnupg - pkgs.pass - pkgs.fira-code - pkgs.croc - pkgs.nixpkgs-fmt - pkgs.mu - pkgs.rust-analyzer - pkgs.rustc - pkgs.cargo - pkgs.rnix-lsp - pkgs.clang - pkgs.bear - pkgs.gnumake - pkgs.clang-tools - pkgs.gammastep - pkgs.pinentry - pkgs.texliveFull - pkgs.helvum - pkgs.xdg-utils - pkgs.ncmpcpp - pkgs.noto-fonts - pkgs.noto-fonts-cjk - pkgs.autobuild - pkgs.rsync - pkgs.pavucontrol - pkgs.swww - pkgs.fswebcam - pkgs.nmap - pkgs.mpc-cli - pkgs.yt-dlp - pkgs.mpv - (pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; }) - (pkgs.discord.override { - withOpenASAR = true; - withVencord = true; - }) - pkgs.vesktop - ]; + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; - fonts.fontconfig.enable = true; - xsession.enable = true; - home.stateVersion = "23.11"; + networking.hostName = "continuity"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - services.gpg-agent = { - enable = true; - pinentryFlavor = "emacs"; - extraConfig = '' - allow-emacs-pinentry - allow-loopback-pinentry - ''; + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "America/Vancouver"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_CA.UTF-8"; + + # Enable the X11 windowing system. + services.xserver.enable = true; + services.xserver.displayManager.startx.enable = true; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + xkbOptions = "caps:escape"; }; - services.mpd = { + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { enable = true; - dbFile = "/home/preston/.config/mpd/db"; - dataDir = "/home/preston/.config/mpd/"; - network.port = 6600; - musicDirectory = "/home/preston/music"; - playlistDirectory = "/home/preston/.config/mpd/playlists"; - extraConfig = '' - audio_output { - type "pipewire" - name "pipewire boi" - } - ''; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; }; - programs.wofi = { - enable = true; - settings = { - location = "bottom-right"; - allow_markup = true; - show = "drun"; - width = 750; - height = 400; - always_parse_args = true; - show_all = false; - term = "kitty"; - hide_scroll = true; - print_command = true; - insensitive = true; - prompt = ""; - columns = 2; + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + home-manager.users.preston = { + nixpkgs.config.packageOverrides = pkgs: { + nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { + inherit pkgs; + }; }; + home.packages = [ + pkgs.vim + pkgs.git + pkgs.curl + pkgs.wget + pkgs.neofetch + pkgs.cowsay + pkgs.starship + pkgs.kitty + pkgs.ffmpeg + pkgs.hyprland + pkgs.grim + pkgs.acpilight + pkgs.light + pkgs.gnupg + pkgs.pass + pkgs.fira-code + pkgs.croc + pkgs.nixpkgs-fmt + pkgs.mu + pkgs.rust-analyzer + pkgs.rustc + pkgs.cargo + pkgs.rnix-lsp + pkgs.clang + pkgs.bear + pkgs.gnumake + pkgs.clang-tools + pkgs.gammastep + pkgs.pinentry + pkgs.texliveFull + pkgs.helvum + pkgs.xdg-utils + pkgs.ncmpcpp + pkgs.noto-fonts + pkgs.noto-fonts-cjk + pkgs.autobuild + pkgs.rsync + pkgs.pavucontrol + pkgs.swww + pkgs.fswebcam + pkgs.nmap + pkgs.mpc-cli + pkgs.yt-dlp + pkgs.mpv + (pkgs.nerdfonts.override { fonts = [ "Iosevka" ]; }) + (pkgs.discord.override { + withOpenASAR = true; + withVencord = true; + }) + pkgs.vesktop + ]; - style = '' - @define-color rosewater #f5e0dc; - @define-color rosewater-rgb rgb(245, 224, 220); - @define-color flamingo #f2cdcd; - @define-color flamingo-rgb rgb(242, 205, 205); - @define-color pink #f5c2e7; - @define-color pink-rgb rgb(245, 194, 231); - @define-color mauve #cba6f7; - @define-color mauve-rgb rgb(203, 166, 247); - @define-color red #f38ba8; - @define-color red-rgb rgb(243, 139, 168); - @define-color maroon #eba0ac; - @define-color maroon-rgb rgb(235, 160, 172); - @define-color peach #fab387; - @define-color peach-rgb rgb(250, 179, 135); - @define-color yellow #f9e2af; - @define-color yellow-rgb rgb(249, 226, 175); - @define-color green #a6e3a1; - @define-color green-rgb rgb(166, 227, 161); - @define-color teal #94e2d5; - @define-color teal-rgb rgb(148, 226, 213); - @define-color sky #89dceb; - @define-color sky-rgb rgb(137, 220, 235); - @define-color sapphire #74c7ec; - @define-color sapphire-rgb rgb(116, 199, 236); - @define-color blue #89b4fa; - @define-color blue-rgb rgb(137, 180, 250); - @define-color lavender #b4befe; - @define-color lavender-rgb rgb(180, 190, 254); - @define-color text #cdd6f4; - @define-color text-rgb rgb(205, 214, 244); - @define-color subtext1 #bac2de; - @define-color subtext1-rgb rgb(186, 194, 222); - @define-color subtext0 #a6adc8; - @define-color subtext0-rgb rgb(166, 173, 200); - @define-color overlay2 #9399b2; - @define-color overlay2-rgb rgb(147, 153, 178); - @define-color overlay1 #7f849c; - @define-color overlay1-rgb rgb(127, 132, 156); - @define-color overlay0 #6c7086; - @define-color overlay0-rgb rgb(108, 112, 134); - @define-color surface2 #585b70; - @define-color surface2-rgb rgb(88, 91, 112); - @define-color surface1 #45475a; - @define-color surface1-rgb rgb(69, 71, 90); - @define-color surface0 #313244; - @define-color surface0-rgb rgb(49, 50, 68); - @define-color base #1e1e2e; - @define-color base-rgb rgb(30, 30, 46); - @define-color mantle #181825; - @define-color mantle-rgb rgb(24, 24, 37); - @define-color crust #11111b; - @define-color crust-rgb rgb(17, 17, 27); - - * { - font-family: 'Iosevka Nerd Font', monospace; - font-size: 14px; - } - - /* Window */ - window { - margin: 0px; - padding: 10px; - border: 0.16em solid @lavender; - border-radius: 0.1em; - background-color: @base; - animation: slideIn 0.5s ease-in-out both; - } - - /* Slide In */ - @keyframes slideIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } - } - - /* Inner Box */ - #inner-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - animation: fadeIn 0.5s ease-in-out both; - } - - /* Fade In */ - @keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } - } - - /* Outer Box */ - #outer-box { - margin: 5px; - padding: 10px; - border: none; - background-color: @base; - } - - /* Scroll */ - #scroll { - margin: 0px; - padding: 10px; - border: none; - background-color: @base; - } - - /* Input */ - #input { - margin: 5px 20px; - padding: 10px; - border: none; - border-radius: 0.1em; - color: @text; - background-color: @base; - animation: fadeIn 0.5s ease-in-out both; - } - - #input image { - border: none; - color: @red; - } - - #input * { - outline: 4px solid @red!important; - } - - /* Text */ - #text { - margin: 5px; - border: none; - color: @text; - animation: fadeIn 0.5s ease-in-out both; - } - - #entry { - background-color: @base; - } - - #entry arrow { - border: none; - color: @lavender; - } - - /* Selected Entry */ - #entry:selected { - border: 0.11em solid @lavender; - } - - #entry:selected #text { - color: @mauve; - } - - #entry:drop(active) { - background-color: @lavender!important; - } - ''; - }; + fonts.fontconfig.enable = true; + xsession.enable = true; + home.stateVersion = "23.11"; + + services.gpg-agent = { + enable = true; + pinentryFlavor = "emacs"; + extraConfig = '' + allow-emacs-pinentry + allow-loopback-pinentry + ''; + }; - programs.kitty = { - enable = true; - settings = { - enable_audio_bell = false; - font_family = "Fira Code"; - font_size = 12; - confirm_os_window_close = -1; - background_opacity = "0.9"; + services.mpd = { + enable = true; + dbFile = "/home/preston/.config/mpd/db"; + dataDir = "/home/preston/.config/mpd/"; + network.port = 6600; + musicDirectory = "/home/preston/music"; + playlistDirectory = "/home/preston/.config/mpd/playlists"; + extraConfig = '' + audio_output { + type "pipewire" + name "pipewire output" + } + ''; }; - extraConfig = '' - # The basic colors - foreground #CDD6F4 - background #1E1E2E - selection_foreground #1E1E2E - selection_background #F5E0DC - - # Cursor colors - cursor #F5E0DC - cursor_text_color #1E1E2E - - # URL underline color when hovering with mouse - url_color #F5E0DC - - # Kitty window border colors - active_border_color #B4BEFE - inactive_border_color #6C7086 - bell_border_color #F9E2AF - - # OS Window titlebar colors - wayland_titlebar_color #1E1E2E - macos_titlebar_color #1E1E2E - - # Tab bar colors - active_tab_foreground #11111B - active_tab_background #CBA6F7 - inactive_tab_foreground #CDD6F4 - inactive_tab_background #181825 - tab_bar_background #11111B - - # Colors for marks (marked text in the terminal) - mark1_foreground #1E1E2E - mark1_background #B4BEFE - mark2_foreground #1E1E2E - mark2_background #CBA6F7 - mark3_foreground #1E1E2E - mark3_background #74C7EC - - # The 16 terminal colors - - # black - color0 #45475A - color8 #585B70 - - # red - color1 #F38BA8 - color9 #F38BA8 - - # green - color2 #A6E3A1 - color10 #A6E3A1 - - # yellow - color3 #F9E2AF - color11 #F9E2AF - - # blue - color4 #89B4FA - color12 #89B4FA - - # magenta - color5 #F5C2E7 - color13 #F5C2E7 - - # cyan - color6 #94E2D5 - color14 #94E2D5 - - # white - color7 #BAC2DE - color15 #A6ADC8 - ''; - }; - programs.firefox = { - policies = { - EnableTrackingProtection = true; - OfferToSaveLogins = false; + + programs.wofi = { + enable = true; + settings = { + location = "bottom-right"; + allow_markup = true; + show = "drun"; + width = 750; + height = 400; + always_parse_args = true; + show_all = false; + term = "kitty"; + hide_scroll = true; + print_command = true; + insensitive = true; + prompt = ""; + columns = 2; + }; + + style = '' + @define-color rosewater #f5e0dc; + @define-color rosewater-rgb rgb(245, 224, 220); + @define-color flamingo #f2cdcd; + @define-color flamingo-rgb rgb(242, 205, 205); + @define-color pink #f5c2e7; + @define-color pink-rgb rgb(245, 194, 231); + @define-color mauve #cba6f7; + @define-color mauve-rgb rgb(203, 166, 247); + @define-color red #f38ba8; + @define-color red-rgb rgb(243, 139, 168); + @define-color maroon #eba0ac; + @define-color maroon-rgb rgb(235, 160, 172); + @define-color peach #fab387; + @define-color peach-rgb rgb(250, 179, 135); + @define-color yellow #f9e2af; + @define-color yellow-rgb rgb(249, 226, 175); + @define-color green #a6e3a1; + @define-color green-rgb rgb(166, 227, 161); + @define-color teal #94e2d5; + @define-color teal-rgb rgb(148, 226, 213); + @define-color sky #89dceb; + @define-color sky-rgb rgb(137, 220, 235); + @define-color sapphire #74c7ec; + @define-color sapphire-rgb rgb(116, 199, 236); + @define-color blue #89b4fa; + @define-color blue-rgb rgb(137, 180, 250); + @define-color lavender #b4befe; + @define-color lavender-rgb rgb(180, 190, 254); + @define-color text #cdd6f4; + @define-color text-rgb rgb(205, 214, 244); + @define-color subtext1 #bac2de; + @define-color subtext1-rgb rgb(186, 194, 222); + @define-color subtext0 #a6adc8; + @define-color subtext0-rgb rgb(166, 173, 200); + @define-color overlay2 #9399b2; + @define-color overlay2-rgb rgb(147, 153, 178); + @define-color overlay1 #7f849c; + @define-color overlay1-rgb rgb(127, 132, 156); + @define-color overlay0 #6c7086; + @define-color overlay0-rgb rgb(108, 112, 134); + @define-color surface2 #585b70; + @define-color surface2-rgb rgb(88, 91, 112); + @define-color surface1 #45475a; + @define-color surface1-rgb rgb(69, 71, 90); + @define-color surface0 #313244; + @define-color surface0-rgb rgb(49, 50, 68); + @define-color base #1e1e2e; + @define-color base-rgb rgb(30, 30, 46); + @define-color mantle #181825; + @define-color mantle-rgb rgb(24, 24, 37); + @define-color crust #11111b; + @define-color crust-rgb rgb(17, 17, 27); + + ,* { + font-family: 'Iosevka Nerd Font', monospace; + font-size: 14px; + } + + /* Window */ + window { + margin: 0px; + padding: 10px; + border: 0.16em solid @lavender; + border-radius: 0.1em; + background-color: @base; + animation: slideIn 0.5s ease-in-out both; + } + + /* Slide In */ + @keyframes slideIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + + /* Inner Box */ + #inner-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; + } + + /* Fade In */ + @keyframes fadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } + } + + /* Outer Box */ + #outer-box { + margin: 5px; + padding: 10px; + border: none; + background-color: @base; + } + + /* Scroll */ + #scroll { + margin: 0px; + padding: 10px; + border: none; + background-color: @base; + } + + /* Input */ + #input { + margin: 5px 20px; + padding: 10px; + border: none; + border-radius: 0.1em; + color: @text; + background-color: @base; + animation: fadeIn 0.5s ease-in-out both; + } + + #input image { + border: none; + color: @red; + } + + #input * { + outline: 4px solid @red!important; + } + + /* Text */ + #text { + margin: 5px; + border: none; + color: @text; + animation: fadeIn 0.5s ease-in-out both; + } + + #entry { + background-color: @base; + } + + #entry arrow { + border: none; + color: @lavender; + } + + /* Selected Entry */ + #entry:selected { + border: 0.11em solid @lavender; + } + + #entry:selected #text { + color: @mauve; + } + + #entry:drop(active) { + background-color: @lavender!important; + } + ''; }; - enable = true; - profiles = { - default = { - id = 0; - name = "default"; - isDefault = true; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - ublock-origin - tree-style-tab - firefox-color - vimium - ]; - extraConfig = '' - // - /* You may copy+paste this file and use it as it is. - * - * If you make changes to your about:config while the program is running, the - * changes will be overwritten by the user.js when the application restarts. - * - * To make lasting changes to preferences, you will have to edit the user.js. - */ - - /**************************************************************************** - * Betterfox * - * "Ad meliora" * - * version: 122 * - * url: https://github.com/yokoffing/Betterfox * - ****************************************************************************/ - - /**************************************************************************** - * SECTION: FASTFOX * - ****************************************************************************/ - /** GENERAL ***/ - user_pref("content.notify.interval", 100000); - - /** GFX ***/ - user_pref("gfx.canvas.accelerated.cache-items", 4096); - user_pref("gfx.canvas.accelerated.cache-size", 512); - user_pref("gfx.content.skia-font-cache-size", 20); - - /** DISK CACHE ***/ - user_pref("browser.cache.jsbc_compression_level", 3); - - /** MEDIA CACHE ***/ - user_pref("media.memory_cache_max_size", 65536); - user_pref("media.cache_readahead_limit", 7200); - user_pref("media.cache_resume_threshold", 3600); - - /** IMAGE CACHE ***/ - user_pref("image.mem.decode_bytes_at_a_time", 32768); - - /** NETWORK ***/ - user_pref("network.buffer.cache.size", 262144); - user_pref("network.buffer.cache.count", 128); - user_pref("network.http.max-connections", 1800); - user_pref("network.http.max-persistent-connections-per-server", 10); - user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5); - user_pref("network.http.pacing.requests.enabled", false); - user_pref("network.dnsCacheExpiration", 3600); - user_pref("network.dns.max_high_priority_threads", 8); - user_pref("network.ssl_tokens_cache_capacity", 10240); - - /** SPECULATIVE LOADING ***/ - user_pref("network.dns.disablePrefetch", true); - user_pref("network.prefetch-next", false); - user_pref("network.predictor.enabled", false); - - /** EXPERIMENTAL ***/ - user_pref("layout.css.grid-template-masonry-value.enabled", true); - user_pref("dom.enable_web_task_scheduling", true); - user_pref("layout.css.has-selector.enabled", true); - user_pref("dom.security.sanitizer.enabled", true); - - /**************************************************************************** - * SECTION: SECUREFOX * - ****************************************************************************/ - /** TRACKING PROTECTION ***/ - user_pref("browser.contentblocking.category", "strict"); - user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"); - user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); - user_pref("network.cookie.sameSite.noneRequiresSecure", true); - user_pref("browser.download.start_downloads_in_tmp_dir", true); - user_pref("browser.helperApps.deleteTempFileOnExit", true); - user_pref("browser.uitour.enabled", false); - user_pref("privacy.globalprivacycontrol.enabled", true); - - /** OCSP & CERTS / HPKP ***/ - user_pref("security.OCSP.enabled", 0); - user_pref("security.remote_settings.crlite_filters.enabled", true); - user_pref("security.pki.crlite_mode", 2); - - /** SSL / TLS ***/ - user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); - user_pref("browser.xul.error_pages.expert_bad_cert", true); - user_pref("security.tls.enable_0rtt_data", false); - - /** DISK AVOIDANCE ***/ - user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); - user_pref("browser.sessionstore.interval", 60000); - - /** SHUTDOWN & SANITIZING ***/ - /** L **/ - user_pref("privacy.history.custom", true); - - /** SEARCH / URL BAR ***/ - user_pref("browser.search.separatePrivateDefault.ui.enabled", true); - user_pref("browser.urlbar.update2.engineAliasRefresh", true); - user_pref("browser.search.suggest.enabled", false); - user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); - user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); - user_pref("browser.formfill.enable", false); - user_pref("security.insecure_connection_text.enabled", true); - user_pref("security.insecure_connection_text.pbmode.enabled", true); - user_pref("network.IDN_show_punycode", true); - - /** HTTPS-FIRST POLICY ***/ - user_pref("dom.security.https_first", true); - user_pref("dom.security.https_first_schemeless", true); - - /** PASSWORDS ***/ - user_pref("signon.formlessCapture.enabled", false); - user_pref("signon.privateBrowsingCapture.enabled", false); - user_pref("network.auth.subresource-http-auth-allow", 1); - user_pref("editor.truncate_user_pastes", false); - - /** MIXED CONTENT + CROSS-SITE ***/ - user_pref("security.mixed_content.block_display_content", true); - user_pref("security.mixed_content.upgrade_display_content", true); - user_pref("security.mixed_content.upgrade_display_content.image", true); - user_pref("pdfjs.enableScripting", false); - user_pref("extensions.postDownloadThirdPartyPrompt", false); - - /** HEADERS / REFERERS ***/ - user_pref("network.http.referer.XOriginTrimmingPolicy", 2); - - /** CONTAINERS ***/ - user_pref("privacy.userContext.ui.enabled", true); - - /** WEBRTC ***/ - user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); - user_pref("media.peerconnection.ice.default_address_only", true); - - /** SAFE BROWSING ***/ - user_pref("browser.safebrowsing.downloads.remote.enabled", false); - - /** MOZILLA ***/ - user_pref("permissions.default.desktop-notification", 2); - user_pref("permissions.default.geo", 2); - user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); - user_pref("permissions.manager.defaultsUrl", ""); - user_pref("webchannel.allowObject.urlWhitelist", ""); - - /** TELEMETRY ***/ - user_pref("datareporting.policy.dataSubmissionEnabled", false); - user_pref("datareporting.healthreport.uploadEnabled", false); - user_pref("toolkit.telemetry.unified", false); - user_pref("toolkit.telemetry.enabled", false); - user_pref("toolkit.telemetry.server", "data:,"); - user_pref("toolkit.telemetry.archive.enabled", false); - user_pref("toolkit.telemetry.newProfilePing.enabled", false); - user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); - user_pref("toolkit.telemetry.updatePing.enabled", false); - user_pref("toolkit.telemetry.bhrPing.enabled", false); - user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); - user_pref("toolkit.telemetry.coverage.opt-out", true); - user_pref("toolkit.coverage.opt-out", true); - user_pref("toolkit.coverage.endpoint.base", ""); - user_pref("browser.ping-centre.telemetry", false); - user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); - user_pref("browser.newtabpage.activity-stream.telemetry", false); - - /** EXPERIMENTS ***/ - user_pref("app.shield.optoutstudies.enabled", false); - user_pref("app.normandy.enabled", false); - user_pref("app.normandy.api_url", ""); - - /** CRASH REPORTS ***/ - user_pref("breakpad.reportURL", ""); - user_pref("browser.tabs.crashReporting.sendReport", false); - user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); - - /** DETECTION ***/ - user_pref("captivedetect.canonicalURL", ""); - user_pref("network.captive-portal-service.enabled", false); - user_pref("network.connectivity-service.enabled", false); - - /**************************************************************************** - * SECTION: PESKYFOX * - ****************************************************************************/ - /** MOZILLA UI ***/ - /** format on save please? **/ - user_pref("browser.privatebrowsing.vpnpromourl", ""); - user_pref("extensions.getAddons.showPane", false); - user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); - user_pref("browser.discovery.enabled", false); - user_pref("browser.shell.checkDefaultBrowser", false); - user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); - user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); - user_pref("browser.preferences.moreFromMozilla", false); - user_pref("browser.tabs.tabmanager.enabled", false); - user_pref("browser.aboutConfig.showWarning", false); - user_pref("browser.aboutwelcome.enabled", false); - - /** THEME ADJUSTMENTS ***/ - user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); - user_pref("browser.compactmode.show", true); - user_pref("browser.display.focus_ring_on_anything", true); - user_pref("browser.display.focus_ring_style", 0); - user_pref("browser.display.focus_ring_width", 0); - user_pref("layout.css.prefers-color-scheme.content-override", 2); - user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS - - /** COOKIE BANNER HANDLING ***/ - user_pref("cookiebanners.service.mode", 1); - user_pref("cookiebanners.service.mode.privateBrowsing", 1); - - /** FULLSCREEN NOTICE ***/ - user_pref("full-screen-api.transition-duration.enter", "0 0"); - user_pref("full-screen-api.transition-duration.leave", "0 0"); - user_pref("full-screen-api.warning.delay", -1); - user_pref("full-screen-api.warning.timeout", 0); - - /** URL BAR ***/ - user_pref("browser.urlbar.suggest.calculator", true); - user_pref("browser.urlbar.unitConversion.enabled", true); - user_pref("browser.urlbar.trending.featureGate", false); - - /** NEW TAB PAGE ***/ - user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); - user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); - - /** POCKET ***/ - user_pref("extensions.pocket.enabled", false); - - /** DOWNLOADS ***/ - user_pref("browser.download.always_ask_before_handling_new_types", true); - user_pref("browser.download.manager.addToRecentDocs", false); - - /** PDF ***/ - user_pref("browser.download.open_pdf_attachments_inline", true); - - /** TAB BEHAVIOR ***/ - user_pref("browser.bookmarks.openInTabClosesMenu", false); - user_pref("browser.menu.showViewImageInfo", true); - user_pref("findbar.highlightAll", true); - user_pref("layout.word_select.eat_space_to_next_word", false); - ''; - }; + + programs.kitty = { + enable = true; + settings = { + enable_audio_bell = false; + font_family = "Fira Code"; + font_size = 12; + confirm_os_window_close = -1; + background_opacity = "0.9"; + }; + extraConfig = '' + # The basic colors + foreground #CDD6F4 + background #1E1E2E + selection_foreground #1E1E2E + selection_background #F5E0DC + + # Cursor colors + cursor #F5E0DC + cursor_text_color #1E1E2E + + # URL underline color when hovering with mouse + url_color #F5E0DC + + # Kitty window border colors + active_border_color #B4BEFE + inactive_border_color #6C7086 + bell_border_color #F9E2AF + + # OS Window titlebar colors + wayland_titlebar_color #1E1E2E + macos_titlebar_color #1E1E2E + + # Tab bar colors + active_tab_foreground #11111B + active_tab_background #CBA6F7 + inactive_tab_foreground #CDD6F4 + inactive_tab_background #181825 + tab_bar_background #11111B + + # Colors for marks (marked text in the terminal) + mark1_foreground #1E1E2E + mark1_background #B4BEFE + mark2_foreground #1E1E2E + mark2_background #CBA6F7 + mark3_foreground #1E1E2E + mark3_background #74C7EC + + # The 16 terminal colors + + # black + color0 #45475A + color8 #585B70 + + # red + color1 #F38BA8 + color9 #F38BA8 + + # green + color2 #A6E3A1 + color10 #A6E3A1 + + # yellow + color3 #F9E2AF + color11 #F9E2AF + + # blue + color4 #89B4FA + color12 #89B4FA + + # magenta + color5 #F5C2E7 + color13 #F5C2E7 + + # cyan + color6 #94E2D5 + color14 #94E2D5 + + # white + color7 #BAC2DE + color15 #A6ADC8 + ''; }; - }; - programs.waybar = { - enable = true; - style = '' - * { - border: none; - border-radius: 0px; - /*font-family: Fira Code, Iosevka Nerd Font, Noto Sans CJK;*/ - font-family: Iosevka, FontAwesome, Noto Sans CJK; - font-size: 14px; - font-style: normal; - min-height: 0; - } - - window#waybar { - background: rgba(30, 30, 46, 0.5); - border-bottom: 1px solid #45475a; - color: #cdd6f4; - } - - #workspaces { - background: #45475a; - margin: 5px 5px 5px 5px; - padding: 0px 5px 0px 5px; - border-radius: 16px; - border: solid 0px #f4d9e1; - font-weight: normal; - font-style: normal; - } - #workspaces button { - padding: 0px 5px; - border-radius: 16px; - color: #a6adc8; - } - - #workspaces button.active { - color: #f4d9e1; - background-color: transparent; - border-radius: 16px; - } - - #workspaces button:hover { - background-color: #cdd6f4; - color: black; - border-radius: 16px; - } - - #custom-date, #clock, #battery, #pulseaudio, #network, #custom-randwall, #custom-launcher { - background: transparent; - padding: 5px 5px 5px 5px; - margin: 5px 5px 5px 5px; - border-radius: 8px; - border: solid 0px #f4d9e1; - } - - #custom-date { - color: #D3869B; - } - - #custom-power { - color: #24283b; - background-color: #db4b4b; - border-radius: 5px; - margin-right: 10px; - margin-top: 5px; - margin-bottom: 5px; - margin-left: 0px; - padding: 5px 10px; - } - - #tray { - background: #45475a; - margin: 5px 5px 5px 5px; - border-radius: 16px; - padding: 0px 5px; - /*border-right: solid 1px #282738;*/ - } - - #clock { - color: #cdd6f4; - background-color: #45475a; - border-radius: 0px 0px 0px 24px; - padding-left: 13px; - padding-right: 15px; - margin-right: 0px; - margin-left: 10px; - margin-top: 0px; - margin-bottom: 0px; - font-weight: bold; - /*border-left: solid 1px #282738;*/ - } - - #battery { - color: #89b4fa; - } - - #battery.charging { - color: #a6e3a1; - } - - #battery.warning:not(.charging) { - background-color: #f7768e; - color: #f38ba8; - border-radius: 5px 5px 5px 5px; - } - - #backlight { - background-color: #24283b; - color: #db4b4b; - border-radius: 0px 0px 0px 0px; - margin: 5px; - margin-left: 0px; - margin-right: 0px; - padding: 0px 0px; - } - - #network { - color: #f4d9e1; - border-radius: 8px; - margin-right: 5px; - } - - #pulseaudio { - color: #f4d9e1; - border-radius: 8px; - margin-left: 0px; - } - - #pulseaudio.muted { - background: transparent; - color: #928374; - border-radius: 8px; - margin-left: 0px; - } - - #custom-randwall { - color: #f4d9e1; - border-radius: 8px; - margin-right: 0px; - } - - #custom-launcher { - color: #e5809e; - background-color: #45475a; - border-radius: 0px 24px 0px 0px; - margin: 0px 0px 0px 0px; - padding: 0 20px 0 13px; - /*border-right: solid 1px #282738;*/ - font-size: 20px; - } - - #custom-launcher button:hover { - background-color: #FB4934; - color: transparent; - border-radius: 8px; - margin-right: -5px; - margin-left: 10px; - } - - #custom-playerctl { - background: #45475a; - padding-left: 15px; - padding-right: 14px; - border-radius: 16px; - /*border-left: solid 1px #282738;*/ - /*border-right: solid 1px #282738;*/ - margin-top: 5px; - margin-bottom: 5px; - margin-left: 0px; - font-weight: normal; - font-style: normal; - font-size: 16px; - } - - #custom-playerlabel { - background: transparent; - padding-left: 10px; - padding-right: 15px; - border-radius: 16px; - /*border-left: solid 1px #282738;*/ - /*border-right: solid 1px #282738;*/ - margin-top: 5px; - margin-bottom: 5px; - font-weight: normal; - font-style: normal; - } - - #window { - background: #45475a; - padding-left: 15px; - padding-right: 15px; - border-radius: 16px; - /*border-left: solid 1px #282738;*/ - /*border-right: solid 1px #282738;*/ - margin-top: 5px; - margin-bottom: 5px; - font-weight: normal; - font-style: normal; - } - - #custom-wf-recorder { - padding: 0 20px; - color: #e5809e; - background-color: #1E1E2E; - } - - #cpu { - background-color: #45475a; - /*color: #FABD2D;*/ - border-radius: 16px; - margin: 5px; - margin-left: 5px; - margin-right: 5px; - padding: 0px 10px 0px 10px; - font-weight: bold; - } - - #memory { - background-color: #45475a; - /*color: #83A598;*/ - border-radius: 16px; - margin: 5px; - margin-left: 5px; - margin-right: 5px; - padding: 0px 10px 0px 10px; - font-weight: bold; - } - - #disk { - background-color: #45475a; - /*color: #8EC07C;*/ - border-radius: 16px; - margin: 5px; - margin-left: 5px; - margin-right: 5px; - padding: 0px 10px 0px 10px; - font-weight: bold; - } - - #custom-hyprpicker { - background-color: #45475a; - /*color: #8EC07C;*/ - border-radius: 16px; - margin: 5px; - margin-left: 5px; - margin-right: 5px; - padding: 0px 11px 0px 9px; - font-weight: bold; - } - ''; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - - output = [ - "LVDS-1" - ]; - - modules-left = [ "hyprland/workspaces" ]; - modules-center = [ "hyprland/window" ]; - modules-right = [ "battery" "clock" ]; - - battery = { - bat = "BAT0"; - format = "{capacity}% {icon}"; - format-icons = [ "" "" "" "" "" ]; - }; - - clock = { - format = "{:%a %d, %b %H:%M}"; - }; - }; + programs.firefox = { + policies = { + EnableTrackingProtection = true; + OfferToSaveLogins = false; + }; + enable = true; + profiles = { + default = { + id = 0; + name = "default"; + isDefault = true; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + ublock-origin + tree-style-tab + firefox-color + vimium + ]; + extraConfig = '' + // + /* You may copy+paste this file and use it as it is. + ,* + ,* If you make changes to your about:config while the program is running, the + ,* changes will be overwritten by the user.js when the application restarts. + ,* + ,* To make lasting changes to preferences, you will have to edit the user.js. + ,*/ + + /**************************************************************************** + ,* Betterfox * + ,* "Ad meliora" * + ,* version: 122 * + ,* url: https://github.com/yokoffing/Betterfox * + ,****************************************************************************/ + + /**************************************************************************** + ,* SECTION: FASTFOX * + ,****************************************************************************/ + /** GENERAL ***/ + user_pref("content.notify.interval", 100000); + + /** GFX ***/ + user_pref("gfx.canvas.accelerated.cache-items", 4096); + user_pref("gfx.canvas.accelerated.cache-size", 512); + user_pref("gfx.content.skia-font-cache-size", 20); + + /** DISK CACHE ***/ + user_pref("browser.cache.jsbc_compression_level", 3); + + /** MEDIA CACHE ***/ + user_pref("media.memory_cache_max_size", 65536); + user_pref("media.cache_readahead_limit", 7200); + user_pref("media.cache_resume_threshold", 3600); + + /** IMAGE CACHE ***/ + user_pref("image.mem.decode_bytes_at_a_time", 32768); + + /** NETWORK ***/ + user_pref("network.buffer.cache.size", 262144); + user_pref("network.buffer.cache.count", 128); + user_pref("network.http.max-connections", 1800); + user_pref("network.http.max-persistent-connections-per-server", 10); + user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5); + user_pref("network.http.pacing.requests.enabled", false); + user_pref("network.dnsCacheExpiration", 3600); + user_pref("network.dns.max_high_priority_threads", 8); + user_pref("network.ssl_tokens_cache_capacity", 10240); + + /** SPECULATIVE LOADING ***/ + user_pref("network.dns.disablePrefetch", true); + user_pref("network.prefetch-next", false); + user_pref("network.predictor.enabled", false); + + /** EXPERIMENTAL ***/ + user_pref("layout.css.grid-template-masonry-value.enabled", true); + user_pref("dom.enable_web_task_scheduling", true); + user_pref("layout.css.has-selector.enabled", true); + user_pref("dom.security.sanitizer.enabled", true); + + /**************************************************************************** + ,* SECTION: SECUREFOX * + ,****************************************************************************/ + /** TRACKING PROTECTION ***/ + user_pref("browser.contentblocking.category", "strict"); + user_pref("urlclassifier.trackingSkipURLs", "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"); + user_pref("urlclassifier.features.socialtracking.skipURLs", "*.instagram.com, *.twitter.com, *.twimg.com"); + user_pref("network.cookie.sameSite.noneRequiresSecure", true); + user_pref("browser.download.start_downloads_in_tmp_dir", true); + user_pref("browser.helperApps.deleteTempFileOnExit", true); + user_pref("browser.uitour.enabled", false); + user_pref("privacy.globalprivacycontrol.enabled", true); + + /** OCSP & CERTS / HPKP ***/ + user_pref("security.OCSP.enabled", 0); + user_pref("security.remote_settings.crlite_filters.enabled", true); + user_pref("security.pki.crlite_mode", 2); + + /** SSL / TLS ***/ + user_pref("security.ssl.treat_unsafe_negotiation_as_broken", true); + user_pref("browser.xul.error_pages.expert_bad_cert", true); + user_pref("security.tls.enable_0rtt_data", false); + + /** DISK AVOIDANCE ***/ + user_pref("browser.privatebrowsing.forceMediaMemoryCache", true); + user_pref("browser.sessionstore.interval", 60000); + + /** SHUTDOWN & SANITIZING ***/ + /** L **/ + user_pref("privacy.history.custom", true); + + /** SEARCH / URL BAR ***/ + user_pref("browser.search.separatePrivateDefault.ui.enabled", true); + user_pref("browser.urlbar.update2.engineAliasRefresh", true); + user_pref("browser.search.suggest.enabled", false); + user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false); + user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); + user_pref("browser.formfill.enable", false); + user_pref("security.insecure_connection_text.enabled", true); + user_pref("security.insecure_connection_text.pbmode.enabled", true); + user_pref("network.IDN_show_punycode", true); + + /** HTTPS-FIRST POLICY ***/ + user_pref("dom.security.https_first", true); + user_pref("dom.security.https_first_schemeless", true); + + /** PASSWORDS ***/ + user_pref("signon.formlessCapture.enabled", false); + user_pref("signon.privateBrowsingCapture.enabled", false); + user_pref("network.auth.subresource-http-auth-allow", 1); + user_pref("editor.truncate_user_pastes", false); + + /** MIXED CONTENT + CROSS-SITE ***/ + user_pref("security.mixed_content.block_display_content", true); + user_pref("security.mixed_content.upgrade_display_content", true); + user_pref("security.mixed_content.upgrade_display_content.image", true); + user_pref("pdfjs.enableScripting", false); + user_pref("extensions.postDownloadThirdPartyPrompt", false); + + /** HEADERS / REFERERS ***/ + user_pref("network.http.referer.XOriginTrimmingPolicy", 2); + + /** CONTAINERS ***/ + user_pref("privacy.userContext.ui.enabled", true); + + /** WEBRTC ***/ + user_pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); + user_pref("media.peerconnection.ice.default_address_only", true); + + /** SAFE BROWSING ***/ + user_pref("browser.safebrowsing.downloads.remote.enabled", false); + + /** MOZILLA ***/ + user_pref("permissions.default.desktop-notification", 2); + user_pref("permissions.default.geo", 2); + user_pref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"); + user_pref("permissions.manager.defaultsUrl", ""); + user_pref("webchannel.allowObject.urlWhitelist", ""); + + /** TELEMETRY ***/ + user_pref("datareporting.policy.dataSubmissionEnabled", false); + user_pref("datareporting.healthreport.uploadEnabled", false); + user_pref("toolkit.telemetry.unified", false); + user_pref("toolkit.telemetry.enabled", false); + user_pref("toolkit.telemetry.server", "data:,"); + user_pref("toolkit.telemetry.archive.enabled", false); + user_pref("toolkit.telemetry.newProfilePing.enabled", false); + user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); + user_pref("toolkit.telemetry.updatePing.enabled", false); + user_pref("toolkit.telemetry.bhrPing.enabled", false); + user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); + user_pref("toolkit.telemetry.coverage.opt-out", true); + user_pref("toolkit.coverage.opt-out", true); + user_pref("toolkit.coverage.endpoint.base", ""); + user_pref("browser.ping-centre.telemetry", false); + user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false); + user_pref("browser.newtabpage.activity-stream.telemetry", false); + + /** EXPERIMENTS ***/ + user_pref("app.shield.optoutstudies.enabled", false); + user_pref("app.normandy.enabled", false); + user_pref("app.normandy.api_url", ""); + + /** CRASH REPORTS ***/ + user_pref("breakpad.reportURL", ""); + user_pref("browser.tabs.crashReporting.sendReport", false); + user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); + + /** DETECTION ***/ + user_pref("captivedetect.canonicalURL", ""); + user_pref("network.captive-portal-service.enabled", false); + user_pref("network.connectivity-service.enabled", false); + + /**************************************************************************** + ,* SECTION: PESKYFOX * + ,****************************************************************************/ + /** MOZILLA UI ***/ + /** format on save please? **/ + user_pref("browser.privatebrowsing.vpnpromourl", ""); + user_pref("extensions.getAddons.showPane", false); + user_pref("extensions.htmlaboutaddons.recommendations.enabled", false); + user_pref("browser.discovery.enabled", false); + user_pref("browser.shell.checkDefaultBrowser", false); + user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false); + user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false); + user_pref("browser.preferences.moreFromMozilla", false); + user_pref("browser.tabs.tabmanager.enabled", false); + user_pref("browser.aboutConfig.showWarning", false); + user_pref("browser.aboutwelcome.enabled", false); + + /** THEME ADJUSTMENTS ***/ + user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true); + user_pref("browser.compactmode.show", true); + user_pref("browser.display.focus_ring_on_anything", true); + user_pref("browser.display.focus_ring_style", 0); + user_pref("browser.display.focus_ring_width", 0); + user_pref("layout.css.prefers-color-scheme.content-override", 2); + user_pref("browser.privateWindowSeparation.enabled", false); // WINDOWS + + /** COOKIE BANNER HANDLING ***/ + user_pref("cookiebanners.service.mode", 1); + user_pref("cookiebanners.service.mode.privateBrowsing", 1); + + /** FULLSCREEN NOTICE ***/ + user_pref("full-screen-api.transition-duration.enter", "0 0"); + user_pref("full-screen-api.transition-duration.leave", "0 0"); + user_pref("full-screen-api.warning.delay", -1); + user_pref("full-screen-api.warning.timeout", 0); + + /** URL BAR ***/ + user_pref("browser.urlbar.suggest.calculator", true); + user_pref("browser.urlbar.unitConversion.enabled", true); + user_pref("browser.urlbar.trending.featureGate", false); + + /** NEW TAB PAGE ***/ + user_pref("browser.newtabpage.activity-stream.feeds.topsites", false); + user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false); + + /** POCKET ***/ + user_pref("extensions.pocket.enabled", false); + + /** DOWNLOADS ***/ + user_pref("browser.download.always_ask_before_handling_new_types", true); + user_pref("browser.download.manager.addToRecentDocs", false); + + /** PDF ***/ + user_pref("browser.download.open_pdf_attachments_inline", true); + + /** TAB BEHAVIOR ***/ + user_pref("browser.bookmarks.openInTabClosesMenu", false); + user_pref("browser.menu.showViewImageInfo", true); + user_pref("findbar.highlightAll", true); + user_pref("layout.word_select.eat_space_to_next_word", false); + ''; + }; + }; + }; + programs.waybar = { + enable = true; + style = '' + ,* { + border: none; + border-radius: 0px; + /*font-family: Fira Code, Iosevka Nerd Font, Noto Sans CJK;*/ + font-family: Iosevka, FontAwesome, Noto Sans CJK; + font-size: 14px; + font-style: normal; + min-height: 0; + } + + window#waybar { + background: rgba(30, 30, 46, 0.5); + border-bottom: 1px solid #45475a; + color: #cdd6f4; + } + + #workspaces { + background: #45475a; + margin: 5px 5px 5px 5px; + padding: 0px 5px 0px 5px; + border-radius: 16px; + border: solid 0px #f4d9e1; + font-weight: normal; + font-style: normal; + } + #workspaces button { + padding: 0px 5px; + border-radius: 16px; + color: #a6adc8; + } + + #workspaces button.active { + color: #f4d9e1; + background-color: transparent; + border-radius: 16px; + } + + #workspaces button:hover { + background-color: #cdd6f4; + color: black; + border-radius: 16px; + } + + #custom-date, #clock, #battery, #pulseaudio, #network, #custom-randwall, #custom-launcher { + background: transparent; + padding: 5px 5px 5px 5px; + margin: 5px 5px 5px 5px; + border-radius: 8px; + border: solid 0px #f4d9e1; + } + + #custom-date { + color: #D3869B; + } + + #custom-power { + color: #24283b; + background-color: #db4b4b; + border-radius: 5px; + margin-right: 10px; + margin-top: 5px; + margin-bottom: 5px; + margin-left: 0px; + padding: 5px 10px; + } + + #tray { + background: #45475a; + margin: 5px 5px 5px 5px; + border-radius: 16px; + padding: 0px 5px; + /*border-right: solid 1px #282738;*/ + } + + #clock { + color: #cdd6f4; + background-color: #45475a; + border-radius: 0px 0px 0px 24px; + padding-left: 13px; + padding-right: 15px; + margin-right: 0px; + margin-left: 10px; + margin-top: 0px; + margin-bottom: 0px; + font-weight: bold; + /*border-left: solid 1px #282738;*/ + } + + #battery { + color: #89b4fa; + } + + #battery.charging { + color: #a6e3a1; + } + + #battery.warning:not(.charging) { + background-color: #f7768e; + color: #f38ba8; + border-radius: 5px 5px 5px 5px; + } + + #backlight { + background-color: #24283b; + color: #db4b4b; + border-radius: 0px 0px 0px 0px; + margin: 5px; + margin-left: 0px; + margin-right: 0px; + padding: 0px 0px; + } + + #network { + color: #f4d9e1; + border-radius: 8px; + margin-right: 5px; + } + + #pulseaudio { + color: #f4d9e1; + border-radius: 8px; + margin-left: 0px; + } + + #pulseaudio.muted { + background: transparent; + color: #928374; + border-radius: 8px; + margin-left: 0px; + } + + #custom-randwall { + color: #f4d9e1; + border-radius: 8px; + margin-right: 0px; + } + + #custom-launcher { + color: #e5809e; + background-color: #45475a; + border-radius: 0px 24px 0px 0px; + margin: 0px 0px 0px 0px; + padding: 0 20px 0 13px; + /*border-right: solid 1px #282738;*/ + font-size: 20px; + } + + #custom-launcher button:hover { + background-color: #FB4934; + color: transparent; + border-radius: 8px; + margin-right: -5px; + margin-left: 10px; + } + + #custom-playerctl { + background: #45475a; + padding-left: 15px; + padding-right: 14px; + border-radius: 16px; + /*border-left: solid 1px #282738;*/ + /*border-right: solid 1px #282738;*/ + margin-top: 5px; + margin-bottom: 5px; + margin-left: 0px; + font-weight: normal; + font-style: normal; + font-size: 16px; + } + + #custom-playerlabel { + background: transparent; + padding-left: 10px; + padding-right: 15px; + border-radius: 16px; + /*border-left: solid 1px #282738;*/ + /*border-right: solid 1px #282738;*/ + margin-top: 5px; + margin-bottom: 5px; + font-weight: normal; + font-style: normal; + } + + #window { + background: #45475a; + padding-left: 15px; + padding-right: 15px; + border-radius: 16px; + /*border-left: solid 1px #282738;*/ + /*border-right: solid 1px #282738;*/ + margin-top: 5px; + margin-bottom: 5px; + font-weight: normal; + font-style: normal; + } + + #custom-wf-recorder { + padding: 0 20px; + color: #e5809e; + background-color: #1E1E2E; + } + + #cpu { + background-color: #45475a; + /*color: #FABD2D;*/ + border-radius: 16px; + margin: 5px; + margin-left: 5px; + margin-right: 5px; + padding: 0px 10px 0px 10px; + font-weight: bold; + } + + #memory { + background-color: #45475a; + /*color: #83A598;*/ + border-radius: 16px; + margin: 5px; + margin-left: 5px; + margin-right: 5px; + padding: 0px 10px 0px 10px; + font-weight: bold; + } + + #disk { + background-color: #45475a; + /*color: #8EC07C;*/ + border-radius: 16px; + margin: 5px; + margin-left: 5px; + margin-right: 5px; + padding: 0px 10px 0px 10px; + font-weight: bold; + } + + #custom-hyprpicker { + background-color: #45475a; + /*color: #8EC07C;*/ + border-radius: 16px; + margin: 5px; + margin-left: 5px; + margin-right: 5px; + padding: 0px 11px 0px 9px; + font-weight: bold; + } + ''; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + + output = [ + "LVDS-1" + ]; + + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "hyprland/window" ]; + modules-right = [ "battery" "clock" ]; + + battery = { + bat = "BAT0"; + format = "{capacity}% {icon}"; + format-icons = [ "" "" "" "" "" ]; + }; + + clock = { + format = "{:%a %d, %b %H:%M}"; + }; + }; + }; }; - }; - programs.zsh = { - enable = true; - initExtra = '' - source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh - ''; - shellAliases = { - c = "clear"; - g = "git"; - v = "vim"; - h = "Hyprland"; + programs.zsh = { + enable = true; + initExtra = '' + source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh + ''; + shellAliases = { + c = "clear"; + g = "git"; + v = "vim"; + h = "Hyprland"; + }; }; - }; - programs.emacs = { - enable = true; - package = pkgs.emacs29-pgtk; - extraConfig = '' - (setq debug-on-error t) - (org-babel-load-file - (expand-file-name "~/org/website/config/emacs.org"))''; - extraPackages = epkgs: [ - epkgs.nix-mode - epkgs.emms - epkgs.magit - epkgs.vterm - epkgs.auctex - epkgs.use-package - epkgs.evil - epkgs.evil-collection - epkgs.org-roam - epkgs.org-journal - epkgs.general - epkgs.which-key - epkgs.gruvbox-theme - epkgs.elfeed - epkgs.elfeed-org - epkgs.doom-modeline - epkgs.dashboard - epkgs.org-superstar - epkgs.projectile - epkgs.lsp-mode - epkgs.ivy - epkgs.lsp-ivy - epkgs.all-the-icons - epkgs.page-break-lines - epkgs.counsel - epkgs.mu4e - epkgs.yasnippet - epkgs.company - epkgs.pinentry - epkgs.pdf-tools - epkgs.circe - epkgs.ivy-pass - epkgs.magit-delta - epkgs.sudo-edit - epkgs.evil-commentary - epkgs.evil-org - epkgs.catppuccin-theme - epkgs.htmlize - epkgs.web-mode - epkgs.emmet-mode - epkgs.ement - epkgs.rustic - epkgs.chatgpt-shell + programs.emacs = { + enable = true; + package = pkgs.emacs29-pgtk; + extraConfig = '' + (setq debug-on-error t) + (org-babel-load-file + (expand-file-name "~/org/website/config/emacs.org"))''; + extraPackages = epkgs: [ + epkgs.nix-mode + epkgs.emms + epkgs.magit + epkgs.vterm + epkgs.auctex + epkgs.use-package + epkgs.evil + epkgs.evil-collection + epkgs.org-roam + epkgs.org-journal + epkgs.general + epkgs.which-key + epkgs.gruvbox-theme + epkgs.elfeed + epkgs.elfeed-org + epkgs.doom-modeline + epkgs.dashboard + epkgs.org-superstar + epkgs.projectile + epkgs.lsp-mode + epkgs.ivy + epkgs.lsp-ivy + epkgs.all-the-icons + epkgs.page-break-lines + epkgs.counsel + epkgs.mu4e + epkgs.yasnippet + epkgs.company + epkgs.pinentry + epkgs.pdf-tools + epkgs.circe + epkgs.ivy-pass + epkgs.magit-delta + epkgs.sudo-edit + epkgs.evil-commentary + epkgs.evil-org + epkgs.catppuccin-theme + epkgs.htmlize + epkgs.web-mode + epkgs.emmet-mode + epkgs.ement + epkgs.rustic + epkgs.chatgpt-shell + + ]; + }; - ]; - }; + programs.mbsync = { + enable = true; + extraConfig = '' + IMAPAccount prestonpan + Host mail.nullring.xyz + User preston + PassCmd "pass Mail" + Port 993 + SSLType IMAPS + AuthMechs * + CertificateFile /etc/ssl/certs/ca-certificates.crt + + IMAPStore prestonpan-remote + Account prestonpan + + MaildirStore prestonpan-local + Path ~/email/mbsyncmail/ + Inbox ~/email/mbsyncmail/INBOX + SubFolders Verbatim + + Channel prestonpan + Far :prestonpan-remote: + Near :prestonpan-local: + Patterns * + Create Near + Sync All + Expunge None + SyncState * + ''; + }; - programs.mbsync = { - enable = true; - extraConfig = '' - IMAPAccount prestonpan - Host mail.nullring.xyz - User preston - PassCmd "pass Mail" - Port 993 - SSLType IMAPS - AuthMechs * - CertificateFile /etc/ssl/certs/ca-certificates.crt - - IMAPStore prestonpan-remote - Account prestonpan - - MaildirStore prestonpan-local - Path ~/email/mbsyncmail/ - Inbox ~/email/mbsyncmail/INBOX - SubFolders Verbatim - - Channel prestonpan - Far :prestonpan-remote: - Near :prestonpan-local: - Patterns * - Create Near - Sync All - Expunge None - SyncState * - ''; - }; + programs.msmtp = { + enable = true; + extraConfig = '' + # Set default values for all following accounts. + defaults + auth on + tls on + tls_trust_file /etc/ssl/certs/ca-certificates.crt + logfile ~/.msmtp.log + + # Gmail + account preston + host mail.nullring.xyz + port 587 + from preston@nullring.xyz + user preston + passwordeval "pass Mail" + + + # Set a default account + account default : preston + ''; + }; - programs.msmtp = { - enable = true; - extraConfig = '' - # Set default values for all following accounts. - defaults - auth on - tls on - tls_trust_file /etc/ssl/certs/ca-certificates.crt - logfile ~/.msmtp.log - - # Gmail - account preston - host mail.nullring.xyz - port 587 - from preston@nullring.xyz - user preston - passwordeval "pass Mail" - - - # Set a default account - account default : preston - ''; - }; + programs.bash = { + enable = true; + }; - programs.bash = { - enable = true; - }; + programs.qutebrowser = { + enable = true; + searchEngines = { + w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1"; + aw = "https://wiki.archlinux.org/?search={}"; + nw = "https://nixos.wiki/index.php?search={}"; + g = "https://www.google.com/search?hl=en&q={}"; + DEFAULT = "https://www.google.com/search?hl=en&q={}"; + }; + settings = { }; + extraConfig = '' + import os + from urllib.request import urlopen + + if not os.path.exists(config.configdir / "theme.py"): + theme = "https://raw.githubusercontent.com/catppuccin/qutebrowser/main/setup.py" + with urlopen(theme) as themehtml: + with open(config.configdir / "theme.py", "a") as file: + file.writelines(themehtml.read().decode("utf-8")) + + if os.path.exists(config.configdir / "theme.py"): + import theme + theme.setup(c, 'mocha', True) + ''; + }; + programs.git = { + enable = true; + userName = "Preston Pan"; + userEmail = "preston@nullring.xyz"; + signing.key = "2B749D1FB976E81613858E490290504780B30E20"; + aliases = { + co = "checkout"; + c = "commit"; + a = "add"; + s = "switch"; + b = "branch"; + }; + }; - programs.qutebrowser = { - enable = true; - searchEngines = { - w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1"; - aw = "https://wiki.archlinux.org/?search={}"; - nw = "https://nixos.wiki/index.php?search={}"; - g = "https://www.google.com/search?hl=en&q={}"; - DEFAULT = "https://www.google.com/search?hl=en&q={}"; + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; + xwayland.enable = true; + systemd.enable = true; + settings = { + "$mod" = "SUPER"; + + exec-once = [ + "waybar" + "swww init" + "swww img /home/preston/wallpapers/bigrobot.png" + ]; + blurls = [ + "waybar" + ]; + bind = [ + "$mod, F, exec, firefox" + "$mod, Return, exec, kitty" + "$mod, E, exec, emacs" + "$mod, v, exec, vencorddesktop" + "$mod, d, exec, wofi --show run" + ", Print, exec, grimblast copy area" + "$mod, Q, killactive" + "$mod SHIFT, H, movewindow, l" + "$mod SHIFT, L, movewindow, r" + "$mod SHIFT, K, movewindow, u" + "$mod SHIFT, J, movewindow, d" + "$mod, H, movefocus, l" + "$mod, L, movefocus, r" + "$mod, K, movefocus, u" + "$mod, J, movefocus, d" + ] + ++ ( + builtins.concatLists (builtins.genList + ( + x: + let + ws = + let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in + [ + "$mod, ${ws}, workspace, ${toString (x + 1)}" + "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" + ] + ) + 10) + ); + decoration = { + blur = { + enabled = true; + size = 5; + passes = 2; + }; + rounding = 5; + shadow_offset = "0 5"; + "col.shadow" = "rgba(00000099)"; + }; + input = { + kb_options = "caps:swapescape"; + repeat_delay = 300; + repeat_rate = 50; + }; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod ALT, mouse:272, resizewindow" + ]; + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86AudioPlay, exec, mpc toggle" + ", XF86AudioNext, exec, mpc next" + ", XF86AudioPrev, exec, mpc prev" + ]; + }; }; - settings = { }; - extraConfig = '' - import os - from urllib.request import urlopen - - if not os.path.exists(config.configdir / "theme.py"): - theme = "https://raw.githubusercontent.com/catppuccin/qutebrowser/main/setup.py" - with urlopen(theme) as themehtml: - with open(config.configdir / "theme.py", "a") as file: - file.writelines(themehtml.read().decode("utf-8")) - - if os.path.exists(config.configdir / "theme.py"): - import theme - theme.setup(c, 'mocha', True) - ''; }; - programs.git = { + # Define a user account. Don't forget to set a password with ‘passwd’. + programs.zsh.enable = true; + + security.sudo = { enable = true; - userName = "Preston Pan"; - userEmail = "preston@nullring.xyz"; - signing.key = "2B749D1FB976E81613858E490290504780B30E20"; - aliases = { - co = "checkout"; - c = "commit"; - a = "add"; - s = "switch"; - b = "branch"; - }; + extraRules = [{ + commands = [ + { + command = "${pkgs.systemd}/bin/systemctl suspend"; + options = [ "NOPASSWD" ]; + } + { + command = "${pkgs.systemd}/bin/reboot"; + options = [ "NOPASSWD" ]; + } + { + command = "${pkgs.systemd}/bin/poweroff"; + options = [ "NOPASSWD" ]; + } + { + command = "${pkgs.light}/bin/light"; + options = [ "NOPASSWD" ]; + } + ]; + groups = [ "wheel" ]; + }]; }; - wayland.windowManager.hyprland = { - enable = true; - package = pkgs.hyprland; - xwayland.enable = true; - systemd.enable = true; - settings = { - "$mod" = "SUPER"; - - exec-once = [ - "waybar" - "swww init" - "swww img /home/preston/wallpapers/bigrobot.png" - ]; - blurls = [ - "waybar" - ]; - bind = [ - "$mod, F, exec, firefox" - "$mod, Return, exec, kitty" - "$mod, E, exec, emacs" - "$mod, v, exec, vencorddesktop" - "$mod, d, exec, wofi --show run" - ", Print, exec, grimblast copy area" - "$mod, Q, killactive" - "$mod SHIFT, H, movewindow, l" - "$mod SHIFT, L, movewindow, r" - "$mod SHIFT, K, movewindow, u" - "$mod SHIFT, J, movewindow, d" - "$mod, H, movefocus, l" - "$mod, L, movefocus, r" - "$mod, K, movefocus, u" - "$mod, J, movefocus, d" - ] - ++ ( - builtins.concatLists (builtins.genList - ( - x: - let - ws = - let - c = (x + 1) / 10; - in - builtins.toString (x + 1 - (c * 10)); - in - [ - "$mod, ${ws}, workspace, ${toString (x + 1)}" - "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" - ] - ) - 10) - ); - decoration = { - blur = { - enabled = true; - size = 5; - passes = 2; - }; - rounding = 5; - shadow_offset = "0 5"; - "col.shadow" = "rgba(00000099)"; - }; - input = { - kb_options = "caps:swapescape"; - repeat_delay = 300; - repeat_rate = 50; - }; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - "$mod ALT, mouse:272, resizewindow" - ]; - binde = [ - ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" - ", XF86AudioPlay, exec, mpc toggle" - ", XF86AudioNext, exec, mpc next" - ", XF86AudioPrev, exec, mpc prev" - ]; + users.users.preston = { + isNormalUser = true; + description = "Preston Pan"; + extraGroups = [ "networkmanager" "wheel" ]; + shell = pkgs.zsh; + packages = with pkgs; [ + # thunderbird + ]; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + nixpkgs.config.packageOverrides = pkgs: { + nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { + inherit pkgs; }; }; - }; - # Define a user account. Don't forget to set a password with ‘passwd’. - programs.zsh.enable = true; - - security.sudo = { - enable = true; - extraRules = [{ - commands = [ - { - command = "${pkgs.systemd}/bin/systemctl suspend"; - options = [ "NOPASSWD" ]; - } - { - command = "${pkgs.systemd}/bin/reboot"; - options = [ "NOPASSWD" ]; - } - { - command = "${pkgs.systemd}/bin/poweroff"; - options = [ "NOPASSWD" ]; - } - { - command = "${pkgs.light}/bin/light"; - options = [ "NOPASSWD" ]; - } - ]; - groups = [ "wheel" ]; - }]; - }; - - users.users.preston = { - isNormalUser = true; - description = "Preston Pan"; - extraGroups = [ "networkmanager" "wheel" ]; - shell = pkgs.zsh; - packages = with pkgs; [ - # thunderbird - ]; - }; - # Allow unfree packages - nixpkgs.config.allowUnfree = true; + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + nixpkgs-fmt + rnix-lsp + light + ]; - # List packages installed in system profile. To search, run: - # $ nix search wget - nixpkgs.config.packageOverrides = pkgs: { - nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { - inherit pkgs; + xdg.portal = { + enable = true; + wlr.enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + config.common.default = "*"; }; - }; - - environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget - nixpkgs-fmt - rnix-lsp - light - ]; - - xdg.portal = { - enable = true; - wlr.enable = true; - extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - config.common.default = "*"; - }; - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? -} + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "23.11"; # Did you read the comment? + } #+end_src diff --git a/index.org b/index.org index 59e30e6..95816d6 100644 --- a/index.org +++ b/index.org @@ -64,7 +64,7 @@ website: #+begin_src shell :exports code :results silent cd ~/org/website git add . -git commit -m "publish nix config" +git commit -m "change readme" git push origin main rsync -azvP ~/website_html/ root@nullring.xyz:/var/www/ret2pop/ #+end_src diff --git a/journal/20240301.org b/journal/20240301.org new file mode 100644 index 0000000..78169f7 --- /dev/null +++ b/journal/20240301.org @@ -0,0 +1,11 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Friday, 01 March 2024 +** 16:44 +If I don't journal, that's because I am in Victoria. I am currently boarding the ferry. diff --git a/mindmap/limit.org b/mindmap/limit.org new file mode 100644 index 0000000..946e4d2 --- /dev/null +++ b/mindmap/limit.org @@ -0,0 +1,48 @@ +:PROPERTIES: +:ID: 122fd244-ffeb-47d0-89ce-bf9bc6f01b70 +:END: +#+title: limit +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +A limit in mathematics is a tool used to describe the intuitive process +of a value or a set of values tending towards another. First, we will define +limits as they pertain to sequences, and then we will define them on [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][functions]]. +For a sequence $\{s_{n}\}$: + +\begin{align*} +\lim s_{n} = s \iff \forall \epsilon > 0, \exists N , n > N \implies | s_{n} - s | < \epsilon +\end{align*} + +What this means is that at some point in the sequence, for some choice of epsilon, no matter how small +it is, there has to be an index where every term after that index is closer to $s$ than epsilon. If +some single number $s$ and sequence $\{s_{n}\}$ fulfills this criteria, then it is said that the limit +of the sequence is $s$. Generally speaking, we use the set $\mathbb{R} \cup \{ -\infty, +\infty \}$, where there is a natural +ordering: + +\begin{align*} +\forall a \in \mathbb{R}, - \infty < a < +\infty +\end{align*} +defined. Note that we can define equivalence relations on these symbols, but algebra reamins undefined. +** Limits on Monotone Sequences +An increasing sequence is a sequence $\{s_{n}\}$ defined such that: +\begin{align*} +\forall n \in \mathbb{N}, \forall m \in \mathbb{N}, n \ge m \implies s_{n} \ge s_{m}. +\end{align*} +and now we wish to prove that the limit of monotone sequences always exist. + +\begin{align*} +\lim s_{n} = s \iff \forall \epsilon > 0, \exists N, n > N \implies | s_{n} - s | < \epsilon \\ +\end{align*} + +#+begin_theorem +If I am bad, then you are too. +#+end_theorem + +#+begin_proof + +#+end_proof diff --git a/mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png b/mindmap/ltximg/org-ltximg_02aa3ea174cc91456ea23713ffe95af053dcb277.png new file mode 100644 index 0000000000000000000000000000000000000000..78e053412ef12344a86f167d8c3112204b9920aa GIT binary patch literal 1470 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 pQ`vfK*TJA=9rOd-&hzJ7&r?& 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 literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png b/mindmap/ltximg/org-ltximg_3031ae29e601c6ac7ecc06693f894f145327ab9d.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2fe2d1c852f88e7a85f744401436824f9cc80b GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U(qW?*1gAnF{+z`$S-;1l91C#QGz+L!#| z&Us7rO`f@_t!Ig*rd4&r3t$S~#q}Q67dHDDzuiAL_;Hl@~QTd)1T4Wg*7&r?& zB8wRq_>O=u<5X=vX$A&{dQTU}5DwYogoK0yqcYzW43}g!OYE4-($Le(-f)BA#15t- zd$@RbY=RuvyqNd)Xx3H);3w;uBgm8^TmxO4AXoi%9fs+ SDbB#az~JfX=d#Wzp$P!-xLTb6 literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png b/mindmap/ltximg/org-ltximg_311efb83a45287d808391c0fb75227a21d372f1c.png new file mode 100644 index 0000000000000000000000000000000000000000..5002da6f88c345400abb4ba2c401acdb1d39f54f GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0y~yVEDnnz#z`T%)r2K7s zds9=>YVyoYDe1NImhAKKPhPe0YFYZ*W)zD#JVBjq9 zh%9Dc;5!1sj8nDwq!}2P%{*NkLp*qohWL7jBudoXx*2$U?%mR@e@;6IpMGW3#3Gjy zzM^AIL~ES}znDuxVDxpqrE-f_+z{hd?l5)r@LA5mKUeLOfb5wLg_aD}4IY}l{E9An z@0;77d$*=+<=fWE{m*OXeZT$u_sqzUrq=G~JnVlRtNyx+?R>t0m;`@_#o>pZ_s=W+BGG(lvK2 zo3d}Ml8Vlpt#fDIkdNFJFWxuD=W@cV`__k-v6r6>ez)v7i|yjyhZ3cNlD_|*ciExX z`)-^!$G4SYW{rCuugyr}=#Gaa+~q5u zy=BSrU0c_ow)EKL6<6{u9XjH(>P+_GKg<^lI?B0P1RhAY&u?>oe4_WWT6NMi-o1vb z6Bb$7|C+$nrM62~Y)f9$PpgCmMy|^9(so_D(~9fGWo}ow?)o3ZYU+{L zB=Tu`e@%|jy0(0a`F=)%Pizd#j$F&K&TPJZHuc%Z!=WBO#cXe04UF=(+@rck%U^o# zu?LIqcWUat?AkW7$zbD`le1&kKUh^=S@Y_*iSRA=yE0qKRtCM}bj(QA`t7ml^oP|a zdUb9!+qSs%lse_D-?iiFqSm9qVrB;{&)SP~M&@jY-}*tw;7oSt&&^HZKil_xUN(Qt z!q=;-Dx@CO-dbh5O+Nj9T~PF;v|0MMqi5`^kJ^)HEV5czQ#M5E*`X`P3_`cF&tZR2 z?&o#*$f8USYt`Is;Z|m6<~AMupnq`HKdlc-Eqha%>oex%Oj$R}(><-@^M-Q8U|?YIboFyt=akR{0Il!8+5i9m literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png b/mindmap/ltximg/org-ltximg_3494ac98fc90ad51d44be7f0bddfda7149ce8042.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc2bc948fa6d76739e585a3601527a036700a6e GIT binary patch literal 1504 zcmeAS@N?(olHy`uVBq!ia0y~yU|hz)z#z`T%)r2~Y2UXH1_lO$0G|+7IXS(v*S>7s zds9=>YVyoYDe1NImhAKKPhPe0YFYZ*W)zD#JVBjq9 zh%9Dc;5!1sj8nDwq!}1k!#rIaLn1hjhR0^ego^yzH2dbwl(e$Vowp_}+hppI<#_km z!f$6q*CecZ>lUE0V#$IPp(mEDogkigq1{aM@ulUDE?>*g-Z*LPRi%Y5*tAaAo!ItI z+-I@a)QHzjtxaJc?(Cmwz1hAq;`Zl)_dD-@ziV9l?oRbLy>cvE(j`l-KVFJbZ1Rf7F%r4=mARm@+zYt5H6RoaW^n592^S9CO@->YN)wuKy7 z+wMm<%I=eOJNSG_`K#EOA-1zuG@UB74ob~gQ}i?cR*6HHs{uMe4939 zo>GOI<;=+R_1X-!TF!oFxNKw^FC=bTYx?@Ew`OUYVDl|w6~VpB5A0=I6Y8SU@9(oq zOXhUp#JFG$b#?Lk>W35fBpT*QuWx#tEz|#8RJTra-x0fTg{qLg6I*%RKRmCVXB+zM zkBi{^X?rG?yiu&|lHSPtXVrr*jLVN6ajx09sz&c=%k#HawGvd$o8NkAG%4GrR{eVS zYvEe;Bd0#Eo3p@G^u)^0Mf`3PUO7y+d80e^^50yw0~Zh6`q|zhwQ>3ZzJxs-IRdLL zlpj*F(OQ04&-coS`~Ld(p1wSMU(+gUM^Tg5RON4%79}(ZF0s0hX_=^5s&e3BS&im% z#jiTDzvLF(-n8LpP%~d|y6C4fuhLBWzHQkky1Vhq;swiy#r5oJy13Zrh}5qb zp@SSkSFEFdJ2Kk6yK1@M@w6tkmdFKv9|k@;UR?0YXC2Qq+eiDp6&(^QyKS1UQpbJQM9_oH+^NN9rGKH$VP9`LYl zpA`B^X-T#3<>Z(8%ak_rEuC@h%%O^A$EYh$9ts6>tnOaGakXEw{cFE|&hl+*8-ACB z{FM96t)q2}t#-BBH@m5yvpQC^9{Y7cD(HKWyzei)@AGup8^R8|mEZWtlQ#Rj;x=UKE`VCA-`%J?;VUeCKMGU=V@KeIpY8Lu8| zsxp7I{KCc7ZIA!I(iKkCJ>V4+R~M!fv$9PuHMvUcU?uaLYp>>TH=XXWi)iD&9H!S3 dv-zX_x|ZM-!n(IJ7#J8BJYD@<);T3K0RXxd+H?Q_ literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png b/mindmap/ltximg/org-ltximg_362848eb7906c9ed12c9c604b7ea46dcbb475963.png new file mode 100644 index 0000000000000000000000000000000000000000..b319524c936f7c96a9a8515b1ee8cdbe0daf3305 GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0y~yU~FMvU=U|vW?*3WDWO=u<5X=vX$A&XE>9Q7kOdmD8i|wsqs%C<#O1GZi5%jv%3mEuKcmZ^oG}(l}WsZ-1)P9>KR<8k>YZlOR)>aiYwMh!n!=U+_sOr@N9W0J^EbMpdc#fCD@>^?bnvi^~!XkjuiSTjL`C@?B5E=V%qR$Sw}b^4ODf_O#dyC8@Iyt8$iR z@WxE8DeLiCC|34l+PkkVYr<7ip7D8hhfF9)SbL%9F8AUkMGG4izqERB$LG-6q%G$r z+KbGVw`c!2H>)wIB<)$Uvjcz2hIW#r^OlKyXxi)9 z*DwBam1VeV+U7^!3-;}3-XOMX)#-Wm4y&~$7&9Mg)Bf>h!butZQ#W4zwo|WdVUpj= zwJkg-HDR`cQat1Bk2Cz2s!q?FP~UQIbNI)_@rs6-75^C4YPrAJ8ak0P{KHMf#akOp zzq?G}W@VB)`*pJL>BC~eoKYXVvYyQRDr@BT<@k-7J5GN*FQhhkr|2{2tJ+MwxZ3E* zt*=YxbA*3zynEx;NxmAh6;GWQk5BIRnKW1LfTWQ(59fRjmYUU32mHzuP4ZRin9rph z+`g&h=OHnnIn49qvqCuy=cmt~;JJiJ@$s#&v~}C&uB~q1-mvfIllJEsVj&+A(p1l9 zO`K7_N&NrDu8M8l%r9-sV=n${<+TgtiH&z$FzZ_Vtsb^r z>V@%l4qL>2ZC=2Xwfwc2*{l3zFMiJ`{#Wj&KQB$-u1J$R7R_^MRa#%Tg!74ATtru~{;Wiamrp9e+nS7x#72)yxTmigSni=>wd>p4XrDKD%(Y`^L-JRVzzE``%snGw)_b@8uW1abD;4-Qy1f0|SGntDnm{r-UW|pUO=u<5X=vX$A&XE>9Q7kOdmD8i|wsqs%C<#O1GZi5%jv%3mEuKcmZ^oG}(l}WsZ-1)P9>KR<8k>YZlOR)>aiYwMh!n!=U+_sOr@N9W0J^EbMpdc#fCD@>^?bnvi^~!XkjuiSTjL`C@?B5E=V%qR$Sw}b^4ODf_O#dyC8@Iyt8$iR z@WxE8DeLiCC|34l+PkkVYr<7ip7D8hhfF9)SbL%9F8AUkMGG4izqERB$LG-6q%G$r z+KbGVw`c!2H>)wIB<)$Uvjcz2hIW#r^OlKyXxi)9 z*DwBam1VeV+U7^!3-;}3-XOMX)#-Wm4y&~$7&9Mg)Bf>h!butZQ#W4zwo|WdVUpj= zwJkg-HDR`cQat1Bk2Cz2s!q?FP~UQIbNI)_@rs6-75^C4YPrAJ8ak0P{KHMf#akOp zzq?G}W@VB)`*pJL>BC~eoKYXVvYyQRDr@BT<@k-7J5GN*FQhhkr|2{2tJ+MwxZ3E* zt*=YxbA*3zynEx;NxmAh6;GWQk5BIRnKW1LfTWQ(59fRjmYUU32mHzuP4ZRin9rph z+`g&h=OHnnIn49qvqCuy=cmt~;JJiJ@$s#&v~}C&uB~q1-mvfIllJEsVj&+A(p1l9 zO`K7_N&NrDu8M8l%r9-sV=n${<+TgtiH&z$FzZ_Vtsb^r z>V@%l4qL>2ZC=2Xwfwc2*{l3zFMiJ`{#Wj&KQB$-u1J$R7R_^MRa#%Tg!74ATtru~{;Wiamrp9e+nS7x#72)yxTmigSni=>wd>p4XrDKD%(Y`^L-JRVzzE``%snGw)_b@8uW1abD;4-Qy1f0|SGntDnm{r-UW|pU7s zds9=>YVyoYDe1NImhAKKPhPe0YFYZ*W)zD#JVBjq9 zh%9Dc;5!1sj8nDwq!}1k<2_v*Ln1hjhR0^ego^z8mR@EybLL&2McbCG%;B9B6|mhg z>;A4LQJ<}MMMOBYG&O#(-`pblNr~szg)l=sJJI>u+-?i4z8R$}Hu=Br)d zmu(&wES+%Dq;AVy<#fNVv)!Gto62@P=-<_J^TfQegK6Rm=ZeZ7opn?7dFb7j1$$;a zoAJBjh}7ek-I3)<)6_QD?@=qc6O+@jWxLOE+rI00x$ZX-Z-4W$PYn9!wC&=#gw^4} zO*_gyKb~Y?`7!O}s^j8^zR3lC5&tAt$eEnODI>gnOX3^#H=GZ0{H))rZ7Sle5*`Jq`J}z6Cztcg3-GNvck3}n`>fE4cY7xGH}X7@PP-j7@m>>0LX>`D zKxG^Ek#~AU+AOAC9bz9=`h~YHuJjA4=DM2lbaM4wlNqdR3D1saKlo$yU7cGdg5$Zh@7`~^ zG;MLYiC|kCgLT76p$&d4EY~=tKWsQN<=oO&Df?aQ_ndyreqGaSm1SPTq^UMu>p!Iz z+}!85lC%4pqWrV`g=aNnf5~xmJW1#Z?>$i26n9(0_*j+Fo8DOWKYv*FrGgy z)3_q?;qPTXjCbUe8cgNq`rx^~OYy@>?nMrN4hC{boIm{Pa<|Tv``=G|>2 zH!iwB_m^G8i`thz=e)jleUn$+3WZso1>s&wCX1Ijgw}J^#HERqy;Gi=l-~bism1q) zYb0hY>vP_8wDG63@su^n(K8NDO<;TZ-EHgi-#bJhmYg=hq_g( zpU)$AAVe9E#kVkA||1^*~Q#= z%9{QSJEwpR{W^Q~)r*E*zJctAnXYTe^tQBg~fe z_MOhm-Hj9L-g#Zm=n#4z+S-3~zhw6jiv;6&^P0c06|anx)LW|A%<{xSjn~Z1YJYFZ zl8)-o^;>MegiBoMF^yVnP&xmWFWi1m zYpYs|;z6my7OTz&sfQo7W8J&_YqwSF4KA1LxA$s3_wTqg>&D;tE_ZroUDkg))8*FA zBbk5RGd|VQa-96)h0~K8seey}xO#4onY?}eQ-SHH7kb~E5!Gs+*Kjv#t#RFRq0Ri$ k4m59=$X~VY=AZcgCxhee9r`w(fq{X+)78&qol`;+00VpMb^rhX literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png b/mindmap/ltximg/org-ltximg_3b801c9dd1e409d443c9c7a9e6e56cec2659e2c7.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7bcb5dbe5a3f1416b087afce0e31f2c5681739 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0y~yV2Ed6V31;AW?*1Y{ytZdfq}swz$e62PEPOawJ&Ww zOD50UG;hg12d9wgh8bJ;-t_TLUbXRTesQO%na9CX&r{NCH8rimqw?R%W`;8`FmM)l zL>4nJ@ErkR#;MwT(hLlYuRL8GLo5VqgZ5|Nc95v;%W>b9a+bceg45tmc@E=bze+5DS7$QHL2Yqj@S9}j$Lrt_x_yKT$!W% zf8N!;zx#6EZsP?LWPO%c2HjIm%1fR-$#kllS7hPF{BI3T&ND6J?72_h6Zj##LUZP} zNu7%V?#VLhZ+X+aOn6D4(&isN-v2VK9Bof1lirPEu zLCLF(zD{qwDmEe4eg^BEeN1)y7Ap+RXU08#RKL$BJSNGW@A6-cAF^ipGj}ltGRK{d zW0a|6{@27}+0giv;q{siEhm@HH+H+O%XUTTtx>P`yz;~AzD}9>E%{BS+FI4fqc>J6 zY(C?+@Q_WU!Y%JRj4y?L)Et|1xSA5cTCib1`g1bM?zwKby z=-fQ7`F=BvxoEfh}QP?^;hyLH`8-XBf9 zY_&i3{@%II_u8J*2SwJbT^yWfE1tu*^$zzIrAdz%%iPs3{S;)aSpG7=>i(13Yjw5L zubnqo_;K|z=b7so`gm(j84DN58X7!Z?d7Iqy=`AXs*JDA>zGz+ua}Gdl`WWlVD<)` mZ_cLGTMqH3G)W4-XAFBERk$Vf-yQ}A1_n=8KbLh*2~7Y&*%|== literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png b/mindmap/ltximg/org-ltximg_4a00d3f9faf6b95dcf6784b6f9242a10c0490d4b.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1c7ada9df7d925149ea041b106fac0d69a8306 GIT binary patch literal 1042 zcmeAS@N?(olHy`uVBq!ia0y~yU}R!oU=U|vW?*0t;*I&wz`$S-;1l91C#QGz+Lx_+ zZ)$2Q;4aVM|H!Dww@*V#ht3P8afON44efX zk;M!Qd`Cc-ajG_-Gy?;3ho_5UhzIZ1(C8eVK#6~E-rSfw_vJcGucaxg9Xs1sR;*x& z9VRiVjcTDX3N;G#9lmc%WI_7&#cRDW)! zv2pckla-U-Sl<8t_y70v=El#@EMm-I`4MBZa^}7>TVC0!{+S`9U9nwPwCY%!^0iCb zeu{2Nc9wsV+ZUd(?CGq=HpbmfRX#5~rrnZ=6|E{{U%%C*^~;OQyIL1Ro_0Q(JpI!A z+0RPkirAaI?ws!J;hXB;ek1pjppW;Hb;nqm1aJ3BO8nBBTf~09V247iWrlsE*>clc zlk^`mSo>a{qs9G0s_tRior9AD?y1HUB-VEooIa(m$DDKjEw{~zZ<~S)moV?&GdXDY zi}LbVBh6KEovml@I39MmmMkNZBfVx+|C3mG0N3{dEQ zCg9C*y{MyPqm;lyKHck6W=1|+vFSD2a^0l)n?EnQ5%Kpz=*um=zvsMoCwlrRCkK0L z(O&LG5d;1VuMf8jT#GIkbKDV}@9X(7^z@~m`a{chb_xHAyWhr9;yCk2=AAeC1`jMW zCY?W6>M)maj%RUb%eH0jP1>T&JJU=y$9gXgi}_}@zpLPb&Py>y=}#B3DrM%rSsc31 z%(pw+=4W^f%c0lj&IHi&fW1(>FgoKydU?rd)Aj0dR@Fwd%OAQA;*a} zJ9bW$Ig)rLV8_Enn;A^wf9+4*a7w;WYS#Hn{k^}#br~D79+d5Kbvbrhd{Wx#f&dkM z(`7H~9<5jvx_Qr!rRopwHzyxVlz4A5Nil1+sl-f{DPdhdA}%FcztH%gu=gsT0GVy*|0>_T`|*784$3gcZJV zU#t-=E$Y8A=bii$3CkbHL*2Zp>#dbT{~n(+?@#>M|4b7(ZisLD`J;(}fq}u()z4*} HQ$iB}4D9aL literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png b/mindmap/ltximg/org-ltximg_4d0d3071a4f57e81d06a60024812fa709c226a13.png new file mode 100644 index 0000000000000000000000000000000000000000..0fab66a033d6428873ca75c5cba71b0041fb0227 GIT binary patch literal 1813 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 I>zopr0IM57cK`qY literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png b/mindmap/ltximg/org-ltximg_6902b949dc40801941d169abb6484f949be7deca.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab51ce9e6d10023eb3fede88719ab40b2bbb276 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0y~yV6b3dV31;AW?*0tIMXD+z`$S-;1l91C#QGz+L!8v z8K!0)Z9Pj;(rYKr+@z^#b@0^l{Nm148_$ME4nJ@ErkR#;MwT(hLlYIi4<#AsV8&0oLBkjspLR+~vM^mAeGgTnmen+Q`#!BjV21 zu<(c|mkk|rHJTQAeB$0B=sEq8o2@iA_t~vxZUQtoqHlcYF+I zkJ~?Faf%W7`6Jo0`>LC!E_ zj5B_}8n4^)hQdP&j;0;)a9hW{`Iw2#k|Wc#9sSlFuDP3ieCEE7C8r`@KfINmPf7|V@?&)5lH|4B(ehkBcJB)Um(V{IYTTX8ju??ELJk?)8y8GSIXFOMhzAiq< z@ww^iUVF8RLi4g)$T281ifT#HphhQetANgvE<^z@7itML6hsY z{O5ZvDltpQ{j#FSFAW!y?jO%y&%E`#|J9+to=?^0=(b98xlJvT(`Z_ja7HLHu!XU> zooBQ5T~^M-D;+QNXC|>rvgEPu3m4(+PG@?(Z;HyMmuv4Yh;^-vxwri;0|Nttr>mdK II;Vst02>3=00000 literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png b/mindmap/ltximg/org-ltximg_7257612d877b79f25160876e21c09f4a477eb402.png new file mode 100644 index 0000000000000000000000000000000000000000..23456d8ad843972e3627b9b04f36d04ca6f0c014 GIT binary patch literal 1951 zcmeAS@N?(olHy`uVBq!ia0y~yVA5e=V31;AW?*1Qdn)D3z`$S-;1l91C#QGz+80et zt5qA%ZrywH;Hl^N#huj+GaQ^keEgG5%{;=R^4ofrOrE)E-jaPO>9rOd-&hzJ7&r?& zB8wRq_>O=u<5X=vX$A&%QBN1gkOBc0HT*BG7 z;Mk7d22QnO#cA)(%-y*=I+{yr&JyG2HP2@kr|+{iF5kxR|MDcM%X_3YrRfmcWxcjasPExg+bgXK+a?3l1i`^faw>C;W*&fzXvr}pgeqcR4GqO{~qckY|8e(W-C`*L(ch0mrPr#PpmM9pqg>{VY=mT|@@@?FHs zrDxUz$sbIyl$qBT5&7U>Fz0Iv$yup9PhYQ_HoNJ}ZHKQcW&JM}e39~x2)b|~qH> ztPMK*R!!2K5hNp_@H|sgarVhg#xo2Q61r}D(``%TV+~pu5*xX$Ui-$Huc_=&4EL@Y z+|Y{2J;byoGc+tCGp^G=V%lCWqXz9&;!EH6sfoDG)DfML-K3wr@vgdV^S3*zKh(xX zKKSK7snt#7PKDaL5Jd({iPA$>u3tsMa%%m07wCN6omg;lqilL{an)M(d|9*5zP#%8 z{Q-=Bjm@-IANjD=c?;KrTX)ylT%PnaU>-k;~dD!jd7>b#yOwOz%JE0V9UWi3w-o3FHKh0F`H2=CAddCuE( zBsuOWr@V};>pA)=Y~Qu(Jc1n4{J4U*#XWuV=}AWYmo-`ODu;u_Y>H2d-8v&Cxc~iP zoe#wYlOFtDmh^wkhYhwyM~k#7f^&rLKNqatD;6oEzJ_nghVD7Wy+?nF?9_SqTjGdz z{HDFO>rXa4ezaQk&eB}grNT3pwtRI9xK%&lXf)q!i+OXVHHMw8bLlG!)48)T>H*`A z*e?a;Ogh4R+YSaztp3NtHD}Gvvz7CoKD019Y+S@`zyooO2jj^AWzJmYh5@yavD zRAc_{%$;^}oB#FCN(#4n*|tBrqQU%hMbKtVBe7RXn;&rZeC8J~s`KF1zqzhl1xtS$J1noQ7i6k<@-5V$iur+Y z!Ax((XEj=E$!aYfDqY!AUd!Z7@q5x5EYPfB|L~$~WKpKY7SqU$>z7l~CwKk*i*kLS=WPUgY?5xv^wy&*^%VuXKIc>aZ`x4O%>9 zYk#FUCS6RpzGODH5dZl%S*9O9TAxecy{r&)@L1%(7q;sit4-f`J!>>~{Z@8 z4xGuEpSmdaq|%}H59fz^&F0N}>$_!ADaZSUeu1WFvkQrnSnqv}yte68QIhO7#%cH5 zw%&KCS>Vh1!%;C}nd#9TLOZujuwKZ0IFhw&R-;&k+1v!#`YH3fq;9XSqh>f&Fsn^9$gTe~DWM4f0>q<8 literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png b/mindmap/ltximg/org-ltximg_8975639a2a55c6690a74f716ea57a8b344d56465.png new file mode 100644 index 0000000000000000000000000000000000000000..07bc866bf95da24ee3e141452bd45ac1e81b67df GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0y~yV9;Y=V31;AW?*2jswv*jz`$S-;1l91C#QGz+LyMT zC6i}vnzv-1gHuR#!;GzaZ~FKruiAJvzqr%X%;Vsx=PBv6nwnPOQTcCWGs77e7&r?& zB8wRq_>O=u<5X=vX$A(yC{Gv15Dih^iPqlCjv}r8o1Sbu&tj;=B^8{Zs`H57BYA#D z?*yf$AFD2DX?W&OjB+vSEfxF2n63L_*_Mev8O2t*9xP6me{!hi`<>0@?|3#l$UV)} zT3x8s^;>q;-95^|&#xLj__Z_NOFCJ%ry*Z8$USqxmKUDD@v# zPf8j`HtBFV2PV!pnC&9AYe&uAIwr2-Sxc`q?!L=@iuvV@SwgV~72o||!}dN#{C}W9 zP)mQon;Zty+RoIE=`mX^-5Qr$^j9aW7ns4(AS}sVJ+;8xb=kgoGrx#iPAHyoAzEmW z*5|VxPdwN(-c1c(ce0i%m+7HE!6GkaHg4}fc@75@cb}af9kapU))61I10QadiS5~9 zrK82T@$k{bN^^x;xc2@~yC~27PgDN+YgM(zA=FYn)a-}{SI pA8D+%`PbLF;cIQ?6p;`7&jOu1ed6{^Wnf@n@O1TaS?83{1OPtn%-H|{ literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png b/mindmap/ltximg/org-ltximg_89fffb6e58aaca63705d0802a5198e2a44b521ee.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7ed3591bbb2e1c1fe8a1e211ad3d9cb705b69e GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0y~yU<9$HSeO|Y81}mGUu9rmFbMDoag~$PJA3U*b;Ar( zGmo~OB`N8(lV@(y)U-Ny>Un-~=cb6&JuipR6q)nl-N-$UCDU;Bpr$wDy zN>vBdB4lSAa{BUyFPASwhbN7H%T(c}sE8OYN9nr_N#c{8E~qUD+-Stu%ptbVeDikm zYGeK0;4^!F?)$#)ds_NE8HNbg8j;-%IxsU` zV_LwU*-qxB4grf+38Z~)m2@jvc{V_2;g98?lRmaQtMXMm^Q=qKtz^jwkYIFklA#mp z8BL4iWwvcU&TIW@)e(K;HQ8JFgHQ9~o4T7@7NwM~_Sh;i$M}0O%j_Oi5!Iz#C7uT@ zizh1INYPoSp&5GQR!92s|7xdLk1`sGYdwg2r=Z?4amVe*_WepTuR`UocWjlDX ze3M?F(T4MmN#zC_T*r%NeaV>CaU!ivBWjQ3ma{(6*KD@4B|kN0I^GhOBRomB`rQVP z?QhsC&iA{Z{iMG$ORg`9R8rbqH}z2Q z{hApoCq8|5lykP(K1Xe-3gPVx)?aLNuQl0DUdvbRxaLd7w1CuHuP*srA}T9X+Z4h( zMGu@3?mK+Xx%GjG(`waO8DH+5^Ssq8*K3=krnJd1+^n|p$;o5u5(^%|H#z*CSQ&^fZK1euC4_(#p zd!bfo7N_*IhH%kc2{%^mFG$Q4N|Evsbu@m1&O7qAeynr4 zyZyc5T%9&M+qOwM9oJSTq+ZRR7{@#H_%i*)x>gS*da5f#ikGi!XkX~Q-ZA!?q>+`L z_BGB}Gd=z&ldZbzgWb6|i5fkAniriGt#~v0LbtH&`=>$5C6O!gC*^-QP}_6r#p>Cn zvfKhywY|-%yY6kTo3!rtv+WIUlBOF*$@i>aDejk;r0VovS!sQ#U}HU7{r6M(U!F!W QFfcH9y85}Sb4q9e0Gz?i;Q#;t literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png b/mindmap/ltximg/org-ltximg_8daf51c4403546d8b411e27b57b947181766471b.png new file mode 100644 index 0000000000000000000000000000000000000000..88b8306d8cc03de343dd24199dce9a0d76c60bcd GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp@3=9kcEX)iH4EDV*KoSN4J|V7ha(ZX4eF=}sZ|hky zZ^^!t^jb|#tI0DrnVNa{_$TKVcOE?TeAULY4o)G}4Kudxy*Y(*#YF}N2F?PH$YKTt zz9S&aI8~cZnt_3##M8wwghMttA)qWZ!6QH6LCl5;jfw?K%+}6{OwNkT&f?7+%!lRJ z*x1w*+2S-6&MF-^pvt{OQr5wTt?d}Qf*SMTqYP|ESsiBGZb(jMp75-o?yIy%V?>cd zQ>HfaW{C-Df=nw@5*`FUxWT$aLZV0BoWYafh?mfjhfA)WWnf@n@O1TaS?83{1OUB^ BQk?(* literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png b/mindmap/ltximg/org-ltximg_9418fd90c2cdbf77a1865932d89612ee24845a24.png new file mode 100644 index 0000000000000000000000000000000000000000..d0755a9fcb114e59bb5cf398b997a79248eff733 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0y~yVBlt8VBlh5W?*2LaBt@Z1_lP*0G|+7IXS(v*S=_K zTDA2o*}C`Us*Pt;(rX=@LJppKUfnRm)Xc-jKY8Agec@60`Nf^TEo@>L7#KJUJR*x3 z82FBWFymBhK4}I91`|&g#}E$LD%C5u_%5;_CA|J!w1itdvlNa|eFfcH9y85}Sb4q9e0GfI^iU0rr literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png b/mindmap/ltximg/org-ltximg_9dae828b4101a47202d449c337e4e360e5b9032e.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e2d208292f66548c099b5e439286852767bde1 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0y~yU`SwKV31;AW?*30#qY9)fq}swz$e62PEPOawJ&Ww zOD50UG;hg12d9wgh8bJ;-t_TLUbXRTesQO%na9CX&r{NCH8rimqw?R%W`;8`FmM)l zL>4nJ@ErkR#;MwT(hLlYD?D8sLo5VqC++t;6d-cUKEpv{%L2hJ)t=4*v`zu#l~a>qNDzV!1c3YE%j*zIsHQp0hvlQ{F6(-Q=IyU*G@P5b$q?RiK> zsn^5_0($z)Yu(~&vTVbpLv$i?eA`=Yd~-Y&xZ|y+tIIaG>xU}C4|FbCyy??VwKe>$ zd$g>y=6{*EVN-19mrYYPJMHG#b7yUfd(c_Yc12V6g|q&j`FY*jRx{u4v3&2T(3@>D Tzh7fuU|{fc^>bP0l+XkKN_+BY literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png b/mindmap/ltximg/org-ltximg_a313fb998dcfa9c71cf9f6a0599dda7092c147c3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe029ee4f8319bbb01b3a1f7bc065d14cf7f7f2b GIT binary patch literal 1400 zcmeAS@N?(olHy`uVBq!ia0y~yV02|*V31>BW?*3OOc8v?z`$S-;1l91C#QGz+L!#| z&Us7rO`f@_t!Ig*rd4&r3t$S~#q}Q67dHDDzuiAL_;Hl@~QTd)1T4Wg*7&r?& zB8wRq_>O=u<5X=vX$A(Ccb+beArYKw!(uz6Lq+Un&-K|f^G|P5?&^2v@&vCe*HM~c z=et`(WZ{w%o02qnZm@fA%xg{3UKF{d$u4)T?yaPmc0V#abZTFCd;V?y>iFqGSJ1^b zdR<~yj>vP_bv&PAZM@Tb=glLjdQa{Y@B4h$IR4qZYT<^8B{!m-;xp zcWctQ)*8)gT_44by$mjP?SI22`u~pW$q--npF!+GX3zLezd8K;7EQ~y#;Ub)YiwQ1LN6zV9Sgl^@Jp@aie>G7 zseG+jjq}emtG_(`tYt$L^MbfbSFGGrEM8>>aqL~%zTWK1kN-~ZXZX&rC}O<6WZQ>B z(iz2kyH^QHeP5Lzk~zJhl3PnK^)g?kkJ-ONUswKK;ZbHSwYX_n`3ASio_jTWxOI6s z&R0En^&xOW@bcX1iJeOfpUS(%XZUPzi{-sGBjZ(2%S);AHrB;=WVa-6%!~T1lrrI1 z%lyLu8E1UL7|s}IpI>7bK27oFeogkq`I~cZUwp9G!F+GW(f1qwS{`#+oN50dU`mM0 zHH&L*I=1_bH*b(o`G1eKUyj>8(Nri&uV_!vAct;|hbrNh^-^zHpFI@7vSf zaDhYi_P)Em-uLQ6n7mW`4u=0%+13?uZ6@1}D+l^J(!Fg?i%gvGM!i!h<>|s30Al78!TYlzbuKb2&he8;{{mfOJUM&03efhT5mWR8NtCT((-r@bA z{mWaFaYLwv(7AO_d!{PL+c+n>9c9=zIqYHeo`M_63GuoIUb}V*>^NqXUYML&kk2K) zKkAoW$;)@s+g&Cme*37NeX=v4Q&NmM;;C*-icr=clOMIG*ZdC1P?(ip=w+%MA1ssc zq*narN2P*%t@nb#LaqX;*4?dIfjWkVlWN~z%=mxc&(z}|_cQ9sYP-MQ-M7>4pKAY_ zO8!X0g8Lhc%Cz=B7YNl5l(4!Xr(rCyD{1fF8z$#tzfQ=%*!wi{37_)X zb4DbkwkP9?IAiJ~r9P*{0RkcCdP?;J#Jd+798RizE@gM-f^)_37x!CM?yugFyW;hy zwVi7dTHGs6w)ZukZr0lo~&R zmfrRCmdie4UD0&9eolLM!R~3Av-P7_FUjs>V)0IK=K4A7qjJpQ`+q;?&fuDvW#}{K z?Yh~GsT-!fjOWg_nKNOV&KDO?E5;Jc-L&*8STUBq4cAM;XW^vkYYcBs66*V~a_<4IcO{y8 zCwBL?|4M07X3{(MPP*c+fVZ4-X3PDhsv!#tq$jE9AFb9=H81%8^(dpyNtvB9dbIy# zNZC)i7I5>U=7Hem+{np7&UbE_&6AR;l{%cne4YQYM&8{RWvvM+kt?@tbvw~4Xmh8M zcb(;tNz(C}W*b=YZywNzYf1HrstK6!&FuEi$10|GpCp(}j!7uZj9+y6sLGDxwo$Jb zs}8-{E$S5azR~r^p5?8{Z1EPxZwzm`znB>2`~AU(c^95OIvlqw{Xe^1wuSHRQ@5iT Q7#J8lUHx3vIVCg!094J7C;$Ke literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png b/mindmap/ltximg/org-ltximg_a4b84a731b6c881bbdc914223bc8e34684a5e351.png new file mode 100644 index 0000000000000000000000000000000000000000..ab2fe2d1c852f88e7a85f744401436824f9cc80b GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U(qW?*1gAnF{+z`$S-;1l91C#QGz+L!#| z&Us7rO`f@_t!Ig*rd4&r3t$S~#q}Q67dHDDzuiAL_;Hl@~QTd)1T4Wg*7&r?& zB8wRq_>O=u<5X=vX$A&{dQTU}5DwYogoK0yqcYzW43}g!OYE4-($Le(-f)BA#15t- zd$@RbY=RuvyqNd)Xx3H);3w;uBgm8^TmxO4AXoi%9fs+ SDbB#az~JfX=d#Wzp$P!-xLTb6 literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png b/mindmap/ltximg/org-ltximg_a51cf9411c47550152d2e408a23ef1f32d81e13a.png new file mode 100644 index 0000000000000000000000000000000000000000..0809c6128ee137b7e964e3cf3742119a28f7f42d GIT binary patch literal 1857 zcmeAS@N?(olHy`uVBq!ia0y~yU_8pez#zrK%)r24@*(Oc0|SFWfKQ04oSfd-YhN@q ztyXP3yLIo)gQuS77k5@S%y4iD@$pYKHS-9M%5UpgGI{2vc}w=Cq}N(-d}Co?VBjq9 zh%9Dc;5!1sj8nDwq!}34wtKobhD2~a4Ug>+4i)*gZTH`qH#2v~mQA;xsHky-{p;X3mc))#okmm%lqxQ~cicGHagK=3}3(tX-AyEGWA5 z|JnIFm7Yn8{}%6FaJG2nLy?;3nckBH{k@q_vynmMc=jee>IjKj*vn^FFZ!}4` zAe~{PoGn~*E~ja3NsZLT%WmBE2X?GI|3p)F_O6=?(+xiNal8{bzEO~md7RcF7)d9 zqPk~8&)3kU*McS-vyN5^cD-uvtnm1{#i7Ab+U49=hD9xCzj9+O)9w|VXX##Z<1?~0vl zH_OYjX5Lx0+$Uq(EXA57Yc5Hz3VgoK(`?4#heD+nIhDThtubs2v-*5nWY39^iSs&d zeJnaqxhAR4cfH$HPWjU-O8!W_kLy0{-JfS0K4b4+_sXg1ez#v0G0waBZL?|8qR+dk zd_SE}pMHi_m%~*2*X-I##@}*?EX2mA|$9b1mKCYhc zzUj#lJ9Ud|6{g2!GJ7uC-Le#a8>_~abL^gLhGg~e7t*?CMH&*c@1!uE6PpF7cc z36so5Rkkw^GB0aX3!Mm0;<8^_aj|WyS4rbjg{jjtIX-^t|DtTgTm7n4sp~?TpxgIr zMmuz$FFEU1v}EJlDHAn&LyzPwEe=h4!}8_lo95ogyLl^(wA~w)F_pyK;=1rN_=REI zajn>$#z6%E=lzzI9$EcjtIFc*Y(*Wu%UkS>uawLyQrnT&T-?c5wNO&#U3up*hoU8g z2D%(e4cULmSxbFB-Dl>Pbwb5DCMn>HRF&M#s%g#J61VK$zWv3_2N^kU3+-hiH)gav-d3T53q89t5#c#S=?$%E6x~ROV^g`~gI73&R_Ld!KTA`0Zik2AeUsbO7 zRIc~Sf+E@8oN`A$UMW@WGW8`vD$BbLon2ry;lbx8hLkaLTlyAeT?!J3 z-Ky(+GVYi4q?K9`KY2|hOD9-Qj9Q*BUtA`0Pl!Os1h*q{&!u})&RA)ir*tVT4&EWD z_A_ibFJ}weC5^Jovc*n*D;?G;^R?-;`V?rb9D|Fx=TG5 zVHICcIK4N6t$O{Q{fkw+?(9t}(uz#(3R~c^ZdsP?$NE)Y!%lC_Sz?$s>HO~3w{L`J zX20FMV}j4(%`^1(vDf%|PO1NII%E0zV{!~}4mroAqwBLY9=a5*DO{m(f}z*h^hmMB z{L@?0T|6Hv+}xnLZQcvhyw?|}O?hG2I*tF=Rh>&3|0YYn3Frt66x^=4DPQMBe8GYF zi+%^P>Uez-agO_3BhOnUEuL`X{lVk+xCFiXO!-7u9On8gZng+$b7QYcpL!tsz;ce8 z-U|C07p<}55PSGZvFXR^!*2RsH>Bk3*|T;`5o6$8@{#2@XI)+<|7r%$jT_%@njmm@ z#`#BFYmfO(ezPfBjX5vilGTJI^A$tSWNkKB<8a-(&s0im(t(F>R{1|$DkgW%??-Li zt9>(X>dm%$6n*|e$I6cIlcuv%wz`@LeiCeaxMzzV=_a`PzL+;H`$vty+2Cw)9=! zoFT=$%r+`C$98{tLV2&0!{)2uYiDwvTYRv<;8oTgrnSXOwi~ncu1&QO)MUHwyy)1M z+rE8mb&;Bk?<AkBKUcBG0&c6ANU&{T~ hJl@yW-lhC!Vz5ZftuMHd!@$76;OXk;vd$@?2>_OIe`^2$ literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png b/mindmap/ltximg/org-ltximg_b22bea268ced4d8ef1dfa95434f2ac46b41cd376.png new file mode 100644 index 0000000000000000000000000000000000000000..fefec5c10c27c78a98809987e74bda7476c42e22 GIT binary patch literal 1492 zcmeAS@N?(olHy`uVBq!ia0y~yU|hz)z#z`T%)r2~Y2UXH1_lO$0G|+7IXS(v*S>7s zds9=>YVyoYDe1NImhAKKPhPe0YFYZ*W)zD#JVBjq9 zh%9Dc;5!1sj8nDwq!}1ky*ynULn1hjhR5~@hl>2$_O_&~JT2 zsVgD{e>*rWno)6XZ*lrNpXJVGZWjFC=lrg{Z)=?X?A~R~utr_gW9Jl2E&l2m#6&2r z2=UyJwEUcVn4kakL=i4s`JH?R*$U6L?~1L|wo}N86Pvtp!x@Q(8@nZ4S93h!D_OXn zcaL*S+M?S>{mwi+ePG9uvr513Xd20N-t%gA1hwNFYaXem{d%p%Bv@ZJA82atu zjahP>`akuJ7f;-CE6$~+KH|xlHzD1#mfe2-%XDtSj}4EQ>c178oPA?!;hXNYnYWiY z)L%VOHd*CZ^q!qUIn@gTBBY+FUzPpjX5D_a&NuRs*qseC()QZ_o)BAnYv#@yd$+&! zj4%C~U=o-lvqtUH?~Ym~i+D4=s?Iq@8y0lltEvy3t6r6QB5cBL_Wr*?hGwg|>qTF@ zOxf4uT<04V_TcLRVOL`o&OI3#U(`N{|L4*El{c5Gfp6OP*eV9U^8D10%fBvtw2rmBzFEkqu6vTJk%q;Gu#EQn#)Vf8 zXnkJVrT;FaST|tzxdj&v+?sab@59xulW(`a|1+y&QCRG|$i6QLu`e~7^Ft;_mX+-m zy0F>k)5V@6izPW^pXIK-nQ(RTB;#y}OY0OlUeDa7-jTRgDk!uj@6z%^6T2q7{dVNd zibCtD_iVW=`PQ_>N@hF0NWFD$)uN~C4_&|U*vsX-)`ZFLr`~Wk_9)HRqAvZ_eirq{Jcea+#+ zlNjD!ikbarZ^`5Cn%Xb6OWk>{M=wYf?Xb01pIN}>FIyDlJ40WFt1zkPRV{ya;`M24 z9d9%bPwST|$*9Q=O4)X8b!F9p_W3t>m&h~LvU7INQGalBi?*b#w(_)F`V)EPMU`*+ z*3496wxU?cPHns4@wqwA4hkMRu2nE?cCZfTcUz`?U$YOf{kvtFuTm?0&S>TKu9nJU z)%@rDuFuYj2ZWjs;CGiOzCi>$E8lOJy;?wckkanAd=a;eNFU%fZ?EiY_hs&)L| zo0gD!;!E7T#q1v#ie`p?Y+HZx`G1{^H>`Vn|2}8xURD|5T)*hl`C^tkdb0h8d8ID- zGv4kNxey-G+a|(WZCabv=a9)Zm3vL`#Mm>9^R8Z~Q(r6@A#L>6{CdXXe3tU1F+AF5 z!|JwNGTFwr%C1`Y@&6AF@2}6vDRz0E_-qAF!JZ8>&Y#yyxUI$bH2O)>8)G(c)9}WLRjC(&%NuEd|u?;*9-gSePt@M`z@`Lb&PHA zY71+(w|hhtZ%y23x7BRb`%esK*%x-m<-0U2$-HC!CW6zr$oJd7b6bzxV_SaBQ$_Kj z)Z{H^EW?F$rr0wVEBso}B$GZNt|>(Oiv($Npf>>r=-C<&QOT&It8X_#gi&{?7kk-xH!N2@DJj N44$rjF6*2UngH3~%X$C+ literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png b/mindmap/ltximg/org-ltximg_bd02c2602c5f17e82648a9b183440f1dac90bb9c.png new file mode 100644 index 0000000000000000000000000000000000000000..b3af05e4fbcd91262afa1c1f5bc7a47aa92d6404 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0y~yU=U_tV31&8W?*1=wez+O0|SFWfKQ04oSfd-YhUt< zJHw;$9h^e8?!Bq0Y1P)VWb({SDe1M<4Kr44JbUoeb07cYc}w=0nt62JSy{`#z`$AH z5n0T@z;^_M8K-LVNi#4o6nMHghDb;zCp0jnN;EefG-W)JCdksrG{Yd8rRV5@oebw% zj3UbB3+6U(O0gY?;NccOFjHFpz|5usvGpc%PO7q|7o9#dvxlkR*-_pCwYX%<`347i zd_|HTOlW!W>qpN+e;wmSnclO$s@TmNG zOZKIt*G`_f>ENm74o)G}4Kqy5JlcAetlD_i$3J=N-kX}5R{6!9$s9qk3=9mM1s;*b z3=DinK$vl=HlH*D1EZ9ui(`m}XmUbALVy{gkVixIbryquQ&~@eGf%`BgS)sAxMtqq zcxK{cqU3F2$MA83XT#N?*rxicRV`lyE{iwicBLl-Hk@`)+1B{OhLa~>`hidvmxEe6 zPsjPG2Ml&I9ARL-=EKHzEoFnJ%qCy{1&b6;@k-RBe{W=+#`#P^rD7dZ>1S1EmRCmw zgoMQ#Zg9&R7;Lzoo{*88kiYJY0TX8}OEi0tw79_nWr-aTl{4==jdy9~4pSQdLW?BL;Hmp6FQoY4}fASdv}=);MR%$Yo$u{?jI>kg?Z z^OWNb3MZnN4tcCh97K4niyBiKlrb`voXUi)|zAbbM8$B277E9YZ%%@J!b}l T3BG1vU|{fc^>bP0l+XkKIrEnp literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png b/mindmap/ltximg/org-ltximg_c6a81bcc6ef74a723c73b2b8e30030118c53f95d.png new file mode 100644 index 0000000000000000000000000000000000000000..9e43921673cffcec36e796bd4b62fbff9bf1477d GIT binary patch literal 1104 zcmeAS@N?(olHy`uVBq!ia0y~yU^v0Rz@Wgw%)r2~G*Qcmfq}swz$e62PEPOawJ-U_ zo#9dW4o)Fk_ukahv})^FGI{2vl=Rx_h8YJ>Jzur)tdD>4ye0cg%{-ppN!-l9z`$AH z5n0T@z;^_M8K-LVNi#4oAM~94YW`(zz$;YA@%7rC%$JG2isYv!x;| zrRc*F9Z7*ew`t!ttf)9CCoZ=Axk`rzliakU&MaRQl#G9r&zO34-I+MG_MQis`X5y) zCOlE#*clP}_gAUW-zu}$nXd!BhF%SiU4MV|bI+EE{ntbrLS+Le`vOUre-mDV@ct+HEm3F(&fT?PDbq7apBU3 z|BTCi&)?q{!t_Q zLO)o}dj4_umi9y+pUJh$S$R6+Vnlvj$ukP`-{2Yh(Lzhdrdx25+HYTRjWZWndBW!Z znx!?jYK;v~jBr8XJl|-8sa0GZhQ8apXY#Dx-?C||*Rf1avlTk)8E;Gy{n?cHS&OT~ z(5EcTK9!4mNgvnKzJ47e-h*sY^Vru|8P#qPN!;Tp@MhCS5yidz4QHRvnDk>l?~{;I zDP5(VLfY?N?pf&hO(y-mR@YhfyE&7&Ufp%Qp|$mF&7Ls3o)FhXdGhNQZ^=uF&3)kP zEaYsoZM}tYNz3I=wsY16cK98yTpsjz*%zk$=N8|3o^kSRj+d{)Mc=rk>4i&l9iJP1 zu=8MUuH|26H~rKhouiky=Pq3zvQBfp-}R}UPFs6Ic%$XiFIPX@lOoWO_vm?g;`gQp z8zzN!l&#{MV|BK$oBjAb);Wp#YNrphTFnyLzMrM8QzB7#`J7h=7qM@$=+9?s_~O-i zC2D?1n|?vp6n`@{)?4$GMP;V2#H-0?9%KEwYu)j<%}lFLH!Qg&b~x*-^43FlW$!I} zrE@_+da_b#{g;r*ue6@)w=MbL+hAUDAo0s{am7=YVwbDg27OZVbyM>U{JwlkNdIK^ z>NW2-C3Vh{Y1qfG^V`Y132jI3JFnU5G4+Q}*r_E`dSw6j@bbOA5jKCac50B{>?s|2 zk1j0Ty|jrxuxe34U!TA=rs+{z!q(_cGVMrk&EU9*Ym?Gmsr`tn=h*i(Bmc^3p0LK##hYxTva2uK zzJGnIu;9q=@n^K_<&R7{z|@wmjd;r7DsmEZd7wWHIW3O|KP z&zrtZx=DHAo3_*Y=l1Q~Pc#H9L|aXv%P?v3dh TRlFPw3=9mOu6{1-oD!M9rOd-&hzJ7&r?& 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 Cl#qk~ literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png b/mindmap/ltximg/org-ltximg_d6bcca9d646fcb8ca99c61db97e8acb458b2b8f2.png new file mode 100644 index 0000000000000000000000000000000000000000..238c4e4935d8939c56b082a55c7213d2a37ffcc8 GIT binary patch literal 1490 zcmeAS@N?(olHy`uVBq!ia0y~yU|hq%z#z`T%)r2~bWYk_1_lO$0G|+7IXS(v*S>7s zds9=>YVyoYDe1NImhAKKPhPe0YFYZ*W)zD#JVBjq9 zh%9Dc;5!1sj8nDwq!}1kJv?0;Ln1iOhGl2Sgo^yzw0rW+l(e$VowuZ-?+PtlDscCi z`&;|)fD5bME?co;fto#6Qfpq$RE>`2e;JpPVgyuvWG7$oiaPs^Rj4MXPGeKT%^xfH zGj?4KP`y^d-TLcT@%y>Q=gzF%;?ev3_|E5b&v!q+V{H8VoGbr~mK}Vn0=_?~TVTI2 zXou8f$@HsFQW(9I0{M>p@}GFSa@+6MPwzB2KZ)|-tQR(#IAzH+mL%b({UyIV=T$Aa z$Cjq`(ZnEU=j;icOXIsgH)KU|Ps_>B-*EQH>!Am*?t0y~fs&720$!&UK zi^;F%&2i_YuX-#^%h$|Lm5mBct`2q+J|yvTJJaXP)QerIOYW+wx^TaZ+`avUtHqPG zJHD5M3hXcWd1Yz!#`BuqU0hq%p1gVFMsCHE61STn<=<;rXP-L0Uwmzd+?BaU#Lw>% z&b!Di@vbQ_=BF}Wn&qLsl4viE{VRMeQaOv}OrC!}>$F9$?8|KdknJ5z8;Z(Zx6O+7v(+j~8pEHv8k+Cpw>nM3MB?Kfse znJl&3zx2j$2t0owYu-k!4#&0qVzC8`zv9Zpwj@>7M1458`lsum2*xv9*DdOWQvDWh z`p~lPPUNFW=S34@4u32=C!XIo^=i}{!=24?ozkHSzt%?Poe>jUel^Uk`>o`oOPt2H ze|H^!K3`(){bhe{RBkBie%844(9`PZh<^4trh1hV@+NI*JMw?qA?B`=vh!9jS${JhuE6wc$rIZL5sl|% zjb6{%>QP)UFMHh!AH|)gTmBgvFIizCy}L2dCuz-djbuBeXN+$xANZ#VXf7^t->ECF zV5H#2|5EOVlK#W3#ubzOmKgKQP3iijHKndA@<4A=!mj-uT7M)AW~ekDQQI81C+=*4 zPRK*%V6L~~5&4U@PL?bR$&pMHm>wW^LpgOzLivY3ee$evt~++Id9|OOptH1V8{-`z zql@tjQ*U_jGW|I!ve&(I%PE~zb+0xU7|ea)GjXSI#R_)^GfS^K4>ybDKIA{9bn%#Q z&+=sp_ncF(eD(gegtJFS*nXYVErscK-bJKns6XrMUo9v(A@O=$MV_&5RM8Jksk!U9 z_HK+SYB~2~)A@r;*M)Nz*EW|+7G8f6_WG{ff{P*M&2d|~-}ag{E)=PX6powp<8;op z8yRjpLiSHw(rdozb#cpd#gIG~&Sx>7HZ2nUBc;z~{!C$U#%qVu54~??tO;~b-<0y< zvd66d*^}2*%>Q#u<5X7JPE$X#MJzS$%pS=Or%k@a$Gx}TsPCiq<>IFg3=9kmp00i_ I>zopr0BtGC=Kufz literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png b/mindmap/ltximg/org-ltximg_dfcad877d792037fb38843d7883bdeeb82eaad9d.png new file mode 100644 index 0000000000000000000000000000000000000000..5bae963fa3f4ab5e1ec6630ca2159e8f0daa715c GIT binary patch literal 1949 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 Gp$Py-AZAqn literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png b/mindmap/ltximg/org-ltximg_ef4bb2859aff03c92a09e6a971ada1b8f17a9c39.png new file mode 100644 index 0000000000000000000000000000000000000000..b319524c936f7c96a9a8515b1ee8cdbe0daf3305 GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0y~yU~FMvU=U|vW?*3WDWO=u<5X=vX$A&XE>9Q7kOdmD8i|wsqs%C<#O1GZi5%jv%3mEuKcmZ^oG}(l}WsZ-1)P9>KR<8k>YZlOR)>aiYwMh!n!=U+_sOr@N9W0J^EbMpdc#fCD@>^?bnvi^~!XkjuiSTjL`C@?B5E=V%qR$Sw}b^4ODf_O#dyC8@Iyt8$iR z@WxE8DeLiCC|34l+PkkVYr<7ip7D8hhfF9)SbL%9F8AUkMGG4izqERB$LG-6q%G$r z+KbGVw`c!2H>)wIB<)$Uvjcz2hIW#r^OlKyXxi)9 z*DwBam1VeV+U7^!3-;}3-XOMX)#-Wm4y&~$7&9Mg)Bf>h!butZQ#W4zwo|WdVUpj= zwJkg-HDR`cQat1Bk2Cz2s!q?FP~UQIbNI)_@rs6-75^C4YPrAJ8ak0P{KHMf#akOp zzq?G}W@VB)`*pJL>BC~eoKYXVvYyQRDr@BT<@k-7J5GN*FQhhkr|2{2tJ+MwxZ3E* zt*=YxbA*3zynEx;NxmAh6;GWQk5BIRnKW1LfTWQ(59fRjmYUU32mHzuP4ZRin9rph z+`g&h=OHnnIn49qvqCuy=cmt~;JJiJ@$s#&v~}C&uB~q1-mvfIllJEsVj&+A(p1l9 zO`K7_N&NrDu8M8l%r9-sV=n${<+TgtiH&z$FzZ_Vtsb^r z>V@%l4qL>2ZC=2Xwfwc2*{l3zFMiJ`{#Wj&KQB$-u1J$R7R_^MRa#%Tg!74ATtru~{;Wiamrp9e+nS7x#72)yxTmigSni=>wd>p4XrDKD%(Y`^L-JRVzzE``%snGw)_b@8uW1abD;4-Qy1f0|SGntDnm{r-UW|pUO=u<5X=vX$A%+H%}MG5DUSzlYO&=10`Dhjg50B`%Utjy6sqyly_)}ajR0v z;+IZ=AstQf-Fk~I_zH^tZ;+4G+<7uPv@kYKfAUm?9J7dhb^g*cT3-Q>+M;-TzCFP=ZRczzP;T1rR?p` zV^(Jkk9~ZSV0PNuqdNZl945YgKKTWKvYZLOu7=Om>uEe5yzYC~Evp4@<(5@DspLHq z`Z7g&K0}++M22r{5;Ko`OGmMJh)jI)v`%p2A$bEO10(B`+KI^#b24H8(k<$I$OBq%Y*dk zeb4wZLzcWf{+V-zIQzN$@5-sh4ZN1m*rolg`)W&%{8CJPHMzJ(@R+Qf*VeLmQ}!!c z)m{IpoNC^X$vu1Xo4Ye6*SmxU&Am3Cb;GZT_m8Ks+HZLBKi>D=#z@^OEB7nwef6q!wge14(B3E*q{5=w zbmFHVhhoB?Je_SG>PMDvMVxR*a^c8Qb_(dwm}FGf(0aD1X~}LUPBS6PKmkR^*&<@+ zs`K9+nw?`Nexb4Y{n_9DpO+UOKEs$}F{k@uTU4LHXMv-AE0*86J3Zw`mbT&7x7v)!V_Bl6_~ zW=J(hB>yg~TYu4H_tq`^r*ADNfBkiTa7JmR{PYcNor+#xFLWNg?D293pZ3-Q@u-he zWwiv9-yCwg(Ix2hWy{JVAL8oo+!Vg`{D{T#gX!9))9Zwi{=O>T6dP{!*KftMYA4mU zNlX%9`QI7uutY={)*j>Ht$1h=qOj)2;*661byf5GKL~NZ);)YkrlsFs@746;ZHMHF zw>c%}xR>m*VbS-0tN3`WdhYWxT-@B-^%p#vV?XcJ|9^GKkM44veRECXnyR!m&zIXJ z#}ito?Kb%D{hXKMf9;!({2R=Kp8t&4rylwG%T|xgzpre~TlVxxbgt>yFX3ggcVDyK xwDt?z+h@-{ue6(*AJy~uYtC2KRln;Q>(?z!-=-5K!N9=4;OXk;vd$@?2>=zUbPWIi literal 0 HcmV?d00001 diff --git a/mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png b/mindmap/ltximg/org-ltximg_fc2b866227121d901dcbc062e4a8f3fbbc121bf8.png new file mode 100644 index 0000000000000000000000000000000000000000..b319524c936f7c96a9a8515b1ee8cdbe0daf3305 GIT binary patch literal 1428 zcmeAS@N?(olHy`uVBq!ia0y~yU~FMvU=U|vW?*3WDWO=u<5X=vX$A&XE>9Q7kOdmD8i|wsqs%C<#O1GZi5%jv%3mEuKcmZ^oG}(l}WsZ-1)P9>KR<8k>YZlOR)>aiYwMh!n!=U+_sOr@N9W0J^EbMpdc#fCD@>^?bnvi^~!XkjuiSTjL`C@?B5E=V%qR$Sw}b^4ODf_O#dyC8@Iyt8$iR z@WxE8DeLiCC|34l+PkkVYr<7ip7D8hhfF9)SbL%9F8AUkMGG4izqERB$LG-6q%G$r z+KbGVw`c!2H>)wIB<)$Uvjcz2hIW#r^OlKyXxi)9 z*DwBam1VeV+U7^!3-;}3-XOMX)#-Wm4y&~$7&9Mg)Bf>h!butZQ#W4zwo|WdVUpj= zwJkg-HDR`cQat1Bk2Cz2s!q?FP~UQIbNI)_@rs6-75^C4YPrAJ8ak0P{KHMf#akOp zzq?G}W@VB)`*pJL>BC~eoKYXVvYyQRDr@BT<@k-7J5GN*FQhhkr|2{2tJ+MwxZ3E* zt*=YxbA*3zynEx;NxmAh6;GWQk5BIRnKW1LfTWQ(59fRjmYUU32mHzuP4ZRin9rph z+`g&h=OHnnIn49qvqCuy=cmt~;JJiJ@$s#&v~}C&uB~q1-mvfIllJEsVj&+A(p1l9 zO`K7_N&NrDu8M8l%r9-sV=n${<+TgtiH&z$FzZ_Vtsb^r z>V@%l4qL>2ZC=2Xwfwc2*{l3zFMiJ`{#Wj&KQB$-u1J$R7R_^MRa#%Tg!74ATtru~{;Wiamrp9e+nS7x#72)yxTmigSni=>wd>p4XrDKD%(Y`^L-JRVzzE``%snGw)_b@8uW1abD;4-Qy1f0|SGntDnm{r-UW|pUg%|a&`f1E) zF?P1xCH0J9^P1T??zN{Kr|>`p>+& zWa-wdwOele`&@OQDmij(*gfT>#O*IH_NPB<*}D0T@W+duQg*skPqc!k_H_rI)ee<+ z7T&e&ha0nnh3b}#lTBK7HC1;f^}Ttls-IqS>h!Mrj7gt%H+~kGu0*F0)E-a>WeR4ck4H?k2qIT{6SYwHw!*qX3(GEuzUW$#M$j_PlTSG++v<= zdb;m)Z0xqaU)xy!gc$x^IsN{p-Pw<=f?~6+`EF2QOiH;TI~? z?l)=6lI|x))e9caPz^s5H+u(z%qrRMPP2KL&I<9?9Bg!ATVW{a*kx0`nWMWodrI#9 z?DQ><_x+0#H8}EjMOox}?vptZjd}rZ6fI8oRm@XO4EUQV_i6|8#BW#ocpN(9^-QF7 zR!2?~dbdt2<6epWqAL;)0^BmL@)~z%`Ob`2{CVq{;4XO%-|rE*&myZ5_1cdp*~VXy zc(Ayu;Mu%+x=WvWyRQ4e{-8MSSkK49r3&X3{=MO`JNn(Ujd7ED4=(NbWO?8SU zj?{3Td-8ksfw`T0mO;CpWx2BToH%)3f71c+;$xe-n(dn$zizF*AKIsAR~)&bUnB9k zZ0bKz&wKj