From cff65759485e7f4c6f1be423f2e8ddcd08536676 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 24 Feb 2025 18:00:35 +0700 Subject: [PATCH] refactor(nix/*): drop yants and consumers, and some more Change-Id: I96ab5890518c7bb0d4a676adbad20e4c49699b63 --- nix/getBins/default.nix | 51 ---- nix/getBins/tests.nix | 40 --- nix/mergePatch/default.nix | 192 ------------ nix/nint/OWNERS | 1 - nix/nint/README.md | 93 ------ nix/nint/default.nix | 16 - nix/nint/nint.rs | 149 --------- nix/readTree/tests/default.nix | 139 --------- nix/runExecline/default.nix | 31 -- nix/runExecline/runExecline.nix | 122 -------- nix/runExecline/tests.nix | 117 ------- nix/runTestsuite/default.nix | 199 ------------ nix/stateMonad/tests/default.nix | 110 ------- nix/tag/tests.nix | 99 ------ nix/utils/tests/default.nix | 98 ------ nix/writeElispBin/default.nix | 20 -- nix/writeExecline/default.nix | 39 --- nix/writeScript/default.nix | 35 --- nix/writeScriptBin/default.nix | 12 - nix/writers/default.nix | 112 ------- nix/writers/tests/rust.nix | 76 ----- nix/yants/README.md | 88 ------ nix/yants/default.nix | 368 ----------------------- nix/yants/screenshots/enums.png | Bin 41305 -> 0 bytes nix/yants/screenshots/functions.png | Bin 32907 -> 0 bytes nix/yants/screenshots/nested-structs.png | Bin 70264 -> 0 bytes nix/yants/screenshots/simple.png | Bin 43010 -> 0 bytes nix/yants/screenshots/structs.png | Bin 69499 -> 0 bytes nix/yants/tests/default.nix | 158 ---------- ops/secrets/mkSecrets.nix | 27 +- ops/secrets/secrets.nix | 2 + tools/eprintf.nix | 15 - tools/rust-crates-advisory/default.nix | 16 +- 33 files changed, 11 insertions(+), 2414 deletions(-) delete mode 100644 nix/getBins/default.nix delete mode 100644 nix/getBins/tests.nix delete mode 100644 nix/mergePatch/default.nix delete mode 100644 nix/nint/OWNERS delete mode 100644 nix/nint/README.md delete mode 100644 nix/nint/default.nix delete mode 100644 nix/nint/nint.rs delete mode 100644 nix/readTree/tests/default.nix delete mode 100644 nix/runExecline/default.nix delete mode 100644 nix/runExecline/runExecline.nix delete mode 100644 nix/runExecline/tests.nix delete mode 100644 nix/runTestsuite/default.nix delete mode 100644 nix/stateMonad/tests/default.nix delete mode 100644 nix/tag/tests.nix delete mode 100644 nix/utils/tests/default.nix delete mode 100644 nix/writeElispBin/default.nix delete mode 100644 nix/writeExecline/default.nix delete mode 100644 nix/writeScript/default.nix delete mode 100644 nix/writeScriptBin/default.nix delete mode 100644 nix/writers/default.nix delete mode 100644 nix/writers/tests/rust.nix delete mode 100644 nix/yants/README.md delete mode 100644 nix/yants/default.nix delete mode 100644 nix/yants/screenshots/enums.png delete mode 100644 nix/yants/screenshots/functions.png delete mode 100644 nix/yants/screenshots/nested-structs.png delete mode 100644 nix/yants/screenshots/simple.png delete mode 100644 nix/yants/screenshots/structs.png delete mode 100644 nix/yants/tests/default.nix delete mode 100644 tools/eprintf.nix diff --git a/nix/getBins/default.nix b/nix/getBins/default.nix deleted file mode 100644 index e354b176c..000000000 --- a/nix/getBins/default.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ lib, pkgs, depot, ... }: - -# Takes a derivation and a list of binary names -# and returns an attribute set of `name -> path`. -# The list can also contain renames in the form of -# `{ use, as }`, which goes `as -> usePath`. -# -# It is usually used to construct an attrset `bins` -# containing all the binaries required in a file, -# similar to a simple import system. -# -# Example: -# -# bins = getBins pkgs.hello [ "hello" ] -# // getBins pkgs.coreutils [ "printf" "ln" "echo" ] -# // getBins pkgs.execline -# [ { use = "if"; as = "execlineIf" } ] -# // getBins pkgs.s6-portable-utils -# [ { use = "s6-test"; as = "test" } -# { use = "s6-cat"; as = "cat" } -# ]; -# -# provides -# bins.{hello,printf,ln,echo,execlineIf,test,cat} -# - -let - getBins = drv: xs: - let - f = x: - # TODO(Profpatsch): typecheck - let x' = if builtins.isString x then { use = x; as = x; } else x; - in { - name = x'.as; - value = "${lib.getBin drv}/bin/${x'.use}"; - }; - in - builtins.listToAttrs (builtins.map f xs); - - - tests = import ./tests.nix { - inherit getBins; - inherit (depot.nix) writeScriptBin; - inherit (depot.nix.runTestsuite) assertEq it runTestsuite; - }; - -in -{ - __functor = _: getBins; - inherit tests; -} diff --git a/nix/getBins/tests.nix b/nix/getBins/tests.nix deleted file mode 100644 index e0f5ab426..000000000 --- a/nix/getBins/tests.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ writeScriptBin, assertEq, it, runTestsuite, getBins }: - -let - drv = writeScriptBin "hello" "it’s me"; - drv2 = writeScriptBin "goodbye" "tschau"; - - bins = getBins drv [ - "hello" - { use = "hello"; as = "also-hello"; } - ] - // getBins drv2 [ "goodbye" ] - ; - - simple = it "path is equal to the executable name" [ - (assertEq "path" - bins.hello - "${drv}/bin/hello") - (assertEq "content" - (builtins.readFile bins.hello) - "it’s me") - ]; - - useAs = it "use/as can be used to rename attributes" [ - (assertEq "path" - bins.also-hello - "${drv}/bin/hello") - ]; - - secondDrv = it "by merging attrsets you can build up bins" [ - (assertEq "path" - bins.goodbye - "${drv2}/bin/goodbye") - ]; - -in -runTestsuite "getBins" [ - simple - useAs - secondDrv -] diff --git a/nix/mergePatch/default.nix b/nix/mergePatch/default.nix deleted file mode 100644 index d56106925..000000000 --- a/nix/mergePatch/default.nix +++ /dev/null @@ -1,192 +0,0 @@ -{ lib, depot, ... }: -/* - JSON Merge-Patch for nix - Spec: https://tools.ietf.org/html/rfc7396 - - An algorithm for changing and removing fields in nested objects. - - For example, given the following original document: - - { - a = "b"; - c = { - d = "e"; - f = "g"; - } - } - - Changing the value of `a` and removing `f` can be achieved by merging the patch - - { - a = "z"; - c.f = null; - } - - which results in - - { - a = "z"; - c = { - d = "e"; - }; - } - - Pseudo-code: - define MergePatch(Target, Patch): - if Patch is an Object: - if Target is not an Object: - Target = {} # Ignore the contents and set it to an empty Object - for each Name/Value pair in Patch: - if Value is null: - if Name exists in Target: - remove the Name/Value pair from Target - else: - Target[Name] = MergePatch(Target[Name], Value) - return Target - else: - return Patch -*/ - -let - foldlAttrs = op: init: attrs: - lib.foldl' op init - (lib.mapAttrsToList lib.nameValuePair attrs); - - mergePatch = target: patch: - if lib.isAttrs patch - then - let target' = if lib.isAttrs target then target else { }; - in foldlAttrs - (acc: patchEl: - if patchEl.value == null - then removeAttrs acc [ patchEl.name ] - else acc // { - ${patchEl.name} = - mergePatch - (acc.${patchEl.name} or "unnused") - patchEl.value; - }) - target' - patch - else patch; - - inherit (depot.nix.runTestsuite) - runTestsuite - it - assertEq - ; - - tests = - let - # example target from the RFC - testTarget = { - a = "b"; - c = { - d = "e"; - f = "g"; - }; - }; - # example patch from the RFC - testPatch = { - a = "z"; - c.f = null; - }; - emptyPatch = it "the empty patch returns the original target" [ - (assertEq "id" - (mergePatch testTarget { }) - testTarget) - ]; - nonAttrs = it "one side is a non-attrset value" [ - (assertEq "target is a value means the value is replaced by the patch" - (mergePatch 42 testPatch) - (mergePatch { } testPatch)) - (assertEq "patch is a value means it replaces target alltogether" - (mergePatch testTarget 42) - 42) - ]; - rfcExamples = it "the examples from the RFC" [ - (assertEq "a subset is deleted and overwritten" - (mergePatch testTarget testPatch) - { - a = "z"; - c = { - d = "e"; - }; - }) - (assertEq "a more complicated example from the example section" - (mergePatch - { - title = "Goodbye!"; - author = { - givenName = "John"; - familyName = "Doe"; - }; - tags = [ "example" "sample" ]; - content = "This will be unchanged"; - } - { - title = "Hello!"; - phoneNumber = "+01-123-456-7890"; - author.familyName = null; - tags = [ "example" ]; - }) - { - title = "Hello!"; - phoneNumber = "+01-123-456-7890"; - author = { - givenName = "John"; - }; - tags = [ "example" ]; - content = "This will be unchanged"; - }) - ]; - - rfcTests = - let - r = index: target: patch: res: - (assertEq "test number ${toString index}" - (mergePatch target patch) - res); - in - it "the test suite from the RFC" [ - (r 1 { "a" = "b"; } { "a" = "c"; } { "a" = "c"; }) - (r 2 { "a" = "b"; } { "b" = "c"; } { "a" = "b"; "b" = "c"; }) - (r 3 { "a" = "b"; } { "a" = null; } { }) - (r 4 { "a" = "b"; "b" = "c"; } - { "a" = null; } - { "b" = "c"; }) - (r 5 { "a" = [ "b" ]; } { "a" = "c"; } { "a" = "c"; }) - (r 6 { "a" = "c"; } { "a" = [ "b" ]; } { "a" = [ "b" ]; }) - (r 7 { "a" = { "b" = "c"; }; } - { "a" = { "b" = "d"; "c" = null; }; } - { "a" = { "b" = "d"; }; }) - (r 8 { "a" = [{ "b" = "c"; }]; } - { "a" = [ 1 ]; } - { "a" = [ 1 ]; }) - (r 9 [ "a" "b" ] [ "c" "d" ] [ "c" "d" ]) - (r 10 { "a" = "b"; } [ "c" ] [ "c" ]) - (r 11 { "a" = "foo"; } null null) - (r 12 { "a" = "foo"; } "bar" "bar") - (r 13 { "e" = null; } { "a" = 1; } { "e" = null; "a" = 1; }) - (r 14 [ 1 2 ] - { "a" = "b"; "c" = null; } - { "a" = "b"; }) - (r 15 { } - { "a" = { "bb" = { "ccc" = null; }; }; } - { "a" = { "bb" = { }; }; }) - ]; - - in - runTestsuite "mergePatch" [ - emptyPatch - nonAttrs - rfcExamples - rfcTests - ]; - -in -{ - __functor = _: mergePatch; - - inherit tests; -} diff --git a/nix/nint/OWNERS b/nix/nint/OWNERS deleted file mode 100644 index 557709b72..000000000 --- a/nix/nint/OWNERS +++ /dev/null @@ -1 +0,0 @@ -raitobezarius diff --git a/nix/nint/README.md b/nix/nint/README.md deleted file mode 100644 index 369a82761..000000000 --- a/nix/nint/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# nint — Nix INTerpreter - -`nint` is a shebang compatible interpreter for nix. It is currently -implemented as a fairly trivial wrapper around `nix-instantiate --eval`. -It allows to run nix expressions as command line tools if they conform -to the following calling convention: - -* Every nix script needs to evaluate to a function which takes an - attribute set as its single argument. Ideally a set pattern with - an ellipsis should be used. By default `nint` passes the following - arguments: - - * `currentDir`: the current working directory as a nix path - * `argv`: a list of arguments to the invokation including the - program name at `builtins.head argv`. - * Extra arguments can be manually passed as described below. - -* The return value must either be - - * A string which is rendered to `stdout`. - - * An attribute set with the following optional attributes: - - * `stdout`: A string that's rendered to `stdout` - * `stderr`: A string that's rendered to `stderr` - * `exit`: A number which is used as an exit code. - If missing, nint always exits with 0 (or equivalent). - -## Usage - -``` -nint [ --arg ARG VALUE … ] script.nix [ ARGS … ] -``` - -Instead of `--arg`, `--argstr` can also be used. They both work -like the flags of the same name for `nix-instantiate` and may -be specified any number of times as long as they are passed -*before* the nix expression to run. - -Below is a shebang which also passes `depot` as an argument -(note the usage of `env -S` to get around the shebang limitation -to two arguments). - -```nix -#!/usr/bin/env -S nint --arg depot /path/to/depot -``` - -## Limitations - -* No side effects except for writing to `stdout`. - -* Output is not streaming, i. e. even if the output is incrementally - calculated, nothing will be printed until the full output is available. - With plain nix strings we can't do better anyways. - -* Limited error handling for the script, no way to set the exit code etc. - -Some of these limitations may be possible to address in the future by using -an alternative nix interpreter and a more elaborate calling convention. - -## Example - -Below is a (very simple) implementation of a `ls(1)`-like program in nix: - -```nix -#!/usr/bin/env nint -{ currentDir, argv, ... }: - -let - lib = import ; - - dirs = - let - args = builtins.tail argv; - in - if args == [] - then [ currentDir ] - else args; - - makeAbsolute = p: - if builtins.isPath p - then p - else if builtins.match "^/.*" p != null - then p - else "${toString currentDir}/${p}"; -in - - lib.concatStringsSep "\n" - (lib.flatten - (builtins.map - (d: (builtins.attrNames (builtins.readDir (makeAbsolute d)))) - dirs)) + "\n" -``` diff --git a/nix/nint/default.nix b/nix/nint/default.nix deleted file mode 100644 index 0087fc041..000000000 --- a/nix/nint/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ depot, pkgs, ... }: - -let - inherit (depot.nix.writers) - rustSimpleBin - ; -in - -rustSimpleBin -{ - name = "nint"; - dependencies = [ - depot.third_party.rust-crates.serde_json - ]; -} - (builtins.readFile ./nint.rs) diff --git a/nix/nint/nint.rs b/nix/nint/nint.rs deleted file mode 100644 index abb0153c3..000000000 --- a/nix/nint/nint.rs +++ /dev/null @@ -1,149 +0,0 @@ -extern crate serde_json; - -use serde_json::Value; -use std::convert::TryFrom; -use std::ffi::OsString; -use std::io::{stderr, stdout, Error, ErrorKind, Write}; -use std::os::unix::ffi::{OsStrExt, OsStringExt}; -use std::process::Command; - -fn render_nix_string(s: &OsString) -> OsString { - let mut rendered = Vec::new(); - - rendered.extend(b"\""); - - for b in s.as_os_str().as_bytes() { - match char::from(*b) { - '\"' => rendered.extend(b"\\\""), - '\\' => rendered.extend(b"\\\\"), - '$' => rendered.extend(b"\\$"), - _ => rendered.push(*b), - } - } - - rendered.extend(b"\""); - - OsString::from_vec(rendered) -} - -fn render_nix_list(arr: &[OsString]) -> OsString { - let mut rendered = Vec::new(); - - rendered.extend(b"[ "); - - for el in arr { - rendered.extend(render_nix_string(el).as_os_str().as_bytes()); - rendered.extend(b" "); - } - - rendered.extend(b"]"); - - OsString::from_vec(rendered) -} - -/// Slightly overkill helper macro which takes a `Map` obtained -/// from `Value::Object` and an output name (`stderr` or `stdout`) as an -/// identifier. If a value exists for the given output in the object it gets -/// written to the appropriate output. -macro_rules! handle_set_output { - ($map_name:ident, $output_name:ident) => { - match $map_name.get(stringify!($output_name)) { - Some(Value::String(s)) => $output_name().write_all(s.as_bytes()), - Some(_) => Err(Error::new( - ErrorKind::Other, - format!("Attribute {} must be a string!", stringify!($output_name)), - )), - None => Ok(()), - } - }; -} - -fn main() -> std::io::Result<()> { - let mut nix_args = Vec::new(); - - let mut args = std::env::args_os().into_iter(); - let mut in_args = true; - - let mut argv: Vec = Vec::new(); - - // skip argv[0] - args.next(); - - loop { - let arg = match args.next() { - Some(a) => a, - None => break, - }; - - if !arg.to_str().map(|s| s.starts_with("-")).unwrap_or(false) { - in_args = false; - } - - if in_args { - match (arg.to_str()) { - Some("--arg") | Some("--argstr") => { - nix_args.push(arg); - nix_args.push(args.next().unwrap()); - nix_args.push(args.next().unwrap()); - Ok(()) - } - _ => Err(Error::new(ErrorKind::Other, "unknown argument")), - }? - } else { - argv.push(arg); - } - } - - if argv.len() < 1 { - Err(Error::new(ErrorKind::Other, "missing argv")) - } else { - let cd = std::env::current_dir()?.into_os_string(); - - nix_args.push(OsString::from("--arg")); - nix_args.push(OsString::from("currentDir")); - nix_args.push(cd); - - nix_args.push(OsString::from("--arg")); - nix_args.push(OsString::from("argv")); - nix_args.push(render_nix_list(&argv[..])); - - nix_args.push(OsString::from("--eval")); - nix_args.push(OsString::from("--strict")); - nix_args.push(OsString::from("--json")); - - nix_args.push(argv[0].clone()); - - let run = Command::new("nix-instantiate").args(nix_args).output()?; - - match serde_json::from_slice(&run.stdout[..]) { - Ok(Value::String(s)) => stdout().write_all(s.as_bytes()), - Ok(Value::Object(m)) => { - handle_set_output!(m, stdout)?; - handle_set_output!(m, stderr)?; - - match m.get("exit") { - Some(Value::Number(n)) => { - let code = n.as_i64().and_then(|v| i32::try_from(v).ok()); - - match code { - Some(i) => std::process::exit(i), - None => { - Err(Error::new(ErrorKind::Other, "Attribute exit is not an i32")) - } - } - } - Some(_) => Err(Error::new(ErrorKind::Other, "exit must be a number")), - None => Ok(()), - } - } - Ok(_) => Err(Error::new( - ErrorKind::Other, - "output must be a string or an object", - )), - _ => { - stderr().write_all(&run.stderr[..]); - Err(Error::new(ErrorKind::Other, "internal nix error")) - } - } - } -} diff --git a/nix/readTree/tests/default.nix b/nix/readTree/tests/default.nix deleted file mode 100644 index 6f9eb02ef..000000000 --- a/nix/readTree/tests/default.nix +++ /dev/null @@ -1,139 +0,0 @@ -{ depot, lib, ... }: - -let - inherit (depot.nix.runTestsuite) - runTestsuite - it - assertEq - assertThrows - ; - - tree-ex = depot.nix.readTree { - path = ./test-example; - args = { }; - }; - - example = it "corresponds to the README example" [ - (assertEq "third_party attrset" - (lib.isAttrs tree-ex.third_party - && (! lib.isDerivation tree-ex.third_party)) - true) - (assertEq "third_party attrset other attribute" - tree-ex.third_party.favouriteColour - "orange") - (assertEq "rustpkgs attrset aho-corasick" - tree-ex.third_party.rustpkgs.aho-corasick - "aho-corasick") - (assertEq "rustpkgs attrset serde" - tree-ex.third_party.rustpkgs.serde - "serde") - (assertEq "tools cheddear" - "cheddar" - tree-ex.tools.cheddar) - (assertEq "tools roquefort" - tree-ex.tools.roquefort - "roquefort") - ]; - - tree-tl = depot.nix.readTree { - path = ./test-tree-traversal; - args = { }; - }; - - traversal-logic = it "corresponds to the traversal logic in the README" [ - (assertEq "skip-tree/a is read" - tree-tl.skip-tree.a - "a is read normally") - (assertEq "skip-tree does not contain b" - (builtins.attrNames tree-tl.skip-tree) - [ "__readTree" "__readTreeChildren" "a" ]) - (assertEq "skip-tree children list does not contain b" - tree-tl.skip-tree.__readTreeChildren - [ "a" ]) - - (assertEq "skip subtree default.nix is read" - tree-tl.skip-subtree.but - "the default.nix is still read") - (assertEq "skip subtree a/default.nix is skipped" - (tree-tl.skip-subtree ? a) - false) - (assertEq "skip subtree b/c.nix is skipped" - (tree-tl.skip-subtree ? b) - false) - (assertEq "skip subtree a/default.nix would be read without .skip-subtree" - (tree-tl.no-skip-subtree.a) - "am I subtree yet?") - (assertEq "skip subtree b/c.nix would be read without .skip-subtree" - (tree-tl.no-skip-subtree.b.c) - "cool") - - (assertEq "default.nix attrset is merged with siblings" - tree-tl.default-nix.no - "siblings should be read") - (assertEq "default.nix means sibling isn’t read" - (tree-tl.default-nix ? sibling) - false) - (assertEq "default.nix means subdirs are still read and merged into default.nix" - (tree-tl.default-nix.subdir.a) - "but I’m picked up") - - (assertEq "default.nix can be not an attrset" - tree-tl.default-nix.no-merge - "I’m not merged with any children") - (assertEq "default.nix is not an attrset -> children are not merged" - (tree-tl.default-nix.no-merge ? subdir) - false) - - (assertEq "default.nix can contain a derivation" - (lib.isDerivation tree-tl.default-nix.can-be-drv) - true) - (assertEq "Even if default.nix is a derivation, children are traversed and merged" - tree-tl.default-nix.can-be-drv.subdir.a - "Picked up through the drv") - (assertEq "default.nix drv is not changed by readTree" - tree-tl.default-nix.can-be-drv - (import ./test-tree-traversal/default-nix/can-be-drv/default.nix { })) - ]; - - # these each call readTree themselves because the throws have to happen inside assertThrows - wrong = it "cannot read these files and will complain" [ - (assertThrows "this file is not a function" - (depot.nix.readTree { - path = ./test-wrong-not-a-function; - args = { }; - }).not-a-function) - # can’t test for that, assertThrows can’t catch this error - # (assertThrows "this file is a function but doesn’t have dots" - # (depot.nix.readTree {} ./test-wrong-no-dots).no-dots-in-function) - ]; - - read-markers = depot.nix.readTree { - path = ./test-marker; - args = { }; - }; - - assertMarkerByPath = path: - assertEq "${lib.concatStringsSep "." path} is marked correctly" - (lib.getAttrFromPath path read-markers).__readTree - path; - - markers = it "marks nodes correctly" [ - (assertMarkerByPath [ "directory-marked" ]) - (assertMarkerByPath [ "directory-marked" "nested" ]) - (assertMarkerByPath [ "file-children" "one" ]) - (assertMarkerByPath [ "file-children" "two" ]) - (assertEq "nix file children are marked correctly" - read-markers.file-children.__readTreeChildren [ "one" "two" ]) - (assertEq "directory children are marked correctly" - read-markers.directory-marked.__readTreeChildren [ "nested" ]) - (assertEq "absence of children is marked" - read-markers.directory-marked.nested.__readTreeChildren [ ]) - ]; - -in -runTestsuite "readTree" [ - example - traversal-logic - wrong - markers -] diff --git a/nix/runExecline/default.nix b/nix/runExecline/default.nix deleted file mode 100644 index 76fffdce7..000000000 --- a/nix/runExecline/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ depot, pkgs, lib, ... }: -let - runExecline = import ./runExecline.nix { - inherit (pkgs) stdenv; - inherit (depot.nix) escapeExecline getBins; - inherit pkgs lib; - }; - - runExeclineLocal = name: args: execline: - runExecline name - (args // { - derivationArgs = args.derivationArgs or { } // { - preferLocalBuild = true; - allowSubstitutes = false; - }; - }) - execline; - - tests = import ./tests.nix { - inherit runExecline runExeclineLocal; - inherit (depot.nix) getBins writeScript; - inherit (pkgs) stdenv coreutils; - inherit pkgs; - }; - -in -{ - __functor = _: runExecline; - local = runExeclineLocal; - inherit tests; -} diff --git a/nix/runExecline/runExecline.nix b/nix/runExecline/runExecline.nix deleted file mode 100644 index 23b9a6330..000000000 --- a/nix/runExecline/runExecline.nix +++ /dev/null @@ -1,122 +0,0 @@ -{ pkgs, stdenv, lib, getBins, escapeExecline }: - -# runExecline is a primitive building block -# for writing non-kitchen sink builders. -# -# It’s conceptually similar to `runCommand`, -# but instead of concatenating bash scripts left -# and right, it actually *uses* the features of -# `derivation`, passing things to `args` -# and making it possible to overwrite the `builder` -# in a sensible manner. -# -# Additionally, it provides a way to pass a nix string -# to `stdin` of the build script. -# -# Similar to //nix/writeExecline, the passed script is -# not a string, but a nested list of nix lists -# representing execline blocks. Escaping is -# done by the implementation, the user can just use -# normal nix strings. -# -# Example: -# -# runExecline "my-drv" { stdin = "hi!"; } [ -# "importas" "out" "out" -# # this pipes stdout of s6-cat to $out -# # and s6-cat redirects from stdin to stdout -# "redirfd" "-w" "1" "$out" bins.s6-cat -# ] -# -# which creates a derivation with "hi!" in $out. -# -# See ./tests.nix for more examples. - - -let - bins = getBins pkgs.execline [ - "execlineb" - { use = "if"; as = "execlineIf"; } - "redirfd" - "importas" - "exec" - ] - // getBins pkgs.s6-portable-utils [ - "s6-cat" - "s6-grep" - "s6-touch" - "s6-test" - "s6-chmod" - ]; - -in - -# TODO: move name into the attrset -name: -{ - # a string to pass as stdin to the execline script - stdin ? "" - # a program wrapping the acutal execline invocation; - # should be in Bernstein-chaining style -, builderWrapper ? bins.exec - # additional arguments to pass to the derivation -, derivationArgs ? { } -}: -# the execline script as a nested list of string, -# representing the blocks; -# see docs of `escapeExecline`. -execline: - -# those arguments can’t be overwritten -assert !derivationArgs ? system; -assert !derivationArgs ? name; -assert !derivationArgs ? builder; -assert !derivationArgs ? args; - -derivation (derivationArgs // { - # TODO(Profpatsch): what about cross? - inherit (stdenv) system; - inherit name; - - # okay, `builtins.toFile` does not accept strings - # that reference drv outputs. This means we need - # to pass the script and stdin as envvar; - # this might clash with another passed envar, - # so we give it a long & unique name - _runExeclineScript = - let - in escapeExecline execline; - _runExeclineStdin = stdin; - passAsFile = [ - "_runExeclineScript" - "_runExeclineStdin" - ] ++ derivationArgs.passAsFile or [ ]; - - # the default, exec acts as identity executable - builder = builderWrapper; - - args = [ - bins.importas # import script file as $script - "-ui" # drop the envvar afterwards - "script" # substitution name - "_runExeclineScriptPath" # passed script file - - bins.importas # do the same for $stdin - "-ui" - "stdin" - "_runExeclineStdinPath" - - bins.redirfd # now we - "-r" # read the file - "0" # into the stdin of execlineb - "$stdin" # that was given via stdin - - bins.execlineb # the actual invocation - # TODO(Profpatsch): depending on the use-case, -S0 might not be enough - # in all use-cases, then a wrapper for execlineb arguments - # should be added (-P, -S, -s). - "-S0" # set $@ inside the execline script - "-W" # die on syntax error - "$script" # substituted by importas - ]; -}) diff --git a/nix/runExecline/tests.nix b/nix/runExecline/tests.nix deleted file mode 100644 index f82b54422..000000000 --- a/nix/runExecline/tests.nix +++ /dev/null @@ -1,117 +0,0 @@ -{ stdenv -, pkgs -, runExecline -, runExeclineLocal -, getBins -, writeScript - # https://www.mail-archive.com/skaware@list.skarnet.org/msg01256.html -, coreutils -}: - -let - - bins = getBins coreutils [ "mv" ] - // getBins pkgs.execline [ - "execlineb" - { use = "if"; as = "execlineIf"; } - "redirfd" - "importas" - ] - // getBins pkgs.s6-portable-utils [ - "s6-chmod" - "s6-grep" - "s6-touch" - "s6-cat" - "s6-test" - ]; - - # execline block of depth 1 - block = args: builtins.map (arg: " ${arg}") args ++ [ "" ]; - - # derivation that tests whether a given line exists - # in the given file. Does not use runExecline, because - # that should be tested after all. - fileHasLine = line: file: derivation { - name = "run-execline-test-file-${file.name}-has-line"; - inherit (stdenv) system; - builder = bins.execlineIf; - args = - (block [ - bins.redirfd - "-r" - "0" - file # read file to stdin - bins.s6-grep - "-F" - "-q" - line # and grep for the line - ]) - ++ [ - # if the block succeeded, touch $out - bins.importas - "-ui" - "out" - "out" - bins.s6-touch - "$out" - ]; - preferLocalBuild = true; - allowSubstitutes = false; - }; - - # basic test that touches out - basic = runExeclineLocal "run-execline-test-basic" - { } [ - "importas" - "-ui" - "out" - "out" - "${bins.s6-touch}" - "$out" - ]; - - # whether the stdin argument works as intended - stdin = fileHasLine "foo" (runExeclineLocal "run-execline-test-stdin" - { - stdin = "foo\nbar\nfoo"; - } [ - "importas" - "-ui" - "out" - "out" - # this pipes stdout of s6-cat to $out - # and s6-cat redirects from stdin to stdout - "redirfd" - "-w" - "1" - "$out" - bins.s6-cat - ]); - - - wrapWithVar = runExeclineLocal "run-execline-test-wrap-with-var" - { - builderWrapper = writeScript "var-wrapper" '' - #!${bins.execlineb} -S0 - export myvar myvalue $@ - ''; - } [ - "importas" - "-ui" - "v" - "myvar" - "if" - [ bins.s6-test "myvalue" "=" "$v" ] - "importas" - "out" - "out" - bins.s6-touch - "$out" - ]; - -in -[ - basic - stdin - wrapWithVar -] diff --git a/nix/runTestsuite/default.nix b/nix/runTestsuite/default.nix deleted file mode 100644 index 8b02ed86d..000000000 --- a/nix/runTestsuite/default.nix +++ /dev/null @@ -1,199 +0,0 @@ -{ lib, pkgs, depot, ... }: - -# Run a nix testsuite. -# -# The tests are simple assertions on the nix level, -# and can use derivation outputs if IfD is enabled. -# -# You build a testsuite by bundling assertions into -# “it”s and then bundling the “it”s into a testsuite. -# -# Running the testsuite will abort evaluation if -# any assertion fails. -# -# Example: -# -# runTestsuite "myFancyTestsuite" [ -# (it "does an assertion" [ -# (assertEq "42 is equal to 42" "42" "42") -# (assertEq "also 23" 23 23) -# ]) -# (it "frmbls the brlbr" [ -# (assertEq true false) -# ]) -# ] -# -# will fail the second it group because true is not false. - -let - inherit (depot.nix.yants) - sum - struct - string - any - defun - list - drv - bool - ; - - bins = depot.nix.getBins pkgs.coreutils [ "printf" ] - // depot.nix.getBins pkgs.s6-portable-utils [ "s6-touch" "s6-false" "s6-cat" ]; - - # Returns true if the given expression throws when `deepSeq`-ed - throws = expr: - !(builtins.tryEval (builtins.deepSeq expr { })).success; - - # rewrite the builtins.partition result - # to use `ok` and `err` instead of `right` and `wrong`. - partitionTests = pred: xs: - let res = builtins.partition pred xs; - in { - ok = res.right; - err = res.wrong; - }; - - AssertErrorContext = - sum "AssertErrorContext" { - not-equal = struct "not-equal" { - left = any; - right = any; - }; - should-throw = struct "should-throw" { - expr = any; - }; - unexpected-throw = struct "unexpected-throw" { }; - }; - - # The result of an assert, - # either it’s true (yep) or false (nope). - # If it's nope we return an additional context - # attribute which gives details on the failure - # depending on the type of assert performed. - AssertResult = - sum "AssertResult" { - yep = struct "yep" { - test = string; - }; - nope = struct "nope" { - test = string; - context = AssertErrorContext; - }; - }; - - # Result of an it. An it is a bunch of asserts - # bundled up with a good description of what is tested. - ItResult = - struct "ItResult" { - it-desc = string; - asserts = list AssertResult; - }; - - # If the given boolean is true return a positive AssertResult. - # If the given boolean is false return a negative AssertResult - # with the provided AssertErrorContext describing the failure. - # - # This function is intended as a generic assert to implement - # more assert types and is not exposed to the user. - assertBoolContext = defun [ AssertErrorContext string bool AssertResult ] - (context: desc: res: - if res - then { yep = { test = desc; }; } - else { - nope = { - test = desc; - inherit context; - }; - }); - - # assert that left and right values are equal - assertEq = defun [ string any any AssertResult ] - (desc: left: right: - let - context = { not-equal = { inherit left right; }; }; - in - assertBoolContext context desc (left == right)); - - # assert that the expression throws when `deepSeq`-ed - assertThrows = defun [ string any AssertResult ] - (desc: expr: - let - context = { should-throw = { inherit expr; }; }; - in - assertBoolContext context desc (throws expr)); - - # assert that the expression does not throw when `deepSeq`-ed - assertDoesNotThrow = defun [ string any AssertResult ] - (desc: expr: - assertBoolContext { unexpected-throw = { }; } desc (!(throws expr))); - - # Annotate a bunch of asserts with a descriptive name - it = desc: asserts: { - it-desc = desc; - inherit asserts; - }; - - # Run a bunch of its and check whether all asserts are yep. - # If not, abort evaluation with `throw` - # and print the result of the test suite. - # - # Takes a test suite name as first argument. - runTestsuite = defun [ string (list ItResult) drv ] - (name: itResults: - let - goodAss = ass: AssertResult.match ass { - yep = _: true; - nope = _: false; - }; - res = partitionTests - (it: - (partitionTests goodAss it.asserts).err == [ ] - ) - itResults; - prettyRes = lib.generators.toPretty { } res; - in - if res.err == [ ] - then - depot.nix.runExecline.local "testsuite-${name}-successful" { } [ - "importas" - "out" - "out" - # force derivation to rebuild if test case list changes - "ifelse" - [ bins.s6-false ] - [ - bins.printf - "" - (builtins.hashString "sha512" prettyRes) - ] - "if" - [ bins.printf "%s\n" "testsuite ${name} successful!" ] - bins.s6-touch - "$out" - ] - else - depot.nix.runExecline.local "testsuite-${name}-failed" - { - stdin = prettyRes + "\n"; - } [ - "importas" - "out" - "out" - "if" - [ bins.printf "%s\n" "testsuite ${name} failed!" ] - "if" - [ bins.s6-cat ] - "exit" - "1" - ]); - -in -{ - inherit - assertEq - assertThrows - assertDoesNotThrow - it - runTestsuite - ; -} diff --git a/nix/stateMonad/tests/default.nix b/nix/stateMonad/tests/default.nix deleted file mode 100644 index c3cb5c99b..000000000 --- a/nix/stateMonad/tests/default.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ depot, ... }: - -let - inherit (depot.nix.runTestsuite) - runTestsuite - it - assertEq - ; - - inherit (depot.nix.stateMonad) - pure - run - join - fmap - bind - get - set - modify - after - for_ - getAttr - setAttr - modifyAttr - ; - - runStateIndependent = run (throw "This should never be evaluated!"); -in - -runTestsuite "stateMonad" [ - (it "behaves correctly independent of state" [ - (assertEq "pure" (runStateIndependent (pure 21)) 21) - (assertEq "join pure" (runStateIndependent (join (pure (pure 42)))) 42) - (assertEq "fmap pure" (runStateIndependent (fmap (builtins.mul 2) (pure 21))) 42) - (assertEq "bind pure" (runStateIndependent (bind (pure 12) (x: pure x))) 12) - ]) - (it "behaves correctly with an integer state" [ - (assertEq "get" (run 42 get) 42) - (assertEq "after set get" (run 21 (after (set 42) get)) 42) - (assertEq "after modify get" (run 21 (after (modify (builtins.mul 2)) get)) 42) - (assertEq "fmap get" (run 40 (fmap (builtins.add 2) get)) 42) - (assertEq "stateful sum list" - (run 0 (after - (for_ - [ - 15 - 12 - 10 - 5 - ] - (x: modify (builtins.add x))) - get)) - 42) - ]) - (it "behaves correctly with an attr set state" [ - (assertEq "getAttr" (run { foo = 42; } (getAttr "foo")) 42) - (assertEq "after setAttr getAttr" - (run { foo = 21; } (after (setAttr "foo" 42) (getAttr "foo"))) - 42) - (assertEq "after modifyAttr getAttr" - (run { foo = 10.5; } - (after - (modifyAttr "foo" (builtins.mul 4)) - (getAttr "foo"))) - 42) - (assertEq "fmap getAttr" - (run { foo = 21; } (fmap (builtins.mul 2) (getAttr "foo"))) - 42) - (assertEq "after setAttr to insert getAttr" - (run { } (after (setAttr "foo" 42) (getAttr "foo"))) - 42) - (assertEq "insert permutations" - (run - { - a = 2; - b = 3; - c = 5; - } - (after - (bind get - (state: - let - names = builtins.attrNames state; - in - for_ names (name1: - for_ names (name2: - # this is of course a bit silly, but making it more cumbersome - # makes sure the test exercises more of the code. - (bind (getAttr name1) - (value1: - (bind (getAttr name2) - (value2: - setAttr "${name1}_${name2}" (value1 * value2))))))))) - get)) - { - a = 2; - b = 3; - c = 5; - a_a = 4; - a_b = 6; - a_c = 10; - b_a = 6; - b_b = 9; - b_c = 15; - c_c = 25; - c_a = 10; - c_b = 15; - } - ) - ]) -] diff --git a/nix/tag/tests.nix b/nix/tag/tests.nix deleted file mode 100644 index e0085b483..000000000 --- a/nix/tag/tests.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ depot, lib, verifyTag, discr, discrDef, match, matchLam }: - -let - inherit (depot.nix.runTestsuite) - runTestsuite - assertEq - assertThrows - it - ; - - isTag-test = it "checks whether something is a tag" [ - (assertEq "is Tag" - (verifyTag { foo = "bar"; }) - { - isTag = true; - name = "foo"; - val = "bar"; - errmsg = null; - }) - (assertEq "is not Tag" - (removeAttrs (verifyTag { foo = "bar"; baz = 42; }) [ "errmsg" ]) - { - isTag = false; - name = null; - val = null; - }) - ]; - - discr-test = it "can discr things" [ - (assertEq "id" - (discr [ - { a = lib.const true; } - ] "x") - { a = "x"; }) - (assertEq "bools here, ints there" - (discr [ - { bool = lib.isBool; } - { int = lib.isInt; } - ] 25) - { int = 25; }) - (assertEq "bools here, ints there 2" - (discr [ - { bool = lib.isBool; } - { int = lib.isInt; } - ] - true) - { bool = true; }) - (assertEq "fallback to default" - (discrDef "def" [ - { bool = lib.isBool; } - { int = lib.isInt; } - ] "foo") - { def = "foo"; }) - (assertThrows "throws failing to match" - (discr [ - { fish = x: x == 42; } - ] 21)) - ]; - - match-test = it "can match things" [ - (assertEq "match example" - ( - let - success = { res = 42; }; - failure = { err = "no answer"; }; - matcher = { - res = i: i + 1; - err = _: 0; - }; - in - { - one = match success matcher; - two = match failure matcher; - } - ) - { - one = 43; - two = 0; - }) - (assertEq "matchLam & pipe" - (lib.pipe { foo = 42; } [ - (matchLam { - foo = i: if i < 23 then { small = i; } else { big = i; }; - bar = _: { small = 5; }; - }) - (matchLam { - small = i: "yay it was small"; - big = i: "whoo it was big!"; - }) - ]) - "whoo it was big!") - ]; - -in -runTestsuite "tag" [ - isTag-test - discr-test - match-test -] diff --git a/nix/utils/tests/default.nix b/nix/utils/tests/default.nix deleted file mode 100644 index 32dc11f3a..000000000 --- a/nix/utils/tests/default.nix +++ /dev/null @@ -1,98 +0,0 @@ -{ depot, lib, ... }: - -let - inherit (depot.nix.runTestsuite) - runTestsuite - it - assertEq - assertThrows - assertDoesNotThrow - ; - - inherit (depot.nix.utils) - isDirectory - isRegularFile - isSymlink - storePathName - ; - - assertUtilsPred = msg: act: exp: [ - (assertDoesNotThrow "${msg} does not throw" act) - (assertEq msg (builtins.tryEval act).value exp) - ]; - - pathPredicates = it "judges paths correctly" (lib.flatten [ - # isDirectory - (assertUtilsPred "directory isDirectory" - (isDirectory ./directory) - true) - (assertUtilsPred "symlink not isDirectory" - (isDirectory ./symlink-directory) - false) - (assertUtilsPred "file not isDirectory" - (isDirectory ./directory/file) - false) - # isRegularFile - (assertUtilsPred "file isRegularFile" - (isRegularFile ./directory/file) - true) - (assertUtilsPred "symlink not isRegularFile" - (isRegularFile ./symlink-file) - false) - (assertUtilsPred "directory not isRegularFile" - (isRegularFile ./directory) - false) - # isSymlink - (assertUtilsPred "symlink to file isSymlink" - (isSymlink ./symlink-file) - true) - (assertUtilsPred "symlink to directory isSymlink" - (isSymlink ./symlink-directory) - true) - (assertUtilsPred "symlink to symlink isSymlink" - (isSymlink ./symlink-symlink-file) - true) - (assertUtilsPred "symlink to missing file isSymlink" - (isSymlink ./missing) - true) - (assertUtilsPred "directory not isSymlink" - (isSymlink ./directory) - false) - (assertUtilsPred "file not isSymlink" - (isSymlink ./directory/file) - false) - # missing files throw - (assertThrows "isDirectory throws on missing file" - (isDirectory ./does-not-exist)) - (assertThrows "isRegularFile throws on missing file" - (isRegularFile ./does-not-exist)) - (assertThrows "isSymlink throws on missing file" - (isSymlink ./does-not-exist)) - ]); - - magratheaStorePath = - builtins.unsafeDiscardStringContext depot.tools.magrathea.outPath; - - cleanedSource = lib.cleanSource ./.; - - storePathNameTests = it "correctly gets the basename of a store path" [ - (assertEq "base name of a derivation" - (storePathName depot.tools.magrathea) - depot.tools.magrathea.name) - (assertEq "base name of a store path string" - (storePathName magratheaStorePath) - depot.tools.magrathea.name) - (assertEq "base name of a path within a store path" - (storePathName "${magratheaStorePath}/bin/mg") "mg") - (assertEq "base name of a path" - (storePathName ../default.nix) "default.nix") - (assertEq "base name of a cleanSourced path" - (storePathName cleanedSource) - cleanedSource.name) - ]; -in - -runTestsuite "nix.utils" [ - pathPredicates - storePathNameTests -] diff --git a/nix/writeElispBin/default.nix b/nix/writeElispBin/default.nix deleted file mode 100644 index ee95b1c3a..000000000 --- a/nix/writeElispBin/default.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ depot, pkgs, ... }: - -{ name, src, deps ? (_: [ ]), emacs ? pkgs.emacs-nox }: - -let - inherit (pkgs) emacsPackages emacsPackagesFor; - inherit (builtins) isString toFile; - - finalEmacs = (emacsPackagesFor emacs).emacsWithPackages deps; - - srcFile = - if isString src - then toFile "${name}.el" src - else src; - -in -depot.nix.writeScriptBin name '' - #!/bin/sh - ${finalEmacs}/bin/emacs --batch --no-site-file --script ${srcFile} $@ -'' diff --git a/nix/writeExecline/default.nix b/nix/writeExecline/default.nix deleted file mode 100644 index 5169b0138..000000000 --- a/nix/writeExecline/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ pkgs, depot, ... }: - -# Write an execline script, represented as nested nix lists. -# Everything is escaped correctly. -# https://skarnet.org/software/execline/ - -# TODO(Profpatsch) upstream into nixpkgs - -name: -{ - # "var": substitute readNArgs variables and start $@ - # from the (readNArgs+1)th argument - # "var-full": substitute readNArgs variables and start $@ from $0 - # "env": don’t substitute, set # and 0…n environment vaariables, where n=$# - # "none": don’t substitute or set any positional arguments - # "env-no-push": like "env", but bypass the push-phase. Not recommended. - argMode ? "var" -, # Number of arguments to be substituted as variables (passed to "var"/"-s" or "var-full"/"-S" - readNArgs ? 0 -, -}: -# Nested list of lists of commands. -# Inner lists are translated to execline blocks. -argList: - -let - env = - if argMode == "var" then "s${toString readNArgs}" - else if argMode == "var-full" then "S${toString readNArgs}" - else if argMode == "env" then "" - else if argMode == "none" then "P" - else if argMode == "env-no-push" then "p" - else abort ''"${toString argMode}" is not a valid argMode, use one of "var", "var-full", "env", "none", "env-no-push".''; - -in -depot.nix.writeScript name '' - #!${pkgs.execline}/bin/execlineb -W${env} - ${depot.nix.escapeExecline argList} -'' diff --git a/nix/writeScript/default.nix b/nix/writeScript/default.nix deleted file mode 100644 index 1f53b4e4f..000000000 --- a/nix/writeScript/default.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ pkgs, depot, ... }: - -# Write the given string to $out -# and make it executable. - -let - bins = depot.nix.getBins pkgs.s6-portable-utils [ - "s6-cat" - "s6-chmod" - ]; - -in -name: -# string of the executable script that is put in $out -script: - -depot.nix.runExecline name -{ - stdin = script; - derivationArgs = { - preferLocalBuild = true; - allowSubstitutes = false; - }; -} [ - "importas" - "out" - "out" - # this pipes stdout of s6-cat to $out - # and s6-cat redirects from stdin to stdout - "if" - [ "redirfd" "-w" "1" "$out" bins.s6-cat ] - bins.s6-chmod - "0755" - "$out" -] diff --git a/nix/writeScriptBin/default.nix b/nix/writeScriptBin/default.nix deleted file mode 100644 index ed26cf197..000000000 --- a/nix/writeScriptBin/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ depot, ... }: - -# Like writeScript, -# but put the script into `$out/bin/${name}`. - -name: -script: - -depot.nix.binify { - exe = (depot.nix.writeScript name script); - inherit name; -} diff --git a/nix/writers/default.nix b/nix/writers/default.nix deleted file mode 100644 index e849f1cb0..000000000 --- a/nix/writers/default.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ depot, pkgs, lib, ... }: - -let - bins = depot.nix.getBins pkgs.s6-portable-utils [ "s6-ln" "s6-ls" "s6-touch" ] - ; - - linkTo = name: path: depot.nix.runExecline.local name { } [ - "importas" - "out" - "out" - bins.s6-ln - "-s" - path - "$out" - ]; - - # Build a rust executable, $out is the executable. - rustSimple = args@{ name, ... }: src: - linkTo name "${rustSimpleBin args src}/bin/${name}"; - - # Like `rustSimple`, but put the binary in `$out/bin/`. - rustSimpleBin = - { name - , dependencies ? [ ] - , doCheck ? true - }: src: - (if doCheck then testRustSimple else pkgs.lib.id) - (pkgs.buildRustCrate ({ - pname = name; - version = "1.0.0"; - crateName = name; - crateBin = [ name ]; - dependencies = dependencies; - src = pkgs.runCommandLocal "write-main.rs" - { - src = src; - passAsFile = [ "src" ]; - } '' - mkdir -p $out/src/bin - cp "$srcPath" $out/src/bin/${name}.rs - find $out - ''; - })); - - # Build a rust library, that can be used as dependency to `rustSimple`. - # Wrapper around `pkgs.buildRustCrate`, takes all its arguments. - rustSimpleLib = - { name - , dependencies ? [ ] - , doCheck ? true - , - }: src: - (if doCheck then testRustSimple else pkgs.lib.id) - (pkgs.buildRustCrate ({ - pname = name; - version = "1.0.0"; - crateName = name; - dependencies = dependencies; - src = pkgs.runCommandLocal "write-lib.rs" - { - src = src; - passAsFile = [ "src" ]; - } '' - mkdir -p $out/src - cp "$srcPath" $out/src/lib.rs - find $out - ''; - })); - - /* Takes a `buildRustCrate` derivation as an input, - * builds it with `{ buildTests = true; }` and runs - * all tests found in its `tests` dir. If they are - * all successful, `$out` will point to the crate - * built with `{ buildTests = false; }`, otherwise - * it will fail to build. - * - * See also `nix.drvSeqL` which is used to implement - * this behavior. - */ - testRustSimple = rustDrv: - let - crate = buildTests: rustDrv.override { inherit buildTests; }; - tests = depot.nix.runExecline.local "${rustDrv.name}-tests-run" { } [ - "importas" - "out" - "out" - "if" - [ - "pipeline" - [ bins.s6-ls "${crate true}/tests" ] - "forstdin" - "-o0" - "test" - "importas" - "test" - "test" - "${crate true}/tests/$test" - ] - bins.s6-touch - "$out" - ]; - in - depot.nix.drvSeqL [ tests ] (crate false); - -in -{ - inherit - rustSimple - rustSimpleBin - rustSimpleLib - ; -} diff --git a/nix/writers/tests/rust.nix b/nix/writers/tests/rust.nix deleted file mode 100644 index 232a2dc60..000000000 --- a/nix/writers/tests/rust.nix +++ /dev/null @@ -1,76 +0,0 @@ -{ depot, pkgs, ... }: - -let - inherit (depot.nix.writers) - rustSimple - rustSimpleLib - rustSimpleBin - ; - - inherit (pkgs) - coreutils - ; - - run = drv: depot.nix.runExecline.local "run-${drv.name}" { } [ - "if" - [ drv ] - "importas" - "out" - "out" - "${coreutils}/bin/touch" - "$out" - ]; - - rustTransitiveLib = rustSimpleLib - { - name = "transitive"; - } '' - pub fn transitive(s: &str) -> String { - let mut new = s.to_string(); - new.push_str(" 1 2 3"); - new - } - - #[cfg(test)] - mod tests { - use super::*; - - #[test] - fn test_transitive() { - assert_eq!(transitive("foo").as_str(), "foo 1 2 3") - } - } - ''; - - rustTestLib = rustSimpleLib - { - name = "test_lib"; - dependencies = [ rustTransitiveLib ]; - } '' - extern crate transitive; - use transitive::{transitive}; - pub fn test() -> String { - transitive("test") - } - ''; - - rustWithLib = run (rustSimple - { - name = "rust-with-lib"; - dependencies = [ rustTestLib ]; - } '' - extern crate test_lib; - - fn main() { - assert_eq!(test_lib::test(), String::from("test 1 2 3")); - } - ''); - - -in -depot.nix.readTree.drvTargets { - inherit - rustTransitiveLib - rustWithLib - ; -} diff --git a/nix/yants/README.md b/nix/yants/README.md deleted file mode 100644 index 98e6642e2..000000000 --- a/nix/yants/README.md +++ /dev/null @@ -1,88 +0,0 @@ -yants -===== - -This is a tiny type-checker for data in Nix, written in Nix. - -# Features - -* Checking of primitive types (`int`, `string` etc.) -* Checking polymorphic types (`option`, `list`, `either`) -* Defining & checking struct/record types -* Defining & matching enum types -* Defining & matching sum types -* Defining function signatures (including curried functions) -* Types are composable! `option string`! `list (either int (option float))`! -* Type errors also compose! - -Currently lacking: - -* Any kind of inference -* Convenient syntax for attribute-set function signatures - -## Primitives & simple polymorphism - -![simple](/about/nix/yants/screenshots/simple.png) - -## Structs - -![structs](/about/nix/yants/screenshots/structs.png) - -## Nested structs! - -![nested structs](/about/nix/yants/screenshots/nested-structs.png) - -## Enums! - -![enums](/about/nix/yants/screenshots/enums.png) - -## Functions! - -![functions](/about/nix/yants/screenshots/functions.png) - -# Usage - -Yants can be imported from its `default.nix`. A single attribute (`lib`) can be -passed, which will otherwise be imported from ``. - -TIP: You do not need to clone the entire TVL repository to use Yants! -You can clone just this project through josh: `git clone -https://code.tvl.fyi/depot.git:/nix/yants.git` - -Examples for the most common import methods would be: - -1. Import into scope with `with`: - ```nix - with (import ./default.nix {}); - # ... Nix code that uses yants ... - ``` - -2. Import as a named variable: - ```nix - let yants = import ./default.nix {}; - in yants.string "foo" # or other uses ... - ```` - -3. Overlay into `pkgs.lib`: - ```nix - # wherever you import your package set (e.g. from ): - import { - overlays = [ - (self: super: { - lib = super.lib // { yants = import ./default.nix { inherit (super) lib; }; }; - }) - ]; - } - - # yants now lives at lib.yants, besides the other library functions! - ``` - -Please see my [Nix one-pager](https://github.com/tazjin/nix-1p) for more generic -information about the Nix language and what the above constructs mean. - -# Stability - -The current API of Yants is **not yet** considered stable, but it works fine and -should continue to do so even if used at an older version. - -Yants' tests use Nix versions above 2.2 - compatibility with older versions is -not guaranteed. diff --git a/nix/yants/default.nix b/nix/yants/default.nix deleted file mode 100644 index cb9fc0828..000000000 --- a/nix/yants/default.nix +++ /dev/null @@ -1,368 +0,0 @@ -# Copyright 2019 Google LLC -# SPDX-License-Identifier: Apache-2.0 -# -# Provides a "type-system" for Nix that provides various primitive & -# polymorphic types as well as the ability to define & check records. -# -# All types (should) compose as expected. - -{ lib ? (import { }).lib, ... }: - -with builtins; let - prettyPrint = lib.generators.toPretty { }; - - # typedef' :: struct { - # name = string; - # checkType = function; (a -> result) - # checkToBool = option function; (result -> bool) - # toError = option function; (a -> result -> string) - # def = option any; - # match = option function; - # } -> type - # -> (a -> b) - # -> (b -> bool) - # -> (a -> b -> string) - # -> type - # - # This function creates an attribute set that acts as a type. - # - # It receives a type name, a function that is used to perform a - # check on an arbitrary value, a function that can translate the - # return of that check to a boolean that informs whether the value - # is type-conformant, and a function that can construct error - # messages from the check result. - # - # This function is the low-level primitive used to create types. For - # many cases the higher-level 'typedef' function is more appropriate. - typedef' = - { name - , checkType - , checkToBool ? (result: result.ok) - , toError ? (_: result: result.err) - , def ? null - , match ? null - }: { - inherit name checkToBool toError; - - # check :: a -> bool - # - # This function is used to determine whether a given type is - # conformant. - check = value: checkToBool (checkType value); - - # checkType :: a -> struct { ok = bool; err = option string; } - # - # This function checks whether the passed value is type conformant - # and returns an optional type error string otherwise. - inherit checkType; - - # __functor :: a -> a - # - # This function checks whether the passed value is type conformant - # and throws an error if it is not. - # - # The name of this function is a special attribute in Nix that - # makes it possible to execute a type attribute set like a normal - # function. - __functor = self: value: - let result = self.checkType value; - in if checkToBool result then value - else throw (toError value result); - }; - - typeError = type: val: - "expected type '${type}', but value '${prettyPrint val}' is of type '${typeOf val}'"; - - # typedef :: string -> (a -> bool) -> type - # - # typedef is the simplified version of typedef' which uses a default - # error message constructor. - typedef = name: check: typedef' { - inherit name; - checkType = v: - let res = check v; - in { - ok = res; - } // (lib.optionalAttrs (!res) { - err = typeError name v; - }); - }; - - checkEach = name: t: l: foldl' - (acc: e: - let - res = t.checkType e; - isT = t.checkToBool res; - in - { - ok = acc.ok && isT; - err = - if isT - then acc.err - else acc.err + "${prettyPrint e}: ${t.toError e res}\n"; - }) - { ok = true; err = "expected type ${name}, but found:\n"; } - l; -in -lib.fix (self: { - # Primitive types - any = typedef "any" (_: true); - unit = typedef "unit" (v: v == { }); - int = typedef "int" isInt; - bool = typedef "bool" isBool; - float = typedef "float" isFloat; - string = typedef "string" isString; - path = typedef "path" (x: typeOf x == "path"); - drv = typedef "derivation" (x: isAttrs x && x ? "type" && x.type == "derivation"); - function = typedef "function" (x: isFunction x || (isAttrs x && x ? "__functor" - && isFunction x.__functor)); - - # Type for types themselves. Useful when defining polymorphic types. - type = typedef "type" (x: - isAttrs x - && hasAttr "name" x && self.string.check x.name - && hasAttr "checkType" x && self.function.check x.checkType - && hasAttr "checkToBool" x && self.function.check x.checkToBool - && hasAttr "toError" x && self.function.check x.toError - ); - - # Polymorphic types - option = t: typedef' rec { - name = "option<${t.name}>"; - checkType = v: - let res = t.checkType v; - in { - ok = isNull v || (self.type t).checkToBool res; - err = "expected type ${name}, but value does not conform to '${t.name}': " - + t.toError v res; - }; - }; - - eitherN = tn: typedef "either<${concatStringsSep ", " (map (x: x.name) tn)}>" - (x: any (t: (self.type t).check x) tn); - - either = t1: t2: self.eitherN [ t1 t2 ]; - - list = t: typedef' rec { - name = "list<${t.name}>"; - - checkType = v: - if isList v - then checkEach name (self.type t) v - else { - ok = false; - err = typeError name v; - }; - }; - - attrs = t: typedef' rec { - name = "attrs<${t.name}>"; - - checkType = v: - if isAttrs v - then checkEach name (self.type t) (attrValues v) - else { - ok = false; - err = typeError name v; - }; - }; - - # Structs / record types - # - # Checks that all fields match their declared types, no optional - # fields are missing and no unexpected fields occur in the struct. - # - # Anonymous structs are supported (e.g. for nesting) by omitting the - # name. - # - # TODO: Support open records? - struct = - # Struct checking is more involved than the simpler types above. - # To make the actual type definition more readable, several - # helpers are defined below. - let - # checkField checks an individual field of the struct against - # its definition and creates a typecheck result. These results - # are aggregated during the actual checking. - checkField = def: name: value: - let result = def.checkType value; in rec { - ok = def.checkToBool result; - err = - if !ok && isNull value - then "missing required ${def.name} field '${name}'\n" - else "field '${name}': ${def.toError value result}\n"; - }; - - # checkExtraneous determines whether a (closed) struct contains - # any fields that are not part of the definition. - checkExtraneous = def: has: acc: - if (length has) == 0 then acc - else if (hasAttr (head has) def) - then checkExtraneous def (tail has) acc - else - checkExtraneous def (tail has) { - ok = false; - err = acc.err + "unexpected struct field '${head has}'\n"; - }; - - # checkStruct combines all structure checks and creates one - # typecheck result from them - checkStruct = def: value: - let - init = { ok = true; err = ""; }; - extraneous = checkExtraneous def (attrNames value) init; - - checkedFields = map - (n: - let v = if hasAttr n value then value."${n}" else null; - in checkField def."${n}" n v) - (attrNames def); - - combined = foldl' - (acc: res: { - ok = acc.ok && res.ok; - err = if !res.ok then acc.err + res.err else acc.err; - }) - init - checkedFields; - in - { - ok = combined.ok && extraneous.ok; - err = combined.err + extraneous.err; - }; - - struct' = name: def: typedef' { - inherit name def; - checkType = value: - if isAttrs value - then (checkStruct (self.attrs self.type def) value) - else { ok = false; err = typeError name value; }; - - toError = _: result: "expected '${name}'-struct, but found:\n" + result.err; - }; - in - arg: if isString arg then (struct' arg) else (struct' "anon" arg); - - # Enums & pattern matching - enum = - let - plain = name: def: typedef' { - inherit name def; - - checkType = (x: isString x && elem x def); - checkToBool = x: x; - toError = value: _: "'${prettyPrint value} is not a member of enum ${name}"; - }; - enum' = name: def: lib.fix (e: (plain name def) // { - match = x: actions: deepSeq (map e (attrNames actions)) ( - let - actionKeys = attrNames actions; - missing = foldl' (m: k: if (elem k actionKeys) then m else m ++ [ k ]) [ ] def; - in - if (length missing) > 0 - then throw "Missing match action for members: ${prettyPrint missing}" - else actions."${e x}" - ); - }); - in - arg: if isString arg then (enum' arg) else (enum' "anon" arg); - - # Sum types - # - # The representation of a sum type is an attribute set with only one - # value, where the key of the value denotes the variant of the type. - sum = - let - plain = name: def: typedef' { - inherit name def; - checkType = (x: - let variant = elemAt (attrNames x) 0; - in if isAttrs x && length (attrNames x) == 1 && hasAttr variant def - then - let - t = def."${variant}"; - v = x."${variant}"; - res = t.checkType v; - in - if t.checkToBool res - then { ok = true; } - else { - ok = false; - err = "while checking '${name}' variant '${variant}': " - + t.toError v res; - } - else { ok = false; err = typeError name x; } - ); - }; - sum' = name: def: lib.fix (s: (plain name def) // { - match = x: actions: - let - variant = deepSeq (s x) (elemAt (attrNames x) 0); - actionKeys = attrNames actions; - defKeys = attrNames def; - missing = foldl' (m: k: if (elem k actionKeys) then m else m ++ [ k ]) [ ] defKeys; - in - if (length missing) > 0 - then throw "Missing match action for variants: ${prettyPrint missing}" - else actions."${variant}" x."${variant}"; - }); - in - arg: if isString arg then (sum' arg) else (sum' "anon" arg); - - # Typed function definitions - # - # These definitions wrap the supplied function in type-checking - # forms that are evaluated when the function is called. - # - # Note that typed functions themselves are not types and can not be - # used to check values for conformity. - defun = - let - mkFunc = sig: f: { - inherit sig; - __toString = self: foldl' (s: t: "${s} -> ${t.name}") - "λ :: ${(head self.sig).name}" - (tail self.sig); - __functor = _: f; - }; - - defun' = sig: func: - if length sig > 2 - then mkFunc sig (x: defun' (tail sig) (func ((head sig) x))) - else mkFunc sig (x: ((head (tail sig)) (func ((head sig) x)))); - - in - sig: func: - if length sig < 2 - then (throw "Signature must at least have two types (a -> b)") - else defun' sig func; - - # Restricting types - # - # `restrict` wraps a type `t`, and uses a predicate `pred` to further - # restrict the values, giving the restriction a descriptive `name`. - # - # First, the wrapped type definition is checked (e.g. int) and then the - # value is checked with the predicate, so the predicate can already - # depend on the value being of the wrapped type. - restrict = name: pred: t: - let restriction = "${t.name}[${name}]"; in typedef' { - name = restriction; - checkType = v: - let res = t.checkType v; - in - if !(t.checkToBool res) - then res - else - let - iok = pred v; - in - if isBool iok then { - ok = iok; - err = "${prettyPrint v} does not conform to restriction '${restriction}'"; - } else - # use throw here to avoid spamming the build log - throw "restriction '${restriction}' predicate returned unexpected value '${prettyPrint iok}' instead of boolean"; - }; - -}) diff --git a/nix/yants/screenshots/enums.png b/nix/yants/screenshots/enums.png deleted file mode 100644 index 71673e7ab63cec4c293d878429e4122dd5ad3b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41305 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

h)T>YsZcsKYvc0GKHr) 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 JS?83{1OTybB$5CC diff --git a/nix/yants/screenshots/functions.png b/nix/yants/screenshots/functions.png deleted file mode 100644 index 30ed50f8327beab4f82c79e5957cadc607a0f8a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32907 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 BjV1s9 diff --git a/nix/yants/screenshots/nested-structs.png b/nix/yants/screenshots/nested-structs.png deleted file mode 100644 index 6b03ed65ceb78493536e07b81804eb6af1bbcd29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70264 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 diff --git a/nix/yants/screenshots/simple.png b/nix/yants/screenshots/simple.png deleted file mode 100644 index 05a302cc6b9d5e9c77b7f412ce3277d99894b4ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43010 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≫aeTlRe&awcdoPO3^)oj%{`~EmT8oK^2~T8= zKC`s6w63nMlSfgJkr8-|vgu{wg1DVKcV4`B@f{f0hCL|S$;!&wEOYgA>n!QAudl9Z zhp*!)h0LlmdUCG_&dbxAe){Y8@AIunSMA%kFJ*(PhDg!QJC7bcdh_PZJvl>85o>E} zrw+9@b!?yw35tkD3VhiTIcMP<_@Daz+~ZkR*Zw#9i!r${Mlv-uaB+y;={~whL1Ffa zkUf7kL*^4}om07#ls0*|IFvE5 zc+}O)%s$32OO&bZp8kIiwaJs!jn#|h6{kI8Xoxy|R+W9~jg+o*cTiUtM#V;2@W|F&ie*tBk)o?QR&r$zO@ z-*?|JT+=!|by$5Ue-2eBpwGWs!>FlZ%Vp|H^_YXNHD36SnX~@vtdd zS=~ByYSoGr8p_Ix_d`}bO%R?m%`yA(GT(Xg=Edll+t|!G|NMJ7c*h(=(VsRnPfRSC>=qc)$GpJ(b1v zkTp>X(ki;mVF?KjPEFM=E-Jco>5`mHMF4meubKeIFKf_d2?mCn3Yn5~a&mHlf`U$+ zKF!R;^vfEYY8hG+l>R+9lD3&sv8}C5hHv?Pa1qK7z@het->+ZZ-pt&5`}Xbg?P`Dh z{QUg(ty{mWAxokx6*DEb=*8|@vVOgN?XMDR>)o5v&vUgN`q#$+iZBN`k0>_Xg#i^` zUtPT(UtfD_ie_bHWol~bUs*wre1na_@>Bz1uGTAORoAXv`y1*SOT*vR3;}jx-Ah-m z&d$sPHJsnQ^W)Ie)O`7V0Z1Rila?i^0hWc2T3TCMT@tghUOhcM{kN(dSnjA|rescw zQ(|>>b#1Nf^wWEbpZir+RmH`{!NSV^P7F9bF1ByH7(_=$^R+JqAMqqCB=qR< zwmnbTHP`ZNf<~fI%i0>n?O_v&*T2rP zdnxqA{fI*IcQM|(A12Bvs_b8pd~K7KQ%7^}u~zw>mEp(FR(@IX@4ep{+uT!zKYrUd zO>ZzU<9sJlE@OTA_eUQ81=IHW9(}WOkJkIR_BHS4eq6O|D(hr{N3U0{^Fh%iMZeuJxkq9 zlx?r6H>Px4yRYiJB_sLFi{vve*7v=*~vIdk@8Uted}&B(y8 zV86}eEo&k-A3Jw$-L`Gt9vp18w6p~Eels%#S3Kvu=h&EL(_?viB1h|?c2g5>zwcZ< zmcb_lbRSM$c1~HciM^j=|KwxW7Tu0E65o9>_l(5){g+Br*S|l^_Oi3D3ktbq`S!nU*r{b|XR1}I z{>+bc)9agcY0vBCqgKv0x7^=!`}+GV4ZZhQE-jfUX&fPS{>sF~?4c?D{`_na0A~;D ztScJ%`R^MV8Xi1&@cR1t_}yh|-#=ntV0giQUPU+gc%N#^kt0W9_Ec<~|EO~21&-p4 z)`>>D^!|EEl(_YKp8gToGT~hEe$IDO0#y$^yS8r4?k$3CS7sQh=w`ip|M^S3?TZ%z z+qQ7EXIyq+Ke+d$kU(DO^=Y-eo0nx;_FR-OcT1k2s{1#ug|k`U)8Wo(O^^7TIQBc= zxS?}Xv+K(Otq(u{%mRZqZ*ppDYs<^at*xy=xys;$?c^;XVPR2`k-c)ZQ7`3_Gc$MA z{QTrOS#9Qw875|C)22nMJwR^wyWgx@U!PHkD=cck+3_nT&4laQ2r`t&JicX4QFC|BF8dGqoT5;jzP zeALy|_5EJ;`MY=TUbwJf*|KMEZf<7hlX>v@r_k4>Z{Gd*@k29snNG}(3nx!z{`~Zm zsWIX9Hqc(VIi}gyW|?Mh*|H@mIoW@{o$kMBjMwkpJ%3r)DeE<>^A^cV=UX)%ms#~( zyl`pCoYnt+*Za8jChYrISL*3{y{*3_c6k=>#btLj-`&`={bQEj?iI6+o2;$RH_yow zwfbS3^_=_Yc89$oA9rNGve#;@->WohS3-OAPpe(``p+-2ci+A5{k1Le{lm1*L-*27=lt+^zt`3IyKLsY zEz2KT_FkL4^W81>eHCdAX@{ntx0!llQ;qG4FZUD5rKF^k-TPEpY^uJzXq^f=IAm9P zP}7kkF6!#br)r0TR_%9+N56Ud7Idn{+P_~oW`owU$UrtJfA~J-etIMrVX65qb>T#gGJ-=RQhlhs;a<(7-`0?Y%FJEG|=fzf4?b@`j>C(lL z8)q2OojlS{sb0Ewn&;WIvVXsvZTDaKT=+P6;>3w;Y-}wPK=Bc~>&xr)`@?i@ESKPM zi;0=j+|2wHbYPB(O3IfP7X<|cA6-p(mFINA{@=&`1q&2jeLU7Hef#$9?KwA{mS5&n z%)Y*EZ_!h)*x0!m4UE_C*2{nDl6`Q^tR!-V(Gq+A{LEu2Eg{!RzW&hab(^%`NGAV# zNyuf9>T3^W+wAhggTwhb6sPBJxoXPsMAKIdFrkO14DyURodRUbLPx>@ghU2cU$UdvGnxx)Y@ZhywY2?ZVe6&W@cgn%|M-> z=eySR*`r6Fe!X7r9m2=Uo4WZXD=X{iX}YuRYJZ)XX&k;j?(U^aK>+~|o<4p0@ZrTv zmy}lRNjS(99)5kWRcp(HTW$M;`Cfh4{>?Q!N}?nw?M%e)dFu{K^!|VPdHubd_Zy=wnH}z0 zrFT9xbn%^?_wvIUNv79rPkM%+li!l>8%|xj zc-QUO;hFOJE2~q#E#~|z_tq;*spZG6EX%&+()E9?svnMeU^uJ{I|Y$ z*?o1$t@Udc`R|{2TD_%ZO|6pLq$8{{KdS;<_d8DXoo!ZGRaLa}&W8^l-c7dxGtls_V#I3t6 z6D}|JS65NFa^=dCXU~M3*2V7LmU?>HuU}QKbPu=j3SX63aMyQkzqtK@rEQ{L%jW%a zTJ&-8YGt`t*^eK#3!3}$#LKSPoayiUVAZU9&uadEs{VaDd;SyA(k-7`>+ik&@h-zy z@yMkwGrL!)>u(Wqs)^Ymk+i?!c%e?RvszqCoi7q{oh#{^ z`M<(;e~y`EE88vK<>W^7PmQ0ibG4>>=4JK1W!61QBwq+PbxbIU{V`wRyJP>=Mzv%l*B)g2EmI1_t`i zvoXGZ|x%$M>+OMI$Ym#)8lST?hIwT(}?!JU0!eR3fe^Cv7? zxX_Vf<@)vO*R2bCHw|>G(Y4D#WXKI6E}$$JcY&2nB`ey*DvTR*KN_LS(fuT^`B9v))teB-CNtKTUz zJ6pNs!hBnYX)AZH{PoCxw||wOWXD}y_Kz!{S6O}0cIfN(OOCpB3lx2-IlnWYdOPR$wYg4C9DA2XUq2o4 zGj+kD`wFV&=HG8@OlD+cjNYE->+4(l;elgqZEbe;>*6|V&{?^6FE3G5R(6h#j@A%K zOHWr+i-LDtQ>FMdp%8SLr@-i|kik^5>RO~qN^5m&gr#?SFfBMVL zN9r%HvgA(TOnz2z==~d;Ns7L;ZLck!9h%u9keE7GVY$bIcr}empDVvFxGZ}Yreyji z@2IH>XWiawVn4SUJe6J?>fP=&dCQk)S6H<&FUIX(-6)V`9(DLsQ>Af#{Hdcxr^96BCsm9q#>6Q41nt5uvbLY zO26P?lZmsem6a8T;-agiQ&X?53Ozkdx4Ld_E4TQ){q^xX=W92b-D%*tD0Iz~e@aj5 zi5qt}N!_{o*U3aG(a6JH|8?^I2>~8K^_jKx9|P>e-`;MO-5k4hH;c;Gq* z9vl~wJmVaaOSLO+-nenY#m#Nn^y%(yZr{pv7#J98m$Y~OC@U*#5s;OYU0QSC!^6Xz zpyMEgJ}+Mxx=@ABVP$emZEdaEf}mY;Ws9FsawOZ ze>-e@cWKCV1p~vBo~_q*%>4d6;A-UhY}VhK=YQ5SU3lrfLaDU2v$Hc_d-Kj83=AJ8 zP4J0|iHT8CQnIqP-v8^B_R<;$@cNHqJ(7=)^=j+rq<|+jy2W&h3JV{8te7`%9_aM9 zj}`U*el8Etu&MpEW%A@;7ndXI^J|p$2{t+eL`Ke>JGb`3gM;n-|M%JcIod6*?l)&g z(bH4QmMzl`UuR-sA|WABQB}1rZttv+r5Hoo4_JHEtSQqET`=i=hx-_KdU z=eZUm%fR4p$Jq1qionJD{(L%p?%cWhf1l^?|9|f=E2HHc`+7SQlPg!Qgw$MIzHZ$* zUTL!%w{Gdh?kYJy&$dNCT^%I2ZQC~O@O7XK0WU5rd?XDyJ>lQKe|dR%`TKsRg@%fT zg0_pyG*0)MX_R_*SEW7C|fAS?><-L0<bkX?SJ$51_wMLqHQz;YHZ?y! zJUKaeRrgx!nY*H|_3r1n>&vloLdKoF8+L^W$X;LZ<5+NgX6$C4=WpwIa-VbmuZ~=+ zzNKdNoj=EPw#_tryxg{a{fiBC;mtD*AMbT_R@Hhw&+Ms$&E~GV^S=J7zVmBSR;~PHzN7H5n_R!Rgv5`h)8p4gZS_jxv}0gsIQV?#lBaje@276Qd3#%KaM&>? z(7wUQZ8?zz1si71p558$>Fj*?>}>PNlO}O-b8p_X$*oVuvhGjCMP8Qc>tbKOe=jc} z5D*uqw^3GDcyj&U*YW4hovW*>Tg04XH~;@Zc6k;ywqHMfL_|ktXJ&q^*mLR9r7vH; zD7*J*yw>KiSj4<+#}12&YbNbe3@$(YD)n_)x2)& z|5CMLZCc1*X%P;V=$)1UU!C~!%6`mYZK$AMRZdoZQDJd&2 zj$h>I?{98k09tvsQaZ-#!{^W4U0q(Do-M^FIb>pVIi?S zkAXAsbg5mfyZMj#{(33jK34^oSp9svp>ry$@tf1TsBqb$%XBs`7 z>~B|CUak&W3#0K}nSp`f$_3-Yhs)mG$xKd8&dk)@I4P|L4CGxVPnskoDEROx2wVl7 z2{L=yv}^1Wd19{Ym?CYS7qh=^@BU=Qtp>N|R6gzKe32R3{9y5lU3D{AK0b_ge!jzV zor3u0{Tu&GJR>~k%FM31W_7S?b@}=CyoEK(rOPcFRtmQL3;v>(|Q^k8($=G&p-dXXs4v4R>TRbJmuK z$jG@il}5(K#iys~dU0|vFw8rD>C&ekA0N-0IWxZguW7H_>-Pl=3=AQCDtO-?iJ$iC8yjy1ZH>Hn^X8EwOBOF~KK(RqUrpqn<4VE&tFC-}eB8Z9;^Mt~aq;o- zadGpePcQ%W=H{bEkM{j6VPFX0a-BR)+B~mdXAEEa~JGX8> zbK~+?uU}VJD~NDOOG(Z99A`Cm-SXw%U#(uh@7JrM=p0BU3pT03dO-)Tl%zICtjO_}g&(F`Rw`_>eiH*G*xY(_-x|*GZg@v6xet+HH zTU)bh#n>1aG?;`x{=Ri>ZS>o>Z+}~JO)x2Y69L-I;N#`xm6(_)FCXGqewV+}+RCcJ zW?qG7J_{4*_rc!Gb@vOI=M4>{_(w(cbU(ip$H*O-$CTTxnVT?M)*y z`;VG^KW;CPXY*Zr@!Q+mpxFBN<+A^y$)GD4zTdBZ|KP!d2@^Kt-?!Vj|G>$~>SxcM z4PO%x7#AleCid*flOt)HySuu+y}3Dg?%cb!GjG<|(pnH*hRUBkkztqfi+XH#*Z_H>Drt%5?rxjB|$ zVPR2GQD47)-MMq;$&)8{?%cVz)-kgzFftTA)I6~lWa_kO(@symsk74)T(i9F z6jnbs-(G*Bdd|8>UMH1GNo(Sd=9+1aaCuG9?Fd;0Iqn>Tx^zvs#IKY#gB^J3%` zZ_w#y&&~?}-SOnMt0d2{OG~|4ggyzTdCk|GT>U?XA)m7ZkxGvMsHx zx{;eyEG;XapPPF=du!a8S*F>qudRKgdV5>0aJ|;X)Sp!s4j)cFJImC~&8@Psa(?~4 zokjmAFUiQr=#jCUB=G6QMdhXWG7JnME=3g*%?CTWyNe477R;LkK4-E=&elpv$!Q)Tk9-s-mW5WofxKX6L7a&Ftd(aUm(ecReLH@7??N-{0R`w{Bgz zTn4ny(!$E>*RNk~?d|3M*8e~D*R!y)2KJlh-MMk^-oDh+VpengI3jnKy`8EZ?y|V> z$?JFjuHIH$KXc~HFP^761eG}y_sag*S5UvN?r)W|bMw4;^CnNeoWK9C+P^q+b8{z; zs;a8*brVa)|32#0-?L}Wk~KCBC$2Y7oH+4{bwx7$>xq-_m~(Mn46w_*s!a{B+}z!(D=I3gtL4Fash>SFOFYE#G3(yFdwumMPo1jzmu^$@!$423&u#JA=fzK>9ul@C9!GZ)u&?%aO>J#r1SIg-o1IFa+j~NQ>3~3Maizt&Xeu(bs5>&v!_qL{x?bC zY3uLe@bK&U`~Ns`6qc8Z*DLqB&9*F7Q+)E~=H|QR+L!fyt*`(4`f7N5ZQ|4S`+lGM z82SJ2`}+C!IlR7~*5BV@_xIY`=#~i`9ULDgsOUX7alQG`{$Fzc*#j;t^PO#DYr8Wh zucBf{)AV#kh6VbbYPzAJq1|G-R;8~(l9Q8jb8};2V(RMb6kST5#o1|UYVO>*Q%p?k z{r>-UbN%A?*V%R-y|pzvJTr5p(rnS4RbR7QTwD?p73ZJV*U<3r^i-^$nr+0%@$%}x%K*9Ov^D{F~ zo<4nhd;a}DKR+ugE339y27>p5-`JQ8I$QSb+oMO1zP`3rTTk!Wl`AEMg)ilryUGHc zJffnae0+GC4|4GHhZh73E$IY}l$J(^0 zg0quT*}FSG?^VD5YG&&>>+j56JWpS}@`^pQs7K!Z-h~SrcI?=3{AyR~E!VAEw^pyQ zNj){?x%s&Ug=~JWJxji{UVQWRZEbDs?Af!Oot<~atSd6-V_?uywY1UE(t34rvic*? z@%7)neJh&Zy_AEcX~l{ahuit}LM+p*Zazl;CUf`4y3 zWA+(<2K@urSx`oq@0$PqdOd#owryS0Ma0Fet*oS^rM2aZ`;T{bcU#x}`SI%N>XpW8 zK!@pSRJxjJ!^%&2`#MnP-rxSOiKXSv1q&KZKMi_(zrse&ls$aT%$bskPx|fu3FwP( zut5&V5lK!uD z_TQYzlY@hUlT%VmGB2rId=ZwF6VX3CvZH5rM*h^&($e@ZPuUnOt3bQ0q%O{yK7IO> zDNF8Dz*fv$y?XW3T_XmD6|+(#y;rKP3Kb8lU# z)%me1boDgd=x=}C>cs2_s9|&MzjXQXZuw;a%9n+Ng{y12r%em{e(0Tg#>#IC|9#SQ zO-+58KEHO_q)9?@a_`>0jSUS|y)P3fs0m8eyIyac`~Cg>{l(AyqN8uGSfR0M$*NVa zuC0yE%*+g5A2)S{k8F4O{=@vCmmW{tb*Vg%t=TZ;gg|m~a&`6Z2@@t9JLcy4Oy{e| zDbR@nzP`O*W>0OF3@>6U6`@(uL z4wn6YKAk?)%6<3lUDZj`il3kRxV;b)2$t1cN9E4)XJ@Ot0FJ&-NxkOOiWDM z^6t)>HS5=dgU!Ew{knE7%=KCrBSXW!i_7c9`Q`0=Vp(<+JZ#!E_eId7HIp12CSE&n z>J%3bkB^tvuHxr>r9V=0a^5_Bx;6XyI{p2Bf_QIRDl0#JbhO*OPiCfVby-o-ruFOd z>wV9g8W=?Eulsv*bNbQeEjke!9Inn^-8Og8j$_A;ojG%6#taE34-bzHrP;9kIgyc( zQBk0MWul^@Trj@&DYbMJYj-B zR;o&U{r|=8{r7g4`!8x*Wu6l2*mBp(!eRuWu zJSUD`H)BIX(3#P@cmJMaSzJ?7V`OA>Zod8cFa9AdyLVfcE`2&RJT7uy&Cd1f-#{2Hgtv>eZ_$yX%x07*=@PSJk~D_z;reL5C&t zN}K6KZ}ZXgZuji8N)cSEt}UOX8ozXn<>9o=({-b_rJNM<^*y_1&z`rpx0mlX?hN`O zu{kK}achfHVk#K8xw)mMKL@QWO+6*@aY-xa{wD7|6SZE>-dbyAZ7nSY0`Knb{{G-# z^ZWh(|8?u{t9ZS3`>zL!k5*P!&z?CmG%T#{(@FK#*48VVyjv!mxBKn$v0GQ`RbFcE z^AJ<1-eU;{PyC`{p^{V0LK;G?_%z~(r@a@rIz|%lLGDB zP*PStefqSrvNCwd)&yU9UjF2b5wp#5lMEyb4GpWmzth#zld~>+!_8klrF+%`yShIW zokjKa|92KY@6z9TMcQhv-`bC%adGQBR7$Mw-oO9<$H&JD7cS)G5-N?1}-v(8>%;<00HP8}~IVr+Ukh1I`FY;MXHI?=exdD{=)v|ndn>9C)gl4fX5Lx^Urw1INaV z8wK^}*wt1!I5^n5sxZsS&Rw%cCoAX4&f@1&W@iScJM-}JTFUeZnR7ER)Gp{>w`I@w zd(~lKVb9Oa-Cg!pN-^c~GT;04|NnN0YS;b!dfiUCz4+s!qn*O)>tc3pTDkJ&sj1q$ zyu55|Z1d*LTOGbW&1mMshYzRg$4{#`-6g8cCvO)M6LaU{#l*Zkzq?=7u3Y)@(o*lD zcEi+DQ$Qz=oIAH}?OI(sJ3CEH&z;S}OF%8E32i%f{%m69W@2VGHa7O3XH)t5+S;}@ zw%Xd-^z`&s4KI)NO5Z)q!ONSQm9?wpXHjzU;|@V(Cnu+zoSYvu|E6k(i)3;|?%c7% z#l@whtgP>EbLa8Le}6uo zU*sbd7FhoMV1?h#moHuf2!G^Myi#x7wWIjCUuEUaty@bA3Jd~&Z%j1LyR%{2wz!Q+ zu91986;f2R>4#9ncf4|=^FDrXj z*L`fu7L!h0dE2ThXV2z-dUA3;=zf#=wQ5@8T&>pS??POEe@VNtA~3%0XKH%-bNl~4 z&)={AzxTXd_>(_BKQCOkaM`kDkFsk@OG|TaY&dxBTG`7>ORK-VQEaiWv^;6JBFOdb z+B}zRhwjyD*Dg(q(0uXd=jZ(Wf6D>_1m>Ur|Mhyj==}w+{(LyhfA8KsH8r*0-`|Ui z=H1_S_sEfylao}1rl$USznb4?mPu#ThYt^(Gq2T5zIv=zy3!^tA>qOF_`020S6A)( z`I?!5p)2_3R54%Qv%S*hmtKCkaUY@UB_iZzerp5O04&D7i5a{o@+ zDBu(o6*WyaT1-af&9i4|NlBM3TqyYb?Cg>yOAZ}6v}VnkiOTMM^7e7>3S+chJek2_tF!`j)-ZjOsv9Yp3 zLYu0-W~r;It4)p!2`PDUVq)?0bFHndUn^%A39ITB78VLE_MGaZAdqu+*VS|9&Ye7Y z^5)H*{rbB7wE9$|9`(9 zK6L2UUytd2%jK=h&Rn`wba|QYa{u}7?k7y~Kpp0fDBbRVb6f80_ICH2oHzXTe-`s%W3KjW3K%*>Trx0a@)ESWg*BIvrERjXD_ni}X}GS5$(2i&f)oV4d}Q?u-MoGK@@W>`y}hAT z#||ZJEGaG3)z!7NwOv`dT69ki9|J=zrzbaqVhiX7LC`_omx7XXulxXme_dR^rnj~p z^|$}4Qg!RXg$;Rkchz~OPS=fAGYsz)03EJhwDZnBez(#U;9_D&-QQh8=GBjmaB_2V zcRIZ~H_7Xd2m?cariv~@3+P@0alIIe>}xvd>FLta(#p!pv9YmPw;1+p;o;@Y&dx3^ zEnU58)w)>F?G_iNcRP1f|M-yT>Djq)(u8rPa_vhpBH*en5ak`bRxOzTx zqsm;!kyY#0KQG!@{_c*azyJBur-Oej2W{U@@B^;_XIQb-Zr4r~@PKqf4fZv_AW7^C zg)il=S+mA(p3TgeGk2z*7Hctl!TYQ1m^kS4;H!?87OenvInzNvKW0b3qouOeWdZt; z(b47gkGEuAK6CbLq|UVI)31XTva8&XTj43uJg;h7aYRH!Sy@>`#EeI?gYJr-Id$q3 zcv2$lk(uk6GiMGRKHM*B{q1)C{@6VghL)Cr09uU2l`wr$JLa zZ|~QZU*F%|{rvs=`|1mA`)5IdK&~Uc;N_*IIcC<{+S$Lqy?y%hsgBs`BS%_}CVh>F zd>Mb?_U-5|7J7Q`em(~+sgEm?kXt5WBj@kzeE8%^&yYut9)afuU+!PP@SxHMwCM~q zOjQ5hZvOfFyu5w&|NqUkE{CjlpYY|(R54}VuoWjeA`kPpWoBkymgJo~w{p+3$^NVU z1qa_$73sSE=l+xH?VC+F745Hwt=}=-ysqQi@@I=>+FzA&weB~)wpLqr)yoH`!)FR4 ztvSdgoA+*Ex`CH>bhlsri#L1DX8&9H?Bm8+r_!4y)SjMVs_dp`Y-XI0C9-W>j>hi) z)yaF4ay>W{_y7O*drjnKP;meK8omm2p@XllZ)IiWFY>t~|P5Nu23Yu{Y(&?!7T zJUBSG(IFr(aN^XdrLV56WapRD2#Q>0u;Ns=xc<5oD=OgE+h%8FottM{{onwjUHqnr zy1Kg4_2cbIUxo0sA5QU#J6l{{o}ZQV>g{j4`}hZNbpvO*Ej~Nfy8ParO3>L&*RHKw zz54XYlb&8)yQ;tE^-Iq;Om<61SkT~To;-On*Sg#*L~Q-HKkvfsiZ8jCu{r(xJoEf{bLYy=J_~BoXlPuxeEGGmkmkw^ z_o%H|S2v}eK5}1sqi<)~w0mnJH*d?ks};8?_x85uIg!`orj)LqJg=*2!k@3rbFqxu z3UE}d)_J-Y|41>f&Eu5#P>-TqdTGsv9 z@hH*T|7H9HzvZC4f0r)@ha~0XtXZ`3t-i|BJ`;hHS2T?RWBG60zWx6G{`lzV*;S_= z7FfviEnd8M{rdchiX9(rUJf<-yDRj%6a&Ktp{iNZ8J8tFlVy$=ixmc!e)*T0C>j}b zHyZ0fRk2kp?bohdTeD`3q;cAwPp7nh{``66#s=@{dS_=EyDwVi!+aBT2)nH8+@7AE z+TY)%PMw;Wk;`6R2mu)8NkP&aSYqaFG?am`*`yX>L~5t$nq>-|zo_ z@5+^ww6tv{FN5mq|DU)2|L51&*Sx&Ei%!+m)rA}@`tjjm^6@^~x<4}xKLnkw;yqo@ z)ZBdgmMv4PLw-Kf)%eQ|+J8E4-aJ`ZS@A;pE)7VZ(&qw@-d& zU3zn3QZfjvJRTVtSz>kf{Q32(R(VYf&;*@ruz0cZ*B`sz@0)E=nB?LDx~?z(YwE8i zqtY&)kn7FTW;qwGUGwwx{rm6tdwKi1HOrTa3kYl|dg>)EKK*)py{)lv@SaUR`}3}D zWn*C2(=zW|X5r<_;Li`#l;*PCh8%KhIXcXCZDFj^*AT?>=pZUz55C)56-oBS-eNA*r%GqX_|qYz4f%0 zh5nC^KPi5BN%hn9kZF>}X`s>JKYOQxjDh8XD^Buiv|O z@6x5J#>Sub|NomG5HO*=-90&Z@gvZckfusXi#BYSaQ?Zth{%#9O9Y(UdL$I%j-Ni= zEwHKl{k<()wy68h`|uNVd;E(RFLsx|-*ofM%gf8V!{?dj%PBqqwfXyGtxuggb?f$R zdApj5KR-S`mpQ#^%BB4e-rU>__JWs>&y%8^HFon)KV7zLS&((E{Ny5csg9IaA~RR4 zVDIhi?d|E&($ZSAc=74er+?Pem6n#))YzDcUA%TJY|%cXcu>>5cB?-A-TnB;xZ5`` zDvI36&HcIZnPKRP!wFJfOJvphukYEU@jp&`edvX$KXxp7yMBK})EBvBKlX3fwDsD3 zOSh89kB7f)Gi!YC{n)SiaN9*(UuR0SN!hM>t6VD)F8#VJY)aUt+dr8OzMb}rzx&ht z%T`7^OI}WLP$(!YT<9j2nx3v*=lSsCVPP z$Vm1de_XV)D`c8;NXV7R>i$Q(S0wv(8Y-Uuxkm1NxN?k}J8iFp>F_8jM$6mX__d)u@(tIjwQKj*{{Hsk((tdSJyz*(9qEBd3U|My?0lAU8OYj>4n-uwb9YiiY@n^QUoI8u4^YTDj@f zp@2o+)Ac}i!5r-pbz1mg`~AA$n&!yJ$VM;-UhW4v)nVGSX&X0goDKrlcNRYf9sB(8 z^J1gWu(@q*ZOZO_E$!{3x@OoOVk5P$MZRxjJlZ(&n2#fBy8EY2w52 zuxRJ*^7m?>8@PmpCvQwXzH9gH^D~W)A3v_HtnB>A!ExECRS7vcHBU|mek`=BvD?3C z)2ClwU*E6&KKG8c?CG_?4;^Vf19HPfhF2nHv**s3;n8bbt@yLa?N=ivt z8K`&-Ugq;smw)2QO+r6^{d)EC<=WWY-ww5M*A^!(H@}jVxu`W}{`$?ECkq&*oDk^z zB*(537~H#Zq5h+)-II59o%qPQ`?!sQTS}m{(Bqq18Lv(TMVjc>1!${IJ!-iWpKLyF zCmhc>N9i@Jt+H@={f8shS??ue+6D#B_FVkZ*i=knW{Us3Z+9iy6OuRI3sVYH`ed|B~(%ZyDXrY}og+39k*-Z^Xk?<2pvJ7_#o zD>ZxK#EFl}Ed>^~ZR_qcc(P)R(v{^eUcWBi|2jr~HRy(x9(nt?MR)GsuYY%ECujw~ z{*q^{w{PC;6bH2`{{8uRce~Hp%UQ|E%5fI8zrHjyFr>2R>CW7zV49hDW`^OTR$(=t z7azG-NoP5BGaBYcFY}w&*;Q5W_g$J@IX+%A|8%iFt>7~U^IFNOUn{qsl6?O~MqD~;we=4fUNOZZ=NlfU zADFnJ;L*v)en-#UU;V;PcU3}O-oAu`O$QDfICJLAWOe_0yGmCtT<91dfB)vqnO1iD z3Lm%CObvbh<>h5RKR-c1!TB|xIxBWMD6Cks=FGWsb`>8U9B$|TtuU!uT;FewMd8y^ zQ+<7X!`H=RW@H!`7<~BhC1!7x>Ex3<{QUcCer{S(R95y)d;OkI-)`qmpEeD2zW%OV zyNaKk;pE|2vwHR99sP2OPmc9UU%PfqJ8X@Hwl-*l!N`b(#4QmoB{c>F56U zAM55#o8G*A3pzBQonQXhvuAwLW;yrvRC-U>lNI>P_388H<-W7U#Kg8`US9U-QBrR1 z+rY(cSFc_BcD7GN7*f-2EeZ&uz__M!JLUHuvtShwh{g{&KY`lmcIbGPp$>7FxJ zytC5{@&YeH6wvSN>JnP}ed?S!dy1d?y()Bdbua8SN9e$X?HV;l2YQk^Qgb#qPpgu@Rz?$0w) zQ#*F&&YtQsMuB(5MLaz`3Q9`0Y~A|z`~LsBT7TZ{e*f*=-PI4KEmgcMK4oQa%B@XZ zRUZhB$(5Ftp8WNC+Dg#*4)fl>zoW2wXW_54YXl|>#{FtDi^?%;zNaQ&^Jx41j4YoO zH5$84FIkmpc5U~wdll(BcFvyn&%-y@*J|&^)yDI$*Szv9_4=yJs=s-{{&$x@sip5= z3|_op>h_ImJTwzmHw9?el)Sib-v0ldgo90)mzVWQnP#1spm_D_RaREk<9)J|cO*Ca zObtzcdu!{zfBzU68J|9VDx^Pi#*9C&p!lotLy9UZ(sDJ!{zC#SFbKyxDdKJ%+kv0(#tPRO-(<3`~V#>KG$mN?`f-7 zuXc8F3R@rd_Q{hYDMsC0U41f^MepwH1f956uUTkRd+^q+s8`(kzTL`}l9KxV{yu2# z-{1fJ;~7ssAD6FR6SEUEyfe=r@z4ZCXDMlEdE2Tbi=J*4RS8~x!o}70#-&S}a&B&V z@F2n5++0|Aa$8&5Z1a3IRaH?jv9#3GUKz`xKR-S$Dva6m57wDj6qr1VaY~a_<)3G> z^TkBJPT>9Z^QWt;>(V7lK&L3y%FmWLbm-7DoybK~PO~yF-&Ocs%FJ-!fDywrz9z<& zJCp>V8^IyI|*? zEnBwO^>HzXw8xt>Fnm!~(Oux9si_&GXRe`UCMLE_0L@rMZRrq5%FYH2AHE9J*I&PDm(|jm z3lA2*TDJJ|OFb~ywr!gXpS!<*|H%|J6_q2$k88`>Ffcgui}*(6-Pv*QX_2LjUs~F; z(=#_RG-zG9e*OD52MrN36O%9g5zLKVv(H_)Q1JcT-LkT>t{fHy28XaNHQn#;?tcFM zJ={x!dHVM4+g}vM#N5eVzxP`IK?WYayZk#`ud~mZHH(GG@qde{z=|y|L8oe`r-w&J zgEqO$nKQ?|UvBG`Eeos}7#yw|2<~5>dw18>d-wM3U(66tez$)QbQvM%7muaB<|r!- z6@@$)7+y%%$7e27OVf$lvttpS)q(SmIu4%Ifnht1#Zr1Be_c~B+GgB-IC4k9!qux+ zuUxs(L1D#;6(>%evMPObrJ0?7SN=@D+k5rCeRk&N=9ZS0pyMp` zHO}g-vRjhV8@f77H+q}T9+yY#&|2=J&`WFADQ=ZQ0xUjKVycGa1*&Aa6*lb=uD{W2vqGBPtY z)wJqM2J3ca1_lM;lMfSl*p&73&K*41Se2EPB_$+eRQ2UWM+e7GI|mIBH+T2tOP1(F zYga^6kIPL-*^+#mZ>Mu_PtTtpkNcmWnfdtP!--R- zl)SjGaN9Pso!hU?onmcsBQy;{JmeVfzD6PyL;>2Jw3T& z=J#tJzj>phWoTsd>BEPD;^N(Y>0_zUk@DXBwyLMQ_tlR9v`j-MM4O-2T|uineXuTpS%84L z&9!!4e%b!-m*CFTl_HwufiKraZPohix@PU#r?+=}St}?lt^Lb4@Nw>+KYwJ7eknWY zG|O)y=T%KvS8=Aq(_Ix}h-E~~2_t~>FE$c}ZpVapD7alsN zUw+wBUtL|@%4(L|;@q2?Tx}jRfhK28E?J6Ww57u@?v%Q!s;as9^+Sgq{r!G_`Q?|d zudh$v7_qzTt(LBCXv$`#@bz)M9UU4vI!`|TWMyU5)YNR5AgJutasA_`Pf9Is?vk}U z?RtED?8FRKCdaI-EC+`J2b_6rh1A@z`r01(=u<0bOsnOWw7!xESN{Edx#{WYiHR3$ zH-jz;$j)9};aOO?aq;5C8#iuzWcaya&yF2C9v|;tAGddwRpzXD^Y&GLe|PGX7g0;b zL?f^*8MBqE)UFi=jac>ePJO>uUnMyEggYdO-A&I1l`Jb)uB_d;Y3F*xny~xPwQv3? zZ8Dp?rmL%qLs3V}J5rj3fuX|g&;#F!U}YTKjylwvYhXgd++MT?D){y z{PptX%e(n~mb)!eRa5)+Lrhn9?Yq{y{w=|87cX4+@ejk2@W{xYH`C`YU9zO5y}i1+ zIy^K~(`ZqfhwNsVwHIUi-{Km~`ThUR-CCQg<^S0~oVRRmR-SUlWs)Wzu0=vR0c+jhd-bc2)Ic)JdCY!TzH>e9ynDTj{QURNf7{)EzjELE&pUUQyqx5b`f8#3AIlk9FTYRpD3lL$ zmAG_uLU&#MsR;qo_pV**yJXMq-O=A9Ex20w_d6L%@WjT(3JVLfv$tQkaN*juu*kIU zj0_Asok8r%TTJ5P@BjHz6AC(Ds$P6k zo}Q)3!i5X1tgKoD?Ctl1uAbOg?7pPQiTzc;k?`8kwSkM>)<$e>nssjW?AhMDQ^KWK zV|mSHgHB%pFUvADm9?+ivwQdN=={A;A3vTve}4V5Gm<;!2hM$%wL-n-NBgO}cjvy! zto-?O`gFb6SFd01&b+*=Zh8?L1H%OCr>eSF{ulGh+u2lqdoxMZ``X%QaUmh4=}Ql* zxai(>PW261EM`3Q^fUz>F>Mu&Mny#}UAh#sQ2zcLN4;OYk$U0D0X25}*MWeZ zz5V{}+rPive!r}!NT@Dv@u7r`5lZYqs;6#NxyCgMv75fQDzMIzBhf&@XkK80l({Q! zx6rls5-P8jy?FJiEBxBUi<$ZP@4v5Kdnb7scg>HdE4FW+4m#yzj&=FFJG;x@KRDPN zU-$Fr?)UpvgRV7vkniYu`0xy$XKlRF51~_Ae$cstFXnqwYIP zCFtGr=jP?_?mRr)&VP$(uHW)&KUS?=IZ;(8>-oMjXU=TcV8GYDx$Nz&rQXxEG?FDX z(r&Il=CEk-;@0v50vVu7T{?0;I<`K1@#04Q8KZTc3;5bfOj)czo0*xBeItv3s z0F&z1Ej1qwvR}J)ZMpyaeKkLg6jKhj@v`&F#q6sA9aA{PY!_&7yRWbB;lqc}yW$Hh zAV>5I3JOX|NllzMQCu%Zz!G%(Ry)7^x>c)Qy?nWG!-fUl3bV7bt?U2oxsqsMX$iU# z=i9e$v9YlyPo7-4a^sz>RVQg${Wo2b=Z!f5bHcUSD>FH@s#r=Q3%`Qrs#$@;B)WcV= zq(nup-o9-ez{btMpimy9rn__JPNnMkM~@xj5o*eAs({p0|r%#`L)%tw=00IJf4~urb zzP5JpK66otOIJNSJR}U0j+~sVUjFu0Xnef>Y3oC;4I_d9p)fQDMq&dxH;zQ%FtXU)HFZ*Pkh)=tS>5$>Gu|KH!s%X~L) z-u(MvyF5$l{o3z$-`(B4wEM~L_xrzp`(|cpdUtpE`UM5Ix8*KdwyaxRUuTt7Z&H%^^;^;oZTb#?XspXclOrW|BqU^p@NP<7On zEnBXwkN01GSy)(j_N-YfPpiMZnQ5AR?MSDvxNg*xY15XyFyK&((fhu*-;N8iDrw`! zi`TBbd-G;b{r|eWyu7Nas{QRxo;>N1Ha~X>bl2_fg$oz%*kNI6x^>sCsA&f4;`h&+ zG)ZZbdy9;x#AcCjXQ3Lq{}&cIgW6CI4hO!xyu5bJnv&8|X(_2wr%(6G*+xY~+{l-3 zbab?{vkL=nFp}Y0zGR7tt?l1eS62tMFH~!*GG$p8zh6#HZePyLO(!R-zkc;<+qP|X zRbM=&v3{45l5%o(R#sA)Gk313iHVlB_T|f${pZ{5&AO`f@l=f7_s9MAbFH*UDNx+d;TW?%?VE4|at&%kiy^55UzITbHn zyx7>-Xl7 zKvxbh9JsJxIV;qqknm)@5}TK|ZsEd*i(I?2va{`fJYX&_|2|RK-OS8vo>ghq{e87D zdf`j(;G9hd`H~-``#CzvEVysJ4@n)4Yp* zQBk+Py}jM)y=l`X9UYx%`tfnW!JD(LYNe;Ai*<)aM()hMzV6YZq=&Pv$cpHJwltlb ztp3|}V#)U3SHt5?&CIS{5O}+%w7fh&J6l-u%ZCpUJByZ1oEVsy`BFT-CNMt!e-CJj z14F~ZLsGrWMy;Utjn;RS1*x3G>$;rz4ss{S``FT&%xw)%!wa!8&28ILN{GQw%S>NB?jnOmL z(|dPkXR(x&6t|d8#I~H7vuEFaa&oe_mlw;`YipyIFJ3$uau~(&etBsLi66gzx3{FIg$3x4(Az^6B&E?{7{&-^|W$Vrsf}&6=3lSY{@soZQ^%swx&!VK7*Ey|uNq z#H#k(9Lq^1jy0dpnuGdcy}fJKt=qP3+r2HBlb0@C+TZUV6f|i;-}dd>ACv|KUCLg+ z*DPbR(7ksXHW-L?hsMRp$;-z_My_1A@ZpOW62ij4adG=&Xii4lAf-9?+s|V_xtTj<@R3A>N?%lAu}zWRLL z-rw6>TVFqY^Uc`U*p>;P>~PL+=bT3;CMq8apM8qGW&P|Dm7RB61k7f?eemEyKDU{f zS!HGA-+x+)ii%1~O|vdfnl(!+c?AOl!-qr8mzX9A&2RLztq=a}&r)F%mz=!#$=R+N zVST%ot`6Sb-2#&)O}g|xf9uw*s`e`{y}7%){P(xFkdx>`JZo$J_DY)<6&2~l-flbD z3tJ1YYe|RkvuDpvrB?N~Y`3 z9#C0rp`xph-qzLznz`%l?w&YtqS1Nn>ibPfB4T1}U;x@t{`gq$3=Kbi0s*Vq zUth%IYd-dB;?DtZ$VG9 zudU(a;Fz$nFl(*u!K7247G1b{xaH%|KfA!-&!0c{?%e||L^^qL<^3hCuj(M(j*B(5 zwY)q$Ve8}OPM`jLPq`!`14Dz=;a7gtN0pA(Hs_o;PpcjwO6QND2NmKTTMK9@r)Qk#~>MLA@y_~G6op}24Plg%$* zz64zXEDi#o)2rTfYJjdWNw{#C>66P-(fmChj~(e0*4EN8F)?}b_AO`${i|2EZr*(P z@+D|_>A7>D-QHdwkN&y2IbBv(_VD4uw{P9ji`#SJVF3>>udS`EvXYXCiHVZ3vVP1C z1=llO(Y9v}9a2(IP%tpquwa3Lw)X2|z0xv#=|?&Q_4M@q{rlH4VbP*Rb^JQo+MrVk zSB0)N%efH{8oG4x;^frSt5>dk`S8%$^@!$HVRb(XYioB`SI`ptLr-nw)~{Q)ZpV%v z2O63G9((iRg~p5v`}6PbTkbz!OF4#tfuSN#F_W>I3h7rUE7@!Yv{wY9a*xqnVfRNkC+wy3D6tFu$^XJ}m9yb{T7r>oblsi~>e z{dm|8o(<4b+JE-sNlA@oe}8}XpKW&b+_`t{@^u0tb>Hun?=F8oO>fejJ24Y&Ws;MV zS-EE|UAi>){=V3*wB5UQ>Ba4N@#2L=&JBZyMOJh3^77t2fByX0vuz0nnLg?oE%%w} zw725Nhs3b3X(G$n7#JG%i>l}<_{+-5Dk>@-Ja{lKFK^khWiouvUtI-_dy9&Swzjr{ znja>alde48u_NZ4yL_#Pgv5)-kCT&=7q4A=_vX#Y|Ns8pxpU{smy)0R1b068{Ii`; z_Sehh^O=~Kmif=mOHEz6diCuK7XsqqK<5V?I&`R!4|Hd2Ma7Rzsi)Qa=dD@28g%gU zi;IiX*C?#fS{=Ur+vm@pzkgr9a;4zUsVi5$-2d;ZzPR{w%i?Dp>w|PXq9#q6#3rT8 z&cMK+;ILRtk%56n^lIbggo90|PI-O2e{QC+x|x}ovU2k4YikcZoi%IL^Yio5jb=W5 z`t;zzgEJ0-nsd#ETxu951f{2|E2`+|oVju(q+-5|)!e+q#D~wHyK}5uyH?cl)WL&| zCsTx+goK4Bf-aJ2P%*IKVOTO{;zU7FQP;OqZ|1X_&7M1XvT~3|FR!+i)~=$bU5A`m z7#JGFnI?%bObBvwW1D@JkBh77<miwC2+CZN-MSszKEzO&`DFL zrf4o(wruU%wcp?0w=a8hW2SL>h0Q&Osi1L!5?TX zy1HwZEOA+q25)A|*;IVESN*=SvQko7`uf$Yvesp9E-ZAev5OBVKH4R!sHk|}A`{ZM zb&V2Rx1sDU=&Z|AhR<%@y2WqzuzlRSWf;O9XG&M0jJT==qf1Yi1S!HEqO-)T|>e9Bhw#AE+eSFUBEPlQ% z@2*wOjSb(vl{x-D^Z)Pt|F!>qKF8h)y?*niW&S-IzIJ8T1I=|`{WxaY*Z;e_yL@TJ zoUWa#SA&-Ii|fTaD6m-U-p|L){rTg^m+#)qGtZ9;4xYTg=xXeRd-v|$xG`hKjEb+X zLV0<6EsLK8oSe6R|Nq17{73x*BO*MOUw(dOrt-t`|DK+n>-T=UWn87ZqZ3SyJVeQUovXJ$6bephWhyUgoaL?Hf`GK)vJFf zPMtdS;K74eydrgVb=&#n_4M?XUCda&|KF}#$715+_ZK`o^!RxHcJLg6s;cVLsZ#}= zSpK@6T6n=ADk_R){p{JZQ}YEF7#KuY4j)bs`1a}av7Q6S0*{8g|w$^{Xov7Z*RjX#1<<7daO?aZxvl};VsQb_3 zm_B9dR7(qs4xSIeCarA~CrohYy{xUP>+9<~b+03+EE7=CHL#HDzkcI}M&i>aPo8iJ ztF^SXZMykpclmoGi5|`1WoKra_X}LQa6us`64t!T559Hl)+P3}1|jp*_U+~fRhoBH z(CNr@?FG*!W@lw-skj&h9nrCSxNr69ZULv|+FPr`7A8J<`m{6UA_D`%f_W3R9C*OP z%WMDhiLki1xU%wMN9|&ZIbXhfIdQ^c;`(*3!3{yIjfTOKw?-LBYx zfPkiig|z)sud*g(e>95PVea^=17TMc_Zeb5v9$+4FrmwH> z5U7*)>B-5a`*yPz6#4r4?iU3Q1qZEnR`B~aW4^fau9B*%s@B%lqhPSyfBv-UPoR3^ zQ`0;#36`%ezmG}h`^>S}xM-1+v-9D5_v#)VYF)Q(-Q2lz=gpfJzAonFn>TwZKda3@ zZ(sPRW%K6ZkdQ0s^J~@aaP%Kvy?V8_o}OL7gN6_1RMOASD=jJE;pflK&fZ<|QK|hf z?wHIBx0yt^3_1=*@g`pwr$(SEv~m^+qOPATPqWjE7z_~JN-0n zPetIL2~ST?m$$3gv1-+-<;#yBI@EMaZsXduZ~y%K{CD1>HEVKyeR;V$Z0)TLiO!*+ zQ~Ub*rcMnF4i4TwdzXgBv*%YP=*?ZccyWT$|9!Q;UBW7u85kJ8Hl9^Y6xg+Em!zcR zm0L%ckXwYDp^x6YxpV#c@|7!pp0j>m^XKF7!)?5;w{N|6?HVh$7>C)vWTTn8%ib0h z6$!1MIeoggtgPj6{`ioXkg%Y@9drf93ehiH4k%bzSvfg5H8nTiy>rLM*Vj_!+||{f z-9y@1T3p=R$NOZhGcTzev{-j_b@=a}KY#xI-OXQPWNHe!27BYUGo}N`zzd**?f-V}ov!ig@v}w0)-QwltJ$m%$ z%9SgxUcJgZ_tCGfuOB{q2s(J&rgGD|b$Qv@uNS-b9}({f%Q$m>rDE(Z&ERDL`jaM2 zngD9TtuX$wrNJifexH8Ch6S581^wAx{On9;Z|~U?CvNO2UHvIJxU+E=x5HBtQ`7VF z?a!weoj!fKxw%<2(j2rtDuh+|qvJgAm8yw}iOZHPJG6Vv1<(#iZhL!sCy(6RwWl62 z|Crp|%)E7VT2hh{_}(7V_J@fI{*scCfq{W>VDL9AVe?H(OG~dlE(aM?vo$MLyf`&g zdsQE3w2-ZF3F{M0W##6xY3!`5d%s-rZfk36Iwz(#{dC&q&!0bEzI2K0R+5mz%oVH) zM7N)kVPIf5A^2Kp?bdZ|S@n7lkl`AsVWjcyaE-rS51QmmWmq%1w1Z2_6ty{Y`Z8EaA zkH7j5q=&(S)AKZU_Te_(dGqGwm{}VcO*;K_l@%zs7#K7YPd*l(+}zx}etmv*b#+8U zgtK$=s>7fvoneApRaBhMtXZ>KCQO?q2EOQu;lrN8uM+i_{rXkq?0h&pzV_?V>2aV7 zHRHh`KYu+mTqKO%T>hkFY-q>{K1O}RmMtnRDQRhWx3+j*bp)Hv!#io3cvwP0LPf=o zt=ZR$ii+Od-F^MeojX^r9)0{V1aec+feQ+mm4-KO-AYSIxpL*okKeynLoTUjn3&YD*dV9%yBb^g#_cD!FcIwHct!s5&f!^dZ48pp=Qu7ci`0}iO? z=jY2CCLQUKG=B5;t^ZuBqt8EwLhs5knXqNgh95QmmU>T*tN&Z7uD<-zrAzGmax1Jr z1pxy?W`f`8?w<3{gJ*l+x^ZI#)H#}&E36nM*sD!mxqf{<;x3()>(+&p27nzF8eLbo3?2Y}&YKlbY_eYu6$pBUxEl zKYsjJ1U_~0?4?Ua#>Sf$EJ%2LZLNuvFF5;X%xUX6?myq|?x90X0*{_P-CFqg*tc(G zl`dcBoIHEh)Wifn#vdxm@6qnJd^dQs>DJAglG4)B5)v618E@|Ix3{#6yt?qOtZv+% zimR(aTP9eSztf4?F+m_HJ-z(Lhs0Ogqz3(?F?A;m`C`kMe+pM#jeO{c?Bj-o1P2Qc!Ska8y*)t1By4tOGX#C?dG3+|MTf|F5b|e>*DrCMMq~RB?X0qEZO2-pZM+Dx8L91CU1yDQ+76ga$SB|l83GPXwt@rXV0FUJ9lp3!iAZcnbu`*0-|^r7!;Hv zCr`63fA{0(&y%WCo`Y6y!p6y$9ZGPp(hgs@W&8I0tSqa72M4xhUzfA3x^nU2!g=>E z{P*p!f5|oP9B3?MuW3^px7FOdoE#Ym2?;5wU+1jfFIlz>bc2d!ptfge>DSx&`*o); zTk`vP_Q^@AI%2CgYyeHOnwpyWs9nBtWy;AEuIm#Y@oAl~e!s_=BhhH)uV25y!ou#| zyZ7(kzk>%4hOdhOUBP_m5Ca24WP;MZO}Y2>+&p;D@oHehijR+v3p)u32^kp~X=!Oq z`4hnU=!kq}byby>wRNjE+o8uFfFD(4H%y;&u&!0K%Bp4XZPyPRO3kO@o^=sGaJ{)9! z_wJptdtXjYj!o&SEBk7H?}%CVA#oCa^RkN>)!*J!KAjr=@ALfs9RAmqUw+BXFE_^^ z@zB4&zrVk^sr*&?#Hmx8Hf)I4S5xWhdv;am>N#`gM(Tv6raoO4ySuBq`)Kn_>+*Md zDnG|ny;PNzo%`(Bv+V2ZmM&X%Z(nWnl4TFFY$`rH*!%t7=TD!E%*@uUUJY9Ove3Ex zN6o$~jQ(@2t{y)8_{qu1_v?P=*4FO5^0q@d>&&EhUZW$gLC(cF_qGSJCiMTc=={j& z={I3?5NPC)XuEn8xCmAssy8SLZh z8yy|}{{H^@H#asKr=ROc2{?K3q@SPP=jZ3k%gW+*m1y=K|NUz9`g8Mat*gJinW`P0 zm7T4wrZ&%_(CNnn#k+Z>3ja=c?@iknG0FbZwQJXI-MpEZnb|qT`$uJ2Vd2f4#p&tk zpbIQdoLy8G8Xj(*f6wM%yxvQ@MLcZDCnu?XesLPOO`C*6jlqcpEYx4Yg=2N zw7H&^me(%f4?q9x*s-Ihr>CKz;qr3-_}yi_TKs%`^9&N5A|r3^tNp#CFRsCD@!K04 zn}2PZBVbhc=*V2_ayEAM`+KXy1KJNJ`^xNc)$Gq>hF2BwziI)b3x$l?)UquA06pDJKMaxyqp_+{N#=uJ2;SzpZxRb z^qV(1A0?jr6I{Av$r1}|>-P5c`@73Q*Bov#QT01CLl*aF)5k5J<^TV14+s$WTJ`tW z*SmM`e*E~c#A>d z*3`tr#4s^4Z{ECFlINIsd`)6Pg2KHw^K7f#dL%x+Tt0snGSQbA!QFt+kGkMyhEP<2jz*|$6FP}btzW-Vslk972CQO*{ z_xE>mbMxD`ZhiamrK9EHqeqvnUY$B&f-@kwV=+UQV&F?R{mQ++)TKo6w z^`o-@ShQ`|0#}4#jux z-W_7Ul(8jpbDE%&-&`xzdv7M#E&BiK`hL)T9*)}e-|v=R{`czn{QA0Yt`m00*Zp)Y z_$FpYfUzP>K@bc#{=n;V7y z|J6p$65UbqGAJY@#MPB``e|K#{qrYIDAd=T)N-huzO(xKyE${_sQb?=*m>vGt5-XA z?6|!>e{;kdN#nE*^XSM(Ng0`%e}8^{`}S?xv}uRi`NhS>FK2A2o3EgH{PD*X?3bC@ z`FP~*Y|PBeR8?J%rN3KvOy}rTg-NmLSuIx=I=5?SYwwK7b9Z;o%zQb|w)$S>^SLix zWK2x-3z5J#K3BoR^{Ye33Dlt%5|ZF?OG#PMe_;1} z;`CozK=W*3VxR+-7cN|Qdwc%>2hIF!v*xLsd_MD4+bqjswX3bJGfgrtotUV+dey35 zv1=kgGr~1A1qKu48O>OP%+qVxNI&>pvTMg)DqgEkV zIWcMJ-%m~oKb*8_lMy>R`^x>@OFvZXxpCtL=s3ElEg3&PJe;iVzpv&eXz5oh$TG zZ{}qEiB3;fH)Ri>v2&-T;*(!rUmt3pU$_vEvg2YiJO47@+1K(tnsoJ72$q8myxe%@`|(5HU3cBKU2y~iTweA~ zZCSs5y~oL0po0u!wJW*Tty}l?>sRL9`pHi|*Sx*8_1G~tW#z@1!OJ+@wg)92{`EFZ z(fLmYUr1zpeEkOV?=lk}@u{h(1Sm&&dwT~52S1hWU$#t5ammu9OBXJ5+^5UT(6Fde zP505=r&olRf7sr0Y2~_g_x9KScbBgk=Iuy(i!gchsw20slXrbd8O@JIgfN$jC@ZS$Xf?y{})t zUOHP@TOsjGPz-P3-?-;{tG|Pe`Z{+`&&+I^*2?wk_ZL2P^Yc5m)O)&%R`B^pkF5U$ zsQ$HEdHS#NsRV;cVJ{QL9s-Me>6o~K`4Uj92b z-9tX`=-J@~RaI5p`{llV{|>s2wyf;i-s60)*ht&QHk;<&!Bu&}=V zdRgnToI5)LdDjsC}iz=R1C z95^_6d8aPb)UsSCB+-SYdPhgPXu)mW^&jVSxh=jZ!P9odlY9Po`{HLl1qB;+@BaPv_V&AX z?o`;!+x7I`p%sPAk9J=^QM>6{@$qZd%&e?-EnB8$WfgUGBLl;M3mTaf5|dBf*^tQG ze9*(gGQ42{W2dHoSSF+`o#+gIk|h+u9ba!PHE*6AH#c|IeM-N=FFOfqpzkdWZ$=ol7utykLILgrkDpmI!1 z%nJ5pixw$;G&pqV(5+jy^kQ~gxOK~_>dT7@7XqTAqxGg&e|+Q`sdqGB=dN9DuC8Cd zeapMK$#v%Qr2&;kK}VbxK04CX#l_3ZTV4ITm0Nt*u3bUao8osCE#18N^Ru(FgM6gI zF1!spRN=Ss<;$0W!k`l)YGg>kB=B($&?~%*^ccbp84d4;(WySHe%A zjE|o$BQ6*y;O_2zP>JRDx3|KP+<|VYs;cV#^X3?*`vnDEs(!y${iohi28IPi&{f;F z>p-iv!@9kQTD8smc9BB7d!Niq^i|s#pFxYZKfqUQTk*2Am6!?%3Ay!16n=VgGInf8L&de_h9GV*zdL)xFZ@-@bhV^`=4n_bFv@jmGKcT3TCY&Ya1){^Ql_*SF{0 zwX(L}t?E7P&8@B70*~Ij(K))ni}h|^sd5B!R77yFu<2nhxAb#!KvysY1PDw&ZCn0s z&Kq8>bD#?$-o6DLD_Z_O&hg>4+}l3BzT*0EIzg2l|7$c4PSFfr0Xl4WO3K;o3#0be zfzBgMNO*9pS2}!6#KJlMYZ(|E%DCQVUc7WEYJZ*WTt9yw9}&5Ljp^s-MQ%>>onujW zagl3gW@Z;(Gw9?$`(G~>A2{G3FE1}GEuEYD_T0I1zrVkK{_NSZ<;%ZUd-(aC+fn#f zM^|_2)~(V~QeEBM!NI|+SFcXxeEjR{YfVi}CF`^k6CtbL4?h3QFKhMXvcEkm3yaTu zySt}Od4-2>U$}7Lo;`nFTwL7R+WNOmP(EXv;8@SLpX zY1`-RxIH@eW5u53{`0S0xgsJWvSj)4)2aQ3E-&}jkKWefxBUOF*Xw0vWjC2?DD(32 z8Xd5@&dbXS%AtaS=gyszl9HM_b?VEPFPHnzkK39x_0nM(BgadVrc6;WniZl~VRP@< z+1YR3zMVUFZfs1A)AQrY)CxZDXbnM-6NBkl{L@4e%{HHY15~(v$JdG z{hqRZ->*}L4=WoQe*FD@fA|GW1_p({To zK0Y4VpR*TVewlo%r}E2-iR;#ZR?ptAe!utj_Iz;>5e@rEoWg1XPODb0Ub!6vM=BBzb$HSxJM2xA^iS766PN!|2D&O-c zAo*}tR~P8AyyI#8vess4XCx*%Wu<#s&SPa@5a9wJZMos*o1dSbpPy%Y`{>c5*REYV zal#`$e*P>ohWcpGKvq`PrR&$%uV25v=I5t>e}7NiY0Q`4V_$hu}#9=e1uON=-NNdH;O2e2={6;+0mQMX3w{5*PP=eo?Y(H5kmD zJ9p#8jg5_sZEeT?{r$aBbB9;WhJqWr{CPMOQ>WT)c7DaFD4b*Zd7t^hI_r;X-TkBf zZMQ5x$!VN?_&kMcatuf28_8Lu;oO)r=g@CE+ zAMC&T{pQ|h$9m$|mzkTbR#2avvApt4^y9=e_EnV;R$Cta`tmGHPVv8Y6cMAq3=Efk zdSBX9^wg`m`uDPB%b3~uK+VyMi``{qWo^Fx>H7EH@xzke``z!^%Qso(?%DV6UC)B+ zO^)iz+^- zY^%duKOTtx^S=6*ef*a%AFStnDlN@uYJbr9owk-mA{QI}Yepz;+h+VYt^iwl15EB>gmoPkZ_wL<$_vAde85kH= z?A+h;c>U_t$}K(8=6?I0pE!F~S5I%-=FOL{Uj6&!vVU<=5ok4!u(}^;X5B|Ecn@e# z#jUN`#>U3_vAe!}K5zg2=H}zakGK1Y#~LeGTJGGjGRA3i9w zoSA29ZEbCBZVo!KQVFz|qVn@IRdx0G*5&U$Jw0vz|Ig=Rz0y}JE$00A{^iN}aUOUrbVuO*oqwRyXY-EB{p>;F2x;;Q@$V^j7y z`s)uW2p+7OZsapRu<~lqUiay4-T!|UTr~K|#+ukMW&Q6X4=ygfc*RCo^GxY=!8zZz zp7e1#@vpb-(7}!^I(KEieE48d_vgn_@9C2!PxkfkS;GDGrirQP@jh8^j><1DE-sh~ znx_nTt#7NVsi}GH+_{GjAAWy#cXD+)ck@9HFRxh!iA-M?&zu>Vk?~?j;bYKP&uU8x zi#OmSDBFKsya56gx3*;N+qZAx#ECU_@k?&j|9LF$=;(Om_1D+e%gf6_cWX$Vdv$fS ze%ziLckbwLfDS}7PCq9ilbw_E=JDglFJDRu3s0UsTl@ZZZSnurPeiK@YoX=a6_TrWL-?oo$tDNom zWjVF&-IwfczIgFsTU%QT=w?h+?`b)AcZKc?G?eJsvBM%e`}L_)r~dq@`Dq5)`=d}^ z|8n1svbRw&F*3bw-TnRLg@qH}&n$a?FE=esOkDi=!-o&wzO8+5fDt@(_2lH_*41mV zjO>Z&6_*k>viHQJWkN$k!%XA!ZCkgljo*Lo`0?XMkE$9N7+71+KA2GR@u)Z(TTtEC zeMv{V9v!@KrYTqtz-}ZF#!}b0brM7(f zHpOhSos{lXGLkLD-04 z(axBi;4N4R@r#nzA&;QdoDadVvTd2)T&)$!Nl8g5DIw9((&FOb!NG^07D-DC0 z5wNzl{+Q-J$6{ms|9{7h9h)>s$mzt>)6*Y6ejFVYwZgfLUtVv;%coCWId1N)F8A|0 zH(A|(M@(L6X=zN%owv8QN9tVbku-ktyY6Z0FT1!OjMJsUOfG!?QmLtS#bRmu{=R)x zIUz0^?zP3vIUw50eD>$Rr`zA9uAV<7>|06kPxJimHRVg@3M6HIo36KG&7S2g0`lRx zZ5N)W-f~%X(!)ZG4$%%;_OWXYPHt4M52BnU7 zmz_9Pf(~Z;Vtw01Y~#j_{`3B%Zt;igASn=cudUrXefso;3m2X+*uc&&=QG=E?fnUS z@^(IZU%Y##*0N;z^5Ek^_vJ6Qs7241IWtgQ)NaoC=l}oxe*f*;x8!3z6W`UUf>!;h zd6lnGS@z><=ae-a*>QsAE$or&C2#e=`rY^c)0X@9m!)juj?a1J8I{6xG5`8*dHa{f zvL`Ff2EN|@|KG*r$JW8^0!9Jx?oXCY`=wqlIiYOvp7c|v&j_;peUok#@buv?{X@@| z2i-Z?($dn=!J(|Y_|m0ISFVKoJhph{N>2{ZL3|k*6Y@`k>LspE?w1Z>3|H;{_bdD7 zJkJ^tukdhjMVFK|+y3L(IXP4IL{1c)c~pHbM@D9*pc7~q?eE%c+qOMX4^2NLZ7TKR z;#@TYb62T1ou)F!vVJ~vIliDh{i*HQQ>#TapM3NQA??f%8h=ItY4rx$;HkIDx<-QTUzPt#mum68`wt0Gb`u*MI>z6Kl z`ttJf^FMZj7LP56s#nqd`SYihl~s-1{vA6kbamez=@eci^)fFb(7Rf* zX@Pa;KK%UC($d1r&d0*a3fdJ7y3KLInKNg6XPd3G0$twS@bB-$Euh=GZFNDTESHvg z*VfjW=iVxLf6rFc{czI8prD{LXU~e3ce!?pg@%M^tgAIG`CP`Yc;u3gbMWMA%GZ`F zE_`%<=hpt;I&Ow)w=)05UHtq^CyT4@|6QF0&zP8*4o_1$v@$-9otJ(SGK>MQa*M5&xb$|R8eGkmPkGlV6nPxLFF{R|} zS-!koKq zN`HMymYGFgxqLae${^*+ioli$O-)UkHW@h{bNUy<;&ZH~`Ic2N>VBCwtj=!_Uivx3 z-&bT}R9Kw4;*+zHx1Oo>ocuORynDCwtdI@Mcel*4v~fC7F?)ZGp5^b-w+Z&sx|F1t zY;E@*I^>kK_swPSXieJ2h?WTxmEEPJrB82+1f}z%g0Z$|u3k0O(pt5Bd->^Ux~KZv zPHEq(c--45tR5B;l97>dn0cUfsHR^X1EzKcAYaJ$LS0^Za{Lk}iE9c6Uvj zt&iBR!~bS<_;XmsYrOt3f6{H+?{eSzwqILPwjlhUoThWp$E@!a*=J7#?5#H4`+x6I zQ`wUoAFs!Xt+;*L-NcmLK4zc$eY{S-@gp5B$_+;z^Sx-K&0Y z`|#;hQ2XP`<@iZrn1c=SXJ;CxA3AjC%$YMS*METeZrk(b&YgRAlB##v+gq+2g=J;$ zUcaud|DJA9^yI{v$jx)+%t=a0a;cj-eY$$=u|;j4f_#o}OV6q(^jy2ieBR&Fm!~RL zo&IOIX7=g-KbxZbGk%(_{rmQ&POxhAUq z07cT3v+;6Q?$!UV73J9icZUfzP`Q*6DByf^Kq64`{`+Ea|F*olRiB@oJ$KGeuK)VIdvQ@wzs{Q92Mx~b%Xg9eP_blfbN%PC z^Lp_`?7VXI+QMI=MW!YhEfeah@4k}y{cP|33B~U+v#sA} zivN$2{J!|B@9%$i*S!%~ss!Fv({kMN6nFpe+j}ZMpPg+E>H0spX9wCiS95VirV98v z>0`&#w6wJB?c+-o8>6DPhP?m${Y&%zpDODej=uK2`0~m1!^^HEn}p@&{QI~hsy|d3 zbOF)l=jV-Qp853Y(}M>IM|0)rdId=?{_XMR*(%be^M)M{QdnMG@h_{ zac@u0zu))&U%P(2yrd-I#fkeebN!A*W?Zp(b@}pA*0YJOZLj{uT`c~#iOXo(N^VLFWhM4a=xm^O}<~`&(8Z#yAL9^@jRWk(Ez+K(c9bG-`~Hyyxhs7v~+8Y zKPc5Hl-GMkZG&x7M|Av)n3+or&pAC#+O_h*@ie~olW(L=P1z*B-};TN`Nh&LLf^Js zvyuA5qF(CO3)=-GGuswv(OdkCo1k4{ADDi7UpjbTeJ^MYk|5fN@l{@L*L+`yeHBQXPzBntY;;8xV{nob%U*6)rde(`fu%tw#MI*`6 z%5MIB@G_@EX`A!!?wUG#c63yf*7wbzbpJB!9I2dX_S?0T zkGHbd>&EOTIMl-V>(?*HW3g}`><1jom(e--h>v-Y3p*)wNkY^zGZ zqgUR(zP_26FINUHU$tu0l;SeR$jQ?{mnF^4&B=)g2>9^*OvHnu21QR!%(X7Rb^G>e zD}f)*-rlDj^ncXYwI8lLwz0(O?tudjriTC9zqh)-UF)wr!#@cgwdr@1HHFNAJTtd) z?wsP4T3Z@9OQ4+oAv&_iBVhE>YiMmv&Jh(Puug|^n+*K z_iwhoe{*Kw^Eoq(m;KuF|3#|b`8hx5Jg+=g41)8Fb8l_Q6cZEMUG{d7Nyx|Dzjp1~rI#hSxw%$z&&_Rf z;jH8NAY*d>cyiYg(eLe5MMjmMp72VWm6VhmIePT&p32Qzw}yIqpFVu}@bTm7R#sIX zAAzn%05+z_#5x_&%p%WQ-^ zTi$}sIor0GIcaEXzkYdnxsTfB&6_{Jyu7^r&qwxhsYEY?5_96fycw6~X+mXgw= zKR-X8J$sg!nVFZD*S%kEZ_Uq5t5#{1my6dhsN`->GMahz>{(S+)!pUq^>lPxlI-{V zd+*1cej}r{_V2FJ*Kgjwy?XWP?Af!|$LuV6bc9oF^2xuZf0XlSCpdUa#+aW5~gAI*_F z3P4APsQJuTuwcQ5XJ==FJ3m+4`{h0^dGh2~x41qN6VseIb4*N4rKP3yV|GlKHtks2 zW>0od>w=xV9W-6_{ciap*&0uiv_Cr=Ii77^w(Qxa)YCb+xuqo~5jtVDwY7zXAD4Ph zpJ!WrY=4?m@3xYcmsq*QB)})uY~QwR+SI8_moJ|_bt>=H#)?%MfxW%GZEbCAY;1?t zw8&qa@%8K1@bz)Fsi#D8bKidZ_U-xk`SCjn9=^J|+QxRpk|iqM-ltPfPm7F>2Avak zH0kZ_?eBkmeO>(g94KAv*#lah<>$xuJ)A>yyUK(7H5>O!^056owrk(MdpB-G`1$pv zTb}!slbl@q<;BH!??8)i<{dipZ}rBF|10D#z}5nQW_jk!?T!(hI&Ipwj~^qqWK8Vq zI~UOT_s^ee>*LS=zpL!tw`A$kk2*51BpVhiP|(+3|K-b<8#iuje|k&c*}1u(%==FD z_qVr?|DD*JR;2pk!GjHzpVN4Gdp~{p^!E1l?j;kCME>-A6J}8!@ukjgnG?swN6Ri| zMD_5>OdH($QGiTnse=q(+xZ<10qMtrWJbAx<{aU$lWmi{M zJD=<$o6H8q!hIjll{tHPWgY90G&MCf&%gI1($meYZT0HcQ#6D1;`VqXo$aXD-5C1s z<>lqsSy`t}eBisiar^f7FJ352mq@>sduvPP)m5Q)yeqh7l|;86tS@Tfn5X>kJnzX& z*UA&8PW8!Jiz$A2KEJ-J=4t-H*^!qnUHbU(V_I6;4bVt(e0)4JbMu4=0!8)*(l#$% zyx7>t=+51{pFe%_^7h{N^xnODX=!PqqN3`4a};E4+ow#qGEv!mL-$h-#p2@6i{1OH zs;lj5e@&U}78Oggs{ZW$Swpy1%kmo8ORS9`ASl|MJb^9kFb>F1X%TgJ)B z>E-1$NA(yO#MgXu_47M-Z*TSQU%z%72A%EQ+sm8Y+1A$9+}u2O?%j2kvVh! zE$HwKTU*+9-z^wzCk)8p$N{#!S9uB?-Wz5V?CF&$wSV|SNXT3SBz`6H(o z-n4Mx!W*8;!N;MTZ)9d~;c3ozdVGJh;N3*~oR+R=H@9aO7CPV2-M?tjqMcwcckbOb zUTHQqwjcFQPpY|g8dym196Q*|E-EUjAG71Y`jEIsOY6m)h8LQkDjnR zw02jTA}w^O>(hj3)B5`Q%uGzytXg&G-S!UN_a8R2w6Ms^g4VmSv$LnCKM!8+r`Yo5 z%^MvZogI@ct*xW~uHCWY$J_mZ;o;))^7^W(qH=P5v7cnj^X^QKue*8uy11O2orQ(Q zpEMb}njcS3PY11K-?;JPr%zQMAFDyS(h|+ZQhiN=m+b^e8Dg8FYN? z+_}2Cx_fJXm(A;H^7Qcu2@SowDYbj<+_{SvE0^8dpLCQf$4{up%iDYJ-o1+#E!wqv z_x?YhPJe!We)q0jT?Lnd<`_;s!P}xg-#qWmiX}@zA|g7@>X@XTn-jV^OjTWdf92<6 zCr)%czcqFD?%ln;zWMq2K0ZCGSHE5px!K0n_VcGt878-`$Jd`NKFHI&xl1TCDoRRL zR##PZYx;S)cV%8G1;=Cr1s5(@Fk$Z8y(KS$q@`#7{QNw**zoK;+uxV{?VrZ4UA{a$ zDe2Lk%FnZA&z9slHc{Cfa!^A=Y^?9{%a-jLF57n8&%C_MSM|M7-Jgmg?e}lq962XZ zA(h?oc$-D9+vRK5?(HaCym4b;Wu@i+R=qRUuRlL{@L+59bpfYu-@e_6pE7CEEaP-O zC(vH9KdV(kT=)NcHaqk3vc1M1Pfk`}`|suc|9{`#HgQ-rcb@n|=0kjO0I4;iu1^A5SpQ($)@N8wFZtU|IZ(g^jJOv@|p<%*xWz(!!#o zv~;3(kNxXMj~-d1_TIf+Qd(N;-R;8BIa#>ny-a67o`;9_spRM9=JxgV@$&K>Jb2KF zuSl_L`{helu53v<+T}f6Z|nB$+qY~va{PFBNQgp+4LD zTYa+DFG@h|r+N1EdS|jML07C!m@wgZzr68G&<%J!Jv?8&yN2<-;qrBIa>~nl_xk$! znLcU0zP=?TUlzOfOYj_96S?_Ecyws!)3UyF$ZxJ*-ZWIj5%*+IB=2qLhdiCl(du$913r|i`UAS&dc#l^E37xB94kzPdWx)6???=k|>o4gY5q7ZpvKJbCu) z*&BCX-JXB{-sW`w>}>6CQzt6B7X?kyewTRszRCW*8;@mGdwO~n7JdXxdB?}!zj5P6 z>FaB}Un_*>{pyLmv3cv(qwBUNtNG4avThy7RRw%uPN5-=j*baQ-rlFTr=P2C%;5a= zXS#=)n{w38!gpaRWjFZc{yi!yDRJQdtzlob%*@2ZVCI==)26+7^XAEul$Hqx#5%id zTU{h%7#SIhpPgB`cJ19=rP}{_C53$T=9Mw;-q&fGk(QRm#>VD9&n9wHO6S_OZ=ar? z-oERX=TXOCcXxKhDU&7z#l_vbe*OB@tDsYI?*IRH{qp6@2M;dXyLayHtEy8Xoch94 z{QLy=C37vj<1p!BSJ7;XLQu}MvbO&F=Z}<>l*{f<<&R|LK*#6)`kMVtRa8_|Slv&h zR#)tB(#A!L7M+`CySwP=sfo(&Q4tY$_SIS&8wbxQEjoSX%#(fM{h|`*`FcV{a^jyR zY`)1aZ)aj?C~2I=^FNDU#^S=|%ZK+a*|qBy_|S0gA2W9E-u?LT4$EnB9huC8usYC11aRX=XehE1Dnm!< zwrHyS^E}t2cGf*^);KZeF-xaAk_qZvFVlzEd84zP`RiMW5PurN#7OZrr=KulTv& zKgIoj`a?fPZ_APV{=%X0)924W{ew45%+%D>WZJK!uYZ33g#S#s)9fQ=cDf`dCr3m? zxVgC%6l~bMxi~m@vVpmY;5$%5#lG=p&7U71Z`_DTPJX;%g+>nO`ru}E{-WYy(5}{b zM{X>f`~OCRu3*Ij@k&s`RL(G|W!f~**^{;4b=IwwX`Tvm3^zxtdG;*r&+4a|uebLs z6!$FjwtMI9F?H(HvuDq4&%3*;`gE z6U(~x0MVuEPS*O1iimuW-`485<tHFV_&|0Ewuk~q8FUUI27O5 z@i=Lin3SxzsH8G0W|6dpu5RzYcTvUv75~io=;7sMWNiHT>(|_jjEY}hR&LqyWr}97 zm~K?dKe@ebRvTMn)_TmD^Fg@6M{$bula4*2Ps75(rcIr?wdCccz182-($np$zpdH2 zb?frw?l%4(Ie*U+a{?_KeEoX$f&~Eq0R}p;Teb^43|5tANGw{sW5*59<;jPWe|>q$ z#>V#P)2FDYC_gZ$tgO7fJ%9R^=fT|E+@c~PH*(6ro5QR8{Q71b&nQ~4a^>IO_y2F( zxKZ$jfoiGUiBtFQ-HQte5fK(HesjYxK0e-N?zDwZo<7x$-gf5Pxpxl^HghOCJ3H6b z{smp3yl-Dz$;YOLiat-}*U5@`bObJToA`T?$E=t&gwu4Ds{X0A7rQ=x+5W$V`iTIN$6WjRy6^Aq zCjBVgSQfQGj@t>eOu^Xr^U2BTHk>Q=Rrda?)D08rkuuG?yv+ATan#SBKW}h&Y+R^e zz9I85cn<2;ty{~ME&KNE8|dD@!a_|Qohe)HUb=TrZujL+C)MY#iQ8LsZ%^g!^7mpE z*2YUEc-*|axXQd|DNPFdd33?1O+t!GR?)hjnwS5|iR`#X!D>niWk%q@!FSJNp_R8(~8{Q3I7 zzrG%7kN^JhV`oQ4#MZ2-9?SR+b6Tf9 z^zrxPGn>5LW8D#BiJs8aVU?AYCr_T7I(@plO+~yLa!~w{PWbt5VX_k0)(ZS^NGh@9tZt{+CIethvyXB@$ZaRUXmhagMKB^i+qS za>caEFH2ZiThE>I`#48>0^j3LPfwSXmGSZMf%XXQC{+Icfw3z~R*c`wV9lOAd$w)6 zcIC>H&+in(x>e5{75Ve_*q+MIAt52#a&LzP1bjHRP`E`%c~fNjTFKLr6BoRA(vp$q zp`fh1_`-z?w{G3Ka3SF1|6McMd@sNJGS|A?%iH_-ks~T9Dk0(FvuDlPxB07x?wg_$ zOFSo6OxwM4r*6!S3Dv8XF1(OolGC^T)~%>SrGxj#{X*duJ_@ zI~`!iJzv_Hlb84Dyu`W8)ln1Er-|zHoSdxA-4l7jlGEeBy|<_SPLkYs&`nB2R1|c| z;d7xdF(dW(a_Ws6&Fw5eBkNRr=0b-+ykF3FKPe#AhFe`_E*Wgr>Cdu z?=O3M>)+qss`fp1cb9M9vIVr^J^uf%>jBwfm1__4EuJ-N7KftRWJw8$AD_?L@2~s2 zYx(l$7Zz6MdzIXh}#fycHkMUkgjEIWLySeG;kt0jCZ#UP})HF2>-Lm~^!7(2t z^A8s;UoI{$|Nh~FhL+Z@ijSZ%xLdbwg@lIY=HzT>d;jk4?mvk?e*P>iDY>(!a`WE3 zwO?Lb+_!I^o12@D+UIL)qYtI925wG2&&SCrDIpikQx)08G{J{-5ZEcersll%7V+q-u!D=X{SvuC@yx;Ces{q+62 zJICK|xAP~-yJcs;-hRIhbVtpB0|)Nc{qB9fNx^mNy5-B4uUnUQYfEN{)!dUQ*REZw z`+7B8<(jglQ6adUj@} zqobpB`MWji)`bNGNSNovczbhypJll%?{3%KxY;I|lcrCfexTh@!wQ}z!otGJett>~ z55NB7$B%{vhClDC#5gC-o%ZKX%{=jIF0QVHY29A_{?F$zajzDWm6g4byoO`pr%#`Z z)6Z2@SG&8otcl$0X4Bu7nwEBMrt$GhmyB#|<~-le#l^+)j*Slt?s(7eNpo>wIWN-Q zQlzY=<`x?I_0!YS$NOZZU%B2rbU@O$^Ui_A`}W!C>E-?X_0`PG?9cj)GiT2}jVw+} zTQ+y@-771D4<7;ni_$ZO@8`~)yLIcuO(NIfO; zrhnHitHfpg4;HNWBz!lK^XcX#qFpCaQ&Vr=x)l`}$qGJ#v*>?#WaLbPr+yl*TX-HH z>y@^&wCons?ds{_;ox{+H+kW@le!uj5qqn)?%!WuQ)BaTDo4xyyD#3p-CO$l+LM!$ zMMXt-PQRRC5*r(9ZfB;T|PMv}`*LeH+ZQHcT$jr>H_!&?7!;_QMg@uHE z2tTfzHGk1$;YB+g`%Xj$%1xX&@$TKba&mI_>wdpo<~#d{*YyicULy}iA=`}B{GkDoq$x_kHT`S$hm z=FhKxcgM0Z9(0I;fx(6A*QZaPUjOw~sHdlAR#uj;Z?8e(o&ELps;aH&d_{tXz){|1T^rpKn?GY)9c^&~DXNS681pb!yEToqykjlM^eds&?(z(Iai{=jXR> z?b@|#*1Wm1v-tbFyUMa`obh!(Rhtjq*q(oX!)*-Ok<+{Jf~hh5WBlH#r>|d2OGsqo=ISad2Zx51zPqz?&z?OC7AS0N_mp^E zAT2L{{{J~UA&pgkro7uAZ=*JOXW`>xs@~I}t68+PzJ2=!S;?M~k}{$0kI$b(8H<91 zUteBMR`>t*>C>ZmJYBogzMq+C+%2XXwK?tV48!EQUoV#*@0TwxEj5(j2@MSm4!*o< z)v8yovWl{g-OtOpz3uGTv$-!XE&b#CbnDiw`+q)@mX?+d4-a2s@2_E~G`sZs`}^^` z%ihj1&DPP;aqE$|c<lji}Q}gfaa9n;_TU&eY-o2{n z38D;>k{=!Ege?Ak{(t?34I38TTdM7J<0R-#fQ{D;KNpmi_I7ohI&s3H-~q$MBl0$e zPugxoU9A26&C6tnm0V5pcf(e*Bo4n)>$bTV`hF_3``betbx*s`>>w zeNVulyxiRB#QF37(b2Q3SBUnyUA}y|xVYGvqcASnRpTSOKhI9bOl_~_mrYGfbaZvM z=iTi(`%nML1LZ|We$5kOPzlS)Su=6s#C`kh&g;~9g27=?QHi)43_RzKZ`-!*!-s;x zzWYxjwq}W*-<-v<@cq8u>lQ9_{BtmXUHU5May0AmcRb}f3?A$H`uc*G`^~i~&5EeA zRaRD3QDLc0-*SM3mzQ_v&Ydbk^&gH*kQUjxNL(-G!TdS8*4EKy&L44F&dSgtkd=`U zu`TE3ot?$GIXOK&Jtih5Q>ISUoI6Fp!>+XS>$GWNsi~l=mv3*+S65f>E-vB#ts68o zHI0e_b$1n{QSDQx(@v}`EU2))hn+ORi!h$?Ck71J<{fR9Q(~a z9thTW@@eL-I|7xiLd+ZA-c@pmJ@fwYJS9bi*9Y7=;(qWl2rvo@PZn19GmzkUvlzT8 ztEjqq_kknj@9*ViWL&s%MMq2P)tfgW$up8J-MV$^bNiFU>jGAs?&aU7RQuuHaa&g> zhii@f0wqx{X-`j0?U%Qgd#Ax5A!lc2$HTUG$BrKl4mNMyy0yeAHadE?-*RrBKaeR` z!GF6pZ#I7Z{>P6Wpl#*_PgVBxKNqgxYK^fAo-VDl-oxPxvf&I2N(QvRQ zFPcsrCsXRqgztM;(@&Zg^}+VCuG5`4{w{wy_5b8gp2}19U6W2UteDvot~e+e%-ozcka|YJv9{+B{TO#DypiQ*8ltC+ATJ7#tZ|A zo@vvjojToXzZ!{yll%B6I0W#7ZtDQny*_Sl)u}0(w{G2f`}Xbm`Szd#IDm)t*I%vqp@OEj7w^_3)8$^j+wuE?B@%A-rhFuGDy&C3P+WKsTzTDq?h87A1qK}_SKDVE_ zNJF=`HfGVfrJCN~e>}F^c_ggs)JrunEu;V3KCxkCeO<3)M6aGV-4bS7cjI{Z1yzw_ z%TFmgf92V*U%fY=OaA}KEB}A{KH$<+($%f~@gY%KTKb$2FE1#QTU+mr-CdTNp3c4h z-;W;^#>U2P7Weh_tzW;svC+}PgQMI?s&`xUchIEoIU!x$wGXSzMAFY(x^(IH_xIbk zZhfkA@yeBw!oouEX^`j7pMS2CzWL_Gix(v&CEvY!S6NxPbm`I?Mfv%lYXG~txxju9ufrzU6#{U5)eW|Lt79T>V>lN=iz6 z{QY^h)fpyIP8qkiN(K)Gs(%1_4oZyQdduZe{XMXZLL$AuBvM3lM{l$!NG49 z@7($G;$ru`d-rbqJyRv%y3)kv{doZw?TR0qOm{l!`^dq6OPAN7Jl2L8f3KPcEbvtK zH+cMRW5MioOFo^IIDA2hkw2$r+T?zz>?1F=64EsLO(uj_T)XXTvXRO6*AW)ucXHg@ zEw!@ZU-sVqx+rRfLCMRaJM!*-KQETpv3vLJ8#lgu`*!Tuv3q+eH?Lir`{l*Oy1F_& zJ-zt)zhBozZ;y(KYKg3Oa$=f%vZt>PwDKf1C1sj^{JylaQr6bi+}zynxNW+{^~*|1 z-n@TrU-zd1bj*D5=C-!BsZ*z}U;loFVRFkoFR!Gs^78Flx4wPx!lL5CgZ%w}uU)*j zaP{ifj~_pN_H0}2?{C)S@3w5+>Y~lJoPmMwvZsqAHQ$U z`t|vDb`*ln9*B>Ruc-L(;DJKDL}zE`*|TS(x8>|Ce?PCMr)Tx*?1F+1U834`e?A`H zwacm~G2!Ul`}gNhm=F*UaN*9KH7i#9xS2k`wWS4gv~}E`AIs<09SS;j6a*6M!3T<% zgoj^Wwrtr#quu}s5z+5kv#+mNvu4A7|9Li`6|WN}OgMDt(85c?RZ2~uBsA~T{ad$w zef!M0NczRgmosO~0Nu{_6Rr+m;BgopV|_npM7E5nj0V9=_i`{Tbw?A zN^^ooj(t$C@Uf}pXD`3MZ?>cQ^56d7a{}YEO-or=994Rz|KD@@SI~tYhF+GImWnNY zc;>_uuiwWt0Vux0;PdnI?i@?OXN8-9XP(;H+TOf*lQ`2xF#Sx#HB}XrC(oYktNT0a zWXiQGS6tlP?W?|Y985Sf%d|UvtE8l4YHDiov7X5Nb++KEVA$vS*%v)I@%j0A*0w-g zbAX@~_Dc>Q(0jgo$&w|@mL>hXbLrBgxpU{vnbRZis9)0FDbXXO@UhF59Uq1L^Af(> z-Yc?mEMZ1W(HYOUy*>Z^&CScVZWWb2VpR0RLucl+Y17);+-hrUOG-*|b9E=5toiyX zG$=@D+L;?SB3f>D+_x@n&a#k}bmHOR5pcpa!T3k{qsNc0*W;a?oaF55&ZHP=Yik=D z83{NocJEi)>+~v0 zeBsVv`|9Pdl|Prx+^6K^;Th%T>^AMc$o@UMi*rL+za8;Db^4d=ug6a_O0dnZ z`04-a$2;l*W3OND7WlPx?^mD8^JlyFyK<~Nbz;@&OF!p_9F#w{{%wBJ>-qZEWtOTb z|K73O`je|@7zwT<<|-~EY`TMixgv~%&|X7$MU z`1una-}P)!R6N=%-1+F3r&Ce$3${;J&Tqf|d#K*rkJjhAmu&n!2k(0A#BIZC|JC0#ewRmw(9}m^5^H-zJ^UceRy?s^+PV_Gb$=PuMV*7Yn?Ug z*8cy0^QEPwd3kvS+gK_@#Ko&CKmfF#|G)u-Nvj&v$=oXD~OLefP$Vh=>RYLBYb8 zmsDFOEM59EK=b16Z+T7}raP}}^?0OS^V{c^b@%KGjdBbPm*d$p-&Hm$e>vViHF(0r zNkLO5mR`T0H`D6#6Bgrq-Mb6Zl*AO@85}w$@#50cCmCB_dTD8IE!of-+uY1_U%XTP z+dMJZU2|l5+x9MZUD45*os;9j;XBV}X0>9k+vW`$9{kZ~H?v$kaiZY&Ly?=)bYpjg zoG{p+_+D7e=RsUXV&cY>lR}EuePYixEvcB%dv2~eYT$l&#SK4RxaJr_M9hq zyUYr%tO(>-xM3<#`F(OMa!iTP!3cb?UF30NJww#4M;K0L$oY|*O1>aNnaJ(i-E(`wECO}+8hh9%-K6E!z^4s?~0<&9xE%WinK$jBFDfhpZ4wBXJ==(YuBz4t5{#(+>47`|NZ;NvG9JK@SmjM zoL93KEKm>@7LJUJOifMY=H|AwwY`)W5Ps*1V$_`HZ3pD4|FW+ zu`4TszrVe0Uj6M2c!BBhna1f+5fL>X_*nye{r%71z5DmVLTC4Wxzd7y16~2a!NngR z9gWCm%;x<0@aAq##Vb#Ot}6xhc72nyUv$*>g#$msftTxNtKVJY`2RS6u&>%muB!b{ z7-sMNnVBm6RsYmmDVdn?(1}So>r`|ftUI^&+_wzJ{AnsFH|}4aG;?NVdb)Y(t1BBo zz~Eew*=$*9>C>NIt$V-!|Gk?xBcr2#|M>WLPAfaV+?8wBzJ2;6q}H=J{rs+-J2SJg ziuT)RtEsv9`}?0T4Hhp>OM5oQvRFq~_weDvmH$>RSn%N4+1Yoz)qH0?dHS?#eK_y>_yGtU*xPb4#m&X#gO9PRM$eixI?>V5+S;oRfPllh z|61DGyDL5}I-u)|ZCL$8t7B}T@TB?k*DqUkY_E!zR+q7;e^pggPL9s={T#Up3r)Q} z@&s-<{6U(2XuO1N`r(GB?!q<7Q)XCA5&$)PVq)(6`uaLICuc`|P2b70XJuEhe0+1a zMIftaW%k4sZmz$3k8d(HS? zn>KA~i8lt7&E*dcG~TcOzjycU*+-K~%gUxr2VGJyfY?(QnJ(GPsKqyGQDTU)d9@9w&K@1C87#gAuaXLogR&0Be%0~C|N z?V#R@;!eklpv8Ki``~qTdq1b0)DB-)QC%Isvq;s}_V2M?XoT?b@{wy9@vR`pPS9=HlkY_tn*=+FY?^R?Mp?a7F&ueaj9`*%yoq7M_XB z3mAXQNEFYr|IxXMf#Jbk=C{TS49Yu|Z$XDA84$yl4;LVYFF*Le$2Sj>Kk5k{H&u}; ui2^ei7=(DOAoq_lFi3O0>gWB $out" ]; - }; - - testPrimitives = it "checks that all primitive types match" [ - (assertDoesNotThrow "unit type" (unit { })) - (assertDoesNotThrow "int type" (int 15)) - (assertDoesNotThrow "bool type" (bool false)) - (assertDoesNotThrow "float type" (float 13.37)) - (assertDoesNotThrow "string type" (string "Hello!")) - (assertDoesNotThrow "function type" (function (x: x * 2))) - (assertDoesNotThrow "path type" (path /nix)) - (assertDoesNotThrow "derivation type" (drv trivialDerivation)) - ]; - - testPoly = it "checks that polymorphic types work as intended" [ - (assertDoesNotThrow "option type" (option int null)) - (assertDoesNotThrow "list type" (list string [ "foo" "bar" ])) - (assertDoesNotThrow "either type" (either int float 42)) - ]; - - # Test that structures work as planned. - person = struct "person" { - name = string; - age = int; - - contact = option (struct { - email = string; - phone = option string; - }); - }; - - testStruct = it "checks that structures work as intended" [ - (assertDoesNotThrow "person struct" (person { - name = "Brynhjulf"; - age = 42; - contact.email = "brynhjulf@yants.nix"; - })) - ]; - - # Test enum definitions & matching - colour = enum "colour" [ "red" "blue" "green" ]; - colourMatcher = { - red = "It is in fact red!"; - blue = "It should not be blue!"; - green = "It should not be green!"; - }; - - testEnum = it "checks enum definitions and matching" [ - (assertEq "enum is matched correctly" - "It is in fact red!" - (colour.match "red" colourMatcher)) - (assertThrows "out of bounds enum fails" - (colour.match "alpha" (colourMatcher // { - alpha = "This should never happen"; - })) - ) - ]; - - # Test sum type definitions - creature = sum "creature" { - human = struct { - name = string; - age = option int; - }; - - pet = enum "pet" [ "dog" "lizard" "cat" ]; - }; - some-human = creature { - human = { - name = "Brynhjulf"; - age = 42; - }; - }; - - testSum = it "checks sum types definitions and matching" [ - (assertDoesNotThrow "creature sum type" some-human) - (assertEq "sum type is matched correctly" - "It's a human named Brynhjulf" - (creature.match some-human { - human = v: "It's a human named ${v.name}"; - pet = v: "It's not supposed to be a pet!"; - }) - ) - ]; - - # Test curried function definitions - func = defun [ string int string ] - (name: age: "${name} is ${toString age} years old"); - - testFunctions = it "checks function definitions" [ - (assertDoesNotThrow "function application" (func "Brynhjulf" 42)) - ]; - - # Test that all types are types. - assertIsType = name: t: - assertDoesNotThrow "${name} is a type" (type t); - testTypes = it "checks that all types are types" [ - (assertIsType "any" any) - (assertIsType "bool" bool) - (assertIsType "drv" drv) - (assertIsType "float" float) - (assertIsType "int" int) - (assertIsType "string" string) - (assertIsType "path" path) - - (assertIsType "attrs int" (attrs int)) - (assertIsType "eitherN [ ... ]" (eitherN [ int string bool ])) - (assertIsType "either int string" (either int string)) - (assertIsType "enum [ ... ]" (enum [ "foo" "bar" ])) - (assertIsType "list string" (list string)) - (assertIsType "option int" (option int)) - (assertIsType "option (list string)" (option (list string))) - (assertIsType "struct { ... }" (struct { a = int; b = option string; })) - (assertIsType "sum { ... }" (sum { a = int; b = option string; })) - ]; - - testRestrict = it "checks restrict types" [ - (assertDoesNotThrow "< 42" ((restrict "< 42" (i: i < 42) int) 25)) - (assertDoesNotThrow "list length < 3" - ((restrict "not too long" (l: builtins.length l < 3) (list int)) [ 1 2 ])) - (assertDoesNotThrow "list eq 5" - (list (restrict "eq 5" (v: v == 5) any) [ 5 5 5 ])) - ]; - -in -runTestsuite "yants" [ - testPrimitives - testPoly - testStruct - testEnum - testSum - testFunctions - testTypes - testRestrict -] diff --git a/ops/secrets/mkSecrets.nix b/ops/secrets/mkSecrets.nix index e22745b96..dc0ce153f 100644 --- a/ops/secrets/mkSecrets.nix +++ b/ops/secrets/mkSecrets.nix @@ -1,29 +1,12 @@ -# Expose secrets as part of the tree, making it possible to validate -# their paths at eval time. +# Expose secrets as part of the tree, exposing their paths at eval time. # # Note that encrypted secrets end up in the Nix store, but this is # fine since they're publicly available anyways. { depot, lib, ... }: -let - inherit (depot.nix.yants) - attrs - any - either - defun - list - path - restrict - string - struct - ; - ssh-pubkey = restrict "SSH pubkey" (lib.hasPrefix "ssh-") string; - age-pubkey = restrict "age pubkey" (lib.hasPrefix "age") string; - agenixSecret = struct "agenixSecret" { publicKeys = list (either age-pubkey ssh-pubkey); }; -in - -defun [ path (attrs agenixSecret) (attrs any) ] - (path: secrets: +( + path: secrets: depot.nix.readTree.drvTargets # Import each secret into the Nix store - (builtins.mapAttrs (name: _: "${path}/${name}") secrets)) + (builtins.mapAttrs (name: _: "${path}/${name}") secrets) +) diff --git a/ops/secrets/secrets.nix b/ops/secrets/secrets.nix index 54bd2774d..c8a447c49 100644 --- a/ops/secrets/secrets.nix +++ b/ops/secrets/secrets.nix @@ -1,3 +1,5 @@ +# This file is read by agenix standalone, to know which audiences to (re)encrypt secrets to. + let raito = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICaw9ihTG7ucB8P38XdalEWev8+q96e2yNm4B+/I9IJp" diff --git a/tools/eprintf.nix b/tools/eprintf.nix deleted file mode 100644 index 933d73ea7..000000000 --- a/tools/eprintf.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ depot, pkgs, ... }: - -let - bins = depot.nix.getBins pkgs.coreutils [ "printf" ]; - - # printf(1), but redirect to stderr -in -depot.nix.writeExecline "eprintf" { } [ - "fdmove" - "-c" - "1" - "2" - bins.printf - "$@" -] diff --git a/tools/rust-crates-advisory/default.nix b/tools/rust-crates-advisory/default.nix index da7eb7544..d85fc3ed0 100644 --- a/tools/rust-crates-advisory/default.nix +++ b/tools/rust-crates-advisory/default.nix @@ -1,14 +1,6 @@ { depot, pkgs, lib, ... }: let - - bins = - depot.nix.getBins pkgs.cargo-audit [ "cargo-audit" ] - // depot.nix.getBins pkgs.jq [ "jq" ] - // depot.nix.getBins pkgs.findutils [ "find" ] - // depot.nix.getBins pkgs.gnused [ "sed" ] - ; - our-crates = lib.filter (v: v ? outPath) (builtins.attrValues depot.third_party.rust-crates); @@ -36,10 +28,10 @@ let exit 100 fi - "${bins.cargo-audit}" audit --json --no-fetch \ + ${pkgs.cargo-audit}/bin/cargo-audit audit --json --no-fetch \ --db "${depot.third_party.rustsec-advisory-db}" \ --file "$2" \ - | "${bins.jq}" --raw-output --join-output \ + | ${pkgs.jq}/bin/jq --raw-output --join-output \ --from-file "${./format-audit-result.jq}" \ --arg maintainers "''${4:-}" \ --argjson checklist "''${3:-false}" \ @@ -56,9 +48,9 @@ let # Find prints the found lockfiles as \t\t\0 while IFS=$'\t' read -r -d $'\0' entryPoint dir lockFile; do - label="$(printf '%s' "$dir" | "${bins.sed}" "s|^$entryPoint|/|")" + label="$(printf '%s' "$dir" | ${pkgs.gnused}/bin/sed "s|^$entryPoint|/|")" "${lock-file-report}" "$label" "$lockFile" || status=1 - done < <("${bins.find}" "$root" -type f -name Cargo.lock -printf '%H\t%h\t%p\0' ) + done < <(${pkgs.findutils}/bin/find "$root" -type f -name Cargo.lock -printf '%H\t%h\t%p\0' ) exit $status '';