From 1b4289f93f7fe15df116a23a185a597ed8ae307d Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Mon, 19 May 2025 19:42:25 -0700 Subject: [PATCH] allow nested files imported (#7090) * allow nested files Signed-off-by: Jess Frazelle * fix test Signed-off-by: Jess Frazelle * disallow bad things Signed-off-by: Jess Frazelle * add playwright test on windows Signed-off-by: Jess Frazelle * add playwright test on windows Signed-off-by: Jess Frazelle * fixes Signed-off-by: Jess Frazelle * updates Signed-off-by: Jess Frazelle * updates Signed-off-by: Jess Frazelle * fix test Signed-off-by: Jess Frazelle * Update rust/kcl-lib/tests/nested_windows_main_kcl/unparsed@main.kcl.snap Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> * updates Signed-off-by: Jess Frazelle * updates Signed-off-by: Jess Frazelle --------- Signed-off-by: Jess Frazelle Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com> --- e2e/playwright/projects.spec.ts | 56 ++++++ rust/kcl-lib/src/execution/typed_path.rs | 46 +++-- rust/kcl-lib/src/modules.rs | 4 +- rust/kcl-lib/src/parsing/ast/types/mod.rs | 22 +-- rust/kcl-lib/src/parsing/parser.rs | 43 +++- rust/kcl-lib/src/simulation_tests.rs | 42 ++++ .../nested_main_kcl/artifact_commands.snap | 184 ++++++++++++++++++ .../artifact_graph_flowchart.snap | 6 + .../artifact_graph_flowchart.snap.md | 23 +++ rust/kcl-lib/tests/nested_main_kcl/ast.snap | 73 +++++++ rust/kcl-lib/tests/nested_main_kcl/input.kcl | 3 + .../nested_main_kcl/nested/foo/bar/main.kcl | 7 + rust/kcl-lib/tests/nested_main_kcl/ops.snap | 18 ++ .../tests/nested_main_kcl/program_memory.snap | 10 + .../tests/nested_main_kcl/rendered_model.png | Bin 0 -> 153264 bytes .../tests/nested_main_kcl/unparsed.snap | 7 + .../nested_main_kcl/unparsed@main.kcl.snap | 8 + .../artifact_commands.snap | 184 ++++++++++++++++++ .../artifact_graph_flowchart.snap | 6 + .../artifact_graph_flowchart.snap.md | 23 +++ .../tests/nested_windows_main_kcl/ast.snap | 73 +++++++ .../tests/nested_windows_main_kcl/input.kcl | 3 + .../nested/foo/bar/main.kcl | 7 + .../tests/nested_windows_main_kcl/ops.snap | 18 ++ .../program_memory.snap | 10 + .../rendered_model.png | Bin 0 -> 153264 bytes .../nested_windows_main_kcl/unparsed.snap | 7 + .../unparsed@main.kcl.snap | 8 + .../artifact_graph_flowchart.snap.md | 8 +- 29 files changed, 866 insertions(+), 33 deletions(-) create mode 100644 rust/kcl-lib/tests/nested_main_kcl/artifact_commands.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap.md create mode 100644 rust/kcl-lib/tests/nested_main_kcl/ast.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/input.kcl create mode 100644 rust/kcl-lib/tests/nested_main_kcl/nested/foo/bar/main.kcl create mode 100644 rust/kcl-lib/tests/nested_main_kcl/ops.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/program_memory.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/rendered_model.png create mode 100644 rust/kcl-lib/tests/nested_main_kcl/unparsed.snap create mode 100644 rust/kcl-lib/tests/nested_main_kcl/unparsed@main.kcl.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/artifact_commands.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap.md create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/ast.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/input.kcl create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/nested/foo/bar/main.kcl create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/ops.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/program_memory.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/rendered_model.png create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/unparsed.snap create mode 100644 rust/kcl-lib/tests/nested_windows_main_kcl/unparsed@main.kcl.snap diff --git a/e2e/playwright/projects.spec.ts b/e2e/playwright/projects.spec.ts index 1e652373c..c211e7c76 100644 --- a/e2e/playwright/projects.spec.ts +++ b/e2e/playwright/projects.spec.ts @@ -2064,3 +2064,59 @@ test( }) } ) + +test( + 'nested dir import works on windows', + { tag: ['@electron', '@windows'] }, + async ({ scene, cmdBar, context, page }, testInfo) => { + // Skip if on non-windows + if (process.platform !== 'win32') { + test.skip() + } + await context.folderSetupFn(async (dir) => { + const bracketDir = path.join(dir, 'bracket') + await fsp.mkdir(bracketDir, { recursive: true }) + const nestedDir = path.join(bracketDir, 'nested') + await fsp.mkdir(nestedDir, { recursive: true }) + + await fsp.copyFile( + executorInputPath('cylinder-inches.kcl'), + path.join(nestedDir, 'main.kcl') + ) + await fsp.writeFile( + path.join(bracketDir, 'main.kcl'), + `import 'nested\\main.kcl' as thing + +thing` + ) + }) + + await page.setBodyDimensions({ width: 1200, height: 500 }) + const u = await getUtils(page) + + const pointOnModel = { x: 630, y: 280 } + + await test.step('Opening the bracket project should load the stream', async () => { + // expect to see the text bracket + await expect(page.getByText('bracket')).toBeVisible() + + await page.getByText('bracket').click() + + await scene.settled(cmdBar) + + await expect( + page.getByRole('button', { name: 'Start Sketch' }) + ).toBeEnabled({ + timeout: 20_000, + }) + + // gray at this pixel means the stream has loaded in the most + // user way we can verify it (pixel color) + await expect + .poll(() => u.getGreatestPixDiff(pointOnModel, [125, 125, 125]), { + timeout: 10_000, + }) + .toBeLessThan(15) + }) + } +) diff --git a/rust/kcl-lib/src/execution/typed_path.rs b/rust/kcl-lib/src/execution/typed_path.rs index 73f5b343f..e65081d9d 100644 --- a/rust/kcl-lib/src/execution/typed_path.rs +++ b/rust/kcl-lib/src/execution/typed_path.rs @@ -35,31 +35,28 @@ impl Default for TypedPath { impl From<&String> for TypedPath { fn from(path: &String) -> Self { - #[cfg(target_arch = "wasm32")] - { - TypedPath(typed_path::TypedPath::derive(path).to_path_buf()) - } - #[cfg(not(target_arch = "wasm32"))] - { - TypedPath(std::path::PathBuf::from(path)) - } + TypedPath::new(path) } } impl From<&str> for TypedPath { fn from(path: &str) -> Self { + TypedPath::new(path) + } +} + +impl TypedPath { + pub fn new(path: &str) -> Self { #[cfg(target_arch = "wasm32")] { TypedPath(typed_path::TypedPath::derive(path).to_path_buf()) } #[cfg(not(target_arch = "wasm32"))] { - TypedPath(std::path::PathBuf::from(path)) + TypedPath(normalise_import(path)) } } -} -impl TypedPath { pub fn extension(&self) -> Option<&str> { #[cfg(target_arch = "wasm32")] { @@ -85,6 +82,17 @@ impl TypedPath { } } + pub fn join_typed(&self, path: &TypedPath) -> Self { + #[cfg(target_arch = "wasm32")] + { + TypedPath(self.0.join(path.0.to_path())) + } + #[cfg(not(target_arch = "wasm32"))] + { + TypedPath(self.0.join(&path.0)) + } + } + pub fn parent(&self) -> Option { #[cfg(target_arch = "wasm32")] { @@ -206,3 +214,19 @@ impl schemars::JsonSchema for TypedPath { gen.subschema_for::() } } + +/// Turn `nested\foo\bar\main.kcl` or `nested/foo/bar/main.kcl` +/// into a PathBuf that works on the host OS. +/// +/// * Does **not** touch `..` or symlinks – call `canonicalize()` if you need that. +/// * Returns an owned `PathBuf` only when normalisation was required. +fn normalise_import>(raw: S) -> std::path::PathBuf { + let s = raw.as_ref(); + // On Unix we need to swap `\` → `/`. On Windows we leave it alone. + // (Windows happily consumes `/`) + if cfg!(unix) && s.contains('\\') { + std::path::PathBuf::from(s.replace('\\', "/")) + } else { + std::path::Path::new(s).to_path_buf() + } +} diff --git a/rust/kcl-lib/src/modules.rs b/rust/kcl-lib/src/modules.rs index 6e5098423..4cb41fe0b 100644 --- a/rust/kcl-lib/src/modules.rs +++ b/rust/kcl-lib/src/modules.rs @@ -185,9 +185,9 @@ impl ModulePath { match path { ImportPath::Kcl { filename: path } | ImportPath::Foreign { path } => { let resolved_path = if let Some(project_dir) = project_directory { - project_dir.join(path) + project_dir.join_typed(path) } else { - TypedPath::from(path) + path.clone() }; ModulePath::Local { value: resolved_path } } diff --git a/rust/kcl-lib/src/parsing/ast/types/mod.rs b/rust/kcl-lib/src/parsing/ast/types/mod.rs index d0e298b79..7b66f548c 100644 --- a/rust/kcl-lib/src/parsing/ast/types/mod.rs +++ b/rust/kcl-lib/src/parsing/ast/types/mod.rs @@ -34,7 +34,7 @@ use crate::{ }, parsing::{ast::digest::Digest, token::NumericSuffix, PIPE_OPERATOR}, source_range::SourceRange, - ModuleId, + ModuleId, TypedPath, }; mod condition; @@ -1741,8 +1741,8 @@ impl ImportSelector { #[ts(export)] #[serde(tag = "type")] pub enum ImportPath { - Kcl { filename: String }, - Foreign { path: String }, + Kcl { filename: TypedPath }, + Foreign { path: TypedPath }, Std { path: Vec }, } @@ -1811,16 +1811,14 @@ impl ImportStatement { match &self.path { ImportPath::Kcl { filename: s } | ImportPath::Foreign { path: s } => { - let mut parts = s.split('.'); - let path = parts.next()?; - let _ext = parts.next()?; - let rest = parts.next(); - - if rest.is_some() { - return None; + let name = s.file_name().map(|f| f.to_string()); + // Remove the extension if it exists. + let extension = s.extension(); + if let Some(extension) = extension { + name.map(|n| n.trim_end_matches(extension).trim_end_matches('.').to_string()) + } else { + name } - - path.rsplit(&['/', '\\']).next().map(str::to_owned) } ImportPath::Std { path } => path.last().cloned(), } diff --git a/rust/kcl-lib/src/parsing/parser.rs b/rust/kcl-lib/src/parsing/parser.rs index 4efdb4b03..fd997e3af 100644 --- a/rust/kcl-lib/src/parsing/parser.rs +++ b/rust/kcl-lib/src/parsing/parser.rs @@ -35,7 +35,7 @@ use crate::{ token::{Token, TokenSlice, TokenType}, PIPE_OPERATOR, PIPE_SUBSTITUTION_OPERATOR, }, - SourceRange, IMPORT_FILE_EXTENSIONS, + SourceRange, TypedPath, IMPORT_FILE_EXTENSIONS, }; thread_local! { @@ -1862,7 +1862,7 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR let path = if path_string.ends_with(".kcl") { if path_string .chars() - .any(|c| !c.is_ascii_alphanumeric() && c != '_' && c != '-' && c != '.') + .any(|c| !c.is_ascii_alphanumeric() && c != '_' && c != '-' && c != '.' && c != '/' && c != '\\') { return Err(ErrMode::Cut( CompilationError::fatal( @@ -1873,7 +1873,30 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR )); } - ImportPath::Kcl { filename: path_string } + if path_string.starts_with("..") { + return Err(ErrMode::Cut( + CompilationError::fatal( + path_range, + "import path may not start with '..'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.", + ) + .into(), + )); + } + + // Make sure they are not using an absolute path. + if path_string.starts_with('/') || path_string.starts_with('\\') { + return Err(ErrMode::Cut( + CompilationError::fatal( + path_range, + "import path may not start with '/' or '\\'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.", + ) + .into(), + )); + } + + ImportPath::Kcl { + filename: TypedPath::new(&path_string), + } } else if path_string.starts_with("std::") { ParseContext::warn(CompilationError::err( path_range, @@ -1910,7 +1933,9 @@ fn validate_path_string(path_string: String, var_name: bool, path_range: SourceR format!("unsupported import path format. KCL files can be imported from the current project, CAD files with the following formats are supported: {}", IMPORT_FILE_EXTENSIONS.join(", ")), )) } - ImportPath::Foreign { path: path_string } + ImportPath::Foreign { + path: TypedPath::new(&path_string), + } } else { return Err(ErrMode::Cut( CompilationError::fatal( @@ -4534,6 +4559,16 @@ e fn bad_imports() { assert_err( r#"import cube from "../cube.kcl""#, + "import path may not start with '..'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.", + [17, 30], + ); + assert_err( + r#"import cube from "/cube.kcl""#, + "import path may not start with '/' or '\\'. Cannot traverse to something outside the bounds of your project. If this path is inside your project please find a better way to reference it.", + [17, 28], + ); + assert_err( + r#"import cube from "C:\cube.kcl""#, "import path may only contain alphanumeric characters, underscore, hyphen, and period. KCL files in other directories are not yet supported.", [17, 30], ); diff --git a/rust/kcl-lib/src/simulation_tests.rs b/rust/kcl-lib/src/simulation_tests.rs index d747b8704..be5c95078 100644 --- a/rust/kcl-lib/src/simulation_tests.rs +++ b/rust/kcl-lib/src/simulation_tests.rs @@ -3276,3 +3276,45 @@ mod subtract_regression10 { super::execute(TEST_NAME, true).await } } +mod nested_main_kcl { + const TEST_NAME: &str = "nested_main_kcl"; + + /// Test parsing KCL. + #[test] + fn parse() { + super::parse(TEST_NAME) + } + + /// Test that parsing and unparsing KCL produces the original KCL input. + #[tokio::test(flavor = "multi_thread")] + async fn unparse() { + super::unparse(TEST_NAME).await + } + + /// Test that KCL is executed correctly. + #[tokio::test(flavor = "multi_thread")] + async fn kcl_test_execute() { + super::execute(TEST_NAME, true).await + } +} +mod nested_windows_main_kcl { + const TEST_NAME: &str = "nested_windows_main_kcl"; + + /// Test parsing KCL. + #[test] + fn parse() { + super::parse(TEST_NAME) + } + + /// Test that parsing and unparsing KCL produces the original KCL input. + #[tokio::test(flavor = "multi_thread")] + async fn unparse() { + super::unparse(TEST_NAME).await + } + + /// Test that KCL is executed correctly. + #[tokio::test(flavor = "multi_thread")] + async fn kcl_test_execute() { + super::execute(TEST_NAME, true).await + } +} diff --git a/rust/kcl-lib/tests/nested_main_kcl/artifact_commands.snap b/rust/kcl-lib/tests/nested_main_kcl/artifact_commands.snap new file mode 100644 index 000000000..27c86f808 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/artifact_commands.snap @@ -0,0 +1,184 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact commands nested_main_kcl.kcl +--- +[ + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "edge_lines_visible", + "hidden": false + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "arc", + "center": { + "x": 15.0, + "y": 0.0 + }, + "radius": 5.0, + "start": { + "unit": "degrees", + "value": 0.0 + }, + "end": { + "unit": "degrees", + "value": 360.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 20.0, + "y": 0.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "revolve", + "target": "[uuid]", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "axis_is_2d": true, + "angle": { + "unit": "degrees", + "value": 360.0 + }, + "tolerance": 0.0000001, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_adjacency_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + } +] diff --git a/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap b/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap new file mode 100644 index 000000000..e070c36ff --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap @@ -0,0 +1,6 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact graph flowchart nested_main_kcl.kcl +extension: md +snapshot_kind: binary +--- diff --git a/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap.md new file mode 100644 index 000000000..112f43416 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/artifact_graph_flowchart.snap.md @@ -0,0 +1,23 @@ +```mermaid +flowchart LR + subgraph path2 [Path] + 2["Path
[43, 81, 1]"] + 3["Segment
[43, 81, 1]"] + 4[Solid2d] + end + 1["Plane
[18, 35, 1]"] + 5["Sweep Revolve
[89, 142, 1]"] + 6[Wall] + %% face_code_ref=Missing NodePath + 7["SweepEdge Adjacent"] + 1 --- 2 + 2 --- 3 + 2 --- 4 + 2 ---- 5 + 5 <--x 3 + 3 --- 6 + 3 --- 7 + 5 --- 6 + 5 --- 7 + 6 --- 7 +``` diff --git a/rust/kcl-lib/tests/nested_main_kcl/ast.snap b/rust/kcl-lib/tests/nested_main_kcl/ast.snap new file mode 100644 index 000000000..9e7538f9e --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/ast.snap @@ -0,0 +1,73 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of parsing nested_main_kcl.kcl +--- +{ + "Ok": { + "body": [ + { + "commentStart": 0, + "end": 0, + "path": { + "type": "Kcl", + "filename": "nested/foo/bar/main.kcl" + }, + "selector": { + "type": "None", + "alias": { + "commentStart": 0, + "end": 0, + "name": "bar", + "start": 0, + "type": "Identifier" + } + }, + "start": 0, + "type": "ImportStatement", + "type": "ImportStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bar", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + } + ], + "commentStart": 0, + "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "0": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] + }, + "startNodes": [] + }, + "start": 0 + } +} diff --git a/rust/kcl-lib/tests/nested_main_kcl/input.kcl b/rust/kcl-lib/tests/nested_main_kcl/input.kcl new file mode 100644 index 000000000..ab113746f --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/input.kcl @@ -0,0 +1,3 @@ +import "nested/foo/bar/main.kcl" as bar + +bar diff --git a/rust/kcl-lib/tests/nested_main_kcl/nested/foo/bar/main.kcl b/rust/kcl-lib/tests/nested_main_kcl/nested/foo/bar/main.kcl new file mode 100644 index 000000000..fefdcad20 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/nested/foo/bar/main.kcl @@ -0,0 +1,7 @@ +// A donut shape. +startSketchOn(XY) + |> circle( center = [15, 0], radius = 5 ) + |> revolve( + angle = 360, + axis = Y, + ) diff --git a/rust/kcl-lib/tests/nested_main_kcl/ops.snap b/rust/kcl-lib/tests/nested_main_kcl/ops.snap new file mode 100644 index 000000000..a68c3f395 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/ops.snap @@ -0,0 +1,18 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Operations executed nested_main_kcl.kcl +--- +[ + { + "type": "GroupBegin", + "group": { + "type": "ModuleInstance", + "name": "main.kcl", + "moduleId": 0 + }, + "sourceRange": [] + }, + { + "type": "GroupEnd" + } +] diff --git a/rust/kcl-lib/tests/nested_main_kcl/program_memory.snap b/rust/kcl-lib/tests/nested_main_kcl/program_memory.snap new file mode 100644 index 000000000..ae79838e6 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/program_memory.snap @@ -0,0 +1,10 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Variables in memory after executing nested_main_kcl.kcl +--- +{ + "bar": { + "type": "Module", + "value": 1 + } +} diff --git a/rust/kcl-lib/tests/nested_main_kcl/rendered_model.png b/rust/kcl-lib/tests/nested_main_kcl/rendered_model.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cfde3de07496dc9210c22e443c5160a020efee GIT binary patch literal 153264 zcmeFadwi7DwLTt2#d`!>X)6*$)LPrdBQ2<0q7_8ElvZ0k1tqnf!q)~!6)`|aMny%W z3WAm*N?NU@JsymfVnhfd3L+JViV`qD5EQCFLI@%EncwrQwQuia@SOjD?Z=Xt$;{+^ z*X3Eyy6nAY{N%?&PdoWrCud}2oHp#*!8c`O9FK>`zJKBg_)$@`{g#YlZz&iy_^O{x zI_AKeo&MPS7r%d}E?H3X_`B;D-E;k&FOREw&HQ)Q?-u_4y3&Q0_UTpAd|%mbru=1k z|GbY&2mR}+%w7Ne(#vmr+3}y2oEiW8`K`B4{J7&k4Y993o&G~_e3|^tchY}o;>XFK z|19la!e39m^w-4IcjnkAE|dkO2OhD~8heHwlhP-f*-Z(KOAaG(5%H~H_rtxLv~9P`_1JU;ngX7XTWd_$1vCC~h0 z=YjvaD#*ziN^0fr@cO52_+jOMruFmtWF9-Iu3N0Ga?pf5>!+3S>gsR9pFQ!-H8ZQl44cIC(lcSE7f#$25_<^5@|2Vp4Z z9m-~>6U{;1!r@)niCv|q9sE`HkzbW==!6S<64$lx$UhdHJ7Z?I?7uHxKC?FkSX1-; zIg@%08_;i9+n6OACM?;|Y3m6)o9cFN*@G+Wo>Tnn?zOWf>{@*i?}s;W_paj_adEBV zkDs*b%#um_esE)1;_aNaw`;c*R2S*P{0TwM8vEK|Ncz!$R3#cj&G937@gs%DtZ14U zZ_0~rnOVLiul|N^*`toz`Ni+o31rezJAM;EsqQ!jLgaJUQJnN7X9n$WmJE`zB5aj zR*zhC*BcF4iBGeN_tGf!;eznGmcBo&$Kjqq20vw$8sv(Omr8+lxj)|a9}xR|GuH!UhZqhTz237Z>*h_wU>tQ*}0jY zLgoVw|0(l$ahb30lq+rhs_Px~ja11lJRlYfQO+zs;*FqPY~Zxt*6kWXjc+PR+@*-EOYBaV{lXf8LC4Pxl`6v)3m7bnBkuU!_&FkFCG*wPRkv&rZKQ zJELmL9$c=mj{4ct2Rt;daM`?0|L04uncf4}ez!A|hU8W;;mYCzmBpoSxNfln-3njr zRygi{*y=sF@P&!Pize(_Ty_use{9c_GKO7y?3K9k*Gr6DwD+!SyLMOeldEH$t5#g{ z+T`)CP3~DWVD`A0F$-F^p73Vh3|#za_m3M(kL+=1_Vk0iXqa~W`_l(~?S9xp?dDk1 z^jOmY`S&^h!Z>daiR6!>uGft#)YR{SK4xc4!< z_Ka(H75hu?G;G)LPp&@Yycx+GUYmT!*!s3DuxdyfHvq$KT!PEaFj7BZ=ayIR%oxzL zDsvA_ojCHR%%X3@#H$yNsaROvP@7ED#*Ed7?F0s%%t^8DMD}u`blWGT?Vr>hfAGh( zhkslmRwBZN&=X&lCLX(f-uKTv377mM6?X=1VMgmP+yGHycJGA?dXG9|SXwTTM4Xn@_RCR6ex3XKGcWw{Z-J76 z+sRKM`m)%*vf_P(z#BaF^}Uw(@d!I%O)|Dz0w-WP`^YC_HaO{dCx_>bLr4f2V3iPw@nC2C=1xKE$x@ zq&L6Qmq-NL5|z-T1U$VGR4dJkt6LV=1`3Jgq$=d`P$2=dO8_EVepU*rdi~xny3U#X z5N_dIaR>2b(Tjp7ZV6uTfZSDa@45%C-4%bvS{96}9~~p}zu?(>ieFn+0<%I85XEG? z_A0%cH`T$)geEY$E{->hj5iFFf46%E&|dpc3M$3dq(`L#0Hs6oU|{=eY7X5RYq%B8 zk#akYbE6t^x6^YNHFQ<)x{@`0vwt^kVU~9ny(5We8C!5?7H;*{#O4&g+IDtM0o?}J zTG`6hp|Qh5bEf;4mK>Ps@)rg!KT%lD#8G=E?q~&vY5P1kalQqtCm-q!-59qw<|f#M z&?W|#qNr_xzeCQQ5j&-7#ka@SKPVu!&EuF=m)w+B7ad8^%^KmV%;HNJ!6z-7S9rOn zLHX^Q^NT9v-+rDAC71ju%HrCGAC_R(enn~h6}1iW?`a43#S{B(d*j|2@s^k3s;N|8 zs<|)<%K^X<8*UVM_}QFEfamA`&RD*8Ee#M6y%TNFLbbY=QJ%-`3^CEm@ztp^(s1HA7WN8bZ_CGoH_)?OL#>{h|2y&WjY z6vV&OCH;@1LMuz&wV`7YRt27Xd>0G9Z% z<&1%W+sG;E#_I-`t?nT!rDqfZ0?^}(Kgy7Wsr@?l$gd}FdAr9ul8Oj~HO@->YgX~; z!F^9m1?nZYlgN+{A84Gis9?&X3L!OM#v%jZG!O)A+nPRkWz_Z|3fz0foQNnoJPkQC zV7&H@1>IJYx(Tw0otqTPg<5Y4k>7ZC2(Ta!%7XQuA!}H%{=F5aW+xA2S6uc)Swhe* zc_cr1q*0*Iw>uk3PDx=(Iqyk0E||KupzVJuCqGv?xt4*L=>k#ntT~UK$e0D=KuRNc z7hxCjiuVrBp`v0#U^6c`$N)NKKe-z6u(^=lwxQ+{%)~6j8zN5yAicOcNJ!Wh38k@` z?)~rk-E@$!75m>?`Q6OIEpImo`jyi;B{anT5ei3mB@tsIz2?>B%da0y z5*+0!6jm7DoiKzXhwKdUV@T;}W||Htst!5#BmtE13Lyv&a`(m{L^eJfW3;ed)X}L- z(i06YhOSC9z4Xi~%B!-lymB|V%jcRjsK9`+A5?tmQ-_?hQbqNUhzF@pY5OQ-KDCFp zqUP`!iYD1j8>-uG>~*Y_R0d6ZBHUbDJFq#QCRUpTe$D5ZXJmYxbiq)0DX6%!T5j zwI~32p6T8I>8OOi(n29#W_%{Gupxfk4Pz&O%1NkW>Eq64{xVV$zU8sjvRG@O5Z55< zD@!TbwUiw_##gs(sP5e>#4;-ix%U)rb^dGZQUq>4VdDdT3G;*NQPJY0|&lRoRz8Kto%QV zGsUtD_*vlvB4O-swkHyc2s40D0SYTuTbVL&_-pHpWC;%KX^r~KCI-f^BBB*G;l-#@ zlYo3QNt<9x%XWetTYqVG{iQ1q1_o{V!FJ>3Rq^(!>Ip2429rWFPfrQBL+%d9H}Z_< z21%Z{Cb#YQc=Lkzu)#fNJgWS|*;ks#8{(fu1C^&SRSDXL$d~|5P7^+)`5I+N7^l4o zW0SxF+%yc-+&Sf7LuyFM^mV>TTNSmVHF+83~6knc|8NRp^TxYRDY`3(8Av(s-~J zBv8`2HBzmJ%r)=SkjKZ8hG_irV4Idud8xZUD+NKS*bposq*44xr3v+^1^sP1>dvXI zTY}ossJ-QRi!&3fWPX*bl^ogNro`Q$g@CXC{)EOPTB3;nTBMo~wm>#d~ReInYm5M{8-xScfV~ z@s~H3{Bu^aY1RaEg+xw{Yp5H9)LGe#@e<2cQsSwax4|3h30GN70FVYBr;gE+iZKea zKW$|2s?M0xR4JWG3QX}tfH{ zF?d51!-T$CVzpp>?>@{TYnz^^efP+bBk7}XvLrVhDr1G! zow6w7&K))EoEy*0$T*W6?%ed-5LP`3TtOc^Bw);_?^|5k3S|vi3zz6 ztH~@`vgGZ~v4fqDnhGW>f67**EowHzDupBuZ~61^mcOY-v6;HNbMem3TdJyFcC(}d&~bc_%Q7qDuesEy>iTy@dI&={5S)J>0`c-=*Vk9+ZJ_TQ&&`u2-I zx$aL-{pg~HZ#tPTKXubzm)?~3;^ylXKRx1NeIex?AC36i(woAM1b>OhD#n3YNrZEo zkSUFgUAfn5(6kX1eNadJwL+-buEK;ZFhsx~Uu1-#GkG#RCVgd7*G=0(F<+6fui+WC zeXsnmu58LnWm66aVJ_P-WnXpo9zAMY|EE3o;m9;bd-dTbz%@#=A=>`YqCrm!b@=eb z>y-j~Tr=T_rfoBI2^&TZe50YjWNq{YANqxu1$@m$r<+cWYSd`kQwlAGX?|s-qt}5B z942vmjoH%(*fc%MFe>p7^(g~!;%wHb>`xQGJmph%Xs}RmRmig=kNO8~l1r3KNA%Jp zLdIJ!=(Ba})=x~AP=g{jkV_`ebo?2%8zVO%VA+ivNgJ!g0&%o zPEpXFbwA6jk$Nhp^FMxa-MJyF5cP?FKyhiI&{P*WN`*o=hG6~7pdn`(SCndz`QZ@& zi1ES&B?FIuJsZtJRR%e2KvO&kjKU|6k+QeBF$fB*i294=YG zY)LYtl7?TDG+dFAEX|9KKqm`U1l&BQ;cvq~uUdJa$_mVfB=}L7Bt@M}o;f-ao*NG&OG?4B3GKxsNbt7raGXTgldth6lok~Gw2EtV^&{Hevj?Wj$k zq@3UH#uYu>@IQs91VXRK#=Y*rMjjyM$jbfPs z!sK;M+wzy=iI&QQFJ~eQSjneNrc6D}DbnJ((Hn`oE8sAwNQEH`H61yIb-kb{0ib0Z z(u_bUC?{>6=2Veybq3{5UxqO9RpxC$O~F!JPhQfj*Ku}%K&Lh1Va7e3{)0?G(pl?3 zt~Tl_6iN_9RaUj8AOe2ayU*nE%EEy={`L5dM`gCBqUC=orpVavEpD_Yc_2E}k=(B3 zP}SMOmX8)4x-;jfT#*$^grv>ZjUI^%>4 ze<5X1Rw(0`9ID1Jvdl!8&Xa9udD7<1A8L~)Q5R9YnG&jTGV6#=U*=78z$hZB>Kq^n z3a1HTVN?t7Q(ctB3bYu{>Hp4q<=ft?V?*pHsd4@_ZdH9t?mlVFaOxsfsYCS~UOlt` z%`b8{FEmpUG6X}x$rL9@0t~P68JCl|IF=S4!kUEVlBztxPUDrr*o!$>i5X2hja@Am zC<_cE7X{r&+qM!eU{xeCCH+-LA{GSL-(lp*QH z(TB31daf>LicG*o}21f#4l0`Lq@#fCFXq@^a9d6r5RrV zWgS_&@Hi4cp@x*X1507Ipu8Ay)!{&yX$6AFWT2@5_(33xFPhH?))Q@_zF|Xv#uVif zM}aQK6dg}sQe^*%)~Jr+7#eW&?HWWKFr90T#b7XMFP+`%A(6*FE@Dd>yQs*(?r1?>=2T9tP z8VMmlnq;#w$L)mog$mo1`zwVfN?BmqlosX>8~x#k^MC>7Mf~{l(rZS~0Z&`}LwW74 z#ZThN{9$>I11szkc>_M1uJSDm52z(SMUC(z3yKsn=1H3?=RAZ3K*-;9;4&ps@>9nG zwn&>+Tq5!EmY2RBYb=OO|MTwrhFkI*K3T9}!CF~WP~g^mCHi4xZJ*q;$gXEgA395|C<+Q`h7ksIASxink+q zTdS)V8LPIXp_FP~5HX?;1s73PlGvXbEqsg*OR7QE;~WtXE>YdkEjSBWn+%oSO`^}x z{~6|-LgI8FcYZweHIH^i%tHJ+5aM@0;m@vWyVV+umZ-3>2=fOR(*@|tu)3N1l3_b3 zT)07AEJG4f^gp*;oT#ZyoIY%Ab;Iq|4U7Br>o-dW>wWYYKJ;=d4|Fpb$+7HVH2os0 zu1i+kcCHcl=kT`G!(9%d&=jJYR1=)a^je8)l8*|&@ipx>XoS(`XrwUYnh=3v%vaT6 z2^hzWz1ev<6U}(31|ASR#QG&Z8+C?RD`Q93!`U|*Dx?64$uC)-$W>^%3ZN%Phh?Ql zWQJY_%IzA0QQweC3Mx9RNRJ&mwtEZ}otG+4;7Ypb)o%QQ^O&?xLv0 z-&^~Tlt%uNl4*J``=#e*9XfX##*gCd65CTCDyK^dM6KumQ7iZ4p&WXi)=|uym$ItR z_Ja;w_;TRMrh;HHL`H{H_3#B(62iQZ9dZlGy(tovo7SZpqA%-&9l{Q;!!fxZ2+};1 znwfpsR5BHQA__40<8lo?kRF_K179OhKhlMDJ|VZ3r8tCVdmb?Bgk?R6xTy6etvE~Q z;iZ`X6-{dN)u2M4c93!z@NK{J5BcZAPp+PM9hQ90nS`Z)vdr;+K_)It%@H1z0U|ZL z@RLpd`Q5YDg5TyQUrZYhe&ln$tk1a$E57f=QD45eqjkZ`FBV7xM>SyyklnLIgf0Bj_swOpj zSx&6$w`B1!puvP%10DkKCM6bnWWoxyc?W{-$Sv1&%|4k~T=E0{v9-8}S03+;)j;SB z$u;o@$^hq`l!2c^zTRca2|$CU$E%x8V-aIe)7yjgzdh*eohhpiV=1FCah*+KijjPI zUuitCH2(R>l@BA!`zeaGkcOsQv|*n#rxx(d?}W&z(VB<+u)}_r_W>4MDk#oj1@0s$ zSYVqVMxdq^oc=nrI^x!bV5uCE;YdZDaIU;DeWfsc^iC5VQoqE$B_yTrN(~08;mCzV zLcGyBKWj>8q;~h+cVE-&%;qyjALRXJx zW?^C~g>4&V2G}eBy7xqBfyM$2>fS1}mZBd4Z$FnKuggrI#i5y&%0yQ|2r<+lZA;X3 zQ5Qe0UDS_8T*S62!za6_zgaBr$a|4}*0gO^RvK(qHmo|B+5=m+t_`b2R7d24+yK{T zgk~)b0tA}~V{%g^LH}H?HdXEd5tyAIfb6hD!V+X-DYveJZrJ(8McBM{@NCpcGg$P*c<2?j=y^=>VFbeozF5=$CvGuNV&qh&M+LfF zMQl^QqBASNG1T)6O>pk!!Ug}#cV_~*@N-HLeq+A*^q8i#nFF^u8< zcPwi2la$#oJ1<7x~iwH$X!tCyQXW#YuHz19Ec&x;p2KA^UJe&e<&vKhyC62kDZ8m zxvU>9Y2R8>_ou9uKb4$zFgi@#kb7D*NiA*Aa`OO`7n1MBFI7H|bQE54p%Ebw?yUqrS$K->xVS z#3m8FZL(>c=`eT@X_eBqv~^>GV@mxk68TiIE;!nV=u&6LXA)eRBO~81b%=6`&2dyMyk|*uI4a@|%C3@2bo?1WHMZ z@>~pb&zvwthd~x*w39~3hK#sR(mo>oY#q|^AJwedn5l5G(2G;A^qlCrp759_!DOpeGeW`x zBN4-}gjMiD29>M0uUJvp&$ z>aZ;CDXXWE{|oam%J--cwHL-Yw^T6;+fY**;EHcZ_YCdR~$jA`34 ztNj}IAQcJ zX+Y4tU&rp^Pe*n)OGR&+r&tZjPdKa=kg0evgh1h94_5J}3F%^ZN*3ds+IC}7a?+sa zz?3wK-um1+xTaHbS#DW6+w|#MDf+87`gRnCH@4uDeJw7EMs>ASe@# z$ON08-be}bTJ-QdI?5v~URaFr%q|$=0Su~ln89!Sg`kqX|^5p3kufG!5yMIShh^takbD`0=PCR4#Krn zzPw3?q#(pUqM=94ss3Erc+<($vq?lb-y7;Vm;mN@Fuo=1+Zl8ag;4cUL^K)+IjBJ! zO9MP6;qFb;3Q4_Hrtp1O2a9J)_XB)h;yCt>Yl?nqS@B#%()t3)AJaC;SuJDf#qix9O$U>@BXzZ+}0t{S21OheRv1 z);=Xb$`wadZ#_Nq-0(4#Y80%plP3WPFwi?!*MSB7w}X?@_nq>?(QSnRnu@xj+=2H* znWnKB9sja;k4QK&cB{$JFS z*G>sN`H}pl6BZtP=t2j8fhW5PpS^dX=bmmkB;pNv*5)4@6$YR11{}(s!wpA4ZGG8z zvnrHs5A|8+moMTIQEbZKDn+Q9XXealn)OR=wuC)kTn!Vyqw!f3*N5VyR)aPv58fwc zVpBc&DxV9Ouc9isYXbhel6#MO?1e2!3riQF2YS4{VEdZt_U+Z@#HJTan%+5o{P-Tp zl*aC?l&a#hx-F9~t;ok9*k|9Ym~?`{wCH_N1r|=JDSB8KqD?4Hr^E=$G8zpeW@A}e z96m}7k!v$_g@*pC`nNzFSfKF{6zSND!s^*#Lw!>T(w(B&4V+CzxldNv7`LVAL3x;wFNjD*&7UPz zjjSQUMm#TV990a~Qm!2ulTM^sAS_F?2<@TK%=}miOWLea9^0XD6THKvL2mcQtJoEV z{Aq(m2Jl-0xM|$gcy6$h7T#{c4S$DH7w2C3vGS>*R0hXX!)#Mup#L$&fB!d2cX80G z>6OgZS2|8!%(^mC_K#O%kKBDL8g=plT5aqe$JWH!z=;~1UJ$*@Mg*0c#ZvW87c{LK zn%l58VZ1m%G|w$%zz=MRMHjaYsza!>IBfk>#?Dlmg9m45$sK057KJ=PQs zIY}aHvs+VOW?G7oPu43ID8o@H;AZ6pqmqjTSon%-Hd-Aw&BLoeeMgT4O|++|WEo9w zIJQL8%zunn+_XC6=F%SqpW`!F?Ta3%2<%IyPN7YF@Tf+aoH73JA|4L^udKa2KtKi$G0JMD74H^wJ1| z;|hBMR;XVK5n%9DgkP9NmzUY9|6F`aTU}Q2KWY!2UVCuoh7B8bvuS>?zn{eI5oJ(S zrkfz0g`(a4iqAs=h31!rLSM}ES%G6x)Tjfkh_WM3EIxH`Y|R~nV7j0gqFDYbart@<$eBdK;nk-dluURalvlz6EUCpneZw3S%#<3A@vWt!RvE}S|Il=)<<#|*t zDFUVt5E!bMpu{L7ZU88@VG+W*8+tvszIU&T*@H)8=l_VZxGA*uM4_75Lu^HUwi&ZRc(1_F=fobIRN*{n4*cU0{ahBo{4uyWiAKK`SqU6vnJY;S$WH@IX}% zDu4$jqmzf|b#mP2TxpzIjN#Xb3QWOR5Ef##>0?NA5Ra_qYcN7{7SR#+jMZ1Vp);&o zP8k3LN}LaEVBcr{&6MN-2NUR#ARH>1d{ysb&cN^w9z)8C4#w1;oDW+TdwFtx#&gzDeqVlF$``M{CJ#^xupnxE_(=k6ed zo!U~it;qA|WF|fywSUd1{Y!HiC*(Ait;9OV2gVH8{Y?otk@QyUJB&{O&gs;!|5afB z0OyXPhn5uOB84$WM8cAdxJXc|A+ll`7oEt5#$m%990X!F4EI~SV<```fMMOXkvtee z&sDHHH`}c)K?~>)JoE$#!1O@l67-?fGic5>VH`Y~B{)?E90Iy{5--g_Ri9gO_c~Sr z=eipZY+&>3)5G>&Yp%eA8R#X4fYB?JT7O2Dt480GgU%up-?FJ>BZmhDHE}zn>huRp zD<1b$%m= z_WuQjB$~$=G|VcQSJ-fhIi^MW5`NrQP8g6yRXhxZtDjc<)sTK^rrL>U-iQox zh}r<7x;-hnTST)fA=0iGL+EnM{hXB$HNATS!4?*F>6saTFF(46-I9wvgeB(!tf(&d z%d*_T*r=?x!WDkLUd^rFj~&pYql?@YuR3+B?IHf8r72J943`qb2eO)uNnm#28Kiaw zSrqrfY&?y6s5uK?OnpoS1pLsbArU2=<8-WU+PaHZ3Q%#(*~3Kq@EeY?lYHBqZf&p7 z>qzE>;YLWt>v32Fn41vllt_B4&QpfLki>bgA5=p@9(BPS+cD?O0NqegUv8DW4*$F+iaqrZP`R!Odzh)X2Ts=18Vg-H!w+6aY6B5QX7ZR?aUIU<(UkLxi z$0W?Net-z0HYnuH6o6eNJGBN4E!mX{{Mat+mOh@S#@&lGH8Pz%gl_5Ei+WUG!5;E( z2&A_-0|S=<%Xg^}y&$6U%Eji+-@%{J(USYCorfSSc6fRTJ9}fcQp5k+6Qo|1bX+pjETZ?~)nea(_ z3yR0oys_`)T5^MyMz@q}%2hrQ&3<1u)SXy)d*dg$O%LZ@Yg$;Lg3=fH11SM0=!G^) z@v%Ws_cc;N6%9%Vk^rbr12SQ{mmDePv?G^JNTwr*NFBNfYkT)*oZ9KvEICCqQ)G+% zfJI%v8MAtXP`DPu6|a?^M_Wx(4D}F+MHS+72yM7YA$>s1IfFr~?S4SSJ;Ue}37boB z@kq4pSg`lPUa!cn_Z+{qs%rQ2;(twVB4ukVUW>urkvQoooG@LO<%3jxgOYDKI;NeB zovp^Oq!totkBVBKu=B{gW`#$SpGr?(bRxZDRfQy)AyqJ=(I!#Hfk|L(7~B;Mbf)Om z@M^U^5~>J@SdNHFtJc?X<_02#7RPW&h7eHvP9N%R41}T_Wi{T!gzV-13WlI1b%Te9 zN~`RdMn?4#s4krwI}I3kJjxbk26$KQdwsDa%GSvyOePrj8xhLF3$J+%fdcBmj+=$3s(OzuK-$)vj*fb)7g>G{Xm!c9O zZH29O-COVgKs}DJ!f3FpB=o~WiVNfk0(?s4bZSf1r0N*~JmN3swdTe-TqUP%VY5ok zn}0O$3i?aH@_JIA!YODOIQ5XJZ^ol1W`IUykWL8N;_5Qy50fEllf9yvP>Nbo2F81_ zB*AHWO0f%E z@%kp)Z}V`g%MngNonKUdDfZe_r=<&N(MmSx{72nP8c(Z>whNDx*W0>=*XkYyDzEQ2*frpEH*g>#;R`o9DcRmG6@yg(-&ucp9 zgdX2fCkmr>lSP38{#nvF@k?v`W{B30SW4T;cq?4QPu|)IT(q4+mw`W~%oC`3JG|^N zC~aGr&!x46;Ira=$<+N`qacuM0KZX`?vN==W(D}KC z%HvR9r^kWF4C0IX0KjOx=31l&aV| zG^<*OgGR{~bEOYSRFobSB=5Ps|CArHj^HmSsVI6+{6X{Jfe?R1-JbCqGGlDPCJbJu z_K_eyRj(BrZu13n!BM^tl!0AE1L%1+*I-ArYb(+Nq|BJ}pQV)p>Shf8 z?0Y+QeQ(s1JMWwp9RvGLIB}A!H3fZH1Rt;OAD>%ZK2UmEvaSv)cHEA7JgQm)t$Qt- zwxT$!&SL}=)(x4smWePWEmh0c$(V=~#X&+;Sw?x#rD$4uie@q9QB`XdVu~>6aG{V~ z)ixX(o`FokdU%eFNjG6ik@}erviQpky(yk+alq9YY{?WUjI7J^eA(1MrMZL(1CRVP zn|*Rg zY3m!MyLB3jYVFWSH`%^2DyzBxtOLc;DxpjKQbFJ9Rb012sm6LNaN4*w8Zq0v5CwN_ z!Yz0VAN9Rraanm95F4Weg;a4rh#4EjH&>&Ph|O0dDW{&*D|O+G@R|UH@z8&ddt?ei zxIW}7EUeZ)uNW(iWovUfH9+0TrU(Jfisp2dPYc}NR`vrGV#>O`ymmg!%Z)4UFSwF(Y1nv~AVoNUI2*~s6u*CWVbOX((`7xrtb zYS4*fj{>&*YU&oZjcz55Mh4RnQQF`aO-?8&aT+;d3^h%(W>5#kG3w3Oz5{*a*u~hd zpjZ|NN{@%6&F~z5-Hzy3i{h_@_2B+^5x{n|K~a4>gRL7=eKtQHz;X(%FJ0GZ2zJYZ zlj8LDYqT|In2y~x0Y7K#9gV(GPZpyI%E$HWB{>+5;);L1dd8WV2^`w;Y;_BkB z^os+aBE@6;y$mkPCB66Drvur6ZA%p^c$>j1C={fEtTgArafveU%HQj8eoRQ!f0zOi zfC-M4>-tZ-N~#cFlbmv8W57(H_2exMLZW)RKrg@(n+=c=PW~nA%KGn>YA=qOIhQl_d(x+9JR5k}@pgR$qGz@#H z)x5s@^c{PPcI;i6++UH{Kj!qz%mTY4BbgfxASU9?*jE3~B~w1xwD8DIR$cxqv+*fO zlLOhW)Pe17h)IYC`G8M;W&*x6W1>|Pb~DwTn4~Ic)_7}?2n!!o{N&t1g^denP@%YS z20HeFLWDKxVN>aUEl7@?gXvA4kZzh=8sXJ%SfCN7(8)0;16KjqLqyM3JNZIv3u-=ep6nUr$+(X3@H)&Q;;FGBtO$LTpl@l{G{62 z=7qJ`1p}kCSII27;)kS15&QRnLUrMv`&`P#M$4fD)71P;vC)Mf|7Xw{_Aq2Qm6*Cq zJ$+z@08y^T1`HUiu-P~j$j4g4u}YZrs|DDjuBlPB#}krly@t*J?!YWYm=k{D0I8Az)4i$uLW8N$%2e zFE;Z!Z>8)Y^^Hd!(AK2opXLT3?vOyGO5b~islixrD2Qo(if@Qmzh*5aI+IKBmX^Q) z7)+@R#Ti!JBq%UU8213EfJ5mi*DyUL*E5pW$%DEWW*p8paoBXlq=Tic5`2mvL#`A% z8K{RzCDwDT(1E44Zf~Yz%*q8Y)Z)$iemH#cKX0D2ysU6}=W2`z#U>otzjdU8m#iqf zG(9@2>CxI2mfbs77uJ?bl~#<b%J23MJQA>;7CogMq?U5vZ&Hu1Fij65JdWs(ukR3 zs|+R;9Kjw9PaYl~d&Cqr zTjI0A70t;vbYmtxmnOUIt?ab%6Xs*8ESen3Q*kr@TsWsyhQSbHcvAkbiLo#kjy4E^ z)btEr4*$gp8Pf<4kX%VPL{5gzDd}c(=pLaJV?0N};;ocet+EEYAKW$B1vb70qf(sz z02xet&)|k^0*nwK`Xh4hsfI`Bu78lZj#B&jeky^-7h)0xUYRqz=*ycYOROx$++w2t zn2Lqvwy56{e>^H|ttoQ@*vnRyl?}BGYz<=Srh%MIaZ9P8XxGX;%&8p76mJhI$rew- z{0VxYpnEzZO~R<0g23YA8>bG;_EENu3V#j+jl!M&Wfp99VMllgrWR4!@(9uLbz;+? zFBnY$G>I0u!yxudWFe@6!=+4zWF>F*qwK~DIrmIm?p$dK-YBcv$XrkyD%f^+=h}u* zwGHXY3%5torg=p&HU0SRrVr5)jsIBIPd;b|ZDFSb4CNj8d-6;WKoh%&CR`Nd{qxPP z(!-?5}bhYhx`i_nIH;#!DDMIHl1@G?2YkXQWnR%J*s=sA^{nuM_}KzX6A~z zv*UHw=N!0ecE{)Y~8E<(PAclq|r#|6jOKT9SS=|8EV}o zfGL&>3%5|N_HOBgd?P)Rt{%`lH**G7K$)Il_6&IDh=W=rC@M%f?AY04fG*T90SlDAnM7l<2-qa&X=6<%T zV?Pja_p3r;Pl=b_u>ic0nWPPlT#ww7B%Hg4L;R{=a3)p}a!tmAa3h5;xp&Cl7&(Dw znOO$3umroZ-i<>+yT|6wn>@dB@{5wh7ZpzCjXw#_(`(N)hj*NnUw2k+`-bYa4TP1B zHGT?LT)CsH)ynAw$`~mO@d>Xp5wvA03gf1bEKvaw3eX`OLIFj{Fc?HY+vELqvxi|E% zb;_c$%n?qQD`*aMJMPWx1=SmtuiUqMDU4K@9C+?S@m@BuHdqmg`y;6G1N0;c&t=U>EVHHA0G~DNv;m zbzLbvhvutwUldAEb^&t8A`4EzVry2o3`-#a6RCsc%jA+3JE|)HXcou;lQtlEa&rZB|_Nge#`|yMh=U>!Xdy90KLQ zVLzR;b-z!EV-%|$2o`#X7fcGOIE48)k0iWh8TrLDwV*JUS{Z623NkpY)W<^zB`?1x zkxqV#0#!6t8wXfHkjR`cgoibGi9Xm^+wPttY#Z7JZ2?)re=u{r4U~`#u3jh>AOZ-j zyizMHxE_n+W>gj6gSa1I?z`?9Uid9JPG%=|a%jlkxNue5A~RkuVv+1|~xx zX$M1tn8Xqr!nJ~ljLk-IT8U&T5&j_7Xubq|?HKS_U$L{9H!3CG zVysOGfUc+O6(0UGnYs%ec9DGNl&s#hvBqrY^nPshzims*!wUXGGr7I!Z^guu0?%L&Cx{AJ@HZ)u^5tNVJk^+5;&J?i< z%Ay*7=|;e{m5AqBc+Sv*DS86`*!(VLRdJ5YLGDyjR*WN--o4tTv+a>|wycn2@D*1S zw>6E#3a;c8x}&F2ngw5n)E%@&%}BT~=p~o}9okQt(yz2N45k2ZsBK0$Bmi1p{J80#}!fos> z&TyXiAgEwfK^}`E`J{-|0|>8>R*CJMvCl$s-XWDCUU1fWHbc7R<41iFE?!bD~L6r1iDX zlP!#zKt^wpEY>7VC~Ml(%_>6ru1KJ{Z-HjJz`>jcWS1T(nc+L6O|&cL8LXv8pb@r~ zHN?!zb<%Co!~#7*!c%~)R4)Loe=Mw7Hoa^rcBVbZ9je>cfBNaC-?zaz-YpWGN7vR5 zs;&RI%p`m`e9~KInjHWl697h}bYIJZ0_NY*@`W|ocxnnb@P#0*DlU*4Nhbo(ll+!T zqOIR_NYF^EY|iX_OG6WsW<_t!-c*$BQ)~KgH9$T`f@CTP11HU;y%8Mz95cmU_R0p# z7eEsT(ojjFoKYMChryWoWhAC)=A{L<2YSCcV(}j~j9!anwz+LhNOnsSryfQ8x9IL0 z+%3BKV{XJhgu6M)(6$$tr163V4r7$~+t8uTpsMk**ASo9`1OM;{z}||FyQ)POCGL3 zg4Nyydvpr|JH={@-6#NdCrgtc=CBfES|8#88ql@+32y^7;XkHhU8~y0AX^*EbPUyd zd=(;yR1S8YU1ca??$~+Sj-4--9Qnth_KlH*x8V7( zzg_*MCcKMcEsL_4@Y)^r41d@A6cj&-<*OLeV!j>!WWW}awNRlH2-z37$(4GhBfrMl zyl0^L!60MSNZzn@+jZq$Ccr(u!B!$_uXgpHc~fL_ zua=K<+kYcnWSxg0;uTpsR>gT^zpz zQCXL1}YDk86cq%OF#h>%tuErd8DzP*zA8e!za(Jc`fwOII?O;O>#3$(A%;_z*D{ zP*&li<|G(Awpu}x5*r0!0`|Fr9qST_#I)SK6G!bWkL?5eEO)aXx4UJO$sg${oh*vp z0NAJK8DL?>5F;XxR6GQ85cVYzcSR7^N<3bRK$Z8QmH#ShjhF-wWl`>eNS4U^C)V`2 zS`osh4m2B5oA-UJFsfS7!vTOTAd*l33?J?W+XvW@tzQgNr+HJ_vMm+HCdby73=wPB zv1L?{X}iz^nusVr@DiB#cC>U3yWx-;BWI%k#23_9WrKzcIA}8{&X7@9AKBPJ+K~*a zpKc^r)0!wJ*VK)*?Z%7j%@QRXAe)dXELX*-Afh;LLb5gg^aN9(UdmgtxsDUQMt4iG zKyxA^Pd3w1DAenMNixc6j){n1TqF`9L{S}}N!6no!fDd6Ob(>gJuj_U9paPt#^DjR z7;~6=fQ-T5Q0LR8qa~acN)7jsr;N-v$>^_0wla$kPRqJ2ujrk{Wjk6b-4K2cH-sOX zuO~RMTzY}2yg`uCrBT*}F9Qh>a|h&rZn0}BlWR^7hV!9VAVZ7D8YKk`8ITFWhNeJm zpsFNsAS!~gnC6w0r@D&4k0%KHm~fj$n9kfi&VLGREc##8|?-)K;B4;IJ;# z0vUa=rAb98(R78oAZnM zxm-8e2RK3M)jO7K-Cv&Em7UNHd)-dT_WU>t@rI-rQ=qIBOZfY!6EFoxSCkR@!wh}~ z5kPh5U>((nt0J2mMxWVsyp1ueK50K(hL8bPoUD>cq#3Ldcd&KJv>Mau9zp`DKj{9V z_EC*s{iIIh8^Gl>Aixq4f|K^W>(Ff`iNLL6b{xThDHd{N+>R|1rR%>F-B3BglF4TW z6}3!S-0)4FfRSrYyGYi%y$_S;D|)TO2+EV3PX&gEbWOPp-en|*Kg*SFCId&ruybQ7 zBI64r&dHzhD-8GX0yN15SFspE#PGwYh}8@#OsNDjzy?Bg_1!Q)pqS~?Tdi!uR#{tE z+ZTjJR)$xt__lO83H;2kIKnAjA^DxQ1x#$fs(yBBOkiM8(NqDpZat%uW27XoLOcy2 z5=I(H4FJ0M%UHBNgY|mddshyH$LXf=hV3pmPxZn10qn9|Ik}d{mSpbOzWv3`k1?Um z;3Sa_Kci!U%7LcBSr&}~gb{kf<$GK*mh3@ZU`upCSg?J?FxSS{B5MLzOyFd9pa}EO zRMutfLBzgYVjy(}Z5(90h7Ax_eB2i+0m}~Ez<)nEVduev2RConu%UA&>^C`X?AQU{ z_$5!Y&N%z*vorVP$X=opzP6Fj4ThhfB&4}A)x^Z`6yO#{5`)AUeJMt9W_of^A4fFk zqSz$YsEYY0gdw|S+Ozyz{w&Efnmj!1??I#vXhf}Abqvne&Mej)uX%(>tvzNtG3Euk zPiyj&6}pW*5B@T8^a0sbsQ@=@tAbEr3qhHLv91N=q$?zr(81|zqPoCO5YL%k_^Ocr zAJl}M8_>kX%rdex@sJMsV$^UnRXxWQ8Fn$2xT?w+`03cojZ3f z>v7IG+o#-n@4Xi%hn+QZ&9r0q4^FtwTCr?d^B*67{PE8D(A}gv@7%p=!GZ;%ImunJ zIpxVDuKsy!%qrV{aT^uMLNwf{)|j}_O~7w?aHQ%B^F@qUst8Oj+BZo%FKw!aVgROG zkeFn^x3=t=hn)~jC_k#k-q!uBvHEm)@xkW$y?IeHoRG3O$3UyT(exp`FDqTwaQ<9Z;${tn1HE z*hLEOfLY6%$RALXN>L-5ryy=-cV_2nQf#58q1HmbgGZ82GDg4|uq`R}>IG~}JvcMo zG&6prI@w;Gw43WR$=3>L>2l$DNX9h?6M9(RUE=B+bx6Ngkv}3RlGIfWiPM zt*<5)BXuUY8t<}!&$yi-6{AK)ru*jvE@*c`F#SvcOmW7LA0up0iS)M} z6DkJAdE8)fxcFE=K?E-!WT8)4|5^Wj}8d4%*jnf=}PE?Ag;qK zf@-5fPAxWi6r~1X%+OsncQ`$^s_mbpZ6`}TWos+@XeS@Ih1c<{s4*48paj zRg`RKUB9=!bIBDGzg#-JWKjEve$`X!3p;5!oq-HV2}(3{57v~lK54WgSuyDeG976L zh}xt;DX55@-KCnt@)wW~)qEab0P#}~L5<9yt0|EoW?J4(!Y)TdbXk>13_{Q?H9NXR z>%tWe^}raz-R3~FJcUDzKLz! ziij!9kw8nzi?Jn{AaIDwzrl))xFsHFzUxNv@xB@8BuU<6a8(z_QsI7en)6b9qoS*T z?FLi}7juzEy!GYfH7(Bxp58j}y{Us@2mf~SqEW4XSulP|>83@)<9(&a3gU|pf#DYD z1>k6BF+tjGMaHBZye|hWzUyE@hOthV^gND-*#k!Ko@ zysv6pE#@TJD|H`6;}9T>T9*(yqRF$e6X?n6#L^WtO>r%^J58_}kzZw)599+Hi^Nkc zIEbVAccn?`6iinYcV_5y1tWo5yP-p{lbhXjM$ai0=upwryBnx)*o>@N|+h$pJ<@RC?Bwk6zfaWlK{HH;RsBxe>A+ zZfY;*Bc0kC-u}_>pXLpLd*RZUhC}uMAB1`!4=xe`5rbW_ow!M-@v1FNNfRAu5S$8x zrKA4DFa-HNT-ZBLcyYALP&< zyVu2j(C>oClF?Dvhp; zk9KW_1Q}adG|R3~(9%up{NYwSOv2Zi;itr1d>fNU%|hUuvSks2rJUPsqNY_X0e63G zZFLLTLT-Cuys@yho@dLHOn{TNpMGomqPrF!=+V73`WP2IGEEXWp#81r@0aI+~cTN;;;59rkQY#D9pxD}ikKEvGrZAcwn9aV~| zZ{8C_SNFjoRh#2Jd5^4fDA`j~-B=X=vaXFK`>JoThO7Di2pQer7I$9=s(4T3GE>?TrC zC^gyS{sRZLw=huTw)e*#X!#Rr%Nr9LFMDG7Z4J5qz4W!hx?O9km+gL{|H?7>`L+4i zU9@&D(#FXbD6imRP8>r(gNq$6%YyW%A*qC`z>n8egG`_;=ps;{;ELqf?B(Z+^H3`0 z-3YEoc(O{HpDCT(7M%?#dDzW{Wa=WI^5x50KfzWBAC2Iyn|`&VR{0T^U?cd;GIf>W zEt1*CE+$2@K`-Qx3VmjExa@vU5W?11_SHbxvX1TjYxZ zZ^|KLMo@!LP@*(k1Vuu0BhBIv`5=@|OfwBF>q$KJSWg8zql@K8Hr9#Qk?tCHnX=O! zGepZexvPi{B;%->#FtAXoE7y*Hm!|q5Fg6<@CP?8$A*)w^ARcP3m>^-%fS2gZ^^5_ zfv%&&hVhvkVryz-D^;PJ*n1=YlZ3|t91PlY*@7$r@CR{8i3I*O^Phd;2`f+^xeViK zv6enA$?oox>_2D~xuoT9CC>*HWHZs=ijh#YWpu*U#6?V<87}2^iea>1WTGlO(Q~k5 z(aD4rw6HmOZhS(IglBYNI%4;X0y25I;!zt$k3JqF88qm7@;mz)S`bOg8zzw3*Dk}J z@jLe20fs!L6V5yl-Dv61iulJx$__^6<&(ocfhcUH$jrz{)`63! zr6%&ITj)L0!c$vZ5@&??StCK5F{!h9nRK`$vKd8LuW+Yh>X5tP2!7xf3xk+|+6|`c zNdji0DeOt2yDS?;Hou1>9V&2SP~!8-WqTJEVkuUl@;8eQjC$kVFA8c_)Nic)<|B7B zHr4Ge9p~mib>0x<92kz84g&@XlE$-TCW(m|f(1HYQorli?ZRg?@`L{KEmb_b^jD~J zHeGURoYZ8yizXG}sih4$Yg$*5ynvYh#fL9eFWdL>@|9z{uibv<+9%5UR;;me zyNX#kkFlmmCCK12Ko^GPjw|4>u7P6>^j1UC4_3w|8I-AlP_;wOJ?Z|Bf3pT_+|SPW zOk(~5yIV=g1L11D*kf2N@adA0rqvhr$kubrtySW@gV1SGoJ2#sXi9>K){Ih0MV2k| z&6cDHUttK6ZUC!MT44Ihb4D3eY_tTy5;UY zQk9?lCRFp1RZVNn^7w_lp2#0JuKXX^|M5y>pYTPt^>GXpniaDA&s3d^9^g!=wuaFK z;b4}IiKiH9LvtMUHLM_$1x*LfDcDvQ-PELZXt-20XO*1sTlVM1l`te-9KfKfr5%W} zLyXrF5RKhjRuJP6+MyK^=8$nq_G9_J7?NCTB>F_7PDqx$zX)a4DPnR>6TY3F$bp__ zgI!PJ=FXS&CNF*@FTb8_xunk%yT5;Hd;I+oRjBd4RdL(vzx}iTrjGRchx z+^M|D;^XW{Mb2s+wBWi9s6cpjq=|(}os19wcbI923Zxc}l*;Z1;=@1tFOEV9ntAeM z!o&z1{2GBKpHDK7u?ZA4{trjIu=E;#R4PHqkbz-&kF&wkv_Gr;gRG)=%NuvJR^8T+ z{17GB{3Mt9?;F59F!uA<7<0;i^&JEojXJIvXlkT3Pt|PJA*7ZFZIbI=Rzl}0Q|eu) z$IA*Q4Vw_DfV3f)hyp-0Yr+zud{U!tR9_?JJUDGyCk^{<=JcD9Ik4rryJyLO$%kIZ zYJ7d|Pwh%4dWF&g)tXB$;YajyK6m(LB9l-u{#kV@dB9K0Rhh6ArFs&9jPofYM(!zF z<>22Aho76oR4+}kBG!VAhH}^eQ8cX@TgPHRm1z5lvg+biZ1<2XoWE>2w$kX&24>@_ zZ@;p9$&&g{26U5yDs!HpCk4|bNGg%nNpIHP3J|cKn=-*>h3h~s2>q!TXQ7=Xyf}6x zo8M>56D0!+j}%0fC|A!615dmPM}+n-+FaWHNoo1vOHLJhcfAJ5*&*})i%zhuFKK|O z2!y2|`U+6b1V9<@8eztjD2us1I@IenIk7 z*dFmEmhHP8Cho}0wJ}dsg*HQkE?Bz*3_)E|=Z9jtt(j832iqQgH=4r4vVHaQ{y$f8 z{>AkN0cP43V%J4?yrX@yAWH0lQkWLbVuy`kMASrSiV|E6g$m`ApE6z%tsE_^8zLYl zXvMmGo9jCZ&wCuHi!iJpgW-sIb5;EC_3^`3AP0-@M5faE?96W2#T8ibSU;+4+dc1% z8R`zy(`j`!SYfL=$AYv4!(2RDM(2zW8KlF2p#tAEKtc}QRE77N>ZGh%)_z}505FwH zEo1s2BzzBK!sgiW+La3yJX_ovT@dPrihuDS>1{*rz>K*q)u>2EmteUDNv-? zM1WMjWl_m91c#n999W9+X8|K(o+LNH_?;?C?OlSq4MD0y=24&qOx(;?(W)edcWCU- zVeqkqn=N~WCq5fKs5LXOGjj)4BTeb@>pe9HJGD1#TD@`O#=I)dPs+0VyK^V8dK=i)o$mT4SGt!!n)s$0c_|u z5x~uMFdE7+`D7wFM8_o_w0#-GFtsh=wW;PFoSDA#mXz=v9OTZO>!mX@%m(ZaN1TV| zp@K;Cq@R0`JB*C&!S*l{QRYgpEA!v6X{>EckP6AUoc8+hrqw^V(Hv_V-me|*GL%8S5c&(w<$)dORudAnG{i^E zT_HV^k_VQr+f7N2j+^?)xk>`R!Y=v=1nP75V7gv-@`l%9ba z;ujHRS$3i-QU(Qk4irW#k)UCL9dww3Eq1hqghXo;pw3HV#z0oip<|*_|UK4TEWyJg}znQ-?;^ zh`%kpiCgP)ZLhkc+0u%ag`O9UTlz09ZFB_KXjaaR;PD_Ot;g~pvMt$i5l(!@}OC`rr2_j8rFN@bn`m)rz?gP*c8 z3@IeC`{&WFylmx&#l?H~Z(UO6rXUBNXnU9O52Rtana3}khbD#gYY>rtCYunFJgans zKjCjuQn+uk+?2a}ap^m0e}nPj_cri4i4< zmeSD_c!KhQU)*yX{o`gfa3rJ&mja$K(6RN#zrm|gqn4dUrQ*R>RY$B+tuQZyZlq8N zE`Oyo5_xcu$0{nNV~A$UFhBY3thRTr21iFqIPv4y^LITnzG&B(B~4e9ZNIN-%>l zs#*}Hh=TA0TZVKAp{b3zw!2JFnsDNk=YomR5`B+bT9fV~wCK)_w%i9RCG+v9L7Ak9 zEFv##xTGgiVYY9;epIdVy=L49WB%c%;Jd2~jG)Sf&L>Kp9P|QUy7EjqDXl~ zA-F0zMe3@c-D~1K0mfH#Ickp%nN)Kj0Rb0vi4l2({SPElPjM2>(BmyH#ap`L2IBAj z;Ks6r7=0@oI|1$b;`?M*xCeTVJrg5fsKVpcL2XNJ)FL~sQ5JlnWv>)ehh;cd$PIN( zx1FOfx(g5atnbfSThCM@`y4UN$yPoOMhIJ#mO4~7H*yvX@SB59MwbUMzb>;0m z&m@1~shw;HFtkx5Nb^ohX_Y9DH@FvcL+<(`HE254es|vWtW%vW z5f=+lu{en1^n`N*wiuMb>IPu%HlVTwUHsZIDS0PM97DdYTIJ{3K%dyQ$Drx6C|_)j zZt4>6;lXF}s{p3THvm3@^J?UpmSZ|Bx^9Fe+|33HhSEqaYV&o`5(Q7| zlMv5z0LhW7zY_hmg5+#G6?59!Dw1vc25`D_JZ=1g7q6c;XfLVJ)sNiq%V#dI3J{NR zo3I<)Cr|Q?-{7GmNGV8U-+}~#56P4;1&mFu9li@w75^rZE7cj=di-1!@8>o)Vi)Xd3P z(b_hWYYo2t;x8BAU?l6p#2r~l& zd-xUX=P4|?_MR+|;{tS?KL5xalP>YXjg*W&k-B&zhPg*pW03o)o3yH}G)BbfbSVk1 zg^Nh~Y%1xXnp(Y+2aYfqnDV_rXrKNe%+%C20;XiyrK6i(RS4dgZvYIl0n0iOk8xGz zuTJ7~38$iTx&hn7%kAsmdFP#x^KN?LdVFJZqbv|mlwl{1O+9HM^DzMxze3l@lupSx z!72en@?NE#0y21*{oi*z^F-O^6soz@Q_WRMHCg?pAOwM#Eu(%L`3WWvqY%n8{)mV;>TmFWYW{9DfAHVe8tV*jVXy@$<6}U%b9dsAMb86)Ho; zCHcUJJTARkTsncvH!gePhE3p?T2<2d0(gNvIWypuQ7DlDyLeRaI@Y@dc{M4FZa88` zBwT<~SQXyQ%v6&XTc5L}5|%|I=-$2iK^a9|W2t22d2Y+J6S{r>wn^hG0pcVVHwQzN z;sKSjvL+_rM$Fi|iY6?8!wL~+VYVlCZ{dkJiZ7!@YP+x+UFCy!DUo??qlK*Zqg$a*iBN4msJI3 zMpg1PZuQ`R-ZDs@F-)_EEdyUYiY%^^_L{45tK_a2bB0ULb59mXkdH()!K)ap2R$@hj@yss0256R(VunZyUi zc|tYn8z^^j5vGh|a}EmIoW03~{1|z|AP3i}aMMQCG#y|Iev>?+2>w;54pzx^%tZU% zIEQUb=iCV!ewewkc4g~$HweG)3_DH}d)2JO9C+X^6f{w=)X^Pokhj07Y7gs|Up`qKtn{kinMb7G(6Z zrXqx4U1q9!P*pg7V~t&mT7boxdw??bP5cT*b#NFg^J66v{6y^+qVUv3Q&nUH%G(R>Mwhd*E93+SzeN##&CG7(sc;Hxc`f^Q0L7Ulk+>S*r+<;6AfXj4$r2$> z1iCOuq@kE2g&56NZB1F5Dy()3hYU@eg;0Ywnz%}-Z4N4Cq~++NR8K9ze$NRkRcna< zWb}?H*m!B>My~F9`;tp;Jd-7yD1%p31Tb%zp~DfX%4Vpigu>Ux5Qy z+BtI-dv*Pa1}xc`@*J9cmz*kr)s%h&i3HT~1*Gpm6+mp<6({ivhv^U}t=x*)KSbRI zJKjSY8sJolr01|_iFRRZnx2?CTMURtPw-~xMPvFmd64V_pL7eUdxQu zx?@+4-qG^AF#~oNp-JeB+w>XjLB(Fk(N4X`7h9U4i1$>#Ex-iG%ix-u6!D5k;nq?; zL^L%Sl94p~z!X1gL(@3)?V)6%+v6$rCxhgumEyh9mLvjkWEcstPHh;QjugS@QK~|$ zw7@4NM>m2FYV(TUhHPtg%31@{DfMAZembP0_65o9|Ge}a?wL`J0uAv3mCM342yyh`D;Pi-e~=Xj>xLhlLbQ#3`nRr*IuC zCosu8usm4XuBLEr_6&rvN?b6gubj}v!!Rnk!iW2~x7gsYj-ikM2J7FL(XQru2XrW3Et6+HEKN0zp$4OallWCeYbH zKr|(621J+h@pcX2V#3acCTi+qvEW??56)gN{*5n|IuO3XgYf?&2%pEa4S@|}j-4fm zx`ageJ3gc;2VrF$?EmN~yGsmhnb6J@2$=X9N(%RgR72()#(yBC!s8kBHrEm8aI#aJ47wt0_z z2=mrzYmc^_o#P&ar@K-~H(>CG)6TaAF>FLj!^XBDip3H=@g*pan;kHbx*GW9mrJ)O zIm`bc`JP?~HXPo?7mT+QTJ7hJNjo03s*S`3`fdieZ zPWac#T_Wiu0S0~FyW!%eZ-3@2-}?!j>aE=N8AHAk-E$NB*h zXk@wAGY$n30}Q%wKvp1=lwZ?z(+>vz!Qw%w-$Qcd3Np6592~5B6=0yLQs#DIr+8b{ zTnKwf>-?J`XM!27UnbI#8a9KMW`WLHrQw5vl|qKb*rOE;mk$P%L6KJ&8kg85XFU3P z1CsO7oAZjUsK7D9Pu+xsMg>>#y*@KeOuWE~5bO(c8WQS}jzIrr6`2%-xUD@Z^{hsl z?J7i2fK-T0jxgH3eS7D)2qVdzADMtk=_uLk>lg2GL}Vw1MbOmO5-U~*aGz~Mb(K+j z$5x9&2Eq!sDA@`RJcVR-hR( z=)KS9-0_V+{AC6|Z7N6R2fb2~l@x|$c~r*@5)PUw8Z}U)S>Mxsg&Nl z=*KdLEhVyE53ZNx1vT^Li!4|>BhSZ99oQlhuKNEm_Ac;Qmu2|)JW{C$>je@O?M>{ePcN;g0X#@AKS;>%Q(2o&xbKYD%xA(Bd(q!)#rkqLWqQa4vdz zwFF^M1u}iFA^1gqT)P$FyxIq!lUY7Azk&A8Oe=>7DO=olmIW3Jc3}iT($jT;ZZks@ z>|XOTYEp1wye-_LrS1sn6DH3qGD{I$zGD##a$zX3O5HNMwg;MDieDLUF6enW^ydNv zq;kVJ+M%hNNrbYVFvGOW2vyyO_+Gkqfws|Yn=ncXseb|JQ#=un%HPlX#WNE^6G+MN zA=TIE8x^tcU1vN-Vn^E+Pm~j~-Lz{{Nfk>K1Q0e76 zbSRoX)q^N=bgR2|U2tM0Sjn#ky=}uX-`JnbraZwV-gKDA+=C;t#aSDte zraFW%8k4$&6r(XS8Yv2e5Y4!HQXtQV#>_+;DQ-RTpvRfIv%(NLplR6NiF0r$%4aQ9 zwhROKpf`Yy{7wMzM1*O{HNT_{%HoZb_pMEhU?gv+^`EqLEDJ@++rIq67wZq*QFM6s z)S3~l(u_}t(Dv4|TOHN&w$`ocCsO-Tt>j~e8Q3~jIHl2;!-rd)k8Ls2@CG9Kqo<9bx56QnnYu&sYT2jHPs|HgDcsSdywMNl|#NFTJ^LV%e^$LQKm#arrx4 zroT}p2jPk)LKEHpOq99wP$JS!d<9dS;U`ch0k($Ln;hV}@0CeIQcqMDa2KIZLxG=jK}+ zDZR|jN4?5E0y>Fi$S-yaWOW|TvXM<3*&_(nea3bF%AJo0W%|_WA%z1l6c9Ru>8be&+@;=0#A}-tk0qI2q_Ri+~)4l#lT=1^vzlq3OgS%l`<5&V0Nc`R~)eWrP1{^~|RH^1f6vhSy4%c3Q z*?R4R^=}uff5*3oZYO>A?r~CA#0snu8icSU(`m23q7+QN5#JWZuuz^=SXNOT$!~W^ zET9Xi2WziG#@=ChOXeihD`Y(-F0W&}4n`#v9M%lWRA%3j?k6tKErv!S><_q1Wcf)h zHgI!aoCKx8vo+{xwl83qxy1(cIh@Ah4Saw@&b;F&yrnl}FaJmS9{?4F?!zq>4T0C9 z$OXR6J%B}sXg+jFVb0-h$B5O!3aigW!VN9D{=yKnEWQC)>$eFTb3keM-J^Ruu&u^9&{bKe3Rp7Cwu1kpH1i1BZ<_eGhCsoYz+ z=|@Qql({1UwM>c*!vx90d`Dq9trN8$CCVjkJ#D9$lLrWGpbhana}=uda;DeTs7Z*V zqb&8353V|=q_Y#K5uN*;91hTI6^xG>U(FS!iBgO#JvWDmBjz0~jY99Jsk^FuF+#{3 zp@aC*;#j$WN>ahR5u&e}HEC7(R?pdwj>B_r#g>gu`v#(+sU=Hmuqs6(dEi@}|Fc(x znV{$r%9{VB6elnR8?8L+5fDDm1V~T@bEULkL8?58aFL~+@};8pxoc>W3V})n=Ij|g zFlYYYt9rG5{Le4JT;Pc?s}J6@bt?)Fw!WY#_qW8M5Uci-7}gjfM8w^*u04-4aL5@q z7BQfNSyMU|B<~9Dll38F$D}+>_;{us4j#XLtUeM{mDfX{eR0rTh#E@}%tEQMG|{UN zNezY9Q=k$QC>4_;z;UR^oS4I$=@#m4&Ede(pM3Qg4=sFR|Ayrk)Zd$P5=Alr#*!7j z2Cx!f3Of}NpScemqEZurW_Qa^ioGDzp}!|p>*PtD8hmJFaV&7`I_9hY#_IK?by`|E zbdJWJH@?LfTdvNscG-`6-iN~DcruDcJgQJosPFQ;5Tiv6Oykb&=#qN)IZEM5v$dh8 z;-5u_E-Nf5KmSEM%cn0DJ>?RkzXu+}LTrdHWdmVgFHT!B%a6 zXqAD6<{|qMLX{tc9=L+t*a?rBH>^A;d78{%$h5L2%v_+CIEq`dTFL0+>9gdb)HFpv zLc8g>0&D(YBT1+%@a5I}Ir6c9GXtwCFX^{-#~Wos-g?58+wq`OVGLp>VSsEX1}sj1>1j729ENB*uWY>0Rr%0F*=Fl*g0wSqNMm}nyf#Zb#O^&7>XtwD#V1o^4to{qcf?f zbW+ikpc!&-UyPCain7PA`IhBiLX@zVKJu5GZ84UV1s}A?_=d4<4)VxeNZfAces#EAVg zthH4jVij=-&t$++P{)#MY_GE2w5bcWb;;{rQ9b`m*e*VA#)!28w=F^er+osV&WR3c z$0-;X%u9CDmvl0wq_eVI1%JZ%DEt@Diwehbp+{W-Xl7=hH+zSaTEP!9+h$EmU5S|^ zM9~(Jv0TLRyrPP|e&M*S$evPUvJ@?@)gC)k3hvMe3w=r?n35ruOwi{$`{y4XOLW@s z@U*EFqtJXM7s6_UwM`nhT-6R;kFUzX&Sr;_@mmVTq70Gg@`9yRXJj)}#;#zWMgoRQ z(Sr9+5&?|Qxe|lgPM#m?{dW8y9$Zmb3-FhQkl6uDMuu=gYid||Q&Y@U9V!#{UFEEI zvg7eRx1=daO0g3G^52vwr!NZ01!>isj@@_m70jq=_oK{FXFl}Vg3cNugx`jk+!tvP z{74b_VI7$QB*Wgd$mtS?RC3F%KIxT8c2Wb^?JE#bZVhbli( z5h>{&T4a$SZt#+C>Z6j$AT^gJXpZW-AZz@P$EQj!kiQ8|%%6(n$wdYJe561~jQ#iT zznUM=VN*c@pR^+Xdri0@1^3<@0lC1iSzQfLjB9cU85nPlR6b}&hK*bDW@*5XU5zY3 z(YR-ZTdJ+_k$uC%k4znY;_|OISpFYC2}hFQl3V_i)M%M@UM4d*C>13b2&6>u%4o%* zfndG__L#+r^qS+^q>TG8n%j!kG(q1-6bF78KvC~j`)+ES!}1g4S%9T27y&uul(|Xd zkYtGj10Af!DVp8zlQ%@15&R_jM4f};JkAo~zw9*^^{bdUd;T-CF>Q;uIomjCm=Lv{p|avj8{&T5qdLorcZb&Wf;#Gc}OJ8tk@DC-?t( zD8xK@%;4&qu=b)4q7eiQI02odB2!tMa?IvrcbU+zX7>3CK40WVyAzPGkeStdB>a@? znpH5~*ZXaS4yq5xe|l=op0d-52Iz#`y!s1I=Gi+vB6?r~T{$+qFS#aYkNlPLCD48T zgiFIQf?)@gkv=xpB2F?RZ}hNnK{o|1D0cI81W`msej-Qn%h0%ai!4zHp@-RZAs|4U z1Y4o>`A;pJgj%`bcb4>ZhSx~x5M{%VjNd=Apnek;3Me&^x(IC8Mg2;ikzUb~*uVrk zJDy1-5S>)XjyRKo?+fV2_JrCycrU0C-VV+WlA^Lr22n{oV)<|y1EtVpu=j1eZNa)2 zMw}7t@s4HP5VLm0H7QfY!f29*&c48yA%e9}5n1CSNr@R^MdMC#)WOKy1J`ZHwKvIE zN_=AV&?2O8@=bv@NrAk7#;;d@NYk7=S(+GSC3PBRPRvhvQ$jf+X%CZw00AaN4pz*8 z!-aSVg_|m(2w5P_1^#L4N8Z~SVf43SRM8tXF8i{%u}v;7fquSg=s+*&(rW~Q;&T{2 z81dy2-WOQ8rQHsG=vvHJh ziyPTx3#X0|TBkulAv#Pc%;Mu16XMyhFX#W#~gALuGc#4bkdZ^il{Xxf=d)*ww>zl zG{;C5eTKzCTl2Jy$b00`(IaQI+Sh)_H~QA!;Ft*w`SKxy*_6bQJJ(~OrUeZ8lBQ84 z0dP8PMNbqU+IGeX)s)tT8xB8Hb{YuRqX}54Gzc~x&-maPFgzAeDguXsFbhww%Jv8v zuHboW%Y=)(k(#C>VwQ_M4Xfsvp}?3EQ8ofDXp^Io!7c;OT*;ukR|v|J)`Z4%Majc> zCE{fKdGH;^AL5X0L^+A9U~hE{)<2%c?a@OUT_tOR8qdgeQjz>TR`{IfpMQQ3ky7J_ zS1$e@7ZED57OlXu$$*Q-G4UK-H#ZN(mBBQFDWobm-`_twO1?m@pxZzRLPB>Ny#t&g zoU;!ryHOx#dHR2(vZC90q3kg7S2w(lln@=Wl@}wI%8krU${g&I)8SmHB>C&65X><}$+s3O=6bOEEq4^YmQ1s{aY~qj=TD!JW?|c|K^7K@sgPNy&MO0=AYuRP-~U+e9l zt6u)&whzeB4ekGNr8^iXE@WVeOO?Qq`U4~A@GgaL%=;4mb>6#~6Hzg&Zi>ecZyxX8 z5E`r=P$^{`cI1DF0b0;8P?XtIxe@R;Ah3k>1meAYXwn?$dP7)=Vf=^q6B5~xR0*Tc zq4BG(L5JCNZEHK+spHNv0Di5uKhDR?78nb6@d!-dP58}m2+zg?0KY#6tmXfTe;M8B zts|AskB?*(vNGGQ&d((84Vn#-!1_ZCdXWF|@nO0Tb;(54k>HpF0eO8#e0-DXTjnfZ zzTB+hpx!GA3yUhY&o))wJ`^1m=`}dnj{zLJwpjn>Ac}(yY+_CzaKQ!o4T@`!djbYldpJwLqp)_JIUGBs zLaoLP{1F3?bdj(DZrhV!r2;j;aEGV8`qL5+f4e1;@IQEbKm|Aq$Cf74)IQ8`rW_5g zdY16e30!&AIW4!B%;wB*utEsknM_kNs7VW7DBx?AVM*^1#S&4GNduKA;>HJLQhiCf z53AtZ&<3i`#lyKXXP1mT9eWYE{?$-4k4PjCe%`1J1!9I5`5`plzK&iJ?#o0Dkop_a zR$jZ2U!XS>`ol#*bn&5wM<=)PkRWxk9Sc3be_ja(9R#1sAT$7_H*ePU$$(z4-(79; zKfWl%E_FNC6Y|fcMrJiEq-~pTyVt0=Iu!*{&ap-9cE(GuQfNj7&;EsWDY)&7w z1?$QZdM)*)e@eJ>H9ej;>qBSB@B|np-&lCz$@;|r>Eyr?-kevD8`e%_$4>o;l!D8+ zCq0o^ zs}(_+?EClns>`ix)2j4?)q{>2aiATxU?m&o%tD#^x-pgBXwhX|(Sh$NjMQpkw2Ui4 z7SZeNoY>~vS{ak6)Tc_dfUt0nMKPc#srDhpGqHvEy036#AV7uY#Tl1x1e&JCdGoV( zYz+OoZYW;Q{V(m_GjdsQRF@SVF32wA1RdW{EF6zd$}|&L<3!Ewh#J8?hP`#Gf|6!W z!!lBA)Z@@iCQywnAZE3iQs>I_T!EoCJ*AT1IUSO=5qpj-bn%D>N*gdSVIw<pz#KlYWQHUm0IsghkBWL7Jfp8SLKNdd6Lyyk6fm*gXc&;^)aLz-n%P%+cbeO+shQF5X{2N9x?FSo3g!{;5n* z6+yrcBQO+hgokN%iB6nE_%nDUITxNTk+NGMdSu=9p&wq7`W_7{>^FR>e2kCe-K)#w zD70{eOu7h%o$w#=aFMnX+QkwF<7EoA3>ad(Go6aLNInN|(Vog<2mvJ+9bB4%=>PR- z3I7>LmNv0uCabV$(8vP?tGGHB=E{<_NV4Hz2sPw?1s4*ppEk?OWq6WS)I27PA~wY{ zPNpYFt&_eA^h#>+G-=KPBIsR;gMCTucOifRdRR??IQ;hr?x7uF1Y<%mBtSEck4(FK zJQi<_d0M8vh4sXh1*f1%6Oy3MKKraQMWV6exZ_hNDOR;da|Rz55d<(8e+%-^zL118 z-gX6nVYxELx1QOy?dH%2xFfd2WZ77of1%x$4}~HeXrk*7@h|4k98E=OFU@AFdZ0n#o7H-Y;>*n{t3i}(N38#pd*Df8(@pEW4Sh}C|tuQ>s` z)lcA(G*mY0Za9ygZ(o=mhhd)uN|S#Mqd0gg?lGKMNI*&ftl6t*@!%O7U-lNCv6Vw1 z0@Yq;@N^M)z#0YFibf94A`ga2OnaV7`+9hppBc+QP+!SIY0XqyV`om+=M{pe@W|X= z(ZPxq*f^B28h$%VsATG&==eG})$_LY>N+U5k7m zUL*B=m|OR&ObqzjG1x2CgPH^MfCe?*iwSqS1}S*Oi>Zz)D9uq(X;!UW28w z0cpsL440K=z(GotDc>;Bio8Z!VfBFEZ;Ud7!?|M- zCl2Dk7UVie%89y4ohG{tiw+ah7SHCm%)M91E1?p%qi!|p zbLLNe71vpbw%s4oA4SM)t`VP~0I1zk-ptEXLcE-hllieI=)la`!Kt*4&++lV<#=br zKP68(43^kGEtIK%M}f3s(-Nr~OWx5#Wcd8i;oLD8WjF{^Nlud#h!5a{OtV{;j z%Bx|)@LyC@C`;{4lT^e36*(0k!^RFfN()k<$uv8mAJe7|8VN1{<&?Y#)`*b-tGI#! z4LL<1fQJ}*Grmn`$ZjA$0L>*>kz&ttG!!r9T&&|pJ?XFoei?qY&4U~tVizu5@Gido zYKLR+r}O|vbnoy1rtdIXf&kQ#53lj|H~X7G-P^nd(851NY|)iR2L;DwX?7*yko5rO z_7dCy-h$^ph!%Ie$w!#X?#UL}+kY|xW{*3@AV|(q;pE{i*ob)>ei2_pU=8H!^5RJ= z6(tJiP;v938;=MUyA>Y|5rup+3d1|K5DYdYb*4Qo?Gr37{-{}ae-oD4!rN)=e#s@5 zs5`2v;wy~VF0FZ{qV}0V6_pK}X9yZ8RcG&p;!xyI{aaLRN^hlyc677}tAwBC5dxBX zzA`uRmD4acZ2!^NJdfDwbS1*kzJOYt=Bmo`b<83kq0Oy1IlEM3klK^SZG_9_^)J|d z{m`oGRkX}mCji(;4XD&do*F0ZQ0=w;?Rk`xCNmHXYJgM+ZdF!f@7QtU#+@5Nj)wyy zbu#Ar6+x!qbzn>%d~Ho?EalnWtFt!#u!SB$DlsUZa|<`0$>5y6q2=ZIjotFUZjt}a zpts)}bmv$9Jx9i!t$HHt5y$>^j!p$q&yMJ+R*>PTp5W8$esJ$7OXya!tYzNUnq?M7 zjubo)-*~^Z_q;6sifk2V28NT^@rB^YOgG$li9>ltLdY}Oqfis&oT2MT)Cwi_m|eU6 z@tQ>ib(dxIIQ)F})1o-QXDhQ!t&st?Fz>)nwml_{X7Wi$-g&sRb_juS7k{Bod9X8N_w16w-MR19VupZnQCCDBrk{o7qoHf;gt~VAf zT7_*uZ39wDKGE#j6DdRRWj%RbV2;LL3;cz@(iWw7iYgTcm{fTQi$KpZ7xYVab3wUr zw!gY+{GO>9TUPbYyO3kGKUg)hW9>gn51;2~86pK2_v;AROpm?+0y9W4#>5*tc?63j zCv6!z=-LUdzxG-%p@}+<-m}NQ?9dz@?F!Q7+Yvv3y0(0;Lq*LLMSnSFc1!w|kD32t z@Kg1eMbnyN8CLK?4)#yo^NYFNu#fyy$(j1L30iAm#BZ5{D8*IS5-bKw8c@0UyRAca zy@xF*Z70EJ4iDL*7#U@k7aAICym-Wcp{p(dMkCmGm(~bML#WzR-2r@#fG|`lrG^**`##4 z>TMX=sB1@#8nwSA)?=$jKo~qJS(H}IV7E96ekXM<)fqahw=ct*xC8hDej7Jd!F`s? zx_0fVs@kfdA06U635oQ+b4&K0TmP^5_20_Kt$8T-gBFwj-QuqOpZDea0`rHQ8^Ivw zc+=6r_o3SzPrySDH{hRvrT_xv)d(tF^7&6@j6X4Z|5@4l*QL({OF+P^on;u(PxGsZ z8ZZQ@YZlg4-preqfF<!hzW3B)z0VCdgqZZ~P!o&R75ayV-zF zH{?wIv6p}F02raRw02I(?4flhg@1 zlfV4gcr1#~9#TDK=q!f(gg=gx23`T;yp-!n9L9{7W#>dq6HGMZju^4zhRL7Y@WsKM zYwOox^mCk0cYdsH9P#u^6$=~IL)jpZ*faoV`dizrjl$bwI6D@z^J*&5rbW;vFi9I5 z(E&b8UCX0hvt~_;%H6x)K7^qc>Pu~y^}E6)W1S(9XM?xF!>Fy8JJXL=vH^s6%Krc8*Kv@(L=>zmPtHn)mM$kdMQ$ZX>k(|H05)TI z_LEe?pjhAQ;ZAGEoau-)6+Da^)uz*s&$(iu7W=>Np4)hE-st+8yU1)jJfrr{Gd|-= zCDc8T%p#w)>=O3Jw&(q(LytgXC@%}c1MB?u{&Pz%eB`|;+(EGw4S8>rg)sWoSar4f zP+_;3l3Tu6QTFiOc<-Q8U|woVZxufBlC398w@6|sBrved$d&wHng%fm7S3K;S#ho_ z_5}6^qSZUSZ_}p1OED;5CRc24#j5Hru-N$RLpddvaHZv%oF!#Bci|lTbE6cfM4;mH)P)Py z?JnwISwMO|b&1`l%b1@!Jb(NLKWqCgx1}DyXpldb=j|!qUIb${9%Htbu_@*2;{3W| z1rsQ&eUN4R3v8GQMLh}i!9n<#7c*wNeg1=%pZ%ca_-|xjB-WO`{U@|W$h#xYcWqGG zQ;Ck*`@gumcEg}SgXW|D0hq~#+S$tPn&Q{-M}Mrky`N)eAeG$gnm+`u_~vP04NUc4 zeeJb@5 zUfsUz)pBbQJ{_mSXxvkA_lA+hN{H~DYAUmcL!Bs57f5MAx~!B2XPtrNfhUv?nfT)a zwP)PN4L>Cf8%jEKUR1$Vsa*qq(Ic3>p*NkeGMGJj4Hk}}_!CHy_0lY|AZuzBpG?4x z?`4?783BiOy}=h{*9W5B_VB+S&MTvNYp^isALvj%SH0M{MMr(|LXB^NR&bcj!+g76 z^lCZbJDsYo>+~MI?U4N)hCYt=`B@wbzVY4-BkT86H2xSHLAyR)Q(>W=OrQ(YW~=nqf1tb*BLle45Tya|gmZGCUSF_&e0wA; zChh+8weqEy)n;yT-lGRMJ0}qg1XR!LT|Q<+Ztm!tW8g&_!=$VPy!A%1Hv;!LP-@Wxp+P>t#)cy zi|Pf$iw|>UtlJ9bM9v;{HsfF>_x}d#r1Kk$LqBKxf!c{zXd|6+A~sJH;0SnN^vq-5 zfz7FTtE8?gmQtqX!V2wswng`;+!DUysX?QL4IlonK7J2#9*+7HhcmtF-Yp+>t-Liq zzW|d@=CG+%OTGLNS-}R2oqG3v_1EWpa1AbO+_QI`u?X|TFhcu_FTb2xb{c}gGtNA7 zQ;?VBSe~p+m`Ig7c5wB2x>+}W9~ep|1sM|dZ@}Ep!lS<(#nd!CKi4QY98$7Zl}E$U z?5JI;##OXMzdMYr^T0f-XLp|8ea@O86PFB0nbmo7-H1czz9*q&16m+>7BCA`iflOc zoz0uu=2wr+Us;iAs2B}hn|@~3_kUcx@!d6-R;=d#KlcaIzQLCGxg3r&G2Ts~C$hcEuSx_jx!r_VlAU42=%Znx&<&ba+) z44-K8$%7}fiJp0Wui%*@Ftw!+-=1YpEYj*-=`^(5I0I81zCg&M%R{ z?YXeF7=v8-u8!UU2^c@WV|MK-iEvfBf0P~mjXxH?X{%`yG$ocm5^>7zJ$qg&E?$ZG zFGs!e+AS*|UExmypS-#6{nL*c_uuE+zW03Fsvqvf(6o$qmMuF9$;piqE08{t=z0pSAX)yY9JX#T`XAbNUZvh}cq$(VxBh zpengUPM!Au`EaY`gD%r6ZmBC`g9nTdy>?>L_pnizk0;0mOQFWphR-`@&n5|)U3T+p<0{=`5tn)bx9+p|PtUz|;>0<7_KaM(aAC%$>(?K>1uNf9 zWg_c4n67{3nMb{PX`j{{5e#fTbG8Q8OQ6b5W8w!i zK1}>86`%Q{t(@44lDRM+lLst9^R~+Bu}t}3tQhJ*t)-X>TC(kzPpT@9@UCD_8BFsI{vt-vmR#H9K>N(P&n;jpwxmY0$itvH^27lw{Nhye>x2yA_@qFP8OaA=*wHgB%CCN=~$qkY084)G3|Qy4TI0zArT*S4*7`<0aEl-{1qR@>pBj$H48%m?kM_cYlHyS5s~O`&cS%M@-hD%xO4IJ zS9X25csdUPFX;-$brwX>5M)BS($Zhe-T#C-0ytW;F|pv~uftBwbMrf7Z^^NAaQRVR z7Xe3)6GbrTwTDJWdCO$AZuI$FgT<{Va2LFoeUCy?7AViW3Fe{4%UGLr$$=M}bkt-mkXz2wQR-+dQv96y%_+BW-z#5XqU!eI=X)V_35t;aK z2X%%WRKJU~tvGbaJEA9VIQ6vX7_k0L*bIAWe1#MOhzw+D9Z2ncEXUsNdGF?Z>s2Ap zwk5@j)9Q`Ipx-hrP$tKlRM?4L1B}sfn>kH5enTrcDj@r~=r!y?t zH8v0eiFx@S94cgj)7&MVqCd-DP&=vdH>%=i9OGkoJU#^6C_8f_?wNsLSYE480iK$HAPEs1Qi9d< zPpm_5FG5>F5YJe@dg9@=1&x}%Cz|5Skjd`!-B!h~K+6~E+L*7~j;t>*2Q(X3> ziDkp6gQn`R;G;(Mr~z~F!En|`H6Y_MV$u!hosQ8ht1ax}RS4!L8o=m5pIQCsdne>T z=|Mc*GY592Y7QgC!WIMwnR{G~%5yu*!k2&qab=|2ago>pbok7GF;5Apu=2Mq zcBLjxA7}@-P>dY7Og)f*nLZBUH?tbVfA-~cwRxNN>nC_$R{fov_0zhWT> zB(n(Cz@}Cq7)(_;xd&!;#VG*BK_ErW5j?W%2{Vvrn{lTn0|VW2DHMB<*VcqVcjN}= z$Hn#UWo|9=Zmx+outEepfHw#4^^73n+efVx-``>MvSwq#m}Sgl_By0 z9tN54!!W3~-?;};D}0uJ)gpAr;zTB-zAnvi-7< zFmpH+&35&QVOzSI-;HgN)WFPR*a-QBBruTaYC(v8Smq2{HS}W_JN3u(&6+?*cfb*}Bv7&gFJMgB!~jIwMsss3 zQjtQ@CUERzqN)*$Al9(_w=z}uB8w&%R|PO?$jddY1P|m~uee2kQGrc>Q6$UePe!WQ zPUES8yC!xzI8VBIK-5 z@Jo^=9F_Se&}VS4@Tx(4bmOuKQ@?RX;f?tXRalIz;`pC_{J@NM*^PraVZ*SN7X6P_G?-BoTf+m~j2;Pnj0I`;>0bPtKQ4r{@RC^Bu4kWQS^*%~~4cn^En zDQY+pq%I^vvPM8JUWCllZbM$p!7A!b)PT#-*n{^w~sbNb$rjI0`mKrGRRlhvk9Z3I)R+ z!{U*H6@^h(jwy9@Cm8Pfx}?{NMgEt{>fn?W)S)F!lMQtj#7GV!@`(vOn%Sq(*hbo@`53CMi$#;C z_dSf^W_(Tv1f)r)4xJl6%$$89TC@Z*_vIvzAw@|d##o62nm1Nvq%5nh;kGCXYX)t} zUfnoxPf_J2Y{vnEk!pFxikx;`@7=xN>T@&~#YK=b$CNTzEI6|uVLB_rTh5dv%sE3T zrj>c{X2{)u1x=t#DkV)EV@i9w;TS;7t=EW7C7dTmV&$SW(RU%5bB@XH|Qy*(lZd-oAq+cY4wJ^H&XW%~e0SH`yoFUE-j?kSPqcWN@dX^;Z zW{@)p!SOCYOffZReHRR=R5YvroqfGHJ#3x+`hj-!TPlGX8r!Ygyt(m}rIqb&Ou#A^ z%;N0DRs0Vpc?30Pp)@?jqB z&EdBl`_G-U=j4vRm~;xNbW`t)xTNl%XctJL45LD1D80TP;iQ^;Niaj_jl+Y!iXt?0 zOLt!UQ-*dJGcTqn6fgFWvm~RQRFD!xz-c~=NxFu>MH4LW6mgb~Y+e9JEzi-&7 zJ-9{2lO)2zI6-IroUy~vk})^8DiQZ6P7;g~qJQR*@Fd=-QxhHj z&s6sDGcvH1Q^hu=o}D^w51eu1fWjvkMW!8NbHux^6CqFfdFqcjTFydC3L|WFUn`T0DJgd{Oj*(Ydr=Z)(%f>oA{BIOHmq{Sj5B!)2&dA5dj3@zf2o|%Ad9*&#IfmV8SPLev3BC!_uqg2fp!OquTW2$MWtRyOzsKaT|yScbQC#PLTS0cd)lKh>aP z&_t%s5?;C?Sj+tTroK65(T#ay6O?5z6LcpkOAxcW-=WXPLBe~1g?3TC zcoKhZHt*BjncJeEl0|q3(|NCglocNB%IwB{6`?pcd5%{u9%IxAYz54s$r+6=jtj|Y z9GGHV7*GR3h9;eBi_XUxZhw0Q!5Jy~_=Vx`QzB+{jNU~^FZqlj#^{fV1}rQtZa1mE zW}i?|n+-rkg>>xaYheVn)8iQYvH{89c9J#}lxI`8f2%Cp4MA_h8ZKpCQ5YT7cx?V(^)ky!^=r%{W+>OXBPWpcn zVEB9o0d(l@#DPLwauyft*ky%FPA7=vgYRl$YGJnFOEMIy=vk@dJnxgX9(U_gSHQUFp2NdL zL+4FH6hMMV<`-xjAjBxwN$qBmn?igvCe~LJ!HaE{5ED~2wGYHf6vi}Akd){k&iV-j zZ4OjeH@%};@HS-qRXpMa*rrhjpJo7zaM6y~J#5HS&c(XVN!6Gj6LO@<<6eEii3Qxa z;X_OTvG!gopbZM?oy^8bsRqPoG7|D{u91$waUmgEb6Ul8tNCdriZl+8b>G3u;i)+- ztrr$&{FNmxH=;bT0CkWem)eb(II*ty-h1!e{8rgj2xil`I5?|dnsv5Ol$(UHhJ4-m zLgXdf%CC8mNMlPFG>0`6HrNa{n;d`~lAEt!ArQ}>(>G(m+VI$KG=9|J`Q;iLZ@gN_ zN7GqyoeBSIj2z+w;4jM@xI9hrm?_UjV^WgY9Gim?!0;Ci!Z59B-NL zC`1u8cTKIsko32}-KXxy(dOl#o4M%fbEL;4sSCAYInBG%GIz5{t9#L9srqs#pVx1NMg>RIoE>A!r5a%qa6VCUFQs6gsctO(X=#^YzcSU zm5(_%xfFEiW~PWa|0eao8DRX1QTsO(MI$-^PnMW#6d{~Acn|5)PCgxY_?TN}g=ttw zb~tl;D^^ox?6V?r2Ryu5F%0Cf>C~It0gURJlVMe2Nm*jS$?T=WpFZ1TWEk)yqTrF4 z;Rs$ZS`<&%m>RfqcL<%1fHH3wQx{Y_L#0zzXGRV`Q9LBq2ou8NUVU3%P@g~V z7-l*ePwzY7YgDf0d4$vK71^8a0)! z;F9FI&7CCuq^;_38_7K12xDZHH$=6T(9!c}*Dc7dJHw{{^4o@LpLRdYOxhNTrbJ$x zE4z>->2|Kk7)fZ#Y0OJ4L_B)rMT<&lo(MeNy?Nuf{;)|v_Nl?h##4pGk8Ck-k_jRX6 z0?F*T!zYbrFgt*4$vnKLEme-fF6fK%SUCP&i2J6rfmH{>_{h{R*IqRFBW}_2pd+LR zbPMJv64^ZF8We2fmYlIMSCZIiMaz{?A}Ee735!qZuJAn4XfyLFdG|nr-}4#{5zBdT z*X6e@`2K;~`eiF;v`ZCE9hVCMD*0vaw-3?wA4F5Z7FLfc%){>`aZI?;V0?Ta9=_n& zw*VVyc^rz=(NjR2WehJJ2264>OOzH`$4Ik_N-`7?W**~&73AgDJe*(CHYmc`Q4xNW znKu!kCD)1JhYf7w?8v>@wjz})$d~dwr67){vmYjy(Mb~y1?nRhpEzThGVxc1QXN*;Fwgv1mSiNZQ}Pqj_5X^B;LpgWl`|`CO5-5UJe*i!ARh|6&LY8 zTInH!Fng82JG=0dX8L#~d71J}+-gmLj?*(0MiEVeXQUHb8` zsi-B<)`oA|HUc)*gk_cV&r|#m-EKi@s~)9jtk!F2@xvG2 zJ~XC$aP>hW60Rej@GBCjF2jf`h9aR^+k%401;@CpG=4`K^BT_XX)g*+uvIG=Oa_mLj58EeJ zh{iz9fRx!)si}J_E*HR{f-C`nlr6oswU8D~b!*%=BegfJ$Z=iFB0XF=`=x0rkuf;x zrQJbW`V>XYitBhM1h>x9c*A9;&AW^wtcsS4IjEsm`xx3F3%q6@YavMc-K_={fF(p$C`6jj>O4@Pi_so4cd3!h&arxdO}?NvP3AW|Y+(7d$wZp% zatxt`dH9Kh*+To0=MR%8JR)2gTV9gAdwg943o{-nBjV*4%t~xIU3E?4=lvT$A03J- zYvbMAKlRNj45fUFR0rI$j~D!LE3Hq^W$~Yj#A6Yv|2anF-g^l0rQZ;55mXeJ=s;&G z=+mQ9Fa;~UPv)Z=h4Y+&8tD=r`T|(ANf@J2+GG6w&)0TfI5?q4R`(iA{wW#5ukU3i zn^Qgc`_MAyLlKu;X?jO4LQJ!N^65_3tSAF767wzw*c3|9*Jw$DXh--sk&mYHrdi5V zKs>O8252m;Y81ZF%4Da z*^|i+8foGkbaR@}B`m#?SYpQkkhCj|a9K`?f&_mhG(kC1E)r(ZVp@tC+);9$oV{Iu z7sCjsdyqHMT86};O7lwY;#O0i`u7MG2^IH;QG~OmP8~Gs!!O1bV~vi}CVCDJfvF@u zK!hEn{+P8>1rzT^&dLGiBdAn@zT)emF_7_b3?YJi%27e1!buSBxW4Hil8$3RY~KrB zsb)8tPrENcH~fuNsey%6MVPw!^t=L;&@bS1IikrZMLKnPCwI0EGB^k)LDyf_^_W>~ z0^z)&!;R^^vXRGytHN`^fhwl881rvM&NsQsvb@PO;V$c@Xtpw(NynAl_uf@8IXU&R ze(}4+U0k5f5Ym6FtK%L#EX(wx85o2)^u@)%T3m}=fY|%NpYvo5 zfH*P~%tMoi&-x~V9HBT|80;w)<*h-n8|P>F=6uBzFglr;SRhD|vDbr3$lSVYaQWmz z%a$#Bpk>RJ*((nf;)Wi2L9EzY7)3FpEBqPobMjUo6aL(li^IECB44_q{*d~p8$j`{m9^DT&}wqd?O{$sBG z-V4j`%7)v9?07m`li1Lpyd~E3h{Om zzWwX-Ht!-&!zyN&N&F})TBwgn5Qop@c>LX@ebNkM`@6wg!wa&T-oI9Kbh* zUjm^*)yaV#~M#_?D;79+-2@+7%b|Ge2Z|UbAawX4ggvzfBlkRdNj&f^p+&Hof>n_4zag zUNaKT1T$trU<%HRO2RFi$Q53xeWwEAid{`jW@2?YuZ{Ct+Xn-t+u=P+JrEV5bn#t= z(T+63kO(C}oXTX}dNz%xE(*5ogKJ>T(64rA!jinohK7d9??3d}f<<5DF9F^68&t>E z?^gMW+u9c+Am{ayxkGVeFi5yAg*8!ql4*0@EHTU!$7RASdsuG3z>}<2aB@fCe+T|O z>1YW274+F$B3n@W((Tyf?yrVxR>`W(n7DD8qFS&G7XNU= zysPGx9&OQp3UgqFG~holH>caUOXf^2yWqsiqLPx-CL}@;IpjaX+W~Jdu@a@;XSkT% zNxgxyM2wS082C@TP94FlQH?Zc$6ipWF9NoRuw$SKuaodJx+xOhF|ez6;-==?tG!kKUe-p05y(m*Zx5jrTM26_>uG~|oC&!;m2 z>}H82(gUqqalmIiBnUMIhUn;7EX9DyH5zJsHqA6%k?;r#GtHP48a7%{zOZvit$N*d z-BshiMv4FKVW)21ff;*m4S4yJ>Q9$G`EujRM-OhnxQ`)BsnOv1rcrrvUV9pF_Ecy> zm)s>aVSwz@7_(wkky%jlZ~RzDB*`f7ik!tOyQ=U>-kG;}DpIjTvavq69t~Hz{b{#I zblS+gZI|Y4n;gi6XChR%4xIuMmNfq5m0e41*df6>B;4lg_GY2NM)={xiUwjNBGLBH8`}A!S zJI(sAqDQxG^>bI(k3@3$Q8-zi8e_;g6^((xeg2F$B`a@1r@D$!~#|65*dTZf;el zhL1ZfY3V7`k~T5sx#r{C`513<{)=zZOx$`lbti+S4sU?1)X+^FKJAkO!DgW_QviKf zPz^i@6^Ee@fwVxmD&p|rf#;wC(Lmx_utXgW2rtY%VVtsW$`e6CL?sqP;Z=bbPR1L1 z@rf4IlT({f^I6&b#O0kaM}KJ!xa@D=&@c-cgoMKoers)Y!vpD8rQ(@@?xGztQk3~+ zI2S{D(cHxg)y4TMg}pX&=cj3!Xvs8(+w!qb@JKdXN;NSKaKab~c!Nc_oo27_;+Jl} z`RTLukMTe-gJZ{5m!mQl+TQ!5-J4xu@^WF4WjMWcWFZws(;%+k%SRSm7n)#0gv!gV;w5@i zj>3mTK3)8bG2n7i&I&qrrTT(Z^BcdKzci}b=~3NYDLcIB!vwrZI~qoU4x(# zSEL6~rb4(bVmew!VKv?vF}%S&_$Ci4_+3Xe97R6(z;nbE&>q^@nNF?V9D3XScV&VZ zUh_|ixIL*S##*j^;fejv0*`OT7{E%nu)+_&*k26Nu@W@arW>m|{iA5Jzxchu%XLvc>O}V8V{WVjoK%fBw0BH&6p031T3 zbS#DDcV{pZKv@`f&DP_JP_+V#h!dHbf!kv;3QjPAEcK^ERI&Kyr6=~^w4o(BPREVh z@W*X6f265IbUgO`yWYn29Z2=;-R;fFy6PXjcqh50vDsI&1QzU2JAFsg37=5R=iwai~!DLIz_7 zCa0gZt&2Y8js6_D_0Lra5oYI?+#f0-+O=v`eEzHtOQ%h(`~$hp)yJ}83fV;C(*fn2 z0mJR6YC%or2Fr0tGMUUR!eXLxUsNChGO@C(>|zU7$7!i=;7h(rm&gv~4%;!~i3`FM zM-$ChEC)6N$^1D3cRj!<(Zjb-+;H0&D+k^1@+XzJw}Y7E1qO3NeW#8)mqF!VNC!gY z#^6VDP;>1AW}Kpw&TdYi!kv3UgV^YOB&~}<0N!Yl@UZ)ZY~n$IU zm6c<1W-lbP{C)b+D(U%}QdRyEj{q*^lg$e%I=}@c@6-PVtSIaXK$}P__(S}#|I4^s z1#?hF*;IG6-i{^=tFG3~H?W+(W3T+Jru)NEEJnzyo7R8Q);MEhY#eWV%ZQTFF4OyW zA{WdEj}xBpU(Zi4Rb}Ko?hG!C6Io0p1K?yH*g(jdl7|_zA(%ikfcpow%>OQD+-70i zF1&27+cKwNeJTHraoJCcnj3I%_HyS97AOh&VW5kr%9S2 z8t)zxc+^^k6rFpJBkm#`jk~rhf=gZyh7RTaCOKFZx$GlONsF;;2uLAD4^oY|q=)rN=QB+&2=+dGyh% zN4LJ|KHT0>cNDgK3RjU(KjY!!y#*8NuOs0F)9x&&WZGAoTU#k>{UED0;ksw*2)6A3@*Rce;5fd)|9U`f2au1U7iY@EVQUuo?XAZbZPbGiTTl0J{VnP z*3QvoyQunEvKM3!)vYBDX8%FUWE-D$h&pLnb;;Qsoj*^GtU113DFV-IHv8_wv z0Fu_Xo{crDX`WGuOm;%EZk!XHZ=IV zSCeM_!1Wi0Gz1+QO<&Xdu)++06)Fp9%7oq|Cp5@h;67ONZ1I7>N|)&;E{7us>6v|_ zv#Uo}h5)akcL?xi{OHB{Lw6J%-h17@CiXeD@M0Dgl$}P;WA4qPOjnL!1Pbh&B0Z5M z8rViw6ZeIcZ3xt`zmy>yh-dB#y&sAQZTINBFR*ZWvpW21KG&REU5`6}RtlmlSZ1F^Eu+h_E!XYsw2L zGWL!1;h^`wv&B1E5kLZz{)k$V^QWXW^ZrQcQg#}*fmC;gL92|d8kfdajSW49FBwvD zZ|`ou2F$@_AgKdVG)|~85a3H*N^r1i#5j(}?$P$zTKW!)Ey!hQqpcDbSOCNxEl=%V$d`6%5@4EHW;~yG!lRjeZ|BbSY8mx@^ zq?+qbHFv-AIkbC<&rdyk#frjhU6%Gg=Zj(ldWuh=T~QZ+yoAG)lQ-Fc<u_#IEKmd`cHUY{45`o6{ zFr5e+!)JzNcpR33%sRKA3L9e&EzT6XcZW%A^{+Bsnzi-_Fqd{~JqJ#MX)e@fIR8Rx zO*PP~_2p4r}m;^&hZkq&Ibk8r~o}j8OSLJ>2uv1Tc=zjbYyz=h~@7h&Z+<0j4*iBV& zs>8?_sXknaN)eGm#L_5}>5X8WEp}Hjv0?=)7RuQ6Sr~W@zGKu$yaW-)3Q#~?BkrF2 z15Uc`3gmCyf~xGtVS^O4(%d@e3_Fzip;iFF<)R}ramwC`B+Ls)m}Y0*1VFh@@ss0v zF<55A6!378e#0|5{>}3E>LZ~2hCMHQ@(8DFd=pe#1w;ZmI^1Z@@exA|EKPlHP=5W& z{Q5B=Yg-qyw#OiAi;T_5txCSf#LT0;b51hmI}1mRjWUQaLXj3SN3iBtOpJsB+8IxB z7Dwj|ZPn(Sl0g8WsF?fU8trWoJ{lGb5%G-yr~DHn({|43M-74Ya@$P2y*&|>Ou`pY zo+|(Vn7eYm6v&4ZQWR#nP4+FOu`SMNI?qYb?!ast^c}~GQ%EAp?@Njwy5B``67QN9 zhaP@04t~jxdv^Li0sDdZ=}5d5Bcwd)Q4|eX1pytgg>OWIfCu1E+V$d_w-_AYSW5^w zikCt|!u86n`F}v+!|ZP|E07u?qw}sg*E}LpoOS9yG7~sYf22opjz^GX3yz(*>iA@S zA>Xk0Dsm8)9*8j;&|tZyL^dxL zs|g%(szuyG0%pcj^rLr*cq1a0{5dPBn|wfAE~GH8Qx&&-D*Xcd^D(*qE|5+q2-_+ey!A#_$n zKw6!i3_L?)SAP}wMX({`^FXfOdNvlrTTzsN7KdV3aXS&>)+;)&)QHxmpTiewy@D{N z+XMT|+X@fe0;ynlkh>B9IsZug<76m_us>cnI+Cl2X+$ox@u)(FolH8qmd1F_Akf8~ zpLopj3tk;EKN<+J1lg$r*{L3(oVHW+Z{P1*{O#pm_h_|GWoQ2xcowEJH3f9Q7Aj$? zAC7(9$10gm*|o5wgdVJutFAe_^P-`!3UK2Kh2lgKXxIp`ALd>XZX{1s7{atZA+Hvv zcq5yJk)8A+jM(=aiV$xGDJbx!L*><*nT=j7SlI+aRzAjASyyohXNN1Wwq+76K2$`M zc)^MKM`%s)BDY^|9$t|)s5JG{5HPm;!_>+l^UEv0*J}Qc0b8Cc`Z*jCfeb47m>h(` zwSXIzwg3@EZ8fM-$czECjK0|M?n=2}nQM#xfU2cAt3M|kBb>m&5Wk`P(h^Y^+qQ5# zcWq!5_v17qK*NOH>M%D4<_$pl@p=hvVsIJ%XoEXe%wTl3iF(o?CNy6IvT8qICABEnVEu{WjwS{{!H4YZs3lcp6^+}n8@I8&-GYzQUqkTGe_dVy(kNGd z{6GgFM=J@%Fbu!$4?2O%lpMohiWh`9Gtq0H5erJe2H=$- z*Pyi#UkA_|Vhk(dhQ@nq;NohXxbtg{#K-R^z=F_$hrA9fxbV89=8=+`Xb}2GgYb8> zKb*0$dfL>AKYSxYCW*yi>8?y>6+(z9g&1mIk1g<|G&=FHl{!PwDK-rK$3^;S=gkBi zN_I%uD}#yy6IbHl1uTXIiZwGdozn!`j#UOBoU_MgfEKt0fA9ieiGUhEg$h@YSs2A8 z^R46w!EfTAk#+Ndv~OgvBGS03E;u=hFeKF=vztrxk|CXGgD*Jo7?;W1_p|JSKbt@L z&O7fs*B8a5PL6KwpHJ-H0Cs)BSz8x$5T%0SMqUGPhR#j742aCaTI{5Cd<4r>L=cIP zXgmw<&YyApL||n_-}FN)I!!-akfVUUeHhy^AB{1`=HeiU$Bve!6k$%9QNA#?b zVKV?mq*6^C+>T$PQw8Q}Uz1sjP?3?o3{bMH@+aO6@&i3Zq^g7lhdKQ$9jpI`i%XF- zE~&%D-F2M39f_j+NEGeJ+=^0%aU=WE9AC566-zj4tV#{l8j{W?r&fSNHkxgtxCcQm_4mAO9vGy$g{LE2nR#&%Oxv#hb5~LZV31!-5uWDdb1KA1?aSSS8U4cMT z#|oyQv(TsUSX{t*Ociz}4x2v`k6qjlj+f8w3ffg4;~0xavl?IKXaFK+lW)1hbh8bD znIfL8f77xDvds8laaD+MG+vm5v~0OIB7mi?;g=yuz#CRQYiRG-}Clk@gJs+`+3fuF)!UdVM6bW3;Lam zlQz7;v-2RCSvjgZxad+ubiUA1l22m{cmYlg2dj*awFH}AbIuB8i)!M3z!6+f>CZHTFLF2hF&!mpAcu+h(Jzt$nHj8MiY~Kkqpq;xm z9y7^jS{AUMmSnq>EGb^!HocZSz$>G_q|0Q|E8RaD%mx(VLJj{Tj(#)vj8|fc6)YkD z93T)>&bddP6O)uWFj8)@|HUP~IH9WPp`m@>f|HnrgO_Gt>gx)e8R3>SWh_xRfR(m7Hvm1B zyD%de&JlC7nw+<*N`+|KL0hvY(ydmhg-i{4&}vI9Y7x(jL-n}Bz_H0U1Q~zNuEQi) z#+ar9+vio~{3$3{+>nA5a=4xj`d=^)Kzi5Z_@{EB|Hw#vO_Kp&0UO{+p|m5u;6yVX zj?kamcyM0o5LSrq3-spo)qz^Rp?fhq;fgveS(xRE>U6-`;OwynSPOV8ZkMr0gE)`G zJfw=YgIN)V+KO!aQ6eGck5$4Q{UwqsI&D-E<9=2mn}R;f{MItSu*5RPI79FFXqxGp zxeQ#pshOlP5CY6cB#mBnQbT-8L6-GPX)(5>N7ll+QbTWdj$2CXa#adoXhT@0_J0Yp zcU3)Y0v$}o=NxIDoB9%_dY2!*ena=~1XKOhWf<`}yOx>Vr(S3=zdXm2ET}8tk+8Y} zIalnAXMHY%megZH$*>|e92J%uBm#?R44foS92wxmfrs{gcv^kk=J-8`c;~xH=2mJ* ziP;D*(FXKjNWd&XoEx84tRvfO@EU7Z@rKY<;rd33yw3xV{PNrYJQja79%o!wR6eS3(~nT( zVpGu+eYgFg@_J0*=65pSLF-%uAtYx{V{2UoL{iRjh;f94l+*Ka3vmvoiwkh43p=g5 z!(z@Sv#@l`1&RRBeyXhrw7#&fB8^dk`C?^+Q!8%blfD^_Lu_caSY61mK+ggcH<8R? zIYi)zc#sl~U)7W}2QwT+6l6CV=FtBCvDUZB2 z_NXTAj$AcgAE%lv`mn z!}qZ>8cbX>-pI=(?hEEO{{)`f_-h3%fG$`@fJ7k*;PqNGOPqWtb`FQaIwR{!3uz^f z-DnR8lAYK(t|%~YG?V1**qg!0H!+I}NwtGbaz>Mw$KI8;*Jf~4eW;gvdC0S9R6~01e6_>9AGl5)f}H3XgQ@&eM^iSKTRU0p1tI#Ii0Wv69F&N<$c~FZ%d0I zJLXQ@TN{}Af3*3%FRvL~_0utft1sJCby{CHB_VT4*=a&OE-pbZ0a^p}5duJ#Yry|o zoJEYxYDCfTq9O4Gm8e0YWf63)-XwVW4&Q-sANn({2jj_U^k6{9aA=;UlPv~`;n3TU z=+QukSV0bYZ*no){^ zHX0*Dei}ZO!3YOV*SBSC-j1<7>JDwlO(hQep?KifBwUK$xbpCBqwEIeFtJOssRmk} zH@1^IS`*y?8|nwa9I_xBPs*97Pv@OJ?lA~84;(KCY6IZU;8`O4@Yq3y z0N3CtIkV0%9B`3{J5*gPcdS-J*dZ%vg#KY|GD{cff(d_;&VUaEPpNDUO^}sr#@^TT zIvLAWL)K|)e1z!2MBl%xrLp+ytd=P|&5Ml_4#7`}1q*Umk(L31?1T$Aflt$mVe z%qNemI8=>ho%LXwiq1+*ga>BeoF8gW(jvPzdQ!M>mURTt@kYIqju08PPQUpEjUj5KW%$nIG{;XUDJncX+6rkJG{ zgCdy<3;mtpx8e{7>&17WfC)fFQtnCyB&5&*AwAcv<6Gr)71lqXpLW4H`q14~2qek7 zNQmsHX%lfRFiY$K>{fomxqjHHpr5NXg{eh zK9$ZsADDCr>MbabbS=hWumUKOw+1!7t;^keH!d1fQah)l_6I&Ad41}%kb(F|{*y>S zJpEGnW$2H`-Q1}+##16U;)lafrieOKZcZxk)9ocw?53Q$$hNR3MD51bc7U_f`6w!K z7DZ#WUEJvpBlJ!&N=L{}Ps%3@ANxy-f(?uJ$iJ*#*8YZF2tM|lnLaeZZ z&UU|1ye|KvniY-;IgeE>ORR)fZ=@$|tdj7PK~-LZi&|q^li#u%1#yG#GH1M@ z{s!ETdQaue5x62AVr&!_jhStau7fuPuFO)AW~QVII)7IP%&SQIF!Sh;&{2Y&`Lspq z)kCX+T(n0Es0echojwsdz5x{%@j_sJ4P_bT(7kYhiRy3D<6dZwU630I)0}WmdYD9z zX4D~6)+%D<<6RD)Fl)fM177}~k1Ecab#>lX^YXr$48Ck`g|E+i<#2f@(7d5x4m{2B z3%cD}G_ZSjOOUc%1qc-t|3}kI0pb8g){{u!1;H{PRgbbwScAvM|$Ru2p;fP z-wAEtraN+1c4tQXDs73=4=O=jk>{o4S+Eod@??gSE*ifjei!A2%plDjTUwz@Xi{kfx@U5~*TqA?F`kmy0tH44glQV(gO z`I$G1@kMm2EKzNr2w;evLxk>GXn#k7&R-Hg`+xj*k{1P+5liQWoyvU2^a(40h!*r! zP^YklgnYzWa2#MxTw{zb5UPknV_64Io@(W#)?JPcMdZ9lO)8f_vika7P z#dsF)hav_vJcVu=H~j*#NBO14LNSgCrbTOqTZ>>~|757xd@V}HsBsQ#!apUUjBN2& z75zRgY}0ATq=Kn6=i70kK?&mwvNH8l&w)%;Y(oO@K*2I+1kr&eS{se}yauO)EA5(e zE=Ir^5VL30AL1Jhd_aqxdZ^%4-G7C)J;w7= zf|wKz%C;fno^WP(8g`4}2c)B#&kP#Lw#u=3n;D)s^3%UXPYz^GVd;7z!=v0oqMbvH zYVvV>75p8S<+=T7l>M4=DJ%*MqbLIGd#D?_Bb_41?-V1`{Hf>%MwWB#+Iju+XL+>M z^1EyYp7srh*K^FNQ@MCc%&pOF>Bicvx`e3^VsKW_u&9LAnJ`1a4t@|+87_-S;%0KH zf*Xqx6%ae{3lj(;PDH2vD+Pp>nTzAx40uvr2D@AJ9#MBltgc=Z4d}wG70DP3p)LbH zNbf*Z5@xAoDXk%eFQ&VKLM8s|O{kGU9t$}>!NK&V1uG7$M?je1GC^_DK=6QM6@B74 z0XSk%yRFOqhKf|f{LyuLic?Xy@{dj2+n;%FUB^z(d1cY|w-7Hg-DW@or4`Fc9&(|R z^>KWSv&W)Yw;0Zb5oYE>Zh z%20`d2}O*s7<{W{iG3YnFo1rl7In* ztJ_oJ7t0NA{oS#&J0=|7gPggp7a~hqG;ya-x~YF zffe9|kf1^23l`4BJfzsmRe~>?N5}1Le-lTg#oOLtxu21wjbLx!h zI+aEt)H@z&RB!TlFR9rsNySDE40GsxtQA^7;>?|hKHiF2H*`h`U^KxG3^%M;MWg~u zs>YERzvS1g5na=|S(M5cJL|5Jq?Xu}p}@&GYiLodkF(5~HNBhY!PqCjK@`#!n$GkB z=rB7ZN9h>qg?v%`$9XB_Xs2)z3IATK-E}FL1V^U`x1w%IMcw6T#bP%!^oi;4hIv1H zaZ>ezC$!0{!}{O;vkc1cvT2&!FO0ew;Z4V>uWE{4ZR{l^orZx=vd3kqEj zO~nAoDm6fQ3p_Z4=ST*#8aNZqt^;}lKhO-JQ6l!XY2_3k5tTX2AMk{LH`l{?HR+3b zI=Cy&VMg!*<7Hd=g6#wPHm<3OUjzb=yaQ(eh9OwGj(`_z_5jL7j$=nPqX7J&7l`0c zIvuYB#E`F&?00fS?K2g%mscZ07V7tIXc!)vS8iyS_uAxL>lO@ecQ@8tSFGQ-anh?< za|=5j2(?uN)4H-{t395Z`w7e8Iura^bxU|P@?H)!MQJ~0y8vk^N#e)XX=`S*STk5?vgt{ zdpGCm!y~sWt3N>uLk1hqN%=5rO}ZOqAY|Qg;B?tjr^*weHj{tJ5ZN4a{7@5ca4Ny% zbRn~V#La<@)5c<4RE&G2TH(qVI^rvhg<=yFADitnCOxQ(hKV>sx0YGKm zj_@BWVuhE02I`&}=eDz;)$_VEzbxVu5AOWFR%yGNy6UeMswNWDGKZ*o!%>)}w&|!% zJ5F80-mp`aot5T2AgP3qj24;AYpkO+#ThmS?3cQ4 zlpj@MN=c-24HSZK+G9yOmBtv%K<NrE-xFyzNlNuBqeDIL0J)y--lk%i;{K_UclxP?HHbH4tb+xxxWNp|{g z|HzITLP+v`@B6&Z^ZcIQb9vb{aVH^tIQEOYxu2B;(Nte5-{Zvd>q;@;wgPPc)kH9i z9%+#e**+SD!WA_tCe|UEsTmX@NG0ciyf=wQOq%q~;yzE1>oWk_A3$sJuMq1)IM+Ae zgz8|bLD!RRGM6dGRf0meH76)|Dx#IRY!~Sc^xvb$o{0*MCE4c-dAAGvAYFe2s})K? z!GhiyNO(@}IFR(FlJiPJdfm*%=uMUAixJmq#MJTCjN0qTJR~2WnP~n|-|I7O2t2Vlj2_ z{b#7H2$qK_AL6%&24ap?1^_dNKuQCVD|Xkc9zG=<0w{-Ipp`Tl1Onl~oP37|XeAZa zKLfFm>gCk3w(+Uen2}^faE9woK*9vWG*!n80Skw18lq7ueF|YVLpV=w^x7F}fukFK zO-7R$@)6@BK1qxxkSzYglEb)_LpI8P6X7A(u+c}=7s~Vr^X;m5sD6Y=EIM(B*az}(MEVWB9vlj1;yov& z6r8{c$)&^I^pw-EBKUI!36L~rgZMrzf@gvZqT7zYiSl^&H1j>D5f=n6@qOioh=(Mg z;8dBIrauMlu1;Z}{!7&UvEcp}wRK@?#oEwl5Xv)& ze4nawWuALe(m?Guvs-sJbxHQg>+OVZ8}r%OmK~c;S_gCYf#wOQWLf&`vKLx0?e%+P!qf|& zeOG78a&Z=?EEWcTi^^pRNkO>+9g;<4RA%s*s*Xtt>@sW{98rp5t2+cH3r+{>W9AyR z(d8l3QTb?sH=ROE9=b~vJTwRjF^qi521@FB(9kZ|chOZu`YC;{UaO|QOaf^jLa_H7 zyQrS?DdONt?SnRCaAwe)n8v`;?jk|5_F_olY5Vt{CJ$;;gS99U^(zY8(I^Uk_Vow3 z9kp>{FP?toAHQ*>cwJR5f=HSb+Rndv0Yl8uGSGyJQU0h7pJURVa;hbVu;BO=v~es; zJ^Cacn_`F}#OU5yp#pLPl7$msz-Gq2CNZrfRjIj4WK1rMVE!~nQI{D8|Q2L>23o*Ek&((1X$l$&I0tD!XfA-8HcjZ&jWMyYSK@+(3Z*)Z#(c@A)Q? z2v%&{cK@)R!vkU)h#I83UQp0_n5yHU1%PZYM1<(^2Uu4^iV}ap03!XWbc3yxOd;BX z5wMWaLw=8PPBL4@+*)WE)va-KLq3ADj^$=6`7+=pmWAXh z04_UMcX<-VjTn-o&mNxk?fCkZ@kOn>$0u>64GoT?55cn;P-W@Qk2Z{HE^8^dIDNru|luc%o1Yz2P_(sW-ur0tZHYydT zS(k3O2}dzphB`aZG*{CUf={EW1RK(?U^qqKgc4d9&M|b7bzgDs_p;%;SB{_4mKR*e zi|?7xdFXuDLl_M9pvjKUz9>j;Y+2Me4p(-R7tY>w7n&=MzPBaoq5q!c5L@x?mgjVrYLHNY!8;g>`CLbR5CT>ey`>N`r9R=n{K%80S zg>FLVP)%e;#7l79C#eW2`!G@>IsS##H-J>CDk48WjDZwVvQYuoOXtv&nL$X6#Tk5I z8?G;m%{eHcDRzt z7myZ7;8INOsAOSL29m;SwxDE4iNflcR0E_*##3~R)9Msh5JMs=rU;By$hQK7EA|W} zTO|s*3H{TrV)Z5P!x?ws=3V8Vl=X4eoivBHUqQcsY(IE|#Dqu0PdSAWRYiRjO6#~Q zTAjMC!djm7kf~Vch=q32xjUihy^dVwJ=uus#91C0#2K@?%u4U3K`dRCEoe>bBC9g)L+(!PBmN5sTd^VDX`;VDCbCCa@^suQ}ZbCvMcS^ z`=})9GB3eWkZdf}PWW(Vo2j*v2y#eDVj?k#IF}p~JLyT$s32C|61I(=^dK0mp)eCk zcP5LxSpO7BhJrH~%xPv~NHPTHJGc;H3R&W^$<)!ysTG|f8Cndw&KWPjJ?m->`Iam- zi9Cd%PeV8)Z01Wh{?po~d8n6(@BZk?9nEdarmeet>apAQJBYiq zv2P1E+_P{~Fa*A6<8w!5|Mil#>Ug?l21=eaR_!T(3ByiHagWJBQ6c`|tcr>1VIhEF z-KZCejRbQQy0szWu258pG z+keTlC{XX2Ce>5MO%Z|>^B`)ur}w!TE(9@kf5~Z9`V&nFX$+Aqy%c_LvF}e}_9A~HSW%?F*Bz}*yu&PwxDJ)TCjqc)p z3}}ZrL^f)sP-O0?#1M^#{8DO_>7`5^8RII8%c#Z3TnUYcG~!YtzHL_0kYvcAWN!$V zlz1(?#gA|5K%%fDwY2K;(oVDmlvmmX0JvT3rVDQmnDClRQUe-~Rlint2HZrVZFAeY zZd?GWo(uaTGO<%5z7S6q1H{KZin$>b&yUF90Gw@Wx3peA*#mYCUQS4?lEHFS4(5&k z&8UT$3nVNHBFS2Y)-IgZAes9EtXfHmE5yA^vFE#b7oB^wcqvg(g^os0S~TQcnJrqO zLD;9UGf+2=X|$);oxLNQ)y$x3)prJ zZ4IfK!DiDz8>EMx^^Y<@8fS7Ant+sb$V;|H_FbBYSv3@#IMvZY2xXSVjG^{O8tSPs zg^#;X&}MWFZ?7wKsxfJy^@zASi-R0vcWw zPYVaAm%}i0r4&&z9T_vct}Fgh*dP|eD5{^Li>!Oav&%M~_^;);%LmYPE;0@G42><& z`(Y^UgVG?11T|yCEfE}bVCS$>sTM*H1visvvl1peP%4)C$?y$V_qy+vX;i5nM$2~z zwQpftIcAc~wyX7#Lu=d4#S6$FQ86|TEnwSbi4j(k|9e+8Gv}Z>4>aN6oop91p~&sU z9=Cb}M&NebPm*dzMDKf;Q|6O2MER$#aB_%b#e5_@EK}qU#_T}GZ&%H6^o?g$` z#JUZ&wTZS@hRnQl3S{qLF#wJhgM`UZ2zX%QC4M8!g4veHs<4MLi2?8z1-mrWfosvA zk}$zKzX4;===uzfHnp%^rwTA}a?76RP^cjPodF0!!z5$vzQ?lX<5I!S%|~7tl3PbP ze-1hzGgSt>4@d2`PXtvAF$h3#%`-A-nuh{_^?~7{3QG(e!{Bw4r^JSXk)?zOP7izt zr*ctbi|T)jV!$O}?9%MFds343ps0b56X6&-I8Y7EvhrWCKi1qK5R+<=L?_j&ICuWc zxiPWxV-l&)<2|1z?LL^oj@XS+XdB$$SejLNX0GGZsur-CG=tXR6#1cmUZEsB! z2&<9`zs|6BX|9m!(X?(6)gY*b4TA5{}W+ zBOQ+XUa~35@#uS^$&sRCrEgVpgr}W;9y3Pks#23;7bbZTPw<0`J;+ZlMQoH1fbVNSp^7)nyPcmf5xaNS&$jWX(^iTeiygE2T~ z8x_O%o#v-_*MH&vBq z=Huh{ML}ikw)b-`p{piY`qi(-RM4&VM0tqFeP1Hz(S=ZK=iQPSOwy8J3^7I{_z^B} z!Jzf4D1**GBs}4^f$n!Jti}_~0;&_R_3O*vh;g10NSfEG#3^ps=xI-;+ouL!W~aVv zbyMq7u~&y7YMG_?{^S>4^@q}?1$is)?kF15^!!(JE4LV3F#LFeAK+yiYxbUSm}2T6 zT>%}a7)p<*!8CbHkB(ep<)R$%#*ArTR4sm2`|6u~S-A^cxe1Wxwisz;W^E@=o4kmH zW>_Fa$e!QJpYZpI&aBGc-#_eJ;f_T&md|j}JD-{`YPCbm5dmJ%LkA%Q;Bi5h zlDH`2@Ays_y0D06zd`84zuIoGQ;RHCc~+9NcwDigcE0h0jIO8#kLU_V;Bjtn=crX@ zf0GcXK5p#Tjo}Q!)l;K!(Ykq+i?S!Ci|AbEmV>Clg<5^MvECslzdq@zkugA!z(B-B zO~hr#wKm<=%IDnS5ABp599p8&N|K|kQT2!wU3JxxG@1c8(A2cGqcxUpO@R6ECw{G2 zbwk89m+rgf=O-F=EY6OdE||IL+ZwV@w+IGx=90XI098eQwnT^bAT*3mz<-!1j3Hs^ z8Vs)d*<|Wjx2ctW?okei{d)SFJEWN_reiJNj=nAq`^XmaB0-ezY;SL08@v2g>~a%- z497d=Z+#+agQo=lwytg1{F7gQ*txlVb6a!yM~~u)H2=9F6nC*H&XVVV@u{dOG!=EJ zu{$RBt(E5@B~=7T$g%@7+0_Wh(C@d z8>l_7ylMXVT~#-7=Ea_FYjkLvRm6M+*60X1itMskDPwm}#$8}KmeP7L=w-!z$yVw4 zCx6Y)V5td58=8537+)mi=c%6>&i7hor;lXUck`v)AqBQNHX+J^t&XjsW4i0E#x0HO z8;iP|aTj)jJEipKUdNPICuUY?7Jy)Z3795>(YnEO+%Ix7&xzz{HWZ>6XfxQJzcL}p z5?P|A`^CRzx+NsN_;^xMHIW(-J2xW4fjFMg_yAwXhYx8!aA59f@-0>CAH99p?czSd zb@gddMTXS1WTpn;5sIjSB3a#kgwvcYC<@bjBu!eJoP0f^qK)B}^7`PbP+O+evc&Qc zr#<_`-uDZFBamQSa18g8&UWM(#$RNf&&7K?QwwTqYm2+P+NxvKEjt#+H^6Z7MtZPJ z6%fnP=*K^t0&*#Q{>{yp=X5rC%R=1drI8`K70;(SRStFA&wQE#Wpf1Ug!%X=VUiRJ z2#V=7b#>)!NWCU1JBxchDW2~EfM8aXCs>mnwc_s5lUtEC>gv23q|3Ai#hCTMtwh*Z zfjN+i1pm-II7Aw{P%R6CpSYI}t$bg2K=IBhM2r1H8G171K!Hv@#e>3R@gSVzd*6Ss zHl4=(&8<0?cjl#MItFA-x+NOaqqB0^u4l69zkRbHmy!VGB|tX}J9@2+-^km4!8Bo9 z0>l z8IUcN|6OSh?-97I(K#Ono&mHPlgNHo+eGyPbeiYgLs@??DKvF28mD>puWV(;3;v7VNA z_pHU`hvsAt9h$SiWzSXz!!of}Q&)YA5^BZWAQj812akAY%Z3c#p_?dbz=Wz>lj;&r zb5#;H+pM2>w#)^2K9H8ft8<_RtB&2~uY|AAZHjf|$2vU3nCfN9tDYLYe8P8R4U$Vn zP*2BU>K7S-)WT3cB?U|C2 zHA)SytN%us22_Eow#9BqPe+Q57LH%GrL!oC%1NnsVS8E z{2&9)#x@_Ae(~)mcP!ev`@=^*C?bx!tb~xIGcY(cnHwhW1f3A;B(w8-f5a$!W~8z2 zY?%2FWk?ZF7{dq;mBeC!Y^ zlB3hdE89B=K9!tE0CxM5$h zS%+9F_AXgjaj82N)Wdhi;j`q4_`ti{(Sa$Y{`^Cd6nmu#D^RvbGxz|FXZ_%4B6`?so+rx>GA)2$!cvnzHD02G}6E; zrtV%bcgCv85o6_T02Ir;0=5aGU4GZl(6IK30RslqHq)h>*FD#|a!&dpCc?x#tF$Kl zUWQf`b`(#=fn~L)SGm4{&hRx)&`T5)6l67j^G(^EFZN;HolM~PlN5NoxNY0E0^pCC zbT&$XOMXf(vuZ;5#mFAS2W2phQ-Ye?(d2L?&8#_tQlC5Td7y0e?DGxFmoLw{`Wqf( zGa6^)i%~OX%$V?>1EfTg%+0K_va;LuJddujH8;~4xN2-p&XynjZZsadXDpph7`*-O zz4u;$YcfL+5&KyN#e$NT$8P^|)|=md;vQ5x4n(|SM@L3hRf#sB>-ZG@lfh=muLS>K#J zGq^Qu6%X+re-=#fmk@beuqGVT;6I5LmfycHZ%g_m7CBY@N6|YQWG4D`%q2nljYsrs zOv&#z9{t9n-$C~ykA6ty+kt+o=0>7Rb)5*9~qCM*;kIu Z+4u01@4PVM3jA;KFCThf-F;8I^uJC=BJuzL literal 0 HcmV?d00001 diff --git a/rust/kcl-lib/tests/nested_main_kcl/unparsed.snap b/rust/kcl-lib/tests/nested_main_kcl/unparsed.snap new file mode 100644 index 000000000..e97ab63f6 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/unparsed.snap @@ -0,0 +1,7 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing nested_main_kcl.kcl +--- +import "nested/foo/bar/main.kcl" as bar + +bar diff --git a/rust/kcl-lib/tests/nested_main_kcl/unparsed@main.kcl.snap b/rust/kcl-lib/tests/nested_main_kcl/unparsed@main.kcl.snap new file mode 100644 index 000000000..1d48b23a8 --- /dev/null +++ b/rust/kcl-lib/tests/nested_main_kcl/unparsed@main.kcl.snap @@ -0,0 +1,8 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing tests/nested_main_kcl/nested/foo/bar/main.kcl +--- +// A donut shape. +startSketchOn(XY) + |> circle(center = [15, 0], radius = 5) + |> revolve(angle = 360, axis = Y) diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_commands.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_commands.snap new file mode 100644 index 000000000..27c86f808 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_commands.snap @@ -0,0 +1,184 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact commands nested_main_kcl.kcl +--- +[ + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "edge_lines_visible", + "hidden": false + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_visible", + "object_id": "[uuid]", + "hidden": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "make_plane", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "x_axis": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "y_axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "size": 60.0, + "clobber": false, + "hide": true + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "close_path", + "path_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "enable_sketch_mode", + "entity_id": "[uuid]", + "ortho": false, + "animated": false, + "adjust_camera": false, + "planar_normal": { + "x": 0.0, + "y": 0.0, + "z": 1.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "extend_path", + "path": "[uuid]", + "segment": { + "type": "arc", + "center": { + "x": 15.0, + "y": 0.0 + }, + "radius": 5.0, + "start": { + "unit": "degrees", + "value": 0.0 + }, + "end": { + "unit": "degrees", + "value": 360.0 + }, + "relative": false + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "move_path_pen", + "path": "[uuid]", + "to": { + "x": 20.0, + "y": 0.0, + "z": 0.0 + } + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "sketch_mode_disable" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "start_path" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "object_bring_to_front", + "object_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "revolve", + "target": "[uuid]", + "origin": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "axis": { + "x": 0.0, + "y": 1.0, + "z": 0.0 + }, + "axis_is_2d": true, + "angle": { + "unit": "degrees", + "value": 360.0 + }, + "tolerance": 0.0000001, + "opposite": "None" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_adjacency_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + }, + { + "cmdId": "[uuid]", + "range": [], + "command": { + "type": "solid3d_get_extrusion_face_info", + "object_id": "[uuid]", + "edge_id": "[uuid]" + } + } +] diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap new file mode 100644 index 000000000..e070c36ff --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap @@ -0,0 +1,6 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Artifact graph flowchart nested_main_kcl.kcl +extension: md +snapshot_kind: binary +--- diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap.md new file mode 100644 index 000000000..112f43416 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/artifact_graph_flowchart.snap.md @@ -0,0 +1,23 @@ +```mermaid +flowchart LR + subgraph path2 [Path] + 2["Path
[43, 81, 1]"] + 3["Segment
[43, 81, 1]"] + 4[Solid2d] + end + 1["Plane
[18, 35, 1]"] + 5["Sweep Revolve
[89, 142, 1]"] + 6[Wall] + %% face_code_ref=Missing NodePath + 7["SweepEdge Adjacent"] + 1 --- 2 + 2 --- 3 + 2 --- 4 + 2 ---- 5 + 5 <--x 3 + 3 --- 6 + 3 --- 7 + 5 --- 6 + 5 --- 7 + 6 --- 7 +``` diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/ast.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/ast.snap new file mode 100644 index 000000000..15c73d126 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/ast.snap @@ -0,0 +1,73 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of parsing nested_windows_main_kcl.kcl +--- +{ + "Ok": { + "body": [ + { + "commentStart": 0, + "end": 0, + "path": { + "type": "Kcl", + "filename": "nested/foo/bar/main.kcl" + }, + "selector": { + "type": "None", + "alias": { + "commentStart": 0, + "end": 0, + "name": "bar", + "start": 0, + "type": "Identifier" + } + }, + "start": 0, + "type": "ImportStatement", + "type": "ImportStatement" + }, + { + "commentStart": 0, + "end": 0, + "expression": { + "abs_path": false, + "commentStart": 0, + "end": 0, + "name": { + "commentStart": 0, + "end": 0, + "name": "bar", + "start": 0, + "type": "Identifier" + }, + "path": [], + "start": 0, + "type": "Name", + "type": "Name" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + } + ], + "commentStart": 0, + "end": 0, + "nonCodeMeta": { + "nonCodeNodes": { + "0": [ + { + "commentStart": 0, + "end": 0, + "start": 0, + "type": "NonCodeNode", + "value": { + "type": "newLine" + } + } + ] + }, + "startNodes": [] + }, + "start": 0 + } +} diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/input.kcl b/rust/kcl-lib/tests/nested_windows_main_kcl/input.kcl new file mode 100644 index 000000000..553539e49 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/input.kcl @@ -0,0 +1,3 @@ +import "nested\foo\bar\main.kcl" as bar + +bar diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/nested/foo/bar/main.kcl b/rust/kcl-lib/tests/nested_windows_main_kcl/nested/foo/bar/main.kcl new file mode 100644 index 000000000..fefdcad20 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/nested/foo/bar/main.kcl @@ -0,0 +1,7 @@ +// A donut shape. +startSketchOn(XY) + |> circle( center = [15, 0], radius = 5 ) + |> revolve( + angle = 360, + axis = Y, + ) diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/ops.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/ops.snap new file mode 100644 index 000000000..a68c3f395 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/ops.snap @@ -0,0 +1,18 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Operations executed nested_main_kcl.kcl +--- +[ + { + "type": "GroupBegin", + "group": { + "type": "ModuleInstance", + "name": "main.kcl", + "moduleId": 0 + }, + "sourceRange": [] + }, + { + "type": "GroupEnd" + } +] diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/program_memory.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/program_memory.snap new file mode 100644 index 000000000..ae79838e6 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/program_memory.snap @@ -0,0 +1,10 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Variables in memory after executing nested_main_kcl.kcl +--- +{ + "bar": { + "type": "Module", + "value": 1 + } +} diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/rendered_model.png b/rust/kcl-lib/tests/nested_windows_main_kcl/rendered_model.png new file mode 100644 index 0000000000000000000000000000000000000000..f6cfde3de07496dc9210c22e443c5160a020efee GIT binary patch literal 153264 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 Z+4u01@4PVM3jA;KFCThf-F;8I^uJC=BJuzL literal 0 HcmV?d00001 diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed.snap new file mode 100644 index 000000000..3e84064eb --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed.snap @@ -0,0 +1,7 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing nested_windows_main_kcl.kcl +--- +import "nested/foo/bar/main.kcl" as bar + +bar diff --git a/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed@main.kcl.snap b/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed@main.kcl.snap new file mode 100644 index 000000000..e7caf8a45 --- /dev/null +++ b/rust/kcl-lib/tests/nested_windows_main_kcl/unparsed@main.kcl.snap @@ -0,0 +1,8 @@ +--- +source: kcl-lib/src/simulation_tests.rs +description: Result of unparsing tests/nested_windows_main_kcl/nested/foo/bar/main.kcl +--- +// A donut shape. +startSketchOn(XY) + |> circle(center = [15, 0], radius = 5) + |> revolve(angle = 360, axis = Y) diff --git a/rust/kcl-lib/tests/subtract_regression08/artifact_graph_flowchart.snap.md b/rust/kcl-lib/tests/subtract_regression08/artifact_graph_flowchart.snap.md index 579d08599..636e90172 100644 --- a/rust/kcl-lib/tests/subtract_regression08/artifact_graph_flowchart.snap.md +++ b/rust/kcl-lib/tests/subtract_regression08/artifact_graph_flowchart.snap.md @@ -86,11 +86,11 @@ flowchart LR 8 --- 18 8 ---- 20 8 --- 21 - 12 --- 22 - 12 <--x 23 + 12 <--x 22 + 12 --- 23 12 <--x 24 - 16 --- 25 - 16 <--x 26 + 16 <--x 25 + 16 --- 26 16 <--x 27 19 --- 22 19 --- 23