From 4813047d375d1b3a8a6701f911b2d99224aa39ca Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Wed, 26 Dec 2018 16:55:53 -0800 Subject: [PATCH 1/9] clock_gettime with time crate and test more lint --- Cargo.lock | 12 ++++++++++++ Cargo.toml | 1 + build/emtests.rs | 7 ++++++- emtests/clock_gettime.c | 10 ++++++++++ emtests/clock_gettime.output | 1 + emtests/clock_gettime.wasm | Bin 0 -> 45352 bytes src/apis/emscripten/time.rs | 24 ++++++++---------------- src/emtests/clock_gettime.rs | 9 +++++++++ src/emtests/mod.rs | 1 + 9 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 emtests/clock_gettime.c create mode 100644 emtests/clock_gettime.output create mode 100644 emtests/clock_gettime.wasm create mode 100644 src/emtests/clock_gettime.rs diff --git a/Cargo.lock b/Cargo.lock index b874d507b..1a41feac5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -811,6 +811,16 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "time" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ucd-util" version = "0.1.1" @@ -899,6 +909,7 @@ dependencies = [ "structopt 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "target-lexicon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "wabt 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "wasmparser 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1030,6 +1041,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "847da467bf0db05882a9e2375934a8a55cffdc9db0d128af1518200260ba1f6c" "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" diff --git a/Cargo.toml b/Cargo.toml index 5c09b9f2a..4968e0803 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,7 @@ rayon = "1.0.3" byteorder = "1" indicatif = "0.10" console = "0.7.1" +time = "0.1.41" [build-dependencies] wabt = "0.7.2" diff --git a/build/emtests.rs b/build/emtests.rs index 2d5306994..591be871b 100644 --- a/build/emtests.rs +++ b/build/emtests.rs @@ -11,7 +11,12 @@ use std::process::Command; static BANNER: &str = "// Rust test file autogenerated with cargo build (build/emtests.rs). // Please do NOT modify it by hand, as it will be reseted on next build.\n"; -const TESTS: [&str; 3] = ["emtests/env.c", "emtests/puts.c", "emtests/printf.c"]; +const TESTS: [&str; 4] = [ + "emtests/env.c", + "emtests/puts.c", + "emtests/printf.c", + "emtests/clock_gettime.c", +]; pub fn compile(file: &str) -> String { let mut output_path = PathBuf::from(file); diff --git a/emtests/clock_gettime.c b/emtests/clock_gettime.c new file mode 100644 index 000000000..d085fb200 --- /dev/null +++ b/emtests/clock_gettime.c @@ -0,0 +1,10 @@ +#include +#include + +// a simple program that simply calls clock_gettime +// not easy to unit test because of non-determinism and so compilation is enough for now +int main () { + struct timespec tp; + clock_gettime(CLOCK_REALTIME, &tp); + printf("clock_gettime\n"); +} diff --git a/emtests/clock_gettime.output b/emtests/clock_gettime.output new file mode 100644 index 000000000..9dab40160 --- /dev/null +++ b/emtests/clock_gettime.output @@ -0,0 +1 @@ +clock_gettime diff --git a/emtests/clock_gettime.wasm b/emtests/clock_gettime.wasm new file mode 100644 index 0000000000000000000000000000000000000000..61b26a79db4f6c11f00bb1c72ff41d3fb4899d48 GIT binary patch literal 45352 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�_(J&hZbKew1{{zTA0%WVJpV7n%oBK_9GFf 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 JS{uQO{{qy7--7@E literal 0 HcmV?d00001 diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index 40c6ba11a..7b3ef97fa 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -1,11 +1,10 @@ use super::utils::{copy_cstr_into_wasm, write_to_buf}; -use libc::{ - c_char, c_int, clock_gettime as libc_clock_gettime, localtime, localtime_r, time, time_t, - timespec, tm, -}; +use libc::{c_char, c_int, localtime, localtime_r, time as libc_time, time_t, timespec, tm}; use std::mem; use std::time::SystemTime; +use time; + use crate::webassembly::Instance; /// emscripten: _gettimeofday @@ -41,19 +40,12 @@ pub extern "C" fn _clock_gettime(clk_id: c_int, tp: c_int, instance: &mut Instan tv_nsec: i32, } - unsafe { - let mut timespec = timespec { - tv_sec: 0, - tv_nsec: 0, - }; - let ret = libc_clock_gettime(clk_id as _, &mut timespec); - if ret != 0 { - return ret; - } + let timespec = time::get_time(); + unsafe { let timespec_struct_ptr = instance.memory_offset_addr(0, tp as _) as *mut GuestTimeSpec; - (*timespec_struct_ptr).tv_sec = timespec.tv_sec as _; - (*timespec_struct_ptr).tv_nsec = timespec.tv_nsec as _; + (*timespec_struct_ptr).tv_sec = timespec.sec as _; + (*timespec_struct_ptr).tv_nsec = timespec.nsec as _; } 0 } @@ -244,7 +236,7 @@ pub extern "C" fn _time(time_p: u32, instance: &mut Instance) -> time_t { unsafe { let time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; - time(time_p_addr) + libc_time(time_p_addr) } } diff --git a/src/emtests/clock_gettime.rs b/src/emtests/clock_gettime.rs new file mode 100644 index 000000000..354865412 --- /dev/null +++ b/src/emtests/clock_gettime.rs @@ -0,0 +1,9 @@ +#[test] +fn test_clock_gettime() { + assert_emscripten_output!( + "../../emtests/clock_gettime.wasm", + "clock_gettime", + vec![], + "../../emtests/clock_gettime.output" + ); +} diff --git a/src/emtests/mod.rs b/src/emtests/mod.rs index b5572f6dd..8e7884ef6 100644 --- a/src/emtests/mod.rs +++ b/src/emtests/mod.rs @@ -4,6 +4,7 @@ // The _common module is not autogenerated, as it provides common macros for the emtests #[macro_use] mod _common; +mod clock_gettime; mod env; mod printf; mod puts; From 8921385fbbd38d3ad237e3884f274284d1d83aab Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Thu, 27 Dec 2018 01:43:38 -0600 Subject: [PATCH 2/9] Update emtests to glob for c/cpp files, use ignores.txt to exclude tests, disable cc out by default --- Cargo.lock | 1 + Cargo.toml | 1 + build/emtests.rs | 122 ++++++++++++++++++++------ build/mod.rs | 1 + emtests/README.md | 15 ++-- emtests/{env.output => env.out} | 0 emtests/env.wasm | Bin 46217 -> 46198 bytes emtests/{printf.output => printf.out} | 0 emtests/printf.wasm | Bin 47042 -> 47023 bytes emtests/{puts.output => puts.out} | 0 emtests/puts.wasm | Bin 23716 -> 23697 bytes src/emtests/_common.rs | 7 +- src/emtests/env.rs | 2 +- src/emtests/printf.rs | 7 +- src/emtests/puts.rs | 7 +- 15 files changed, 115 insertions(+), 48 deletions(-) rename emtests/{env.output => env.out} (100%) rename emtests/{printf.output => printf.out} (100%) rename emtests/{puts.output => puts.out} (100%) diff --git a/Cargo.lock b/Cargo.lock index b874d507b..ff0c21ad7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -888,6 +888,7 @@ dependencies = [ "docopt 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "indicatif 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.44 (git+https://github.com/rust-lang/libc)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 5c09b9f2a..3ab0e0609 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,6 +52,7 @@ console = "0.7.1" [build-dependencies] wabt = "0.7.2" +glob = "0.2.11" # [dev-dependencies] # libffi = "0.6.4" # maplit = "1.0.1" diff --git a/build/emtests.rs b/build/emtests.rs index 2d5306994..43a819402 100644 --- a/build/emtests.rs +++ b/build/emtests.rs @@ -4,36 +4,43 @@ //! - Compile using emcc and get the .wasm from it (wasm) //! - Generate the test that will compare the output of running the .wasm file //! with wasmer with the expected output +use glob::glob; use std::fs; +use std::path::Path; use std::path::PathBuf; use std::process::Command; +use std::fs::File; +use std::io::prelude::*; +use std::io::BufReader; + static BANNER: &str = "// Rust test file autogenerated with cargo build (build/emtests.rs). // Please do NOT modify it by hand, as it will be reseted on next build.\n"; -const TESTS: [&str; 3] = ["emtests/env.c", "emtests/puts.c", "emtests/printf.c"]; +const EXTENSIONS: [&str; 2] = ["c", "cpp"]; +const EXCLUDES: [&str; 1] = ["localtime.c"]; -pub fn compile(file: &str) -> String { +pub fn compile(file: &str, ignores: &Vec) -> Option { let mut output_path = PathBuf::from(file); output_path.set_extension("out"); - let output_str = output_path.to_str().unwrap(); + // let output_str = output_path.to_str().unwrap(); // Compile to .out - Command::new("cc") - .arg(file) - .arg("-o") - .arg(output_str) - .output() - .expect("failed to execute process"); + // Command::new("cc") + // .arg(file) + // .arg("-o") + // .arg(output_str) + // .output() + // .expect("failed to execute process"); // Get the result of .out - let output = Command::new(output_str) - .arg(output_str) - .output() - .expect("failed to execute process"); + // let output = Command::new(output_str) + // .arg(output_str) + // .output() + // .expect("failed to execute process"); // Remove executable - fs::remove_file(output_str).unwrap(); + // fs::remove_file(output_str).unwrap(); let mut output_path = PathBuf::from(file); output_path.set_extension("js"); @@ -54,7 +61,12 @@ pub fn compile(file: &str) -> String { // panic!("{}", output.stderr); // } // Remove js file - fs::remove_file(output_str).unwrap(); + + if Path::new(output_str).is_file() { + fs::remove_file(output_str).unwrap(); + } else { + println!("Output JS not found: {}", output_str); + } let mut output_path = PathBuf::from(file); output_path.set_extension("output"); @@ -65,26 +77,58 @@ pub fn compile(file: &str) -> String { .unwrap() .to_owned(); - let output_str = output_path.to_str().unwrap(); + // + // let output_str = output_path.to_str().unwrap(); // Write the output to file - fs::write(output_str, output.stdout).expect("Unable to write file"); + // fs::write(output_str, output.stdout).expect("Unable to write file"); + let rs_module_name = module_name.to_lowercase(); let rust_test_filepath = format!( concat!(env!("CARGO_MANIFEST_DIR"), "/src/emtests/{}.rs"), - module_name.as_str() + rs_module_name.as_str() ); - let contents = format!("#[test] -fn test_{module_name}() {{ - assert_emscripten_output!(\"../../emtests/{module_name}.wasm\", \"{module_name}\", vec![], \"../../emtests/{module_name}.output\"); + let output_extension = if file.ends_with("c") || module_name.starts_with("test_") { + "out" + } else { + "txt" + }; + + let ignored = if ignores + .iter() + .any(|i| &i.to_lowercase() == &module_name.to_lowercase()) + { + "\n#[ignore]" + } else { + "" + }; + + let module_path = format!("emtests/{}.wasm", module_name); + let test_output_path = format!("emtests/{}.{}", module_name, output_extension); + if !Path::new(&module_path).is_file() { + println!("Path not found to test module: {}", module_path); + None + } else if !Path::new(&test_output_path).is_file() { + println!("Path not found to test output: {}", module_path); + None + } else { + let contents = format!( + "#[test]{ignore} +fn test_{rs_module_name}() {{ + assert_emscripten_output!(\"../../{module_path}\", \"{rs_module_name}\", vec![], \"../../{test_output_path}\"); }} -", module_name=module_name); +", + ignore = ignored, + module_path = module_path, + rs_module_name = rs_module_name, + test_output_path = test_output_path + ); - fs::write(&rust_test_filepath, contents.as_bytes()).unwrap(); - - module_name + fs::write(&rust_test_filepath, contents.as_bytes()).unwrap(); + Some(rs_module_name) + } // panic!("OUTPUT: {:?}", output); } @@ -93,10 +137,26 @@ pub fn build() { let mut modules: Vec = Vec::new(); // modules.reserve_exact(TESTS.len()); - for test in TESTS.iter() { - let moudle_name = compile(test); - modules.push(format!("mod {};", moudle_name)); + + let ignores = read_ignore_list(); + + for ext in EXTENSIONS.iter() { + for entry in glob(&format!("emtests/*.{}", ext)).unwrap() { + match entry { + Ok(path) => { + let test = path.to_str().unwrap(); + if !EXCLUDES.iter().any(|e| test.ends_with(e)) { + if let Some(module_name) = compile(test, &ignores) { + modules.push(format!("mod {};", module_name)); + } + } + } + Err(e) => println!("{:?}", e), + } + } } + assert!(modules.len() > 0, "Expected > 0 modules found"); + modules.insert(0, BANNER.to_string()); modules.insert(1, "// The _common module is not autogenerated, as it provides common macros for the emtests\n#[macro_use]\nmod _common;".to_string()); // We add an empty line @@ -109,3 +169,9 @@ pub fn build() { fs::write(&rust_test_modpath, modfile.as_bytes()).unwrap(); } } + +fn read_ignore_list() -> Vec { + let f = File::open("emtests/ignores.txt").unwrap(); + let f = BufReader::new(f); + f.lines().filter_map(Result::ok).collect() +} diff --git a/build/mod.rs b/build/mod.rs index 392d97413..2bd41a949 100644 --- a/build/mod.rs +++ b/build/mod.rs @@ -1,3 +1,4 @@ +extern crate glob; extern crate wabt; use std::env; diff --git a/emtests/README.md b/emtests/README.md index 92d281ba9..daffe36d6 100644 --- a/emtests/README.md +++ b/emtests/README.md @@ -1,21 +1,24 @@ This directory contains tests for unit testing each of the functions/syscalls that Emscripten will be doing. -If you want to generate the wasm files, you will just need to: +If you want to generate the wasm files, you will just need: + +Have EMCC (version 1.38.21) installed + +Then run: ``` make emtests ``` +**Ignored Tests** +Test names included in `emtests/ignores.txt` will be annotated with `#[ignore]` during test generation. + This process will do something similar to: ``` -cc localtime.c -o localtime.out -# Execute the out file and save its output -./localtime.out > ./localtime.output -rm localtime.out - # Generate the .wasm file emcc localtime.c -o localtime.js # Delte the js file, as we don't need it rm localtime.js ``` + diff --git a/emtests/env.output b/emtests/env.out similarity index 100% rename from emtests/env.output rename to emtests/env.out diff --git a/emtests/env.wasm b/emtests/env.wasm index 0df9e53a585ff3ee61c031b22f089f7fb50ab902..cf10ad39b9f2cbb2acd074d488d77ed8f358400c 100644 GIT binary patch delta 259 zcmeBt$@J|7(}uZBOm?=D=QEj3zRHxx+`uF>*^N0n(StQUH!(AhL4qAf=j7xkGe`ni zskzAol?R&igEv=7Wu7xoU3_LHgAWga1LXP&rxuqaCgo%nX9Sld zCT9m1Bqpaah)q^tvF7)a_V-tmmGSrY=X!RW$#!!Vi=Z5%_v9L-8bt76*mPECSw>B~;5fycM6aI5G%$Z=SBYM32#PvrUL3 pGo#1mu<&A4Mz77MY8HwDshmmTj6kYo@(U1^JJpqM^R~s81puwMRFVJy delta 257 zcmezNf~oT*(}uZBO!jt@=QEiyvQ56il*io1Bs|%bIh)aQ@ZOUmgSp$n_IWEiOq+%E>Iw2rfxX&JHd}OipDG<1Q-A z3&<}n2~I63X7HFS$YRa!FC7q|C@T{X5Ww~7IFsGxXcj>^MxV*KN;Ql=i(e@*GWu+O zt<26S?xT2*Md2QcW4)W=eHMlLEG!NRmstdSCUdHmbNDDeWpQK>@Y&pg9}$mWu7xoU3_LHgDVe$1LV31rxuqaCgo%nX9Sld zCT9m1Bqpaa2u_~HY|Za3=HVeDA@1Sf!FBO0llA5Y%o2)>E|Y(%)G)d%E>mS>blF_4 z#tx(=*Q<*H$*Jn)94?AaSsWPzTsDhnEYV|h+PpJNl9|zQ^X155RYvE{?)3{rfz-<> W;*3CwaoP(I^=i5%-)8Y;s|5jLpia{O delta 246 zcmZ4gp6SqgrVXA$T z09mQI$pw`R&R|w?Y6*i2YkYB1Q8t4sS4w4`Gf-W8W+sCh4}t^ax=$`-7USbCD$NVX zFD?mAEh%PjoZQZA&F>-R=_w;2?&;~tb@eQh&E|{D5{itjlV7RSFuE>IS7l^$-JGGu z4x}a*sEY#0HuZ82SH-6+jtl~>n^`rM=rKBPUKJ+E%;>cFNMx}pqswNC`h}uE>edu- ZMj-WR>I)Ecd%7kcGcyC@X69vU1OYgyOSl~S4KoS2gnpP9*^%Y)zmxq6fNnZ+g>Gh6fP ziy0WmNQfI47;v?3WK`Z<%UmeKs5AM!d<~<{;v5A=MxD*MitLQyI*RvL6z;J&*1IX* vXHmG%!s4KCnMFWna<@`BhmPV?7DomFoy}az9}F0^HvbNu!Mu5TI4>&z#)C4n delta 222 zcmbQZlX1yT#ti~Y@~SF~Ow6pTER4*I3=E7+j0}t{Y|M--j0{ZdjEs!zll7Q#nNKhZ zOrFQ&sISc)pPQOnoLa)5!x~?lRFuu2%au}@=bV_66Q7yMpvQyY0J-{;`IyD{xQj~j z0`iMXf>TS18MG#=FkAB*h#4BnNQfI68gg}SWK`Ll$6P4Gs5|+Ad<~=S;#dVnM%~SE zitLQyx{CK$6z;J&*1IX*XHmG%!s4KCnMFW%a*a|shpysN7DomF-Oaz1J{T}+Z+;Uz PgPEC`fpK$lI3Ftj5zja} diff --git a/src/emtests/_common.rs b/src/emtests/_common.rs index 78b169f54..c279892b0 100644 --- a/src/emtests/_common.rs +++ b/src/emtests/_common.rs @@ -28,6 +28,11 @@ macro_rules! assert_emscripten_output { .unwrap(); let output = capturer.end().unwrap().0; let expected_output = include_str!($expected); - assert_eq!(output, expected_output); + assert!( + output.contains(expected_output), + "Output: `{}` does not contain expected output: `{}`", + output, + expected_output + ); }}; } diff --git a/src/emtests/env.rs b/src/emtests/env.rs index 58b674a3f..b67e176cc 100644 --- a/src/emtests/env.rs +++ b/src/emtests/env.rs @@ -4,6 +4,6 @@ fn test_env() { "../../emtests/env.wasm", "env", vec![], - "../../emtests/env.output" + "../../emtests/env.out" ); } diff --git a/src/emtests/printf.rs b/src/emtests/printf.rs index 4cc250c5f..9114fef3e 100644 --- a/src/emtests/printf.rs +++ b/src/emtests/printf.rs @@ -1,9 +1,4 @@ #[test] fn test_printf() { - assert_emscripten_output!( - "../../emtests/printf.wasm", - "printf", - vec![], - "../../emtests/printf.output" - ); + assert_emscripten_output!("../../emtests/printf.wasm", "printf", vec![], "../../emtests/printf.out"); } diff --git a/src/emtests/puts.rs b/src/emtests/puts.rs index 059d998c4..dae9e2f36 100644 --- a/src/emtests/puts.rs +++ b/src/emtests/puts.rs @@ -1,9 +1,4 @@ #[test] fn test_puts() { - assert_emscripten_output!( - "../../emtests/puts.wasm", - "puts", - vec![], - "../../emtests/puts.output" - ); + assert_emscripten_output!("../../emtests/puts.wasm", "puts", vec![], "../../emtests/puts.out"); } From 81b952ebec56f333355f308407a530b5f6067bd7 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Thu, 27 Dec 2018 01:46:41 -0600 Subject: [PATCH 3/9] Add Emscripten tests/core tests --- ATTRIBUTIONS.md | 106 ++++ emtests/FS_exports.cpp | 29 + emtests/FS_exports.txt | 1 + emtests/FS_exports.wasm | Bin 0 -> 22075 bytes emtests/FS_exports_2.txt | 1 + emtests/FS_exports_assert.txt | 1 + emtests/FS_exports_assert_2.txt | 1 + emtests/closebitcasts.c | 39 ++ emtests/closebitcasts.txt | 2 + emtests/closebitcasts.wasm | Bin 0 -> 45994 bytes emtests/dyncall.c | 29 + emtests/dyncall.txt | 1 + emtests/dyncall.wasm | Bin 0 -> 22171 bytes emtests/dyncall_specific.c | 33 ++ emtests/dyncall_specific.txt | 1 + emtests/dyncall_specific.wasm | Bin 0 -> 22161 bytes emtests/emscripten_get_compiler_setting.c | 18 + emtests/emscripten_get_compiler_setting.out | 2 + emtests/emscripten_get_compiler_setting.wasm | Bin 0 -> 45733 bytes emtests/fnmatch.c | 86 +++ emtests/fnmatch.out | 23 + emtests/getValue_setValue.cpp | 21 + emtests/getValue_setValue.txt | 1 + emtests/getValue_setValue.wasm | Bin 0 -> 21988 bytes emtests/getValue_setValue_assert.txt | 1 + emtests/ignores.txt | 72 +++ emtests/legacy_exported_runtime_numbers.cpp | 19 + emtests/legacy_exported_runtime_numbers.txt | 1 + emtests/legacy_exported_runtime_numbers.wasm | Bin 0 -> 21947 bytes ...legacy_exported_runtime_numbers_assert.txt | 1 + emtests/modularize_closure_pre.c | 15 + emtests/modularize_closure_pre.out | 1 + emtests/modularize_closure_pre.wasm | Bin 0 -> 21931 bytes emtests/stackAlloc.cpp | 35 ++ emtests/stackAlloc.txt | 1 + emtests/stackAlloc.wasm | Bin 0 -> 22893 bytes emtests/stack_overflow.cpp | 39 ++ emtests/stack_overflow.wasm | Bin 0 -> 45879 bytes emtests/test_addr_of_stacked.c | 15 + emtests/test_addr_of_stacked.out | 1 + emtests/test_addr_of_stacked.wasm | Bin 0 -> 45407 bytes emtests/test_alloca.c | 21 + emtests/test_alloca.out | 1 + emtests/test_alloca.wasm | Bin 0 -> 45746 bytes emtests/test_alloca_stack.c | 23 + emtests/test_alloca_stack.out | 1 + emtests/test_alloca_stack.wasm | Bin 0 -> 45540 bytes emtests/test_array2.c | 20 + emtests/test_array2.out | 1 + emtests/test_array2.wasm | Bin 0 -> 45540 bytes emtests/test_array2b.c | 19 + emtests/test_array2b.out | 2 + emtests/test_array2b.wasm | Bin 0 -> 45452 bytes emtests/test_assert.c | 14 + emtests/test_assert.out | 1 + emtests/test_atexit.c | 26 + emtests/test_atexit.out | 4 + emtests/test_atoX.c | 47 ++ emtests/test_atoX.out | 3 + emtests/test_atoX.wasm | Bin 0 -> 47505 bytes emtests/test_atomic.c | 25 + emtests/test_atomic.out | 5 + emtests/test_atomic.wasm | Bin 0 -> 45728 bytes emtests/test_atomic_cxx.cpp | 135 +++++ emtests/test_atomic_cxx.txt | 226 ++++++++ emtests/test_atomic_cxx.wasm | Bin 0 -> 87494 bytes emtests/test_bigarray.c | 29 + emtests/test_bigarray.out | 1 + emtests/test_bitfields.c | 27 + emtests/test_bitfields.out | 1 + emtests/test_bsearch.c | 52 ++ emtests/test_bsearch.out | 10 + emtests/test_bsearch.wasm | Bin 0 -> 46070 bytes emtests/test_bswap64.c | 55 ++ emtests/test_bswap64.out | 7 + emtests/test_ccall.cpp | 54 ++ emtests/test_ccall.out | 30 ++ emtests/test_ccall.wasm | Bin 0 -> 21842 bytes emtests/test_class.c | 35 ++ emtests/test_class.out | 1 + emtests/test_complex.c | 32 ++ emtests/test_complex.out | 8 + emtests/test_complex.wasm | Bin 0 -> 60369 bytes emtests/test_constglobalstructs.c | 28 + emtests/test_constglobalstructs.out | 1 + emtests/test_conststructs.c | 25 + emtests/test_conststructs.out | 1 + emtests/test_copyop.c | 41 ++ emtests/test_copyop.out | 4 + emtests/test_cxx03_do_run.c | 17 + emtests/test_cxx03_do_run.out | 1 + emtests/test_demangle_stacks.cpp | 31 ++ emtests/test_demangle_stacks.out | 1 + emtests/test_demangle_stacks.wasm | Bin 0 -> 22079 bytes emtests/test_demangle_stacks_noassert.cpp | 26 + emtests/test_demangle_stacks_noassert.out | 1 + emtests/test_demangle_stacks_noassert.wasm | Bin 0 -> 22018 bytes emtests/test_direct_string_constant_usage.c | 16 + emtests/test_direct_string_constant_usage.out | 1 + emtests/test_dlfcn_self.c | 30 ++ emtests/test_dlfcn_self.out | 2 + emtests/test_dlmalloc_partial_2.c | 18 + emtests/test_dlmalloc_partial_2.out | 2 + emtests/test_dlmalloc_partial_2.wasm | Bin 0 -> 7709 bytes emtests/test_double_i64_conversion.c | 76 +++ emtests/test_double_i64_conversion.out | 1 + emtests/test_double_varargs.c | 41 ++ emtests/test_double_varargs.out | 2 + emtests/test_double_varargs.wasm | Bin 0 -> 46032 bytes emtests/test_dynamic_cast.c | 19 + emtests/test_dynamic_cast.out | 1 + emtests/test_dynamic_cast_2.c | 17 + emtests/test_dynamic_cast_2.out | 1 + emtests/test_dynamic_cast_b.c | 38 ++ emtests/test_dynamic_cast_b.out | 9 + emtests/test_em_asm.cpp | 53 ++ emtests/test_em_asm.out | 79 +++ emtests/test_em_asm.wasm | Bin 0 -> 48036 bytes emtests/test_em_asm_2.cpp | 152 ++++++ emtests/test_em_asm_2.out | 175 ++++++ emtests/test_em_asm_2.wasm | Bin 0 -> 55453 bytes emtests/test_em_asm_parameter_pack.cpp | 22 + emtests/test_em_asm_parameter_pack.out | 3 + emtests/test_em_asm_parameter_pack.wasm | Bin 0 -> 22255 bytes emtests/test_em_asm_signatures.cpp | 20 + emtests/test_em_asm_signatures.out | 1 + emtests/test_em_asm_signatures.wasm | Bin 0 -> 46343 bytes emtests/test_em_asm_unicode.cpp | 10 + emtests/test_em_asm_unicode.out | 1 + emtests/test_em_asm_unicode.wasm | Bin 0 -> 21923 bytes emtests/test_em_asm_unused_arguments.cpp | 15 + emtests/test_em_asm_unused_arguments.out | 1 + emtests/test_em_asm_unused_arguments.wasm | Bin 0 -> 45402 bytes emtests/test_em_js.cpp | 95 ++++ emtests/test_em_js.out | 27 + emtests/test_em_js.wasm | Bin 0 -> 48335 bytes emtests/test_embind_5.cpp | 56 ++ emtests/test_embind_5.out | 5 + emtests/test_emmalloc.cpp | 304 +++++++++++ emtests/test_emmalloc.txt | 1 + emtests/test_emptyclass.c | 18 + emtests/test_emptyclass.out | 1 + emtests/test_emscripten_api.cpp | 43 ++ emtests/test_emscripten_api.out | 6 + emtests/test_emscripten_api.wasm | Bin 0 -> 78389 bytes .../test_emulate_function_pointer_casts.cpp | 24 + .../test_emulate_function_pointer_casts.wasm | Bin 0 -> 46854 bytes emtests/test_erf.c | 14 + emtests/test_erf.out | 1 + emtests/test_erf.wasm | Bin 0 -> 48742 bytes emtests/test_errar.c | 26 + emtests/test_errar.out | 4 + emtests/test_errar.wasm | Bin 0 -> 45909 bytes emtests/test_exceptions_2.cpp | 23 + emtests/test_exceptions_2.out | 1 + emtests/test_exceptions_2.wasm | Bin 0 -> 50262 bytes emtests/test_exceptions_alias.c | 22 + emtests/test_exceptions_alias.out | 2 + emtests/test_exceptions_convert.cpp | 137 +++++ emtests/test_exceptions_convert.txt | 3 + emtests/test_exceptions_convert.wasm | Bin 0 -> 344236 bytes emtests/test_exceptions_destroy_virtual.cpp | 48 ++ emtests/test_exceptions_destroy_virtual.txt | 3 + emtests/test_exceptions_destroy_virtual.wasm | Bin 0 -> 326997 bytes emtests/test_exceptions_libcxx.cpp | 20 + emtests/test_exceptions_libcxx.txt | 2 + emtests/test_exceptions_libcxx.wasm | Bin 0 -> 325836 bytes emtests/test_exceptions_multi.cpp | 55 ++ emtests/test_exceptions_multi.out | 9 + emtests/test_exceptions_multi.wasm | Bin 0 -> 49762 bytes emtests/test_exceptions_multiple_inherit.cpp | 31 ++ emtests/test_exceptions_multiple_inherit.txt | 4 + emtests/test_exceptions_multiple_inherit.wasm | Bin 0 -> 55218 bytes ...st_exceptions_multiple_inherit_rethrow.cpp | 46 ++ ...st_exceptions_multiple_inherit_rethrow.txt | 1 + ...t_exceptions_multiple_inherit_rethrow.wasm | Bin 0 -> 323996 bytes emtests/test_exceptions_primary.cpp | 29 + emtests/test_exceptions_primary.txt | 3 + emtests/test_exceptions_primary.wasm | Bin 0 -> 325760 bytes emtests/test_exceptions_refcount.cpp | 25 + emtests/test_exceptions_refcount.txt | 3 + emtests/test_exceptions_refcount.wasm | Bin 0 -> 49363 bytes emtests/test_exceptions_resume.cpp | 73 +++ emtests/test_exceptions_resume.txt | 1 + emtests/test_exceptions_resume.wasm | Bin 0 -> 57539 bytes emtests/test_exceptions_rethrow.cpp | 99 ++++ emtests/test_exceptions_rethrow.txt | 2 + emtests/test_exceptions_rethrow.wasm | Bin 0 -> 344700 bytes emtests/test_exceptions_simplify_cfg.cpp | 41 ++ emtests/test_exceptions_simplify_cfg.txt | 3 + emtests/test_exceptions_simplify_cfg.wasm | Bin 0 -> 53382 bytes emtests/test_exceptions_std.cpp | 22 + emtests/test_exceptions_std.out | 2 + emtests/test_exceptions_std.wasm | Bin 0 -> 49604 bytes emtests/test_exceptions_typed.c | 99 ++++ emtests/test_exceptions_typed.out | 77 +++ .../test_exceptions_virtual_inheritance.cpp | 33 ++ .../test_exceptions_virtual_inheritance.txt | 2 + .../test_exceptions_virtual_inheritance.wasm | Bin 0 -> 326992 bytes emtests/test_exceptions_white_list.cpp | 26 + emtests/test_exceptions_white_list.out | 1 + emtests/test_exceptions_white_list.wasm | Bin 0 -> 49431 bytes emtests/test_exceptions_white_list_2.c | 34 ++ emtests/test_exceptions_white_list_2.out | 1 + emtests/test_exceptions_white_list_empty.out | 0 emtests/test_fakestat.c | 17 + emtests/test_fakestat.out | 1 + emtests/test_fast_math.c | 20 + emtests/test_fast_math.out | 1 + emtests/test_fast_math.wasm | Bin 0 -> 59774 bytes emtests/test_fcvt.c | 19 + emtests/test_fcvt.out | 1 + emtests/test_flexarray_struct.c | 28 + emtests/test_flexarray_struct.out | 1 + emtests/test_flexarray_struct.wasm | Bin 0 -> 45419 bytes emtests/test_float32_precise.c | 26 + emtests/test_float32_precise.out | 2 + emtests/test_float32_precise.wasm | Bin 0 -> 45660 bytes emtests/test_float_builtins.c | 46 ++ emtests/test_float_builtins.out | 6 + emtests/test_float_builtins.wasm | Bin 0 -> 48643 bytes emtests/test_floatvars.c | 29 + emtests/test_floatvars.out | 4 + emtests/test_frexp.c | 36 ++ emtests/test_frexp.out | 7 + emtests/test_frexp.wasm | Bin 0 -> 45881 bytes emtests/test_funcptr.c | 40 ++ emtests/test_funcptr.out | 3 + emtests/test_funcptr.wasm | Bin 0 -> 46979 bytes emtests/test_funcptr_import_type.cpp | 31 ++ emtests/test_funcptr_import_type.out | 3 + emtests/test_funcptr_namecollide.c | 31 ++ emtests/test_funcptr_namecollide.out | 1 + emtests/test_funcptr_namecollide.wasm | Bin 0 -> 24112 bytes emtests/test_funcptrfunc.c | 19 + emtests/test_funcptrfunc.out | 1 + emtests/test_funcptrfunc.wasm | Bin 0 -> 45432 bytes emtests/test_funcs.c | 13 + emtests/test_funcs.out | 1 + emtests/test_funcs.wasm | Bin 0 -> 45399 bytes .../test_functionpointer_libfunc_varargs.c | 18 + .../test_functionpointer_libfunc_varargs.out | 1 + .../test_functionpointer_libfunc_varargs.wasm | Bin 0 -> 47585 bytes emtests/test_fwrite_0.c | 25 + emtests/test_fwrite_0.out | 1 + emtests/test_fwrite_0.wasm | Bin 0 -> 48895 bytes emtests/test_getgep.c | 21 + emtests/test_getgep.out | 1 + emtests/test_getgep.wasm | Bin 0 -> 45443 bytes emtests/test_getloadavg.c | 20 + emtests/test_getloadavg.out | 6 + emtests/test_getloadavg.wasm | Bin 0 -> 45761 bytes emtests/test_getopt.c | 47 ++ emtests/test_getopt.out | 2 + emtests/test_getopt.wasm | Bin 0 -> 50573 bytes emtests/test_getopt_long.c | 80 +++ emtests/test_getopt_long.out | 2 + emtests/test_getopt_long.wasm | Bin 0 -> 52909 bytes emtests/test_globaldoubles.c | 30 ++ emtests/test_globaldoubles.out | 2 + emtests/test_globaldoubles.wasm | Bin 0 -> 45630 bytes emtests/test_globals.c | 17 + emtests/test_globals.out | 1 + emtests/test_globals.wasm | Bin 0 -> 45397 bytes emtests/test_gmtime.c | 33 ++ emtests/test_gmtime.out | 1 + emtests/test_gmtime.wasm | Bin 0 -> 45876 bytes emtests/test_hello_world.c | 12 + emtests/test_hello_world.out | 1 + emtests/test_hello_world.wasm | Bin 0 -> 45321 bytes emtests/test_i16_emcc_intrinsic.c | 25 + emtests/test_i16_emcc_intrinsic.out | 1 + emtests/test_i16_emcc_intrinsic.wasm | Bin 0 -> 45671 bytes emtests/test_i32_mul_precise.c | 19 + emtests/test_i32_mul_precise.out | 1 + emtests/test_i32_mul_precise.wasm | Bin 0 -> 45413 bytes emtests/test_i64.c | 36 ++ emtests/test_i64.out | 4 + emtests/test_i64.wasm | Bin 0 -> 45936 bytes emtests/test_i64_2.c | 121 +++++ emtests/test_i64_2.out | 20 + emtests/test_i64_3.c | 31 ++ emtests/test_i64_3.out | 12 + emtests/test_i64_4.c | 23 + emtests/test_i64_4.out | 3 + emtests/test_i64_4.wasm | Bin 0 -> 45481 bytes emtests/test_i64_7z.c | 21 + emtests/test_i64_7z.out | 1 + emtests/test_i64_7z.wasm | Bin 0 -> 45687 bytes emtests/test_i64_b.c | 27 + emtests/test_i64_b.out | 2 + emtests/test_i64_cmp.c | 21 + emtests/test_i64_cmp.out | 1 + emtests/test_i64_cmp2.c | 35 ++ emtests/test_i64_cmp2.out | 9 + emtests/test_i64_cmp2.wasm | Bin 0 -> 45574 bytes emtests/test_i64_double.c | 41 ++ emtests/test_i64_double.out | 2 + emtests/test_i64_i16.c | 17 + emtests/test_i64_i16.out | 1 + emtests/test_i64_i16.wasm | Bin 0 -> 45437 bytes emtests/test_i64_llabs.c | 14 + emtests/test_i64_llabs.out | 1 + emtests/test_i64_llabs.wasm | Bin 0 -> 45422 bytes emtests/test_i64_precise.c | 29 + emtests/test_i64_precise.out | 128 +++++ emtests/test_i64_precise.wasm | Bin 0 -> 46544 bytes emtests/test_i64_precise_needed.c | 18 + emtests/test_i64_precise_needed.out | 1 + emtests/test_i64_precise_needed.wasm | Bin 0 -> 45388 bytes emtests/test_i64_precise_unneeded.c | 23 + emtests/test_i64_precise_unneeded.out | 1 + emtests/test_i64_precise_unneeded.wasm | Bin 0 -> 45514 bytes emtests/test_i64_qdouble.c | 21 + emtests/test_i64_qdouble.out | 1 + emtests/test_i64_qdouble.wasm | Bin 0 -> 45489 bytes emtests/test_i64_umul.c | 25 + emtests/test_i64_umul.out | 1 + emtests/test_i64_umul.wasm | Bin 0 -> 45432 bytes emtests/test_i64_varargs.c | 37 ++ emtests/test_i64_varargs.out | 12 + emtests/test_i64_varargs.wasm | Bin 0 -> 45992 bytes emtests/test_i64_zextneg.c | 20 + emtests/test_i64_zextneg.out | 1 + emtests/test_i64_zextneg.wasm | Bin 0 -> 45481 bytes emtests/test_if.c | 15 + emtests/test_if.out | 1 + emtests/test_if.wasm | Bin 0 -> 45341 bytes emtests/test_if_else.c | 17 + emtests/test_if_else.out | 1 + emtests/test_if_else.wasm | Bin 0 -> 45366 bytes emtests/test_indirectbr.c | 27 + emtests/test_indirectbr.out | 2 + emtests/test_indirectbr.wasm | Bin 0 -> 45589 bytes emtests/test_indirectbr_many.c | 51 ++ emtests/test_indirectbr_many.out | 1 + emtests/test_indirectbr_many.wasm | Bin 0 -> 191416 bytes emtests/test_inherit.c | 29 + emtests/test_inherit.out | 1 + emtests/test_inlinejs.c | 34 ++ emtests/test_inlinejs.out | 2 + emtests/test_inlinejs2.c | 25 + emtests/test_inlinejs2.out | 3 + emtests/test_inlinejs3.c | 41 ++ emtests/test_inlinejs3.out | 17 + emtests/test_intentional_fault.c | 12 + emtests/test_intentional_fault.wasm | Bin 0 -> 21921 bytes emtests/test_intvars.c | 56 ++ emtests/test_intvars.out | 5 + emtests/test_isdigit_l.c | 12 + emtests/test_isdigit_l.out | 1 + emtests/test_isnan.c | 23 + emtests/test_isnan.out | 9 + emtests/test_isnan.wasm | Bin 0 -> 45792 bytes emtests/test_istream.c | 20 + emtests/test_istream.out | 1 + emtests/test_iswdigit.c | 17 + emtests/test_iswdigit.out | 1 + emtests/test_libcextra.c | 17 + emtests/test_libcextra.out | 1 + emtests/test_libcextra.wasm | Bin 0 -> 45444 bytes emtests/test_libgen.c | 46 ++ emtests/test_libgen.out | 9 + emtests/test_libgen.wasm | Bin 0 -> 47593 bytes emtests/test_linked_list.c | 46 ++ emtests/test_linked_list.out | 1 + emtests/test_literal_negative_zero.c | 34 ++ emtests/test_literal_negative_zero.out | 6 + emtests/test_literal_negative_zero.wasm | Bin 0 -> 45502 bytes emtests/test_llrint.c | 14 + emtests/test_llrint.out | 4 + emtests/test_llrint.wasm | Bin 0 -> 45658 bytes emtests/test_llvm_fabs.c | 37 ++ emtests/test_llvm_fabs.out | 6 + emtests/test_llvm_fabs.wasm | Bin 0 -> 45699 bytes emtests/test_llvm_intrinsics.cpp | 198 +++++++ emtests/test_llvm_intrinsics.out | 112 ++++ emtests/test_llvm_intrinsics.wasm | Bin 0 -> 52133 bytes emtests/test_llvm_used.c | 21 + emtests/test_llvm_used.out | 1 + emtests/test_llvmswitch.c | 30 ++ emtests/test_llvmswitch.out | 1 + emtests/test_llvmswitch.wasm | Bin 0 -> 45734 bytes emtests/test_longjmp.c | 40 ++ emtests/test_longjmp.out | 4 + emtests/test_longjmp.wasm | Bin 0 -> 52176 bytes emtests/test_longjmp2.c | 42 ++ emtests/test_longjmp2.out | 6 + emtests/test_longjmp2.wasm | Bin 0 -> 52461 bytes emtests/test_longjmp3.c | 47 ++ emtests/test_longjmp3.out | 7 + emtests/test_longjmp3.wasm | Bin 0 -> 52618 bytes emtests/test_longjmp4.c | 47 ++ emtests/test_longjmp4.out | 4 + emtests/test_longjmp4.wasm | Bin 0 -> 52310 bytes emtests/test_longjmp_exc.c | 35 ++ emtests/test_longjmp_exc.out | 1 + emtests/test_longjmp_exc.wasm | Bin 0 -> 52145 bytes emtests/test_longjmp_funcptr.c | 38 ++ emtests/test_longjmp_funcptr.out | 2 + emtests/test_longjmp_funcptr.wasm | Bin 0 -> 51735 bytes emtests/test_longjmp_repeat.c | 20 + emtests/test_longjmp_repeat.out | 8 + emtests/test_longjmp_repeat.wasm | Bin 0 -> 51762 bytes emtests/test_longjmp_stacked.c | 49 ++ emtests/test_longjmp_stacked.out | 13 + emtests/test_longjmp_stacked.wasm | Bin 0 -> 52712 bytes emtests/test_longjmp_throw.cpp | 43 ++ emtests/test_longjmp_throw.out | 4 + emtests/test_longjmp_throw.wasm | Bin 0 -> 56341 bytes emtests/test_longjmp_unwind.c | 65 +++ emtests/test_longjmp_unwind.out | 1 + emtests/test_longjmp_unwind.wasm | Bin 0 -> 52923 bytes emtests/test_loop.c | 21 + emtests/test_loop.out | 1 + emtests/test_loop.wasm | Bin 0 -> 45501 bytes emtests/test_lower_intrinsics.c | 35 ++ emtests/test_lower_intrinsics.out | 1 + emtests/test_lower_intrinsics.wasm | Bin 0 -> 22299 bytes emtests/test_main_module_static_align.cpp | 18 + emtests/test_main_module_static_align.txt | 1 + emtests/test_main_module_static_align.wasm | Bin 0 -> 22466 bytes emtests/test_main_thread_async_em_asm.cpp | 16 + emtests/test_main_thread_async_em_asm.out | 3 + emtests/test_main_thread_async_em_asm.wasm | Bin 0 -> 45513 bytes emtests/test_mainenv.c | 12 + emtests/test_mainenv.out | 1 + emtests/test_mainenv.wasm | Bin 0 -> 45335 bytes emtests/test_math.c | 80 +++ emtests/test_math.out | 1 + emtests/test_mathfuncptr.c | 18 + emtests/test_mathfuncptr.out | 1 + emtests/test_mathfuncptr.wasm | Bin 0 -> 47898 bytes emtests/test_memcpy2.c | 27 + emtests/test_memcpy2.out | 1 + emtests/test_memcpy2.wasm | Bin 0 -> 46004 bytes emtests/test_memcpy3.c | 58 ++ emtests/test_memcpy3.out | 81 +++ emtests/test_memcpy3.wasm | Bin 0 -> 64583 bytes emtests/test_memcpy_memcmp.c | 50 ++ emtests/test_memcpy_memcmp.out | 1 + emtests/test_memcpy_memcmp.wasm | Bin 0 -> 46979 bytes emtests/test_memmove.c | 15 + emtests/test_memmove.out | 1 + emtests/test_memmove.wasm | Bin 0 -> 23910 bytes emtests/test_memmove2.c | 29 + emtests/test_memmove2.out | 1 + emtests/test_memmove2.wasm | Bin 0 -> 45992 bytes emtests/test_memmove3.c | 15 + emtests/test_memmove3.out | 1 + emtests/test_memmove3.wasm | Bin 0 -> 23943 bytes emtests/test_memorygrowth.c | 42 ++ emtests/test_memorygrowth.wasm | Bin 0 -> 46406 bytes emtests/test_memorygrowth_2.c | 46 ++ emtests/test_memorygrowth_2.wasm | Bin 0 -> 46475 bytes emtests/test_memorygrowth_3.c | 54 ++ emtests/test_memorygrowth_3.txt | 1 + emtests/test_memorygrowth_3.wasm | Bin 0 -> 46923 bytes emtests/test_memorygrowth_wasm_mem_max.c | 29 + emtests/test_memorygrowth_wasm_mem_max.txt | 1 + emtests/test_memorygrowth_wasm_mem_max.wasm | Bin 0 -> 45633 bytes emtests/test_memset.c | 58 ++ emtests/test_memset.out | 81 +++ emtests/test_memset.wasm | Bin 0 -> 64043 bytes emtests/test_mmap.c | 48 ++ emtests/test_mmap.out | 1 + emtests/test_mmap.wasm | Bin 0 -> 50728 bytes emtests/test_mod_globalstruct.c | 25 + emtests/test_mod_globalstruct.out | 1 + emtests/test_negative_zero.c | 57 ++ emtests/test_negative_zero.out | 22 + emtests/test_negative_zero.wasm | Bin 0 -> 47361 bytes emtests/test_nested_struct_varargs.c | 52 ++ emtests/test_nested_struct_varargs.out | 3 + emtests/test_nested_struct_varargs.wasm | Bin 0 -> 46074 bytes emtests/test_nl_types.c | 15 + emtests/test_nl_types.out | 1 + emtests/test_nl_types.wasm | Bin 0 -> 45423 bytes emtests/test_perrar.c | 17 + emtests/test_perrar.out | 1 + emtests/test_perrar.wasm | Bin 0 -> 28093 bytes emtests/test_phiundef.c | 37 ++ emtests/test_phiundef.out | 5 + emtests/test_phiundef.wasm | Bin 0 -> 45474 bytes emtests/test_poll.c | 35 ++ emtests/test_poll.out | 7 + emtests/test_poll.wasm | Bin 0 -> 46592 bytes emtests/test_polymorph.c | 48 ++ emtests/test_polymorph.out | 5 + emtests/test_posixtime.c | 54 ++ emtests/test_posixtime.out | 17 + emtests/test_posixtime.wasm | Bin 0 -> 46864 bytes emtests/test_posixtime_no_monotonic.out | 17 + emtests/test_printf_2.c | 22 + emtests/test_printf_2.out | 2 + emtests/test_printf_2.wasm | Bin 0 -> 45549 bytes emtests/test_printf_more.c | 24 + emtests/test_printf_more.out | 4 + emtests/test_printf_more.wasm | Bin 0 -> 47975 bytes emtests/test_ptrtoint.out | 1 + emtests/test_random_device.cpp | 21 + emtests/test_random_device.txt | 1 + emtests/test_regex.c | 43 ++ emtests/test_regex.out | 2 + emtests/test_regex.wasm | Bin 0 -> 115245 bytes emtests/test_reinterpreted_ptrs.c | 47 ++ emtests/test_reinterpreted_ptrs.out | 1 + emtests/test_relocatable_void_function.c | 17 + emtests/test_relocatable_void_function.out | 1 + emtests/test_relocatable_void_function.wasm | Bin 0 -> 23690 bytes emtests/test_rounding.c | 81 +++ emtests/test_rounding.out | 140 +++++ emtests/test_rounding.wasm | Bin 0 -> 48972 bytes emtests/test_runtime_stacksave.c | 18 + emtests/test_runtime_stacksave.wasm | Bin 0 -> 22190 bytes emtests/test_set_align.c | 56 ++ emtests/test_set_align.out | 8 + emtests/test_set_align.wasm | Bin 0 -> 46150 bytes emtests/test_siglongjmp.c | 28 + emtests/test_siglongjmp.out | 1 + emtests/test_siglongjmp.wasm | Bin 0 -> 29937 bytes emtests/test_simd.c | 73 +++ emtests/test_simd.out | 8 + emtests/test_simd10.c | 26 + emtests/test_simd10.out | 1 + emtests/test_simd11.c | 18 + emtests/test_simd11.out | 1 + emtests/test_simd12.c | 107 ++++ emtests/test_simd12.out | 1 + emtests/test_simd13.c | 26 + emtests/test_simd13.out | 1 + emtests/test_simd14.c | 23 + emtests/test_simd14.out | 2 + emtests/test_simd15.c | 50 ++ emtests/test_simd15.out | 2 + emtests/test_simd16.c | 34 ++ emtests/test_simd16.out | 1 + emtests/test_simd2.c | 40 ++ emtests/test_simd2.out | 4 + emtests/test_simd3.c | 496 ++++++++++++++++++ emtests/test_simd3.out | 1 + emtests/test_simd4.c | 40 ++ emtests/test_simd4.out | 1 + emtests/test_simd5.c | 28 + emtests/test_simd5.out | 6 + emtests/test_simd6.c | 73 +++ emtests/test_simd6.out | 1 + emtests/test_simd7.c | 13 + emtests/test_simd7.out | 1 + emtests/test_simd8.c | 24 + emtests/test_simd8.out | 4 + emtests/test_simd9.c | 18 + emtests/test_simd9.out | 1 + emtests/test_simd_dyncall.cpp | 43 ++ emtests/test_simd_dyncall.txt | 4 + emtests/test_simd_float32x4.c | 127 +++++ emtests/test_simd_float32x4.out | 46 ++ emtests/test_simd_float64x2.c | 112 ++++ emtests/test_simd_float64x2.out | 40 ++ emtests/test_simd_int16x8.c | 103 ++++ emtests/test_simd_int16x8.out | 53 ++ emtests/test_simd_int32x4.c | 106 ++++ emtests/test_simd_int32x4.out | 51 ++ emtests/test_simd_int8x16.c | 113 ++++ emtests/test_simd_int8x16.out | 61 +++ emtests/test_simd_set_epi64x.c | 21 + emtests/test_simd_set_epi64x.out | 1 + emtests/test_simd_shift_right.c | 22 + emtests/test_simd_shift_right.out | 2 + emtests/test_simd_sitofp.c | 16 + emtests/test_simd_sitofp.out | 1 + emtests/test_sintvars.c | 31 ++ emtests/test_sintvars.out | 4 + emtests/test_sintvars.wasm | Bin 0 -> 45902 bytes emtests/test_sizeof.cpp | 34 ++ emtests/test_sizeof.out | 3 + emtests/test_sizeof.wasm | Bin 0 -> 46395 bytes emtests/test_sscanf.c | 100 ++++ emtests/test_sscanf.out | 29 + emtests/test_sscanf.wasm | Bin 0 -> 79782 bytes emtests/test_sscanf_3.c | 24 + emtests/test_sscanf_3.out | 4 + emtests/test_sscanf_3.wasm | Bin 0 -> 76694 bytes emtests/test_sscanf_4.c | 15 + emtests/test_sscanf_4.out | 2 + emtests/test_sscanf_4.wasm | Bin 0 -> 76449 bytes emtests/test_sscanf_5.c | 20 + emtests/test_sscanf_5.out | 3 + emtests/test_sscanf_5.wasm | Bin 0 -> 76514 bytes emtests/test_sscanf_6.c | 36 ++ emtests/test_sscanf_6.out | 3 + emtests/test_sscanf_6.wasm | Bin 0 -> 77192 bytes emtests/test_sscanf_caps.c | 15 + emtests/test_sscanf_caps.out | 1 + emtests/test_sscanf_caps.wasm | Bin 0 -> 76496 bytes emtests/test_sscanf_float.c | 17 + emtests/test_sscanf_float.out | 2 + emtests/test_sscanf_float.wasm | Bin 0 -> 76830 bytes emtests/test_sscanf_hex.cpp | 32 ++ emtests/test_sscanf_hex.out | 2 + emtests/test_sscanf_hex.wasm | Bin 0 -> 82088 bytes emtests/test_sscanf_n.c | 26 + emtests/test_sscanf_n.out | 3 + emtests/test_sscanf_n.wasm | Bin 0 -> 76809 bytes emtests/test_sscanf_other_whitespace.c | 30 ++ emtests/test_sscanf_other_whitespace.out | 1 + emtests/test_sscanf_other_whitespace.wasm | Bin 0 -> 76675 bytes emtests/test_sscanf_skip.c | 22 + emtests/test_sscanf_skip.out | 4 + emtests/test_sscanf_skip.wasm | Bin 0 -> 76565 bytes emtests/test_sscanf_whitespace.c | 23 + emtests/test_sscanf_whitespace.out | 1 + emtests/test_sscanf_whitespace.wasm | Bin 0 -> 76613 bytes emtests/test_stack.c | 27 + emtests/test_stack.out | 1 + emtests/test_stack_align.cpp | 34 ++ emtests/test_stack_align.wasm | Bin 0 -> 45808 bytes emtests/test_stack_byval.c | 28 + emtests/test_stack_byval.out | 1 + emtests/test_stack_restore.c | 37 ++ emtests/test_stack_restore.out | 3 + emtests/test_stack_varargs.c | 23 + emtests/test_stack_varargs.out | 1 + emtests/test_stack_varargs.wasm | Bin 0 -> 46255 bytes emtests/test_stack_void.c | 41 ++ emtests/test_stack_void.out | 1 + emtests/test_stack_void.wasm | Bin 0 -> 50547 bytes emtests/test_static_variable.c | 25 + emtests/test_static_variable.out | 1 + emtests/test_statics.c | 42 ++ emtests/test_statics.out | 2 + emtests/test_statvfs.c | 31 ++ emtests/test_statvfs.out | 13 + emtests/test_statvfs.wasm | Bin 0 -> 46606 bytes emtests/test_std_cout_new.cpp | 26 + emtests/test_std_cout_new.out | 1 + emtests/test_std_cout_new.wasm | Bin 0 -> 322439 bytes emtests/test_stdlibs.c | 59 +++ emtests/test_stdlibs.out | 15 + emtests/test_stdvec.c | 32 ++ emtests/test_stdvec.out | 2 + emtests/test_strcasecmp.c | 86 +++ emtests/test_strcasecmp.out | 62 +++ emtests/test_strcasecmp.wasm | Bin 0 -> 48825 bytes emtests/test_strcmp_uni.c | 23 + emtests/test_strcmp_uni.out | 3 + emtests/test_strcmp_uni.wasm | Bin 0 -> 46615 bytes emtests/test_strftime.cpp | 185 +++++++ emtests/test_strftime.out | 37 ++ emtests/test_strftime.wasm | Bin 0 -> 52209 bytes emtests/test_strings.c | 61 +++ emtests/test_strings.out | 13 + emtests/test_strings.wasm | Bin 0 -> 80245 bytes emtests/test_strndup.c | 45 ++ emtests/test_strndup.out | 6 + emtests/test_strndup.wasm | Bin 0 -> 45840 bytes emtests/test_strptime_days.c | 39 ++ emtests/test_strptime_days.out | 12 + emtests/test_strptime_days.wasm | Bin 0 -> 46101 bytes emtests/test_strptime_reentrant.c | 52 ++ emtests/test_strptime_reentrant.out | 1 + emtests/test_strptime_reentrant.wasm | Bin 0 -> 46711 bytes emtests/test_strptime_tm.c | 65 +++ emtests/test_strptime_tm.out | 18 + emtests/test_strstr.c | 39 ++ emtests/test_strstr.out | 24 + emtests/test_strstr.wasm | Bin 0 -> 51350 bytes emtests/test_strtod.c | 42 ++ emtests/test_strtod.out | 26 + emtests/test_strtod.wasm | Bin 0 -> 60714 bytes emtests/test_strtok.c | 27 + emtests/test_strtok.out | 32 ++ emtests/test_strtok.wasm | Bin 0 -> 48234 bytes emtests/test_strtol_bin.c | 22 + emtests/test_strtol_bin.out | 1 + emtests/test_strtol_bin.wasm | Bin 0 -> 50317 bytes emtests/test_strtol_dec.c | 28 + emtests/test_strtol_dec.out | 1 + emtests/test_strtol_dec.wasm | Bin 0 -> 50482 bytes emtests/test_strtol_hex.c | 28 + emtests/test_strtol_hex.out | 1 + emtests/test_strtol_hex.wasm | Bin 0 -> 50490 bytes emtests/test_strtol_oct.c | 28 + emtests/test_strtol_oct.out | 1 + emtests/test_strtol_oct.wasm | Bin 0 -> 50484 bytes emtests/test_strtold.c | 42 ++ emtests/test_strtold.out | 26 + emtests/test_strtold.wasm | Bin 0 -> 60716 bytes emtests/test_strtoll_bin.c | 22 + emtests/test_strtoll_bin.out | 1 + emtests/test_strtoll_bin.wasm | Bin 0 -> 50329 bytes emtests/test_strtoll_dec.c | 28 + emtests/test_strtoll_dec.out | 1 + emtests/test_strtoll_dec.wasm | Bin 0 -> 50495 bytes emtests/test_strtoll_hex.c | 28 + emtests/test_strtoll_hex.out | 1 + emtests/test_strtoll_hex.wasm | Bin 0 -> 50511 bytes emtests/test_strtoll_oct.c | 28 + emtests/test_strtoll_oct.out | 1 + emtests/test_strtoll_oct.wasm | Bin 0 -> 50497 bytes emtests/test_struct_varargs.c | 78 +++ emtests/test_struct_varargs.out | 7 + emtests/test_struct_varargs.wasm | Bin 0 -> 46384 bytes emtests/test_structs.c | 28 + emtests/test_structs.out | 1 + emtests/test_time_c.c | 14 + emtests/test_time_c.out | 1 + emtests/test_time_c.wasm | Bin 0 -> 45539 bytes emtests/test_timeb.c | 20 + emtests/test_timeb.out | 1 + emtests/test_tinyfuncstr.c | 18 + emtests/test_tinyfuncstr.out | 1 + emtests/test_tracing.c | 22 + emtests/test_tracing.out | 5 + emtests/test_tracing.wasm | Bin 0 -> 21898 bytes emtests/test_transtrcase.c | 18 + emtests/test_transtrcase.out | 2 + emtests/test_transtrcase.wasm | Bin 0 -> 24191 bytes emtests/test_trickystring.c | 23 + emtests/test_trickystring.out | 1 + emtests/test_trickystring.wasm | Bin 0 -> 45415 bytes emtests/test_typeid.c | 59 +++ emtests/test_typeid.out | 23 + emtests/test_uname.c | 21 + emtests/test_uname.out | 6 + emtests/test_uname.wasm | Bin 0 -> 45673 bytes emtests/test_unary_literal.cpp | 41 ++ emtests/test_unary_literal.out | 5 + emtests/test_unary_literal.wasm | Bin 0 -> 45531 bytes emtests/test_utf.c | 22 + emtests/test_utf.out | 2 + emtests/test_utf.wasm | Bin 0 -> 45861 bytes emtests/test_varargs.c | 107 ++++ emtests/test_varargs.out | 13 + emtests/test_varargs.wasm | Bin 0 -> 49723 bytes emtests/test_varargs_multi.c | 41 ++ emtests/test_varargs_multi.out | 3 + emtests/test_varargs_multi.wasm | Bin 0 -> 45867 bytes emtests/test_vprintf.c | 23 + emtests/test_vprintf.out | 2 + emtests/test_vprintf.wasm | Bin 0 -> 45444 bytes emtests/test_vsnprintf.c | 48 ++ emtests/test_vsnprintf.out | 7 + emtests/test_vsnprintf.wasm | Bin 0 -> 47688 bytes emtests/test_wprintf.cpp | 70 +++ emtests/test_wprintf.out | 59 +++ emtests/test_wprintf.wasm | Bin 0 -> 64651 bytes emtests/test_write_stdout_fileno.c | 8 + emtests/test_write_stdout_fileno.out | 1 + emtests/test_write_stdout_fileno.wasm | Bin 0 -> 22375 bytes emtests/test_zero_multiplication.c | 19 + emtests/test_zero_multiplication.out | 1 + emtests/test_zero_multiplication.wasm | Bin 0 -> 45576 bytes emtests/test_zerodiv.c | 35 ++ emtests/test_zerodiv.out | 4 + emtests/test_zerodiv.wasm | Bin 0 -> 45706 bytes .../emscripten_get_compiler_setting.rs | 10 + src/emtests/fs_exports.rs | 10 + src/emtests/getvalue_setvalue.rs | 10 + .../legacy_exported_runtime_numbers.rs | 10 + src/emtests/mod.rs | 170 ++++++ src/emtests/modularize_closure_pre.rs | 10 + src/emtests/printf.rs | 7 +- src/emtests/puts.rs | 7 +- src/emtests/stackalloc.rs | 10 + src/emtests/test_addr_of_stacked.rs | 9 + src/emtests/test_alloca.rs | 9 + src/emtests/test_alloca_stack.rs | 9 + src/emtests/test_array2.rs | 9 + src/emtests/test_array2b.rs | 9 + src/emtests/test_atomic.rs | 9 + src/emtests/test_atox.rs | 9 + src/emtests/test_bsearch.rs | 9 + src/emtests/test_ccall.rs | 10 + src/emtests/test_complex.rs | 9 + src/emtests/test_demangle_stacks.rs | 10 + src/emtests/test_demangle_stacks_noassert.rs | 10 + src/emtests/test_dlmalloc_partial_2.rs | 10 + src/emtests/test_double_varargs.rs | 9 + src/emtests/test_em_asm.rs | 10 + src/emtests/test_em_asm_2.rs | 10 + src/emtests/test_em_asm_parameter_pack.rs | 10 + src/emtests/test_em_asm_signatures.rs | 10 + src/emtests/test_em_asm_unicode.rs | 10 + src/emtests/test_em_asm_unused_arguments.rs | 10 + src/emtests/test_em_js.rs | 10 + src/emtests/test_emscripten_api.rs | 10 + src/emtests/test_erf.rs | 9 + src/emtests/test_errar.rs | 9 + src/emtests/test_exceptions_2.rs | 10 + src/emtests/test_exceptions_multi.rs | 10 + src/emtests/test_exceptions_std.rs | 10 + src/emtests/test_exceptions_white_list.rs | 10 + src/emtests/test_fast_math.rs | 10 + src/emtests/test_flexarray_struct.rs | 9 + src/emtests/test_float32_precise.rs | 9 + src/emtests/test_float_builtins.rs | 10 + src/emtests/test_frexp.rs | 9 + src/emtests/test_funcptr.rs | 9 + src/emtests/test_funcptr_namecollide.rs | 9 + src/emtests/test_funcptrfunc.rs | 9 + src/emtests/test_funcs.rs | 9 + .../test_functionpointer_libfunc_varargs.rs | 9 + src/emtests/test_fwrite_0.rs | 9 + src/emtests/test_getgep.rs | 9 + src/emtests/test_getloadavg.rs | 10 + src/emtests/test_getopt.rs | 10 + src/emtests/test_getopt_long.rs | 10 + src/emtests/test_globaldoubles.rs | 9 + src/emtests/test_globals.rs | 9 + src/emtests/test_gmtime.rs | 9 + src/emtests/test_hello_world.rs | 9 + src/emtests/test_i16_emcc_intrinsic.rs | 10 + src/emtests/test_i32_mul_precise.rs | 9 + src/emtests/test_i64.rs | 10 + src/emtests/test_i64_4.rs | 9 + src/emtests/test_i64_7z.rs | 10 + src/emtests/test_i64_cmp2.rs | 9 + src/emtests/test_i64_i16.rs | 9 + src/emtests/test_i64_llabs.rs | 9 + src/emtests/test_i64_precise.rs | 9 + src/emtests/test_i64_precise_needed.rs | 9 + src/emtests/test_i64_precise_unneeded.rs | 9 + src/emtests/test_i64_qdouble.rs | 9 + src/emtests/test_i64_umul.rs | 9 + src/emtests/test_i64_varargs.rs | 10 + src/emtests/test_i64_zextneg.rs | 9 + src/emtests/test_if.rs | 9 + src/emtests/test_if_else.rs | 9 + src/emtests/test_indirectbr.rs | 9 + src/emtests/test_indirectbr_many.rs | 9 + src/emtests/test_isnan.rs | 9 + src/emtests/test_libcextra.rs | 9 + src/emtests/test_libgen.rs | 9 + src/emtests/test_literal_negative_zero.rs | 9 + src/emtests/test_llrint.rs | 9 + src/emtests/test_llvm_fabs.rs | 9 + src/emtests/test_llvm_intrinsics.rs | 10 + src/emtests/test_llvmswitch.rs | 9 + src/emtests/test_longjmp.rs | 10 + src/emtests/test_longjmp2.rs | 10 + src/emtests/test_longjmp3.rs | 10 + src/emtests/test_longjmp4.rs | 10 + src/emtests/test_longjmp_exc.rs | 10 + src/emtests/test_longjmp_funcptr.rs | 10 + src/emtests/test_longjmp_repeat.rs | 10 + src/emtests/test_longjmp_stacked.rs | 10 + src/emtests/test_longjmp_throw.rs | 10 + src/emtests/test_longjmp_unwind.rs | 10 + src/emtests/test_loop.rs | 9 + src/emtests/test_lower_intrinsics.rs | 10 + src/emtests/test_main_thread_async_em_asm.rs | 10 + src/emtests/test_mainenv.rs | 10 + src/emtests/test_mathfuncptr.rs | 10 + src/emtests/test_memcpy2.rs | 9 + src/emtests/test_memcpy3.rs | 9 + src/emtests/test_memcpy_memcmp.rs | 10 + src/emtests/test_memmove.rs | 9 + src/emtests/test_memmove2.rs | 9 + src/emtests/test_memmove3.rs | 9 + src/emtests/test_memset.rs | 9 + src/emtests/test_mmap.rs | 10 + src/emtests/test_negative_zero.rs | 9 + src/emtests/test_nested_struct_varargs.rs | 9 + src/emtests/test_nl_types.rs | 9 + src/emtests/test_perrar.rs | 10 + src/emtests/test_phiundef.rs | 9 + src/emtests/test_poll.rs | 10 + src/emtests/test_posixtime.rs | 10 + src/emtests/test_printf_2.rs | 9 + src/emtests/test_printf_more.rs | 9 + src/emtests/test_regex.rs | 9 + src/emtests/test_relocatable_void_function.rs | 9 + src/emtests/test_rounding.rs | 9 + src/emtests/test_set_align.rs | 9 + src/emtests/test_siglongjmp.rs | 10 + src/emtests/test_sintvars.rs | 9 + src/emtests/test_sizeof.rs | 9 + src/emtests/test_sscanf.rs | 9 + src/emtests/test_sscanf_3.rs | 9 + src/emtests/test_sscanf_4.rs | 9 + src/emtests/test_sscanf_5.rs | 9 + src/emtests/test_sscanf_6.rs | 9 + src/emtests/test_sscanf_caps.rs | 9 + src/emtests/test_sscanf_float.rs | 9 + src/emtests/test_sscanf_hex.rs | 10 + src/emtests/test_sscanf_n.rs | 9 + src/emtests/test_sscanf_other_whitespace.rs | 10 + src/emtests/test_sscanf_skip.rs | 10 + src/emtests/test_sscanf_whitespace.rs | 10 + src/emtests/test_stack_varargs.rs | 10 + src/emtests/test_stack_void.rs | 10 + src/emtests/test_statvfs.rs | 10 + src/emtests/test_std_cout_new.rs | 10 + src/emtests/test_strcasecmp.rs | 9 + src/emtests/test_strcmp_uni.rs | 9 + src/emtests/test_strftime.rs | 10 + src/emtests/test_strings.rs | 10 + src/emtests/test_strndup.rs | 9 + src/emtests/test_strptime_days.rs | 10 + src/emtests/test_strptime_reentrant.rs | 10 + src/emtests/test_strstr.rs | 9 + src/emtests/test_strtod.rs | 9 + src/emtests/test_strtok.rs | 9 + src/emtests/test_strtol_bin.rs | 9 + src/emtests/test_strtol_dec.rs | 9 + src/emtests/test_strtol_hex.rs | 9 + src/emtests/test_strtol_oct.rs | 9 + src/emtests/test_strtold.rs | 10 + src/emtests/test_strtoll_bin.rs | 9 + src/emtests/test_strtoll_dec.rs | 9 + src/emtests/test_strtoll_hex.rs | 9 + src/emtests/test_strtoll_oct.rs | 9 + src/emtests/test_struct_varargs.rs | 9 + src/emtests/test_time_c.rs | 9 + src/emtests/test_tracing.rs | 10 + src/emtests/test_transtrcase.rs | 9 + src/emtests/test_trickystring.rs | 9 + src/emtests/test_uname.rs | 10 + src/emtests/test_unary_literal.rs | 9 + src/emtests/test_utf.rs | 10 + src/emtests/test_varargs.rs | 10 + src/emtests/test_varargs_multi.rs | 10 + src/emtests/test_vprintf.rs | 9 + src/emtests/test_vsnprintf.rs | 9 + src/emtests/test_wprintf.rs | 10 + src/emtests/test_write_stdout_fileno.rs | 9 + src/emtests/test_zero_multiplication.rs | 10 + src/emtests/test_zerodiv.rs | 9 + 929 files changed, 15699 insertions(+), 2 deletions(-) create mode 100644 emtests/FS_exports.cpp create mode 100644 emtests/FS_exports.txt create mode 100644 emtests/FS_exports.wasm create mode 100644 emtests/FS_exports_2.txt create mode 100644 emtests/FS_exports_assert.txt create mode 100644 emtests/FS_exports_assert_2.txt create mode 100644 emtests/closebitcasts.c create mode 100644 emtests/closebitcasts.txt create mode 100644 emtests/closebitcasts.wasm create mode 100644 emtests/dyncall.c create mode 100644 emtests/dyncall.txt create mode 100644 emtests/dyncall.wasm create mode 100644 emtests/dyncall_specific.c create mode 100644 emtests/dyncall_specific.txt create mode 100644 emtests/dyncall_specific.wasm create mode 100644 emtests/emscripten_get_compiler_setting.c create mode 100644 emtests/emscripten_get_compiler_setting.out create mode 100644 emtests/emscripten_get_compiler_setting.wasm create mode 100644 emtests/fnmatch.c create mode 100644 emtests/fnmatch.out create mode 100644 emtests/getValue_setValue.cpp create mode 100644 emtests/getValue_setValue.txt create mode 100644 emtests/getValue_setValue.wasm create mode 100644 emtests/getValue_setValue_assert.txt create mode 100644 emtests/ignores.txt create mode 100644 emtests/legacy_exported_runtime_numbers.cpp create mode 100644 emtests/legacy_exported_runtime_numbers.txt create mode 100644 emtests/legacy_exported_runtime_numbers.wasm create mode 100644 emtests/legacy_exported_runtime_numbers_assert.txt create mode 100644 emtests/modularize_closure_pre.c create mode 100644 emtests/modularize_closure_pre.out create mode 100644 emtests/modularize_closure_pre.wasm create mode 100644 emtests/stackAlloc.cpp create mode 100644 emtests/stackAlloc.txt create mode 100644 emtests/stackAlloc.wasm create mode 100644 emtests/stack_overflow.cpp create mode 100644 emtests/stack_overflow.wasm create mode 100644 emtests/test_addr_of_stacked.c create mode 100644 emtests/test_addr_of_stacked.out create mode 100644 emtests/test_addr_of_stacked.wasm create mode 100644 emtests/test_alloca.c create mode 100644 emtests/test_alloca.out create mode 100644 emtests/test_alloca.wasm create mode 100644 emtests/test_alloca_stack.c create mode 100644 emtests/test_alloca_stack.out create mode 100644 emtests/test_alloca_stack.wasm create mode 100644 emtests/test_array2.c create mode 100644 emtests/test_array2.out create mode 100644 emtests/test_array2.wasm create mode 100644 emtests/test_array2b.c create mode 100644 emtests/test_array2b.out create mode 100644 emtests/test_array2b.wasm create mode 100644 emtests/test_assert.c create mode 100644 emtests/test_assert.out create mode 100644 emtests/test_atexit.c create mode 100644 emtests/test_atexit.out create mode 100644 emtests/test_atoX.c create mode 100644 emtests/test_atoX.out create mode 100644 emtests/test_atoX.wasm create mode 100644 emtests/test_atomic.c create mode 100644 emtests/test_atomic.out create mode 100644 emtests/test_atomic.wasm create mode 100644 emtests/test_atomic_cxx.cpp create mode 100644 emtests/test_atomic_cxx.txt create mode 100644 emtests/test_atomic_cxx.wasm create mode 100644 emtests/test_bigarray.c create mode 100644 emtests/test_bigarray.out create mode 100644 emtests/test_bitfields.c create mode 100644 emtests/test_bitfields.out create mode 100644 emtests/test_bsearch.c create mode 100644 emtests/test_bsearch.out create mode 100644 emtests/test_bsearch.wasm create mode 100644 emtests/test_bswap64.c create mode 100644 emtests/test_bswap64.out create mode 100644 emtests/test_ccall.cpp create mode 100644 emtests/test_ccall.out create mode 100644 emtests/test_ccall.wasm create mode 100644 emtests/test_class.c create mode 100644 emtests/test_class.out create mode 100644 emtests/test_complex.c create mode 100644 emtests/test_complex.out create mode 100644 emtests/test_complex.wasm create mode 100644 emtests/test_constglobalstructs.c create mode 100644 emtests/test_constglobalstructs.out create mode 100644 emtests/test_conststructs.c create mode 100644 emtests/test_conststructs.out create mode 100644 emtests/test_copyop.c create mode 100644 emtests/test_copyop.out create mode 100644 emtests/test_cxx03_do_run.c create mode 100644 emtests/test_cxx03_do_run.out create mode 100644 emtests/test_demangle_stacks.cpp create mode 100644 emtests/test_demangle_stacks.out create mode 100644 emtests/test_demangle_stacks.wasm create mode 100644 emtests/test_demangle_stacks_noassert.cpp create mode 100644 emtests/test_demangle_stacks_noassert.out create mode 100644 emtests/test_demangle_stacks_noassert.wasm create mode 100644 emtests/test_direct_string_constant_usage.c create mode 100644 emtests/test_direct_string_constant_usage.out create mode 100644 emtests/test_dlfcn_self.c create mode 100644 emtests/test_dlfcn_self.out create mode 100644 emtests/test_dlmalloc_partial_2.c create mode 100644 emtests/test_dlmalloc_partial_2.out create mode 100644 emtests/test_dlmalloc_partial_2.wasm create mode 100644 emtests/test_double_i64_conversion.c create mode 100644 emtests/test_double_i64_conversion.out create mode 100644 emtests/test_double_varargs.c create mode 100644 emtests/test_double_varargs.out create mode 100644 emtests/test_double_varargs.wasm create mode 100644 emtests/test_dynamic_cast.c create mode 100644 emtests/test_dynamic_cast.out create mode 100644 emtests/test_dynamic_cast_2.c create mode 100644 emtests/test_dynamic_cast_2.out create mode 100644 emtests/test_dynamic_cast_b.c create mode 100644 emtests/test_dynamic_cast_b.out create mode 100644 emtests/test_em_asm.cpp create mode 100644 emtests/test_em_asm.out create mode 100644 emtests/test_em_asm.wasm create mode 100644 emtests/test_em_asm_2.cpp create mode 100644 emtests/test_em_asm_2.out create mode 100644 emtests/test_em_asm_2.wasm create mode 100644 emtests/test_em_asm_parameter_pack.cpp create mode 100644 emtests/test_em_asm_parameter_pack.out create mode 100644 emtests/test_em_asm_parameter_pack.wasm create mode 100644 emtests/test_em_asm_signatures.cpp create mode 100644 emtests/test_em_asm_signatures.out create mode 100644 emtests/test_em_asm_signatures.wasm create mode 100644 emtests/test_em_asm_unicode.cpp create mode 100644 emtests/test_em_asm_unicode.out create mode 100644 emtests/test_em_asm_unicode.wasm create mode 100644 emtests/test_em_asm_unused_arguments.cpp create mode 100644 emtests/test_em_asm_unused_arguments.out create mode 100644 emtests/test_em_asm_unused_arguments.wasm create mode 100644 emtests/test_em_js.cpp create mode 100644 emtests/test_em_js.out create mode 100644 emtests/test_em_js.wasm create mode 100644 emtests/test_embind_5.cpp create mode 100644 emtests/test_embind_5.out create mode 100644 emtests/test_emmalloc.cpp create mode 100644 emtests/test_emmalloc.txt create mode 100644 emtests/test_emptyclass.c create mode 100644 emtests/test_emptyclass.out create mode 100644 emtests/test_emscripten_api.cpp create mode 100644 emtests/test_emscripten_api.out create mode 100644 emtests/test_emscripten_api.wasm create mode 100644 emtests/test_emulate_function_pointer_casts.cpp create mode 100644 emtests/test_emulate_function_pointer_casts.wasm create mode 100644 emtests/test_erf.c create mode 100644 emtests/test_erf.out create mode 100644 emtests/test_erf.wasm create mode 100644 emtests/test_errar.c create mode 100644 emtests/test_errar.out create mode 100644 emtests/test_errar.wasm create mode 100644 emtests/test_exceptions_2.cpp create mode 100644 emtests/test_exceptions_2.out create mode 100644 emtests/test_exceptions_2.wasm create mode 100644 emtests/test_exceptions_alias.c create mode 100644 emtests/test_exceptions_alias.out create mode 100644 emtests/test_exceptions_convert.cpp create mode 100644 emtests/test_exceptions_convert.txt create mode 100644 emtests/test_exceptions_convert.wasm create mode 100644 emtests/test_exceptions_destroy_virtual.cpp create mode 100644 emtests/test_exceptions_destroy_virtual.txt create mode 100644 emtests/test_exceptions_destroy_virtual.wasm create mode 100644 emtests/test_exceptions_libcxx.cpp create mode 100644 emtests/test_exceptions_libcxx.txt create mode 100644 emtests/test_exceptions_libcxx.wasm create mode 100644 emtests/test_exceptions_multi.cpp create mode 100644 emtests/test_exceptions_multi.out create mode 100644 emtests/test_exceptions_multi.wasm create mode 100644 emtests/test_exceptions_multiple_inherit.cpp create mode 100644 emtests/test_exceptions_multiple_inherit.txt create mode 100644 emtests/test_exceptions_multiple_inherit.wasm create mode 100644 emtests/test_exceptions_multiple_inherit_rethrow.cpp create mode 100644 emtests/test_exceptions_multiple_inherit_rethrow.txt create mode 100644 emtests/test_exceptions_multiple_inherit_rethrow.wasm create mode 100644 emtests/test_exceptions_primary.cpp create mode 100644 emtests/test_exceptions_primary.txt create mode 100644 emtests/test_exceptions_primary.wasm create mode 100644 emtests/test_exceptions_refcount.cpp create mode 100644 emtests/test_exceptions_refcount.txt create mode 100644 emtests/test_exceptions_refcount.wasm create mode 100644 emtests/test_exceptions_resume.cpp create mode 100644 emtests/test_exceptions_resume.txt create mode 100644 emtests/test_exceptions_resume.wasm create mode 100644 emtests/test_exceptions_rethrow.cpp create mode 100644 emtests/test_exceptions_rethrow.txt create mode 100644 emtests/test_exceptions_rethrow.wasm create mode 100644 emtests/test_exceptions_simplify_cfg.cpp create mode 100644 emtests/test_exceptions_simplify_cfg.txt create mode 100644 emtests/test_exceptions_simplify_cfg.wasm create mode 100644 emtests/test_exceptions_std.cpp create mode 100644 emtests/test_exceptions_std.out create mode 100644 emtests/test_exceptions_std.wasm create mode 100644 emtests/test_exceptions_typed.c create mode 100644 emtests/test_exceptions_typed.out create mode 100644 emtests/test_exceptions_virtual_inheritance.cpp create mode 100644 emtests/test_exceptions_virtual_inheritance.txt create mode 100644 emtests/test_exceptions_virtual_inheritance.wasm create mode 100644 emtests/test_exceptions_white_list.cpp create mode 100644 emtests/test_exceptions_white_list.out create mode 100644 emtests/test_exceptions_white_list.wasm create mode 100644 emtests/test_exceptions_white_list_2.c create mode 100644 emtests/test_exceptions_white_list_2.out create mode 100644 emtests/test_exceptions_white_list_empty.out create mode 100644 emtests/test_fakestat.c create mode 100644 emtests/test_fakestat.out create mode 100644 emtests/test_fast_math.c create mode 100644 emtests/test_fast_math.out create mode 100644 emtests/test_fast_math.wasm create mode 100644 emtests/test_fcvt.c create mode 100644 emtests/test_fcvt.out create mode 100644 emtests/test_flexarray_struct.c create mode 100644 emtests/test_flexarray_struct.out create mode 100644 emtests/test_flexarray_struct.wasm create mode 100644 emtests/test_float32_precise.c create mode 100644 emtests/test_float32_precise.out create mode 100644 emtests/test_float32_precise.wasm create mode 100644 emtests/test_float_builtins.c create mode 100644 emtests/test_float_builtins.out create mode 100644 emtests/test_float_builtins.wasm create mode 100644 emtests/test_floatvars.c create mode 100644 emtests/test_floatvars.out create mode 100644 emtests/test_frexp.c create mode 100644 emtests/test_frexp.out create mode 100644 emtests/test_frexp.wasm create mode 100644 emtests/test_funcptr.c create mode 100644 emtests/test_funcptr.out create mode 100644 emtests/test_funcptr.wasm create mode 100644 emtests/test_funcptr_import_type.cpp create mode 100644 emtests/test_funcptr_import_type.out create mode 100644 emtests/test_funcptr_namecollide.c create mode 100644 emtests/test_funcptr_namecollide.out create mode 100644 emtests/test_funcptr_namecollide.wasm create mode 100644 emtests/test_funcptrfunc.c create mode 100644 emtests/test_funcptrfunc.out create mode 100644 emtests/test_funcptrfunc.wasm create mode 100644 emtests/test_funcs.c create mode 100644 emtests/test_funcs.out create mode 100644 emtests/test_funcs.wasm create mode 100644 emtests/test_functionpointer_libfunc_varargs.c create mode 100644 emtests/test_functionpointer_libfunc_varargs.out create mode 100644 emtests/test_functionpointer_libfunc_varargs.wasm create mode 100644 emtests/test_fwrite_0.c create mode 100644 emtests/test_fwrite_0.out create mode 100644 emtests/test_fwrite_0.wasm create mode 100644 emtests/test_getgep.c create mode 100644 emtests/test_getgep.out create mode 100644 emtests/test_getgep.wasm create mode 100644 emtests/test_getloadavg.c create mode 100644 emtests/test_getloadavg.out create mode 100644 emtests/test_getloadavg.wasm create mode 100644 emtests/test_getopt.c create mode 100644 emtests/test_getopt.out create mode 100644 emtests/test_getopt.wasm create mode 100644 emtests/test_getopt_long.c create mode 100644 emtests/test_getopt_long.out create mode 100644 emtests/test_getopt_long.wasm create mode 100644 emtests/test_globaldoubles.c create mode 100644 emtests/test_globaldoubles.out create mode 100644 emtests/test_globaldoubles.wasm create mode 100644 emtests/test_globals.c create mode 100644 emtests/test_globals.out create mode 100644 emtests/test_globals.wasm create mode 100644 emtests/test_gmtime.c create mode 100644 emtests/test_gmtime.out create mode 100644 emtests/test_gmtime.wasm create mode 100644 emtests/test_hello_world.c create mode 100644 emtests/test_hello_world.out create mode 100644 emtests/test_hello_world.wasm create mode 100644 emtests/test_i16_emcc_intrinsic.c create mode 100644 emtests/test_i16_emcc_intrinsic.out create mode 100644 emtests/test_i16_emcc_intrinsic.wasm create mode 100644 emtests/test_i32_mul_precise.c create mode 100644 emtests/test_i32_mul_precise.out create mode 100644 emtests/test_i32_mul_precise.wasm create mode 100644 emtests/test_i64.c create mode 100644 emtests/test_i64.out create mode 100644 emtests/test_i64.wasm create mode 100644 emtests/test_i64_2.c create mode 100644 emtests/test_i64_2.out create mode 100644 emtests/test_i64_3.c create mode 100644 emtests/test_i64_3.out create mode 100644 emtests/test_i64_4.c create mode 100644 emtests/test_i64_4.out create mode 100644 emtests/test_i64_4.wasm create mode 100644 emtests/test_i64_7z.c create mode 100644 emtests/test_i64_7z.out create mode 100644 emtests/test_i64_7z.wasm create mode 100644 emtests/test_i64_b.c create mode 100644 emtests/test_i64_b.out create mode 100644 emtests/test_i64_cmp.c create mode 100644 emtests/test_i64_cmp.out create mode 100644 emtests/test_i64_cmp2.c create mode 100644 emtests/test_i64_cmp2.out create mode 100644 emtests/test_i64_cmp2.wasm create mode 100644 emtests/test_i64_double.c create mode 100644 emtests/test_i64_double.out create mode 100644 emtests/test_i64_i16.c create mode 100644 emtests/test_i64_i16.out create mode 100644 emtests/test_i64_i16.wasm create mode 100644 emtests/test_i64_llabs.c create mode 100644 emtests/test_i64_llabs.out create mode 100644 emtests/test_i64_llabs.wasm create mode 100644 emtests/test_i64_precise.c create mode 100644 emtests/test_i64_precise.out create mode 100644 emtests/test_i64_precise.wasm create mode 100644 emtests/test_i64_precise_needed.c create mode 100644 emtests/test_i64_precise_needed.out create mode 100644 emtests/test_i64_precise_needed.wasm create mode 100644 emtests/test_i64_precise_unneeded.c create mode 100644 emtests/test_i64_precise_unneeded.out create mode 100644 emtests/test_i64_precise_unneeded.wasm create mode 100644 emtests/test_i64_qdouble.c create mode 100644 emtests/test_i64_qdouble.out create mode 100644 emtests/test_i64_qdouble.wasm create mode 100644 emtests/test_i64_umul.c create mode 100644 emtests/test_i64_umul.out create mode 100644 emtests/test_i64_umul.wasm create mode 100644 emtests/test_i64_varargs.c create mode 100644 emtests/test_i64_varargs.out create mode 100644 emtests/test_i64_varargs.wasm create mode 100644 emtests/test_i64_zextneg.c create mode 100644 emtests/test_i64_zextneg.out create mode 100644 emtests/test_i64_zextneg.wasm create mode 100644 emtests/test_if.c create mode 100644 emtests/test_if.out create mode 100644 emtests/test_if.wasm create mode 100644 emtests/test_if_else.c create mode 100644 emtests/test_if_else.out create mode 100644 emtests/test_if_else.wasm create mode 100644 emtests/test_indirectbr.c create mode 100644 emtests/test_indirectbr.out create mode 100644 emtests/test_indirectbr.wasm create mode 100644 emtests/test_indirectbr_many.c create mode 100644 emtests/test_indirectbr_many.out create mode 100644 emtests/test_indirectbr_many.wasm create mode 100644 emtests/test_inherit.c create mode 100644 emtests/test_inherit.out create mode 100644 emtests/test_inlinejs.c create mode 100644 emtests/test_inlinejs.out create mode 100644 emtests/test_inlinejs2.c create mode 100644 emtests/test_inlinejs2.out create mode 100644 emtests/test_inlinejs3.c create mode 100644 emtests/test_inlinejs3.out create mode 100644 emtests/test_intentional_fault.c create mode 100644 emtests/test_intentional_fault.wasm create mode 100644 emtests/test_intvars.c create mode 100644 emtests/test_intvars.out create mode 100644 emtests/test_isdigit_l.c create mode 100644 emtests/test_isdigit_l.out create mode 100644 emtests/test_isnan.c create mode 100644 emtests/test_isnan.out create mode 100644 emtests/test_isnan.wasm create mode 100644 emtests/test_istream.c create mode 100644 emtests/test_istream.out create mode 100644 emtests/test_iswdigit.c create mode 100644 emtests/test_iswdigit.out create mode 100644 emtests/test_libcextra.c create mode 100644 emtests/test_libcextra.out create mode 100644 emtests/test_libcextra.wasm create mode 100644 emtests/test_libgen.c create mode 100644 emtests/test_libgen.out create mode 100644 emtests/test_libgen.wasm create mode 100644 emtests/test_linked_list.c create mode 100644 emtests/test_linked_list.out create mode 100644 emtests/test_literal_negative_zero.c create mode 100644 emtests/test_literal_negative_zero.out create mode 100644 emtests/test_literal_negative_zero.wasm create mode 100644 emtests/test_llrint.c create mode 100644 emtests/test_llrint.out create mode 100644 emtests/test_llrint.wasm create mode 100644 emtests/test_llvm_fabs.c create mode 100644 emtests/test_llvm_fabs.out create mode 100644 emtests/test_llvm_fabs.wasm create mode 100644 emtests/test_llvm_intrinsics.cpp create mode 100644 emtests/test_llvm_intrinsics.out create mode 100644 emtests/test_llvm_intrinsics.wasm create mode 100644 emtests/test_llvm_used.c create mode 100644 emtests/test_llvm_used.out create mode 100644 emtests/test_llvmswitch.c create mode 100644 emtests/test_llvmswitch.out create mode 100644 emtests/test_llvmswitch.wasm create mode 100644 emtests/test_longjmp.c create mode 100644 emtests/test_longjmp.out create mode 100644 emtests/test_longjmp.wasm create mode 100644 emtests/test_longjmp2.c create mode 100644 emtests/test_longjmp2.out create mode 100644 emtests/test_longjmp2.wasm create mode 100644 emtests/test_longjmp3.c create mode 100644 emtests/test_longjmp3.out create mode 100644 emtests/test_longjmp3.wasm create mode 100644 emtests/test_longjmp4.c create mode 100644 emtests/test_longjmp4.out create mode 100644 emtests/test_longjmp4.wasm create mode 100644 emtests/test_longjmp_exc.c create mode 100644 emtests/test_longjmp_exc.out create mode 100644 emtests/test_longjmp_exc.wasm create mode 100644 emtests/test_longjmp_funcptr.c create mode 100644 emtests/test_longjmp_funcptr.out create mode 100644 emtests/test_longjmp_funcptr.wasm create mode 100644 emtests/test_longjmp_repeat.c create mode 100644 emtests/test_longjmp_repeat.out create mode 100644 emtests/test_longjmp_repeat.wasm create mode 100644 emtests/test_longjmp_stacked.c create mode 100644 emtests/test_longjmp_stacked.out create mode 100644 emtests/test_longjmp_stacked.wasm create mode 100644 emtests/test_longjmp_throw.cpp create mode 100644 emtests/test_longjmp_throw.out create mode 100644 emtests/test_longjmp_throw.wasm create mode 100644 emtests/test_longjmp_unwind.c create mode 100644 emtests/test_longjmp_unwind.out create mode 100644 emtests/test_longjmp_unwind.wasm create mode 100644 emtests/test_loop.c create mode 100644 emtests/test_loop.out create mode 100644 emtests/test_loop.wasm create mode 100644 emtests/test_lower_intrinsics.c create mode 100644 emtests/test_lower_intrinsics.out create mode 100644 emtests/test_lower_intrinsics.wasm create mode 100644 emtests/test_main_module_static_align.cpp create mode 100644 emtests/test_main_module_static_align.txt create mode 100644 emtests/test_main_module_static_align.wasm create mode 100644 emtests/test_main_thread_async_em_asm.cpp create mode 100644 emtests/test_main_thread_async_em_asm.out create mode 100644 emtests/test_main_thread_async_em_asm.wasm create mode 100644 emtests/test_mainenv.c create mode 100644 emtests/test_mainenv.out create mode 100644 emtests/test_mainenv.wasm create mode 100644 emtests/test_math.c create mode 100644 emtests/test_math.out create mode 100644 emtests/test_mathfuncptr.c create mode 100644 emtests/test_mathfuncptr.out create mode 100644 emtests/test_mathfuncptr.wasm create mode 100644 emtests/test_memcpy2.c create mode 100644 emtests/test_memcpy2.out create mode 100644 emtests/test_memcpy2.wasm create mode 100644 emtests/test_memcpy3.c create mode 100644 emtests/test_memcpy3.out create mode 100644 emtests/test_memcpy3.wasm create mode 100644 emtests/test_memcpy_memcmp.c create mode 100644 emtests/test_memcpy_memcmp.out create mode 100644 emtests/test_memcpy_memcmp.wasm create mode 100644 emtests/test_memmove.c create mode 100644 emtests/test_memmove.out create mode 100644 emtests/test_memmove.wasm create mode 100644 emtests/test_memmove2.c create mode 100644 emtests/test_memmove2.out create mode 100644 emtests/test_memmove2.wasm create mode 100644 emtests/test_memmove3.c create mode 100644 emtests/test_memmove3.out create mode 100644 emtests/test_memmove3.wasm create mode 100644 emtests/test_memorygrowth.c create mode 100644 emtests/test_memorygrowth.wasm create mode 100644 emtests/test_memorygrowth_2.c create mode 100644 emtests/test_memorygrowth_2.wasm create mode 100644 emtests/test_memorygrowth_3.c create mode 100644 emtests/test_memorygrowth_3.txt create mode 100644 emtests/test_memorygrowth_3.wasm create mode 100644 emtests/test_memorygrowth_wasm_mem_max.c create mode 100644 emtests/test_memorygrowth_wasm_mem_max.txt create mode 100644 emtests/test_memorygrowth_wasm_mem_max.wasm create mode 100644 emtests/test_memset.c create mode 100644 emtests/test_memset.out create mode 100644 emtests/test_memset.wasm create mode 100644 emtests/test_mmap.c create mode 100644 emtests/test_mmap.out create mode 100644 emtests/test_mmap.wasm create mode 100644 emtests/test_mod_globalstruct.c create mode 100644 emtests/test_mod_globalstruct.out create mode 100644 emtests/test_negative_zero.c create mode 100644 emtests/test_negative_zero.out create mode 100644 emtests/test_negative_zero.wasm create mode 100644 emtests/test_nested_struct_varargs.c create mode 100644 emtests/test_nested_struct_varargs.out create mode 100644 emtests/test_nested_struct_varargs.wasm create mode 100644 emtests/test_nl_types.c create mode 100644 emtests/test_nl_types.out create mode 100644 emtests/test_nl_types.wasm create mode 100644 emtests/test_perrar.c create mode 100644 emtests/test_perrar.out create mode 100644 emtests/test_perrar.wasm create mode 100644 emtests/test_phiundef.c create mode 100644 emtests/test_phiundef.out create mode 100644 emtests/test_phiundef.wasm create mode 100644 emtests/test_poll.c create mode 100644 emtests/test_poll.out create mode 100644 emtests/test_poll.wasm create mode 100644 emtests/test_polymorph.c create mode 100644 emtests/test_polymorph.out create mode 100644 emtests/test_posixtime.c create mode 100644 emtests/test_posixtime.out create mode 100644 emtests/test_posixtime.wasm create mode 100644 emtests/test_posixtime_no_monotonic.out create mode 100644 emtests/test_printf_2.c create mode 100644 emtests/test_printf_2.out create mode 100644 emtests/test_printf_2.wasm create mode 100644 emtests/test_printf_more.c create mode 100644 emtests/test_printf_more.out create mode 100644 emtests/test_printf_more.wasm create mode 100644 emtests/test_ptrtoint.out create mode 100644 emtests/test_random_device.cpp create mode 100644 emtests/test_random_device.txt create mode 100644 emtests/test_regex.c create mode 100644 emtests/test_regex.out create mode 100644 emtests/test_regex.wasm create mode 100644 emtests/test_reinterpreted_ptrs.c create mode 100644 emtests/test_reinterpreted_ptrs.out create mode 100644 emtests/test_relocatable_void_function.c create mode 100644 emtests/test_relocatable_void_function.out create mode 100644 emtests/test_relocatable_void_function.wasm create mode 100644 emtests/test_rounding.c create mode 100644 emtests/test_rounding.out create mode 100644 emtests/test_rounding.wasm create mode 100644 emtests/test_runtime_stacksave.c create mode 100644 emtests/test_runtime_stacksave.wasm create mode 100644 emtests/test_set_align.c create mode 100644 emtests/test_set_align.out create mode 100644 emtests/test_set_align.wasm create mode 100644 emtests/test_siglongjmp.c create mode 100644 emtests/test_siglongjmp.out create mode 100644 emtests/test_siglongjmp.wasm create mode 100644 emtests/test_simd.c create mode 100644 emtests/test_simd.out create mode 100644 emtests/test_simd10.c create mode 100644 emtests/test_simd10.out create mode 100644 emtests/test_simd11.c create mode 100644 emtests/test_simd11.out create mode 100644 emtests/test_simd12.c create mode 100644 emtests/test_simd12.out create mode 100644 emtests/test_simd13.c create mode 100644 emtests/test_simd13.out create mode 100644 emtests/test_simd14.c create mode 100644 emtests/test_simd14.out create mode 100644 emtests/test_simd15.c create mode 100644 emtests/test_simd15.out create mode 100644 emtests/test_simd16.c create mode 100644 emtests/test_simd16.out create mode 100644 emtests/test_simd2.c create mode 100644 emtests/test_simd2.out create mode 100644 emtests/test_simd3.c create mode 100644 emtests/test_simd3.out create mode 100644 emtests/test_simd4.c create mode 100644 emtests/test_simd4.out create mode 100644 emtests/test_simd5.c create mode 100644 emtests/test_simd5.out create mode 100644 emtests/test_simd6.c create mode 100644 emtests/test_simd6.out create mode 100644 emtests/test_simd7.c create mode 100644 emtests/test_simd7.out create mode 100644 emtests/test_simd8.c create mode 100644 emtests/test_simd8.out create mode 100644 emtests/test_simd9.c create mode 100644 emtests/test_simd9.out create mode 100644 emtests/test_simd_dyncall.cpp create mode 100644 emtests/test_simd_dyncall.txt create mode 100644 emtests/test_simd_float32x4.c create mode 100644 emtests/test_simd_float32x4.out create mode 100644 emtests/test_simd_float64x2.c create mode 100644 emtests/test_simd_float64x2.out create mode 100644 emtests/test_simd_int16x8.c create mode 100644 emtests/test_simd_int16x8.out create mode 100644 emtests/test_simd_int32x4.c create mode 100644 emtests/test_simd_int32x4.out create mode 100644 emtests/test_simd_int8x16.c create mode 100644 emtests/test_simd_int8x16.out create mode 100644 emtests/test_simd_set_epi64x.c create mode 100644 emtests/test_simd_set_epi64x.out create mode 100644 emtests/test_simd_shift_right.c create mode 100644 emtests/test_simd_shift_right.out create mode 100644 emtests/test_simd_sitofp.c create mode 100644 emtests/test_simd_sitofp.out create mode 100644 emtests/test_sintvars.c create mode 100644 emtests/test_sintvars.out create mode 100644 emtests/test_sintvars.wasm create mode 100644 emtests/test_sizeof.cpp create mode 100644 emtests/test_sizeof.out create mode 100644 emtests/test_sizeof.wasm create mode 100644 emtests/test_sscanf.c create mode 100644 emtests/test_sscanf.out create mode 100644 emtests/test_sscanf.wasm create mode 100644 emtests/test_sscanf_3.c create mode 100644 emtests/test_sscanf_3.out create mode 100644 emtests/test_sscanf_3.wasm create mode 100644 emtests/test_sscanf_4.c create mode 100644 emtests/test_sscanf_4.out create mode 100644 emtests/test_sscanf_4.wasm create mode 100644 emtests/test_sscanf_5.c create mode 100644 emtests/test_sscanf_5.out create mode 100644 emtests/test_sscanf_5.wasm create mode 100644 emtests/test_sscanf_6.c create mode 100644 emtests/test_sscanf_6.out create mode 100644 emtests/test_sscanf_6.wasm create mode 100644 emtests/test_sscanf_caps.c create mode 100644 emtests/test_sscanf_caps.out create mode 100644 emtests/test_sscanf_caps.wasm create mode 100644 emtests/test_sscanf_float.c create mode 100644 emtests/test_sscanf_float.out create mode 100644 emtests/test_sscanf_float.wasm create mode 100644 emtests/test_sscanf_hex.cpp create mode 100644 emtests/test_sscanf_hex.out create mode 100644 emtests/test_sscanf_hex.wasm create mode 100644 emtests/test_sscanf_n.c create mode 100644 emtests/test_sscanf_n.out create mode 100644 emtests/test_sscanf_n.wasm create mode 100644 emtests/test_sscanf_other_whitespace.c create mode 100644 emtests/test_sscanf_other_whitespace.out create mode 100644 emtests/test_sscanf_other_whitespace.wasm create mode 100644 emtests/test_sscanf_skip.c create mode 100644 emtests/test_sscanf_skip.out create mode 100644 emtests/test_sscanf_skip.wasm create mode 100644 emtests/test_sscanf_whitespace.c create mode 100644 emtests/test_sscanf_whitespace.out create mode 100644 emtests/test_sscanf_whitespace.wasm create mode 100644 emtests/test_stack.c create mode 100644 emtests/test_stack.out create mode 100644 emtests/test_stack_align.cpp create mode 100644 emtests/test_stack_align.wasm create mode 100644 emtests/test_stack_byval.c create mode 100644 emtests/test_stack_byval.out create mode 100644 emtests/test_stack_restore.c create mode 100644 emtests/test_stack_restore.out create mode 100644 emtests/test_stack_varargs.c create mode 100644 emtests/test_stack_varargs.out create mode 100644 emtests/test_stack_varargs.wasm create mode 100644 emtests/test_stack_void.c create mode 100644 emtests/test_stack_void.out create mode 100644 emtests/test_stack_void.wasm create mode 100644 emtests/test_static_variable.c create mode 100644 emtests/test_static_variable.out create mode 100644 emtests/test_statics.c create mode 100644 emtests/test_statics.out create mode 100644 emtests/test_statvfs.c create mode 100644 emtests/test_statvfs.out create mode 100644 emtests/test_statvfs.wasm create mode 100644 emtests/test_std_cout_new.cpp create mode 100644 emtests/test_std_cout_new.out create mode 100644 emtests/test_std_cout_new.wasm create mode 100644 emtests/test_stdlibs.c create mode 100644 emtests/test_stdlibs.out create mode 100644 emtests/test_stdvec.c create mode 100644 emtests/test_stdvec.out create mode 100644 emtests/test_strcasecmp.c create mode 100644 emtests/test_strcasecmp.out create mode 100644 emtests/test_strcasecmp.wasm create mode 100644 emtests/test_strcmp_uni.c create mode 100644 emtests/test_strcmp_uni.out create mode 100644 emtests/test_strcmp_uni.wasm create mode 100644 emtests/test_strftime.cpp create mode 100644 emtests/test_strftime.out create mode 100644 emtests/test_strftime.wasm create mode 100644 emtests/test_strings.c create mode 100644 emtests/test_strings.out create mode 100644 emtests/test_strings.wasm create mode 100644 emtests/test_strndup.c create mode 100644 emtests/test_strndup.out create mode 100644 emtests/test_strndup.wasm create mode 100644 emtests/test_strptime_days.c create mode 100644 emtests/test_strptime_days.out create mode 100644 emtests/test_strptime_days.wasm create mode 100644 emtests/test_strptime_reentrant.c create mode 100644 emtests/test_strptime_reentrant.out create mode 100644 emtests/test_strptime_reentrant.wasm create mode 100644 emtests/test_strptime_tm.c create mode 100644 emtests/test_strptime_tm.out create mode 100644 emtests/test_strstr.c create mode 100644 emtests/test_strstr.out create mode 100644 emtests/test_strstr.wasm create mode 100644 emtests/test_strtod.c create mode 100644 emtests/test_strtod.out create mode 100644 emtests/test_strtod.wasm create mode 100644 emtests/test_strtok.c create mode 100644 emtests/test_strtok.out create mode 100644 emtests/test_strtok.wasm create mode 100644 emtests/test_strtol_bin.c create mode 100644 emtests/test_strtol_bin.out create mode 100644 emtests/test_strtol_bin.wasm create mode 100644 emtests/test_strtol_dec.c create mode 100644 emtests/test_strtol_dec.out create mode 100644 emtests/test_strtol_dec.wasm create mode 100644 emtests/test_strtol_hex.c create mode 100644 emtests/test_strtol_hex.out create mode 100644 emtests/test_strtol_hex.wasm create mode 100644 emtests/test_strtol_oct.c create mode 100644 emtests/test_strtol_oct.out create mode 100644 emtests/test_strtol_oct.wasm create mode 100644 emtests/test_strtold.c create mode 100644 emtests/test_strtold.out create mode 100644 emtests/test_strtold.wasm create mode 100644 emtests/test_strtoll_bin.c create mode 100644 emtests/test_strtoll_bin.out create mode 100644 emtests/test_strtoll_bin.wasm create mode 100644 emtests/test_strtoll_dec.c create mode 100644 emtests/test_strtoll_dec.out create mode 100644 emtests/test_strtoll_dec.wasm create mode 100644 emtests/test_strtoll_hex.c create mode 100644 emtests/test_strtoll_hex.out create mode 100644 emtests/test_strtoll_hex.wasm create mode 100644 emtests/test_strtoll_oct.c create mode 100644 emtests/test_strtoll_oct.out create mode 100644 emtests/test_strtoll_oct.wasm create mode 100644 emtests/test_struct_varargs.c create mode 100644 emtests/test_struct_varargs.out create mode 100644 emtests/test_struct_varargs.wasm create mode 100644 emtests/test_structs.c create mode 100644 emtests/test_structs.out create mode 100644 emtests/test_time_c.c create mode 100644 emtests/test_time_c.out create mode 100644 emtests/test_time_c.wasm create mode 100644 emtests/test_timeb.c create mode 100644 emtests/test_timeb.out create mode 100644 emtests/test_tinyfuncstr.c create mode 100644 emtests/test_tinyfuncstr.out create mode 100644 emtests/test_tracing.c create mode 100644 emtests/test_tracing.out create mode 100644 emtests/test_tracing.wasm create mode 100644 emtests/test_transtrcase.c create mode 100644 emtests/test_transtrcase.out create mode 100644 emtests/test_transtrcase.wasm create mode 100644 emtests/test_trickystring.c create mode 100644 emtests/test_trickystring.out create mode 100644 emtests/test_trickystring.wasm create mode 100644 emtests/test_typeid.c create mode 100644 emtests/test_typeid.out create mode 100644 emtests/test_uname.c create mode 100644 emtests/test_uname.out create mode 100644 emtests/test_uname.wasm create mode 100644 emtests/test_unary_literal.cpp create mode 100644 emtests/test_unary_literal.out create mode 100644 emtests/test_unary_literal.wasm create mode 100644 emtests/test_utf.c create mode 100644 emtests/test_utf.out create mode 100644 emtests/test_utf.wasm create mode 100644 emtests/test_varargs.c create mode 100644 emtests/test_varargs.out create mode 100644 emtests/test_varargs.wasm create mode 100644 emtests/test_varargs_multi.c create mode 100644 emtests/test_varargs_multi.out create mode 100644 emtests/test_varargs_multi.wasm create mode 100644 emtests/test_vprintf.c create mode 100644 emtests/test_vprintf.out create mode 100644 emtests/test_vprintf.wasm create mode 100644 emtests/test_vsnprintf.c create mode 100644 emtests/test_vsnprintf.out create mode 100644 emtests/test_vsnprintf.wasm create mode 100644 emtests/test_wprintf.cpp create mode 100644 emtests/test_wprintf.out create mode 100644 emtests/test_wprintf.wasm create mode 100644 emtests/test_write_stdout_fileno.c create mode 100644 emtests/test_write_stdout_fileno.out create mode 100644 emtests/test_write_stdout_fileno.wasm create mode 100644 emtests/test_zero_multiplication.c create mode 100644 emtests/test_zero_multiplication.out create mode 100644 emtests/test_zero_multiplication.wasm create mode 100644 emtests/test_zerodiv.c create mode 100644 emtests/test_zerodiv.out create mode 100644 emtests/test_zerodiv.wasm create mode 100644 src/emtests/emscripten_get_compiler_setting.rs create mode 100644 src/emtests/fs_exports.rs create mode 100644 src/emtests/getvalue_setvalue.rs create mode 100644 src/emtests/legacy_exported_runtime_numbers.rs create mode 100644 src/emtests/modularize_closure_pre.rs create mode 100644 src/emtests/stackalloc.rs create mode 100644 src/emtests/test_addr_of_stacked.rs create mode 100644 src/emtests/test_alloca.rs create mode 100644 src/emtests/test_alloca_stack.rs create mode 100644 src/emtests/test_array2.rs create mode 100644 src/emtests/test_array2b.rs create mode 100644 src/emtests/test_atomic.rs create mode 100644 src/emtests/test_atox.rs create mode 100644 src/emtests/test_bsearch.rs create mode 100644 src/emtests/test_ccall.rs create mode 100644 src/emtests/test_complex.rs create mode 100644 src/emtests/test_demangle_stacks.rs create mode 100644 src/emtests/test_demangle_stacks_noassert.rs create mode 100644 src/emtests/test_dlmalloc_partial_2.rs create mode 100644 src/emtests/test_double_varargs.rs create mode 100644 src/emtests/test_em_asm.rs create mode 100644 src/emtests/test_em_asm_2.rs create mode 100644 src/emtests/test_em_asm_parameter_pack.rs create mode 100644 src/emtests/test_em_asm_signatures.rs create mode 100644 src/emtests/test_em_asm_unicode.rs create mode 100644 src/emtests/test_em_asm_unused_arguments.rs create mode 100644 src/emtests/test_em_js.rs create mode 100644 src/emtests/test_emscripten_api.rs create mode 100644 src/emtests/test_erf.rs create mode 100644 src/emtests/test_errar.rs create mode 100644 src/emtests/test_exceptions_2.rs create mode 100644 src/emtests/test_exceptions_multi.rs create mode 100644 src/emtests/test_exceptions_std.rs create mode 100644 src/emtests/test_exceptions_white_list.rs create mode 100644 src/emtests/test_fast_math.rs create mode 100644 src/emtests/test_flexarray_struct.rs create mode 100644 src/emtests/test_float32_precise.rs create mode 100644 src/emtests/test_float_builtins.rs create mode 100644 src/emtests/test_frexp.rs create mode 100644 src/emtests/test_funcptr.rs create mode 100644 src/emtests/test_funcptr_namecollide.rs create mode 100644 src/emtests/test_funcptrfunc.rs create mode 100644 src/emtests/test_funcs.rs create mode 100644 src/emtests/test_functionpointer_libfunc_varargs.rs create mode 100644 src/emtests/test_fwrite_0.rs create mode 100644 src/emtests/test_getgep.rs create mode 100644 src/emtests/test_getloadavg.rs create mode 100644 src/emtests/test_getopt.rs create mode 100644 src/emtests/test_getopt_long.rs create mode 100644 src/emtests/test_globaldoubles.rs create mode 100644 src/emtests/test_globals.rs create mode 100644 src/emtests/test_gmtime.rs create mode 100644 src/emtests/test_hello_world.rs create mode 100644 src/emtests/test_i16_emcc_intrinsic.rs create mode 100644 src/emtests/test_i32_mul_precise.rs create mode 100644 src/emtests/test_i64.rs create mode 100644 src/emtests/test_i64_4.rs create mode 100644 src/emtests/test_i64_7z.rs create mode 100644 src/emtests/test_i64_cmp2.rs create mode 100644 src/emtests/test_i64_i16.rs create mode 100644 src/emtests/test_i64_llabs.rs create mode 100644 src/emtests/test_i64_precise.rs create mode 100644 src/emtests/test_i64_precise_needed.rs create mode 100644 src/emtests/test_i64_precise_unneeded.rs create mode 100644 src/emtests/test_i64_qdouble.rs create mode 100644 src/emtests/test_i64_umul.rs create mode 100644 src/emtests/test_i64_varargs.rs create mode 100644 src/emtests/test_i64_zextneg.rs create mode 100644 src/emtests/test_if.rs create mode 100644 src/emtests/test_if_else.rs create mode 100644 src/emtests/test_indirectbr.rs create mode 100644 src/emtests/test_indirectbr_many.rs create mode 100644 src/emtests/test_isnan.rs create mode 100644 src/emtests/test_libcextra.rs create mode 100644 src/emtests/test_libgen.rs create mode 100644 src/emtests/test_literal_negative_zero.rs create mode 100644 src/emtests/test_llrint.rs create mode 100644 src/emtests/test_llvm_fabs.rs create mode 100644 src/emtests/test_llvm_intrinsics.rs create mode 100644 src/emtests/test_llvmswitch.rs create mode 100644 src/emtests/test_longjmp.rs create mode 100644 src/emtests/test_longjmp2.rs create mode 100644 src/emtests/test_longjmp3.rs create mode 100644 src/emtests/test_longjmp4.rs create mode 100644 src/emtests/test_longjmp_exc.rs create mode 100644 src/emtests/test_longjmp_funcptr.rs create mode 100644 src/emtests/test_longjmp_repeat.rs create mode 100644 src/emtests/test_longjmp_stacked.rs create mode 100644 src/emtests/test_longjmp_throw.rs create mode 100644 src/emtests/test_longjmp_unwind.rs create mode 100644 src/emtests/test_loop.rs create mode 100644 src/emtests/test_lower_intrinsics.rs create mode 100644 src/emtests/test_main_thread_async_em_asm.rs create mode 100644 src/emtests/test_mainenv.rs create mode 100644 src/emtests/test_mathfuncptr.rs create mode 100644 src/emtests/test_memcpy2.rs create mode 100644 src/emtests/test_memcpy3.rs create mode 100644 src/emtests/test_memcpy_memcmp.rs create mode 100644 src/emtests/test_memmove.rs create mode 100644 src/emtests/test_memmove2.rs create mode 100644 src/emtests/test_memmove3.rs create mode 100644 src/emtests/test_memset.rs create mode 100644 src/emtests/test_mmap.rs create mode 100644 src/emtests/test_negative_zero.rs create mode 100644 src/emtests/test_nested_struct_varargs.rs create mode 100644 src/emtests/test_nl_types.rs create mode 100644 src/emtests/test_perrar.rs create mode 100644 src/emtests/test_phiundef.rs create mode 100644 src/emtests/test_poll.rs create mode 100644 src/emtests/test_posixtime.rs create mode 100644 src/emtests/test_printf_2.rs create mode 100644 src/emtests/test_printf_more.rs create mode 100644 src/emtests/test_regex.rs create mode 100644 src/emtests/test_relocatable_void_function.rs create mode 100644 src/emtests/test_rounding.rs create mode 100644 src/emtests/test_set_align.rs create mode 100644 src/emtests/test_siglongjmp.rs create mode 100644 src/emtests/test_sintvars.rs create mode 100644 src/emtests/test_sizeof.rs create mode 100644 src/emtests/test_sscanf.rs create mode 100644 src/emtests/test_sscanf_3.rs create mode 100644 src/emtests/test_sscanf_4.rs create mode 100644 src/emtests/test_sscanf_5.rs create mode 100644 src/emtests/test_sscanf_6.rs create mode 100644 src/emtests/test_sscanf_caps.rs create mode 100644 src/emtests/test_sscanf_float.rs create mode 100644 src/emtests/test_sscanf_hex.rs create mode 100644 src/emtests/test_sscanf_n.rs create mode 100644 src/emtests/test_sscanf_other_whitespace.rs create mode 100644 src/emtests/test_sscanf_skip.rs create mode 100644 src/emtests/test_sscanf_whitespace.rs create mode 100644 src/emtests/test_stack_varargs.rs create mode 100644 src/emtests/test_stack_void.rs create mode 100644 src/emtests/test_statvfs.rs create mode 100644 src/emtests/test_std_cout_new.rs create mode 100644 src/emtests/test_strcasecmp.rs create mode 100644 src/emtests/test_strcmp_uni.rs create mode 100644 src/emtests/test_strftime.rs create mode 100644 src/emtests/test_strings.rs create mode 100644 src/emtests/test_strndup.rs create mode 100644 src/emtests/test_strptime_days.rs create mode 100644 src/emtests/test_strptime_reentrant.rs create mode 100644 src/emtests/test_strstr.rs create mode 100644 src/emtests/test_strtod.rs create mode 100644 src/emtests/test_strtok.rs create mode 100644 src/emtests/test_strtol_bin.rs create mode 100644 src/emtests/test_strtol_dec.rs create mode 100644 src/emtests/test_strtol_hex.rs create mode 100644 src/emtests/test_strtol_oct.rs create mode 100644 src/emtests/test_strtold.rs create mode 100644 src/emtests/test_strtoll_bin.rs create mode 100644 src/emtests/test_strtoll_dec.rs create mode 100644 src/emtests/test_strtoll_hex.rs create mode 100644 src/emtests/test_strtoll_oct.rs create mode 100644 src/emtests/test_struct_varargs.rs create mode 100644 src/emtests/test_time_c.rs create mode 100644 src/emtests/test_tracing.rs create mode 100644 src/emtests/test_transtrcase.rs create mode 100644 src/emtests/test_trickystring.rs create mode 100644 src/emtests/test_uname.rs create mode 100644 src/emtests/test_unary_literal.rs create mode 100644 src/emtests/test_utf.rs create mode 100644 src/emtests/test_varargs.rs create mode 100644 src/emtests/test_varargs_multi.rs create mode 100644 src/emtests/test_vprintf.rs create mode 100644 src/emtests/test_vsnprintf.rs create mode 100644 src/emtests/test_wprintf.rs create mode 100644 src/emtests/test_write_stdout_fileno.rs create mode 100644 src/emtests/test_zero_multiplication.rs create mode 100644 src/emtests/test_zerodiv.rs diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md index ef001c6e2..eff1434ab 100644 --- a/ATTRIBUTIONS.md +++ b/ATTRIBUTIONS.md @@ -12,6 +12,7 @@ These are the different project that we used as inspiration: - [greenwasm](https://github.com/Kimundi/greenwasm): for their [spectests framework](https://github.com/Kimundi/greenwasm/tree/master/greenwasm-spectest) - [wasmtime](/wasmtime): on their [mmap implementation](https://github.com/CraneStation/wasmtime/blob/3f24098edc81cd9bf0f877fb7fba018cad0f039e/lib/runtime/src/mmap.rs). - [stackoverflow](https://stackoverflow.com/a/45795699/1072990): to create an efficient HashMap with pair keys. +- [Emscripten](https://github.com/kripken/emscripten): for emtests test sources to ensure compatibility. We would love to hear from you if you think we can take inspiration from other projects that we haven't covered here. 😊 @@ -495,3 +496,108 @@ the License, but only in their entirety and only with respect to the Combined Software. ``` +### Emscripten +``` +Emscripten is available under 2 licenses, the MIT license and the +University of Illinois/NCSA Open Source License. + +Both are permissive open source licenses, with little if any +practical difference between them. + +The reason for offering both is that (1) the MIT license is +well-known, while (2) the University of Illinois/NCSA Open Source +License allows Emscripten's code to be integrated upstream into +LLVM, which uses that license, should the opportunity arise. + +The full text of both licenses follows. + +============================================================================== + +Copyright (c) 2010-2014 Emscripten authors, see AUTHORS file. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +============================================================================== + +Copyright (c) 2010-2014 Emscripten authors, see AUTHORS file. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal with the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimers. + + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimers + in the documentation and/or other materials provided with the + distribution. + + Neither the names of Mozilla, + nor the names of its contributors may be used to endorse + or promote products derived from this Software without specific prior + written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. + +============================================================================== + +This program uses portions of Node.js source code located in src/library_path.js, +in accordance with the terms of the MIT license. Node's license follows: + + """ + Copyright Joyent, Inc. and other Node contributors. All rights reserved. + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + """ + +The musl libc project is bundled in this repo, and it has the MIT license, see +system/lib/libc/musl/COPYRIGHT + +The third_party/ subdirectory contains code with other licenses. None of it is +used by default, but certain options use it (e.g., the optional closure compiler +flag will run closure compiler from third_party/). + +``` diff --git a/emtests/FS_exports.cpp b/emtests/FS_exports.cpp new file mode 100644 index 000000000..93f28fdc6 --- /dev/null +++ b/emtests/FS_exports.cpp @@ -0,0 +1,29 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +int main() { +#ifdef USE_FILES + if (fopen("nonexistend", "r")) { + puts("that was bad"); + return 1; + } +#endif +#ifdef DIRECT + EM_ASM({ + FS.createDataFile("/", "file.txt", [1, 2, 3]); + }); +#else + EM_ASM({ + Module["FS_createDataFile"]("/", "file.txt", [1, 2, 3]); + }); +#endif + EM_ASM({ + // use eval, so that the compiler can't see FS usage statically + eval('out("Data: " + JSON.stringify(MEMFS.getFileDataAsRegularArray(FS.root.contents["file.txt"])))'); + }); +} + diff --git a/emtests/FS_exports.txt b/emtests/FS_exports.txt new file mode 100644 index 000000000..04c28ed56 --- /dev/null +++ b/emtests/FS_exports.txt @@ -0,0 +1 @@ +Data: [1,2,3] diff --git a/emtests/FS_exports.wasm b/emtests/FS_exports.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f2a6b3e5af4c566f667682d5da09788578d50a1a GIT binary patch literal 22075 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 VKWtjr?Ju + +int main(int argc, char **argv) { + float x = argc%17, y = (argc+1)*(argc+2)*(argc+3)*(argc+4)*(argc*5); + y *= 1<<30; + y *= -13; + if (argc == 17) { x++; y--; } + int *xi = (int*)&x; + int *yi = (int*)&y; + int z = *xi - *yi; + while (z % 15) { + z++; + } + printf("!%d\n", z); + + double xd = x, yd = y; + yd = yd*yd; + yd = yd*yd; + int *xl = (int*)&xd; + int *xh = &((int*)&xd)[1]; + int *yl = (int*)&yd; + int *yh = &((int*)&yd)[1]; + int l = *xl - *yl; + int h = *xh - *yh; + while (l % 15) { + l++; + h += 3; + } + printf("%d,%d!\n", l, h); + return 0; +} + diff --git a/emtests/closebitcasts.txt b/emtests/closebitcasts.txt new file mode 100644 index 000000000..f97366cd2 --- /dev/null +++ b/emtests/closebitcasts.txt @@ -0,0 +1,2 @@ +!1787576325 +589815810,-179981561! diff --git a/emtests/closebitcasts.wasm b/emtests/closebitcasts.wasm new file mode 100644 index 0000000000000000000000000000000000000000..452969dd830f880b26f54f3c79e5fd7881526772 GIT binary patch literal 45994 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𝔄k&h7<6`M_bJ7URQk3ExeM@4=rTU$l! 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 RW>3y|ov`Dbtey1U_zy*>MEU># literal 0 HcmV?d00001 diff --git a/emtests/dyncall.c b/emtests/dyncall.c new file mode 100644 index 000000000..2dedbe302 --- /dev/null +++ b/emtests/dyncall.c @@ -0,0 +1,29 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +void waka(int x, int y, int z) { + EM_ASM({ + out('received ' + [$0, $1, $2] + '.'); + }, x, y, z); +} + +int main() { + EM_ASM({ +#if EXPORTED + // test for additional things being exported + assert(Module['addFunction']); + assert(Module['lengthBytesUTF8']); + // the main test here + Module['dynCall']('viii', $0, [1, 4, 9]); +#else + dynCall('viii', $0, [1, 4, 9]); +#endif + }, &waka); +} + diff --git a/emtests/dyncall.txt b/emtests/dyncall.txt new file mode 100644 index 000000000..ed5226507 --- /dev/null +++ b/emtests/dyncall.txt @@ -0,0 +1 @@ +received 1,4,9. diff --git a/emtests/dyncall.wasm b/emtests/dyncall.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4e76b2fe6de087fdce804f8610607b567728b4d6 GIT binary patch literal 22171 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 I_Gj_@Kak#tr2qf` literal 0 HcmV?d00001 diff --git a/emtests/dyncall_specific.c b/emtests/dyncall_specific.c new file mode 100644 index 000000000..cd9d91b7b --- /dev/null +++ b/emtests/dyncall_specific.c @@ -0,0 +1,33 @@ +/* + * Copyright 2018 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +void waka(int x, int y, int z) { + EM_ASM({ + out('received ' + [$0, $1, $2] + '.'); + }, x, y, z); +} + +int main() { + EM_ASM({ +#if DIRECT + dynCall_viii($0, 1, 4, 9); + return; +#endif +#if EXPORTED + Module['dynCall_viii']($0, 1, 4, 9); + return; +#endif +#if FROM_OUTSIDE + eval("Module['dynCall_viii'](" + $0 + ", 1, 4, 9)"); + return; +#endif + throw "no test mode"; + }, &waka); +} + diff --git a/emtests/dyncall_specific.txt b/emtests/dyncall_specific.txt new file mode 100644 index 000000000..ed5226507 --- /dev/null +++ b/emtests/dyncall_specific.txt @@ -0,0 +1 @@ +received 1,4,9. diff --git a/emtests/dyncall_specific.wasm b/emtests/dyncall_specific.wasm new file mode 100644 index 0000000000000000000000000000000000000000..75f051601b182a7a68700936ed5ea734ca693e7f GIT binary patch literal 22161 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 IN0IaY06zGKx&QzG literal 0 HcmV?d00001 diff --git a/emtests/emscripten_get_compiler_setting.c b/emtests/emscripten_get_compiler_setting.c new file mode 100644 index 000000000..eee3a7dcd --- /dev/null +++ b/emtests/emscripten_get_compiler_setting.c @@ -0,0 +1,18 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + printf("QS: %d\n", emscripten_get_compiler_setting("QUANTUM_SIZE")); + assert((unsigned)emscripten_get_compiler_setting("OPT_LEVEL") <= 3); + assert((unsigned)emscripten_get_compiler_setting("DEBUG_LEVEL") <= 4); + printf("EV: %s\n", (char*)emscripten_get_compiler_setting("EMSCRIPTEN_VERSION")); +} + diff --git a/emtests/emscripten_get_compiler_setting.out b/emtests/emscripten_get_compiler_setting.out new file mode 100644 index 000000000..cd5200647 --- /dev/null +++ b/emtests/emscripten_get_compiler_setting.out @@ -0,0 +1,2 @@ +QS: 4 +EV: waka diff --git a/emtests/emscripten_get_compiler_setting.wasm b/emtests/emscripten_get_compiler_setting.wasm new file mode 100644 index 0000000000000000000000000000000000000000..19545ff7c43b356b8eaf3dfeccdea25029e6675a GIT binary patch literal 45733 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 L@x-(}Esp*JczQzP literal 0 HcmV?d00001 diff --git a/emtests/fnmatch.c b/emtests/fnmatch.c new file mode 100644 index 000000000..4b3bf9385 --- /dev/null +++ b/emtests/fnmatch.c @@ -0,0 +1,86 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// Begin test_fnmatch.cpp +#include +#include +#include +#include + +using namespace std; + +class TestCase { +public: + TestCase(const string& pattern, const string& testString, int flags, int expected) : + pattern(pattern), + testString(testString), + flags(flags), + expected(expected) + {} + string pattern; + string testString; + int flags; + int expected; +}; + +int main() +{ + vector testCases; + + testCases.push_back(TestCase("*","anything",0,0)); + testCases.push_back(TestCase("*.txt","readme.txt",0,0)); + testCases.push_back(TestCase("*.txt","readme.info",0,FNM_NOMATCH)); + testCases.push_back(TestCase("*.t?t","readme.txt",0,0)); + testCases.push_back(TestCase("*.t?t","readme.tot",0,0)); + testCases.push_back(TestCase("*.t?t","readme.txxt",0,FNM_NOMATCH)); + testCases.push_back(TestCase("[a-g]1","c1",0,0)); + testCases.push_back(TestCase("[a-g]1","i1",0,FNM_NOMATCH)); + testCases.push_back(TestCase("[!a-g]1","i1",0,0)); + testCases.push_back(TestCase("a\\*","anything",0,FNM_NOMATCH)); + testCases.push_back(TestCase("a\\*","a*",0,0)); + testCases.push_back(TestCase("a\\*","a*",FNM_NOESCAPE,FNM_NOMATCH)); + testCases.push_back(TestCase("a\\*","a\\*",FNM_NOESCAPE,0)); + testCases.push_back(TestCase("*readme","/etc/readme",0,0)); + testCases.push_back(TestCase("*readme","/etc/readme",FNM_PATHNAME,FNM_NOMATCH)); + testCases.push_back(TestCase("/*/readme","/etc/readme",FNM_PATHNAME,0)); + testCases.push_back(TestCase("*readme","/etc/.readme",0,0)); + testCases.push_back(TestCase("*readme",".readme",FNM_PERIOD,FNM_NOMATCH)); + testCases.push_back(TestCase("*.readme","/etc/.readme",FNM_PERIOD,0)); + testCases.push_back(TestCase("*.readme","/etc/.readme",FNM_PERIOD|FNM_PATHNAME,FNM_NOMATCH)); + testCases.push_back(TestCase("/*/.readme","/etc/.readme",FNM_PERIOD|FNM_PATHNAME,0)); + testCases.push_back(TestCase("ReAdME","readme",0,FNM_NOMATCH)); + + bool pass = true; + + for (vector::const_iterator it = testCases.begin(); it != testCases.end(); ++it) + { + int result = fnmatch(it->pattern.c_str(), it->testString.c_str(), it->flags); + if (result == it->expected) + cout << "Pass: "; + else + { + cout << "Fail: "; + pass = false; + } + + cout << "fnmatch(" << it->pattern << ", " << it->testString << ", " + << it->flags << ") returned " << result << ", expected " + << it->expected << endl; + } + + if (pass) + { + cout << "All tests passed." << endl; + return 0; + } + else + { + cout << "Some tests failed." << endl; + return 1; + } +} + diff --git a/emtests/fnmatch.out b/emtests/fnmatch.out new file mode 100644 index 000000000..303f7449b --- /dev/null +++ b/emtests/fnmatch.out @@ -0,0 +1,23 @@ +Pass: fnmatch(*, anything, 0) returned 0, expected 0 +Pass: fnmatch(*.txt, readme.txt, 0) returned 0, expected 0 +Pass: fnmatch(*.txt, readme.info, 0) returned 1, expected 1 +Pass: fnmatch(*.t?t, readme.txt, 0) returned 0, expected 0 +Pass: fnmatch(*.t?t, readme.tot, 0) returned 0, expected 0 +Pass: fnmatch(*.t?t, readme.txxt, 0) returned 1, expected 1 +Pass: fnmatch([a-g]1, c1, 0) returned 0, expected 0 +Pass: fnmatch([a-g]1, i1, 0) returned 1, expected 1 +Pass: fnmatch([!a-g]1, i1, 0) returned 0, expected 0 +Pass: fnmatch(a\*, anything, 0) returned 1, expected 1 +Pass: fnmatch(a\*, a*, 0) returned 0, expected 0 +Pass: fnmatch(a\*, a*, 2) returned 1, expected 1 +Pass: fnmatch(a\*, a\*, 2) returned 0, expected 0 +Pass: fnmatch(*readme, /etc/readme, 0) returned 0, expected 0 +Pass: fnmatch(*readme, /etc/readme, 1) returned 1, expected 1 +Pass: fnmatch(/*/readme, /etc/readme, 1) returned 0, expected 0 +Pass: fnmatch(*readme, /etc/.readme, 0) returned 0, expected 0 +Pass: fnmatch(*readme, .readme, 4) returned 1, expected 1 +Pass: fnmatch(*.readme, /etc/.readme, 4) returned 0, expected 0 +Pass: fnmatch(*.readme, /etc/.readme, 5) returned 1, expected 1 +Pass: fnmatch(/*/.readme, /etc/.readme, 5) returned 0, expected 0 +Pass: fnmatch(ReAdME, readme, 0) returned 1, expected 1 +All tests passed. diff --git a/emtests/getValue_setValue.cpp b/emtests/getValue_setValue.cpp new file mode 100644 index 000000000..af60382e0 --- /dev/null +++ b/emtests/getValue_setValue.cpp @@ -0,0 +1,21 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +int main() { +#ifdef DIRECT + EM_ASM({ + setValue(8, 1234, 'i32'); + out('|' + getValue(8, 'i32') + '|'); + }); +#else + EM_ASM({ + Module['setValue'](8, 1234, 'i32'); + out('|' + Module['getValue'](8, 'i32') + '|'); + }); +#endif +} + diff --git a/emtests/getValue_setValue.txt b/emtests/getValue_setValue.txt new file mode 100644 index 000000000..7cfd2285f --- /dev/null +++ b/emtests/getValue_setValue.txt @@ -0,0 +1 @@ +|1234| diff --git a/emtests/getValue_setValue.wasm b/emtests/getValue_setValue.wasm new file mode 100644 index 0000000000000000000000000000000000000000..94767d5648b72cd6c5437aed0df216744aa0c3d1 GIT binary patch literal 21988 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 literal 0 HcmV?d00001 diff --git a/emtests/getValue_setValue_assert.txt b/emtests/getValue_setValue_assert.txt new file mode 100644 index 000000000..794dde0b1 --- /dev/null +++ b/emtests/getValue_setValue_assert.txt @@ -0,0 +1 @@ +'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ) diff --git a/emtests/ignores.txt b/emtests/ignores.txt new file mode 100644 index 000000000..e71e7b546 --- /dev/null +++ b/emtests/ignores.txt @@ -0,0 +1,72 @@ +test_ccall +test_demangle_stacks +emscripten_get_compiler_setting +fs_exports +getvalue_setvalue +legacy_exported_runtime_numbers +modularize_closure_pre +stackalloc +test_demangle_stacks_noassert +test_dlmalloc_partial_2 +test_em_asm +test_em_asm_2 +test_em_asm_parameter_pack +test_em_asm_signatures +test_em_asm_unicode +test_em_asm_unused_arguments +test_em_js +test_emscripten_api +test_exceptions_2 +test_exceptions_multi +test_exceptions_std +test_exceptions_white_list +test_fast_math +test_float_builtins +test_getopt +test_getopt_long +test_getloadavg +test_i16_emcc_intrinsic +test_i64 +test_i64_7z +test_i64_varargs +test_llvm_intrinsics +test_longjmp2 +test_longjmp3 +test_longjmp4 +test_longjmp +test_longjmp_exc +test_longjmp_funcptr +test_longjmp_repeat +test_longjmp_stacked +test_longjmp_throw +test_longjmp_unwind +test_lower_intrinsics +test_main_thread_async_em_asm +test_mainenv +test_mathfuncptr +test_memcpy_memcmp +test_mmap +test_perrar +test_poll +test_posixtime +test_siglongjmp +test_sscanf_hex +test_sscanf_whitespace +test_sscanf_other_whitespace +test_sscanf_skip +test_stack_varargs +test_stack_void +test_statvfs +test_strings +test_strptime_days +test_strtold +test_tracing +test_uname +test_utf +test_varargs_multi +test_varargs +test_zero_multiplication +test_strftime +test_wprintf +test_std_cout_new +test_strptime_reentrant \ No newline at end of file diff --git a/emtests/legacy_exported_runtime_numbers.cpp b/emtests/legacy_exported_runtime_numbers.cpp new file mode 100644 index 000000000..24bcced17 --- /dev/null +++ b/emtests/legacy_exported_runtime_numbers.cpp @@ -0,0 +1,19 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +int main() { +#ifdef DIRECT + EM_ASM({ + out('|' + ALLOC_DYNAMIC + '|'); + }); +#else + EM_ASM({ + out('|' + Module['ALLOC_DYNAMIC'] + '|'); + }); +#endif +} + diff --git a/emtests/legacy_exported_runtime_numbers.txt b/emtests/legacy_exported_runtime_numbers.txt new file mode 100644 index 000000000..a12955e26 --- /dev/null +++ b/emtests/legacy_exported_runtime_numbers.txt @@ -0,0 +1 @@ +|3| diff --git a/emtests/legacy_exported_runtime_numbers.wasm b/emtests/legacy_exported_runtime_numbers.wasm new file mode 100644 index 0000000000000000000000000000000000000000..fc75972713f3eabab4f39f576b61014c6fb0a07a GIT binary patch literal 21947 zcma)k37D0|vG)1)17~!GVG&o}78hI+HPOTd4domrm z-RfmB8Sk|0^+EUU-M#MDd-}*2lDXbD5pNU8^pu?E3fm+*0FSQ`OsWX+q>M@{+3%(%3<{=wX~#t`}Uo?-q@*7hN*5Ht1hjq zysB%Vj41!;c4LRmozFV^%uHyS*Qfm~r4`lD&N(|JRmWRzyQJ&w%>3)B$^tQa&9(W9 z+c9Gy-N4fAugw2}g!r$WyWY^Db8uCMtAaagQ`t6MZoZ|0QE*wEuGd_AVB3=sS7TD{e$5bgZoG(p7%%P<2b!E}5f~_BY?$`Sxyq z%N!rIzqztw$4s-R{jD8t>5^%Z@VhfJW||T+A7oB2jA4>FF>2rKhRRNvlN#Ri4~A#w z&I+}Yi|P_gwrbq5n~ZQvx4&7CUUOTA8#`u7vn+q@-zq!)J=3@$`8RgTTP?*!miR5p zbgk@|Y1F`y*L0}vm?>#c;$>QTxrV14aq6kZ9@+fVQ%`MpaEf zh?K)}xkg?fnSMS~a+u5HGsU?#yLjufqOH%eh7zmD#OF&Setp*c8JYY(uZ`Q_`4?h? zCvo{)8~3QM?{YUg!0aG@M}-?5;!!{Bo-c_oI?TDdBitS3gKGChlwZ}Tm7j5M#~^$W zRlCgzHYfR@!u>b?n;N>m;cu5xE@@tc>xOQ5ubcZH{15Y%yM7+}d3mqO4fpczHUdBW zs&Y5U!z3@CEqC{OxZjiX#U2(LWtE3jMtQ~qVUkzoUh(h>70*jlm3z~}n_j+qH}|0@ zg+64R`#tK2{oc>~OvFO@qH=ea55gpoSObYfa#AIza)W#f^7BEZ8{@0eu-r}aK^WsJ zH#HgLm%9gjJm`zJ%*QfcDn9AsNk8vZx)(&j3zmD8=RBJEgobiue!W?0n@`(eo8Qj8 z)KaufmHXDu`-b!l@)`6EI=Nv1zc7rdO$_j@kBKz${bJrv=Hh@~ zSWMEY0IPz0_j0!(z=j}SRPA04@N$qZsc<_*!A?5vg8&}{dAjS%0AB|AY=!F?g0Pd) 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 Lkblbg`1k(<&bwA+ literal 0 HcmV?d00001 diff --git a/emtests/legacy_exported_runtime_numbers_assert.txt b/emtests/legacy_exported_runtime_numbers_assert.txt new file mode 100644 index 000000000..ba94bfa3b --- /dev/null +++ b/emtests/legacy_exported_runtime_numbers_assert.txt @@ -0,0 +1 @@ +'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ) diff --git a/emtests/modularize_closure_pre.c b/emtests/modularize_closure_pre.c new file mode 100644 index 000000000..7c4244905 --- /dev/null +++ b/emtests/modularize_closure_pre.c @@ -0,0 +1,15 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main() { + EM_ASM({ + out(Module['on_module']); + }); +} + diff --git a/emtests/modularize_closure_pre.out b/emtests/modularize_closure_pre.out new file mode 100644 index 000000000..483e04882 --- /dev/null +++ b/emtests/modularize_closure_pre.out @@ -0,0 +1 @@ +waka diff --git a/emtests/modularize_closure_pre.wasm b/emtests/modularize_closure_pre.wasm new file mode 100644 index 0000000000000000000000000000000000000000..60bc839aafd340776f01e69e01776fdbc9e717de GIT binary patch literal 21931 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Ë(+-D&OD~Uat#iQo3Clx8Ist_sc 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 BP(T0x literal 0 HcmV?d00001 diff --git a/emtests/stackAlloc.cpp b/emtests/stackAlloc.cpp new file mode 100644 index 000000000..d01738040 --- /dev/null +++ b/emtests/stackAlloc.cpp @@ -0,0 +1,35 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +int main() { + EM_ASM({ + var size = 128; + var before; + before = stackSave(); + var x = stackAlloc(size); + var y = stackAlloc(size); + var direction = y > x ? 1 : -1; + assert(x % 16 == 0, "allocation must have 16-byte alignment"); + assert(x == Math.min(before, before + direction*size), "allocation must return the start of the range allocated"); + var z = stackAlloc(size); + assert(x != y && y != z && x != z, "allocations must be unique"); + assert((y - x)*(z - y) > 0, "allocations must be in the same direction"); + // no overlaps + function notInRange(value, begin, end) { + function errormsg() { return value + " must not be in the range (" + begin + ", " + end + "]"; } + if (begin < end) assert(!(value >= begin && value < end), errormsg()); + else assert(!(value <= begin && value > end), errormsg()); + } + notInRange(x, y, y + direction*size); + notInRange(x, z, z + direction*size); + notInRange(y, x, x + direction*size); + notInRange(y, z, z + direction*size); + notInRange(z, x, x + direction*size); + notInRange(z, y, y + direction*size); + out('ok.'); + }); +} diff --git a/emtests/stackAlloc.txt b/emtests/stackAlloc.txt new file mode 100644 index 000000000..90b5016ef --- /dev/null +++ b/emtests/stackAlloc.txt @@ -0,0 +1 @@ +ok. diff --git a/emtests/stackAlloc.wasm b/emtests/stackAlloc.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9a7ac5ff4195042cbda983626d7cc28fcea1ea29 GIT binary patch literal 22893 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 Qs_oG|yZ!8F8tb3`7mpE+t^fc4 literal 0 HcmV?d00001 diff --git a/emtests/stack_overflow.cpp b/emtests/stack_overflow.cpp new file mode 100644 index 000000000..1e0a6f259 --- /dev/null +++ b/emtests/stack_overflow.cpp @@ -0,0 +1,39 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +void recurse(unsigned int x); + +void act(volatile unsigned int *a) { + printf("act %d\n", *a); + unsigned int b = (int)(intptr_t)(alloca(*a)); + if (b < *a) *a--; + recurse(*a); +} + +void recurse(volatile unsigned int x) { + printf("recurse %d\n", x); + volatile unsigned int a = x; + volatile char buffer[1000*1000]; + buffer[x/2] = 0; + buffer[(x-1)/2] = 0; + EM_ASM({}); + if (x*x < x) { + act(&a); + if (a < x) x = a; + x--; + } + x += buffer[x/2]; + if (x > 0) recurse(x-1); +} + +int main() { + recurse(1000*1000); +} + diff --git a/emtests/stack_overflow.wasm b/emtests/stack_overflow.wasm new file mode 100644 index 0000000000000000000000000000000000000000..32192ef0d4ed1683d4f0f4f6404b491153a74506 GIT binary patch literal 45879 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 literal 0 HcmV?d00001 diff --git a/emtests/test_addr_of_stacked.c b/emtests/test_addr_of_stacked.c new file mode 100644 index 000000000..583b209df --- /dev/null +++ b/emtests/test_addr_of_stacked.c @@ -0,0 +1,15 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +void alter(int *y) { *y += 5; } +int main() { + int x = 2; + alter(&x); + printf("*%d*\n", x); + return 0; +} diff --git a/emtests/test_addr_of_stacked.out b/emtests/test_addr_of_stacked.out new file mode 100644 index 000000000..2b8cf4a17 --- /dev/null +++ b/emtests/test_addr_of_stacked.out @@ -0,0 +1 @@ +*7* \ No newline at end of file diff --git a/emtests/test_addr_of_stacked.wasm b/emtests/test_addr_of_stacked.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9891f501c8086f89016d4fe2b420ffb9e27d0f5a GIT binary patch literal 45407 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 literal 0 HcmV?d00001 diff --git a/emtests/test_alloca.c b/emtests/test_alloca.c new file mode 100644 index 000000000..cd090be94 --- /dev/null +++ b/emtests/test_alloca.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main(int argc, char **argv) { + char *pc, *pc2; + assert(argc == 1); + pc = (char *)alloca(4+argc); + assert(((int)pc) % 4 == 0); + pc2 = (char *)alloca(4+argc); + assert(((int)pc2) % 4 == 0); + printf("z:%d*%d*%d*\n", (int)pc > 0, (int)pc, (int)pc2); + return 0; +} diff --git a/emtests/test_alloca.out b/emtests/test_alloca.out new file mode 100644 index 000000000..37de3d6bc --- /dev/null +++ b/emtests/test_alloca.out @@ -0,0 +1 @@ +z:1* \ No newline at end of file diff --git a/emtests/test_alloca.wasm b/emtests/test_alloca.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7f0b1d0317320fce0c490158b94e66ccca35ceaa GIT binary patch literal 45746 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 literal 0 HcmV?d00001 diff --git a/emtests/test_alloca_stack.c b/emtests/test_alloca_stack.c new file mode 100644 index 000000000..738a1c255 --- /dev/null +++ b/emtests/test_alloca_stack.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// We should not blow up the stack with numerous allocas +#include +#include + +int func(int i) { + char *pc = (char *)alloca(100); + *pc = i; + (*pc)++; + return (*pc) % 10; +} +int main() { + int total = 0; + for (int i = 0; i < 1024 * 1024; i++) total += func(i); + printf("ok:%d*\n", total); + return 0; +} diff --git a/emtests/test_alloca_stack.out b/emtests/test_alloca_stack.out new file mode 100644 index 000000000..d6a90d4e8 --- /dev/null +++ b/emtests/test_alloca_stack.out @@ -0,0 +1 @@ +ok:-32768* \ No newline at end of file diff --git a/emtests/test_alloca_stack.wasm b/emtests/test_alloca_stack.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8063365735edbc2fa8a3a05b3eb2c73b0e7c2b0d GIT binary patch literal 45540 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 D4Sw + +static const double grid[4][2] = {{-3 / 3., -1 / 3.}, + {+1 / 3., -3 / 3.}, + {-1 / 3., +3 / 3.}, + {+3 / 3., +1 / 3.}}; + +int main() { + for (int i = 0; i < 4; i++) + printf("%d:%.2f,%.2f ", i, grid[i][0], grid[i][1]); + printf("\n"); + return 0; +} diff --git a/emtests/test_array2.out b/emtests/test_array2.out new file mode 100644 index 000000000..a6ee88bbc --- /dev/null +++ b/emtests/test_array2.out @@ -0,0 +1 @@ +0:-1.00,-0.33 1:0.33,-1.00 2:-0.33,1.00 3:1.00,0.33 \ No newline at end of file diff --git a/emtests/test_array2.wasm b/emtests/test_array2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..43fd4fdfeb4e972921c01f838976dd08318d027f GIT binary patch literal 45540 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 QW=~py6Iip=S?j<*0Bkb^jsO4v literal 0 HcmV?d00001 diff --git a/emtests/test_array2b.c b/emtests/test_array2b.c new file mode 100644 index 000000000..fa054e9d4 --- /dev/null +++ b/emtests/test_array2b.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +static const struct { + unsigned char left; + unsigned char right; +} prioritah[] = {{6, 6}, {6, 6}, {7, 95}, {7, 7}}; + +int main() { + printf("*%d,%d\n", prioritah[1].left, prioritah[1].right); + printf("%d,%d*\n", prioritah[2].left, prioritah[2].right); + return 0; +} diff --git a/emtests/test_array2b.out b/emtests/test_array2b.out new file mode 100644 index 000000000..422896dcc --- /dev/null +++ b/emtests/test_array2b.out @@ -0,0 +1,2 @@ +*6,6 +7,95* \ No newline at end of file diff --git a/emtests/test_array2b.wasm b/emtests/test_array2b.wasm new file mode 100644 index 0000000000000000000000000000000000000000..01d5a5aedb5025f038365950fc7854ad551af206 GIT binary patch literal 45452 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

((uj4prdxZV7UH1{F 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 ry`~O??I8G+Iy8M@a{2fV0<*fsNu literal 0 HcmV?d00001 diff --git a/emtests/test_assert.c b/emtests/test_assert.c new file mode 100644 index 000000000..8545e0778 --- /dev/null +++ b/emtests/test_assert.c @@ -0,0 +1,14 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { + assert(1 == true); // pass + assert(1 == false); // fail + return 0; +} diff --git a/emtests/test_assert.out b/emtests/test_assert.out new file mode 100644 index 000000000..870c1784e --- /dev/null +++ b/emtests/test_assert.out @@ -0,0 +1 @@ +Assertion failed: 1 == false \ No newline at end of file diff --git a/emtests/test_atexit.c b/emtests/test_atexit.c new file mode 100644 index 000000000..bb83b3924 --- /dev/null +++ b/emtests/test_atexit.c @@ -0,0 +1,26 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +extern "C" { +extern int __cxa_thread_atexit(void (*dtor)(void *), void *obj, void *dso_symbol); +extern int __cxa_thread_atexit_impl(void (*dtor)(void *), void *obj, void *dso_symbol); +} + +static void cleanA() { printf("A\n"); } +static void cleanB() { printf("B\n"); } +static void cleanCarg(void* x) { printf("C %d\n", (int)x); } + +int main() { + atexit(cleanA); + atexit(cleanB); + __cxa_thread_atexit(cleanCarg, (void*)100, NULL); + __cxa_thread_atexit_impl(cleanCarg, (void*)234, NULL); + return 0; +} diff --git a/emtests/test_atexit.out b/emtests/test_atexit.out new file mode 100644 index 000000000..c1e26b0e2 --- /dev/null +++ b/emtests/test_atexit.out @@ -0,0 +1,4 @@ +C 234 +C 100 +B +A diff --git a/emtests/test_atoX.c b/emtests/test_atoX.c new file mode 100644 index 000000000..9cf360a99 --- /dev/null +++ b/emtests/test_atoX.c @@ -0,0 +1,47 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + printf("%d*", atoi("")); + printf("%d*", atoi("a")); + printf("%d*", atoi(" b")); + printf("%d*", atoi(" c ")); + printf("%d*", atoi("6")); + printf("%d*", atoi(" 5")); + printf("%d*", atoi("4 ")); + printf("%d*", atoi("3 6")); + printf("%d*", atoi(" 3 7")); + printf("%d*", atoi("9 d")); + printf("%d\n", atoi(" 8 e")); + printf("%d*", (int)atol("")); + printf("%d*", (int)atol("a")); + printf("%d*", (int)atol(" b")); + printf("%d*", (int)atol(" c ")); + printf("%d*", (int)atol("6")); + printf("%d*", (int)atol(" 5")); + printf("%d*", (int)atol("4 ")); + printf("%d*", (int)atol("3 6")); + printf("%d*", (int)atol(" 3 7")); + printf("%d*", (int)atol("9 d")); + printf("%d\n", (int)atol(" 8 e")); + printf("%lld*", atoll("6294967296")); + printf("%lld*", atoll("")); + printf("%lld*", atoll("a")); + printf("%lld*", atoll(" b")); + printf("%lld*", atoll(" c ")); + printf("%lld*", atoll("6")); + printf("%lld*", atoll(" 5")); + printf("%lld*", atoll("4 ")); + printf("%lld*", atoll("3 6")); + printf("%lld*", atoll(" 3 7")); + printf("%lld*", atoll("9 d")); + printf("%lld\n", atoll(" 8 e")); + return 0; +} diff --git a/emtests/test_atoX.out b/emtests/test_atoX.out new file mode 100644 index 000000000..4b76d26d3 --- /dev/null +++ b/emtests/test_atoX.out @@ -0,0 +1,3 @@ +0*0*0*0*6*5*4*3*3*9*8 +0*0*0*0*6*5*4*3*3*9*8 +6294967296*0*0*0*0*6*5*4*3*3*9*8 diff --git a/emtests/test_atoX.wasm b/emtests/test_atoX.wasm new file mode 100644 index 0000000000000000000000000000000000000000..00159075ec7241dfdc55ffd6bb95ecaad8398948 GIT binary patch literal 47505 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 SgN5^RLA_WH&KJ%HZ~qUg_(UuK literal 0 HcmV?d00001 diff --git a/emtests/test_atomic.c b/emtests/test_atomic.c new file mode 100644 index 000000000..67a60b2cb --- /dev/null +++ b/emtests/test_atomic.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() { + int x = 10; + int y = __sync_add_and_fetch(&x, 5); + printf("*%d,%d*\n", x, y); + x = 10; + y = __sync_fetch_and_add(&x, 5); + printf("*%d,%d*\n", x, y); + x = 10; + y = __sync_lock_test_and_set(&x, 6); + printf("*%d,%d*\n", x, y); + x = 10; + y = __sync_bool_compare_and_swap(&x, 9, 7); + printf("*%d,%d*\n", x, y); + y = __sync_bool_compare_and_swap(&x, 10, 7); + printf("*%d,%d*\n", x, y); + return 0; +} diff --git a/emtests/test_atomic.out b/emtests/test_atomic.out new file mode 100644 index 000000000..ed11bce08 --- /dev/null +++ b/emtests/test_atomic.out @@ -0,0 +1,5 @@ +*15,15* +*15,10* +*6,10* +*10,0* +*7,1* \ No newline at end of file diff --git a/emtests/test_atomic.wasm b/emtests/test_atomic.wasm new file mode 100644 index 0000000000000000000000000000000000000000..949fc377e042d965114ceb402a8c869d96c82595 GIT binary patch literal 45728 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 RQ +#include + +template void test(TYPE mask0, TYPE mask1, TYPE mask2) { + typedef TYPE dog; + + const TYPE numMemoryOrders = 6; + std::memory_order memoryOrder[numMemoryOrders] = { + std::memory_order_relaxed, + std::memory_order_consume, + std::memory_order_acquire, + std::memory_order_release, + std::memory_order_acq_rel, + std::memory_order_seq_cst, + }; + + // test atomic + std::atomic atomicDog(5); + printf("atomic.is_lock_free(): %s\n", atomicDog.is_lock_free() ? "true" : "false"); + printf("atomic value: %lld\n", (long long)TYPE(atomicDog)); + + // test store/load + for (TYPE i = 0; i < numMemoryOrders; i++) { + atomicDog.store(i, memoryOrder[i]); + printf("store/load %lld: %lld\n", (long long)i, (long long)atomicDog.load(memoryOrder[i])); + } + + // test exchange + for (TYPE i = 0; i < numMemoryOrders; i++) { + TYPE old = atomicDog.exchange(i, memoryOrder[i]); + printf("exchange %lld: old=%lld new=%lld\n", (long long)i, (long long)old, (long long)TYPE(atomicDog)); + } + + // compare_exchange_weak + for (TYPE i = 0; i < numMemoryOrders; i++) { + bool success = atomicDog.compare_exchange_weak(i, i + 1, memoryOrder[i], memoryOrder[i]); + printf("compare_exchange_weak %lld: success = %s\n", (long long)i, success ? "true" : "false"); + } + + // compare_exchange_strong + for (TYPE i = 0; i < numMemoryOrders; i++) { + bool success = atomicDog.compare_exchange_strong(i, i + 1, memoryOrder[i], memoryOrder[i]); + printf("compare_exchange_strong %lld: success = %s\n", (long long)i, success ? "true" : "false"); + } + + // fetch_add + atomicDog = mask2; + for (TYPE i = 0; i < numMemoryOrders; i++) { + TYPE old = atomicDog.fetch_add(1, memoryOrder[i]); + printf("fetch_add %lld: old=%llx new=%llx\n", (long long)i, (long long)old, (long long)TYPE(atomicDog)); + } + + // fetch_sub + for (TYPE i = 0; i < numMemoryOrders; i++) { + TYPE old = atomicDog.fetch_sub(1, memoryOrder[i]); + printf("fetch_sub %lld: old=%llx new=%llx\n", (long long)i, (long long)old, (long long)TYPE(atomicDog)); + } + + // fetch_and + for (TYPE i = 0; i < numMemoryOrders; i++) { + atomicDog.store(mask0, memoryOrder[i]); + TYPE old = atomicDog.fetch_and((1<(0xFF, 0xF0, 0x0F); + printf("\n16 bits\n\n"); + test(0xFFFF, 0xF0F0, 0x0F0F); + printf("\n32 bits\n\n"); + test(0xFFFFFFFF, 0xF0F0F0F0, 0x0F0F0F0F); + printf("\n64 bits\n\n"); + test(0xFFFFFFFFFFFFFFFF, 0xF0F0F0F0F0F0F0F0, 0x0F0F0F0F0F0F0F0F); + + // test atomic_flag (should also have memory_orders, but probably doesn't matter + // to find the missing atomic functions) + std::atomic_flag af; + af.clear(); + bool b = af.test_and_set(); + printf("atomic_flag: %s\n", b ? "true" : "false"); + + printf("done.\n"); + return 0; +} + diff --git a/emtests/test_atomic_cxx.txt b/emtests/test_atomic_cxx.txt new file mode 100644 index 000000000..67b289950 --- /dev/null +++ b/emtests/test_atomic_cxx.txt @@ -0,0 +1,226 @@ + +8 bits + +atomic.is_lock_free(): true +atomic value: 5 +store/load 0: 0 +store/load 1: 1 +store/load 2: 2 +store/load 3: 3 +store/load 4: 4 +store/load 5: 5 +exchange 0: old=5 new=0 +exchange 1: old=0 new=1 +exchange 2: old=1 new=2 +exchange 3: old=2 new=3 +exchange 4: old=3 new=4 +exchange 5: old=4 new=5 +compare_exchange_weak 5: success = false +compare_exchange_strong 5: success = false +fetch_add 0: old=f new=10 +fetch_add 1: old=10 new=11 +fetch_add 2: old=11 new=12 +fetch_add 3: old=12 new=13 +fetch_add 4: old=13 new=14 +fetch_add 5: old=14 new=15 +fetch_sub 0: old=15 new=14 +fetch_sub 1: old=14 new=13 +fetch_sub 2: old=13 new=12 +fetch_sub 3: old=12 new=11 +fetch_sub 4: old=11 new=10 +fetch_sub 5: old=10 new=f +fetch_and 0: old=ff, new=1 +fetch_and 1: old=ff, new=2 +fetch_and 2: old=ff, new=4 +fetch_and 3: old=ff, new=8 +fetch_and 4: old=ff, new=10 +fetch_and 5: old=ff, new=20 +fetch_or 0: old=0, new=1 +fetch_or 1: old=1, new=3 +fetch_or 2: old=3, new=7 +fetch_or 3: old=7, new=f +fetch_or 4: old=f, new=1f +fetch_or 5: old=1f, new=3f +fetch_xor 0: old=0, new=1 +fetch_xor 1: old=1, new=3 +fetch_xor 2: old=3, new=7 +fetch_xor 3: old=7, new=f +fetch_xor 4: old=f, new=1f +fetch_xor 5: old=1f, new=3f +operator++: 1 +operator--: 0 +operator+=: 10 +operator-=: 5 +operator|=: ff +operator&=: f0 +operator^=: ff + +16 bits + +atomic.is_lock_free(): true +atomic value: 5 +store/load 0: 0 +store/load 1: 1 +store/load 2: 2 +store/load 3: 3 +store/load 4: 4 +store/load 5: 5 +exchange 0: old=5 new=0 +exchange 1: old=0 new=1 +exchange 2: old=1 new=2 +exchange 3: old=2 new=3 +exchange 4: old=3 new=4 +exchange 5: old=4 new=5 +compare_exchange_weak 5: success = false +compare_exchange_strong 5: success = false +fetch_add 0: old=f0f new=f10 +fetch_add 1: old=f10 new=f11 +fetch_add 2: old=f11 new=f12 +fetch_add 3: old=f12 new=f13 +fetch_add 4: old=f13 new=f14 +fetch_add 5: old=f14 new=f15 +fetch_sub 0: old=f15 new=f14 +fetch_sub 1: old=f14 new=f13 +fetch_sub 2: old=f13 new=f12 +fetch_sub 3: old=f12 new=f11 +fetch_sub 4: old=f11 new=f10 +fetch_sub 5: old=f10 new=f0f +fetch_and 0: old=ffff, new=1 +fetch_and 1: old=ffff, new=2 +fetch_and 2: old=ffff, new=4 +fetch_and 3: old=ffff, new=8 +fetch_and 4: old=ffff, new=10 +fetch_and 5: old=ffff, new=20 +fetch_or 0: old=0, new=1 +fetch_or 1: old=1, new=3 +fetch_or 2: old=3, new=7 +fetch_or 3: old=7, new=f +fetch_or 4: old=f, new=1f +fetch_or 5: old=1f, new=3f +fetch_xor 0: old=0, new=1 +fetch_xor 1: old=1, new=3 +fetch_xor 2: old=3, new=7 +fetch_xor 3: old=7, new=f +fetch_xor 4: old=f, new=1f +fetch_xor 5: old=1f, new=3f +operator++: 1 +operator--: 0 +operator+=: 10 +operator-=: 5 +operator|=: ffff +operator&=: f0f0 +operator^=: ffff + +32 bits + +atomic.is_lock_free(): true +atomic value: 5 +store/load 0: 0 +store/load 1: 1 +store/load 2: 2 +store/load 3: 3 +store/load 4: 4 +store/load 5: 5 +exchange 0: old=5 new=0 +exchange 1: old=0 new=1 +exchange 2: old=1 new=2 +exchange 3: old=2 new=3 +exchange 4: old=3 new=4 +exchange 5: old=4 new=5 +compare_exchange_weak 5: success = false +compare_exchange_strong 5: success = false +fetch_add 0: old=f0f0f0f new=f0f0f10 +fetch_add 1: old=f0f0f10 new=f0f0f11 +fetch_add 2: old=f0f0f11 new=f0f0f12 +fetch_add 3: old=f0f0f12 new=f0f0f13 +fetch_add 4: old=f0f0f13 new=f0f0f14 +fetch_add 5: old=f0f0f14 new=f0f0f15 +fetch_sub 0: old=f0f0f15 new=f0f0f14 +fetch_sub 1: old=f0f0f14 new=f0f0f13 +fetch_sub 2: old=f0f0f13 new=f0f0f12 +fetch_sub 3: old=f0f0f12 new=f0f0f11 +fetch_sub 4: old=f0f0f11 new=f0f0f10 +fetch_sub 5: old=f0f0f10 new=f0f0f0f +fetch_and 0: old=ffffffff, new=1 +fetch_and 1: old=ffffffff, new=2 +fetch_and 2: old=ffffffff, new=4 +fetch_and 3: old=ffffffff, new=8 +fetch_and 4: old=ffffffff, new=10 +fetch_and 5: old=ffffffff, new=20 +fetch_or 0: old=0, new=1 +fetch_or 1: old=1, new=3 +fetch_or 2: old=3, new=7 +fetch_or 3: old=7, new=f +fetch_or 4: old=f, new=1f +fetch_or 5: old=1f, new=3f +fetch_xor 0: old=0, new=1 +fetch_xor 1: old=1, new=3 +fetch_xor 2: old=3, new=7 +fetch_xor 3: old=7, new=f +fetch_xor 4: old=f, new=1f +fetch_xor 5: old=1f, new=3f +operator++: 1 +operator--: 0 +operator+=: 10 +operator-=: 5 +operator|=: ffffffff +operator&=: f0f0f0f0 +operator^=: ffffffff + +64 bits + +atomic.is_lock_free(): false +atomic value: 5 +store/load 0: 0 +store/load 1: 1 +store/load 2: 2 +store/load 3: 3 +store/load 4: 4 +store/load 5: 5 +exchange 0: old=5 new=0 +exchange 1: old=0 new=1 +exchange 2: old=1 new=2 +exchange 3: old=2 new=3 +exchange 4: old=3 new=4 +exchange 5: old=4 new=5 +compare_exchange_weak 5: success = false +compare_exchange_strong 5: success = false +fetch_add 0: old=f0f0f0f0f0f0f0f new=f0f0f0f0f0f0f10 +fetch_add 1: old=f0f0f0f0f0f0f10 new=f0f0f0f0f0f0f11 +fetch_add 2: old=f0f0f0f0f0f0f11 new=f0f0f0f0f0f0f12 +fetch_add 3: old=f0f0f0f0f0f0f12 new=f0f0f0f0f0f0f13 +fetch_add 4: old=f0f0f0f0f0f0f13 new=f0f0f0f0f0f0f14 +fetch_add 5: old=f0f0f0f0f0f0f14 new=f0f0f0f0f0f0f15 +fetch_sub 0: old=f0f0f0f0f0f0f15 new=f0f0f0f0f0f0f14 +fetch_sub 1: old=f0f0f0f0f0f0f14 new=f0f0f0f0f0f0f13 +fetch_sub 2: old=f0f0f0f0f0f0f13 new=f0f0f0f0f0f0f12 +fetch_sub 3: old=f0f0f0f0f0f0f12 new=f0f0f0f0f0f0f11 +fetch_sub 4: old=f0f0f0f0f0f0f11 new=f0f0f0f0f0f0f10 +fetch_sub 5: old=f0f0f0f0f0f0f10 new=f0f0f0f0f0f0f0f +fetch_and 0: old=ffffffffffffffff, new=1 +fetch_and 1: old=ffffffffffffffff, new=2 +fetch_and 2: old=ffffffffffffffff, new=4 +fetch_and 3: old=ffffffffffffffff, new=8 +fetch_and 4: old=ffffffffffffffff, new=10 +fetch_and 5: old=ffffffffffffffff, new=20 +fetch_or 0: old=0, new=1 +fetch_or 1: old=1, new=3 +fetch_or 2: old=3, new=7 +fetch_or 3: old=7, new=f +fetch_or 4: old=f, new=1f +fetch_or 5: old=1f, new=3f +fetch_xor 0: old=0, new=1 +fetch_xor 1: old=1, new=3 +fetch_xor 2: old=3, new=7 +fetch_xor 3: old=7, new=f +fetch_xor 4: old=f, new=1f +fetch_xor 5: old=1f, new=3f +operator++: 1 +operator--: 0 +operator+=: 10 +operator-=: 5 +operator|=: ffffffffffffffff +operator&=: f0f0f0f0f0f0f0f0 +operator^=: ffffffffffffffff +atomic_flag: false +done. diff --git a/emtests/test_atomic_cxx.wasm b/emtests/test_atomic_cxx.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c33d499c296c581a18a4fa2c34f7bf6f3c771a11 GIT binary patch literal 87494 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
408MGEDK3H3X!hina*i*XqZ5$~~#8Xt7n8 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 G(*FVih|OyN literal 0 HcmV?d00001 diff --git a/emtests/test_bigarray.c b/emtests/test_bigarray.c new file mode 100644 index 000000000..aee3e5188 --- /dev/null +++ b/emtests/test_bigarray.c @@ -0,0 +1,29 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// avoid "array initializer too large" errors +#include +#include + +#define SIZE (1024 * 100) +struct Struct { + char x; + int y; +}; +Struct buffy[SIZE]; + +int main() { + for (int i = 0; i < SIZE; i++) { + assert(buffy[i].x == 0 && buffy[i].y == 0); + } // we were zeroinitialized + for (int i = 0; i < SIZE; i++) { + buffy[i].x = i * i; + buffy[i].y = i * i * i; + } // we can save data + printf("*%d*\n", buffy[SIZE / 3].x); + return 0; +} diff --git a/emtests/test_bigarray.out b/emtests/test_bigarray.out new file mode 100644 index 000000000..33485c461 --- /dev/null +++ b/emtests/test_bigarray.out @@ -0,0 +1 @@ +*57* \ No newline at end of file diff --git a/emtests/test_bitfields.c b/emtests/test_bitfields.c new file mode 100644 index 000000000..4e62fd595 --- /dev/null +++ b/emtests/test_bitfields.c @@ -0,0 +1,27 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct bitty { + unsigned x : 1; + unsigned y : 1; + unsigned z : 1; +}; +int main() { + bitty b; + printf("*"); + for (int i = 0; i <= 1; i++) + for (int j = 0; j <= 1; j++) + for (int k = 0; k <= 1; k++) { + b.x = i; + b.y = j; + b.z = k; + printf("%d,%d,%d,", b.x, b.y, b.z); + } + printf("*\n"); + return 0; +} diff --git a/emtests/test_bitfields.out b/emtests/test_bitfields.out new file mode 100644 index 000000000..e121b181a --- /dev/null +++ b/emtests/test_bitfields.out @@ -0,0 +1 @@ +*0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,* \ No newline at end of file diff --git a/emtests/test_bsearch.c b/emtests/test_bsearch.c new file mode 100644 index 000000000..88b16fbb4 --- /dev/null +++ b/emtests/test_bsearch.c @@ -0,0 +1,52 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int cmp(const void* key, const void* member) { + return *(int*)key - *(int*)member; +} + +void printResult(int* needle, int* haystack, unsigned int len) { + void* result = bsearch(needle, haystack, len, sizeof(unsigned int), cmp); + + if (result == NULL) { + printf("null\n"); + } else { + printf("%d\n", *(unsigned int*)result); + } +} + +int main() { + int a[] = {-2, -1, 0, 6, 7, 9}; + int b[] = {0, 1}; + + /* Find all keys that exist. */ + for (int i = 0; i < 6; i++) { + int val = a[i]; + + printResult(&val, a, 6); + } + + /* Keys that are covered by the range of the array but aren't in + * the array cannot be found. + */ + int v1 = 3; + int v2 = 8; + printResult(&v1, a, 6); + printResult(&v2, a, 6); + + /* Keys outside the range of the array cannot be found. */ + int v3 = -1; + int v4 = 2; + + printResult(&v3, b, 2); + printResult(&v4, b, 2); + + return 0; +} diff --git a/emtests/test_bsearch.out b/emtests/test_bsearch.out new file mode 100644 index 000000000..cc6a32050 --- /dev/null +++ b/emtests/test_bsearch.out @@ -0,0 +1,10 @@ +-2 +-1 +0 +6 +7 +9 +null +null +null +null \ No newline at end of file diff --git a/emtests/test_bsearch.wasm b/emtests/test_bsearch.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b552392634ed9826d0ad3139b193a80e6126e106 GIT binary patch literal 46070 zcma&P2b@(!()WMQIrrRqnL9882x6pK5D;_DD+hHX?5ex!^Q_OayQXDbXApM=WRs5! ziinDeSrHX6fC`G3#ej-A=d74>&XNE3SLfb=-S>I_pI4i?eL7TES65eeS66oz4j6xE zR45dpKQ`~5Oqw()nzVoHe$(O;Yg*;Lks(tCLK|W zj*f_q+&?~IQgp=r#XKl}KUpmqGj3w{G2_M_&~fmXUyV8Ru#UeM5{30Rc+7;o51Vkn z*p&lUJ>bB@IwtHfZs!BWjXP|@ZXJjHb>-Mz9=q3s0}g82W8#>OKaD-?uZ5yuRmUAZ zc5KVx;||*IkVEp2#+5>9LETpls)d#J+i$b1H;$&F%x#}=-BJM((`#9((S$ z=ia}mrR+Xo%%OkT<*>s^yyt|DT3}_by|bN1ld$&P&A<2iRrXr~N(YZU?7#!YCc7W7 zdvZkmt1@!jpAH#!$b`QWB&ekQ@SEI)6J$k?hQ502_HYzmnuXIq)Nzs6~%AZ7kiu#lCCoBB> zpCh6Hr7C~Q{~qCqkBD}G$^F0T|3o{>)Ad_^A?n$arWn)FG43$6{s9vXIc!{Et@3_< z`qS9M$N#yoLAu|cI>wAC^lRF0?AVEi?swq$zaH?H{SMiDv%;?Feuo}#$hbn^GQVTV zT38jIw_KsceXvhqw{*Yp2X?d-Ml}5K?{MvB ziwXmxYOi0e_ACBdg@3#6-hYkVSKod2hTHCshYg9MNdp=}G@!u>tpghdG-OS!*l+TcGH4Xjps6$UhBg%+h8*honCYIV1$n_vo9 zv%_>qS+gJ<ph;EDl904v7mPwIr0RByZVLE4PJ;H4JR9N>lZuC~6jKRrEe^{*UCWx9 zcV69k4QyyiiR{9o*~(kRh3xCKthpXvEmUX4Q7_@s6MUBB)XHnN#EH~1MAkFgq!ny> zW{-v&?75^f<;+pWxb@Zbs}%2l`sBw1vGm=b3LGv zeY*O3abaulDuiyyuy`01ZL+4UGy{=Q21ofWdLqLJaj2;3ix#4=fRWVkujZ)>oi+3NR0AU$#7q%6T?$wd#aoz?cw+Kd$sGI?avTGVNrV+Z{xFQ zd^pmMByDRrF0$jIESeBbkFs|M8Gl8j3nIHf#1EH8c6lV|*F|=nhb)O~iHAHC8Sa9p zB|ID1vml-c)P(SQWUoirr19aSNCXx~NrEskw*EEMmF?VdP`I>O@$vBy32 zk_ZO8uR`CUyJq(}rCy4moxK!~4)4VFPMnhlI(;77=VBQs1#KpTpW-Zb&$J{f*tDcA zoR;uor-9n}iTxDY`4IVXMP5$ibqPOq9YISHTasjxTEl~hJ(y&T6T>r!J(Fb3?cp_r z*lRT0hlzcdWHi?|iG7n~mG*E{(QvN;{lp@1d`t}I6z!a17EcTp7wuwtZF{(?XhdIC z>T_7{^MU>>wL6F&u0Mi>D8eQv$*eO(guzt*Z28ZU-v)+tY;aiD zNxP2dcOL!20i7S&`3`7yWV2PyI->lAkzMG~b0VAL(HBK_5z!*=oG1(+It-$W^W{HJ zej7j;gTlH_ly$R$SbCkX1C&#zIyJIW9pGt^o#tcD8Ij>;_}DYU2emUJ!<|+O2|Fu3)#>L(HrGSvL0Fr|ka!vLPE{gi2cffr_~fdJ zT}4mIBJxcLS44J&kCXEw^``kS^nxf`I>;6XjmCs3f&&z}GO{Zj`c;wPXt{+9fstr= zbz}?0HCMtWS4Y*bukE{1d5a=jB*Gh7TU8zaMA?-_^(#7&XmRHrHw0fn0*yV*f3j%=}mxFxb%Y9NTeH8R{{2SGd_Zi@`( zAV92=HIEFpM|Qi&RdJ5KBeFY~2y}!ysja&1U6JAL%<(3!H7t#6sduisBfHy+zbCSL zn8InDM;M^Y>?mmZ8QQ8O8cT~c|k>MWj7$ewlrJrmh8s;!52gy(#A z^qiMXHpT=y$2`|d z;24?Dg9sqW%aP%pR30A(R6Pv?CwNHSUtWpqm6awASUwDQuBm0tuY!6>W zM#`_q@O6~+u&=@V8>J^`LijGS@1m?}V)#BXLcfPGe~9b{=Y}8MQ*I4EMO4OqV%YjQ zvY&}-56dIN{Rq&`*gE5|R<$Z=vX*ns{(za<?Ex1$BYA8m7g zjUnA8HOe(2GB<`2n?Q&&M2Mx8ur{fzs$m4dbZ;fwQ7d>T-V$cU_6z-<8yntpVT@}l zcCCatl%Ei0QKZd+?&rn)*mma1gAfGig(+Aaj- zoY>~XnonI6+eLKgiQ$siE{Qd#x>O-{DRZW|vCWM&v6>g#yjZM%S!}pVDf4p0@i8%6 z5!)3IablPs+kBQuj4iPdy?|6#Dh}VourRiTte7T-t7E&Gti<(g;6F|;q1Ya(vqV~3o<1BKPMALuTZ=ssj|`8-_NbB#C%82{78`E(=hf}IFMEPlVtd80e>JvO^Jpls zEVgAH{TkSK^y{&`PBaafX~y?j9JU}y*qWaGiu^CjZ(D@TZ0oS4H_m3F*&Fl&2lQra zZ#tm2VtY&FY$l4o9oyR;{cddUdh~m-y+^cWeDB6#bE3mml<}tgZ^&<(Q^rxGYzz6Dl8QYg$##gc7XvME%p$c8UK|3LS z{t`NUgXsG&`>&Ns{Wi95yQ<-Hz)WoNU2M3gysY6W;QQFV_X2*1?FT2pkFovedXP-< zKgWjq!7~sKh~=^2RKF_J0g=wcIuniflM|bqsLDs7y+~HjFjK0d6T?k*of@eCG$k>d z6UvD#vD>2g;4uk}aEt)7ILA*-Y-*wz;jsxN(%+9u40o)<8crOeR$|8|iaH^&6C9c8 ziA_&5%R5macA^sd!~!@c)!>|*815v8)1tI968e_FoRS!BhR4v`T3ARVhHFu?wnzbR zIv-glz4MI3&JeDrQ`&@ZW+HU}f5jnZB{l8b*~F1xLO3U}vlBZ9Ez!)xW;(IXP3&Cd z_wbG|OL=UTmrQ<`buT+B3BmRX|B>QT$a#sK=asx5u?rM;UK0MJYX1T9!jJyh8fGVk z%LAwrxh_l$7nFhklFUgAcb1B3M1-|u%*QTD>>@|&;>0cnt*j9Gr$pt`u}c!WM1lPk zNIIX6U7FaXXtx-g5}WI)ta$=r^Qi9?iCsZ5O~>XZHs6yiNNfRZ)gG=)3^$Jkxk}0S zm=G2wwvY^(j$NJD)t+HdVv8VXd$=YsQeH!bYZInp*P?d2Ug-&%5N=59hD6h`8xte+ zM!4dp#BTCdx!FBT#}?CSwwUI-C9zwGY7e(2hPxSv)|0q#f) z*S|(P`o*1z-RTT>S7LWTFvSp{Uz)l|V9BhqEq8)bH=} zmiB^b(CHfYCx*Md#(rw62NJ`r+?)?3hVu}$-tEp14=47pqxDE)k9f$Vi9PBnRyivk%yD8T5A0@hkSzCX)f?&!W{BR2>VoGPbB#q@~Na6o)+PrhRn|<_G}XR zDevko{T!Qg~VR)x-Uy?8AT$pt)KeIa~?rYdp@z}J?V>y zz37O(lo$>~Ury|0q4@%6HWpKRPUZ5kx{slhu!0`Y?DfQOtJjDK$=*l|w=&7zObnNk zOv~cc)Ggjh>@7#&?ZneXFEQL|E86b;#NN*tff9T~ z`XI3nlF+4ymK0)5Rr}Fwv#y%{C^1~Ok>TUSK2D@|&}UotB&jVsKTQmO)9CP7VxNgL z1axZ+pDW%z7go~med6em5Q+9hLbxQ_mx_M&+r)5R zE3xJ!Ia@!K|B_W{zpJPHJ~7;PD+B%^u^$}HkBR;0wEYQ%x#RP*LhNUyuBtE^V0mK8 zS0Ya}d&t+1okhcS8yzMWZE}&i>Z>grT_oO)E~>82dBQ10!$F2)iiFrPiXwq(KefoG zDs*hoa8o_Xt2#}Y6mwkBaML`75b!y^XvY^k{d#FaY6N+|1QKQ@RqD=>%Z1&Ks z(}c#Xy657dzAKc?tNqR&np5t__59a<7fveLNkujj!^uTE8FVjy`to#qm{Ft*o8fip zv~YSc1-Q!mjs1o%wy?B^b_$iuHfAI$+UZ3*72Hn)AN+0MjG~=Zv@?*YXBG_y)y^u~ zSw$%<3M*IT+w}x?X3=JPRn9Hixt{1#51&;u+?hZ=uV}bg#b1T<-8Zv1I$TgRJ}zKW z;kt@lrzy?KpsU%B4r6xFX8TUXg+;s23z<_y-pmoj^7gu@Xcu|JC5pI25uK4%vsvfR zkh)CqZG=mUhP#N8=N4_Q&@@->&nwzI-zUAy6I=$mmlqAEq*oN}3Lqj8tE8qi=NE0h zr(RIB1zzlxMZ2=AP|1}A#gOJA1tNAr&ijgn6FKiM+Wkche#^@v!vjTofQ&g74=Sd4 zM0luZj_t!md(g{yq-gjb0jo!gM(m?SL~hX@SI&ou*(79b(Vo!P{l&0Ns=vP^BK#^l zMO0vE$SzqiY^#XvvS|vdqBaTJASa*~3)9Ysm1$O>@P$QN=pe5y+SRHP$x?#Cq9RtyUq!5eJ!Xp+`u>K+QN-RyP;?|lIo_S;T93LxMN@xR;9dQWx*NT(p;+LjMXB+3=FM@Rg#y;*9WW(Owl9o+Na2v4fUTK-!KKUD1|_ z*H)lZ1f_bveZ6R}({DS%8%27uz2O3Jo3Lwka^5!!buXlc2TvB!;DS1p-YnXiD)&rb z^A?ri=bfVAgPiXc?H%{LS2X=fsQoUgwq8t#`2o<%s_zH|ZorL+83MLz8-u=%=ZU#ro-tR<+{ z#N0PU`vy9+gl{G0zEzUPe7yRuXy19n_eJ{^-jU&lqT&Am;@?oQ8^q*~4YFTph(sj1 zCz~?VeyOo$dTmI_$E2T%*_(sxC&z2qpnUN8au6#JCH=JS`Ed|_g?wB0Oc{({A)R&4 z^uhQQGOg}8eK3B7%&2>24aTpKv+JIV2jf@B?7Cz<{9@hfCW-Sg03{0h0R?s;l3euX?%_q;S1ze1j?d)^$3Um?rto(~7(SIE0{&zFPo zE9BF<=f}bL74mJ}Gi3;Vg>=?E(}&RSohpA1iwOVtb3LY!LN`db1 z8t!RcXoRiu)o_S_!Gnsv~hjZB(bttn^n*|hM@eKpqdBWlwq{juR;m%9j z!{Ul9rt5>GB+hKMQB#{;BbMrPVQM&{<_Lsvy@)k<8ZJ)lVsC*SvGF%+Mh z+FXyCm)fPZ#+gUsTrLQ9In=myb49H{o9|6PAg!|?wJW>{u1pQLz@q># z2LM;4c9q91WZv;F&2zOk&(%uYSkxLPmwt;>^F`^%a1B-tqJLe~5lrQ-^QIi)O*ur> zzCJbFbu`!wsokIqbLtH?L`1kTwHux0H>GxySO4bJZmu=hO=%d?)nIeH!G@@z7N@q@ zGu@KfE#6SKrgp36zAd%e)KEiQ?%EKs(UR1bc=9_^!-3|V3b8w#65dhnLeHCqrKv4- zg5Ql|*umYSwpa>%?@jGqkGhWuNv$pJqb=?iJ?@8+52}``(L>Dt((rI<4}1DYQhUTf zJt|NS1M0EV9`mTjQ+u=q>Ty6lAqe&au%2Y+Fbz+o_Fx*GNe$04 zbqDww%iPpnRa9DA#J-*yPN3gN?F|9W4YS@v$D0FwE7dagEeFiPHU~@~fZwhIekV2D z+g>L1c?*2rMPV$TI1Y`-la9c9slDfI_kL>cVMYVT83{Zl0Y7A^A`W>OC8bKx&W`XaS2JmkyNaGz7DuTuL;m15Hoo2PG6`!H9hvbh_pWtD$l-hcLofB{m65Hp`9Q z&MVb6$j>hs?mTP*E>MtNAiP9laDqg$OE%jJyRc+96*i}&IH-GZ$>x-p0naWW{7cpF z-}c`t6@E#{E>UeHbwLMSxwK@s<<3+vF3{(eY_3C}SF(BD0GE~QvJxnhgZRr!hMVW4 zA|4o5lnkdTR>>-1F~4N<9max^EpQlDmF%h-9d{I-3rmJu;7~{bl&edIb10&~62g zJtezGad(%(K2_VNChGc#eeW$9E|-1CQsCTIGF%_kfB=%*UozZnDoO&crxf@Plp^kmgCIuN?F$98QY()R50&g81@;epm4~#h#DBPC4`cf_F+5VTN5HW?JSIT)7El`!QUrX7})p@QL@~PrTW^#9A@%{HG!!5Uz7~zA!?R)oIAcO*_V#rS0($(L%znwyQINLxdvu>-^S+-73dQ{ntDhtu0%Z3Bd zDP@}?``5|k&|6x!=yanjKd*+$uF9LbBt_hU-c~cQ~PJxSV9t=J!?~ znO?T(j=+g!JJC%aPbwQO&q(ab5Kb-|?!@wnQf8D5*Ly|Vol>?_s4@YRz#NGpW>;)> zC3LCtVKwxYMW>!C08c9$PLuo7%XYeqhdE$@xICk5XEi`ZB{v)U$*nhTAf``whO#@X7iV@ zws2wDF7&85Wt&~j+kZ~E8ZHt9y9f*}R`C+}my`|vC8#+sE!(A}C7i*9#B<9w*NeN% zJv7ec<$RTRMLAz3&M({ia#&Ed1zy;dWxLYxxJq~|0FQ-bTj)_&m+h(=9#;c;5ddrv zXk1%1fGr~Fb!E*ZuT`69c6psQ4uJ^w>&t|Tk~fqMcfCjbij1rR%66ki-Bh-l$}6uD zZ!T+|# zL64=vRzuL;WxKnqLGK=g*gam%QYXy4-iTD~zOv!&tyR{R*3&TDJy7P;$GZp1_MlLC zfV>mJLvFv$UyXMUmuutQBgBzlLU^=nkCg3Exa+a9J?5?Yc-bCTeh=>mPbiN);YE?3 zTJLEOmpN;+XV{xHjE6i~wkN$3&y?*M#XVULdsl65sw!gjkW75GY`8oiU*A4QZ!KF7 zr67PL&zBANu!_Q@LG@w4d!cMEI9@N7?M3inxNBk=R<4bAFJZB-(EbV~p^tVim+fUt zU>Ro0_6kti!>fW~uTtaJ%Jv$`G}^shw%0w`8)bWg7H$u3mJRo6xg)%#WPD5rZ|?~&pCGNax5wCIOQPtb($QQ1B!Yqa~gY=nLcBY#r1 zPrO||bq^t*sp0Ii^2G3Y**+%@i;=S7J_YEPW&5%mn)2bU$=mQNX9kA5Z}60@sYX6# zW8aqTTPUS~OY+~^O!PaocGHCLec8S%+xIl~4`utoiTY#NepF+7ct`lDteNUh-q>DH z4LU;M=d$6x@~FJImX{5;a*K9W4Cf(gz^|Mqj;h#E6?M#`D|U26tUje;Qz{xfj=}Q1 zLiJn1)C$Ag)C!m!#d)@rGhPgH$5!}dn44B%n48AQgyS$F#u`w=+;P~^AFsT2d}Ts7 zp<*XgLRFc&dxx!RoI9;z-8Igg#_27%|MZHT?&Y6cv6KDu!xZu&Z5TYl8s0O+dRWKjj^FB{0T_k~QXI2c?y+%iv{A^4X zS4u*EI;Uc|oNCPJbtDao{EE$V49>0CxfS(}Srx1y(&{)H98v72*I#V%5n^wkzFu1GRpENIATHP|H;!=YKYv?A$!sTV{t zg!bGDpK9HC6~oQ-C|5dMrc8>tykfY^JcbbPy`o}Q{L2vAyjGZxl|1!Sp@o%3->=t* z=EXW=heaeYEnzKNt2nHw%E#ZB4n#Gz({m94M_?2nt7M^^TL;5qnDKIU;yWzsro=KB zrhmD4t6fE2 z+u!#0MEL=tHcqsRY6%l z%U1QAQMM1;zcE&c(C_rv_7SPi@cfJrXU5W>?4!m7_?d1LM4~g?LoUTYp|!OPnjG;f zWrv>`0jW`H06zsHoGyw8fVr-$A49GY^|q;6&GPlXoGBnY$zD2JQ-Q zD|XTO)rba^sX7Ums zD^AfjWrt5}9uihXlDy=m_ih3&60O8!g3B1xcJv@34S;ZqLF^m7oYxi}8O}yxg z{rfkn9Wkp4{;H~z+b=tVdjO(e)OX+KmMPMU4#Z83CS>| z|H;dAJ9?Fg5j{~5yAz8$=^ zdyeCP(fYY=w~cAKEY(|NrhXn2At@2eQO=jKx*{%+F**&F3w1YG2U<(GP!{Th=cB?L z8LCUzW2MeGaFH;V)OYz!7?OzNx-QxKTYrx3Dn6Hf#u*=L!C)~ss)RZtBdz=wQJSY) z$JX(J2iO3L&DFyLZJ-KWSE6m*93+*;W9zC&$`|Pe+h7}{KPWv0^egGNA#!3v8VKUioi?(K)O;K3lfJZxZKBUjZByI01>57zoT)dMfI;%+ z;^-}F5^pQp%C>9|TT9w)4HD|j8w}`0WIMdVE2n0J6LcR+eKB~)pk{y7OXRAyWMOz66~Uo5jH|0BW)yj7D7J> zt`RJ@cL{x9p%#3*;{kG67SHc)yDMT3+d~n1 z+McHnP1Ygx}h4)mHm5fmJSM9l9}+po%Tku_H;g@doqLlUK*TJk_U(6$!}pbaz*!V20S?T^BUgRrVmKgImX z{$zht!aph-hhiOO)echQa%x}MbVinJt=5`n0})Qh+9Aqzh_Z1|HqRzq@A~Qp(Wmj?n2-hEA8u{}g|$X8#OjTP>`fntvaq^S2_=(K>%i)KL+Jp|*N1 zhFtSAMMrP*Z=Y2j6B*7IC_Z7HsuQ{PPtZp^^wnDOSRKt3Cew5>*Lx2d_P({H@ zUbT|ER%czUZ%epN2wW!wu8sn$vyv8)*MqJWk~c&wByWJQe(p72NZuG#bO%=N{pB~+%1FI_iHl1}D;S- z`%w^AFy61@uqyfi9etHRelRkeLnU$rp&#mRhTGkl>_F3lQ z^)a1AmE9qyW0wu$EUcOlKg4(KRyW<?ZB-N0+V4By4dL@(HamH0I&5eO;Z<^N(sp)o* zw5fV-8V%DjayU1&Y|`3w*-y5KZq^yD>uPr32kzhAhI3S~ppL;ZP~f*<#kYm(x3+k1 zYvSk}4Ec)FSieOZ!~52@U7m!RHR#@%{0p)(wa-uKZfCJB#c|BLTX$veVQX`t&Gxwx zYb82$nW?SO76#H0C}mw+SH%xvCOv30lPce}8e)SP0*BCNs!Tu!XZI58(KHpP?hec0=i~c8(Y%G1ZyMP zL~&l}O|2V~tR3Z??9!Qg;D7(nICT15}1SKRaT#= zQ0akGTG#t*8P>=ZFa@Wc4TVSFZ${K<*mhE)fLbgF`=xx1~WEH+PX=RhIkG}faD%Q7^qo%SqJu3L1jy6l*W9#YZS`xR9;J0 zAobw3B4@%z^?hzl%6ojHr~?~0OJ=Av8k@V(+TEZqY%7L=U#THR4Qhf(lA)=}({)mq zqjGVS6`QJ?M>ldRBld(B;tg@~${3L|`2vzfY?%azzd+&7o*C^N-jV zoEJw?PeJQV-~2yrz3L6_y@hmzvIe#a*UUG%y)A|Fl0v(Xmh5S?MsFQtLst*0fO=Ej z!oHcI(Mrnaho>xEiY}+y#kRYf4tg9xSv{O}6&8QjL>`t8Q_5=9}zZ>n~yHROsW z&A5zdSrqkCJ^MkH2cRGX5i(*?N5)%WImn9o%^hIb%OUrszx9UF=B-PGrM#zW3DdsT z*IR@(^G1@uD5yngt6KL~x9sX4F2gIJ>Qh3O+AvT4rJH!X+rl{F?nXp5-J}PBu$p>{ z_9c)9P+}EHi-eYUE`g<;n;%S~4OGL8AUauC3JcC4W2xJML>&yOar3%$RU+$B0z3&g zgzi}yHUw!#`_u+$8Jh=HW0t8|DiPy{K-ahR1+~fzWYsotx1n+DLGy#3r=df@&q~u1 z%85C9vQ?NhwD$C-??qd(-5fg?)5K~65!Ks3oxM*!Cik^I*0&>UK=B*67^Gvv8PY~H zg>}Sgbv9$jr%jCs+-kO(z%jnmz%{f;HIolEzCK&kR{cMLNpAP6@fCn6qKCQHV zf%cClw5sWaB7>`=xHiFbZy#hmo<>xBu;B6Q&_eL?0MKQ89Y{kD97&4|uyxy|>p=E` zL7CGsq+7d{epRqRuI~}gNk3m>;T9$+Lsv>&uyv&VVNu+?j;1E6-iA{BXp@IS11(H1 z2pkbI8@8g1jJ89I(hs>x>#o{{@VfTYJ2pnX?WiVbT;y8ZEPE>TBwk` zTALC~wKpezbB|{aLGfGKmL4w^64l+O>2+wHf^8*r(N?yp z=As4LUNh4jRBKHJyK2pp2?V$E`52lY<}IR^pCtO%zue^0R2`TPQl*@~5fsh4QY9TP zhhsVZi9Btp_N)(7Uk+_9XFoDX_gE>UdsFqDI2tUL76XgrW9Dhl@LO+qx|jk{<2hN^ zN^9Y;Zu17>TrNUs9t!KayrqjNbv|CNrO}Mpg{>7zKALd`u&~ky-XohdN-`Ph6q^T1 z;Grg#L9TvOc40gGRA=L-==94Rr9YPx3VV;si~LooKYqLQ_mat_w@aY5P!uTPQ z6fS@}>@T3}^08r9$JPb(Iu4_GfIOOFGI~yqqg6#{%_6BEn5ahG`J#RhLSM~{3C*Kb zcVPI;h%r6Yb52`&5U{FisGrdgc!4!%y*}o@*l`6Sxign2Y#rHxK4uO z(r6ozU^`e=Qw{`x6tvntLvUt=-RNTg*iD;swt0KlCLU(nfLWe;OH!9Cu3Z{hQtzSX z<-NzY%zvdQW%)!sw1B8&rLe8W7Ze3*%x+rTu427KE)~k;L#3@M8tx`0vQ^Op+tvW+ zO;M}prlj7GY!xWfFZ5)5-xekjpJ)PH1eY>*XLvYmylpg@GehP5g ztfbaRh4^Z0k<~Xnr~$zhiFyuOBEA2p>i7ACG_$>^{a zL}K@p_y()*lsBlUHPEg(UR;|k|LKRnwg$u3NnSJ-0hV>|co=pavv#e9#7J~?@pyMl zoA@QSa6>lw zyj!bvnn3{p!(B$3G*#~^MjMJ1H)eUVELur-uq=}DVB_pDps&X7Y<>so8*wm*`-cYG zz~O$??Lhib-PhdZ>(}M8n$NrWhK#IQNYjNQyn}3D^Clvr2CbYRlLBp=OC4%Hg!a=6 z7^%b5mr6^{Xlk;qWaPSZKBZuOlF@YC$fx-@@>qn^vMC=@q7gM=T*>xpm#A@@1@+ub zyyprAl1HRN{;CwswYx-4FB_~*>;eioQ~yGE(SP!<9?(T;ILrkCEPx~vB$VA^bLGnR z%V#C7xu7#KVRZRcn_;ZUmx#0G3IUTZy|u0fJ$M<--XtH**JluLYrmT0Vc$|H(1-QI zszN{Ov#zCxm8gwS)mqmHr#=DU%uK-P3=En@s9lAj`dhaSIt6nM!C6-c=o`7 zX|8R|GLco_t3#8o;z>P@jE;blzKda{|K&dA?_!NV+(Cs0iOL4+cd_nq;*(Zb>>if3 zcl$k6zJe`C8ttr$o=DF=4wnStAFO?e#lBZL4jyRcAM?DhruUd;+Oc=&<^Epcn!m@x zq|48bdRnixFa>KNRO_Rp>OLtd4r4{{1_P`js3$|m0PTD=S+ClKj{2@Lk?0i$&^u>3 z7hjofan_KF z0WRACOdtLE%#ma-Utr#e>>ba|b#QEP=N)O?mV9ejT+oNI;iEoE%r-N*&;YW%OyS4+ z*5mRNcV1p?!+U==MEr8L{-eX}IO8^J zmPZ$At2;aHaW-gtpIf!MD7M+UfejOPU8?1he|5IdnU~LsxuQv8bPaNAzmb5iV(}^P zE(IPt;kY%hgVF^~svLGoH19k|ZJwicnQm>Xp?0}0YRf?F3cte*)aDDdD*&}X*S6)T zU8#%OgxXcQ;Ek)WJHk`C)(Ha6jahSDCfw!;H)(1JS_23|kFc+DO}a+0occq#qe?fx zk@-ua|hfFm=s`-tIOcj zf;Yvw3$Ck~Z;o}3`7ot|6n;INQr#MJHC(Nr+jJkC+WGdFrPl3$WAV5o*2Qjqr|~Tg z_l}qg-fB7S)D>^aaaU~I#>2)wIhMxUO!z@LH@Z)!2+)ru*W!M6I1W6$kU9}mYEr-;{%X04FZ`;nLn;zY?uWwk=3w9tH1l~M}(+Vc@Q0=2>FS?7{MN7$8- zakVy<`nxbr?V8%^Rb6kUkCxO{tA-C_`!Hs9@WD_RQUvp`l+P8T#t-A%w*P%|5 zE<|>;-N>^#S%#2hN3OZEQEFILp0&o`s3nY!huLT-I7%2}WuOFD8PpQMh8P$~DuTJr zy60sc#*ZknlO4vadZ+LUt&~QI$FM^X1dIe~e1L@j47wNA0W=-P0XZyX-UkCYnjT95 z<-ky&RwjZ6vjB?RM*uMiP&9|BY5=hW5L^8oKK#A2;UDY|ITLz9-G7}6!u@T3B|HH3 zJHWXQBLMN9U#d2j&HsJWmSa@2F{;@gsmd6tqGJo23tMaf{x>#zTo>7ggL5u>UN_d| z*V~DSo{jBbuJglGAdmL@{K88NMX{n^)D?H)u@_?dGxy)M%a%Zf1foZqwF;pp#avH1 zlQ5_|Z%yfHQr*N2^h1U8p+b5}4AzH+Ur6Bgvr*v}Z1xqHr~M+d`&^-2#M2$!IZd!F z;I7zKe{x{k(bx}6SkaHTz`KQK|l>8v_2(-SN*LZrE4GUAFZ0j!ZvsIV)k)%1i9;r^>vp(n8x+@J?p@3U8h%(2z z@j_1gX>1{D=69Uz7_z4JaJ-u-Bv_)!h`~-^#rzg_Ymp}N)3J(_s%JW5#k5FvhJ!O? zMSE@%D(YdLFqrAzKik6$*(#8BFh?^<`fgmGkNv;?vIe}P(AHy{?tQ9#nwxs`S@B<^ zym9@zXP-)GmEOJjqy%&;6r(V-uH75L_VDV(bi>y6&lqf&_Cq*zW% zWo5d=<%ru~*Z`VOL~UHBu~M4|=Fw~^;<}wSf&0muSwO6@R8Iw! zPzIdNMd4nWTXA5cv3-;m*S|4ck&-H$Sx<;@2ky*>tqsR(?Z)E2;B}5}V_$*ST8;Jj zD|m51V_w=!xBd9J3$HcvX)TixVY!9?HukN7?Uz+X=T;-MW})H}I>7ekYUuKLHsgdkdOkxWd~H{8U81?Bf>G=E%63gWBPLDDq)fv->f zR@2FVxX#~Dp-*1#x2*$$D?mR(1;vG+lskFla;t^L=6@mQ_c3*@Vfa1sfI5av|B~vM zgljYBdf&J!vV-g{v6CGX*y9dERXq&E&`HgRP%Q5owr}i_=Vtk~RJPn28QfB(dFybG zEK0&!*~3nV?p?(w&3&>aQPuC42?~(sniC7nE1;Mn-c{%l zz&UpW+2Yu+e4D7zrF_e1jNw*0kpK|a5a z(0w1}Q`>!5{5&Ma$J+BzP~SBFdWHjaMfyEBX2YO2pR;09$bEb*?(=NEmA+d0_o@A zQlDa=>IEt0cFwYF%8F%CctgThYd7bw#J_o6mqoTL3c8Ga9k1)!>S?b<*y}6X>$2tt zkH$LNH&(pHuc^jw=uC^P(;D7%3;)JZ`8kJwPwv)9Z%6b3NcBe4ys3@@us!%LB2BR0 zrg(z1ox7r#x=I1|_XX1ZE2_Jp=1n)UPnFLMZqjQJwEs=C_*T{M9(L)-+~3G{4u$G& zx#=86bez$SQ9fbU&lg>M_v)PL)svzmUq%dB` zJ@TgN&Iu2iYLImwRXh42nwxu922q)Ta^9J|)5DdN_atpORouHEir9Zp^1`Ly2e^Z75B$4c4E<@j7>bV%0qQ z3t^-$0CN1O;HlTcniwA$m|uyJiq{P zbmN0ouQpY$ilSAd(qE-3^#;tayR_j_g|pOjgDSVaak{Z#R;b%EW({M}rg>4Q!<8AG zaczCm3pF{bMaq_jRCh;Fy%H?oCbqsAg?hf07`;3tu}Lagpp^&DlkN#!GBsgIe#axjLy&6ue&%a8xt+?-V1+IlqjESX7irCWo>I43_lSIn_oyTKCO z&ji5jqtR%O#_lnXVCAhvxK^7w8o*j}cU#YP_YF90yQvwsr16lf8KliL*cWU|ej2+s z)`xg6ZF}AW*eVCgy4{!X0R4?^Wxs(yc?1h}U%3;(I$oviW2x=a4&_P#dZ{!_c~sg6 zN*kflD)VJrU0}A(9Ivr4pC8n#$PPJEDz73-ey#phlYOn5?aTg09>Efy=dS*s2tB7q zp}(^R`<>g9i3wC_cO*N7j-=3$Dzy6o&HuTW)eEgQcB{=Tyrx?6vDct|Q*;F30Q3dG z-rsuI{_Nc55hw%D6^v1Yjtx-gK`7G?YWIz8*htf!S5P#|i}YV75IDW*0M$;0!_j?p7O$fi{)bYQ3$sT|4F4o>3)NwLYrkaEcqQ z;#SQUIx_ZXo{%*kK3_|j0t*-sx?9(($#K92R;nrGM?Ju6UWW;XaqL}f>P;Rp}I1~rMYKVRp}@e zbn;TAAI^p*?}b?&fl|Sr1|x!F3o89@W|r@51~xTC0ruYoV;4%_MWqk$c{cN!yra(7 z76_*;9EEb%GS3NseMVR}F9}73>nteg2wT_K2W3htxJOB?pwpO>84TN`m+17`aE_x;>RLcL3Rn>_`**%`g@N{Prg%w5 zM+`kjBZ07b5l5jNI4;T$KnRgss{lo&Mz#UxCEA%dZm8W+&8cTbwvqC*fJ=*TL1`Cl zOBr*cs%apKj4t~0h+e!;@f|rh7Vq*?aaKF-wh3>V zwQG+b4ddo2{oDxU8Kv(=>AU5npX;R;^Z7j5mnyP+Milp$6d#FPY_@`?pMJd$Pr?OsMK(}hE7@T4R1J-9=MvV@jvQ>IX)W5K%^IFQGLu>td|g3%|Tue{fEQ` zXsiyn-WcxG=gO1V0&QBqX`H08%@?3Bebhiy6Wr+L7={x04}3|RGWT%dDgc&v~KKG5Yh+^pS_6rK(o;N3)McL zxrAq~-7I-Cnbh;hplQW>34~Z!T!|11iz38(iH=8Hs*CWmvyn^-<kLZ6`)t358i@keV3xLjH!*38q_PP0?imUZ6gns%4c>?FRpaCClc{z@Ug=E!@@yPgphNHwWkrlp*g zJn!p$GEg}mROV1PvwFW8|G-@ewg0+22X<&G>!~j#_2r~Kj;B|I`Ej(&7c6=(SJNg2 zJE*#K8C~oJOjk35=Lot$E6jpnrwfA=tXG!sEAC`oyiq%x?#P!WMG{`$D$MUpD*=Kh(w zo&OZ!B+G~Cikz*B`f*Bqn(pWKNT$8j8YM5vpIR9aE(R|iOlb?3_?s(}cw>co5unUm zJ*YB2RdU`n9M8fa#M0bGA<8KuRI-bM3Dpw>K z+duRD{S}UaF7WqPG=lN^N^jAMM^$iFCW4Ui+Ij8i6(!;AmEIZBhNo9>i#!Q^as)51 zz+ULJuG6E(YNhMFzptvd96F0GzB`MT^D2wR(i`C08}%lO=$pUFBH%asGs=2<uaG~BhIHR~y!=A}q@kzK{&!zAZOIz*v<)|gx zk?>{-}8|#HbtW`&o``OqwwhWcyP$qP_t^&qsT_KIe zbrm-bcn635v`GfRMrdJxuq?U3G0(!>CkZmW-gpbMIpJuo`gb9uUB*AQvP3`vwQJ^g zbTLdWB6|1b7Gh8F-;xjn{dd^6YWoU$hh8a~4OPc;=y?(!sg18{RUU#(E{3CWo;|8~ z1zVLNKjR!U&*r@IjbTcW_qc5e?01Zw6mj+&^YFvqG*!=v)Y!3rw9IdIIUJx<1+7I`j6C-flU3w zMx1_L5O@`)hZc(=zw+A6eOXv6$ls0OftIN}8Dq^0!l!!Pg=bcd$RCUu-g){5FD0G4 z7sI14`NxrZA%@pvzFf zwGIKoMl{5BG{gx}_(#gu+I(%Qum9?T*ptA+3EVgQR~01zyu@ncL}h-SPRC_XzDVhI zsHUpylyc-7`Ncx!oj7}&8nENIHs&~+hRps8b%ZLLNhQ%HJRc1k3+^fbe7Rw4^TVw znf?&ILgb#$B=awSTyq_73Mq+Bd{=B{aS&va2wwJ3QaQV{ti3 z?xwB)tUJJ&k8*HW($`3@fRc`2b?U*>o% zXUl0>VS%2RfMH#{vo-;nhGA9P#)gf|cVWo5jr8V!MPJV2^}6;*_}%P!@NQ$JDEFho zXvlAI9cRrXQYX*X<>GP-7PE$~6TGa8Zi_Hj1<~7;fg|E0!yOT7a>}`#99jYKyNb?^ z=OAU=9ij~5@rV65`oqj39?>2Wi1rj)u#?2T zV&{DY-%NUpp5a~UaerdD6BCdpbjK8%hu&~cdN5$0(ou6ZiZHy2cv?BDjL7$Z0Q(Gg zLO`pbE@1q;(Q2qmAlY*f_E6;!+8cUa<#VqDTSH+ew~Mm_SZ_VDuE#CKE|6Z(#*wY( z>rwWJaO;iL#Zv^nMA0wnZDsX|SF~HH+W1b74QmOnMTUC?qCKAE@2>H_^G@vD4TleQ z=fZVgeY~z69szhmyE(-pb}9IO!*))0iE6&89(7tzN3GuUmz>|ErQfRgTEg32%-a;h zTW&nvR)_HEPW5T>w>wqC*}Sf@0{XI@cxIqj4d)b@f>ZW8GFXKi=M)1kcAZrWKhtIV zZos7NU2PJrm=wQCZLN1pT}j&PjDI5t|FFCQxn^xOnm z?&{6FiN=vnP#5KkO?!CgrY*{7iRk<*}bdVRXuMIHPsrmSo%K{v0%&=}Yc! z*E7%(Qe1mgE3v*~!u4F6*yylpN}{kazFq1(BV;xPnO&;fxAV1ndF|EcZ@ia(>-#5g z?RQarknekKnn-2wgZ4^5abtMnI}B#Y4s+n!0yf;rtG1O`_s1yT4`EA%yg$MN?2K^# zRi5*wT2A$P{9BNK7gIq_=S)`SJI2VJ#HO9G4P(oNXV(0ltV#G&8&=hee#23uzmlNa z-#zT9lNlrE-g{8BJ+b?;5pCL;*~9i6jXfe``O%uK?Gb+Ci2g=oK1SDMiKbI^ftJ|o zSeZ3zEdNdTbryxaG@g?R5L0xE6%oh8;Ww%N{+dy3uP&PIk$?LZ{N1YRJ@lFJ!5=x) z(tR4HafwZf>2-Q}&_;}s0rZIMpQE}=pm~8k;Q>SPy4q?wCY!EE)9pdj1v_Z$pR0PR znmtCQ>J01kBq!^FKH^R$PDj94_2gF2RLQUE1L$7-`?YF)s;=x)t+9nZ&1>zJ&Wz&S z!j{}^A7>4J(L})wo<)?ibaNNcg)oGM-ofd&gBlv+XDp|={!xIigZ6Bg%*}MDZUs%D z=fvoR&yK?mbhX&u#8qQ!Cu&RmP^fmTSe;`MJu9D(oEO`#a~o(wPS1{QHb%CGhYQ{G z8P=TRFHs|>FUl_p!}Qs<GHdE|iR_ISGB1uPrW%$dwjqx@j*xvZ*Dd)b?J|aA zo?5JO-1E&OY^^g#02#rZG5$z3(B}CA)a)c_En?g^r5ni`NR2X&hqB#7PJG33F($?YFXc zt}XBIhV7HNJ*#@nb8#YN(f`-pxyQ&= z)p7jJ+Jv{l|Yq{m(>WAn`vFf`1S&#zZ3c2l${Q7)6cv`JQuU?kv`5^e;^(+v$0q^Lv~# z=kYzi0}>kGGeBp&?DfA0hT5;pSl-R3oBdQs>}M-~^bLP66p;X+*%=bexHqxk8UZg9 zXDSvyi}%Hh)i3hy`=Ic(+ZY;2^F#mk9*Uk&i}kmw-Is0U(;&LFLrc_{t$s}We5D8m z*Jk~h-kqlSSBU3*6^iZ2$kxHL_rl^r$ zGj3<<+eM9c_qxI7mkdnk<&5Ct{N206tF64*s)5z3e&^yUzyL0?(8*_oG^a}(7W5qF zuh5Ox1Vtz1ZmtVc{t-*c5pfb&#_MpBhd=qVocy&O>bArIRRV~#4=<2U;4GFeZ)ALV z!}5iwQCpb38TqEgKZvEj(c{@{S~)m65vdyxnRR~b6k78a@2C^s93)0gIj#I z@~+-b1*m}XJ}jsr&Y9jL+V5rR3dReB%fr6zB_B1%dE3P=^0TX7v|;^BJnq9YT(As) z{UJS)O;f(a{?<#rc}dA0_jx^q&6ci`*Z?kis~qoZ>iW5rgtX&5=U}_iWpZ~&aL)e|F{nNIcpP=SVv#)=}5AR;V>AG z)q#5z5cO)=`!}w=olkO}1Lrw#o&)DOaGnF_Iq-kQfr4(d8!y`{)bSJ33MNC{kh2HA zDHw{KaBMPmgG-wm`-EEB1fXE3GBRkq3iBaN#0$;>AW)@oKSR*z-cT`fm%mjJELF1+ z&@$CW*pLM=VU3UNSI3b5go+!OOP`F9p+FO`f zF=5^c30rl_VF6jyRd%#6k^mL#y0JdJiV2erVinKqwY(QR_il^X0o$laH1Ize%pQwqU44#~ptF17${V4)k#2eZAeUc6)k~S>0v~`kcn0#9XEQuip*plIL{9a2 zu!m}S!CEMiDU;uiL418RRyR?6K_iW9<$gZlV(GVHK&^_)#J+&TJ=>*l5rW8wAod+h3YoD>Sz;&iBzi$tf^Lzk~Zx&(lT|w zi1YJpy{5_RkP=x7E);0Ev|-dVzt^-?cCRY3<+A#`H(R;HTw)uuepz=ns%Oc2nYqkX zaJg&D6*T5@R{<@S0TLP`%Ui1FO5i@;c3I0DY&hV17d?(AuCjLpt6O91#1IDFVkqR5MyCpxGKZdK}B0L zKW^2&r8=M^`2p!AlB9rF$15xrz_%$a%ZM%3&X0n9)>T7xUFByOJZs!XW`*4CdCC|; zpQ#z^if(^k6l@pmkxe3&Vp35Op`p|{>Og>kzKwP5QK5DlEpANR1t_CgSKcq3ohWT^ zyc$5Fh4K~Z-V>$08A@!sUaYuuZ2Q>u(lIC~3-L9iB-VOp^-mY7G}bueEtapQ{|&JS z0zLPGf-~B=iLruaO%(SDlLxa02Mreh49i(dE=$&BaohM!dIqK^WiDY&UU6hXCN~yU#=rxVFrZ7{&OajmNbVn(e?0eN#Tu*QxqqYl8*~3w`M2i&ZSrr+ z{YHL!$=ua}h8XCp!cR!W68fC?-Q5^IXRX~ps zxc%Om#yzO%8g;VwQmigzF0?3fp+A`m&BGanv?6n%519*1 z$Xw_^=0f_J3%O@5D{)KTxg?z>k^pR)F6aFCgq`8 zyPN;!W@PVqe1`Zp%)e22vd^S9=1opc$~WkOY-}lu_9nfFG2;EPVXv@Zv_$ym5ML#4 zNO`iH-NgF8FXxzYQodL8Mis0(FnN4`ChH#W3$bqdHR^)-c8-Bx^&zkst)}A~0S`NS*PaLAPj&c7jho-N& z_PXnDxN-NMk5u;`IC$I4J(Wv7unq$VlecdhFAtP1T7U5sr`plt(wrF_n%J;$(}g3O zhj(1MW$WnJ1t0v-W!oQpV)lD=pBq&L8EQLIF4fPt}y8|Q`3%86Nig& zn1t;#m}`dKF+u{9rYqj@Fm5%Hq!G1EJ#06^x_8H77ze2Wln+mjun>VenrSc&o>cpg)>m)1QY&(Uz&LV9x$x4!jEmI4c%{&z$ zi%}fJjpmB!w1efK(X>R*wwHrugG^z#;2nsgB-vFDRh?-z+6&|l>bs&gnJk5_XzyT` zO3MvOhGz$&b{o>gBJngu1n?=0`&gGYS~M@}q-zt;cM>>xC`wY(NK8F?u-)@?+Hn}v zPT7`L>valF41y$sw?B>+!nRp#z_Hn@@5qGPl}APcd<|SSZ+|nYEg()yTa0EvLoPoT zo~b}C#MuOm$i4T3r&GrW%kaxeGXHO&Zx}^n)vWk8EHT3kaj*3{`J{WZ#bQwAVluL%L z)6CLQ)5d&*Vq-eUGN}(bS*wu1Bq^HI5+Syu<($e=NjIgLStoPJLFHz>Eb)%O2y-e( z%v^{xk`S7x<9HmUQ7vj_@)t+57P=0fOGkP;M|2|2WQvx+(=er>N!n<;;U$v?6=xcH zG$S~dO|Q-eW7NcwZ%2@cm!V{3f9?DIiOW60XH z-M)FQNIMW@Z1TDZ*S76gm_8WA3%%~&_4jxGbB!-;m#=>~3FaJK2zstFKaV=Nu{0NW zMlnN8%?(*O7u2de@IcVEREBN3$voq$aU3?usZMH#sr*+VXrf;A6$yDUj!tTz>Kpj_ zL+Kg(5ZJDJDrnc~6?dVpbe4P&yR#GVTM(YEg<+k>K?>t$qtimlop#;3*NQz0>i%Nb z-!`gu!x5u!_ZQLg3OFBP3X)BzY=pwj^(hkQ^KXwP9s_xb_oW}xG%k<**Dlrnzx+9| z=|5|IyVGord6(74yj@eqnCTPKr@b8t{IIuc`oz@q34(S_pPrgNZHPg9-t4g%uN}0# KW7T8cReuNm_eT!^ literal 0 HcmV?d00001 diff --git a/emtests/test_bswap64.c b/emtests/test_bswap64.c new file mode 100644 index 000000000..37a5b1edf --- /dev/null +++ b/emtests/test_bswap64.c @@ -0,0 +1,55 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +#include +#include +#include + +typedef unsigned long long quint64; + +using namespace std; + +inline quint64 qbswap(quint64 source) { + return 0 | ((source & quint64(0x00000000000000ffLL)) << 56) | + ((source & quint64(0x000000000000ff00LL)) << 40) | + ((source & quint64(0x0000000000ff0000LL)) << 24) | + ((source & quint64(0x00000000ff000000LL)) << 8) | + ((source & quint64(0x000000ff00000000LL)) >> 8) | + ((source & quint64(0x0000ff0000000000LL)) >> 24) | + ((source & quint64(0x00ff000000000000LL)) >> 40) | + ((source & quint64(0xff00000000000000LL)) >> 56); +} + +int main() { + quint64 v = strtoull("4433ffeeddccbb00", NULL, 16); + printf("%lld\n", v); + + const string string64bitInt = "4433ffeeddccbb00"; + stringstream s(string64bitInt); + quint64 int64bitInt = 0; + printf("1\n"); + s >> hex >> int64bitInt; + printf("2\n"); + + stringstream out; + out << hex << qbswap(int64bitInt); + + cout << out.str() << endl; + cout << hex << int64bitInt << endl; + cout << string64bitInt << endl; + + if (out.str() != "bbccddeeff3344") { + cout << "Failed!" << endl; + } else { + cout << "Succeeded!" << endl; + } + + return 0; +} diff --git a/emtests/test_bswap64.out b/emtests/test_bswap64.out new file mode 100644 index 000000000..af129b5f1 --- /dev/null +++ b/emtests/test_bswap64.out @@ -0,0 +1,7 @@ +4914553019779824384 +1 +2 +bbccddeeff3344 +4433ffeeddccbb00 +4433ffeeddccbb00 +Succeeded! diff --git a/emtests/test_ccall.cpp b/emtests/test_ccall.cpp new file mode 100644 index 000000000..03f1d4cd7 --- /dev/null +++ b/emtests/test_ccall.cpp @@ -0,0 +1,54 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +extern "C" { +int get_int() { return 5; } +float get_float() { return 3.14; } +bool get_bool() { return true; } +const char *get_string() { return "hello world"; } +void print_int(int x) { printf("%d\n", x); } +void print_float(float x) { printf("%.2f\n", x); } +void print_string(char *x) { printf("%s\n", x); } +void print_bool(bool x) { + if (x) printf("true\n"); + else if (!x) printf("false\n"); +} +int multi(int x, float y, int z, char *str) { + if (x) puts(str); + return (x + y) * z; +} +int *pointer(int *in) { + printf("%d\n", *in); + static int ret = 21; + return &ret; +} + +// This test checks that ccall restores the stack correctly to whatever it was +// when ccall was entered. We save the stack pointer on the heap in stackChecker +// and verify that ccall restores it correctly. +struct test_struct { + int arg1, arg2, arg3; +}; +static int* stackChecker = 0; +__attribute__((noinline)) +int get_stack() { int i; return (int)&i; } +int uses_stack(test_struct* t1) { + if (stackChecker == 0) stackChecker = (int*)malloc(sizeof(int)); + *stackChecker = get_stack(); + EM_ASM(Module['ccall']('get_int', 'number')); + printf("stack is %s.\n", *stackChecker == get_stack() ? "ok" : "messed up"); + return 0; +} +void call_ccall_again() { + test_struct t1 = { 1, 2, 3 }; + uses_stack(&t1); +} +} + diff --git a/emtests/test_ccall.out b/emtests/test_ccall.out new file mode 100644 index 000000000..078566f0e --- /dev/null +++ b/emtests/test_ccall.out @@ -0,0 +1,30 @@ +* +number,5 +number,3.14 +boolean,true +string,hello world +12 +undefined +14.56 +undefined +true +undefined +cheez +undefined +arr-ay +undefined +arr-ay +undefined +more +number,10 +650 +number,21 +* +5 +atr +10 +bret +53 +* +stack is ok. +stack is ok. diff --git a/emtests/test_ccall.wasm b/emtests/test_ccall.wasm new file mode 100644 index 0000000000000000000000000000000000000000..44ed2f4f49b70cfc0f97891113e8078d3c6a1859 GIT binary patch literal 21842 zcma)k37D0|vG)1)17~y=5OL*gK_$^dO*AoziN|FWh?+#ra+4cGgNXxzGmI0Hm@pt9 zAe-zv$c}&lf}kLaf}psdpn{@+A}-*Lii+~TZ+&N&(R=Un{92q-UDaJ(T~)oF?#XoQ zezTX!WW3X|*9AR#^zeFI=jkJ3Nai}a}V(vWy`$LqUQRbSQh;*MRrcB{Uus@vZia?6Z+b#=!Z zI$u@Osp`fq-Ts~lBrDhT)-GMjZ|!dJ0~GNSyW`wbntbUEwnGc%!S-jMc_lvY$vJLl|_l&dEdGBqOQ)~@x{HS5sn=I%FC z-E>QJr>-4t?sW4FxBR2S^*8-BlPT0f5>3nX!;=Wa$o9{MRns zuJ70-xU%Dw!R>XaY}>9k-qiJ`>VJ?Vt>RQC->da&&1I44zpAN-KA&s_NQJj_p`|Q@5^}W0DRx-q_{V?tjZ5>TqLKr%susNr#*1({49p znh-P7XHGJV{?D|GI&{Cjs&l4Q(jqM9wt6Z)u)3PX^DOb)`MWh^&%e~&!+mMyi4Oz-7F|j5rUm{@}vhGjF zc!`SVC92xJ z?%{PW-=n*G&yzy$vCab?b;JShCw?Ykp?pz=yTb=zvPi6fL?St<5>&gvJ_h^wpvsN) zRcTn^ru!g_^_82N4E8JB{XXvZ#ar%Uxi1wT_wl%&_p01;qTo5pz1njg&D^T79G4$s zmfG&qcG&K>cW?Q4%TG;1JALfqV?VVNZBy;O_Vd0W{epZ3{esSJc)%|Vr)rY|eC=Zr zjeM_|_ma6J;1`yVv^v1*Am5|HZ49t6$QRYP7X!Q)W2U8-mh`fLrf3zVWqo21ljk8RqkQ&h}F1tA=ZU?uf}Z( zv5DC$-75^25U()T9`T6PxQ{}7WVsH8I7p<@^@~7uzo^O$kH{ld<0eI5ViIFxPJ}s; zVqqgSlh z7-YdZC}v#8ij6U`TstOqFC;3e2$>dxuqqORRqZw8P36c*Eyl@xF$i}?o!vwFQpBu{ zr3$0s*%*YiCYJi$$>zKqOFTRxHDl? zUa|qOk|I$cC!;%ho7>}10<1N?N%muA;HR|(mj#jiA0iiCfJ!U+KgW1 z_9kli-b4*#FH=M}_$HxDMCXxEpYTqWdrSi(L#c$U;G_^m+5Z9ZF2TM@DHW_iGON1{TKdak#jq4b20xV zxZP!g3pobI9H!mB@o#1BfgUnJt%q8T%yGVHh3n~|rwxF;JoMsZTJG-fa0l5%enf)n zmH;MLnhZ!6H(Ltjso-|0cX!0qROkZtP*co^V?J(!A+&AHXtG}(vABLCwQ1Zc0S|U6a^89t`)Pm zQ`!76!bb~7D|Zr3btju?Pm=v6vVWMMNggJdpeY`vsGgH#`FlLvW9+FOrW$*ihiPQX zyi+~bl5BSh>zE{bqHwfi9jCaH%_t}5GYaXGTpLh!Zb%rfe18WyuTCC>3M zM@=H9jnrwQIJrNI``MH79?Mm`xgO@)JUP!(Z<@z|p6}&Hlw!WrC<@p_>OhO!=ixq+ ze!m9-J-2{UpeI`{^sqotb05QGp_g-iz#kgax5&dH87^RR+9)U<@IV-B%}gYEv4_Pb z`aus5T7#E*SZd8}BmOcEga@qv`4sVx2ZGwf_>&3`dwAGHEcdY7M6B?zq9B6&M?4Ug zn+WnLVxfW_kxEP%s?-Ccu}o2 zdX?L1tD~(}H;b|EtFYN~KCW`Vi-?J`&BHcp=F1*l7H^y9ewV}Vu*r(~>fx_=Af$v% zR%$zS^kC~C5}4&x4}{GsWAlKTr)l6Wqon=iH4m>fSTxCou2GKBXx|Z+rK@_hcRM`n zU>ov1I4Ptn)tw%8+UT}RQLNGP4G(WvgLiw_tp@M%(kWz@*V(;k*|RlnkB2>$>n#s& zNo2;I5HV~1(4j*d)!z2-wx}&cWyacXeo^7x@$e4&MvZ&d!@F#1rQ0hh*h_=&^RSQE zcDAT+?|XRPvVGv;1NynredvL(m#+Uv*_fzyAA9(i1!{{c+$SDBu>$)&?586u-KQRy z^HUc1%*!8%w5%1=_Y`@+K)UcR`-ed&SJFBzC$dHBkr;h-T&h5OoLWAHVnt#3Sh zLtdpjZ1=8E+Ak>@dRGQ{|{`)!J^xTE{ z3*7o_#6m5~T_2y{tf8-;KL&mM&hAbheY9Ip7w~hgpD!Ky`PHsJCAy;};5bTm$D_aR zP9zC7Kp(HZFu=zEQ{XNiclnyH2Kpe#YlD0cj%(|N_!y#<^B~i3sE?sa9q%rotjqb` zKEEbI{feT9i8GkZoyib7n&@%FaJ+_&yM5ek6%F%oV!lO<8}5@)Qi0)Ic(V_U@G-*p zBYh0BdPWJsNWa{T_QAwxzsfzB#e-Rnfr!Y7%t-jFD<*x$|)bO?PI& zazz|6&!8pFq#;Ji5NosUMCL+H(+CHq_1XLd+RM@6l!5tiha? zuXYnyB_`1B6McSRBGsD2-GR^euXK~S&oPyz_?RM9)D4Q_9E(h5k$c3(Jrp_B$5dbI zscAl@u}jyu89rwCT2svw1v9y3n&o4buZ7iYAG3Xh{v02KnXL0(@tCM_bA8OE5o_E$ zAM?0P;@skc?D@=fpLoP-+yWm9xMQku3wjCkI)wsnz7F(_*+>Q~c zbPxI<`$6VfDju;Kx6B6<%eXUp$X77)Q$AebV}<$f5t_jL0+0BvZG@i_JKwd@)GW!0?qvD#vG zjSqri_E8^%%i6lfd_2ZZ!Bm9Ha&ApFO}2}0an3!KMLSJ-YkjOWN$Y&9Gqj_^CU`obw~u><#t<6SUjMZWHvTk2h7%k7V&ZKK2;< zZ69wN`yC(ekgXNp+rIlT+3qK-W4G`(gyYAo<0tMMTk)NfuK0fB@(~-($#ScYttN0A z=SiCyU-m(G(PqLI*=aag`XFp8P+Xo7w#DjxS2lWA%Dv&a$Jxq@wC>yMW3P$aXTi-+ z1^0VC-ZSd^G%w!gu=IhC4^)<%yp|4mIeB3g3)6MqK90a2`uLE&yu15I!vj8IulvN; zy6+QH<`bW_+Uk$`&^r5l?6*2T^+BK)Kl7z3?fN-SClt^7X{XOQ^!*q9t3j;?d>lC3 z3|j-{6((Q!AZ)R^E>Zfm^)}2a*Bt=}Jp9HjICj}TQ0fAU|1-Q$U85m$-pjF-=Q7}lEZDBzU#clkV4h{0A7DOxRq5^vK$uO3+^=j*RJ#QM7O;SpV+#W;v;vC)ETTax-2(xb z^8prE9B?_dn8$7pDnCipZfSs}ftF*-0+70lQSnfKhs-Mv8^Yz-a(WHR>An>KR*+Tc z9tl8rm@-!eSQ)q$>1wQnIdGN514n>00SGM$wqw6|G{B=4aE}Fej0O{j1bx%hEx7Us z@OXf=^z^y_>&&F<1FV;)jm~{Zpnku>JZ%*fq_b;05rD9&5PtI2lK}_~-T71if>GqX zRTdCW2YA}ldM3a#MtL^Cvv!2MiJ95@a`&9N*K<A)Qmp@r6v&$D$}3v3R!hTKfU zZVB*wkgg%O1UdJD4EF-f{8E6I0@qw+kF`O*xz=v41vr+&1zt-7e@B2FR{P5VUbeRH z46u_`a>zz=^^>i}U{Bi?V4G!qCBQ4D==J~vD*9@GSEc65RI@0IuvPUkajeautfAf> zwAt$c2*(zTNRz!0fY8uny8{qXlWALgjJm~}0p2tP_5|3&)sFWexPFq zB|Ezhg2J}*!vMsK+q;hfd?eG5(5S+FEIvM#RyyDNz|><#j%c3*q-#XmAAsGO>!_(r*Ns*Dae6yQ(;^W^dqZ2wprg3zeF>lvbF$hIog+1(M6k2^xOb+%>f z9fCkJ^a)8pAF-H0t?wH$sRrE{g3#Ak*3^C~Bu@Vjgnq^$h58H#F(9mWS1$i{Q_XI7 zg}5u!>^3mOK-v^tfmU}Aw#-H5a5Q9VhtmKA-7!u~U z-uuG6QFk{qWE~i4ZK{PE5k?fQI)8)TFqK22{F$7S*vR}DoQXn=2r-Ph52rrFJG+q~ zhKCr*F?Cc30sbqJfAmJsLFDgQzU!WJt3NEYma=e2h)h9Eq` z-S>(tR%8{KELQGzh1gZ_f_6yfQInq?RwT;t)Gh7SFRA;gzO5k$FVS$@oRzZv*sN>sOzKOyW~&^I3?` zyOg*nJL`~rrNl*fyAIi3N?eo=>yU$`#6>w!hx9HZE=p}3GO&!eDE;b?5oN?h8Cr)- zC?hV)m^x&78F5jj)FJcAh>J424q04AT$BZM$ci%JqAaUJ)|L?$Wpy3$R2gwmHq;?o z%7}}ysSep*MqHGwb;#~A;-c)VL-v&s7v=3bWPcfPQ9i6g4wexYyQaeh>J3&4w>GBxF}QVkaGdIY*Dl5eO5bO1C_V)OgWKER_={k*j@W@S%Fx@;bBf<=;Yo?qtofe-JVV1FGN0?b~&TKm8UP-{cw8mWi zsu~gN?BxMd#*|;U<%GTz})@t^H5eQ4@u%!`}s=(AbhqaawmPJ@* zHh(C>L)QFN4&zsceZ5|j4Q^fH^WV0#oPK0;Nckf1c zm$!r}-M$F>D68DP7vVj*nq>aW^?u5)aUU3>qrDH+^beJVvgnzQcumS=eJuSINS{Rb z#3=hC5I$z3K8^6H8pR(SdFSasgaeVzd%vi=srO|B!WZoEUx|dTQhile5)Vco?6-F9 zw_3lBK=`=Otc+F7^Nw#guv*oJ>XfOCQ5&nz^o&7}h3|;jf;-~01w6Lu7o(qDe(E2i zzvUeeV?eAS{jL~yDPun)4~#L;$b(}HCYejg3$&&k7`xM$#r-hHVOn^9;W*8G4?lFL zTetn5j(dm17-E8k#u#dX?v8P{tTpb>}@00C*z&eHs zA0iyzXB|Iqr`xIj>9(=P_uK{6c>1PyjNT@(PmDgXEZH{(p{Lz(>KV&_ck-f`xC{`| z-346n9kQ-9GR8=&+@gl(eWPNGGHIh@{hY;5o#&2?G1jQ#Vi08D@iOpuwTsLPB=`au zb3qmhw8&%}G7v_`{E;xm1iSn;F)sW-J}CxaBJT!F773H3muyU(Xrd`GrdVb7#2~1$ zsj+yp?(`T_W3GUw#2ozNockmG*r4(mF=nVW8g;1-V`XLx!XXPP1}>$~iZRQi&yF$M z955%woR})J1o`*IAj~#Xkxvh#{C65ULZXe#30N! zDa=7B3u6#WifoPd*>4xc{IU_{ff$Qo$Mf9SmCCV1w?(cr2Rlt#9AmN7wYqgT1d>`LQfRx`^p?0$`vu{#RC zcGq%lG0M6a>#QY@$9P=4b+NlPhieN%-BAkP^)U$P*vGMyayG;u9HkbJz${P1AgokX z8t_VWfd6ESCrz!5ip-5vj9s@GEufuR(%wB4<0%naxMnKDympBHbd0BY_pQb~6XO}` zSm`!N5H_*R&&7C-*>s5ie2nKU+h#^2gP_uFi9y&DSGgCIjfraaVvHAAK!^A*#dygI zY-L+$)JnIFmo#H+V}Vy<9^$_ecXr#ApQLK{YK&K79pb+hgVfh}Cv!)P9p;&xhVT%7 z7d?kvagBRD#_MENx;J7Fc2ef<7`tQFEIq_;W=?#|VuGFe?HGh+1^Y3`--+>#Me@5b z-lfsRA;Avu(@QLS<@aX1RuW@xjD2+bd%V^BDcI{(Xl_qe$(&M7@r#DGv4uzHCufigHT%T4#>?1q{#l* zHHpwnr};7xc#5K{W+acAa@e><)J&AfzVKX?_#+ zk%0*YngW9o46>__gA)+ag5)-oFeCwCkS@lOF2@W_K+uLr1nO~jg1gyd5?BM*NUUN? z7E`kB@Nqsvjpvr3S|Qxi-{QvXj)a&DR=U>Y@;uIe@5&qzRg29G&sCYZ^*q;qm%=2;15S#@&^p;7Kl z(p}=*B;6&>OE52S^ApUs%I-^WpXqVG^q5aQ79?0;tc3~gFX*w5q8CvB7Ez7G2`Fq4 zvo1-rmRu~KXmz>7oI@f9_XiWwWyz%p2oD~q~R{{;Y7Q{hb=Fg z!P3hUEKl;s$;WdN`tEyv=BFv1tzeQaPAUKA*~`|ZEU4o5Chn2M9RG+(UXfr0n<*9v z43$+02%~A#)d^NB`d6q(L}!{mY1+@ja=bYt1n0&53N$%PbN&-e77;dMyc{7%T~Lm?EX4GHQzn0 zOX;fY8S8+L4ps=FCQ90%13e>K1yob#|b_r zk2gjV5I&^P{R#Fbt~j0Uip__gS}<_B`23yvlSqwE*@8*vKsj9>H97Bo@p`x1T z2B~5uj!64FYdLHZnr&1Tgd+-eWRQ>HmBj{G*q_E`K}fB}H9d;d$;M?d&NLXG#rUjx z$Al~hscdo&SHjE_vmlJO`^>3tCS^e=s(0VyEGDzfB<`{<* z>N_`!x!;;%OOA2#cuSt`q=M|>^|SA1$9c1Ty|LqsNOH>E2{<9VusFxWZCnm`g=43! z9tpSeQh;tHE5_2>!Hh9p|b`hRkFtEI@ma$EgxuwPE-aSA$*U! zShCN?*{X_@+=-oer;%cQQQ_L*M3Z(c+F>i7_FaeTEK~Y`s54)*v@3TtsG-o_cGqaI z9=u7Vp}I#a@pd&fACx;@cO7PTvD&#Tu62#jjyGG?bK2or{`~9nRwC^;!pF5T^++qv z8Df;L^OI}kTnZm$mx7pSq#-ON4lQ(|wn05Te(SKq-i%PGc5;Bd0+CMBJQ5gO_tiZ^ z;QfEXG#;O<)h&FEta=f{i9#3Tb_)oku^Z{Cp4ZGjB3s8FA9@@wKJeU;tYe?>y~2@W z9Y?w&Y~64~I*K=TM@MWJ{bkqhC2*GqUY@7JUe`lR-sPA5UNejC);)Z3Q;Iv9BguBV zdT&?YWugW_Cb^tL>`J`k@;*GzL3Asg%LHDF|I}Ldna4ZvvNP|$f3DV%bF}0itv1>H zWebq~43GmJ-+(GWzN~v8V7KLYZ@$tU6p2^j|A(_f+JH*ZWV}fKwbg0&=v5~#(UV1E z*YZZ9-obqBMZ8a+8aUWfxS2Ozh zyi|WFB^)h2@75FgSXUySBKr9tsM$FdRfp{F^J2YZ*kyXju*>w{QGyrZrG0w6et-!a zU;+o(HG8vTLzn0k#z2og`hwSogpJW=fj8ZIv-k2w{Ael3U`$69zMdUxI`Go^c)PdF ztLeI_Uao8E6KN4)OcP0xkG-SNwGJ1K;?doEH|IsYw%+!8HW zZF)T13awP>$r{>DPDQfuL~ydIJSDC1RGf-aM5J9#u5hi<+A^nYI;~!a2pI*%i$v;*^pHmp| zeuAIioJ#joCh=1$q27Fk1e}X=ah9|?OVWRapWzH+=eST|6%3;DaGt6-zffZvv{CW` zTtGs(`#H7yd8!>l@Dg02D7zGwDo;6YXVQ0<;WB2pM3l>MxhQSXmU?Dfa}8XVbF+Pk zJBlGxPV7=*D03w^$~Cd&P>CY3J=&}IFS)s6@hflz1(qo0uf&yNT!pK|_!WMY4pdjU zQodGgN}0bT)}9zjDYGf}_j;h%BpswmTytwA8-5`!l$<;-M$;%4;UYT-UXpdha%pEQsJvL4qa`-&^5S5l;85=tBmwJ{EnHgL30_pxisaw ziJ6L94_8;a-{bf4)gKCLUR{^|L#6wp2A)6485(NNS8M--KS?Z~&zsmklS<=sz@It9 z{3$|*9G{CE-=G#ge5E}!qBNH$ugCQ`Un)>-O5;OVN&5@_B8~VERxN5S&W*Sce^JK2 zs2Cr`n#>$-kaPKJU&ZuBmc=SikrtyOd?AaQRO}`d<3riBn9h1nQ%C5Uc7$$x9@|yf z*bz>v(A!y@#$=&`Rk9;imh%m5mGv)Uaes6gPtN#@rLS#fca9(EE(wh!wmKDiEBMm3 zAeQ}zk8IJ%@~|Y&oYgDlbD2`2sAv^i$ zt*5tX+E$f)JP>SyVhiTJdXbBNQGE^%&9s-iQ%`fHNk6^Jwcf)M_GX2xWPkmM0}@*} z5}D7ok^}T~S6j)u>@^{`l7sDi?_jojh+f^MTgjn%a;j{1dwg}Pt>iGhOyzS-zP?vB zCiG_*^fwr6D>+inR8?SQ@Et;|13Z*KG4N>1ikCjaU}jho_Oimi0-@j#eFnN#)P*2U>gGClpCPU9VZ_6j?` zByinFReM2^n^-$DwR4t(bDE+&r85 z=b58bp@J!^$ez!Ku^wOFrUZ@`_uB*5LIy^}0zH4V0z9X(P*~{k9jtoKBE5Z8a6F(l zui8m2)>~IJD|btzz!E92&~x0K#o9oF^Tm0;P(2F^hH$VWZsM-@DpE{`75gH_eOQg2<=>UDaRn(iY5d1Qq#sOTelAFHgZ z^afUnuJ%BnqHFXHmTIn~n%YLLP`ykPt}3#UdRslN=dZAzcPz5k>j`WfpQhTt{Zg8? zryzE~_=KLrs_G~8^i>1$Mh^s&N@l&GpR&L8kv@+#@lV@(Sv$HhS3RTGvK9yop9OY+ zv`KGKb?=a`V;7Y2Ev(!~oW^+G!}EGd%h`TwQ|Fr*ZKdMD_?z`jrMKvmNa(}^w&Y6 z;@tSiyHMN6i};sX&a626XJ7JX>Mylilt+bY!!Jhv`M8Kr1vBax+y+Yg+1&A+t@fR$ z*!wAY>>Ql(#nW7Wc4toSKgD@z7PhQ08p8~7qRh^vefmoGJn;QoQL6b7I6}pb#EGsL z=ck8Y=S#en1a_u#zHIb!K1{Ur6^D}ZOB!+ZEn%ZdQKS?1GDdnC$E$#Eqw+o*T*T&{ zNZXXU{_uSu$Gf?vZ_CYE9q0(yHiPIWvy{4r@+?iGdV6m zPtCWe&bPRgE2NT?>58e1a{mIqz>malBRwtz--s$2_X(ib26lPcv7 z0Oe*}q9KDSaSf}yC&9-_ogEjdF3}X6=eC`lHj_WS!Zkq?WogRPnHBtz?& zhVjZ4@=}9b&_iQrr1}B`j@MDksBu`F`>_{GVfDk>>)NXa%6iB!DtMN|zL$2z9?qlI z&a=O)ROHz~4ky5)c%qpmd~kAJ?s=t>*5rR{eiQ26L`r8_SE~x?nzy0Jd?}q*XDX$% z#-1V+nRhrg9PVLRs$QJ-uwt2sjn5CCZT+)Y;a1Au%52>D35rV^OLs|PtFo5vs-bOBGkRKzfg(b&J+_@Fnt4kc?Lu~d+audfNNFr#&O1L7?W+GS8 zg5j)KF>MPy>qL&Y)RwzUb43X|CEz^$fSRH1?4lBSG82v+^<;`Z$z+rqFGSsyp6Ka& zN6XOak!&9|kwQl>#rDwVN^Fe zJw2o-=P1mzwS8)xoDLFwl!<~^1SR0iJZnG8Dvi*Oanq`ufG@?2M?vp9Rp?UmM% zR&zi|7gE&imxsl%5Su4WGwhL+5LO&cXO+&@r;C&>s!wwrrURqH`I{=;v_9Qj>E`w6 z)Ztok z1*PI|DRo#}1IMS6E+gY3Us0A(I0Y1Sh}!~1#bb)OR2m~HpSi4IE9=9kAm&?v!#HIq zR9Eq{#6Fu>R~1IJ?}U?WUM!Xh7^A3wF@6ddBd35dW(pXirGPO`3K%1#fH5`-7^9+q zF&+vSBcXsX1_~IxU%=@10%jh!_Wf_3E@YAe(xI@BDfpJ<|A(RAcP`HTi572ZGX^aM z1{Aw~-C&E6S$8|wA_n# +struct Random { + enum { + IM = 139968, + IA = 3877, + IC = 29573 + }; + Random() : last(42) {} + float get(float max = 1.0f) { + last = (last * IA + IC) % IM; + return max * last / IM; + } + + protected: + unsigned int last; +} rng1; +int main() { + Random rng2; + int count = 0; + for (int i = 0; i < 100; i++) { + float x1 = rng1.get(); + float x2 = rng2.get(); + printf("%f, %f\n", x1, x2); + if (x1 != x2) count += 1; + } + printf("*%d*\n", count); + return 0; +} diff --git a/emtests/test_class.out b/emtests/test_class.out new file mode 100644 index 000000000..a5e8240ea --- /dev/null +++ b/emtests/test_class.out @@ -0,0 +1 @@ +*0* \ No newline at end of file diff --git a/emtests/test_complex.c b/emtests/test_complex.c new file mode 100644 index 000000000..934324dbd --- /dev/null +++ b/emtests/test_complex.c @@ -0,0 +1,32 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main(int argc, char**argv) +{ + float complex z1 = 1.0 + 3.0 * I; + printf("value = real %.2f imag %.2f\n",creal(z1),cimag(z1)); + float abs_value = cabsf(z1); + printf("abs = %.2f\n",abs_value); + float complex z2 = conjf(z1); + printf("value = real %.2f imag %.2f\n",creal(z2),cimag(z2)); + float complex z3 = cexpf(z1); + printf("value = real %.2f imag %.2f\n",creal(z3),cimag(z3)); + float complex z4 = conj(z1); + printf("value = real %.2f imag %.2f\n",creal(z4),cimag(z4)); + float complex z5 = cargf(z1); + printf("value = real %.2f imag %.2f\n",creal(z5),cimag(z5)); + float complex z6 = 0.5 + 0.5 * I; + float complex z7 = 0.5 - 0.5 * I; + float complex z8 = z6 * z7; + printf("value = real %.2f imag %.2f\n",creal(z8),cimag(z8)); + float complex z9 = z6 / z7; + printf("value = real %.2f imag %.2f\n",creal(z9),cimag(z9)); + return 0; +} diff --git a/emtests/test_complex.out b/emtests/test_complex.out new file mode 100644 index 000000000..6f08f2010 --- /dev/null +++ b/emtests/test_complex.out @@ -0,0 +1,8 @@ +value = real 1.00 imag 3.00 +abs = 3.16 +value = real 1.00 imag -3.00 +value = real -2.69 imag 0.38 +value = real 1.00 imag -3.00 +value = real 1.25 imag 0.00 +value = real 0.50 imag 0.00 +value = real 0.00 imag 1.00 diff --git a/emtests/test_complex.wasm b/emtests/test_complex.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1a0b5d5001a47668e437ad224e55272bf36cd507 GIT binary patch literal 60369 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

e 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 literal 0 HcmV?d00001 diff --git a/emtests/test_constglobalstructs.c b/emtests/test_constglobalstructs.c new file mode 100644 index 000000000..2badbc3f3 --- /dev/null +++ b/emtests/test_constglobalstructs.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct IUB { + int c; + double p; + unsigned int pi; +}; + +IUB iub[] = {{'a', 0.27, 5}, {'c', 0.15, 4}, {'g', 0.12, 3}, {'t', 0.27, 2}, }; + +const unsigned char faceedgesidx[6][4] = {{4, 5, 8, 10}, + {6, 7, 9, 11}, + {0, 2, 8, 9}, + {1, 3, 10, 11}, + {0, 1, 4, 6}, + {2, 3, 5, 7}, }; + +int main(int argc, const char *argv[]) { + printf("*%d,%d,%d,%d*\n", iub[0].c, int(iub[1].p * 100), iub[2].pi, + faceedgesidx[3][2]); + return 0; +} diff --git a/emtests/test_constglobalstructs.out b/emtests/test_constglobalstructs.out new file mode 100644 index 000000000..1d530091a --- /dev/null +++ b/emtests/test_constglobalstructs.out @@ -0,0 +1 @@ +*97,15,3,10* \ No newline at end of file diff --git a/emtests/test_conststructs.c b/emtests/test_conststructs.c new file mode 100644 index 000000000..ce8e29d92 --- /dev/null +++ b/emtests/test_conststructs.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct IUB { + int c; + double p; + unsigned int pi; +}; + +int main(int argc, const char *argv[]) { + int before = 70; + IUB iub[] = {{'a', 0.3029549426680, 5}, + {'c', 0.15, 4}, + {'g', 0.12, 3}, + {'t', 0.27, 2}, }; + int after = 90; + printf("*%d,%d,%d,%d,%d,%d*\n", before, iub[0].c, int(iub[1].p * 100), + iub[2].pi, int(iub[0].p * 10000), after); + return 0; +} diff --git a/emtests/test_conststructs.out b/emtests/test_conststructs.out new file mode 100644 index 000000000..af6000611 --- /dev/null +++ b/emtests/test_conststructs.out @@ -0,0 +1 @@ +*70,97,15,3,3029,90* \ No newline at end of file diff --git a/emtests/test_copyop.c b/emtests/test_copyop.c new file mode 100644 index 000000000..bbbae3420 --- /dev/null +++ b/emtests/test_copyop.c @@ -0,0 +1,41 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +struct vec { + double x, y, z; + vec() : x(0), y(0), z(0) {}; + vec(const double a, const double b, const double c) : x(a), y(b), z(c) {}; +}; + +struct basis { + vec a, b, c; + basis(const vec& v) { + a = v; // should not touch b! + printf("*%.2f,%.2f,%.2f*\n", b.x, b.y, b.z); + } +}; + +int main() { + basis B(vec(1, 0, 0)); + + // Part 2: similar problem with memset and memmove + int x = 1, y = 77, z = 2; + memset((void*)&x, 0, sizeof(int)); + memset((void*)&z, 0, sizeof(int)); + printf("*%d,%d,%d*\n", x, y, z); + memcpy((void*)&x, (void*)&z, sizeof(int)); + memcpy((void*)&z, (void*)&x, sizeof(int)); + printf("*%d,%d,%d*\n", x, y, z); + memmove((void*)&x, (void*)&z, sizeof(int)); + memmove((void*)&z, (void*)&x, sizeof(int)); + printf("*%d,%d,%d*\n", x, y, z); + return 0; +} diff --git a/emtests/test_copyop.out b/emtests/test_copyop.out new file mode 100644 index 000000000..17bde9e7a --- /dev/null +++ b/emtests/test_copyop.out @@ -0,0 +1,4 @@ +*0.00,0.00,0.00* +*0,77,0* +*0,77,0* +*0,77,0* \ No newline at end of file diff --git a/emtests/test_cxx03_do_run.c b/emtests/test_cxx03_do_run.c new file mode 100644 index 000000000..09ac4b759 --- /dev/null +++ b/emtests/test_cxx03_do_run.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +#if __cplusplus != 199711L +#error By default, if no -std is specified, emscripten should be compiling with -std=c++03! +#endif + +int main(int argc, const char *argv[]) { + printf("Hello world!\n"); + return 0; +} diff --git a/emtests/test_cxx03_do_run.out b/emtests/test_cxx03_do_run.out new file mode 100644 index 000000000..6769dd60b --- /dev/null +++ b/emtests/test_cxx03_do_run.out @@ -0,0 +1 @@ +Hello world! \ No newline at end of file diff --git a/emtests/test_demangle_stacks.cpp b/emtests/test_demangle_stacks.cpp new file mode 100644 index 000000000..b70a84d11 --- /dev/null +++ b/emtests/test_demangle_stacks.cpp @@ -0,0 +1,31 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +#include + +namespace NameSpace { +class Class { + public: + __attribute__((noinline)) + void Aborter(double x, char y, int *z) { + volatile int w = 1; + if (w) { + EM_ASM({ + out(stackTrace()); + }); + abort(); + } + } +}; +} + +int main(int argc, char **argv) { + NameSpace::Class c; + c.Aborter(1.234, 'a', NULL); + return 0; +} diff --git a/emtests/test_demangle_stacks.out b/emtests/test_demangle_stacks.out new file mode 100644 index 000000000..d1c61b458 --- /dev/null +++ b/emtests/test_demangle_stacks.out @@ -0,0 +1 @@ +NameSpace::Class::Aborter(double, char, int*) \ No newline at end of file diff --git a/emtests/test_demangle_stacks.wasm b/emtests/test_demangle_stacks.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1c9b6bfea96a827facf9a32deef80e63634954be GIT binary patch literal 22079 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 literal 0 HcmV?d00001 diff --git a/emtests/test_demangle_stacks_noassert.cpp b/emtests/test_demangle_stacks_noassert.cpp new file mode 100644 index 000000000..3918767ec --- /dev/null +++ b/emtests/test_demangle_stacks_noassert.cpp @@ -0,0 +1,26 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +namespace NameSpace { +class Class { + public: + __attribute__((noinline)) + void Aborter(double x, char y, int *z) { + volatile int w = 1; + if (w) { + abort(); + } + } +}; +} + +int main(int argc, char **argv) { + NameSpace::Class c; + c.Aborter(1.234, 'a', NULL); + return 0; +} diff --git a/emtests/test_demangle_stacks_noassert.out b/emtests/test_demangle_stacks_noassert.out new file mode 100644 index 000000000..43e50f062 --- /dev/null +++ b/emtests/test_demangle_stacks_noassert.out @@ -0,0 +1 @@ +Build with -s ASSERTIONS=1 for more info. diff --git a/emtests/test_demangle_stacks_noassert.wasm b/emtests/test_demangle_stacks_noassert.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c9b0331256069830a689d68163dee3fde8234e5d GIT binary patch literal 22018 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 literal 0 HcmV?d00001 diff --git a/emtests/test_direct_string_constant_usage.c b/emtests/test_direct_string_constant_usage.c new file mode 100644 index 000000000..267b13f1a --- /dev/null +++ b/emtests/test_direct_string_constant_usage.c @@ -0,0 +1,16 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +template +void printText(const char (&text)[i]) { + std::cout << text; +} +int main() { + printText("some string constant"); + return 0; +} diff --git a/emtests/test_direct_string_constant_usage.out b/emtests/test_direct_string_constant_usage.out new file mode 100644 index 000000000..ddb4b681d --- /dev/null +++ b/emtests/test_direct_string_constant_usage.out @@ -0,0 +1 @@ +some string constant \ No newline at end of file diff --git a/emtests/test_dlfcn_self.c b/emtests/test_dlfcn_self.c new file mode 100644 index 000000000..c00cbea31 --- /dev/null +++ b/emtests/test_dlfcn_self.c @@ -0,0 +1,30 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int EMSCRIPTEN_KEEPALIVE global = 123; + +extern "C" EMSCRIPTEN_KEEPALIVE void foo(int x) { + printf("%d\n", x); +} + +extern "C" EMSCRIPTEN_KEEPALIVE void repeatable() { + void* self = dlopen(NULL, RTLD_LAZY); + int* global_ptr = (int*)dlsym(self, "global"); + void (*foo_ptr)(int) = (void (*)(int))dlsym(self, "foo"); + foo_ptr(*global_ptr); + dlclose(self); +} + +int main() { + repeatable(); + repeatable(); + return 0; +} diff --git a/emtests/test_dlfcn_self.out b/emtests/test_dlfcn_self.out new file mode 100644 index 000000000..4ca9456b0 --- /dev/null +++ b/emtests/test_dlfcn_self.out @@ -0,0 +1,2 @@ +123 +123 \ No newline at end of file diff --git a/emtests/test_dlmalloc_partial_2.c b/emtests/test_dlmalloc_partial_2.c new file mode 100644 index 000000000..965ee217f --- /dev/null +++ b/emtests/test_dlmalloc_partial_2.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +void *malloc(size_t size) { return (void *)123; } +int main() { + void *x = malloc(10); + EM_ASM({ out("got 0x" + $0.toString(16)) }, x); + free(0); + EM_ASM({ out("freed a fake") }); + return 1; +} diff --git a/emtests/test_dlmalloc_partial_2.out b/emtests/test_dlmalloc_partial_2.out new file mode 100644 index 000000000..5512c7a8c --- /dev/null +++ b/emtests/test_dlmalloc_partial_2.out @@ -0,0 +1,2 @@ +got 0x7b +freed \ No newline at end of file diff --git a/emtests/test_dlmalloc_partial_2.wasm b/emtests/test_dlmalloc_partial_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..acd345467d02724b393ef42a12a00a00c62ecb2f GIT binary patch literal 7709 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 +#include +#include + +__attribute((noinline)) bool eq(double d, int64_t i) { + int64_t i2 = (int64_t)d; + if (i != i2) { + printf("%.20g converted to int64 returns %lld, not %lld as expected!\n", d, + i2, i); + } + return i == i2; +} + +int main() { + assert(eq(0.0, 0)); + assert(eq(-0.0, 0)); + assert(eq(0.1, 0)); + assert(eq(-0.1, 0)); + assert(eq(0.6, 0)); + assert(eq(-0.6, 0)); + assert(eq(1.0, 1)); + assert(eq(-1.0, -1)); + assert(eq(1.1, 1)); + assert(eq(-1.1, -1)); + assert(eq(1.6, 1)); + assert(eq(-1.6, -1)); + assert(eq(4294967295.0, 4294967295LL)); + assert(eq(4294967295.5, 4294967295LL)); + assert(eq(4294967296.0, 4294967296LL)); + assert(eq(4294967296.5, 4294967296LL)); + assert(eq(14294967295.0, 14294967295LL)); + assert(eq(14294967295.5, 14294967295LL)); + assert(eq(14294967296.0, 14294967296LL)); + assert(eq(14294967296.5, 14294967296LL)); + assert(eq(-4294967295.0, -4294967295LL)); + assert(eq(-4294967295.5, -4294967295LL)); + assert(eq(-4294967296.0, -4294967296LL)); + assert(eq(-4294967296.5, -4294967296LL)); + assert(eq(-14294967295.0, -14294967295LL)); + assert(eq(-14294967295.5, -14294967295LL)); + assert(eq(-14294967296.0, -14294967296LL)); + assert(eq(-14294967296.5, -14294967296LL)); + + assert(eq(4294967295.3, 4294967295LL)); + assert(eq(4294967296.3, 4294967296LL)); + assert(eq(14294967295.3, 14294967295LL)); + assert(eq(14294967296.3, 14294967296LL)); + assert(eq(-4294967295.3, -4294967295LL)); + assert(eq(-4294967296.3, -4294967296LL)); + assert(eq(-14294967295.3, -14294967295LL)); + assert(eq(-14294967296.3, -14294967296LL)); + + assert(eq(4294967295.8, 4294967295LL)); + assert(eq(4294967296.8, 4294967296LL)); + assert(eq(14294967295.8, 14294967295LL)); + assert(eq(14294967296.8, 14294967296LL)); + assert(eq(-4294967295.8, -4294967295LL)); + assert(eq(-4294967296.8, -4294967296LL)); + assert(eq(-14294967295.8, -14294967295LL)); + assert(eq(-14294967296.8, -14294967296LL)); + + // The following number is the largest double such that all integers smaller + // than this can exactly be represented in a double. + assert(eq(9007199254740992.0, 9007199254740992LL /* == 2^53 */)); + assert(eq(-9007199254740992.0, -9007199254740992LL /* == -2^53 */)); + + printf("OK!\n"); + return 0; +} diff --git a/emtests/test_double_i64_conversion.out b/emtests/test_double_i64_conversion.out new file mode 100644 index 000000000..d64066171 --- /dev/null +++ b/emtests/test_double_i64_conversion.out @@ -0,0 +1 @@ +OK! diff --git a/emtests/test_double_varargs.c b/emtests/test_double_varargs.c new file mode 100644 index 000000000..6a399e27d --- /dev/null +++ b/emtests/test_double_varargs.c @@ -0,0 +1,41 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +double func_int_double_1(int unused1, ...) +{ + int i; + double d; + va_list vl; + va_start(vl, unused1); + i = va_arg(vl, int); + d = va_arg(vl, double); + va_end(vl); + return i+d; +} + +double func_int_double_2(int unused1, int unused2, ...) +{ + int i; + double d; + va_list vl; + va_start(vl, unused2); + i = va_arg(vl, int); + d = va_arg(vl, double); + va_end(vl); + return i+d; +} + +int main() { + double ret = func_int_double_1(0, 5, 10.0); + printf("%f\n", ret); // Expects to print 15 + ret = func_int_double_2(0, 0, 5, 10.0); + printf("%f\n", ret); // Expects to print 15 +} + diff --git a/emtests/test_double_varargs.out b/emtests/test_double_varargs.out new file mode 100644 index 000000000..c907decea --- /dev/null +++ b/emtests/test_double_varargs.out @@ -0,0 +1,2 @@ +15.000000 +15.000000 diff --git a/emtests/test_double_varargs.wasm b/emtests/test_double_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5d511c2f94a4296f0db7972f584fb4385a3c4c6c GIT binary patch literal 46032 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%0DI_=&VJS!wu^_`c3_sL-kQ`!i$gbO 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 literal 0 HcmV?d00001 diff --git a/emtests/test_dynamic_cast.c b/emtests/test_dynamic_cast.c new file mode 100644 index 000000000..fc0d64cbc --- /dev/null +++ b/emtests/test_dynamic_cast.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +struct Support { + virtual void f() { printf("f()\n"); } +}; + +struct Derived : Support {}; + +int main() { + Support* p = new Derived; + dynamic_cast(p)->f(); +} diff --git a/emtests/test_dynamic_cast.out b/emtests/test_dynamic_cast.out new file mode 100644 index 000000000..a19096b57 --- /dev/null +++ b/emtests/test_dynamic_cast.out @@ -0,0 +1 @@ +f() diff --git a/emtests/test_dynamic_cast_2.c b/emtests/test_dynamic_cast_2.c new file mode 100644 index 000000000..95d18b82f --- /dev/null +++ b/emtests/test_dynamic_cast_2.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +class Class {}; + +int main() { + const Class* dp = dynamic_cast(&typeid(Class)); + // should return dp == NULL, + printf("pointer: %p\n", dp); +} diff --git a/emtests/test_dynamic_cast_2.out b/emtests/test_dynamic_cast_2.out new file mode 100644 index 000000000..c6e35541c --- /dev/null +++ b/emtests/test_dynamic_cast_2.out @@ -0,0 +1 @@ +pointer: 0 diff --git a/emtests/test_dynamic_cast_b.c b/emtests/test_dynamic_cast_b.c new file mode 100644 index 000000000..ee39d725f --- /dev/null +++ b/emtests/test_dynamic_cast_b.c @@ -0,0 +1,38 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +class CBase { + virtual void dummy() {} +}; +class CDerived : public CBase { + int a; +}; +class CDerivedest : public CDerived { + float b; +}; + +int main() { + CBase *pa = new CBase; + CBase *pb = new CDerived; + CBase *pc = new CDerivedest; + + printf("a1: %d\n", dynamic_cast(pa) != NULL); + printf("a2: %d\n", dynamic_cast(pa) != NULL); + printf("a3: %d\n", dynamic_cast(pa) != NULL); + + printf("b1: %d\n", dynamic_cast(pb) != NULL); + printf("b2: %d\n", dynamic_cast(pb) != NULL); + printf("b3: %d\n", dynamic_cast(pb) != NULL); + + printf("c1: %d\n", dynamic_cast(pc) != NULL); + printf("c2: %d\n", dynamic_cast(pc) != NULL); + printf("c3: %d\n", dynamic_cast(pc) != NULL); + + return 0; +} diff --git a/emtests/test_dynamic_cast_b.out b/emtests/test_dynamic_cast_b.out new file mode 100644 index 000000000..090390e8b --- /dev/null +++ b/emtests/test_dynamic_cast_b.out @@ -0,0 +1,9 @@ +a1: 0 +a2: 0 +a3: 1 +b1: 0 +b2: 1 +b3: 1 +c1: 1 +c2: 1 +c3: 1 diff --git a/emtests/test_em_asm.cpp b/emtests/test_em_asm.cpp new file mode 100644 index 000000000..645ff8e96 --- /dev/null +++ b/emtests/test_em_asm.cpp @@ -0,0 +1,53 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +int main() { + printf("BEGIN\n"); + EM_ASM({ out("no args works"); }); + + // The following two lines are deprecated, test them still. + printf(" EM_ASM_INT_V returned: %d\n", EM_ASM_INT_V({ out("no args returning int"); return 12; })); + printf(" EM_ASM_DOUBLE_V returned: %f\n", EM_ASM_DOUBLE_V({ out("no args returning double"); return 12.25; })); + + printf(" EM_ASM_INT returned: %d\n", EM_ASM_INT({ out("no args returning int"); return 12; })); + printf(" EM_ASM_DOUBLE returned: %f\n", EM_ASM_DOUBLE({ out("no args returning double"); return 12.25; })); + +#define TEST() \ + FUNC({ out(" takes ints: " + $0);}, 5); \ + FUNC({ out(" takes doubles: " + $0);}, 5.0675); \ + FUNC({ out(" takes strings: " + Pointer_stringify($0)); return 7.75; }, "string arg"); \ + FUNC({ out(" takes multiple ints: " + $0 + ", " + $1); return 6; }, 5, 7); \ + FUNC({ out(" mixed arg types: " + $0 + ", " + Pointer_stringify($1) + ", " + $2); return 8.125; }, 3, "hello", 4.75); \ + FUNC({ out(" ignores unused args"); return 5.5; }, 0); \ + FUNC({ out(" skips unused args: " + $1); return 6; }, 5, 7); \ + FUNC({ out(" " + $0 + " + " + $2); return $0 + $2; }, 5.5, 7.0, 14.375); + +#define FUNC_WITH(macro, format, ...) printf(" returned: " format "\n", macro(__VA_ARGS__)); +#define FUNC(...) FUNC_WITH(EM_ASM_, "%d", __VA_ARGS__) + printf("EM_ASM_ :\n"); + TEST() +#undef FUNC + +#define FUNC(...) FUNC_WITH(EM_ASM_INT, "%d", __VA_ARGS__) + printf("EM_ASM_INT :\n"); + TEST() +#undef FUNC + +#define FUNC(...) FUNC_WITH(EM_ASM_ARGS, "%d", __VA_ARGS__) + printf("EM_ASM_ARGS :\n"); + TEST() +#undef FUNC + +#define FUNC(...) FUNC_WITH(EM_ASM_DOUBLE, "%f", __VA_ARGS__) + printf("EM_ASM_DOUBLE :\n"); + TEST() +#undef FUNC + + printf("END\n"); + return 0; +} diff --git a/emtests/test_em_asm.out b/emtests/test_em_asm.out new file mode 100644 index 000000000..4f0323822 --- /dev/null +++ b/emtests/test_em_asm.out @@ -0,0 +1,79 @@ +BEGIN +no args works +no args returning int + EM_ASM_INT_V returned: 12 +no args returning double + EM_ASM_DOUBLE_V returned: 12.250000 +no args returning int + EM_ASM_INT returned: 12 +no args returning double + EM_ASM_DOUBLE returned: 12.250000 +EM_ASM_ : + takes ints: 5 + returned: 0 + takes doubles: 5.0675 + returned: 0 + takes strings: string arg + returned: 7 + takes multiple ints: 5, 7 + returned: 6 + mixed arg types: 3, hello, 4.75 + returned: 8 + ignores unused args + returned: 5 + skips unused args: 7 + returned: 6 + 5.5 + 14.375 + returned: 19 +EM_ASM_INT : + takes ints: 5 + returned: 0 + takes doubles: 5.0675 + returned: 0 + takes strings: string arg + returned: 7 + takes multiple ints: 5, 7 + returned: 6 + mixed arg types: 3, hello, 4.75 + returned: 8 + ignores unused args + returned: 5 + skips unused args: 7 + returned: 6 + 5.5 + 14.375 + returned: 19 +EM_ASM_ARGS : + takes ints: 5 + returned: 0 + takes doubles: 5.0675 + returned: 0 + takes strings: string arg + returned: 7 + takes multiple ints: 5, 7 + returned: 6 + mixed arg types: 3, hello, 4.75 + returned: 8 + ignores unused args + returned: 5 + skips unused args: 7 + returned: 6 + 5.5 + 14.375 + returned: 19 +EM_ASM_DOUBLE : + takes ints: 5 + returned: nan + takes doubles: 5.0675 + returned: nan + takes strings: string arg + returned: 7.750000 + takes multiple ints: 5, 7 + returned: 6.000000 + mixed arg types: 3, hello, 4.75 + returned: 8.125000 + ignores unused args + returned: 5.500000 + skips unused args: 7 + returned: 6.000000 + 5.5 + 14.375 + returned: 19.875000 +END \ No newline at end of file diff --git a/emtests/test_em_asm.wasm b/emtests/test_em_asm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0b9f1b6f83002e628d0a6ba455919439bd500be7 GIT binary patch literal 48036 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

)IQDwhs*H5 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 Q*-5WfsCl#bS#Q^W0$|&aD*ylh literal 0 HcmV?d00001 diff --git a/emtests/test_em_asm_2.cpp b/emtests/test_em_asm_2.cpp new file mode 100644 index 000000000..ca7b47d4c --- /dev/null +++ b/emtests/test_em_asm_2.cpp @@ -0,0 +1,152 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +int main() +{ + printf("EM_ASM: Simple expression without trailing semicolon\n"); + EM_ASM(console.log('1. expression without trailing semicolon')); + EM_ASM("console.log('2. expression without trailing semicolon')"); + EM_ASM({"console.log('3. expression without trailing semicolon')"}); + EM_ASM({console.log('4. expression without trailing semicolon')}); + EM_ASM("{console.log('5. expression without trailing semicolon')}"); + + printf("\nEM_ASM: Double quotes\n"); + EM_ASM(console.log("1. string in double quotes")); + EM_ASM("console.log(\"2. string in double quotes\")"); + EM_ASM({"console.log(\"3. string in double quotes\")"}); + EM_ASM({console.log("4. string in double quotes")}); + EM_ASM("{console.log(\"5. string in double quotes\")}"); + + printf("\nEM_ASM: Double quotes inside a string\n"); + EM_ASM(console.log('1. this is \"double\" \"quotes\"')); + EM_ASM(console.log('2. this is "double" "quotes" without escaping')); + EM_ASM("console.log('3. this is \"double\" \"quotes\"')"); + EM_ASM({"console.log('4. this is \"double\" \"quotes\"')"}); + EM_ASM({console.log('5. this is \"double\" \"quotes\"')}); + EM_ASM({console.log('6. this is "double" "quotes" without esacping')}); + EM_ASM("{console.log('7. this is \"double\" \"quotes\"')}"); + + printf("\nEM_ASM: Pass a string\n"); + EM_ASM(console.log('1. hello ' + UTF8ToString($0)), "world!"); + EM_ASM("console.log('2. hello ' + UTF8ToString($0))", "world!"); + EM_ASM({"console.log('3. hello ' + UTF8ToString($0))"}, "world!"); + EM_ASM({console.log('4. hello ' + UTF8ToString($0))}, "world!"); + EM_ASM("{console.log('5. hello ' + UTF8ToString($0))}", "world!"); + + printf("\nEM_ASM: Simple expression without trailing semicolon, wrap code block in extra parentheses\n"); + EM_ASM((console.log('1. expression without trailing semicolon, in parentheses'))); + EM_ASM(("console.log('2. expression without trailing semicolon, in parentheses')")); + EM_ASM(({"console.log('3. expression without trailing semicolon, in parentheses')"})); + EM_ASM(({console.log('4. expression without trailing semicolon, in parentheses')})); + EM_ASM(("{console.log('5. expression without trailing semicolon, in parentheses')}")); + + printf("\nEM_ASM: Two statements, separated with a semicolon\n"); + EM_ASM(console.log('1. two'); console.log('1. statements');); + EM_ASM("console.log('2. two'); console.log('2. statements 2');"); + EM_ASM({"console.log('3. two'); console.log('3. statements 3');"}); + EM_ASM({console.log('4. two'); console.log('4. statements 4');}); + EM_ASM("{console.log('5. two'); console.log('5. statements 5');}"); + + printf("\nEM_ASM: Pass an integer\n"); + EM_ASM(console.log('1. int ' + $0), 42); + EM_ASM("console.log('2. int ' + $0)", 43); + EM_ASM({"console.log('3. int ' + $0)"}, 44); + EM_ASM({console.log('4. int ' + $0)}, 45); + EM_ASM("{console.log('5. int ' + $0)}", 46); + + printf("\nEM_ASM: Evaluate an anonymous function\n"); + EM_ASM((function() {console.log('1. evaluating anonymous function ' + $0)})(), 42); + EM_ASM("(function() {console.log('2. evaluating anonymous function ' + $0)})()", 42); + EM_ASM({"(function() {console.log('3. evaluating anonymous function ' + $0)})()"}, 42); + EM_ASM({(function() {console.log('4. evaluating anonymous function ' + $0)})()}, 42); + EM_ASM("{(function() {console.log('5. evaluating anonymous function ' + $0)})()}", 42); + + printf("\nEM_ASM: Pass an integer and a double\n"); + EM_ASM(console.log('1. int and double ' + $0 + ' ' + $1), 42, 43.5); + EM_ASM("console.log('2. int and double ' + $0 + ' ' + $1)", 42, 43.5); + EM_ASM({"console.log('3. int and double ' + $0 + ' ' + $1)"}, 42, 43.5); + EM_ASM({console.log('4. int and double ' + $0 + ' ' + $1)}, 42, 43.5); + EM_ASM("{console.log('5. int and double ' + $0 + ' ' + $1)}", 42, 43.5); + + int i; + + printf("\nEM_ASM_INT: Pass an integer, return an integer back\n"); + i = EM_ASM_INT(console.log('1. got int ' + $0); return 3.5;, 42); printf("1. returned int %d\n", i); + i = EM_ASM_INT("console.log('2. got int ' + $0); return 4.5;", 42); printf("2. returned int %d\n", i); + i = EM_ASM_INT({"console.log('3. got int ' + $0); return 5.5;"}, 42); printf("3. returned int %d\n", i); + i = EM_ASM_INT({console.log('4. got int ' + $0); return 6.5;}, 42); printf("4. returned int %d\n", i); + i = EM_ASM_INT("{console.log('5. got int ' + $0); return 7.5;}", 42); printf("5. returned int %d\n", i); + + printf("\nEM_ASM_INT: Pass an integer, return an integer back, wrap code block in extra parentheses\n"); + i = EM_ASM_INT((console.log('1. got int, extra parentheses ' + $0); return 3.5;), 42); printf("1. returned int, extra parentheses %d\n", i); + i = EM_ASM_INT(("console.log('2. got int, extra parentheses ' + $0); return 4.5;"), 42); printf("2. returned int, extra parentheses %d\n", i); + i = EM_ASM_INT(({"console.log('3. got int, extra parentheses ' + $0); return 5.5;"}), 42); printf("3. returned int, extra parentheses %d\n", i); + i = EM_ASM_INT(({console.log('4. got int, extra parentheses ' + $0); return 6.5;}), 42); printf("4. returned int, extra parentheses %d\n", i); + i = EM_ASM_INT(("{console.log('5. got int, extra parentheses ' + $0); return 7.5;}"), 42); printf("5. returned int, extra parentheses %d\n", i); + + printf("\nEM_ASM_INT: More imaginable ways for user to wrap in extra parentheses\n"); + i = EM_ASM_INT({("console.log('1. got int, extra extra parentheses ' + $0); return 5.5;")}, 42); printf("1. returned int, extra extra parentheses %d\n", i); + i = EM_ASM_INT({(console.log('2. got int, extra extra parentheses ' + $0); return 6.5;)}, 42); printf("2. returned int, extra extra parentheses %d\n", i); + i = EM_ASM_INT(((((((((((console.log('3. got int, extra extra extra parentheses ' + $0); return 6.5;)))))))))), 42); printf("3. returned int, extra extra extra parentheses %d\n", i); + + printf("\nEM_ASM_INT: Return an integer back.\n"); + i = EM_ASM_INT(console.log('1. got int ' + $0); return 3.5;, 42); printf("1. returned int %d\n", i); + i = EM_ASM_INT("console.log('2. got int ' + $0); return 4.5;", 42); printf("2. returned int %d\n", i); + i = EM_ASM_INT({"console.log('3. got int ' + $0); return 5.5;"}, 42); printf("3. returned int %d\n", i); + i = EM_ASM_INT({console.log('4. got int ' + $0); return 6.5;}, 42); printf("4. returned int %d\n", i); + i = EM_ASM_INT("{console.log('5. got int ' + $0); return 7.5;}", 42); printf("5. returned int %d\n", i); + + printf("\nEM_ASM_INT: Return an integer in a single brief statement.\n"); + i = EM_ASM_INT(return TOTAL_MEMORY); printf("1. returned statement %d\n", i); + i = EM_ASM_INT("return TOTAL_MEMORY+1"); printf("2. returned statement %d\n", i); + i = EM_ASM_INT({"return TOTAL_MEMORY+2"}); printf("3. returned statement %d\n", i); + i = EM_ASM_INT({return TOTAL_MEMORY+3}); printf("4. returned statement %d\n", i); + i = EM_ASM_INT("return TOTAL_MEMORY+4"); printf("5. returned statement %d\n", i); + + // Note that expressions do not evaluate to return values, but the "return" keyword is needed. That is, the following line would return undefined and store i <- 0. + // i = EM_ASM_INT(TOTAL_MEMORY); printf("returned statement %d\n", i); + + double d; + + printf("\nEM_ASM_DOUBLE: Pass no parameters, return a double.\n"); + d = EM_ASM_DOUBLE(console.log('1. returning double'); return 3.5;); printf("1. got double %f\n", d); + d = EM_ASM_DOUBLE("console.log('2. returning double'); return 4.5;"); printf("2. got double %f\n", d); + d = EM_ASM_DOUBLE({"console.log('3. returning double'); return 5.5;"}); printf("3. got double %f\n", d); + d = EM_ASM_DOUBLE({console.log('4. returning double'); return 6.5;}); printf("4. got double %f\n", d); + d = EM_ASM_DOUBLE("{console.log('5. returning double'); return 7.5;}"); printf("5. got double %f\n", d); + + printf("\nEM_ASM_DOUBLE: Pass an integer, return a double.\n"); + d = EM_ASM_DOUBLE(console.log('1. got int ' + $0); return 3.5;, 42); printf("1. returned double %f\n", d); + d = EM_ASM_DOUBLE("console.log('2. got int ' + $0); return 4.5;", 42); printf("2. returned double %f\n", d); + d = EM_ASM_DOUBLE({"console.log('3. got int ' + $0); return 5.5;"}, 42); printf("3. returned double %f\n", d); + d = EM_ASM_DOUBLE({console.log('4. got int ' + $0); return 6.5;}, 42); printf("4. returned double %f\n", d); + d = EM_ASM_DOUBLE("{console.log('5. got int ' + $0); return 7.5;}", 42); printf("5. returned double %f\n", d); + + printf("\nEM_ASM_DOUBLE: Pass a double and an integer, return a double.\n"); + d = EM_ASM_DOUBLE(console.log('1. got double and int ' + $0 + ' ' + $1); return 3.5;, 5.5, 42); printf("1. returned double %f\n", d); + d = EM_ASM_DOUBLE("console.log('2. got double and int ' + $0 + ' ' + $1); return 4.5;", 5.5, 42); printf("2. returned double %f\n", d); + d = EM_ASM_DOUBLE({"console.log('3. got double and int ' + $0 + ' ' + $1); return 5.5;"}, 5.5, 42); printf("3. returned double %f\n", d); + d = EM_ASM_DOUBLE({console.log('4. got double and int ' + $0 + ' ' + $1); return 6.5;}, 5.5, 42); printf("4. returned double %f\n", d); + d = EM_ASM_DOUBLE("{console.log('5. got double and int ' + $0 + ' ' + $1); return 7.5;}", 5.5, 42); printf("5. returned double %f\n", d); + + printf("\nEM_ASM_INT: A comma character (,) inside the code block may need extra parentheses\n"); +// i = EM_ASM_INT(console.log('1. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b, 10); printf("1. returned %d\n", i); // This would not compile: use of undeclared identifier 'b' + i = EM_ASM_INT((console.log('1. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b), 10); printf("1. returned %d\n", i); // However by wrapping the code block inside parentheses, it will be ok + i = EM_ASM_INT("console.log('2. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b", 10); printf("2. returned %d\n", i); + i = EM_ASM_INT({"console.log('3. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b"}, 10); printf("3. returned %d\n", i); +// i = EM_ASM_INT({console.log('4. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b}, 10); printf("4. returned %d\n", i); // This would also not compile: use of undeclared identifier 'b' + i = EM_ASM_INT(({console.log('4. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b}), 10); printf("4. returned %d\n", i); // Again by wrapping the code block inside parentheses, it will work + i = EM_ASM_INT("{console.log('5. comma in em_asm'); var foo = { a: 5, b: $0 }; return foo.a + foo.b}", 10); printf("5. returned %d\n", i); + + printf("\nEM_ASM: Expression contains a tab character\n"); + EM_ASM(console.log('1. the following word is delimited by tab characters: H\tE\tL\tL\tO\tT\tA\tB\tS')); + EM_ASM("console.log('2. the following word is delimited by tab characters: H\tE\tL\tL\tO\tT\tA\tB\tS')"); + EM_ASM({"console.log('3. the following word is delimited by tab characters: H\tE\tL\tL\tO\tT\tA\tB\tS')"}); + EM_ASM({console.log('4. the following word is delimited by tab characters: H\tE\tL\tL\tO\tT\tA\tB\tS')}); + EM_ASM("{console.log('5. the following word is delimited by tab characters: H\tE\tL\tL\tO\tT\tA\tB\tS')}"); +} diff --git a/emtests/test_em_asm_2.out b/emtests/test_em_asm_2.out new file mode 100644 index 000000000..10ca9d7d5 --- /dev/null +++ b/emtests/test_em_asm_2.out @@ -0,0 +1,175 @@ +EM_ASM: Simple expression without trailing semicolon +1. expression without trailing semicolon +2. expression without trailing semicolon +3. expression without trailing semicolon +4. expression without trailing semicolon +5. expression without trailing semicolon + +EM_ASM: Double quotes +1. string in double quotes +2. string in double quotes +3. string in double quotes +4. string in double quotes +5. string in double quotes + +EM_ASM: Double quotes inside a string +1. this is "double" "quotes" +2. this is "double" "quotes" without escaping +3. this is "double" "quotes" +4. this is "double" "quotes" +5. this is "double" "quotes" +6. this is "double" "quotes" without esacping +7. this is "double" "quotes" + +EM_ASM: Pass a string +1. hello world! +2. hello world! +3. hello world! +4. hello world! +5. hello world! + +EM_ASM: Simple expression without trailing semicolon, wrap code block in extra parentheses +1. expression without trailing semicolon, in parentheses +2. expression without trailing semicolon, in parentheses +3. expression without trailing semicolon, in parentheses +4. expression without trailing semicolon, in parentheses +5. expression without trailing semicolon, in parentheses + +EM_ASM: Two statements, separated with a semicolon +1. two +1. statements +2. two +2. statements 2 +3. two +3. statements 3 +4. two +4. statements 4 +5. two +5. statements 5 + +EM_ASM: Pass an integer +1. int 42 +2. int 43 +3. int 44 +4. int 45 +5. int 46 + +EM_ASM: Evaluate an anonymous function +1. evaluating anonymous function 42 +2. evaluating anonymous function 42 +3. evaluating anonymous function 42 +4. evaluating anonymous function 42 +5. evaluating anonymous function 42 + +EM_ASM: Pass an integer and a double +1. int and double 42 43.5 +2. int and double 42 43.5 +3. int and double 42 43.5 +4. int and double 42 43.5 +5. int and double 42 43.5 + +EM_ASM_INT: Pass an integer, return an integer back +1. got int 42 +1. returned int 3 +2. got int 42 +2. returned int 4 +3. got int 42 +3. returned int 5 +4. got int 42 +4. returned int 6 +5. got int 42 +5. returned int 7 + +EM_ASM_INT: Pass an integer, return an integer back, wrap code block in extra parentheses +1. got int, extra parentheses 42 +1. returned int, extra parentheses 3 +2. got int, extra parentheses 42 +2. returned int, extra parentheses 4 +3. got int, extra parentheses 42 +3. returned int, extra parentheses 5 +4. got int, extra parentheses 42 +4. returned int, extra parentheses 6 +5. got int, extra parentheses 42 +5. returned int, extra parentheses 7 + +EM_ASM_INT: More imaginable ways for user to wrap in extra parentheses +1. got int, extra extra parentheses 42 +1. returned int, extra extra parentheses 5 +2. got int, extra extra parentheses 42 +2. returned int, extra extra parentheses 6 +3. got int, extra extra extra parentheses 42 +3. returned int, extra extra extra parentheses 6 + +EM_ASM_INT: Return an integer back. +1. got int 42 +1. returned int 3 +2. got int 42 +2. returned int 4 +3. got int 42 +3. returned int 5 +4. got int 42 +4. returned int 6 +5. got int 42 +5. returned int 7 + +EM_ASM_INT: Return an integer in a single brief statement. +1. returned statement 16777216 +2. returned statement 16777217 +3. returned statement 16777218 +4. returned statement 16777219 +5. returned statement 16777220 + +EM_ASM_DOUBLE: Pass no parameters, return a double. +1. returning double +1. got double 3.500000 +2. returning double +2. got double 4.500000 +3. returning double +3. got double 5.500000 +4. returning double +4. got double 6.500000 +5. returning double +5. got double 7.500000 + +EM_ASM_DOUBLE: Pass an integer, return a double. +1. got int 42 +1. returned double 3.500000 +2. got int 42 +2. returned double 4.500000 +3. got int 42 +3. returned double 5.500000 +4. got int 42 +4. returned double 6.500000 +5. got int 42 +5. returned double 7.500000 + +EM_ASM_DOUBLE: Pass a double and an integer, return a double. +1. got double and int 5.5 42 +1. returned double 3.500000 +2. got double and int 5.5 42 +2. returned double 4.500000 +3. got double and int 5.5 42 +3. returned double 5.500000 +4. got double and int 5.5 42 +4. returned double 6.500000 +5. got double and int 5.5 42 +5. returned double 7.500000 + +EM_ASM_INT: A comma character (,) inside the code block may need extra parentheses +1. comma in em_asm +1. returned 15 +2. comma in em_asm +2. returned 15 +3. comma in em_asm +3. returned 15 +4. comma in em_asm +4. returned 15 +5. comma in em_asm +5. returned 15 + +EM_ASM: Expression contains a tab character +1. the following word is delimited by tab characters: H E L L O T A B S +2. the following word is delimited by tab characters: H E L L O T A B S +3. the following word is delimited by tab characters: H E L L O T A B S +4. the following word is delimited by tab characters: H E L L O T A B S +5. the following word is delimited by tab characters: H E L L O T A B S diff --git a/emtests/test_em_asm_2.wasm b/emtests/test_em_asm_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3d1db657d59c64e7465b8b00d79bb559d4653609 GIT binary patch literal 55453 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

(#$i|B`cX_1#H&!nF%VPn4&p5eL_o z))*ePn675hby+nks8+R)d(t`E${>fDOw+#_M`2SuQ7+kTsx~U5vxwK!oR~aY$RAfn zRoC&=e?>DG2(0R!Nav=|iX+G?%2MmZZZ78;3xczgK`=$-XbSyiraS|e%eg7*;@CwI4iqYwGC1o#v?RzTl-M8g@c)CQ~{=M`KC_hTshPTMTA0^dR|Mr-$qn^Vwi? zHh;Wl!cNT{2*|cPpRLw=Eg;yw@EC-M)0tZm+XK+P(QQ zV~RP2vINB_?Yf~IJ-Dcg>P^*W>~5gecsJx)An$m0ZzF}qyCKmc*&C?R4OJG%-QC+r zhw*L*u|RIBa(*$scBC z_t9nUHWle*(vhB}tR~@uJQe5#N^2zP259trAPr>Q0HK}-q!Hq}8pL9)N>930HS%V| zjvD*|?W*U`Xqt(topiM1$B7`D&1)0Z+%h(F{aF5}mDQg0{k^>&17UW`Z&v9=V45fj z6Bf(fNE;ZiNcJXDK>WqB*NN$c^nQKjOd&nX@QWl**!d)?%Y3_#HnZshle-hFD$w(u zh_EiTlkBr2a}Cc1DBTn7`3M-2X$xfMg)P#^rFN~&$b{yleFrarl@#)E7flxdGi=lIL#=4Q0En+{iRsA?tH(`%v*nn@cnG<}L#L=rS50*`>+M1qwt=DBL%y3( zG>i0HE;H0Rx*I1Dy^Rvl3e>hM z+G*FMq!mD8Sypg*8zrX|q$6RpEM(;ZXy^p2w^70tDl8&&2lIu1O~&+bcHp$0Jd>Vd z3}fS%P38hSwr*P5dM-8uuYO?dBR$-p|_~iy%~YXbuKy!rkl9na>XBt zZRlYZFSe)pFVcO`!L%&Cx$domq__HSA-QyTnz4xz5ndi?*==ur-du2(2`f_(_&-s| z1k<&tEx@7jj2#|J9k})2;K9R3UK`<7b>8ZF_!ikWZi#l~QHXQhtw64A=(!tUT7hhh zcGOXbmW6DK_R3L+3TgKqzGe4;!Elt!<+U8+oPzyOru|_xDzgiy6_JdpP-~j!CK$|m zD^QhDQo<9?KCYT>F-E#VTB4{9lMOhUyU9h6)W*q1ERn`k2f>y#sScD4IGTsaMQTzT zDI2h~PX6d;wETKR}hqQ3`TzY$)L^aFLh1De#sS0cCd^g3~ zduArhaUiNZsgsSKzFx>{w-MQBso#Z}Npsl4K}7SUsl{H5L#x4Z=GJs^M!J4FU0^uP zo14rzliq2z_nC>ET40>7@{QEZX*jC?PednO>fxI>`pXv*?Tzh#8Z8BFco9m8PQ6u3 z^Ty6EUkrOZ^;&947L`1-^+hNqI#j5bP^Na8!P@Z#DqORn#P`d0>#7P3PGN zJ){1VZBG=O;kxS_IHf=P<^dIX#>-FTy*=(=3ssGr<{$qUF)PHtk|5-x{ U$CTd4p&>7q&UuGYhrG@I3rvv}l>h($ literal 0 HcmV?d00001 diff --git a/emtests/test_em_asm_parameter_pack.cpp b/emtests/test_em_asm_parameter_pack.cpp new file mode 100644 index 000000000..941989fd7 --- /dev/null +++ b/emtests/test_em_asm_parameter_pack.cpp @@ -0,0 +1,22 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +template +int call(Args... args) { + return(EM_ASM_INT( + { + out(Array.prototype.join.call(arguments, ',')); + }, + args... + )); +} + +int main(int argc, char **argv) { + call(1); + call(1, 2); + call(1, 2, 3); + return 0; +} diff --git a/emtests/test_em_asm_parameter_pack.out b/emtests/test_em_asm_parameter_pack.out new file mode 100644 index 000000000..941a57bc6 --- /dev/null +++ b/emtests/test_em_asm_parameter_pack.out @@ -0,0 +1,3 @@ +1 +1,2 +1,2,3 diff --git a/emtests/test_em_asm_parameter_pack.wasm b/emtests/test_em_asm_parameter_pack.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f1c9ea3c23affbc66dd601cba58c18de7e37b008 GIT binary patch literal 22255 zcma)k37D0|vG)1)17~!GVG&o}7F3KzO`?fWO#EC%fv8E;EH}A9G?+LbIKw#68*>>H z5Rp~(9RURd6c7XjSri0!6jW3cRKx{$QBhI;_pR>?GkTNf`L#Hwx~jXnx~h6T-IMFu z`)V(j%X!D;FAMtg>Erde%+p8CklbaykwS7rWh!@BF6S=|4-LBYtUaJx&mLW?|JLn- zZddoJzCP!RcHrN-)m+l6rfZMJ#DltC-mALiqMm1W?b)+e&3VmUQXTrAMzTx);kZ)w^5Gxz*Jd z_9~VU<@(-NbnVgOM<<_@3r+LJw4Y|Qk_Or-CugKW1F4v)2`Sh1Y^bhvmu^@0zM}f7 zYihdn>_S_1xuRFk-Zj$K>N)s7v9HSIq{kuuk$+V#QifKIGhE&6>MO3fzRTrT{Vgkf zK$k8g(ezy|@7lXt(8olw88uxm@6oL>?Z9*Xcwu@$$FncF=+|9-eaUZ&IS;7mcJ(#q z^tzUre_c~uB<3%^Bt5$`GZxcLEZyaT^baJ&f9uif@~%CC3%gzz+)$s&ckFrPRXwk& zxt=7c9A`TDUY%cOArYBA-Zfs+rUBY`eh|l@7v{Wxf#>;NF7W)s6COrhF215!AFr)n z;76d3P#+OL(%knyZt&X11%4#oXISPNymJ`W_Fv&&-q}L-e3H$?$D^q)m^XZnQN8sy9YDo4k2c4$Q^4KV=ecC zs7vq5tGnlpYx>vg8RI>A$p6QeG$fe(Ve@XiWrwSJ|J@?};%mBI(Jj{^&+?c2y}H{! zaxI&Ze?|AyYH3ztiQlqJuj+2O=1nYlao5^zx$-7uUaqZIXnMk7C!ToZ5r?06;)zY) zp6Rt|?|FUNHg#UxrpQ&cYudJHT3VT2Qzfiz;ll7t5&at(Ebpf)#m?w5uZf@_%1}? zA{Gr1l^y6}))!2}Ce?~6-%7Hibr(aX)rh1s_rTI#CmxsGNNnhe&iBVR2SZ$OiJP@XO z748KOFHrGRqH5gh9$xp-KE2)ho)mhYb?)(~BldVd^>Yymr6rZ_CLe^UBC!S%i4>$t zP~(RB80x1%wHxoN(y-Fa^g$T!D>pS6>Q}mZeB9%Ux7^2aUn)N0;}Jjgs@*f9;2F!k z+GB8RkW(46=@zrpR-d-RR==}*%g0-OW*XY*6Ca=WnWbo(8uyK#`i2Y)=-YuocQ-QN z7e-RGDFMFmF@;9HOU%2-ToUjLOGsKBV0Do8sdSGAcsxi;YTfezo)6NpD)*Wwc#V#G zFTi_2N_Tw`;EN#5SGgNQ5MHD7At8B8)VlE@#)qk2>t=?S8Kz;CyC($M_k`8%0r7~{ zx^*GevH#S%jUhHNdzE{c;S%Cy=GrM9v0C?Wh>tDT-Vl3$Q~F~yO9xj#A@A? z2uw_2Y|M!;CsJ%IjuadGRBWt@uqsk)JQm@xNQQqd!gEI19$~vtc10kpiYnX}5x$5l zHs;WxH^#UzR%{HhU>y=Ou4Bcj8cV9Tq&dC5#+(yvYeBvq#mq*@>*fPg&<)l1Q&{D-%4IU}aL}9!>CQ zB1zj5Y)=?%Mz40e6199+q6V@UEqWopT~l1>{ty)@pC|Y{k&XN2(Kk=t=ZX760e`@4 zR;;NEH8>AKM!3!7jLn14RDwxhmg#vA?o}Cef~YSA{A?Z#8xl|?lZTtgF7YE0Tz{_+p^v`M-v+OK9{O2<0Uic;s{CdT0tW6t4}^S2H^{>vFYLoq zgnYrR&S%N~OeO{QP@b}==Rq0zYJJ)=DkhTGgT+$Oa#9tb0g6xV^q9cp#Yl#OP3niP`suu6A_hdWHzou1;1pX&6p zJj^ocY#J7`IVH~VFh@-yr-Rh#pg6fFk9*jYQjg_o+*}WHZJwOxsW;7IK+pHm&CM`h zYLoRaStkqj5GIUN)f z_j(`erBJuJ26b`XD=2f}?;fP9L$-vdEyV*E*k2RuArB9?nt zZX#BASWy%~{(~L}%S{CN6tU6+!9-B8d|KAgt@5x+=E_?{uko;k3xR6)5L>IR`>+SX zLz&*>Rl2nv)>`LU=V6^y|A>c2xR9xK>qWtOWzN<})ow#k&Z8a(8%$1Kc^^~XQ4LRe zAUtLq_9lkSQyvI;IWL>4 z(>>?mIWy4n9-dcgjb81x*y?DD)y-n8`yy=OdKMSC-$%qmdC|j**36eYyd>U>p8I_P zzsE)^=BtOl?17LGHd?8z)X{^jgGgYOS3D3lsf^77YM!QnTaA+SmsdT!+Gx=v8@eV1 zMx%X4T$Zlt)7fqFu#Ig<`*2doR;t@QY`4+vHAS&T&o?~0VGZ8lVTT(0nwL!>uX)|w zo0dIa>vnqBX}R9=@Rmg8+~E)xANx?1}{5=ovG28YwmF@!%A6T{zJ$y(%SGkWo5O&e^A1fOZHSQA+pRhn(X{Gzr z!>3kYw};(yWR?5O19N`H0-t;7f%u%7f1&&&)wnM`eCeg7weBkqq<+P~{My6U77cq1 zNh;kp9vg#iIBk9F;al>m+&&M4y%bvKqt17S7YZ6p4!6kZ>!Yu&XK(azqpd*t`5c7$ zah*!joX&s0z?+^sGd;tt&qplOro#32`OO*z`02qI;CFX7`{=LTg1UfTa07kmFwn1Y zw@{)xNCFO}baxnT@!b(5!3OBV)E5T%7-S0E>f=^l^VMJ<1bJg{T&cs{Ih1uizdNUEa@4ORikLW&+1yDCp@WDXN(_f-=osN+gjIB#k0a7HwQi(O zMp-3Ba^cNBG|I;)*o2G$88el79V8KXRf=&BUbAc_*lRlQ>|O*Vo!R}qf|;N4;R+us%!d!s1n!r3 z(03gp{DRo&u44fmWz>~ER?05FbZ6mAR}m38hsgQpSRY22JJ#5-!a442obS# z$6AxL&c`})+j<}CrCuk+>;@kjjQyyOM}7A=MXl3U0gqee$9z1d%n#?;m^FDLwqXOta18X|R9J$8$z_-Us0viMFPJB|IekGGBej*oZ9){5_K-~EJa_fyufL--rQ@e|hZQ+JB3_)f`I zd_Q(+#D;US+~Q-434D?Bq)m-4`5-)RGvV{>G@LAb5MC@&T*?UBY<0gY8@(&#-tgQb zY~@*6_wDkr%S66s!Oc$v_xnEHH|hs8FFxR~^r4RrRhFDoONUfWUYN(iY~A-BN8pcq ze8gVf+kLFz0Uxv1ed=r7_o*rKsn1$%^+$bZo!vfmTOFVIAkd4S`%;y5{eq_xis#+5 z(-$22{tN%rsMb9`_UvzltpQVo$(KF|o2{<1RKZt1zOo9w_VKluV6Tt8b`Fw?|E&+g z*H(ahirD9ap!OAL9V${6pf1pi-#0+tKux}prx!tk4O8X1DFC5wAiFRZ1@#L+FhiNK zHSAVsJ=i~>6Z%U)g+=^;00RQ82yYHpBm4U;0SGsnth31DtQBBTAl9t`ZZ%~F2N)b^ zl{Z8b3{hrVSWwQ;qMTs?2t!Ryh4Ky$*taBRL;%8YIM$=1lJ0j7#KIdH!#;CEDB`mujjx@iFj8G&tLsoMh( zoN|!BEYkxJ#;U3k4q+83*JCpR%rLcP2AD~;(wu7(k(DjS?g(&)h;2ks+sZb5(rETHAs z!T<}cz@h+)XwWKmZvf`JmjxCFT#hZ~vD%f5@0Poy)M8yGwJ#O>*Z;qb6*mu-)}HaTSZ0b>>7^-Agn5e zpM3RL077GTJ`sRm6nSrz1;mp9o;0;oQwcD!!4&iWt zSF^z17GRsz{!)OKtnJ$aY-g1mve8=oWQ#G_(_RelqGf$Kz{{rS)&K-5`bvOTq~=Rh zvm}hLMfEaqh|Qs_p}`)s+3NuahZK!Slf4mu(AZ=<0uVBjXyN?5WEYpzCq|$vNK0c9FI^X-y)MG}D zXrBh8Yed@}fbglYSn7RtkIw=SvfNEHzJ4B1pfc|XK=@plwJyoRdPnxnqRRVaecrDE z5WZ|I`0D^)o1DD?_L^f2<2ZXwupB4beAb zTb1hWZVJiAO`+QQwq@)Wf+;Z zT^7syH6z3fW85Le9b(jZ+RdiJTe`@`6#E(B&Jctdta(<5SyB^rxIa6@>`>O3V;Sa9 z-Mc~%lyz>1xs=EevB2E)=DZN|Ecg5n^R3#uL)^W;QjII~Ll z@o1>YZ(q{UJr?3I7R1 z?ZdG)#Is608oE;>eg29JcR@NrR^Zl zA(k=M{UHd8NLwD_zA&2!mh-pA6(I-;l66$YDtVAUGUf3gNh=Lw_^lFBZ@ASVm|jh( z_wsiLMNSrnYeK9sO&$vIkU5y;A7s!y9D>*y`g3gvCe||OmgTW53%XNFB6@dSo(6a% z1YrS9ygtNw8FgKr=A;Gon=@h#T9fqeTeE1+ftfjRT6ec8#Lv?{=ef-xPODe`xe$cS zRQ|y{*auJR?4A!nc#ymA6?v@4D>7NE!o3#awW1faLpqI`{CvM6QGus!S+{;c-B&Sc!Ab_Da4B*USf4yLu}n2d#{9e#Vqt)p&T2wDhgi>@u~&Fwh-H7hE1d% zqHxeQijq#_jxNM@#ae?(AyumHx37nIo&C1jy%Dk};|&`SPj%;}!?M1at4C>i#^5j+ zjZsi zy%&PWdo;-V8ur@rI4=az4;T|4hWL;H$z+6c3+|CTR`NWzw_7Ed^20~UAj+aVh%d@l zyH7$8RuOw3j|a?Uk0?@DRWVZ7z0|M~77bZke;R`DD^8vvBOSYKfbM4@|5?Z+KBG3D zhxlAh?^n!FC=PR9g!qDXsBn8U%F#Fu#`OBASvL9fE9VYGS?lVN!R5q78CZ{u zDkm<=@OorYIdM_O)gv>@iHkC=9+_88T$I`M$l`M1qAaLKR+JMLWm!G4ww$;qtLu>` z%884zp&r>>PF$3Y^~lz8;-YM+M|PAG7iD`r@?JS{QQodcc9#yc5-iHkD49+}jfxG3Z5k(teji!!Yqnb(}SD6{L4#m$L}vY;MW z(VVy_%j%J}&54V$x*mC=IdM@o)FYdl6BlJ;J+ieqaZ$F^BRiTC7iD`r@?LY|qP$&? z>~2n6l#l9>z0HY>vZsjPSLq+P?PqA(+APGr(A7n#i_)aZ^^MS%a}js={3MObu?ROA zs~>;|Si&j#q1d@bQ_v7huwoIE;@l-U?5MFoCO&DmRh8jGB~55hhWJwD^J(++=C-1xJsm5eSo`Dz`k3 z6H;y%2DlY+(mnZ(dr1RE&G}X1giOvD0s*$VIAdRp7Ta-ZG^RE@O3;GHgS*0 z7i($X^%2$^YXcV~MPF>7FCLXW9;GE8S1Z+`C%FEL+>;TWwERy+c*;aQEm2QW)W!%K zjrB}~r;DPVp{Qpi0nbv_CjN35xy=zCkKFSSh&<17FDR{z(v}FsxtV&ApW4j5B#v78 zasr9f9x(8}(U)&(tXX=*T-ydm`+Kbl&@A{Y|~EA`rf0 zkN;XEe4Xj5!jiZ*0%5ncYq!<bNEgJKMdHKgAf<5p!HXym~$1{-;3jG-iRDS3w0w1Z=J z9J9C+3LK_|-y$5xxnpsHJKnnOu{!P@7GszR8XjY~2^tY&gybKqW98do+-B^NF-97D zRE$w%Yq>fyc0VB7{g8DG7d}ile!x0@=#IBj|Kn|Ajbq&z)_D4+UyObxv44#Iu`D?t z2BELraq1h(e>d}@n79lO(%l(c@$Iv&H9E#ooJ$IF{W8%x5pr;vgxsSwC>Cp(_^lHr^OunYwjCKgy!gT=fU^GwG4 z81qfWJu&Vn+VKqOxgZ8%zDZ#YN?90#U{Yjje87IYDCU=qDEG!#6g!^h#;%zhOZ3Ia zH7meQlNQHVZ1pXPu_R9amp?^{g8NKO+&CdL|T^h3OvrSe9v zb`RT?#)qwDmS@=g1}kIN62Ebma&9rox)|%MC6B~-M7(veyR?8yi$h&Yh41*e-wl8RxuXkxKCmb8vFLs7zCrpEpJ(L?2fV9^!qHvXGZy) zcf4cGR$s&*G^=oXi`e(OV2P7DfT|-UK*Y2_oOfZmlS+!~|SEt#> zan|l?)g`F2tT!gOF_EG-B_L4IehK>N{%haFHP@-zKGn-ai)?|$O7`1>HoGMOp+(V% zG})j8g#B6A9d1oP$V{fw{O0N-gA)uk1%@OTVpkuBCLm-5$!#oQSOUTjU5q7Njv1bS zpbe1-)MG?~5o|IEtbuDJRxvG)X?eH*IG>@$bIZ`IX9s{I6A-kxAC+K~E)RnTE8JQn z7;UPJu?%Av$zu}`lyzK!ak8k+Ep2f>KEZg)Jt4t_#DzBPjZMEx+KwBaLN35E)W|;NnL^f?h0>b)YW3jeA52w4w5+-fF zdpyD8Qspt0t#MD-{dIn7zI#%a(pA}0 zVQ)=vpmLDFEH5S?JgKU9r9tiCg!fW{mrSph6TD2lINgjTfT7uV@O|#wW30}8sZzOnw9&1>Q|K+r3MVzNh>o)wuT)yq{>c`yc_SA25(V zOz@%k%ZV%`SSGfOXh{=DCr19H4n_WZo<{DvwcC|FArU+3SbVd5mVAn&-HVuW>_+K~;z5G1RgS z&ttf$I)XnAWUAiA=NM9S7!}n-H$)XPaX{ARS<8Nt&}?J!ARJJ%BZGV#uPipo!u~Wq z4?<=&uIW*tPBtNr38ulsJSOJVJ0|5p$YhhdzY=DioCjf|-Dl2xGbIl~NrU^Q<}sCR zCP8O4*;fDdJP7dqG}ohn={YALjz-8CAj2X9hoxbD$Pyj_h=g9^v%uD97;tWGYEOZl*{6K}Sv z=XAoQ{Q1}Ctwh>yl#feg>d{u7GsGBQ=O>rSxfDLeE(I~uXhT>^99rlIZG-xH{MKQI zy&0iWo#X&}1tOhhcqA~m?yi4^!2AD%89Y8&t6TUSS@j}@6NN6w>!5?T+_O2vF1qv5 zdzE{^?zq3;NulqygeRDGHT^~1aHnA9xZiHC+f{dR|8E)oXhogab?nN!l;kycQ_?QD zi(t3dW#?@k9jL47%)mtsubsbXH~x3(!nktUwR8Ehc+;GGk+Uo2B-<5pn^X?c*8CmM zl`soOTpm9O-zgj=e4ABT99f!bp0LIVC#khvQfOLJ1Anq=r6l|FM+Rl;N^Kb>~%fF z0?NIFf9&tM_&VUM6Z3WRlA{#ID3kF7Lzh97MO`xlG`-_|L3$ zpL@I$FFW)8`xj~*IR{DpL28rTU$y|*%>dcs@eQZ~K)8CUc~$K1zzbsw2>Blb))`!t<%v6bz}_P zsB89=V_~LxZqn0KwYa}7(W@B)d|s+Qml6&VpLgpC{jDpJPZ0xs5Y+4fi>gE3;`3s? zWY}eT$*{}x-&2AY;-!6dy?&4h9ApBA*fo2zV`G=-6~XT^^W+j7blqtHbF2+<{MyJEFLESE_ zQ(A?)T{qN8&t`?`x~Q(fp10IF56qC}8ue}bCXFKzpX=Jl-Ue;>bXWXr^aJ1cpn?|` zovBKy1#<%`@kDTxsysTY@faL~qeY}$ zj;eI+(cUs=ZRKeH1N=Zzj#JY)`W>%tjebAmIPpU|h{j`gIsqrheJ3i(zH|~!Qu0Um z5l*b&-QyoyP#<5z3&}rGM4wU|@qUV*;*=`)GbZsfDxuzdq6D0ZQ}H8d^&?6DIev~4 zja}eEg;g+!PQz)c;`CyT9ne9^GjIk8748?*?iZPM48e17j-u>boU1$)yq!tkorm+7 z;T%!U$N8dkL`UkGbFDRSozKnoIj$u`sDjwJ#8B?a(9$)xTx%A#cNf3GZ`AK-Ar3{n3#GyrYaF`RhM`Mv zi73D0#a9{W_xL?CUxL;$bZcqKcN2FiZarLF9ZNzTwv zbGlmlXZ%@W`F!5Q{)JQ;rwjhVA?D8!x)k_aYdz?B#&#WW#;`7*^%EpdxT&3R5;y5OY9juBSv8sY^XsfM%8H@X)<9Kq$ zUo3rXGkbIVKyOKCBC$1@*lWR;wnee*M|@<9CYFaKdFI3}bsfLdqxj;MExk_5=Ks-= z>i?L}{#ooQH_$29)$pb54ft1;{vLsv$p^PALQ1u(vn4~Fjm!U3d>o8_x&#NiLn2uE zM!mn4iEh&STe5EScrg@*WW$i1{Pfe)+bnIX%Kjb*wn4E4^8mfb#XqS&hlf_$OWv%f zxzc2yUglcw;R$=I;#Tq&{fPq-+c*-L&$g0-^mJES$y@C;A-9r4?S1c1wtJXf-DX?K z;d*kaY$H63u*Yb(>18UPWAgRAvN54Q!=S&xU|Y%2dZwxZWAr*z!}M6aQRTZ@{$&I` zMjP*S*Rxy}8OxFr?OiUnl9TjOmrrwxPiVhiSIbz1;(0 z3S~~$gIgD8JIU%86xyTotkvK~aU$ahrXZBs}TeB$}JYAgQVYZ&a z^3NpbFGKtAgWRy?ND6aM{f}Xjy;zQROw_J}|`KtuWMmBH;+DAU*K|iYCp=^2dupX?c_LX|; zs#dSltJG{C8OS3mj6p>o)caUvU8Og$QgpQk0u^1Ocd%4*CDqh6a)s(;qIgx2l{DDu z5j}r}{k&t5y-jX*2JV-#v^@o}1I9=799C67rl+qOkRSIzFsWoV82SnOTOZl; zSQG!Gy_dD48*|lDdM#^#!0`FV4v;qLEvoJv@^$P-&G;5pZX`})JnP|EJ*DMrKdzqxXAwGOH^8z7fbT?c+K z`cKDMd@7hz$KWku2XP+r>0eVc@rY3E3Emu?_eo)C}shCIe=hOmMSBK)b?lgE4 z2{|6eBdBygL=*f_CTOAx_OGx`M9`fJtP^mOc-H72p$QjR9kLZu2j%`Heu*E8-$8nu z3BDC)DrKWPu+dzFvC*e+eRxWR;~Fe$vieM(jc&(AH({esaffCHFgbaVQ+PIVaU(Cm zr)FO{Da;du6xFT`a@mUy{z;Vz2Y_;OF42%dmAHmg-Xr1T$nK5{RhMWAPPuJor_H6u zSGwkCt}HE>I;oOB^4YDWR%n4%m3(??YP3e{Y^&0O6Wp=cGlEmIFP{Q&7XNfjQd(Hx zd1VUDat0?F1t%1o<&2qfgil5D;!k;;sztd(|vbRZ7Qg0MtESc=lD z$Ct=D3?mE4lt&sRWqEqL2`$X9RlqP_*+O1wkPG@~42@J@fWYxOYB@CyOA9~oVkxYC zSa(@x^*~tuGq(U)Y^IWN2N+UJIL|U)h&6VnI(L1a$fFv%_Ob)ziWPT z>fT&R=UG>~O6i)~&}6=p&Z~1(Qd(nA2};a692@rcusl^S&3ag=%*4j0BWGLxELFHQ z<8Ng)Zu}IbWlg2KB(c?6lI7CJbCql+f7(Bde;lm9nBklIvcqZq=9%xB6dTgeq?CV* zs9Akm*S0K+(GIPt z@)IAGmmQ@>7d_L^_QPGIzgrdJa2MMk5T;MC1^caWVA`jXqJeD-%i75pTyin)xwZ-w zWVD84mNUf>umxHu)e_}s+1a&1D=XHX;e8PJYb?XtI*dY@w~;Ft50C+caRLN9?AAm6Df26Q*0j%p;Q?TKv`$CoiZ%S z%26&xbEfz|12Cyd{mN#!+#y+c8b)=q)6+wWa*o1WTid7B$=M*mXk)jLppb$XYsJ3A zzbb~fBV$NM?;#^QW?0+VYg6WHZ*zu9ak5~1vyV1Z&!($0uy<#Dy)^rxc{R+@llltm zi(bt--i}bmCw^MDI(MNOXdzt2MX`EyPP3BwaZts1IjExM7B?c$?DUR*rg@Jg`FGb; z`uJRqoq=Y^2RoN`g-f}~gb)?lC5VD07b^FzRaV*5?9eC#XAatfz_qV{oH zps09QF_%eWM5Vd&8n?0`jEZ8u6F7`hhC)p>Kg;a1bxn0~RQp~y+2+M!sfaO(iWuXk zh%s`C7-Oc0Fzj z9FPr##Z19>EdPHD1;2Y~;m@>qTbnUxDKMbeozq+=(EjIFX%sl0`~NckkhG*MN&A!* z+U9MhE8~`fdBRR)GCzAf8JZC5^Vz^z#(+>Cr_U;zd7P$Oh~TqeZvSvpT4+K6Wug9v zBQdXx0}v-dPUu`0sYI@aNe@(X&Dtlek^922|*Y^C=wAWtUt!GW|<8jRK#~gd?>G;?G E15AjE3jhEB literal 0 HcmV?d00001 diff --git a/emtests/test_em_asm_signatures.cpp b/emtests/test_em_asm_signatures.cpp new file mode 100644 index 000000000..5e234861d --- /dev/null +++ b/emtests/test_em_asm_signatures.cpp @@ -0,0 +1,20 @@ +#include +#include + +int main() +{ + int ret = MAIN_THREAD_EM_ASM_INT(return 1); + ret += MAIN_THREAD_EM_ASM_INT(return $0, 1); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1, 1, 2); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2, 1, 2, 3); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2 + $3, 1, 2, 3, 4); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2 + $3 + $4, 1, 2, 3, 4, 5); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2 + $3 + $4 + $5, 1, 2, 3, 4, 5, 6); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2 + $3 + $4 + $5 + $6, 1, 2, 3, 4, 5, 6, 7); + ret += MAIN_THREAD_EM_ASM_INT(return $0 + $1 + $2 + $3 + $4 + $5 + $6 + $7, 1, 2, 3, 4, 5, 6, 7, 8); + printf("ret: %d\n", ret); +#ifdef REPORT_RESULT + REPORT_RESULT(ret); +#endif + return ret; +} diff --git a/emtests/test_em_asm_signatures.out b/emtests/test_em_asm_signatures.out new file mode 100644 index 000000000..311d66b4e --- /dev/null +++ b/emtests/test_em_asm_signatures.out @@ -0,0 +1 @@ +ret: 121 \ No newline at end of file diff --git a/emtests/test_em_asm_signatures.wasm b/emtests/test_em_asm_signatures.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ae7caf4ed4f80f9f6ccb4fc344a0fc1f1d156020 GIT binary patch literal 46343 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 literal 0 HcmV?d00001 diff --git a/emtests/test_em_asm_unicode.cpp b/emtests/test_em_asm_unicode.cpp new file mode 100644 index 000000000..f685f1f62 --- /dev/null +++ b/emtests/test_em_asm_unicode.cpp @@ -0,0 +1,10 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +int main() { + EM_ASM( out("hello world…") ); +} diff --git a/emtests/test_em_asm_unicode.out b/emtests/test_em_asm_unicode.out new file mode 100644 index 000000000..4ef53eab9 --- /dev/null +++ b/emtests/test_em_asm_unicode.out @@ -0,0 +1 @@ +hello world… \ No newline at end of file diff --git a/emtests/test_em_asm_unicode.wasm b/emtests/test_em_asm_unicode.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3e7df3d9f2dd3356ca1e304ebbfd6d70e76ecd1 GIT binary patch literal 21923 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 literal 0 HcmV?d00001 diff --git a/emtests/test_em_asm_unused_arguments.cpp b/emtests/test_em_asm_unused_arguments.cpp new file mode 100644 index 000000000..13313cb64 --- /dev/null +++ b/emtests/test_em_asm_unused_arguments.cpp @@ -0,0 +1,15 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +int main(int argc, char **argv) { + int sum = EM_ASM_INT({ + return $0 + $2; + }, 0, 1, 2); + printf("0+2=%d\n", sum); + return 0; +} diff --git a/emtests/test_em_asm_unused_arguments.out b/emtests/test_em_asm_unused_arguments.out new file mode 100644 index 000000000..4b4125e48 --- /dev/null +++ b/emtests/test_em_asm_unused_arguments.out @@ -0,0 +1 @@ +0+2=2 diff --git a/emtests/test_em_asm_unused_arguments.wasm b/emtests/test_em_asm_unused_arguments.wasm new file mode 100644 index 0000000000000000000000000000000000000000..593d3bec3235d5a3b2612ccd0441700962c3a034 GIT binary patch literal 45402 zcma&P2bh&bvj2bHbk1SUzziUWk!nT2oU^XHs3YO7x~tw@@7-O~vaU0TI|H)GD}y4U zqGDD|7(oTa95A3_PMEV|&N*TJf4=pe8Q8t|_dI`W=k(j5y1Kf$y1Tl%yR_f+6~%aabP zCyEY>4&OIEY*KVsyfj%U88dET&oSf1?$>ePm|u=L_>hjjmtuwWI&jQ{Jr9|%-`M2? zSKM#^LpmnxHg3oL#*I51vyDor zW4?UY7DZU&varoJD}rjvg6fHS5OV0aWyP($&zOV9AJB2oUnYzhw-1f5&jE*w8$SVj z!7fut{g+R0@R)-S_{-n-+5eyeOQkv*1VOuf_TO*(m}HU%g2#mY_8&WD`LJF)?Y(RM z%aJ?ox!dmh?7ru(>nVFq7<2Gnb~@xx67N2tqaIk@W6ylY(Il*Y_wet1ewqK4fbxN3 z57~devB|Fc?V23c^;I1??oS7eJ7~h+2@+Q20;f3Yj61zeGsh?TOVrSiY`1L`C*^V) zCGcAmNBo~AQB+DxX~r2lSp4tr^$&lju*X zKN)}W(!c*XELyW%<4@(^BRuh8(N1u?|Ev8^w4*%Tzm`OzPCR&@{m1`xzrXBr(59P|hG+X6yx&3N zN-I?O9ZS|yKYZS3r5)V|Yn67&_8Gr_M_XybdsvR`` z&(7F;{AIrb#+3S0$-n2HJI4IA)VG271KM&grK!wZG_wdg>_M14S)ZC*v zDy)V_s@e%0Z2U^sLqPih2m9fSJQ|NVy48 zL#XDZ5L+oE7KJn~@n4k3%{@ce$|18XRIF;1E#gxC(rQ+1&R4dEK@EASsrLG~=>DqU z-d_c9^KyWj1^E7I_??yVucDFRp(q|^4@E*LuZ;}1P+DGV4VNW$S(5*)J)D`^Epa+2 zZ_ez@v=)xe?C2~{CWf!GeE#5}aVfl2Hr&_Q#PC$bo~q?T0k!iI`!TljAoAskyqw7E6MpP^f)*yWFv%yihKCY+D9IZqhG!Cc zCdr%I!)pq$*J!v86ZjaIXRV_>?$4CWf<8J1foOiQ(eZE>82b zJzSL<(O0D%;TFZ=n;7m%?VdD`CWghSEhc$;coB9y%fuVkW#SF~iZ|}a?2b&l@nB{TW+MF4nLX_x zOEO#HAs=LhyCZ7}-(>bp=Dcwk6g{GBN0h}I$2+qgUxu&C;*B%QYT7f);pvL9ibF0c z8}5!w5ft@-d)`utn$Utzt}Gkw=&UW=tRHdAqOwqdD;_HwZjplpzoV(n3uU{xEdF@A zY%i3R=(Don-tJ0tWw|x{P&VAn9`sVI-g9)tj;_EJ`66eYlPhqJI^MYzJC`0cAq_`-&3;Q51AMKCg?J+jS_U{OPvIA_)#BiV;D4ssZ4iZPV+Mleo zBedCp);ckawXx#lgY97P@i=RfVf7jPP>>m=R|FnNP=Nx8#Lx}$k0e)DhCc}`y zWyEy&ANwCAo@A3mg3ib~C7H|l3aw#sWRqP09ue6Q4Bjo_$jFW)x-rfO2uDS=%qHo_ zj&k8OC9)}=VQOSkBNcvhWO6X>w8(JPk>S|Lj*Zeud}UUxg@x7P^C&(mwQyGzSm1eA z6+{btpR`LO@;rPgo_d-t~PAqU@WG8ySjL2}6mT*!; zZBHt4P_Hv0JHr#48QGa$ud^aMtB8goGb5Yn(Pu|?wnv{6**QcrGH%zHWCVsmBnd;P z{+aThA-@d@YuJ#mmXmf3(eGUPhXXn|_UcN@S<_*mGKBxEVh7 z%SlwM>bzvb0utYbyN#`+uqBScTHs1h;Rwj*-lJxZDhC;yqXn( zzAm!s9P|y5-QX3zF|r%Iy4xxKrpRzNcn0DDadTui)d~I+3b#adi-TAY*#ZY~Yh<_9 zK@fjiWVi(mf_OmO9vRL-fLJwe9vSY4><*Eu>KuJ%WOp(V=m>XFTXo&LBg5TQ;7wd> zSQObJ?_Bppc8?c-Z)Eo}k?9EcDa7tm;$n`}5$>}{SK$9v=6H9sDwu%!#(IR z^d{Km(a3OBHC{0eJQmqws#bj*SRB>IfyX0z+-Fcv_za4_Vu>dSB78!4Dl*(#jC4;& z_Ouh|naG||Z9TjrJm<5c=e%sPQTA^3WW;oHxA2<`pF*CG?0K)|3z5B`xaXtro0|Q` z7JIf>J^aPUa7Dmk&-D^GM&|P%0!Z?5WVk1l$HxIxPs6}*9#Zs|S0a05xk-~~7<$y; zM*q#2mfkUGba*wgSE)lji9w;5sV<3ZiA%TF#Kn@HZ$$QnSNP4y-c*HOi;5xSwWuw; z<;klP!`qR)?Wx|0>>YtDh1D{W=0E@ZGg9r{$lg`xK!uX9^QRqJ!+VjvN8gwj-jD2k zs@fht5ET0Wf`1sNg|=|594J|=|EBm0~TolULb zi^#t43|~g}B@NjgzKV>LUy_Tj#2My7!+;i#BjN|+kwE7{bzEgT)&QCcmi3&gcBEfx;b z;tAmxAchqMU=^T;RqdEKtWJ=*fL>L7;n>)Ybp(!!?YLOu)%4hKYPI8I!>uwhoEY1Q znmHfu7|w`ohQ3w}I{|A1zoYXzOW@a-WqfQ%vak^>v?AVB@Y$*o9Vf+hk{5JxY^&!3 zCx%mEBAQ$66eiyEp;Kc!)#Fc#?PM?Kbb0KwxFwts8y{!H9pQ$m-B3jaT1H$gY)rI- z?U{l}8!f8ZnL=&ju&r$f={BlUt`U*BA(Yq%LYyW-EUJdpNo6$+BM7GZs`>U>Awuz% zFf+Da==bc{@SY80TvxU0B+Q}wgm4Z;+Bwku+?XFb7qre}br8eJ#F|rGst~)BIn(UeX2+UX&53PJ zEY`m)Hr%C@dAZ{Fm>8~z?FxuEG0cr^F3Tjwme`1%N2)6ohi_t-AKQFZOcTS^v0Y8_ z_Ha#XL|;RyYZZrYVz@50>pa!;cbv0>|nRWVPs~%z_)D}S+kKM>g}=JF1qXxhTE{vlHu72&j=gY#YRPQ-03U! zox+YbBJ5(L!zkz3QR3M>GuTDZGvqcr3#ifxfYx+k`KyxH!H?LMJ5N<4diZ1;Qg1F=02hlc=lkA744sf?JbqFi75VdY;Sw?yRp6N(eK6f9?_cdy&H#3i4I#( z#+&lLA-`=(8C!(Sea5$WG2`1L?tq%ebMNBA@@cU?xmK)HShZ%whtWShtAym6?1y-`j)_)lo)P? z$I#naSV$y>YZ3Y_QUILFN8U;AJT0-)gzKr4HX)pzNFBgmamX1-T|0LsaU_@!&Pwde z#LhxXG&8Z8POP&NJ6riZyd#{WJa&$kOn#Vk4?80X!S)FMnc-8&xrv?Yl{`PO^A&e) z68^Jh{|WNKkN(*jW+jFz0;m(YE=UX)l!5?~T$mW{3>DRg2y4lik6o15MUK|RiCqj@ zc_|Fch$^OImn3$H0tYIPbUq!sG_gz3ZZS9|HrrKMa|FcZP~R&OyMknzj?GPMt|yz9 z*gV>*JzSX>ZVnA{m6Gu>A()nmoOc>4z=42 zN>9*)aARUOCYp}jlo+8m!4)?rcC)w2E$(4Dwt!Z%1vKBSiQP(6d$=tz+%3SoJ+a%9 zFtC`74fF=Q!}$RTaA#t;fpyx^FYZe0E@!yA6T2INDTV<3($oW)c_emkVvA_$dlI|H zNqS#m_o<~loOMZ}et*BWv=>x|PS_ETFum>6#P=6pCYoQJ6O?r?^9B(X;v ztw$4k)I%Oi>@im%FD5ayZwZg9dp#~h9!bJVnGMt&@(F6ExxkYNbI2zl>{E$7krZ>t zr;=KDT7-KVGC!Nxvq>1ByeqqqAE3G0D~YX)xUg3W#(y=jSH1KX5_`exz9g|F6p6^T z0qQ5uc?3P}`NW?0q%S7+q9giJVmJ_eIkA_8<_nxto3 zt`iZGy^$Dhd6K=E7_K0hmc=WnTfCLnTaLiniM@@wwl%zy7_P`j?D7!aO$_(;at-rd zVz`x-wcY!Py#Be=EhL02bIFZ^xpKalj zq`vI@G%@^5qr+#3eJ0Wn(4#ecu6X-gSV_P4iK9nCB-$4V;gV=yCWiaMqsa9U-Q%mo za7F4KlCNJU094|oiQ&FhV$Dkmwq8{Hl2vKH?MnMyVz_UY2mF0v-#eTi68phv`y&c- z$LA-7*iTAbQ(-i~&x!rK9C>Q_t-gNjObyp#beNpl)vni+W_i%H{6mK^E45j^Q*l9R7kD8TrpTKMMX{p2E=uhp zkGMn;mnfn$(rPyUbnTG2Oz~}mOH;#LM9H&Ln=LfWmHTs2o0F;qp9J46s#Ugjo8OhL~d%2E9b*$J_%Wy+7tSE zAPrk(`uiV5gkR<-i3%(Y*(FQE){59BpQf-Hn)k33asqm>Fzt+3ndT)5pP$-%2YGdB zSF27W%LoeBq;REZbZu(ak^*I4YPf5t)Agxc?}WIa9@H9c1Pj=EyfrnPnB<;nUhvIrY%*2tHiB+S;;fqE_b5aOJI z5ARIvPRHb~)b8>ICjV_P-QB6-yOZ`@lo}t4V7i;Cc2mK0TQz31?mblqaBph3`H=X& z)b0~e@2NsgD9}yLj1*9l@PDUfot)DOa@sa+;mOpt&L`~>o=R<-F65t14fhnt-&QsH z;5MVfGpXTjWA%M&)o!hdGs)HxUQ6w@dMjv!v<;YS-Hk|AL+e&_>u1${Ro-){;hu$X z&#MKVh1xHq_IzqDP~1zYz0}QnFQ@jhQ|MoTA{$;37rv6(E6xb7ruM4H@FbxtiygF# z0@60D=u%rEUR#Dz3QAr5_Vv_Wr{8vjH&S}Cz2O3JtFUu^V$nBCU0z5J51uHZ!3AAZ zdNZ{*RqpA+<}E72&pWB%gPiZC_KthrOAY^fVy`N3gpLgFr-r*3V%}aQAbg-);ltGM zdtHT>69JHqFw z;qJh9OVw`iCc9UhLQ!>2p?j%fCpkA1eEmggxc^}AOyP9<(gpOJF6O>U`LwUV=IhkH zR-?aJPf)9ixo=YY20FBar4n;Xm1LohSKp@gtw(&9+Ar~r4Bw}Q|9gmkW7TdHlP?@> zzhoq-Arjq_f4R2(hlZ9PilL-FCjFS^PYt#o9k0cMi^1p3!K^@(bV--z!@>9!@@|*s z%fa{+@@bdnhr#$2vb4)HWe9$Sbar{B55cdHXhdfaf?pvEyF3pM!LN|}yF5<~!LN|TU7nYQ z;8)0VU7k0G;8)0!F3*QU@GIoqF3*=k@GIogF3%4`@GE3#muJdQ{0iyp@=PC!Um?@F zJf{xDuaFsCo^yucSIC)No{NX#SIDd`&)lK-6*8yGbKOw<3Yp*KxpgRhh1}HTSu_;C zLKb#;9v+HcA@_HAo*If@A&a{_FAc@7kmu?i`;Yv$Ec;&$XCvnOXZ znX!l!K7R>gI+ody9yNvS&#V|Frew8nR0eM!#Rlcn%m8*2Nsq}iJ)5eXd`;nw@hyD< znWr6_5w6+Tahc(c^{8Kxk^Sw=rhC-!nH`_yj_a8|w4IRU4-d8zl-8#X%|3N#)~I)4 zX3YXOBeNMkI-isoVJCsl$wKVptRKUxM zNheL-=~-wlCJG3OnJxjnm@`!z3x~5ZJIgcA%xosJkM?jjJEIQeoXpMvim>>G0q$I3 z@eR`B{LFCYX6<1?)fUk8K~fTD7Tc(q&8ibib-Exk98nhvgmArxHFy>-&g^1uflD&G z#LK!=jdL*+pPkukkD8O&rS-;{L*ra72zEKtxPo2P3}0KA>#cJ|y+E7mO+X;6GcU6% zya}$%3^&iC0B|7yuFC8xkDJfD<6oNRYHyyamAEn08mEwc*Qn;#WFy11SUHIPU80U) zDtEm%%x?DT-;&ua^#;2+3q!jb z>_Ts_p=ziFnJw^4w`O*$H`HyJ-R8M(&+K+J)KHhZHdJi1Ftdf8{Laj9pm~=<>@KH- zca*!)^JZaDW{aHQ_n;VdaQCV$7D3C?q@<$Z;ShBiw8uH2cYCbs-f3&3w_(P?ivU>3Fo zU;+XBb{F7xGQ+*?Wm2EFz~@~Q#`1~d(1<+g2)visd){{MXZAi;Lha$h%svEGOZX_W zkJQuzv(5E!5kE0};vT8?K2_B}RT5y)GM`~4<*+^%{$ivrGW)_qzRV2wIhFb-D9V`eSCe&+FAHdC}-Q zenPN%(LZ+~(^_xC8w4RH@OTu@K^13G=^e|EkeTf%=muxu60`3 zPV>T@YtZ+dUbfR6+8O1X?JWLEpL&hpTiWy6WUXN$mRt6oHIFTmT2nDeVPUz1Gu z5Joto%qC&k&T-?nbIbJ&^7G1uI~Uu4^A%+03op?aoFLJxvd!|sE+`vLgUeHbwLMSxwLG!pPi{-T%gY`+iZtEr)+b)0WK@s zWo1w%2l1De4L8S0MLaOBC>u^ytdUj1Vs6>yI*fT`o98gDD%(|cI&LpK=a&sP&!Lb4 zC|8#a=TJmz`*-RLohhu)Z~lnvKgP1IWo`~`ft0{_;s-Kqv$P?loywz3rX z{8fYBF7rh7s5^)w!Gy37qr|c;q|xpy+nrwNyRghseh=>mcPo$G?In{Rw)>UcUJm{2 zS79&477w|nZ1;Fg?k(HBio2&A_Nv)lby3$(?0a9?aE0tcmICMgvf=uv1_Y4gfwJLl zS5Xppy`{i^uxt-HS`Udc9|AGDZht7Cm0D$Vc(`m2D{x@wuRNr6CH^C2dj#9JiQ&<* zJqnKPVX*+&V(R>O*&ZjEl=x4S?FmozBpeA7w1=n4hFe_j2u~{+9}~heWqXDUQsO^b zwr4%VbJPW*wuk32(k$EaWO%WR692_=TX;$737QaIF5AmxDe+$^8=~7&SY6KZa}7>>l0`KJh;Mi8s5K zST6>i|Fmqlcj~;ThWos1xaHgSi?ZQ7M9uP!bH|ru`_l3Is%&3*$k*6-mo-{_Q#M@h zmatUKyi|yMSq^o0Bow^UQw{O`(W^S^__-$X~*73=h* zM^x;HiV!`rVmJ_;Qn4wrf1O+jeWi8#S>^JvLNP(3kZyWFvtufTTcJ)wNOo++aNSAh z4#!mtSCCBF{J!cV(681jDt4Bqo>{S(m5}>83@U(sChI<<*rm)Cpa5QuQUp+dMQd1J+JH+a-9$;c|8 zVmEoz%@w=3vivIXmWo!1w|H8rLGA?=TTsbYQ5#=Yq3za=OIsHHYAc^KaS`(W)V(ZS zn~chSc_rLd@rJ+6A>UfDTdAg^2!K`Ys2J`Hh`O+13&s7nDoaLVdV50JZ_<`>;7@AbBT*huwaizZ&lzkx{w|dz3g5ObCxv?9qxn26rv4*kW(h$1C=@ z@_Tqkc)|_YpYWo{Ppx;iM=GJ0?H=}I4dWqCR_sZy#4{CpMsZJ8!k#tTld6hXy(AN# ztr)HdDAu>n(OWClODPB-$@3M%J))v8X;6I_@Ls6c3y#-|6?+l9819-_hE?k0-Ah>P zD|DbjN$8{9%N2VW6Ih0sioF7q_VB8p*sIj|wTit)GL3exSL}69_D03tpoQDRn-#;o zTImRHDH$IV!rK*ln+zK5-l^C-p5fh!y$ea(!+RAY<$Gj!zrtwuJ}vs8(i1cxd{nWI zDjMxRt{9;o!^odh>=SR7Pu)YvXKFb6tTHitUa`-K!(yajxK9E4WyQX%gr;J+Yw|Yy z%9(-T?i)N6YpRov+1S#GErn7FxTN^4&qTjfYd1{@-&O3}ihW08e_yfhov1%l><2Zr zhj)Y@E1IeP=#A|K)uAI4eySMmD~~Fg>*tE$mT%F{s^L6D4fvJw#1U0HqNvnCC5M_2h}n44B*n48AQgkvxv#u`w= z+%eeEAFI4}Y;{67u4>0sLrs}`dWWrPoI9mzJvGjqQgzCmTD4QX{1dBoqMv>^t!k%H zrp7tu@e{)F9s#N+RP6*$I-_bc9MzN994Jsdnd2Bj^h6NVKzF&mWU2-yGQE<$~>NLKhrR-K4pppb#Q z6dhQ(7h{MUx?}X-9-dW@JsSz3f2|1`OgBw`UKZ{ER*IY5dfiRkiT&Ss*t7yCx{jN? z3rWn}9Z5HESAbiwi_Wh`G@wk?Nx&orv-7vy;{RL>Z%mfspVo7Gg8EDc)tVvzoU11jv%0rXMCVMy@MIndx1=_SCbs;d-z!ehH)V%UY!MPxM3TJZruS|FFA^=sWP-~W;wJHei#`03p>7q=Gy${t zue^3&N7%%R&e*?yquLR(qTsKnI=TI_Gsu@P$kK>2pkk2kx=skVwLEt7?coPM`trm7 zZtN5qfFvZtkp4$6)9vV0CPwr`LF`T}5_Jyd$0);|zJ^KnD$8LpSr+yGRy(Oiz!4rg zLT2{BaW+#qN9t&*YJ8N8=v9rWF-G+}17StQV_T0q%DWQrfS48=PSviFRUPt}7{hwO zaASJGaAW#^Ljr?%VPBZnAL{^*b%4janZ46-`6kgRjOh_=^eyH?@|~&00+#Mm=)G9P zpCKe+#zLxadiE^G0i*S^-EJGxbXlsm$V~lQC_+*qn4_F0V|7KGFJp8XtPtvMunx4A zaDgn;2`@&43uUM-VULwMP^SZ>_!nUx@+ryTUc3Xmkdh>DP)9= zP{>Fd37(}eK!R%oi|w64KUk;*-_H1~PiVG&p|4Men#GBuZM3rg2a7wh|I&U5z-ICM zuC}WpcC+0SvAgYF2&&yeZ%(VO0L=fuHyWSy2IdN^?{z@2Zy}_b!vL=&6(4591SiKZ z8lnuh;jRco;Yi$$wqs!nynPrzW#Cx)*g z(r@fHB;L~oh|mLsDd#3G72ig-$As`(`>on)@A{lq=F)q&hyT`m_P^B_5;fbZw!gFA z2`tCw9qb4@zuoT2UT{^e1ukJd$V#*SsIW#)L~ zhm9A69s)a|0DGu$(zXtke#9YL>)~n0iOz{G^*4Uhqd0L(P5-88^FO3g{fD>NKkHrP zFdF4=6F6ymnEg+??juk&IdDrBLOMdHPZ>I0F8@>fv6B5WRBWZNa%TR0gwEfJL`UlU zEm22A7>3%)g&12Aqm#NE&8;7`75UH8ncJMDn-S%Oabjqp)0)pqnH_*efDL z*%eT+i0KG(edwR-4XpyjOjU9AJPyW2cCklzb6w>JVCxCsi1|AH>KV{eIV)TpaSm3! z=Ng@T6?0sxGp|}nUZ=CJ*1siOF9fa^0#`?Y)md2!$s0gd3&|TJ7LqqYSU>k#EF^D= zYC7iHpM$Ow!U7#;Wmkf{nG4QD>&Uwz)252uRh<63TL)HE`t3UFs#@QpQ>n!|GEs}% z>JcD%o6g57=^Z))D?}GYh6B+%bq*FZZwE~+BX3o?eAG=9DP$R~?$z;E^X(lc)qOew z+Z7L~?$^0j|MsIGu3&sX$6;0UgF5;uf&5TpIEPB)GD1J>cYPGcV;%e>eqPp9H{Mi_ z>a?sg0_?Nc*Ex%I7FBkKoQ_>Qn6t2ISNss;iO8PNQCdd(rE7=S$>=kc$UOc@{etvU zI;$$8v4I_h*jLZMax15%+HR5Gtnz5gy zSn+M9`mHYB+mbjs2SdK%G}dp{#_+zSZBrznW)0S0PLS0_cBb~lDcx<1^K*>_<~^;a zviGvpLz8V=D8aTBcufghr?ahS^a~Cq`uqw}vTbt@M&D*C)!Q1Saqk1C_d#AIoQ=w3 zD%?nQSBEye!zxboRr1n^u(GXOaAsz!w1q)*1WH-U)>83!+{&wu1F< z<>;xSF~9~COO+KE;MOjV5o}fb!~nG6FlVKyHb07*#hiU$&i{2kQ6G4wk611%SO@l2 zK^4nrl*VGbYZS`xR8dP;Aoa3d1rs)k37f2`=<$uB4s7HsnWNHZY_8JUJ)kgbD~5qz zsUb!UYJy3Up_$4{ED4yS_5tIxskUiU7Q*U>o%@bf4;1yR1XrNTq3;!4aZ-rDIz)b7 zQ)A?c99Ej^pwTQoVqf;nMf+m%!3N{I7 zZ)?_1AGU@I*nPTSBOwZ}U{|bSY^=h}!0rR=-hurKEZ%_L6cX=KvbF!2`c$EfetR&z zL{SLwn`%Ak4Y{mIb1q|A5=8@4&jFC-K`018gp63!k?~ge8DvHM<_@szcMRlR$wTXy#km*G`V^(moCZJ4L{(oH`SwrRfdj#GJj^D$L{7-rn?mXiK)6W9MR;SZyGpdK;*-_bbNa{?^a>cZBsQ zemxh1bZj_7+K8sGhFGnO%^31&Q)2?RlC30gj4yR?4J}g56oZYg&sMY*|2Htn?E!VZ z0x>FptX2h9^9m#g=k5xu&d8gL3@)1)*)mpPl+9ohs3_w~T9Bu~5?Vcga0dB>HD6v%H~`!UGYwLxN=vc4Dup+CIcRQq+*pthu8)p~SW$D8H7&o5Gf3pNv; zWrQ2#X&$Vu!@Pw`kOw|vd}O^JYw+yRR68zHnqDX}xH^if6HNE^LDu7GM8yXS9=`@H1TU`%x{R-bXy`#B zX^}N;t#;`;kiB3~;j|3tR&S+Wm29x6H>uhHN#R4Ui^=vUJ4z5(cL z;MLmDHdM7xA$henCYWk(O8llC&mMx}H@D3_UMeK2y(QJ&qK!%9#$<$9iz#(6UazLnjM;^)7Ro-FrTN39j$xtV4UPA&8H38K{ACPKd#26wP_u-3KJIt)Fe%8nOjjj(GY4f`9?}{4e;9sBQ zY5K(pnik11jr3_VxTX14-JGm3oM<{Ov6W&_)GWKgDq0G#TJzd42IE7?v8~Sr5m~~P z;lQU4lndjBNK&{2?y$druEoc?VGUag&}%r1<{*!zn2es2<7h<@TC+&%2PUdfPrj%h zgwR(rV?y(2)g2fR&}6_^#NHz#%3 z;?Tp{sjS{Z&ntS5ZC?CJQOfd(dT0Sr&C6kHjV~w)G_~)c#qA2#SL9NmOg>cFilX5z zVj^1+O|WeVfW8#9f^JIc3&~c1LIXl?#`mpZ67h*9z$v&?xI4qcY2&SnF2w)RtiTjyo9Mkd5ps@G{{&NF-W?;3FH!>##NHgbqoCBL-6S=b0gK&i%LWbzSH zs$*f|YMzV^t3f1oPl<1^uATA*HMIuXRmY2K^PhkG{;#dU@O6?GjYWWE-8&wJUBj$h zt06HGU0pohQ%t~ByL1$vZ=<=;T!&sFs5ogt90;X7cYh4d|@G_dcNj{pd%OK#^ zes#&izNJv059^0jg?`p$T}u(mQ5&JEwXPFReFDOnnSj$77&KF;U4x+pT8|Do1#=F; zSxX7%8-?J9w(Bv?wGCM&vI=~4o#d-{Qm@0K!{DTEV_0cnal3JG6Y)a7)cD(2;}3UG z;X$IZ!TN2idz|>B6&ARMrR_a_PnEA=OOi%A>Y^vovya0if%u1LUt)ppRgQxPn)#o3 zURc$8Of&7+H}r9TA92m!<6+X}7e_sC3Ga2-8jVOh^QVL7m)Zsdg`zS5D{6eYg zKNOr@nc8{{j^h6x|4K2-r@TRM)5fHP{G(zoMPY@;q>;_rQZ4cwaXRVaDABn?xURGm zmh8_7jmL$CqyRaW#(6^_2DoeoF#YuBGe?rWd`XmdB74W{$aQdRaTgtFt(IbISzOSM zvf-nCO3XGhxzGTzy-eXp`_|^szAE+|=4IJ^dzsu*W6C@_rc92{#egct6G*&*cAg;_ z+s=57i`%rzyrViLq1@)yykU*MVn^R=E|jd(V;X+V(8r}*y_MWHMcBDXj0jN}sd!Zi zJC)|u3o{i#!?vVo-R-!=jYgbA|6Mf<&7&|pLw85zFhe=j>x8iiSG5%+8PpO^mz@d- zZl}V0Gh2nRcXehxk*nx|{q3e>LDMQuXuDqZl#RoETjDP8LX0cXdoxh@lKbA+2TH3Y2! z1ffURSA`~BqgX-xb-1HSH^7nkOUICF;I47RuGLL%b;PdIU2nAY^?nT;Mc<&C-=M`R z^e2uxdZ)fo*TAWnZ_;IOYQdXh-38a(%(uk4$9$MlK?=VfPN{B-xf-rs(CxYpPVIb0 z%u?$Pz_EB-80%s;zti|uhkIwt1#k5ncj<~Z<+wXGZsTENpB#%~ZgN{YDe2Ovqm$X; zUPmqAT!k(Q4=cew8*#H+_?qTZ72q5?^eWvQn&Gr1+^_rI=%}z*S!P%2LS9ksgjyVj z2WSJ$XkOLDY2g*WM~%%Ru3LLR_lUae z4msTp_pmO6(@6S=JOa%nZ@T79!^a~r#wp^pBUvjH^nNtvf;ds~FB!` zzV>{CjzDd&a^AVH)Dd=OWL&9@rT$KgQ#)t2a!uEp>7ymHm1^O`*glMzoqP~8J=us! z^w(Tkr}k~$Nb7FF@^z?_q#Kd#Z5Q&aOqQW!*`90eY?K<7m1n*2H)si?<6$-$3XT%S zSQ#h*RtEJ1uptHpl8Ruiv+hNihwvkc>|lp5tKK2}LMx?F;xX(H1OX#~Iv-#m0E6y< zbpTC=aXaC5N2)T0s_59lrot9m zfd7ll9@j=S% z?Xo41A%W=8X01Z#Nio-x&Lj-#&RbKun^ZS(1N~qjeXx+85`*=@;TICP18h|I1)F^( z=4rnO?LJp%7x8pQcR>?u3%Dz`)t?;LdNlR}6PEQOF7R&U%5ESZD#)G_lgN5bj0!yG z-}25XtEz3rw%XrXb#=E2;OcH)?;U1`X|~Q)-8mO%V?aPF9tJjthW2jr`hOMxMPN5A zaGqt5?+WkRf}Me_s5#E$2+7oJ(Zg#-g<-W878$9dog86MbS!W(^;xAu`T zK~Q`Dpc^~6K94!Q=M}H+sD@>=DfvO_eR6WxfE2c%VGaQm5E7}W_P*D%_gdt4-{@EU8$X0>0LpYjA(s$#o`Pl#8U)F$k zmfCu4)w5r%UvpEhe#`zf${Tlm_wH9Muh6$ozl?w$r8Mf-uc2S1U%#ZEre0WNP=Rm$ zkHWbMv8&PBdR0rj*pgPVaz&XgaXE65>@RFhnomS+T%)mCp9mJwY$@WpqeEk*9=+yV zUWBN_zzhTTqc^jFSYx>>6;whQa4HvtdueXPfsMwtQBmB$#%x(is&IN&LX10br$=mU zI9{tarvHN1S-OpV8D6V3cFkYGiwhcy(q_8t$4}jOty)ZLnT!a_RRplHe;w?AygItD z8lg1@aImQ+(-CgqMEQ%g$kI|UtVmd_bIJN9`Q1Jn@29+xXxTvQ03zRwyCeH{k|xY@BI zh%rb_7i^M~g9%|^{^n{SaNQ>Bb&%MC(zsAEf57qV(~ajPJ_VSZ*yLn*X^-G0B zCBFYh*HqFWk4V&8F{uRmy_yunSF3|$S^gGZpZcw)lL2wPzo9~(yuoi<2LxAueufH)3qdJ&^77@@N{!9` zLeB4E>RiY0JLUmh7&iS&s-qIF&7AFh3QMO$J6 zn%4^t$u3Ck{jfZ`Eq^s#kk9XTcY{ih0=9i++4r(SPvSL{j-jMLs`px;v@o!PrC6O(O zf-YlU!|S@bdfICd_WH{9x~%!Zqp^$a8>?R9*Hq&-bf(4DXbo?=g@5Cy;+(_3CwJ?l zwLIzZ8DO(CGzXL+yoA}xX_=7 zSV(`kle}2Ljgp1kT>`#77qGxh8*m#mUmGwns_Ee-|H3k7*BZAebCoiB(1Bqc3vBd# z&aKqkCtY-6XR{ZVRYB5yVQIXMdlXI8lM@~^)nMy6s($oCHci%(MUqZ*AS*OwUt6a+ zw&grWn~o7}$)TVT#gPth`k3l(SqtySTq7;Js81uHeM*AQ^>6?QJ|)56TG-G_+>lS( ziW1Q>+B!7JR#<)2Xs+uuOtmj;qvKOlL_cuD~prr2sEa+u6ZiNym(9P-vZRQ1a z#vI{LL6dcCLwFq#+h&6GGxP55wK&_pKSwg8`AM%T0Ql!9Y*qlSb8JSR$RTQltmHrCdsn=tM-K`CmDx9UJ8&tXV zjnj<{vr?BmW8N?pZJHN_I$W928Q0f0eNdCLTBK}gNOgA<)hojSZer`3QK;wZiP6hb z5}Tx=1zLIV%-Al3iL%h8$zezEtcGMpG^uiUEcG!nSPsUpw;3~4X8G~|nwyiVM_aE3 zpCvO%uJU>zIh_3LTrtOT?FLJ9KNA4Ak4B?C8oS3Lf|a)x;aY9#XaH-?U2SdK)i>a@ z?WShjoW?`4=8!hmU|+J$`DyIg*fqp^Y1{H10AspRvTpY!JV1YKTiCB5P!YjG-B<2J zu#Q)0ds$|CwL`gbfLL1`mYT6M0Bt4qw*nd3D!7W0FyDzZb)l*$Wb$*})Gf$U-y5u70?-rZ_LG0>*+ zTCK0Owri(c+cT=#|hhXC_y;1+sfA7F0+wk20;Eo$&TQ#qi|TQz=3`= zPsZ^jR!}OPD^!=KxHR_+t12DEf=*tl^h4RuJwuH&}SLLBF%qnFr_0~DOG zDxzoToJ9TL1f`$gZ(ULP@sVxBn`Z6W<441|sY*XPLU~5%yHNTrMd@dI>1i>aNBdGk zmd}XdUX$X(k&De%(v)1LSV((ql14~jM6(Y;y=S|aMOo62FJ`a0Rq|evn||&jM%){k zc9|(i{eUHq^e>1X%eE<%toQJAnl?ODL}3NNRYnrjSO&56)w|d|)?VMCaYKO+Geo6^ zgB>9jGb#Lii^2?qYfbZ+mh75Dk`;ccrr}`k>D^&0H+#U>#uEhOk3-v z#!aR`|zM?#d`^an4d03i211q@m`|i z5tr&B{QOKL(|q~#)WU)!-0h*~5W24(cJKv1&qcN}(nQT$7tf$dGlM#pT0}F8o7#!t z()^>-z%}x0tma>>2Jdi({`+)UNRBqerIgTTsKsiJ%WwSAS^_SY7Kt_U*XU!uM+3vX za+-FRvwSIET=Jjh|Dujr7}-KZQM<1Fk0_A4|LG8KWBSA^tdv;eI{)FF#lNLLmyRs1 z&0j9$R~&hddDk@o?a2=$Ivogu;{^DO`90(pz79Tbg}0%UCj-iBj|jsFiVD=E(}t#K6%2g zxRcev<;$hJTMfxjR~|bs`J-q1D0f;Yn#u>f!g%PSWU%FT>qRygS?}1G*3$yx00Ql)btcY zzZ|(bQ*-hfO35V0kf)88P7HIm z@e*ei*Z1=P?*+QQABZQWv%-v&oBL<#cK(xulPn*mD{_`D>c=VdDY~EEBboNr>Xf{w zcxq)txEQ>6Fr_VA;%}}@;*AyVMSwE1^`Oe!P`t3vh8AZ|!gDFs#tV~r7#gJZ)hp4L z>*?WqBMHCD6Wswehrcx-=y(qAs$7xeZ2!#l_g6RyI?vx<(Fn%tD}6;P9#z3znFvD0 zYufdvSCoXeSNi5i8=hXlUE@jUlOuS61@=O(b-f-vRx91${e4Bf<|oFF52Y zg?E!IKim<#PtU;EA2^kl@cN4-Bf3|XPkrP*_?O2DNIRukK3leen;s^5of(fu7^Me^saJ3Gu!mx)x_9`8_mzL-tBvp@ z)06BUS@7pcra#o=cymOlyvf543EMTABXFO7+#b4g8dMGB4##QrA?-@U8I?< zbx4!&(A*b1CTo3C2+y8Oe>$VC3$Z&H@X*z05z~d}K;>g~f$MaA|B(?_#nx;S+h8=y zkC=n~O1nwe)+w;9lC#K|>UySP*#XFD+QCGJfrelk*-DXu?7oH}aB3voF@LwIPku7s zZPP7ckJYZH{j*K$4Oqn=I@Q91W|*#Z2oN@)A-16*j*G%SGQL*lYh!)=S2x7o1RhG@ z-r>J$C<)*tRwKtN^Ye5%E`#z#N{@pzRb{7?Bj3m`7BcU|`Py*O=r1J=`M(L(wm9bg^?LYz16_Po*Rt~7ZD;(zgWkuRqiG1 zN~(Gnq3R|mST`4ME%29W|4z+48$6Y9jt+u@{v0OTTi3!13~U~MS^XX4JnW)(n_i;J zxV$F`>pfmU4?EvFJXPnOPFkxFpz@TBIn?D zXy_^V$I%~Q7V)U|kU+Gz*n*uT_7ywtFZpKDVtR&msmJ|^{CTi?D~PjL_cD^D3WvCDu|d`JAhrSN7l8urPu}13)(ocwS7IxJ`ry1vATGQz?UfcWxcJeKJkinD^(lc>9Jug z;kC$cuRyfNlj7Yq-gn-Cy}RM?!LD4m?yHa2wZkI-Z)i6sJ#43v{~NYrwo_F1)%2*- z+B$0WroZI;CN2F|-PaP{_F~?q7~XQ@>9#HipYG5#Oka-5Y0UhFy}4L{Lk`>)5O?OkmWEt?d-hh$>XJ1r&YOueD?9zc0Ti?gDxUqrdT9zSQ?m;M#Aa;vnC5+BA{M;(P6tfZ~Sm# zg;#A0vF;C1u^+;g3VDBk2iO_m{;MMAkM*4D_4qd<0WYS4oX(jn&v%TGJBUp?V;jbn z3(u_iJz10RXEv;+7yX8#NPi_kx4&!HT_-a}(7kt~YP)0iWh2_OGqaoRJ{o&O#_}UI zTiY%C+7bP=$b6Kp$r4Sc>H;mX*U>U-)>!`Q@T)uuduTi-6(FYQ7Aqo-io>rn{rwfA z+8*6B-L3fcE%)qCkPn?Umdd%^>T zxbWAo~k*3>&s0((`*gx0wR5g2yOw}3IyONx!3;KvVkvJUzW7ShwK~p8ast=%h z@c*w=>yve5pK6UQ^eJ9zw{&I{?-4fVZu>ZI_=_eAZtyIkoS~b$h%SYpH1u{(zwOk} z7(Zh<&GnB0gdMbJ!(?uzLv<@?3Oy@EFMMVkwxg@X{wA&(TRTyk>xV+MYsKmuljw7b z3CX#!{i?8mHstiI*k)m5duX`8O`l=S3;iW(-=tl_aLiMSHI93}nS?EM<_I7oxHHBdsRr5{f4~}Om&y8> zTyqL&uL;^~K)XT)&;_*DfW||Ng7%g}(_sRAt?#c7XZW5c9G2cvqtsk!NRo+lgK5}f zPmH8lS-wE24M8d8o>8XtEJIh}TVG4pelV9Rt#uHBe)zUsz7F)W1XTVdpIM z7sfK1*0TD}*w$20clmSJcgEY4eE)=)yA=bwyTLTp(~4OX>kJ84+yfR^PV>E~tfqfk zKdW$`9>umTxq;qIov)EgBD%Hp}cyu(v0CkvGnswgccA5yedlSDrxRg@Ecck9i? z^!^yOPv&;7={3&FH%tKDb3@QtwOmWGz7 z1~0xr^n5nP2G_Gbr+23T|19ymuL9WaHu5rf_FlHQ)Z_(-ig_+4lrYg{Vca4)?1sCd zgPV~TORSgT&{Alo=EjnDzbS;zs|Y6evPI_OxZkw%YAbKHO0e>-)ap5g0UTtZlaG|8 zIbC9uOwaMY4sX06Q*=^p$#G%e|9|aW+ix6K9X`9``#SYHR})ftwz)LaNpaG&2};vs z<21x3anm+}0EIH%9mf;T&aCI+*tAvL3!)T>f?A>W5ngyg;vYbb#2ZgMMCG*-<)P)4 zO68$|RKD+b&d%(HAP{dLuafb(Uw)S}=km?(oR_YgCnW*Pcn_4s#h>^ml>8kp>Xyy{ zsstd?DR=?-1e`_a^1h|Z`$88)nXf73%g7G||3H%do|k7M>j#L(%_`*@FI$o^ilqU@ z@+en8e<17}Y6WyL7C^u~DI9S8k<>X)>insUWEheD3=pxtXKNqwK5cuAHh>?f z2av!=36VOFcXJt+mUJpRiu*qF35wK5MhNk-1CD>I5BK8;8&&+Jj6wXmegfCGlqh&bo5Ood&R-+DcEf32#EyX<5J=9 z%e;-7A~a|c!J0F)`W;8V+|jeRksB*;-p~z-e-AH**$VIJR{8)g>ShNJh{Hbz9|wRlugNvt zWX2D8TQ|A!Ltf5}E4r6!uRHp6cJBKQi2IsTyUOrKquaC>NpU` z(1UAJ9YAA##QVE(WA_rS>qZM6#D&<@AG>${CNpU>V7=)e*RQa5ju*`{8pHBiyviFr zz^edO0cUXP0jSB$SY>m$e7(ejHVE1;YS_#ht88Ns4^dc0sd~I7CrlrWI~5$s^)q6W zX>o3K`p7Fh=*L+bk;FXu`h-W49Snzt0a+fn*8!qlud4sxv$u^T8x+`}zy<|2D6m0+ z4GR2UQJ};x+O@KKg*<-3v;vc%PROn4pAd#36OL_KHn_OCaf+y=Z2%Mu)Q0-Cs$o9F ziFnCa00dNN)UgOUem7LM?&?o#gr#ye0<=v1MQq3dF(F3JFl!;62*2;FUw?^*MW+p5 zV*S?1mwATuHgQ4*lRQ>=udj5RxSA7~T4BOGfi6t<Tbn^>yrM!AJsnfn7JOPanX9 zi3hQa$LzIw0(kDDg4qGKk&|e^3;72)KbB?)fNf;#v9Pb}Z(}8B>|U7ihEU#6r#z=0 zAHT3yH?8FY2LNy28IZp^WARj_`oIbiIrSUBu5&Ymt-@@LlkQC@Y?LeJQvKwzAj8&? zh;}fTNKEjsDu9|e@kXgX$1HZ7j#JCT3Dwtcpm|&LxZV=On$vOV_2>$jR(}^I(YOpt z+HR`bf$FxK>d+<_CSt8Lu*O<}l$5l)kQP(-yK#QLD{mUj4l$8fa6y3@A8lwh&B>d# zj@_#oZMm%9P&2iA^}W)V%`5zNqkao{_v*b;!9LTN`_PzurUJB>21w8tTHazk_iF=7 zoHUI&fZc(~yx}ylg0wJ6BWYn9OUgZjv^bAGj8(v)yx}yl&H{lamP8NX{O}<*ypIhh z`)IhQU|(4f7MO95l^hCLxq44cX&8~b-T$h!p@eUYj1{x`yO{Nh`6O<5V+tU!w77M_) zF)fx6JH*ZpgB`4^24r33SPY&R_n}!K^YuK+7=k>bW>{A=`vb$kcA-7ANra^sMHGo3 zp{R4%fB*@78|m1ig4k^p+!)mbP)5C}3NW(1Ypk-x(5ep{EmikYy~ipiElO-RZ>-oe zvU|iBBB>JbHNYfdJ+%Jooh%J&9ONxm4?_P2um}Qr?f|Gx3ZnUN3}xc3rZGHNy)a@( zJQFLi3<+FEK^@c_T90O+FfO+ zl>X7e4@=On++Fy$(!aIvPtZS6_;=C2tMF_3#-yZt+6!H7%-(UC-(0`!tPtiYB z_>a(kr0^f3|5)LFg#JegKMc=6WlDAaHA{FyZryk8U(iRALw7oREwGTgWRwcb=*`u| z8B|fan)}OaMY-@h^gD$g#j{a)Efw3Sfu2U?#ew4;#v2`hWPDiWNw3lv9r5N8^`=z( zk}_vXgG6Bmxx1Hz7};Wa1P5{oQGgtS;qshF;~cKpBTn*dhsct3L5i#k@?%|)9P5J2 zSQn(lx*#Xk1qrb($cA-6Dy$3gU|o;|>w*ke7r1X-;JbAR$EAOF;!icWbgWVZhpFS>+12q9#`vua0Bjb4gVx9?4A7#0D#l=Om8#g+ zhbh`0Z!amB7pT0oeO!&G@$qqmUq2s84f9dqgTHY#HiCF(WKfm13|A07Jb*_<4KR<* zDJkuvE9VGvqI^|W!wlx9AVtaDnZ!NX6(VkV44Ys)jiW13?z}5^DYXgiK0eg23C6QK zzAGu5)h_QC-SQYV!Fb}|W`u6u%;%kdJ@G=kJEzM-a|$5@#IX;dkdUW4KF=hMZVHH7 z9z7JAI&}EKBM&`%^w{U?r>D<6cJ@;3-cN0U9f0vK?i#K3Rqo#Wnfn&QsJ%R|`v=Ch zY~8kVX#3#)Jv%0bNACLcJ$rY*^y2gT?w@?*#G@ytzc72@@>jn4wWq)Sjc2~;Hk#hT z760l|5GU!{x1N12Z`Vu^cvsv&&#$GPPQ2yJ3mcv~6SZ7F)LtA%v3k-=vLMxAlBn9pjpDUDrX5EOFG zyRjdv=`3_tTtARb&x9*(;3JdgEve}^N|J+3kJahG50{YNZ61t5WRf15qScvBFNGQ? z88n-Y!Vq02iAd8FEC8LnxQleD-$L`EEbUFakR_nxxhP4spXg?EEzCVx7<+DGQCeDW zHc@b*!AN9Kr{ieJ3w7HE#b!SDxMgmKAGQymt822U(?Qf&0z0K|F(dtq2rM zoJk-Nh4+%Tni@g~(H~p&8suHeO>OlZYJ#g-3v#9E)&Xjwd&2Q3yrQ03Yt2W2-w-0} zAd1=|AEDc_V!=e0ARjF^T+>k-9VPvx^Ogtbsj#H!C5_l`L*~%doUNzb=IzmxtHz=q zG<8QLnW#e^5zkyAi@GTV3A2)X-8JO$*Mx`&ZLdWc3Xd9%ELKmYE)>w{SR-12@=(Jr z#vp%`B^o^Ts4P92)o`J!0fNqEp%EnJ_gn42BP|WLS`YyjDg#A8&&flhG&4}t)L-yX zYzzfiLFzMx*DS=UjHLy`ZI3b3G|Z4yP=T!~ z0;kDCKX;UPl>T2mkkT!qHd6-IjiYyGljuzjv|z|K;DgZU0^CpM?UaSsdy;Q+iVG zIec6{ucjsspV-?RQ3ofr)>D_KR@MG63xdz8gHx9$r!FJt;MD5m)T%}d7^!CF&Z^K2 K)m(i}J@5|!HSyg5 literal 0 HcmV?d00001 diff --git a/emtests/test_em_js.cpp b/emtests/test_em_js.cpp new file mode 100644 index 000000000..8bbe9e38b --- /dev/null +++ b/emtests/test_em_js.cpp @@ -0,0 +1,95 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +EM_JS(void, noarg, (void), { out("no args works"); }); +EM_JS(int, noarg_int, (void), { + out("no args returning int"); + return 12; +}); +EM_JS(double, noarg_double, (void), { + out("no args returning double"); + return 12.25; +}); +EM_JS(void, intarg, (int x), { out(" takes ints: " + x);}); +EM_JS(void, doublearg, (double d), { out(" takes doubles: " + d);}); +EM_JS(double, stringarg, (char* str), { + out(" takes strings: " + Pointer_stringify(str)); + return 7.75; +}); +EM_JS(int, multi_intarg, (int x, int y), { + out(" takes multiple ints: " + x + ", " + y); + return 6; +}); +EM_JS(double, multi_mixedarg, (int x, const char* str, double d), { + out(" mixed arg types: " + x + ", " + Pointer_stringify(str) + ", " + d); + return 8.125; +}); +EM_JS(int, unused_args, (int unused), { + out(" ignores unused args"); + return 5.5; +}); +EM_JS(double, skip_args, (int x, int y), { + out(" skips unused args: " + y); + return 6; +}); +EM_JS(double, add_outer, (double x, double y, double z), { + out(" " + x + " + " + z); + return x + z; +}); +EM_JS(int, user_separator, (void), { + out(" can use <::> separator in user code"); + return 15; +}); +EM_JS(int, user_comma, (void), { + var x, y; + x = {}; + y = 3; + x[y] = [1, 2, 3]; + out(" can have commas in user code: " + x[y]); + return x[y][1]; +}); + +EM_JS(const char*, return_utf8_str, (void), { + var jsString = 'こんにちは'; + var lengthBytes = lengthBytesUTF8(jsString); + var stringOnWasmHeap = _malloc(lengthBytes); + stringToUTF8(jsString, stringOnWasmHeap, lengthBytes+1); + return stringOnWasmHeap; +}); + +EM_JS(const char*, return_str, (void), { + var jsString = 'hello from js'; + var lengthBytes = jsString.length+1; + var stringOnWasmHeap = _malloc(lengthBytes); + stringToUTF8(jsString, stringOnWasmHeap, lengthBytes+1); + return stringOnWasmHeap; +}); + +int main() { + printf("BEGIN\n"); + noarg(); + printf(" noarg_int returned: %d\n", noarg_int()); + printf(" noarg_double returned: %f\n", noarg_double()); + + intarg(5); + doublearg(5.0675); + printf(" stringarg returned: %f\n", stringarg("string arg")); + printf(" multi_intarg returned: %d\n", multi_intarg(5, 7)); + printf(" multi_mixedarg returned: %f\n", multi_mixedarg(3, "hello", 4.75)); + printf(" unused_args returned: %d\n", unused_args(0)); + printf(" skip_args returned: %f\n", skip_args(5, 7)); + printf(" add_outer returned: %f\n", add_outer(5.5, 7.0, 14.375)); + printf(" user_separator returned: %d\n", user_separator()); + printf(" user_comma returned: %d\n", user_comma()); + + printf(" return_str returned: %s\n", return_str()); + printf(" return_utf8_str returned: %s\n", return_utf8_str()); + + printf("END\n"); + return 0; +} diff --git a/emtests/test_em_js.out b/emtests/test_em_js.out new file mode 100644 index 000000000..9333a0dad --- /dev/null +++ b/emtests/test_em_js.out @@ -0,0 +1,27 @@ +BEGIN +no args works +no args returning int + noarg_int returned: 12 +no args returning double + noarg_double returned: 12.250000 + takes ints: 5 + takes doubles: 5.0675 + takes strings: string arg + stringarg returned: 7.750000 + takes multiple ints: 5, 7 + multi_intarg returned: 6 + mixed arg types: 3, hello, 4.75 + multi_mixedarg returned: 8.125000 + ignores unused args + unused_args returned: 5 + skips unused args: 7 + skip_args returned: 6.000000 + 5.5 + 14.375 + add_outer returned: 19.875000 + can use <::> separator in user code + user_separator returned: 15 + can have commas in user code: 1,2,3 + user_comma returned: 2 + return_str returned: hello from js + return_utf8_str returned: こんにちは +END diff --git a/emtests/test_em_js.wasm b/emtests/test_em_js.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c60ec74c1d6204384336009a238bf60da707eaf4 GIT binary patch literal 48335 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

=OLvGTj-aCXtocH_o#igr#hoL98- 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 literal 0 HcmV?d00001 diff --git a/emtests/test_embind_5.cpp b/emtests/test_embind_5.cpp new file mode 100644 index 000000000..17d981783 --- /dev/null +++ b/emtests/test_embind_5.cpp @@ -0,0 +1,56 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +using namespace emscripten; + + +class MyFoo { +public: + MyFoo() { + EM_ASM({out("constructing my foo");}); + } + virtual void doit() { + EM_ASM({out("doing it");}); + } +}; + +class MyBar : public MyFoo { +public: + MyBar() { + EM_ASM({out("constructing my bar");}); + } + void doit() override { + EM_ASM({out("doing something else");}); + } +}; + + +EMSCRIPTEN_BINDINGS(my_module) { + class_("MyFoo") + .constructor<>() + .function("doit", &MyFoo::doit) + ; + class_>("MyBar") + .constructor<>() + ; +} + + +int main(int argc, char **argv) { + EM_ASM( + try { + var foo = new Module.MyFoo(); + foo.doit(); + var bar = new Module.MyBar(); + bar.doit(); + } catch(e) { + out(e); + } + ); + return 0; +} diff --git a/emtests/test_embind_5.out b/emtests/test_embind_5.out new file mode 100644 index 000000000..3d9881af0 --- /dev/null +++ b/emtests/test_embind_5.out @@ -0,0 +1,5 @@ +constructing my foo +doing it +constructing my foo +constructing my bar +doing something else diff --git a/emtests/test_emmalloc.cpp b/emtests/test_emmalloc.cpp new file mode 100644 index 000000000..bf1bebd91 --- /dev/null +++ b/emtests/test_emmalloc.cpp @@ -0,0 +1,304 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include + +#include + +#ifndef RANDOM_ITERS +#define RANDOM_ITERS 12345 +#endif + +extern void emmalloc_blank_slate_from_orbit(); + +// Test emmalloc internals, but through the external interface. We expect +// very specific outputs here based on the internals, this test would not +// pass in another malloc. + +void* check_where_we_would_malloc(size_t size) { + void* temp = malloc(size); + free(temp); + return temp; +} + +void check_where_we_would_malloc(size_t size, void* expected) { + void* temp = malloc(size); + assert(temp == expected); + free(temp); +} + +void stage(const char* name) { + EM_ASM({ + out('\n>> ' + Pointer_stringify($0) + '\n'); + }, name); +} + +const size_t ALLOCATION_UNIT = 8; + +void basics() { + stage("basics"); + stage("allocate 0"); + void* ptr = malloc(0); + assert(ptr == 0); + stage("allocate 100"); + void* first = malloc(100); + stage("free 100"); + free(first); + stage("allocate another 100"); + void* second = malloc(100); + stage("allocate 10"); + assert(second == first); + void* third = malloc(10); + assert(size_t(third) == size_t(first) + ((100 + ALLOCATION_UNIT - 1)&(-ALLOCATION_UNIT)) + ALLOCATION_UNIT); // allocation units are multiples of ALLOCATION_UNIT + stage("allocate 10 more"); + void* four = malloc(10); + assert(size_t(four) == size_t(third) + (2*ALLOCATION_UNIT) + ALLOCATION_UNIT); // payload (10 = 2 allocation units) and metadata + stage("free the first"); + free(second); + stage("several temp alloc/frees"); + // we reuse the first area, despite stuff later. + for (int i = 0; i < 4; i++) { + check_where_we_would_malloc(100, first); + } + stage("free all"); + free(third); + free(four); + stage("allocate various sizes to see they all start at the start"); + for (int i = 1; i < 1500; i++) { + check_where_we_would_malloc(i, first); + } +} + +void blank_slate() { + stage("blank_slate"); + emmalloc_blank_slate_from_orbit(); + void* ptr = malloc(0); + free(ptr); + for (int i = 0; i < 3; i++) { + void* two = malloc(0); + assert(two == ptr); + free(two); + } + for (int i = 0; i < 3; i++) { + emmalloc_blank_slate_from_orbit(); + void* two = malloc(0); + assert(two == ptr); + free(two); + } +} + +void previous_sbrk() { + stage("previous_sbrk"); + emmalloc_blank_slate_from_orbit(); + void* old = sbrk(0); + assert((size_t)old % ALLOCATION_UNIT == 0); + sbrk(3); // unalign things + void* other = malloc(10); + free(other); + assert(other != old); + assert((char*)other == (char*)old + 2 * ALLOCATION_UNIT); +} + +void min_alloc() { + stage("min_alloc"); + emmalloc_blank_slate_from_orbit(); + void* start = check_where_we_would_malloc(1); + for (int i = 1; i < 100; i++) { + void* temp = malloc(i); + void* expected = (char*)start + ALLOCATION_UNIT + ALLOCATION_UNIT * ((i + ALLOCATION_UNIT - 1) / ALLOCATION_UNIT); + check_where_we_would_malloc(1, expected); + free(temp); + } +} + +void space_at_end() { + stage("space_at_end"); + emmalloc_blank_slate_from_orbit(); + void* start = check_where_we_would_malloc(1); + for (int i = 1; i < 50; i++) { + for (int j = 1; j < 50; j++) { + void* temp = malloc(i); + free(temp); + check_where_we_would_malloc(j, start); + } + } +} + +void calloc() { + stage("calloc"); + emmalloc_blank_slate_from_orbit(); + char* ptr = (char*)malloc(10); + ptr[0] = 77; + free(ptr); + char* cptr = (char*)calloc(10, 1); + assert(cptr == ptr); + assert(ptr[0] == 0); +} + +void realloc() { + stage("realloc0"); + emmalloc_blank_slate_from_orbit(); + for (int i = 0; i < 2; i++) { + char* ptr = (char*)malloc(10); + stage("realloc0.1"); + char* raptr = (char*)realloc(ptr, 1); + assert(raptr == ptr); + stage("realloc0.2"); + char* raptr2 = (char*)realloc(raptr, 100); + assert(raptr2 == ptr); + char* last = (char*)malloc(1); + assert(last >= ptr + 100); + // slightly more still fits + stage("realloc0.3"); + char* raptr3 = (char*)realloc(raptr2, 11); + assert(raptr3 == ptr); + // finally, realloc a size we must reallocate for + stage("realloc0.4"); + char* raptr4 = (char*)realloc(raptr3, 1000); + assert(raptr4); + assert(raptr4 != ptr); + // leaving those in place, do another iteration + } + stage("realloc1"); + emmalloc_blank_slate_from_orbit(); + { + // realloc of NULL is like malloc + void* ptr = check_where_we_would_malloc(10); + assert(realloc(NULL, 10) == ptr); + } + stage("realloc2"); + emmalloc_blank_slate_from_orbit(); + { + // realloc to 0 is like free + void* ptr = malloc(10); + assert(realloc(ptr, 0) == NULL); + assert(check_where_we_would_malloc(10) == ptr); + } + stage("realloc3"); + emmalloc_blank_slate_from_orbit(); + { + // realloc copies + char* ptr = (char*)malloc(10); + *ptr = 123; + for (int i = 5; i <= 16; i++) { + char* temp = (char*)realloc(ptr, i); + assert(*temp == 123); + assert(temp == ptr); + } + stage("realloc3.5"); + malloc(1); + malloc(100); + { + char* temp = (char*)realloc(ptr, 17); + assert(*temp == 123); + assert(temp != ptr); + ptr = temp; + } + } +} + +void check_aligned(size_t align, size_t ptr) { + if (align < 4 || ((align & (align - 1)) != 0)) { + assert(ptr == 0); + } else { + assert(ptr); + assert(ptr % align == 0); + } +} + +void aligned() { + stage("aligned"); + for (int i = 0; i < 35; i++) { + for (int j = 0; j < 35; j++) { + emmalloc_blank_slate_from_orbit(); + size_t first = (size_t)memalign(i, 100); + size_t second = (size_t)memalign(j, 100); + printf("%d %d => %d %d\n", i, j, first, second); + check_aligned(i, first); + check_aligned(j, second); + } + } +} + +void randoms() { + stage("randoms"); + emmalloc_blank_slate_from_orbit(); + void* start = check_where_we_would_malloc(10); + const int N = 1000; + const int BINS = 128; + void* bins[BINS]; + char values[BINS]; + for (int i = 0; i < BINS; i++) { + bins[i] = NULL; + } + srandom(1337101); + for (int i = 0; i < RANDOM_ITERS; i++) { + unsigned int r = random(); + int alloc = r & 1; + r >>= 1; + int calloc_ = r & 1; + r >>= 1; + int bin = r & 127; + r >>= 7; + unsigned int size = r & 65535; + r >>= 16; + int useShifts = r & 1; + r >>= 1; + unsigned int shifts = r & 15; + r >>= 4; + if (size == 0) size = 1; + if (useShifts) { + size >>= shifts; // spread out values logarithmically + } + if (alloc || !bins[bin]) { + if (bins[bin]) { + char value = values[bin]; + assert(*(char*)(bins[bin]) == value /* one */); + bins[bin] = realloc(bins[bin], size); + if (bins[bin]) { + assert(*(char*)(bins[bin]) == value /* two */); + } + } else { + if (calloc_) { + bins[bin] = malloc(size); + } else { + bins[bin] = calloc(size, 1); + } + values[bin] = random(); + if (bins[bin]) { + *(char*)(bins[bin]) = values[bin]; + assert(*(char*)(bins[bin]) == values[bin] /* three */); + } + } + } else { + free(bins[bin]); + bins[bin] = NULL; + } + } + for (int i = 0; i < BINS; i++) { + if (bins[i]) free(bins[i]); + } + // it's all freed, should be a blank slate + assert(check_where_we_would_malloc(10) == start); +} + +int main() { + stage("beginning"); + + basics(); + blank_slate(); + previous_sbrk(); + min_alloc(); + space_at_end(); + calloc(); + realloc(); + aligned(); + randoms(); + + stage("the_end"); +} + diff --git a/emtests/test_emmalloc.txt b/emtests/test_emmalloc.txt new file mode 100644 index 000000000..9d55f9d7d --- /dev/null +++ b/emtests/test_emmalloc.txt @@ -0,0 +1 @@ +>> the_end diff --git a/emtests/test_emptyclass.c b/emtests/test_emptyclass.c new file mode 100644 index 000000000..09327f9a8 --- /dev/null +++ b/emtests/test_emptyclass.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +struct Randomized { + Randomized(int x) { printf("*zzcheezzz*\n"); } +}; + +int main(int argc, const char *argv[]) { + new Randomized(55); + + return 0; +} diff --git a/emtests/test_emptyclass.out b/emtests/test_emptyclass.out new file mode 100644 index 000000000..1be15e152 --- /dev/null +++ b/emtests/test_emptyclass.out @@ -0,0 +1 @@ +*zzcheezzz* \ No newline at end of file diff --git a/emtests/test_emscripten_api.cpp b/emtests/test_emscripten_api.cpp new file mode 100644 index 000000000..766db92ea --- /dev/null +++ b/emtests/test_emscripten_api.cpp @@ -0,0 +1,43 @@ +// Copyright 2016 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include "emscripten.h" + +extern "C" { +void save_me_aimee() { printf("mann\n"); } +} + +int main() { + // EMSCRIPTEN_COMMENT("hello from the source"); + emscripten_run_script("out('hello world' + '!')"); + printf("*%d*\n", emscripten_run_script_int("5*20")); + printf("*%s*\n", emscripten_run_script_string("'five'+'six'")); + emscripten_run_script("Module['_save_me_aimee']()"); + // + double d = 0.1234567891231219886553; + int len = emscripten_print_double(d, NULL, -1); + char buffer[len+1]; + buffer[len] = CHAR_MAX; + emscripten_print_double(d, buffer, len+1); + assert(buffer[len] == 0); // null terminated + double e; + sscanf(buffer, "%lf", &e); + printf("%.30lf : %s : %.30lf (%d)\n", d, buffer, e, len); + + buffer[0] = 1; + buffer[1] = 2; + buffer[2] = 3; + int n = emscripten_print_double(d, buffer, 2); + assert(n == 1); + assert(buffer[0] == '0'); // touched + assert(buffer[1] == 0); // touched + assert(buffer[2] == 3); // untouched + puts("success\n"); + + return 0; +} diff --git a/emtests/test_emscripten_api.out b/emtests/test_emscripten_api.out new file mode 100644 index 000000000..c60188630 --- /dev/null +++ b/emtests/test_emscripten_api.out @@ -0,0 +1,6 @@ +hello world! +*100* +*fivesix* +mann +0.123456789123121982165720567082 : 0.12345678912312198 : 0.123456789123121982165720567082 (19) +success diff --git a/emtests/test_emscripten_api.wasm b/emtests/test_emscripten_api.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8903023cdd21cf7ab7bcaad547868c7ee3d5385e GIT binary patch literal 78389 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%0DmzqMIn+CKnLbe8+=}3U_vhE3qH=zNvjpC zUE%$+r{7 zk8$$XikfVd1F8fNX%4qQJ_VnWA_IsAjWP{%h4{j&O3TbVBYz(Yt{|5FA&VONd)^m# z==+vsmrsDP9Ht%6A1#LES_itA4G_4e90rcp#hoL?oj=7SV?_G1B8#eGZ|Ff~gMU+z z=z!5>kz*hcNZ?_DND=FT%R|eB&GLs9-JuexzXc)0*#Yx!?P-MGQW0+v?23NP87g>4 z_+KUNSof=>9wyI)n9VM1`C*T%2*)wtak?^h)RFTX1LML9N#p2FPT)}vOa9NiqCcse& zJhncGnRb-~|L5j_Z{rG<0kB`7IMqvz9 zghYJ^Sw+NM3k*x>R%_^I5;b%mKiO(9S@Lg?L(9Mbetds%;wLkOtE@0aF)Z(`7~${W zjD*x&PA~#O7_$RcfMhs+Ig>*}Q4zRvPNA7q0Uov}cJfhbnJX0!*Baw01=Ce)d@73- zOZ0je>^3ND?okC@&h6FgbHQMz04=Ve0HpPrB*h@k(9@#ei~A|=B7d)?yw8e) z{Rph6{*&p>uhT~^3|QACeD!^F=hWzQ1^v1{ao4K`Oa;U^smIa*)TI6ced*s9ZDXly zEH%Zy4M>WZrk`xacz>pTh;;!y~$0#vE&T_o?OIKwa2-r)sH)oKK^43Ww#xS304q9Lm( z#RR%UF@OX|>JIDj^Kh!5SXKd$m3E`i3bB~b zy0Jf1=+C{d{2zkfTxPmiZw#yq}#!+OPM07SgmQ%-H*(wwPTLb*#^0R z{C2J4EKw~+vsx7es7VWNa=n`^#QTaZE={_3!`EF&>2zp_OEKVErJDfJ0NK4A3 zb)&uV*gU(tx993Ts7E7a;2QaEq;EjXSV!PBz8x2c84oezLIF^$03;AY01_)_k_)iJ z$$^-?(GE;56Rr>|q$MPcrR5w}%Xd0yu}AOAE?|0@aIk)s2t2VRnt}arh6vA#a5bL- z_w+PhYzPZLcJGfn_5S;h$I&oJAwEXlY`^Kt;JGZ6k`&%7!L2+D#165dtq{??AI8Rl zy#Y;+K&Q{}#?WqD`95huuPw|^Fp3Tf=Y!`Zm$W1qY_Ao_4}6=_vW*yKaenkTVP92Y z`>G_v;8}1Vg%vU&xboud(XLAfPgoyw(t!y6fZE>jvbVl)%QwysOmk zRY>&k0ob(C@Eem(tJx8 zIB1Mrzv|U8lp5(s;?PpDsEB*+6Wu30_hhe@ESFNuh^p9ysB(6_8a|8zNXDD7tl2ro z3;>?dhA>IR4#`}|4T(Za-n*7PVw7dGi{K!qhyrpW`B)dX3vMZz_yFwnaD^FsE{xE&u@X>3V!?W+n3);eyjK`@>|Vs zKYsi3Tf=WHzXSLk$nPM22lG3G-=X{t<99f}BlsQ3?`r`M#R(tNFhA zY4XgGKDUhD-;!zV_*`!D#wa(Zt|r%g?RB}_D{mD9ZvQ{}ug3){`>d*1-LHR5?SO%U z1`ioJZ1{+gqjnp;`yS5kIVL3dpWgo;mHz*KVlk=Le*@syfC02*E(iPdA6(C|uFw7( zkgKWUeNxpY7Y(W`^1QNwe~P&ZeUp7zO02)VzO2%hYLPfssmF46>UrP$BfF-F%m3N6 z{Zknp^KZB)C+T&8P?Y~eNOF1oldBAm`M3A`azeX6jLZKaR=J%0QyCufFF#0lZs0)u z`@#S1^4^&D!Rg9R%N*i~#5Me595VLweqa8`E_!pouI-;)I5chgzWePzW9F;_4ovIj z&O3bm@qW({{fKojVBv1nwfW-cfxC}Cdu7|I)k|EVq6P^b*>`B4340A2URl+D)E;BU ztiR}jag!z=a_C{R=N{2;)XArO=))g5^|aH^Xk5Ci>CCg1H@CF5cXXcnvGdL^(^cQv z+H_W9t6OqzXOrt_THV#Oa%od;UfYVsspj^Od6MoaG&z9k~-5Tf3TEXIqcB&g^tX!oJE_Qv+*t>?O~m5pl}m$zD_>sPL6Y+cSr zO-(Jix$SKo9s4Y6QgNB~=%T#M4fi z06sOf_hMb=@)eNR*44Rd;xoHC;N*g~j!w6{!!2w3=*sd<*UI*$#-(Q)rRlO|WZdCs zNIuBbwYRl2t#qrF!?F6Q$7GFLYLBcA@U<~~maA)RTiQZ%THV@_4C>I+e&Km00zHjb z-+@H*+#cU_PG?|*G5zp!nwF~VRy1~I#h18At9GqGu5xL10XM0hwRqdgvvP~iU9qIC zb@@_bvTJQ?TV?XGvT;Qw7D{wH^0A_E<+-kH6%`f#t@2qLP*ZD?WlbGR+n29G=AgCQ ztaXjc-v3&1we;-et;<|VB$cSd9uv>9MD~;|Dd^CrVqfnP%JR1i5i#C=w5^NG+mf-?y{Dywi$+my@vXggwJ)wdBO%dPy{Dqfa|T^@II ztzt9~OBWjnArpPj^XBMX?#iE^*|$6c+SA}!jTvf|h9Rqm3!o~is(}t;@S)s8N@mhAS8hKTF+gTc@dJTNNpVBj!2(0U#-MDfYz2Z3J zmCn*Lh%M@BV=ibqXK7Q@GKixpjGN25R?x~_E0^U?vS!a7m1Yc^+bBK^M~uQ@N<5wg zM7EH!2dr^F@IThQIhLrozFI!8_$~eSzVuaE0G8hU@BCHy|2O|PfsMoem;X**by;p_ z<M~|PFn>2RWq^jJEN&8OYvV+U|R@=$NX1 zPj6ZgW`m}cr#G%zK4s~uRXHtva${T1%#EG0-?Y{<-9c__hyDq7Zo=4Q6RUD7mDluA z=F=?e@zcha9!$^5$_n4tZuiTv^wHX;Du>)HU%8xB0Nay%pQNIY+h?+KZraJy&dE(! s+11)QF}KgOlP6C*nMeCfJ7@B=a~yB@Dp!B>{M^dMmARwSqjOXK7uaM-vH$=8 literal 0 HcmV?d00001 diff --git a/emtests/test_emulate_function_pointer_casts.cpp b/emtests/test_emulate_function_pointer_casts.cpp new file mode 100644 index 000000000..d4dbadc07 --- /dev/null +++ b/emtests/test_emulate_function_pointer_casts.cpp @@ -0,0 +1,24 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +// We have to use a proxy function 'acos_test' here because the updated libc++ library provides a set of overloads to acos, +// this has the result that we can't take the function pointer to acos anymore due to failed overload resolution. +// This proxy function has no overloads so it's allowed to take the function pointer directly. +double acos_test(double x) { + return acos(x); +} + +typedef double (*ddd)(double x, double unused); +typedef int (*iii)(int x, int unused); + +int main() { + volatile ddd d = (ddd)acos_test; + volatile iii i = (iii)acos_test; + printf("|%.3f,%d|\n", d(0.3, 0.6), i(0, 0)); + return 0; +} diff --git a/emtests/test_emulate_function_pointer_casts.wasm b/emtests/test_emulate_function_pointer_casts.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b6accecebdc584ec4066956a3cdfe39cd406238c GIT binary patch literal 46854 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 literal 0 HcmV?d00001 diff --git a/emtests/test_erf.c b/emtests/test_erf.c new file mode 100644 index 000000000..51b2a04c3 --- /dev/null +++ b/emtests/test_erf.c @@ -0,0 +1,14 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { + printf("%1.6f, %1.6f, %1.6f, %1.6f, %1.6f, %1.6f\n", erf(1.0), erf(3.0), + erf(-1.0), erfc(1.0), erfc(3.0), erfc(-1.5)); + return 0; +} diff --git a/emtests/test_erf.out b/emtests/test_erf.out new file mode 100644 index 000000000..3b48202f9 --- /dev/null +++ b/emtests/test_erf.out @@ -0,0 +1 @@ +0.842701, 0.999978, -0.842701, 0.157299, 0.000022, 1.966105 \ No newline at end of file diff --git a/emtests/test_erf.wasm b/emtests/test_erf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3cb58bd733a6f2b0f760ff9be1fafce77bc0fac7 GIT binary patch literal 48742 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

X0X&KV3)k?oA*m|z-5zk3KUt{4GCMZKz zN?owErT$@2+&n;26IE{`seZJ{!=Zr|rWXVb519>JQAS4Fp+)JBT%~pUwV}LF5bD=q zRT^A|N~PK!{i+(?HwK-Jy;_^tCaM-HB(K(H1XJx_5dRC0XAeQ~TiTW$FBKBi-kNG} z)y5=pGuvhalgO=Y+ji-7Xr6*?C3VqOwwdOl1>0UT(;ZZ6O$NJa&6EiQxAXZJnjq#a zqL-f}`q#hQb8Kirx6w=sK zeJ73viKWHBV)>YP8Z=zy4Nn(SAZk1(>zZjT9M)}KU!2QDD9wXlU6;3XF{RGO>oql+ zF}tueL&-<8V)jsBr4hVGHesY>GSn$H2MIjX1XLG&Kv5GT#t_lC7hlZUVP<{xv0m0^ zRBg~GHV=V+`)Qzqe|?gt=@%zxS|rCb(ihcNirF?@oUAdNXgV&j<$O@oEW6AqS_-gg z^I#Z*@uA?@)@Fl<|*k3@`=lyR(TAp8mpRyTEX(7$b zSUI2%^1ssU{bP{hT>7S1}mhh z1Q<-yBS`pXla3s&Im=3=HW%j7ER=@6CE<6<;lm+Rzgnq^?N8{B7z=1tGU>>XnvYOW zs*ftorISqJpPy1C_ajr$FO)9m3N9$n?EXyeciZ2vX58Gm@+HMI9+t*f| ztAV$vdR!W9BTm_lLNzl(PD+ohT}H;2tgsuR2s-bky-fQ>d)Ou(YTHnqJoT2OE?FG9 zd9N!;$RMC{A!A$SztShO%A~oq&Z=aku&st+^eI{ab(0QY73(d`R48*amDW$JwwwBz z^+RE9TLYjsMXjO>rFuiKRj5|~(35GM00T}syHCAC?J`Hny08s;azl;&yJ6n#md%A9TDq$!m# z^z}-Xj0$T)BsQ6eZ?L*SL4$gP<|Av2Rp-u@|MbJ(T7%*1Brl4cK+ksXSo-zaX6;%u zs=px-B?`L3ehr~nv}@38VqK=fNBM?^iev^znsq5~Q0SiGN$^y&>PqC%AcU!b!kjc! zAIwz(!{LfbRVgRo9190t;OoZFzgo~3>;S2Iw{yd#7*7T+~w=v<+Ga4rQt?QK%{R#(nWaJvw_VUi;NoEbAn6= zv~ez+srg{qPhAq>tR9IRK^$uax2}egb&*j@fr!ayx^CptvV~zwgwyIWA9zz1Oovr(lJb_6fH@*By%qtBw6QjoGxAeLdMg7@~^Lf=_xjV61eb z$eMs=dsisXhxNnaOFtX1{HKVOsLj|Tm4FjYeFDOnnSj$75OYPSU4@|rSho&31yeJ@ zSyu_@8~OOipt~Wf0o#PtG>hd|ha_Lc6M7sSN$!6a!%F|lP0`=Q8m76b3l9Si`_SLT zy6%ckTH$8*paHnsuk-SSenHY`XWfTIdbYc`OA-GdZQtDNTe^qB1I_#oMZ+52W14Bl z-l3QKdx>lQ9uL))M}8vKdbNcq7*(+YF;Y7MCq>1fC_db-g2fi~WQ1Ku8-z{Pt9I|D zzN^f)dWCi9owJ;aFV{VhVlh`>*O(0YxZ;??UMYlc-6G@~PDLp##t=fO{vUeadZxA> z>qYVZ$G<|%Dl=;k++t%=K>ks&m!hyrW75bTccIEenT>Zk>ErA*aMiL?@NvhIZA_u@ zxX_RkAm_Jn){u((bZOzLfz43V>0G6ob5E6?d7>`Kwe(WE?__Q zjr?A|25_rmE~a~~R5{GKXx{mb+I&atQeAFWL+vu%XP1H6<$l#2 zs4Wm`mjh~{Znw)(yF&Nb3AHPA4<0v$cZ8>O`xOM77b6!h6>jr|n-p3EtqugCN7z^S zhJ!}2occq!%1amJk@-uN&OEi?jj^uG>uTnkVqNz>RH-0^-=e2fx5nI{S1af?U7M$NUJ|n+T>?1P z*h^#Gf9F>}-{Np@kGTi0mg5fHgr^*L#>S;Z*guftu9yq&)=vt$TkF_lUbx3mOE`X_ z`_#j#u+OGkfET`|`BVishYr1ZSBGXeZ3*}3T0A-`ELM_rn!1ozl&iBIi^Ki2fo3$X z>VCQKieER!9vipP-LGrexZJ3g;0;|B7hcyra~TO;F422P z_vUFNeOMlW<}N(lhNt1<;TRhp@!DjTR5`sLiMdBllzddiJyc5T@kdoDrLeC(AECq1 zuB?`IE-iF~T^SiyZ9^ln3**$TsjXJkEpYm1Np00?_%OB)V`e8G#7s{%WfJ{0cl)V* zn>UquLa=$Bg)zn$N`Ns& zEdgwZ9fqVLnCnV_yv)P+5k+>g!Tro)CJ zho#JWV@F8SV^E`YLQkk` z!gE2mpY5lF`@??wJNIELA>Q-5=jLG}vA5cCv}!h5HTyGF8BJAmy5kqZ7L$qpjm;j{ zegEO0oXeiq#eVrMfMTL&V>^gj53#7oqy5^$@Df8&tmqeY6QFqPh1mYeHG%Cixsbhu z=+S1aLg+~`*OSg94C>BXQ@WZ|7nTG45Fvetke(8Q^&#Px61e?sWcVd}qFS>3GPL_# zppBlil6{69CA?7!dTURXrH0!3M_p{n zErZPIJ+F9mXEiLVP00@;k3u=VS&gTM+R!jH%C_zjKU;N)A4!@c>XGX7J?nFht-I2Y z6$-fVhbVKb+j!)}pTyKON&yX~d>8 zR!oazjyWhpRS{`Pl#OFKfWt3vE5N>E5T> zr@5&|pB4Wa<&Ep#J^NHjtMu;GCnca;p&0e))6l2fr%%#HQ!flxsK7V>OX1uYS#R{V z9+d)b>lDjrsjN&FyBu*d6A$` z%`70+SgNOjN+<(P=RS2W&5d0!W!XN;iyP3Gu1HB0&a5ZI1_pO##14?-wN_*CU+|i# zOY2wQwPs^|{t8~)W0{vW%S~i{?!s%0d|Jz7L|CpafQ@}?VEbp4QMqvqt=XURUsYMy za8W5ba*S%eEd;~ZhQ&H}(QlsJ>9g@Z${UH64aD{*^4+*AvUeB0>It2R;dXESg^X$h zwY_dt(-P+Erg+)V?1KqSn@ni>V?;9&iy7I{AQ>=^AzCQKKUnc_MT7PPWK6#yAN)HHbO8pEK6!)f5?!=YLtri-a|An02$JDuo;rGk~ z>KHctOR8fMZWo>BedEr^4zxSPPIh3x6d(*y^{}HuCp9BN|GrPyzOhH1o8{YGGI`g? z;08U-TZVgNcoWvl9(F=>?vW!M zWLTy?;VUbao|2-p!Oa?jkj`6Xk9&ErnJ>et`ZsSyg}P@iDy{a^ zYT2rd4ayh&%YU&t{stg0Eit`zgTACcAgrNzoA9A7OQ&bBRah&KHPZ@W0eNeZ=EOol z4Jf9FcNV$?aL!%JV>4+0&g1&?*mlS0ta)=;q%Dt!6@DA$L}(-7{<;71?gLh8T=}4k zJYaJX>ejWe^zwHY-bNCOm+WE)`jPGs=DUEIOErAVY6b4+MqU(gAH}f$x^VyIF#qzn zi}|^hA%=asaGb1OxCI7an17MC8(FL5>|gIUlUMW`&-(C+tY}NDfAfanL77jfy&sZC zj|!}*cLex-gzoz&pV}40FzO*OK5E@ZL4C9Q>oLZZ2l+%77&7v$MBUBmteA!Ez39hR z6rIa645cuTLVX!}_zc631wH-m?+x_eG!ldQ-K@=`=B+uCVI0d~n)+O1TWUw}c?EC^ zV^nw{;@}Do4RnNe@)we_r=8u%UD15#MNiqo9~9VjbBrZ-_X$?Te~&9=?5Vixu;CWLH<3t8*#lI(F-8e8&UHn zIyJ#A>brILFD36e@SC0{o!`&qjezzk2|m~R3MBZH1nX79CSKwueA+gYh?dcY&?MVn zBwHM-<0&Xs&7;2%M*0FEr?d*5dVRcka^e4Fj=v}WQpq>bd=VvOv#rBk#V^7dD|A+` zsQSQztG?247e25UC1Z7m|OcqhpCtXy~M4fIC zUXx%I@9tWQvpc>#lD*N-dVB)F%cHPG4!Fj#DK*FFw~B5Q1#79Px?#Q(TsGI* zY8w`ry~5@R7$A;re4W**P1P%-XcejSSLsTwY}S+ zTq!^=m4?NWU<{|U;VP}NKsM+FX6wxH8XNQZLA{C?5-_FmLRs=_^{<-jW8G{Y_CN9n zmiW91_9sQ?)jhAIINlDKtEcjGXw=zP%539 zW>==TH1`avDjmgw4yda1BiPX7SvAWeP%8KfYD93lL!}>SX8GP`U{g~RSjW~Dj9n;w z7nQz_&$F4=+P;wY56mU&J9%vi#@c}XZLTxUT^N7=f@J}6UK!JQH+91#TCLe5Ws!c0e@)U|+g6fm}8 z_V0Y>3IpxoO!1N?M+`lakw6#+iKEaC92e#1M1)ALRe&N>BioQ;CGAWcH`4B?=G3zy z+gN#8z@lBI<>!AnOku?go)IEt1>&(Lv_+W8Vn zKgpj2qx2Ia+mxr@+O@}zhVd6F{hSEp8Kv(=>AU5npW~$$^Z7j5mnyP+MilqJpaQwr zYz0lpb88AL`%;UL!iZ)cf_lz#F^jUKA$yFy>Q>2nNpAYNlNfPtXxe4XA@u_WQ_{a6 zek|RtP_UlEiqo{=sUna^2x@M8lAy+bimk7n`R=jy`i_Vja)g*6Dm5Ie;U~9&z|yg1 zbJ&T~7Q=AoVI8?bWKhHW1_5Pu~bLRmU+{3s3yp0c+{ zk~JKf!TcKi7*E+JwT3nyg(-hUtCWR@TM7#gGL2y9mCaNS<{8kx8z6gN^`r?0_8U#r z^=dZU&A$v0W8f{YU(M1eF#t60q!wwaJ`+W~GzsX-W^8A?(!PFYtbP5yl*0A7y8Ri! ztl?RfsL4q2fQ$}vG7!?{c09Ra4(n-Pjc^{EV7*g5WH#AkEX|rntVZl|mL2&x?^!u+ zShEc)Fm0gZO^h3;j@Ee!apfqrJymUlc6CZuojoB4)K?S0WfYKV)35J943~%0ZQ=?- z8o}YS7go{*h*4i%}Kb^LuV7ZpWeUl1wXH9wldO0&D-X$#Y!`SI+t2Rv+@h=iQ#R5V~c^? z_Ssm?PLqugPYt|JmxbhLQ(Q_3eTG_$8@VIM-}WWoGHH=mGoOw=W+oaKuHVzNyOd^U z^2J*S#q3|yF-s#`iYRK=>j)7A@MpPixq;i>-a$54duV>sq{6)x>+&4Xp{cB=zJkHWbvZS<*z=jLW(Lm@biP)Y1?;2xz#s+dl_mU&J6RoEwoi`+Jj4XG#mH81uXXy})vxsjDT zmg2ss&R(MpSdx9NZ9XRlYSW)$H5EH?eKXEh^4!d^yue{x-gatI)r%Q@GUVzk&B?1M zC6f$8o;Dtg;k6j$J68|M@Dz-mCys~mIx&!^7kOSGtzpTWinkYLC$**X+L8z7C%nf{ zi{F%5oyZOU4sA}t`!V^B_lZU2iNyT{3D3#Yl*k)#H=!Pr@e*g{uN?4B z@dbM30Ej0S=Y$zW9ypk#M+{C8PO^NMuE;rh&j6>?r|B63k7U|gtx@vA{6(7K;Ue(j zU75CUaiXVbCh!yu*GE8^d3twdLC7DXXhVxLKjBpwYvUnKy`K$I`{^<5%k)BXwyA{Q zWr?mzo6p}W5Oj)(=VvZYGPZvf_%k(}m|f`4)My0bk(%D36>rbru1EwS<;C;b3pGl@ z6E(dvqzy0B;1+ul`s8pPs)4=GYhA0iq18&)d4KPxCoejSF1|a9m+^Rw#?tHI+Z*(B zjp&;{UL)W)`D@d9qUIKVwMJpQS;N*oHx%;A12#hG`s8{Zi?B{T4{?E>ggB$PQp29f zmHJ6oqE}^ju%@l{N_Er{ZcljH1{$4NPhBYNujg&R{EmccpZqnQ$ME?}G9(1ddb+zH zX7^Z6=42bI^t%XU4@i;Km0=wa?$-M^Y(ANcX{7N3;QFuF z#@2;afbr$ps=qt$spKpEesHrB{vb}^_=@8L8jLmZ&5Zk zOy)%d7ed-){BtWy1SC+qW`2{4VPX-{yAPK&dy4;-gdpg@!#-8pN6O$LQr1XTQ-8KMYP& z_4-PU9Scay`~sXK06JAbyI7(ps}JxPsdt;HS5Ne?M_{SCPxy!Tm49Sw4)>Gg6YL*p zwq})m&dp^dscFrC5n3{kX+YSRL*feqkLUEzVlm`5gS%BU3yX#M^E$j^GnJQhta)Mh zRIlLh8qHDpyE?-a)>WB_dK2{gFPS^KOj<`{`YMa}}qgZ~#+<&07 zn}_Y40^2J&i;StRXUdlyh?QyD!9<6FhG09{N|A!>zJ?)iY9!q;f48emep29V*Ck?) z*RH4ivrX#_SjFFi)xv{jn67mQ5H_YEwxc0Vh{8WozSiPvGkyJ67sQ?f9zozf;lHXV z3E(AGBPS~J^K?4y%<@G_w?i~lWv7&r@yIV0GVjFM+th#^$F(rW*(_xCU#KHg*-R>l zHtA_jMFlfltNAlD)Srq939D?D(%V|b-6z@@EDTyWdk zQ>QkV6(TzkxYTdoDT)yXkqWm*{et(qB#~ zBoPXiNA);ltV3rR-StklL!agEbx&Yr>Cj(HOz>V5yed}?P%c*G__cqyoAwSDMA|pR za|JZ^Ex#;2BHzMeaXC_ZcqE;Hu^mdw#X4FKjKx6Tt*WQFashI+KPr7DEqRUe&NYti zHPmZ(zJmvSUP@@!mpO&Z5qw%!SfFPnU}zWbtVO_PVQAI1v7saKT^KTMBfa_G(3iL6 zFHZ}5-7wa@I*4C8D7`m(hq|`wzKDs~{r(vB-x$jL^gR`O(6^7M*hAVO$}k>(*iY?0 z%q-#&?ID3^Pq76%N$e|j-dFI=q{rwP-lZP*m#8~20eM1Kaj|*m4fmu61NJGM$Y-Mn z!>foFsI$uOd=Ch)&v11Hv>M_9#*byKin;`nJr`jQRUWRrq32aT*Ke>j6ozmKJ3D~& z)+6isT;}Wo=>=^Z+4{a7WuFMQ{utfQMc_*m{j#2*R-br9yOpYq@ATNvmhf6+xK|+B z<4OKJ9nWCz#NOR7_+WSLrT5jx>)PQFfH$<8Q#@*yg8v)3bGl1Z^Hufs)%rS-_NG60 z{U$B_R?XKE-u7bNrWl^QPm{mhsT$7a5t}gS!4=M+3(0; z6>`ih1|Bv$s~CQ!%l6%nN!z>HBw8^keh)ES^vMDVdW$QN}B32ZRr`Hw!8xTAwFLJ?TfD^dpXN zoW?jdN}DeqD-HDA6k6`;&Ah3`kxx(;<%>;xyK>>Z-oz&5u8RCjSCZwipG9F*%B?}8 zbTOG^+vomjHl689uDRE1*%DIR4pu9%zGK2IW}Dimuxm=9unE3h>O3Q4*v1LFRJoSu zYxVNl&_u4d(%Hjv@m4Mh<`yAOR1{f}GBotju?ekvoY^J7XKlmJ6@Z`E_Cw z@TWGks)rAUp-6uvLASqq_>E3x45xeVLDhbP-Ion-)6UEu_M1`IBQlmx)@*H$@H$rAu^)^NBc3U2T$qMW4*&WJ9A!8G&^PQM-0&=@~sIn6DZ z0)!p3XTxM}mP2(bXbPPfqZd9q4m;4*Vt+bVjjf%iE%ig8+O=YJj!E?Fd_r<=Y`@KI zpba@aC$>4USn~omeTFsX>K-)7=?nAw)G&RvEx8?2rp%f;T`YSehRlm%im8TWiEYFi zn8RgX%&k0tf!*C;8tZAr+!gB#30T|>7FbU6{eRlK_TZ?l^L}^lN=RD4 zt`HIu2sl>{EF%Hp4FgD8=}I8+wz0tpuD$GDp+&1*X&(YPagYtRsof-wNmJ}J9)3{C;mzczH5^7UZ8{2><9XC$L^!GdW?%tI{C!PM+4hmVH^WF3O zUg!0l?<}L$^ls~}!awlsaIp%G`lYG!GY~xbr`t`7XKQ(ffVrGBx1_KY#l_^y{LIxP zKEKSZD2e#(q6Gf?<(uJhGPm8$M^B$uxmg5DXc#`j&>2ze_5TDm)T-7gao0&PJ3~wC zr?rn%fq$--eb|O)y`E)q22EZ%MPEFd+BKi{x)v%Ms#YfoJRzWo)&GYJ}tQ9?= z($-(Dc3+c~H^HKtJGA&zB&#nXKF>K}gDbQCjL&nU_;dJUT&aTtD}9+(6+(?n`B#%3qpcF9z>3eTd5^<=5vm`sSv4mkexuFS&`Hmdk{ zCzSXhu>-H%INjP?s@RTKcDrCo4-6jahOsFu;bC1m2%9t5{h%U~KYvSQgAw6lzBf*y z{7zoV`cH%Rh(tA zqbeSm!DdT_NhAQ5OC^Pm@X>Oz&=fNfoL)n!UsJ_vDxXG1ADZw!G6i6Y)*yS(K>n8| zhq3@^;D`JVs9FPtaMop+V$jOtVQk0ZGLnj=xGK8wa5+}se8?Oae*}X=x0}zIE20ta znX>}`;_y$!RVSCG$b;m@1C3b6-+{+%K!zmOKXAbI9Hf z8*Cp8Exw8h(21|AJ{*Wc_26|`6{ay?<1^=Y*t`#~nxh5F@NPKe$J#qT&P>8oSjSc5 z`VscdG0@y4pq3x!i|6P8h5|TG?82!BOij8x?&(hFAqNlIz-Xs5Z032~Wd!jMg>^W* zYc+Yo^qUgZjU%}{ekf*IoLjXmKg#nYoVC%Cm`7jNcqEyz;Slh%%L8{GjHpMv%KzZn z+l?eQFmM9{H!yGm12-^m0|WoBFyP>g_N-qR9zS7Pfyt0!?H*ofPty!VPB_Yh+~DHo zMk}qB%3x5CuNCA8MZC=sSg#j0gN$9qFgE9^a?(JYm-5m?K>sf+XjBYneR z)>s=r9k9+DwCqkt;1nc!o7jJ0a61+2g+8a;&9Y&3a6&Fk!Ah7b~--FiRL?xlIUE9C6$}i%|vzOW_4&2{5P>y`k`a3u#}W(tB@8`_c=H}ugW%! z-kF$4dT>F30+%)fo2F))HiF$NjlNt)CX_A>R*$kV(}#F>!*>OF>qMQbV7}Ryo6wl~ zW(8<59gv_gbWp~676{WUvB7LiBX$QGvJIz;6{Lkr8krU@#ALZkkQV3BOR)-Al5IFW z(X&9<6U#&^aDKRg4R^8OBp)63*yM9c3k%G+Jr0#j=Jd|h6ainGpN>ClxthWqBh%TN z?>uJx(#sS#ylK)!%;SJqfUQ6)u&7I$iG>B$1|U5>$eqI%Y37BHHpQ36&(h70xoV&3 zbMZ*tMZN?jQNTnojr?HW#rgh`c{;2+Xc3pA??N}E-+;jQ@t=o7SlZLQWIA$ zP}JeArFeVX$6Ru4Qp2?g){LjX^2KdJ+8Ulfsl{zAN0C{@G6l~sn&yeuu8s30#wkv$ zBGHCvZH@;i3n#P!A9PC}<>{n0J)@gigfd1fis>mLQS;IP?a0Ve*B~Me;Xnb5PFzJ4 z4MH@d)kJF==v4I3FJ|2TT;xhi8sY&jjwzU7WZY3r07!plUhX`C{Amh{{#3a#{k3=h zqZuxw^b5T`HD5^|7#FifO$)~~Egbc2mFIr3W5GAZQ;?rZF(*xLF?#9ut3vm_au&dO z0M1KmLI}NA);`gag3wgz!k=zy|MN2_x?1GsW&wpQi zCV>of0M?~(VSc{;+>ck@w)rog1@I;SZ%R{+^ujk@e`WZ<&jEzzTyb-n(v-zoN^20B zXc(i9KXwelB$N~_a@kw%j1q0^?z41$zH_U1kb4S4h9T_HQd}iYZWA&eHB@@ii-1)pH98`a}YMYxBfk?vf)Up=Fw-U1G}^{_q0OQXnYm6LvLCA#@Dy5{sK@@ ztv`0hqWyl?qZ1|*b!3>R{=;PH(f1CcFLh`Im`tkQ)YQJ*^QBeqYGK!ojvT2UemHi}k?8 zCod+xc`uHZ$TEx2!AEz@ng7V`&Fo;&le4Rz*^^)gD|URN;*#??JGj60PkK*Y`zAa1 z_S#?nxbnj>b`ad=MujD5GL-P9u$|l?mZhoHg(rnuA{}BynwnfpOJRKP5UbKSIA1NM zrnEJPtx0ou7sV-zksV@fnz}B_S1IU~C8s#X%Sp$;VGiiym|ft1X|35x_vW~09)(P{ zcssRLd|EQ9`M{y;Q(BwwiMF)XF5IGUOw&cX&{MEz??l24I2+rL#=+M{v1E+SEI3Un z@VLh@i#$|CA;1pL<7DMbYk*m3RJ~=&*NRq;`>BQWOMm)jcdT5HZV?ruV8Ce^27Ir+ zdHwOg50GItfEEK@5IaVGbl2GyGT^j~`nmez_kP#<>N%uz0q9CY^78a8fBV?e$`@Zp z%6tIx)9kdqI{DEH-@7A#lm%$SoU#?Wc0O_xjez3StA4qo@AUhRAVU!{6s0*(=<`+t zF5W$#N~{>b;xwmj`iXa*{P~{1cL0R5UExV{EYz1pFFkgp`(FSo0T6_wVAj0#K}ApV z^8l6tXbGkw|E>U7CJIE^m{v~YjC_3d#THRMN+k``YL_|<8(+0V;k3-g7X}w@d;y&v z4lWpZF>=@=jNA${M;Ppe$(v9m9AVIq6YR`MZAOL)a%iDru^B0<1=>Uw<_s;|=4AZJ zeb7Vjh|5DG_<|->>dIwSIZCToHVPh{0(H1NPb_nTQCHv*7>p?ZWfNuesG_*Z!c4$9 zBx{)9uBFtDIZcx|Kq_vU9g>H)M= zjZN_d7#SCgLDfi{x=b8=0vuq{Bl4utKCp~QVcHzNQrbcrF$+gEj$%MeUUsZMKc2!o zQD)$E$flIG#L95Kg)+?XiI}8WZK=oIVwtwr@HMj9qMD)__f|~1yfjnKCn2O~c;ES1 zoB}~?K>(+BA>=9_JGU_TAInqAz?Xu2i7Cb@at|jxVA>OqjdJoO$aMmeF*P&u;Y{&c zKRkZK1)rqgOZsdq&n$otG})&73n~MgQdf24h3nN6<<0d}n51oy3cyxXi-) zJVMM9f+MN+Eov;Ya^|I*HQ_kPH3`Z;4`jWK0%}0Kno&%xs`a6D!z(VYc^B%wPSlFJ zQ8^8nEow2PtAm)}W{q1wgv{C1nZI};7FyMVsTzmLt9`G&A0 z|LrB{L?eLKFnR3M3+3Uz>j6V90&o$=N3mFMzKwq`A!QSQO=(PfW}AFDTP#g$IhtfC zHOVrue2hv&%o&BMs1hqV+O5h#+G?z21J3xWSveL8=y z|2OHoMBeq&WuaLN0RrS$KN3R{J-OernPear12QasCSj;)$(@O;yESmwV3ixi|Gjq633_MP9zAbVk{%g7PW#wKFRUi>A$?)C?QM$f*`{=RT5o*2I8bDz()t1BEf_W8qN?{LBp zabqxPL;{AQNBjMuh%jQYXiT}qh$q7d5s4;5%ovCnaU+uO?+qKuRzUnBkr-CC8?pXS zJRXWhM9_$YjG(e@z=-)11TY^W{h>qx@U2l1PX>BLPbh4NXiNk{F(Z(O#)h+B24c~G z5sxdKOko@h#S?Mmc7Hf&h(t6h!v5GkL-a7GKY_}J2iOh~AMghZ5jJ`fLbhQjgkEe* zBGx1NjeeGoZbXwYq}rQ|4=Y`f1bUYoK$}E-IG!;2MZg~p+o=E{q8z>n#YmY`E z=sHnEoF+g5;K_*Ppe_;WNAse|#N@<1$v7~%F&a;ZP+SC~2O`->G7>ZVfnM2CUoeP* z;{t?42Bj?)?K2``AOwtcE#77kH$xAr55TM6%%-%3qk%q7Kln=VSpi@Z-IElLM)oPU4)^bkhC=~~ zWD$-=2PA(){QVYNFwsu%N54NZETRMGDDf{lZ_xlfl_Uuo@jxsz0G>lzvt(`a2S5Fp zd==;og@Yo)l1!9Ak7Um*N7{9h3*yX5^ySu&<-Z_UMB?^9G>O8afj}~*+?w!108JSS zM28?el(6kFpg)?73((l0uuPJyfFH6N2B8-K}W+BXAf7v=Imd)Pd z@23u#oHiqy*ZU|HfrTa|lW=m|wi<~8(O6$r{4?=f@xPvaiJ19v)ro(v*)I@!Z?dNc z>|p9ro8VTDp=tuA%CfP*R@uOIe?<1uh(JtwpkIZFVG-|5CZw9OM+JWv>=hg)kq2VY zeN z*kAu}i1q(p{_8FK-?hGO$)c4#jp7gfr$|}YAcSbz-E>f?k0it4o0Wx4yBnHz1GKQ| aU_;YEfiEDl(zUfyiTESRR^L`-(SHFzR~Tvl literal 0 HcmV?d00001 diff --git a/emtests/test_errar.c b/emtests/test_errar.c new file mode 100644 index 000000000..86543df7d --- /dev/null +++ b/emtests/test_errar.c @@ -0,0 +1,26 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + char* err; + char buffer[200]; + + err = strerror(EDOM); + strerror_r(EWOULDBLOCK, buffer, 200); + printf("<%s>\n", err); + printf("<%s>\n", buffer); + + printf("<%d>\n", strerror_r(EWOULDBLOCK, buffer, 0)); + errno = 123; + printf("<%d>\n", errno); + + return 0; +} diff --git a/emtests/test_errar.out b/emtests/test_errar.out new file mode 100644 index 000000000..7df247dd0 --- /dev/null +++ b/emtests/test_errar.out @@ -0,0 +1,4 @@ + + +<34> +<123> diff --git a/emtests/test_errar.wasm b/emtests/test_errar.wasm new file mode 100644 index 0000000000000000000000000000000000000000..20c36d1d68e13642198068e989e56cc86698f6b3 GIT binary patch literal 45909 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 +#include + +typedef void (*FuncPtr)(); + +void ThrowException() { throw std::runtime_error("catch me!"); } + +FuncPtr ptr = ThrowException; + +int main() { + try { + ptr(); + } + catch (...) { + printf("Exception caught successfully!\n"); + } + return 0; +} diff --git a/emtests/test_exceptions_2.out b/emtests/test_exceptions_2.out new file mode 100644 index 000000000..aa89c67dc --- /dev/null +++ b/emtests/test_exceptions_2.out @@ -0,0 +1 @@ +Exception caught successfully! \ No newline at end of file diff --git a/emtests/test_exceptions_2.wasm b/emtests/test_exceptions_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e9d65d0d54261f3e689d818187bc103781caa248 GIT binary patch literal 50262 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 mV*BVV%?|U#QZ(%sgX` +#include +#include + +int main(void) { + try { + printf("*%i*\n", isdigit('0')); + printf("*%i*\n", isdigit_l('0', LC_GLOBAL_LOCALE)); + } + catch (...) { + printf("EXCEPTION!\n"); + } +} + diff --git a/emtests/test_exceptions_alias.out b/emtests/test_exceptions_alias.out new file mode 100644 index 000000000..2f67e501d --- /dev/null +++ b/emtests/test_exceptions_alias.out @@ -0,0 +1,2 @@ +*1* +*1* diff --git a/emtests/test_exceptions_convert.cpp b/emtests/test_exceptions_convert.cpp new file mode 100644 index 000000000..563057dad --- /dev/null +++ b/emtests/test_exceptions_convert.cpp @@ -0,0 +1,137 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +namespace +{ + struct TestEnum + { + enum type + { + Zero, + One + }; + }; + + // An input operator a-la-boost date_time. This input operator will catch + // anything and rethrow if the exception mask for the input stream is set to + // throw on failure. + std::istream& operator>>(std::istream& in, TestEnum::type& value) + { + try { + std::string raw; + if (not (in >> raw)) { return in; } + if (raw == "Zero") { value = TestEnum::Zero; return in; } + if (raw == "One") { value = TestEnum::One; return in; } + + // The boost input operator uses it's own facet for input which can + // throw, so we simulate something failing by just throwing an exception + // directly. + throw std::exception(); + } + catch (...) { + const std::ios_base::iostate exception_mask = in.exceptions(); + if (std::ios_base::failbit & exception_mask) { + try { in.setstate(std::ios_base::failbit); } + catch(std::ios_base::failure&) {} + throw; // rethrow original exception + } + else { + in.setstate(std::ios_base::failbit); + } + } + return in; + } +} + +int main() +{ + try { + // Show that the input operator works. + std::istringstream iss("One"); + TestEnum::type value = TestEnum::Zero; + + // We expect this to work. + iss >> value; + if (iss.fail()) { + std::cout + << "Failed to convert 'One' to TestEnum::type... fail" + << std::endl; + } + else { + std::cout + << "Successfully converted 'One' to TestEnum::type: " << value + << "... ok" << std::endl; + } + } + catch (...) { + std::cout + << "Unknown exception caught converting 'One' to TestEnum... fail" + << std::endl; + } + + try { + // Show that invalid input set the fail bit on the input stream and no + // exception is thrown, since we did not enable them on the stream. + std::istringstream iss("Two"); + TestEnum::type value = TestEnum::Zero; + + // We expect this to fail. + iss >> value; + if (iss.fail()) { + std::cout + << "Failed to convert 'Two' to TestEnum::type... ok" + << std::endl; + } + else { + std::cout + << "Successfully converted 'Two' to TestEnum::type: " << value + << "... fail" << std::endl; + } + } + catch (...) { + std::cout + << "Unknown exception caught converting 'Two' to TestEnum... fail" + << std::endl; + } + + try { + // Show that setting the input stream to throw on failure currently + // results in a JS exception being emitted. + std::istringstream iss("Three"); + TestEnum::type value = TestEnum::Zero; + + // Tell the stream to throw on failure. + iss.exceptions(std::ios_base::failbit); + + // We expect this to fail. + iss >> value; + if (iss.fail()) { + std::cout + << "No exception thrown; Failed to convert 'Three' to TestEnum::type..." + "fail" << std::endl; + } + else { + std::cout + << "Successfully converted 'Three' to TestEnum::type: " << value + << "... fail" << std::endl; + } + } + catch(const std::ios_base::failure& ex) { + std::cout << "Caught exception: " << ex.what() << "... ok" << std::endl; + } + catch (...) { + std::cout + << "Unknown exception caught converting 'Three' to TestEnum... fail" + << std::endl; + } + + return 0; +} + diff --git a/emtests/test_exceptions_convert.txt b/emtests/test_exceptions_convert.txt new file mode 100644 index 000000000..fca657ce4 --- /dev/null +++ b/emtests/test_exceptions_convert.txt @@ -0,0 +1,3 @@ +Successfully converted 'One' to TestEnum::type: 1... ok +Failed to convert 'Two' to TestEnum::type... ok +Unknown exception caught converting 'Three' to TestEnum... fail diff --git a/emtests/test_exceptions_convert.wasm b/emtests/test_exceptions_convert.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f71cd4c7c7e076b2ee73e9771cb639485976a6c9 GIT binary patch literal 344236 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

J4+ORW_Gl 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 JcVaqn|37eQ7!m*g literal 0 HcmV?d00001 diff --git a/emtests/test_exceptions_destroy_virtual.cpp b/emtests/test_exceptions_destroy_virtual.cpp new file mode 100644 index 000000000..1e40c49f4 --- /dev/null +++ b/emtests/test_exceptions_destroy_virtual.cpp @@ -0,0 +1,48 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +namespace +{ + // An exception that can be derived virtually or not based on macro + // definition. + class test_exception + : virtual public std::runtime_error + { + public: + test_exception() + : std::runtime_error("test_exception") + {} + }; + + // Test class that logs its construction and destruction. + class TestClass + { + public: + TestClass() + { std::cout << "TestClass::Construction" << std::endl; } + + ~TestClass() + { std::cout << "TestClass::Destruction" << std::endl; } + }; +} + +int main() +{ + try { + TestClass testClass; + throw test_exception(); + } + catch (const std::exception& ex) { + std::cout << "Caught exception: " << ex.what() << std::endl; + } + + // Something goes very wrong between handling the exception and resuming + // normal execution when the exception is virtually derived. + return 0; +} + diff --git a/emtests/test_exceptions_destroy_virtual.txt b/emtests/test_exceptions_destroy_virtual.txt new file mode 100644 index 000000000..2e9bcce66 --- /dev/null +++ b/emtests/test_exceptions_destroy_virtual.txt @@ -0,0 +1,3 @@ +TestClass::Construction +TestClass::Destruction +Caught exception: test_exception diff --git a/emtests/test_exceptions_destroy_virtual.wasm b/emtests/test_exceptions_destroy_virtual.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2bf9092c0df24173f8dbcbba28c0739a5055c40c GIT binary patch literal 326997 zcmeFa34j&F)%Sg?``$at9heJ)Y=d}8Rz)^fP$M+zz<@h$Srib_Fd)bx#snEq+~U5* zB`V??#U&;#F~;3!G;!CM&1hB=W1>k+G#dGS|LVSX2E;t^dGft)^1L#`ba!>tsdG-9 zI(6#Qsp{N}MMtyzaQ> za_MdLU8Qt(T}qy`l8iXL1kGAaG6_{BDS=G&C+V^O9SG|rbkQL z9rsI@^4Bd@0RRCdTBg6n_N5t)fxu-M$`m8hvElF1w2EV=*JpU8G&OWQ1$Y&#bJI(m z-cUuSV!7#!o!;p-H@(WeT!nD)pst!PAgL#@K}-@Kq6g}>k7vzW(q-1Xxic0XK5O?` zN6cS%Os+|3T@RnNc;ESpXUy%K*lWfi^A|4ObKcG~=FOYGc;dqOM|XbPJ-nT|c*e{* zdoG!^@UXe_kIvNyR%zZ*bLX}kHE-s$*|XD>hE6G2QkTw2Sz6b1(z3+HbrTOwA+DF2 zKCc=VnZsF?a6#nKKs8nl|fmGiM#Sc=r5xxttoTd-nd2 zS%=S_H;o)KKbyX2$X+b|EN!2QmA3+m=ACiW;h$aH304rK8j4WMoQxGb9Wmp`X@||8 zJ1ggcaFDWS*5X|kF5F{&nx~6Wj#)Gl>_%@rD$TV{+BO?V+cr%Tf?3&Zw(e9x3hslM z#*R)i)lu%Kc^!Bbrv+io)eFU*(`Fs9Xy(G%M=qWh)(nz3Y7+RM66I}%pTnsMl~ne*ozI_>Bg zvlplM^r*f7`l2Ie&76JM?3rm5P1RR(W*swaCZ!i=tn5;KGk@O9EUg0&Os)dTIKOD| z!owENK4R9ixw(R9fyrHhm*Y=9 z%GJ82TomQ>rzw|fYHG?gIXyMi)#O|*a*=DQXNZdUm(RH#b-9gt_UhfIZ*z0s=6=nT zAiWUh;*It}dc@b>uX~E)#Rx%SN)rFj(h#B zsVS7ASaoIB+Kzv&W>8aI⪚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 literal 0 HcmV?d00001 diff --git a/emtests/test_exceptions_libcxx.cpp b/emtests/test_exceptions_libcxx.cpp new file mode 100644 index 000000000..47bb885b1 --- /dev/null +++ b/emtests/test_exceptions_libcxx.cpp @@ -0,0 +1,20 @@ +// Copyright 2016 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include + +int main() { + std::string s; + try { + std::cout << s.at(0) << std::endl; + } catch (const std::out_of_range& e) { + std::cout << "Exception caught:" << std::endl; + std::cout << e.what() << std::endl; + } + return 0; +} + diff --git a/emtests/test_exceptions_libcxx.txt b/emtests/test_exceptions_libcxx.txt new file mode 100644 index 000000000..51e98bd9d --- /dev/null +++ b/emtests/test_exceptions_libcxx.txt @@ -0,0 +1,2 @@ +Exception caught: +basic_string diff --git a/emtests/test_exceptions_libcxx.wasm b/emtests/test_exceptions_libcxx.wasm new file mode 100644 index 0000000000000000000000000000000000000000..beda70ce5d0ea6ab2d989d3d8d0ebc7ef81a1289 GIT binary patch literal 325836 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

9g$y<)4gp1g`TJw!&DaC9%16kR9%ry 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

GB+$TrQZ; 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 + +static int current_exception_id = 0; + +typedef struct { + int jmp; +} jmp_state; + +void setjmp_func(jmp_state* s, int level) { + int prev_jmp = s->jmp; + int c_jmp; + + if (level == 2) { + printf("level is 2, perform longjmp!\n"); + throw 1; + } + + c_jmp = current_exception_id++; + try { + printf("setjmp normal execution path, level: %d, prev_jmp: %d\n", level, + prev_jmp); + s->jmp = c_jmp; + setjmp_func(s, level + 1); + } + catch (int caught_eid) { + printf("caught %d\n", caught_eid); + if (caught_eid == c_jmp) { + printf("setjmp exception execution path, level: %d, prev_jmp: %d\n", + level, prev_jmp); + if (prev_jmp != -1) { + printf("prev_jmp is not empty, continue with longjmp!\n"); + s->jmp = prev_jmp; + throw s->jmp; + } + } else { + throw; + } + } + + printf("Exiting setjmp function, level: %d, prev_jmp: %d\n", level, prev_jmp); +} + +int main(int argc, char* argv[]) { + jmp_state s; + s.jmp = -1; + + setjmp_func(&s, 0); + + return 0; +} diff --git a/emtests/test_exceptions_multi.out b/emtests/test_exceptions_multi.out new file mode 100644 index 000000000..33efe46e2 --- /dev/null +++ b/emtests/test_exceptions_multi.out @@ -0,0 +1,9 @@ +setjmp normal execution path, level: 0, prev_jmp: -1 +setjmp normal execution path, level: 1, prev_jmp: 0 +level is 2, perform longjmp! +caught 1 +setjmp exception execution path, level: 1, prev_jmp: 0 +prev_jmp is not empty, continue with longjmp! +caught 0 +setjmp exception execution path, level: 0, prev_jmp: -1 +Exiting setjmp function, level: 0, prev_jmp: -1 diff --git a/emtests/test_exceptions_multi.wasm b/emtests/test_exceptions_multi.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f942cf0be3f4cc5326de1b34d55624e4ca688b6b GIT binary patch literal 49762 zcmeFacbJq#*7x6c>Tc+P89>0yDZvOR=Dc#Fj)c{9gBzaReGpyNbq3KHk==dPM+Qa3 zoD-rVW(CEZ6?0b1SutnDob~tlp1XTs_ucop-oJm>4maI(S2%U*)TwmpTh*lr`|cH$ zN~P$4e!C{qrcH~c?V9p6t+Z=dUvgyi??{0W9wojNx3p{Q3HZdb5mA8$6#fS&MS0r( zBA~SUM+fX0?>{ZtzsLixiqj^2{8GAVGI8?MUK1xzn$WqqK@wRh*=OJ(`>-ecmF zU+q0*!lY$A2Ts^+@6IVdo4oCW$&>eQbu=btC-{nt_^ zTD8ghO`6oY-{jrL@408;(`y-@hTqayQ|qyMcgLE#Cx1oK=709A`?maxZ{2%^@#Dwu z{OdLP)Z@W+2XUd*?PcEh6tf?M82* ze8(}{{_1BtkKg%Mzo^ITHD%&n`)s%Oenj4RN@v}(`paMC+m0h*{k@03kKZx>Egt1P zChfi3gh|Ox6Lw1WZ@g8&#znZ0KsamR*d-7eXRnkgRuU=_V?cLncQYx3L)oPmQuM{UyDT5;^J(^3{Cae4PX)1tv~jgLehsXj73^3uP4>>mv-*Z8RXYk)`IKiZDg=zq2U zjkcAe`@3>oJfMYIk{0bgVKV=x?EaV19|zRE_S|>;K6~#udCJ7j@l*c3&&1My_aR_n zXXoU-r9=~4(*{+>|M}08_S^R_rFFCMf9{+(v9v?;_(_wd?lpe5eg8UPpYeNcxIt-r zHh!-OdrmH`Sm9gBT584R3Q*eBU1(uxLN9j-)V%CCaFQ~-n8_E*FSZK z(TpbcYJ?Rn=+C|X>3z@A9?k#kv1jQo{U+|K8r*Z=zj#yrQvUw%QFy*nqC2K4aPUrv}hvDClE-=fmssMfjXN^Nanl{Wr3bLc|6Yz|{w6K``x(yP?$!Ob6RzLvHM#M(BaUBBp4@Z(%kl5m zilS+QdxmImPb;+z={dM(-rSb&(;?U3+D_?6E43swi<)a$X>iZxTDfGUAw6q7{mY^u zwOZfO;HJFPs+dEX@aa{nO^>6MM091Sjc}q)Djy+IE9Wh3VR^o)ZDF9T90ph^kS;V^ zQ|N1b*NRJ_pY;nZ)*P0zyn31u5-nY;$(XECCVUnqmWvbPZK#j$)hr)XI^Tq{Vb{~ef8g^uTqv$zExX@EK;G7MvFnK zY>5~tTe+nVWYd;aDR^~APs^HXr)SYf5ghgJs$^7dZDA`LrJC8&Muk-&zj9kx+twEO zjcirhNDQv3@@`7la&2KV+e~4b+vc`Wd)UG@wJnM$)GAUlubox%CJC=*vBI{nxQ&{2 z&U;xeCGTykQtw;30BuW=-`cjeX2sr8`tcL{Nv^c{@sVxW(u`8HP^doEWPMsg-*}|; zMKO|)XL(G4n<(z8$fi$NDH%y1nlW1Sla6ePYL?kb?O}+OmCNe3y0TxxRpESF_kwYY&5MaH!NEp67|T^n6>B)KeM~)-f z)JXL&&y_HeLGAgC1-de>nI#raiNwwMAdKXIABqeONW|yfoNjj*Jt7Lv;WKAu- zsqG#}SdATpL0{?1iZ+=~3y3*We)KFMg&R0dn`;{u&0FoTYu9mVfs&q;(2ABpYI{Xf zoE9Ru4rm`8Xj2rckWqf_P&$a>g-)Qkc4HLvQAodkSNwkP-cL+d$!kcPc+LAtj$W7I zd10wTOw$J=sV4Qq>KnRSSQXZrix$=_F;V#ZgbTfWHcL=_tWUx0CdTAKyo(a0-rh+) zP-;WF%K5Y{81B(7i|B1uM*RJXy0a(~@2Z@gy+_J>jw$-*4#{kpV&A!Pb8S%+^;dK{ z{b8jNY)ATPg8SvC?PAN0A`$D@<$eO6N7N|Fe#M=~|NB(2fK^3I_ z-Gfo0N4pfJxz?jzkxQ#Ir>+-A(ef(i@`&YrB#45D8L6lj&}-pGn3eQfIyLY)<$koc zen`5gU5$U$4mB-tI=}{ajZkM^Nv;H{QR=GRywxnb+lTkz-20%@)Ox zb~n*w(@c8fiK?l!_?U+3X7E67kx=tKx}ego%?~8eFqLp!giew{Hb`{Vur+xf#p#3Oq?~>7K^=MA*2k;9FLfC+{N&PNs#tX(p?V#tvG+Ho!4hqM z8_*esk^M0525H!6MnsJ_ht;HNNnOpRY3{<%?=uLIV|=NT>)9GsvXzR#W_eK^XaoOG zV(Pb-uj>_zQ2_dC6<`%FKtku-U4T^?d6O~0`({SAtcebYYEbVSXxxAT`fo#RhS*RWBDE>&jX@Ckqub53Uqn4smsG6yrrA2*F$EWA zDc*&e>8(uXhIm@mQPT-7UDBXujE|+vVhx@>nrla7(HPMjSE#ZEq`A+1^mMrm38@VfNmzXZAiV^ z(>$6=Z6-EQwZD8GP4W3-f6e|%)PFpsO;s-z8C;#kRq>{I`ylJ#RHDLz1rJ}18bX%` z!!G0N5Gs1e7;0p&t=p9daAFG>@FROVCUDRcd!&dl+T%8kpIr8Wo-)i*iVP zda;6r_jO@sT`v|h92IMXjqqZvk2l5MknjyXd?VXP;Tzk=9?tYd#om-+Z_>^ra(&xu z43o%BZS#&W+D217CEKKp`Q#?HzUHFL12r?+YlV|>1FXiHPRfI+(VGCqBqYj4HTno?;g zuv9)~o`wt;dh?};$#aMeaj~wF)%{W3mUX4MVU=3TFjUw3Tdh-wU5wYOXf$JXVXK64 zUEdz0zv>>rd*{=}s!v8bY0Dbw@WP5J=!!MQBYH{35XrbNZ_L_JX1(>dzSe(Seb7i- z)>Ch!fe!ukNuH)(D~bnJLK^AQmeoaWvu;gh$Wky3mr#~08Wc6lu7q+iD7FkoG4L$q z;?A-$T@XjxqjO)(igSw9Yxpf!u6 zd~l)?_2P~4Aqc&-FebE&Q`w>6Go$XsBej#4XxWW^bj2dQI)3slR+E~Uv2qxI#^}=q zG$yumbX1OVNFhr2ZWXvm3-8i7|`G zeNNt7d?8--#nhy}&D((;LNXaP~p%VBekFJ-mgeoQhM z>6T+1uE__PGWk$$10};9q(nBbgJ!%b1p1NHa-m0tBgIic!TK=1Z%%ii9zzr06kaN} zQQ=P=Z(fY?s=AcyD@FEM-V!#iX%4V?URGC~iSZTcWm?fzs289<;MRv*tEyJ%hiG@C zZ=xT|!ic7%R;n=>nSS7m>Lir7nkVDJDv(}9bZL*((94C>Q!mei4q1BMGq^V2Cdr{>*LyKhBQ^Vxy%<=ZuD7U7vq{k-C>SVZP z=#}9}aMbeJGU8G1S}pusG&LWklmq?z(n8h9CkZV?kqM$HG&}pfB_d{5|0)`0PUPDg zLBLmU)#)&6R-G~!h%^h-I%!()FbED0nyS+PRXZ)PfGUot*@))a9ceUNs<iRt6VhK?(TB>+L~&_-a*mN zG~VdEXg|eUZ{(slYr1?`0I5$qa$i&=?VE@(_l7`=b1&oEZzO~P4uX$Mm* zy|u1~J#;ypmQVB1d?;mSKQSRcl=roZ19}Gcyqn z78o>Bq+LUy23e0z8U=F>(OF#)Xd6YxkKl(f&9(JdCb9~Ad7b3*cv|lRqW#gNuVYkc zVPS48EQ1T(%J_Ax@n=?SIOtK&lOrtfS8Cx#cd)d*D>mZz3bv%)Xj@z0@prPF!tdl> zvn}jyH^yp>lhJ_|{xi=DD|?G+p&t8%zV7ZTt@(RA(*BOV|Hxm(`nHD|5$m5B(b#Zw zWJgEoNLKWxMs{k%DuQxi6ByjY)VSIDwuQ4JJ3G>Qjj37)n@_b6_7ArecCe|ArIqW0cvMDhQ_Un!>R%zKJ%+LV;& z|0viCQCO}iX^QpA$nrv@uHex~0({gZ_^5Nag>4}=9u*tv1xWc-ocAocfv;kb>93EE zok{!H$-EWWTb}y6$i8c^yLxLlIJSdhX+eMTMvwX{&qHFRird1WUVDeSN$^l#70--q zW?UB$$q$R|Fw7}-NKBrG#^jmFyRTqrwc+O{y;WjNbqINM2`5!)FJQfJ0? zW}NTZ7S4+8tT-PuF3h2jIH!cOV>>&}4|_E22y!ms;wmGq#6L*FuV|!BN(yI21 zn0fi^ID8hX8(oRi;rv)0pU2Wu=$#L}b7SLKsWV&<+vhIH3!SwKowW;{wToiAsKMIB zv0dz}T|xyqYxBg~C6JmQ+x$9fm&SIfvvyf*^J2RU)}Dy%2?_9m7~U=tZx@O;RV-dB zK|$={_jz0lV~k=&&%RD;xIDJYmH0E~@QT>3aK^5T?aBsYSH*Uf>iX)~uJ)|2iR~K6 zVkO#BR5gv%`fjB%E+k;O3Avr|)G3NI6m@CUeaX83z?I6|)MKgOiwufDkkHmJ63Z;eS zBPx_)*cYA--_e*2R?NE=mO8`sjEpO^v((>?accX_R;-2hVt;APY=v5QKeqQ{W+(5( zOixBIiT)xEV^zN`8)@AwTD}f-k#sY%we3Kf6-lxdNwyASYc^J$J1ft+maW?w#>FFT z91y8o&DR1tQx9ha)%&+KRF72*7+s%g)2Z@$!{Y-4*ftKKI3L@TAS(y^UwXHodM z{k)(Meqp~rL4Rq#RMq{;epS#?;$3W)oT~q|{aPu0W522AiAMg`eoL0Sh~R(Oe<}F) z_WL@)KiD7C;rtOj{G+Skf7^c-O6U>C+xU9KU2RuIoPhdGaP8a8c9ZUX8{4<>1>sN7 zr!FU|WD`}gKT(v46eU6HHWasiwm<(nHG7mnC=PoRTJ~&g&&J`I*q(`{WlzVphdmA3 ze<^}rjP1oZyueW8!OzF`yzAI=vHiuKL&f&AJwuzdNgnOiCWaoDay{-!!l3TDHKV&q zC)p$kWiK(kmzbUr!}VU_C+cvQx3S?THB9QPdwvo+e6G+T;q7Dl)Me6Xo%yZIr}wpe z^UcSFDK=$kJL-@I>?g|miL$4hYE$be|7w5rlz+>+s;sKEnAB!}YYYEl|Dz24VgK;; z-u||~X6yfJ|C?9GgahmVYH@$K*)Mdk5--NEe-s2I;Au9ko;`zn!@pl^=!$Hh<~Y+M zl(UP8hfUY)!`pk7Z=#MNb1!sYpzFYak@4&=zOi?CZ66fbL6PeFyV#hMeHSyQ_q5X0 zZB? z$v8B!L+g`_Ff%HaqlZN{Gs>Gg!r_q}97j}cwYEkwX5cHLS#JO zdo_!QHI*B&kP^m#6Qg>}lOp3eG1@XJvK!QtEsaSXoZN_bN@P4IM{I34U#m8y|HRj6 zk@0l%wMtWC{t90|H29juv^BCHy7^kUnAS2G5tl28VAFs)+2!-i!X&+=+5 z%#Q5sILG*VMwEY53TCq-7VBq3VT1e*pN;od+DNkON$Bzfz8!Z5_Uqw>>@g{izAFB7qgm}7xAT@VSZ%9nHP12OC!6qV9@5H zZXd-;S)n+C@=GiP`zQ{>#l$A$7G@;*ea>g!Za&ZRDZuo^rYECHzYLc}b{WlkREhWh z4F@J_kOwAetx@P9iZx!tK}mjZK_``EIg2)y)@0WXNsJSa5yTX00jOC5I@D>b$JlQ_SL zDRZ5}ZSO+I|aB_jSjXNUS-R_V&+3tZIrm&8RHOV=m=p zY@Q*{mMthyul#w%)n-vWS*@w3(nbIDFIK}J3Ij6}D;Xbaplxr**0W`+@P1_PN3;y~ z!0H*YW?CvNC~r#CLRi>+AjK5%4ncXypG9AxT|dTVvH+YJ8P1*T%&29PaF$+1m3|)P zL|7x)qnsPrTo>9ok@3tyx!+X6bZR&^qHgS56#u-)-lQj%F4=hq^n ztj(g9EyL51Jx%!N@JwVIYpd&7dDyejxbR$Lcs_^d--_)mEnc2tkFOY>T*~w_#Ppd1re2sL+*OuMS*a`rZ${FWBYRoV zmeJp$tcxRC9EDX0Sk242s>=FGWUqKxUybZl@zK;!`=+Xw_!X7-wa9o@YYVSO#?v%5 zyupb6e?)h5(wh;j08zabwQT5-$Aq`((iHhkvd2r?xl6Mt3M#8-QQZ5M7I(PjP1mtc zRm=>okL)_t|Mk@PCbjTRY%}O{e-UnoWKi89+(^rh>;{DYdW`Y$CUyTep+C3CGmrKS zw?=j=j*hS}GCUX39&RJ8-Nw*xdt|qZ`0$L^8phezHDOtoiBTX5@&K(bl0#Hp{!Z(tX3HVrWDW{HZw78w5W@8$9;fIE(1w|FeRB zr}mkmuc!GUM#>f&%wENYVP&an?ETkEDn9g3#?K@BTs03Asx^EO*%!Q^faQ!~Vwh`T z%3i3}-(N=drH>C^MfR0z9P1aFt&|E>qq9@-D`2SeSdVqKQP}B;UA;0 zQ9-z_u^A;VOKHE3F|d}KYr~2y&Prjm)&3%V_EInpG+-Rt_*yI0nroLu(Q-2BFV`J= z7;BGiYq(6|EHxca<>(ui8yjY&5PNa3RZPN~<_2QS;Yy6nxW2yWi} zE29F!Tbgf1VVQxnhpx)(w{ETCHo%ISz~VIB<_e04r}T z!WF>EUG|KfY;D`gH{i7GrXFl#DvzEuN3^+0SF(-yYUD|6o1s4~{335-8JN^z39h zhD^sO(_Zs6|1UA?SEjY59`(6}msCqW_8PQrij5#lz+M3DU9Gq6%Fb;OfH44D!9)f8 z$^N8FcgL8%dxvjqqehxeog^R+M8=Zq*g~);d44^+7c`z9Fx1euD2vwrf3d%a>>g}; z?7=Q(5wI7ldad>eXt#Fd*Jk~!twTHISePBQIMDj5kfX?Ml(HLGEOZ3+Xql3?>^DzK znGy>amAOavs>yi(11r;%(qkS7d)wa1YBGCQlL3en0hkBeQb2$V2k_8gD_Tc~U?WQb zKr4&Jw(zj6cvz+2fp#=MoTA)M@!YH3t1-`AmV1U(rNpohWM&|f{n*gluPs;+fKfsA z1qJ-w{;u5rW@g3SW?)lO)jZf%6OHZ2eLLko*yq{IYl?rgdOgTT^>{Vq_g#O9{4z zk?qCEI?f0k+Wf#0vBWx2ER?$!kj?@qB4+=tcWyAy9?lHU>7ajVx!gxmR zJCOShMee72?rAZf$NEyEFF!VldrylGpkHjUlBVQ>V$s`clQg0irfc>-yUzvQ&0;L+ znJ;3mx=sDPdT!dei1azvwt^V3}2ijWCHEyoWjN^gRQpsU?vejl@^RFe63uxoMVJjp-$UN&6M)m9x za&J`6189LO*h>GaMp*Epfec3a!WN7GYq7p!WCbUAR`hFi8?dn=?>RX~`8E16p0ZDBJ==X0CjX_iQV|~x zffXMl8pF^lFi>yi8OXl}Bzptr5gXt)nrmy+!O1P7Lc|z&6Y5uo&?E+dmTgrd&9$eZ zsIMjg1K5o1ikI2f?~1jrKY(0P=8vg&%qoT;mdRM@fY5Y>81QLFNDadruwZD7@e)t7 zei<*q12!8=vz7@f68a;{j$)kmq&4JKc4?HDHjwj%R?fQ)&_Mxd6sSD6>d!I#w6U~zO(V&)fObhf`3=x7~3ss**d(R z*!zhrGnjKJMKmiMn%bc$A@8wmlZJ1ToQ>7|CPR1LOTxP}SwxOC#d|5S&rl0$uR{y& zvwUKDv8+g}p>IY%Z)dGrW*}zT&7}5L-rhvJ{@EO}P)iL_cq>68zfJ6|ga+{@peI-( z$C|yHjOr@>zWT9rQ20Et&zJT2IZM)bB#Tc9kZDr6SW7uAdEPBn5cwncKThV%>Y@K_ zvfFm0`d_zWx6Z&+R_l%YX<|Q5?89PBZKtu4}|@bcQpNc%+?) zzQSSnG0Ey&GpG7ak?Tw6)x_ReiG7#U!$(l6qf$G|sm)1j4iwZe9F;2FS)?nvsAm#& z_h%<|c2eIt7~UG@CN{UoaaK4wHJ+o=v%@j^vSZRY;n>uUO=pGUQaesO3Hg8ok0Rvw z)OZy8gw#$b0-5&K>XJMsv2);PbU2q!obBPf#Lksq&O^=5K{6L4c0n>Pe3KYYJ64Bg z*!;x1h)Wat8)S7^Vmy~7qL6XCEnJ@1=u?D<`rTpLbItt+(?k>yFLozzfIRqV;B-I9b`6XUr9Audd8Asn`b+Y-A?GCH{t zyHuJGZchx(Z%;bHqQqc%5w1rPdqfc-vqnblF}ueJZ~3|s$esAI2c*E-vb1&!cO`b0 z(yamh;N+B2clW?9kh`%pvUs?gDESKE?Ig<&a0c&5jOV}G!o7*{B%{N9iQOkc?csij zIXs}202dD?#&bWydnhrU2PobIo51*ef5JlKfh7DfbJFP4+eyBH7WVC|DO*Lcv+BKvOc8$}cm$oy9`+Z4 z|J$kVNwgai+mk-#5BA4))(d+YhchQZaZ)>5hDxy)6S~4yf#S3+?TsdPXEzyodxY`Y zBtu}MwJ@OjD+Bedg=dkCdXVm(XhA+V9F*3Zj&>RU)W#Bl9;ibzzk|{+J*DgYT~?3r zd-V`_{XYDzX1^2lPCGxz=OER6t&=u(K5cB@npWi@*z`0USm^A5=_PDc2Ad+PLG$eW zY|3?EMrsG9HUsrLIJJWdg_`)#L-2G+YKJUUu-&x2fbIPtdWeX2t3)4GAMi1jmBrtP z&<8v0ejrtU7yicw_y5UP8LhPkoc&LhuTo>5a|59yHLV#mMoR_~4GQaK_K*4D1I=ex zEQS_O>u_Hd7W2c0iSc}p91=cCtYv;!k{FI9$^PNv#6D)wI`O?1lCJPcVxQDs4hWwr z#6D#|&+!$d!g$%3D^{DhY-pkCrbb6@zFuJuXLdG=!Z(-ncY^x0jPkG;N#X)roS z=~!Lxbh*9%peU@1rfy*Cj$`=|k7NNt+zrB(UWzRhokhkWZf7c%9d!P_5W$9lg`apIg)?KNKTG)0$!PU@k>lixuLT5t|U~-gSgI?ozz7BY=21!ZbHBV=F@X zP3RfXq;L*C()4p9HX)SndF)E6c;{g1#w%F27H=-{=WG8?1M>y&se~75XAkx-WK7+> z7M^2Z^YDuzHu#{EhaK#>B)mYA%N73;av_RXxFl+X(Z@PxG1ReKDb80V$pU0X#O7 zhs>gC7CLUr8ICZrW}Df_F~u$n2{)77{IA%{+r#w{7IX1;gWJJ-Op>A8j}BuYzsYT! zbx0)U^RRlR&*k!--6wci7u^y8I)_mV=%l$N8WV1dFq4zdt)$RIhwtSGsGorKLm-u?nVO!5jps#D;4z@}dNa5^G*WkCPiM!;d3GLn56=Z|3Bis|&JyHDx@Gk5f+AfS| zk&O)ZX;0Ap%21}wKo#r(-#(&X4{C=f2R#0eHW1lA8XX?i9ukc9kyTyoAsmP3%#P^N&ZsnO4V`wprLIgOpYu zuWE-!YX6#cbJG2{EBW8ZZL{s7x~mpWNo{Q%wR&B-u~#!jJ3a1d4R3ljZ$j#^#2!n! zDJUeJ2kC^(^973*sI$UhDcdIL{x*|^{V9-}RewK>_tSVkJ+;%F;w(|DNoFr1v-cz_ zd(Ruz4@?DaFM%XjF&kL)!!Qhr}g zsaB7BBXGxIlfv?miM4LMV~pHJYT6asNVZ(Yh3VRGp)>7b0W-1|UP^2fhV+*bZ2LQf zopmx}G|l^G6m4g4UpBg3J2OACoyUPnWGp{Ov$davUpS+`keCk^%2_f!BnF-=^*S^L zuB@^A7vbl56n?4koLG>U!ET`l92|#VWcvI$quMXKW%{$?-M6srQc>@wj`j@?C-!in z#xoOWTmnX#R+kvh=&=GokIw%wwi^Q75uQx!Nwq#VTOA2x(+z3tC8#Xmpus=a07G-` zmMAQFz&;mIju8l&uww|*5inLg1qzxXIRqM_zvTbVRqEq~g;uG-LZ9HJcBC_-c#p7g zCa<3RXrkbNX9?vLft?91g|(>Ytz3RvsiFZtuO&?c_zbO6V^0QTZkAJZ6f~Kh7GoDa zH4afhWOSQg&^%DPP+(+HyGZC~Qe9Y3dqvb@USUk zY=-Mu{88ymHA>Bsg(R6;2TY?LzXBx9%7P~Gt6Bg%y^7>Ns30gfvj+ z_5u!_$D@P8p~;HSAzsr%G@-jesOVw=e?zQe93;DuWR8zkvYUmECK;haGJOti)UzlJ zuE82h{Q^17QvcRixM`O93uD2iWvsp}w!zBkc44J~PH$22{S!j&PzdVofN9Xv3b`}Z z84|d-3obxT^S+@_)4#2sRk$YxI&GV_fq)j&`BEAl8x;0iA)f2YI~>JwvM@+QMY-U2wm#zu>@$L8GPiRryeeygj71=!ABqD&XI`=OKLUn239T->RyDIl zLSoMkUna)$P)rQ~nr$UgtKhAVOKNyL6t@P)&+__6UDS`nVdYHt+Lh5E;@p^w>qgPz z>sWtZ?LOt1j{wmv3oSuCJ^P-L=hHD5Tu6p;VR>8-4e$x>iPweqT z9cw9n*>ZpZ9Au%9j|s0(OVa9BV-V+{&pX0vf}#_1Q;rKm|EFG*pGuOzGG0fLUnR!l zl6)fu80v)sssu1;B(Fd|fwQ<=-l@yw9hVD1#c4`E8Tqc`A0*QEVzA^SeV6b|pVe-; zkOUaZPqYGhU$Ap(A9OJbAaGA5HaI?zbbc!7d>9jr9_b?>5MHn)^5`)(d>jLx14h?T z06)m*qnMHbk@_iPa~!tr&TP}LbIqk;Y-2kL6>$2`1O?vROsi|>TDPhzKKmBy;fnqzm7oyGe*iB1vsbxA2EcxFI1EcO2ZgY2J(1WGiZ(L|!(?n}D2aP;xYTQSMgm?( zDpV;VRlt$9g{KmGDhW?}V;o^mCu#tdFw{#hRQm6bLnq(>KhhtZgrN-K%Bv2=&_TDu zF~@Qk34t7u*jPIvVFjMpk+OCk!Qe2q7LH1&^I>+BOizl?9*#~p96-$+lNgUGnBwh6w&^jRNnoJ$YL6wsu&>|2f6Xr?y$ z*=rM$SX*B|YD=<#;V|yY(uR8uzPYQV^#5?|?LSfeBZ2=&;6D=hj|BcBf&WP0|5p-- zbfVo#bz5PH&3dL4OokdhOSYXW7>Z9g`kNcLWZW1j)KY%{1?5o9tQ43JX(ApKHvj@v z>PBzr+)!M{FSc9|1WVOy1hh@4}+RB?*)Qs~hXnb(t_}BUa(eUR!eT z+?zUP2W+Dz(ZCD!1S$ucHPQKu(eg%)R0@S35 zH&hoei|r%F$PVFzm}J6UKkH-tI=RhhOD}cPR8?BO7)rWaMwA8=*$pJS0Y!H3#KlC) zRTr!&SCEn(cV*%-bzg=3^Od_<)3rm2uR*8 z32~Sgu29J{1^YEW#j2f)bhRa)N-wEN2rO(0EEd4GDK5*1fqu`Ayc5<{WnWh%bqtYpZ!Tb3w1)TUj3bZ!YL9D~ew*k}vdI-B{z0Hf~v;_E%;R z1bXh($(kprGMYNY23g>25;w*epqqwm$e zjdZSGAaR->(uR|xY1xJ45>>qs+k)GgG11+Pg{V`uFFYUh*bAe;hMKN7=6pbYlS>M# z5aN3w9@jVlCD9-!2W%CRLN-%4>Y8Kkz%i43KkNkUT4&GHQd=M_p?1zh$e@k{IcgUO z2oTcMcr8qXzCjzousi^eYieOa$bsy=A|FhYl-eSqcZBCrm(-po)|(2$ zH8p&k+Q%O2yVSnJ!InX01kcPm!wDH-xTc0PvCn6ACc1G^W*5=cri809=?0(LE54PT zR8Gob<;?7Uzx4LW%${_g#n`;v=e^8$Zp~W5mzjN;XayABtxP*@l6l5lkDt;&leT@!Vh&!uiEq~VP8~afBvl<@5y>fP)Amcr|>x5 z>6}tE9=|9A55XO(#&f08s1X$9qd>?(xi8L^Z6w!uIp5&=@M0+ zUu_4_Meu)j1YQ1sn(qn(4<(;q6Qtt1*{-(RRKQoeOS^S=1Kk$(3V7$AZFieEHSA$~ zNT)fBA&qXcKU-TTVAwsZZEA4{V=DNmy`;yJt=%Sff{L1Clc)N{3TSzUad$!oV5YsT zvlFD!KGr!^5G5UEn3}&noYM`e3r;$yqXKIrjR04qH=S^xJLRy0YtH`mHzr1ZWBRjy zsQSoL){R?0jTD&+6C{GJ2=ERfC~N4L9)bQ*;DI`Mq*Vl+PK$+lY_@bVO)QWOJ0yYRc#A$jcyV+YT66*#^CrO<#&QEEKqB3pbH~nG;hijy3!#Ni*a|wFxPY~D zC8KjA4GI-qE9syh5j#JUp7AL~yFkz%`Cf=%0RRC_t%H6D*-AvW60yswb{Q=x7jkHd z@IROMsg8NTbgF=HI)Lru*9`@;Lkec#*l;6B1Q^eyPW>{WcvN!>{6Gk@1jMsIT5~CC za(Pta+}7`w$q!V|70A_3Yi=c_xYFS~M|&~7QbF}x<)p9ivWtI zn2(CUaeYWQQpfW^|5Tkf2(hEG->9RlD&|c>;1nbXzgbtA5h4g6@cn=k|hc!q}(NQGEr0%DKz4zgwsr_3rn`2V4&H zi#bxKFgZ@=K8NMp>vXD$d%vH+fy_gGlKXxSp*5ir4$3Lkg2g!Sh;TPc$ALvaUVI!V zkU3N+kQ~N=ZeR}8{3yNvb9mlhqrKUpOsDyIJ*>DAsY4rb?r~HA?6Yi6lj;O zE+F5ZMjSFwg3p9{(fISZU@{yK?gYk?_in&gNb)%;fv>I5U?@{{w&4dw$A@DFWp2B$w z2n-Z~m7vafro-Z(^Y-Q)v>z=zT=(UPfg^Nlp2jP1B0Q=!5F$J)jVZ3eqe_o*4v*D+ zc)YC~wu9DazQ^UamEf-_%XnE&h>{Vg&_J9k>B7*J)pZ=FoAZK~sem(eJ(p zAEIuR6CEddIN*`vJ)e{1;L1D)jPP;_Cnm0`+BLdW+&D-)~LGfcm#qtNrJeu3c_{$V7{27W4foBZ>@zZ5^oK&wA0G>>3(nB z=_tlkRl7=^IY5djz)F}H%|`B^N@fc$!U93p>!JUCLgg%HX-*8t1d3_~9Q`KAStL1I z=T_`&NX~W03G=CQVt^u=Q8~y&b1G0Jc%ILk=>lO#G_fkMBdES(M+ocG85e>tB9`Mu zG{u^yyYZy?^L3{lcjs}Pj4&m*rs~qn1+18+7I+V-`xU}5fb{4T#Dm}~h~?-G#RApA zt#_2@8o@t6Msy0@LGU%ix=tVu?z>}%h^5SYst#|`?RKi;n-KxPtDEC6CgULFHb9xj z)NG7|dW$Z*LoVBdQ8qHPW;nLPG1|s7)TpSA+x*b}c41o^9d@vBVXW)ySPcUX_E0tp zV}U);+1mv0aGkx~(H=XD5y;~XZLi=*P*?~yh3a5Dr zziOiB59*4$x=LjA<>^C0YB=W)3&inoJVtDbJTLhkp73X=~498V+8a}_*VDyiC-`Z-#J1t7Xv?V0#6|-4&jgh#KEKTNsD2mD*?eF64M3T z5QzqEqb|c-u?|WAY7j0$#Db8+Eee)BqMAjk=7R?(RKmdtf^2n-cUXmHgq)rmrS=Z4 zgXd7EHHtfx+Jvn*JW&wPiX)sEhgN8o2dDziqZHXE7SI7z;dBaA#nDcuRdE4SETX?; za1ycte1*8BwYB<*Jr3=)%A-{V0H74DxsI`doH$9m0;*uZIXTfZkWXpIDG75sN#<0- zh%iNP3E&i`VI`WSBSsPy=lV`pdiMvTs5BhpQ%0mmS%1lQ2=>eHYoNvM!)d@XypU)4 z(Y?T1_;n2w=OVACAf=y^aK^9hL7AX)whr}KD2k*gb9Jl_lK99p->Ui8ImL-Q);@j^ zZ)DCrV;MokbnHB?3xijtV|bpE6w|Tu6CEpJ+T>^TG#$H8L^y)SGRKeJ`E+caAHE~n zd_R20pmeDY+z|~RqN4FKMF(d&BkR+#%l!l%2{?dvg`eNM(huofNrI~qrejxOcDqLL zIqfwiT$^ylPSdgL{8Za@XvOt@%#K>&lpW{on2vE`s}-ou)cR>VMl%lE@#p{^$L%=b zHmI154e|=)JRP#52e>WaAYJiOSa{GbZr2GqY04csa#!?0c=#4dWP_M_BpiF=;B3{&9};0HkXdVhRMk z&mo@xd-|jV_atHl2=#Qr2|CiQ=$-uXn!5p&UJ_L=}wOQX;NUQdAH7Czo3uApY|Mq+O`18*iAc~-l4O9!Cq2?_1agvf6v zoH8WZ(p=ur>F(m^%BUCkcsJp+v@3!S^CWsN(ZTI*L$rD!)>QQ`dOb9*Fin4;gKO4f zOmT=!i)g*JbCRuYeq5r%Y#=*NfBixS>N$?6ATKJ%HfDGT2RC?TdI&!7 z;|DO7<>yHM`5HeXu4e3q!|4Q1Wb4kv#<2~@sq6W#H0HDG-*dR|LlKs&>)-Z=;`B5> zovFjq$E5i)7e9G%wlC+W^CQ>e2({vN83%nch^tL-oiA_vw4{DvfaBFY^7R;rbO@MZ z)oq-q&bebJ1;wYs)tm_iQ=f7US5o7g%qgi17Nup2^1lD%Acs?Ck(9AVr&1K@b@!j0 z8qdj4J|i`r+3AkqOn1#n$Az;}~wzcQcS7b&_FgxG~R?@f(I z;=C`l`*hU+#)vWD{?zU#VZp@%3TfFbJjiczikXK}d%*K~I5pf4!__0H5&B3_bR%3O&3nwcDJN+f%#UE12{*qjYz0pj~0(!kww{awkf6UDd8Dly0*o z{Uq64RRnN%YCH=N@ja>CBca|^MVv^WTbvm&kS6~BD$Tk$XBOhLE!xB5Dd#Px?GTDp43QUL|(?e^8wUZvf3hSySj>^1KYIZ&1# zQ?yNfZ>?}5dUWs@2@Nf1Na^*|URS;+i<>tn3}0_?&<>_{2ydtMmOI`_4fi`zuPR~q zjtTFk#&bQwyrqgqcu%Rq`>El0AAx+JZf`Bjd8y(25S{oawU1CpUOBf`3wKxT7VNp) zo+z5Chb4+2pDU_{`wH&!{UkM>TXEe`wHv(3?v|#IRb5kPUMkpet_?+h_-Sf9KV|St z(RBOFJLtE)oBKTF)jo%tFH-wLmHu`;LapA-eVN*q$e}fSrEcykMY+?*tFKf0+5^5x zL9u_02)<1X_qPcD+NxbECBJj1?Z{|Qqf2y0{?)pEA$;CdA5w}j>3fEdq4vG=^#ova z4Ipn1Wd$O~>kY?}p}6Jqe#7zAP~7tQtl{VyhFd=04Xrz74#O><84bs=!*I*z$cE$8 zVYuaUV#6_K7;gE@Za6L+hFd=8HXI9v;g-+5hU2@_D`CSTYQ^eBN(3z8Z#GKA$xlUBhw9 z=Q{-Dj+w)8%V$QzaqMv1@;S2MICVH~`JC8r%o&bbKC>H+3y0&D&$$i9g5kL3Gq2&e zZa8lFT-9(a9FAK)H#Hph4#zE@I~$Hg!*R>!!G`0R;kf1VM8mOoIBxm8P_c9ip9lP2mpnEqy$hryb4(20peQkr~h79<(C~+27_a84o&&%WATGEv26A zL)+0=zG$c&t++mQC~kuAANo8-H%gNDSgvUI(fPQ{@H-BEju&IcgH1RwvlBC#8k?4k zx~xlDRN#{`JIPa=oY~1<)Kge>6Hk`Ble5NM4|Ei>ya)7bPE~d+98Ti^q9>lkuSGEX z=m@8?GwM`kXEqxu;^IpNxHH7Xm-HTIWyW(x))8*3+Kn`Qm{gB5hi%l%=G29yk^Jn; zcnF#+65{n7*5FwepjgES7c+tm7p9X|3+7bH-)>}t8y)0S^8Cf*JQ?XH5GPkX4fjg+(w11B_Ujw z*>x`S>odFFi+=;h1M3xbeHPX#W_DEAT(7XTR8co_hkz%#DYKirqHfOYW>0+!_uQzW z*7APW){+`6%xs}Yzb!K!*t}gncDqZ$8_FHnd9!e5W_P;4@4_(bBCBOT z*jF>-5$V@5drgFk)$i-rcniXBXwhkJIAIpH1z|iP{APpjTbc2^>3LF~H{j=O490Rv z**ji$?{e}Elu$=_KeP9t)fzs?>;qLb-q=SzEW+6?bcalPOH}kFiUKWa z=3`(|PU{o#FGc#4d&%7Av&?utp-`W5dQOF6(-F+mSKPPEY3qH%*A1lJH<|H#O^g3l zUiNLluM&&mcbV~g=H>d#bN!xU>RJETV5X~VU1fC@)62#q2_ICZ z1P7Ii5@5EPS+y7!S~JJP+6F5A&~GnL$0bJ`=z zVJK0!#fENL?!)A^p`c#ZtzVeDw#>c9l8iDSPf| zWjoD%XO)dd0zO>=K3(M^aBC6XTEbjVwFR1FqK7ELDP=YZ%QoA=Z)cS28{}t}jpq!o z0cXj}&JtgeF+3rnIc1yUnVnrW9%VMStT3c|ZrSFRnE}r!)A^Tc`n{fIGC!|u=czR6 zbzuixIlpW?Ke|$(xKO{KY!^873(Iz)SHMMOyQmDyq#*p_vhiH#q9Pm`mz0f1MXZrj zoyEMe&2t*_%QoL>TvoQr>T=v#d@d*(&wQss45(aQHXf%US=)!S+bha^d5>~s*{&!D z?78L8M-_|n*$m9Qxi#skvR&o*U0t@T%lQFpMasvnar%AKJzQI^_dC~>jpteqp?l~9 zRHbY@eN;t#WWc{sKk=?sepA_QQU%^vmI43fvJCiqs={v(JW(y`R>FudB`gG#Shj^! z+HGaK%?o`y$SkFI|IToSLmKb!oJo(`{oHOT1AhK_*oCpheeNpTU0#yA%XYWI?ka~} zYPL(gtLrcIy{BwEMc+qX3Y~k)#?xOVz=J6Fm5t{XWu*>}+mNS*`^$E}v-N;9^8py6 z=?*{wTB%hyV_vogYHQDKe)o#3#|DE7pT@l zDt1T#L#^0!$Fk0>*i5jjnl<-Tqxq43)-hIH73=b-2UhIBiWohpVmvT9qhd3Jf1O?l z{bY6fQTg(+Troi-lWut+v%@OJv)oc$KfGc*-BD-`M^ucb5Sf0Gpr6{vkrg}A891t9 zM>+KI=!)?a2?<@6!Z8)&IjXWWmt!l&<3ERrionNl6+4b16N4O>Bay|Ns?Di}rS@tq z(u?C0<_5qMD#oM9{fQMjQQ%>YKhRyCRI!tswUa%<$!PK^72{FVQ!93=Br3b5Pwr2v z*l8YnR>fvj>OZW0N+tg}zy4UU(;cieyJE8|;mnGiS<&^#XI1Phubw%4;@2L|uGrZg zG`C`NDnfkiG%}b_Hx)RWXQN zLDZ`&noC}#I??R%YOfqT>D;fW;4evDTQQz%JZMJ}vI?l!bsltm#jdX`yGp#FqE+Gz z9+zT}`bJLsSMrrq=@(U~yS3xeriHuO#w%4^`21gOFW;?8LM6Yr5^k<|v$@$R-&C=i zD5iq&Kviz77|$sPbz#L8O8ak8l8lDK!#FDGw}#s)cAM+T1(k5Syuuw7!*K`lxKrF} z2)e6ccU3g#-7O!x+q1dT1#^#AB1OBmVm$ZM3u|{a;xOFZU*Xlqy9X-vfLOVov{S-^ zj$h|f+egVvj1l`*()N9LWBdXGMBSy|X=3 z;ZV)a;a99-+~@I%J?@2gs$x$m?D0zYRn2}yQ6;S2>Jy)?7*F9*tZ$#8wN|XRV&FlP zXDi0@kg{U`PUT_1d#+;7IbY9L?0NWNxNBw^#wk4??_L10FW*7(C8CdZFIMbDAg~NG z6?+LP9pPnBv6m_FD;0Z%Xd3Nat=Ov`?X`-%Mh$m_*DJ>Ja-}o8p=i8J32#>HO%iCd zd#hq^d4jhq_BJBz2=7#knD3C_-3p`KyVU6WijUWn@Il2ssA#nNuwwXrh$4Sfv5&l7 zmbe3-k5zH@ab;@wq+*{C#yuYu<5>dH&nos=gMs@g&R`$jXWHlwP+<6w~Q zRf^vl4yiKC9a4pp1FNAa<8&dz+@V#z8RlkI8RlkkGT|^F#GnB+%pC@f{&1zW!>d!m z5mh^a-%nTKUfy798s|=^S}%=rCsbW>Csyr5&;OXJ9pk4TPO92TQWJ)YwjV)Pgo)j)TYGUlaM(dNmeTO^3>=~2KNZO0 zGErzxr&W!okQ#G(E3#z=Tb}y_N&jlXjMu&@(NFf(jjprf{!3TaXsoEv~G{kboaULjn$_azC@TH^g z7b`^<#yaH)B9f3+4t=hYj%=>+@;9afQQhqHOoYe&pwWa%Ru5O8gV8Zyyqul*8f4uJ z|8XJO*D?B~XVID^IM}S1k{{`bRu!Tc6M~L-63l^2WyK)3YCD)l$ZVsZBU#m{?ZOo< z&v3MFSKHMi6$gm;brBoeTE8N9hGUJ6)`2&%bgcibG~^u`n1oUyuW62Pp(A5V;J7m4~LPtOQ(axDAFE~;FJpX{I@BAw(8QYi!pt*T|vbgpLg zVd1Fyg|1^&0e%WZJe?Df2l~=|452sza1Q2^JB7lhXVr-q1_}Y>W$1WPfOaK)N>@?Z zlgN`FBg4?~w1DT7VA+yj!E|W4Biy+KR57l1^twac3H?9Q=y38_&CMM0uAG3mJChD@ zmxrU+CFhqTDp0>RMg%4~z|P-TUyMUPE{jT3gKN6K2sHOQk zx(*ijbTg)jx8#0PZfoLfR&%{)>8XV;fb{pAP=QB>5a%I35Fa{9S|HMuk0a8RJuvf+ z36}X|Nko6~5kIs>9`FBu)tzf_oYz^$-&YsgtF^6_Z&4gmpN(wCjpbNY;>2mv;Ppj` zlU8wJ4>%-5UG2WIR$A>!`|dhYl1@X?v}q~nWeRDgZRib1X&Go~DIW@BTEe|dX)}Cc z80hegPYl#!RndfD}RHTd_T(Otn{!5qSxi`PUb$LxIKYSyx2fzV9f-)}B|H%5Zd-Up)d-P<1>}R-fJH|nn%osLF;5gvM0*X(J>*i8LAr>ChJ@$vn!!FZb1%&LZ1HHdq|3Pc;gVx|L*fo2@V=qbc z3gbf|G{PWePN7d|v%pRF_i~8wlCHx8B+Tfw3a@8hHW;|H{z<#H&DC_>RL7Zsw`oXG zGFYR$V!q(X_+?#2hhSc*+l6&nn<{=*H`Gb@v%=?eQC-UZ^L?5JJ}=0n^-X`1h9=_0 zu4#6j+G8S7`Cj`u-uSpFE;AMlR8ozRyH|`*rM}#a?ndj_j36Y(!~5Jmb-G`wZNG1l z!HaJD)#U--qipaUP$GEQzfj~!z7_UkMceZzU#%R{(9wS5`qm-PVf4gd2n6yFCw%*e zd`A>TmUx}7D1LX`ktyyTPa0E?x4Dpft5n{xMC0)c-yK^i-XU#w2S7-gkEj96G`ORJ z>Zn@BT7x@c*)rlt7cdc~8`Q;JNsqWoQWTd(Buo|W0lIrUbg7nzchVYZ7 z6qzp-lJIFx;R|k5y_(xp-c4YQ^8_>0`L?{Ai&l>$%176wA6Y3rD#i1th#^&Tmqv@r zb2ZEJd29A@QbEp)dmI(>n3*}l4^U4pJbVQo(kP>%BtFgDT>=5HX^n@lYOU(3!W|D` zH6lEQnI{5QRl%yN@hH~X%)5$+%d34=(;Hc;;j`RV0}$MlxtglgRE>wSzM9T@4@nRj zUJ&pk;2J81AYcX)cLC0R&G!Pff*`I;$r)_48{&2Bc$f?=3 zZ?@xjX`3{Q9P!B3<*W=fIdej!R{4@d$&&vG9^az+pVX1+lSZ?r5>a^?qO7)gY5TN$ z_loQhXqe`qTq&*MGqz;#M)RK%e_W4$vW*TS)tLWR{8_!f6^fqI`&+V}#n5#ghiRsU z?BwUYdV1^QwyJzyZo-{yP;9~cKE23wPig3aoxSAy&3`zMyr7r4COw?6<7(Tsk{^(X z0}}VjNz?m7zm>G7yV^?ryuBu5EBT_m?|qSRf7pC@*;eu+W^J8fAC>cMZ6!ZuZnj?p zwLDFwNk?V8|L-Qbr%m^+y0p=ze-Sd&=e;QW-jZcs?L+$xBT+x+j_97-hW?jUB%e1=~b%V zNA`;%-?R(>{XM;pRZ)8bD?qP=j(-692YLq!nAofz&^Gd$A^j3bt}4<=hO0j^qxAOk zj-l$0^#rz?532rz{gRK{y=OaM{8K%LRo8!JR_am6e=aNaz80AoqW{8defa0G*8F$u zy{sMG7^(hJChUy?V4v4*@&8@DMb*8-zY0m=Ev)ED7-W1;_Urxp|HE6l&O!x9=q&&H z`UdFNz0+%5ym&pt8J8v%+Ok_t!}(ljyFRS6j3gl!6z=2yBfWW9sqgoNyR=Ol#hA;L zU}4|T*w9#h8fm@~$br`=6IY=A3+I^2Mo2gAFo3+_n?T$Wmi}&c>API4D_k(^Hw?!c zzp-4q41$%LlXjrElR_0--aroKRYWj=@lXVAqZENOd!6bE3zoW}Yb=iRv2W%W(|ZFH#1h3SAfPg;N#wz`5CHZ1L15Id+7 zxIkFK=8^RQ`k=frWT1*ZAd_X>zQDUu{5QQV&`$#gdnL7-a0=AM7yF9^5=cg>Bw$k&4i+8Cv~n7#4)$?KA?C=s=A? zUP<3p@Vk}1H+M(RKrq(jZJ613W%fxth0kZp(T{J-WMzQ}T;I${=XvKjCXEeBNp~!}$TW}p$31M_evB4g6F??sr z&(J0Fv?hX~1QIN$6C3^%sOK80NtWBZQe;;HxH`Tu6v1=WsZeD63mH;Or*dH~JIw#2 zXGn0%@-wYyxP@Zs6iNxVrmhfq0}*pw{PxRcpFRN(?o~-RS8(kVpNeyLx?L+p+iZEz z#IT-$;jn)m2#*P=$FHq9k5kc{JdblLV|78kQPssQFyt)@Y@x<=?3V1H2Hlv)BGZHym#WK%9xWCH)aZU zJSf;7pkPrQrdd-w?_}?A1QE{T4f>cSk}+wPUA{@F3x);K)#UZQNo(+WHTXRm><`>7 zW$sRGATtLoZtV-a`9sszGJXd&_jqwP-k;)8`yTg}6}GNhR9&X;DB|2vho`Vf&#OiD zv+r?5gN_|6tBu5UEfa1ZikO7{K!&q}~XJ#D&9fDBP0D8JM=Y1}&Fq zM$I*7L={Bssd;!!Uoe@dm(C6wx^ojqx9QPS53YZ0AUvY}ZuR~3a<$DuM_`d7S&!*F zHQ@p`VI?>&5Q+?n#BVWZ5EL9jh~Nxav2pj-6pHbT;9hgW{2Ay{hJfys1j9h}r~z=H z90=rd5DIilSEDokpjcE+j67fp-S(>t>^5U$&-M#|@w^GS1&V9*B#t&y4nAp3%rXSjrbC2i-Om5VxjQ{m^I>U~Ov!O2frTd+Rb; z%1?norf{$O5OdgCy~~y(Gtgd4IPUd%h?8^X`l~2qJ|%5SUDJ5I z_#VagWO1js%i{YK-$l|vtep?nluK4jRez)RxXYnh6N1DF< zT?mhEH*nvN!H?mXMMKx22=}5ElUp~zRkeC3L$BdN8t)SneObI;@%}7M^P*(hOFjW= z!#beS=6VS4f7*pJ{;5yDLEE=of1PZEN2k`O$Tgy5DW1fL`!I3x+d8%YSRNJ8*K5`q(w z5Im5Cpnej9?n%ffZsWTarISJ;fR*WDzJDF&-+(CBw>X@C42+N2ju%Wh7z%MN1^2V# z4DVZU{dg?mkh9RYyR^BmrSzWR{Fq-^7TDlxS9(90Qa%GG$j}0`TaG33aJ~RTNXDVr z!pHyzg*%j>?QD?hISlLiQYgL~7e)qy{H|`H0g7c>dNfOxf=kzS`Q5!4QbXx%n$H1S zVW33Mgu()=wBh^)tQ!|L=&Qf5QC|avP5K%vV5;joyThRL%%=QnyGMedU}OYE90Y^< z2!fnG^7_!qVyQqxK%A3ZgPRFn3Dz96UMoSIGZdn;LZ zb5Dwe?IY)t`SgLFLTPYo8VZ6fga`BycC)pX<}A0Gl_-vbDV2y; zYjHaceyUvWM6TV$NNBlrDROhFS#Hz$+Optq@p8Emxq39$b_T=c8l!lyLu}41MN4X* zVKh4}O3ilSwcu={&FDJIz~th!xE(FIO1WOoN|CbMY?WKJ`kL!B%9qQvx()hl<8rxP zqf!(t2B%uhI6hpB)Sau>8jI8~R}VKERI(BJri0VnQ5rUA8JwMJHX00FC=yQFkN`YI ztsd01YfFIF?6lVxp6kS5^1f!=cD2}5n@=>-NT<-v z%QY}|_Q-Idb7D~{Lv^cC2XNW z7vPVja%0Ukml>$=Z-Y;0z(|cG)hMpCYRm8(u%=`^S*~84ExxME*XmW*Wl0t4qQ}@X z<;bjWaY3xALSJtWDgRYr5yR~h%?^z>E0sx8bBE4a5X3!&FjAyeZC1gv=Mm=XfGzaqtch;pWS+n~k7G95E*PIM-^no0Vog zp}#PiK&o+A@%?N`R_wJ|M$>~c0#4_zk&Z7`M-((S_EoM*InqX zCgrq%?JXzNX=w^6?eEp39Ar<+iClGbANM(8H#x4AkT{Onp>b(pX}LHQF!d8aKQJw# z7MUVDwkTLGx97)M(opwpZhw`kOa?O)Rct6Yvsyz3UP7^2^|@pUc#|534>{*1E>5fl z2OFJw{jI^_iHnCOE|PS3V)f9(sv`$^2+mGV1&wkem@Z8Rw*=EiCuU|UtE=VN+U281 zZ=aco=W9zdlA;+2&lzT}JJZ +#include + +// multiple inheritance of base classes that are not empty, so adjustments are necessary + +struct boost_exception { + int x; +}; + +struct my_error: boost_exception, std::exception { }; + +int main() { + try { + throw my_error(); + } catch( boost_exception & ) { + puts("a"); + try { + puts("b"); + throw; + } catch( my_error & ) { + puts("c"); + } + } + puts("d"); + return 0; +} diff --git a/emtests/test_exceptions_multiple_inherit.txt b/emtests/test_exceptions_multiple_inherit.txt new file mode 100644 index 000000000..d68dd4031 --- /dev/null +++ b/emtests/test_exceptions_multiple_inherit.txt @@ -0,0 +1,4 @@ +a +b +c +d diff --git a/emtests/test_exceptions_multiple_inherit.wasm b/emtests/test_exceptions_multiple_inherit.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d322574c4d59e16140283ae000e31392b4c2d2ce GIT binary patch literal 55218 zcmeFacbrsJw)b7roZI4JFMcmU0dzADgM_T(X6bLWuQ6P$<7xsuf4WETP4FP#v#W*Mr zJV+Ev(+(63T+xBiL3_jpPKyrQqwHi!9DkdxnM|BCwa3Is`;710YvL{w_ua4aZ-uh_ zdhRuG$}jhuGJc;GJqL{6bHC0hKby3}_(_xYo3eA~et%gpw6}-;V#@dl?LV73vGY&+ z?Dv;KNwlhy4%la()&nL@7`OM{xlfN3eCmFU-F{R5IoZ@&vYyMM?9IPCTJt}8)_hz3 z$+zac(ztQsCj52$xbge!v)_dAQznj^_}2*&_n)%&ev=B3SnXX4-*e(#drulij0u0v z1Da|9Q~pe;3l+sJ;{}!W8n?Vno;YQv&dy!;s})i{f15mkyoPT&tk9q|Jy!JFJogjn zTD;9R&AqD2y=svf@Ht@8^6X0ET-t?HRQr#cxbNf%oqO*;W#Xi9`%c_(#ZQO3Z+`SgF$CQct z?!V)H2M~F;DV;UX$}fJI?J$;zwf6>pAGb^PTRcj8?X%yWkM@xLKzsFtFJsL)Vo zD5nwrO_iw9qi4^k*wEb4t5>01ZfIzTqEaa>H!5WzDaM63E>=r8N-2L3jPw#G#exWk zVq-Ds9Tn12Tue$6dQFQ4$5lQOeH8VP@{tw(`QyN7aH+~i`JV$k@`2Hg7!m(h{hw$D zIl8~gi{b$-sEl-d!uYx-AK1U^)&_`N3; ztjxEXRN+^+TmcKy+=Z$Xx}tR49e)clV=dlzO#eI`y;mG3?I&u*4}vHy6KdG!iR{gNi} zm%^Y%!Y8z6&iX1%{<1r1_UoKjSgpZde=&aQ#KNi#FT_z{a8$h^I>P^^teJlw8P)&R zT6_Jv^T=qNoJalB-*5lf<6ph+TlYLVT4Tu3(el6l{QV#PtN!-q+|fDtfV$75+;L3w zfB)Mv4{l!`>#xh5$439Rzwvos+wwSnS?)YGI`04Sw?`hh_wqPXmpkQZ{P^JHfOVp1 z+Tg|z4Q{kT+mOb=jahSBwtt6QgR8q1M_8dHsan)rO$&n?o2#XQ6^1lc8~w|oA=PT{ z!r-Q?(5je2n(*mSt!^6?MKgg|i_>&USqqf1LMUXFmTHJB8d=yPDOl7JEXtl;Ig46) zWQFGHh^VB*rGJsw3L&;QB$g<7C|WUFY@5dgOR}Y_=({uo7KcR1|CT!hB1;shIf@l2 zrg%*&x9nFPma|;^*SRV;a&B3J|G%-K2>dLnh(P6EC8&gw6|!yH#N|4%Gu^TtY?my7 z%dBLjmOkRXWu1^(Wk{o?&DAs0XoLukgy66hgf>j#ADLNO*p{!Bwy=$j468$a)wZy% ztt;}I+UmBciobeRYztcu*0(KeX!-K=*4O&Cg#kGm18txUP#%55O17@8B}fr7C2Y!2 z!e(oBnGzG}phm8e+0l_TwX{&%4M-TZmBOH}7@IVk2H|X4K+LJ~lT|3f4ICGntDDrU z2rPB&F;ZRiM`B%m7 z1MhvrbcMWzw29X&Rhhjm#q+{KhnU7lBB>@BO4)|)7FL1v=DdY9OH33#JLwW{pUo0f zFYA>vySX*D^cL@;M5%XjQV$i{(5_N8ZEFT1XqQD8skIP)pSXE(PtHQ zBa1pDvlWZIdUJJg6!lZ|{#MwaP=M`7Urlg7a7s4t0IJ8ocZU6%mzYsq_UJ^@`odBZ zELKCBy3M3sys0Nyq)H}N6|h-Eds&OVdRwm=?cR0TScu#y+GQ(SsZ+`fZ56*)NSmm& z77EcE5^qx&kL*XvQ$aTRZm^0qv`b-{tB=N!sYGT4ubZSpe2VhGc!Uj<3`3HoVUQG| zNK+l)3>U@QO19E+M%+-@fKX~e&5A0>Dz=I@WJs#bLUMIm9fGUm1jXelkX$tk$hoZA zpe$AMOhV+Dc<&$;`SJU2{~}A=m~~A*c*b8lq$s&_vJ}Ot9g?wfXr{AtC259E3+jta zakByuN{+HD=eW1bFV*06QT80m;u~42bQP;CkBfOAZl7GXeQ5h4id@lz{-IQ*??Rxc zO>=dlylIu`I)~y@$WSrM8)_|ld0Wpg0$0V+DpHqK|5eAnDqKY_=e}rsUs@c+ zr|Eaw*8VEn02@HAg_g|%=2af35gu-SWu>s+VHNCGh+!My>a~h4u96jV+l?(n*(3`Y zs?ul*oI)Va8M$X_^AtptD0AaY63Kd*k*o}ZD`=CgY)!I7#hlr4h?^4cf-qDy1JsP< zdQykYS#t;GrWZ72fudIF5`=o@jkLEH8_fxE&N^gP#loNvOQL9?L^cr49)vTrL}^ry zIcK8xBYG!G*3wCfuM>-{kIPU+RimtQNR$#8T1Vat72ERacY`X$M-;WLQe9kkU*qE; zM3Q$mJ_15A`CA#$co&Fhlv5L$LYLDMPwGxRkA^o{L484A^}Gop@sS$cgZB&%CD8^d z;YJuRk_@szqO+E*C05sFtK-!^5M%L+F8V*$}2fN_DTrC}y49OI5yM zZVzI0pX=NDqFPmRZ&zcmXf#Y#;ZQ9hR_B5w6{i<%Nrt}H@;XDPwB4AYoNGs|iA$(n z2kJQc}hSPQybVO4OW$+l{IoSF05ZZ zaC04ZrKgbpKulwxfi)YQ7l3h(3b2|NAi-#MD;=iOlF`A(IgAohSy`$t#3o5HYL3=phW)Iv*zmVQKRaTidALN zAYBMC1s7*UymK|vTS@JYro5%PA=)d2APsuPKr}aA)Nph4s5BZanq%`$UxT|j&wu<( zsSV|D9p2bB7C8-`*KXM=?0_#CxTEbT-<@nH_tgLb?Si6w=@#5qe8yAJhaIeGbm$R} zupVf`4p}@!#>jfMqaW1VXmq2hFPfP3>IkhSTT-=3-rne_;EY7e)&) z>=26HLtr?jV!{#|pxPgpMN?G!)=xI6K>f#4yyFv#bb8L>>Uh(me^FxN`T(Hc;3X?|uSmgkXCcL{pQ7=_v$&>lvbyauE;vPy-g z$f6XA-lwjlq4Gwsvym5z*@B8S%!YZfhT~1KHz9lz58u=_RrqGMnTInKP_eh5*qgUA zAscR6j%Gr(g>BUlM%gH;r(m16F*n=XhHGBO3`?`TZB=Sbth!6h^aBRB_PNby8%@6_ zc~$?fgG%>}_$G)p+G{Q*T zRtu$?zNzo8bw(QG(D!4Lkxr4mAA=WGRzX+RmuvqU);f)1 z%XaF5HE2YCeZr&x!OG$RP4>>QWn+=svRjii9wwNEOTOiN5TqGvnW2vlgj%*iG3Xx( zK2o76DO*gIxTQM~(E|CR_#u)NF2FnLFQRLD$QrgLan^7ej9GAKc*THYdK?Xqpfw|- zd~hPtJ$R#h2tscy^a(9vRd(g0jsSD7fIhtON6W6;(UtS`GW_K2qdGtCNFV(6$G5h_9mGfD5NH#d9enU%>;cDA&9NL|R*@iha*W3hlCD|58v*;8~GF(0kU z`Zi}i%|*O=qbBu*KJZ1YMlOOQ(r8PGU~5!XgIEke7;eKej24D7E9^`ggTT(LbZlyy zbc8MA5w<0q<*_#-cFE$<;ObOT>!Ic4t;aUYzgdj%v2ckJHiSx63R|gvDdnT#hK!!B zFGCv*KFE~8hjJSr8SX44vH=}5<1NUt4_Woqcv1^EeUZ?>(2M?kE0jcflFuQSI@_kX zKXtrS-p8xziez8Tvrn^@uvJxKfUUBUOm!;8SE`k1<@&^<-r?4|TSn~EDt3r=NBSo0 zSQ>^grYlq#j4*Ym?1K_lvSe&n4brQLF72@rdbn^JRcY#ISDh@atxY=&S8du6P+50Q z4l>%-u|iXqj`yI-8$*j^*QjoCO~!Z!s+U_^Sz@t?vnCm?9eSiV5**d6x`KFQT`Ret zi>B(mlnRBNUtXvx`6Qu*C@rW`Q)qVfeJIN4s#dqPu}CXj!20Cd6G6ZiW7#%3gJ#t! zoqN8wO2#X@IJo7Fa+PhgEG@bM>xbw4qdSD8v6H(F#i)OCqgx49ylp zeI>qU^F2iG7_YT#C?Xh=uV)US9o1be-L8S%E~~k`nQutXszoW9aD;O$8`3gDVpOM< z3uIcLj&rL+$=9L&Gy=xzwqDFR6bWtN)o5 z8xAb$g>r=X{z@&}><*TR?um^!z8X}JHQK@Ed;DE(*YG>J*KP|F?B-alaS}Sv!hgnj zVO4K2E!1P5(A(X;r8R$xN7&!c_aFIJw%+Yw1~WgK5seAQMs{pe9Kq_?>5-itF^iy_ zbRC167#cTQ@3wGWWamYCuQK%Q9R|~SX1Nw$9@*uQRP36_u8C?&hJ0>~>{du-FBigB zns^cz?o-_GVkDO8e|BGYqV}F^Me+Z`ze0@Z%o;_v*pw8oe-!M+DD-Vgno#9Jm7e9r zNT%SiNCJG!CHRB4+-vV}UtT}lXT>vPn;F+cMDinIJA$Q2J1i#8 z!(;MH{8Qog~)P2Di17w0Js=_Pc6W zCyTzSPq+ZnNzBhQTO z%s32y=sFBdMrviDI~U5%mPcDS%Vl_$%kV5Gb#`oL*GZid+c|NzM_V{IwsYfb(AY4W zLgJhf&Wr85I6LC8Vn>)0+Z->|`LWH8?fkeiJQdqhDwk%pXUB}o&x*scSY~t;QiqFT zd3+vAPoZ}a^e%{vXO+%yacrNvBrkE+E^*c_an>%4?b14Hm&JCOvvxTZ=&a2ZYnMZ6 zUTpJftX&b?70%j~vCWO`N?3a`wkIXPi(`1ZRJ>gx-c+%8tpWwHhu`OM-i^_V<&%Z= zTEkVbU8Tg!oWljNEpW!Jj_v9?W7ouXjq3W^*sk@guZ!(E$zm1SQ(CL`>tnkJl3tT-CED+w%Bg-dcHkos&zZ$m^?0wZ6VD~ zRy0p>M{IZ0Q`{Nbou1;Z*b=)d&Jt4G9oyaUx=A4%p4j2Z#o=COEolq)#ddETRziJ- z*?n>Ng6dNd&>R}{D%}m5?zA=BAKU$EsHj*;wn$CL^?Pw_i{tPBf{+b;CAL@M@N#S~ zQ>^yzbZigA_B3L6uomI<*j|srYq7oN5nhe$)i|3rIV_3o!Pu6>9pRza9*V=mu|4ec z7s(;gk2AKn$6Z+##o-XwwL_RIDX?zn<)I;ex6eZyW8$4=r8OSs=8m= zFLPQ-{44uaM%Dk?eytS0vES74L?eG|za`6GiQs?Oe<=7r?LTV-e{a8+!TAGv_y+Hnwl$i^CtGPhCz_$tJ2~f21fADT>xr zHxajgvOoPRHG7OsC=Pq&TJ~IQ&&A={*q)80WzWR6mpud9f6jwnitVL1yhvB%!7s%2 zg6r7xvHjVeN5%HGy+fO|NgnOiCWfAnay{WnLZ|M!HKV&q_pyB>lzqkYzG8Yt4A=XH zpUB`2v@zi)Rqf38x1WR#A1ic7c>CM_HJNl;XLdW|>B%-Z+iGl>VpEp4qYi1n0it|> zD0|AOHno=WFZLHt`PZzg!mMiRecJ4=ZQ;M|zm>t??e9L{JJ1f)X#Icef3nKxaF88D zEglFr2ZWC9?Tx?Z1SQ~UHm#ODoqXNDPiyFk81pg4nI55>T?{;Ix<((~-qUPz8HUuo z(18K20|!UObD;QUy~}I+kjM^+RNvpl#+dB87>t6am9FlfieSK;Ay5o=(2^<>Pp+3ksJhH=UgN!gU%BQ18L^d;G z92|~}?8t~Id^jpHJda|={3fG{NQ3#KBYRUzJx9}5%#5miW z{`mKfaC~IP0ei5uQ#+oh@5J@-*#GM{bHFdV<9CL15S==F;9t% z=j3RcD9>(CQ@T7Rb#Q7u;%SlboEovU;e4&$RQw0N&WMbso3GWH>f=}V`k~I(EQYO- z{m{+Vs`;>%!HBqAMFgAr*T@dcDr3W$k)5g99GGU6YB(#hcjAo2-?O9at3oh4D`K*K zb`&y}S9m(1!ri6PuolEc_x|8QGOI?~w)G|0f)rs6if_sI^9+K@_XJhC`C< z{+v!KfpoQWg!z%pciyk^(ok~?B3s}-S4Va=ERs6S<^(MeUnP#yG&_&CrLjm%hs3p! zT}y(U!*!8eM=?9XCye-6g0iJC`A%Ok-)f<$SPlFJ4|6c6>ojYxdjcEh2`IcZJK)KshPgr9ogN!m2ppG_e3o_hkGNt zHwvp|i(C*ry0ek`-yhliUi1eddq73Mj6&Z}^*k8agUb^&btjTS9G2K&48tCen0MOa zKC@!#DJx1H+^jwbqq|x5nCFL@`Q*%ZiJpk;2^r=>X2#|j@@yGJfqG;wD6Te(YRRfi zjY=2&!(Xh1zdj7iOsrshtcA9{6I)};nD9YlA4Iea_P}ZxGG|&YEGTb5)LdAs`#_2z z;$6b6kw25ZT)TdZ&9nk=PGmTDwR57D9mBbL8Cm#wm>sbi$sXmL$mY1v&X0^|Hp=~$ z5*DY13nJ>qEzY=mZ5|R$ChWE z+u0{0dol_Ygx%9e7!_&XQ;|L8+&mrG)6$Ecp^2HV-NW20Y8f4#iR>A|M}=o2+e}+s z&&k7{i^hiMBg6A~ME`bdZ)@`Ml&c%5D;f{I;4yo)g_o4{B~rW`*~`k~1=zqN^i1`s z{Im!lQ9reu>1T=QBL|jxVTy29SvF;*vMhKr4tXWAR}^gp{msj|B(fz@Se<}1ysWFM ztglA)s+aY($X*j4O?9Ck3l3`t}hrJt7RXE0k_ab{wd9IaO4<<>Gy)Rp#A^W=FL!gWHA>4ly z*%tN@i=!V$_OW7rMDe$%hWBFQ0b{r{g4$9dd>YxOim;RjYgJi~SB^t@wJph!RYqHn zD%mpY>MBkSpNXMidGKfANN*7Q2yO7#>*CC#i~nUg|4wb0q7T)0kwwZD8_a&sCSg^n zYwY&xWfdQKDC6gmeXg1ZR@fT8i0lhqP{2}3H?e_hVUfL1&A-2l>`U(-zKZNC*T}CU z`?(Uw8v+et%6aInmjtKu4g-vt9HH}Rvc}Yt9b<6^5skypA zzQtM2S8cVwh|OLOjDrS@v+cI|%GKuTl~L4JOZt7gV{gFRqkA=6OW{m4g;s$>M;#%z zNaOU_i^E#QKCGts0x`?sO3a#ZZGO|6WpZYV!s)O=3NT5 z#3re7VpSeKQ??6HqBPW3a@Y|(qcJ%?npQq2*7EU*5nDoi+1sSX`!oIc-^S*|YH07- z=%Zu?$(4pi>4=M;oh!yzzPiB_U9)w~Imfc1Jr)dc9>C07lW+wvbJu#tuC}i2>Kky{ zc9R9$jLO5ZW{5UZ=?bRr6&wvBBQHqVJNZ}%xYM0dB%ZFdBe2QX3hnL7c@ zv6--pXAMKCIbOMX%6FPij8#U5! z>J$NaATowr$K--N#q(?Ip3r!HK)OTkyeyjk|JnX5vU{=Zu@{)WJYZjD^_uMy&~EL@ zug&^cn`0hXVRj7K0PCkhjwHL0%5FeD(Gl3AWlGj^z+6pb3QS;B=7#QBlk)(cTuW0* z&+D3KY)ohgLghR% zqLVw4+=u1C$48o;u-03?vsUobzGZe1u?uaU)>+VE5sISQf_5*cccL2P~Xsx7;-*LOhN zm@~u(QL)irXNbv+a)UExs41VyY45h|W-c4n3FSn&QU)t4*QSxlOm#$}LoWfH3V=;= z)wVk@@mj7xE@#H^fN4d^VIbLRGq3sA63NB1ao?~Nk|3m>^-3cfyM){u*?15wa3x#i zf7A$be$>Xm9nmb9Qy2WseH=XgzzY!52~uJpGXAps}4{za!9r7*I(z5 z)~lnv3gQ~e;ln;@AAA;Cc9lW~mM&46>o-o`NT&5VC}>>qu1;soFRmbo`9(?M-9%@N zE=uG$9n&;lu5fc=Hz(mP_dN^WJ#2oG&-nKckg*;7_t@}3Vjm=0nqfVcQbe=D;YB;V zNXYx_+Z4mMNyg46y8oy$!`;TJE29q1?mab$gyhgB_q4?e_#DrI3#?Y z*yk(y{G2&yJc8LL1xPijT%x(0<~;A^Q;6(tSh=6f8P-Gp+horj3$=gUjy*dAV_8i& zvWJPinAk_e8rx1|vp2QRqAGd?(#W?^IkBL{*mD`LW`@$St9q`cm<0o{Tj-IoYS$=W}teZu)(!s$wgyf7Z|zPSlnh1?!*MiAgm) zn@}(e>nsh*tE@^U8AzV?a8_bxp)sxD?8MGY?Chj7oRh>O>>TtJ4#SU0TH~5Q)pv?q zn>()|_RdZ0yQCIAj8Yv_v~!)>?8Ih6L6+f|qSBp9y1d~$o5S$hfy! zljQk{oexK&!UcTdY!4SEc7X(QA!>d;lDRmsi<7zGo5Xn9S;n~}F`o9;aA{(fim5%a zYFoH0vCEQdn5^GrN$8UjC-kX`IA`51Pwes}WB+GvVsn#heU?`fo0qtWxFW&cAge1A z{^%Wb>7|w*pEr*%3;A> z#mmC=i8|Bk(c2pmyTRpqV`4Yv#BWN_47-Vny(O_*a=%-(tAa(ojc>cv^SeH|KAc>% zuA-fcEKe!gDRuQ!#hzNU+mdj5Vmx;t#D$41gu~WwM`CwKMyJ+e7YgIUor%Huok>Sn zoER)G#`S1ok18T$)=IU_!}f8)Tegt|ayPzg0x7V%BCS2cJ&E0;bZY@XIJHQryDhK_ zn?vzr9Hy}~%{k|D5Bni*jJN??7f z;W=a@3({?g=CitfNU_#*w9WX(Hs%OepbicF4k?D|MNIGS(prrFl!d_SKf~{;_B&DU zw2P8#Hd38zowTuwXk(Lgkf>J(HoX`Q&UNh1 z(4rlhE7ZhAi{R<7q8+we!S>Vy1GW!<=wTw-trESMe!#~VrWSuCLN69#4*;tAyYS!M zx&L>z+9*vv;OxKCY_%#Iof``#sd3Gq(V8=mXi(TFwZG2`A8J6uY%#QWTF3h`vzQk? zN{r{j^M$5--huJ=nFxy*ED>xiuoN*!?vofi4~w*T z%;(m%!A}akt-DR^k=pjOzqf0`fvOzkY%uen8hj!Gg^j3)t*MBkqVV4-Z>#e*TyOu; zO|ciA2jKa;@E=uH3D6~`BgcsM=V)|oISejq*jH!8YEzds?UcS9XKzsg_8V6Rk25@E z_8+WAsIZyVB-*u5b0TXnqcojAMP2=gQJOVWHJ9GXveBB=o<=sAb_S>9yLB?xXGNJ; zB)(I%S*J53~whmLob0T&j*uLusv)!e5=S3j#bcSh8WX4{EDwxo-IbU}^KGO6H zB6cB^?}cnjs(9zK){R%NZY|zQ;Zq4O(bgX9UqYX{RW&?M$L8UeM(prG zCks2<^GSG-CYLGx<>W#Xv2b}*55vYfb>`7P38Btx)~V0Z-Y3*&<aY2y&b70CEX?fGT#0b#!O@R(hW32fpK^>}<)wOkP88+HqzzH>Fa zq(PAidA0WSkZ_w2is;TY&Mr_zs{cA|;Zd#^6YBM)go?c;qGrVfyG3|tT~y6NXV*Ez z5k^#POB*pd--aRKmRdOf3k&A$;l_w1bMbeRFN8Pjqm^<$htCrEExyQE!$h)v9@b3t z**9zKJ`T^s=(Y&dIgGM`PMX`I(czAWb#n5#ofI1A@ZFby+HrC}1p@H5rk{7_i|bhd z_;oeh#a;;=DV*Ky8vHgjagY2opuJbyg6t4>g!>}9FRGo{{1uyr_AC0c$VP+*v?*wR zp)1pFpbGYo?;laHhqXnNacFgsb`aS>8WkSVCK8PHl3G0K8;f1{7koEqF)hQJ)MLV3 zW?f)F9*>MTkLMNlgnL8w$;cLKrwHVgwuG|EsC*L$vQI}WFg1qtylMD>qm@`ML1fQH z0HVsHv^n&g@?VMB?z2%?FV*L|_1Yupx>a@`r4P?*=g8Le3F!+FJ3_YZK7c{x`65}f zW%QD3?aSJ(RB2w(R*#Kn4X;MV^D;tvEV0Mb&p#1?XIhihv@OG~DWo*}cuiY8Qv27n zol`t;$AbSGu|v9JRC86sX+>LCXRY2)Zfw?!)>eX@ zi*L1A0*gb@jjut>k{sp0wJB=2xfgA7sqS}Cz9I6xZ?}Ah4*bYwb3NtvwUlc0xHkoO z95#1bgfUuC@8~19mzs9PHiA8uv0=J)Trj3xOkhS-!^??{WF`IOgvI?`!)`j7F^cB> zGm5qwz%LusuC1A$*=}QjCDNB4qS4yV!tT!K?h^B%f;mg3hsEHNrCx`};FZ;v?;d`h zMd26f&xr+z8EhAdz@c&2J=N#W>D7MGEz_Un@4kn1kBWLPbu>9VlGr1O8qZ9yaS0%4 zT3up1qs9mUJu3VAm~ISoM|di+r_}m<-RfvCo4%69W`fEB5E=k<6*M#lZ;8T`2k>(q z9HpRGdIhrIt-dj&xlzVK0OZG($wOx zSzTn1+l>B4nQGgL**Tc#v+@DS*|GgRI0#yHdUkBHLD?P<&U5TDsyWAz&)Dhn1)3%g zzBg;nvCJAeT`1@SnsPzR-b^(tNo+$~!ZZee@kR1SfJ^9(-$<;=qWv35*g}VnATp{= zIA|WIT_QBHs9h@fGpR1gsl6&{uR`r|A)s?=uR`t3oZ6dCO{WP&d&95=YMtVG4u4d7 z3-wZSK@Mlh)EZ(M_4p+yX=WBQiC_Rx(sfU?mI=91A_oMtRv5 zz#{9-3*zwGRN<^TNiu-g^;@xg1S3m8u+wA?v8bc1TOA@ z3!u}yZz91#31* z@IzXPa>4Iry~gI?X9UY&ZntW9O{)o7ECLF>C=MW)=W*&}!sQ3yc_FreM2cO?i1lIL@*7vs>H&#&gjGI(4hCF}DFmI=jd6@Z-QHyz=L#GXiGSqs^d zAp;t~Q5IVH=_ePexTA1N51C}2nqH57&tj;-y=NLXQf*(Bmv3t z6U~7>5b~V*2Vl$;2?LCHqX+5Ayjq zrf8s~eoF5ghwZvE+ahdNwe6%-%W^eb7H8}Lw~RvLl*Q*UW_+6cJmsiHHN2kKZuWXI z8Z=|U^w1p1HwM zA(5jJ8)HW$Ou`d8S__^>(Lao-hGP;ceFHm2t51s19*#{oAVAd|ml%&~U{@r*co7plgR+{b8?cgDUS7N52qxyNjNnz zzE35;)5O6hb{ZV0r|;78`RPhzxy?E~A=QH{pVOMh8J78s#LiF&=nckI0Rge(p+8Ei@PO@2c-&VQe5_~Ms7M&oBiy! z2~Di+uOGE7S;ui0cjRf)Jp<$1)xwpQ|Ni%H3H)0E|CYeNCGc+v{96M5|B^tYQ|(r$ zEf*HpuV+}nV5si1bcZ>DqWFNLpZOY>);C57xzrC#K`B&HD+IIk<-}(d}ExXFbcIiRLTZo&9@uC=4_384S<<%EE$bu1fbL7`L$1NL% zf^kpuKffPYyGMz0M)^%<*%C(meua|OycvRfe(Vt&YDHb4qQx+Pi3M{5s$SQlJwu2? zy>NwcmMYk<`pM_*1M&+Ri_%MK5&{dGxDL_4xG65vhyi}rkGvCRUL~JbB{dwLU+|-= zg}U$cs-Vy0%x$Il3PA(#F8I;CL`=n`qGW`IQgIDA5K!>9#`>L9s9oO`Zq1CXN6YSN zoXyofxvYxRXwb?b+ zUQeo2`m0+=bqVFa!oyo{wE%8w%^IDYm_(>*)7UIs1cMOt1`gQvDmX3o1w-g$}b%d z62pa$RS8z?zC_pMh)oew<(x$@nR?>}NoyEggYfyhTsNUs#bVjpn}ynynmJ}pX-?CLrTlhB z#HsSgn&isV=+HmS_hX40qbcqc9dUP;jKzT*t*CW#S3K^!Rap?SnjmMh{7ekX+6Y~ng6hayVxPy~a8tU6kY zqDayY5A-cnX)DkY4JS<0* z^qj5HRs{F3fRkb`;9B2ZyudFOIl~X{!^yE&`+Pwg^K~-|PQC@f%I&>zhAGzSrtT6D z?S&EbbHA>T=iEqkx=V_+Ld5rCJhpx^PNG3hj^oQEg>0s91Uh384985igIPRk*V@ZW zEx!nxCotDJ2pKS%kZA3~hJj7H7O#bgKv`HQpiK{f@0*&hD`g-#UzHCl{!?=>XhwDU zVy>3dz})b>3U$DCAFv!&oT|ObGm05^P+m~93yK-=+bbQ5cV)3N+@vtOl34c??H+9O z)Udc{i;3P5UO-)n_5!iqQW&nO;gh0$;<3If+IKkENlK02nQ3P@DJ2Zo)Nl^lHmRM1 zZd{t$r8I*n;hI#s!KWYux3j^{32GLVr`%@=TOscAeri0or>)`3)V@q< zn_wdlXEJ} zwT16W#&e^4y%22M|hxY54e6UDccg=7wG<-;r+5o{(e~nBpDLjm2a%duG)UdeZDB$7k=1hdc~$! z2>YU}ZHeF7iJq)cf;zflJh{h-PUp0W@%RNYcnAekF`lcHMvWjZ9|b}V%6&%N^C~L;6&1TeM+gp2SP}a04yxFz(do0OPiwb#?+^+uu5;3c033E>p9G!#VY$y5IziOcxL|RW@)l zz3Jo&=9EJ)t~m$VUoroGrB^#JRD3j2QjY)vO_8}sLn7#k%x}vmsq2_7P?!P_)*%)J zA0pHj0~7{22SI3nR2Ma zRp2OvEmVq-T6e(JmGuOum;OSa4w= zmTOorLbesrZAI+Lid{)d$^t zUE`#$^J^O5@p>JdS8=yhW!#`+&Y-_k1g>#_gaf!d5A;vfd6R%#D*Mek@~mRsB4Acd zg78~)#T_9cK{zA;aPdeiI-yd@n0MZ;)6isEagDwsvO5?Ebm|~B zr)iVZN2*Kw90=C!RcWz!eO=ftX~Y{sZ&AIkMtK+VYSb<$*AkeVDkRri9_#HKj)gs0 zEhQ@3K|f;E-pLQ_XM^NR#I7HcWE0_^D`&vU)~oLdmn*+AShMVwPX;xs6tFB z+Q))7sjFEkWE9al1&bo)QWAXXAgHb`P6B)uarQ(BmI(}{{^xU{r#Lv?3A!okSw}aK z_@N!%DKB6$7lcws(%MYk%M{o!eSfx(kk-B2; zg09M%tmejKx{yf{-@#nh;vqkzH)IEw~;3(au zsQwE05RYmN;1JI$qw^~gsnTPd!{c>NB5$jP9icUf@3Gk(1^8=9Q(lG&XfzBJ8h~>Z zT_n4zOveejQBfIzB3eBgG*uv?RWUn)4aux>(C1_i2UC<^xp=A^T&3tZB3@48AkB3Z zyH2;w8|P~%>Tun(h|Ym0T3w^FyDQ*@U~M?7O+yjgu$ttwZZQ-|3_}p7NDy~dnA8ss z<_ioMru!<{b~<8!#9PBGZNKw)Q#jcSt2VXM-xgOrNX~I2662}!WAH;7Q91TVV=BN#cwWSq z>0&{OG_cAcMX0_*iU{k}(Id9G{l;#I}@e(^K{oDcPettkf27mrs^`)`OKK6 z<}e_s`vSpR004Cg`9tsmVmatXu>kvU8zLpTPN*ONGo1qc5PTi6ZV>i|dl2a&VktA9 zs>54!>!IrSRzv{S@76esPB|dEJqY*FRU0j#-lj_sk<0dBq>TuzDUKa+jIz;nHOi~w z4!_J{$FPHq3On1_FvbTJW7G{e21wZ~jD-P0XYUa1$948j2LbIoTG*evgt@qrf!fa1 za7QJ79h2G)Ab~5u2%s!*6aDxp<+#>)FFW?c%1V`gzb4G9xWWu zqlz{XZ{WfL0olm0x-ao@_g1(1gz!J&>`B68>>bi0kEeA%qm5*uE<^H6o`SNxq)YS^ z;bp(f5q2DEqkJTZB{6Ut1-}Y6UbxqUsc|!uX~g$x4B~PLSB}uKUzYnNxouMxG`9$w zdF5;@nY}IyjtDvAM#Xld4f$-Wd>m|}U~o3vQ9>|Cn|H}a18Qz0+5{{PsLm9)4(`|G z2F0+kZSMHLs%@5!_%`N8)L@(*%%Mpl=ol!80w5C4)4n3`bgVcp=*B><7*y~1bR04& z{Yc+)F7(YTW0b9+CXOm77l~_lGf%9r=EQc){Sb3a|6A(h`!1bf)55 zRk5q`ao-16;H5(FXbudNhaNJA@@U-mnKScQOs+oqgCC@`Easw8S&0l&lZr03<;{EdJ-%HUhw-za{;t$gRe)l3Zh zz`;y~s5pc}0%Q-5$|o&`k*)+-k4Q`xnnxt+V4j)`GsQY20lh=G2oVcHj={-U_K0d0 ztr`y=notRcCJ3_CHQu2%8WD1+a-`ZjU>}~toz_V1+G-Qt=Ey`rz-^9lW*ly#Q64}W zJdaUiA6P&Kq>ax+cm8kkDZ?%)MW1C=QBrS+&`BRln=))}$nxoS`9J|U7 zW|Dw&nG5__=hc38^J)@YlQ0~+hGn%3~rrn=;NuqXtzt^;9RI3@9#sfMe z$sy0>b;V&xp1gkZ>U`J_OuCP1?{-&+MLIhvwjL2&T&nk|4t%OhTugFG4`x)&%g<&k zO2SI14bm8ra}FW{B!g3)oX!pD$L0!e;Kf_n-vgN}P9;b0|cS9T*mP-8a` z^eZD4AoMObVCk=T?i`PL-nD#50!|vE&bo;IX3n!70He<(;F-lJXPsVfMqf-gTO>wb z;>fjH2FIyZ(oZElt9*G`Io|~$lWut+v)2-Uu=(}~0z$oC7l>|o6k5O=2?*`n$4%l& zY8G!M_NFuNR>DbmC45`w;%f;B?aqYA?<5>PCED_ec~^)2^PhwyTljb{;Sjwmf_L*I zdOy*5{_cfnSs~_BwJ)q58ka9kf2i|}+EDpOXB#z%)@wTl9Ba#uOLfLEYaW{)aU>iM zAfBHpoFj~IrS-j!ojoFA(LU4hM=8WI9eCvEqc|tkhcu7Rb-2G4yFvE#3!R@-g)3wX5w|36O63!V|2xOOdM9!=7AcjMW_;6yCAR;KY z!*qaEjQC9poKjVg7nRdIGdzUzJUlZ!1RwbEb2%&W^N#;Gm0um8X6$zcU<8+LoOPMl z_@M4swsHQen_tzwzuP#M+{5{|{XRcb&+iB8O#N}i?Agnnx-6Z{vHI+tjX7B_VqM1h z?-b%{6I}Dm8$ZXVU!LI9eM2^so=9iIIc?v@QTvR$mx>@eb>^O<;vBUoay(m7PL?xEvq(zcqr*yyw9x&}DjLtJP(Hh8JZBYm3Fo+LR&i`Nw`jba%cjD$ z6}whLniWY`vxl9=?4r%~or?2{cAjT4r-;3oLk-sI>-?gf?*SJo;6ep-MVifKi#M+C z1*`BE6^-Y7a=y4|7mH2v#r;c)c8TxbUFs1oh26`F#-pg07wvK=Vi9#w1GPD~XmdUG zyrRwXY_BNV72TQ2uFNaeHZ;WKw!*FyCSBhfO^S&KF7qJ=2b=Q(_=b{Qp^=HG$5|1!`NjhbM}h#GSTtc(Mqx#BS`nH^@q7Wpt#`{{)UZe4LhS!Vu*z0Z;Ic%66mp4#;j4yX0ef01+i48@l%ju1x zy`hXxb$;HYJgT6#Ife;eJBN3Q_O?6TEgJ53rDGMs@EslAD;m#@2=ulJ9^rkZ3Lg{= z#|H@ILs`FdSk)^U&W})xkBjy(TFEP?8mr;nirvPtE|+VHrs`s;BFJY!#c(g+y5~=e z#&bKan<{pbSKGbP7P6{o3yn-gJHa&~H;bPYjpwKIp+(f)mbsn2+Z)&CMPBW5xcQ=J zU#Q~mu0^QUtlgJI`w~I4hOcDpzEYIg-fewdw68tjn<6J1zD5M!77h2ei2wSET`x_a zJ=AugQ>bDY-H|=HvHxB`_F}DP$-AcSi`g|p?R)2I{?NP+x_c-S5p^gF>yC$q;+D_- zb;pxKam#0M-SHy7*yKLX)*WvQ&7O6iC3VLKL$f9B^G@BdY-sk5`z)5 zjv2$UuiU4r?l^i_)}>z+&t}#gClA9dpX2L}vxec8&*^o?1;cR5XLj8&cNlK@TvB&j zGYq$U=GPs!48tv-8|sd`hvAmb!n)((VYuaUf8FuqFx>K4Tz9-U47YrqtvlWrhFd;M z>W&YF;g-)kb;q({xaG67?)YvPZuxvwcgz@$TRvTN$I-)a%V%cYaq@87@;SclIBPg= z`J7&NTreEBd}h}jbBE)W&n0!oHN$bsXMWvr%W&NCxuNFZAkuG{{iB*bL@U~l#n6>n zm*3Aeos&6i1~bvumT*_fs4TTZJZJ{HplRM!%t))@&=lQ1lzqy>QiIr`L_H$aDD5z9 z=xZc*gzxO*$#CsRuD9?m{;1S=j`W~iNXRxfHw}5vFRSKb7VO|!W}?O4V2 z5k!m6O8j?VkJE*tBtD)S{JoDpAvOF?fS(h^*oi4eCB59);^IrJ$GNHToSk-rn=5uRO&=y@ab~ldn%eA|u+*KOml_X2b3{VCp3hV~ z4Hu+#f!Dx=+^6k%U8Ksn0Eu7B@8WpSC8=FhtDH-yoXbSPE<+lZrv|yph&$J7=ki*H zHrJ~FPikjgYL|NzT#*{jJP(4v90**Q+LazQpTWmJRL@mjJy$6*N1*9xa_hH1C0~$^ z4p#$qko@bW4sQx~tykqbUX^|mTuX&rpW5|GFsEK&>qrPUq;`YL{KnL7^y1&d z;n7-!-I#`T@;M_FHpeS$9aYrL+%VyZZb|JHuc%v7yVXP*n=KR?a>;k#~}5%DA?oBdV&qa zG(5?*u+J+Baz^aXBeNbUK04L^a{Urgz~UXDfzM51!g{DN2vTt*Kl~@$NOO0ol zmus2l`aPE%C^Rot!Lw$$;Rg(>XZ>THnXZy`IaYIe$#^8;LrRq3kWyX(RrDUgg=B_m?`<+^{Q=QsrCGBeQsb$?WN_K|(&MFy?1bn6h ze5T4p;C3RsorF2RV)He~L=RDf(@N|Wmh3FYz@1&H?USEVGM=-62%IY~J6C*3#_)uQ zW|wTXXLer6c$C?klERSg1tptPVgx+9gz+y`^>a=uWPV}EE>vk`bzuixxu|43Ke|$( zxKO{iWEVU2OG>ECicavV~OI9VNTN3w|TZ4QwqPT+OKM+uAkKRzLN3e zwhvnho%>71(@!P9gD4M_jOR9GC4dPti25RB1u`y&C()ymvJP_l>R zIVkj38sa*%Vo}K!m9&=sNXZ_7N0yC6$QD!P$4d4X(FCn{ykw7iv?tI=lz>y$CF5CK z;)eqjjh89m>5@H70zoUDDcLig;91IoP&>kNU^Pqj90^`1v6lZrsXe@?_;^hTFO}@2 zlGgHHE*ZWr1I>J;WUqM5EO7^G`L9xQ_9_QMUMtya1aaKIWIRit`9{g!D24v{T7G}8 z#J621Xw>hNjK_az75Sm$@0RRc*W~v~_8vl$WbyE|{2a^jzUsX{=#rAXU$PIV_7A}} zyL>-FYgO&;-x)skHvF+yyXRP|CUkyj$#~wb>7pv`(~|M5Sht^*jK_UcEpNMaEGyYE z=kN29eeOPA0QD}ZxB9YVJiS`OSE}Z(#K^LeuEp%HMg6ZSrWW-yF4y%V%f{0kh30Tn*?4l13G3EJZRF^(9qkMpQ?_Fq0eNiMc=CjVu1Mjy zvhf^KUY^VGW#jQ*%SA=t9`jDbCud9^q6p`Lwd}DC+5DJ6#gh@}&>%&nVj&9(z{VW|c!x=m8>U zKj+6m%XX$?w$3WsS>vw%O&p{^yjd;e1iB z^WoqEWv{kyVcBqB$ZF?BWxI&D_|v%%`Qox&?AcxF4uo=9IiDq7Ue0HUbIUfj9Ojj6 zo@aJN*{*Ott`r~h;A4K-=6ldpWxKM*$5oJC00CP78`qQ#Vhf0RZCPWo64Fc-sEv92B~l6CWvyjiYoom zGIh6ZT-YLaSK4@`igTa;b?xQZjY+8FmzBeN+5FV(??PcRR4WTY9 z+d^soElQG7nO>iW_RC^xxT9=$xSm{G4tL5c+*LLlcOj3v#jU!ad&+iCS)Ja!^09k8 zo4Z{w_jx5!wEN4(b6>5nc6U7v-Q9y_UcJA2sB903l?O>XB|Pjfc0SeLEfO|enLR=n z5vGJk%l1gw9!0wrmu<1v>SJYlOzGXfGd%8i_QyRd(o^c)Y*Cr>R=b5?GKX=WC(8DO z7vkx%J*}`O%Hfw)`z1w{uzJcSK2tWH+#{dgK1*vYTTjKngDB6Hjc1XvVjEB8p~HK= zY|lGiFO=;C_@cXOW*Wu;PVett1h_BXLGmS{_jWIp?In<~bTegp87ka1BP#X^C4RMR zuM$nY-D_og&7-|uw%4iQj_^j=cwQ-YhBp%NU?QKu+PTAf;q#fbi zvJvxL61-QYw|kEo{Xp^Yni4)N+lOWKb{~}u-;Yq_kIVM4*UM6O;PZ(p&ORwm4WE|n zQ^L3drffV*A-b$=%gX#{dsU;5zjeS+NuaJ~HF3i7cBhjx_ z+s#wLH)Z>}Y~N7X-3JAGk`TY@h#s)t!HE zT-9~Q-&?KZl~(euY;4OmvF}>8G1$bi!NCCnUSlg@h#@f~5GZ0Tt?ZShU1@(98E9j` z5Fp`42tNWOga9EB=rl=xB%Mh+v}t~{O*?6Rl|M4+w9}@OW;$)ANt#ZRrl0S*Z{J&i zX*20x)ku2p{yz8IbIv{YzH`sDBtKlgSmgNa9MR($$FId`0Do*Waa+dSmJws#o^iL^ z>9P|UcOs+7;|>hqGjxBnaA$^T?#>L5+?L@u7=2}$dvAs()7)Jdrn$Q~pl~;q#25u? zn!6iw`g>H?-IHk+-j{Lj%M`fzE>jpVhRtf8`(VZmXrB9E#xVC##yw>1-=A^!+aZXD zGwxy9)I5hC-z?l~34nTE#@%OGAIP`|4Ac+sfxv_MAg3|}==}hyiSAxCOklwCJgvki z0d0?D9KX6}J|glDVY%3m1%7%g8)*GmhW>WcWUsaUZ46L};(ZFZDl`as2X0=b4OqMqN?}A88p$=4Z`{ z*nf%rc*gO|&cbsUN$=;ZA+jN~KanA*(S1JS`2B<>*`~t_Dx{Q8W*omSSPC(~`(nnu zxL}Iq`0Gm;%hOK)gu|2B_b02v=TkbriD4uuqyEHZE=yn@bs&tkon8rvxCPq)87E7^ zc_U$H3~OGFQ2Yl5b|>uaDfsJtT?DSW9+y?v<0*Rnek-&_hQ(|l==3kioYhV5;(S@) z)*QjKk!mi~Z8dAGwyW^&^9m>YZg4kPCV!5I%V*ra(a3@F2{SpmPv_nQ(gSwwIMthl zEax_5A^V`2WbG?t+*O>q+=qdyIA@<+kzzM%R*(;++*LyL!&aUd;*pg0Pp;D7Qu!lh z8$_mu?S)cG0YhuF47wG^y*4e}8@c=4rvb3TAcECwJAc(ec-^Kc@$sJz)paEY!`=9UrmE@%v`PZWiyP zzP60ct?!d=W|r@232S!)((K$7VaDvj^WTIFpe~~$14<6o=l@{m2fin}apg4YbB$$W za8A0Sy`?$P|77KGc; z%N$~s@v0ZIcxD(G$D<}-9sgtN-A{C%n(&Mn{J*Prq^wZ=E7T`5V>SZ$5d`v6a|#N9 z;0e?(uKrWD@|e%hVKuL5@+w4NKl47{m-pUGpARZnA4L4vX5h!sN*m{54$m| z&*~I(2Nbu;u>MuO)7A(uLPNL7+Map@w2{c|I-#l_-yvIib>mKX_S{PiD+C87_Wa&q ztVB9h+{GQkDQhrGQ3ctSjN8vPoyayihm0b!r@YZ0NeP5CG_-jxto7Hus-xfW!)q5s#;!Fkz(^odP zO||35!|97Ci#-$-nt+J#>Y*mii(2G1Ed{yJiipv|1weO!hYk|lPqWZ0t^?ygr1_tFDrP#BWnx|qfGp29LnXq30TytySDvR_tMYU)s4lz6GTRK;}< z9>uv5j|%gm`TcIc5_AC`30#Ng1=Zz+K@P2+LY6xxvh}ImG@-6(haFqoHvZ>_yoRMcQHd9Xco9zPh)jWBz$Bwea&3qS_z(OH5d{# z=c%{Xx$9Idr|7NP>xl(9WA1uH%ys4gk87ejTH*XF_>e>y(nxaUojXq;05-L89#*wY zxCueTd06#`3+3#d3OAvQ6Dr2pSgSMZ#x=Mc-d8alm8BS0+WTSv!Yy{LqGA;l9Yc2U+yIvkh?$QBW;~sX{ zxryDDl6T9~0g-EUhu3>Uzm&8Syjn`W&khx`l)TT5`QAsr@3$-7Y$^GG`Qj(r2Xr^P zmXZ(JE$sJ!T282v^Fazcqx}Gt^oLSs7u;U{(9c?vK5C^aY(;RqKDKBd;Rt zFY0irUq^OnL_Ti`0Qv_yCabJ=6jp$~9OAq}fc}w=!vZEZ8l<(1{Cr5e1R_^BG?L)z zOF9MX?DLMH>dQI_+fD~nUtzuE!)E?$8;pOdQ?Y9L&+HBZ1oEHj4g+6`#01e_HJ2a$ zl&n?%7j|scwr*^w{!$kl7y&>&pEBkDYdVrDHU9*H0CK{59>i@lzu~Yj~04Bf!O{jG~qn zzZOjKrDmxta&gpidRHJlX7};mxV?b7vitbAUwZ6EU-{s3UkKjL@xm1f zm44ujMxiXRuEz!JQ{?8r-e90hTL);t?&rn(k#fno4w%KcjzWW6yEDkfaWR-04DpV} zv}6GDq&ZD;Mgv1Cf*&NeM4kCI_p0aL-Hp}1&$~)_af@Vmi?^?HtLQ2N_4RdbC2v=T zi?lfJVN~)RqmtLC^c2#?<7X9D=T{a2zjkNj8L|^+2|DnTUjb@*aN^RH>n?tO7+>4( zX0e^i?n2wA((aR0+O2|4qtv-eIpevSBpcm_;S$EkCy{=WC)A~BHsKsNFAgLCR&V|y+f@)qJ}ALb@BLWvK=z7 zTAsMbZK-BSgy*8&wi~?+q_^Ml@!L@R=Hjk&9e6hy)O!#&MFJ5lrVN zx#sjEsc^N*to3E^kfk!KD6@(j9oi$^ zH_q3@7UQ5-DR7uiasGxVJMfV4=j%gRrp6s+Gg8d8*ySbdLdh1$L5)BK!jifFA_4Tp zp1-&ja8v>XRt<}9nv(D+hUW(Q-V_!Q4st{$QEM7zmudm?mKk^q`y_%^&@Nj?9VYQ?9DJon zIN?DHTK44}cyKlbXHRJsXlGnNRYDj|k_~@jaZjNwXEUdvOG4aOFcd?!Ww|z+M?pO{ z%*I)+e@=4@;A-#BPz23cqe7999z+ zmq?hpj|Y?{k9p8SKM(k4fQNB#uNStxvDnq*+Ky|B-Cl}#5!(xI7lZRcEsi$w2C-_C zjm>fpM~+b+7S7uI;AIW$AW%TEdbyM$!%p5InJG{#5U?K#rv|&2#24Us84J&?uyB@} z=67f!8J1*O?yHozpj#kaWmftst-_V6@TW-Zbm098u8MuDb2i|};#3ftTUFBx;6>C_#?L?m8&T?nWY15s;MdnP? zWqSqMW>&6RfbaA(%WEg~YS~CFV0QZF3D$E|H9yYmkV_h}cv0(3&0)*@D@j zr#&};bekUi=t1>gOov<5-dVoAPO7$9Xe%VLHEA)Pr$$`hMl1(=O+t}D5#5On8U)1| zcpPQG>9Rsw-03kCTap3yk`v-jK$kFtF}#p~2oXK109+`A0rDv@1+t|r(V2e`EXpTB zPMbit%?>(-=+m@jv~LpA6lQUPL7hx+D$WEa+(E4h4Iwl%ucuHf(uj+M@|SKwah1c@ z*cm8pUv0R%i`l~VZns1kM6GcKBpMl57+Hp5uCU#XOKmS^N5LRdxR-sfIb^NY<;0U2 zXe}!3TAv0xIcK*D79`9^C2c8d@)60VLeQ+_BjjocNYagNqnG>LG*7E6(u(QAY0T4_ zyQ4^plG3xim;;<*R{`f(Id>ZE8u@mqH6uS-Gl4W<6N1fahdtE}cq)pA5)H`&4WlW{ z`0>wAL^PX>tH9P&inxpCM6@l_r@Do6ug*cQiKbihDn$BZs&%@MLN_m-njb1?jNw|- z*IkH8Fpz&+H7HRmDrXQ=Mu&XlE4^WG`Pi0?S4;N5bGnMtr zx<1xuNuwfFn>Hw;qI6GDU6Qz{by}Ozaa)^#+XZVguxL4%CK7!hKMTI`x1u%2Y<8R1 zigXe9Yt}4X^f?gjhNcF)gW|0y3&6QC!dmf1YlU%^s|z!W;)T_v3h06(H|{B ziZ5(9*^1=jUEV|OCQk=3K?ZKUNiU$yFj&E z=m+RR8z4+{BQ8$oZzcic@8+I6#)VCEDv*+BW5I_473M>MI=|pUfoY$7C{Q{d3M7U0 zxqWJVul5Dmc^9JCb0@|I^m@0u(BHMoT`wY%1IT!2Zg4lKQT%gSZ6#MyZR~sd$o>vk z&2oXQa9tD1RycJ}V9Y_$elUoVV1#tQH+Urt_R`>$YVaz)aK{a@;jadJq6W3GPlGtY zqrL;`5PSQI!7AE7;23oW3{vs5$1fPzZKfII4NlLt-q=GFU7PaSI15c_AZMNG$yZS~*+WG$skOdWJ=vCz1joC}%DLS@?>#| z6b#d-20OG2J_@Q?IdVtK*n!r%Bi1r->8~`t2MQ!U1X6(kDX;#FymyW7yk5cXox$5J zCE|Q!nU?w5(^IU)DLh$R;T4PX`J`?B6%)k*NlOE!SV+ohrAd)o_Df+nC{e|Y2_0(g zVkc8P?G!{ym}1~5-0Kz)uw*0Hz;Lh2c{5gFP;-2|HBPObaO4itx7& zFud>-;0$W{WIJ1+MyCRjO&}H!UZ+UZ0%=aMI+b#?pi_d74A6*VwCVMpA|HA2ld@PV zP+(omPDZR+<+9I45Ds|=fkNX?<3%7`rj@iVJy@>VXcq{V>En`Z2Wu6(tOEcjFoH0i zwfiMIqD2ZiyTe>QN1Z?@b)7mHDGy;f%an|4gIRNK38HIpqIBo7Pe)L$@KDC%yF^ef z)p*Vs%+v@S0p(I{R2v={X1BCcm$Kb!buz|WpX5snbINh#V}Lq=Qo9(`$+*RM%$u+t z&=v$p29tgTo68>c%5eY5w6cCQK!b)m2mEIc(++`6Q)xV)BIh*QPw@^pAgXJ9u9rTU z4~H&Ebg_x+XD!*6%bxEyu-TUsq^PX0ADfv{w%N`7ir>vO4fd^4LscC#WxJiZ?3RFR zINpc4dC9cwJ>RSo$ooLX0z*gZc3lWd=~VIf%K;xQ;6(;2zno8#+QViCTZ_2>>ob_C zYYvt-PEv%}MXPPfnyWl^@yH({M5Uhul0pRapvEF!xBRyhkaNqN!TfS?B>J4iF2-eX zbrfP8CA-93)R3Nv!x@D$Nw{C({v^!Qqy57;|0xQel7xp89!kQeDtu}Zb_%;Byk6n; zNqCdOo09Mrg|{T(5rs#R@YxEVorHHPyfX=(ukiUv_~pPOO;4}!d33w<#jk@O!!aVl z=hlbC^pQy11+OaAF*39oPQ~GrphzX*E`__2Fx6`$<5sc}P(2HPimU4wcyD_OW&AKD zQ>j4Y)J0Xg6+%?;1<{~}Bod_*EodLM}rKIvT~*oUnsAL2Zh%|j4W*Zzu^%bubLeKHARImg#h z@o;<9n$7t#gm+F2_5|7G?INtslgTSPltfG1#j-fNsxv`CiKJ-ns~1S~X?>*QEzGko zn9KHXPfxx_kFNY8J<|D%9^Ls~J$mwe+3bsJLOdX3vd^p;4Eln>!NGu^Zv6{_Uj57J zpMC~|Tp#IOeT#x{DISVR@8MrI=uw%dq~(nMb(HK=N$L+$L9e2FRc)N!S;*e|J7VnJ z{`LB3{`;4XO!4dD_$>$qcu(tJ(Cef5-*XyJC&+igqmn_l$lm9G8 zH{_i>UmV+s0gw|2LqO}J|F0Mt*|zsGS;(KUGKsr~tM z_6398pj&V@{AiVO;0Deh?%X`OZCe1G1sb=j+QFZ z*6B;CM@!Qc3YE)8f{W_4M&rzhvYK<#mFf}7mnP1vRVidW^i>CY+PySvP%}8Ys8+4g zb)iT&Z88Mlsa)?sU9&O+c(qn@VdlwJ1593AYcyS@;U;P~R^vdcS}&Kz4;!S#i3uuh zI0lje!R~tPNV)1}D`4!Bt(QlG+a8ao58$=riv_!6# zqya@F!7I!2O^*me`ri5SxW;a#)Qp;MW0O&B%|KT{F?s=;bk9b-Ry`CPI5u;zHeDGv zB)jQaZPw_cTAGQ-LYc0FK4wbQW3Dz!M}>dud^861)P`iD+!(J{W}!J?jfZu2Y2ww% zqO0-4mFWrBCP`&#qsPcIrpTmiQ9(mRg}%-fV)~naL=3k#)>>3v8y|1gg9FVH4Cr}m zyml1k5rYcHZE%fmw^a( zxYTe5%Zx^&OrL1uih8YC8?Q}A<1dUx5PF7BMn`mekmQCi6A@YioR*sa+Gtj)Uc5x( zLBkP+zAfr-GB$CWH`XB&>%K{lsJ1xSIv!KRg6KwT7HJ@q9xxDmB`T1l>|YRyi%*tj zBtsVFZS&^I5={_9XbRdH7s9r`+`O??KN7QlJKV|sCzCH#U#?S}ln(lSG0+EFlar8x zm!-*oM?FT=jC+xlU_nqNkr$P!*2{7gHkm}eI*(!3INWNQm`Y}a(lq2XaZH0eTdy6G zpz08Oow0BR6M?br;Zk)1u6PIZ3bQ0a?Cq@@b3u82yj-3DIJ$z|th8nr1aDFY|oBR2Cm@ z5`HQQE8oLWzNdK}@5uKZRFBSbpCkOaj`aT`+|I8iuO=EZ8zl?#)tA4!zF`28XY{_k(cf64Y2QI*=?xs-n$K&metKYhPS`yJ)~-@P7Q@vDKH ziHeCfq_9f=l=dkFTjV2kS$c3pzQOZRKFDuDK54!hl2iE8k7#=t&*l6XeerxHDl1Ss z+ZZA&a$3dTwjBp+C?jKHz*#9Y!OoduV_tbYbF*`9Z3oP&rPiUtO{V8JCpq?S8yOoLpPw%stQ_68?M-82jl-3hF@ZED zd9qiz<4~|5_jXD)Dr4i*rADK(#DYxQ&Y}8O=a_9Cmc$&ZG3UEUw9!_*Ea@poN@Iu0 z&9Ot%wS%SU#@J-3(cE-;fOcTwnNkSLsJJ^)Ml(grdrh&V#7*To$05+2eTxo#7v=l) z3boNy9`n+Fy+v9Z}&MJoCKh?LobrAGO6 Pb8O!>Hg + +struct base_1 +{ + std::string v; +}; + +struct base_2 +{ + std::string v; +}; + +struct derived : base_1, base_2 +{ + derived() + { + base_1::v = "a"; + base_2::v = "b"; + } +}; + +int main() +{ + try + { + throw derived(); + } + catch (const base_2&) + { + try + { + std::rethrow_exception(std::current_exception()); + } + catch (const base_1& ex) + { + std::cout << ex.v << std::endl; + } + } + + return 0; +} diff --git a/emtests/test_exceptions_multiple_inherit_rethrow.txt b/emtests/test_exceptions_multiple_inherit_rethrow.txt new file mode 100644 index 000000000..789819226 --- /dev/null +++ b/emtests/test_exceptions_multiple_inherit_rethrow.txt @@ -0,0 +1 @@ +a diff --git a/emtests/test_exceptions_multiple_inherit_rethrow.wasm b/emtests/test_exceptions_multiple_inherit_rethrow.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1bdd0bb28df1c8e9d6ae7be3a7128c64d5819bcf GIT binary patch literal 323996 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 z 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 // std::cout +#include // std::exception_ptr, std::current_exception, std::rethrow_exception +#include // std::logic_error + +int main () { + std::exception_ptr p; + try { + throw std::logic_error("some logic_error exception"); // throws + } catch(const std::exception& e) { + p = std::current_exception(); + std::cout << "exception caught, but continuing...\n"; + } + + std::cout << "(after exception)\n"; + + try { + std::rethrow_exception (p); + } catch (const std::exception& e) { + std::cout << "exception caught: " << e.what() << '\n'; + } + return 0; +} + diff --git a/emtests/test_exceptions_primary.txt b/emtests/test_exceptions_primary.txt new file mode 100644 index 000000000..a7dfe7b39 --- /dev/null +++ b/emtests/test_exceptions_primary.txt @@ -0,0 +1,3 @@ +exception caught, but continuing... +(after exception) +exception caught: some logic_error exception diff --git a/emtests/test_exceptions_primary.wasm b/emtests/test_exceptions_primary.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c4e9e09ec8b23b75651ea686af9a4bc61f292239 GIT binary patch literal 325760 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 K=Vo8e-M<1S1S3EI literal 0 HcmV?d00001 diff --git a/emtests/test_exceptions_refcount.cpp b/emtests/test_exceptions_refcount.cpp new file mode 100644 index 000000000..8aabb1627 --- /dev/null +++ b/emtests/test_exceptions_refcount.cpp @@ -0,0 +1,25 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +class MyException : public std::exception { +public: + MyException() { printf("me now!\n"); } + ~MyException() _NOEXCEPT { printf("i'm over!\n"); } +}; + +int main() { + { + const std::exception_ptr p; + } + { + MyException m; + } + printf("ok.\n"); + return 0; +} + diff --git a/emtests/test_exceptions_refcount.txt b/emtests/test_exceptions_refcount.txt new file mode 100644 index 000000000..e1fbbedf0 --- /dev/null +++ b/emtests/test_exceptions_refcount.txt @@ -0,0 +1,3 @@ +me now! +i'm over! +ok. diff --git a/emtests/test_exceptions_refcount.wasm b/emtests/test_exceptions_refcount.wasm new file mode 100644 index 0000000000000000000000000000000000000000..abb828479517539df9fb6fd625bbdbd30548e2c2 GIT binary patch literal 49363 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 OTT4Xk>izd8F#H#ZzE-FJ literal 0 HcmV?d00001 diff --git a/emtests/test_exceptions_resume.cpp b/emtests/test_exceptions_resume.cpp new file mode 100644 index 000000000..7686cba36 --- /dev/null +++ b/emtests/test_exceptions_resume.cpp @@ -0,0 +1,73 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +using namespace std; + +class MathError: public std::runtime_error { + public: + explicit MathError(const std::string& what) : std::runtime_error(what) { } +}; + +std::string _latest_err_msg; +int _result; + +int cpp_adder(int a, int b) +{ + if (a < b) + throw MathError ("a cannot be less than b."); + + return a + b; +} + +extern "C" { + + const char* latest_err_msg() { + return _latest_err_msg.c_str(); + } + + int result() { return _result; } + + int c_adder(int a, int b) + { +/*_1*/ try { +/*_2*/ try { +/*_3*/ try { + _result = cpp_adder(a, b); +/*+3a*/ } catch (MathError& e) { + if (string(e.what()).find("not-found-here") == string::npos) + throw MathError(string("Special exception caught: ") + typeid(e).name() + ": " + e.what()); + else + throw; +/*+3b*/ } catch (exception& e) { + throw; + } +/*+2*/ } catch (exception& e) { + throw; + } + return 0; +/*+1*/ } catch (exception& e) { + _latest_err_msg = string(typeid(e).name()) + ": " + e.what(); + return 1; + } + } +} + +int main() { + int rc; + + rc = c_adder(20, 35); + if (rc == 0) + printf("2nd call, result = %d\n", result()); + else + printf("2nd call, sadface: %s\n", latest_err_msg()); + + return 0; +} + diff --git a/emtests/test_exceptions_resume.txt b/emtests/test_exceptions_resume.txt new file mode 100644 index 000000000..142e53351 --- /dev/null +++ b/emtests/test_exceptions_resume.txt @@ -0,0 +1 @@ +2nd call, sadface: 9MathError: Special exception caught: 9MathError: a cannot be less than b. diff --git a/emtests/test_exceptions_resume.wasm b/emtests/test_exceptions_resume.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0dbcc7d0994c5af4946fc7bf589ff405de48468c GIT binary patch literal 57539 zcmeFacYq$nk^cYA%scOfccp!m0|-?ka#8@1F&Y7j0?A-(b7!9rIvKMo1iKQlu{pE? z0V3y|L>3@{$QeY=AaVwgGst8NHs8-v^S&#=are9be@4S@Pj^psb#--hb@$V~g^APl zjtYfBba>Qz_hjbGnbFMM3x(Yy{Vwu4v#@(fzZ6KTzazp0(v`iid+guvvygv4LY`4M z4$Kn|6uHvO14MvObU<|A?(qRLqXTxYcbZP9t{N=F-=(W2lc&z;HhJoli5+`R-hT4l z`*iGIs8d|`Jtt59)jrcFPFX&(-^4xk>6pIb)U75?ox0ETZ9De))AFf3J$0Aq6DPIp zIAe0hAExZ{r$R}z%2W57GNom|sgow`wO1a~ZMm3QTw_< zk0YzGm7l~`qX$fwFk#Z4Cr+3+Wy(I2CQhF`Ve+3RP2P9XrHN* zs&UH*QO_c$y>(OPC)zi8&& z6yhl6M_tVS4RI-MhzkvchPo&wwy8d@@7BG0oHjI9dh{sp4N1yWYK-H?QhlMZ)KDn& zEF@7KBuk}2F-;0dl9o#ZN)i7kf`6sBt{{4axS?EXOpCqZLR3o9Vrf#3nbDBA%#TDr ziu#fABP;y$#{tohQkfrhKTYt=2Si&#-Ty29SG1J^UBBy&NCvDmVZyfC?KnEy4%ORl zj|pQZOrJb$`m)Y2Z9>Q7Y5VOxdBUW9_bm*opnK{xlP1=>#K}?LYTRDaChWVOSfm6TNGVtefzMKTO$g+8+xo>4ZOYOrBhr*gRp%lo@+Z z*kjtCChj|7uk}Y1PL0wDdr#bJYGKVfeye*Hb|>V@TsSSNS8(rrW=t-e9(go6SU7`k zrtQ(uRyZ?i{LlR{OH-!E#GDm1Eqmkr?5LskKBI8XvaFbubE9ruNp4c+M%{lDu~*@| zsQJe+dlk-)dLb@!d#`DKbbGhUz7y#sE7il)ujp%kDhzHUeNtQI^;n_FUv}o3eL5x= z1~vHWE)%KDiVg3@QDI0_zA?JM|D6~O&jS}mwSObl->4S6F#3yv7yablw4X*S|32p@ znJa9{xttb;G&Yw@1uLx5SZ?%R7Ohe)_bd!)$_g#Yxk?i;-OA;gqG+Iq4uIM)C+eiK zVUWs>TQBspej&Cv^tHYru_W}dKA~vE(S?oTf)%s+)~v80p(OOS-XXO#^dfVUHHDIu zLS#{>v$_BWq2B64kE{@SCZpm})-yC%LzavUjn=qLaa2=OwjQBObT=zow=ACC8oFEe zoOaL9Y|UBJ8Y)%^J;_?O0jp5I=b~suu|DW$ShqoNIVfAF6`l%VAbhM~1L0`}_$gW4 z7_n0vmDN|up&^T?VQTTF1!@%fXZKhbVEx6J*S>6JuRWE@Yu(gU>#~cZn{|WP0dP4$ zELPSIJ*?51tw&`qYp`NvWon&JK%xQ~vc&_lsM0Nkou07M%X(U`R-`v*l}78`T+Ry3 zX%TtqNSBRX^7`nP&3p?F6%}`eO~G~n5Nna$j zRcsa7vs+g7#$2aR@P_;$YL}R@PJZ_=RAO5M(G#6)aB=stUamjVC-I8Htq~Wz1qRWo zQl*t_HH5WNbIK<}Y)I%&YprZ6(`o}kut0MU3}!}?uMh^?;IN{t7=HR~xgbgRiW0AU zcGh|-1mex*aZ!Wf)V+R2`UxymC663ZD^)_M<8!M+{xr1eUT=-?SKnMdsT9o=tyy&0 zY;m+)TP}{&n6n~^2%G5l1L*hW3e>lTE%+U_)XV+Ej#l740$V9?FM;t2+(TeHm>ENX z<6OhW=NdL9>}WfNZEf4IlkF5*tR?)?ei^p0ZNkpBbJ!aBjk4`RW~0I`wuNm)vq&$u zw9(bjE@3m2Y^hJUkvQ?LJb`}b;J?4Bk%Pi z!|t}bdi_M37)E-p9~1VlJ-jt1*(B*s_)q&!*T%^3t0|>HUG;CGP1}p?^xAwQMcyOs}w}t?6cZ4O_zv*Xp*q_p8-x zHSc=;%UvC5dpgnfbf6vRI4jtoR{C7Q2G~GbsnS8k29sdK3^uE@W6$Ukk6{7T|GKBr}6~nNkhTjLNkRX3KR6Q;%qr{?mWxQ*_6ycQ&N5y7wuW0>&RkFPWR- zsLE=TQfH}p-Fs$rmH!y1UPq@+E32Xt^;S~S4`%htlJZVJ?EhpRhhQTo z=PiOblR@1~MxK73G?yPpqK)*$rhM_=s<>&kVm>OZ%ZDTBy&Gc4H?oajdP9v)RKJeK zueXLaAA>fwjb%+$bJ`w(uB*m(gSUZgN`V_7-H|B4x|rAQnAT>xM#XxxxdO;G_ku!i z>t(&isM(<~(wki-a~XvVr2=Za{#dpCG-b8N4uI}J46DY^714zi+uW9l?n=-dY%AH| zF(`vEoYsX+G?K5278cRSjnU3kY}K}af~hC3ZbNK!#;bLMG*GIKMyg&YC|@_!zFr4G ztjE_wZ5>-DN(-Rd@{m@lee7b9U-#nx9hrr*d(iyb2HLMf#s{0+9p{;o}?c3 z)1CL&LgMKh`)bJ0u<%7~!wrgHLT#XY8j{)8)E!WhiZ0 zq(SSEcbSo^2_g5VVF%EV18K-^G*x$+shMW!L!heYA%oXzw`w+ zSY5rLoO>7%npxg4suzRxKgVD_r4+KwTQ%& zZP3O5xRGs|XTdBXHjDDNrdA2iV!dr@aVrh!oYOJ&d3RfhCfv-rD}6JO--4mGIe&u^ zBTlAovlAlQtkOg75S8j-P1d6&^o((jQK2McX(l(XiR!L|Y6~>?~19P`I zwH4avYbBM!V4&hxqnoZap6*tXHC@A2FV3_za8>YiZS`#M^lb2cbh)CfB~z=!)lw$u zVQoHJyA6RihzKK+C9U+*23uE*H>d!HEu}GvS<*(YT+fCn%_}_|?HOU4+i=BfuH0MV zRgB2r;A51HvU=WB>CLG$-Ihv^v{h_m3pQ}Wyvj{QX<`x2QQlpNzPv)&`*uOCh$okO z2bc{J-Z=kN5L0+~8AJ47V^~sJF^gNOcFFbICB%@VyenI5E4TSzSw~N|EK7V=qzMBf zrLy#1J5a6exe_*IC?O-h%aoi*2Q_k)%#Mnz zsZx=-LBet%P#E+TBbR0~VK$o?5Ob>XG^Z;v@q*)Gb9w!I=AnMrx%+taK-n@YpcR#o z>U()toEaibt0JFlHdVWKwq(8La<#8Bn`kcI5=A{!{a!y;{a*0iOH9{O)++ApWE#xP z+fqC)DzyK|O66ke>S6V;&UmL!nk6PpDNdZ{{j*tu!adBH-O!pVJ;l4MGquL?gw(?Y z7kM_5kq!kYScJ71f%tpnZD&Vxy5>NW7~j8sC~#sw&tl zqKxhO)svZ1PP=D~HWnfeR)--gbx4_^t?Ks(X%nqhfqHXDyib);2l>bK$VR`HIUUXA z$K%LUBZC+8C`;PKrzrQ2M_GT#FeF(T21^l&bk%;&a8bN54_n5F8!CpbQWI)cR7Esw zsUt&DeHM}{*-8*xAtxv8+x@Qt1FT_U&smKri`0h`##En_!tb=C% zxgCi&<-uv{Hdbzzj8#IjMY)nRL#KlJVpH6#kFY;AIVs$xhl^6ixq!vKwJ^-BX61B zXi9In*KU56O^L-WZkt-8vZdz1ia`8C_^esI8@m@)px=kMoZ?3KYne7&AuHxK4;w@y z$rz}Em&U4-Kp-!v(;m=N&y8BtVIkB#SMHu(ZB1I@oOQ^oNY6xkOQNX1G_yZ+AA&Qa zt8Zi`bIwHX2ii*(pwgk{tP+c@m&-6W@4d77cA0mHjMXj5F34`Up>RVah0#pLjc-9i zLzj(qKLU~DX4*XmB$L0@AsQb#5RFP|!fn7*cPA2aCyOnkl@(+|duzl>5Q%#@m{qr^ zk0jALs^NNcd_G|bLv-Xs!zz>pvPup`!)oLXkL$QA zJ(c_sG5HSttF|q#0A@xN7~~a5Fg9IEhsiM(B7EM0ca_RI(G0Cj9U}QQ#auj0=O}|E z9-MVeOIJn@S4Q*eE2l*R^DL}D8G5sdt!=AFZ@w~{&_eR(tm(t9LczCqD&(h4k5%7bfYE+3gjV?}d(K3d9{p8w*f&y_UA zawTRdM&#smu3p)Sm7{{Zg{^IC#j+ISu^M?%FDNQj-mUVA&v*t3v6VHA4c+2VzR<80 zi!-uD*1Zh{q3On=9A*9Txn{f8nb4ZD)#n`!+m23%`FwP%7tKBle*Ef7yCt?&D7tCI za?HSnCDu>P-#?3{tNE>uj8Xvw&{8mMFBTasoW+%hrhmJq=jpVf(t`z0XL=`P9s;{K zd8^RUtBl1r9%8GuYh4U`1qXFanCF#krB*st!B&%>yoQucy{gN+GcjE*cfnRxzlm+_ z%BJ#mVl1S*UD_vvNAH-EY-1)f+%_J|OlBk7 zq@7j5F*0zrVJnlG4Q;q4L`+RIJ<>v+&q%szjo%J~oBE_ci)3{&Cw1lj{*#$ub9vR= zQ!3^9jisoZ>I>Al$|hx5)aG)Jn!EJYdX?_kN4SdJmy2QH``tKSc9sT9=VN9I2=T2! zsv><%kt`^?TnDAqcyzbYBGnCp%9X9rUAMUOG3CxzO9p8i$H!&uxKvfRM;JA_{K)Rv z%yF{Hh^JWDLMAT^R80rUTft5;iim@ryfJq~oAuU*Rr@~UtHVaIvaJSTxm#L^W-86{ zco`jq2UOXI$I9j+w{e#$%abITo=dr`q|52iT#uP{?m|?yK{JRfWa5^-q+&5z;+6qH zL<^LQ=7&gjxB&0yzlg5tDJ$Em^@9_U?#3JSLlAna zFe+5WtL`dCLjeX~3B7pZA6>gb@Pb*#vtM}1T%?uSb2CkK05 zDUtPS*ODMb_M)iXp&=!JSA~T7vx}Dc>X%GL?tL@qG}aFkPaAKNkMe4|BE{F`#ivOx@Z)JheBIUGM9bGO`cULaP`2B+Nvnm>Y<$Fi-Wm%WM1p@I2VmC_4#5dhJIP4%9N9Y z3RxyFY|JDD zTZMj93st&8{kuX|4S6?Tm!Vb5IdtKO;A*x?Wt_yQQ7ae7%s?CGR)?CeLHo%E#_Hhw zQfb*4`6jE%My^WdQw~juXu1ZzlShs{mTqB-I9D- z+F$D+Zr`dd#)`a2I4dqQF!@YsxtZ$BY^D$AYcmM+68Y*rb-&!!(1#Vtyh6X$W_5)k zmSX^;sudR(ocaWUGc(nl&cL8qMA~H(YOpnQ&?#^_L}yiHpl{@cpV4F;99(whC_QMNz&{saHjSd&!B0DBxBWGkdEwa-h<`LABp<_rBzHzhlYz^l{c3!0SGQMxmFofQDhHLTV zkzF21#jcI)+Ni2z$mh1mZi8g@Y9V~1sV9lye&r1>M`Ew`&+hN~sIB{Iz@z@Z|0~3p z&a6>%i%m%Z`$xrIjzaIIqzP3nlo?rGj${g+h$O%#T!K$Hm)b{#jVHv0tP)>-6K9RN z8Tcj^nLhgQH)qoR=49TD>|Ou*`^dhpvAb$ZI3%`1VrfAi%0`d+sLVrSeZ@NTVcvR& z`NH&JJ};gV+nl&6B0fJnw!>M}vqNLbJS?WnRN>z6CDsse?{GvcksTQufg|I#a8ztt zsZ$bbN5z%#WqwK>kB;qVXvuduDyHFwgq}{M+Dga7c1$epj*abD=jFKAj;rz#j*sp5 zxUz9LA+{5o+KFOamSA%`QOk}q>Ax$6HL@s-PFYW;awo-hlG8akwv%ghTBRkN65A=N z)8;Dd)Ywk-OsB><8Lf)CNof(II5M2Y;WVF^6x=Nw$Y!>s_29FPOsU*Sa;k?++i?hR@D7J_5V>{n#bwO-%W4j>k z2+zd!jOwL%?b$Jo`B`!JB9<9lfv>~Gu_C^VrKixl7={v35D67R0uo%GwpNUE!=<8Qc8Wu7tIxV|!Wxyd;LV zOU2tf@ur3)Y6U2WJ>tHMb1lJ#$Y%>{wS=o;yGkE_;T&Ea+ttq4HL+b&W9-`4u2oxK z7u$7S^!2e_FIlWWe@d&(enV_G#A@anW4qBw+!WhQRT3G^d~<9!s~~dG&bP*PtLM5c zw%ck2-5%TR-p+T#%(d=-9J9wou`Qyz$%^J*+!@=QwJ+|9?Job~?${E$JI)fmxF@!I z;x&^(I4rTll1svU&RWtM?vL%hI1E62hS~jb_=@IJ70?_y^a@=an&Gr1JP_Lh>Zqt# zNw!E`$n|@1Y>VUYAcBw$eJ!@v;_zy0uTrhH@N8@k#`Y{?c&M7;&Dh?I!yB=^;Tc|! z?e#dDIV~)S?V;F~#O>kX*dC6rl@@@+iBu0T0RkVk#sS#g>B0>1NmePKG`CSE8933ccz|I zEnBZ8jE_gzcqBMZZNHsurwrTM_RG`|(2J}hoNuR=_A>Y3mn_PbwhvzQmf;tgDUFkk z0gVv_kTE$0VPjCxU2GRM9q^8vmOcgvlhO15Ve|z6mui`4Bq$e(+*JetwkR23OO@d7 z>~}Iazef+3AzNGtJtIhxYR27dcV(Q2`b~801LPvz`!2Tc;!A+I?5eh$teQ<$&Hj_B zOr|PYSzTY;0($v5HG6_VC=Pq(TJ}P0FT~;b*q)E2WzWU7r#%PTf6S9#iS3m*yv$JK z$uGtBlIz%uvHj6rM8$y62m~W}v{|bddP>Umlq(5?y6e{Lt|kRyBcbdqruP=pvtzgh zY9oW&-^PVsXnUP`&o4r|`wi_99;lnDOu*V?ci>NhwaGRaFR0D3e$*}v*iV%A6J`Gr z5Ki?=;c)cjpR>+-W>uR`X|+GM3W%cuK;rm(4@q*H zH2c*OHNf6B#a7bi_xRY^MWQSFqj4&t4r=y2QHYdUl4o5_GM8p(692psr zM>1o68?PdgGk;WMZ^u}JqZljZL}g9IGHgYAI6AVUBT4Vrh^QZa_-lJOF0y06-q`A? z9Y@yp;+jA9fBnrI@XkV8_l>*tDfg)~cki?8za|Ca+Ix>a^`+judiF_)Xebn;K7AVd z)b;6;^pWe;*Hz%_pDEnFu8lSnQeTMTq*#}h>h#e?Zb!gO@(iK*B-Eyro9e5MV4lpz zHcwY_XsW9w51AkSq1ILRIWaPxe|R&Ch&7dJxsVcz0VhS(oF_-db5gWflovO+DP5M6 zHaMl0@zlt8PKnsuaK2V*D*lMC(<9^Q;%iV-&3}cjf7bXq1GhD@e|GV;V(!-BjEKt> zM6juEm2Cg4etbAHvNP41{nMGfJ?MP)?Beqx zcL8Q4HY*uj*d<&U*_Cwf(FNZBD;$)lLmrf#WJtq;3Rt>r;|z`ot5^mFtUZt z`&C{WTJGw|uJ)K~BD)3_`8v%`3tAz*N*t$Yb}Da6W09BziR&V}jt{mC*GG0e)oc%c z!{cWO%9aXhJ8SuJ%Y~-OkHq=+m^xQE{5yU?jlLy}9pZ`>W(B)ePcWRn6& zi?Eiew>I_Mh>pw3@@`?XrtbOIOyBN_>>l6CxHqzUqslMCeUaT4g+bY)E{JYj#Yp`h zi0lEc`h$@@sH)GU(htx)4@LISvX7d&K9WKln%JSZVNXWPJMBrISuypL6{QVs(HMl$ z9hp7h<)LOiIrDv@ry_ewhPjZLv3-U-D?3x6ZrMx9tL>udXXU0weHZ=cU#yP5HVn*3 ztYG|D4Q+cbw#Le@!bg#P6wx!-1*;awoN1Y`pu7=Tb73*9f)p;|-2&fJK9jy&yMBnx zv;uHWWCVAxbE3));at6pF8nggjaZFjm-76`&Uc|*5E;*0l=~fhSey|qjA$FX5XHYJ zvUjk=(j~hHfqoq4?*&jq zYQt}FWRFz4>f^9JJbzovnDQ{M!jWfux14l`*HkeJn|aYsEGs&$;Na`g&xqdtKj%><#hJ zR8#w=dav>8s_~nV@vPh$-inN;XJxrQ1zeDjv zX+w8eF|{QHUsj;H4=$_jy7HTDWTPtg3~q|-Mz#M{!FuA_ncyU4zagu40%?vhIS4#J{dV&~R-&^lp*YC#)#L7lO6x{oz0wpp?GIw-ac zMC%9q?yk8w`@TOo;eX=qi0}_l*dQld)!3Apm$Vl4ZOj5IsMmG!JG$r+y$*AauGMfYg)`L@UIh->w{p2f^3!9l4r>)tSWWW< zVwS`8F>A)v`Atuj$(bz*sly5>crI11gbE1mZoV1C@_aQj>++PuCaFqdRUST5whK|B zG}Kmd*bzLvF*z=pS$ANpBs-%o0F@dt$U+;$vDaN4UN(f7r(&l zgEL>>j1cD2-YZAWr`lu4xl z=22;!r?D|At$x0I^#a~HK3-E(?jO{u$QC&+l~<7|zaMLX_HNc-yRrX~C+M(1zjIWhlt6`c!?IK8SPC7hLc1-H|6joCSE1#mhN^GjHPw`ly$0=@>LAQS z)(fD$yLGqS*}2UVSPWpTV6qZ89HT-fv6w!|k6cNOi_)l0AMnvHqsTDfOf)t4+R z=&X+_x*r>w`?Utk6Lh?X^#vvDZ~LqCKbsj~#9$$?sj1S3*vg`@HKlK@(ucU8jbD>@ z)cM*1DXGQ zMZ0JdN>97yr!D{;&l;MOKZ^YaHYT(Lp?V$>F~}W3=^PFbrQ;$^Pgrj_){~FX29v~a zbY#O=jA+*$KP!yutMoG?7SH%*TT0(HFa1m}y_oy+tiF`7<;O*F_nGm5*u{z!04R{wUobzGZdxc< zkI}_B+VE5nISQf_5*ccsL2P~Xs4ly+*SBBXm@|ZjsN86`h(E~;|cCwE!aCGB=^uPhO!hfj~=KN?NgOQ%F1tY*(tfv?m;3UtD zel36vYz%}PpxUm*xPg}lBM|^_YQwe<0ffICI!;K3k`OcrfjZ|R$r`6-D8EKO##8o5 zt+CBVVai|DDs|$6R2r9X|s}=tNBSE?h6Jz-m>9eC6Ll#29!h>Q{x( zBnE-XzpF+3aB@#M0e#tw?TnW@=GGbOoLgT?DdImC-7sr-7RWLgCmpaJZav|Fm^Oq| zTbKi!4z01SgEOsH%8LMj&BoNMaz-?e~Ua_U-5o|Bo-Ezlf=TJB=LTtQ#uzX3Y>;%TBuOCC9zwQaJR>vMeOdjFv(~9 zy9>$KW>IC=@KItPC0d$cJ(pTUXN1Fwc36>=581aVhVPP$oz?7;fbx8pgb(Pm$eiUA zH&bGtu@>B3yJpVo5hr+?(%f!B1KIWIqN#jw>KB+(|uX2gza+>pekWV49 zn_=a43dgO7{&&e9TNkSTbp`h52>7y^aAbFp`#y3X9?Q3#$!2eApGRf%3Z#*5p@Q|- zV(hv2tC^uY^Y8>zO6|mU=QhxNNz6mnq*#ahQ;bm4!*=*Wt*b9a*d~ zGV1(rRMC#=dN1q|d>4$mEp*fuJ5o=wvA`rbCWbu+EU!)>fP(f}b@n=q!kp|g?en=f zSU3Ggtfpcsu5Z@R8cxub92M)E+6hTHJfBc84C@(k%FC=uCK*Vcws2NrXQ44I;q1iD zOziBWBb<}OqwE~?6%NA>Nm}I^r|NrUuFjoT7JKI=_I*-KA4aW?F50$ZgR6FWaI@r-ax(Rhw7o)?bQFFUq4Hyl^Ak?h}i4VxEZKTdqp-g2XO>qcPz^eiCd87bSL~1alE;egTrX zB(Y19`Qh)0@wBmwGcPfoww7>dVwZ}k-F3|PvcxV+vSG4*mnETBN}kZGEaIFJyF9VW zlZ^eJ`H9U>vb9-WO>9BpCgO?&dxNa5OpNCWzuh3^Mv8D%Vpru^u2vST%{7VfTPReXU6HT*4<`1Y2(^WWB%m{>q!lI`JzF@vy4ZGriOO4QV%Kl6^?*`)A$j*8nE(B89ZMYw~)Z3zAGjH>m} zTErho9)^+G)BZ^Ee>l~>tblR1y|6Ky`fp>xu$Q&AGK=VMQ`*=w)E9f>(dCO3C{F7# zYc#d1xT(pb`$juyEw__BGqZuK_9!AJ~pka`BVrts~8T-b@rg* zyILCKA0H~gQ@2*9N; z$8{|ql5Jw(+i$XU+_OT3hSY%BW%6#%s;T?vo&On2%C8=HdA(H8Hf5pQ$Fv& z`1?$RMGTe*HWgTk9DMGR7$Ogiw0O+VP2oa}q|n>6%fud`ZBP4anhEV8&=Vf3k-96QVS0C~Gdg ziDhFot38!sGVKgb&v)x&uFr}xZ%ATiXtPd}hE0OG6m1Qri04G?La=?;9_D&T`Ob?# z;^`FA`H>lW5o%yk&yJ>q3y6`XUl_3qp>i)`TT<1#fVFO-f^})}CL({aHt;ksUjm={ zaGtjIV1FKC>L%szA_JSJUmCH)2c0ZzYcD3@Wx8CZ{FhS-S;WHSQ7w(8bLz~aff7QU z*{oAPLwlc4=e{jbe<^W#FNt26&0JD?q()d9h}&xOaDJqXLjqSI<14l2m&N<#dw9$) z#|1X=$a);HtXf_jRh z@Vhq&)q~i63NBj zXb-8yE0 zcu_k?wx&-=Uy9ffvNfjw236$C6wQ{=E3UP#YP(Xkc}-hAHmW7O9vRQ82eKbCSxJ92VR3(lu#=8vjG=q)NY!=%_+?|-v^BG%?KB=(B4hc%^44|?J3FI0 zOU#D|<}8^W8iP-kdL0&nSJqg*bNFQzgL@Uq zzLLgfg6aYg8US<|G&DzV$-W1u0r3;+L8wLU>$ zXw@1p^od?;hdMKgH-wR?q8j&=qu_{V3FTCwok=c)HE8I~U4EOZp+P?boo)>vpP_YH z?4N;|JHx3u44Ohuk69Q#Ee@O0)ndP8%Lg9Fjl>&Lq1v`$b`B=`tlS|vJGNg22SLkD z&y8&^DBJzQd5(QXHP3hCGj{p{fu<>g-y_>{EVEpviv)c@Q!b3zn<oV2h9Vuc|s$L+NFX&^VPhZ+UuhBI@B%~0y?Mm zI@I3IslDygbecf4*9{w?)+wPEh)1P2(kL|_MGvStH`0dS+MAQ0)KO?a~ynj3!gba zTA$q}fHa?xx=N~_L%O;Kl!laHjj4VPoo1?kM=anpQ~gD;aMN0?zB9HVD(WtQrNK^b zTJQ}NQtnm?>h6eX;L}REC)ObnxVRTCfKKzizF^b8tsYjmKL$H(8?^#~7S{O+IvzU| z_FF-otJ6CI`E)X0l42=JlgWpbtl1>V4{IsP1;3N^7@vcm5iHK!PUY~1Rui;X1Qhzw zIDmBKmBs$Y0Z}KR#bwu`ZnjuZ>;>WL#CRT!X#r5PEo5pDzV#_djfh9%mf!$dULUWD z`tdldmZf+yy))*8aQ#7eQHX8exNQM|E@zYg=`u5Jks)^It_0yg@_df1`1AJgroiar+=vsy z(BIChvYkW;Fyk#m`AuRxF3PuKprKwlz)C=qM)3;h6F`d#=KZQ*-p>U?T7y&b!;v32 z1VTdnFa}P}w;zz6>SukIVE6cQmQXnu3R_2B=;qS2t zr`ICb_qQ=%U`9zTNP*AHbr*QpM(o(`6t;IMZ7-R3CO{V#gl`kmBlVpnv?4*E4+(HY zius|cu)w?kxy(v*Gj0^fx57^S7B}S0EZnq z1qb;-;E*J&%_y$Is&EV)b~}Oy2ks}iuXGbPX!V^163!X`=xxWtZO;2sx_PmJ*K)b7N@PE_rVNs#WbN!UJBaI59oeJgO- z8DNW(C;;Lh;$VF{6%I7gcWU|kG<{^b%{ndNtA|)V zXRMiESmx6cJ6$zkG?-8Z1n_EXtRGaP@80XFkS9$;Izkf;K zUlRD21pXy~e@Wn968Qg@1R|Ykw?cKfu)uyjZUxRzEoSLf=L?bJ4o4sJH7>1hj1qFG z510ZjD^9Ht@Q37yNBLcpz?HfXTsk`xSFvQ3OM;-O@zsM8_KQa6n2FA%Th7)t)*ZqM<+$YL@>|7dGhu7Cz_r3-?oSoCkdQSY96{E4S=8d9 z1Zu&;8&lNvaG10gt90Dg%5Gq~H*(w#_(plrKn(Q@te>dm0)Pz5EUIhg9ZUxEyDxHj z_0X%Y(MwVez^GPFS8p#!0C@vx;QPwhDyAyRN;3q?$rgcM*LsS$!dsKq-3?+*nlwk* zmic9con+Eo7|P_=@Te$&P4c{!ulMv}_5K zbis@$_05axM{#}g;^2wPiBzhtSyQQ?B|Yzo3RDAJ-)B~$lqE?*v1uYaYli)_sGaK2K> z`i3rmi|J}L$e=?zn(`}&1c`Qzt$LxOgXEc7=8}WaW=m9!N?w~DbQb7)7o{m0bqinx z`pwYqQLA7M!mNX&6b1OB)wij8hDK@+s%^{2uXryF`I$fZP*Q#TMwIL=#}YFkqoOe# zoZI@Cu>tq{B#ws2B&~vsmb+d|5NDSCxIBiMCt(QoiTiWZm*AMLREy=Jdf4iY{_3|b zE7hHwKL`G|p6c#g>Y6n=IkgBHq!z(I>((1uTyKD`t>0Mnaaz+a2^okXAGjggrra#9 z?$OK&mZ%_sA$}VP#<)=VMUI-r*l=suiXi#aa6_`{{m5d^s%(ZToAh)kJW|Qq4XFex zcHOn>N<-_2sk)p+0H}K7!c1%MKLG=az6hZUQ_Etp&W($O>J6efV}KULkCf~EsnG*| zllTKadzJVD^`KM=*_R9j4@dC-a6}1(tUOk$rTlKqF;E#OZT7UdRbpmV$v3kOOYN{! z>%U*6*;2pk`t6eOe3i}!PuJPgb-J%haDEyPK)hBwh(jtms?H)CNDA^+k?CGUWQ#oJ5p8q=M{KEWL}mh2PY-YS9v^UKwzFX9 zW6I<-&C>NaG=s!a?T)fRf3Pld;A;tyLLO0|%=a9!(VhesvH+N3Q{Xz^X1vgE7&+Zf z@x#e6nEiZZ8#{IjD^I=`!4mF$afVISGN&#T5bZ@#V8d0nuycSU`^F{3q9NjYIUZj- zA}7%xCkOQ9l0r7qISZY!8b)9a`@*auwP_J%j@DrW(i5ud9E1!iO^~!Ufy4l*T}RZS zMCdFm02rr-0s76z7nm|2ov$l~rT-Z@Dm0_Hd{tL#Yk+TfUWYoUyN_5GE6&iS<>|$Y z+bAzA+J(go9PX74%Db}I5pGtRT}iHci*_%@dPZ1Ww8dm^4=?dwM#L?)5Eo#`W-c(vS;E#&buiR-~v8J@B@2l*JZ$az)8_4okro=$AC+o|0HWD;_Ty z&pl2S{tlx$FP7}4lJw)9lD)|F!t9ZjjOU$NrYlOV;ro*D+~iR&$I^g=#Ov?81B zw_Ki3hvul`on2>V)1#(`d3BNwKP8=Oh$4P^xV_Gvsk7SwwLe&A54wIWsk0@zIMCxe z!iROL`G<9?AfF-89r(@gwuAOz@|dsc?5jHUzghJ*tDdy4>a;)cTRXu&Ym}glsyCiI z;smF2YQ6FJB_2cw4pVPD*XSE{g1mlI2sx-yMi1N9os?Z0>N5zo;!Z3M0{hMN?ygJJXwvz+g@}4da?~0DlLk#Q$|% ztWodoNJ)beP&8%cMh%IeGcvz6qoh%6me65JJV>Wmlzgz@UyS>BJO@Rfw%BQzsbAb# zp@L`Y6pB7LRJbn{ewc2t@Z#s_2#RsJ#}NW?vBWwDzlv)L7S-pkhwxfg4tLc<3qJ3v zhtWm#zPG@ormogU>X?bujSolZ)Cmp6sk+u2yrn`pUE(Tmtd5%~;y9s#tWJ z+bVe2tA|xxv@5HevxUbJAqQ}Y(A>!8s+^To&UulY=gH^)=rDOM-t)O;jbz8Fo}=*D z3fmCMSWO@x2HjP2%)`psEB4Od_%oGvqHeTMZ*U+QLXheMkfP(AA`ld*c}&aNtL4fA^>sCJ_2ayoODV2#xYsdWO>b0CU)MV6>;1k4c)USp=vCd#)fhMG zyfZK`Re}2)AmKB09`&RC4|xi`36*frR=!Y>j{}bjm$hshSPUe} z$AKKVMS}v_VjSoKZqdw75DRdN=WRy1XMTF9-{U)gX=xmI-pdA6McF$F!~*Ul{6=sV z#W;jZQhrfjEYeDbR8Q#}9|!#J zoG=VHW>gKzM_{{NUCwEe3`2u3r~aEc5%(62&w*d)@=Wb^x~ICt4}@UdUY8b&*Ea?7 zl198G7#Gd^dXx_#uSaddbS;6&8G>}ZW$SzZ-b>t|1o(1nU(;7DDosPPIM5sz981QE{)WAnQbY0{&e z!{c;eB5x~(t)VrB-{Z483-H&Jro0Rl;%FEu)Q{i_x>0sTnU3RiwW10FPP9@sc!tnK zD`IwpACg(+#Lr2d4!Gz9FXt2mxKq&qMZBEKiJI%{?RwoiZydCts>5~VB02}KXeD`P z_tXO%g0W?g0>)4zF$_VREJ55;&xCh)FkflFFx_9DZK1OUNW3MSp?!FM zpXnDHo{3^yTW{COm;gX)tiI^bh{zdfPPcWV9EX|DpAwf~yfV%EPv@HKJV>7JkR<%63u1so@~9kyB%cb@5s??;GhHHVksPZWTZHO6wurP2oq;0x zQgS)2NG{fVU7je-U!Y4Dxm=O^hJ-mHG()$lE@Z|uBgX?t-LDqT1td_1AV4HvO)f|O zC>N+7u0^Cq*9#s5a;8J*ACj*p*Np-JaUmi@L@Z_Ir`qsVU4N)Hz6}uo`nxR-V^dDb zZVA+VY}v+2sJH7jMC7t%7;U3MOG;pC0%L4!O^x#AxYKWS*g9-wW5TvJK8$mxVw{En z2Lq{?MX|s@=NFXCKgQiAr`*5Ky0#T>L77^if?N66%M{ch^&yJL^M>^o*CS^s+6P zxHeFJ3V(b_*&opzh*gzHtJBj*h2(M09}~#uv3RTiL60ljXrjRl3k_tW$Lr$6Cp}uj zssn+<+0&%S*gLjI5zp$PMjOpUU54bj{0r*xif+?WhFASoN7!-9jmnWEmI!yF+OKrfeY_Xs`vRfS(s*fwBgbEE2C(i|a~y(ut`2s!pf)pp1Y<&01{ zj=E7YfEz9=AsNWc`;;SxnyZP{2b2T6GX=Lp_)Ud@GmNketAB2DWbW~e;O~&ZI3t*2 zltj?MP!a`*B%Wt|Mc~<3d0x`hf!sBy(ev3jWHiXrUiJr)(Fc;zn^CxrT8@_A=ja}h z{K%D?pHl9RW3W4l{RHs>#%U37=Tm)4N+!~os&iGnU6uQNA7O!)3d*B7Fqj@j$Q;un zzwdKr=JS|R-TQ+dr1M40jio9B;0_P1_?2!!m0TUGgFbURD~O%4Zg*I&)Ea)rtKmLi zCN%-b!}GM4<<0zeA$nB6ce=k*J}1sxr)!>)-?!59uOAE(kdoCui9+s#~cdTKq&OhdNsn(V_(aa5gQO&N&0CIa$1dxM9FKh4aBf!P&TmoSNX< zNiwIAMuzFa(tx!&omHYUbOcSp;@sz%`rhNgu<9EQda5A4M_G5_cL=si_%+aTkKwfF z*F(Hk zKb%Rn1%5b_LFoz|$Rry;Rb}I4x(-%zhT7e+tNer}A8`l-ho(Tbb=7$&X4DNN2|;*N2muLT^}jOuAjMl%j$^5}pj z$1ynpIXL&m273c?-V)hi0q#sVXqo@TJ|gHBcj<(sH05p`$;@pK5x&0`**yLv08&R(l$aIR{A_Dh~uxx5U_w}U98 zOCHGVjRZt&zIA|rQ13T|rdyVU9`IHIR6CDxlQ=-#;_bxVb_U)_I1;Z9-_-&6>W8Fu z6+-6s5>BC#ZCS&-uhakeUsa@7`1l~bEzp#2}T)s5@ zu?{wBv*8mRa?~VRuWg)ktS&z;)nUi1d3=7>k#r)!dVZ#K&N9N4*7rVj_Q;4u`&{QB zr4V1}{rSxza&@d*+X+R|2R?JZ)Z4peuEr<{H7HnX#+IASkioyI}%6yoX=`djEHae|~le}aPJ z_YK)lMj{;&=h%HKXYMmDVJZUg)Zu&1jC1Cq$T@9EjdN6|7PVkeSiUOroGgcz&frtV z9-UfJrnw$}R?&D)f%4f!<2kFieK^NMXB5YWbBo5yxoj$2S8vzJrCFYIIh*e^<`!+P z?^K*uwDY`>^NZM<^J&3qdtFep3q0W>C0wM0&PcP_Y~hI7rm!l1anX1#pyW%6c8SagE4m7mU0J{% zpvg@NLhMAG4-}0@;(V}Z59%rk79+-nhl=(PALd*3|AM?OG)XPqFqA{4tW-h=W1$o zUD2*{QCwe*Y7IB=PCm|Y6zzth-AJyRipFy_akmuh`eHs7+`?J6TZ_gcHMzIGsyVl@ z%~Wr<5p}zVP{2DBsEKY7_uLmv7s*`1PK0zP*Tg%EcBgZ4SJCeBCg%IwP`kUi@<3_h z!#zdg#4D4BK>kc(!Ofx8dyET5q@3OF8+B zlaNJwz1j?#By9>On{+Xfg4(F|?C1RA49a`HXgtp$xfj#~&mry?i}pg%UZl8}i}rGt z`n^)LS6oCtCW?7@*%k5CqP^;>@LJJclN_E>G`Ek1jWw5o)}~DBinc`hwv4Hwpd{7K z`$o~;p!0TwH;csBn{E|3b(kHScToN;UmisI=;5&v8;Veq(_2M*O9h|e{Jc$l)IjfY z9uvN{4eu50T@SopG{Wyo$LdKVc5L{dXgoI|(A(>Y2p{UJ@KMnSe1uRwmi1eMRlTAS z`~=1Lv}m8AmArDiu^jHJx7%6P<(5s+R9h@n2E|-mZ-lSr-sjJX#&ZXuo9pdnZ?^lS zEfiJN7CM=#cD!puZWcc;8qao&p+(f)zHmEzp?9t?i@e&GaPw8szEZ7IVT2X4s1|r+7-7XcPzyXg zjId%B*8(pOBdnO`Yk{|h5mwBSTHvE$gcb8%E%3!K!irg13w%F}uwuTc1!fN?teDPP z;Hcq*6*H$6IB7Ux#T-`)oHd-VVos|DIFa;QX8)+ByJ$uGp%^+->-3A-W^qJ^&0r?_ z+7j+e@yb#=*pp_n3!3Ib#q6{k4oT7NL)d;lG&P7FLe|4md1;4gLtmcU;l8s^B<|V~ z+;ibW{E?~g9N|gZ^C8>ZTsh=PM{}o9nysO)pZ6|!Oqv}v)Q(YJ_aG`hEAc-Gd#r9A z<>TYH%HPN6<5MHP@Lg5(2F@u#W8<4opY-G@frM85uA|ra3&k1PUWoB&Vq`#_?l7fY;o~5 z*5lmNc+O7S!!7l83tb;3WpU=Ro0{6(s<1SipO+dBN#~1%c)ftBcp5HD?Lu#Xi?~?Z z%eq*Nb0HGHgg=nuN%K;>xY{`LXq?ML!7f7@m!}4~%g8(5Tj%m>fi~ZpfJj>&BqOdZiw z?mBPEHM}YPO33R|)W{wNe#7z+g)2jYP2Y|MV|f6)OcX?F2&eg zE(z}_ceC7^hI>-G#|3^b>%&g&KDEU?$oKx#?)Rhza7wCe@c?b{pycr&l6+XTRE-|N z3rxeKsXglXA4}~qC-t~UJqoGCsV(-TCsKR7O6mznJt+$IB($Dl12GLxb3b_+o=uIw zvwZiQ-Zfu(o+F$DxIdhqn$x|g6xH-4u53u{#aatLh1g$C8NObY;PdI(E8G*F+6$EO zYN~$xsxqr*Kkr`=iORgjq}>U=&TKce*OZi2=dy34#v{^iruL=?=ab;KSnACQzpc5a zz3qgV-{ypggz!5x!tbWW^NyEEecpzj_gFVpNE*k&$WzY1`>DO}ZTA7kGXV>=hmTVG z2wE-SpZSwD4^Wu=n@Wc)q2_f2Sz>F6UPti{kgG@qFR+`oc^72e%z4 zHLq5|i)OjupBPpz`iB}boh9pZ9OJB#@kqi4m#D$PrMw2LUd<`l9LGQ%Ub4eI?-3XrWHP1VOtwy^m^5cwb#_D z@3AF2)(IU~vg4f4@g+N6^w-oX+6g5)!IMuc*@>Qf5_cJrEQj^P68P#9N?b^Q`BwN? zg>5a$Sl5qTa^f;ykytZq;gzRtW|wTXQ#_<(hm<7ALrcap%b`xQN@~Buz>6srNfOVA zS+3glu61(BPWHlGYgqO>rDUf#wNp#l)#7J79s6Fg(>?Z#lJQ8uXG*|ls$L{+A;Mco zm<#J|p`1+g5Jfn(#9m>^&Tw@t=aq~{ zg`Hng8q&S6WapRgfajJl{-v`1uG4abUsSS-R2x}c*g;n=E*Z}cu2d*4)GsO7B~E=_ z$>wQZ1?w-kD)VF|vFa<0OBQR&)}UF+pt zSF-C$*@5gxD#osN`aNVGZYWjl&W$DGxxrH~4?RGvl#Hi`ny81?@o(Y9*YR&H*{y28 zTS{8TzpbQoe159IZx>2YgYO-rkzsmR1U9i`i)gevOLnJM`Yr%k`rhL^!rhK+yxU9W zd(`fic6$l<^Do1$j4d8>Z^`cUn%q~i`;>NXDePLdU8|<9kJR`6lJVrW4_gYI2TI1% zM>QaVEDx59=XMn(gU7AeGr~h9d&t>(Sep4TjL~)bA_2|S>bQ!aWRECvaOkUV$m`IG zM@#l-No)C!mFzKiWZ77RY%z6yqGV5yP0)%bOZKE^dkT$22{?XTGM>dH{(_*g@iIL; zTe4^QK+uZkO7@(8@H}-vsO{keu$m=%fe&6Pv6lZ*sV%&${6tL;uaxYSlGgHHEg7+| z0?mA_WUqP4Eb#zq`LEM*_Btm--YD4{BysM)WIRit`Bur^DuurJT7F+|#CKgM=+y6( zjK}}vD)K|g-!IwwuE`&i>;r@*$r9mf`8k&5L$!Nf&?P1Nuw)<6>>q<|cKLpS)~eY( zz9W3oVzHL7*8IQ-PS>AQ+_@ZQAIDcQ3>`RaN z3aEEUqt(|X#_it4%Z*^Cas_dNv$n%oLV1gt81P66eEImoY zhy&cwD;g@@m86sIuI{SpkSH^RRTkNlEx@n}$l@rB3(m#4C~ntnRMhd#IK${Tiq1Id zTvQOz`Tm~s*3uB?&S&mlw^ONl&wkFco#&kQInQ}k9eJi#{xKJ5Q~x=JsZIS~^|Gn| zD^#@G=9Jjfzc}W64x9QH2jkXDV!I?* zqsDf=o3vgU+ohPaN^71Yrui*$)=jPU$F|?IUJ%;_u{wHTY<%eGMX_BZGuZRvWUe;f zeyer~%nJ${jkMqa%r1+K&%8FRUmhEuRu4*x#E#`#r7`mz?HFG=@yVz z#l|NTB(<}Kt7GGHW!!G%n%MaGwYiW8{kS%^YZ)>*XaOCGCho}D9l4~vZLLLmIAUYI z4fvke_(-|GF1G7rL(GX9#O3v|UGH7H!86yt(`R0iZk(hgIT(aabij z6x%~_^8VP~?~VOgY=7qc_<;KHe){pj*goh<56AX_v>y*s^&?bZkI;<|#YSb1koCi{ zbjc41C(M)&d@cE!+p~Yoo1#3UKFz)q zb6V)MIf8QV9N_GFx#k+(A#s(>|1GV!lt;}asn`u1CJYizTWg9x(x z@7VZ!Nloz@Pvc?2`Kcv8qVrIJ^fzf|aexe%5k7N6Btl92gV^OL z_7lg;PyKottCu|oQ$**F2F1BBR?B`>9-huk-*nTZ!dweZ$?#~$?j}ZcY?lf^h&MwG_F)z&7g?{qtqMTin)8uh6 z2JktCKbTySW171pM^7%uB{O3r<}T%c!ev+zV-%=q?lR2jFIQQ+ zJl9CB$k`RSge&lJ$xLV1yym(0YFbIxw|9^8_%TXN!#TXV)I)J;S;2Qull)3-82oQrLMjFTndf{`#ZhBYroD4xT> z?jpa03jVrUH-f9Kn`IStbC!|6%L^SQ!(z4&bPSke4()bt;CxwRhwa9+k!pTl*VY{7 zwVjEZpKo!(?`%8UGlg?R+(KiU2UAbV7rDvNRXX>kE?wjIk5j!{$a1Dp7P9YlldR22 z&d%gS;${q7#W|bhlN7sIw}QMbYiA17*L!(ph#RunKRHv#rScoxHi%5u`vawv0)!6J zGU$9f`1-VPW$O2Lvk>5iLDZ+aGqeG5wN4|1lK^+Keex+8<0DyhFouajcJkWj_=fD- zRrH(kSZdz@o?KeTM#o>v{+tnXj)Wadw@`OOcbvs4$H&}=-7VfpeQ6mTVBaj=%q`#5 z64vhCNw;%Xgd4L9&QE1Ppl+oj14<6o=l|sA2fi=6apiRDbKx>II451v!P1=QANj=v z8z8xbTAKeb!_j!Gs0(aO{6Np&*E0t{`#G-~Bul>*zSyPzvsV<%(y54Jkv~>Hbb>b+ zrmGz{Ojq+*oBxbtZGZeUgS_|&7xK}@zv%g&^=x_Cn3c?Qy@9*A1eg9~A-<)AFSo*1 zh2O~-HuNCuyE>1FNx$;_y+ibSGRG%1#Q6E_Z@UG)Tfz%O9jH;g%pq*9qZ{UYsw(`WKB( zTO;%l8oEH%_SBT>FfNgc&r_&jq56S|J)eu6l}M+GOSx<~>kZ~9 zDuH$xp2@rpx2abhZd3oFPRJcUy$@FQmwSbmdxclJwY|f!6D2x~@vaOw!f$Gyo^H}& z0fYC8*s8oyR`GNaVhmD+L$n9H57@5X;^x~}sLNoTJ12tcOR|!Hj&hr9)|GI(Y|=qk z5bAEXPHlt9oibD>KFkVt$zEN;{_d>ifxFdnNqv{!#36||xa*RgGvs*ERCq$;I4H>dOm@^D zCdliZsMj>GOFmj6@7Pr0;i|!oolK6Cv^$PYh?|d61-SAsy=Aj?svVCWrZ<@^_E1!4 z0wTh_hnhGcZINrW6y$0vA_kM!(!1A&-a&#V+sUG`Q|uJw8N^5v+;M?D8BSIVm)I+Y z3+m}-lnh94ZDg^1axxzhlCy_Xc(OU1;Gdt&b#uvEj|z*T`7O3Z z3Azc71n$KPg6a*)Y!0o?qs~)#dL2(Tn>y#QzSm-vE7&yTVlv=^WZ)ZYgX$?^9}Q4W zv=e+5hhV8e7fY&=`M!2Pfs!Oaw{NlgC3dB zumQD-V}n5*pTKGB24<+!8wr=}30H4Ug^#SJ-#nSTMS|xoLWV@m2^#HLc9yE;6unpb zHevzJR(l&F<}7!G$9+*9t#JMocu1lQ2$S4>XD6r&beq~Z53AaSZCE|xJgi2<&2oNW zg$*m?u!?au*6YmMkdVvaeHGJDS&DJDeJDmpxX#W-RBS}WI4>KDX|H#+7-2jx0vAr$ zxU#_rcuVD030qAtWw1#YadJ@i(K&y466>SY?40q&GOJ}~9rYlw{8dmfFjYI7$~jY~TzoqW|sMQhmGQ>>VkqoC{L+HaKv5uKn?(+!AP* zev`doYRP_A8N%HP?+|?~;vT!$@MX>|5ei?RW4Hp*g*t{y(gpZK&vUV!iy`0nxkx8) zL)f*-i*=p6`2xii=1X)i*WN+*5f2NrmVBq*Gfz)0)d5}S9(LHdlHHe*m&wxskxO-% z*E`WHbtcVE@M)5XXw46{S z=esFzoi0=lOUdhXZG!5(L5EZ&ra7rg&KoIkKxfhpWOnOxE=6vnYNU-3}lec{$~q5obK34T-FdLMNgyNmbxW#{+P&I5k`Ie>jIgD86tDBAmU zR<@QrQKQZfon+Lh>VYR}0CHW>`pm6u|oN*RYU$G?Uk9 z*9Dw+ZG_XVyp^DAj|)!jA=;w@tJ+VtPX_hq37uP2>wl>uuOjSE>u_pVM|KG#k9h(e z{kV?FDytubRYxDs;JiW|{e+Ig(oL>5=+-jwu?+1JNG%p=qz$Xj=oGB^>m3KxXLS;` znGUEv$9gG*-Tc`%82^_}#j5Gg`(*|Q?1_$4Lqyd-;PoP{}z zB6E5vAl>%w-&>=HekmpZ3Uuou!c|!cyo5z=7huX3cP-|D^M&j$l%n5@kPciYxZ7sy zw!gyz*wiBU1Q5b=_Rao4xo^MrGDL32@!8fy0Y*Iqn@XctJgR+Qm?^pf(s(u;OKtfu!EwP-Mc|Ah_wQG zBAOminc_rGD6L{ZMRO%^k?SO3v$~iEu*oZ-fK492rgtB|OYQChu4W(b{N+?3bvjTT z%B$r;qcmvrp2hh20j2)|H5^E(;Xqerg}}MyVBlPntSXHg(x2@e0VC~#=-#1BKLlm% z1-76Je40ce7@_K-aLX0m52Q0}5*LsTT;vzbXXB!vB`iiI?J-`Wwt6{p9iqNM!fv#Z01m*X6eCD!`teB z1BNUd$a7f>2f>M$ixb8xx^rKFLcpYt6iPodbOWANdbb@41$N6lTXfR)9493Xa$S7uVK_GUYT7%7m+-!CoNYue5ub_>U>b zH~~#ivV9mZQ4s09LCB;c9cd$%e(aq}r1KylATqeIE1QHHgpCob-L<@bS^u*97S!&w zx{uX#9qS@~&=8mKL$4N_K@V11zAK4}jRa9HbTC4p!zHjdiYQR1sJW%DM7u!bT%D~! zCLYlhLFdVd`~T!Zk@t!FzxmLCXFm6yd!LBj*yOM!rLP|jDoS@9ZcB<&c`~2hkx9yj zs$JuAaiA|wmgpv6zn|9ivbl=a^Z;s^<`l}6{=umg5NR9`kYe-1LVXdiDNF*-*^!H1 zT5z&LpeUE923Ug;g`gDVX*^kqcFiU@2defC^GkDDuDUiipd#?R&Cy`Kn83zUJ)GYQ zc^50Mq=534o=a>oLq+BK+~Kx}r!z9K*zeYCWypm2RE{ zTLd>vhEy%=s7ObI30)J0B_U%GmaEuKX7c#Tx(!BL1=!#}{q);hX6XJ>25Ljq{T8Is z#hfihLR2XSEF-hXAPaosr$ua8e~$<-y3m|mH-nqC;{i(XFL`wEPl<9Y3ZpZs4sn2} z>;aN=M4*xM1BKni^E2pDw`DU+go&l05JFsqq!KSC3wLv8H`tPPvEu$rs?;7rmP0&? zJFcWS%mX-7+~xM57|fYptJD@0fI~}4XCy`#XmIa~IEKooXqBt2s!06BoLz*miXjd0 zf=E^xgdjM9cL^8)5XqthxwEAW5akK4+~s;!MnYRE0rElfmh@oXF6vS(L7DdcIQ&Tj zu)t?+fT^@cV2TE+7MM@KyQq_qb^zx*3Z!cYWuab}rI3FllPL$Um9QBpUe& zav$qL&pQz+MaT&b+MVVln*j%NgdHP=CuwG!MpXhBO_D8L-uX~8)%mi zt@&WKVCxbKruQ!5+!rfAUi;7{-Gh1s11MMh!WpZ6xX;KIOeVhV9=axi4Fn8o{!e%2 zSON9;gA32&Dd=<58tilT?n>~3tR`LoLB3*Faukv0w)WC{Y*`??Wx}%9)K; zv2V*H=mcXY$z>wpJ|bc2etw`dxrT)nX7Jx`>~*9X-j;myW*mU!=Y zm%+YM&y22!B^FyES)bcNFboMIRu!oGqE&BLF0^5km7!tY#VErnTWPB%c~{~M>(x1t zFSn!Z<&%1YPT>->rf*F73VF4y*5qQxhq>jY^LjPYFDle}3TkQb8Ibnb1}WE;j6T~S z5|tCVr=de^`hm)(O%J|4)$|0^eTEF^gX}-kojFPk9vvF&Bx|3Bj)F#xYB$-Qsn%L# zYds6Ejszs{2JfWQK7i2A%kd-*${DmmYwU>TED5``P#$C_-ET>^<}4Sht^{9~1$!CoIstcyww(ZJ%|+5opAvjV z-x=t3W+0;$D$$aBMhBaMOu&Efyp(9$cvZJGnIiC7vmzRo>r}pb8B{t5wyo~6B`V78 zKA3*pon%qaO9RD$L^y6L?bgjQtfzF%ax`u9|5MX_vV+yYl1`hWshaN#ui|3g9Hp|b zeTL3YWuIIQ7f{(b*?d^r^|MfGH!4!~iGwog2g6fTmt-!Aofc>e+!tuTcG?0BD0)sN zinc~jyn?Obe34h=T6z#zmu{~fY!F>ZhS5W^zWH1F<#N{aQ~8xC;7Z?KD!6-J*_b65 zrY3DA;^?~#>Glq;@&k)P{>*^yeqgj+G0jn`Q`cxWze`f7g-gG?vlj+RSJmuVNJg;} z>6F2WXGr={yP;Ae-6}q`y?flTJxq(mtLes^_QL2|hN_j(qOj}&dzyWf@hXQ^p*`-W zed*R3_tWdAjeAcR+Kht%bOuB66$du~qyD4D6}-EgsB;+0y>UBQ_rpreDZHv3UZe1uc6hDAYun*t6h5XMK3?JD+u>I${OWf2@hAXIzrl1mfZMt^{toy! zj78i2+DNbY*!Ao_XsHg&&}wE^E1Xp?vh8q}!d>k!)eDoYR`O}}z0*3?s;&d^!4ee8 z7|&$RgR-KHA`yscu78$9E&{$f168TyXx^2D; z`B_$WQeG)d__m^m@ClK4=sW}r@3h-7DgRKMI-gcMjZWz(ln2{DU;aJNsHGQuyoh>T zsyXSVPY`YT1i7Y95Ni4aiKb5wXZi$LrcV%L`UEMaPY_}H1o@>;5MKHO$)!&aTlxf< zrB6;^KE42k>4cSL623i86VYAM5d9KBS$20Jf0jh8@52BogMN`7U=l?$vvHCcAlirt zMlrj%G^1E3oma>&3#*+X`%Y3uH~i#rn}14&9%> zPnja?h(f-X+j@$<`spgh`sps_^wU%9(@$@aD^7lMXa=_hx%@8>79lA zc}7Q!Kl@i-h~_&ybYyBh&T2hH(M+DZ^%eDnXudnsJF@av>|cE$nr}XHh@CS> z-v|GjmhQkic)nI_CjEu%e&qxkm#C!Fw z*{?ffMzK48=$yk|wsX8XF}clpdJA*s&0m~b5U*OkaGQ}$! zwZDJTA8da8o8J82-*VPl-?sJa^3ZT)`;L)ayGLvF#=f_|<6QOF|2B<|R(6y}ZQH&^ z#p;#Gsml0JB|5n}RvsC*O08C{MSobSPmMNgyxOo@WujK8SH>IVZKIWF3o&JDH1(QWcRQ8V48};bFl}D#4)~Is5LAkc0V%t@++@SG&6Y7W6C(1(=8?9__ znD=4N2%~tz6rt@lRvAc!SYRP0%N+@2fW|V>VPC9c||#W};dv z*G5M7+0=M>PkCh22fb;0PkD5NLY2zy=%iY;UO#fUqULOLWPCT}%fm-j$0_6^3{^)b zH%IBvpk`opQgwWsp$kNUX#*4hr%J5@bd8ZQx>ucQOwYW1stzPKR_hHLsoQY%obgs* zYP?n{5AF1xmWGF^xNabl0?~=J>h8+8O^g7sO-H>UMQ#%x=@@`(ITVXd9IX!R2Aw{( z8kE5p+V~6cDG9WZxTy|Bw1a0<_BH|_9O$R)tqciwW93HLd=r{rb!rT{ic0AN&}4Xy z@#^@F==6PK+p41@Lk?sctyU+TKE}&qDOo7f8PLaAd3>K$Cm5*U?}JZqz(^e>!(4!akA)YXy?f2ur*0inVR5n@@!FLyKPZHT}1`H&K6qqHw=k5Y|p7q zQF(P}XsQ;S-YCO>fyaibdte@M*l9JuU!AHOIIf6Urg7F#8D1SFYH(^i5R%G|j7^MI z1j~S}F-V{c%fJYXTsRC&vk69RjBFpF+8PY9hukLzT&t3@)f-UKm$a@|HtH3|L>s5os*UPUbu`7lAe#0tFnk+3qT6jG*9DoB z(CWan(x9XD#>jXOFDX7~IHl0nrvq-|rq$*-HORz=?-C@ft(EKpZ&Adw==#(I(m)_R z-MbJfQGs^KmT93@@$Ka?$&l%Jo4k3jL>B}pn4)IJ>3!Q$X`EB7?QXGuGu+Ak2a_-3 zpVA z&hOqdUSYjyzO*CX6=}Yk_}$r&?{-v-vpd4yAlzBc!-PMWrmGjH@tol|%l|I^KTSAQ z?g*hC`S(k|l&6>fjYZSbR8PmBESi4X5&pkE?nM9k&$J&?liJVC<*TEU8cWAt|9_?Z zj`IKCJ#Jk1U+Z!%Ehbu$Vk$jTTBa0fk&Dz~>AR4k|6P;jgZ!rDlZGpl%=27AK5xI zTCUeSOH9kO?l`J{agK?`PRYrwRc3nIjt)9it4L<5C*`d>Dvhl>MyuP(qxG%Z%k{>p zBcc?OLzF^9rp0Y{1$`9V?j^Bwr-uMjz|~(58*Pgtz55k +#include +#include +#include + +namespace +{ + struct TestEnum + { + enum type + { + Zero, + One + }; + }; + + // An input operator a-la-boost date_time. This input operator will catch + // anything and rethrow if the exception mask for the input stream is set to + // throw on failure. + std::istream& operator>>(std::istream& in, TestEnum::type& value) + { + try { + std::string raw; + if (not (in >> raw)) { return in; } + if (raw == "Zero") { value = TestEnum::Zero; return in; } + if (raw == "One") { value = TestEnum::One; return in; } + + // The boost input operator uses it's own facet for input which can + // throw, so we simulate something failing by just throwing an exception + // directly. + std::ios_base::failure failz(""); + std::cout + << "Throwing std::ios_base::failure: |" << failz.what() << "|..." + << std::endl; + throw failz; + } + catch (...) { + const std::ios_base::iostate exception_mask = in.exceptions(); + if (std::ios_base::failbit & exception_mask) { + try { in.setstate(std::ios_base::failbit); } + catch(std::ios_base::failure&) {} + throw; // rethrow original exception + } + else { + in.setstate(std::ios_base::failbit); + } + } + return in; + } +} + +int main() +{ + try { + // Show that setting the input stream to throw on failure does not + // preserve the exception type. + std::istringstream iss("Three"); + TestEnum::type value = TestEnum::Zero; + + // Tell the stream to throw on failure. + iss.exceptions(std::ios_base::failbit); + + // We expect this to fail. + iss >> value; + if (iss.fail()) { + std::cout + << "No exception thrown; Failed to convert 'Three' to " + "TestEnum::type... fail" << std::endl; + } + else { + std::cout + << "Successfully converted 'Three' to TestEnum::type: " << value + << "... fail" << std::endl; + } + } + catch(const std::ios_base::failure& ex) { + // This is what we expect to catch. + std::cout + << "Caught std::ios_base::failure: |" << ex.what() << "|... ok" + << std::endl; + } + catch(const std::exception& ex) { + std::cout << "Caught exception: " << ex.what() << "... fail" << std::endl; + } + catch (...) { + // This is what is actually caught. + std::cout + << "Unknown exception caught converting 'Three' to TestEnum... fail" + << std::endl; + } + + return 0; +} + diff --git a/emtests/test_exceptions_rethrow.txt b/emtests/test_exceptions_rethrow.txt new file mode 100644 index 000000000..88a67531b --- /dev/null +++ b/emtests/test_exceptions_rethrow.txt @@ -0,0 +1,2 @@ +Throwing std::ios_base::failure: |: unspecified iostream_category error|... +Caught std::ios_base::failure: |: unspecified iostream_category error|... ok diff --git a/emtests/test_exceptions_rethrow.wasm b/emtests/test_exceptions_rethrow.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a888d69a7d1ae31a3093f8b98c8176d3db9238f4 GIT binary patch literal 344700 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 z zTW}eKxB&Klcu#wETIPOndv80x)kxtig0H4cPfP^G;(u|D=e|q?HA6~RtP_jO3dJHY zYc&?b(EzTw597=draKFxW=l-F|54_iubrw6>UI~kx#Nu9A z7K5=|7K@h!lr6EiR{|=*JT$z=Es4YJ@MQGfD`k<1soF+sE}0q5%E9BT>@0{0WW*Fu zAHjv}yA5pJBFHV7{3?GsowfU6!72?#-K$31=eCqQrTupxPwRxteg+ zM0%X&owOSt|Cx2}5(K3bVq?;Q6H$}Tz_2?ucMV0@=|qWRxg&z)+oZTlwzKV>NVc;i zyLVQynSD5{t-d^IJOCGY<6$Pt?A5=aZ_PbP+eVUYID4nk^=Yp9pignth?wGzhi|62 znP%iW0DZ=|;BAf~LzDuFhg_$=i&WmWH$AdOv4jy0~=V|6GjWj=J^W7R`sy%_5%(t_G zo1m(heX}?+C&d(=zF3oQ>84AnP;|ZVK=Cls^IG3^^~8QliClQ_=@=}~nM6IUY;0sx zqalGPT|Hr31peE`U4`%+G?MMeeel0jm>a2j>S_}cNq3c`CuSwx!6n^6lD<;w>w|il zXdPVAvFsO(ioSmuJ16eoQl2O&2Sx?bhJNZ7466aQkCzSITdJVC***!A-NfWRStc8t$p$fb zmG&6~CiekyN6iT3iiToms6O`EVliOB`O?tsr+xU0(6xGM6CoUytq_=YzVC? zqfN2TT!17HkgFoLhX%%qarYu8?)ZHY+}|kq5qD4ZPm6;dNwf}@d;f61#I|Af;3q${vnNqHJ#2EqWDhYpIm={6XR@Q1 zyhc!up_NRwj?Sd^=KFg(ib=t>c625u*O+7zkMs@u^z|jT6^q+uzB{{mP&IhN+18>y zbv;MYG?XvM=T_9rZRKEbWBTf0OLo)H4XES9lnyz%=05&8|*U z0j>B80Wn!XK)~c9pp}*t5RVJU8fIq&hoVp;V?une*R`Q217w(dnRGpDn=Tu@e86fo3 z5xXHYAptb}J7`=dvl`yEWH45mWGR4InjbFIQha#RisUdjC%6Qo`NiOyAf}JyJjAh0QrA?~ zB*vFj(oIY0Xh&2jhLafCcPU6f_FN_ir#qoLcM@PIKmt@3tX)wc_lRrP1ZIT^r!w6$ z?)qD&NJ8|k5G_~(i>GtMfQU|kRdx~435w~SoDsQalR#B?OZBuBjV#1G#lm>bG#H;5 zSSAQmg(;lwff+8MiFzgw+>>y^O%l<7s8e0u2Qg6~qNg#&MM7Gco}w>I4@fKAQ8qeg zdIo7lbM$-*F;nnS(K8A9LKbOdiYCiaO;f}$QB-|HM_OU7E&}(rDIAjL=3(N)oPiGs zq?M2Ba=U0C+!KAYAPYaaz~LwNbX0`)gr=@WV~pl{IoF+RPdpZTR=}%7AMfcX2_3i! zBcXxo&0HI~O3QQvA>r4MR(AIi8Kjj&5B*1wR?tIPq!mUtjowi7>z2Pyv{p6%S0qak zjqGM|d#7spJK~CN3UP&-!R}8WS7Pk;RI#A(^bvemmbK25Cb8E0GY}8LX7aBQAXElW z-+)Gzw}nA{sZqLAgN{ zTFTFt(%K+84;oMRH@0;!g~dUz#$DfWf{5;+@6>tFcL}=pX83$IQ|H0NMTBXO-!1L& ziOr;~)ns~)?6E)N`bm!;=!k3iCcvf>^oL zQ-WBz-&2BEdE8TiSb4!yQXg-4N{ZuS9R%*K;=N*a!cMX8+;W_yITmSTyjCmw8j z>9UvWk`wYaGubkFRW1Z7*x+7+Fv+-fo)u6*=pc|8d^>FKWN)YUe)sM8F3ZHXb8AxH zt=amzxGmriE6)i%A=C%60b+$+lGi2mIm8N^74NJ86GS0Pp&PwHbobB*5&#EN4%1o{wsfLQUZc7b1qSYaO{d$t0^$_q(- zFJ$Y>K&$`>@j^l$pD#eHu!HUMgg%E@VRslC!fFsJv=*8P?E{G;B=~}qH*$@vYi+BJ zHAfIDb9~#1izQ|!72Bw24QyE=hfjYw`$j}j>^pRHiybrMaO)8^{5V?5bDkiF?HH`D zCmiA%AhZshO#}V`e~N*JmMN6)pYq%|f2-8)0qdC4_{-+S+t6DvLA8K{*|%Rhg2)iN0b} z3n9d`bTH_o)Y^d#T;8E@AZ=R=~?y(W|&)0 zV#k;eSkCtn_m|kFB<2>D*k&RKmLGEQ1Hxc=pd{wlaUf5`&oIvc1udAVIn}3Bg2P z_GZsP!nX(XXeWRgC=axw`hDt^F95W-72pe<@b_`5W?r~u;P?~>Zf zu>Lr#zao$o-C&h$AC}5Cg;U~XsAzp)6))wroN-({3@*vp5-{4 zx2WQ6A*WEoYo7m(09DkO-W8gPO1`IOwYDT}Q7mnF-4*xysvoo!HK^CU@CR5L$%!~D ze$k9NaQLCnS85!7RQ=4Kc)nW5r@~}`*H7T}Q+WMM04f5N_&f)Q3O63-27oDV3xo`2 zSr;7|-+e->sa3r|BcSMBn6m|XZXwUzPlXQ%SVcD$NqCFk{J|V(DiU5os$@vD-bfx2 zyozM_a23gBvF9MeM+B{+iXP2@yaM=1Q~a2KPN?W1&woN7Dw5%oLQql3r}V5nwX_Tu zy9}RpM6{<}hKs%MGeTCOU$QxLYLpPDShiN(jB+5~lP9j1>W*1R@=2MdCk0 zXevTP3H{75Rchit8^jHl$vMJPfx>g3P@3di0jcO!=jA!8=sX1J5Gopn-fg3SsM-%M z5FVnw#=JaGDtcnR=kPTy6qt%~F3JP20-g%XHGR%$$guo8w05LU?7_qbM|D{y-a++NG~ zxLznK(j_+tAB7uMd`gRJ5* zUMQpxDqqN3Z$b*c>_K1AUYCf`9)<@Pg zKx*m};9_;a6Oda@_xIi=fm+yh;8WPI6eZwcL~L% z`rs%bs04!V5o8Jk-;)pwgvz~n!Kd8k6y4(#-IbvTs}xi2Bdwk04cKxHasv9xu_!Sd z$H2cVb_5K^ebJ|=+L7hV)e^!%Ucwn>Sf#J59C>;)=Wgu8;Ukq%PS0#ldi4R2+z<_B=Q$3th0Fu)Gxn3joX8s`6c`d=EjsF8~)XRK~_1 z->m1Kc>zROaCNL%R8Fm zPe3;Tu*IJTqyFY%>$eV3ItmaM-dXSadO)No@h+Mr-I6AH9dnYh`Eg>nx2`M2--Fmx zihn|(mEzMPZ@E=y7hyJhS8cfg@l=9JlMtIIK zf@}dXMVKs($U*@%{9}d1qS0oqkXMv*oSp@aB{SN9!g{;|s~qJe0BJcP(rDutEkagd zN(e$rBN#235;{f;vTswJ?_OVt+1m%fi@ib@ZR55j`m^xase0Cc;SAP+H zizqu?fG*O2UJ)x&xEV9B1dJRfbxM+0fhywvbZd#35X@b)%ikY5w^%kJ zXAxKPB7j*0t^!x{g|0H+xw=r$EO5m%0s}XYsF|)-PxD$9O=nlxqZp6Yj*OrfRfe+s zV7+W&QeG5+q^7TSu`pglHRvwnz~7~UcTvt|!g~STg~dXGPvJ!Yj`B(&vWUN{gukMa zSL<0oSu*^A&2o*yt6btGu8lxP6Mv4>5`(Yeep--PR<-MSgCn)jWuz3t#K_@VAn;}Z zv*;zacn$>KiigK@ZWC4uxGV_}3k2Ti`C#(i5oxScV!4*9cNG)Nk-$Etsqj9<>t0cN{b6{KOiWT+5&D9ZaP)Br?`nALqN-v0n=TaM* z<(E?R3qjm*1^9p$Q2$(n?@LfB3!^YvKbZV}fZvNE@D+va0)C74&xh4NABO404!9D0 z43$&VXqS(sf|>x=guj=STv@n$fo6H!+x-)2_fM$Z=i(b__T(aUAX}bvVLavKkh){H zh<-L7k@*Y+u>0t*;`ebc8Sq(X7SCspSa{9fGExtiEJ9NW_!1zqyy(rsfmsBnLbLz7 z@KpZp&E64OcthHmZ>)9Z1W@JmlD%Gn@}x6^-GYXCMNGXS+Ab@x5r7!GcWG|InzJlJKGdqjpAEN^ltsU zr-rFQAD>t2<6izIFTm3zZow_ZbJhM1{tMtQFz=`@V&GHHf%(sb6r`Nbg#ZKiOOt?K zz7T02d%lCesK0+DC>53bM$dwtlIib`%py#cPrU^AEZ;fv4$mS`756~}coxX`X9RMd zssg743#ZXm1FprZOYEB;h1miLzHb-6mK{|Xq!yAtL*cA~&BEbI9H|}4^T0~*azX?- zqQI7>h)Y>$EOg)5LPnYGyZDbN*lOzM4vYd^%aH)1ux-|zKSv3(rPf`K2IjyCoa6cG zr9ikGEeMo3yy2KaId%*extxzpU^ zJg``(@Vun~6V7ldz+T}M0es~Qe;f#w3kpG%3ijky*F^ArS;@8K6uo+0!q|lcBY9zA zOJT9F(qqdQC>H)*ggn8Vepx-jC3J}+v|IwMmlo{OUrI=!$IFq>g#|8Uz*^J_E|Y{V za|r?9B3zgH+Kh>>ETA;5RDG@?uM%R5l*u*9zlMA?q|nvLr3GIrKo&iJ zotHzHz_DEKIiRtSc>@IADCBi2yvp-$DgeBqjs)<^&7O0Mo)zj!ZE}4pK?;XGxz0=6 zUI1}LTI3GFtO)l6Edr=YCty*eMI38IBv;Ly48VGVeDX%g-pBx~-{VZ(EvD`kQx62) zNH$zKPK&q#qJSV zA)nmmB^C>sUR;5Y!oDM*PvA-$jKEzHSC0v0g*PO+(MgnAbaeH53JJRUBR=L;!B0?# z57ZQ*N>)OFwlaMjUOkL_f^reBPYS?AygubQ@S4SLA@dn{b;uSd3Ft4+3O8S0(4kxO z?DKjS_?8T>#Jc|G;3rRc?I@=goY$8Gwj%VCaNalQDyxH!!j4%%uAmSSa;rEe{}5Qe z=yb#ty=#f*K_=d)vG1I|Yzc^z6HO7Ce<2omfCi zylcECL>G1nOM5Kw!td*BfY5Eh2KcEEfx+*6<%0s-h}Bm<6l{v@wJOlbM*>SxZ~0ga z>ti)6+AO_=TzL3YXe^=wJQi}`!J$}`0~8CHU%y|*X*K^IlIVgsR%X; z@BGP29wjIiadot?SoG{1J!^BaA--b-$s(+iRxk1AA~-AJ>R6r1Ag~j-nk%%ExgO$k z$Q9m@^cE*kY~3N1`BNdjQ|3eE4eu@GS{Uq=T5nOwq=3Vn+?g5<#|v;pyq-`+aXHCz z_<|=3wnZGAA~Y9}Tbkli1=_+(kN5o31lb~9|5D@x36%u3g$hs4@)`hK*ra!ompGFx z`OfQE!f?^PJvSWA5!i~zI9IqRs_MLAFdPPgx#EpFF&xep@QQj<;1}Pan+Ee)&#%WW z#K$M_m8SS2;jTby)r3eU9v2sZU(uT`B|7A9y3BK6_;P`)sFEuLz5<8}i~9wqLM0b_ z{#6VP&aeZksN^+zR@f>v1%Is&Rs>mcnLl%#5LWbYZ_wU*VU{?(Hws!s1J_N0D!IwQ zK*(D|oiy~tn+3Tdq>@{TmlZ2y8`j zr+bC8A{KyHp~CwzETB1VciI*R)dj>Az4>-8d_VCGaYMY|PHB$d(nxq(m_U_0AaoW` zSDNBQ%x`#i1G+R+33`2S6J^}VcWEg;2yNtSvL;UoXCJ!eKHSg6m!obb zitkAQP;D~5;CbJ$c5*+PZ2S2sWiUHYoUx2ftutLgH!)d37gjJ$vuT1VnXHnmJk%#* ztDCS&=zY^!q&Zz0Wroe5x;E9(SG!mfeZn#-k@t_14#Du`t>K!O#YNRp3|rdR5hjvb zbJm&@U)6HXN8l z;3H>v)a`-H9Z>HqmDW9 zm@r2kt6`2%?2%frSA-d-+CYs1K}kkM`qDRQ#V!yomWs_QQfyugOoZA#t`&Q*2uhQR zJ*;95#+26fsTXt1kw=Pjs7Dgak+$IXIg}Dhe;z}lNQpjPL_LK4l#e;K!xKVjs?GME zOwgJhccDEcw5Ir3)DdMg^LtvTO=Pet5g?|~@m~ecM6*f3N1hY-l6v;@qU3q0w1AvM zE)D5#LS$02dBMxkA6^ugigI4k2}Yo)GzmTC?>tCF%73{Ch>E)Ut4Psv{-I|b4y776 z445eb9|>n1Ey1Gmq2%?Vz*0aTq0_%1_>niXd&%x6McQK$G^7%KuGfx9n@77JVjmG)JFu9B!UCsFJPWN8`a=7;4U{-!E3W6jcwzQV4)z>%8Dgmw%4=95pwkB(iW(#Ab);y0W*%5FNphu1@0l5+% z%~&^xzh$AEgk$E9D%nxK_-77ljcrZ|Z@XYqMh35{ZxaS4#fMHuNzu1Ep~P8Pq7}H5 z<4e-i4w9lA;8DmtnQ9y$h1UmQl>m!^igQ2|l>`ih3Qx~0MnXk{yh6tV5rtQr;eaD2 z`inqHIa4g7t&dv@aRg|WV|k_}o-5psxf$G#ayU$s1HIe>0=Npvvmwj@RlKjE)jkd% zUMmm%HW@-3`PkcVfHR?k0%vj_qNMSIWr9)>{Q-VO%1CdXmw9srapZ+u;~lKc^1t`{ z-&_6fRgO5~o{ae=Ezg%4pO5#gDPXrCesU4TMM7`U>n<({$>ri8uCP6+%qm*e?}9k; zLm{`3mg^5=x&AK@M~11Mp13#q(TCA<+USCoBdnoDBZp|}Zf5S!iyea@;j$EVSqjD> zK^qb92=*f@xZ}Q7lIL;*S9iZbI(>m4Sw)Bq?JUQxt#;PFIo6_VB75~*;BEz!!3yHe zUnIslg!i#$O}`qg1K<;l+L9Hj?P#2Z42%PNl{+WPXFC}?uB=nza|MA@P*=~eq*wd> zgCu)WBHzd?TUow;4~E&SCWd?Xv0)q-rmzu-=nOGx4#~ktFqZR#NL96y1 zcx+;@`2>9kfFlvmVgYodUl2?LW(wt;wzUHZTG5|20M>Rwx;FqUQCpj4DQ(F9TI4a* z*0-Uoh)SI1!)SZ|4&2Dq`CKnG&OXa)oPD&pkk6RoD|NMQ&H74eF8WHJ(&D1A+Gr`7 z9C@Ti1uTX{VlF0M#X(8f zcoeiJpeyND=@h;S?Uv%5ldsYxe3b$x0P|J)XbbAeOW~2Q&97hkRobso-UjV6FQ?N^ z!R|N>6RwLACy`iLiE~H{RN`zBLzOs=#Be2!Au(2oBS|fwJ08h*Bpi?A zEN(d-$(bY^k3;|`jz^*$gpNldsFMHtcqDKAe}PBB*JYBXcEco1$^j&jT4xBeG+%+< zB3KfAbrSkizVW|`7vh*Cx+zQ&ZXW2n>%xwI)-ShB0ZH1@oclsRlf4v> zgh6FrsVb02wBbLU`3aEZ&@fjCI4yo8sgOwEk!hfKWExoG5#SMelFxwtmvBkM1_`lI zr_RHK&@&yBL^lOW!p%P>JPMHn9_vy>620($f=D8~5r3kdrf2%jl1NwsPDtXlRr^XUK>F;7ivUbdOc*TgyjCV3^OC7)tTP#5_E@ikcz zq4nX)xg=*3n1B1>o6NZqB%2Ak)z$LgTJdo&^pe6AFtGBq8frxYnM8slAwjx^0=dL99hO8l+YD!r3*^5!I~fqD|Nu@0x`~ zRTF75d7_6pvF$R^JT{d3taS@&2-qp+@j}+>l!B5t?9~4Nlq3Z|Sso}!XePe|C4tE; zvdzTR5Bty6OxUBTX7cOUB#C7;I#^b&bgJMaMO!&A&5j^7lP2dhqj9RJB(8D(2dE_4 zE9261R1$WBrl=%oGhuJ2l+Cubtv>vA`taLjKD>6k{}Pqt{|DVbaaI2Fpc}`x&mE$P z$ze=P*t4E7w0)ENVHNE>t;bq=nw7zS;JTRWpqc|ce$<_~$~4}a>v8;^%Jp2X zow=UHwFg)2W$nqem1{4qUr|qQuJ3W}!}Tq$D}oum66qzRSLXT(SL6C3*VuNl(b5Np zTJbkg8yj7Dt4-xBY@kCMFW02IZ{^K4W2Ir4)x4EQ$NnLd+X+3ZVt;77K4Mn7liC~# zR`YO&yL7yi0r6_qUuYR1Krx3{U3bx_30lVLG4MT1mD~o0P9Xp-!sI z9i}qNISU}b%13wQ1R=O)coB0`fp8ACHT7CK9T@At)zGiCnbZ!l!Hn(!xv8~&YRC3% zdIc8&%8|(q=t}IWS7EfI`nn<`VMrL%#1v;}JPa`LF!ArjfaN`pr|NvXVlLRE=t!7{ z^LUm+m@O1 z_RO8Pl#AJk0=q-?>b&%{-kk$cwT-+nzkU7cq-+JOQHUI1_CG)J%k$-EnLaeQWSD2y6w9_R)*R#sP_Ak~#n( zzj!~}R~>+Z2$Bx4FOGx#STKy|CvH#sYQ)(hiA)LZ#b(+tqTAnkh{|c!QvUz4fP;{!DFTIX!)|2_HchmFy@tnV0OOT+B}8c9N^ba}UFj z)6!5ruU&4M)L{$i@cOLZ;d=Kwv{cUJGgGo6-@xWvFXp;6*ZEv`<0?#|eYnc?(7;uG zhK^k2Lg>U*YO=GnKvs+6op$9aOw(>$1!>ydHV>*~^QtQ8f$4#Cv4AC3EZ|xj=*=xY zL+Y{%hYze|y=eo%O$S7j*yTI8I>FiNbF$cr5FjX)r8-sdD%L}i?}xg?QpFP0uK}3i zgHV=kjt6`V9C(3%s&(3g?p!Tit85LS>o;V&ent`DV+dWpAyGuA+R*h~5y{zC=Uu;J zsHS74nv5dCM-i&&m?)yE;mc1%EwrPch&qL8WTjQrVnz`;+N$(fr$iBgAi-##FvZ(Kaok`#S33;Wk_k zqx)(PkKh&$r%JEl4==6shDvHEJ=;*j`Id}wqZ#fu(=K@@3Pq@T1vZxwwN)T0g_Q#f z1fsSB(rBh_TeR)UXh0`wc}j1mKorOv;%FE2p&s7VcH-e(040^u8!ElE2l}cEib=g~ zFTAOGDJ(RgG>y)KklqS_M0-ka?PYsme(a^jKHkPBdTTF+>AhKZP_!;_3BA=J(OVPD zr=k->XPD%lYLa&bG@-4hg%7)l>-}sWU4DlO!!OI+bTZT89-zf+ZTs2plJ+n(Rb^AG zyG@bGa%7vS)=eBXqrL>Jru_C)G!=~)RN4LjR6#DQC8UZv;P!6}3Q7vBqy9AL&*oBP zEvTpc8_IWe&E4cc&3ETeQ0SJLz1Hdq>Tc%jXpuff;wKWTD)A$Ub(D~=a}y>0Nn(@| zKaki_iSJ45rG(s|dn+Np=kZDi@Ogp~0(_pRgp}DnN(k_Ik`e-Zo~(obpZ8Tlif%t8 zlvrp&G~x_?^Nrfz8`R;H1iv}B2}5gB*PgBADv8TypHklGt?BcdEz!Tu>PS%_V&Zp42}wYlQ08<;F^;d zFwV&;cCmY5-9ednVVe`dB@51jLy;!vo2Mc9l`aXMuyXJj?$1-e2xmT!1C_d`PtDR@e6@z@ zzCD_zdm{1gO$-uL3K6lNigd%k|ffAP{d~=7zQNj1q z#ik{EJ3#cbEZ-S`XosH&d{46g5KUzLs^nGfhrL>uwTT~gnl~$fH2}ab48S10uX&e&b3}RZd#zts6CvXdVXaLZf>ufZ7v7shS8l(y*WG; z8#0h(#qoOhTsdckYxqz6TOF&u@lnN-=d#>a* zuu*|$5>)}!Cem@YWstL31u1E^6{vKg-+(bq1mvL7GqM88fJ)z%v)d8@%}79{eUY|| z5C@gk%7p+bJ)7f#s=55j(W1#m3?|cEON9imt;_ zw_{1j(wl_)CD8MRgWQ}bFp#A&0_DW*ZY_xv9a*|1E5%0lRyeZs?K#KS&@@5QPBk-u zb$T;%C$3QL0BDQcy$RxuY*RMUr;+~nWE-0cqky<;u(*uilJFxV74Y|wQ zctt_x%{f^?_SEhuNv0{|7$e-auh*~NT2v7_8Fsyl4Qq!SL-pccT(M8IKQ z4fYu2hWq);{l%!GiMBH(cQUkL#<_>4V8L2Hg6bd3hgO7}BiPLeG$j>r*@hLG6| zMMvby!HCqSBIvv~CS;4in;ad<>8cl9SdsqB(L7UM){18SX-NiFq?6~tXZ$2{a`6EF znga+;Hwj7c*yMA1WNfa^U7G8L(g3k@9KUtNbYzutCxX)P0QV*2tyA*#%Jot9^I=%_ z)Du{Jpp#?y`2r`JF+)WHTxcv;bt913nHo|TiREM+(U^#ZgB{%fOzv0n{WJ@4>w#oh zg*wjB?Z3e}mi%eWvL6`h!QgSPx-6!#ocfJd=mmYB&jdz^~9+1EM z9Hd_=|@+?&DOW(#FIXY)(k9*B}H- z4KNue8`f1T&3A zYCu{k`bqQ0$&agTrVQz_-aEvL4B=N<=7VZXSDRr-tSh^^bKHQay7T`YM34JM!&xXN zrZ6XvM^wh=(BS@l*mL2@i4VaWK=1}4cztUxp*XPQhJkF2_bJ&M1+q6*#1yiJ*+!7P zanXjA@ds>Zn~bh{(?#)Ses?pcnBiTXpZ$jPya9ZXrKy1x! zC48jd_1Va{Z@t5Qu+~y!k1;y+m?pWZ5EK0vZ8!$s>j^BYL!uq^uC4ImY&BY=I1SCq z2w$h0-oK4)rOURI*j8`c%C^y^n_i4-i;A`b{nKBVY_mbHu|mheMisN{Y8LnOHtH&z zoisK1PYx=4U-Be>Hq;>heT%kVSzdNw8sSQZBG=wK_}v{`dlS#H-^oSeEMhI-C0Zr! z=iRBFNW&Jl9UbU4^ql@;Vi#+)T|~WGDcB7>)j#g%#O19KxyliCJ(Osy7ezPGeZqfC zj1#&Wn>%#O<(K|nn|wL~?qNCGgQ|jJrEY#}P%r;mVE<3G&;3b`_E~adeO8xoWPMhr z6@IgD6V)m5Na7?CGnF`o#NkTJD=B_V;ze@y@G^uICoAzBIn$L`LZY)0Pm@?liN{H- zti%Emro_!8VkIso(N~F!NvuKwM>xOc@vFZQ=aLwp#F->kwLNTGHO|9Bh;dt-ksf0_ zT%kxQ6NMuEFd2m+2jU6xkmVj|4TU0SDipbf?V(ny=?Hzv7qNOMa!nM;8rWe{Bywyr z^FVJ5Q6UcsI)48U9Gh#P`_`se4)%!TWO7!^MkJ?)Fv9do0vx_>c%N3ZVmb{Ct1hHR zhIkZEv}|bW$}f$Ra>Jm`vk^)3iH8tI6hlSKAk@@qD=mmfYXA6%vRQDw8y1@zlIVd< zAb_QJp{W{Xt?W%et`oaf4O&>&ArKIUYT`^anLvOq+Ec5GnH#B^bbUozRfFP60s(zP zHGMPHWC8(r@d7n{lR$tx=x&>OM3Nw48VDG{T(PsQP`oby#tB3)zwHQa7!A4)6CIf z6Bs1R_=258sXXc+gs3_M&7aosJ4!%e5-^;~E!ELXgmI=#En0IK_wN?+`cLCf^A)sz zkn;kn(Mm!`a{kN6me)TlNj*?~gj4a$Gg3c97LS%U=LdMi`&x#t3k`u zBV676acJLZGax z4UllU5vEv`gp`BgmWmq4*?(`upw*~8%$jaBl19bz+}qz*D?DTUG0m^0r-4f%eJa_J z0kd~4a7nCBxt(;JjOWhE5gO>;P`i@qU%nXZeAy;=0<_|loyuW0?tDBS@Pn=jSi zBd(tWFjw;;t9i@@MJw4444)C#j~rm=Rb>uh@t;C_nW@-d8)$>wPK($7-vup+E(h&U z4O+?%=CNbjJ;Y-Mpvba zFnU;6J)z|wHC?6kAl20q>+>;o;p6_oKxALZ2ujfB)9~Z+)?7$n?&zTo z^r9NbGNH!qssn>fUy~&l-axkXP~$d5+qR5tHcYAw^{A6zc0i?-Z3pazEfvCa66Ir| zdeoz;*U2Yo``a~;m_jb^;??iLnJ6=DcLusLy3$EpT0LrSXj;d3Np>13m&_q{iIF_!IYV#!*q)~0SETr0SS)dx5)dvU^CUMPX z2K)UzuGwp;xF(8HVmdIyHK+U6obG)Dorzmd!(@x?r7{PFr5lZCIjyeYI3;{sD>0GS z5vN3B(rSjK+ODIm7>>kp2Ysgy>+Xz((~2BvJB2ohjaRi@7ddL0wB|zEssoC#n`^5c zQgq$*$77qLr0otxfpuvppW8KegS&_Blu5Xp#TR#ChViAl;8gPE7b`1q5jg{uxRAt9 zCA2YQxDwhJGFAz##n?p&Z3FqO67o6hrG%De?5)In662MaM`D5!3YJb(LJ`q@lu+1n zk`jt-PF6y(&3%wBA?whww2Dkqg_OVd<4z z{G7|Gdw;O~c;*k;XMCNtcFEIMu+h|4bRuio&fQW9AaU#Zt`1YKFn#typ?yl|pL_%$YMB8C7>&ae3z`Nu3%xJs) zmEW75+*{htpTSI)w!=u)y_IYl&#aVv#=9^kse~L`ED>uBajNYwNfEC{?fPl|lB7!_ z?YN48DznI5HowUZH{FaA$tqsw``)S{WAC*~g^V)+%}l6#8Y8F1X*YcJRu5=m|0V&= zX|Cy|>ajErI2qBtuhn6()AyR#}e^Nb5dW-fwR z)?caJ!WgSn!K_!^h(aP2j9dyqFk`EN@r@{JFDsa8q}K(rRHQc($Rt#B3+-IPz=261 zQwFR{+yj|}Pm@6Afv(D2F!Ft($Z%1J$&F!g=>xV3HcXQBvhqF4~QDMK05`nko~%ytNi3pPqy-<$Cb#37QR9>q&Q-m%6MNPDZ6wq_Tq|LQduF-= zr7rA1**<9>T5I7dsT$~Zm9$i#I}^TKD$pImmuZ;P!3!zMGec8nO$uu5=k?1i@4bqfhx`&Nih8vOZj(OE`XJ;&q#8hZl`=fD^M0WK!94v>j?n z;+U9nDyI-5k<6?;=k9Q7q67DP|Fr$3r2*COtYpm9xclz41xT}-PRsyDhU94*w!Mua02L>A| zVvK^3B?fBdA;*hdHiQ{DsKSLs9%tPnwJwVCxb?)l zSXve$nDg|_oE^8P)Xd$UQngr8iVI$muo9X&cGQ)=+m&vqy=ea8e#9I5SU*CF{tZ2v ziH*epMeusHjID%ujG%C!wns1B=HWpWd|eYh9VaI^v6O2kqCJ+`HN-OSpjjkypFpu2 z^rF}ePf?5+CW?vExbOqTSP)L6>=MWsfM^D&?*6R7({(^Rs%TTx4KO8YonSTd<(;dO zryeknU8XZ_^`Z?d6QEc_Z68P4Qt`||USyC*2eBelqxLnq;S?)ak;XH7AiSOyE1sEG zL{qF`QG`a;QxVN|0?q4cvlFYSpnE;&UQhI{8_qZEp^4tmK)5W6)IQrF5WXRKA{-AE zgl|~1-;^2lhuTJ?6`7z`kHHS}yX>VR2FrMFLw&p#=?WTzIu+66=!S%miVY7D%}SY- zESin?#=GVbO zZoG$cuv;a62%evvm@w%@m=7Gbp$<|Fh|0AmPVUO(X|?*#?)o<)K(@xEkz5lf)Ul#%oZC#PKEgB<~U|n*Jw+UyceO$&*GIPr~vZw+B1p-lp zLvS{7wCO8RZgo{Y7{}T#ppgbkBLu(msu(YBoY8YL5j!+Nkn*aSa1xs)9&Q4;7o7P= z60!4*O01U<=}=T7o$b?VgZ07P&pGw_)qxTcbpuE=Gcg{t8L83JfJZizX_$@HQM;xZ z=qx%1rI@$}0-T9xoyo-9m@%QKplvs^w$L z2NO{EhIwNjNMZ}ss%75uNsqv;9UAs*Xl~8f2qH606()UTawxp#Q?k^XWrkE}& z_w>i8!{F&(xpBX^FAmqf3OBD5m%NIStumUxbH9Yak{IkyRsF?aN&S&oVH^;^SCz>= zSf**aTwWhH`nTfl|2Lc2S#5KBijoNmL1p)*Eb+Z56Dlvl!En}D%j-Ip>vLRp;rcY! zaaiH*&q3Ye%j)glP&BDwlKZ%vFBcF1DOqUYUlADIXecr=;Q1J~9ng zPKOX`?kr6q)FuB^oh!G$=LrvA$^C#a|110N)LQz4W}P}4!Zy5>eUDuqZ`S7Nm6-FC z$Idi`U-zstte_wk6-bzxA7;kDj!MabZ;S?PMCqvCHU-qG5G> z@5AxJ_qB00mPI4GSaK?MpQ#<|+Ay#WtmL()*%xfmO0B&X9jsx4TJV4G%?RH%9xO28?gvsrftODGzF;E_kOvt z`sJ|yO~3S=V%dI~E;{gjsYM5&Uv^PTNS6|Hsk|3j!Z5mP#WuEzkLV2N4c>^iV8e1f z$}%{~>TUDU%>MC=ZK(wSHgZPHydTk3x(DHQw0aG_UBrsk1mJgI=C5C4tez2igl*NV zSXafyF!I)`acpbbz%c{l<_dKYRw1suopmHYvjysroyc+CMrRCiD4?9rfgylTyZfw?*#`<6F6b8LW$Nhl7�{njsCO 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 t#C*PcY|XkFbfYQR2D% +#include + +struct Before { + bool allow() { return true; } + + std::string m_assertionInfo; +}; + +void do_throw2() { + printf("- Throwing\n"); + throw std::runtime_error("runtime_error() thrown"); +} + +void runtest() { + printf("- Run test\n"); + Before bef; + if ( bef.allow() ) { + try { + do_throw2(); + } + catch( std::runtime_error ) { + printf("- Caught expected\n"); + } + } + else { printf("- not allowed\n"); } + +} + +int main( int argc, char* argv[] ) { + runtest(); +} + diff --git a/emtests/test_exceptions_simplify_cfg.txt b/emtests/test_exceptions_simplify_cfg.txt new file mode 100644 index 000000000..74e2c4225 --- /dev/null +++ b/emtests/test_exceptions_simplify_cfg.txt @@ -0,0 +1,3 @@ +- Run test +- Throwing +- Caught expected diff --git a/emtests/test_exceptions_simplify_cfg.wasm b/emtests/test_exceptions_simplify_cfg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4aca081f37dcbd2113cf26f638d334138a0ae6be GIT binary patch literal 53382 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 mW~*Kmzi)22Xb$?!1 +#include + +int main() { + std::exception e; + try { + throw e; + } + catch (std::exception e) { + printf("what? %s\n", e.what()); + printf("caught std::exception\n"); + } + catch (int x) { + throw std::bad_exception(); + } + return 0; +} diff --git a/emtests/test_exceptions_std.out b/emtests/test_exceptions_std.out new file mode 100644 index 000000000..eddab21cd --- /dev/null +++ b/emtests/test_exceptions_std.out @@ -0,0 +1,2 @@ +what? std::exception +caught std::exception diff --git a/emtests/test_exceptions_std.wasm b/emtests/test_exceptions_std.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4d5428af54cb1a6ff6ee439f48702a69e2abf58e GIT binary patch literal 49604 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

w!|~t{-151%;do*Q zZuu;1I9?cnTRzV;9Ip?-EuTdV$NNKY%jfNeW62QQ@>$$)d^-fUe7_9M^E1ITW{iPHQ;MABtN(GaHV%LvhPzPQ!84P~7sF-*DVC6t{e? zYdG#4id#Ml8jc5t;+D_74aXBham#06!|}pU-12#*;dp&0Zuu-~INl$MTRv|$97~4c zme1mbO8E^66?gj#>}5e5N-XC#{EDKF2j2XRe1^KBv_k95(qK%YIbT z=Vqz>kcO_zy8HsJshqxG7nl{k_JX@Irem2M>_OAm{>+L|Vp>)Uhh*sXA?&*!ni<3n zA?o3ore}w0Ctp*z!+lF1Pv&VyaDjo3?MG(DbA$)&L_+qrxl6`_j^?tOEMHrxpYbMm zOqL%t#Ewy1pE?vbLHG}S9;+KANqihvwEO6Md}jC^4?ib}u@k^1oRrx~8BL8%OGaJR zB`qrO$(fz(DNf1k6ff$jth$LOOWrA2v^ofvv7W9=X(uYz=g@4*M+K_^O5*$e)zjMIITwq9U5qp?$qaHA z6L+rH&L#B>ZLU`Vp485~%r5aNxHL1Kc^(9TSrE7^v&%eeKJ$(rRnO&KJ(nvohg=zF zir()EmHdiqRJan9gXG`n>hPv;S9?{i?JG;a>hGG&c&?_xuFdRPC79Kyu(c(G>oU8} zWqy5T*L(4A;CNuY!miK4+QrO{3Y+B>wzewjM(z;sL^ox2lULNunceKEZ{eOBRn*$v z@7mf@qXn5Q@aVT?#sizT%g1haNq9rK13PaP?#%2?7x-NmhMnBqs*5|3?>(8_<3aZ_ zA*t8Jz0}2hlE-~W@&T1nC3=wgUltz9>>-c;aAprXsYgWWAxJIEY@r7|n%N_DQjbFF zF;TF`p!GOAhgo=nd#AJTRAxAyBHhz^*FxzT4(H+EUT8kGn0rnkD(Ul_#n0@yMh!oX z*k8yPzFv^vi*?zH-2a@}v*hwprgr?2BCBOT*jF>- z5$V@5drgFk)$i-rcniXBXwhkJIAIpH1z|iP{APpjTbc2^>3LF~H{j=O490Rv**ji$?{e}Elu$=_KeP9t)fzs?>;qLb-q=SzEW+6?bcalPi&gZ+iUKWa=3`(| zPU{o#FGc#4d&%5qNoG8sP^iy1J*Psk=?LcOOYU3dwDrXBRRgK_b!I$Y(c-_6mwi+4 ztHh%CZDu@6yj)8>*Y7ySuF#@bCC?f=!}oNop7jq6X1dDORaRFqwQM|+@WEwDaB#UO z0cNY|Wt;Bcr^Cy3xW_%BY)6#Ur5{Lr#-41h7g5Y zZ0M%tK3r}a0_t`B`i05s$lQBu*^YHW$Cd3kCv<$-ju-uPWIj8gY$tf|iDf&{gHPg; zI)XJ_J+TaS_JlGg&FQ}7K2~m9mps<)XlWAO>>HelqatnDm5<4N@IWjoz{ zXOxXc0zN|mK11aqa9a`HR>GWLwfUN4qK7ELsbw|^%XX%N-_9!6H^|Q}8_!u_1J03` zog=;^V|YSDGs`y9Gds6zJj!fVSz$=`{Ibm|GXtJkrt>e?^m{$aWPU-}E>LOI>%tDY za$(tcesHBiaiKoDY_pyEoU+aF3b?3j7nNa|6og+~Hl8^yD#D?0N!fT*#2QJ}S4=dQBdZlxV_KJXW^HJlf-E zBuc=^+OqL1Ec457ipI;N@Ko8JB7ra!PnYd!Pw)(7L8u+!SwNa)dzJ*xmoef$Uv3XC zC_Y}3!i!~lu`DD0OJ&3NB`}#Um+fV*nMLlvi2n*TXRm<%f3<9{62yt_vhgf}=Idp9 zy&MJ$>QNg`~t-Cp6Y!7u#&R9 zSGM=5_74CxyL>-HYgO&;-x)sgHvExSyXRQ1CUkyr*?8Wn>!K>|ld|zFTeqKi%UJWj zM#A5e?JGJAAws^PzxYlP{0@14U$*bdAp1$XoX@%X=2-I&sc`lJYyKexs`b!{9a_Lp zD>l`!tkWwt9W1M6&3)BqexRRqj8#{~x;*MZ6+5URMh~tS4~$N$*fil^r&dBgS>1k6 zzPv0~Owh=rTOP>l@QU#)w^Y}Us2ERo6q>`472_#Hrk^C}r#5m_#g1|Yj;`3z4t+eP zVmw7cLYJj*Y{htvt}M;vxQg-k&!M6s@Ns;_j;F}PAP441WHGa9Gpk{#y;_U(;`oHQ z0r13%@n~{?QpHXZc$ni4beAVr>||%{6pwHUntW=-cog-tik&8j%5LeC`_n6Sy2qYT zu^E;6538SA$$!DGKUVAv2Wy>Ku`?^-?24UT(e=pZRO}qDo|$~&*B;KT*ts4wt70=N zMg7mJ)WUh9VCTWX`O02x;ev|cz5p}lg%!JyxcD=;5P5dRW_xxQxdWkGTq#zGmsE;X z;@pbOt%P|Mo9CHbTCq!=kITfzJouPjvH2c!dBrZP^Km((uYiDE0UK9U3}ROh_3Db| zl2@rtG`qaoD+fnqEy5^tzzm3V{4r5L2X zk<aSITfKUsMrE&|4mAg(QtSeM*yDD~9 zMT6em^0B);n>$@F_jn~zw0kSYb5Fgnc4s3F!`=NAUVXfKpkfb*mHSCMDLm--bv`xT zJtR=NGJBXXB1{U8RP5o3J%V;Etk^=Y)kiD#sM5QCXL!tk?2ma?q^H!o*h7`jn`<6^ z%^Jpi9>1m!Q%S zUKSO5nG(NJu~&$u(eBlXz3S0ktJrJQa7TE(VmvQbI>Q@^#>=GeX2sqlfkwNxD)yEq zc)Mb6BhrrWPQ{4%4hi0^FxtIKjlQq=cufi)RP2L_M!OFyhVO?c@<$c>$m?aXJMj5f z6=xq;CWlWd_6cF!^HDLL#SmRmu_YCLmAj@{YO~kjXRZtkcVFPBSaV%`%*MW~*q2C3 z9v2kf^_l2bs_o`U;p>WhRk5$B>~AXejSKbLihZlfcK^=sT}3n1@4T`-qdIjuh3~m8 zqhgmQ)i4jP+QI(&M$@V`t*XJ}5RmUxir*Rz ztuo9VT7{E?s-Y>PtPFF9RrzL^n_gv@o6gCE!+{Wk2GlTjI5_$vl-7=@P6|g>?MQw< zU5R^ngRNYtGC%yt%H_d-si1u}? ze(71XW(W>8Bc|j>d7@Q?D8_`KBc23vAX8Z}$gSEArV%pR>E}pRb!xkEh08M>?c2?E z^GL-3B7R-OMz_|l$erd`qhoa7O)MSfzbg%ShsNeftDvzbI2LPksM@ZadK?Y1RV`<< zE}H}}>+r{uV%t@sKH1YVLYxxIezL177viTlD2PZWyMt5;K|-r)88nrvS$$YIx_+VS zXjOop0ufK=MdX3LbRR<~jsTp8`Q%Qa@ab7~B8GuN0C^cYo)n;6NuSbHl=dX@#Vn(hd9ZUI${>m9xBP5h|W(0drMd z&g-n>@2iWg)yme&x5$pE&qlW6#C9y(apGJWyuK)Q(kf2u0f&T$)$XfkrPZ#q@2(>y z=`>B6wkeRN86afZhV%lov(lPht55FHlLfM0;6|d}!Tcy3gQjo}-1El+WFI{=aOZL_SS?M6T(r z!#q``&|Z;udbMGf>D7i^roRpd*;xmAf4%;r*5F62!C$m%_J+q^lIRu2FNDwtgP1vm zepQ(B5K`yOt`kOQ~5ifR4v-8v*6N$?A z+RyRE$4zmWv1p)@YK+{yVuUL7-MVCeNt`ve3J}bblayc_xm1Y zgKxhQ!OOmdB2V(IupcYho=5p=<)DU+_B*6+9ReLjPaK9oAP;fEw~xqoL{Vgk*ZGR# zcgG!>;_mS=W9ma~E+ik9$~%#0Jf7jZ6D!5LrS0wp2ubr1HGr80cT`XvRqI%5a7Qd# zMjYt^Cc<=sy0|at5qC+7;>gHiIXa^{KF?^dAfBIg z)5?&CGcxdZ<`vZ=m~oh9|IRNWgdQg3#%OaJ`+IF}aIK{w7mDLHNCtk&ol-j`E=Gft z)9$n#1aja=-Whks-vxemah%Hb?gH;>k~=VjD&j7bDqoTwx@2kyKWR#l`BEVXpXL<4 z?8eorxlQHW1lBlDF+*Ky%gecF^?0IubY1%KmEsdpJWq%iQZ@H!w75K1vpk=-W}hMz zHu)6Cr`5CEIjcnGW3s;(;B@eo!c!ef|uB5+j| ztg0H1Vy(@*tBAO~+E+Ebk);|w%Y8Kf!A+T~saj3dcqr?u>8$sl1fk&t0Z#(1p<)OE zW-xIV;Oy6PFJLPO;>wi#jDa2mN?GiW4svqFFP44UX2$3b7psMwnr-`LJC2vONwdfi zk8EAe%21OtCq!zMFG-Xv`JdwPEvo-n9jQKRGiw-y^pf7+lJz2nuJbrdGc{xOt>o+GX8To8%hOa!zD|W- zlA~&3oWn*mnv^i^Aq+im#yR{%>ni&StCTpem>Co~2E!zBy9^7Ik!*-JX^!sxlPm=fRvW4$G zGxA=OMZVJE#NYJZtVRCcU?IVGB3qxQZO7^27tD$E7wG4=%&#?w{bGnJ`yyC$pVuSV zR`E+V^?%7GV0Eb0hQ!&wZT9OwXBkGW-?0az*jBT-8feohQ3L^2?)d>%ppe{{y{s6=Q!#uTuR!vR@SWmSq6w z@9TZ6irO1k0eUTT{0GoK)H_(f#Af|~wvpco>6b`yRgq3IT>Xg|rMI7V3{`)sC$Qao zQ1xf*mweprJ=+1}pX)iSy8a8ZQjbFZOIfM+waCm6{a0q|!#|I;=KtE>%i7V6k?L<` z!rmAF_Ib@NIsL8PqUzq^--V>`7FKj63^M*+_Urxp|IItP&O!x9=q&%c`UdFld8gO9 zc=5duXIz?8Xv=OnjplQq?fS6NGM0o~P&m)uaf{4g<&=z6r!FVd)=tmA=o#y253%e#3CQ@f*vv%OF^} zIc*1u+ZjYRR7gYPX~?Ca18Hb-A(=G&8MIwV!Tyc&GpS}x8FVt&Bn90G#;Q}vP`mX2 z2$U5kC&;)J7A54CT?WV*$YM zHA~u_AjJV#FsHFT$9Xp{c3FMMzl{!cxiB3t=Sd5&!e&h745E2V}C0yB2s?ivOm21N~$WmJTiOYGJ%2X|Y8D3ZQGDD3sGU!#coaW1?stmYLewfR*LLu09VI1h9Y>*Iu(kHe<4GP=~OPvWrz8n^b84ZS$?J! z4YyECokA($*3=auZy;i>i{F0P?9(UU!M!R8=L)Xv;!|<%cDG}tXqzn$ni$qIFdX(T z1K|lF_2i8;=SeD>ljlR+%2-{HZ&Y=02Ml?~0$ZpevkeU;YO-d)k!Z|mg1;;R7rnV-;3nRpkpG|z31n0c6&82ELN7ZgxSMBDg;#F)8 z*)9e5p$l`R{e;9PP}#(66y_L(>J!3QS022s5t0D~Bx{sgsWRbY#f_PQ9S;ijg>YdE z)nS@7#q)Od4o48-Jl>#BXd;=AX4&DJl)7M8AYD!F^i5iWJJsM1(AfQf+o8-|sSRZ2 zpvBF7fj56>+FHi%pyqBb?#BC5JZj(V-nGKkb(5;g^c_WQhcFgl?k^SuZUD2Rp z2g_4gEODbnz+U6RxT&5W{*Pszq z5Vfb~;Wd51WTIX=J8bCAO(5N-M^8Pt{yPKV5%qW6_t(qSHVYkrMUG@Wrt{RK3*4lY z;J832GAI(i#h^h@a0nrSGi1dMx!Y1G4rK)QniJ;FK$kKEbgv{B2C7F5fD7e7AfJO! zpj)~co%sjFqH<#70aNI7HI$XO{+ww=z#_?oJXdNsFFirBT4aTqK5#M%}ISYpdyg^=9lxZ>Eqo*@R&8+Pvr5 zO`eNVQnEraMFTa38BhPhqY2MubQRc|OHg;|oXBd+)>F8t>@Mfv*G<_f_`w^mfO|@? zMjlDZmww>ZRqoCDPqN-Ah}(Ns95x7BbX@fV9bu9v^sKH6T3n9+yq!g2_tDud#U>1} zA?2RV=|aN*ON%`#pm7Wyv8ffq@8;9lRzm$6If$oC^aPH4?+-UhN;e{As33L@LZ_^# za(jMP>Ft{V@N!XH8ayZrYR}7}(N?mfc($e(wnbq?iD}2eg?5Wb!AFKHGJdsXCRMBQ zwKh!4Z&Q3*79Ur9Jd5vEe0LUiin}bnSMj}B{D9&IviKpz4`uO5#V51)or>R?#ZM}J zGK=4@`2AV@THukUZ-1AEKy6qDRN7n*;r&m;aK=CP>6eT^?9@+FGJGqp__lb?w+2VS%)O(` z*eGdc9pk{KumXGx!R>Rr-Ac@?UdK*$LCtt63Bg542>wYza843}XOa-yl7!%sBm{>f zA$TJR!4*jeen>)aLK1=pk`UBSLeM=48O3dUH==Y>NCdDlUCj5d!~8oC<@y#!^G|~D z3EMG)DF;I#&ZXcXcC6v~71xi)BMwOmeY;8{g-xaRkLD-*%Cx`%fp)bIktyXfaEc5q zV7uj5a*yTVdK7t^pkGwwgZ!8!cCcl4pV-RkoCixrq$Oju#C#h*AlaHR7!>UR9L0^zl za!$>r`Ms4aJkpb5Vf)DWWIlbMr%)Q)oQ8s66X5}U1Ua9~XK#K_QG$h@=%~W>k@LxX z@_!4dTej%)#{bsk8}e>kE=}#l0LTf1A)xii|5pr69zAya&J%atee#~t=`&}~O18wYt4qMMvYoj4IWvJTIIG9RFB9~t=%Sly6NIhW!}xz>XB=*>hNsb;xN=WEM?!^O+xO62O%T-zB8S8I&o zkq)srw-ha@eTLEOv?w*(iPwS)jW(m}ECZ8^*Wz}x2ReHRJejHBxu3UTZ8;zg#`sY*5KY=$j7Cc1LO0pk;7&rrBsP zbfHK%Z9@X^6t#L#*RCxAUbE9)UwEz)gUR#Fxb14Ot2Uo$q>)ae6_qRV25G5UrQz5? zNGb%UTg}C&;g)M)?81>p65@90k&FSnmVLG0biG+wgq$|E7M#HtGWz-SgatApUWnm{ zEP6RwZF@u*($B3%713^~+)ldhViT%%mf)+Plmx&g!!wFE8&3z9)|O_Q^;*S{?CQn#99-i~xEWt2D17Jd&`B zEzsZW#10xq5|(w6RVgE@b&{q!4bMobUt3zPN5ZA2))FjGMr05KMlKq9p}Bydwrg`W znr$H8De4N@+gY+>VJ2a;7@S6J0FB$VhF32MJ?J>$(Dx<-&S;bN z`AiEovEiErNm@&@ZQv^i8}AkW8|jyZuh*+i%Cml45PG&VHwQa-U78U*88ND+;#F3L z1woZ1o+&qMlu-jQnM1!ik6{AhrOz6BJy&p`Lq;OkK*f1MKYKOOmyeV zjVe;{82pN`WJ>JOPLsJHTCGG;72p^Odb8G9g36snHTY>Gdy>?hF>G$5d#{er!hSwH z#RB4=_?zc%n$^R+Ek%6%hor40ah2Pxe7gq}|Bp#e7H$SW z=)ri$XCEp3{EchbHjrgsSAJL)F|yqMIi&voKmR+w{eKU=XeLw&{~P$*$lnluS_EoM z*Inqnkd)H`wzr&6r==+@VE-*Oq3)-!o$Cb1I$2)|Wm;&A2vGsh8upx5oM=@22_dOT_K!z4vA?SQITi rlO?Th + +class ExFoo { +public: + int x; + ExFoo(int x) { this->x = x; printf("*CREATING A FOO\n"); } + ExFoo(const ExFoo& other) { x=other.x; printf("*COPYING A FOO\n"); } + ~ExFoo() { printf("*DESTROYING A FOO (%d)\n", x); } +} ExFooInstance(11); +class ExBar { +public: + int x; + ExBar(int x) { this->x = x; printf("*CREATING A BAR\n"); } + ExBar(const ExBar& other) { x=other.x; printf("*COPYING A BAR\n"); } + ~ExBar() { printf("*DESTROYING A BAR (%d)\n", x); } +} ExBarInstance(22); +class ExQuux { +public: + int x; + ExQuux(int x) { this->x = x; printf("*CREATING A QUUX\n"); } + ExQuux(const ExQuux& other) { x=other.x; printf("*COPYING A QUUX\n"); } + ~ExQuux() { printf("*DESTROYING A QUUX (%d)\n", x); } +} ExQuuxInstance(33); +class ExChild : public ExQuux { +public: + ExChild(int x) : ExQuux(x) { printf("*CREATING A CHILD\n"); } + ExChild(const ExChild& other) : ExQuux(other.x) { printf("*COPYING CHILD\n"); } + ~ExChild() { printf("*DESTROYING A CHILD (%d)\n", x); } +} ExChildInstance(44); + +void magic(int which) { + try { + switch (which) { + case 0: + printf(" throwing ExFooInstance\n"); + throw ExFooInstance; + case 1: + printf(" throwing ExBarInstance\n"); + throw ExBarInstance; + case 2: + printf(" throwing ExQuuxInstance\n"); + throw ExQuuxInstance; + case 3: + printf(" throwing ExQuux ptr\n"); + throw &ExQuuxInstance; + case 4: + printf(" throwing ExChildInstance\n"); + throw ExChildInstance; + case 5: + printf(" throwing ExChildInstance ptr\n"); + throw &ExChildInstance; + case 6: + printf(" throwing 42\n"); + throw 42; + case 7: + printf(" throwing NULL\n"); + throw (void*)0; + case 8: + printf(" not throwing\n"); + } + } catch (ExQuux e1) { + printf("inner catch quux: %d\n", e1.x); + } catch (ExBar e2) { + printf("inner re-throw: %d\n", e2.x); + throw; + } +} + +int main() { + printf("start\n\n\n"); + for (int i = 0; i < 9; i++) { + printf("test %d\n", i); + try { + magic(i); + } catch (ExFoo e1) { + printf("outer catch foo: %d\n", e1.x); + } catch (ExBar& e2) { + printf("outer catch bar-ref: %d\n", e2.x); + } catch (ExQuux& e3) { + printf("outer catch quux-ref: %d\n", e3.x); + } catch (ExQuux* e4) { + printf("outer catch quux-ptr: %d\n", e4->x); + } catch (int e5) { + printf("outer catch int: %d\n", e5); + } catch (...) { + printf("outer catch-all\n"); + } + printf("\n\n"); + } + printf("end\n"); + return 0; +} diff --git a/emtests/test_exceptions_typed.out b/emtests/test_exceptions_typed.out new file mode 100644 index 000000000..718f189a4 --- /dev/null +++ b/emtests/test_exceptions_typed.out @@ -0,0 +1,77 @@ +*CREATING A FOO +*CREATING A BAR +*CREATING A QUUX +*CREATING A QUUX +*CREATING A CHILD +start + + +test 0 + throwing ExFooInstance +*COPYING A FOO +*COPYING A FOO +outer catch foo: 11 +*DESTROYING A FOO (11) +*DESTROYING A FOO (11) + + +test 1 + throwing ExBarInstance +*COPYING A BAR +*COPYING A BAR +inner re-throw: 22 +*DESTROYING A BAR (22) +outer catch bar-ref: 22 +*DESTROYING A BAR (22) + + +test 2 + throwing ExQuuxInstance +*COPYING A QUUX +*COPYING A QUUX +inner catch quux: 33 +*DESTROYING A QUUX (33) +*DESTROYING A QUUX (33) + + +test 3 + throwing ExQuux ptr +outer catch quux-ptr: 33 + + +test 4 + throwing ExChildInstance +*CREATING A QUUX +*COPYING CHILD +*COPYING A QUUX +inner catch quux: 44 +*DESTROYING A QUUX (44) +*DESTROYING A CHILD (44) +*DESTROYING A QUUX (44) + + +test 5 + throwing ExChildInstance ptr +outer catch quux-ptr: 44 + + +test 6 + throwing 42 +outer catch int: 42 + + +test 7 + throwing NULL +outer catch-all + + +test 8 + not throwing + + +end +*DESTROYING A CHILD (44) +*DESTROYING A QUUX (44) +*DESTROYING A QUUX (33) +*DESTROYING A BAR (22) +*DESTROYING A FOO (11) diff --git a/emtests/test_exceptions_virtual_inheritance.cpp b/emtests/test_exceptions_virtual_inheritance.cpp new file mode 100644 index 000000000..8536e9e53 --- /dev/null +++ b/emtests/test_exceptions_virtual_inheritance.cpp @@ -0,0 +1,33 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +using std::cout; +using std::endl; + +struct my_exception : public virtual std::runtime_error { + // To allow this to be thrown directly in the tests below. + explicit my_exception(const std::string &what) + : std::runtime_error(what) + {} + +protected: + my_exception() + // This won't be called because of virtual inheritance. + : std::runtime_error("::my_exception") + {} +}; + +int main(const int argc, const char * const * const argv) { + try { + cout << "Throwing ::my_exception" << endl; + throw ::my_exception("my_what"); + } catch(const std::runtime_error &ex) { + cout << "Caught std::runtime_error: " << ex.what() << endl; + } +} + diff --git a/emtests/test_exceptions_virtual_inheritance.txt b/emtests/test_exceptions_virtual_inheritance.txt new file mode 100644 index 000000000..ad1015d47 --- /dev/null +++ b/emtests/test_exceptions_virtual_inheritance.txt @@ -0,0 +1,2 @@ +Throwing ::my_exception +Caught std::runtime_error: my_what diff --git a/emtests/test_exceptions_virtual_inheritance.wasm b/emtests/test_exceptions_virtual_inheritance.wasm new file mode 100644 index 0000000000000000000000000000000000000000..354a2bcd591943987ef6518c4151579d83bad493 GIT binary patch literal 326992 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

c(?fXe;#!o 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 + +void thrower() { + printf("infunc..."); + throw(99); + printf("FAIL"); +} + +void somefunction() { + try { + thrower(); + } + catch (...) { + printf("done!*\n"); + } +} + +int main() { + somefunction(); + return 0; +} diff --git a/emtests/test_exceptions_white_list.out b/emtests/test_exceptions_white_list.out new file mode 100644 index 000000000..62e1a81c7 --- /dev/null +++ b/emtests/test_exceptions_white_list.out @@ -0,0 +1 @@ +infunc...done!* \ No newline at end of file diff --git a/emtests/test_exceptions_white_list.wasm b/emtests/test_exceptions_white_list.wasm new file mode 100644 index 0000000000000000000000000000000000000000..057d5eb5136804765e758837edd97b349c7d4488 GIT binary patch literal 49431 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 z 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 w?iL%nJVWbn;m4WyI%Fb0gj7f_5c6? literal 0 HcmV?d00001 diff --git a/emtests/test_exceptions_white_list_2.c b/emtests/test_exceptions_white_list_2.c new file mode 100644 index 000000000..2fb9150b8 --- /dev/null +++ b/emtests/test_exceptions_white_list_2.c @@ -0,0 +1,34 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +void throwhere(void) { + throw(1); +} + +void (*funptr)(void) = throwhere; + +void nocatch(void) { + try { + funptr(); + } + catch (...) { + printf("ERROR\n"); + } +} + +int main(void) { + try { + nocatch(); + } + catch (...) { + printf("SUCCESS\n"); + } + return 0; +} + diff --git a/emtests/test_exceptions_white_list_2.out b/emtests/test_exceptions_white_list_2.out new file mode 100644 index 000000000..ff43ca409 --- /dev/null +++ b/emtests/test_exceptions_white_list_2.out @@ -0,0 +1 @@ +SUCCESS diff --git a/emtests/test_exceptions_white_list_empty.out b/emtests/test_exceptions_white_list_empty.out new file mode 100644 index 000000000..e69de29bb diff --git a/emtests/test_fakestat.c b/emtests/test_fakestat.c new file mode 100644 index 000000000..c2ff384b1 --- /dev/null +++ b/emtests/test_fakestat.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct stat { + int x, y; +}; +int main() { + stat s; + s.x = 10; + s.y = 22; + printf("*%d,%d*\n", s.x, s.y); +} diff --git a/emtests/test_fakestat.out b/emtests/test_fakestat.out new file mode 100644 index 000000000..fbb3ab3cb --- /dev/null +++ b/emtests/test_fakestat.out @@ -0,0 +1 @@ +*10,22* \ No newline at end of file diff --git a/emtests/test_fast_math.c b/emtests/test_fast_math.c new file mode 100644 index 000000000..521d548b4 --- /dev/null +++ b/emtests/test_fast_math.c @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main(int argc, char** argv) { + char* endptr; + --argc, ++argv; + double total = 0.0; + for (; argc; argc--, argv++) { + total += strtod(*argv, &endptr); + } + printf("total: %g\n", total); + return 0; +} diff --git a/emtests/test_fast_math.out b/emtests/test_fast_math.out new file mode 100644 index 000000000..d1bb57009 --- /dev/null +++ b/emtests/test_fast_math.out @@ -0,0 +1 @@ +total: 19 \ No newline at end of file diff --git a/emtests/test_fast_math.wasm b/emtests/test_fast_math.wasm new file mode 100644 index 0000000000000000000000000000000000000000..70798ad13df8edbfa14020d979763d25f4ca1826 GIT binary patch literal 59774 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 A+yDRo literal 0 HcmV?d00001 diff --git a/emtests/test_fcvt.c b/emtests/test_fcvt.c new file mode 100644 index 000000000..26441a93e --- /dev/null +++ b/emtests/test_fcvt.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +/* This example borrowed from MSDN documentation */#include +#include + +int main() { + int decimal, sign; + char *buffer; + double source = 3.1415926535; + + buffer = fcvt(source, 7, &decimal, &sign); + printf("source: %2.10f buffer: '%s' decimal: %d sign: %d\n", source, + buffer, decimal, sign); +} diff --git a/emtests/test_fcvt.out b/emtests/test_fcvt.out new file mode 100644 index 000000000..835f34e73 --- /dev/null +++ b/emtests/test_fcvt.out @@ -0,0 +1 @@ +source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0 \ No newline at end of file diff --git a/emtests/test_flexarray_struct.c b/emtests/test_flexarray_struct.c new file mode 100644 index 000000000..17d395a69 --- /dev/null +++ b/emtests/test_flexarray_struct.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +typedef struct { + uint16_t length; + struct { + int32_t int32; + } value[]; +} Tuple; + +int main() { + Tuple T[10]; + Tuple *t = &T[0]; + + t->length = 4; + t->value->int32 = 100; + + printf("(%d, %d)\n", t->length, t->value->int32); + return 0; +} diff --git a/emtests/test_flexarray_struct.out b/emtests/test_flexarray_struct.out new file mode 100644 index 000000000..b6f53a0d1 --- /dev/null +++ b/emtests/test_flexarray_struct.out @@ -0,0 +1 @@ +(4, 100) \ No newline at end of file diff --git a/emtests/test_flexarray_struct.wasm b/emtests/test_flexarray_struct.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e9b2c166c27177712fa048d52bc354178c5ad4b2 GIT binary patch literal 45419 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 Rre^2QsL&17e0^Ts`wxlV;_m + +int main(int argc, char **argv) { + float x = 1.23456789123456789; + float y = 5.20456089123406709; + while (argc > 10 || argc % 19 == 15) { + // confuse optimizer + x /= y; + y = 2 * y - 1; + argc--; + } + x = x - y; + y = 3 * y - x / 2; + x = x * y; + y += 0.000000000123123123123; + x -= y / 7.654; + printf("\n%.20f, %.20f\n", x, y); + return 0; +} diff --git a/emtests/test_float32_precise.out b/emtests/test_float32_precise.out new file mode 100644 index 000000000..f5eeb5058 --- /dev/null +++ b/emtests/test_float32_precise.out @@ -0,0 +1,2 @@ + +-72.16590881347656250000, 17.59867858886718750000 diff --git a/emtests/test_float32_precise.wasm b/emtests/test_float32_precise.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ef608be5429b77af2dbcfd5b5d6ab29d0ac6412a GIT binary patch literal 45660 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 XC)X4)@Xnc;n|1;(aOTQ$&W-;7xIhxP literal 0 HcmV?d00001 diff --git a/emtests/test_float_builtins.c b/emtests/test_float_builtins.c new file mode 100644 index 000000000..49aed660a --- /dev/null +++ b/emtests/test_float_builtins.c @@ -0,0 +1,46 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +// Prints the float/double/long double versions of the given function +// e.g.: TEST(fmax) prints fmaxf : fmax : fmaxl +#define TEST(func) \ + printf("%f : %f : %Lf\n", \ + __builtin_##func##f(f1, f2), \ + __builtin_##func(d1, d2), \ + __builtin_##func##l(l1, l2)); + +int test_builtins() { + float f1 = 0.1234f; + float f2 = 0.5678f; + double d1 = 1.0101; + double d2 = 0.10101; + long double l1 = 12.0123L; + long double l2 = 21.3201L; + TEST(fmax) + TEST(fmin) + TEST(fmod) + return 0; +} + +void test_exp_log(double x) { + double a = exp2(x); + double b = log10(x); + float c = log10f(x); + double d = acos(x); + printf("%f : %f : %f : %d\n", a, b, c, isnan(d)); +} + +int main() { + puts("***start***"); + test_builtins(); + test_exp_log(1234.5678); + puts("***end***"); + return 0; +} diff --git a/emtests/test_float_builtins.out b/emtests/test_float_builtins.out new file mode 100644 index 000000000..3c6ac4603 --- /dev/null +++ b/emtests/test_float_builtins.out @@ -0,0 +1,6 @@ +***start*** +0.567800 : 1.010100 : 21.320100 +0.123400 : 0.101010 : 12.012300 +0.123400 : 0.101010 : 12.012300 +inf : 3.091515 : 3.091515 : 1 +***end*** diff --git a/emtests/test_float_builtins.wasm b/emtests/test_float_builtins.wasm new file mode 100644 index 0000000000000000000000000000000000000000..34e2163cb4cbc5d9addc7386512f0695e306ade0 GIT binary patch literal 48643 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 x@d#ZUJNq=iPCtac_k5u>Vp}k@H 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 + +// headers test, see issue #1013 +#include +#include + +int main(int argc, char **argv) { + float x = 1.234, y = 3.5, q = 0.00000001; + y *= 3; + int z = x < y; + printf("*%d,%d,%.1f,%d,%.4f,%.2f*\n", z, int(y), y, (int)x, x, q); + + printf("%.2f, %.2f, %.2f, %.2f\n", fmin(0.5, 3.3), fmin(NAN, 3.3), + fmax(0.5, 3.3), fmax(NAN, 3.3)); + + printf("small: %.10f\n", argc * 0.000001); + + double d = 1.12345678901234567890123e21; + printf("double: %f\n", d); + + return 0; +} diff --git a/emtests/test_floatvars.out b/emtests/test_floatvars.out new file mode 100644 index 000000000..d9590594f --- /dev/null +++ b/emtests/test_floatvars.out @@ -0,0 +1,4 @@ +*1,10,10.5,1,1.2340,0.00* +0.50, 3.30, 3.30, 3.30 +small: 0.0000010000 +double: 1123456789012345651200.000000 diff --git a/emtests/test_frexp.c b/emtests/test_frexp.c new file mode 100644 index 000000000..bdc74ae92 --- /dev/null +++ b/emtests/test_frexp.c @@ -0,0 +1,36 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +static const double tol = 1e-16; + +void test_value(double value) { + int exponent; + double x = frexp(value, &exponent); + double expected = x * pow(2.0, exponent); + + printf("%f=%f*2^%d\n", value, x, exponent); + + assert(fabs(expected - value) < tol); + assert(x == 0 || (fabs(x) >= 5e-1 && fabs(x) < 1)); // x has a magnitude in + // the interval [1/2, 1) +} + +int main() { + test_value(0); + test_value(100.1); + test_value(-100.1); + test_value(.5); + test_value(-.5); + test_value(1 - 1e-16); + test_value(-(1 - 1e-16)); + + return 0; +} diff --git a/emtests/test_frexp.out b/emtests/test_frexp.out new file mode 100644 index 000000000..341b790eb --- /dev/null +++ b/emtests/test_frexp.out @@ -0,0 +1,7 @@ +0.000000=0.000000*2^0 +100.100000=0.782031*2^7 +-100.100000=-0.782031*2^7 +0.500000=0.500000*2^0 +-0.500000=-0.500000*2^0 +1.000000=1.000000*2^0 +-1.000000=-1.000000*2^0 \ No newline at end of file diff --git a/emtests/test_frexp.wasm b/emtests/test_frexp.wasm new file mode 100644 index 0000000000000000000000000000000000000000..fc94e1c42329fc2255f680cdb6f6ccd352c73e34 GIT binary patch literal 45881 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 +int calc1() { return 26; } +int calc2() { return 90; } +typedef int (*fp_t)(); + +fp_t globally1 = calc1; +fp_t globally2 = calc2; + +int nothing(const char *str) { return 0; } + +int main() { + fp_t fp = calc1; + void *vp = (void *)fp; + fp_t fpb = (fp_t)vp; + fp_t fp2 = calc2; + void *vp2 = (void *)fp2; + fp_t fpb2 = (fp_t)vp2; + printf("*%d,%d,%d,%d,%d,%d*\n", fp(), fpb(), fp2(), fpb2(), globally1(), + globally2()); + + fp_t t = calc1; + printf("*%d,%d", t == calc1, t == calc2); + t = calc2; + printf(",%d,%d*\n", t == calc1, t == calc2); + + int (*other)(const char * str); + other = nothing; + other("*hello!*"); + other = puts; + other("*goodbye!*"); + + return 0; +} diff --git a/emtests/test_funcptr.out b/emtests/test_funcptr.out new file mode 100644 index 000000000..d6d3366ac --- /dev/null +++ b/emtests/test_funcptr.out @@ -0,0 +1,3 @@ +*26,26,90,90,26,90* +*1,0,0,1* +*goodbye!* \ No newline at end of file diff --git a/emtests/test_funcptr.wasm b/emtests/test_funcptr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d8b551ce84c8575d39e649b4bde46daa004562e6 GIT binary patch literal 46979 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

E9{NEu&p>TAmKqeBGC(#+ zea`b*g;ZVEMv_+55gTZIO692}o080Ykon{wbMsM_1s5QMTdrnqF@_siOrNM@Ax+vz zEotWb7e(_H`T^hPj^uWc=uDK!1ucW7ahrx_?MBN_FF8M`IG50id58PF>DBpIikMjU zZ3f9p>qT3~dlIoNIP0u28;GQjSQC69%FvIww9VJczEoY+9I`!acWmA&(k6nOOhGr{ z_O@M$+m9vbN^kgg{e#2*R`W~C=Np_(s*Ao~FnY1Gw1hbLxwOylyvIy6H9uwbsi0Q% z1J71l*2}oXFj-=Lb)Ld5Tkf=Nn(Dt5s!hbJz9}ZJrO8!IR09*=U??Ml7l94kGuIt4 Ua59ASQt;OQ0+gxBC;$Ke literal 0 HcmV?d00001 diff --git a/emtests/test_funcptr_import_type.cpp b/emtests/test_funcptr_import_type.cpp new file mode 100644 index 000000000..2aaec5640 --- /dev/null +++ b/emtests/test_funcptr_import_type.cpp @@ -0,0 +1,31 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +extern "C" { +float floaty(float f32, int i32, double f64); +float floatyAlone(float f32, int i32, double f64); +} + +int main() +{ + // call it once normally. the asm.js ffi will force it to be an f64 + printf("|%f|\n", floaty(12.34f, 1, 100.32)); + { + // call it using a function pointer, which will need to be f32 + auto* fp = floaty; + volatile auto vfp = fp; + printf("|%f|\n", vfp(12.34f, 1, 100.32)); + } + { + // no other call for this one + auto* fp = floatyAlone; + volatile auto vfp = fp; + printf("|%f|\n", vfp(12.34f, 1, 100.32)); + } + return 0; +} + diff --git a/emtests/test_funcptr_import_type.out b/emtests/test_funcptr_import_type.out new file mode 100644 index 000000000..c0e68ee27 --- /dev/null +++ b/emtests/test_funcptr_import_type.out @@ -0,0 +1,3 @@ +|-11.340000| +|-11.340000| +|11.340000| diff --git a/emtests/test_funcptr_namecollide.c b/emtests/test_funcptr_namecollide.c new file mode 100644 index 000000000..2a20c3e0f --- /dev/null +++ b/emtests/test_funcptr_namecollide.c @@ -0,0 +1,31 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +void do_call(void (*puts)(const char *), const char *str); + +void do_print(const char *str) { + if (!str) do_call(NULL, "delusion"); + if ((int)str == -1) do_print(str + 10); + puts("===="); + puts(str); + puts("===="); +} + +void do_call(void (*puts)(const char *), const char *str) { + if (!str) do_print("confusion"); + if ((int)str == -1) do_call(NULL, str - 10); + (*puts)(str); +} + +int main(int argc, char **argv) { + for (int i = 0; i < argc; i++) { + do_call(i != 10 ? do_print : NULL, i != 15 ? "waka waka" : NULL); + } + return 0; +} diff --git a/emtests/test_funcptr_namecollide.out b/emtests/test_funcptr_namecollide.out new file mode 100644 index 000000000..360b24dad --- /dev/null +++ b/emtests/test_funcptr_namecollide.out @@ -0,0 +1 @@ +waka \ No newline at end of file diff --git a/emtests/test_funcptr_namecollide.wasm b/emtests/test_funcptr_namecollide.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f06448ca8562c0c2c328e591e1317c3a9f5329b7 GIT binary patch literal 24112 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 b_z`V=Q2S*5%U#sJ-^E$-Z@p`JLqGoy`j2R^ literal 0 HcmV?d00001 diff --git a/emtests/test_funcptrfunc.c b/emtests/test_funcptrfunc.c new file mode 100644 index 000000000..f2088e888 --- /dev/null +++ b/emtests/test_funcptrfunc.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef void (*funcptr)(int, int); +typedef funcptr (*funcptrfunc)(int); + +funcptr __attribute__((noinline)) getIt(int x) { return (funcptr)x; } + +int main(int argc, char **argv) { + funcptrfunc fpf = argc < 100 ? getIt : NULL; + printf("*%p*\n", fpf(argc)); + return 0; +} diff --git a/emtests/test_funcptrfunc.out b/emtests/test_funcptrfunc.out new file mode 100644 index 000000000..0d1299f68 --- /dev/null +++ b/emtests/test_funcptrfunc.out @@ -0,0 +1 @@ +*0x1* \ No newline at end of file diff --git a/emtests/test_funcptrfunc.wasm b/emtests/test_funcptrfunc.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6fcbc6fdb8249adc09d14dbb8a3068ccc01e2dfe GIT binary patch literal 45432 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%0AT^Tj-O$)^6#{ zDBdG%#@+UD-t#Y-D7eA1h;q7a?jpJrhSAX5I{mg)Lu34mOE!H^h`9>19(3vBEjN;B1f20~{bNvBppj|5KXL8LgpuH++uLA9I89*1%UIiKt zF$&t74o!y%^tHafKAhouj&N9d3yo6qq#;Qr)eWX$k3BGwW@SN_*rTQguvZg3u9V%h zPtX?Vv1>>t@X$J51Y zzm>&veR+qcSWXryDO6EfOg^Y+ttN?nP^u^={BG8Vi|PF_Y@f{SR?};qixMe|u!P3& z8AE42(e*!y4RsQlop#OYW=mv=JwJS%81CVi7Qkq>nMBRSo7hl|fQRGe;P$h8K3XUB zqrCf`$-Z_~L?dYyC1bm-=m~XOe_!oB?S&7=qFWkTqI!DqJw?xFVr+0d>$7@y8t~5$ z&-*HX?QSD4gJ}Ftd9lQLF%HdzW@=t6dH0(_ z_`HH(f-jq8K92iM8?UzVW~&5iDL;Jm{Qqh1Tz=#@>Nwsrz3*9PX8l}(Luz6>F8d%0H_~IV+q5mhmo}lsQeQPe#74@ejh%Kgs3UWPP7_ZdNH)<+3F`MoDSFSRR!xpg#-joNfiWm=7Ru zPYxR#e-ZAS74H1CNHRvG4}d^u!fr^w=v?(fxlh|(qYdzbdOj#Z84#(nyqk+$TGFlT z2={%cW1>&m(0bLu>IySPPOyYfaGme<6KEJO0pMSZckycrK==5fWxI)!Y{~e+@eCmCK1-0>D6z!>Md99 z{Dp>TF8-AcFkGF|6ikW!YsjH4Km+{9|9!VQ#VcIuvQP{`dA!7OEQgU?KE+)%$Bo>4 zfxFz$4aZ;Rk6f7hid#K5D9)K4vCn|Pt^u@ojS3**HMhowI71KDrn*35ek%8Ob7S{1*LBl^ z2e=Sh`j1^Ze_b*uGhn^$lIypuo%5o3S}`pDOs?{V0$v4J1)OEq1E|StxwN%dyjGBn zHWcmGRTlHgr5zF^n_ZlGTjf(T>r`|SGY;s_e1DhP!l4)^a7VGZk!O*(hdLxL)DQ%mjcd=#X3|U7iMksHjTb?_};TNImO>4Qp1>g;yf&7(Oi>E5o zhE@fUQ@aj!T^3WMRm|38(!GVk#^sB-P&>Y&kzpGo5<3`@NSol1ssJ^~#G6uo#VmG0 z94A%;CsfhV<(TJ3F065}#b(oR#|E~?vUs-sO9CX!mkz?#$w zQc|bgO#3|F5gRBlrWepb-E2PCFjZTYg zEM4w>q-8()e!c?k%Ni~w)}=u3#5&P~>>oZT4Ihw(i}=KFPcFWqMp!W8E*D%;vSQ`V zs-rL>d9(i|YeR`MM#hR+?QLfL+I*5Mcryjp^|3*$P%C7GiVjqF@nONY0iqYvXul^$ z!@O`+hiiipt@wn)QKEuwArAY!dM)CMrrIG?Y3=4G2)6Z)071RH)r{jT@8h z0+dm0sQ^Y+x0OrV46g=|XrZ!Cx_7yB+@i$x$c+_y$M%dFLnIYJd<{twZ9TO1yW6ES zzH!J~tQ?~M4e=2KdhQ@x7Y@>V93vg=uB0&@zFs6^M0+MzV?89ucNE>hnWyzMgTl6y z`BtT93fA~|%q&5Iy8=%&qtKQWzF6Tv@dSDGxdsGJ`T`OZ4bpv7IwxGCM8UHf%sd=> z#-RVNJIj{eU|-H=#gPfR9%AtyO}jz~19EWM_(#M)lKaQSKc4%s1dZkH+`nD?+jIY< z_$PD!Zt?HV{Yw1$pth-RulV=o@%zQUKldLL|H0fpE&l1;e^~s7bN^BCAI<%bi2sq? zkKq}*Ora)!%_qEJw;DL}ANZq_(|5XSEm+81Hk}G#^yli43{@1aWd5SGqL}+#@w>U7 z;-yhpEhXEip}t0C#Ub&o;7uPvGd?WJPOl^C#G6ZZZ_$e1h|ZbP&?r`rd#TLT$QIM5 zIOr*=fF2`o{hUnW46fOyPWo(z)+Osgi>wR%u`V>ny3iTxLR+j0J+Uq{#JbQ8>q0B6 z3w^LIG{L&i0qa8g)`i@yOG{kScPmNTL?Qs4rptM^kMsY=C{M{0%inrIsE5LZmr9C5hLQxT5HVCshB4v^=aDoWgi|eN2Wm+y( zkTAs!BeN?L4rBaw2>>>00=1D-4A4?Qg)vyW3KiD%F-80G&Vqw^fztCkC!8^7VuI|B zGbj(o8I?y#9`c)T%45X4W5Z5i+h~dK(IFlsXGrqcoI0g_^yD0qoRserolyyvqab<7 zy_vLoyeCAv^<&fo^E8g0M49up%;h*+a1Y4C88yK?d*geO;;i&|%i`9LQ4`FQe_ILN zx>cUH{`JLc=G{777MgL05SU{hnnRjBz42Kl?dauzcI!tUhoh7i%YH zPCa(|V)d@iY{3q|#FuxER|ZOVZ2jClOJUSrSx|#RmsAlcQs|efG|M zd!B#pdv_n0dgR!n$7jAYcka^HzW$A;zWJ@EzwOl<{^I54mE|B#()I6r_nE9+vq9ir z_5!uAp86{BS2})J_nlKw%WHuVTL^q-o)Ax^>AG{? zk6XRu4!sR(IDu@^Ukb=3*IRj(OnqG!WZ zFKCj<_m`cSI7*U34PUBLK{H$?zt=bvg=EqcnxdUkT`Dyfs3L}3W&!Xn{miU{D7 zANQ~>ZMJA$)JgjjFLn|*c_vCy)l5_)x*BGlP8j=MeMz^p)@V?0q7Wn*oRe|1?1!q| zgk!T`c-#uND-TNpeDzE==VTDoml3C?Ek-k-A(x*CwcdEj5hLOn+?6 zuZ!$jUTUlFauca`TIiKivktfkd0OI8c-gtI-dc!)W?eH`1yR)2`Vo39s}_>zBKpzt z!gUq3AyoLUiMKL0|Y1mChqQ?0gLSqfVlbu`ivauV>Xg z`f5PX=}u@AN%A*a?Z6ja8fmpq0go<2M}TsXq3JZUbkwxD*reE)4zfz>Q%2TOh^LYi zO=<}tx})WsvZ+KjMKf(DGsyv`+Fq78XJLd|@)EV+BaOs|Ch9mJM`=`#0xN&vsBNL? z@VRtEZx@J8gfmvr5_syTG&D(@p&4GRJgC@e=s8PpE}N{*t1)V#$=4%@EiH@Igl8Jj z7o2q3j0VEe3%UuW5Xq3o%=h`S?2BGY#*qHB-M)FNNIei(HaXpd{cW4~)2mUuoOS=M zzqk9}YJ3SzzTV-)TQGDX=!MSWBI;nq(p=z{VuqT!8M1ONNUQR|886gS`XSw9k?~a- z4y$CTlj>nAe=B$a>eW~mA-Ch`vJ6x`17B|_J%bm4?z&4}*q~QDiN4ZV@2`FC{3f7kj0``QP_oI_Jesp(78YtH_#69k`k4ozR0 fn!ZHPq3N}$=`}?RB6DWvPdlL(I`g%8=iYw-4lv@O literal 0 HcmV?d00001 diff --git a/emtests/test_funcs.c b/emtests/test_funcs.c new file mode 100644 index 000000000..af86cf94e --- /dev/null +++ b/emtests/test_funcs.c @@ -0,0 +1,13 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int funcy(int x) { return x * 9; } +int main() { + printf("*%d,%d*\n", funcy(8), funcy(10)); + return 0; +} diff --git a/emtests/test_funcs.out b/emtests/test_funcs.out new file mode 100644 index 000000000..f58def9ac --- /dev/null +++ b/emtests/test_funcs.out @@ -0,0 +1 @@ +*72,90* \ No newline at end of file diff --git a/emtests/test_funcs.wasm b/emtests/test_funcs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2e13a0ced90d02ec7fe74cd3306cd16881a3428a GIT binary patch literal 45399 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 literal 0 HcmV?d00001 diff --git a/emtests/test_functionpointer_libfunc_varargs.c b/emtests/test_functionpointer_libfunc_varargs.c new file mode 100644 index 000000000..8fb43bb2a --- /dev/null +++ b/emtests/test_functionpointer_libfunc_varargs.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +typedef int (*fp_t)(int, int, ...); +int main(int argc, char **argv) { + fp_t fp = &fcntl; + if (argc == 1337) fp = (fp_t) & main; + (*fp)(0, 10); + (*fp)(0, 10, 5); + printf("waka\n"); + return 0; +} diff --git a/emtests/test_functionpointer_libfunc_varargs.out b/emtests/test_functionpointer_libfunc_varargs.out new file mode 100644 index 000000000..360b24dad --- /dev/null +++ b/emtests/test_functionpointer_libfunc_varargs.out @@ -0,0 +1 @@ +waka \ No newline at end of file diff --git a/emtests/test_functionpointer_libfunc_varargs.wasm b/emtests/test_functionpointer_libfunc_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3d459af3bd5b492acbde5531f985e6a90c9d64dc GIT binary patch literal 47585 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 ZnVP<0@PTFC{Fzy=9ksnP)id53{|jwUw_5-J literal 0 HcmV?d00001 diff --git a/emtests/test_fwrite_0.c b/emtests/test_fwrite_0.c new file mode 100644 index 000000000..90817e030 --- /dev/null +++ b/emtests/test_fwrite_0.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + FILE *fh; + + fh = fopen("a.txt", "wb"); + if (!fh) exit(1); + fclose(fh); + + fh = fopen("a.txt", "rb"); + if (!fh) exit(1); + + char data[] = "foobar"; + size_t written = fwrite(data, 1, sizeof(data), fh); + + printf("written=%zu\n", written); +} diff --git a/emtests/test_fwrite_0.out b/emtests/test_fwrite_0.out new file mode 100644 index 000000000..d96592d14 --- /dev/null +++ b/emtests/test_fwrite_0.out @@ -0,0 +1 @@ +written=0 \ No newline at end of file diff --git a/emtests/test_fwrite_0.wasm b/emtests/test_fwrite_0.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d0df0f86067dcb73351ccf618d739dddd73ee4d7 GIT binary patch literal 48895 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 literal 0 HcmV?d00001 diff --git a/emtests/test_getgep.c b/emtests/test_getgep.c new file mode 100644 index 000000000..11fc80b45 --- /dev/null +++ b/emtests/test_getgep.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct { + int y[10]; + int z[10]; +} commonblock; + +int main() { + for (int i = 0; i < 10; ++i) { + commonblock.y[i] = 1; + commonblock.z[i] = 2; + } + printf("*%d %d*\n", commonblock.y[0], commonblock.z[0]); + return 0; +} diff --git a/emtests/test_getgep.out b/emtests/test_getgep.out new file mode 100644 index 000000000..a53d59ff6 --- /dev/null +++ b/emtests/test_getgep.out @@ -0,0 +1 @@ +*1 2* \ No newline at end of file diff --git a/emtests/test_getgep.wasm b/emtests/test_getgep.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1641e99ec05e48a34b481af7ddc03130abf9b62c GIT binary patch literal 45443 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 +#include + +int main() { + double load[5] = {42.13, 42.13, 42.13, 42.13, 42.13}; + printf("ret: %d\n", getloadavg(load, 5)); + printf("load[0]: %.3lf\n", load[0]); + printf("load[1]: %.3lf\n", load[1]); + printf("load[2]: %.3lf\n", load[2]); + printf("load[3]: %.3lf\n", load[3]); + printf("load[4]: %.3lf\n", load[4]); + return 0; +} diff --git a/emtests/test_getloadavg.out b/emtests/test_getloadavg.out new file mode 100644 index 000000000..a7433f65f --- /dev/null +++ b/emtests/test_getloadavg.out @@ -0,0 +1,6 @@ +ret: 3 +load[0]: 0.100 +load[1]: 0.100 +load[2]: 0.100 +load[3]: 42.130 +load[4]: 42.130 diff --git a/emtests/test_getloadavg.wasm b/emtests/test_getloadavg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..337e09aad1f256888d10a4992a14589e36fe2a83 GIT binary patch literal 45761 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 D=|L}a literal 0 HcmV?d00001 diff --git a/emtests/test_getopt.c b/emtests/test_getopt.c new file mode 100644 index 000000000..53c6b3b15 --- /dev/null +++ b/emtests/test_getopt.c @@ -0,0 +1,47 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#pragma clang diagnostic ignored "-Winvalid-pp-token" +#include +#include +#include + +int main(int argc, char *argv[]) { + int flags, opt; + int nsecs, tfnd; + + nsecs = 0; + tfnd = 0; + flags = 0; + while ((opt = getopt(argc, argv, "nt:")) != -1) { + switch (opt) { + case 'n': + flags = 1; + break; + case 't': + nsecs = atoi(optarg); + tfnd = 1; + break; + default: /* '?' */ + fprintf(stderr, "Usage: %s [-t nsecs] [-n] name\n", argv[0]); + exit(EXIT_FAILURE); + } + } + + printf("flags=%d; tfnd=%d; optind=%d\n", flags, tfnd, optind); + + if (optind >= argc) { + fprintf(stderr, "Expected argument after options\n"); + exit(EXIT_FAILURE); + } + + printf("name argument = %s\n", argv[optind]); + + /* Other code omitted */ + + exit(EXIT_SUCCESS); +} diff --git a/emtests/test_getopt.out b/emtests/test_getopt.out new file mode 100644 index 000000000..d06da5073 --- /dev/null +++ b/emtests/test_getopt.out @@ -0,0 +1,2 @@ +flags=1; tfnd=1; optind=4 +name argument = foobar \ No newline at end of file diff --git a/emtests/test_getopt.wasm b/emtests/test_getopt.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a48d7d31fc97d81dde17b623f41e886f041b574f GIT binary patch literal 50573 zcma%^2b`6~)&K9)?!D|?*af7BC}${YDE3|=59%tAn4%`}O(K>M<1S)$MUuSn6;M>{ z*cBUAP*JgW#oiTr@4fe~;s5=e=kBuR&HwXxaoju4)H7$!oH=vm%uH$5efEk*C>_I6pGyJ2pi~E(Lv`eO7rB=?;F3JA>5$~^{BCfPcdB%SA zMA3fH{=3Bc&4~7kKS>59lc!GaIeF@oT|4%e{PW3s?cMQ@Qmn9EdrY3T!`{<&ozgvU zz^=RP-7)PKQ@7l8>eRibZPT&$-@3>4@!0LB?Yev0FQ!lK`16##|5i#=R&DCOQ>L`+ zJ9YO-d+u3;^z0VW8CIDzY0{LvcW4pEP-|eRl8I^RLq;Po1>a zpv##w&xzDk|MK7lmAXaZ&}YtiUw(ucH4EI$;k{)007f=-EGR`?qR*Q+G)G| z=i|5B;TON0^vfN7T~FC_+T^|dy4BwMlK7X?I_iPd?RUtxoJhj@cMt!b^z;081eEuf zviEMgPD!@gb-QH0&adkDsej&c>Ymg7L69IU7cj-q%y_1EX6Eoje~lU%l3)HJij#6V zjS}cBiX;9{qbMtt;wVWgX_6#yloDEw(^48&BT;3KhNz*|*ckOpdo?vTm*O~0$wT(E z5|zrk_nr|Ai);Kz^e5Gyj6Zql-~a3v4J+69Q~CD@PrP5W6?OT)+W$mb%G32*c_3=; zO&?9}=$N{<$Yj@Pd+t58G`KS9&wrk>?>>JiZJtf~bI0V#r2$Qorc9Z>*QDL{`P;64 zowVn=>y&<*P140b-l?VExeq!k?UYU0XSa^F(tkDl=^xPdlqsUs z-#0G*;PVfCC+{On?zzujoXWTV>#n;`F7>UFe}}(xO#WMGg$CkxZ_B-w=0^YcHF@^# zm|W`9!#}s*b^7E|?;g!jX;@Ti_~XExcV2PODm(AIbHfjB$G=!Tie?OJ2+^Iu*{vXW$ zD<)&(u{I#AYy(4VD_fkOX3Zl)Vo4ZeNj_tnkXpKRI<_&Y*`Sccq}G3yHcaE?G67Z?;PF*g<*J+*Gp_L(K+ZR?y9#vfRnFW<9u?v#?@9p8_)UJ=y8F_PNC#SV=NM?s*c``kGndS3G3Whhz zhWj#`9v-jQKWSUTp^+UL<t#dcSmM;+l2h1esWdPx)_&^)|B!zy3sn0h`2clLZd zF}xMqTXBIJ@bqbHpT-5Iz|FMqL!8I%nUmxto0GJK;}U-CI6yliu^(bP10-Ll$P0xQsY_)595=@o@&UaY1GmWTK5L zGtmZrMH{zdc1tGOxG%H&G9mtn%%1R&mot0WL*B~_cT3h1zRK*Y%xU8SFnU1Q4k(K@ zj&x!@vJ739MH?rV)wL&=!xI%{6@{ErHry?lBB<&;_q?GLHGu`4Tv9gNAz53vPCufU zJIVqDs(83;xI4U9;5&roJX^Nw%A$`q%l2$pi9RVC?#<3bmy}z>_hrLf=RwcM8a;

9YP*WWce7n=x9MSb+g;TCC;O9Vd$LWo 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ξ=&yNunSQ@fRmWGWLu}MBh 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 z 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 literal 0 HcmV?d00001 diff --git a/emtests/test_getopt_long.c b/emtests/test_getopt_long.c new file mode 100644 index 000000000..65558d803 --- /dev/null +++ b/emtests/test_getopt_long.c @@ -0,0 +1,80 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#pragma clang diagnostic ignored "-Winvalid-pp-token" +#pragma clang diagnostic ignored "-Wdeprecated-writable-strings" +#include /* for printf */ +#include /* for exit */ +#include + +int main(int argc, char **argv) { + int c; + int digit_optind = 0; + + while (1) { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = { + {"add", required_argument, 0, 0}, + {"append", no_argument, 0, 0}, + {"delete", required_argument, 0, 0}, + {"verbose", no_argument, 0, 0}, + {"create", required_argument, 0, 'c'}, + {"file", required_argument, 0, 0}, + {0, 0, 0, 0}}; + + c = getopt_long(argc, argv, "abc:d:012", long_options, &option_index); + if (c == -1) break; + + switch (c) { + case 0: + printf("option %s", long_options[option_index].name); + if (optarg) printf(" with arg %s", optarg); + printf("\n"); + break; + + case '0': + case '1': + case '2': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf("option %c\n", c); + break; + + case 'a': + printf("option a\n"); + break; + + case 'b': + printf("option b\n"); + break; + + case 'c': + printf("option c with value '%s'\n", optarg); + break; + + case 'd': + printf("option d with value '%s'\n", optarg); + break; + + case '?': + break; + + default: + printf("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) { + printf("non-option ARGV-elements: "); + while (optind < argc) printf("%s ", argv[optind++]); + printf("\n"); + } + + exit(EXIT_SUCCESS); +} diff --git a/emtests/test_getopt_long.out b/emtests/test_getopt_long.out new file mode 100644 index 000000000..22a7bd525 --- /dev/null +++ b/emtests/test_getopt_long.out @@ -0,0 +1,2 @@ +option file with arg foobar +option b \ No newline at end of file diff --git a/emtests/test_getopt_long.wasm b/emtests/test_getopt_long.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a4ff03c9ecb77c859bb657e444fb5a066592f7fa GIT binary patch literal 52909 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 literal 0 HcmV?d00001 diff --git a/emtests/test_globaldoubles.c b/emtests/test_globaldoubles.c new file mode 100644 index 000000000..527ea8fa4 --- /dev/null +++ b/emtests/test_globaldoubles.c @@ -0,0 +1,30 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +double testVu, testVv, testWu, testWv; + +void Test(double _testVu, double _testVv, double _testWu, double _testWv) { + testVu = _testVu; + testVv = _testVv; + testWu = _testWu; + testWv = _testWv; + printf("BUG?\n"); + printf("Display: Vu=%f Vv=%f Wu=%f Wv=%f\n", testVu, testVv, testWu, + testWv); +} + +int main(void) { + double v1 = 465.1; + double v2 = 465.2; + double v3 = 160.3; + double v4 = 111.4; + Test(v1, v2, v3, v4); + return 0; +} diff --git a/emtests/test_globaldoubles.out b/emtests/test_globaldoubles.out new file mode 100644 index 000000000..b47c96910 --- /dev/null +++ b/emtests/test_globaldoubles.out @@ -0,0 +1,2 @@ +BUG? +Display: Vu=465.100000 Vv=465.200000 Wu=160.300000 Wv=111.400000 \ No newline at end of file diff --git a/emtests/test_globaldoubles.wasm b/emtests/test_globaldoubles.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8ac7ce9addee82e18b6fedb7ec8bd4c6b0037eec GIT binary patch literal 45630 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 RRJFMo6}W+#tInyr{sH@U`C +#include + +typedef uint32_t UINT32; +typedef uint64_t UINT64; + +int main() { + volatile UINT32 testu32a = 2375724032U; + UINT32 bigu32 = 0xffffffffU; + volatile UINT64 testu64a = 14746250828952703000U; + + while ((UINT64)testu32a * (UINT64)bigu32 < testu64a) { + printf("testu64a is %llu\n", testu64a); + testu64a /= 2; + } + + return 0; +} diff --git a/emtests/test_i64_umul.out b/emtests/test_i64_umul.out new file mode 100644 index 000000000..eb85c3abb --- /dev/null +++ b/emtests/test_i64_umul.out @@ -0,0 +1 @@ +testu64a is 14746250828952703000 diff --git a/emtests/test_i64_umul.wasm b/emtests/test_i64_umul.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4a44d15aa20f9fd059997545ae81f59484aca171 GIT binary patch literal 45432 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 literal 0 HcmV?d00001 diff --git a/emtests/test_i64_varargs.c b/emtests/test_i64_varargs.c new file mode 100644 index 000000000..042ff8b2b --- /dev/null +++ b/emtests/test_i64_varargs.c @@ -0,0 +1,37 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int64_t ccv_cache_generate_signature(char *msg, int len, int64_t sig_start, + ...) { + if (sig_start < 10123) printf("%s\n", msg + len); + va_list v; + va_start(v, sig_start); + if (sig_start > 1413) + printf("%d\n", va_arg(v, int)); + else + printf("nada\n"); + va_end(v); + return len * sig_start * (msg[0] + 1); +} + +int main(int argc, char **argv) { + argv[0] = (char*)"..."; + for (int i = 0; i < argc; i++) { + int64_t x; + if (i % 123123 == 0) + x = ccv_cache_generate_signature(argv[i], i + 2, (int64_t)argc * argc, + 54.111); + else + x = ccv_cache_generate_signature(argv[i], i + 2, (int64_t)argc * argc, + 13); + printf("%lld\n", x); + } +}; diff --git a/emtests/test_i64_varargs.out b/emtests/test_i64_varargs.out new file mode 100644 index 000000000..01832abc5 --- /dev/null +++ b/emtests/test_i64_varargs.out @@ -0,0 +1,12 @@ +. +nada +1504 +a +nada +5760 +fl +nada +6592 +sdfasdfasdf +nada +7840 diff --git a/emtests/test_i64_varargs.wasm b/emtests/test_i64_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f5fa93ed4790d4117f2689a1dd14a2fc70d00315 GIT binary patch literal 45992 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

svM{0LCCU>TGr!$!Rw<2_RrH1bg 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 +#include + +int main(int argc, char *argv[]) { + uint8_t byte = 0x80; + uint16_t two = byte; + uint32_t four = byte; + uint64_t eight = byte; + + printf("value: %d,%d,%d,%lld.\n", byte, two, four, eight); + + return 0; +} diff --git a/emtests/test_i64_zextneg.out b/emtests/test_i64_zextneg.out new file mode 100644 index 000000000..e2d9fd342 --- /dev/null +++ b/emtests/test_i64_zextneg.out @@ -0,0 +1 @@ +value: 128,128,128,128. \ No newline at end of file diff --git a/emtests/test_i64_zextneg.wasm b/emtests/test_i64_zextneg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..115dfbaffb71e24dbf9252fe2a5b3e18b685c179 GIT binary patch literal 45481 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 MZlLC>bL!wf0CMd6N&o-= literal 0 HcmV?d00001 diff --git a/emtests/test_if.c b/emtests/test_if.c new file mode 100644 index 000000000..79bd56931 --- /dev/null +++ b/emtests/test_if.c @@ -0,0 +1,15 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() { + int x = 5; + if (x > 3) { + printf("*yes*\n"); + } + return 0; +} diff --git a/emtests/test_if.out b/emtests/test_if.out new file mode 100644 index 000000000..f74b06396 --- /dev/null +++ b/emtests/test_if.out @@ -0,0 +1 @@ +*yes* \ No newline at end of file diff --git a/emtests/test_if.wasm b/emtests/test_if.wasm new file mode 100644 index 0000000000000000000000000000000000000000..60d91fcd33ff7363751a7a7ea554730a1af155b7 GIT binary patch literal 45341 zcma%^2b|T#)%Wke-Fw-)unS1Baz+raWABlRx>6D~QIq&QNo*m;UBv9NlIA0eAflpT zS8P~81x4&)LB%eLy({+KdkgRPcm8)5lJ|K(pBKly^Ph6&%$YN1X3m_MDI7TAu&7Wd zM1O2NAel62QZ(s+NPi0MDI5@c5Pu5?6bc7qr0@VGEgX;>mB${X9C=*ffa0VhYl)&G zqoWRpkDL@8c|e*6#m^@Fldk3+_`?{j$jf#X&U z?04WnhqtxwIewP|$B#d}efPG*|GH{yFOS{3{lJ4;_MAAj?N8$l|7#%;tjhQ!#*J$_ zV*J7TA9`pW(tVYX&al${`|m&Q@Pk`wdH9+zwtcs@wmlB7xN)0pIjoR6 z=BtKnorl%04BKkUJgBlVsFtW3AxDf~SzO=!#~wD};I>2m(mrs=pYu%RYPVwf|oG{Hm6+d;8eK z{<7=gN04~0_O@DJdGCFyyNn@W?Yo#!WnI|AQv{^}xUEf9MvQ7pmF*haGt6_(JazzvIYSSPh>yT499y;GDuP z+5Qs_YHKO%TKC7l!?EMWiTie|U-`jjQ}3}8M72XF{Mq?-@4p;)@Yq7nGWqxUbKBUz z7JAhYe{f6HOX*SXAHO2c;ca6Jjotin?*k`}Ei`m%j0yvzO5N^#M~+;pf4`9MC{q zW6_{WrB`8KeYMb}l!NLC>0YVq5tRh92(U(n>5!_8f>aD?wGg0Ch%5@R#nohVNG#b6 z0L4Ld)j~t1`oP+jHV$8-^ZWJj(F0`xe4zZlL42SberJX1SJ9~Oa1;->ha=%qt&9q{ z#`XAd447s6Xb!+o7i3{REp zsZup*4ZpYFQ@!wK`?F9aENTrCY(h1f5RS5=NZTBai|n|l8nuVhqv`{LjlXewbGR_F z3!`eeIb0dpm64#|5ZMhLvN*EE9`Z<6~ktC$)3ZYCJJqn%bplHEj*oq(<~LXNdsDkNtws~WvecH5yfwTC zyQKCasoqu`zKP+p)IRf6Kc@C0p4KouGoq(wZQ-;k5jq5Y< z27kpHcV>2HCf;}`vxhPf{^`t~_K@Y7E%%TQGQ-`OHHB|7`zCYVxB`kEU9_W%;*ArX zSx+p&*G2Kh*+n(&*~Rd5Nm<1qmlO?mXQl{>`oKMJDMdwS!6#Q24R>tT5^m9tIA%#v zsK6DE6%Dtxic0iZ(Qt2fCc3)V9DXbs?iLSvDOT?}wq(ba z;EL+?&OE1<;2d?l^GkL3_ziWoNBC`43;DWaUzbGV$z_{dChqG}_-)00Yo~g)IuU9{ z*>HKlsSf9?vf=6km;jPoTsGWw%A-z@*N+N82PIlAiPqIgF7B4+4zPnJhJ)>3arYnXkK*mIHr5Vm z3xBeMZS2Hwh#exHKGY5sM>pG_thp_;*df+DF^scu;^f2ZF!AwtYq9Zd;cy#g<0po{ z*k2UaYOUhlHapzf+Csbi#o8u@BdpzyXbuyr%ZA!SZ;QX$Uq!mV+27RIf49Hu>mT+H ziPL}DKb>=qw7-QS|Cj8@P)>#;gNq3M@IUrHN<7IXi3A;ybx1N7tE)AK$&pQV0eEy| zM>A?Sg(;CuA-X=!2nfeSmCPpT$BuE~H8rxSo?%*K(;^jqY-DmU?)1oT|BpNFS7H9W=PzzKFJ6SgGdsFQ2n#zKTCca6xOvNVLd19x}x9t^bZGgL1Y&=pxKel zRypg6@)t#Rkw;$~*~K1xNo1E0E%II*g@Hte!IW`<{O8MW11V#0SkH;FUbP^WUN`Ir z<hyCWo8zH#A*{`1NW3DlD^w+7b`&~0ichX7+cos0YDB*Fa8+bi`8YW* zQg50EL(h+@mkzf1LZd#Rir@f6u8!<#hki|DI9hH2LtrFYUK`m0an04R$+b}>>}UI} zQr^PI7K(5Q)!9)@ab0A%lf0TGfxbSn>mBrsk=^JOzA3Vsyt+Fo{^rPVH+lx*0dY%Y zIMoUM6AHIRcB_L}6xkvNaa&}!)j$w`dt|sp4uW_<+z}bhL4a7f+BhoQ8QGm8SJ^rG zuE_3UBG4A@rnc(3_e6%fJI9;2=CCBPCEmI2jqF}8{=UfWVQ?H9v=r( zJq-gVcu3w~UWx3LRVGcMVdz$Y8~rz9T6*WCG2zw7UZoDzNel}4Om%r=%U!y?CN7rr zd?T_qyuxor_NFTQT9gkVuSG54El*ya7~YQTZBO-1WbX)MA*`K|w7O!&3Z&Y*k-e+X z0SYBy$G>)N4(~xMYACheOfadUVWFLF7Pa^w-c5V%y zMuz)&dA8*a@};pEs(*39`t$8ctBGxfDr*cDhK`5jZes{nrWS;ohvBn!h} zp?-MR#Aj z*!VarZVNY-?Zz@P&@$pGVKbs7Y|j=<+Gt7H&K7E$g&k~DNH?rTxq3wArch!Sgg8Tl zSW*t_kjg3=Mi5N*m#aHzX$Zxe!mQYSrr&d8!+S1_aedjYmoSI&?cqF%wDX|*`7u9s zK4@LQ>L7;yTf>E{a~!4FvCS4L>IU`23Rx~B%SDQ|ivW3XY!}CxPhAq*C3NYD;j-8+ zi#4aZTp@NjbEY}5&51R!nj72PSge0VY`DuQ^Ge0>F)>^f+f@*8Vwe}(JeEm}EwK?j zpHx>X4&TJEAhrdpm?nm6W4o5*tzltoL@y-Ob&A6`FSNFn=_*CVMm<6&{Q2F(n&8aC2A|8*apy@I-7+c(8`mCu4ikF?)(Q3HzsG zd)fn@i48Y`g}MaEvw05c@^Wl1dxBSDd&RMTHMUptXehBfw&foE8rXRB>#@B~G!0qR zjPJELY)O)^4L$o6`CpdbwhWuwHeoAooXthEH|Pfr=*`&PbU<&#_Lj=oToivhwzoa{ z-Pqps==WlKk7&*K-i^Z+M2D>@<4yVBkl(hTjIF~~KI7XepYd%Tsu>k$uzW7I=N#bk zjFUbzz7QMk86OFsq0=x}#)f;o780s(*i&Bi`=ZhNLhg+y+(#`(Xx{fhY#%tt51qOB zE9U+vwvRmYW5{bCBbGji?GxoCrmCq!RgHXY*{;p!eIFu$KaK5EdijL#nZ$#AMz8xK z*1YcvN9K!|QhoLZK2Yb&*uL~KzKRV;D}EgdRp|N++6nRVm(b}OMBjhef2~sLx3PWO zRSlm5R>daY#fE#z%Nn5qzK`vDFW`sResB`}7~7Ao2dOIlU$NnS@C?KQVnu8?)vp3| zK%^tFjzlB=F>uShC9|_jUbLuE3xAfMV*k?369K+#AYO#<(;SyJ5h;!Vga0! zYH&_Y40n>lX;Rvm34KdoPDur;1Glc8ul-3^3 zOr#FruQ=qaq^6xan>Z4*hjS7;JF#=n63t3%mJ{pT#LiWI4{r=tj8TiwHSY!R(y zi)g;v61$D4)^K}bxLbjFM`Cv*VL(0`8{iFir}G06;I71Q18TIRU)-J8-Oh0LBz6x3 zQw#z6rKtxn^GNKz#Fo&~_a=6)ll1LHIM_L!@Xmywv-H-*R5y&e}LOOvpAW&<>b ze1h6(F7RZ+9P&vB`&432B>5cjsiYE~7U75GZI=!m|Q7!E{VPV8l&`2uLx zrwfjvfh- zXkR3ROQL<5814&?BG*TBkFOHL<*B<#zJ8qmP>H`y4EMDXYhIGG_4WBLS(Wy?&a~er zhWl<+z&|ARgTwhTu^*kbKcO&peEy{n`#kf&0e=j+Fg)NtL#gvqH* zPN}QDTEdi+c$<={t~Yzasj1;0!!ao#c8sD(pxRGM`Ba6DO$|5Aqr9rql}RzjrG}gC zF@%86@u?l3u57MK_1pC|x}A{P38_Z68L7V5NdePqzcV(- zDfiO){%gMrC#7~$$}UwnIkl71>T_2M4!vZ-)G*>2F3W>wIY>Prq|c51VI zr{bd2F7iSyPLVeki(+|uU6R@*9&wo>E^|^wTFq9MuOBj(DZY(xd1|;zD0xn5bA+b3 za(`}Wb5l|03Quqa=w6u`PD!sy?J6K55i6voHRq)^&r{D&ZN3+Kb!u046)L$hKMh$f zQXpanSTF4=bi|*YHScj_uOa9`hJB=?r9Ip5sQCR5pNC+H6M z!G3qj(@D6+sqwuSsMoO%AZZGA@T-dlzM_oaqg0EzEU?S2vU-ZJEb0$t?HNC7no|4(Yx$T>YHr)}R7o=k1K z>ZIMnQ>ks=iTu;4;hqBd+sj5D+1jLYKKpiKp_juhJRtXEqtCD?oNESmhDz=virm-6jkFCx|b?;igQEG*I%TD`#FPW z3a8tbE})3)2k}UA?>bumw^N82!4gk?)1zXf?pwXJ3ZGA!LN`7 zou1o<;8)1aot`B_@GE3-r{|F&_!aU%r{}35_!Y9O)AQ00{0e!l)AQyK{0dp#>G^O7 zeucc->G^U9euaG6>G^R8euaG7>6tndzd|}XJu`;lSIG2E&*?+)D`aM;=e(i#6>@f` z=hC706*9ZiGjAwk%o@UIGs{PbsaYi)lfm1^ut7O3 zGk_gK(&I8s&!%Z7UsJf_d`q7|=4r=ggljf-LT0$*J?a-^WPdxe86I_FW+!G<$91|- zj!w#|w+*(Fl-8#XjXrf~)TnoIW{mRGJ1NheL-nOSJeCkhCPSuO#+n6p(J3x{(uJI6E6%4`<1 zkJfN5JEIQeyv)u6im>>G0q%TZ@eR`B!pv~zXRTpT*%s0DK~fTDHruF~&8`tkb-E}s z98nhwgmArtHFy>-&FoTdfy*+x%*(o5jdLj!pOe`fkD8m=<+a9{OXFNA2zDjZxQboX z3|~u_=dE*9tw5XSO+X;6Ge5Jdya}$(3^(7S0B|t?uF32gk6XaJ23sv)l*{EG;C%H7~iIn@>e6vs=9Sw`O*0t-)@|!qBb;yVx6Ss2XZfW{W)2ZJFKX4Rw2Fw|nk8GP^?!HPq#< z4HX+L&TO$Kzbi8wXx^<5yW1(@9pxVMyjfV1*%BxCy(oqq+{wRs;1opq>x} zdjeQbvU8Y)r!spu3(sVR=Na-nt8Xoop34kBi>c@NtHs<4icw8p%nbKJXA3_G*S zzFrdH^L5$Fnc<$NlvgtK<5!eeJ^MM&MIbEmDyww|_!`UH%wAPgR$Iiro*7P{-^lC@ z0nQDx-bBZn1Aa@3PJ7D%v#`wp6A0k9I|09w8SZT_llr^`KJTJ1mQNgqM&wCH;JwV= z^R|0Gv-hzQY7HM|_93vE!bh2Xq^2gAZLW{=_=({Y_eiz(sjB{|k^qaA`3y5DhxNJe z7bAU<*%u!2WoEd~snl1QeWgmV>4?qKx0!vLN#FZjR?`K3pBe5udi)OxvLAAMm01vf z%nbLX*Xv6!^{32mpVz8Y@S@Ro{0qVAMX%^YrlV*bMfI7#}(~3PkVgPjxS22pHQ?DlyJHS&nVgq4?d}AClSn4awpAcXB5MRBng{T5YzG> zC%rwIP~QY)WYv{OC$w4$Bn(We*fbfPs~ zJ*^lvAUbSJ88hWSS$^AqGByqyxz>N9d_lc_*vTtT+e|ImREKy>(T*vKlGBQYn_Pq) z_^b9i7DF+`<{@DxW_&BWYn@TFGrVx;8uWc<7VS)jc2-f_S^Skg_ne}gw_RD7-{t zaDqg$i#FQ}yQpY56?Sn^aZvZtqFr2M20Xin@Gn-vf7^erQut*>yG*r_)CC=QQQV(D#UJd_&p^aZYtK~&do)`-Q+Qdhn|?K6b;u?P1I8g z{6&1Y0{^z6-KGXyRFq=!_M#N{{8fYBQKW~et?nd_1nprlMu|mROrzaZw7b00cVn5Q z{2tyG?ol4Q$4e$ZZ1+pMqZsw6nAei>|3#YYoe}?*!TXT z;d0rBECtR3MZ@(`4G18~gGIyLp`s-4dP;%+P|+T8v>p~`J`7@X-M&yjE49*?@JP`f zQQ&~kS9wV5O8lioTZ--5#PDd*9tFqNuuOn#8FhZVXpfUjO8h5^_Jk*U5{`rkTEkOC z!!0Yeg{PH_kM{6P(ViiLl=#mU?OD(89Cd-Ht>Jl$G>i5;8D1=+#DB5a5?)ezg4)B& zMSHm@CH^Z#BlHz)GG8s)tKKrp-GdVUHCoPID^3ir7wvVTTEiPf!z~Bqn?-xG82aW) z{J!3Z?>JA;soyOcu5XQgF!_5$d(S!f{i3}O(G){~EAjI_`hnWLFJ>i0`=Dqa((E5$ z)a>;A7_L>bdw5&;#QX3k-t1mttr&Rz)1u+tsqvy3?(?GIR&CoaiiYzLHOo8B9bXph zOULi4qJ8BdUt{B4)M)ih(QrMR!nbPXZ-vO0#n3ymzS8D@M>VC*|GtPe|9dF>L(#rN zV8|lm2js<1qTo-^`(H)-S26Tb-ql=q_o|}JKc-}>Aq4E0+^Th2$)@FIs3n_Rl6ae5 zvgswwi7VDion{4c)@`*qO4i{?k1pBKB_TScWH=C=TC%C+Az|n(t=kHf%g1W@1dT$v z=mE`+D;aLJ8WADc@g>7`C80ZOjGHLUBtB=em*$hYE#FCxprjI9;43}plc2x)` zmkf7eX=N!hONQ&cvh7YO*(p?+07_tvL=m&gHoF|U)cLR)ddt+Q=L*2nN`}+q{`8Wa zF5_WCvBJ`#WM?>PXL^D&;pDSQhEvkBOLn#>D!rvo?$0UNIi7k}$!3*8>cieyrRp!6 z!?`6p*Nq#`E7^Iaa6!o~C~0+eVaYD^=9$f3!dk*bCA-L@E-u;ZQr`X-mnz{BL9k1} z;8GPYfqz-a@Lz_S^YW5iPFlhlTu3~pWOKZ@E8IilTv^IjiC2~KRpPvo%`1iZC7bVs zU0t%P9gk~-$9(WuP_hLcb#2M6so`-gpcewb7J|n0B?H((lHO3#T=IIgiDs8Kc;gU= zaKEucxF~s3$#6G%)Gx@$DxhRHd(D*KhCaC^xc{&t6aTgh&tnu;O-R=KlexU(SY;*u>E z_ur;08I9@f32DDco5EcsyUY1xPAS~2pm0yg@Z1AEmIzx7LHCyI-jW8r`xIjLc`-|z zF!y^SQnd$4hP%I3SzFSXhT-m^5}!WaJzTPfg~~(ZZ4Zx>G~V%7>0&9Sql49Y#*vBV)c+re70n`JRo1+K1XjYSr4TkfF#eC47XH8VbY-bFyOsVvKJh$ z7fbdccrn~Huna5J#=DoW*jMNPg_6)myO&G$GA6JLGbMWkD6QdDL9th<@oOb}jbs|_ zUN70}p6rd1y+I4NhBr%wd$rUS-cm9?+QZu=dz%az?cOQbJD%a)lD!K_Tf=)LBjtN! zc)!GG_dYH9q0$r79zH7BMo;BgF=?`5jr6sDCK=BAaw%G5Z=Jia}g=nG2Q z3?blqRoSlkw;{H1jW7=@dFrV`3#*L2U#}U>jdjKji%4Rc!rHcWI=rF6$KRL^L^ZY3 za}fbYViX{&WTBi}2g75S@p5+JJ1py_#xfYDf4O<9V9k;_*sPeE&+ts^C;=*j^;yLd zy`^obq8Q}XX~CuuFgrJg(YB65+t)_ha~$nEzz*<4`2nI9PPB|}3KMN2K&QH`(MdY+ zCX{B%j#l8^G`5;F1F2z8hb+inc9PukPdpcMg1iI+wxmIXR{h=lBG@yUkuVea6q{| zI)FZkI1C9MI$0XrB3q5VbiqT$felLKpMTYS_4feVYVq(iL`n}>5eN%S$#O5KPAClxHH@$Zgc#&uoCKFu7 z5I2bzTwLEt7t>H&M`tsxd-PkEK07*!OA^lHYrrXi0OpNG>g4i8cB*<7}pKrs!y@YJ7~0=v9qrF-G;f0imDbv8~4)<6Vh( zKunJfr)pQost$QvjA6ZCxG}w8xH0{IAb~-=u+Powk9UB_JHQj&%--p^YLn;`#*BzI z`VR9U`Oem20ZaF(^j<9D&k~X_V=h%VJ$sJhfYJK7ZnuqTx-8Y3WTt*T6d@@Q%uz0o zvAQBIlrcIDmJ4+^SO;2DxJVZ2gy*Be#WGZvu*XWBao`eRE~)SGn=m91$8}w@53m6o z-Bo-p{fsj{)`Y=ga8wC(Mn+osFQPP0x2~=01rM}=6q~Du2iYJMx}HSadO1ickH^+i zk(4je53wOOSb@-Gz2-2~hI-<>u1Nb0Yy&~rP*q3zZKPjGzm1U-8`D4#kM6XIZKCGe zRG;*vVKz*ko7rZzX%n``n>$l))Q&;&7UJlwY7%d2+uF8j4ckcCZ37bO&6^6qwzjQp zCag9S^zCdr+ti~gOjIZWCfeS%R}nkZO5D+Q)aOpN69G-(XJGfU96MNWSKC!p-OYAW znkK9>X}jHRcM|NXkdZc0A){;*cosr`39gYWws#GEV4)^_yWz85q0#z;-aZ{_6eo_c zG0OgP7I$R-h5Z76jpF$|Y!5~3X?rSSFWV~@RC|V=oK{^8m_Nri2A}l==4!0(bwIIq zE~FYmf3GAJA8x}1r;1@TL>XZtToH)Ek+@xKm)sV3r_i6we(vIz_Dl6UD1<1&7D}1- zmK@sK#n3*sk3xQp;j4)B8~Y83_p$yWbbn#Wxrxigw~_7L9)4@TRa@;>oAb(CdcW52 z-wclJAh<@mgV{R5#8XMg(xBIb9Q?O)-z$XctE!ogSQA&JsoEqRa~ zWIG52&;}X@VFm4v_D5mFL0HwOzheGmf3iO+;UATaL$MCCVh5{nIkm5BIwMQAW^2x~ zfe0sL?NDVqRM|Kvn`e`*cSCiA@p(r$oa3?Mm5h$CVYAN8+J=1AI#??mv9*aav~AwM zJc{+vhG@>%v5d9MoPhkW34+i~VB2%BM;IqV$AQU2D>N!ugse_C}PfvU-YTe1++7CL;&(BX3VpW=_z?Vq7! ztA{l*^Y5c|{#GQKqVu;z9UWm9YHQ?T$TdGxb@Vp>_F3gIk>PxS;uGd+I+1Jt1bxIq zU#%sN)zMsGGM)2Mk@p@n?0suX$>Vgz0f7Sofu!@Lbh zu9lk-bQtZNs71$e$#NDs&-HV;EG5s=NnMWS){feW{1@oVZIz|uh3GQ5bzx$d9ocN3 z>0T5W?gC(5tOK{9n6D&r?f0b+uj|;Wx%!gxnoRN)4kymh!PmT#U!MQg`qo@v8`{My zBActDuw0X%nvh)E`Zk3dguo3#;Myp#IxA`+c_Zj* zA$e28Lh>dE>*rqch2+gqMaNwGa?rIsEYe|Cb|uK0x!_E+j=VcEZK~Ma`Sj=>9avTA zcj&CEYJIOxrRM9%L@jcgM}X+=J{4y&Rc($QB5mxrN>)@CAd0AK8cvC&9)3VM8u+L&&5iZkNRM{PJI(G43&cdo0@k5L!B6~tdX&LR` zT|dN5MxUuf=J8MJ7o?xkSyd5@4eThyzIq0hTRAmU_Kf^ymH+i(m2xPu+S{=?07*6E zvX;g*pCLPgldK){8PkqRy|e9Xn=5`tReHE_ zR-CUYmEMs`GYg~ATQNV}swprB%d4zDQ>M~`sB||fy;WE)6$aHUF9Ff-s5LP;V6l$gUR?Yb7*x-Ef;YA9(4uCi>W(-x{5HHY5T zTS->qYgjXze0}uQ*H*K>%^W>-H2Pcre5tY;1Kj%gF@kOLpBR8P0_H3=R2D>0qnNW7 z%xSAIr-?ax!85(Ya#_wgu(t{-Sw^GO=i^?|2aHh< z6!okCSD?$G@8w-_Qi#AhM1E0IedLN9R+<~2(ab+$V{l#+MLh+r_y1P?-r(L_NS7&V zP_uBYx@hvY6wZqatwLI|r{3zlb&w5RJ**7s4S5f15Sgfa^|ZO(KO4kuJ=rUBxv{l1 zG}Z}sL88{0k`<~C7n-RiTl?E{1y=>0;mmzwKgi!ZZ##=J;jYHn%Oz5^Zj|UDMH4h@ zfGKO$ernBz%CacxqvU<9uu-7^+L3|Vg`8Q8zT z;tl8xA@M#XTl*E%rwncM+l}cZib9CrQ0Z1{$dyf6!Owt;0YhuoX~)*DKjw=NZy@}90GO#512ZxPze8%YAApcbXAYTaAiva5f% z3@?MKPYGRW!#w$yZsPH73*(5p>k-*>lO6=ZYU(Z8mp~psiPa=65?bE51eSJgemIFX zQVlnO=wx9jEI5OWrEU`vbqJ`&jq7%*5?PlL;7PzCbgyP%V~}RF&up-kv3XD>W|>;e zBx3v!=!UkTpjHfaXc2cC8pj?qKlphXIt2WzG(Dl5n6oEah1IyZr#F2s+LG<&*twV{ zRvU<@-UjOIeeyB6ul2FMZDAvd-^j%v9UIP&HliV{D^}}dGlqQH)R@4nZmSC%<4X-( zU6WKZ`C#Mgvwqg^{{|+x-M_|HAVvj{)vCbSUV#MR+*N^f7XXtV=q%`pj#wj4f&A9BAA@W|8ziWe`T`or4|m0v}5 zYD*ectw*~^1x?|kF57&4W8W^Dko&oD8U?) zv$6)Hi(mNUSu7rgz+@DUosy~@TE9U1$L-B(dZEbR>L{*5Fx}e+S&yd? z6(1~k{JOLdygU$e8D9s{(1S+NA_Hx`R_QvBy5i(kCWBqIX37MD+xvVB zO%U@I(aTQ~{rg{T@@c3H$_J@p&ff@%#wu0P@p3qpK2lg^1n*IuG+Htl>ZFZ90uMC-)kPnWYGT9~A{zJNi&;C&tgk-S z%leF|4H{|V2Jmk`4Rr9YPx3VV;si~T4#1=tE;|Nd+AmmhS{^w#3J~M3>OU@QoP6G-$z|%F77MPPUuUuI? zRhJNB7E|@z>4y9V@=6xdlKO!kY9p?b;J7T>RwURSmerI40U!mfw$Bip)xz%dF#znY zO*-46HEbIXw{5{JPrVhXix!7&&Q3-39(rEhdu*%xSBg@WPt-#Th;p?Uw$u26qCivo zZd%-~X1zr&70Tp8rS%gHcNY^`KQzI%4FGym)M~mZsW&8B4GQ%SJsID(gGt0EngFNZ zQsV9m52uZ{%g1;%9fuQPDK8!+L)gww0d7|kpzIv@rYjB>~yMO0^TN`f8x3ZB# zv?}?f4bH+a6aj?_laa|sPc4swiObbwOjsKtv3p8Tw7i7(+_`b z4u-FTyl5-}EbHD0FzmW!ty&F9=gJuG!-AER048-Wu+>VlW;(TlN_*8eQ5Bu?I98|1pFsym^o2y z4+sHXJ=CTfS%cb?!9bu{pw>XsgEs=;#%%O?w^r*kf&v1DyNrf4RPITmjm3(avOHNH zt+G5@9%+5HX>}RUSLb&&zk~FR@EXkhLqlxPh{85W!3NQfI(>~@zW!Z4tNFZ}Z_LQ5 zg*06_!aLXoHEt|2YS79FGAYo;xzwTNLuo(FfRQ>(eW|qMjHV{*Nk*19LIiCsV; zXF9(SUi6>*s|R#Z8V+HB01F_=1PNug*j%-;{gGXiOLt-hqI!0g8^0%)RUoOpmx3*tXJ(qM}1eANc0K=>7BEji?7lJh+;9<%+{C;`nX1v z!d@waZ{5`4dXD=jExY_esq;S+oSm6kdJK-@|Bru#nB`NoPH@xuq=5XRVlPEuwfdx< z&D%nS86Z2#bkfIBqH~9EO=&4C*`E^{j|&Y+0djsDSL<>yz-2pt>7zfNIg;$<3(Px_ zz2kM{Iyknt^NzG$Q@*trto8ZYx7uN75fhJ%IvWVrV<#N9CU#J|z)6+E zPKoB7>!{6j)UMF2Z8g-c)J1JoP`k?Sa09h@LhUL*&DXVUIcityqBfy+jV^fOD(trK zl&*DxfOBHx;uXSeu5gp4hM+ZpAoK|PD%YfI6w9f<0e4jC1~@W*=@@bi+(Jj}I^FbE zL+pCp^+sFY;Mc%W^o_dt4O*;8f8w~Kcj}vT4V;?!W?crS7Q7|aU2t8^d~2+G%!ex# zr10zEl=wSJ`BVishYr1FSBGXeZ3++Q zzBf85ELN1+mAa5ulslo8#oIT`G@2bIF^odDHN*G{!hZyf%fkLQd~T zV=jmjB_EU33YF4A^D$LQDeP;{N9ah@25VG178lyWZj6kpx3JXTm2qmf%+{#rdNX}A zWwv@Hd>Gq@F|(5oVx}jE7A#+fI!U?^*~xY%&l+SIN|v3t=FUc| zVOe?B8h?|fFeV;uW1!$@VT_f55@2OeO8^^UU?8ao<~r-1mw7lpqR7s6IJ4@V!_Tx* z8Z92f4nYtw5~%S376LHn-dG3FbQlNZu#|aU4CH8fECrMULxEbE2p-G=C~{u`#3Vq` z9Hy!P#1cSk^?Ug6_s)iYus`HX=m~ZIbuI`GumhCvK-lj<=RS-8#Cv|J+8j3j_f=bt zRn5k#W`CqAW2uUcEo>odu?6_w*z9p#WFHR6x$Jq}SeIXKCnkC}wnMni4^x3W+VArV zFEJFwihfa7+=<6ti0#kZf7dEo0vQsB9xc`^gq{?0J?TuspzgdiwW~>W6F1Ng6VitX z>8UYT9~OQlf!p6kho7<8S74s@v(V~ug;o(ycXa18!M1?AVw?TRf$hd%KhVCiA8~Kzuzs53OpajA4(2i#Gj`&cRkxO4;LN+i zQTsR#94*5GJ5qR~@AB53A`=9)_m8@Mm+nR-2L^L>`IOcUX<5huiQl zEvjzQC4RQ<5q7g+$2=g!#rUK)4zYVhMBTe zAng#2W|H*XxN|=C|NF}t@UB8jk8Qj6sq|@V=+S58zj}G&&hMUm%Ei@s_v(`o(5;Y0 zefre(DfQ`-^wHD{iwr98&Hqw3S0Q#bdP|RTfu~y1QdTS}(`7D4-2TD_(tILn{krw# z+C(sqW=j#*6&>nJwdjHKcoCuo12YWVPu|P|V)ez&R8R?J!0B8R?xndE2R0fzM0s%o z>a&$8slu6^2{G=#of)yU;drf6pZ*(O=jb-}m3XaP-#LE;FD_`zOPl4kAOGsYYpr}* z%Vb1Yt|@@^eQRL*SIc8^s}WkWKL?vCG9BRtPL#h`i+o!Mh7}2mbuL-oyn2t%#``F5 zBwE%H+n>mH@KL}BmTgd`n4qQLk6=$cA8f-oXvL7@91I z)DtiU-q5S-vfiEw@Gnw^V7|GTbMNlCXAlsS~1mS20TSfUHSW z^#^4_Le-yNJ0ql$Tat8Ts_)9AHkhVMJm<*xgJtRyzOrKJDJe=DEYcW+bl$4^xR(c; z`QprXiLeKe9f%dGW^A58|3)r-Wk2jirPXFpEnB6&PWhsL`!80<-w*_*C#Gjy(3kWF zgw-`}6F$@};Pedkz-k4uW?D%sAa6s`oLFdH0mT&YoEZ$+a6d` zHEt$Ts}=Ex!Y{+@2yG(CEMe3(lBK;g(>Qf9vdg6J?*s!dwpelUDo{IQQyh-^<}T|YpU@ZI@4n7 zHitLe!oPlWe$L@Ple=}&+Y!A0QoRv1ZldD=Y!AMRNE7V0DV`v0=dLWKQ>6g=`vU2~ zmDSx?^QN2Gr^;srx9GJ9+W!_>eCtYh54&_^?yqD!heCDt+;k2jI?iavC?7F_+Yg(z z78%Li8u|5IZUTo~T2A9Smx|e z;WlNiQbrFtAZ%cPjlR#hm74pc^G@t+_TtJaNV+dBOwe(Uys5f#!h@z7Y~4rKj(*6d z$-1*h(uodag{JK5>oms>oaboKF`{ia6f`nF(g98%Q~hl!;r*Cvq-7WNX#})SN$|NI z4j{p&Bp6%?n|g_x@@d;rB3ee(6w8&Rw8bHIM#680iau96u^}>hxgD|J?{sQSQztG?1X4n8o2;$mr?<;bV18N(ySL;f> z5i{&AZMan7EH&Mr%B^plZfuwpI_(*&b>q;cc~Pjtl^LCJZGF=VH94zA%9e&ycSljZ zA}ru0w!RsKdcKwzy*wqcNh(^Pl?Ts^?LwF+3!R!Ab_CC)Rf_0jF&@HRDz^9+I^RX{#FS3$_(M_1)_`hj=e-2i^nNItR+S-IwqH z{grKPzk)z{1PgUvxf8)UUZw48neE#O<%$7%sWeP^RN6>N8>!OD^JH9IV7AU2uf9H? zA9Plc9df2rUPYGtTK%gg`&l>JkNuB4f+arBUHw53dQOi*e`j^}JGUnj6R6PcNOlSx zMWLfqX!rS=|8p^`7h0+BR-0RRO||4>uR;5!=m^4r=nH^-fc3Bg*tyLkPzInY7^?^! z8=%mGQKlc<>Kogzk)~5;$dCshqbYTCPS`WNyt=LhjhBZRYUq{MMeBc#6$tDhY^ajY|)_v;m~SpSZk}yMphaC z`3ohxfWt1rVeK3T`q6wD#}`;ZsdTPTU6ta}+%v4IbQB9Zd8yKmU_+Dl!Yq$KsUZD= zA~?37(*I^=`QBz=Q&SWeXzL2bu9Uv3N+0O+Z00q2N1dlF5Kdb-3Z<@Po)ZB3jIdr_ z5{e4fSy0lEww|#M%9K`ckCs|Nr!glp7`8|+(c!1%7=LV1D~h!t+T#-<8`w}~*bPK> z6CxWpA_%nk91H-3a~y?Y*80|3zw@0d477(c)k~TZG4xD90%7$cjzT+dT$CSx z5F)u&0g6nEY$MJ~v@&trSi7T|Q_qTQ6Xj_FmnPwY(k|MLHpsfxr(QaiDPhwb{0tqp zl@{UzFCD$arW~N)j8z^zQ|BaV2PY`~B!BCQ(oc+R7;l=jYL6cc;}$CY+z90vrSDGZ zyXU2!>!qjpd>-vf1zA2bihE3ok3udsT0v8CnPMUBwMiNwg%Qm@1ofQbVisjdU3D3I z)y$GsUmVK2(B`cpvE$Yt*@T> z?y>gzj)?1WgqR^JH5}{+v6xY5VCD$b=Sw;5-IiR;Rfn|!+259=4pvgB^&^t$8i)jk zQ35#S;97reyJOl~D>ZJYOpoJ!lTy*4KgH@!Nlr!2|JEF^-d^1Ltbukl-mf0g`In_$th=(U0+zeNwAy@llxaSGGz?c(@6y@F3GD zhF%#1^{ks9O2j)DQaA3dDP#Ih^PHx;OM2vyA!G1Lpn#2Im_%pRgL*ZM6Q zUp8Yq;#KzbJ7VqY_obAS`D5yWS;MnTER)gV0a?@KWFVvkBGq>PXujUS8s$7V$$Dpe z$R4o4SeiBNvIem$Sa#&&yl3ScUCrpJz_fvqH!-eOI!Xrx#Fb;z_EfbV+I3R8;_L}Q zpuU;_E~9`J z2(chtg%Ar;5#qf>$0IJ+MflaTkxUEZ(^CtJl5mfQo=4~bdf34i{5%)g%t#Y8Zks=Y zD$NY)Txt=`%5Q2XhD-C0O#|1+v$0xTzBatW9s2LnWg$7*6qiy$pP?43JubiTM{5bV zQd%U|%&(!3c^eH3_sVJ7UCgR)@WmznY4zXKF^eNxj3{c=wf_+Xa`!(S;%!Wyc!iY` zD_rM4q9gzJ?TW&b{M!6gLVn4S_n3D*BPx(-Qn_49IW2kK*ZX9k@&%}TL*dNo{c8M! zb}iKYb$JeI(^S?||3K;$q&|+PSA_X-w9FSQdN5bhCI&mGx^)>{?1fBMs|L>zbfH$5 z1;b7k1}RvtYQnF$lhwhMtE9V9=}wQs{#*p5r!yM2%P+R?L}d8I`Th2t--UyMZ-P;` z1#a}khSU@OOcnbLH1x~T+{pYJ6KG#lS6`zISdx9NZ9XRlYSW)$H5EH?eXATAoiiM%nF?&*~jFL73WeLoNIUZnf`fp~H{JIqYExqp^!=RZX_$?{=_B4_KOewkj_2^M%2i2~?Vox6{t8Dy=llCB8o_vd zrMGCsqbj(o6G6y$M!WX(ijwg5O7AMthNo9>3q1*aawIRXz+ULJZqTF0YNZ>!zxUHy z4jrkB?~e3JUS-i(dJ}wmv)*J8ee+jY1pHQiMp(>!AE$7xE2ec6??^t-BTqak>No-_X406J@ay1qKBhtGH!zP zCtek2>|YzKK^EFkRQmcVjC zC2D2SpJm7I?BMWw&MWf-kxm}xQsfX!TqQ&3kF#phL#l{B6Fm$ebBO(!=s!5rLrJzM zu|ttDzq8-BuwFRSnsqd}zm02Q%TPHEV?vkfDqx)EmC|T@S8?NkcSzV@n`97dq!tDU z%c2_`^DN8*k{~lW8*f4N;xL7){#^)Zm+_CyED?}Et(y5wNyFq6(YqhF5PORMmV_Ya zzr%hN+fUHj^h(ies5*f|&y)DbY(hn=@(^rt8jj9+_UQB~wkkt@#yM!7&3WgW!_<`b zxNR!zcZ{ACarPU#bSXGZ)3YKqb}S$*^P63c0O&LU?P7_ZtUkbFv>qg;UOmyn9)YFm ze&HY9SN>65d!!$ko@D>Xs!0ETqBdrAplQv3QCc#PX+YS7)6eq*ufp`uVlm`bUc0$3 z3yb;ryD>b_GL0u=tZ{z$RL{Hc%*v7ZgE1pIPXFMgq=WZjcoZi8I7%}}|Z7`kfBF!AFLmGsK=Dy%DS?iNrcy?#{(-C!Eh~2?}hptA8m`+3oC?Bf}T!-uX zr$k&8Td~b;lQAqmVh;8z?dD+zr@#(M&LU%)>zVRp2Oy_w2NN9z8iMU*D@6*j`x=J8 zX_0it{N27b`N@E{eV2$mUb~+5&lasWU=@GpR0|K9VTRTrK-h$a*q(+sAqxM<_*#dr z&GhwOT@ZT`cm#p_h5xFcB!HJ#jhv{=&(rC+49XWN-44@Km7P+Kd?UYD$h;F*-=+ra zIIe>^&Ss%%|Ajh2m90u8(IP#~siCMFJ;>e7n-fCcC&yU81 zO9&CCU#jEQD)%yWB~`skP<0a&tc#1c6Zp%uf2Zc21D?t_R|mmCe=d{l?JD5~1~!ks zqV^7QHSDf;n_i;JRh9lKN+F3*xGL(5L&iFEmeE}gP&@Ql{t)#fR+bL^#l!^fMZv3Z zmY#CCD;B@@4|mtz;k-!uhIp=q#@9r44Q6#m}loIA;(6%fCx>FjuZ0@e?KVE0?&&%1NodbNP{ zH7{YZRl-0DW=oud-=UrFRhTBU_xU;Vdtt2mb;7)M0(f8c4s{>Z0}&Ik2mO`hzcQ5h zv2rT*ux}qxu}8E+RK<9FsUJsQ$}Hkh?ID3^PqD>gzOUHvK*2YYmeDi3OFiySEO%f6 z@`Ub~V)M`&?nw^@>{B{w&PEZ2R}oJuSIZ;wJs`k7!<`V&Y6BNAe%@$x)FqJYxd?lx z(n#$MJ+Jb)SAwmfumQJ=vjf=KdSqRnTZ&yEy`YUFTi@5C>=WVEAE%3_2z-g6U)I~o z>JzVMw^Ft7ogN$B6kdxA_X%RJUT{}Di@P>AC(j#{* z_`l)1WV=Q+Uqz2Pt*@h2Z~9BlZ_?6l)qG9iZ7=3+is3Cco^I=e@afK-)8ub=u7tCB zU1cTo8gHrQu(6*}fYwX?s_jL@Ou7?;)9(^iEGn zI!kY8y$4WU(c-NHz|E?CAIJAOeETy~f;dYME27!U(Ch<|%0BRp#k*iXCA0Ilw|E}x zpzxvgW+{y8C;iBie#8-u(-_CbX!GS`rGcKqpyh7f%)>N}e1f_tUu@#rjho!{ z*fS}2Q{-p5Yb%faEDB>XuEQCl8@D9eKKJLK=}cd8f4iQ6mXPAwt6GVjJ0@JuHO$6@ z-7*q|P4Vs8$umM`Q;^xU!hJhmtC!bajsC`a`M17*0@r>Q9@5!2kKeOQ#z34XrMfxiVy8S)EUOJgElJ31HRoe@@FB{pS zotZstuQAvoGL}!#Y;Di*D@XKKBJ(l2CQCG(rVF&hUdPI;S!4OH!Y`{)*jwW{sQ@um zw^$KzOdNid>F+NY)%Nb9>7MzwZ^7TIs@_MRnGpPuLoMB>V;Yy(^q5|!mj`X+Xc<6{ ztp0O!mkBg4uqQlVNM2W4&A?>S6=}LXh`L}0js0^)PgS$W$W)zSy)((lx}cA^lZn$2 zFjhUe6*N`ytNH-CH~;@qwLVo>_Nms`LZ9Zfc1veQ@or%&?zWGsb$`)B!3~~8l(Tem z7tw_9?aA8sldyr@8)7fUtx1Y?#c=a;RQV-kH{J|Q_jwqNEp(1x6z9ouY-Y>x;Rx#=^kd9lAljhwzDzbFjTXWNQv zA7#p{sncb$H)6=VG^UtJSf1F%JnlGB_QhPckn81?Fv~xlWT4c?KMGr4QN-%06K^E8qj!%QPAFUXgW-wuZ{in;SAsNgu~L? zXq1{K4M{SwW-twV?1PasD+{{BJ{3KHy|(CajqIj%|s$6agJ;_FT-4;?| z)XfXy@LTTC(%65UY@$KyXu8SBO8z|dJiVNV(-Ix~XkI0ik+h!2#&c85buu!CuEryC zb7+bpc96I9Ag#Y|l~r`UfWI}?F%GgVBAeSsE8Fd|k0u+jgLvH}=0HW~*)bputbiIz z{oHbzrT(3I54*}ze{n3cX)UYoify2Zy4#<_zAN6o;QJ@U+@l!SeM!vI*H}+0W=X6w zBw%qbSYSEL_ZG66{%!57!u@&_+qU5bdN*~xnvSQ7*M2LD=i2fPPrjVYRZ^&;w3vKY z(OOLs{jgL~PWZj7Cl}NEW7s~K+pD72JQpQW7GVjE;WLKLe4^`r3>)esG&${>)XkR3 z5_^95CNbR7m=?fjwuwYd`J32KjewW-AXMIlZP6Pf~;(1>Muw8BBW$^61Y;mc{3lJ6a zTuvxqqRYa#Npjc?cSQ#`BhQyuFU6rL*G$ceCGUQd3!hgJOz>rs%*S!RY30>c-fWd% zEmWthQ^hcVgDiCNQL;3rON^H3Io{XdjW=Y9PReaKE)4vidsTieO1>#Oiutv-Kb?|q z>7j0~9HvSbA`RyglTXZ9oG$Ox=<=S^g{b^ArJsy^-|Zhn(hu}_Hd)^%o|jePpvRW} zPkYz)8^=|L&+e?R>vY%7&4jd^&8;DJiqj@dph=Up(~vc><2DflD3tN;Y&`Mo%z7@4 z7mDJxL4<-Rs1+)&yzqp?KY$vEH=cNi%4;Qf1e!|ap@3Ar@0_zUyCDd~8_26O{V-! zeU$ZgxD}BA&eW0%Y}iR0*Dh5S6v-Dz@=Xi4#a~oD;{B-rDnNK&Ayg603+W}=9~*H6 z#tR6SS1f*)ydalww~Lj>YnN}dA-*Q=SfCkPAQ=Gm7kNoGn({sDZ{4%xJtn(j;r0}4 zwseI=1>oaS#o^n$jhiAgq!YoKGqn0$OTKII&R_Il1{eQQ0fs75ss~e)e+4;I1t@?Y z@_)ywOyL#Ix(pP9D38~%9gB~VEG)$>IgcB;u>!YnLpLb?eY_mzi@c{>$Z1^E%?=oPEnLoxE4tSzZ(8zAcJ7B3i2H_BSs0*mu7~Y&z+hJa zw0H{@pc8LdRUC+8=)twA7N9Xd;r-pXv3nKQb)yAO;X-WckJ&qao0+5@u->+i>o?dt z$BX7AiDCJtyviFrz^edO0c$w*0Mw*bDo*6{w{kpagP{GYg3Y{AaVLX#h{8H@<2qbew?)tNz9|Kk9j27#c)U%kmZ4U6(H)(viJ`^d)rE~ zMS(2}Y*Ao~0$UW=qQL(Z1#Rt(S=E#awtGnbrU;U zFp_{?VAl=n()cFXt1w&Rq*OS3SF?kYSrhL^~Kvq)hOzDu9|e@kXh?#4L84j&p0o2~{`mqIuipxZEDXn$t6? z*JJBsTJ=4YMB_3nX_u~UH>%sEt3#V$n25E~z#3}>Qc|Vei?o=!KZ^77y=l{Ec8H0T z1s4=3@zI84)2y^QT~Vv-llxR-Cf51wM)f}O9+U@F1&4HF9!Fyi=?c(d z8X!SqXnBkE9FZE9IHemijopE%wBa{fPu7;Ir(HK^8AmcigD<32Piq`#g=8N-lg)C}v2dVgR9 z*eQwZ=+p%R1muz3O7b|0hCd0E1#vzmWtaotqS01u6%&% zT`Hb6D6###vEsn!{!wj+q)f!uAd@KTq1E5+VQE<7AaA}r4gDL$A_(ZYX;7UMMDyVo zPL#VGhwxza!iZtznOqOmkic~m)Iltw^=JkP+Xl1TEE)wXd_2r7p$pa;XsQSWX<5UH z6%@#yLtgb=0~n9=IdG5?q;!GGknj7UP1P7#AeOxF8$G1*tGD$b)e~5{wHnU|it7ae?o~r8uto z_b^VIL}Y+U)1|!CNBMsul+3S|iZ6oV`_*@Qpp=9_L7l5&9>YcM;+nLuqaMP3P<~H! ztPB`$sknbwO(@C)W&>e1k4R1u3g-~Pv$$?Lyi7~QGB`{f2hVPd=P<_aU;tpV2plp- zPGNu+1(Y!cD_5?JeSMgs{lTuBfO&!9?Oo$yRE&?03;YK75MqRnA|L#Xi_$3Kt!K6q-5q%7x;i z6OTQ<;s@=uWjQcd+P-7wp5a|XhY#$Y92tG&lb<@c|Fu`Yedx&4=`+uso%{U!!nH4d z<*P4#?dvan!>%`+=5_bRsuxCa=bPVpIc-2PH4vrU_N+S zZX6?gF_2MGUy)7Mb7T<8h8sHdI0!pwOgjwfP85j?OyO*}Q5=ac+Fs(wI0&R?hu0n1 zWKKIq<()R$A)~fkcckYuW2xG(?xGi$6Zo34<+NBnx)CHHQY|M@N7Vcny-V6?lZ-l1 z?6hRv_Pi_=LfS!ShpyL=iEppluBSR(^Ve<9MJC5t6?0(_MMoPBtCODVuOh$QI2!oK zq7Md3%aev}w5`mHzgD946Bpbm^ zKlLPj=-BlY)zWICfr29mMk0fl4TDw3mu(jmt9|COVQ!ZnrVpU2t+R<)FQ~7AovLpk zBm;fO_@~2-2xLsGMUaThd)3*9H6awypWATiZTM#%u4e0){x3y10temdoxH-cu=n=p|}#; zP(ZC?^3ZHR@a=VP^h?Fsc7J;TtjD|+B>+9jg@BG)8SCdOB(DJ-LvBv!*z_ExYxh*zUSCbz@jItQwrfv-0d znt>OAQr#8XZ$K+vfV@IkvO(JM!>a_&>=BM?_&M`%fC}Q|GU;7 z={V7mQE_xiN;z|FW +int main() { + int x = 5; + if (x > 10) { + printf("*yes*\n"); + } else { + printf("*no*\n"); + } + return 0; +} diff --git a/emtests/test_if_else.out b/emtests/test_if_else.out new file mode 100644 index 000000000..208ac5ecc --- /dev/null +++ b/emtests/test_if_else.out @@ -0,0 +1 @@ +*no* \ No newline at end of file diff --git a/emtests/test_if_else.wasm b/emtests/test_if_else.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f4de5d1448914361da0bb5ef04ee2a372dd28929 GIT binary patch literal 45366 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�sT0d2CIK>TD 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

xB_R;+a^DWk}$66x2b@q4j763fls+ z+$|PPa&_IYXIYsz61_Zf<#BDoS+&?B%ak^=0UL+ z4f_9ilay;SITU-?@K5A4v|~>8!QDLhiCrDlnrrR~KhcMd@npFS8Zp!tc=U6n+%X zM&-3sY@-Hx8kH9Zj&~SubOe&|ewjPHisFPfm#8lLC%^q=*vmGK!)&(iDF368{L2|4MGGkqk7VCnXSQjM3x*!|Y1*xzu z$b)r3608d{U|rz8b%F2JB^;Oj-Hp>W5g8z9I+S;MDF07{(&go`%JZQ3J~_7sN@)lb z)VZ!^FM`sGm3P-itAO#2RrU?ZgrZ7dHV|gBh~y-p?-U}q7uQLLm+4rg z3Jz1p!LzI5C5-Xg835QU0tc;;Qy8E{0ac8_;wn|Kt`AeRKiXMRFfUNKxpQ2NsPXY} zgKVDQIMkK z?o8qy?FtdMJcdm$p2pFYD0kkIyOi1jcOM^W*aYL*9p9A{&T5x;jBa@hn_xWgZ!1E# zZsqgtzn*v@-rdvXp*e*R0^-<*P)Nwr9iL|sM>hq;Esq`wO+E7HV@Do;;^?u@)K5>J zdHU?7+TKrWfgOPH&+i$n_EqlPdf!7!Vboq((ES5r+qUo6J+yQ1!2Vqm!z1^6^8N?* zz4G$69y~aC{KQiyr$0A);qsTh{FUdw`n4Cn?lzj<;uZhuau6r!`ZvD$V&1NqAn>lZ zfnHcoJ)L+fnHM%ZbtY=LeyF`Tj$-w!mt;Yz!zk6U*N(l!3sZL?@YEbaT%D%tYTk=m zevpBbFRo4%s(=*|!8~DiN zdCO`#j*{eX(_?iy@WW-~cbkW!5SgThrf7Ah(@UWSN(RlQqcB9*Ng~oT1q(nYFYY2; z>bKCmC`)@2FJ=iSc`iy)?I*e!T?=zh7RH|2Sdy03n@tp)XfP5P)af`{_CnqEL9v-n zU$o5a@Wb{2bahQObvlR|%V4MUErw*E4+Z~BxD|ndi8Bc#qVQhw)>1#c<-@Eby89Yj%Evl=dRH9*kW zEHr||{C=w)c%-G_RtqBFLS>)`=s9_4lx7Bsn)-`AijAQlt4Mvu@S26VI!Pf(Ep|i{ zt)P@mMcJfeS|u~d0Zz4AmZpj7Z|;eEiOVF%vf45-1ZnlO~VXX1r^w;B5>LbrI%g^HCe>?sttv8vXrGV zOciehH-LCG*U98|99`i+)iv;She9*(A`sPGa>FLH;#tTml%*KNp2;G-3%s?4=QYtd zbOqz4pS8f{ENrST3fpZ^=ZzunHdJqhBaFi4m3RqL4?B^PfKvXZ>~)mkb?|?J6OO(j z?qlgkxT;jd{(Bee|6l$c+wtGE{@}Wo92`*x!wApAlUnPk%TsIWK$r!=r_|x8%ac== c5p;NJZE|W&BL +int main(void) { + const void *addrs[2] = {&&FOO, &&BAR}; + + // confuse the optimizer so it doesn't hardcode the jump and avoid generating + // an |indirectbr| instruction + int which = 0; + for (int x = 0; x < 1000; x++) which = (which + x * x) % 7; + which = (which % 2) + 1; + + goto *addrs[which]; + +FOO: + printf("bad\n"); + return 0; +BAR: + printf("good\n"); + const void *addr = &&FOO; + goto *addr; +} diff --git a/emtests/test_indirectbr.out b/emtests/test_indirectbr.out new file mode 100644 index 000000000..5364b418c --- /dev/null +++ b/emtests/test_indirectbr.out @@ -0,0 +1,2 @@ +good +bad \ No newline at end of file diff --git a/emtests/test_indirectbr.wasm b/emtests/test_indirectbr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ffd1236b7358071a5243c70bc1f9e5e97eb25615 GIT binary patch literal 45589 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 literal 0 HcmV?d00001 diff --git a/emtests/test_indirectbr_many.c b/emtests/test_indirectbr_many.c new file mode 100644 index 000000000..9ad3b4e4f --- /dev/null +++ b/emtests/test_indirectbr_many.c @@ -0,0 +1,51 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +/* Store, "declare" (but jump over) the current B_* label */ +#define IND_BLOCK(X) \ +do { \ + addrs[i] = &&B_##X; \ + i++; \ + goto JMP_##X; \ + B_##X: \ + printf(#X "\n"); \ + return 0; \ + JMP_##X: \ + ; \ +} while (0) + +/* Add an indirection block to enable token pasting */ +#define SINGLE(X) IND_BLOCK(X); + +#define P2 SINGLE(__COUNTER__) SINGLE(__COUNTER__) +#define P4 P2 P2 +#define P8 P4 P4 +#define P16 P8 P8 +#define P32 P16 P16 +#define P64 P32 P32 +#define P128 P64 P64 +#define P256 P128 P128 +#define P512 P256 P256 +#define P1024 P512 P512 + +int main(int argc, char *argv[]) +{ + const void *addrs[1024 + 512]; + int i = 0; + + /* + * Repeat as many times as you want, but remember to update + * the labels address array's size accordingly. + */ + P1024; + P512; + + /* jump back at the correct label */ + goto *addrs[(argc * argc) + 1000]; +} diff --git a/emtests/test_indirectbr_many.out b/emtests/test_indirectbr_many.out new file mode 100644 index 000000000..dd1172404 --- /dev/null +++ b/emtests/test_indirectbr_many.out @@ -0,0 +1 @@ +1001 diff --git a/emtests/test_indirectbr_many.wasm b/emtests/test_indirectbr_many.wasm new file mode 100644 index 0000000000000000000000000000000000000000..baa1e21e10dab08c858ec85ba9a8efb6a2999e1d GIT binary patch literal 191416 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 F{|5W%DV+cS literal 0 HcmV?d00001 diff --git a/emtests/test_inherit.c b/emtests/test_inherit.c new file mode 100644 index 000000000..51115546c --- /dev/null +++ b/emtests/test_inherit.c @@ -0,0 +1,29 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct Parent { + int x1, x2; +}; +struct Child : Parent { + int y; +}; +int main() { + Parent a; + a.x1 = 50; + a.x2 = 87; + Child b; + b.x1 = 78; + b.x2 = 550; + b.y = 101; + Child* c = (Child*)&a; + c->x1++; + c = &b; + c->y--; + printf("*%d,%d,%d,%d,%d,%d,%d*\n", a.x1, a.x2, b.x1, b.x2, b.y, c->x1, c->x2); + return 0; +} diff --git a/emtests/test_inherit.out b/emtests/test_inherit.out new file mode 100644 index 000000000..34570bd7a --- /dev/null +++ b/emtests/test_inherit.out @@ -0,0 +1 @@ +*51,87,78,550,100,78,550* \ No newline at end of file diff --git a/emtests/test_inlinejs.c b/emtests/test_inlinejs.c new file mode 100644 index 000000000..be22a2bd9 --- /dev/null +++ b/emtests/test_inlinejs.c @@ -0,0 +1,34 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +double get() { + double ret = 0; + __asm __volatile__("Math.abs(-12/3.3)" : "=r"(ret)); // write to a variable + asm("#comment1"); + asm volatile("#comment2"); + asm volatile( + "#comment3\n" + "#comment4\n"); + return ret; +} + +int main() { + asm("out('Inline JS is very cool')"); + printf("%.2f\n", get()); + + // Test that passing multiple input and output variables works. + int src1 = 1, src2 = 2, src3 = 3; + int dst1 = 0, dst2 = 0, dst3 = 0; + // TODO asm("out(%3); out(%4); out(%5); %0 = %3; %1 + // = %4; %2 = %5;" : "=r"(dst1),"=r"(dst2),"=r"(dst3): + // "r"(src1),"r"(src2),"r"(src3)); + // TODO printf("%d\n%d\n%d\n", dst1, dst2, dst3); + + return 0; +} diff --git a/emtests/test_inlinejs.out b/emtests/test_inlinejs.out new file mode 100644 index 000000000..1838ef2e9 --- /dev/null +++ b/emtests/test_inlinejs.out @@ -0,0 +1,2 @@ +Inline JS is very cool +3.64 diff --git a/emtests/test_inlinejs2.c b/emtests/test_inlinejs2.c new file mode 100644 index 000000000..b3b201bc9 --- /dev/null +++ b/emtests/test_inlinejs2.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int mix(int x, int y) { + int ret; + asm("Math.pow(2, %0+%1+1)" : "=r"(ret) : "r"(x), "r"(y)); // read and write + return ret; +} + +void mult() { + asm("var $_$1 = Math.abs(-100); $_$1 *= 2; out($_$1)"); // multiline + asm __volatile__("out('done')"); +} + +int main(int argc, char **argv) { + printf("%d\n", mix(argc, argc / 2)); + mult(); + return 0; +} diff --git a/emtests/test_inlinejs2.out b/emtests/test_inlinejs2.out new file mode 100644 index 000000000..68dd9b641 --- /dev/null +++ b/emtests/test_inlinejs2.out @@ -0,0 +1,3 @@ +4 +200 +done diff --git a/emtests/test_inlinejs3.c b/emtests/test_inlinejs3.c new file mode 100644 index 000000000..ad548f6ab --- /dev/null +++ b/emtests/test_inlinejs3.c @@ -0,0 +1,41 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +void loop_iter() { + EM_ASM(out('loop iter!')); +} + +int main(int argc, char **argv) { + EM_ASM(out('hello dere1')); + EM_ASM("out('hello dere2');"); + emscripten_debugger(); // does nothing in shells; check for validation error though + for (int i = 0; i < 3; i++) { + EM_ASM(out('hello dere3'); out('hello dere' + 4);); + } + EM_ASM_({ out('hello input ' + $0) }, 123); + EM_ASM_ARGS({ out('hello input ' + $0) }, 456); + int sum = 0; + for (int i = 0; i < argc * 3; i++) { + sum += EM_ASM_INT({ + out('i: ' + [ $0, ($1).toFixed(2) ]); + return $0 * 2; + }, + i, double(i) / 12); + } + EM_ASM_INT({ globalVar = $0 }, sum); // no outputs, just input + sum = 0; + sum = EM_ASM_INT(return globalVar); // no inputs, just output + printf("sum: %d\n", sum); + printf("|%.2f|\n", EM_ASM_DOUBLE({ + return $0; // return double properly + }, 1.2)); + for (int i = 0; i < argc*2; i++) loop_iter(); + return 0; +} diff --git a/emtests/test_inlinejs3.out b/emtests/test_inlinejs3.out new file mode 100644 index 000000000..e65cddda3 --- /dev/null +++ b/emtests/test_inlinejs3.out @@ -0,0 +1,17 @@ +hello dere1 +hello dere2 +hello dere3 +hello dere4 +hello dere3 +hello dere4 +hello dere3 +hello dere4 +hello input 123 +hello input 456 +i: 0,0.00 +i: 1,0.08 +i: 2,0.17 +sum: 6 +|1.20| +loop iter! +loop iter! diff --git a/emtests/test_intentional_fault.c b/emtests/test_intentional_fault.c new file mode 100644 index 000000000..ab84416e4 --- /dev/null +++ b/emtests/test_intentional_fault.c @@ -0,0 +1,12 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main () { + *(volatile char *)0 = 0; + return *(volatile char *)0; +} diff --git a/emtests/test_intentional_fault.wasm b/emtests/test_intentional_fault.wasm new file mode 100644 index 0000000000000000000000000000000000000000..661ceb762b67f3aadaec1e890e99e8a0b3aa5cea GIT binary patch literal 21921 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 Xh5XRJ!hhe(-&n7->UjTO-{JoQ9}_i3 literal 0 HcmV?d00001 diff --git a/emtests/test_intvars.c b/emtests/test_intvars.c new file mode 100644 index 000000000..715eff1be --- /dev/null +++ b/emtests/test_intvars.c @@ -0,0 +1,56 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int global = 20; +int *far; +int main() { + int x = 5; + int y = x + 17; + int z = (y - 1) / 2; // Should stay an integer after division! + y += 1; + int w = x * 3 + 4; + int k = w < 15 ? 99 : 101; + far = &k; + *far += global; + int i = k > 100; // Should be an int, not a bool! + int j = i << 6; + j >>= 1; + j = j ^ 5; + int h = 1; + h |= 0; + int p = h; + p &= 0; + printf("*%d,%d,%d,%d,%d,%d,%d,%d,%d*\n", x, y, z, w, k, i, j, h, p); + + long hash = -1; + size_t perturb; + int ii = 0; + for (perturb = hash;; perturb >>= 5) { + printf("%d:%d", ii, perturb); + ii++; + if (ii == 9) break; + printf(","); + } + printf("*\n"); + printf("*%.1d,%.2d*\n", 56, 9); + + // Fixed-point math on 64-bit ints. Tricky to support since we have no 64-bit + // shifts in JS + { + struct Fixed { + static int Mult(int a, int b) { + return ((long long)a * (long long)b) >> 16; + } + }; + printf("fixed:%d\n", Fixed::Mult(150000, 140000)); + } + + printf("*%ld*%p\n", (long)21, + &hash); // The %p should not enter an infinite loop! + return 0; +} diff --git a/emtests/test_intvars.out b/emtests/test_intvars.out new file mode 100644 index 000000000..9d1cada75 --- /dev/null +++ b/emtests/test_intvars.out @@ -0,0 +1,5 @@ +*5,23,10,19,121,1,37,1,0* +0:-1,1:134217727,2:4194303,3:131071,4:4095,5:127,6:3,7:0,8:0* +*56,09* +fixed:320434 +*21* \ No newline at end of file diff --git a/emtests/test_isdigit_l.c b/emtests/test_isdigit_l.c new file mode 100644 index 000000000..df9be72c3 --- /dev/null +++ b/emtests/test_isdigit_l.c @@ -0,0 +1,12 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() { + using namespace std; + use_facet >(cout.getloc()).put(cout, cout, '0', 3.14159265); +} diff --git a/emtests/test_isdigit_l.out b/emtests/test_isdigit_l.out new file mode 100644 index 000000000..2c0cac55e --- /dev/null +++ b/emtests/test_isdigit_l.out @@ -0,0 +1 @@ +3.14159 \ No newline at end of file diff --git a/emtests/test_isnan.c b/emtests/test_isnan.c new file mode 100644 index 000000000..3716c5a38 --- /dev/null +++ b/emtests/test_isnan.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int IsNaN(double x) { + int rc; /* The value return */ + volatile double y = x; + volatile double z = y; + rc = (y != z); + return rc; +} + +int main() { + double tests[] = {1.0, 3.333, 1.0 / 0.0, 0.0 / 0.0, -1.0 / 0.0, + -0, 0, -123123123, 12.0E200}; + for (int i = 0; i < sizeof(tests) / sizeof(double); i++) + printf("%d - %f - %d\n", i, tests[i], IsNaN(tests[i])); +} diff --git a/emtests/test_isnan.out b/emtests/test_isnan.out new file mode 100644 index 000000000..f517e69a6 --- /dev/null +++ b/emtests/test_isnan.out @@ -0,0 +1,9 @@ +0 - 1.000000 - 0 +1 - 3.333000 - 0 +2 - inf - 0 +3 - nan - 1 +4 - -inf - 0 +5 - 0.000000 - 0 +6 - 0.000000 - 0 +7 - -123123123.000000 - 0 +8 - 1199999999999999963679746655012433991369403930546028351778901011404162181226648906410356060856475022416330148991686588898185628812419341815672620492566878534452283092801479781734181759674005546258661376.000000 - 0 diff --git a/emtests/test_isnan.wasm b/emtests/test_isnan.wasm new file mode 100644 index 0000000000000000000000000000000000000000..54db1e33b9c696c353a780a45971971e1490b2e6 GIT binary patch literal 45792 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 WVp$;sqO)o +#include +#include + +int main() { + std::string mystring("1 2 3"); + std::istringstream is(mystring); + int one, two, three; + + is >> one >> two >> three; + + printf("%i %i %i", one, two, three); +} diff --git a/emtests/test_istream.out b/emtests/test_istream.out new file mode 100644 index 000000000..703ca85bc --- /dev/null +++ b/emtests/test_istream.out @@ -0,0 +1 @@ +1 2 3 \ No newline at end of file diff --git a/emtests/test_iswdigit.c b/emtests/test_iswdigit.c new file mode 100644 index 000000000..df1f12a1e --- /dev/null +++ b/emtests/test_iswdigit.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + using namespace std; + printf("%d ", isdigit('0')); + printf("%d ", iswdigit(L'0')); + return 0; +} diff --git a/emtests/test_iswdigit.out b/emtests/test_iswdigit.out new file mode 100644 index 000000000..92880af71 --- /dev/null +++ b/emtests/test_iswdigit.out @@ -0,0 +1 @@ +1 1 \ No newline at end of file diff --git a/emtests/test_libcextra.c b/emtests/test_libcextra.c new file mode 100644 index 000000000..2220993d3 --- /dev/null +++ b/emtests/test_libcextra.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + const wchar_t* wstr = L"Hello"; + + printf("wcslen: %d\n", wcslen(wstr)); + + return 0; +} diff --git a/emtests/test_libcextra.out b/emtests/test_libcextra.out new file mode 100644 index 000000000..d0191c327 --- /dev/null +++ b/emtests/test_libcextra.out @@ -0,0 +1 @@ +wcslen: 5 \ No newline at end of file diff --git a/emtests/test_libcextra.wasm b/emtests/test_libcextra.wasm new file mode 100644 index 0000000000000000000000000000000000000000..fa88805e2be7d02aa4225f7aa99ea41f9af51767 GIT binary patch literal 45444 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 +#include + +int main() { + char p1[16] = "/usr/lib", p1x[16] = "/usr/lib"; + printf("%s -> ", p1); + printf("%s : %s\n", dirname(p1x), basename(p1)); + + char p2[16] = "/usr", p2x[16] = "/usr"; + printf("%s -> ", p2); + printf("%s : %s\n", dirname(p2x), basename(p2)); + + char p3[16] = "/usr/", p3x[16] = "/usr/"; + printf("%s -> ", p3); + printf("%s : %s\n", dirname(p3x), basename(p3)); + + char p4[16] = "/usr/lib///", p4x[16] = "/usr/lib///"; + printf("%s -> ", p4); + printf("%s : %s\n", dirname(p4x), basename(p4)); + + char p5[16] = "/", p5x[16] = "/"; + printf("%s -> ", p5); + printf("%s : %s\n", dirname(p5x), basename(p5)); + + char p6[16] = "///", p6x[16] = "///"; + printf("%s -> ", p6); + printf("%s : %s\n", dirname(p6x), basename(p6)); + + char p7[16] = "/usr/../lib/..", p7x[16] = "/usr/../lib/.."; + printf("%s -> ", p7); + printf("%s : %s\n", dirname(p7x), basename(p7)); + + char p8[16] = "", p8x[16] = ""; + printf("(empty) -> %s : %s\n", dirname(p8x), basename(p8)); + + printf("(null) -> %s : %s\n", dirname(0), basename(0)); + + return 0; +} diff --git a/emtests/test_libgen.out b/emtests/test_libgen.out new file mode 100644 index 000000000..b29893a87 --- /dev/null +++ b/emtests/test_libgen.out @@ -0,0 +1,9 @@ +/usr/lib -> /usr : lib +/usr -> / : usr +/usr/ -> / : usr +/usr/lib/// -> /usr : lib +/ -> / : / +/// -> / : / +/usr/../lib/.. -> /usr/../lib : .. +(empty) -> . : . +(null) -> . : . diff --git a/emtests/test_libgen.wasm b/emtests/test_libgen.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d4ae39405b48bd02ec4a086987f61276cda91733 GIT binary patch literal 47593 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 +struct worker_args { + int value; + struct worker_args* next; +}; +int main() { + worker_args a; + worker_args b; + a.value = 60; + a.next = &b; + b.value = 900; + b.next = NULL; + worker_args* c = &a; + int total = 0; + while (c) { + total += c->value; + c = c->next; + } + + // Chunk of em + worker_args chunk[10]; + for (int i = 0; i < 9; i++) { + chunk[i].value = i * 10; + chunk[i].next = &chunk[i + 1]; + } + chunk[9].value = 90; + chunk[9].next = &chunk[0]; + + c = chunk; + do { + total += c->value; + c = c->next; + } while (c != chunk); + + printf("*%d,%p*\n", total, b.next); + // NULL *is* 0, in C/C++. No JS null! (null == 0 is false, etc.) + + return 0; +} diff --git a/emtests/test_linked_list.out b/emtests/test_linked_list.out new file mode 100644 index 000000000..f3b615b1d --- /dev/null +++ b/emtests/test_linked_list.out @@ -0,0 +1 @@ +*1410,0* \ No newline at end of file diff --git a/emtests/test_literal_negative_zero.c b/emtests/test_literal_negative_zero.c new file mode 100644 index 000000000..056a3135e --- /dev/null +++ b/emtests/test_literal_negative_zero.c @@ -0,0 +1,34 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +static float XXXf = -0.0f; +static double XXXd = -0.0; + +struct x { + float f; + double d; +}; + +static struct x xx[] = { + -0x0p+0, + -0x0p+0, +}; + +int main(int argc, char ** argv) { + float YYYf = -0.0f; + float YYYd = -0.0; + + printf("%.2f\n", XXXf); + printf("%.2f\n", XXXd); + printf("%.2f\n", YYYf); + printf("%.2f\n", YYYd); + printf("%.2f\n", xx->f); + printf("%.2f\n", xx->d); +} diff --git a/emtests/test_literal_negative_zero.out b/emtests/test_literal_negative_zero.out new file mode 100644 index 000000000..d1b863b85 --- /dev/null +++ b/emtests/test_literal_negative_zero.out @@ -0,0 +1,6 @@ +-0.00 +-0.00 +-0.00 +-0.00 +-0.00 +-0.00 diff --git a/emtests/test_literal_negative_zero.wasm b/emtests/test_literal_negative_zero.wasm new file mode 100644 index 0000000000000000000000000000000000000000..fd1de6b7a0fe58cca7ee2f21a7bcc107dcb3c97e GIT binary patch literal 45502 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 +#include +int main() { + printf("%lld\n%lld\n%lld\n%lld\n", llrint(0.1), llrint(0.6), llrint(1.25), + llrint(1099511627776.667)); + return 0; +} diff --git a/emtests/test_llrint.out b/emtests/test_llrint.out new file mode 100644 index 000000000..80e9c9084 --- /dev/null +++ b/emtests/test_llrint.out @@ -0,0 +1,4 @@ +0 +1 +1 +1099511627777 diff --git a/emtests/test_llrint.wasm b/emtests/test_llrint.wasm new file mode 100644 index 0000000000000000000000000000000000000000..019dbd2839afcee3280892f9804fa2226b57e727 GIT binary patch literal 45658 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 literal 0 HcmV?d00001 diff --git a/emtests/test_llvm_fabs.c b/emtests/test_llvm_fabs.c new file mode 100644 index 000000000..d5ebef76e --- /dev/null +++ b/emtests/test_llvm_fabs.c @@ -0,0 +1,37 @@ +/* + * Copyright 2015 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +float __attribute__((noinline)) negative10() +{ + return (emscripten_random() < -1) ? 0.f : -10.5f; +} + +float __attribute__((noinline)) positive42() +{ + return (emscripten_random() < -1) ? 0.f : 42.25f; +} + +double __attribute__((noinline)) negative_dbl_max() +{ + return (emscripten_random() < -1) ? 0.f : -DBL_MAX; +} + +int main() +{ + printf("%f\n", __builtin_fabsf(negative10())); + printf("%f\n", __builtin_fabsf(positive42())); + printf("%f\n", __builtin_fabsf((float)negative_dbl_max())); + + printf("%f\n", __builtin_fabs(negative10())); + printf("%f\n", __builtin_fabs(positive42())); + printf("%f\n", __builtin_fabs(negative_dbl_max())); +} diff --git a/emtests/test_llvm_fabs.out b/emtests/test_llvm_fabs.out new file mode 100644 index 000000000..3547f19cd --- /dev/null +++ b/emtests/test_llvm_fabs.out @@ -0,0 +1,6 @@ +10.500000 +42.250000 +inf +10.500000 +42.250000 +179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 diff --git a/emtests/test_llvm_fabs.wasm b/emtests/test_llvm_fabs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ef1cb7fed8efa702755c9c9c700377b200948972 GIT binary patch literal 45699 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 literal 0 HcmV?d00001 diff --git a/emtests/test_llvm_intrinsics.cpp b/emtests/test_llvm_intrinsics.cpp new file mode 100644 index 000000000..1349643ed --- /dev/null +++ b/emtests/test_llvm_intrinsics.cpp @@ -0,0 +1,198 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +extern "C" { +extern unsigned short llvm_bswap_i16(unsigned short x); +extern unsigned int llvm_bswap_i32(unsigned int x); +extern int32_t llvm_ctlz_i8(int8_t x, int izZeroUndef); +extern int32_t llvm_ctlz_i16(int16_t x, int izZeroUndef); +extern int32_t llvm_ctlz_i32(int32_t x, int izZeroUndef); +extern int64_t llvm_ctlz_i64(int64_t x, int izZeroUndef); +extern int32_t llvm_cttz_i32(int32_t x, int izZeroUndef); +extern int64_t llvm_cttz_i64(int64_t x, int izZeroUndef); +extern int32_t llvm_ctpop_i32(int32_t x); +extern int64_t llvm_ctpop_i64(int64_t x); +extern int llvm_expect_i32(int x, int y); +extern float llvm_powi_f32(float x, int32_t y); +extern double llvm_powi_f64(double x, int32_t y); +extern float llvm_trunc_f32(float x); +extern double llvm_trunc_f64(double x); +extern float llvm_ceil_f32(float x); +extern double llvm_ceil_f64(double x); +extern float llvm_floor_f32(float x); +extern double llvm_floor_f64(double x); +extern float llvm_cos_f32(float x); +extern double llvm_cos_f64(double x); +extern float llvm_sin_f32(float x); +extern double llvm_sin_f64(double x); +extern float llvm_exp2_f32(float x); +extern double llvm_exp2_f64(double x); +extern float llvm_log2_f32(float x); +extern double llvm_log2_f64(double x); +extern float llvm_log10_f32(float x); +extern double llvm_log10_f64(double x); + +extern float llvm_copysign_f32(float x, float y); +extern double llvm_copysign_f64(double x, double y); + +extern float llvm_round_f32(float x); +extern double llvm_round_f64(double x); +extern float llvm_minnum_f32(float x, float y); +extern double llvm_minnum_f64(double x, double y); +extern float llvm_maxnum_f32(float x, float y); +extern double llvm_maxnum_f64(double x, double y); +extern float llvm_nearbyint_f32(float x); +extern double llvm_nearbyint_f64(double x); +} + +int main(void) { + unsigned short x = 0xc8ef; + printf("%x,%x\n", x & 0xff, x >> 8); + x = llvm_bswap_i16(x); + printf("%x,%x\n", x & 0xff, x >> 8); + + unsigned int y = 0xc5de158a; + printf("%x,%x,%x,%x\n", y & 0xff, (y >> 8) & 0xff, (y >> 16) & 0xff, + (y >> 24) & 0xff); + y = llvm_bswap_i32(y); + printf("%x,%x,%x,%x\n", y & 0xff, (y >> 8) & 0xff, (y >> 16) & 0xff, + (y >> 24) & 0xff); + + printf("%d,%d\n", (int)llvm_ctlz_i64(((int64_t)1) << 40, 0), + llvm_ctlz_i32(1 << 10, 0)); + printf("%d,%d\n", (int)llvm_cttz_i64(((int64_t)1) << 40, 0), + llvm_cttz_i32(1 << 10, 0)); + printf("%d,%d\n", (int)llvm_ctpop_i64((0x3101ULL << 32) | 1), + llvm_ctpop_i32(0x3101)); + + printf("llvm_cttz_i32:\n"); + printf("(0, 0)=%d\n", llvm_cttz_i32(0, 0)); + printf("(1, 0)=%d\n", llvm_cttz_i32(1, 0)); + printf("(2, 0)=%d\n", llvm_cttz_i32(2, 0)); + printf("(0x0000FFFF, 0)=%d\n", llvm_cttz_i32(0x0000FFFF, 0)); + printf("(0x7FFF0000, 0)=%d\n", llvm_cttz_i32(0x7FFF0000, 0)); + printf("(0xFFFF0000, 0)=%d\n", llvm_cttz_i32(0xFFFF0000, 0)); + printf("(0x7FFFFFFF, 0)=%d\n", llvm_cttz_i32(0x7FFFFFFF, 0)); + printf("(0xFFFFFFFE, 0)=%d\n", llvm_cttz_i32(0xFFFFFFFE, 0)); + printf("(0xFFFFFFFF, 0)=%d\n", llvm_cttz_i32(0xFFFFFFFF, 0)); + printf("small ctlz: %d,%d\n", (int)llvm_ctlz_i8(2, 0), llvm_ctlz_i16(2, 0)); + + printf("llvm_ctpop_i32:\n"); + printf("%d\n", (int)llvm_ctpop_i32(-594093059)); // 22 + printf("%d\n", (int)llvm_ctpop_i32(0xdeadbeef)); // 24 + printf("%d\n", (int)llvm_ctpop_i32(0x00000000)); // 0 + printf("%d\n", (int)llvm_ctpop_i32(0xffffffff)); // 32 + printf("%d\n", (int)llvm_ctpop_i32(0x55555555)); // 16 + printf("%d\n", (int)llvm_ctpop_i32(0xa55a5aa5)); // 16 + printf("%d\n", (int)llvm_ctpop_i32(0xaaaaaaaa)); // 16 + printf("%d\n", (int)llvm_ctpop_i32(0x80000000)); // 1 + printf("%d\n", (int)llvm_ctpop_i32(0x00000001)); // 1 + printf("llvm_expect_i32:\n"); + printf("%d\n", llvm_expect_i32(x % 27, 3)); + + int64_t a = 1; + a = __builtin_bswap64(a); + printf("%lld\n", a); + + printf("%d\n", (int)llvm_powi_f32(5.0f, 3)); + printf("%d\n", (int)llvm_powi_f64(3.0, 5)); + printf("%d\n", (int)llvm_trunc_f32(18.0987f)); + printf("%d\n", (int)llvm_trunc_f64(-12.42)); + printf("%d\n", (int)llvm_floor_f32(27.665f)); + printf("%d\n", (int)llvm_floor_f64(-8.95)); + printf("%.1f\n", llvm_cos_f32(0.0f * 3.14/180)); + printf("%.1f\n", llvm_cos_f64(180.0 * 3.14/180)); + printf("%.1f\n", llvm_sin_f32(90.0f * 3.14/180)); + printf("%.1f\n", llvm_sin_f64(270.0 * 3.14/180)); + + printf("exp2_f32 %.1f\n", llvm_exp2_f32(3)); + printf("exp2_f64 %.1f\n", llvm_exp2_f64(4.5)); + printf("log2_f32 %.1f\n", llvm_log2_f32(16)); + printf("log2_f64 %.1f\n", llvm_log2_f64(20)); + printf("log10_f32 %.1f\n", llvm_log10_f32(1000)); + printf("log10_f64 %.1f\n", llvm_log10_f64(2000)); + + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(1.4f)); + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(1.5f)); + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(1.6f)); + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(-1.4f)); + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(-1.5f)); + printf("llvm_ceil_f32 %.1f\n", llvm_ceil_f32(-1.6f)); + + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(1.4)); + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(1.5)); + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(1.6)); + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(-1.4)); + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(-1.5)); + printf("llvm_ceil_f64 %.1f\n", llvm_ceil_f64(-1.6)); + + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(1.4f)); + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(1.5f)); + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(1.6f)); + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(-1.4f)); + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(-1.5f)); + printf("llvm_floor_f32 %.1f\n", llvm_floor_f32(-1.6f)); + + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(1.4)); + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(1.5)); + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(1.6)); + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(-1.4)); + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(-1.5)); + printf("llvm_floor_f64 %.1f\n", llvm_floor_f64(-1.6)); + + printf("llvm_round_f64 %.1f\n", llvm_round_f64(20.49)); + printf("llvm_round_f64 %.1f\n", llvm_round_f64(20.5)); + printf("llvm_round_f64 %.1f\n", llvm_round_f64(42)); + printf("llvm_round_f64 %.1f\n", llvm_round_f64(-20.49)); + printf("llvm_round_f64 %.1f\n", llvm_round_f64(-20.5)); + printf("llvm_round_f64 %.1f\n", llvm_round_f64(-20.51)); + + printf("llvm_round_f32 %.1f\n", llvm_round_f32(20.49)); + printf("llvm_round_f32 %.1f\n", llvm_round_f32(20.5)); + printf("llvm_round_f32 %.1f\n", llvm_round_f32(42)); + printf("llvm_round_f32 %.1f\n", llvm_round_f32(-20.49)); + printf("llvm_round_f32 %.1f\n", llvm_round_f32(-20.5)); + printf("llvm_round_f32 %.1f\n", llvm_round_f32(-20.51)); + + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(20.50)); + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(20.51)); + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(42)); + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(-20.49)); + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(-20.5)); + printf("llvm_nearbyint_f64 %.1f\n", llvm_nearbyint_f64(-20.51)); + + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(20.50)); + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(20.51)); + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(42)); + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(-20.49)); + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(-20.5)); + printf("llvm_nearbyint_f32 %.1f\n", llvm_nearbyint_f32(-20.51)); + + printf("llvm_minnum_f32 %.1f\n", llvm_minnum_f32(5.7, 10.2)); + printf("llvm_minnum_f32 %.1f\n", llvm_minnum_f32(8.5, 2.3)); + printf("llvm_minnum_f64 %.1f\n", llvm_minnum_f64(5.7, 10.2)); + printf("llvm_minnum_f64 %.1f\n", llvm_minnum_f64(8.5, 2.3)); + + printf("llvm_maxnum_f32 %.1f\n", llvm_maxnum_f32(5.7, 10.2)); + printf("llvm_maxnum_f32 %.1f\n", llvm_maxnum_f32(8.5, 2.3)); + printf("llvm_maxnum_f64 %.1f\n", llvm_maxnum_f64(5.7, 10.2)); + printf("llvm_maxnum_f64 %.1f\n", llvm_maxnum_f64(8.5, 2.3)); + + printf("llvm_copysign_f32 %.1f\n", llvm_copysign_f32(-1.2, 3.4)); + printf("llvm_copysign_f32 %.1f\n", llvm_copysign_f32(5.6, -7.8)); + printf("llvm_copysign_f32 %.1f\n", llvm_copysign_f32(-1.3, -2.4)); + printf("llvm_copysign_f32 %.1f\n", llvm_copysign_f32(5.7, 6.8)); + printf("llvm_copysign_f64 %.1f\n", llvm_copysign_f64(-1.2, 3.4)); + printf("llvm_copysign_f64 %.1f\n", llvm_copysign_f64(5.6, -7.8)); + printf("llvm_copysign_f64 %.1f\n", llvm_copysign_f64(-1.3, -2.4)); + printf("llvm_copysign_f64 %.1f\n", llvm_copysign_f64(5.7, 6.8)); + + printf("ok.\n"); + + return 0; +} diff --git a/emtests/test_llvm_intrinsics.out b/emtests/test_llvm_intrinsics.out new file mode 100644 index 000000000..316cd68db --- /dev/null +++ b/emtests/test_llvm_intrinsics.out @@ -0,0 +1,112 @@ +ef,c8 +c8,ef +8a,15,de,c5 +c5,de,15,8a +23,21 +40,10 +5,4 +llvm_cttz_i32: +(0, 0)=32 +(1, 0)=0 +(2, 0)=1 +(0x0000FFFF, 0)=0 +(0x7FFF0000, 0)=16 +(0xFFFF0000, 0)=16 +(0x7FFFFFFF, 0)=0 +(0xFFFFFFFE, 0)=1 +(0xFFFFFFFF, 0)=0 +small ctlz: 6,14 +llvm_ctpop_i32: +22 +24 +0 +32 +16 +16 +16 +1 +1 +llvm_expect_i32: +13 +72057594037927936 +125 +243 +18 +-12 +27 +-9 +1.0 +-1.0 +1.0 +-1.0 +exp2_f32 8.0 +exp2_f64 22.6 +log2_f32 4.0 +log2_f64 4.3 +log10_f32 3.0 +log10_f64 3.3 +llvm_ceil_f32 2.0 +llvm_ceil_f32 2.0 +llvm_ceil_f32 2.0 +llvm_ceil_f32 -1.0 +llvm_ceil_f32 -1.0 +llvm_ceil_f32 -1.0 +llvm_ceil_f64 2.0 +llvm_ceil_f64 2.0 +llvm_ceil_f64 2.0 +llvm_ceil_f64 -1.0 +llvm_ceil_f64 -1.0 +llvm_ceil_f64 -1.0 +llvm_floor_f32 1.0 +llvm_floor_f32 1.0 +llvm_floor_f32 1.0 +llvm_floor_f32 -2.0 +llvm_floor_f32 -2.0 +llvm_floor_f32 -2.0 +llvm_floor_f64 1.0 +llvm_floor_f64 1.0 +llvm_floor_f64 1.0 +llvm_floor_f64 -2.0 +llvm_floor_f64 -2.0 +llvm_floor_f64 -2.0 +llvm_round_f64 20.0 +llvm_round_f64 21.0 +llvm_round_f64 42.0 +llvm_round_f64 -20.0 +llvm_round_f64 -21.0 +llvm_round_f64 -21.0 +llvm_round_f32 20.0 +llvm_round_f32 21.0 +llvm_round_f32 42.0 +llvm_round_f32 -20.0 +llvm_round_f32 -21.0 +llvm_round_f32 -21.0 +llvm_nearbyint_f64 20.0 +llvm_nearbyint_f64 21.0 +llvm_nearbyint_f64 42.0 +llvm_nearbyint_f64 -20.0 +llvm_nearbyint_f64 -20.0 +llvm_nearbyint_f64 -21.0 +llvm_nearbyint_f32 20.0 +llvm_nearbyint_f32 21.0 +llvm_nearbyint_f32 42.0 +llvm_nearbyint_f32 -20.0 +llvm_nearbyint_f32 -20.0 +llvm_nearbyint_f32 -21.0 +llvm_minnum_f32 5.7 +llvm_minnum_f32 2.3 +llvm_minnum_f64 5.7 +llvm_minnum_f64 2.3 +llvm_maxnum_f32 10.2 +llvm_maxnum_f32 8.5 +llvm_maxnum_f64 10.2 +llvm_maxnum_f64 8.5 +llvm_copysign_f32 1.2 +llvm_copysign_f32 -5.6 +llvm_copysign_f32 -1.3 +llvm_copysign_f32 5.7 +llvm_copysign_f64 1.2 +llvm_copysign_f64 -5.6 +llvm_copysign_f64 -1.3 +llvm_copysign_f64 5.7 +ok. diff --git a/emtests/test_llvm_intrinsics.wasm b/emtests/test_llvm_intrinsics.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6f170c1aeef25986650006120b2a478b2fd58b4e GIT binary patch literal 52133 zcma(42b|PJ^8b&|`#tlX8JLA#KoApD11buNIqNZ~tH7D{?)+W=R8$s3cUd{T^JGy} zOo)n#ih>bTR7{9sz>FDlR?Jy3W90XI)q7@lz0c?K`2Vrpsp+n+uCA_5)zv+jQ4@}c zGMP;Duhm9oCrz3ZO&S^LPkh{Q(QzX){xvf)P7{ugjvpB*KK;($%*ae;WI{ei5P{6d z?D763K3;Uvw9Lr-q~j_`5I7$4lOU5zqvA93>z582cjQ5%#%;XEsOH17M;-akOq?A( zeqyK5DWwGah(qv-Ms&i&7;P(k6eA!K}R+ZaQ=v^mC$B8h`Y-arH-!KX}BLF=UTgKjMhdM;v_Au_F!|b66&mmNIVK#3M!=eB^`?hi<-Ertsf! zTWyiXbsph(qmMaivo^%vMOHCuQ_OKk9=7QwZK%JGt>RV)fcrnGrjb?5PASz1W5&19 zY#&#}tCZ8+q$X*t(eGocxFzYq=p&BWcXab6sb*C04w~@KQAdp!175Mx5{M1;8FA34 z38S-9C#B8&U& zU*35*h?Vah{QHPK%6}mupQ>_p&ry43kE?zw4jq5!nDJwpk0nZ6YFd|r|{nij(l9S3&Vu}EBzZgZ8~DqG2@Ru!qsH||B9mR52!|s8DGWv z(|<*Q_2+IWt?{ErH63*9nDNa{?!f;U3+`VltTr8a^!P&@?{B}40q5_@h$BXg8K3D> z;By?3$n*vBUYq%cLku065y^-N2Q`h&jO=*Gu?$(`#%cH&Rnzu`uLpG-JwYllX2Rh< zaP4>0sDnpmtVsU-4{sX%&rIk@`oUw%UdlQ({$*eC9N9EF)4PLz-EY*y(V1Qy>Y_~F zsMPV`bq_gY!20VQa>yYaPh1fX?H@&x`gROa-;S1P=-07t$8v2$`KU%geM@`h23w{s zSF)(Klw|sLtS#j;mg(2A)X_gI>Q^dt&GfA)XX=I7uZEaTrPBQVxyPePh2#7GXOH8c z{TRf{a|%w~Y4SxxAB)P<3k~6_NYGTED;;V9y27EA`G#=0Lo0wTbLbt-@(1{LB2Rgx_sX&t*Y5{6-Xl1S;Op`Bj9C#!v!n@I84A&fI|f=0T?Y{5x^k=762S9U>?9h0_FgW5-<~B zq=4xFBLqwZ_=kWNfWHe^88?K#30MK}R{0L%7qS6+m}5^byb^ zhn54~?$FCX3msYpbelsY2b%BD zRG{k|Y5}^|p_Q42aE(JNfaW>$5zt(RmIGbw(91xVIpgx`xoCh+;$7qnrtu@|R~%3Xw%2SSYVrm2C_g*aqcQQDfMG$UoR0 z(#U$NFBgvvf3!Vpi>=~}?NLVc?v9M`N4}Sru48-D?X@OZVvFnc4q3}O)tu#00*NI~ zH4jR`3Tb4~ilW-Vnk+A>O``g6WP}bCs!dQWpLX5K8;%P#Ruei}M<-JP?qr?H#fhP_ zb@r%QqUx-!TsJXvu`V9fm8fpkt=w~BSj|@RsP2XwN-FHeNTn@}j8I#NKq~h{M(A3J zsA&lIMn>o^ex6>3T&iYG=wUtT_6e)o>dsbA>*>_jAZ1NkQ*5neYkAb#M6F}%h^=1M z%cFV|WoBZlkM;4WzIK4Ep)wB;Q%fQvtet*`r~4u!^iIFS(*2PU`c_yv0FH*V=${=M zo`~#;Xm03NZYdrX*0l!fr(6x9`aooab(QP&b*!N+*T2G(kv&PS^~iO2Sl^Dd^_1&a z<$5qO!upk5$12xkikd#B=HKC|$etow|MKK_GGoGqh7$Hy#;Gpahaw|vSjjn6f-Aqf zj-Bs7=I}7UP~-th{$?FOB}a#cfrg?FRP1l-04g>6Glx4jD zm2&*yVKbxCZl>7xdI2hS(&1rqqf>9L*p2mC^sV1c6V9@sY>~ zTPepGy@^wf*}ZLn1Haz>+I#;Q6Sg+Sk*$TYpf{jUzWjCJccg4%j5XU-Qf~GX1iq~? z7HwOJy~SfEjS1TsW7T$**jqjJg==59HW?GPH^#H=D=D{m%2l_0eC@x+gdL1AZ-+|C zLQf&f3#9C5jEg%~Qf~JYY1%Pk!cNB6xl<)&k*7ps!eC=;9bAdM!((slZFdTw=a;RV z_WU6>q`cOVoVb< z*zSq14ZGQ1wp#^vFX6sqCyd->jm-wvt+6nC8`-ze+uioI-77eIJI)nH?bz|9{!8lC z4EM%%FJy+=J~p(1vX40XY@avE)53R=eFuSIwyzDVr0y#Mhw9%4VacqpB(^2wA8z~E z@CwF$!bn-pWa?@chVLW$K3W{^i*0|qFWwdbJki_s7gq0+KHXcai8{mJgH zrv6E(R;OU zC=RacvM{WSY$Y@vitRvq$g!U7Z3nhtL8EJUIJW<14}0p{z3uVDV})0 z*=QxE3bT^LlVUs6PO2szs>F*f)W07|JUO<*?Br_VVeQD?dvQ1=w!`g|YU1JT$dWiU zwlOxfnmDE%SrSi;ZLFPIO&m+2OM6;)C9+qj&1tcXv(r5NMYC~Am$avaS0j6s^wVQI z!cMQIAE9(fds=ucve!sIBewB&Mm2qWh5o(M!t0T}PWqX#9cgD)(~qpsC;g4c-XMKi zY)9F&YWh(X`lP=Z*_))F6c@6j<$2EiAT31d+)4pZfq0n+-l;)c4SGM5!*j)Mm6!D?Z}dNUTnwMdDX;Y zl*o8=#ZmvE_xwGaAKSm|d{1o&_ODjDEuMNoZ2z_ks;U2OP0j48yfb4v&Sq9qk84MH z38@#x_8+^jn);vCye(TO^`h90w~MN&$1C-L@B07ktP?!-;@BqH#nseFO8umC+#Kim zZwtd)k-bGb%!;igvRRIHUI1=a#^5^emPfW6yh~!69N8sRyvc2Nst0&)NA@;&m&V41 z?$RpW3657OcZu-ciR>NlX2*77WV5SyC$`a3-N1V{vUkCo6Wf%?=2Y>fI9`u$PaNU3 z1n<4b-UIKl*w|)XR>eE1J-xwoe+`$%c5-Bwd-}BjxSh0=eno7jM0Q0r{gk%+s^4G3 zm9eqOy|S8qs;5_UUr)0PxwsRx9!85!b zfLj$c6RH_v&+u7fpON9l*k(j_V>QDJ&%hYRKT7ZgflByuSPOWBMKp+K)?Sh82;m0PXhJE{W{+D%vHEcIcs3i`p8XeHGbPpe>4R zc4UjHXtOJ53q|b}3jI2=uR*&bwmFgAQAL|0v|Tp$f8X3&0ZN0f4tK_OS!8!Q-V=R* zg_qWmmP|ABUUGF<9NXoQEw18S?s#d7e_N%O1@Erdu3&Ln#k-;%UMsz|DEIEzu4MCF z#k*2?<@fs7RRY-F_v={B)Rx{EA1y7)2D!9|ov^N*nXpb)!lgxQG@0^u(a`XC6c1*# zEmLE;G*s2%6N5z7uE~~A7{e*c_VzE zObpK#?D;|&JHp@X?^rJ}IUT+$bcw^JFu^92qX}5djtAF`bEih-s2Q7J`Q-t0igMiS zrpMWCpkSkRZ6xY!TW<51CE6G(#<#gNWqrDa$_*|@jDpSS7+#(atVaV_ zt+J#}*c+GGKeM1B%vO|kgHH%3k-wa6*79IlT+TLWhNI9N##4li_Q%48lWEwL=)pI} zN~2*H$6|=J?!$38Y6{ON#-4HPB~iekQcGTIi;oK}Ab}p=4nzdhJyA&Z`tHf(bye-Rz-A2@stS!lw zCpCn}v-WtlTr)Aen6($P<+{f3wqopU8t${KeU>fLTt8&(hitjn7*5C;;ccj&nInxa z6T^i$yD(RdCx$C?c4e-dYYaE$jN}`0P2oNBg>w_qfF_1Z6XVOJ=*BgPU6V*RZcU^c{FQFp zo7laHj8~5(_E;jpzmV7q9`tUzR4< zIxpRr>Bgs-`S3zPS*0OY}W z-UtsmS@=7J>b#n_JMz+x5AybEUPxc%jqpJg=?0A7zvPW@hey4RJ)u6FQm|7BXhr!! zSDteUXpTDGB?Y^L9@QM?6(k-0N;?4Cknc(h=T7DQ=z!Il@$Hji%# zpB7Z}PYbFb*^ua-d}3eQGyEl~#C%_{?+cRgqmuUeD``c70J?-%zw0ig0~O5;`QP z`t`-Jn3_rcMBhO zw(rBF(_?ImG`fKuQbQBA^24lQBDV8!(&QuT27b~59eu(gk~@e{GVAEmTLYn1jj zvCC*`!d8EjHBH2J-)u)?%P%kA$R>JQ{L}s^(H&#QsIiZ=WA*J{_Ad>m|7P7S%{k7F z33>i6*m0ql9n2VlEe;aaoY5nRVcqUMLGaR{<7sXL$rGHA11D za~^7YcAA5Fv3j|{5m=SX^m?({xG+sdBCIGb@?=&F7ke^mf>|VE!rq}Kn-CfLffClI z`ZEPzAlUkaKDK^X*G1b$@?(u~i4(%~c&QU&o}Z&~`bhGZu~7G9X6ws6nd$fnk|o~D zqtKV+upVVxD)n z81V_`R${^q2zQ#7eWhe{Wu!@=P+r^5^R9AYS4Yw_{;Jc@WpVDYSV9ZfKMRN>RRb0JcnW)MTk5JRlLQm^V1} z8(Fb>%Pn9Ej3i5pl?$XbH=rgrMI}yk4s2K6%`7h^xGdG#K}vB8%SUAuM+K3-m1Uxn zUdZ~+D||aEIIr#wN?*i6O)1JiIwbC3O_tUP{Sym!viNcmi&W1MBdt-^Ou{b^#ctUWhjmINjV9~3=1j(z z;_F##k|+2IWJ=5+G=+64L+$qbzZ0ANFu1&9c%+z+sdv4MjO%D(JUK3}fjx1oY=Y0dyeHo58gwszPBTD$W(ynJ5<{%VqhFM~h}o1j9g1Fi*RYinr0Sa-G; zgki2%x%Wib;MQi?!3^h;!0I-`)3LCf$SXi`$MaDo&NGoxK zbe^MPJL{!(c(8~C4c0d0>}3$5+oU478ive4NMaKNah?S6V3E_oO@rZh#JE(lM~dYg z<@tfc>t#*bNuSuw053){ZY|oa8qAS=Glnu2MzfGRmN1NFm%tXbF2cLCHrA}!&e9yV zv|>fwpeA1;%WSe-reus$jWR=B9&0^?z3B?N^h6nsu8Os$!a_vk)vTGY1Pcz6LBTGS?x*i88s&XPd;_5@X20rqU#13CY)!h;d^9JEn;;UfcwF zql^+H-wYPk29j?E3v1hjn^TC$-MsvrI!mp_CdHaOHL0J{L}ZbPeTls3nG?uoMt=T*Ch z-E4Rm<~ln}I(x4Uel+GRi8;ZM&fXVuI^#Nff6PgY?KV`$Ef3Hs_?FmirEp&{{W>hM zolD_?q7BoO_h8JKizq!5bF3ov9*OM{HQO-h?9$kldh(;OJsO9{A@z_xO7^%TKNj0# zLVln~W$r76dg&QocGj2OKnlZB1+yWd{X}d}R8=CWY)_wzjiBE4RBZM3R6I019oy4F z8$xtLSQZ;$$nfxNY|nbMrq$7mdVtH)KJ^5|8@#J@6dxvBivaA)~+c6#r%j2*$J^M|;ZwR(6II!J1 zZ0U`&nPm1Z{lE#m7u$PI=>6E$W;vdBJfhT_y+ee=Kacm!xtQFr!F$cXL#9=GS zcu(-Vf^Bok*eY!4E50q$72jr|oKSIQu$Np zl(lpytC4Ri+D+-Y?=wc=6|t?Lmrn>^X?U=&=yl)3TK9e9%zP75s;~aw2kCqp+qYiE zcd-#@#qVRWid=udIw5`j7CHUE(D(m1>uW1@Wo#>3tKnv z1^gV_&n|*rV*ADIAZ4Zh78~Jb&pek8NhPEMBQ05L$*Rvx&f4Uxs(b?0i)@<= z%fdP_YlO*J$ptJ3P01R;S$1J-*sa%k@T4q_aFPhryT+fKwUe`25uTEzMEd)wStFd{ zw1$wztd+IXvPwEVYo|LiXJqY+tX6qvD#p$fvM(&4Gp$1BtgI2HIh}gpPS4V}MCR&MAiuPV!vJnfEj!#x6nJ!%i4M3bq1w1hx4;C2k=)KazU20og_1pG!UA@ zg;|@KwF|KlU6i$pTv!)p?PBHk_@*#Rd2E)KOn#JgKf53sg6$XnlmIE_lB`|gm7JZm z*-E=48~#+{%z2r&6aBLx%*h%dji65Cx-4sipc)VX%H>%jT%e+A7{YKcni#Ig+7-^$ zm07zIw#u2%J0U4uj$M_ts}$K=k>L4q?CPvtjdhF3DQk1xlr>L8Y##N!E^F6;rsdfD ztj%|{>$7$}ZPgfV$QofD4RWK<_|hB}WNiT%v>dxBYd3j@o3nN^0&NVpWDU$)$Z%_x z<=Cy5-4+U;sOE5c)^5*gIkqTk#LAQIj;!6`t#YRWEXNkpYPOi>yDMvVk<=LO&KluP zXx@{xd$OT-x*F^44S28X10%qFStGau5VE6R+@H1kUEvi0{%rM)20fI3~{(X0{ft*D>c>ana5+BfGDStEFi zTJK(0h$pl5q_g!@)}Hd1r?d97n~;}*OzrE#GwNQ?h><6=VU5IkYYq7Cdx9 z=rA;Vk+m29^Yk+kYabx`1*Yofj%?MvI_UdD(+8NBmCH& z@XuNM+3Ea}wO?GezhW?VetuJo{U+>^3Zns5Wo=bE@s!GU`Iy;~GeU>qVRFtU=cuc` zjSVN}NVgMns_RlmoRTvFVmK*BjGd$;5LEkGoVNs5?R`J6QG~JT{z{vvYHH9%JhHIU^vo3vzZrP6mri`>K4jvB+MOvx~ec7w7C^ zM_TUjvvNi_AIg{Hj4&&=N4V6Xi*m!m?40psHirtg740@HY1)%6l|OSDb8|s>U^ra1HEUn=^t?uglqWP-H|bflX`9&)Iy(zCLHyd$Bjx?_j42n7E2VB^cp_)c?UOls+{<|?XTVRv)zdj6 z_30c#ZqA-j&L?u^NsP5Qdsg2b&4q0e{rw{ecmtm;DX=xWWOJYrcawHZ027?KxWn)*U$`+)Ui!oGr|yGr?lc9`DK-K}zyav7GA7-5fF%?QWv( zaR~LhS3p&8OLE5dB~ZPEa|mfps)zUG>^|q@{+!+K4NU&KQMw0m26P|o`C!iY@*qmL zsA!8)rQ4<^p>-cBB7lc;Mp%G|AIaGx66!-m#EAr2#hHMCG>QLjX;#EJH5I3AH#R(% zvu(?hb_>tvY`ZG+FXW8yJj~x+H2UCn!^4X?BizmI`>vwhRg`9utv@A7mIbzq8I%pdOrR~_!ihO8aJ}3L<)R@GJ=pEvQQAy_~(La?ckx?^78*KFk>q;`}IQA3E@H&VWCb zdKF0{c4+t{XM{Tt<~>Cs!l%j=KFb-vX9(nT4SW4D=j9CW3v}YkoPCKx@-?wtOX1<7 z-Ge=MLbz8n)eb9!pqQJB27Gg|DSVwX!o5Iu7VS=NvWKN96jjj_x|b?;wrfMG*Wcuf z@JA-k9GY(5`T+f&4|Ct;_-fz5&G$L`UXA`<1))?K=6=Z856GcDtkf{KQYcG&zWOm| zKYGGXIlTFQLgWGUI+axBq+fI8=LguY z&eyU5>E!d?0Cpgng_c)=&jtW1=A$a`?EqlKtf&IN3;1k#1!imnteELlVAe*!ikVpjuG|P%F>|WG{EdJWGp`EVx)HEq z7F2<|HUd`6qAKv>^eljp1TW zMxDy6#AZQ7T>QWUcZs<8fze}jVuVYQ#;~|(i|P6>sS#%m$EbcoMEm>`HHes}j4)%eq>Pb0rd=o7h}WnwQwsmByJz<6J8Wb}iDlj#JeHXl$78 zt#e(aK%4JPKqRemePY*n6Wov(;d)Pkz~vCQF|ivxZ2{|!-!;!o-aI!6xhAJQPCEMC zteW4P3=Oy70*1 zqmsv?Nb+&jQZ;&l^aMzH6iOa$>-2re5K%Hgm5kMKygbF~Y0W7Jd$~zn(CCy)MD0 z`?5C@BfLT>Zzk%;ZwgsG`(@8XBr5Y3yLBh{Hrw39-cnLh*~Gq+7(t}pP3&C}P93w} z!^WEueqWnTd*2DOu}ujR3E>Z_gg;D-@PU^}ecp$kk1!YulEz^XdCnR5II)kt?LJBD z6TE~P!)J+o2Ce$=d19Zdsfp&u;EOb!<3a~y+FPNjuMi5fXqm5YlX6;Li+?H7H;H}Y zG2bRe_?k+6m)Liz6o-!ZJgrP@Wg>g;k5x~-pAsYdNRR(nQTB7nuQH3`FNqPp^?H5l zrT&^2;p8I!IbRkal=ri(mhDT4!+cctCO75sN?HPHljZMvmjY|yEf=?A}1Gu%g zaTw^`b_1Dv&&u0bPH1}GraPgt^LDoAZy@v8Ie9zBlh4iDxt=^DZ!<{Na`oIiSJ}?V zhm9y>y5O?}+lG{}Q5fh}|AFa-dV{c|SDv<+lD8>N@ua++l$Rt=&KqH}`#4R`tNl*F zQB0{Q2=QS@R(z|xYn_+3^Sp4^8ti@N=k0u_c0pdpS^Skf_rkng=&={&jUWMEECFAv zdXcDWTDGHvxu9qZw8%scQG^Tf91`YjmOH;)lCK<)Uz#_T~lp*Qw9T+dOZ8Yw~tY9+t^L`n7o@%yUtZ4vp*bMo<+?WYu6XKX3D$#`Sr--f7&J zw;L;R+);ck$Q$8$rve64Zps_MsYurL1^xEsJRd%y+>*DO^8tHqK6FvT0=|-jE+uno z(ye*B)yumrZ@1;k$8!{^7+dJ{yJ&d0Jzp7j7Uhj_yQeTbbiq|6Z-g#tqAoJvFXoFI z@bAjoU24F^xCb_eyYn*O^H&XikK7a0qwXaQgyygWr^LK1q0#Qk+kIZ?`|-?DevfYo z54cO?170%uQM-NYo_y$T`-B6STRi5WyglSKc{pzmEA63tIH1H8)O4upF7^G47`SXB~~NApIwM@4DC>mmdGV|jbb*?L@>`8bTxb$cKI?bHgx!xMRXLXo{g z59I;ZjrdRI?MZy!CWfc-_7prehGimT%c%1+d3y#l8S$UZ+p~`L92$udG=}H%Mp%X? z%L_u|OLKTJZ!eNTM*NrZ_L66KnYtj<#_$SGnt6ML46o%e;=h(38(tSaQO)6vyuFc^ z5&zA+5&I@SnQ!IoEpM6S4q(K8o0hY;^Ap26d3%SX#_(?52+N`QUf$lzhaRaBzlS&C zhprQJ>W}h9=uwd$O8#-)K6Xw1ByXP}G^G&XM*P%?lsoCZG z1zM|S_xPsprT5`4z1h9QN-^mCio6j%tmvW|?(4h}+PCdDc_Vm?n&m^+j&Jk!t@HO? z-oEpg@A2`@Yqt6!Z-g%OVWpaRr5O1(AG#&hL)QEssiv&?KjpFJ|Ad5p&fAX+81e}D znepORN$^+X{afCC%ZIMYyP6N)UCUVWPbzR(8*BbasaNaC1v@!)LoL{3_hp@0u&Ma6 zYSr9Ton{r|tovBC6s*NjPbk<41u=SJ!3Z!qrC?L!|2nx4y2};w`1SPOWqKG*~n^O#}=6qBQyJgO$=LW!Y3r5i5en!D& z$a&Z>tgy8x*m=&{`HpZtntVaQ2tu7%u$hvm?3TW`zp!8zI`%~cyQmOyKJ8slDDT7L z9|gPEowa5aY*ry$TChtC+MUfV*lcf}Is7GVY`CmomwD3V1)Eby+yC-HDO@26b_E<< zsp2)@UsW*Rt1xq3U9hXcC7#Iz&0E;0F85PA>AcjS4ek>^9we=5UwxS^12Duj(Y;mEymfHB50&TZJ zoY^{siw%6GiPM<>)Aq7*V=^lHwS{nZ!5jW=r+inz?xLDXA_7&pw_t<|5bBbGEs^%$ zr7Q`J>FtSVf5_E``wDiS>&e_gxL;A>fr0@%fIJ=)x0-?;D%e8>O?nS2#vb-!9(2Jx z;*ChvmKKcgNTss&U=@ey?y&-2eZG6VV2_KH$H?0po^bzl{%XE^QcmeA>?zVfXbw*o z?5To1jdm?7*fMX`XA1U=@_T$!c-9@+pY@{1Pp$X1Ckvso?H%@K592Y<73?{$#ES)c zQEAT=!u}<$Q2*d&#?I<`FBOcCMx^`Om+7qq>nw2+0m>@{BRr|1aA{C|nDAaL*sIRh zYXy4^zL@T6*@o$b3(a@0Fx)BLi(}>;$t0X5B?iXZ)H%4??;o5SfvJG~f6%G}92Y)SLnxkX+uk;h@t zB{!pJGrat>iguRYemJja=TWBSIo9#b;Y?3})oDeW=BU$)Hr-i0o5O*W)pNLxAx6)F zQB8Dbs$jl!O8Y#ew2B0=onJIUr#2;@iOXU;6#CPJMI)qAV@+>0>SPxc?IP#k;-Xz# zRPUHoG(t+7)Yd{kzNBb`i`}0&ZJSGrMyP3PzS%{aO`VC5ttQ>-Usf~%r#V*??Fv;% z-^PY3iyE1)bob%(Nbjnm5wI*=UDW7(wHE{$gZA7aU)8$vibk00Np5twMwygyZP5tV zcnUG_dtK44``r{P?(6vhG*pIq6!9xgaA!9|+zudi5v@Vi6*hMilKf^Qi5&|X!J<&t* z7Pf_oVv_4M7N17Q{GovdCVDxw18f*>-9y7j8|g^t1){OsXc<<|n^O}ZI>mjBrs=|) zSeh{53?~K6IFg1YR0ufJFL`0xmt=ACJD*#tu zK6y|N(=f6|Hkq#B4)QW|ydZ~mWpzh)djWaAq$qnS5<|bQ2^LIuO?MA>?iL8+4)eBA_uqg_ub?F138Qf)7{S1 zmK9HP(iQDjmKE(T=02&cuC4jU5zh_1A2H%$eiHnFV4f4|XtkA*rK5&g9MV5^La9GG zgg)23U--~H(9|Pc<+w+>%E8V2E0SgYSP?N^d>Mt#l<}G1PX$|vGCGG&zHaE0j^Z7| z>IoI2z1;m?1mBJf=Xo0J9bKm9Jq5|{O_%6<^1~-JjR~tWlDzH?`tAZR5w%k?(Pa*C zmw3^|A09i1yy96V;1>U#*Y110h9WuR|Net&N6PA=zq;z={>!c)-=ZKZ^Sekgy~@Oio+O0bf=8n6!TcH}_|up4@>4r5 zCd;G#ziKDb2t1-gC&|KuSn?$!T&WLEEA8{WN zG*g=eJl&_zd+~_BKun^H>8Qf(*$bTqoYpUPzinL8<*8mTH}y-92&g2mM!8hZ>Pna` zXLK4Y9n{@n9cuOAGI^*IpUw)G%TZl}Jzna}16PQ1jru-*6URuzbzL9Xds}a=?kYVU z{fs+4R*%DCa8`+RMXtISF_flweXNfc+}HY2Y-%3vXZ=*@x*FQnO-WLD09#i@u9ud$ zzOA3WorPT1Z3z9Xzayu0WwhVWHWZZssyd_JKz(ZT+lX;uBN_kWKpszdHjzrXlo#1Y#lsi;#7u!WzwyW(b9K8%j z+wEq%fv}5WcDLOXGt`E{XD0O2z_mM@?Oj55RHz_H(w6bNfU?LaAp4^ zn>(`aVS7N3=iGENbx$SiWqT=MZ`(T^sP^KWw>{avb0PvX9LTyrb2aw&x}exC9i-|) zPp>2uA8dm~r;KAXLK$L1+z^Ptku;v6N_~NM3_Z#0_b&Faeb5t$grNvuC}rMH+??bAH*V@5%v#;n7<`9qQrHPwcC|4%0?j%jVL|Uk_XvA{>GQs zh8h=PMePtfL>zGuRyFFWltb-MJ4C!5qHJ7>b($qRSdGiAePz=fS+X@)Lz)dnxFKs} zlx>W%aZxtSCR^_Sb%gP0M>vw}vEzkCM;M@YE00Q_dP_T4BOS4^o;$Qn-oHGF{m}p{ zXPj8Z+Gb8*{ICh4&_QIIQ?f_%h)#2bEd7W}w*FF}bs#4;C%V)ze5glpOJ!$Oyhc@dfkAx{+)DrZx-@J+zlR zMOSmh$yD9U_1=Spy+>s$d8(c`AhLHL5+Lyb-9{bxoRu%U#dH|Www&MywQVK7bb=|kro$W69c!2ft#Yh?kum3Fr5Ifj839J`(>++&yazV5jl4_c@}=UcNFi;q zdf1=r^y3}Z>__~u!!}VZWxtf-`&AG(Fmf06Q7`&2f0q;iKduM=QmQ1j<$gjhbXa;l z*2zEV_hsF5<4wg?*{4zkKz)|^;(wW*3zXj>w_}$L;4ZA15g1`St0&{q`G4icA$BqP zN+mK+e@>sY@AJB=Dxq<;ze5Glw-(oD&`_}#>BzrAt#v`ic0_mlBkfnWk zOLsft{#;GUId7{fduQtvYHj<}2)4b*Yf0d*rEV`uJ8?15*H;WB+t+o}`>Rx{i`B^D z-W5&n%6OIKZd5s@!ZlR47qaOR)^e$@RnF|L=TcM6Ol+;Op&uQAQr5L~Rs4Faq}LlB z)+ds}`rG4=UsB{M^y=7P{HNa#vhB1YwBNrQa5#A>K$cSOR z7HdtRw`I~BA3Uj2AIuE8nNZM>0ZXi5h1oYd6Pz?o5!DY7XblOaLU_;>LTcNDR zw@n&2zEHFA|K zW74Rp>p*LFK*DLP00{`@Px6q4r4=W4=ciYZQ8?XB__RLeC|B&pS4mq9y3mv-O6g~O5$CV zsI``4neyYA2CB)?{&xIeKnb0R7;V-={N2*FvnUboYMi}&L@IY2DtXAzgv@GD%1X7L zU#qsXEQ-1dy@zE6W-_oH>7xejdp4JQ9*ynKKX-%uN|cyUTXt&F8_Teyp{*2>#27S@ zZMHH`u_CBdsj6VDh<33$eRSn$IHldSN}CZP1x1_3qK$)9lo{Gxq1`2Leu2ju)N4c5 z`;>g`^<;Gs+32$a%S#M}2*0+}q0*3TO?CMV%RMg;g*s z>DM*EWml)%jsDgRNt?H>9+hUrMb{FiJPGYBLYsLbsb6Q*qO?_|d#hWv_75M!c>+7_ zB0g%PJn1*R#N*u-#gTT`Fl5tBIunViski7{g7E-JtftW-OUwK0f=atKKc0;Ss)idQ zbh5A&7M=BMJ+aC*6;|WAO{=Cv_N7EP3Os~P3CkEg9-CR@!Y?96Qte@aH&m2=rMccR_Me&Mq7kmg9yl-t=8*OOBgk*J7GjZ6Kj~ z8>q8)Pv_(w*4=tEg@F`5(1$@fHku)8L~ZCJRjaBQQ$B5KEa29#HAGI&ai`=u*2^@L zPBy+je)O{e>3iLIePa?t{^)jXY2T=$+LDG< z>(OnUZ?^ZozQ_@ss+suAGq@q1x-HaoShr9K@}OtTkL>qjO`aWUOQ$E%P|+NosRfZT~Ji478b%4pWMo?VNYE% zG<1pwTPL((XLevHM`WGHq93%}P;{fD54xCjX_P4eG+t#%`&+hAy=S=+gK?ybf1>XxVZ=PN2)&jMw` zcGwx~Bl8cN;yN7G3`eqhmL`~fbjZV{fqIq~MD8BSHn^>fGHr(yr6=Pmt-JbIj2DW+ z{5qsWgUeAVUpb>+L(}`lu(PpOYmm9KGA1Oi)}};L?afKw+|xNjP_?(TEj?W(B&xkN z)!u3>i^xrFo1rWsx3+B?W!Is3GPae>MO)dX4Va5Ew!K!SJE+!L47S#qB@+y8=j$;n zL9AOOFTY9j`@g*8Q(NknPEz?)zZocaTR+R3?HbGVPsY>QQkUvP_1>VmLisZ$>CWw9 zI@OjwjHC6X(o$fle9Srx87}jNr;8~PGoFieoum?v>eg)|&E+AKx~))MA8+Ym!cOPw zbu^o?y0CRZ-e+KXD!afg zS_ZIE-PR}u^8;^$!);|XsNW!fTc!hFK2R=-A0myy8F)wiMRZ-hY#aL6x{&VUH0lNk z&=Ql`b8;N5EV|9ngodw-m_wD&jc@!%&#sQ6Yo_@% z@KZLkDJ`Ux89N8;LH<{^opfQ#Ku6<9|xGsWIlV}@>U^`S+OAZDA8EAEU#=u$5 z>_#7hz-~IEv&|dBHt}HF2F_CKEy2!P96Go<<<)!Wd1>#lEz?gKO4&Y94{acd<$Tyy z^9zOoHD(8GZdbEz5|;{P@uAXImkf8464~llf^BOEbfc)%^ioncM7A0d>KVE)zi*3@ zNKdo?&cRE8w=+DRHr_U!>saU4oqEN6#@br2G#r=)kZ>PdM=HMJ(%wI@hx z%d39<`JWBJfLh3l#Uh}x4o*N}`|qYgFiPy1;F%&5cCmr84#(b8mHjgjlp z`GldLf}!a;kWcGz#$yRi+op6%iFU6H#>Mi8Mh!LYv!I^4iT7O5VC0eL7=KlY*4nK@ zPFGuBo!AE`#+m9j1~2+g`mHl^5zhK9A2vW56ErBh$7cJ=_DokLZn>Z{v0(J^t+K*c zn{WKbda7-F^R2h`^{|I7W7(VJv-tof0r&Q+j69rMiUs^ovW4+_VS6X4Q18i*{@^`9y2b|tnsooxQQu1}eY=Lf^v;W1i?7oIh*B}P z%vO{P`M5=t!rsh;mG0_rE7yI5%PGHDs{Ut>@SLEw#O2J`&g(_`VZi@i|1vS#r*cQp z&DCTxjDJ+@^(d@Xlda+KHdA5+$cZwY^cjrkydhjMT8c}~=fuV{Vnd?^)Pu0LNnlbq#?%!iSE=yl{dIF7hecGs;>kCvqc-6MmrCnaPC(kmF?vKgEwW zPw`!`pD?#&_v2-9pBz)>DKTYoeJ+MnI-elo)%1)TBIDQ@;PiN`PMLRBrzDow-0F5L z@mK2TXU(aR^^BN??;E=MC|7AE_e~LZ?h+$Gq)sYcmDEqAZeZ%BB5L@Sq^-LHuei~O zljy%|hyLX#3`wxvQ90aDW_X=&R^h3(R3!cCaaqAn1qOFeVSbpc!Z^E{SwYfs&=Uurfma=w( z9%>V7H|l{mp2BVl&+Azy1UNTl&vlJ>n((Vw{P=$-m@Jp-p^UZlt1)Pi@! zdJC?#neUACj`?6=AqsyUPFQ!xJPlVV=pOwTklOj)n61{mkYn?>B-X=j{-*I=PWQf; z2i__hvzF60&EO{isYc$7BKismgnoEF~nchopM;<>d) z_1+k-_EZqw)f;Hx9X+5{2I1{kPpWYkyLI7 zW7+EO!aTKWVr!Q4yqUh#C$>f@d=}ehF{_hLW0ohIu!#PiN9)wSbvtR_En2=0b&<3( zvZL)ro;AtRpDa7_%$*HW!?N?NH2%i*VR$^)h9kjY;utRjA>d_DK|l?0Fwm$7=YLd% zz04!|kVO7qN3yE^L)b|>rD4)B{18L|CxMC{;30s5?uT~(O^0(pN=um!z(J0t$5TK# za1^MN$-skK07V`kg17`Inaflaf_MT*t^ST4{@vB^ANG$_2^~@IU#A1%NE<1{QK;W2 z*FKy8qNhkel(!v@|3GtFKWdZ)94*R6i?Zj$C9;wervlG;Ou41Vu4=n+4R(xv!Si1#fTz2C zzjvG+r`0-7b(eWS8wUbf@i@3SIyAPr*Z(^uC;_``f$J=jd^NsXJ$?qZy4E<8Bb2j+ zwG7UTRX&sQRvH+%^R9TzKCS~N$nn6A6W`doytPl13xeAF7rofY^Lec4J+E|iXEiLl zO^qKU9*5QU4;7srY=gteQF-gu;b*JX;YTCQ(bYtC`YzQq$JVVlWJLn*)gZ~7;?4`H z@TYQwtd-xX@?$91HipyOO(BaXnw%Kybau?|?zMxVj$u|M!zU;C-yvw&~Qp)V;2@bN9A?H3H-6 z_b%Ow`PI60?Vb?PA(M-`ckkG}(7k)MyOv&fWKe-0{+Gge3bESgV>=f!QJl>cl6*m# zuJUoj{V%L9%_pJO^ri^Ef|5n8h+7n@3Q9pME|jK6q`tjq+% zi-gTOkF0N2e!y4b-IX_zEIX3glf;kW*2HeD{HiCkWO)?Q_N*(1t5d3tRd4-tA;WM5k&_4`1AZUi%*QLm-Hx3>oIy%@V3V9&ObETpANL7?=Qi1| z!^BpU#)FdON1e~Et$bePOMuB)o17hz*)Me=$qgQo;roB|OeG!igsgfiE|sFl4S_6A zRhE~gbP@@qg%@~nG+7X-C*Wd26fJkNTuc<>E+%X!Kkk#1KkXv}@lEO=NmBlVZ!7#& z)5(yy&3{9MKDp3eTZaTsfPRGuiU&a{cXIo3OPQLw--+|5m^xQD{E2lymBZTKVV#ua z+041#Hy()WV0%F7WCsV%xWk639u8vIq^3t0mJbZu*K|&EvweF|zT8q+_f)CdIXoof6&L3=3pY@#; zTThLmw83J{L5$8@mY?zRP&410`6&_pAo2sTOxcXXGvr^l3l-{AeoeSKEUIKH)pS(8 z=y(6c>i7d-U~1O%GcMRmdP2fF*42m4^a?mVgEO#7f$W*ugazfTK~05)jvl3!9CELW>l@sP|uVGciDsx!*VfA@n1xL@&>fim*TELTRf z4K7Un0|Os05=)otDg^qu9>?W-2LFvx_=4RE+Rsz77~(#UQU7(({>@PSRdK8G^WH#= z`nK|TqI%&FJe%-qB5wz>mdM$&+HX#5>o=bD$+oOmORQ(zcHwdP1*yHC5TMuc*U7L4a(71le3!exF)l9gpNLpOf4Gmlc)<;m zhu!@mz7Y?wpiLX|8Z_TFW?@v)4>$QYJahIe@tQJEDPsri9X7PULEqQBO3i!HX(x6y zd#$Ys8r_#} zQqb<{l@56Ng6eNw3ZKM0BQ3wE6%o`{fbg|`H~@qdAgoskgS^B+e6?*T5i6r@NRw=X z_h)W`?pO&8$`cC&a_<}1G4@>JVhihg&VVW4|TA1T3RQvBAbiYFyxzcZOfc~TIOr@u$S&+2l z{z*TAz$Fh~;SSV9{h=aD{S0AI&vS4qmN0>CQ7LE(FQ_Hv3Wo}stZN(M z>x9_05Uo|LyIc3-9Q&?{+)O1Pr22{p%?wS;XH18csvG%!8lETmRj zoi8$Gw>k4b1IDq9Z?#Tv`48*I`2P5|0I9E@)tG+%=tQs#Cm|w!Lj1wn~YzZ}%-cMEA9=Y+nSFCa_WWojVEa<5k)Lme>J} zNG>0cmrBExN2TpfX}hbm;(R$*XIQPX#;d7G*9X-qazf6M%B#qhU%P+R$U#pVOB4+RMVldw(y#2 z%g0%R&P}lqgi+WFpgqz$+el7s(*%qGfr|o4(6s>yJs4y9!Hs^fjT&h=b)Fn~ATo?n z^>fygcb=Emv2{b^<>7`Jx~6r}{-0|FB6}Fe9*1#?nI>?DApPB~u^0x%s=Nm4W(|!x zDcA9gD!ICKS0#r~+z=JFdb-h(vqxQXx$fxs+R9|uz(~*?T6ay(13s`aO({R-0e;Qv zNbxY9v#aqqh@=Ua2htxW9IHzS;-S&jw8locjkGxc`7f003=cbthjmgO=ttMfIX=S< zN~QCJYI}*xa?iA?(lIRP=A}wMngdOKFU-;ej0*nKU?gyDL8TvKX6e~x;80T%=xcpM zV;4%_MWy%kbvEmow4=_~5eT;}oP|Q`HqQlse@0k0EeS(~+bk&QI9t~^2W3esx+lo2 zpxc;}nGDCuF45w*<(PkrUuoyGRA+o*WJBw(47fiOw4F)>Hnc^j#7%}yn$Oweji!=)Bz^PGs0YZ$VRs|$-a%2O!FVV=taU-3M zYE6AnWO^?FYa(ytix-S``k8K4)Ybi|myTyj7?hGfL)UF(g*e?y$1X953l!Y3N|UGS zoL~eMiR~Q-)X}3L6b} zhSBh7^uRT2t^cSKru=9k zgORSVMfGuOv94ld4JSD}`jdtY*jN*C-EiEgu9erED<6q~`=$O9rj73P5(?6Q88?=VH4oPDMFJ! z={)aQxkp!VddjeDpyVBmr^5)WyCZChp%3we6X3R8>ZR^ESKoat(#@v%TDTYe9*Gu<1B($kZUK11vv@gIR*JKri@D=QLv=AZi@+`jV8 zo1tYli`rlNlmd_Z=gPk`$1I6#2}4n%p8by~khlNo5FgsR<6pN zm_D1|E@mIDyvO{mXG8@OEh?95E2k~bC;ELdSUIzAQa&42Sk?Q}_y_Hhsr+jN4rG~`Kh$bH*9)vSJNQ|C#ZUL8C&dZmaAn$=ZKoE9cISx(?vlt*0r4F zQ`*Vy;M#V0*9vb&97gaERF)R0+dX~QzRJkp%m2Uj&OOeqs=DLn-g76(%nf9QSE2;i zha{Mg2a^y81Tb^*7-kX(;n5lp#5*&0lAF16@8mv05~&$pF(MWPi;zN_@Gwz`@T3p5g}i}*eoi+xQvXH;+78v>^9%|{vY$)LXXN18^mj=O6_U6k zLLLo*qw*f0B^*}CZt&BBf;c>6UEQfYd74W}KSYsd2qY9>P?YaBA*6tDBHZ0%7qGjO zd|e9MfR?zG?5O}1xYdu3&c|v!_-g?T#POZ<>iw9mx6*d`0HZ__@As#a4+NECqr=EI zd@c98eQ;9ZOXRs2-4jZR)wnY<-wy!qZrSgr#OqVLf)Avy+`m)S`9G*ON%P@4MedTJ zetwnuM%m}LNVdJ{n38uyP%AybowN(Ul%e1*!(7=0#tL>3pv)cts@xMq2n$2p;_UT- zOL0RWObQs9M!i!g(H|4^aM-EE?_<7ffbHdPniBLp2V9lA{SfibJ%+!+Q_y{ezoIV~ z=qrbcR)DJT`*B|-w1jo&6(s?C<SJ();1tPy1l9h`tdjiwb|hV3dWu@)?6;Q5aw>i1snP$NwO+s7d$x z_k)7qMumH@TUZBwk!l*)o3It{2M-A@1tgZC7=Ag?9X#TL*#eDjs-^b4jBs0M`R9D> z85vB>Q@9Kwg@hDyoF3&Tksb>RCY-0*zd$H5AVsE|%j%1OUC4JFyW^Wu^t!$R8$ll9 zu93sTW3(ZBQ}CkS6299S_(j3MxOZT!$p`(#`8~mx1ouKgLxOqvq%YuTh73!v2J!M` zi1(y$UBHeW(uslZ_m_PRB2W0iB`sDoJoO^LEjri_aju| z>@FGNypVGn^fY;j%MT$kRE}XbbkSV}jI*J!8Wrl*6)10AaH)i35UfWB0~X71sQRV_ z3-h>Ekn3uLcW-!ma22NhZ4r``abN>S1XiGp+WB3T3a&`8^j?S+VoULMtq=sgJ-9IK zE>!6yp%m?cs%0KMZ^P5#%4wa-gTP&p3a*TJ_R7@Vh$@5VjdP%VHt(H39bBCPkK0`h z`&}bQ5o5pXlTXs7?Sd7F+0kRQj4ZoUDRjFEt+PZ2rw`h(Qh>zttAl&kDw?Vn23u{e zYz>dl?*h!q}k)hyhLJpOJ?cM9dyUrIVcA zc9CX}&LNZ34()wu#}zuCM2qJ^Y=1@*HG|lr_U*k=hnQMJk5N8O7yOReeg9PnOvR?% z0yl3J$B!fr`;~S7SA z>>#j8;Dy0OX)X!iB~BynSLSar=`aRmhm_V~ZB>z!^5mQKi-XJ$li?5O0TRcfQOB7d zgzh4)Bh=YYR}w?Ir@4VEn4U;X2vgp`6;f+jN9j{th*1v-1z9~L7_2?CMLL_Jngh_0|9rds`wO+(C#q{Z2i% zR=sy2l~nic;HsOTz}30aao$YF4% zaGRcG%7sdQH?@#NO}INzi(`$o(m6)g0jRC?od!g`jgzI7{%zl>yl<<#v=FSfIc&w^ zmi+Kc$qw&HNN$MZZ*|lkHh6k$?!<}0YbU7yiae&DdRp$KQk@Nsb~TD zq@g9>#7KV1c;{2r+)vT3o=AcReV+9h*XMX%%iD5BR;}QknSic3?;K6Q{GcoCPH|nm zkralEr|91NGVaR(uNS1U+V_CngSX~&QEpF%xgr0I-Eqb$k$QPP1HdcdJrgE9#mulN^;Lsd9z_M@YXV_L zcxVInj}}a^PwS~Uf+7^JBoPWH^h7csihTx~5YXy)TVU+H(VMs~fn?uEpbs^^N3x-B zs($QBAQ}pe$GSKYz}o1Mbrx2NZ9)2$1V?U`okx)q@jEMzE~o;ZrRwK|t*klm9Z4(I z8n%T+PhP%aerG@CXl#BH5_}uNU4%X;pMi0~b9J;m!y)V}@B+1Mo=cJ;Dt7XNCh-;F;c`f>T zE?>3t>oh$l@|y_$QFZk(#;6<^$f1tzJ5Y`D-Hs%)PRN6l`ub$qg0tgZ)I?o^o{sr z-kGGDbgwwTgJd)PXl47X^rOi}>~zpgl02xWy&a>ZX=$3qQ9sh0=BWRW@UTOU z`VS|iHmzgzBS|++RejFjupdb-_Dp_4%;yyYyPLu^+S7{pLQ-!?XvL$n0?ldsCrWF2 zZTwc@ivq=Vi?Bd%s?Hy0;>qyZT4_AT$2%O+aWcA+;wnmq$tM)8(;DQm)PB%ywCmP1drF$v`+{Hkj^8Jfi~vfr z-6ZOcFtMQ;0Z%5o1Jj?y`<0l~Ujg^MMf$Zd`rB#u8LPY#jc(o0 z64hqaw~3x#PojfsS-&CNX^Q_k@!+daY<-NZ4q)%4i%UriCa5@Q{T` z-YZRWro>9Ap5y#3yzxD$qLXqF&xI-fEbGcyq9ke=FF;9vKlwFEeqTV{);Uy_P(C?DO|SHn8X5jTxuhHwa~c5LgS-ESaW7p zKjXV+d}035hfaWhH37y4v#keMV&Wq&l|w7Q6#U44jUUYB6Rx^qRSao)T+4MVkCA+i z;=Wty-sf`y7eY4_e;*%*m1*I0du|Ru-Rb~=2>*N@2QV_%8%(zb;{!tL)@XcC;M_oT zZwzkq-HqzppZgH^dOtY3Mb2eS!@dk1><~qZ4^aV~_>dnW5NGKDHq}Qp<|g5HgV;R; zTsJK^5kPFspZM=Kh~hryP;(4 zZr>9~EmgY_v}M98xsXL;!i=7=Ymq(?Kkpgcc9n!hOGl%hSC(8Y8P-G66N+?_C#7FV zB~FuG%^7U1*f39_3sWTJFompelp8IKB+v_P-8i4lW5Xmttm4_dV$ufPRMXi(w^5sD z)C=_=dVVS`A^_LO+_9*yqYrTsjO<=S53w#v3(Ptn(d$dTO zDiMy`B#oT#VRYAZnW9#)ThpfdAPSqP6LTV5ve7idMoA<)7)oR&cvKZiP1<-<>b>k@ zJLKrvC_SNY^kJHJsOxZtmayh@n)Q0(CJkD+pOR!;MkO5)RX3UHj)B_Q_#NBKef~l98l|Eu?I(TN> zM`neh*YlJy0e+@ttSd(M1Fh(G(H_|(;wUB-B@rA-ovo1)pj6-5YWApLyTeRxOw$Eb zMt4yAYVqu(^q~>0QjBP#{X|XgN$DlAme@2QR!nc3);2A@njW-E<7=FfnDx-`sW+=M z&N$>vwx7oQ8^<9C?YSeMx+oYA*W1v(}}zOsOUTY>)b@orRMsoJBa9`=G(ty z*R3q6aoqkTyZ;gm)Dx|xx9+Zo_9;g@SBkZSUe_J%YvX9I>vr<|uhekS*cvYSBWn2X zwTC5M=VF#O52n$Gz#K3d9~)y7d+&hRELhUt$Q&`oXZCO81_F*wc9GZKsW6e1n;EGU z!PZ>7ngx_7{p9Ek1T*0B=rzZ~-cUS$&}BNSUL2X=(~}YAuySmmgp?k_NB#-&PiXij z%0IE;$Fet;*c<-CYFbA^hW$l`DZr#bL5}X@OR4J z+3+uve__Laiu|WE{HM!*dc%()A(p^IsQ;rYnTXsj)$^aw$C9%a*6z;6g{h%vkz_E& z=4u)lsz_|8`;%%#vf=mT_ZxnSSEK5+q~k`78`G$Iag2Cv;G;DU&UiH`F7q5;J9Z+r zT#G9{FP@7^gQJiLH21Q>MsYD?7)Q$p3s#B0T9YL4EY;O-$FP&V)iGX*U2swCf`4Kc zoD;j?nb-xl#4h+GcEKUB3*Lxba7FBbA7U4r5WC=k*v06_F2+4}*@#>JUT>u1L>d4~ zQ=_~;hVuV`P%g=$dodKBX74bel!Kv|&Y`!GJ`89Kt|U@Y?o<~MlC9R#v4BrXw==?;YID4PjrS6Vwx$Vh9mk)vH%@utoR%{F)0DGKIVs;udaVl9gP%sp&6&(S zu_?sd_NO%p=5OR^N>q0qTz7fiLAX=;YTse#DyoFyy%ou!==lX zujsxYIQC5kVeO$~)zpdXP>wp}=(nsd6h}7pxt4L04n6GfH%~ZX{LJZ-r?j>meB?1R zrd@UApB;Dn?9yl+>t~`6~g%`d3;!ECf={qz11KGiKxeY`4Qn|8a>$@(mx2rdw z&#uelUEh{U)|ImxtJy+-)>~d2&g2R%TPhVx-g((_HD7UsV#SrRBc*IPTc~9E@>y>+ zAsJVxZ1L7)OT)QxIae&Wfovg{9q`T>$(Aw|1t=e$;asIc`0Ao7SNqqy!CXG;iX}IY zD`opD#nP5~%t)!&pDmZYZl%a>&Xp@=?@u%NYSvYXMVHT%)@9wGa%L)2zGX!1aOIIq zf7a!*gB53O*p#Ce=Tz|xy5a1w%BLH}YKc^R)$$gvw@{&X)e+j{%3I2n?6B+4F#QSgnjrJXkG5$(~}l;&Np-P`s>A z_f!j|Y^Hy`wKN6q9 zw-TH|9~$Eqg~u$=7{uN(9MSMzklkE~2w_BDu{qnXu^Y}*;_7SEWK^re@Rb+F4yZ}@ zY{ZL&b>8_~hWm>7T)z?7<%`7;H2l7Vcw zzmyw+=V)tvSeIr74vZFG^{>z62V9LMm8eD@W6wHAHtH4^l$BNFYp$Wre*>_H(e|=p zmBNet{ne6pekH>MjOJK>aTAkAGi*%>@)xUR#~5cdS;ow){tR<9Pf&NY5HXVS=Y~h} zSJd@GB#~(ZoXcmEd(){yjsGsZCjnKTvjX%)u(^W-#qU@BXC)!V7<&1m?nd)uP&mn zE3dCsY?*3&6*76)Yha58d8AZar-iC%;cE_MX7C}fsk=T?7+_YM2fs2|8jIMu)gs@5 z?B@P#c7Vpw71qsMb(m4E76!bx*|5h!wJ(N!+o(QTj#!1GPvQk^J>rd&1tjWU%CU|l zUY~z^wT((O;tojPrn|#N>>qZi{{PEAk5B%ewSLCtIWso5dG;T!$TKi!#z32w&u<#O zw7*i>dTH*&1&iCfnVoZ7=d3dnHFJK$xuD_f+}z1eH$Tl`i|{MFIZSB|3{yJ&9GH%v z6|WQ4NLLZXXXIfiqELUs7SX4FE*wqrQ6`SsGqp<~nb7e}^~bL$ERmfQ%h zr!Nl8YxCyLcFuLK?cD6mEL8LPS>D{vwX-|d5;V7S^X$&eju=)GuXlB~SI88+)!}My G-oFFw%03VP literal 0 HcmV?d00001 diff --git a/emtests/test_llvm_used.c b/emtests/test_llvm_used.c new file mode 100644 index 000000000..a25241fb8 --- /dev/null +++ b/emtests/test_llvm_used.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +extern "C" { + __attribute__((annotate("hello attribute world"))) + EMSCRIPTEN_KEEPALIVE void foobar(int x) { + printf("Worked! %d\n", x); + } +} + +int main() { + emscripten_run_script("Module['_foobar'](10)"); + return 0; +} diff --git a/emtests/test_llvm_used.out b/emtests/test_llvm_used.out new file mode 100644 index 000000000..87ef26127 --- /dev/null +++ b/emtests/test_llvm_used.out @@ -0,0 +1 @@ +Worked! 10 diff --git a/emtests/test_llvmswitch.c b/emtests/test_llvmswitch.c new file mode 100644 index 000000000..93170c07d --- /dev/null +++ b/emtests/test_llvmswitch.c @@ -0,0 +1,30 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int switcher(int p) { + switch (p) { + case 'a': + case 'b': + case 'c': + return p - 1; + case -15: + return p + 1; + } + return p; +} + +int main(int argc, const char *argv[]) { + unsigned int x = 0xfffffff1; + x >>= (argc - 1); // force it to be unsigned for purpose of checking our + // switch comparison in signed/unsigned + printf("*%d,%d,%d,%d,%d,%d*\n", switcher('a'), switcher('b'), switcher('c'), + switcher(x), switcher(-15), switcher('e')); + return 0; +} diff --git a/emtests/test_llvmswitch.out b/emtests/test_llvmswitch.out new file mode 100644 index 000000000..4647c7e12 --- /dev/null +++ b/emtests/test_llvmswitch.out @@ -0,0 +1 @@ +*96,97,98,-14,-14,101* \ No newline at end of file diff --git a/emtests/test_llvmswitch.wasm b/emtests/test_llvmswitch.wasm new file mode 100644 index 0000000000000000000000000000000000000000..076ad61a00f17d9f16ba987776b4837b7e2d167f GIT binary patch literal 45734 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 literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp.c b/emtests/test_longjmp.c new file mode 100644 index 000000000..2abb84f98 --- /dev/null +++ b/emtests/test_longjmp.c @@ -0,0 +1,40 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +static jmp_buf buf; + +void second(void) { + printf("second\n"); + longjmp(buf, -1); +} + +void first(void) { + printf("first\n"); // prints + longjmp(buf, 1); // jumps back to where setjmp was called - making setjmp now + // return 1 +} + +int main() { + volatile int x = 0; + int jmpval = setjmp(buf); + if (!jmpval) { + x++; // should be properly restored once longjmp jumps back + first(); // when executed, setjmp returns 1 + printf("skipped\n"); // does not print + } else if (jmpval == 1) { // when first() jumps back, setjmp returns 1 + printf("result: %d %d\n", x, jmpval); // prints + x++; + second(); // when executed, setjmp returns -1 + } else if (jmpval == -1) { // when second() jumps back, setjmp returns -1 + printf("result: %d %d\n", x, jmpval); // prints + } + + return 0; +} diff --git a/emtests/test_longjmp.out b/emtests/test_longjmp.out new file mode 100644 index 000000000..4a412fef0 --- /dev/null +++ b/emtests/test_longjmp.out @@ -0,0 +1,4 @@ +first +result: 1 1 +second +result: 2 -1 \ No newline at end of file diff --git a/emtests/test_longjmp.wasm b/emtests/test_longjmp.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c38a00932c457cc7983669268a366b01c2f42707 GIT binary patch literal 52176 zcma%^2b@(!vj6Wn=bn2na|dPsK?H?rK>@+MX5HnYjsmOh8g|!xyAQ*%t}}?vFtWRE zeKH^_X3Pl{BdDO50|v}lF=xe`Gv>hm`>S*B%((CUKmR`-=l1DPU0q#WU0q$>C%5<1 z1EO3m7yYGiuVni4>CyDPBK?Uyn9J>z^O&3>a(kuZ@C0Se?UfwrFY%!&k)`GKDoj75 znkhOYI&`o2km=DOd*!pJ_|g23WYUyrJts|>ym#AvlXjYPz=3W5%;go=YrjeDyC2xT z_vG%8<*7tYI^dvPC$(>oOO>sxY_%9Kxa!{f9N5;r%am>Ro-*aY_8r;|{Cjr@eLQuy z_PzIQ*=5?Kw!cn3@b6VXQx2Xyx#{33`%c_{|174yTTC^oXZNUTTwQ0}w5(j+{!^wM z*fI$?`{#1Pu~dzyrWYqpoH+TweOs#a@jpZ)i% zA_`tp_G>=ipj@F^DLLqoiTmt5by70j8$+$_d+#%OQunxC+wHk?Wv6l5?!L=!CjMsk zU8^~Jw$m@$9e6OAf79MpjV$f9du7`RWURjT@b`&3RsKLkVZX@-?z8vgWaqtiP7bNP zmBvl^>;6;rZ~rGz!m5zr6h|F#htno?e4>M*fdi8rnxcGKC?rWfO5?ZyD@XZ=|Kl`@ za&a!sC;aA$rKr@St}ZIa^*wv_%H{KM97hde`#9H-@+T?m+k1L6G%oWe(Vx8jr2MJm z{{7D((a=JfKgEAf@XUuq+X2`AmH#{1R)Nmn;&E}m-t^C;wzeq;iY4}L-~YfVxwVTE z|N7U-2T%Q5Zj*H4U)v^4$_;LqIC=84119b>_3wKhG;#lpH_GjlPCQ`m{iozsFY-H? zqPaB)d3WZ1;~{t|_uJCMwny&Ahq z-CzF6u$eqrLtwXZ*USF7-Rrx(?VsDDN9}c5?st8G07vXU^>03`b~|YAeJAAxlt5tj zzqL*Jdv3Kl()VqtIGX+H{bg6m9N0D~w`vc6-3`=o{d-uH8yb}d{(j9r=-;pZ@P|G3 z95HOqJ@*{?NB#}^p*{K2N~7Wtan5t@ z5_%euYG^#PCwTBDPAk(x&oU7D$7A##Iii+cjFB?o{vlT%=gPS>9R4W8FaNO1v)qcGZ=1)s?q=R#)<~y7Hf;YS9bq=;7yD&0`*_cIiG)=(_hM|9h;N3s?0yimtUU}-Cxq^y}$IoNr(GO;ZG3f%V=D9C}O-k6j6PyQXUs>j`iCdE=}yx zr1Fo}a7Ny4j`Pzijj5fHFNY&jJ2I^#)52Hq&~WGx-YOW+SLw9yRMDO)R+856XZth6 z34gP{X#f%zwT7uSwGvGYhuWd!Z4O68c2rb}+QTVPW%dZ;Z`|G-&Wr54NHXQJ$S#Wn z{kq7m^O&WPE%lg(BjY&_Mt?T4XFm0dk{?1!m_+ABYSIj5q8Pji{yG+X@sVQ z&+_(}=lUUUKM-gQvr{8^cG?zBPDvv)Eu5PgFXzG=m!@`UD&Dv@6>soYym5PKx2NKb z2UB}672%&w?P-r$p4xJc`5-l(+ta4-b!uOy&Ks9P(U}FCSrBg==gfLs0lqGXH_j-i zYtJZzr;92o4!N*kJh!JxpsEi%@Ro9vg%*5rMZtKEOk2WD`Vq(6T@Wg8#bX8Ix!b{l z-;p%ug@WBw5P!T~uonu-^jX1p-mYc3qRYO89`#bJ(Q{O`nxOU9E$oaCiW zFBwmrC`SZYE+`q#H7cV)khPBnK?h}8o^~H3Z+bfym244{QB%00WLK2H`p7i&NMZFw zrIzrY{I&mV4HIpm*nBVBOH97E?JXAH$M&*)riFcNUvc+e>@VW&NjAy$X$ya~eQnaT zu%GQGp5EW~7e_bSU#+<QV#>;Uoc6l<|5ZQ($hY*VI%gX|!swOXsV zx6KZ;wzkl22U**+aIm%8!OdY>WzIS_&HLi-_IHu)ANCJ*_CM{PdiyW?FNxEC*}t4~ z4zYhQQU4c8#3m3g{N7YRBd>xdvhp|VPIm=W0w7l1P(n~5IN6b_5* zFp}%zl!$P6R8DQWe(Z1;Ub7;b)D_;iJB7@Fwtu$Gf{P0{Zh#)ktsH?ngb(7edzsh%}O`ST+? z-;*zh>;g}|FtQ6t7I`m-!cdaK+SGBb!sjS#L#bo!u$B{LE!TQ&&9F6;(-1l-vXdO( z$&sDxbI+-f@yzkLXO2&5r$xqday2GwjV^G!*L{&_bWx;9p;%eHIb0ms#SZL}NPNa$ z4f^?!&G*;^5Y`qjC0-iYrD_r>TWf@EEk3!jWLGkhDiP({!{w1(?(^irNTX>X4816- zygA$!361)MCV~SLxgxSF9Qu`!@z8UNnF1rx@~X%di)*fcO|FW{VNct$TYXnYcC`qX z(44Ks6xT$?bG$dRDA3nNcCCZHKC9S=D)9SyY_|9*^vC*Pxzo4T`^F zi6@C7zCAn@8P8kHbWcb2v=iu=$evMaJ-#hG=i1S8UN^<4dl!2$3bE}HexDLj%=3{w z@6CK6vKN&0d=!3Pw%^+_FBWTrzZe-$7O~7ry#$VtxgJCWSzeBe=Sh|Ec|gt6G;oZ^ zWaH(P$X@BDG>L|xM;UJPU+MC>AN4DIh+iT)tNzXSTd&3+2 zW@K-w!LLQx6!Kcs65jIcrD@^q$lmr`??m>FK<2_4DOoEkSFS{=y&KuPiXEa@GIsp* ztLE@tWbZLHriJ$-d!MGZh7SbAK7imKM)o1umJewTA4m4FXZs|wPw3~?@M&Z`AJFxm zDH|{C;q%Bor$9$TbNC{%FTB8t$X3vit>Mea$oVA&zKSZn>?<(;TKS1;58p=iZB%KP z7QTy&*zaJ>?<4!(x#0&76r0135sk4QnYMn4>?hJ%!^+5begJ4kY#nh}gT(^UWDVz> z8L`c9eRgJSGhG9j6(fXZp{GKct@!_!_Er?eRJIBCl~M`~X$ptO{8Gaaab-0-B5nys z#&){90f#HR~%z?a1$h${jiIt4~v2)+bxo02W%6;2=V_ zx_7sPf!EPd+2*e+y9PYV~vc5y77>Jr7+ zCFo4^W1AmKv04z@f>^A7X>2@~Q0HYz<7Ha7Jhsar;F6fjpXaeb%W9fO$#^1 z#><7#Y_b;liUjoL13YdeM=Y(g0CJUd=IdwXoRdo@dATk1S}M{GRe**jz7*8goY}G>Ol6*;X$*kSUDM7|h11=?};DaE&F>>hkoF z*m#8bqp>yFqw%=#SZt3e+gPHT!?M_T#!d)N#P)%3OJ>r?z zc*e3&mmqmID?wXcj_qa7@Jej2IQFl`_G*?4C6>pw+>>7e8&7^cw%19fBP-JQUW>yo z$PzYVWWS>D%L>~s!bY}P*u*<$Bhl;)#(@KRGqyJ!&|9&+rFu3J#ovzYZBKqTws$@G zz1ZF(SsLHFaoCvTuqk!Csqh;L+s4$fY1qUyzD+WXZ=+C2X*iSRbFn?=0H0@`^r`WM z*m$1tneZ6~4U=VTJkM8SLIn66$#QCU(dQXMMlb3jQ(o6tRq$PG-+2Y!$M(IG;D^|La63pv=|9EB^Su`!9S|#H<5By{PzOXh66=r| zHOxqCMxrLq#Cnl*(XgUihb6`{BN1K51)y1p@i?KJ*ci>MN&4X737v4b05mzrACcG* zi8R6^6KZ6`bggXC-!)6YK26&Q^JkZwqr(#^!p>l!sY&v(u9hY`5^c zl#pW1N$ebNmf zHdWBaE==q~N9&@*E&{DeE(}RY%G9xo6T4WELlj9qSH~_%>=LY7Oiqc-cT?5^0kH+N z_wvLpC!5rN_GL|?UrD-z>bK!;qZY`nCG#fdGZfYh<861&O^T%Fj}5VSR1 zlNdR#p}@5X>e#iI-L6-DqT0g^iQSM$9lJ3xVsC^iZc6MX@0FW9fI7B>Ub7{1-z|yV zLQ-qEH8Gx>fq7eEw^6&bi#0DZR?3Il1Urp>) zul*~Ar6MH{n1ZwaZ>4U^RNJ6I}T2hELRrN=E1vS(3 zM~U(D7#BWH?Bj&hroXm?Pm=1g^V7r#H%thhCH9#}Lqw0}@VV0Mb73X>-Y1S88IfpT zB*aUitw@aL3s0idM+}cI6XVHp_mF)3DgmG}f0G!`SIR8CBxCCp*)K(v_uE?D?-Jwr zwmabO6Z_ub{E*lWPTL3Mu8Nyz$KT z6k@>V=)4`B@9M5{<;GE(-HyrIF?r2y$L8%=@Tn{vRp~IHaZ4?5_o&KrMciNgeRxzx zxw+Y|{V5!ux8w8dIENGRc0#`L++|N+mQD?G^3-8-yiFYzPRXYLSDm}suDq4m{o8;! ziAGk|XC}(qDS0~y+)oA{!Y$#{yq%o4Q<15s<&6ibou0ST^DU`*fP7Bgc;@DJ3g>$0to(#mAMXMUf$;U zPR03oJKrn0AdkGcKoraR>%zQU=m{4q;bJ9pL|V;O=8X!e%M{;6xFl~p7gF>5yv-My z=EnU6d0UVdbuRS`mxAtPdE-&m%ky?Q5Rr&wa?_g&^S01)FUs2@ul9<(UC~*o{K~XRA6byE?GWop@c0fvlUmy z@*XxvPCzdfrX3M0(@KuY7w2uUgS;wlSE)^8ONk0s=iy4x=$gD;Lk^66dE>d7HeHvu z>zokRSEHK44ZM@DCES>|8}fD|xo*lE&(*{&$=mh$Y$jO3-s3HK;}MhGQ>tWqb1R!n zCA*cV+dKsO-L625a7**X`%<7@!#;#KC*#9A@^*(~a%bM|^bV%{tuWnPc_VZO{dsrZ zc)1&x1123$s5nDtiEq4*)1h;CdHb&uaLpzUT7B^DKmWUOn(E)P5mv&*$w0s(UGKFLm#i8Nxzh4=Hua}&h8twcolK&8Tmc_Z*41o=o}Zv^JNyb=5up7xVvYWlj?iHs{Rh3g1UTWBh z&J7t~e~~wyUo&~;;dEQ!0{RpmS6}9NwJ*WutGs=sPCuoZp=+G3tk(m2N zSw8jo>f5}1>j~fGZ6|``!uNS2{5{0Kp=39R$v+)#J28`#5s4nCTr|plt*K>UbxO(R zq#yH@StIPnY~mP^O+KfLUpuNGK1g0Ny1)B@LzAgq|h zwZJVS2rK5sTHx*xgcY;27I=6BVa42E3p_P~uws_g0xyjqteEF&fj37GR?PBR;KLDw z74vQ_uwn#Z#e7-|{4j#BV!o*bW{o7Qn2uWD*pY-4GrJZzWh7z6%&7(DjwGy@Girg0 zMiN%cyjo!4NWzL)Pzzi;lCWYH*8;bUB&?VlYk|8*5?0L8THxW4gcWmtE%4Mx!irf| z3%oRvuwtI81>PJ1NC74vB=@WV*LiutA%n6(aJ#dOpH$F4(I zF|(@y`*r0HEc;_G9Nlp>qskXX3t1%26GWBeEt%LI+ogDo-~W?&orAQW~JqD zcnWVH&IaWXsR8V8vL2O6Jv%}>`BLGI@-2NL(bJAjiI+BZOlmwwd(uu6WPdxgV?F7( z)Q(Fl-n;kv5IjDu{4m^(S6){g8eMg0)U0uaVLV$NkZ(Tv?-jD z+9@eRjZI5tUDhRyYVfJ4o$4h{OYJmo>glYy$tO$RX=!N86a@suSuO#+nln@#3x_jP zJJSoFmD*WoAFbhRc19h_+|=d*MOb{z1b2?G_!{YPUTQq&q^)5|$(AtmK~fTD9^0s? z&8reiZ8|?S9+EB)2;q7mYw$E&l-fn!0~e=uvDbBpI_DxNK0mejp0psfORAl-fX=y0 z5bQFjaXGuHDWR6I(0k|dYK6AYyMRb~XHjaGdly`h8qXq60>A|TxH7dXJ#8_1$IrUw zD({}Fl({~yHBKh|u2##hPRE67@Ny9SYod;58h4#{;mtw5$dQVsV(tBx1@H9chs$^-Rh-p zOYJsw)CiZmHbQK)G_|Fk{f^XlK=V$;*qu%ZA1HTW=S{=isom`azX!vxgS%IKaX0k6 zFSYwT>3$TFYG2$>UpydsJOCvhQY+P>htdDi@JMQpc>YIId(=TaCQy$6YFTQ_Jn8Y& z9;j;X1$4xHv{~Z7M=E%17=~H0VWc_Z`T07lN!(4UMKB&3w++iV62ch z4vWZ>j=+1Vz2|-ReroUICDa-|OzlHpHHD8-`$%0)G}~MsXX(?zCmxV#?^8AXQ)K}b zJ@XlEQV#2L;V(w|BDF6(W<_c|pVO!>Q~OelV$%_yr*BgG2EW;<;oF+0-gl|-e9MUc zUQzaahOY_>;t#3utnhZN@LGRNjpy@fvvOWF_Ku$rtX}oX8ZsRP>nLc<%qSR-D12Cf z793W{T7cPVcEM)5^V3lUJIeDOU9h7I66wbj>={yRJzF@}_jVif~blPJJ zVH8=ydS%44!bd4=qrymAFO2qKJ5uJ}6AE^M1DaE?IS%N=f}JS%BV|@TsbD90^2r4| z*^^Hx*eN7ST|K!F)*(5pOC56*K0#qyhdR~`quuI1+85R~GHm0Gr*CEzY?ebjykLhH zM9Cux#xuixoMsf%e@Egdrc@Y&_^=Hc-%1}^rxxr~uiUu?d*5jVJI$e;UeI>{$il5rNMZfzMXENZdw%w-GTHmu#_=O!yE+IK99oVZr9Q^V>Ov>IV6_1>-pf z-+=QJW#_EuprACUdr`qID4+q)DOOd7VOdjC{u#;%L>M`z)3|qFfK0`kD6Gf zsD#DBf-Q6yiwd^LVO&|TE30(eMtCkR7|$YyLJpu@RWKfhB3j$WjN7XV{J2E9reIeW z0`}ZO=&g<=_|UkaQwV#M zZI7y`>nHZTuV6fx>_e6U=l+86^ivCnAj<;<$N#OOC0sp~*J?LmXB+h&Y#2C8$ zp@3Fu#R=izf<3IrA)&v@kk^g)j}+_?eBY*pM+^2SIJSmm0%Xf*^Wz13oNO}UKT)tJ zJlm6SBuvm6o+=p6vO-&UTG@DM56=|r84AdV|7^jY^#ae)7Kqv!p2tbEV9!(F#R5kB z7Yi-nCFLioJ-l47mkToDzfv$_Unw+)R}1#4_snt+V8nlop0n2q)57Zod!3}#@J7LS zmIL$6g1uP?{WBwefA7S1oF^F6?-q=wf0ceP`FjO>&pG-1g1ryXltP3X@iQlu57h7d zaVsg<2L=0(ZvP0UW~cARaIL!CZuc6i)xh(g7L4beDle+zJ}($g_rCq2 zU_2h9Zh6PKV@1JMIDTIi>`RaN3Lo!+W~;9Y#?!kge4}puMu@B^gubcumo@)enkj4k zcLl8Z-$CK;3-&DnLmnaDBQJgw1%HIzKNak!Lg=HitGMv)Q^A^lcoDyPtoes$UadzI z?TDh!D@B`8lz5w6wAuKwN^9<;L9-G$>%LkYMeFdaGmAE}C`1n{8V`uhD%vc{kTLX? z)orEf)fhRpXvaDN#}(~3 zcYQp*Xgpa#QoBPqp=dnE$uX9Ab}t@swrBvm znyl9qrAuC`K9P2Lop%nA2>0uY#EX(Q6piP4PuhustOAO5qbJ=|w3~|ESBWUK)vS1ViRs6DIxV7jVf2%{jrD(U% zOeGNktK42Rp3@=f(xNRD_urx-DV^#432DF1H-$Tjc8BxH{9?FMQQ@wl5x5I_+%0T1 z`0gp%Jw;7=_bSHj^=j^R!rbSbNYm~w8qa;z#@gMrJWO{F7J2pg?xCVRBvc-xY5X`%XwN9^$zs^OY`fD`5v!Mm-m^vH$s)4#?Q@LQqV-Y^BFOT5 z(RdzFRk$>$Jxq8n6zv7a>&2qI2wqHg4J^Zo)%orvJoXhkM6qP_+3w|{y^ISi(@fD` z0ZMClRZ#3zTKrnkUL%`kyVr~Mx@UW%Xm8NNt>Mk0@w{4W3vVeKFYV#&qP{9i9Ds(Y|-0{!p|Z)Y%^27Je*J#D4V7_KK>|5eh#Q zjps{G%DQW1(RjM|Xh+F-JVqV(rSrthlFck>U>;Vo!*u8^%qrQek|vMC@q91Q{HAb3 ziD~YL5}3>^h5D4EX-soRmiT3wn_Xg>o6X6Dqi`X{8&K2SQTWjxt+IA>sXZK1vSUi2 ztinBgz?L=7om}DwqdX2vPPtP`c8b@3Ldj0>(+{VX>{RO1Jcl0N9**+_P(8k6$9vW} zC7a`@p2+4vhU!Ti#}J|?fT$+A<5V#(J+m=SEuAERY^Rlsr)QOpF!>p{EOyJncsjFW zJQ>x{>8)Oa?5vWV@lffpnvl23&Q!<{jOI@{`TQZ*duI@XpWarUl zB4n${mip(HjECKv3rlvPnxwaua8ZeLyGYQG)#|W|OU8p`;gXW1_a$Bt*$~?EOT4Og z7nF==z9+fS;ZhY+%4H?vxztmL0pH6@cKOey*v7TPLcHW@rz*{Ln|;3;6fKB##tx52 zQknv%J@aE4%Dnsobs(ymot}$`I0UBvc_j?Gy>*V&0)L^c4&LpczceceS6tno+&#( z)WV6D@l9cxO#|pG_cc0R2i}Cz9Qn}-yt~F$lBR&W>q+j5H9nMVkI=)$2dwel?;4 z<*H5wlpNg7-*S)tx8*RdobGn6zN~thldkB@#hhq&G51MjRV~fmi#SC4R)oaG{G{;P z3UjQs&KjzcrA`Z99MV5%F_ci$vX+OmLY)+$COc@rTC_BCmMV1l;1k^wxb9;S(=9|WxN?~e38dY$e^ zuR3v}CkbMA;E||vFh52q{`6&Bx(9W`Vun2G|E+a0jesLOG*fQ&!10<@&tW>6sumwE zCwevGh#05(?SZhW(($e5IoyX5>42CW8;_b@rlcnTW!Ub|vm$1i6 zoq6CwVJ@lf@|!p$5yy31vJbH#9NkrVCjE>vKGuZ8VsKQ6bw);7`7fe0%eSVj=@k#P zp;VihhlklPRl1f$+gce&8c)F1Qk83GH4eAowzeXn%UaE0gpKgbSzD3z>)1MiGD=NH z`i<7Fq~E&8iFN59h{teR&(>4-t*=+c(gwDHUN^K2ZT%*Ek2i9r9^H;Z^2XxmO{x-a zQ`^)wX$_l6+HD3B8qMnqz~;8OZ78fZ6!a}@3tQil%P1;T0TXR$TdIn!sx@wHTkCZj z+lGjy@Jq1!WriIrxSee$F5BL=SDq%kGwHh>YzH!Ir|(np;Wzf1Oi=B@ zq5hp&zq2DkXaXVY4a`+o-|IX*hxXOv#xTGeNyEq37{RIF7!6Uz+E_OPVsIpFTiZ7C z1>PnMps=62_^tg`;|>ZTitvR};oT&Mc5^YbyX~%+-{JTwBK_WePv+fifNC8eOgT4k ziTF0M-P*$+><{XzJ*&b;?$Ud2Vn*6FZLH<#6eiKXn<1wYJauADC1vL zj6<;wvuyjSb2+uIVmc#Bv1V(|ih&3xWNm*H+h4^vD4P|Nt#_0L!jxHuqHAhtGfhPKVemnX448inPI9m`nD%&Eu^n<@z0ETMC@KB5mcPTE$% zGLAT8Ydt&{8N53&Dl)qMnN zCI@aQLQGreaFwCMe2BzlkGj;w}BsxszZ%LXN;TUQIGcn|rpIJJ3 zo4vbMd3a`3RlJwSR#=;-SCRl1J)jt}vOcles>6u(0>9E+voB6$eBP2}F|5 zmy$>8=&qKM$M|VNmXgQ&`QGDc_X#?6n=K{h=*X$EofvWIR!hl~bTXCWn4G>>HePfM zgYIDPrR1qPrm6y`>2#{Z^yxaI%DGx@M$lojGouzA%caQalswzd<+7BVtCPAM&8;4_ z75UHAncE6W$@8#fa_hphFfX!suIZj18PB=Eyg&zTLm^v9X4dbEAYSLOS99|v=QUCC z6%QxQ*TL6pkYAGhR>#%?U>nxOOCwvLqp)0)pqnH_*vlhC+2v3%OKA%Wed=H69jyw* zOeJylA`ZqzoW9K>kQZ0_0oZB=IAXDmzj^`eRL%-lMVy1x=($>FU&S2P=*+8DlGp02 ztMzXR*9n2^guqo%V0Bi|Lh^dh)k5-yh=t@05Z2GVW(&z1qq2^<_UE8$dsw2wtn5lq zHg&<7XdQWHWZG1*J2Um@E*)4^?YHTyt6F`JPNin+$V5GIizk5StvVm8theh7tPouq z84rlwp>wdHc^hbI8F`E9<)!MXNF`mgx>v_v&9`@)v+vUp*jhTIx*uz0_U=bP+`#yN zj>D?z2X*vS0{NlHcpNH;U4(wv@A}A&$2#~&{JgB2ZoI1=)oEF01lXrzgn%y7SycHQ zayqtS1ZQE@jf5e_6OlckqqNNS3r2<5$>^F&WS;({enI*vomCal*uaiL?5k&BxtCKz zc}5%!)Ut0-w(8@$B4`zH^-*8z8)AzY(vhE4<&K#A7}k&djBORLU`DJZbJI$Ha&df> zTZ%;d0oI>R=aQ8HWdx3|AQQv8yU{{+J5We1l_Yiwa>Y*#6!jK4KuhaN#zMKX4qtO} zdyhy`hwe`uWqw%WaTkxW_p)BpSYoTX92%@_4K2)|jmEl>3v-xozy<#6V@1nZpT^$| z$ruj(tB#8(ZerijjE2z@!e+Laa^%!znV_lx6&a^VzOy(py`0vW z;=APsJA~ABV26A_mobD8N=$`wg*#f4?I?zEJ!c%HlQ!1X<7~Vl_fu25=_-`l$tGm( z8r#{}#!$nks>hG)tQPOc$cA2B3F{ zM6+CuVHV<tW+ov^D5B$?sW2CHaGg#bX;Q3CXMVEqoZ1~7RT-7Z zR@Y_`S3)tn8cdQZTM0BUHT6PyNU?-)HcfhjC4emiZFR^K-TM1NeZH4M_CKpRB9D4|56|0&bS<7a{KxCASGI@4ln55Xcwr*BTtAayyrjivcHMqD~-`2N( zwP{hS@w_49*_Wm{`&YBpwyKA9t?I$PsqwstZETweb~a?wOa^V5LDSNfJgjL2ZA+kS zsjQm{%vRKmf+zlVCUKmKVQr28DI`aJ$ooSSQjcQXHUn z%e-rTHwb@KscW&>>aR1ijIqPTa;}033lvXB>gW2U$k=ts-EeVwrXoU~$8}eVin?Z~ z{zLV9O1-ztqo4k_t5cX#`b(ZYE#v62%uxD-!jD%Cr9BWv^{!X;&>($QH`EFKa}gGK z!FO{r@O{L+pi5Ph{GzT6@gst zc3A$#?Kr|jm~$2Tx*K~T@f+ISpfoA&=h9yw*%vr9GlMKgd3#f4VDST%@NE01D{)hHPa=eIqp7nXN|yh2no)fp%MtLcB@oCoPTybBHAmd5 zf?{@36?}#OaUj4hkt4vi5zomkn2O|V_8HJiAfOKO%QgnH;{~uGdPQEDekHF0LO9TK zkd0(!KoM=IUKtWheR^f;v!P9z^}sGNYu6kn?i^Xkgp~}oBU{5LUfoJ1O>3wCjJDBk z+Qs|}bj^4}=}8=D(6Fe2?(DSUW;J%R;;K(J2D^|iXWG0~f8Oju!!Rd;S>TajUN z#bA(C46_z^a)*xO&(>%no4fsUOF~;@_Rj|FpM6~RG>FNV-&A~zQL0IcA^F5^;T9)+7qYZ+gN(}V8E7Z`zTw{@D9PG>o)>ab%ja9PHGCQ!hD>0 z5+>ClZggivFzxTBy{7#Hz_-T#mO;h1n=ROi8b#V5&P*?|(f8AUn#_;J6SiL3$^D4! zVTvrOQ@qCxtPT|JMzqQ8+>UsVwRSG|S(s6T7*=H(L0Xovj-#Fdc3>#j09^p!?_Db} zqNjz`I31tK1NWt7MV7r4RhETWW)3Wh=d>g{5V**Lelnu6HWPhoYqK;ZI`chs;{)bX zqW+axPi6SU#@T`HgOETm!XE3}$us?WMfbuvOa@-%nk9R#OsBp=BO3?2l?|(IdpOcf zw{ALhyM_w*QcVJy^%pshrND7AogRnAcf4C^kENt9yyS($!i(5B=zk}=k(M;pDOhVU zot_-Ao;Vp3VYXmluFMuJCjs+xEzGdX`88hIHK{Do{Ki0Ep=E}-qBxg@n%|pOU81Qs z&SIM5w>pI8qR3j>u6q($y`4inzFrYQS(Tp`(VHIM#;RJw%oo)xQyR z9dx1g>uVY4zKdj5^>@1L44-Z<*3E_*BbVrULJh9@Zro+Xy}*sQ{dB7#64UQByckm? zhA>%9FO%sLvT&K;f zBvyfwb7>@7?rmK?aYuwr*Ziskul+7rimP+>E|Fgq{lDH6U1Ch;DqA-PRwrsR2F%9c zth5UbtAZi2v9~OgjcbL}blq{hZAc4!^92XtO>U)ex6$B*SQdFC{~0%$8H zoWX!+K44)f@V{U}|ApAc?4E zK1kPu%bqGR4X&rTgP~3DFvzFeL6zK&(mgYVNo`OIdWL&Yqi3l4wQ&ttdqNmaB$bV@ z;mkiH*aRq}&kwH*X|D`9m@VSGt<#KAQ;BP1x+t@{9%Q3hAh;WHrFkS$IeOT-LcE8X z(Wz{#Z%GS_>-B5{rFo+_WO1;OZJo``TPrtefiLpVD!>Enz-4}gMsH1{S$@;#O>CHL z(xfRpYqD6mM5Bk%=pHnBlQ1Y_=$s@A_K8e4z%xk|Z=U`5`WK@`#oAENxM^K!+!5Ur z+(3aUQ`8;^C?fA7X)MfHY$z{|qDC=iADHuheAb{3Jkv)khwd$=hrLx% z(Na34J{wch5D`tZF#$NPx4=5~)JPZTB z(n3yY0g5XvA#2!3tPdFH8_F9;1tF|)*s<3HjX-)OXF0fn%>~9@HWa6a2&@C* ziW|r4BR5>IWE+irJbQ_aiE>F4^%k_g|6B9>O5YRGCF&a1EL=06V(&}gyfmk61Pty? zP^#X02Qqbzuo9>@WFxFWWTNqvlNb2-Y!JI)Kg*Ea)EXKag}WeCcQ$gBhjLEx%JePy z;7A#s;S$kCxWW2neP>ZB+|@b1afwu^8z*|m0t3yuHT$VS4drD~)KA&_TW)kN2ilQ- z>cM_Mdu71Ebe;e10Q%J^A)~(R*#@Vvcf%;pTUknjvXS=BZ9dAn(H##u0bdBeEGL zy@-U>G+N|njXZ!7t4LZT^t@&&MnuNV4<*rPwQxO%P7!>21c#NIP#uo690Q-M*UdOd zgl7SV(6f?;bwL_6DYdn=$jhS2F@86dR3gT0&)6{qwQR6Mi?~~6{$6xH_<0@%1pKT# zy`h|#vo~iSDs|1hz3cnXmzO72bS^efl)y9oj`sO64S^6qgJAlK9 zmC%E`fT&n07K#;~Tr*malTiJ*&@<-SGjPMUD2*^jWW8G84|;AKyulu-HcuO^cdOR7 zWaFCYY`i6{8udax6D+uWPlF-K`oU5L8Mdt*qxY>}Grgaq|Fu-6 z>xH6r1cc&Xq8Z*k$$C1SsPtgL)3JYumxqEb^Xo7=de}I6WT>sx8rb(_EeZxjuKyw5 zVC@6sY;Cvri|1tVud;9x3X1IhwcI&dQ|5oXd>Ti|D5BEvahdgy31P4DZ0&U)S~whz=StSR2C4T+}N8dx z-ZI3LJDac9&}@cwVQYkf&u00`!?|uVc(2Oz@si0fZ@zI|2|WCsXf6&;c_~KBA?kxZ zyrH$j%zEo*eXQSv>ZFlx+!X#@RTCZj>q?%~FRlb?k{pxeBi}e$;5P5%WX<6uGjK^| zM^KZZwCp0=d9ps08-D>~5SepqtJ)wUOV~0U2xyLaVf+wD3g^Hb_7~8#JY`K=i#%&O zjKxQ)H~)(bxT@G9=;$2PkOvTAvb)%W&rIiEBxeg~+}>~9>U3*< zHU~LGuToy7*feawZdR+SR9uYbz^% z{QmFF!3cFw7K=xKWj#1GNN8ItLVKtfiJ>kYXXA&#-6-1CX_{OM9q$m$a>G?6sttLx zxELOKrUViK-27xvcE zXL+(b>SjAw9?5vHeq|ZZSL1gczr*y7@LHP-)rZ@#vANBX9Glmr=31z+Gc=$xWYv%l z^L3e7wUA~AM+DjbZrnm-)TEUWWV-B4nbe`>Bj`VAz(^fbUm7hrBh_Rr$;h=Be9D1- zQlaa5P)_qn^vMHNVq8+QkxKx?gDpBKyurzWv@R2JRNFI?6`KwyA1nv|$eQdY} zu?r~VOzjQf#rVnIdO;WE8SeC90VJ6qq3kpI~yCLo-d z2{?m+Niz?%%P`as>(R!bK<5ygwUmLekqLfglhLTTwm!>5R)MdslYALZ?{#Q&2%Pk- zK99IG`{rWyeZ-~ysl{(&%|BeKPXLK}u>!i7o>zKdi3eEP-s2bV`wBKEX|%0wt|vbm z4w(N550_8Wl31g03Ovxr|LA#PbssU+4HOUe5!d`P9wX;uS*1Ck*r!F7{_{+R+$X?U=h3( zkd;?*;Tu1@buIT7DKFd1LaFwjc2cX#PD`(~Bfcy8|NNJWSw2EhkK-W3N70;uk2{uZaS08!%wLKm1t|GV?4P@XZr|ug42;a5&m2ki zU?oxBiR>LO{e$~FWazF{-S-q1^rLS0sGl;k{Yfb-fb4!!`H`}}@K+@A9nflPDemWG zD1Agsokzyh$$elkptAV{60f48G?0vaQ3A)rE!r8~R)dmQK2OoOWtqQXM?X9x<(I=U zF#~vL=;KnZ+Dm@ePT2Y0sBpwogVTD)ZAh%7hQg8Jzc!cZIO>5~%N*`colxa1$mnIQD?xiNRnONPmV<7f}hAP#ow zMtU`Ffupv-QCr}sU8>JeR8hN3U!JId+U5RH3Q$`p)Gi0qB7KJtdCn{717N% z$NDhi80CT#{=Ez3x;5ro7uAYx(+4ip&$q`cwQdI-i^rw0zEt5KX}iVY-Vxg!wGwyg zn-wZ?S8QA_&aOHo?vD91#mFS5Tkwxe=7)P7wSx&Q-GQ1Y^ISB3AFV_b!_$ovzAH~q;E*{nwE;N%qqJTj2)e3#LLbBkI z7#9lh+F`5}GI~E6^Ti8M@-ZF5qfuIDKBh(~hkfPch}{vh!N5w#(p+2Eo|$pA7MA+k zF;8uu+Q72D*PxfC)K)8p4`cf46xoLFcG!4zEGy4y=dZ`^cs$1U$Hxm}j!h{8$EK|X< z@+&rA2iUK|FSSw{FCJr)ToB~GokW`B=Q? zUx}E{*0=jZPg2V!sbznmDU)c5?qS(j*s=}&zp>fl`Z8zOFXOW3^$CvbdmUn;XW1L) z`y`xw%98y9CE+EeqFBi<>YE+nu@_?d8z1y&l@lC}&CQ}mi#3b6o)mLE=}f|;?z}at zvrFaY4Dk6$Ro<2I5(L^5fx1&$%8>(AO zkh62wIBFFK94yGb!|o;7QLmPiTeC|3qta1gRkh{hX8VWlo2vqCmutPpez~-D_Q)%I z5s-~>dhrleVF!m+R^r(l_OA?}2<&I2oM)NjYw>-XLI)>srQ^(qV9pK{5BAAxc&3$2 zB^XkVf(KT09+>HS=!d8qv3GfIAEqsL_4g0@1QFi@L8te!;#E2EGcH|zka!4I->s`W zJ;uhcC12UBQ~Ye&DSjkr4z49?(D$zC9Gi9Kp(qsa-F;E!NZ-=Wh(8;@ENOmh>Cfh) zTXMdZGf2YGTAj+mL$Niy#X;Oi%KWh$^OmXSSmuh^kvwyUSCAF0nbWnX$DaRi)W3hV zYSaG&_N#3;cg>OY-MFTY{r~>52D~HJ(rfdc{mT6s8+!HY`d6=DTzl``uT)s2Z=ZfC z5j}GGs9(Rje#L(Ml73RXIATTvzW!e-=i4r|PH*W|%0+RKFQ$c}3SI1S#C;Xq_en&p zU$ed>&95_=Ekz!=MtO3mFIJO>F60xpRTy|T@ciiAEFe~2sO5r67z6Nn$ZE^H9!`n2 ziZXaZ>eH^AG~u*bMt6$fo`C+!7I`LXP zQ)^L1gykRstnXh1JD^gUkR5}gHwUB@?*G73f=>!z{N?!DH@RTAPOwkMM6+pYvpNIiC zL5#=amLEw5oFd4x5ML4eA+8X+aVA#o5ud~=$-$v8r1HrcA@Kbm*6Sd#DYfy1oXP`^ zXP-_yFLo7RMq)FPvANwcuZsMbu{qxVTi@MbK+a4wS~(*wh+KJ+@a>(-{TZB8sCV#5 zG5jbNM;ZzEQ4mGXU0rjzaEA&Ol%HVH{A>*wh_4dHX{uO)~)DZWbDo*Zb!q z0r43cKPD)?a74W`y4PFI)i?f(oZrQ?xr*U;=m9kh8-AAS@PzLG&G)f!SA_G`U1BHO zH?YSY)=~2~@rq4qPK053&#+Z}udFm1vUkgSSu?{uI(pYQCi71YYg8U_LiFscMtSbn z@i-CV0iB7X>EEuA5>w8O#&s5|?<^#SI6_|~nlGPamZ?wp%8I3@q$qu`L~{_*d6UZH zULS1cW72ntp3DxmS*~Kn<{9*Ftk9sIl^2y)n?==P<@!36i+=WBtbsoY1ZF3u?^0tg z82|{YYur|DxF1H04EDgP6|!dPA{LN0BWp%1EU$nU!8~89j_4bFjQoqKZzGAtOL+d2_024Q z&*8sO4j;2xf&2M(7KXTwV%UEzxPK#))E`gxLJ5e2OZVl4=W%y?KR}0&F`ZO-^X~>cHc4`d(4LFW1zla z_O^^U0w-8Y@=9R$levT~%k&^C|hY2h5kDmunb)fzQ+b=H4#nbtZhi zEQg1CLIqhhFrYz5LUk zo8VVIAv+?$RE%GHiHOjP+kCmlq^4j%>ZiMqey*lDVCn@abUSBRHf6=K7`!3jtJP0| zcH`fyt;-`@9tC|}a!qgRV2!lbB3#o|>~(ppgGYUh?dwb4;@8yTH{```Yx2P!zp|u$ zJihAOy7KSY-8<>+h*1Ek-iR8v#Iar5gYP2Jl=*F{CraD7UDeb~3b4N~kRIr2?z+;O zZe*V-(+qBsGaCJW6Ft6ZIlPCHH!^ou9R|jrxNW9eBG4SGRE0ArLe4rVpP_b==}}PoSn;j9*%Fr zVFw)&*0I1w-{*X0j}PQ!gV@>Z#jYkux-ZR5)%`VDSM}r=3|+Oh^&FqM?NiIzsr6)$ zB$s_;g;e&D;UnCwxS*y*F8Q0`l)qzkM-90@rumzd!}~Gc#gkvurxDOTCBx_P#V5n3 zWLUc#*7q9M=hZf+My!ms4qdW&rK2N1Rc`tiR?U;Y5Jq|f;Ky)-=N?Hg%P#y^WcYjb z70SN8^hJ!6jW(3MijBkSaBNk6y`ts=53c%BuK&E?3dNW5f8fg_bE~cP7m?Xr&OE>Xactx34=gv7uZ*HqWYS-yGxumT z>`rUAOyMjw<*fpS>{~hA*f7i04ro{ECSy(WsxXJEFgD}r`lb(Na#oAfEeokG!>4%# zSitWL@XaX9^VQ7Q<*A8HQq_c29z0XF3t^%()GRsd2%cG&%!#HK4~=C$J}F{LXchK0 zV^n39AOAPqoLoIxdeym>jFMdHQ70a8^0RY=j^)-3mgw%e4!2LhqCEk>$1H)Bw-(`A zZR)NQ)|xxpNZZ*r;I!?gZrp^4#!UJ?y zHo13&Kv@C{bzixYz&c*F?P00y(F)}X0eY!6TzOR6j@0G{qDu?qiJU`QN5`wL&-8;@ z6WJk0rSc}S;=Hy%X-;f?A&Gv7y|-_l$D@+P^ffY zjOqKf`o=bFBz5XkIr0ExJhl2U@0^|L_0@GQXuLk$Py?qRgrL^{+>;`(`?2k@AG?@Y z0*>;2s+k1b=~Z8|^|j_!?UZYKMvYw6`U%EZsvE0Du9_`$Qa5HUpcQqQFpFQ!uup_U%;rP}j53YqEj5P?x}QeT<_}>|EwK0r1ZVYh^WIsBoJF zH63DW8T+89w1PWRW`*p)wb1B@uto?G<{z8hieYWI_V|RzIyOQDwg-{zg~&RN2m);p zH=TgOnT|rCa{=in;6;S??|kP51MT5(I)IuEiuPsYI`vtRt*0_g;L;>q z#QIn!xHKwDo}&{5)iVave!MoAM26!c+kk@zt=i+q!nm<&KRd#B2FM+#eTS^}v%U6w zrq5%2DI?40L~*a_@uA4YM$1Vhmn#<1UYn#5QW(+fQ&8{uE@m;7)K!+TSKTamFUid~ zcM>D+4NJS+6l8wD6G-+K#E+$0=5p41Y<{*jJXJ;J1;O3y64ZDGvGvtE+dbA^-@$QR zh7cN}a>K!n5Q`br24;>>eYTX--fhvvTxEkcASbGoHds-$){jkQYa$XHW(nYwf?NHy z?T%|}wN@_pm>tKfPS1-D1E^M;c@4i4N#--geZy9s1l5D>tBtMekmugmxJU0{U=g~l=U${C0=_M(3e zK=#6&M+yi28x7^PtIo+B^p2PVZ-M=)E;NY&pmDrG zN|qhjJnu!h7_92_#5p!{qx5lC{GmE1Ag-LCzNe}6(5^=5va=@yf%@tKxQq%?ZTj^e zhDYu?HD|A!kVbI0_9Es3&0OOSYJI?R3C~=+QSxRoz4xI(YQ=jAgjk&KMu^3E5#l{m zDUQPE%bt}pkW7me(zj!mB;hWPolERq`ckbg`1g_@V~a(N+l3Dk`!JDZ#*aT)bXNB1 zNmBR<=#lxrcQM&mt#k~Aclapi`wUq~jy1)ll+b6Y#cPk-ymj115tmg@)XW&1R*o1f z@4Qo_b{EphVZ8Cx(tPD-=9r~gY6t=!F^#B@kC`$c-p2I_)Tpt{_esZgWdFWdnL8}| z4rsTS-*Sg%Jch+5-H=MDT&|^@mOSt4;4jPhlR@QlDo3mLZ+-5wU9S4CGq6vaR9Vk` zHo4Cu_fdRHT9_Y2&wRn62X{4XVz7g%&&XkmJr8xYV(=VM=V^tRGyHU6kev0YB>ajy zSsh%~E#GCzcS;;4aCrO_NC4mB4aMdKG<1%&+QX@6O6VkcBd~kq@G}3!9R#j zN53q~joiO+f%ZjpHyjzLjen06!@y|DX2G zJxZ>k&f~Z5?U`hz6J{pi5tT=kNsy2P1|%dPn%pD|GZP3Quxmh2J2Rc6(>>iY{m27Y zGlYkLAS%iuJ~ljD5Q2Je6%RhZ2lzmI00JtoAoxUA*mZZ&McvQ0>UQ@Ga*pThf4e7h zIyY6f-oN@)-KzS1>-Upw+x?^rVVBnA84e|*7$8pp)6Up+R=SVM9Rys^Vzus>~ z9*;EL-wVj=DgWy_tlPH+kF9{q|<+g$3w>{kStCy#u4sD0+o5x5z^D9_vlU7C6PZ zHNyV0DR8+gGM`YT-YIQNw?*c*DDKtdcUvT*2DkFekb|!0-0nSnArwf(){jpQ5ci`n3RUSIM@1YWIpTY`Z+h= z50G)%aerlPJbfExru8ko3%>olj7*EZ-psTzzZ)~R2!!d_FFO0udWUssMElqh;eSj` zt4eo8cVX7mjLVSg4Km*Pq4b1~y$0i#k-bOupD`_6u=hshUTWB9zY<}D8X8^Gh#dr3 z8KS1V~8H+GyZK8hrE!nRoqk`;KenSgJAvI z7%*A3JHRn^uD_`n zt%FoO)1K>=I_Jg*^=t1z&CYF$5geSyu`#;?Eo%-LNc4~$Vvpb|@EsPb*ZXL*XuDln z2lr)TafdgAjm7Cpuz_v5@31e(UNv^3&-WIvmydt&`6r@r3}9pB+I!w5lh>HX{&(ad z&gS(k>^QoN?sgI97VSg2R1d9vsmBE=Bl)OSRnuAijHenF{>I(6cc(Tnw9ZxZ5T#>x z!EfB1_g|R8_Ep9lZH`#Q_9H}7sp1}O-{e~HCPinHafv%;^4kt3|4SvocRkCG|At6|~=gRhrsa=!Pq_4_)Cs;vX^S&~EQGDIFtPsv;>xhb8kD8<}5( z@y}@i632sq;~ZsUa~8)DYHX|{iGt2)KEM%7zrP$!*MEQ`q>hZX(#M$?EycPi&FmqS zmJOYiOxIj`b{)yvEt1t~&v2YIj*8|mc8DL7&L*UHV|KT5Dc%h!!;gj6jVWWe@vIIe z^rNYwy@@yC^qbv9XUhFJQb{%MCXTw1OIXw7VyEumpCrH2hxr!jsf4%c@-x-H6}C7o zV}Hzt&4qtL+APT@wkOFD{SyqiSn+R9nV2Z5!tJR>7;~)4oozHoLULy_>vG>E(I>g@ z^11&ca{2v4`DM6nP6)=Ya7%u8l4OT_Qj#0u_#`y`REmq#aai{vJT{kulHn2ceZ1ws z@lIWgCXYMG{iKY2Qi~$d@H4t64TUkb;&|tuU3Eb!(*2*41dnz-5z((ta=jJ=BR#8H zaL&vN28dfx=(;U;IP9{FSz?wAcqt4Cm+0JlE9d0}e`8zqyW5?EcNBF{?ye4VLjFZ} z#+g7OxoK_ZVu=yJVvHh3*WItvzUa#-0IO8=9(Vcr%c%kTl@!P1lyeU$G*Zy$JnY21K@xqU07@ z9qwr5?i;;^;}S^rcnUn!l>Vk>BNXLIU(w-CYtg($?~!yKX4l+=^kWH*%sjUr{fRUm znR!KNKH}vQ6#b<15Q%G_a>}!4jg$14WqtOUl;QUjMEgNxexUFC!ztiQb2&^~Vpn59 z((OKeDhZD=c-HA8IzRcOEL+jGG8O1=*@}#;)X&pZtLIc2vYG)&dYr4z{@fMwbBcK= zG7m-RMh-75Z7h>tTAH!fVJf9_A-oAlc~9sjs3M`w=3~qhW~o}A5NPOyBv2Z$Bbz9 zBs6Z(Y>ia)sk+zGJJrJ|s`i zUTAru>*ij4M}Eg~k>70MIuX;9(vL*U6BYQPbR_xE7gKgs8~VLhNgI-e{l7^{qrvoh zsa8Ujm?kL{iX|mBBqrD!=rybCiETu(N8(!9;2Cx9kyK`7#;lY~Wh+vZf|s9Yl)vQU zCvYwD6L*pCj}n^b$l|{xE1`-m9pA{M8g%2KS%%1El^3`$5stHgS(dR+MP@k% z=}$$R?XR{dotcYo8J;C}4Ogj6e?gL&Q_Y%H;1T(jU#QjEsdlZa=vtBaV(I-CO)rr} z0I}D*1#8x~e62;bo;_XPb7GOjMN$bxz{R0m+otDfeAP~G()3jCcOtC&)YSXwqpJOG zWWLK%e@p;rCap_DMqOn1^$!XF-5;Mf*n~ij*&jychZ=qE*y;)(o9-Y@x^id>IB4+C z8B|4a@0KWRdB8sVC|Aki2w_(drYm6VdOQl6COO?uWO_RPPE)HtAR8oVHCX7YU8@`V z#5(LEjCF=_=cpD64)83ZTq{!q?gZvAI{E}hzZ2BafS*B5W6wqzfrEC*fXwZ3xjGay zgCr*HC>4}dUk|5zS=m(~((do@N^Zz8L-SPDuMS zpX28uli|AObCF%FJ4a;Fj}q(0q(5UFEP9Xq&&cr8 z79D(aLD=ZehW0KYq=7o4A6szfIPCXuXo@0qj_c_;+JE0IRJ7l~-yP~22g$xbGKY^= zvM&iAO)^5~V6HjjLPcYNK~A$XRE@2^M^3ZVzb6!Knyvo5p6BPouew3&QB!P-p{{D6+49O2iP9xQDN@(f{F%&p1TpXxM0heaTv z0X_qC#>-j%_rOp`w$IV7Ps8l{LSo-x|0^>59t`OLK(l>B>Jz;6VNs124~A$l6n+-( z_YzWnFSKYP1z&q0JVcx?M5~%8dfqy$zuWCT>I&}#(XA6&f;wICoucPsAsAej^zqO< zuIwKp9D~th+w3D(MuwXZKNemaFs_5=azhD-E*s-M&BG43D>^tBx!+bEN{^c=r@9$)BB){*#Loi3J`GoR@6CJ z)cMztXv|2z0|Mb1_JUq?4B8h%;B&y}u<|D02j%=Oq-8*)PUhPjVuiU;*kTMAn>UN4 ze(#x(%MOTtyJPrGMf^v|B)-F(hCS*qW1o%CdHrlO0F)jI?id7Y3KAZ4=@^(ZAXXIQ z`STB&Z1^JlF*E|{^$GLMrL326J0bzj^qdPeY%${6HTD!o@>4|e@d(`F9rh2A(ND~K zfuM>w!97G^5h>;`3A=*v0^xE&qS!Afn zWt?w45}8L7?a~Ny&>Xfjn8dx{a;fX#iz4tkVxcKM66Wa`)sIHz(a1jL24k;zEYbj& zV&}US%oqPV$f3)?0sKgRab)N730GO3^i0bO?ByKCav3RND;}9a^PY$ucx0~7G4Ol% zI1Fa&m8$;&bES@+6anF1#N_~b=Bmi>Q)j#{GVkT9J!sz_8QkxuaaTv?YBlb?5yZVJ zvZu7kxne@MuKfxQ&iOM$%<_ZkP z>}T8omku|U3AMBzfP!{Awao;U^^g|gDX#$#sM543LD1>mP?)&8Z?S@<` zEQkrG^o&)D@I?H*dwj=*5*97@fQj)JmR=+o);+=rc}#Lw=DBq0O~Tc@nWYsA=2Fi8-ra8|F~{ouJ5JIoH)MlGTzE1~uT;JlbK7PWQ! z9(ICW?}g8AD)~)q`7NL)FG8xKpI?<=!_(}DTTic7@`aZyR*;>xs!8hI3Pkw+iRF5swU#liZyNZ^TG zq(#UN7pdZDRb1UC#XYU=3mw9O6?a!E5|f49hugrQMDmsX%M%?++%fW6%;Kk6^*i-R zI`C!*?#e?zY+zFQ3KmVH$vmaK0bMWEXpa%%U|zWFl( z5nC~_D3Rb$%IxqUKtbO+8~UhVt$iJCOrr)UqnVC=CHk&fQ(B z;9>WofT_+iYfGgo^N~~v(_B)+GiM(Y%$9CNM+?-1_OmIak>N5*m*`M@B-L6%>?-JFh_Sf3N(#E&nm{AJg(Lk$*|ce}eocwESq=VU9?}`rn^fcygO` ztG6f9$3Hj@|!zJ?VTxOBLC&ZcF+g((IQU-=%ILE;t^JA)i zj9DP)ub?m~{n~h1_w;y2S7tVI4_x0ZBs!3~K?42sMu3Emjd-jcx-#7qt1&(n2b+6R zOd~V&f;mg7uENbdnrZg+uT(5Aoub#S%ybQFyfZfUu(a!-gzk1tL%34i+^2S~uzRXp z?MyS>m=D{te=0x&L+0lFdxFlOr>7_2uT762=+GmhhyHqku1>Q)oZS<=U2?lehkwnJ-wfW)n4#yZ|4j;a#C!F4&9_Yo@dn}~4@V(Ko{8bj zM9wjh0?zFolPJ`C)X{G|X3?>WmmC)_U$OGUzBBCWUo#z52|cS0oYtMr95mzLH*6}E zN5|Hiw)U=>`|kJJsryekY|a6*Iy(1x-63;lU%2xh4n2JS32%PO(iJBSp0e)Dv)*?0 zId6Z*JF`Q>xeXihn+wHCwYL4-^UiP9YoJ)nZOj(U`t7xxspiJ&xzbQBSXmy)=1V45 zsgx_h+FZ3>teH}|W-7VSO0JqK)w1i0xnMPKvZhws9<0e#M)K8azFacHxl%qi9Gp6u zt7L0>p>%jg^0gZ8SC>t-KD5bf$QN^_TrtD>N^YoDu553Hj8@7+xoS1&Q;giUe6>~$ z{ytl*=S;0!HpOgZW6o?)%506ow~wkGraGD(%9&zrL(RB4Y{}D#Q|tIPn33Fw@~0W) zdWBf)>(%YSK&eLS>Z8=jRJT`axe+szEf!m`cr#kAWGngNc2h59w`B80*XV)LmTWOk zqFk;Jtf-W$)rG@36=#b1Qi1f@;f3WAiChbP*1^g~D;+h+8Jevqmr68UBoa+)bOChA zRVI+GmLH*d<$7&$Ru+bVDdZD{qMf1j{Gs}l#Ra74>{Ms8cp z6T%Vw#BI4D_1#FemK5KhCcRo8fv+UPHpOyz)bU3t zJCd-4BAo$$jATpOO?i}tivF(gNgvQs*CoTb>QE&=3eQp3X16ZS4!<&3d^NNwUmP|K zmQmx z4SBMyFhI5td!_GdWs)`38k{tuhPZ*&qEr$~yeZC12APizem5Cq)!<|ZVK!x}W_^y{ zsOD%BWvr=`YvrMGG3kF%G^wE<@U7kv->xUPD#|2`R)way8WpY9@+CjLB>h3b35TAN zG`Q6_%`&%EU=!DTH-jX(HG^Hln;bFeb+taqY#@@J?yBH3QG!;;>Pfz4@(tM$%^{QH zHpb?w1-gkKAyd$ZIJs`CbG5DIN})OY8~%yI|JCM~l212rI?1m0?V_XC*Eei{9sFF{ z>hPq+Of^G(%4$(TwQ9XwkuAAa=1L5c4a~2`Q`l5D)oX5=YJC;5Mc8Y2yE=KaQr@VE zYQn@f@hu~R4}lxHo3f>0M#WnAmBG@Q#7?W1`4;514drsfRF0-FZ|3VG^m4s49K6+a zd-AIB#ckJmoH^%g?>)jR{R;m|^ m^MZxF>*n{a +#include + +typedef struct { + jmp_buf* jmp; +} jmp_state; + +void stack_manipulate_func(jmp_state* s, int level) { + jmp_buf buf; + + printf("Entering stack_manipulate_func, level: %d\n", level); + + if (level == 0) { + s->jmp = &buf; + if (setjmp(*(s->jmp)) == 0) { + printf("Setjmp normal execution path, level: %d\n", level); + stack_manipulate_func(s, level + 1); + } else { + printf("Setjmp error execution path, level: %d\n", level); + } + } else { + printf("Perform longjmp at level %d\n", level); + longjmp(*(s->jmp), 1); + } + + printf("Exiting stack_manipulate_func, level: %d\n", level); +} + +int main(int argc, char* argv[]) { + jmp_state s; + s.jmp = NULL; + stack_manipulate_func(&s, 0); + + return 0; +} diff --git a/emtests/test_longjmp2.out b/emtests/test_longjmp2.out new file mode 100644 index 000000000..829562159 --- /dev/null +++ b/emtests/test_longjmp2.out @@ -0,0 +1,6 @@ +Entering stack_manipulate_func, level: 0 +Setjmp normal execution path, level: 0 +Entering stack_manipulate_func, level: 1 +Perform longjmp at level 1 +Setjmp error execution path, level: 0 +Exiting stack_manipulate_func, level: 0 diff --git a/emtests/test_longjmp2.wasm b/emtests/test_longjmp2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e2a0448f36d96229e441fa9bb6ef256e92a0af29 GIT binary patch literal 52461 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 +#include + +typedef struct { + jmp_buf* jmp; +} jmp_state; + +void setjmp_func(jmp_state* s, int level) { + jmp_buf* prev_jmp = s->jmp; + jmp_buf c_jmp; + + if (level == 2) { + printf("level is 2, perform longjmp!\n"); + longjmp(*(s->jmp), 1); + } + + if (setjmp(c_jmp) == 0) { + printf("setjmp normal execution path, level: %d\n", level); + s->jmp = &c_jmp; + setjmp_func(s, level + 1); + } else { + printf("setjmp exception execution path, level: %d\n", level); + if (prev_jmp) { + printf("prev_jmp is not empty, continue with longjmp!\n"); + s->jmp = prev_jmp; + longjmp(*(s->jmp), 1); + } + } + + printf("Exiting setjmp function, level: %d\n", level); +} + +int main(int argc, char* argv[]) { + jmp_state s; + s.jmp = NULL; + + setjmp_func(&s, 0); + + return 0; +} diff --git a/emtests/test_longjmp3.out b/emtests/test_longjmp3.out new file mode 100644 index 000000000..c0d39cfbd --- /dev/null +++ b/emtests/test_longjmp3.out @@ -0,0 +1,7 @@ +setjmp normal execution path, level: 0 +setjmp normal execution path, level: 1 +level is 2, perform longjmp! +setjmp exception execution path, level: 1 +prev_jmp is not empty, continue with longjmp! +setjmp exception execution path, level: 0 +Exiting setjmp function, level: 0 diff --git a/emtests/test_longjmp3.wasm b/emtests/test_longjmp3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..af07d89df1cb2d6b3d1053d82b6afc13fde63c2a GIT binary patch literal 52618 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 TmJ9k;_5|g8Iaryj3=aA)C89(e literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp4.c b/emtests/test_longjmp4.c new file mode 100644 index 000000000..88b150b93 --- /dev/null +++ b/emtests/test_longjmp4.c @@ -0,0 +1,47 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +typedef struct { + jmp_buf* jmp; +} jmp_state; + +void second_func(jmp_state* s); + +void first_func(jmp_state* s) { + jmp_buf* prev_jmp = s->jmp; + jmp_buf c_jmp; + volatile int once = 0; + + if (setjmp(c_jmp) == 0) { + printf("Normal execution path of first function!\n"); + + s->jmp = &c_jmp; + second_func(s); + } else { + printf("Exception execution path of first function! %d\n", once); + + if (!once) { + printf("Calling longjmp the second time!\n"); + once = 1; + longjmp(*(s->jmp), 1); + } + } +} + +void second_func(jmp_state* s) { longjmp(*(s->jmp), 1); } + +int main(int argc, char* argv[]) { + jmp_state s; + s.jmp = NULL; + + first_func(&s); + + return 0; +} diff --git a/emtests/test_longjmp4.out b/emtests/test_longjmp4.out new file mode 100644 index 000000000..53fdd41bf --- /dev/null +++ b/emtests/test_longjmp4.out @@ -0,0 +1,4 @@ +Normal execution path of first function! +Exception execution path of first function! 0 +Calling longjmp the second time! +Exception execution path of first function! 1 diff --git a/emtests/test_longjmp4.wasm b/emtests/test_longjmp4.wasm new file mode 100644 index 0000000000000000000000000000000000000000..12fbeeea708f2a9fb87d07712c5744b3e8c07bc9 GIT binary patch literal 52310 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 literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp_exc.c b/emtests/test_longjmp_exc.c new file mode 100644 index 000000000..ea71f7b2f --- /dev/null +++ b/emtests/test_longjmp_exc.c @@ -0,0 +1,35 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +jmp_buf abortframe; + +void dostuff(int a) { + printf("pre\n"); + if (a != 42) + emscripten_run_script( + "waka_waka()"); // this should fail, and never reach "never" + printf("never\n"); + + if (a == 100) { + longjmp(abortframe, -1); + } + + if (setjmp(abortframe)) { + printf("got 100"); + } +} + +int main(int argc, char **argv) { + dostuff(argc); + exit(1); + return 1; +} diff --git a/emtests/test_longjmp_exc.out b/emtests/test_longjmp_exc.out new file mode 100644 index 000000000..b12dbd822 --- /dev/null +++ b/emtests/test_longjmp_exc.out @@ -0,0 +1 @@ +waka_waka \ No newline at end of file diff --git a/emtests/test_longjmp_exc.wasm b/emtests/test_longjmp_exc.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a1072597aa86ba22bd22a82b6bb39825a0a6d7c0 GIT binary patch literal 52145 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 literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp_funcptr.c b/emtests/test_longjmp_funcptr.c new file mode 100644 index 000000000..c2f0ff4c2 --- /dev/null +++ b/emtests/test_longjmp_funcptr.c @@ -0,0 +1,38 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +static jmp_buf buf; + +void (*fp)() = NULL; + +void second(void) { + printf("second\n"); // prints + longjmp(buf, 1); // jumps back to where setjmp was called - making setjmp now + // return 1 +} + +void first(void) { + fp(); + printf("first\n"); // does not print +} + +int main(int argc, char **argv) { + fp = argc == 200 ? NULL : second; + + volatile int x = 0; + if (!setjmp(buf)) { + x++; + first(); // when executed, setjmp returns 0 + } else { // when longjmp jumps back, setjmp returns 1 + printf("main: %d\n", x); // prints + } + + return 0; +} diff --git a/emtests/test_longjmp_funcptr.out b/emtests/test_longjmp_funcptr.out new file mode 100644 index 000000000..0e823e76b --- /dev/null +++ b/emtests/test_longjmp_funcptr.out @@ -0,0 +1,2 @@ +second +main: 1 diff --git a/emtests/test_longjmp_funcptr.wasm b/emtests/test_longjmp_funcptr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2d642c2ebf3286eae2e50ba87eb5310655457def GIT binary patch literal 51735 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 literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp_repeat.c b/emtests/test_longjmp_repeat.c new file mode 100644 index 000000000..43c0ac331 --- /dev/null +++ b/emtests/test_longjmp_repeat.c @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +static jmp_buf buf; + +int main() { + volatile int x = 0; + printf("setjmp:%d\n", setjmp(buf)); + x++; + printf("x:%d\n", x); + if (x < 4) longjmp(buf, x * 2); + return 0; +} diff --git a/emtests/test_longjmp_repeat.out b/emtests/test_longjmp_repeat.out new file mode 100644 index 000000000..8f4183b95 --- /dev/null +++ b/emtests/test_longjmp_repeat.out @@ -0,0 +1,8 @@ +setjmp:0 +x:1 +setjmp:2 +x:2 +setjmp:4 +x:3 +setjmp:6 +x:4 diff --git a/emtests/test_longjmp_repeat.wasm b/emtests/test_longjmp_repeat.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2eb523b834434ab0a1f32519d3777ced5d552c6c GIT binary patch literal 51762 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 +#include +#include +#include + +int bottom, top; + +int run(int y) { + // confuse stack + char *s = (char *)alloca(100); + memset(s, 1, 100); + s[y] = y; + s[y / 2] = y * 2; + volatile int x = s[y]; + top = (int)alloca(4); + if (x <= 2) return x; + jmp_buf buf; + printf("setjmp of %d\n", x); + if (setjmp(buf) == 0) { + printf("going\n"); + x += run(x / 2); + longjmp(buf, 1); + } + printf("back\n"); + return x / 2; +} + +int main(int argc, char **argv) { + int sum = 0; + for (int i = 0; i < argc * 2; i++) { + bottom = (int)alloca(4); + sum += run(10); + // scorch the earth + if (bottom < top) { + memset((void *)bottom, 1, top - bottom); + } else { + memset((void *)top, 1, bottom - top); + } + } + printf("%d\n", sum); + return sum; +} diff --git a/emtests/test_longjmp_stacked.out b/emtests/test_longjmp_stacked.out new file mode 100644 index 000000000..d16a8e7da --- /dev/null +++ b/emtests/test_longjmp_stacked.out @@ -0,0 +1,13 @@ +setjmp of 10 +going +setjmp of 5 +going +back +back +setjmp of 10 +going +setjmp of 5 +going +back +back +12 diff --git a/emtests/test_longjmp_stacked.wasm b/emtests/test_longjmp_stacked.wasm new file mode 100644 index 0000000000000000000000000000000000000000..280a974d59bc2b87d4def4d0ab998761e81d1f83 GIT binary patch literal 52712 zcma&P2b@(!vd4eVIrrRqnL98;6hWj~5KuAaw97>u1ygww1>OQ$Wr|uW! za=GYlje8{1r%#Wj?-A)w>_PtK_Q-i$&Xak|?U9ntlaqt9TnDQ}7Mt6nF#Vuva&%C1 z@E-9&)1!m-$Y)XU_xX@anli2Dq$!j4Y};qj_LKJ8zwO_-yyAN8GpT)-{oD7P+&!{9 zmB>l^9kA1+_H}ZpvXzys7UKn1*mJM_+uC=WvelkbrtIIoZQK6;><*!ir|#Uo=iV(l zPMg&B_sRSJvkGX+fs-dU9XMt0iTm!G#ng9;sYdne9`&ni(`qGq>^o)J{w4 zarIsKHrybKDtARyGxZ?mz$snT^_@6rzo~n-?R!A`q$yxAWuNB#4#*`!Ye4su{U+_V z_W}Q&xYxe>WQ{2OJTK^wgZ`Vi*Pc@+CDXm3;M2b6UXv$vkL$JdZaY-AAGg&mJN|y+ z?|0d$nzLs+y}0%M2a@^s?QPY_($2e7wwgf3>U$4=pSXSH&qNgVnY{mAdrnSv*mH;E zpxRq$+?2oXJ7wSYe-ot^6f&IRs3Y$1zDOOP=zz#9*|sUlr%4jUQ5weyd>`c_{*Tir z%Eh@jU*tDeDnx}Ib#+lWuJ75aS1zBAs|P~cBe*t_@iXjok4Poh70{Ym*# z$^G)rLD8^6nLou}CV1w9qOBQx{;&MM(N+p{{uYmm`}d~jCbhLq*Ak# zWQyiiCgk0j+sQ+4TW;sl#I{LUvXv)J-E-QcohP-66?RM~PTi}mCAUj?V*8}2?bX=d z*Zu9^46@0S#pb(~yI%Iq{jt8=+rGI!bta16|J)ZC@Wj4T|KY=M=L7cKds1#t2^4nu zN86--<_6c1zIRK-5nZ9)Uv{F*{%w|&=RJuyAY<=cBi8wltIKwAx#kLuD{Vx(a+RN=)-c>wq(j1Lwwev!%wwbWu)3}8iEEH4-mfyfHH;?P=;pAd zt!Zm0n-|JkesnGuQcEiX+baVP3;D~3{K(FiMvyh-R`Ju30LRv+ka68O9Au%7&BrDXjmAg*icHU2*I zG$O?i^}~8L4k+^{PAk(x&vIiD8sah8f8>c;dLdTI@fd3eaebUC=M?T$0R`af7}h2K zda8*U8@)#UcGcL}Rby}Koz>X*vl@G=#y-{hdUva@5A~&4jS-Cuak*ShK+Iymgud2y zoBSA6NTXjGV(Vm$9_A?Uw+n?~T_~(-t7a$+`xy$W3WX6>6jtqq!iX*u>Z!h3+tWjA z?X0$bUK@YAYU|fkTYu}H)zXW{y&T(RXNLXML?-OXzQX$lRaIWg8L( z*nkQWc%TgoL!5XkA%=skC_G;uVxe*SL0~$_h9NEnHI!eQ65Ur4)$S|(U#+~a6n3{< z<%?)scraqHJs4@ysFcTrn_~Sohf5N>B&qzXHJp~Wo8tWRN@HrL<;&sl)DBN8$+Ylg zTDig7_-4U)zD%cuCyVxEv68fgzuI46k?;@u2gFt!Qgo_KtwdA9!FDito5K;29TBNx zPKqkaMi_tN_U3SIWamaqCgIY^E{#ONYa_eXW0pj=#A6ijwaNBcU0NGXLX_08ds*m%xW6g3b@pe$69_Hb-$$HtYUEu0>! z(tLBcFgBjkW90^uW0@SUi0z74X*b7qb1W3^iS3@a619cL6l0Hh?j=!(?7mV}crS5E zy%<9~doi96-j40o`ZTsr#gClFIbv@L*yOCYAbW;pxPlPAZM9;Z?=ht90D*#Fi%&y6daN zzDg>k)-W?~Jg)-%m^^8`Obe&y?eu&lo)#|5+lBc`zBOEtHU|HqsT^gY1)p4A zFrLHHmT;qf#4&djgbG~oXu){ya7jC z#&e@bz36k_;YB;V2v<}da^^Xq2>{+X-H*PJ}wTWIS2K2@dDflJV3DFcD-qzhpdDt4z7FWJK0J8U!7bX<6ERkSz9g zE-cx?lCZwKWS5t~`tUULNMZGbrIzsD{I&mX4HIpm*nAJ$LrlJ>?I{-D%l5FnriHz2 zZ*lkE>~G@jNjAy$Y72k2y=~I8u#fE{p5E8?6-PJQ->tbVwAen@JS|MN$>QYwY(Mew z6l<|5ZDD_#Y*VI%1MC2$wOXsVx6Ssqwzkl22Uy#*aGXBhv%p z&W?JJmCs7TIauuG1qs zJxhinXGC^}C!ZPFnVx)BWM`4gJikSKk`jrAenu2V()`mDK2>2G9#*lDVO1yXDx%-n zj1LENPGsjept+IFRXwYS^5;c%o+qCl+4-J)L1Y(@Eb^Wog<&Lz5!7*x!e=Xt_OXhM z2&+0#&^g7@tAs6}oCehik)7ZGPmJtDpLV+6*+S@SAwIdHWLGef zDiP({!)1|O=JVu&NTX>1481U_EFNJCg+_fs6TtzBTprow4*iPAc<8xBOo5STd1Yja z#5I@0CRaw~u$%4Ht-h-wyGn#hXwDX5imM~zIo6w56zFRryT(CZ7uj{*;Ois1-kZCH z(r<{2=Q=MyIv{S0j7M!MLlIE8DYBa!#Lbc2>>w6Lwzvv{^jjk1x!FOG4v1SL<8crm zR;o0P3%5mfo5)pij=nvz+ffAC!X30$L-)?ec<#vXCapQ#71>=rxbBYZZm<5H$nHUr zX$$u%#_m<-Oh;-9_f_HC9~sYm4yUBN4`}SDhKD2LdB9T`O|Z=)k@5JdFq;P+jqFi1 zt2z%XjjHp&W05`P8r0*iLGf2C@dQ!Cw}&Sq<9U;r?y1P0asoXa+0$yR$G3%NT|0W# z>!uiW?`Tg%sK`5pKc$2e^IT-lc{87n?0Ka<7ll8S?N7GUi^Uq@FGR+ZMJ)AFFM?xa zt_Kl8mX{*qc|v7;9#Hc%4IJe$*?4(5vX{FlO`>7wQHC4+H$^SIZTf`pN@TCl1{SeB z6osa`EV5-T-Ch+JOM1Q@+3VimHzIpO4SqGsrjS>omhh%$FHH+?MfR5GdONbW1(J0` zO4iCxKmCMMdndAY6gyP0WbF9yx6R?*$lhgaObhQt_8v`b4etwzy$`{cN4A`7%Z4_G z4K`G*_UAcmGTqS9=?g}o2b$-EqogpvERa&-$nMFbHn!@C^m;5A{t{qFm3%9*^i{P zhMywi`5vGhv30~@2&-MB$q?t98L`c9eRgJSGhG9j6(fXZp{GKc&H4W~_GT2uRJIKF zmQo50Z3>6R{8GbVab-n2EN%&h$9AYz3mO7(In0iQ!|b>{905euXaE=t^stg05r>tD zG8fP*X)GKW+mVjIQL!BrYrZ-+qIU@n#I26x&Ij zesXLlcs-{mU?;~-;ndi8IW=wz*OlzL5;D+I(#n|1PWG&)2_}7XSIJHjYU_s0ZEZ-m zPL*=?h|IO2#5xe-WD(-766@4;gOxRnAeingRkoDL28uU@Gh+LVe$R}J;F&PSH6^=7 z!W_!ChqI{C&Vue|$NbpYpmh$bgBbpA4d=4Xag^r9Hdm-<7}OUqa1h@T&Qr3T2gvhd zJ3p2_bwO+wFr=r2i(zBUX@sVQ8)D<-23BS_#$smvst*^(w%Ggd7Dy0&Yq!K!)lFdgcdWdqA1*EYX-ZE z*_KRUe8yllR!x5>wufpgk)oMPY(5+tk1&5EwkCTd9v2>s?NMbLOLTKs8XM2p3E}bB z9`|TXt53xCgk$z3X%hBN#rBj(JRKX)SQhFMB+q0eXv<5nz2q5Qj_qZ~{*~BX$&#VO zve=e+@~dFu$*;xs8p(8IMH=6$aoB(?VPi)2%L>1wFhUcxp*A=$)sbizCp=*2_ zW*Xmmp_0;YCd+4Id)5Iy$2{p%B@Z z_~Y0qx}9GZLGTsL3<2UL;*KtSHwZiSf)xL>F=aXjWo8 zPADg~#BP)H!9x=|;ZOl+a*jVNvBMH+goh{8$ap^@F`mO6)>zV*wGulrQPNR~9p%Uz zo!HTdw7g>!W5+17D;B^xwhHIC#CVQ%I8DksCt+*}%<+lw%<&XPTN4Y3#CV#7ev=FU zC-GA0V050G*vZ26Bx-99rzA25@K+piYQh>{lsSzwGPH-&6FV)j)3Fkrk=PkdtTPik zQ{_FrEu5t?c9z#nd6;!)J2eTxb`F0`2`T36#Lo6co}1XYN;^9Ve=OS{L0+o_fol@fv1>59U8np+wTJ5yyFQURc0*#s z-T+tJnAnZpD>r!nb?jz(&2Faq7ALltq}FgtVmvni^VY;}O~TMj8yo5!c$@PB65#g4 zc!pMK$GEs7u{)gM?o8}X2&NPw^h;L{Me|7Pp2Y5=r|(YeZYSxziQTK7_ITDMiN^hX z-qT)D6*@!X{=|50tFoW^>Vd>~x_9S8iSc-hdha%8h=&t<*wK05z}pI_UyWB$S0F>cuItO3Nk;F*fR+h zaLNvHAwN*M+sla!LR{F(8RNf_*ehQ9^NBt0ZC{qyGO9#m+dz$zXFY+D_FQ7mdDa&a zd%+QXF)UOkbM0z0iZH} zofyxT$}GJkW9x^qUy3U4H?_RqCdTtkcfj8z_MOA|KC$newm)DncYJXiacK9J_Wey+{t$0t<0|UI?PElva&WaQQl6<+X>))BKQz)2`A_6#Jru1 zOg$xUJW%b_yq%ht!6MhaDIc#UuxI4$3~$Prc{|fHz2os`<&EbQAfKH#p0o1XhjTo1 zMt(v#H*dV0%cjD$CA(HCO?S}c%I6MaZrw>&p;0YHg z;UXn;L|V;OzFsY)E>nCP;o`jUTtLn9@-|Osnj81$=WTvo&A7xfTmrh6=8Z>LFU#9y zK-3m8x#`UXd0XJQ7v^oDS9^KhF7K>Va%EvYq?t&8h#ipgzP#~>ocHJL{=6o?pNiwc z19^LZf*BSMDy4Ck@KD|y+lTY^px5(A-UvSeR*&Y5)JOA(+`K)ek`Lu8(~-4#dt7h# z=fftc{{D`HuzlrtQGul)yJY#WsS-A;%vM|(%X`=aIRU*`n07?0Oe;AmUzE2+4)V&p zU8y#aEhQ>km4_=uqpS0FH90W$<&Ebm+H`H+u606OSB+{8*Yi%kmT*JfuFu;I^&~d8;_Xe?ouV=n_JjqD%mYW-RdFO?=}T$gjCe0J#>-tW-3=wXA!E8t>Qj36?h*vJCvQB9 zAo0C79z0G& zg9~a@dLwUdsNPeA&6_lapSSZy2y(uYx3@j;Zr%vLEA}dpM(nuoUfy_agqXLMhzRei zR9K!j0?Q%D2NHXuFz4ls;D_+UM|t}QhU7K1ZOY-ElHH0ucWSszFx3wqD}!RLDjDIc zN^RlOyz$&d=%$k0rx38c>Q}|k9?rUYa&*!Ue^7f4;u#mue+P8vyAF>`8xvqlnD%xSg2g(C?oW^OI8 zU?gG1%&!Hm8A(_%i)w+zBMB?!hFajRk%Seqq!xH+Bw@weR|`BjlCWZy)&eh%B&?Wc zYk@aL5?0KzT44D|!issP7WjN5Va0r03w%G4uwuTh1!j#RteB2k;OJ3=6*IdQIB67N z#muP%&KgBnF{jl67mgyVn7OsUf>DGOGrtzNW)xw?EUE<-k0Pv?8)|{OMiExbl3L)Q zQG^w9UoG(DD8h?J3Cqc4|j^(lMzWlU5wpxjwZWn^vA2VaF=3s}7B>I>-wy z9G6<7z|Bc*j?d1=r$*fI;B$fyJ0WcfC#7~$%1~p|l3AB^NuwHka%v}giBnQL#hZF6 zt8Vhil6OiP8Z$)!L2-slK(FRBRmZ~N^wduG!e^v*2HHn!IFp@GhjLbGX8}c6e8mKJ zwy^jL>2YpqJZGn^;pURv%+Lo(Nu0TCqoy{uN-VYMywrF|I$t1!>jkXA({N#G7kUp| zl-fmJ*Tw3b3!(VD)aH58{M0V4cFue{=TbqiOQFVP?5d`OTEYVFoy)2f+5+zaBI%ul zsa@t>aCvGx3q1({=L6u1)UNQfMd%$r>z*sUd#+UG`n=XSne@9#Ex#%q7p}(3LG-VQ zI-+UZwceGZyemhk+1I7Ub1fZqeQMXM!1=Wf8zmy#klGDS^BYsU(VKr$YByCo?8Y>V z>g=%dy~9SSqi#;^W-qijwZ-01x1@H9m%cT%Th&pcT<+Q^vC)#$mU#BtQ{w^6I}~Gg zI3;|b+=-nx4R@t>mlOPM48soY9`(gt(D&Zd?)9YmP)MqMaUXqgzvyv4lzdRFREr)$ z|4YNesXgrZA4%;I2lc2xJq)O&sV()S$5MN=3hFUHJuV3LIIx~z=P(UVruJYOo=%Ox z)0BHg?^-B5n;KyjQ_t~Ni@E2OqL#jp8qf2!9)1F{znC(8y(q$G>#~}S0ck+94wtkxait1NRD!_)RT3?M(;F z!Zrg;B!J(l0e(9*p0~VC+Vdv(yo145A#ofQktZC1cT;=U`|iEe-os0%H7rkUIk1|- z2dRCat|ppot`D>HY2hOe$h7ydn*On}0E?da1UD&%^{Ma|BYl?IXCCu;YCNCPs4r6c zLXBe65uc~8Q~Mfc->Ko7ny22ksquWni2qJe_Faar3Jc=*squX7?fTqn{UJ4;Ppi$! zdDYk%enhZ()j!pc=_pu7L1Sh{!FWXBLkhIukV4i1%vQ4tHrt(_jwsj>p7+Rt9a)e_ zKdN9yDdTL9KDuB>d-SmdJC13JE7#|!>yGAo}@uoFD_#DbmZ$tM-;B$B1Bo>;)K`-DPRlRD-oe4N6z zI(4iWM!VI2bhe;gEo|wHr*CEzY?ebjv|xu8M9ISn#xtV;JMdTicQ}q>O3h-zmS}uG z`OrGKU?+R!&NbNkPAS+a4(-%}wzK#vd+zB4JKbZ?C>W0je5MF|rrJf~mIAz`h`Fd_ zi=<@2hcLpa1vUu_c9uK8on5GIke^d9p0n`{I9E}2uJ96#!3h%0E!bSI?7V{UsIv15 zN`tx=7VP{28t~i#!oN@sf3d%GtNfyZU8L4X>Vgiua&f_UesZRQae+RsVDlXM{DRH* z4!ERXmlQym5~N>RFrN8ND$;>*S;2VJ#4<%CEEW`Ofx}o>u!Roeih^BHrQ?>ub5X%~ z7CIDi0OiVp@i-LG+CF65URB`7CCb$WyQ&bd=N3Y5bu7W>($E`+VAXd`!LIT8t}WQL zh04KfMJmRwbNKkPqdym_a_5GE@m%jIh=<;|suYZ;x4Nje4EQ(m;s*T11zW5RytyF5 z^Ta&P{4@)LZKzRsQg5=hnEWWQb9)imkUPh%lKrz zQm|LNXO?*YBmS%OoV{9@7G5jZYb3RX*9*q8447{e?2SSgkQwm@cqhK?Ji(xTr(iq- zs`P`&-!0g?&dKi;>^+F46e8S+pEv*FW7Rr{R5nuoxUH!wd!_{Zwnv! z82-q+-D|8?1J8e4FrK%oyr_=*v|v2l`}VVf@pz27r7CcgTw$M8O}R z_m2hpu@L&GY(E#?eJWV<4=q|hgn%8Id9@x^w8Jtt)S}IBU)I@0n~g84v}WAn+rv-D zS@+fIC|ZYSomsS*MIm}f(Re^~R?%k3|8+(&^p(}^C)LYKzf3`+l1_R+vm=Ve)2~WI zNOok=csjE%9F8g)Pew9X^ZROy99^`d9f4ztc8t3|9$Pe?tRSh~AskmUo@0t#wah6R zPv5S-JHBYg(_|v30Ue1d=9X-3DRi3iVKwZQd8eKm08cC$kCgk9iguEmhYiCDON*kN z?5LgM8BT$dPc0gcvYuA7(?n6(EnT@ky=bRya`9pI!vuJ0!bK_Y> zJF6JZDcU(jtzB?2k4wji`gpivSPMMTu`(H#jvnw3%#<-i*~u=afR?$ z2p)@yw#bvNEZP-SJgx-vRRFN7K;xRC0qiQWUR#tdd5!u++U2$0IYc7duPYKSN?u}ItWH4{zqA-`DSF4>;*b{?Z86PM5)rV$JxqAd7wvh+>xH7d0A5UY z4J^Zo)%os4JoXhkRIz0A+3uyHy@U%a(@fD`21;vqMNsS&TKsC!UL~7myVr{LnrC~x zXs^@5t>KNL@w`%O3vVhLFYV#2qP;}{&311W?QJjcPSM_hq^;rIqLK4m3cOcjwtJ5r zU9S8@wTBOi_CZmz-G@aZ_Cpx?qoRG}{qnH~i1|bvXP*?Og-?t2DQS3&6piO&fPP-I z&x@fUo9-IC55I6`V7mK?K+zhiFn={ z_MH>;`=WiX&i44W@Iz6W>JQ%8UQrb~LgB}v@qFP)S$F+ZG@kA~+EFqdk5LDH;XE<3 zWHU<|n1__?kdnA>R>@|SGQgQ;pCE?Or4tN(Bs>~F`fXb$Cm6^&pM}Ma~##<*&N7FJ%QsGLi9Kg)kJrUD(0nU zHs-0NlO&Msl#=oEtkMxCKMj|~Zdn*lr8PA!eu3FA18Bcvz_nlj^b7?aXvejfu{qsu3!*0$6CA&aP(pyWouq4TR zp`anF)nONvj0elY#U)Aai@hSUA++a}cvbJtFB#7~PjaKfB`TzpOH0OciKh?)zL%Bk zvY$<{jU&SXyyR)8D$RA9eZL$W&5w1)4v$Dun!*qpk{{Dh=H*|g0}=KmVfbuB#6dU( z$SYY9nRhTeh8r(uC%(b6ZdNRZVaAucw+hx7atAvjrsYR_p_P>Z69T7@mArv%psJYU zR&K$k5iq}P4&yoFC}_Ldczc$keS6p*o+&#()WV6D@l9cxO#|pG_cc0J2i}Cz9Qn}- zyt~F$lBR&W>k00QH9nMVSI#+(52wW%Ipb|twtr*15~1HovF$2SpX}wCAx?>9KiO5C z3-D9iDTqubdw^0(fkG>588jo}SH=!MGXhfM)d7AAL^xd#5dm{uUOR?>|3A+Km{0DK z7e10zCt{c=cR>s z4Wqx@{ayfHjSS~`I_xza#Kf0h`CfL4z9Bz+QnQ$_0+QrKcfEHPc#)_ZlL;^ot=jUAPLEEr2oO|bU%94i4#3Z5W549M4f~AAxiP5FXPfZxEmHT z@bG9pEwUX76tRVCV1%|Oz40=BBEq<)cp zq>Z!@ii9q!HV4kJd*-aINPBLK5R^64bfn*C{Yv_+iJVxI4uW_Lr?qS?b>G^0Wh|{@ z>*$qxIBe}Ee2>?2rXJmnL-P9K=nbn9ZzJ2tHf#+W^J*J|ghun)0 z+tk+f*=DL@^JFm8pA+u zBn=;9V+5yyV>Cn=Yh&FIh{2Jxt!%5z7kJAskivfM;t%!*jXNlWD8d&?g?E-5+S$d> zF1Cwe{)pqNi1a7>6Pb6hfg&{5I5g?p#Kq#<$aZcIf3`oXuXd~IymFV`tu_2b`s`oS z84@*{tF^n^?gGp4c?bL7#6p~j_TPw@-BX)b=D5g8-D=_BEA)^=8K|Dz%l5L(g#u^; zjf1d)_BZ>RFybJrS~O58f49He-<0uhD#oE$hgr70)w!J7S23NDrC75yXT?B-6SB6i zitVdn9F)z9$=17u2EvqVAneca*eS}!Kv<($XJ>5bsvG6$$?vn5YrYqTxIBRx%?mT$BOo!P_z}ppw#?* zrq17rM2G17ElD#Y97AnTCWhSdGfPKrvv=1j4~>k+7bvbUAEpzz_8-tkJPgoU@^Br^ z6(+NFGS^2B7WM(vrQ{L1;(*AZfk^WCQu0V0-PKa^C_hceQu0_o-+L_WK2E1@v!&!5 z9XVCD<0DSpYAJbwPNs4klhgOg#*40D&>alElss9-R8`;K_IakZg2s(^* zdeow0xfD5-l4tt4T$Yk&>7*`4bE`*fMgDVi=C;C8@?310+`2F=%#CcWYr5w}#&ZrZ z&)0$5P{>x2nf3cZh}U`S)!cl^c}uov%D@2z>#si|a>l`d--U^ypMlM#pyi{Eksiccm_vrYm z`Sy-;_Psg+TT6#j_hGHf-u)G zpO#e0aiz>fEPRBkwg0rydM#2!|@yH(6QCepEj@3i#WOPj> zGEaX(zaagj&Z>%NY+y$r_SG}6+{>wh*VCvDE|$_7&##MW!W7nv8cS?dmqUY< zv-@cpjddfJ(lFtG3;fr|ik7oJjXMqE`mv!_%%H!~Gdj;ND`V_(A62td0ae7bsfu=| z$nKh0{-F90^+J!U4MZoG&|N|fq@7;CK*a2hoEZn6Wwms7V>k?`IxeEPiG4>i8b(hD z8{5XpkyD#xf~p2oWSl1X&f?7Ua$0AK@0K6z5K>!%9r6KP#t=d%F%`}gZf8xlofyXT zoN<&++E`bQv+;`DM@{Xft59xxn~=F{Y;9v3SE*rC)nn0KY@a4+FLX?%!lJ^6G^i97 zP2hkHKP_RG45M9bXRz#S%r2Vz{>TEGO8=B0izXptIc_gx{|jXQOL+as{>YCsVXd#F z8tfP5$xqPD2EH$M}b zQ7W8xC>6p7eM0#B1AP9Wid~P`m$IZa+rHMU$iLa1{-fq#ix9i$$_?iG{jf~z=jAj{ z?8zLFX5gpT6q~3^IQAF#0|0-3vN;C2ivvhpD`px)60W0KG#bn&ol~vk=eBESog`eKfrt)9s25$HbKdVdAQS zn5659j(s%kGXJ0IvsvZx+lVWu`^OJ>V*Y4=3%BW1Xx;Bfr5{eDjU4h?djoC_|fvKq%%0r4JgtKYV zBP;=IA!w^Zp7?IBh;?0n_k$}xf`s~l#zRNAzJrb=x}ho2SFZSwn#JfA0^NH-wMa(E zk$t3_^szny(^sp4zOG>+?-hf%7Yz~YWbIc~QdJsl=p1N8_x5c^;1ATIV8yE9G6?-~ z#nv!bivn#B`J#YIp*}jlz+zn#*p-C}D$r0{86mwAhp1$psq0panN?Q>J=EP=(Pmd~ zcwe%x6*ShgLW#Tb)Sw=!XM~Ng;cD`571MH7`Zc$lXq>T}Rk5o1k+p1A3`EwjHEcB% zTTR7u{h=4rs^DOqsbob<4K6O$wzcg)ZCcc7Jg>`m_N8gg{?n|rt?FT2t9r0+YCLaf z>)VEcoekMElR+D0(6qEA4{KUM+YD%%DeFc8vpIDmxwo**vwKOr3f8nr`;GlZRs7a| zt14LD+88fq2X_hZTm{YitreqF-N4I2#)Tgmx6gL2)CdL&!xLznt(nAbgRHeb$V8s2!;?KSq$1R${2)dI)6g3^&lOrv?LWhFdYn z)ZqczrxYe+%x#FWo%JhO#zZ0D8XK$&g+n`Uj2+fZddoylds8-YoW)u9o+lMwOpd0V zNwDj6%Zpz*gTjggyTgZAC(NO5|mB0`?WbXSUsx@M^UL-l)7y|>h(pZdksDNHE?B+s6badc^BD1BVv z$Et?X9tfj)*DHHykUpau>IDDU2#dVnySW+oKH{F&r7B8(L070K`9)b4Gs*Ts#JJ|p zm7d79XBB=%VJxpbtS8$$5^h}ksgCR+FB|V1*Ovv*^<>e~6=bw*FxhXfMFd_@x@CemBn9^3qS}%fhmZ0cnQ0W`FfJ=`Q+7`xgmI&(vmi>A z|8|;DeILsa@U0~f$TUvhU(z*4+^d3Oc0v_=h5&IOz%G#^z_t<3i7uFmKppFtm%`< zng(tBWMpNI7Mu-jLlH$5=q^Ju3$$$FUe|Yf)>cidv^1J1j995I7`K)7#L5eig3(yu z#`uf&oLy`uWXA7P+vS&=HoMxcRqe@lX=LJ+#aw6u4NI?}$)Zb(Scj=azB?nU?w^(M z&td>Awz7ShKdE!O47)1EdMhgiB74{#_E#1AtBSGS%8E&Q;#7PaOD`V`*m7+zWh)xq zA((XiMu4iWFp1bnO@URIk26ogq&n1%?u-bg{e868w2uJz*7!d%s2F#%1zS<0NE^hN z=|wjB{u)q|`O$d7)=N9NAF(}5kwtZi_t^f`fx_L0Ho2YK5f8A|&gDJ}Gl~$ys!StD z%QDt+)HBfb4+ZYAG(_@xGyy;vh1y>vMkIpb6`Y*=;M!{Khab`MKue#TJONV=gX2ylz@8&U7-E?S_ZoBLYYhg>q~ynKUh98~RB$$+ay-zcvDL_t(G<|Xb2@dOZcTd%TS z{c{s9h+eDPiXqfhpef7gBGt=FK6AjK5}#@Prp%jkfuUbCozd!M8F*{y&}y-+Gpy1| zZsQ-Dvz-=<#W`#(s0w*ViT%KFIdgAs7o38m)310i1vJ_Y6>>VS&D*FGt zDZ0d%%vH8%4y;bpW{iuCqgZJd999KGWMdy$C>uwF)O6i(+E6|-jmF48I(Aqcw+D27 zzo4>?F4!K+CEmYBx+t@{9&Bs0 zKyWwYO7lpha`dn@g?JA&qf^;f+maR**K652O7ljq%i>@?+ajBpw@_}>0$=2zRe%TD zfy?{~joyMrv;3yf8`^N&ut`&T)?~4AiAE2n(LHGNhGB5V&^bvKzlmNoR_~hFB-0dp z{fp6}Vr?jBx$FuX?uc#*ZlFMwDQXV{l!66OXcdcXl@`>rVc3S4|0=9(8B4j!=w_ML zm8BnV>om*4qPGE9R|d#}?r308$&`hD7|>VC?nT)o`-x?28Vhq48_J8Ks8P(>2j=|M zb@F}SnLc7UbZ;>|?5&E5meMKp+4$m91kKrp71U<;h{HCOF=4%!5EE54kJgJiu#vN5 zg_)qfv4P(10fl9ehhgAXTF5CaKyjrdWKLBdmVZQs^#S92LwWtEAcQpzJNB5M5lFA( zEC*Mxxxm=VhT`-PfptJ!@wtfl$PE`P*;dCsp1s7zM0s-*^%k_g|5x+-O5YRGCF&a9 zEL=06V(&}gyd1Pty?P^#X02Qqbzuo9?q*S!eSATrVT%8B!Rd^U*Pu%BhfZe$IO zy@k6VRd+UWl?QW9^2+qh_^M19p5YSF#^I2^Z`OAfrNUjE^Lv*_mAY}Fhb%DAtXs36 z9NbV|8b$q;eSqag=W?JO>8Bp-{Zkxto&RnN`qd~QqrU9f2B)!i!zj;NSxSTCIQ`;7 zJ*hBHH>g%Mut7k3TcdvZaMmS*-KPc{36TW_n~fSPw27I4EwR~KR!WZW0v$u9k13ff z_0^FQw9&7BVW33}(@^eF?Z~b!t1vDGrolBp2C#gr>^rgwyjSfC6JI9C1a5iJIA>vXS=BZ9d zAn(H##u0bdBeEGLy@-U>G+M+k$O90*RTwRlV&9ceH9ZuZZ{7Ybx+XJh7 z1!6Ry)0V6TBnaou252drj0-NCnb}fSP|70djNZ@!8#sCNftrE^5YB^eU08*2x(aMv z(hi~LKz?gAG2GV3tjPtvF$qddm3FXGRHwewCMmtguyrD^ws!p@Pc(v~DhLY*H^|et zo`wz^u{44*+UT5asCls_&mIlsqta-cU{1(bSrgLv&wunxL1xvQ8n`n0FES9LJ#f&qGF|3C{}oK&1gMNLiOW9&v=Y)_ilyK2y;Z%s|Eg`=f=Ss z?4fG&w9$IEYJCgSaLsf!-jY_0dLf?)7Tmt4!4PHrU@3zPTh$KoNT*$azF9%N?>Cmw z`_{ji-p|qhS}N1^LQy*cLXi)-NEZ1d>*;i&(t`z0$NnK+9tOJ1ufyr+;p6C$VYX_k z_B~mPf!Y%&dIa&OxEZl^GBD;Srcg|Lk`5!Nz#?dm0sCigJGOo<) zoHHyg&ac>*u2L2H4jrC-?v&nLp#^({qA)9rEyG$md0D6)I$BZF`&yv0mN$#-12qe4 ziZ^RrqG|T}q_6MkT?PqHmqmhRZ%nf{YC(xy*ESi461lN$+FG@%=WHYSzhSu0jsbe0 zG}A5AYAJ)Atwv=6!OdJB!%BhPA`1A`NI(C})#MH3;n^fr$oQLa*7ygSr28`ASnjh! zo;H+w*XHNtt2g$ne9k1@t6NOphVt8SG*T=r1{TZ5=xNY!sdqd>OpzF}oUB8*K*8f- z-Nuc?x!mmBxB;x|@|Gc{+}V6RM6(&%g$)S>pUv`>hjQI!@LrYa<0X?}-hAU)5_tGM z(Oevy@=}bLL(~U-ctdN4nf1n}YOMc+>ZFlx+!+2{K@*+6RwE@(>K9i6HA#-i@{w=k zP<6htNhc?34kwv`ODa2pniQpF7un8}^{L#rA&fyJySQLm)dmq+!j|bkKy%a!qzksglDXZA3dh$m5AcWrdZjUuiP}^0H zFZd7R33L%VXhZ5d+#*jBr8wtj2aB*rueW?AkH$z7ngdN?~3GiCn5w-#VhU6-2{r#YDCOuC2B)0Qyo@ zKkeoAg=GDp(7@1}`F&HEM0_FzI1esGE(7*>`gqf9j#t-l+Zrt8)#Ei4HuY=GHmwvS zs#77pVzo`|#a0_oop7tut@+s;rY0#Xgw-s_B!^h?} zPI7Esmzry##?BDm9;~KXHRQv5O=eatq#42yLH55JHxn5(X=MbNE_+iZb!ho0`cE1# zQU}$SMoZ2}HCa_Ma#aSOa-g47=(--1lRl0-7U8sP%BGZPyQ(lQRVKDd)c7GRjofv7 zvC;0tz`(dqa3JezLb-&_#K;iwXo-07)iDDErP>_r?y) zv=X;mFqlvnUA|Q{jFos3aaQUQFxk>u>w3_Gmod0a_t|_6CILUbT$MZ=#1IOMVg2xt zJpHV}x|S-sQ5&JEwXPFRV*d6=J^j-%?2f<0-#IVwm?1P%sPha|XG{1>8|8S{30VL{03g}{bUg?FK zJ;2iTZohcnSFkxrqpfsvJ^9&i!2C~mqM_lvo zc#NErWtHZDVxJaSmK(4wkC#>W*vQ=lF{$z$oCifOrjB9Sc51Lb)i2cOUHeRZ!Z1eX z8P3I*>5DF6v1{aNT4gfmgGKNbKvrJPg|GeW)-~K;q`Yi13#HnB+DWY{J1xCNM0`E= z|MOoiX8Ba96Wn}#l0*K{uot7yuRf{AXCzmS{D=>O^f4TS_$ZoF@G-}dEiR$Kmidd3 zqyQzqj{Q@B(Cup-iGh*%^NAzL;Ur0vw|H1^Vx*)c>`lJMRcIYbsF8K#>CJ4R!te89JB}NBR zS_deI_#zgc0`FqrakPhLFb6wzBfT0o-%*?IsLglOF41Qws;FJ6FHclJ?K1x;1*k0$ zYL@|Op}s?rp?0~xJRyQ#p)XeOZNIkgr0%Jwhv&ttxh@fI^M#u_mZ-r%5PHOYk+}wI z7RwlNbuQi4CoL%axnsz8Ev|CJuGXh3s)${qk5|yw*ZOxYsQNm6$^u#phW)v}%?I`M z`mTk#`38O6LOpn6tdCn{717N%#riPg80CT#{=Ez3x+UgY7uAYx)dw!r&$q=awQd6( zi^nCgzEt5KX5C8*GQ1k|ISB3AFVhDw_$ovzAH~q; zE*{bsE;N%qtbjoC)e3#LLes~?F)kG1wL@4dWb}R{=8G4i$uQ{79CxDY zIPH|dQepPTD|9{k;wr&@c(qPAl3j7C+*JVC4OcST;8lR^fQzmE3LpN}*$|hqj0ruX zKIoU#yoc?fjC;a)ZXIC#hwV)UvXdgAaPN$_Y*< zqePDuYZh}oA?A9*nS@E*d23c@m&(r>==%w2cXXZ=gY|ylHxjr5ZG8BR`>+qN--K4z z6_9x-Al5gUM(rNW|jO`rK7~EYO~4B z_AlQzR|VQG*Lsira%t=AkyrR4ARFWK;z4MQ2ZmNw;@KSbpA4V~>}RE%XPM+{@qL>@ z2Pbf)HQUCtas!jjn*sr#c+%-qmcjB5p_W$>nHQ?>JmR_6m>|gHR z*wCwg*S~rNrWeg<3ACgfRfGhYVci^>9+Od6dB$TAz01qzR|gGP+X)C)e28@QPQi&;Jas)8)I~ zh1Zb!n*Iu2Ki2R%!w<9l*ooIlnOci7A}j|BVEuq9*nySOgzOj`y*V(gaQ_FM5`0n! z<1feGzRm^1b%Mn@?&<4Q?sRRuzsmX-*Xu|fNa8zjXJX$@d^Hj}625X{J2d`QE)s&; zT08&NBo~Q`Bb|2J4gZK1`9uuF31U1RxBN&l;1ofg1^9~K4{^EJjWe-wkN7B7Ne&K$ zp_R9XguwTMSg(V`M%2a^aw_*bo_#v;yvS968HvqE#^!d;yejfz#^!kcUwwCn0XZ|# zXyuH!AadnN!nb!S_hoQWq29qK#qgt86lo;jM?n-lcU8^h!W}ADP`-^t^W7mb5ML>b z)3ovqZy)<-nq~mP-7GXFuk+7G0^$=ieoRn&;fQ)?bg#FZt8e@nIlql*a}~pH(F1B2 zHvBBtp$Xpsn&)HV&IsqLJH<}6cVLe@tghy9;uV|JoCw46ZejEKURh~2WbcyqvSx<6 zb@Z;WlKCfxA(e-n5IsAqQJ(vBJWj;8UuWWI`X@tDV#?XkxXwcLorS~@hv}>r6p2!ZiS*~Kn<{9*F97}_GR$fqEZ5CCF zmFw$NF8bMju?GGcATT>IeU}=0$v{9@UE|hr!(ARRGS~yFR>+#Ei&#M3n5-GGu)G2a z74gnorvT2l>!;XE7Jzf`mXC4iJ11)Vjl7S3ipS>u5a!C69qvE>XJ2TwxiI%zDwyYM z)e(JzkCA^d^(`c^cnQy+vc8$+?>YQ8%Hcy+D{w#G&cYD)K@9t^3iq!E^ZyigGCvon z#;|WEj)!OzjtSSxiJh`NC|aiEz}mPuq-)%G(TBT=VlAXq*kd+S9|iSwv$v(pDG&0BEihCl*NwXC)>yF;HutI@>#91Fo=?iJ zJz%~Jyrzvnjch}0bv-A4cJ51=5T2JqJMQUi z;qB~O=9QKJS+z`L=3E2?|regfsOGJcT+~&(YCN%{EQa{y&^s_b1 z0aGtXq1!pjvMDQ;#o!GIU#Wfyv>X3sZCw`GvMA{5lB;-ISJp^-HNrJr#a@%gI(XFA z*uK8xEq+xkeqCPdwn}s6t8Vq<@m1&6m0xCe@1(aPMggRHJ!;$>$98QGzJo|p=C`Px zC~fCGq_RCX!QS$^!P^Q@Gef?$lRTD7#M@eVha&d{Az-$TQ;daX60ybVphVKyYHB(;87-!#* z!m<{MQCVN2_cu0eb|~|CIKB;s9du||-2xkZpYoYKK9H9UVrR1#x|$&Az9ctQ_t#`y z)stf|bkzv!IX-jSrqVBcOduhEL^-Plk`lFrpmR_8Qmb)i$9{!CTHMX`E0ah|s;iLjuxpM{6Sg z&JX?I@A8Ar`cTt%02cHD8@ECU6X*uc?s?8msiKaUV?C;9hVG#eUibiWtcvd*p?7z# z#o6}dWDGE!&MlY zadmyu2QxXVMe3G?RF~n?yaFuXcLw-o6z2JAX6*9R#3rd~!YU7*DcglGQ5tHN9Cidx zuS@1c(~AekG9RPCa?FIi%@|dg<;VYwDJM zrg*Q7lLKL+3@Gb%U%~@)C)>z&fgzN8pw>io$Wf`hi7ffG`d3SKvmUk^`yW{XOMIOpQvzp@Rq5_l zXS=&UnV3LL?1^Nj(s5KePEG8&Q2IY#n(|7^^*yS(g|}2oKK2^4Z;Fi|?1{Yq*n3zn z+k>6kECFLc;E=KsbPo!Z?u{{h?^fT~hK;07oh(NlfQ+YBKjxjYlfAyW&IOIvhZ}0( z6oe4e`k#AJ1a=>`J@#Q2GfTix-cL1?fIGeFYqq}D+^U^&ZO^EYD_DQQ7)y0y)yNgH zg^rv(8rv(42QJW3CdUFsgznL~YH}R#ft6`Wtb^2}#br^^9oCBfJV9JUe;Loyr~M+@atp2MwNwewA=?i82ho@rGjF)ZjRIZ@z1 zHZ%`x4wfZgRFGf35^&a6?f){fY;QBLsVNE!vsDCRYii$GwGVSW8@(nQs0(xn9M{J< z3dPQ4o)ZB7jIe4}6NU=6Sy0nKwyLoYib^ZEGi6rD4qOY3jtFan5MlnY>8%*nMrw~w zh^%g-RA3tr*+z)0?ua1J7IM=GD4gyn6gn4>jsjjpX#dW4ZZOau4yOaC>5z!2=MW?i zUN7P(tOG|x*^Mqr&a4U`a#&=eITp~0;<%=EN2ODr5!qTQ(*!O}!bSf1o6-kq=laxZ z$1^2xoJLuX*1-ZwE8X<)d%{~S7 zp66l~V@X|QDSOq;lJ}C_jB_V3;@+^d%S}P%2Rwmfe?k0Mx>+t~y~pNfYr|7jWL^;5 z%`QQWXAoOoy|dk8?e!fP*JTKyAu2Z<>mx)~bdcvpf0Wn&jX{9xi{nmB zR~|G^J`w@NlrCjjxgImgM-s0^##^A z=fUaLH|0hCfDOjdta0Z-r2fRRBb(>FC>MiOou1^LOwF4ccf}v9g975p3F>>AS`Y1N zlrB4aLJ+90E`ZCZAl0VdfZ=%Lu3mHY$_Z%%hifllKG4iHZl~49J=KyNAA1>kIxpz}DnN&8ytUyul3&hBCD6Zf%MGf)A^u>3Gt0%r+f0 zR02j!Q&fmCQzpc7K%ZzDHD<6+x_I3Gd*!deIo=NFgpi}r;TiUD_+%Jbw5i;#qnwUB z&+FkY$N5WkZ;3D8owEtsVcGf|TpA?*8jiuTwz4kum88Cg)E8k(S}nhbk@+Ks9^h&c zVjw}489DA^Kh1VEHt-xlpVkR8FyM4ykibljBmOV$hm z_~&+KP#WEKcQ}L6`hsCjdWL9)m1zDx7pa7nxM53LNiZfoBWAV1mNb8Nxg^ZVK1@o( zUfgSaF*09tbp4W>@4Lu2?YMukHlE&!nQ47X?}l%`EF;sRuQxNT!tcS%EdpT%_N&gm zw8F41jc6ZRBK#jy(`wS)(cPGJHRCemdV`F&e!R}E8rZ8bei_+&W&at|(j#_TWVX@5 zUi*y*Bh=97>U!!R$jT5kE&pbOf_7*3`p3AO&1Vu)%wEzm8X`TGaqDgGmd$BvdI!&(|E3hNT{oFNjc(|W7#BZ~|iCW?hy9RzocCF0^Q8N}{&e}wM z_It8lO+h2FTm6N|KA@RED}LZ?R(~JjJt#xf<^j5wHCevj-;X$mJP_HFTU^ob)Nimv zt%Lmt=L(A8<*lnsuWpA%taKhxqfQpHICh+5hV02GV8o`nG+y~tWDO8kts%_E&B^Ma ztBAEkceBW>F>8tbper>`vaduY&l+=*IeCQh0{W7qYjKt-j36>pj!`yr{;mSXS=U^R zijC@ul()v7A|V+B>(jx2#j@1_jO6MA%o&6N-xXo`WC2KL5t&=cv?&)qf@!H=B%_m+w<(% z>Dv%hTCcXlYM+e)$1mG+)8=fMK)%7ACmYFbUCBN8AZ4%gj}T3zN_(JvkL$&Il$=Ax`R<;{A3Iq5 zFO&q6I}C0J4ii?26l8a27y{2v>F$`{!;;NU3*{ZwSYj`h)YF_kqVoo<($LPrFkGs0 z2qo;tKpe(ET#~YUlnO}$TbMyd-ZU1ufBHIJU%KoYt^vO1j^4z-g!FE`-QrwIcSFkX z$Hwc%lrg+`)_@TE$yCAKM2I;3X7|vUdOw3yQr)|Wt8U~H)-<@-seAZW$?x=GzJ+!w z78OUjAukupU81XC_n`rA?_CW)GGTdE$%8tY2u7!8t; z(mBk!(l<-=N$Hz?>A#3vdB0G38J?RHgYhfek{=!^+2QRe$qjLQ4jO+x#Y5^ita%Y0 zhsy!U@JRYmLb-6fOG+>)<1R`+GGm|ArbsmWg5F6(VT`Rf-uXAzT#$+k|Cc1eqhC)% zjO&v;uLZ%#$f_0GGZVlBaXSh_d9eh`g#h$Dh<8YJ-+^Ws^5Mi#Wgwg z+)ED4RsKJdJN4uRta}6k?le!iSWWecN&HuNjH^6s8UB{Z4V_ zeK6K{oGKgt0{EY#`3MF3-%YU*`<`Ti=2SjqPERHsd%%g0=-3Y=A&LQyKj`#pKFBWO zhms-D&@QnBk|gAc)MsMS~1d=_T0uME%uc6rpMY+;fw2#wTG`Bu_WSxuIHMb!B zT!JGr*PTa^6Y)2<02Wk%Pf+!f(nBP!eab1%qBl;`V|se+(<#H>QxNSZk@<c~RKPP%C(#+nC#7de%hFV!e?3bwvQj@+PpzI+ZOCf+CFyal zUi+M@<~gc)C^8R4>3Rt-Evj#mUs;r~*J3U@)ri}^2)n82jJ+<+7M!|&Ex;-bye@5D zkIXe``vy~X=Y83<{YFBf=BD_!tW0crFHDnkv%Lr-)f8$jqGMN?1q*{xMA+rcjQH`i~L~|*AbYelzt>q9-+vWWjw&gzMQhlTF~#kOxln% z?f)PtjV9Bdq*@78Vp^n7D3;V%mzcaL^x!gkL<@=R{0)Qcoy1KJf${$Ba+OlG^>_@N90?6j&^G+?J=&Q$B4}5 zN$<%s@NY!=7((c*V_w$#zp4BkXaWQ{`v+4fbNS=A80_J*V~^)=BJu{?%L{7Ae-(Y zO}cXE3pi--&lyxj@$Qx+9C^S#`y`jk;s|k<6Q?I&oO(P8nl3rrP!xJB{~fJfUm+VL z>NQyCD_yVa`o!Ao!5Hfd`HYgXezxfqfI3+=&ml0m+Md0G@xsian%&VfW8i$49(HrihJfTTHDFeT8O z1a^8i(c|;NO}h=+o!n%I`TEox4~0I{^try>MH9JhzALoHV-!H&{x1j5>4*+KdPLahFNXGRA*6viqaRyv=s4{2aA>L`c8(kAIXZveBUH3Mz~2+< z83)1Qh0YA)b@t9S(n-^jA_`Md>j4fTDGpB>DkeMLEK+GF@2O6yzDgvYA_z zvA@)9f-Z|dLIZpT=!}=U{vUy%j%=@^U9YCukA=j(!~S<<_TB6!r_3fhP zV<8w^m-X?`Jg(v&BOZg%6x$dhS4W1I5I+}Q8!)be=kh`ch%N`?Uai9pxGOq17`Z=U zJrUYoe=~J^sP*pse)0Kt7AE+zSMYKE-oM^H9GQnBEv!NOiQQv>0X$@3lJ^T~&XgDs z^c?3e;f-emMJMF~o(og{a@UpRq9m}4XQAXPk>Sr#@>e0iP}e!2N&u01@B;Y+&f@6u z+k`H^b#x)hzov9ABcFHp2a)uJ5G*-apC=wu(IJXH>%2=AU@Y&`3Fvo%oiqBNi#Y&+ zdkPS6{9e>qF6#V8NHSKW7lA;yj=iLSwgLNc2z(A09ai21{Ggr}LwW{8YB}HL5G%~} z$`)Y2*t}OP^(W7SJa$0*+qoEiQx*RivWTB)j>aB!n6b}9=)8U=>IX^>1GcZp&7-W>a62La&h(rMHf#an+Ew-_NAjaY^6?1V z;vM$Y$mmbZdzPSzIKe$cU=gY2uL-+?@dDv;R-|{yN10U^tByiGyGk-8PGMIkf@ZiN z836k}dl5Iy7}nu_>ygMjqGT6Fn1klBrOqTSfXAh7gwKt@>xhM>_(YheV^%*JnMWi0 zn465<=CMc!=DD@qmlUtU+n?=vB=>57@fN^ zGFPf|ABiCD<&izAMb0G?hJ6Vb>=>ZMRaC&*b5#^05NGKbu^*3s##|j4{(m*~U85Gf z+gw8n^qC*m-TAf3Wc-44ZA7l`b9YXUPBARY*G1+!^?*+SW={H%dH^-)@5oFK!!uJ7 zw83a!vs~tNWOh=Jgea;b)p?|K5~e?OMHxhLEsB_?w8*U%A9SGv{m9ycB$nvwuM$bt zF&qYqSQ5C$fT+higMaww?X3iFQQ$2KyhVYxDDV~q-lD+&GYX{iqTK|^U15N*o^1u2 zp?b(mOKubl#ceotGVX#)mm57oE$sxLpw&)oF@a@2q>XsWYXAhQG%ZRHbb2=wChpE# ztYE3yjewSk&*nlF#Dr6N#;!$pBK}=4e&#t67A^LGiSd^fohupEy}}83Omau&*>vhX z!qvQ&trZ*QS#)8Rq#O>A6_0bHg^~n%!L1wT)BV^mNf4`ecCQ#`0GsMCJ762NiJq*4 z+7p2LV(wVf*YSHf33|O3zPzcFH?>|~)WYKz_3DvCb3x?wqL818Jf12Qw{8$3C*B5j zU6(0p6}vTUx_6+kX*w~d;zjEnGHjeg(u1KyP6dyu0@S39H>KXmF1AaKp7p{BvB{)) zGfbD6QAV4S^k<{)dxHio-cCtUE~Aom_SNk|bvyg&XcLNwRI3!MsaBAZF72+QW$V5h z^7CCAO_SOoC2|^EDA4d|!>DOdqiN&ZURmjKVdL9xK|Q+0Oy8il8}Uoz-P7#pD%i_6 z=3O*qFJA#ImI4wQBh6c?XCLEXiSvA8_T_e9UZdesu|ir@(zvwf#&YEzKw9L{2XYEH zpwV!!el8JsVwdP(?8HRmN2KnVQkA z=&S9t0@pTYFs}6|6PW;l?y;fHImLI+u%QJ2EpotRap0r_VGpHoWmnbXWcon+6TeHHcsL5Kb9L7J zQ`fEYxA;+~Yq1}fL~StuiUQ3FO!Z{X^iy>R9)vv+)1WmP+{hpL)vC@Sk{u} zXhn5R(gcP;YMhT%duT68p;dwPNXr=izVMrPhk?T}wdUNN)iNH=ZHk!cJhL{G-D0Q{ zq)wYFDB88Kb0-QFQ3Jz7ZY5u|p23UOQ@Lxa0-B`r6ociJ8{XC2ajO$vwTwOs$?IPW zz$<6?cMscwk%ZGg{VZ=3M<#m3AW=pdg7eexPnCaa(?3oAX-z+>sikqgk$$H9Gn@Wd z^3Q7eca?wFrr*f#o~Zl!=g2>&8NavudpG_2%D->Z-z|T4(|?fs2Q~c*V?XSSV9{>sc~_zA~DV(r=Hab)vtpBQu+Y3a;-IBpqzs0FizzBtlZi zdOEfd9hpw5rMM~U<6vD^iZy4t0$AV_G<98$=$IwNXoF ztJW=CsZJhOJ6G5_RjyW+noewq-Mn)uKpjKo`klLi_Moe)E8t&?euAJ)KNl|c-KOvUuC>L|*!n@!(%La&=1y;)y7QF1=j<}8t$oLL?6K$UbI$&kz4n=R z_1Q;@^F@;@mrLc~m|Ue+sG4G_YRb8>a;}mqRx9 z(R`(nFBQ#ju9(ja2P?;NQ%lX14 zQ!8dSWb*~r>Hgw|Y#~pkTy7*-QZ7|0^M`Y)&J^;+5%On;=a-6Pay|4#2TSX{bkv|^ zXttzOEYfw6NHnc71kfp0o4ew5~wYSqb!SJx^~vaeLBnta6!mrgA_)TIr20BF8P(b-d=t&2$$WCa zyvZ!91j`|WS(~kx!5pJe$q>xY$|JORkutv zzY5s`>@~begFIF)t_3UevGqtcQZ69X_)<=Ggm@$V+glrs zbTjU6(zojtt{MA}U8?{8^1oF({qI`O2XNi!m{zGhhuecSrF?NsdoY+C8fgy{Fn^vg wru+Erjltfl~KdWDCrT_o{ literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp_throw.cpp b/emtests/test_longjmp_throw.cpp new file mode 100644 index 000000000..dd4c23d85 --- /dev/null +++ b/emtests/test_longjmp_throw.cpp @@ -0,0 +1,43 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include + +static jmp_buf buf; +volatile int x = 0; + +void second(void) { + printf("second\n"); + if (x == 17) throw 5; + else longjmp(buf, -1); +} + +void first(void) { + printf("first\n"); + longjmp(buf, 1); +} + +int main() { + int jmpval = setjmp(buf); + if (!jmpval) { + x++; + first(); + printf("skipped\n"); + } else if (jmpval == 1) { + printf("result: %d %d\n", x, jmpval); + x++; + try { + second(); + } catch(int a) { + x--; + second(); + } + } else if (jmpval == -1) { + printf("result: %d %d\n", x, jmpval); + } + + return 0; +} diff --git a/emtests/test_longjmp_throw.out b/emtests/test_longjmp_throw.out new file mode 100644 index 000000000..e9cc75258 --- /dev/null +++ b/emtests/test_longjmp_throw.out @@ -0,0 +1,4 @@ +first +result: 1 1 +second +result: 2 -1 diff --git a/emtests/test_longjmp_throw.wasm b/emtests/test_longjmp_throw.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e006d275b577971b10db3779dfda524a990ef354 GIT binary patch literal 56341 zcmeFacbHUFw*Ft|oH|uSS3@@-h>^7gGbrXfa!^~s=s4;G@11)Qy^LcwqTRMk@=Bwq zm~+B}Ie{YPj5#ajteCT+Vh;R1?>bf8I5XepxqttjX%1EU?6CIQYp@t;GskXdDkP#?;wvAAEXqe zsRxPxuIRw%pxxsGr$z_ndEixc+9ZyjOIJ-MPM*?x;^avaI`*2l!^C~|?f7emiDafkLSdF_S<=4=ZHdC(W;78_wj_wPS|7Lj?Q0A-e$t&$@_M0-?8tX zm!{CqLwD(%uxHz^rcCVk_`UbeeHxeYsd@EY+NI>C*)D+C9g7GL~g4w%^SkquA^heeRH4Q z^7-rjdqQ%(4M!AGrTLlP#<`zJ*WzuoVeVD!@v24Yh0g(#d$Joie&Rm+@7b~Uew`C1 zkKbqFK6~!>*YSJoy;rSl@HKg_)_wLXG}JOB28uC$j|uxvOs0DI$+dIB9+M_6?bm19 z-FD1&7_-f;zuIa1PP^`0i`lyq_1Jdb1Bkp+XGhJmvdga7Hsgp`d++7%<9En@k4I^* zN&D_GVN$Z=gdLLu>u;4YlmEE)afn zBOe%T3w{5q{%^F69NpjLZ{ro3sX!^%o)aeXzjMz&75+4^=C$|!?4w>4M& z8-KskhyM2B|4?`N$KU_yFZ|t>@;i{fU3UG=Z}q)9|Nkh*Qh)#3^YSE7i<+uw zVMs$$wN$Xe(1vP*e_1rNTJ2XD(wG%m6mw`JKE12e-J+6crVwj(nocQe7Ns;K*@c5G zY2IP^Y}VRq#DxHK|`D%5YC=uoO zUr~-jA)7rIexXeKi1?3}qg54uDDiD6PE4E(g}JaYUzOIdk_`{W`*sC^yZ_TvPYD}V@`7RT^`Yp-tfRjoMux)T!ljK zc%=SOvZ$>OT}Tyo?@(xr3)Mn3Ll)IU!3C&>0XASeB$5khpbgBT*03zEwyao#gREb3 z6Wk1PZusosW>60|%h_^y?F{-EH_M5eHk6J=%X?O8Up6^Ol zl3J{k6>-N0 z9vZAc^`KX)*6U#zuLoKIvf;BQ^TwXc`&gem^TwZL-ba}?)iUq1ROU@RnIoHqx@=Np zGqoi&TeEbd58iQ|wZ5MJ%GOshT3IqO{(5AzaxSBO9*xf)Hv9Fk+28u-Z1(#ZoBhS+ zGBq~)FU96EKV!3Zoy}@vL^Te{O6nIv^RH~^(1xtgl;YL!&tAR%*{jdby{i0?zWS@E zqV`<*SM9$NN(g7m))0AXR6A^5BP3R`L={!CQuDH*XvOB$P_4?)21}c&XQt6e5gY}< z5leLtBh*2RqR$9h@SjdSyTQ7 zrC-=DGNsKY87 zQ1QUkQl>LuZIZ3shQND?$S@mbNoyExy==G`@1+dZv2_%-uB~fHTNq*M*a(Grq1Urs zVSU@u)|1bcioLaMZR_W6@G;UxT7@?idP@qufo(vcH?pC&QA^m^HqMLOSfp+#^iT@j zi$ZS{R>*a+pjuqfR`ibD*37>)&A$p_Y9;y=>!4pL*kEN^%;FZcAm|oCnc|BjMh3-Q z#bR5fEex?Cp^Ro)mL<~HLN=^5(1H|Y8Qw;;suS1SKwHKJ(tYCz8-r|+cjC58SkBh8 z<&@o~`Bw}<8-;R~o2ql8s9DO{?_Z5x{m_|yQaSYqC_U<}jLHnK6%?T?nvG%^oytqu zsM@3(%9XG&LkXL#$z@7R*g}n5C9|U=YiwSI+U|vf)#ITs=qn{;AX61g4Tw2aesuYv zShap|Tx_atkPrN7hh4jmQwx;ztbkTDudcS2H^r$Tg6n|xF|TNhVihvV-dek+A3bN0V=cCrFfoSXcyD;W=N{hYX>oPx3CJVH{~s? zNn)b#*-4jr`)rb+`dZ(d*^RBKd7yX~B}z@dOO_88T;$o*&6$WZU|B?OGZgXn&+E>j zRJ^NlcJdx6YZ&7*gQ#6HTdLUitk_gt5JdwNeV`SF6$-E&>8la$2X$tH4xoDcdwbZg zd5Ia-W$z9&Z5dc7Xsl||Y(oWX64Acatgn97w??~Poi;s0?iB5^ zm95kvWrlV?X!i|iBeka4SyM>7P0@K|ODInT+335MRjgN=6sD=#t5%UcRhm)P3!`X| z$~g$JJcI;M5HTYa^#Xb=EP+``zqtc0`#I(Qw7339IQOH0XDEB3?utt-VM^Q(Ts>1ZwjkO)#_?C zRh?SF2DQ?mEhln}FEw%vEnx*)As=j*q_)rrF8j~K)Nc=}=@pDo0QzbbU?nd=Lg(CF zfR!0}lQF^jW=6KOkq(GzQ12XRTq)+_X|RM^4=`MW;fAmZ?Q|8?y3)MQ@_7vUZ$oW{ z+S)c$YE#l1gCO!px0|XvM-8e=Dpq{cY@P3zf{U{v-np9TtwiUBc$(K&(+MtJ(x7Jy zo`uw64W7N4sz;^K7||S;tFi{9^I!b*xl$|2QBc3LzO65E8t_+d-XLs)FB-V5Z7bjH zY&-W=r-ybyQNEg3D6aU7r=SnpSmPKiHLN$)Re$ zOo~;tO5Wa*cC~sHIPX|0qB($mhp&O?W@6ifqW3PvESf@XCbp~(X<5{%+P49%)P8~b zk2_mc^MlVq=~t=UW!u6ilh?ATjjB@NEM=_}iaym{PQ&{;u(OUAiy4lJHNr-CvDU+z zVsAkB1|GhlZK&{#Y$Fe6`l4cQLa{e)V-mTZZ90ZYbr5Yx>Q;UER~O$ry;}n-h63d@*HYIU92mmHGfpM zd1GmASgG2)A*$>BZN7k1k4BMK(rCu)0!OK)Z;up~8o~QyQ^%@LCTg*H9d&qNc@=c| zD&rBoBx8tV+>bYA?I^R}23S8EFs?Re6q`3uZ=`{aDVb05H2qp$9HYq^>5I+7MQ+n> zO=ieaFb$W`ay}?(mR$~|d{AuO2*qH0C}iTcHXEeN61NNoK7Alx6hB1jg$wYG`itnQ zylfIyu~i|xiqmKwE{CR=jGoitXjutbvq;JZCn`~I-Y6e}&|5QOLi0G49U49}qPtf> zf8O{<%dYpM%jfCU@sl^BDK(^-87qf@XpBBFI@Bh%baYgX2o)hjKUJImdAEn2Sy{rO zzbo}j0}9z1zRpo97C6kwm{;~>Ptnzh`NCMeZ&RkVs>G`=YEoZ`e^INEi{OYf+EgOg z9F^6SgAO39XX|BjT6CPOX=!5+*q+tdhPFX_*fbt#o5EQhdn00(EDpU~ol0sww7k6a z*hcv`3n(q0D2Emh6|54QX?!WE{q|>)$w;@1^_RGmsmwCuwyb2hy_Cq7ZKoM;0)hTy z#T+`tQN&S3!TK`3Z$@{a9zzr0BD|Ds!`z=b-Yg&ERdq$OFX!2(S##K|syV=B`Fc7P zI3GY#mx@QLChHq#sMeh{go_3X_p(2T!j|LWwI`GA^tH>6OSc zr9DF3Doq3Jiu+4zvn4-%|7RH#24`KQ{Y$&6tULEdVOKG0*J?;v($uBny{Yns z&@9l#$G&%cyBqC;4|0o(}PUPDMLBJR0mR1IXCeGOle^tuwA<AQ#11-Q~jqNPU7j<$<1ZslpD* zXC-dApfNFF^!}|j!&s3w31`Kg4kllEYh4d}=yGvtHq}S-wHXBZi##SdeJz`R(T4TL zszP6Dv#uqJr5K=7)mqmDr#6A$%uK|C1qRI`(ypRVgRNHwjeewY8EjdiIOtI?k|WIZS8CxF zcd)d*H#Xw<3bvr$Xd9dB@prTx!)|h~-Wv9_TVl1w$>=~c|C#576}`nYQ;+>aKX><& z*8DXdX@5oEm+)7%er;iT#QJA?G&UR?*|AY^BrE#UBRf4}6+t-}I7{||qKn65Kx5Zz*KU#4I$M`4-9q;BTsRb9aokp%dJOYjNja&y~UY&;=0 z)C-XEo7gRw$nBe0WCrNtGiTC1b29Hn_O7S?A+jIp?5^4p4vp>5SXwZEywRfp%JZ;T zsp8gfxYyp{ZW27)SH&}8n-SMUMDinII|6fx9Tt=4;W2rpaxYUGPZ04k;mBAbJ1RCD zN5yU7=-9SVqr}&aj+?ir@+oyZCbnasr3L-bF%>@~^z&Y>R!hgmc5E!}j*IO$=jHg= zj<4|&PKfPt zmdo%gCv|pgXV*!c6Wcj)wtH(hH@0)*Z1A`+i$db;4ClpmUYs5AM6o@bAKUp}staP9 z725@IM|dW-XH+h&YR`_Dm!B1f#j(246-XT}j^*)XEIozZ#n8JjHl7ta!X>eN>5{zE zS-aF(yVO~`EVj$)tX&@4<<8m_RG_mqTdZ9HsX4LDsj+rtY*#vKSH(6vwyR+6>DZo@ z056H*?K1Ipsd!Vx;lTT@%|ib;hoZ z?ON6Kb+KLNSzjO9^^(O3sDE0k_8VfmAyzft7~73b;-=Vcs*%X3=9^=?Ss4+FdcHNb zTRqlovE5eB==Rud_j_ zdq52p6)UMPQWJ9hUJ%=YI6R0T)Q7$n+iP)nHMUnNR$F*Bwg+Q-7BM_ji|}S_Z^q$` z*xv96ugCU!oK4+7ER5};*cQg^;o;aGj>99dJ>v8ql|!VTWNvRyy0SbPheKS~4q>g3 zH?zlLd(0*Icx;ELP+Dj{u0kn>edX!!9gW#w`K)Vxp(AX^$hce^OZ{ybr?yLN`D*wu z_Lr8_maB%3V*4m&cJg7&^kf8+=&#~1R`uJwrPke|UOnVb6QIL8~aU0)&JIhs}#Sp-_`O& zBY$tdC(GZ6;D6YEDEL3^KWha4V1H1D^Iz!Uf4Lg|xBYjngdTCcjju)A-F8>R38>!$ z*Skb&WzWI(pYq^WVtXYHFEbQ*@Jq41+ESq?b3h)MEL+w_LNg>N-gD|?a!X_FIiWGRn_K` zTJ0~b;cxagWdIJs*Lw%rfts!Vul;XU850h&gQ&#=;pTwQj(IvC!~UKVlz^w&)LQl| zAM5`8TS8aFoR2xqvFPGBSXP_rKL|V!tM67dogQf;!(majNq6_Nad-Elp5}mhpaz(} z^*P5T-El~Y1P+btP@iNR9@*iwNk*6v<;&3{BAXFqP3_^x$c~Iy!iS?G!}BOs%x^QR zh%}i$IN%RRVn$TeQY@pdXb;Ckc1$Gc9T(xXWXa##!|{$)Q%_WdvSd} z_J93m4R~jvtt2UG_%H}x6N^VcY6Tz~I7pi)|1K9=!_1XuyDm0p$S$k^!1} z4RjUw`d?&jU)M()GN}}zI033vDl5@N-jAFR8P5=^PeN^6rLj_AA>19zmLgAgaA+*o zf``lwKdN@sd`^mt=SQz*5wXTnJr+{J7;th_i+M_9JSRt6M0s|D8`GYc)WNCsh^Ixy zb85uahV!*@WASHvoe>#NH(x6?Iz9rn;p?Y5Uo)AuM)p%TUn}O*S|%gnas?4=99Sbe zD65PMXGV6WYI9JURjT2v$li-HjK60`**Aq?c2>k<{p={LpWW@V@c~NfNRIhdxc4f|>%|YEhjg=BqM;M$vJU9gVG!DbX#Kzeqz_i4s zC8G+vgsUREisn74!2AD(gA+B#gA=vZDD)D=DzD*?BzqvIlS&|6&Fx`sWOJSOtGzVT z+`P!MfwsgMLLSysK#Q9xJnQI(=$2_3UVbjlI9h%so$tB)4?v89vyIbmHdj@ux!dfcc z+LUt>8ZL(A-NF`)ee%>S-|mU*9^cBiH?n)9<}BP7*?m!1DSOlf(Yrevss96!J>W%u zFtP_#^k)XA_*BC~kv-ItsIfbd6ymVN4r3bjWW>7Dp7fO!OHcKp)WIzpgXnZO%AWB2 zP&03nzDx8}WKXGME@WnGo*~cXQ52|m_LAaiv#6G=+Ss6U(a-+HYWQozz>LHS#>Z-C z+k3G!G;bR|itM9^mQh1F5tTJlkFcP;2~l%lVfP`NDdOEibdf)E#9X_U#AdPpoD&(& z9qpW``4{0_y^JdSI?Rf&MzTkFeq`sn&@PCKXBNu+juIB9gbP_X54Hv{TR*nabC6Ew;-}d zYEAWVSYI!HTfms|Ft6AGLq@u#q`O{S6|=B~XZ=J^)_FhsbYxFQ0rO?(<1>tkwC|b7 zo^fuTjqF+JMW4{ffN%G*HjA3K3C~6L9O0wG^O0?&t*#g3VJ}4E!i$mN`68l!H@0`R zczMRvjnoy*hhFlSeOkjSO8N>ZUXAQknib^k@2k38s3VGr*Uj}n-Tq=qB{`morqR|sNRg4xA4eg!h3XSiu?}QI(_cW;pRvN)$PMAwEW0!M)+^V z7$0v{_kSz;bGtmVX#a3WWOv|b5A!3#b3X0iPSV<)3=MZhc9)0`PkF6koPA3ZmUWmI zRm10T{suB<$7=W@wl8Arpo7C&7TD|?n9B(hEH6O5yuM)s*0*Q+W%^iakxBl}V{4-~2; zd==SOyr6)klwo3+YhjVSP_4hej_hk6AHIp~8`sEhBm0)}^ux16h9jzvkw|>ebe#!Dq=#k}JI$q$4hVcCMIXxpjjjx>oC2 zbB@EJJr3Ms9>B_5i*N<7a+f`0M_bc&^bI&|yQv4;h{~g9%@A#-!MvmtlLv&}`*mg!hc>oJ_U%3;&I$pW`#!~xDJCZ8}5YmXwgr=e_;b4(?3{) z{lW2MQUYb#o1UFa$B^k5W!ig==Klp|{mQi3*sC^~@seuE$6kZ>O|cP#3D^suy}R|X z-PyU#126_)E10N&|FQp3rh8&c-?QB}woxNZr%n-&2O?w1b!;x!Q#`+h?gfqK2MjfU z@D+nv|NqJUB(i(4?XefTn0dfHtm?JeC!o#RlwYg$x7K#;lw)Cb*y6G_Kr}{?-6&0wVO1$HECiVu z$m9SvG!JMEmIq)|kbOY`f3?3V_rI7~zPB0J)KoPOu~kH4TXNr4xexJqHuIXiq0ZJ8 zNP$fd3837)%ySmNXM|ProG?_l&4Qc`v{j9LP^Pq^d$7z3m?1DWh>flYYlIkK{IRL+ z7}i$T9-kOl%hphW?OE%rA548w2L+) z_q2O`>bZkV3G3$Mk7oaYjR~0`RL&zK2Du~2eMBC7e5Bd@2KJo zZFnk+90gGdi8^YKL2P~Xt(o1~>pLKB$QfdWsMu(*GsI#>xxtw;)R-^jw0B$fZY~?q z0p&!wQU)t4*TzxF3=Kr0!zclrN^q;cw%viY)^d%Tsx#tv*{MazVG!ABGq35l63HdB zao?~Nk|3m>^>U*cx`f;t)o>6ka5-Dyf7J+cel(E5NI%$u5nwIWPmC<*B+re0t8N1} zmWNz_fIAHHKGH9Li7*lY_@*{&2jD>Xf*vxi<1Po*|wkuw0U%xBXzWzXRDKdX7ddI9{2x6Ixl@16^mx}?P zHiT3+%mE9A))+7GRO_GeB0OM|u{3L*ygZ>xSa#&&yeF+9uaZkcxEONY!b(}!K{_ZP ztsJMir>Kp{t}f}St0w|M`l={S7$BISe4Li1>qK47^- zXRcj8c`KRP_n@F@#rp|@m|I**5Oa$X#QTYkM_io9aXLNIT)Dz6iQSTfyWRIJe0R6G zNxtCUT{y-zi<-9!A0_rtBFhZsTuKqm42Ku(@FF1}vTaig-zOOxtJ%wg(VY*I@BvL0 zkz-BqUP|mU)PmY;*Mj?8pO{`QD-vtySFp#tfd!_-K+Lq8N$qRAy@PiB+#EAsOAS$Y zH$fx6Pwd@<2JsG{Cs-rLs(p}*>dODVSyDJ8e3{snOZ)tqC22g8#U}+wHK|;vrJR;L zALJ{D>{D3zg3OuKL;w3^k8KOJzi!7K9f7H=)*IQ^#QvVxN5q=iPGzq*wJ%uo09Vr{ z20N&LtYwQmm+5L|=p0_>YK2)aaJnc+!TMzh-_lN22bV7u?{dXEIS%7fu`)Ml#v)v_ zql$G#MxGyzF51!E?}a^rZ-P;_xeoezQrl5#aO^iw(XYsIBltHEXkS!kuTv?X$E>^R z;=pYBW2~xTCvITYt2Lac9XSd%FtrntYIr`OVDzgqH7BoPluR;!JZ<5u#LhxvTEf|h zotfC#Nk=#*iAUNw=qntCB}rQ2nmN@EidQ&P!@L2g6&!`H7vM=QuMQTQr_yisyyn^kv5tXNBX7c6@PW zIH71Kh$kT*kl-{Jm-qU zu1GSre`Y5(JIU6@x|-OW#Jh+q6Z#uubyZ?KS0FVsL&}(jFEh2FnX@J)YR(iU^t2QgV;kJx+Mb){#K& z!IwQC1y+})wMV!&v3r$nHBb(x7AbXi59|WD4_hOPhx>?EJPko!hfYs8l8GC z$(GZ?zKwMSB=)pDJTn#$wr5*lIiVc2vKYj&;}5oH_^&F4(3#NQtJaI`1;kZ-2<>rZ zt@n^A;!gyRpp)6l{zUM9JJr33c1vP=)5rY5{;Q4k!rs=}$|7QrO=@GyP$~9dLYLbr zP@LAD-e_`nc9WsER~WBNG6XhS3j?~p5>Vf2cmdg{2kGvK=4R)ILyEPgqg}@TX=RB( z57e%i-yy{?tw`6qTUv|ppXwp-`p>Xi)pis04!bzXW+B!6t%EjpF>P%Bs#fJ8*tB9e zIM>;Oi&wB!8LU%OgXY->Sm%vldeIIp+H}+ zqa_2028VT0`}>^mvF0-@7CDJLG9H=3eOXw{37;g!^Ko)m_%yNRIbl&^I2I)bhR+iF zj6v(<4_{8Y!sm&7UVAwxe4!Bgg8h)ii7m!NKb6UX&UO*!60Jj;#E0g-@G(v6lf3in z&Ge@$0&nTFyDlGleGyYUB3pBdc z90iy4+DB8>+RCL>8>R2Y**lbg?Z%aXnjNr3rO)K2;i})JY*JCv(Rx{&Txd0Rom1?j>&gnNVuu&=6}Xs-WG0(u$YU# zo81oHYmyA*esmZM`K@l_tU)3%pNCabeJ+zVbf4g5U37Z{=p05dpp)kIXiT^>!c0y+ zcaTC89ln<#pmqY*4}pODt?B1oxotfwfWEGVyV)vXAceDgT!Y`GChnD=CbaiySC9?D z_Hch>_eZr8z`tSd(0;>s7TL(~p!Njq&kSYS3{=4$_U$7I_K0?fGQi`HY6Fq|qtW3p z?IFQvU#Z38zOUHzK*2YY7SJ-hNj)LhW!41*$ujU!vr*P|~*YzWz!lfZ(?^JTJT$LJN;+E=w(snWcrogN$65?+st=T(IEL}E{9 zoPR0;&a^7Vv`xc~DWtUectblpQu{Zxn^Qb++k*d%+$P;Ns=2D+w4$x4qgHPzH}-1A zXs5?rE#V!{<{d~qnb?y_H-$x8*Qd$fY+Vhf7qv4~r@nCO)J`u}!x=@U;N<1BX~c9 z_cM!jrc<0LidD(%6=e3IL}ed(!}^J-U@|KlSu~!Xl0Cvl+M9(HBCXk~{T8Br>`_1F z2**i`W8<{>@`>Ug&k@LSJFn&u8b?0GT$C?1acwt7yD*Csb2|lo771zVd(WRmVO(n4 zg>hAOZ&b~nYnMiiX|eWmY_aFKxI4%Cj>)IWaa`CgB~n-y*S2+?5i{$;%(hkAR(mRc zW>=*x-#<}f_{R57(AsaK{2njyTc*Ft z-+c?~UKRB|>S+J)SYnSQYCJQ5#wB2+X?2P5j2A*_v(?c+ zHr&x(ok*tx}&T zEVN1u7WyPFwIiJw#e0Q~Qh7D(r-_0Co+Xsi1a>C45Z0igw{-b!sfs>bAXGFF;4`#N zk3AWXxtUJYQP5<1MvPtf^f+uuQ;Wk!b&)}CBgP+Ps$DBq=Rl&*$|ode$M);s7-;p= zvtpYC$o7D6o{<<#ZC@|o@%4LZ1Z3dbMw47{61Cq=x~iN(Xe$e&17^nI4pX0_$o0T zEz!Y8w*|1#*TvxmA*6vix8-o?EFK*k4oy~s4)vNIstMiALPh5b_?u%L;~?2BBy)VU zlHDeJG|31Zn(A{%y`DvBNEOyt>gUL5mil+Z!cDW(pC1c0Eo1eau?(cE&XB;xy>J0?n)eNan*M$5tit^<&}rMG6$G@P&R5d#*r2fA z3-MfA-r>lXletL>QN>an)(YPfzewNqAYodNU z4lAa@*RF^T5$Bdsd<2MYS!fAr@a!8T&*x$=xSrI3xsZR3@Km4L zbLVm5DzT>$b*zPK$>0oNKou0Q{d!Dzom!GszY&8t2Yuci-V_v_n4551 z82Z2TqWn^l1eWm@lKdty9+%|XF~CqS98e{INh5g$@(G;97N;!*Kb9@^vLGwU~TEYLk^vQ z1N=yTXcE?D2v=S;D25KY9f>)X!$=6^sKmzFQ3)&X#EzD=^C$*~vDI))LY)t@V`O?# zgtl;O!r=gF=D5UoR2j!7b}Xaz*lfWgiH zTAWM<^gSmh85`nsJ#FEX1Zd2uiSd0Z`JE;XHn7v+K*M~OZ0Dydk>wrM=?SSG!gfwu z9&dEZXC!upO2AMsz6t=~{RF7Vn5JsKIG!45qYXv7Env)Rst%BsHc^yE)VzK09j3*7 zxeKy*P^y4N#bw`W)P^&((a&C+ki^>hTB0q7G^0-NpoF-65P%j!AB+zEzC25Uyq`rdCXt2T_DU+U0OSR@Q|@i%SwH z1y(oKr|U3b(nhSpnY}jaa->ZhvjetKlW5?D`U2-CYPkTg7h_{lS-b9FC79oPk<+U{ zuTrO%q#S-xsh+OgT#x|p2G2lxGRpB(QC6BFL{2sz?7EC8;)>atCf&Uu)~FS8lx^Ma z$gnOV=^hM4@+)|h6`&?fyrDXmS!`c9Mz#wl#3U2;`deS?-@$E8TX?A(r>N4hg;3Jv zGNLpv&u&?=8<=MYPrA^TTy?>kas?^raaSZRQ}>nFKVPw%HC;QTNPdG01dT%*Cf1T} z*1E7>1@=6jDy((al@RXD!QN ziEHP~48uCGb~od?VuiR|N#k+38_VggM_l%!*Jl;5UN_@l{X7zQVvn>D`-dBe@uC=4 z_37fCp6ZJoVZn^MDatR1ZeBYSj7uc{@%_l!9ZH-r%5O2t7BcJi>yu>gW(w~4u|aI8 z6?KJ*7Q?bEELa;*^|~7EIYJ!fg)5Y^RKb4DPrhnjHY;jNz9_w%E7X0bR|S10XKq)_?E}5QcEOMCBw{Hh6(u7ylstRo zAV5Li8tV5^p?1qSZcNPuD5Ldm{-t!bsoFo6RgoHvn%7hFZmMn_`Ms5;A^+m)?vkST z1tZyfztxR34r$}&&1iom7D1rr-k2Oc;8*lM@GtM^eV_sgp^$w^YkxS3M{-CAt_xXp zjI3dNx8@j^3=l4R7F-%IHEYf{D-KWX@KpA_uhML>Uw`;^$#}j>r-Y}=_H`<3$d5 z;;53IGZeBpbKeGl7>vHx`8Lvpeu2apen=Zmj-_SimP=Ii7HkV{YsN%(9~Pnx*}m|6 z!eh^m0vl?&-k9?N*$*x$tU`$I<#=5E1e8RBoIV#|E0+|q>Ex(uhP?yF4EFu76SQfa zJwr=vfv|+yIR_zwIuhilO&}mZNY~*tKN0!{Z3M&eFhH&;xd|ZyviG`tFzrssQGXfL zV6zvBbY#F3R@Qk!0oRkuVYf3l=`+REW zpc|K^b{TE0GhCZWH~7?E@g3}>a#9v6XKD}mrMJ(d_Kf>1#OCcjAEw50N7@p;PVMVd z;~Jzo!@(sxm}Ux+*_HK}5_(;dZk+C?K29%%XE5)4m`Xz~C>hTksWgPFK6J<1icu9? z=*g8O<2gKK|5#trn0rcM1+93zWIXpcS@=7g;=EY0n@ZA;cS`o6Utj!L$#~wWN4m1q z8h$7l&rR<2axASlyljV;(TZ%wFsc2CWi&?(@9eUjO^fObmzE_RJ|&%N@WQ_{++Mb4 z%62=Lk|EI@`KAZkQFiv+=c}@P<%c?^Rcu;? zu&>IpKmXoN^kfYZ)X^2=$vsYVI;T~P$1e)OLvV+R@m!-cY6N-tC=hZ`?hDhU8_74` zNaj>*PDSOvvSL>XDt>s1=@M0+Q)vUxMeu*O2VMSvn(qz-4<(;q6QtsM*zUH+6u?(| zO1pJ<1Kk$(3V7!qZBLsxCG2H;NvAoCA&qXeKU!-CVA#E^bxM8+V+#1GeWb^et<5HP zfQp)Alc)H_3TSz|ad$#HV5WVoqXVSUe%3KX5G5UEn37$%4yPMb7o2oZje#|iMu02Q zn@%{;opRX0HRnM43lpQiF#S0&RD9$q>BcRfMvBaZ2@*k91b7D#lr(fqi$MP<@L(NQ zQ1Bsw_b?bSs2v=E%E8z@RbO05pp2*Mkbx2$CR~p)KU|j-c=j`N!oaw@;YfjWu%gXi z=;Rdo{7U|MD6i#exT^v!_`ItEqw_0nJ?6?vSL>s6ionX_!qGZZ0GAw^YR$np%9O(c zt^&vDG=V&h7wW^xg5)sb03A^Z%H=p4ML2ya>ye~c8Q=r^1T$n0ssP< zS_AzMvZaV_DPmVu>?&GPCgf13@IP1hsgBvebSi*x+JWt4->eO0hZM}fvEfFN2r!;2 zo%&Tm@u=qJ`hgH+35aK|wB}0G%tuAwxIQEtspEN|f2z)#h1gNqZ_&|K74udhaB>oa z-=?d~2oVXwApuf{M`F=Qgi6L5;|`sACDV#)^qrC2$wZ(-2VTo+L3c;Sb63tcVeHfC zsJ?j3`pu=(=a5@#meaKJXK;}_D$^DRr(3(&Q z2j%2z!F(KeT)3N_abN+E7as?5WDXSyB!_XJ8<;~iKY=g69G7Mz=Gu!Up0Srgu z!1JCrs2TG9l|TyM3c~LMSCEfGbR^{$1-2pVg(&>4YQF>YBf-W}YtT46xd*r*QoSr# zPX4nBco5|k2g*F9G(Haa4+t;}I3`dPN+Pg3uP!xdk_w8J7cl(B-Mx z&+?h-LI?cQyS*+g7O!s##3PM(OE4X(_w^_rLSB#BgxOgLlT!rQdBY4qz-9G6d0V!T(=?UJ4_#t-}2nF1QHX@6uaI(?1X<%K(6U|A7Z0qUG*IwB4_Z*Sf~`_aN9bzhzsI7+wXX}kg_ z!lPOPA;Po5nEWa{s`MD=@Oa&a$J>fwTWF2udt7#B0sb1(l$UjdC>enYEsJvnT^PEe zx{eccbDlCfF=k;tc#6;>E7I)S zj_LkNwv`sHNW3M?)J`kkXZpQ$XQCL_R_t1J<^U-=ft4^ZIt#gjDmhDd5f%u#UJw2E z6DsFAOS57?CQwu};OI9=&LzotI=5oyLGpZuoG_odAOjnP+8POqh2f^19>qdb*xbKc3B9=1qsXDw> zx7(?XZ$ktCuWpOOn3RK%TLWbtQ?)S?>g~Gh4!LX{M%l>FlH%AF$7mZJvo*hAUOj|KKXXYUli!*%v9M|*5PMj(&7wY`296SeKD;m%6_ zIySX!fP7ZiF=ohf1c)es{kYew?SA1rU~jB+_5odnr(g$t0Od%D#a9(1hsyGhP#r|R zyFy{^tb`Wn886%DWqTrVE1c#j`Z*n_D%oZIsXW*5?O)V4M-mK`0{VU>Au3$O+H0ZV`AkR-Bh~GaOgRY4m(H4jC2lwCDYS zWb}b#^kx+9qm-jG?{oZyNPgtX&8L+6;}~>?d_O_Fz%5z?&G=Ml3CTn{Q*o}Y*wy*G z?<0EPMFMMR4Ge075i&<@Xx{gQGxJ4Eu0H#NAEdK5=0Zy40W^b$TKr0vTuQEv#z3FB zd=pGYRfqSN%C(Nr@M8EJFq4`9)!=#B^YUu`PM8g4@V)No6Te^-esDWTCI)`u1fD`v z9Ks<1h=WJvlNQ5BR|0}VB&G?tArf`mMoos9VjYqI)F51hhy@{sTjVTzL^X>R%?A%n zsDwik1li&m@30EZ2su4BO6?t72hZV7YZP}XwF+BtWTGIT6-PNU4z18E4^Rc3$0)K- zET99b!s+CwiesHli{b*PSU`Wt;3Q-P_zH1LYiscndmP$pkw=RR06-~PG96~_xxniwNa<%Kobju9P$uY{r$c=f@**k9 z`8w7INql6QZ_#}0g8W1tYac&|H!|a%v6P^EI(8A)g~2P+F+49w^6A*ciH;R9ZSu2v znvPv6A{@bEnd3+Ad^$GU58n}Ojvu~bP`XkF?uZ5uQPFtm)WKQK$oh2bYCnNT0uJEK z^YeSx_#wS(NN{b!bnIHpZr3Y5r@cDE4GCxLG#$IqPqp2MR@~&r?5Gt^*>T>E=@=)r zT7c?IshzfCG~=)xj}G8*+>R4&gY((gV6Q;V(;+*0fIAZo(&ayeg$M28E}fv0rrfO~ zcX=O#hi{=oHkg@5!m&3_&b8-fW!Lqf7T_5+WiAw)1FbSW@s7@>NFgu`FiS# zQ*k_b{pQvAh@XseAJyI+t`Lvvket|hOt@gF-s3viry+3x$tisc5PX`KgYX|s!g8q% z)*KSRJgB)T!04DmK80XGOo5>HIpot|PoI(Co5 zX_p)LDuw>*&98wrR#76MNek zcqie=v)aYGIsjcuNN9H^M1C*flp)c2a(Q2;yYrtbqh8?SgM`!4t_VKNljy@l2e-Qo z(dva*Q`Nrc_0YK7H2tv-u34`!`5`tfqV?LwNw%8#agh$QWliJqvuuRp0h;e~g>zO7 zu4Lc))Y&5-|K|8=y0_72bb-SI@=(Aev%KT8z59wW{77=q64$t z;;Cj`Zffl+>bPq!Q29lhrX5|qwQ&HFa1J{{AUoP4axjqxF&tXNhogyNl4#_1m`*B+ z5kFGTaYO}qQ8~6T-9tFI!85}{@PQvcfUz_`kND5m_!)6EV?P{DC-^j5cP2I#)E&>S zoBtx*%eC)?T=<~~bMtTeLwEnvo^Orw!dAdL6r?W@aXOxMQaXicg2DITH+~zQ{RTNsV(drxj(eC@fu+ z*-nne7grZh{F zu2M>|JgaE4e5c~PqMhfNoL{8BIiDJ=)z<|@yTAi3QouzD=!&$O&8}UyzV9bW7Z;7^ z0&>2jXqSjhbL0M{MZ2`92$y+;%V78NqVXu|6-B!Oiu8y&kxy;TF4}C5J*Q}MJliXa zc4c>_>R0CQ`yzRlf)Kk9=L1FKkvJbL+Jm}k0As|M@KDhnB4N(O!wPBMH#|}_-}HF2 zXb*cnj};B~V{r9&(FlFKNS9l*CzSFLu1le>E!vZMd$1TbP4)Rp0>Td236cU!Lw3oE zZ0QrQc{W3Sep+o)`U&L4!n7-5WeR?C-!PZcz)te&qFt>r6-04vG0ZEXm6FjlMZ1O= z9N{Y(&pgU>UD2*{L0n(+Y7IB=PCQWhMZ2MBHxlcnqVdeb@0OxnU(82>TR6#dYteY5 zB==TodUG3_OclEguiM>)`rRQ%U2yZc#Jp&_CFC0RA*4CE9^P5BJDroeiguS*FzIhY z>F(x0yTZnWdy2-(Jt*Cc6}vH4x=kDPlVtZ+5Wsy!D-|}?G73tYv!W~7Lg`u$ zOGN<%YVG!oqP;=8?Ferc@v%3(L*zhNc3j>z`MtH=iRjV6<0Le+pf07iiuRWBJyqPi zO=0+YmxFdNwS9Q6Xz#k?{i5N1U+PsM4Bs)~gQD@=gfMTf;1NDls_;?KaD0S7K32E4 z2Ijn?;rs-h__S!BqL93DZmk;btJv+>bGbcHG*u6a6hS`oDu#O=_xXNaG@d(f-CVJo zy~^&BrjS)lQ)pf)*a@x;d4Kpt(RhBz;8{e|ZLxRImwLPUvdF7_2{&IA?JHIKrL_pv zS~vG~(Y{6wE#Vt=bKfY+bRVz2E!wvp@LdrU`?rYT`=a6g9^v0mu^Xi1(}&p(j0RP@ zM0aF2uIm@VXY*@ANb;kq4aLebOx?{mG-12#(?s$F}ZuvZ2cPt!+TRtz>9q$dpEuXjQjzz<8 z%jcuI5$(`J7dE zTsj=Ld@igz<_^a#pV@WCjl*%v=i0hs{&3v#xwY-*$kJKH{563N^ zr|XV|!*R>!<+|g&;kf1VR^72^IBxlTRCjzc9JhQH*BxE!;Fix12+AEZ*1;{G>2=5P z>)@8p(RIh^>)@8p$#uu9b#Tk)teS(vCckIdk81kdtY}M$p)0j6zkq8Rr!UwAW`(c4 z;I5SESZarO&~&yx(|nYeo>s%5DY|_q`|gLO2C+kldPJ(}*QK|79=|MY?ko|4$lJTHpxU444)==t~y$K$hX2%b+V-?q@4*5+G{zIR~=|)Ks zAI}x-K02R}8h$6h&xvB}M6d}br*?8mQ)APTQI~Z|vkH7lYNvRLQ&T(Di+UQXZsN(3 zcWPR{>w%79ruTrJ&FRXHg~J&fK=i~j`LzgUAMN2xc1E4bS*e``6>;%31Kio-;%j=3 zb5r9vJ8ciQRO}X-K1`~|nZ-70YO`v>(nx+@YCHs;FB0PQ0@mPZxG=Q~y#_Ag!er0u zVpYzCNc<9h_{4)QP3_`Z7LWO7D~@^I1dN+Li4G`+=~iPNnheDerhk)YxpU|{&LFj^|Az?ughNH{^!(QAeUED zwc}S6SuOi{PlYEc^BSvlC-^$c+|*uEP+D8WzL6S_NWYodnj{6xp1rHC`!`{{z^+N^Ye&?a`&MHc`06hHhH!BjmQVLA|b1yD)i8nR|~b z*>O(j_>vv(gia{g38KHI%x5Q->_iVfsbnX4@X1_KN3f==CzZg?o>=0fIo-G1$H{GL zk;ia9Qpah!+!V29*vbn}-Apgpbf`m*GlAYq2yVhXuJGEq|I?{Yron5MJke^dBp0mLQoGULoSA0pv@PvqFm28%0c3#PNl-cu*MjOS7p72(jhqGUWOVwI%oEM}K%w$qqXvN=xUs*+t*ljBz6b8g9a z<~S8%K;`O^@i-O9+CHJ(&MWcdJ<2sDn^y|hb4#JGDi-GpDVTY4YtpqPyVmo&u4LDh zvV+))l#gBS^!uuNxS>?*cWx{h&kY_z_s|!pO38Tos*3u`fPagA;$5x$){@<-3cRHx z!{lux8Swd3h2JiCqFU4)gb|@L%m^_CvTMECa+HY!I-2kcY{Uzhc`#$hCC%aRI-Pht%s$V55pKucOVkbO0CQp^O8LxPp*?x8sa*p;?a^l z3ifSEc&ucP!6Wu!5wZo8`H7M}K{R11o-Emu9_=YK5+&edZOM2Rl=x*hMdPJ2JX^A7 zNgzzcb0vGu6Fg5@5NdmP0gz_NULe6sC5-qlmD<9~ijP-kc%@{olw`zzwPg6d3MTWl zlD+0Nv(OzF@n5Ir>~+xpZh(FLP@m<#m8ufc6*eSpv;Sv=fkmxEY7RJ{)bR#LJLOZE}f{xP6tm+vQNt*YJqJHn^l zhClUc_Z(~0gw8K28PB^lT~x(=UNWAg>-LM1@wktw#fJlB&Ht8S%9{UO32Xj$Ncj7beM^TSM9BB_7e7jZKO*m+ zO7>F;WIt(_@i|w&3~TKW)oqFL~_xqsjfrWjk5mVU9o0U7k|5 zQ=GL^J;JGI@@Zw`QPk7RcDf`gyQNR=&nVj&9(!ilW|nI|tbSTK`!&D*Shh1AtaVn| z&MJp<%63j!*CU@>wsXCDX7Pz%TR5+5=XuciWt&yb>;L?6HC!MHb^#n*sO;4iE-D-D zi!gIuT(*mei$8-4kuNFRC7#`7?m#G)m-AKP73F-DIJ<1K%VAF0=6GgTmhDRC<0|nn z2R`POZLSAhUAC)gd|VCbc@VI9uyJkKAU2Pv*OfJwyjFFh+2wU!Ie5~!Uth*wlDwg8 zJlA{B4kTn1P_`RA=%%vWR9hD^quC#)VCCccqnA zsyO%gf7)JdU6+JPet9|ER`zCdn^V5EY`0QO1>u3J+)*~3(-7+Xvdx$F->M`j4Tpzu zRMKw=cb4r=*ON=i;VyZFyUT{-Zsc)~xYZDJZ`tlGYtXw-K6amHbB_z=ey>D|_CVQq z?ynWr?y1LNxO=F~tB-dNm+fJ(@(^h|!y}Gg=Tqa|qXMNXv&RS{LT7lqY>$=gakOhe z*%o-MK2f$Ol-~V2!jleUf6}ueJ*D2s9xZdIW~Z<#YZ&)=s%%erA)YPUvkH5v9CoeR zt`t?m>Z5l0T-kVXk9>XmJgv2CeG~%^qP$Qxo=24x`*$i21Kx{ed(ruNscbL77sFi> z%P>yq`FQs-h<*7EmM;-~w0os&uKqOIN_eR;?@Mv$A z?M-U9J-k&mp4ZA9;cZ3Zr8B%!ws%ON(eB-{z3U0yE8BaBv^~6EHe$X{f)C1!b{|lq zA1OXwo#ErMeO%UP_et6C{RBn+v}~Vxy)1GEKA)-L?6dNe@OjxjCyaYO%Eq$@qKnJ6 zxXiC|JA$yu>+nlg28O$@ag?p8CO&3k-<0heBqfiF^6%PA^jp<-Q)l?DY~PmcJ1YD8 zvVHGD{h@3>sIuL^Bm7v_O!Y^vY|p4holfB=uFELfmmZW?*OIdFEM22r72|OqRp6Jd z69-r9;EEdNAr(8sf8S_&#imy@cpM7yy+ZL@!eJGLxx*@Oa&RRyrkpNhm^-|}H^bbF z3d7tCP9_`ygcvlShPfla(I2U_c4Vb9996NS`2BPx?(Ge>s&Ve5iuKkwcT&YAcXGu} z_WX~l*l~XP;gpJ|#>kFD6T9`*Q&9q+83z~(^C>WLi35TnPzs0O-Y zlrb;8^EOW|-6BD3r&f%ocTJ8c`RPCwmx@ArI-_Ddxzw1`bLlyrGb=XJIXJUoXI9iY z&Z-zsPMgr~Oo)7T#dyvX;1_>IKBrfK%=dThtM{q{<9t3d ze+{3|_3pddx#ymH?m6e(dk&wV2HXR7eAs`2eX!f{56i+s-QwO4Sw|FuX+PXeQnUL= zx8vW#mSskVM^#BVk99l#J!(0;0p7>E-Q&}?SnfE!n^W?P698G^$?p5hMd2fDx=PE5 zNOA_b^!cKW4Vg5FgNOrRWOn*$$crmDjiyt{;&A?SFf_(7UhYo(hLd&ISa2cM*IO0o zS#8~=<6w8SG4kuJ(h{90#)P0No@8?&Q(dviEg9oXBh9>A;YgNPYZu_c<*QunyVPB3 zh5Q8~qKmj~gOQ8eYwWDijk@qAkZ!WL(ll>JWAp8UIvRVkoyFRg>vk7#>v0<=TeWhw z$=M_aX6^XnEp6@sq54*<&kk{0o9rhSXmV-%HaiqVp@&^i(_ob{=a~6V z$(H%!Cn5ae#{^oVk00v!2YPmC`k0-YWpcwT&&7Lk$Kp3g^JT~H)!@H|j>Gdz*tc{M zle7H7-@h0}pVc{ha{U{-d;4`edT&SIg`$?JQM>FRb|hZyavmN#h)%^LCU7kN7dE{ZqtM-r8nC$$r5y;OWkYAhIM+gL8k6yX@tq#d^Zhn&E^4eB@_x#E3 z00#gG$~Z{>d+XEA(W_6+(US$T4|5_>_h5b>c5{j5o-4;}%*tR{5N*=ijxql*p%vHz_o|b(p5A7}}c^onCF& zVS2S;hv|<3LVnhP-XE{O&KkVV8oa@d*&7~Pr$o0ft`C_b9Ac*Qbcd7$PP$)%5#x3p zhX+WA(Q_4U&)#V;aA^JQc5a)a={l)SFaht=kfLNDqugV$;K_KW4x=++o~he`by^$D z-K!Joy!X4peLAQvW`BR1_JR8axwyXZZ{ER)xUp-TovZe^NL0S(evUgnZji%_IRllq zM##-0MzB&}?l^axb!<)$BJ=Pvw@jTLFV=RvZ<4`l-i}w7%YBb4+zPi`FTu<4qdBhR zTVX#|xILHh)ygUj9qu=vUm1Z;gioBv1c5x36R~|XeXEsZEpa?o@HRQvpJ&d9@nAO@mu2sMe}=yfwJhmMtfabO90Jx z8TClGBqa%1#EZe)%Yg1>9y&;Hv)e2x+v2vU%pj*TnL7fLQ(&{+5S(0Z2s{p)L9S1X z>ui+m&AIuIkS_9X;mOVAg8%&7JQIhqqQrCDIjXKeXH+NV84YGd^V{8aWhlZK8N@sD zjA{pN9JZss^F@TGb9i!dX!98Kdnq@B*3yu(xjq{t1K;2_sGU3qqe03>x6urN7#zvl z}~8XF=`n%>BLsgOiWa|-Wred^W1rgCor zZ=4(0p>{SD?1+KBn+xb$l$a~Fy6T%^emt2tAnCFHr9<@&redkJqr&XBtV7PH&j zoDm18r57%~f)8<&KFuUC&D@y+0kCO}i?C{K#El4dT!ht#h!|#(2;7JYj;I=!Vy(@z z8`k7i5!S}IpCDF++ew7tUp(WLwlXqXnETyJW*!zMC# zr}>wQJ{Az4tjpn~8u$N7AJP3=q3CMeza{Gkj;_-LOfxprB?7xfS8sjVq{?d*Cfu2V zVgmCUbR*YYuAvKdbjdeb{BR(7lWykP>cPTJsBKdv-z*mgyj-dvO>YdnDrr}DrAofV zZWE$P-e~uGZ)DtWwHRKeO5SAN)+zQU3cf8>@@5OOeIuylYAPjfrot@>lkr}zKiIA`NP~yWr znzg3?Ap{A2qqX%2Z9A-sk6IAxN9pG=i)#&H9}i(=kAp?`h%U+2a__dS|J}9$t3$Qc zEy{k6`LBP#GHkluXBS|j0#LyFb^X;UV5c%t_<$VQYxO*#yRRaS59-dVG|4~JU02sT znEQ|b_>chjK&U8OGo(oV8Q@Bh{BVdO`C$-i_g=js`H?WKYp%UqbZz)+u6&iCZl^I$ z0?ZuHO;y>G-6y?x^eJ6fRqr3yT~`tIXLKvo>yho6ktZz!KtHDYu_|hJUv}LE9GU=<@ z!i7@%7J04DhX4z++s(_8d2gW=-BmT`H0Y1=BNSf&4z#%cSFE zr7sP`F%42~T^3|5K%IccpOQGSVGx%}xu_}nl?x>bSR6NYU7uk(Cq9%kJUOSK55nq6 zg;eY^isO5R9=rKeoyKQU+GWP%cE_PN;&q1&2UwuLxvt9vZfV+3wE&8U0_uouQyuN5%5H5euTp;sDM^1miV8di4xKPLfQALy(t*Y7hRQzKazdpNfyOKoRP>-KTeZo@)!FHFXq_#-r99BVq&5Q``~g|U z!3+>$^4u#t+YS2Qr6%WWrFMG_y?Uz;^SMteyhT=_-ns4^e_Ug;+n7DS2~i}+BE7hM zgOXn0-Cl%6gb`{GDO`9C7i{<$!$r11bb;Fml<{D8Y4dwE3O1d-#siBaAz-;~FJNB> zu&)z!zs9{A zAA*IjEvyamGc<}&VaP+M5IjUS5o4bRMq?h%}=P9K_Fiow1itBwL}C{bvEVdZi*s|Lh~$RIUSaD6&6OALJqh~W4zs3^s)f2kp&_j9VzJmZ)Yc= z2;P%9r>18db>L2?18&k4ZD)3~&;$oT67eX{TTPmUT`5D}-Dn?9UNr)k<+IRoy0d)z}#QkJecsKmJnZ%c$f&2cii*ca@=B=yh%4^nr=DZjN&8v zB%9!rOwG)bRxr;bO!&Rt!0v@Z7&}FeiG)-EjWl$RpWb;57=E9Wf(4P_f*(1zfPlMF z3iN@Ux**lCSY{qIDL9zm3d~=(4^VfFQ!V6IAU4Rl~cS zfr3(yMzrQmB^oU~7`wpdoV&axrB>^CE$i7-)4*LW$8+n{4|=V@lfyaI^T}?#g{+QP zS*Pbgr});S+ENCcR;`^uYi9_IQ`F3v^bO}e%bn@{l2{k$w8|qMuDT!swYosPbsMan z`{RUx2YDp(=N5#wn}HWa#+V-xx9xT&)Tj*vhA$y;PI|MS5c)l>dg8Hca29_2=T?AC z5R(xx(E9~`rBKrp%N@A?Ll!Ibis|aNW(@va zh~-Mw+TY7Wr5TYw#dWyp!BD$Gb^bF1t&9>w6;Zl--(asMQzD$4$vT&O7f>#{6*&i1vCb&b!JS@1UEBK6P` z&#ngx9MOf1xgp1CB2zkLW0Pa@vKllwS-3O-*?9^2v$iSxgT-_Br#O@@?qhJEn|%XBs`oE&^yw*mvcOMcsX0MsdyP4=e;0DE^`B z-EhM1A~gIEfmMvu4%!$1KZJ%);{qR5Kh?i4T=B8uQ*upWa~1 zg2EjOQsSGa$DXugRt1f zgzxE&biFrP^RSCSRujyw1)R~xptI1?PBZ)G89bft?VlO!pL31(WJF}_ZyM$XN3B6A zMf8{vC8HB51D!}2m~=hA*@RHFkxcieTH{r*BRB)PQ{&-|t(+xa$?RF0CScAoivg+2{#(EuV<< zZ9QS@Wt?Sc;1yX^D>h@*XrWB7e98^HBTl%=FNd!qB*H#RoaCg%$E@r-Awpx>Smopx{nN~ zW_-YW%B#!0^;CvmY@COYeP9v@M%ZKBRSfWmxmPsP>D4mus?;^I=gM?y8XCp8;H_e) zYmM9+&2($0aLlfu3Z|-wL8E_B@_H)VAk*m$NPON(dp$Kx@zN|<)WyW-@Hgg z(`?+uHpg$YgziR=b)5|vZ_(b~K|iLi2%%`@?+lqudtXDV)-p4t8bz)-JCN^vvgGng zjoSp>A3FZo?qbvTK#0B6(oESMw%tA`6R+0DLvl~3#r3cmchR^XF(dALc{PM%S}@ZG zF-2ksljZa=nLa@a&I}h|*Bz7D_Aw*@9l?1Ig1~!)xA%g{_sM#TN=V%fV~=gJoML#@ z=|i~}6!-avJPxY&CuG3Ypg*eEps<24?bw&_4`LYrYPMb#{or&HFMxhX-ikrg6M!kp z>HF0$i4K1NhfX3~fUG~414Cz~OvBY*$Xj7EA5wqP0*b0U7B1H=>i<~NX8Uoo;<5t% zQVtA#B{CC4W60&-$CH`(M2Jn-yNfqJou87WINGyQp=mj|ot_gtVe8w;|09`nl9xPv zsV(f4@vpDHC;wD1x~!+ar$4v+vqR?2n_TbB+j8x88=CY+J0Z#H9&J8l`6J=zoRH6q z;@sFQRZw;dHZO0turHXg-J;D7#DR-;Y!W#Xw06jXneFo)yVrS--}sBxOaqLELL9#n zL`KG4hg(I=!X4R5(wX!-+QLPeho!y_9_dwQA;@1yiHmZJST&0zH27NCiDp!Q5*gMGL%Qh4iS&xYl|{VLyQBkFeqDt&v8C3wRzv@_Rbzd-Ik6A%mKMkNMW|i ziXVjeWuqbob%Nmp4?+Jc+iRG8}>v8xE}TI8rF!Z0fo&!Z8L zLUu8C4`LP#GbrQgvaYg1M%L2n{3gik+DW=)JW}5gY zd%elMVICAPz`RhP)A^Pi4+V}t=*QtYtXCWNme4%EM^^QuupqEO(+Z^B3cw%$q%^Hv zQ8Sq|i#(^1A5ZC%P4+e*NWlV;y9K-sSzvu|;KA7(oHUxt$xsip6r4s?LKt0Atg{7O z4BxXr!-?W;*%A!3Ai;tb<}4nq+%7o*7Nmuc`+3em;u!eS6F zLb{NF%~!;>7FRUfGGpqLnG$XxQ~=I;5Q#s)WftUFssbL=tCCQz;F^yV$Pe)rUGF5S zM!(^M*%QHf0*1nV))Ag8q@MP|obxm)n%M{qLuUw4E!4$JAjp@DawcRTe?@#G1YN}A z(advNw#L}{MeE?%86Hht5sqz@_G?B`=rG8gJ^UEk>K84{B*prf#gDDvlxMc7nC;43 z(R|lryD6%87Mo&i=Yuohg{k~%sFHAsJAbhE%HbV<23e zXQ#lT3WL252FpwtXN~bZAHjV!OE@jfLmNrII7_c@QeV>;7DyN37WgKu!3ApYW*Te{ zT(2@0#zEcKgT`jJ1wNjOS(z2hgV|i{mpfcisUWkIkP>$QiT-J1|#N$CH;^fVl{z2Dq6LUQA)K?mivxZV49%7O1Ipt zoWwM09m@pE%NM)#?!}Wblv3HZ43D(WeW)f76rVe$NQ2xAuKvcXSi9&*T%ci?CpU$o8baPce)Eb8=fum6XrN9d0Gr4uy<;2Vf#cio;{ITWp0eFI3EdxG>9mVtg zPP(U8#NT{JZUy_a_U`DVy^_$gE}sD$;@{w@J>yo;uN@C)S8qms^kxicmTd^OukH6# zJIhm1Je5*4w4XDZ!i=B)EXSn`@5#JsJlacOck!Nxv}N*Cr*Q7YIp}p(A_ebgm4KhW zkmk2Y3lkb^kdWS#e9(r1NTT4h}f92OF~Q0S1l6y%Y#?^pzYL#QKdiqZ@Q z^w|QT&m_@IdLW<}!Hys#A#Tc^vyB>wtWR`XqVGU0lfF9)`TEb6JGyMP3;K0W#uO`r zkh57g#_WKOIM9tz&<;2N9i^>wlt7di^&6GXgvmrZN_*CyVgO2}%WF?K_$woowdL8) zcwNq($7q`KJ;rlX>3pWoz@cmc4$4mijtyQQi7j*xUq~cuxq=6H(M{C>n33g6UxJ?P zkcqi1fB2~YJ;!&NT|hbTOA6a0+b?GwAkFqk+OzKUBEg170-=#qn^mhlGEgrh^#dX1 zQDXgJ6R6>eNrUsLU@ZDT%9i@dxH&2TsFtffNYO%v0Qc!`rMr{#Or>WgX_Q{cW^wsr zls+a&_bJ_%q!%l_I7wqP(&CKkFH?G1l3uCw$|OCY^gxncqx702eUj2ACF#?YJ}pU~ zrSw@z`l-MpO~3v&n@6|nNM?IFehkNmt<8|o+-x0-YyrVhwOVF|Uc=Ei-6km7l61S$ z?Ma&EHIs2K=?JJ9(}0SbYnk|nx-;pYwu#D&oZ4whp~plOpAyZ*6vgUorGkWvnv0~B zaG+~QfrZP2+uy!MEedpX6gk-yVWXw!2`Y-7pr7ao%88z!ndk{>iJqX7=m`pmo}i8B z395*mpoi!QN{F7If#`|ZkDi$K=*ec>#`i)q9Tn09SeYi~TX+#O^E^bkwy{ilHyH0X z6(3AF2#V#L54NFVhi6a11%k6Vrkd?on4g)Qm%lQT?)Rc}7K?_|@NHyz_C|&z?q)f3 zgiJb1w_4+q`CxQT2W(`nUcj@&*4swsbn@yL|4Q99d3`25Tg#f{C#g3hXtu+PZ}Fll zNcT1?!M$2`uD;~8n0_qprWdwmh*QO~bvgz3S#FiH&jD$ct<;{{vfRkZq-VgxvMK#^ zWP9|}nN90wMs}uty0Wv<=^rf!IdasU{`P`7K~FGe4!czlbm~tKr1U4PKl*P@km(`6 zy{9V(=W(cl{2Ba72QySBs%a&oKP@$TRFn3Dwjia~DK#7Cw^p*}nJsVZ+5V*bYySF& zmO}C4?D#1NX7SviKS9dB=5K3$OHm%PEy;|Y?N7?T<}d%|@^)ClH2!*1!J0Vrb3Ub?Z+$`IJ*nJ3YT~)8;LMyK=`ZKsIWhbI#(K*^cy!<}O*W zzfzr;+~YcDWab?+e_?lT*UDwb_N97eFIswh|J6tSX!(m*o%Pa}y?oOvww-(7YhQQK z?u#!Oy0kDnQrx?*G&)wU)f?s$6?Yt?tM&nR$Ua>Y_s@F@^iW@0bO2v_2 z$3(GKXy}FNkr*#E8ob|Lb@i#?{cdlmTy)i%8!6R_!;Na~P@FSSs}2|I^0Sp*&S|jVhs`3blPjw^ua_4LUzGAvj!pqA*-^<>KCkGZ+q(7{!h$QhVKaaa`>) zjOtX4QhTQAhk~t@2BVvr047&IRBsf=-Eg5?PD=4+qFO7|O65ats!}*mD3xu{TPp_& zz*`{ix!q9~x;k3aN zfTv=u1$B+mIN(*M8q*8!ovMS$v#a%nE7jdd^|DHwn5xu@h2i}MX?|pchU<=rq(ZQ< zRvjx=+(ZeCZC$-1n%w4mL}LK21z#=LSgsC_F`YKH8kE5plKJ!RBN9j^acdolNRqpX z2OAy{hV(55i^H0`@j@f&zKKm{b!r^C3i8nd*kpJ%g|j43kdTU1b2RiUr7hnW6GAQ8juWz{JfuMQ7S)qjpG113)wQ8d}TrEfQFN{VI`URiNj_7s|*>zziBD6X^ zHyUs3VZyxnCLxId-p;Po|h&Q z9*r1QGwfMbf(1d9yxdf%*eHt?mdRfDtMeFk_5D)~V^hhlP$)xQBZoA}6Se9-F{&2E z*ZP)~!A4+9cYmQW!m2nQdS$UBOzc%tRrZ47!Qo_T-fi2`w<{^AvIiTB1jM@9g?1i(i=!0M_TV!^Lt)Pxx0?4cYySpTJoQ4 z$-jyE&yxN$`H|pe0E8Zl=lyNtO*{YJA+fC^$v&!lkK7n1x&QN%`v3p@-{2Yd$ z>2=hsmxhMRg?hcU#`GpnrTITx;`E`RiE2p#)gNqSVo#x7{BKLFTR$|km(|LSj(Aya HEm!(4DUyiP literal 0 HcmV?d00001 diff --git a/emtests/test_longjmp_unwind.c b/emtests/test_longjmp_unwind.c new file mode 100644 index 000000000..030abba37 --- /dev/null +++ b/emtests/test_longjmp_unwind.c @@ -0,0 +1,65 @@ +/* + * Copyright 2018 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +#define abs(x) ((x) < 0 ? (-x) : (x)) + +// A minor stack change is ignorable (e.g., printf) +#define MINOR 100 +// A major stack change must not happen +#define MAJOR 1000 + +jmp_buf jb; + +__attribute__((noinline)) int get_stack() +{ + int dummy; + int ptr = (int)&dummy; + return ptr; +} + +__attribute__((noinline)) void bar() +{ + printf("before longjmp: %d\n", get_stack()); + longjmp(jb, 1); +} + +volatile void* temp; + +__attribute__((noinline)) void foo() +{ + temp = alloca(MAJOR); + printf("major allocation at: %d\n", (int)temp); +#ifdef __asmjs__ + // asmjs stack grows up, but wasm backend stack grows down, so the delta + // between get_stack() and temp isn't related to the size of the alloca for + // wasm backend + assert(abs(get_stack() - (int)temp) >= MAJOR); +#endif + bar(); +} + +int main() +{ + int before = get_stack(); + printf("before setjmp: %d\n", before); + + if (!setjmp(jb)) { + foo(); + return 0; + } else { + int after = get_stack(); + printf("before setjmp: %d\n", after); + assert(abs(after - before) < MINOR); // stack has been unwound (but may have minor printf changes + printf("ok.\n"); + return 1; + } +} diff --git a/emtests/test_longjmp_unwind.out b/emtests/test_longjmp_unwind.out new file mode 100644 index 000000000..90b5016ef --- /dev/null +++ b/emtests/test_longjmp_unwind.out @@ -0,0 +1 @@ +ok. diff --git a/emtests/test_longjmp_unwind.wasm b/emtests/test_longjmp_unwind.wasm new file mode 100644 index 0000000000000000000000000000000000000000..0fa0b29efaf8bc50a6a7ee63b65b7ecb148907bf GIT binary patch literal 52923 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 literal 0 HcmV?d00001 diff --git a/emtests/test_loop.c b/emtests/test_loop.c new file mode 100644 index 000000000..bc9e150ad --- /dev/null +++ b/emtests/test_loop.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() { + int x = 5; + for (int i = 0; i < 6; i++) { + x += x * i; + if (x > 1000) { + if (x % 7 == 0) printf("cheez\n"); + x /= 2; + break; + } + } + printf("*%d*\n", x); + return 0; +} diff --git a/emtests/test_loop.out b/emtests/test_loop.out new file mode 100644 index 000000000..428e01b6e --- /dev/null +++ b/emtests/test_loop.out @@ -0,0 +1 @@ +*1800* \ No newline at end of file diff --git a/emtests/test_loop.wasm b/emtests/test_loop.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1a72f176d4b858f6f4a3127c76fe48b28e2b0d42 GIT binary patch literal 45501 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 j9h|y2Idu_12d7pir&cv$z&TZ$J)=T5RI}Atb +#include + +int main() { + volatile float f = 1.0f; + volatile double d = 2.0; + + #define TEST1(name) { \ + volatile float tf = name##f(f); \ + volatile double td = name(d); \ + } + TEST1(cos); + TEST1(exp); + TEST1(log); + TEST1(sin); + TEST1(sqrt); + + #define TEST2(name) { \ + volatile float tf = name##f(f, f); \ + volatile double td = name(d, d); \ + } + TEST2(pow); + + EM_ASM({ + out('ok.'); + }); +} + diff --git a/emtests/test_lower_intrinsics.out b/emtests/test_lower_intrinsics.out new file mode 100644 index 000000000..90b5016ef --- /dev/null +++ b/emtests/test_lower_intrinsics.out @@ -0,0 +1 @@ +ok. diff --git a/emtests/test_lower_intrinsics.wasm b/emtests/test_lower_intrinsics.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a987337b5eaf25f6dd4b7dadfda07680f8e76d4f GIT binary patch literal 22299 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 literal 0 HcmV?d00001 diff --git a/emtests/test_main_module_static_align.cpp b/emtests/test_main_module_static_align.cpp new file mode 100644 index 000000000..310848e48 --- /dev/null +++ b/emtests/test_main_module_static_align.cpp @@ -0,0 +1,18 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +__attribute__((aligned(16))) volatile char aligned; + +int main() { + emscripten_log(EM_LOG_WARN, "16-byte aligned char: %d.", int(&aligned)); + EM_ASM({ + // whether the char was properly aligned affects tempDoublePtr, which is after the static aligns + out('tempDoublePtr: ' + tempDoublePtr + '.'); + out('tempDoublePtr alignment: ' + (tempDoublePtr % 16) + '.'); + }); +} + diff --git a/emtests/test_main_module_static_align.txt b/emtests/test_main_module_static_align.txt new file mode 100644 index 000000000..755a70dd6 --- /dev/null +++ b/emtests/test_main_module_static_align.txt @@ -0,0 +1 @@ +tempDoublePtr alignment: 0. diff --git a/emtests/test_main_module_static_align.wasm b/emtests/test_main_module_static_align.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3a408b30e3cc4dc0a558f32df5af31e75252e15c GIT binary patch literal 22466 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 jAM=xAjy?T9l+Ku5+pTAHR +#include + +int main() +{ + // Test that on main browser thread, MAIN_THREAD_ASYNC_EM_ASM() will get + // synchronously executed. + printf("Before MAIN_THREAD_ASYNC_EM_ASM\n"); + MAIN_THREAD_ASYNC_EM_ASM(out('Inside MAIN_THREAD_ASYNC_EM_ASM: ' + $0 + ' ' + $1), 42, 3.5); + printf("After MAIN_THREAD_ASYNC_EM_ASM\n"); +} diff --git a/emtests/test_main_thread_async_em_asm.out b/emtests/test_main_thread_async_em_asm.out new file mode 100644 index 000000000..47ebc8fad --- /dev/null +++ b/emtests/test_main_thread_async_em_asm.out @@ -0,0 +1,3 @@ +Before MAIN_THREAD_ASYNC_EM_ASM +Inside MAIN_THREAD_ASYNC_EM_ASM: 42 3.5 +After MAIN_THREAD_ASYNC_EM_ASM diff --git a/emtests/test_main_thread_async_em_asm.wasm b/emtests/test_main_thread_async_em_asm.wasm new file mode 100644 index 0000000000000000000000000000000000000000..02d6a801af08d53332a012f19e73f96969b312e2 GIT binary patch literal 45513 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 +int main(int argc, char **argv, char **envp) { + printf("*%p*\n", envp); + return 0; +} diff --git a/emtests/test_mainenv.out b/emtests/test_mainenv.out new file mode 100644 index 000000000..5fc422ed9 --- /dev/null +++ b/emtests/test_mainenv.out @@ -0,0 +1 @@ +*0* diff --git a/emtests/test_mainenv.wasm b/emtests/test_mainenv.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ef87837090d345979b4b2ae9f7d2b787792a66b0 GIT binary patch literal 45335 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 F`UirP)tmqT literal 0 HcmV?d00001 diff --git a/emtests/test_math.c b/emtests/test_math.c new file mode 100644 index 000000000..4b136b038 --- /dev/null +++ b/emtests/test_math.c @@ -0,0 +1,80 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +using namespace std; + +int main(int argc, char **argv) { + printf("*%.2f,%.2f,%d", M_PI, -M_PI, (1 / 0.0) > 1e300); // could end up as + // infinity, or just + // a very very big + // number + printf(",%d", isfinite(NAN) != 0); + printf(",%d", isfinite(INFINITY) != 0); + printf(",%d", isfinite(-INFINITY) != 0); + printf(",%d", isfinite(12.3) != 0); + printf(",%d", isinf(NAN) != 0); + printf(",%d", isinf(INFINITY) != 0); + printf(",%d", isinf(-INFINITY) != 0); + printf(",%d", isinf(12.3) != 0); + + div_t div_result = div(23, 10); + printf(",%d", div_result.quot); + printf(",%d", div_result.rem); + + div_result = div(-5, 3); // see div manpage :) + printf(",%d", div_result.quot); // -1 + printf(",%d", div_result.rem); // -2 + + div_result = div(5, -3); + printf(",%d", div_result.quot); + printf(",%d", div_result.rem); + + div_result = div(-5, -3); + printf(",%d", div_result.quot); + printf(",%d", div_result.rem); + + + + { + double x,y; + x = modf(3.2, &y); + printf(",%1.1lf", x); + printf(",%1.1lf", y); + x = modf(-3.2, &y); + printf(",%1.1lf", x); + printf(",%1.1lf", y); + } + + { + float x,y; + x = modff(3.2, &y); + printf(",%1.1f", x); + printf(",%1.1f", y); + x = modff(-3.2, &y); + printf(",%1.1f", x); + printf(",%1.1f", y); + } + + double sine = -1.0, cosine = -1.0; + sincos(0.0, &sine, &cosine); + printf(",%1.1lf", sine); + printf(",%1.1lf", cosine); + float fsine = -1.0f, fcosine = -1.0f; + sincosf(0.0, &fsine, &fcosine); + printf(",%1.1f", fsine); + printf(",%1.1f", fcosine); + fsine = sinf(1.1 + argc - 1); + fcosine = cosf(1.1 + argc - 1); + printf(",%1.1f", fsine); + printf(",%1.1f", fcosine); + printf("*\n"); + return 0; +} diff --git a/emtests/test_math.out b/emtests/test_math.out new file mode 100644 index 000000000..3475a0216 --- /dev/null +++ b/emtests/test_math.out @@ -0,0 +1 @@ +*3.14,-3.14,1,0,0,0,1,0,1,1,0,2,3,-1,-2,-1,2,1,-2,0.2,3.0,-0.2,-3.0,0.2,3.0,-0.2,-3.0,0.0,1.0,0.0,1.0,0.9,0.5* \ No newline at end of file diff --git a/emtests/test_mathfuncptr.c b/emtests/test_mathfuncptr.c new file mode 100644 index 000000000..8fba500ff --- /dev/null +++ b/emtests/test_mathfuncptr.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main(int argc, char **argv) { + float (*fn)(float) = argc != 12 ? &sqrtf : &fabsf; + float (*fn2)(float) = argc != 13 ? &fabsf : &sqrtf; + float (*fn3)(float) = argc != 14 ? &erff : &fabsf; + printf("fn2(-5) = %d, fn(10) = %.2f, erf(10) = %.2f\n", (int)fn2(-5), fn(10), + fn3(10)); + return 0; +} diff --git a/emtests/test_mathfuncptr.out b/emtests/test_mathfuncptr.out new file mode 100644 index 000000000..166cc3da4 --- /dev/null +++ b/emtests/test_mathfuncptr.out @@ -0,0 +1 @@ +fn2(-5) = 5, fn(10) = 3.16, erf(10) = 1.00 \ No newline at end of file diff --git a/emtests/test_mathfuncptr.wasm b/emtests/test_mathfuncptr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7691f159dc8d267effcacf06eaaa7a20511ad3ba GIT binary patch literal 47898 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 Z^!A@o#K2)=?BIxzilvN$) +#include +#include +int main() { + char buffer[256]; + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 10; j++) { + for (int k = 0; k < 35; k++) { + for (int t = 0; t < 256; t++) buffer[t] = t; + char *dest = buffer + i + 128; + char *src = buffer + j; + // printf("%d, %d, %d\n", i, j, k); + assert(memcpy(dest, src, k) == dest); + assert(memcmp(dest, src, k) == 0); + } + } + } + printf("ok.\n"); + return 1; +} diff --git a/emtests/test_memcpy2.out b/emtests/test_memcpy2.out new file mode 100644 index 000000000..59f3f9845 --- /dev/null +++ b/emtests/test_memcpy2.out @@ -0,0 +1 @@ +ok. \ No newline at end of file diff --git a/emtests/test_memcpy2.wasm b/emtests/test_memcpy2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..23fd1f40475fc950f24644bb1ff25969d948d4a4 GIT binary patch literal 46004 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memcpy3.c b/emtests/test_memcpy3.c new file mode 100644 index 000000000..7da6c2e11 --- /dev/null +++ b/emtests/test_memcpy3.c @@ -0,0 +1,58 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +#define TOTAL 10240 + +#define TEST(size, type) { \ + for (int i = 0; i < TOTAL; i++) { \ + buffer[i] = i*seed; \ + } \ + memcpy(buffer, buffer+size+1, size*sizeof(type)); \ + int v = 0; \ + for (int i = 0; i < TOTAL; i++) { \ + v += buffer[i]; \ + } \ + printf("final %d:%d\n", size, v); \ +} + +int main() { + #define RUN(type) \ + { \ + type buffer[TOTAL]; \ + volatile int seed = 123; \ + TEST(1, type); \ + TEST(2, type); \ + TEST(3, type); \ + TEST(4, type); \ + TEST(5, type); \ + TEST(6, type); \ + TEST(7, type); \ + TEST(8, type); \ + TEST(9, type); \ + TEST(10, type); \ + TEST(16, type); \ + TEST(32, type); \ + TEST(64, type); \ + TEST(128, type); \ + TEST(256, type); \ + TEST(512, type); \ + TEST(1024, type); \ + for (int x = 10; x < 100; x += 10) { TEST(x, type) }; \ + } + printf("8\n"); + RUN(unsigned char); + printf("16\n"); + RUN(unsigned short); + printf("32\n"); + RUN(unsigned); + return 1; +} + diff --git a/emtests/test_memcpy3.out b/emtests/test_memcpy3.out new file mode 100644 index 000000000..6f39e709e --- /dev/null +++ b/emtests/test_memcpy3.out @@ -0,0 +1,81 @@ +8 +final 1:1305846 +final 2:1305826 +final 3:1305796 +final 4:1305756 +final 5:1305706 +final 6:1305646 +final 7:1305576 +final 8:1305496 +final 9:1305406 +final 10:1305306 +final 16:1305264 +final 32:1305696 +final 64:1305024 +final 128:1305728 +final 256:1305600 +final 512:1305600 +final 1024:1305600 +final 10:1305306 +final 20:1305548 +final 30:1305814 +final 40:1305336 +final 50:1305906 +final 60:1305476 +final 70:1305582 +final 80:1305712 +final 90:1304842 +16 +final 1:332555510 +final 2:332556002 +final 3:332556740 +final 4:332557724 +final 5:332558954 +final 6:332560430 +final 7:332562152 +final 8:332564120 +final 9:332566334 +final 10:332568794 +final 16:332588720 +final 32:332685152 +final 64:333066944 +final 128:334586240 +final 256:340647680 +final 512:332618240 +final 1024:332812288 +final 10:332568794 +final 20:332606924 +final 30:332669654 +final 40:332756984 +final 50:332868914 +final 60:333005444 +final 70:333166574 +final 80:333352304 +final 90:333562634 +32 +final 1:-2141821706 +final 2:-2141821214 +final 3:-2141820476 +final 4:-2141819492 +final 5:-2141818262 +final 6:-2141816786 +final 7:-2141815064 +final 8:-2141813096 +final 9:-2141810882 +final 10:-2141808422 +final 16:-2141788496 +final 32:-2141692064 +final 64:-2141310272 +final 128:-2139790976 +final 256:-2133729536 +final 512:-2109515264 +final 1024:-2012721152 +final 10:-2141808422 +final 20:-2141770292 +final 30:-2141707562 +final 40:-2141620232 +final 50:-2141508302 +final 60:-2141371772 +final 70:-2141210642 +final 80:-2141024912 +final 90:-2140814582 diff --git a/emtests/test_memcpy3.wasm b/emtests/test_memcpy3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d3019668617529698823b829b1472a6f3cf5b723 GIT binary patch literal 64583 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 +#include +#include + +#define MAXX 48 +void reset(unsigned char *buffer) { + for (int i = 0; i < MAXX; i++) buffer[i] = i + 1; +} +void dump(unsigned char *buffer) { + for (int i = 0; i < MAXX - 1; i++) printf("%2d,", buffer[i]); + printf("%d\n", buffer[MAXX - 1]); +} +int main() { + unsigned char buffer[MAXX]; + for (int i = MAXX / 4; i < MAXX - MAXX / 4; i++) { + for (int j = MAXX / 4; j < MAXX - MAXX / 4; j++) { + for (int k = 1; k < MAXX / 4; k++) { + if (i == j) continue; + if (i < j && i + k > j) continue; + if (j < i && j + k > i) continue; + printf("[%d,%d,%d] ", i, j, k); + reset(buffer); + memcpy(buffer + i, buffer + j, k); + dump(buffer); + assert(memcmp(buffer + i, buffer + j, k) == 0); + buffer[i + k / 2]++; + if (buffer[i + k / 2] != 0) { + assert(memcmp(buffer + i, buffer + j, k) > 0); + } else { + assert(memcmp(buffer + i, buffer + j, k) < 0); + } + buffer[i + k / 2]--; + buffer[j + k / 2]++; + if (buffer[j + k / 2] != 0) { + assert(memcmp(buffer + i, buffer + j, k) < 0); + } else { + assert(memcmp(buffer + i, buffer + j, k) > 0); + } + } + } + } + return 0; +} diff --git a/emtests/test_memcpy_memcmp.out b/emtests/test_memcpy_memcmp.out new file mode 100644 index 000000000..934209810 --- /dev/null +++ b/emtests/test_memcpy_memcmp.out @@ -0,0 +1 @@ +6c9cdfe937383b79e52ca7a2cce83a21d9f5422c \ No newline at end of file diff --git a/emtests/test_memcpy_memcmp.wasm b/emtests/test_memcpy_memcmp.wasm new file mode 100644 index 0000000000000000000000000000000000000000..222b6d764f154ba9c8f88b8e83de0ddb0d9354eb GIT binary patch literal 46979 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memmove.c b/emtests/test_memmove.c new file mode 100644 index 000000000..760b9a440 --- /dev/null +++ b/emtests/test_memmove.c @@ -0,0 +1,15 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { + char str[] = "memmove can be very useful....!"; + memmove(str + 20, str + 15, 11); + puts(str); + return 0; +} diff --git a/emtests/test_memmove.out b/emtests/test_memmove.out new file mode 100644 index 000000000..e2a1ac2f8 --- /dev/null +++ b/emtests/test_memmove.out @@ -0,0 +1 @@ +memmove can be very very useful \ No newline at end of file diff --git a/emtests/test_memmove.wasm b/emtests/test_memmove.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a5ba50b75181969ad9493947a743c39f0253192a GIT binary patch literal 23910 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memmove2.c b/emtests/test_memmove2.c new file mode 100644 index 000000000..73eccf1f0 --- /dev/null +++ b/emtests/test_memmove2.c @@ -0,0 +1,29 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +int main() { + int sum = 0; + char buffer[256]; + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 10; j++) { + for (int k = 0; k < 35; k++) { + for (int t = 0; t < 256; t++) buffer[t] = t; + char *dest = buffer + i; + char *src = buffer + j; + if (dest == src) continue; + // printf("%d, %d, %d\n", i, j, k); + assert(memmove(dest, src, k) == dest); + for (int t = 0; t < 256; t++) sum += buffer[t]; + } + } + } + printf("final: %d.\n", sum); + return 1; +} diff --git a/emtests/test_memmove2.out b/emtests/test_memmove2.out new file mode 100644 index 000000000..0e06b2e7e --- /dev/null +++ b/emtests/test_memmove2.out @@ -0,0 +1 @@ +final: -403200. \ No newline at end of file diff --git a/emtests/test_memmove2.wasm b/emtests/test_memmove2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8ddb8bab7d02979f4f3a2fd351e0e74b0c7051d4 GIT binary patch literal 45992 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memmove3.c b/emtests/test_memmove3.c new file mode 100644 index 000000000..e9fc7c165 --- /dev/null +++ b/emtests/test_memmove3.c @@ -0,0 +1,15 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { + char str[] = "memmove can be vvery useful....!"; + memmove(str + 15, str + 16, 17); + puts(str); + return 0; +} diff --git a/emtests/test_memmove3.out b/emtests/test_memmove3.out new file mode 100644 index 000000000..1adadcc22 --- /dev/null +++ b/emtests/test_memmove3.out @@ -0,0 +1 @@ +memmove can be very useful....! \ No newline at end of file diff --git a/emtests/test_memmove3.wasm b/emtests/test_memmove3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4b620ec4ca298c3c4a3df32bde8205d417e566c7 GIT binary patch literal 23943 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 +#include +#include +#include +#include "emscripten.h" + +int main(int argc, char **argv) +{ + char *buf1 = (char*)malloc(100); + char *data1 = (char*)"hello"; + memcpy(buf1, data1, strlen(data1)+1); + + float *buf2 = (float*)malloc(100); + float pie = 4.955; + memcpy(buf2, &pie, sizeof(float)); + + printf("*pre: %s,%.3f*\n", buf1, buf2[0]); + + int totalMemory = emscripten_run_script_int("TOTAL_MEMORY"); + char *buf3 = (char*)malloc(totalMemory+1); + buf3[argc] = (int)buf2; + if (argc % 7 == 6) printf("%d\n", (int)memcpy(buf3, buf1, argc)); + char *buf4 = (char*)malloc(100); + float *buf5 = (float*)malloc(100); + //printf("totalMemory: %d bufs: %d,%d,%d,%d,%d\n", totalMemory, buf1, buf2, buf3, buf4, buf5); + assert((int)buf4 > (int)totalMemory && (int)buf5 > (int)totalMemory); + + printf("*%s,%.3f*\n", buf1, buf2[0]); // the old heap data should still be there + + memcpy(buf4, buf1, strlen(data1)+1); + memcpy(buf5, buf2, sizeof(float)); + printf("*%s,%.3f*\n", buf4, buf5[0]); // and the new heap space should work too + + return 0; +} diff --git a/emtests/test_memorygrowth.wasm b/emtests/test_memorygrowth.wasm new file mode 100644 index 0000000000000000000000000000000000000000..03a5ad50c50b0166d30d69f9c778d339356cf07f GIT binary patch literal 46406 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 +#include +#include +#include +#include "emscripten.h" + +int main(int argc, char **argv) +{ + char *buf1 = (char*)malloc(100); + char *data1 = "hello"; + memcpy(buf1, data1, strlen(data1)+1); + + float *buf2 = (float*)malloc(100); + float pie = 4.955; + memcpy(buf2, &pie, sizeof(float)); + + printf("*pre: %s,%.3f*\n", buf1, buf2[0]); + + int totalMemory = emscripten_run_script_int("TOTAL_MEMORY"); + int chunk = 1024*1024; + char *buf3; + for (int i = 0; i < (totalMemory/chunk)+1; i++) { + buf3 = (char*)malloc(chunk); + buf3[argc] = (int)buf2; + } + if (argc % 7 == 6) printf("%d\n", memcpy(buf3, buf1, argc)); + char *buf4 = (char*)malloc(100); + float *buf5 = (float*)malloc(100); + //printf("totalMemory: %d bufs: %d,%d,%d,%d,%d\n", totalMemory, buf1, buf2, buf3, buf4, buf5); + assert((int)buf4 > (int)totalMemory && (int)buf5 > (int)totalMemory); + + printf("*%s,%.3f*\n", buf1, buf2[0]); // the old heap data should still be there + + memcpy(buf4, buf1, strlen(data1)+1); + memcpy(buf5, buf2, sizeof(float)); + printf("*%s,%.3f*\n", buf4, buf5[0]); // and the new heap space should work too + + return 0; +} diff --git a/emtests/test_memorygrowth_2.wasm b/emtests/test_memorygrowth_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..aa3c9f7580d4e04db9d45aaff15f81a3d45ecf3f GIT binary patch literal 46475 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memorygrowth_3.c b/emtests/test_memorygrowth_3.c new file mode 100644 index 000000000..d541cc2db --- /dev/null +++ b/emtests/test_memorygrowth_3.c @@ -0,0 +1,54 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include +#include "emscripten.h" + +int get_TOTAL_MEMORY() { + return EM_ASM_INT({ return TOTAL_MEMORY }); +} + +typedef void* voidStar; + +int main(int argc, char **argv) +{ + int totalMemory = get_TOTAL_MEMORY(); + int chunk = 1024*1024; + volatile voidStar alloc; +#ifdef FAIL_REALLOC_BUFFER + EM_ASM({ + Module.seenOurReallocBuffer = false; + Module['reallocBuffer'] = function() { + Module.seenOurReallocBuffer = true; + return null; + }; + }); +#endif + for (int i = 0; i < (totalMemory/chunk)+2; i++) { + // make sure state remains the same if malloc fails + void* sbrk_before = sbrk(0); + alloc = malloc(chunk); + printf("%d : %d\n", i, !!alloc); + if (alloc == NULL) { + assert(sbrk(0) == sbrk_before); + assert(totalMemory == get_TOTAL_MEMORY()); + break; + } + } + assert(alloc == NULL); +#ifdef FAIL_REALLOC_BUFFER + EM_ASM({ + assert(Module.seenOurReallocBuffer, 'our override should have been called'); + }); +#endif + puts("ok."); + return 0; +} diff --git a/emtests/test_memorygrowth_3.txt b/emtests/test_memorygrowth_3.txt new file mode 100644 index 000000000..90b5016ef --- /dev/null +++ b/emtests/test_memorygrowth_3.txt @@ -0,0 +1 @@ +ok. diff --git a/emtests/test_memorygrowth_3.wasm b/emtests/test_memorygrowth_3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..167d32d9d139379bc66dba510f52b7f6de6cbd53 GIT binary patch literal 46923 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 +#include +#include + +int main() { + const int MB = 1024 * 1024; + // TOTAL_MEMORY starts at 64MB, and max is 100. allocate enough + // to prove we can grow. 70 is enough to prove we can grow, + // higher can prove we stop at the right point. + for (int i = 0; 1; i++) { + printf("%d\n", i); + volatile int sink = (int)malloc(MB); + if (!sink) { + printf("failed at %d\n", i); + assert(i > 70); + break; + } + assert(i <= 100); // the wasm mem max limit, we must not get there + } + printf("grew memory ok.\n"); +} + diff --git a/emtests/test_memorygrowth_wasm_mem_max.txt b/emtests/test_memorygrowth_wasm_mem_max.txt new file mode 100644 index 000000000..726d4b028 --- /dev/null +++ b/emtests/test_memorygrowth_wasm_mem_max.txt @@ -0,0 +1 @@ +grew memory ok. diff --git a/emtests/test_memorygrowth_wasm_mem_max.wasm b/emtests/test_memorygrowth_wasm_mem_max.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b70b836ee473ee171bb5abd90ea95f9f8007beba GIT binary patch literal 45633 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 literal 0 HcmV?d00001 diff --git a/emtests/test_memset.c b/emtests/test_memset.c new file mode 100644 index 000000000..5b6a8b256 --- /dev/null +++ b/emtests/test_memset.c @@ -0,0 +1,58 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +#define TOTAL 10240 + +#define TEST(size, type) { \ + for (int i = 0; i < TOTAL; i++) { \ + buffer[i] = i*seed; \ + } \ + memset(buffer+size%17, 0xA5, size); \ + int v = 0; \ + for (int i = 0; i < TOTAL; i++) { \ + v += buffer[i]; \ + } \ + printf("final %d:%d\n", size, v); \ +} + +int main() { + #define RUN(type) \ + { \ + type buffer[TOTAL]; \ + volatile int seed = 123; \ + TEST(1, type); \ + TEST(2, type); \ + TEST(3, type); \ + TEST(4, type); \ + TEST(5, type); \ + TEST(6, type); \ + TEST(7, type); \ + TEST(8, type); \ + TEST(9, type); \ + TEST(10, type); \ + TEST(16, type); \ + TEST(32, type); \ + TEST(64, type); \ + TEST(128, type); \ + TEST(256, type); \ + TEST(512, type); \ + TEST(1024, type); \ + for (int x = 10; x < 100; x += 10) { TEST(x, type) }; \ + } + printf("8\n"); + RUN(unsigned char); + printf("16\n"); + RUN(unsigned short); + printf("32\n"); + RUN(unsigned); + return 1; +} + diff --git a/emtests/test_memset.out b/emtests/test_memset.out new file mode 100644 index 000000000..7517e6ba6 --- /dev/null +++ b/emtests/test_memset.out @@ -0,0 +1,81 @@ +8 +final 1:1305642 +final 2:1305571 +final 3:1305643 +final 4:1305602 +final 5:1305704 +final 6:1305693 +final 7:1305825 +final 8:1305844 +final 9:1306006 +final 10:1306055 +final 16:1306280 +final 32:1307056 +final 64:1308384 +final 128:1310400 +final 256:1315200 +final 512:1324800 +final 1024:1344000 +final 10:1306055 +final 20:1306310 +final 30:1306867 +final 40:1307060 +final 50:1307463 +final 60:1307850 +final 70:1308037 +final 80:1308424 +final 90:1308805 +16 +final 1:332555306 +final 2:332597423 +final 3:332597229 +final 4:332638967 +final 5:332638793 +final 6:332679896 +final 7:332679486 +final 8:332720210 +final 9:332719820 +final 10:332759909 +final 16:332875316 +final 32:333189464 +final 64:333800048 +final 128:334950368 +final 256:336967616 +final 512:339333248 +final 1024:337924352 +final 10:332759909 +final 20:332970089 +final 30:333154439 +final 40:333365234 +final 50:333529289 +final 60:333740699 +final 70:333957644 +final 80:334096484 +final 90:334314044 +32 +final 1:-2141821910 +final 2:-2141779793 +final 3:-2130966476 +final 4:637274041 +final 5:637273857 +final 6:637315339 +final 7:648128533 +final 8:-878598369 +final 9:-878598523 +final 10:-878557932 +final 16:384620786 +final 32:-1383904756 +final 64:-625991496 +final 128:889823216 +final 256:-373561888 +final 512:1394178624 +final 1024:633133696 +final 10:-878557932 +final 20:-1131244490 +final 30:132010428 +final 40:-120673793 +final 50:1142572023 +final 60:889890139 +final 70:-2141802805 +final 80:1900447306 +final 90:-1131244285 diff --git a/emtests/test_memset.wasm b/emtests/test_memset.wasm new file mode 100644 index 0000000000000000000000000000000000000000..75fdbcf6037c80411b1aadd6a0ca390f15a4ecbe GIT binary patch literal 64043 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 L1RK%~!IJ+1C++1i literal 0 HcmV?d00001 diff --git a/emtests/test_mmap.c b/emtests/test_mmap.c new file mode 100644 index 000000000..26f337bb0 --- /dev/null +++ b/emtests/test_mmap.c @@ -0,0 +1,48 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +int main(int argc, char* argv[]) { + // Alignment check for mmap below should be consistent with the reported page size + // For now, just require it to be 16384 + assert(getpagesize() == 16384); + assert(sysconf(_SC_PAGESIZE) == 16384); + + for (int i = 0; i < 10; i++) { + int* map = (int*)mmap(0, 5000, PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANON, -1, 0); + assert(map != MAP_FAILED); + assert(((int)map) % 16384 == 0); // aligned + assert(munmap(map, 5000) == 0); + } + + const int NUM_BYTES = 8 * 1024 * 1024; + const int NUM_INTS = NUM_BYTES / sizeof(int); + + int* map = (int*)mmap(0, NUM_BYTES, PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANON, -1, 0); + assert(map != MAP_FAILED); + + int i; + + for (i = 0; i < NUM_INTS; i++) { + map[i] = i; + } + + for (i = 0; i < NUM_INTS; i++) { + assert(map[i] == i); + } + + assert(munmap(map, NUM_BYTES) == 0); + + printf("hello,world"); + return 0; +} diff --git a/emtests/test_mmap.out b/emtests/test_mmap.out new file mode 100644 index 000000000..f2fff68f3 --- /dev/null +++ b/emtests/test_mmap.out @@ -0,0 +1 @@ +hello,world \ No newline at end of file diff --git a/emtests/test_mmap.wasm b/emtests/test_mmap.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7a268605bc627cd4c4526e45fafa73d79f047fbd GIT binary patch literal 50728 zcma%^37l2MvH$Nm=bn2na|dPsL0qY35pdsk6A$Vr5H*SVlKfv1L_>@-h?!v|$%`)x zii(PgyCN#CprYcwq2j(P?z`f?@B7OC`>S*BFy_7g=kv#QZl7MNtE;QKtGcVZ3lpXs z5ETlA=%9XkC)1`)i>B=z=}*Bug}sY}O)KmjdklXIdlw3OrwUXmoV-(4-Nc!v2#AMP)4$IO)KB z+iHOLnliC-r;d)@4y*xE$Umm+J7LnKjW*q|ka~4`hHd^o!?xNu4{KbJZnI7Epz4aC zTE-rUw%RC9)Qdz1OrV*M=h|j$DY{^<49Qh?&aU(cg=oFKxw~82ktXr zQnK5G-I9arUzIVF|GfX?{X73bkgzJ{IK@#{+~o|BIzG`~qlSiLbQZ-)sgy=ZDNSME zD316)O`@of7Sg!PZ=upF>eW!KMvZCjK21%9I8M{FoHi?U+BYhc_U$_@8X8ymlju)T ze^UNrg@6BZa5S`3gsRxYTXUg9u{B`{Pn`~V8MLPa~3Hwhj z3@YOPpVuv@m^!hrQZFbuG^#fIdd)rd7-oa_*kg}|qu-CSkx?{lXhVpGHdvu`Si{hUtf@8o zYrA|ytGgAqw?cDLwWz6@7KS!7RZ9gc3~Q)1_>V=ys?~mlp^aIgMJb0h64JX`os&kJ z3FziP+t7hJsBA-l+B|HU6+)vG!patfA2E;L)Sk~P$m z^|ii$ZQdpHvwn*2Z~YbDn8&XdR;5*r>qUJaABVU>^l`b#)cPM*4}u#?(yTJ?b{l28K;+lQ75zscx&-DncqR)4Hh@ zJGJ7ls;%mfb_uK5Y9s_ti^J;VUxVK@Z4Fy9i#uDxU>j_!Zypy2G&5BzSO~GIMN8J9 z4Yi>)Xv2Uo+=g{ST+4>rS`KN1jTjjh!bl*EvXM5bC9G|03&nvs-Quv0t)l|gwRQ6X zAkjco{28alsJsp~+$#?C*SGaW{S9mb5ofS%+B|ku+k99hZx5#x z?Z&t`Eo)Bgv|=?Jk=hYymP`#_rr9#D<{Kr$eVI-TPn7M6a+b7*KiD6H?_caM)LLOt zdzfNVvS>>9m;H;ht>MVXj*POXGn^DMtvaAzxs z5(vao6)H(*I5xIp<1Fb2r^hO^*c#4{4R?C1)L?RK+!`*A?ebW0H^p{SEEMmK?d~{> zI>Mt0u}3}ik|;!wd02x6mF#V&)C)1RvlrrV;jP%-igVIHr%z-1G|njnZ92mbaTdF0 zW|9?bX3`c;O!%=ALG7%>eu(WXhH?csUYrD)HS>P^Mrn;JeT+9#gs`=Wi1 zr#;L}jp&(aM>sJh4&T&pR%(2l1#euG+C`~&LSB@X2K*!yS>fg&XuEj=8fWRN#t7N`|}B!GhlrROh*p-B1#L zyjim6N=o!e$#8Gh6J1tn4d0gxcY_DL5UckbQMMz>8Z|z5<~gAZ=cwbIS++CjQJrBy zS=8aLsB;xTgm;Ep%JyX0ZYj5i`^t7-S&){MZCM#^^YD)FURgDNudE7^4T|o@FEhn% z;kRimQp;rp4Us`Dkf8?+Iu|15p@nZA6 zZErF81e+ih-^cd0eWr$eZC`QspX^WK?TI$g_UQHoO7`KJ(T#rYzK#m&r~Ib z>G0q7-%32qn8jN{S7cogBq(JowT9`DP4@xtkjM@}9Bc`PMs_ICjd4mqI4r8BHcdZv zm=9hvBAekE4v*~cNQEB}nH-EeGcsIdOgJjCqoU$8zEZ1H!;(t=c^IGNYPh`uEbzR& z0-{SQq2iM~j0syG9T~1XF3gH-mar^mgIdEeksafO9!s29;JC<+^MKir;mR%H_=p+j z_&f*oIyJIWJ;7;_o#ypAJ+jmDXecr#vN;}oMr3Dr^xVki63wK%ZDW!W7>1D~jG+3b z$$zT+HY^OW5n;HKc8KVACjG+!ofX+x4rpFv^Hk0dQU09B&hhATBRkil&x`ClqD9_w zqcD`{uoh*UCI6Z7+fd3_D-3s{49^N;=^%6+#D*pP&aMyYU;sJ3(WH{BS3PnKS#>j4T5I043lY>|s+2R@q z;%|-&cawu49uT)ghI0@gR>_*jgj*xKRphETN8c9NZ3qG#;dW}Pu6svhxZ88QiE9ma zMs}xnuDc?;%ZtA|vbzyvI>J2)v3ry_mytTcy)`)ZMTWcA;Z&6Ne)S!d@K9v9`#px< z1lv3u8Lpzn%jbbdB6~#Ds?7sSquM<1Xk?GN1ofCpQ2Z53JWdedo#BbdaBncvJsH`P zPN1hEdrGzS@Q(0|OGnRm*<_>a-RSbjQTR>Oeq&2L zTdW@bd}O#hV5#SN0URT9Ifwv~ycikoapm!OK-JSUaI}Zy{pF>|Ug{wjw3 z6tVQyY2(7nk-bbEvS~~Txum)*vSmKHy&^8w==oY?uX%-EkL-0-_?0N1LSBj5!W*8v zGBvyz*_)o~t;pUI$U;~nC26*N`Eo|Jw>c{X)bMU(?^4zF z@SdR9dl3Bn$lfQ}vcaw4!^l4LWFJNL5$)U_K8_6c9!>v=lJU_QK8@^CGITYyhR-7V z%rkr*+2=H5d-x(UQhq^(FQcrFeF^4YDLp}*;hV_5iL$1t;oHav{T9ajF0${O8@_i> zxi$O{Q5pMzY3s+xek86vERPKLJwUr+>x#n~C<}}xYdGgjk8QfkvxmfXh)W9y%B}&v+cq?m6S|_Tf$*6zm#xzoULMq$8F(=*bbAnpe_(s!^~JX%#1t3 zkw8Qh2Eb}SNBuey-HRae0eW@yg`;9S$`Lp^wxeUsSF>Wnsnw2&4Y%5ua9nK1Npe2M zF`OOSY<;aBb_CWg{Eo|RD}Y~Pn)0y$$-;)P(8_pM!)L2&=r}&Mc5~N4U0P*H#zSs?P-EZ z8{Jv4(}dbaVH?{3(rs9yTq8r~22f%{2ywCqac2c3bfaKZO(P6U_f)d&&;<>Ow}d&d z{Y<}S#D@0_7~|@SU9G_!%6Epj6lrsz`7~ zYYhd$+rl}DwsQb^ZfxhqlBdp#?L4~l)Nny;7sQgOE>wtJh|DxUw)wFHs|B$wh{gIB z#fH0(GA~vfA5+66v0VZYr-p^GEksRXZi$WPOG$N^;_yuki(*@Z#xylt5!)3cZx2_- zM)Z}Wx=L~QriQCyyV_G-gF1$%JzN_b(btmdI>q6e8m^CxkL%IQZivOq{8bw+j%~5G z;mwdB{M>Gi!To~&-J61eY&h}k?Xlr@9uw|}?G8ExU#aa}4YyVD&#|fP zPz`rfY^9?*UEXZ>#CDI+8!Mi@H@15{`o7rii^Btex=TM*d%zRlAKU#( zd`E@K+*S!K;xj&W(8tas3S)Byv(c*hgRwnWXNk0?o<0;CPMAL&TZ=s$j|q>&_K1>= zCb%^$jSV+?TzD+D$2?fm>f^CJ?wCD6oCfhfZ2FM5KP zVtdK4e>t|7^JplsEVgAH{R-H4^sBMGN;D0bN#c7Y4x5rBY(dX{N&Xk*w@t&wwnf;? z8)swD>^1s<1A0BS*B#IsvAv;kHWtO-jO|U2eml0eJ^G#4-XU5N-`g=uOmD_vbIN#K z{@3JZ$!BBR+*fh5*5wl4#vx0oIFscwu|4AepJkr(sqwkka8LP6_!OOn$uc(Fv$c?r z!C_B$+3$)*?+UrsqHs6094)!;z1ZG!kgQ?C-24@De-PUT9{M5VwGSDVK8o!lH!s> zW7bOSs6E_&z5iJdH5PolKWa7v=(0RDPUJc#F;eT2Rv_tI9J?^F3t8P_a!PEzFJ&zd5L-ZfFG=hYl1Us}nAk#3c4=al z(pK%^vczx;Xpqa5jE~N+D6vIkkT`ZlVpn*ED-*jCg0_dN5+mhRWVkv(9J`ujw`-N2 zpw4hzV%H@S$F5I|(Cguf8xp(0TjfUgAdcNctJzI7-{Qm;6V)DWP7HS=FmFlhmLv?$ zrLn=@fVVn7Faq3`7;bQlcJzze6T96R?vBLnfMALtK)*EgU?h*k?oRAZTKcZU?sAge zlh{3KX%9y)N!0J}^_KR6YS8H#_a%nAwZ?vGtNRnf^=!@u6T^9kTJKh8h=&q;$kBQ@ zv4=h6k;ESHCFG?fruHr2QFX6Jg~&rmSS7W=k|7_Xc9I1iPmm!Whp+~H#Be=H_IhHtoMcjqS5dckBe6Fefj1L-ljYjh@K$2DJR`9^A-tU!?#&(z^G;&8 zRaUg!yNSJ}jPzb&?jS#S7m4BW z)V(ymewhGJiN8(^_oWg`F3H*Y^Zb{rO8ZSc?YD{HzUc}0yTrb8INvAsz0>vw7R()= z9~ELhDs@$b(E!U6Ti$~_)$D!OAG?Z%>oqP+FWU4Xb=6l}IJ8K-9a>afzxISPiiU#> zhZPC2!xTjV)&B4zpQ_LiMZ+ELQC`)V%A}Yhi-w!&F@%86QAIndxT3kL+4bvac00Og zM;A4_%_`a~@X3~}lXaQUSX}qqxlT4s0r%E^A6zG=+}!-vejko4+Ob8pJi~ECJFb{L zbMccGr&Gf0B4yZYuTz(WlZq+8Rpzhl*L+p27h9X*cq*A~z)V!MlZti%xSt3<_}jwC zMLV%*Co`s=QZyV?JGE%1`VMEIXH`yfuycww$E$Ki(a!Khvpsxn(Qu~#`OKo><`#Di zXSr`qaa=gNXndT_rouH9yG9~SPtetDuEUsDw0XW$aZb_B@j}imGTxjkiskKfUeV6; zhzk^Pfg;#pM4Qd#trJooQ+ylY!lL2MqvZKTn=drY7xxzwZ9!4gxyTb-1iBX&4X31+ z6zviqG9p$P)gwhC_K_k(ZqXi9&IgOxG{)MZ zJ*KbwiebxCe}6$l*fl#|R6sRkm#i4JQpDETOodfhc@JAMPCzddQ?{=~d%(P0_A#LR?!5Y7N)%O}e&lebKHf+V!Nm zp=h`(3A?Fi*B0}c;3oDS7Z(jDCb_GU<$QB9n@knEnV?(T2m9SBPn~c}ipKX6pkBp3 zgg7VX!`q5>n`3f&(Qfw!CjZSa-5o{4cN^__XVLh$6Q;YqV%O(Pw`F5W>)us?0CyJ+ zw+Is7Q?z?T)VnH>6AE;bGbIJoB>dm0StIAnoSe3GTX?)^TWK@ifTZWyoVNoKW`NcALM+yXm7daouc7?N9f zS9rf@c;1H~A86Pc$#P!N@O}tSd{nfLU`Rew+o>AvuGlTC=S~T?3Z~lOVOrAwJ-9GmL`XujHUljSY zFTm!@qJ61GKdF|WS{vrRD%w}jp(T8+VeV@s`Pk>HZ;JMfM|@kfUGa_y-xUr2cM$)& zid`or|9FJ$%1lyaNOVtj{yO#xO)U#+Q%XK3{ZPzijIRU zU3Jf_QTP=yv+g-*6n=%wu6yQ=!mp6i>YnpQ;aAAKx@X}i{0do6_gp;+zd{z(J&Q-- zSIG5s&z+<2D`ZLC^WZ4_3c0uLd14fPg)FUmUKoX6A6FmC=X8!V26?P$W-Fl;o8ZU2zR7! z=@W>Yc2r8Zq_Lw@!yV;OyONRp?bK#@)G?_YlV;w!_j(sRHqE{tVaF=1iw?~$Iy7t6 zJ1(_mft#J$Y@eNvPmQqS!RG`ac0$?`PD<^hl&;36C9^JiNwX?^a%v}gj#E-Q#jAQM zS~uyml6OiPnsY&cfntu2fL_dLDh|cr^wduG%yUwkgY?lJ&R}QMq0CKfE>MKUS4?nc z3X888Jz>355?!FHs7Nbq;_GgaTd@x7Yl-23^gucS2e}g78ZKzTv9907J3s9Nb6jh z+9loum!*cg)T01!E&wi1?Q)M>gxv9y=DEU~=L#imEK0}8N53mo^DEOa;VP^gMF09w zM=+JU#+!1aH|0oG``XlS*U(_srFNY%oLg_Oks`wNsa@|hzah07y!tn$c4MuZa6g@=S|UTkH*Wb80tx?psp3MGZC5$6XsKHd>O}5>I|xYB`?+)G>BCwklmB_B{NRig)y z|I+YKY7cq(hf{mlK|LZ+4*_avYD+!p(bOKPfqE2Bj|qZ32CT=~IZVS7sXdT}r&7c7 z6#1Ukw-lvkQp1lj^(=p-%srkjZ0)ZElwR#aM3VqZ-SC(y5@_L>0ahFPz(#+w6vLrSN;;eb(W zbHD@w_{}=tw^GBs>19%%H^Ap@7L4T+$FU;vxFhgRYVUa4y_?#*SP8X<_fvZxSS{g$ z)ILyC6U;W(hk5+e@R578wD+;9{;`q(iTrUnO-uSD12y%8XQ{6YrwMA%#zJ?eKT6BWCzR|2k3O+vCwlZrB|C{|iK{1;Fx5Pv6xO4R+43JJzpYIf z>xFgQ&SPCytZh`-&MQyb%qZCmhj>`Y4l9Y0hnEaD-EEwvm(+eoU?`?o7=-Y!9TMMi z?^-99>|`(8xrX(=Q%ZJw=s=adYm!pC10me6RomFzaJ^zB$?DZhtzggcbS?(mYy58M69 zZYg1%{j0DSbBl-ERkFLhCU=+YZpGbI3VT&;ui8*IK01r%U#-uymRaT=7V%%9QhB=LtIX+a<#d ztkDl9f2U;cI48ebvUeexVhHd>{M?A;J+=El%t}i3Udi64*+0Oj+3EWsT&rgH@Q(12 z_u-Gc*}cSCG4TAyCBwZ{<3%;xrzOMnY}?ODhVu|L%UjMJpO@@&$M1`hec>TrV&h%X zZ1q*iaD7|C*J|dkg~;cn&_A_-TFw84YHBtA+Y+n!-$LQMC28Cq1NWhm?irp=HB?=!~+>AP)&cf33PLSGjzwlnZDS(oGL&c4XObE7gby z$&M-;t~&|c;pnpAa*}B^zrXs(tg_8=1db`&F>d;JY}s&mMq+zHIIe8CV`LahxEf}5 z*>L?=wB7M#JDw^NKnci56fv)2^D3cxIUiP=w@xTJ^?U*F#IoTe+@DmolVm(>EUchf zlgu*>FmFTG>t$MYV3}!u{!GJKa;yDchWKDEhQ_YB~E=YdE89XSi|W z+_KFrhqKCdR$1EF*=0N1n`a(>32O`IlrTds!l1i{V&gY#9q2K)=k zhW`SVIWH{Rg`_2%$%Vx8%QoMOyU0B>&c)?iOT46aqdsN|IhvmMnR-+C@BKKEX z`J{>SkpJh}%Yt>tsO%S)!_8%H_?sQ_;<7EKnu;O-R=KroxKknOlCmuk_b*nKl*aV- zgtT83Tf%K+yUqDzemUH(pm0ao@Z14C?i9A_e0P=YuCgY*yA@)0dog!9Veaupq-yt; z4R=qivUX=Z4b$EIWj=krd!TF&2$lQE+Zi5o`*r?mzI&)#o9`Ybjs%_Ik+MBpwnyNu zrDa>{t@>!$9#wu1?+A}6k3Hr^k)K-s(jF>vuIZOyPjna$dAw|odnKMK+f#~ryd3td z+MZNZ#OkB2_jK8Cc|fk;K0|LUTOXw$fF#eB4fl|W!lXgVb~dy@>B?cOTeTb|+Vvb_yS+rv9$Bjr0}c(=@K_bx5^ zzS0xa89pf62W8E6AC`^K4`Jkw%Jz}B%g62^bNvDmJ5{$>T6A-z!wVB^+L1nmfD#CWll)W6D7}rnw_3{4&kWtT4^Z zl(UnkD=HA|6tD5IdtXOZ&b0=1uawk>nBrpHC ziXG>tA5N~=$&{&i4mrLv9ODt7dThmx^`x^aHrr7>p3Q+A)e|_5Aw-V@QB8Ems9-*N z=Y5`1x=8}rPN^8Kca4rP`DvIe_DDj1I=y1JoNCDQ)~HT4r($y)gEK02Mn%12ZpCmp zY+}0$A@P|N!<|uCQOa2r!!@pGzOyTKHgzUIYc;v5e@?}4?B<+TvGY_VeYJ)2E5zIR zg2q^_2D_kQI93)etZ4MU&Kc?==odr8GE z`NT*&15s_+>6wUtgE0z_ zRkBddt%Kn)%y>CF@eP)BGh!JG)4$xjRj}sB9BfWZ&1ZS0HI;xRgi&a*L~m-FswgJ8 zHQTUh1kBG{!&qC>q3va3?HP{t?QMH|qWl0+8z)-EwuGrR6`(WR*63IrcoRyqWk)OU zZW@~3?4`y9 z_$h7_M52@3LoUTYp*5ujO^^81Vuzm@0jaTS06zsHoX(2~fVnQKA49iEikQ(R+J%T0!=7B!qri6IL+YH2qmwxC2-zZgA^$H+3iW zf97G+3Y_RVZt^Z9F>`k$-N0P|ZpAJ-zZ}tkGF2x5LJnr?TkvzlrnOM?_&4AS3oK)F3SfIf&g z3<(}O2O8WWUFEn%x{All{1c+J{PA(bc=1sb`cTIE^1mm)RVkxS=$1ZqHV+9aGm^aEruS|FFB0`&GQnjIag%t# z#U7q@5Lv||CSVr-h1c%O2%C7(8T2~xg6C-+}Aa)lPi8=@KLzH4qU)2fY9#~A5 zMg70kPD>-;2oD`1Gkf58$tvei9Zgk@50eqSs&ROXQT7_Dsrv7 z#1S^a)>30am*K5pq>c2%d0iRpIRh>z>!|9Ce(UO2qu+Xr6YJ4H5RdM}QExTh2KuBg zafDx=8`(y-K?}CW8#`04+o|*K;^@t4Bi`n=xoy@Sw$Ny|1xTnjZy*3$+LpGFu-Zt_ zx3aBl1COpEs89qAaT6HC0{sP}PeAXA3E1}=(7J~lyAk`cO zc_pd%_O`v?WEe(6l+iZY7Xn#uByI=WA-4tIE({{GpS$>#{Yw1~3NaL63#H6^XdK$Z zhoL=fPlfykhOZ*hZ|pZD-qQw&(1V02=O!)`-$u4aXZWrCR&DjW+TbH|>EE@7|J1>mk*IOFY)3^Bh?ZG4sEBCGc(g@doqLnF!{wd6jwk8L9q zKpSWrgcYt4#hgms_m=B<5MGdTCFwD1|po0 zwf&WCe`VvKY@SVPz3ZqWOwK#PfgF#WtYmbAby{_H*4E*(*1_88i0v($q3!Vg#%ahj%6%0a|+{!O%a4%0^6B`J;*p|TLVi!;*hQN@-*aR&517ccYf5PIB`o&|1Pol zzqF+KU*2Z_taX)xX_UWra?+bUtz z)cpGpoxc@{4%PWvq7I2L47FABVaQj0X6Wc`{_RrbVUginL2-fkaGl7te}X>4!$9eh zN9bs-Fqx^7x!!wNVINpiC6Ck<2Luid1d`5G$)j|1SE}UEewq+f@>oCLdo1-nPN!~j zRdTkDoGRJz5vOjYN}iyTsT{}T^u3btp=%g)2ZO7UC+nE1GMu8*sT!tF)frXJ)p9d} z4x^nOwdq(cSxzPA8GbGoRdTLQ>T)!Wno=Vdt6V;6riv7@f>w9y z_^bK$j&t@sIs#jdhgA2nTA6?QQ4n8XyidnrRrLKj`lfyi(UmBQ@_$h zc_Q=p$Mp-+Pw1?wh{gtX6k^w&f#p_CP1QG7iB5IBkMXTwusa>GptkqA3LJ1AcP4*H za7*o#(K2*fUwb4`4@`x7Avw))a zQ|h-m04ks^)Jlot2q=YM}iiGZVl?GNudR(8(9=$#AMKADFDOB_Bx`zkE78 zM?GH?A{{W-*RIpyZ$F6+A1@mLHw%$&q*Ln@&^x8|nI9SEuL^bM&L@TL#M045s24kD z3Jdtrk@_jyiHs}mz8Rs>CFdN-^QewcE2}e%+7FI+Lan#dgP;7j6V-@1110J_DV=F) zu0K5{|D!eisTcZFqxafg8or*^#WjM@+5o4pf$v%<@Ouf5=XBOu(a-B-wW3ioU!ZtN zbvw> zTgbbC)PXj{(5qZvA&ij%HIilMy3TmCr^q!XbVhcvkb-?RDIZ<`U)q%~Z#e?K z;sgS@hULpny8VFT)+kvg)WGKm5C#G)9ytQ6CgD!>fvHT&RxP{bIT)bOf|<$IWFZV- zgZ0UHW%|{46&QpAEeF|%M%5G1hU$|pG0cYPbGQw+p)DwNYk^&4)+tR++&L=C2P^4u zquRqde7f+ePB~NnxXsHoJ{vCR>)CoXl$K;)4ONRGXwGisE-$f%a;G-g1nf4+v4gQt z+(d6QHerR5rsmwnwjsfm3PDd($j_vmG5+`((Y7c^hyd6mPDUwG1lo`y(Dd^0W(V}D(V;(Vw>`d}_4 z8Oy?>h=is{;xRo|Sx(V9qqo)0ovuOBR=d^)64XcAwLR=ERcm)OhQ^K!R9jR@fkn@A zu)ii0;_PX^X3Y3yYJ2|sTFzd!7xd^}ypiT7MOtVB4Fyopr07v2ZbMOxe9=bA-fxxg zw_*TU%jC;7zft3^(D#&$OO5huAhNgZZGTXNZs4pcqw45)avkCK&* zO(QftKPXs}6($lou|>+B_cM<|(;Do$I6Z=Ce?Kij?I!@fV*ZyLDmtJ2C5H+lYuz}P z$fUXtP=}htkNOiTAob+hq|Pu|iq>Rru>)%zg)5V6QYV)t{ngraX;OzO$u)3fA*3T5 zq#ksT$~jOSW{@2iN;XL60{xqXYS9!ukKn0c6%Nhi_Ff$9t@Cf#hptk`d~ZQyGoi8oSUR@-4a2A13~}Hl`83js6JiDJ`55FMyP4N%6y35 zy5yU4hf42Lsu@!Aq*3Mi-EkLP@M&}yUOzCvWaHQXQ#{fOc6~I|!I7S-P zF-UyJy7D%QoX5HHhDJ48S{m9LC$L<1BklzEpi!L|*#NXMjsv^q#$4%o8_HaV^ffL) z;;4$cQGR>cX}XGr4tBckR?6jdwhR4wCBIH5*W$b{&taN_dbKVzR~l8?sq2$a@Xn;1 zv+DOJq12rn(V8CKfoi92HqWOo73Ulz_B~e$9(Ob40SpS~X&JwsfaW`2+LnLQWT*Lb zdx0)IQXjccw-$*J=DW_v=)S;py8*iFh!NATJGuZ3MYm_7P+csI2(oa;(JH8WZPMm0 zMiS7@+@%Ntmx*qdLCMRd)CDfOK+EyrF_uDwJ|?3C-AWX9vb(Q~h*bKO((A-UH)yj! zx&gOHit!hD1c~F< zM$`gIYE`48^fE1y|E66ttmw(oCUAd)LYy^+B-d>1H)ELJ5|MXj+m`5^)x3$DqG;Bs zW*D}#X#s?x3m7p?@7O;DjJj7_b# zz;P$4lIpHfwj_k^AY0i6wX>YWQj)DIkgVn*y)@;QkhbXtQk}3h*7yLxFO*w7wNRC) zf}Ao`n|;GT@L(3BZMb-C1kyOQ(qi+lHZ}*j0@hcWg%_8M3M(a(XfjMP$q-vly>N(n z7Sf36NCvQD{vRtr#v{0ARGAP@v?aN*jk1k9e8HKES2nc`Y*WuZx9*StlL2Krge*5%^@5OLl<((&{<-os*|6r-R$!&0V)Ql2 zL1MH$p~vK?)waS|qoAgm3Ad8{?GvM`+qnQ_)&<2qbe z0GVBF``qGwjLO)}c9C8B?nn-j7|6GyOACraT2T3WunG*mdm=mRsU%};m*&;L(f7j; z6mss{J@N}!|JVChEAVO|+qN~J+zTSzsd*?}tmIuWgOQtitDiLoVCfQ3xcQ7U+Fl)N z^#69<@aW81=`wz?#x}@nYXY9pp50=B-xPV+8*NS1VhiFBF%U2nr!9d^+i0IHY-?3! zO^qn@4D&%^P04WTATDojZHU{AIp%Z}W$$Ba(lfTnZDqC*cr8&h3DP!#q_%Zwo{4Ll z<_3)iRI0Bv$}q1VJ*OZ2Ea3{3ET+PZRCi5i(>JWW4@R#_{HpcE{qazl*H-KNnalqEjWb<`^g*}AP7z?5VqzBcp`OJ4(R zB^%hv4ONZ?cP!_!_DT#~qw?DZw#wc_wtc&4O{t+9K-c3=|SJm(Tzg53Kxc3**70MdcDqJ(4-@Pq` z^O8clkk)9%Eaa^NnYw#e1=O4J9@Zo>QTgn|1>QfK#BSWuog=%sH8nR1cR`}o8W#)M z0|h5}Hf?LJfUm+cT+P=!81nbe+s>j?xT|q~=_69sFh=yyND0k)RQrk5nyO2qXn>Lr zw8FZD0%%A2X$1R0o!Ov+XgdGh8T4yGLPl-byF>SdgOX6JO6HarM7!jZeukLaq*7JE zCIRhh&H7=kt-JmpfZaEwTDolpdQ(WePw7bha_UooHu~+w zE)@1e5WlI~tJaV!nlz)WmqpPa)pHPJxgQEb5FsNL^$L0`EC*Rpzqvy)fkW<3f9nsW z^Mzhrkd781VE{}K2E0XRGjAlZy00A5R<-V}ZrR;Gd<;i$$-9V;+AvQ|o&$OBwlI#k zyOANAZqkQ9SWUe}=8K3zP+}#G76~mcL607hbMpg9w61EnK13%A(ud&G#4-d6P>q{) z^u;ZXSoR>mljv^w-dP&f18KC3)Yg&!k_S~|cC)ioLyX@Qg%BdBRfM8yo4DIBOzK1P zgP*6NL%`2U(-+E#Is0N!oW-quz3I6XUsma{b1_Y%$-&TcRH=-V}z2)#_}9P)3^?dI^%4z)2X(!8No_dS3oOK$(Z0{Gc#Mt3WAbobVlrMgAJTK4VKXA0fdVn+z^J)Plv$P zmF8Vn%~MGFgKdV{IyOvfQ_>fcptL+m2fvOQ)RvNYp@s|VG!7D-%NIq088~VKVTr*F z@-+KP0&H(k3G%>aE~#6r$+K5e_2@JjBbeiIR;H5KxzBy{bV<7s1&uqHBdFTGC(*n< zf>=QVH7iF7Wm(5Y5UN2B?gFAhC0Hm_cyf7PBU|r{V?ytEd+QB1?10V%b41ps4gR3z z#=sj@{m{iEapw{pm$&BqEm8+tFHf zX6yxnGM8$QZp~KuRl(MBvk>u|I#rE@yI%*WrA8i?l?Z$1%_Ah5sBKtG%(=3t(}S?M zI6t%PSCo;_cIZfh7*}cCmD`Yx6~wCC=qjwG^Gv0hDgP>(-q#16^}Sjvq6#?>Z`V)MrE@5-9!;9rPEb0U6m(MF5LG0pVF=8*!oWj7~l z4kwz9OKdrx6eVSs*=%<;x_LtwgZZK0*w&;$hAd&rbl~Cx<-+(O(kNU2ci3M*hx4&< z7-GW#J;Y%&kCaCuCbQ@CI9geRmJ~_-z(h6b%@_595c+CnPGE(Ax&y-{Bj!*=^yiEJ z5Sr@a=&E^s4g8eNY)T7BGDCB~Y{dVvg;Eo28R%#n0V)EBajNIAr}Y3?m1~?Wtq=nW z*+|!OlnVt1nGCsdMe$T!gP2}S$(OtHAIPh*n3mKJ{GjQzP@7(lOrtGDf~{d$i5v_7 zTI`VK%D|ZwcBYR3U}xF#+9vH`%b1mYFw0YKM(UEqp_j8$Nxg@jm-il4*1Z?Wo(lDe zdPsq&WTmi`<`?V3=T1giw_lIOF zL7_pRFZ26WFp2m?0&o#r%C>19P8)BP&+%$H?l6L-ym+nQY~_~)ZIzWI1EfNHm0F!v z<=QhxyguR9rdxB1_xyDe@@pqG4I8pqU8u4~H2shnl}RvhB}>MIH6Rj3*2Fhh-Jrff zji!lq^(o@oZ21r0{jD_^zAo~zDiB~<_fCOfhnTf9Xb%-5(bdJ{?3>cLn?<_@O_Rg( zB^Ir%P$Z%aX@*nah|oL5li;al)gI*0=!&Vm!kjc!Ro%sT#(7w^R;eoGB;4bm9h5#u z!A;(_eMBOptA8g=zI@XMLV#BvwduNS)X=6(20|VMwFa6VyedCUGhkCXwl76;9wiM{A@H>y+Vftq9T8nFnN7%5@g)NeT4Wl2` zea+pzLES#9`MjI2$IPl_Cc1EhcP*B4HWL{&Y2^f&ruDph)S>1hX+KH8j5>(EkWS+a z-82l>7&)BIrxaSiqv?8)Px3h9u?Q!%DW6iJU221IB^%$ap~jCksON6zJy$Roc|J&{t<64lRs_h zaO|gFn>J>e*qRxuO_gIKUmQNoUzd15^kV85s>RMG>sNdCLElvbiGE=yy>pIp@g;gE zK`eH)47h4c27OpizZsC(ONH>YpNP1cTS1f-D-EGk|4)VpHDRZ%&stIZ|M9O7qdsK~ zf?I4%3XFeL?1d<-)R;74<6WpmZa7aTeH2?eo*HrrKI&MqLo75N6&e}^$oX}gKfEPG z1!jQ$eBwxA@~;u)t;pW;+~2#&P>$~Kn%RK3U;t&qM+1}?>j84bZir6dNBEN95v~=x z0YR;{WOplcavvU3<`FSva?4H(sC+(w#4E`_9g<;IfamDAO~&Xus8bTkrSHw$wLB{p zJGx1_gkMb1V>RRtYLIDa?324fG=Y4Dex`?9tQKc z)i^Gtd!ALf1&-PRM{R+lc9AZ3uc3Ca?sLyT?GnH09n=;IwMzhXscv`AQM*j{xr^YJ z>mGPs%<2eF==Nt?c)p%wyGXb#5N>K%f>r~9&?D@N+~7{LSk91ZbCtC&iYN2ujv=?j zU+IWlr3>L}h+VBK;c4q@{I+cA41>K@+*jR~DVFJ4dG1M>=^gMm*UNA^J=1wpaT$Zy~)~u-rV-Nz#qTcD6Hl zRwc_wvTVm~_%>Dzi{@Et{Pi&|iMMz2lCi>=!w5>iVT4)&*pPDw8Wq7@SK{Sm9>|X< z@^kDL2HDTU&!j1h6^~(KA_(jn)%bu7OBht!M>HL02y$4;%&t*J)3cSS9NH-D=17c6 zC~_|W#F#|USdr8KVn8Cc`U8CU2WLYpGIJ*MgnA|`ADi~Jy_IkR>^H%=kFx^eJ->T> zK9(bUsVyg}W)oGjKT(y5R7JNNY$9y2BKhCg>`}dU7xv4!>{(rGpWlKnCVCpv5^nwH zL_r?y*ZzkWn2KUWKd+nc#beLK_7|?nZ4IL|W4*Teg_gf7mtNyeET!JJ(P9$2H)@l3PL zH87+e1P`q2JaCAcpd2iUu-@gZeW)x})ZX9gVGnNEN2d3@;#F;*LMI_Yn0@NMGU4f zP3WqKJwG`r>R~c70`c#k z?XsCU4s#D1!3|C%eLJqpWBfdib zNF-so+8Dg_=4E|$|$S(z^Ial}o1+;mVx zZ5+~AsR@F4G+T-|Sr&S9Xe`&Fhc4vd$QlfcgK$51GYg0{mg=dX5{m&C4dvi+qoI?c zZK53B;Kp=CN~&;5J)zqaaUO)N4KH}j#^O)#I^7M6y75}0u`a)Y*N=6)=J*kjAG`5d zJr`>cMug>R0@ygP26j+Z8J8a}p*06_|4CIROx}(&7JoTZ@^v8?mPaV-yv4S0c85#j z1C%!sEgOg(MC99XcVz!=eAN@W62tA*ytOQh1hu_>s-#60Mi)jpL-IS!i`ryTGzc4_ zu^6oLqmcodBGN3x2mo`U%fxP+G?R7FN1XeLLYe9e&Snh`fmb=u*Fj=)O5@#$>^{e{ zUpJl?xCk&kvFXX^!XCL%QgQpy1-}1VuUXI`4@uNpIe96FTqKb2qD6LZ4ks1rT|Cr- z8PcLiJpnT$f@rxb>lRCHkAy-wYjBz!J6H?ER|w-Y&5q&gV}JZ)Iw0IiNqzEKf0PXn zpCIwG1jV}{lsmm=xz$2r^H0e6ZA_hO7=DW!P{*+8C#eogcwJ+@_l-LuY!~kkJK4U0 z9j36hs>eAp)}&@fEG+*nY}42$&)qyEH~!bmaF-6WG;f=m_lGsIhnx_-yNgkpdv)kU z#JEoCV*Hokoh<%y)?%&yR~(Av43K3Hmp46&w3u&nvAqi)z`bjSb2d{p7z`9e*7Vn3S#v*UPMzjqkdj1aKn~cQbB@E}PdWpur z3)pW|!-r@qa6d27un_k_4Eqm<`!|O9m&e`A&$Wax?Awjwq3VU(Z~%%kAmr^u)+#v% z)%(q%EBcLReP~5iR!eM9^CsZ|9UoGAKPZn*Ijo@*4*Wh$_kDy(uLpHEs)vwoc&v(^l8BIu61u1mkq_gTUt?{ag79!P%3}Zse{=9^yaSe6BENceK? zfxRC5o7Z(&WXqzUH`|7IUDs4kdnMvzhqAq@10UegSZDjjir4rR)%Z0X0H zi%YD74i0NuV59F-92h%37)Q zMoH3%7sd*S?4!a5m|Jn}Lz_;tY{8k9UGkGGr2dfVZ&3~J#=JHqyQq&NpnXh&Pj!@q z1Rs-Nt!mi7OWc4@+maGlWwf4IaMc&O?tzch_3@>ye8@#rEPQKMeiqpa zmHz#ePSl7azxK->NdAq^&g8qM35ld~f2*T%+y&th?z)=Dzw_4;v3L1Fmpo9?cK{aj z5*xQdi6ziYo!yJJsTb50b1F^+P1o%X!V44nO$BQ?a(A~b&bBWH`vCl-9$y6T@+fSY z1FmswO3gX+T4imN1=dnib=`c6vuwU=nj5zyNX9#@AW3+El$fidNE+{z~1c z*G0naUJch$II5-_RIRXPWy7pcKlYe4Oky?7i()xknOQTg={NmYCP!POY^{*$ifO7> zf(85}u5U)MJYP%9x;!PZNh(^fDi5A1+l4Su8tN-K>&U2``ZWxM$XoVMN6jGNJTjI0@?%{18;{D4Yh@5cHR@17p8nkc98bO%AdI7Nawm!BuJGXfRivg?^OjLw!7ogC6 zSxn!z-8Z&jBZ*Td%a8{kV<~lPPS}&ZyoPRt#>>MDHE@VX2ulCw_5p$2k8O|r*u~5v zIA@YS&)vqtK%2^Iwf@%HuAOpi�s+W^5BO>v`D+{(G4BV&)|&aC;Mg;He-C@>;) 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 eD?v+o_b=+*?|6g21p}MN#&Y)Uo-r~Mb$Vi?W< literal 0 HcmV?d00001 diff --git a/emtests/test_mod_globalstruct.c b/emtests/test_mod_globalstruct.c new file mode 100644 index 000000000..5566761ff --- /dev/null +++ b/emtests/test_mod_globalstruct.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +struct malloc_params { + size_t magic, page_size; +}; + +malloc_params mparams; + +#define SIZE_T_ONE ((size_t)1) +#define page_align(S) \ + (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) + +int main() { + mparams.page_size = 4096; + printf("*%d,%d,%d,%d*\n", mparams.page_size, page_align(1000), + page_align(6000), page_align(66474)); + return 0; +} diff --git a/emtests/test_mod_globalstruct.out b/emtests/test_mod_globalstruct.out new file mode 100644 index 000000000..3be9bc197 --- /dev/null +++ b/emtests/test_mod_globalstruct.out @@ -0,0 +1 @@ +*4096,4096,8192,69632* \ No newline at end of file diff --git a/emtests/test_negative_zero.c b/emtests/test_negative_zero.c new file mode 100644 index 000000000..870fa1c10 --- /dev/null +++ b/emtests/test_negative_zero.c @@ -0,0 +1,57 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +// test copysign of 0 +int __attribute__((noinline)) +copysign_bug (double x) +{ + if (x != 0.0 && (x * 0.5 == x)) { + printf("1\n"); + return 1; + } + printf("f: %f\n", x); + if (__builtin_copysign(1.0, x) < 0.0) { + printf("2\n"); + return 2; + } else { + printf("3\n"); + return 3; + } +} + +int main() { +#define TEST(x, y) printf("%.2f, %.2f ==> %.2f\n", x, y, copysign(x, y)); + TEST(5.0f, 5.0f); + TEST(5.0f, -5.0f); + TEST(-5.0f, 5.0f); + TEST(-5.0f, -5.0f); + TEST(5.0f, 4.0f); + TEST(5.0f, -4.0f); + TEST(-5.0f, 4.0f); + TEST(-5.0f, -4.0f); + TEST(0.0f, 5.0f); + TEST(0.0f, -5.0f); + TEST(-0.0f, 5.0f); + TEST(-0.0f, -5.0f); + TEST(5.0f, 0.0f); + TEST(5.0f, -0.0f); + TEST(-5.0f, 0.0f); + TEST(-5.0f, -0.0f); + TEST(0.0f, 0.0f); + TEST(0.0f, -0.0f); + TEST(-0.0f, 0.0f); + TEST(-0.0f, -0.0f); + + double x = -0.0; + if (copysign_bug (x) != 2) + __builtin_abort (); + + return 0; +} diff --git a/emtests/test_negative_zero.out b/emtests/test_negative_zero.out new file mode 100644 index 000000000..71ac79b28 --- /dev/null +++ b/emtests/test_negative_zero.out @@ -0,0 +1,22 @@ +5.00, 5.00 ==> 5.00 +5.00, -5.00 ==> -5.00 +-5.00, 5.00 ==> 5.00 +-5.00, -5.00 ==> -5.00 +5.00, 4.00 ==> 5.00 +5.00, -4.00 ==> -5.00 +-5.00, 4.00 ==> 5.00 +-5.00, -4.00 ==> -5.00 +0.00, 5.00 ==> 0.00 +0.00, -5.00 ==> -0.00 +-0.00, 5.00 ==> 0.00 +-0.00, -5.00 ==> -0.00 +5.00, 0.00 ==> 5.00 +5.00, -0.00 ==> -5.00 +-5.00, 0.00 ==> 5.00 +-5.00, -0.00 ==> -5.00 +0.00, 0.00 ==> 0.00 +0.00, -0.00 ==> -0.00 +-0.00, 0.00 ==> 0.00 +-0.00, -0.00 ==> -0.00 +f: -0.000000 +2 diff --git a/emtests/test_negative_zero.wasm b/emtests/test_negative_zero.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d5dd33fe9366cf6d51d1c34fca1f24cb4def72e5 GIT binary patch literal 47361 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 MX$EJ?XM#Kb13{hs6aWAK literal 0 HcmV?d00001 diff --git a/emtests/test_nested_struct_varargs.c b/emtests/test_nested_struct_varargs.c new file mode 100644 index 000000000..b4eaf1b50 --- /dev/null +++ b/emtests/test_nested_struct_varargs.c @@ -0,0 +1,52 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +struct A { + int x; +}; + +struct B { + double x; +}; + +struct C { + char c[9]; + struct A a; + struct B b; +}; + +void foo(int unused, ...) +{ + va_list vl; + va_start(vl, unused); + struct C c = va_arg(vl, struct C); + va_end(vl); + + printf("%d\n", c.a.x); + printf("%f\n", c.b.x); + printf("%s\n", c.c); +} + +int main() { + struct A a = { + .x = 42, + }; + struct B b = { + .x = 42.314, + }; + struct C c = { + .a = a, + .b = b, + .c = "nicetest", + }; + foo(0, c); + return 0; +} + diff --git a/emtests/test_nested_struct_varargs.out b/emtests/test_nested_struct_varargs.out new file mode 100644 index 000000000..10dd54227 --- /dev/null +++ b/emtests/test_nested_struct_varargs.out @@ -0,0 +1,3 @@ +42 +42.314000 +nicetest diff --git a/emtests/test_nested_struct_varargs.wasm b/emtests/test_nested_struct_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8e1b4465f8120417c32fe847c30e2f09572973a9 GIT binary patch literal 46074 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 +#include + +int main(int argc, char ** argv) { + nl_catd c = catopen("none", 0); + printf("Hello, %s.\n", catgets(c, 0, 0, "world")); + return catclose(c); +} diff --git a/emtests/test_nl_types.out b/emtests/test_nl_types.out new file mode 100644 index 000000000..f75ba05f3 --- /dev/null +++ b/emtests/test_nl_types.out @@ -0,0 +1 @@ +Hello, world. diff --git a/emtests/test_nl_types.wasm b/emtests/test_nl_types.wasm new file mode 100644 index 0000000000000000000000000000000000000000..68ddf74b4228735eff06366e8a8f5dbfc92d75da GIT binary patch literal 45423 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 X$?0{C7|2k~&Yx4E8>;#Gyn5gtw)yQ* literal 0 HcmV?d00001 diff --git a/emtests/test_perrar.c b/emtests/test_perrar.c new file mode 100644 index 000000000..9500ce170 --- /dev/null +++ b/emtests/test_perrar.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +int main(int argc, char** argv) { + int retval = open("NonExistingFile", O_RDONLY); + if (retval == -1) perror("Cannot open NonExistingFile"); + return 0; +} diff --git a/emtests/test_perrar.out b/emtests/test_perrar.out new file mode 100644 index 000000000..0de5f4489 --- /dev/null +++ b/emtests/test_perrar.out @@ -0,0 +1 @@ +Cannot open NonExistingFile: No such file or directory diff --git a/emtests/test_perrar.wasm b/emtests/test_perrar.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a41ebac0dd72ba335f9daee9251611f37ec145fe GIT binary patch literal 28093 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 d7XPZMCt^L;S>z{W{|mVV9yI^} literal 0 HcmV?d00001 diff --git a/emtests/test_phiundef.c b/emtests/test_phiundef.c new file mode 100644 index 000000000..cc7aacbaf --- /dev/null +++ b/emtests/test_phiundef.c @@ -0,0 +1,37 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +static int state; + +struct my_struct { + union { + struct { + unsigned char a; + unsigned char b; + } c; + unsigned int d; + } e; + unsigned int f; +}; + +int main(int argc, char **argv) { + struct my_struct r; + + state = 0; + + for (int i = 0; i < argc + 10; i++) { + if (state % 2 == 0) + r.e.c.a = 3; + else + printf("%d\n", r.e.c.a); + state++; + } + return 0; +} diff --git a/emtests/test_phiundef.out b/emtests/test_phiundef.out new file mode 100644 index 000000000..3b04a0398 --- /dev/null +++ b/emtests/test_phiundef.out @@ -0,0 +1,5 @@ +3 +3 +3 +3 +3 diff --git a/emtests/test_phiundef.wasm b/emtests/test_phiundef.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e857c459943748a01f7f51c7043a8ef68515388b GIT binary patch literal 45474 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 +#include +#include +#include + +int main() { + struct pollfd multi[5]; + multi[0].fd = open("/file", O_RDONLY, 0777); + multi[1].fd = open("/device", O_RDONLY, 0777); + multi[2].fd = 123; + multi[3].fd = open("/file", O_RDONLY, 0777); + multi[4].fd = open("/file", O_RDONLY, 0777); + multi[0].events = POLLIN | POLLOUT | POLLNVAL | POLLERR; + multi[1].events = POLLIN | POLLOUT | POLLNVAL | POLLERR; + multi[2].events = POLLIN | POLLOUT | POLLNVAL | POLLERR; + multi[3].events = 0x00; + multi[4].events = POLLOUT | POLLNVAL | POLLERR; + + printf("ret: %d\n", poll(multi, 5, 123)); + printf("errno: %d\n", errno); + printf("multi[0].revents: %d\n", multi[0].revents == (POLLIN | POLLOUT)); + printf("multi[1].revents: %d\n", multi[1].revents == (POLLIN | POLLOUT)); + printf("multi[2].revents: %d\n", multi[2].revents == POLLNVAL); + printf("multi[3].revents: %d\n", multi[3].revents == 0); + printf("multi[4].revents: %d\n", multi[4].revents == POLLOUT); + + return 0; +} diff --git a/emtests/test_poll.out b/emtests/test_poll.out new file mode 100644 index 000000000..8ffd32649 --- /dev/null +++ b/emtests/test_poll.out @@ -0,0 +1,7 @@ +ret: 4 +errno: 0 +multi[0].revents: 1 +multi[1].revents: 1 +multi[2].revents: 1 +multi[3].revents: 1 +multi[4].revents: 1 diff --git a/emtests/test_poll.wasm b/emtests/test_poll.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ddf56301ae938bea4e73ecacc74f560ec494d9d1 GIT binary patch literal 46592 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 literal 0 HcmV?d00001 diff --git a/emtests/test_polymorph.c b/emtests/test_polymorph.c new file mode 100644 index 000000000..59774e1a3 --- /dev/null +++ b/emtests/test_polymorph.c @@ -0,0 +1,48 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct Pure { + virtual int implme() = 0; +}; +struct Parent : Pure { + virtual int getit() { + return 11; + }; + int implme() { return 32; } +}; +struct Child : Parent { + int getit() { return 74; } + int implme() { return 1012; } +}; + +struct Other { + int one() { return 11; } + int two() { return 22; } + virtual int three() { return 33; } + virtual int four() { return 44; } +}; + +int main() { + Parent *x = new Parent(); + Parent *y = new Child(); + printf("*%d,%d,%d,%d*\n", x->getit(), y->getit(), x->implme(), y->implme()); + + Other *o = new Other; + + int (Other::*Ls)() = &Other::one; + printf("*%d*\n", (o->*(Ls))()); + Ls = &Other::two; + printf("*%d*\n", (o->*(Ls))()); + + Ls = &Other::three; + printf("*%d*\n", (o->*(Ls))()); + Ls = &Other::four; + printf("*%d*\n", (o->*(Ls))()); + + return 0; +} diff --git a/emtests/test_polymorph.out b/emtests/test_polymorph.out new file mode 100644 index 000000000..5163ea8e8 --- /dev/null +++ b/emtests/test_polymorph.out @@ -0,0 +1,5 @@ +*11,74,32,1012* +*11* +*22* +*33* +*44* diff --git a/emtests/test_posixtime.c b/emtests/test_posixtime.c new file mode 100644 index 000000000..406e30665 --- /dev/null +++ b/emtests/test_posixtime.c @@ -0,0 +1,54 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + clockid_t clocks[] = { CLOCK_REALTIME, CLOCK_MONOTONIC }; + for (int i = 0; i < (int)(sizeof(clocks)/sizeof(*clocks)); ++i) { + printf("%sTests for clockid_t=%d\n-----------------\n", + i == 0 ? "" : "\n", clocks[i]); + struct timespec ts; + int rv = clock_getres(clocks[i], &ts); + if (rv) + printf("clock_getres failed\n"); + else if (ts.tv_sec || ts.tv_nsec > 50000000) + printf("clock_getres resolution not enough (%ld.%09ld)\n", + (long)ts.tv_sec, ts.tv_nsec); + else + printf("clock_getres resolution OK\n"); + rv = clock_gettime(clocks[i], &ts); + printf(rv ? "clock_gettime failed\n" : "clock_gettime OK\n"); + errno = 0; + if (clock_settime(clocks[i], &ts) == 0) + printf("clock_settime should have failed\n"); + else if (errno == EPERM && clocks[i] == CLOCK_REALTIME) + printf("clock_settime failed with EPERM (OK)\n"); + else if (errno == EINVAL && clocks[i] == CLOCK_MONOTONIC) + printf("clock_settime failed with EINVAL (OK)\n"); + else + printf("clock_settime failed with wrong error code\n"); + } + clockid_t bogus = 42; + struct timespec ts; + printf("\nTests for clockid_t=%d\n-----------------\n", bogus); + if (clock_gettime(bogus, &ts) == 0 || errno != EINVAL) + printf("clock_gettime should have failed\n"); + else + printf("clock_gettime failed with EINVAL (OK)\n"); + if (clock_getres(bogus, &ts) == 0 || errno != EINVAL) + printf("clock_getres should have failed\n"); + else + printf("clock_getres failed with EINVAL (OK)\n"); + if (clock_settime(bogus, &ts) == 0 || errno != EINVAL) + printf("clock_settime should have failed\n"); + else + printf("clock_settime failed with EINVAL (OK)\n"); + return 0; +} diff --git a/emtests/test_posixtime.out b/emtests/test_posixtime.out new file mode 100644 index 000000000..84417e293 --- /dev/null +++ b/emtests/test_posixtime.out @@ -0,0 +1,17 @@ +Tests for clockid_t=0 +----------------- +clock_getres resolution OK +clock_gettime OK +clock_settime failed with EPERM (OK) + +Tests for clockid_t=1 +----------------- +clock_getres resolution OK +clock_gettime OK +clock_settime failed with EINVAL (OK) + +Tests for clockid_t=42 +----------------- +clock_gettime failed with EINVAL (OK) +clock_getres failed with EINVAL (OK) +clock_settime failed with EINVAL (OK) diff --git a/emtests/test_posixtime.wasm b/emtests/test_posixtime.wasm new file mode 100644 index 0000000000000000000000000000000000000000..10f21d0a9f62f603a8ac7cc213ae5f9b22733624 GIT binary patch literal 46864 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 Q7iPUq*zp!>3*O!T1DJSG&;S4c literal 0 HcmV?d00001 diff --git a/emtests/test_posixtime_no_monotonic.out b/emtests/test_posixtime_no_monotonic.out new file mode 100644 index 000000000..52a47a143 --- /dev/null +++ b/emtests/test_posixtime_no_monotonic.out @@ -0,0 +1,17 @@ +Tests for clockid_t=0 +----------------- +clock_getres resolution OK +clock_gettime OK +clock_settime failed with EPERM (OK) + +Tests for clockid_t=1 +----------------- +clock_getres failed +clock_gettime failed +clock_settime failed with EINVAL (OK) + +Tests for clockid_t=42 +----------------- +clock_gettime failed with EINVAL (OK) +clock_getres failed with EINVAL (OK) +clock_settime failed with EINVAL (OK) diff --git a/emtests/test_printf_2.c b/emtests/test_printf_2.c new file mode 100644 index 000000000..43e53ec15 --- /dev/null +++ b/emtests/test_printf_2.c @@ -0,0 +1,22 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main() { + char c = '1'; + short s = 2; + int i = 3; + long long l = 4; + float f = 5.5; + double d = 6.6; + + printf("%c,%hd,%d,%lld,%.1f,%.1f\n", c, s, i, l, f, d); + printf("%#x,%#x\n", 1, 0); + + return 0; +} diff --git a/emtests/test_printf_2.out b/emtests/test_printf_2.out new file mode 100644 index 000000000..002cd93a5 --- /dev/null +++ b/emtests/test_printf_2.out @@ -0,0 +1,2 @@ +1,2,3,4,5.5,6.6 +0x1,0 diff --git a/emtests/test_printf_2.wasm b/emtests/test_printf_2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f926463687b998e3775c3f2778c6aa9917044c3c GIT binary patch literal 45549 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%0D-INRqFpPyR>xWr2%}8z+fc+5Hb&nvtM>2qk zt!pQq;U3m2#0eQp@<{2;p2EGv)!c`v6(-DMAYqKV90JIyZec|WMiM{;R^9M@dIu&< z+=yj7X0PSrz;hoJ%nq=PoJ0d&$p3)zV`+u~*df6h3u)bY1z&>3?u99D0Obv|%X4~h z_=QxxYAqKy0C)q>fc)h-i>E47`__rbsa^$kor@`K6=rLkbnif6!~9|{R8Oo4GHeTp zXa|Fd!~_qk0;q`-ZRl16Io&H%53f^b)z?uHjmxm4 zy{5W-sBW*R4sC*ABGyU+YpfMWNlCjOX)$%b3H#^!v!>DP5EF?77Zj**XhXAUPS&(7 ztX@@U%Vq1TnycKRZ;{6AT<6)1>NVt@&=XR@t)?-zp)t3b3eaL2AVFhjd5iVjt_>`4 z(lllYs{@l+!)am#Xhj+8#J#09| zN5eh2_=IsO;84km<(n%?!-(XE{m)q&N;qR=te90_$E;t>Cvm|WQ*fyd8^juF z1zABwdn)_zVS#T0h@Pg=evKG`dBIibul6!p%>0QA`^3%1s~$+SP(Hx!JyJShQDWn~vEsnc z_|SN10Th&p`08U4u^w9e)r~9--#ExyEKi~T_2DB3=(#Cyog75-;TTB8T}~o+@b$uo z0r8BjM=~VvI||)Fp%OL&h3$Y@ZWfJ#1s@MHOCZ5n15brf(3UlPv4R7|lgKOQ8X$P2 zFF=CSAnBv*oZuQtB%ak^=E1Qi4Eq17TDANJ_T_9=95R8fd$9NqO}m5=dU$Z!_y_18 z$o<3g59fYZf`;Yp+`pUt-MN2^{;}M@pZ@*1U(+uKwM~5o=s%FhAEf_a?w_K6D)&#* zKb`xJ(0?TNAEWRR1ijY zt`5ndio&JLUt}wax!>w<1r7qr5{W4I`sSpw^ zx;{+N{$y`K!Ms4}hkHlWkQyBwRrvMtq0}HBB|i8YRU<=)cZT{^Vb@>@;e&m6lvE${ z*qoBmK00y^F(=AbMK#D^9tFuu?#v|a;f@e-%VW?4<7pfni8AL6nM;VgG}N9dNvpb5qke>)Mnb0?qI|8>O+^RAyR3(Yu$5HQC+ghRrf&iE{oI665X zZh3TZX!`J-cOAL=o}7#V+7Y>#M802mU=VkG+X%E5MPZ~K_Ttn}bPy&w z@>-D>dqLtZ`JP%ph^v!iQ!RQ?vk}LQFwk``Xn1w?V9Sf#gaOP4PqUFE2wwMs@80mT=@@h#KZDuj8D6DyLtY(?Q+i1i|tUl}dsi%`L)V>>C^z<@wx(O=ZY_T0W zZn-s2``&V*r48#1Q1M_2-?DCcO_mQb!Zbpvr8M4Db3p>?(iYmJ; ztuS(kWLnnrwK#=K6z0G>ykzj%?s0{JMnTFgOg{%IMIz**Tc&}=1GIdb89Qo z(rUeqf@2LqB7-^=g{xkmTMck*?h_AM;kM;rX#ihclTDrS!`dpuDYQk<4A79v&xBhQ z$b~o;LnCtUd2b^zj1Zf79eRMRH(N>!}`+yr?d@i4fk9@%Uzg?^(Z zOxAuFwnRSyw`tXaiOxemnr^VE!xji7|Alxf15hd=se5rPYP6tpXlo|cQ*Qmk(bTKj zO2e<~wn{Qln?0hQnMUSyQww5dCHp#S$n>uc6%pQE4pS5!)@o^_9!XquK-0%+;W|1G zd)Q(G_J?V#A!Co7rK@MvT=Z2RL9=OK6p8s8&6e+xmquDmsDO(ugN^{oDMQm~=Fm}- z#&QG2M(7~xNPXJKnuWMJPM}Fm5+WTf=afxF-K1vPPG*t=oN9Yntj>ZFdc}?Pk_TzT z9%w=xi&2<_wa~ZnCr51yO^45=L%m%>bWF}zMT@~xFF`}&q!F0m#mWN}TMa#D3C?Ac z)pIybN_PV`(mMOEHF;ni;Zk zF0fU3;EWpxm0o~uvW)Rn8xHGuB~4_Q%HImE5A~{VQpl|+yvTv7W8muyMbE&CK)UXV z8`RM&9)`Z6v*d%=LurV2fwxifygC{OQZQ~d(k7&w26gqQh}{OY-x%_4L-l4j!YFKB ziRUr(uoEc>C}eNSZbuPb2mg+7!qJn*eJK49SC#VEfA3=b|I5D%d;YuDPt>L+R_ap| z`15@{?l` +int main() { + int size = snprintf(NULL, 0, "%s %d %.2f\n", "me and myself", 25, 1.345); + char buf[size]; + snprintf(buf, size, "%s %d %.2f\n", "me and myself", 25, 1.345); + printf("%d : %s\n", size, buf); + char *buff = NULL; + asprintf(&buff, "%d waka %d\n", 21, 95); + puts(buff); + // test buffering, write more than a musl buffer at once + #define X 1026 + char c[X]; + for(int i=0;i 1025 this line doesn't print if we don't handle buffering properly + return 0; +} diff --git a/emtests/test_printf_more.out b/emtests/test_printf_more.out new file mode 100644 index 000000000..3472cfdad --- /dev/null +++ b/emtests/test_printf_more.out @@ -0,0 +1,4 @@ +22 : me and myself 25 1.34 +21 waka 95 + +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA diff --git a/emtests/test_printf_more.wasm b/emtests/test_printf_more.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d49d932dec453128d14595e7eed789dfb084e108 GIT binary patch literal 47975 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 GUH=9Lj%;oK literal 0 HcmV?d00001 diff --git a/emtests/test_ptrtoint.out b/emtests/test_ptrtoint.out new file mode 100644 index 000000000..770e08e07 --- /dev/null +++ b/emtests/test_ptrtoint.out @@ -0,0 +1 @@ +*5* \ No newline at end of file diff --git a/emtests/test_random_device.cpp b/emtests/test_random_device.cpp new file mode 100644 index 000000000..9ab6d3c7f --- /dev/null +++ b/emtests/test_random_device.cpp @@ -0,0 +1,21 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include + +auto main() + -> int +try +{ + std::random_device rd; + std::cout << "random was read" << "\n"; +} +catch( const std::exception& e ) +{ + std::cerr << e.what(); +} + diff --git a/emtests/test_random_device.txt b/emtests/test_random_device.txt new file mode 100644 index 000000000..4b386ac68 --- /dev/null +++ b/emtests/test_random_device.txt @@ -0,0 +1 @@ +random was read diff --git a/emtests/test_regex.c b/emtests/test_regex.c new file mode 100644 index 000000000..8c91d187c --- /dev/null +++ b/emtests/test_regex.c @@ -0,0 +1,43 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// This is from// http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frtref%2Fregexec.htm +#include +#include +#include + +int main(void) { + regex_t preg; + const char *string = "a very simple simple simple string"; + const char *pattern = "\\(sim[a-z]le\\) \\1"; + int rc; + size_t nmatch = 2; + regmatch_t pmatch[2]; + + if (0 != (rc = regcomp(&preg, pattern, 0))) { + printf("regcomp() failed, returning nonzero (%d)\n", rc); + exit(EXIT_FAILURE); + } + + if (0 != (rc = regexec(&preg, string, nmatch, pmatch, 0))) { + printf("Failed to match '%s' with '%s',returning %d.\n", string, pattern, + rc); + } else { + printf( + "With the whole expression, " + "a matched substring \"%.*s\" is found at position %d to %d.\n", + pmatch[0].rm_eo - pmatch[0].rm_so, &string[pmatch[0].rm_so], + pmatch[0].rm_so, pmatch[0].rm_eo - 1); + printf( + "With the sub-expression, " + "a matched substring \"%.*s\" is found at position %d to %d.\n", + pmatch[1].rm_eo - pmatch[1].rm_so, &string[pmatch[1].rm_so], + pmatch[1].rm_so, pmatch[1].rm_eo - 1); + } + regfree(&preg); + return 0; +} diff --git a/emtests/test_regex.out b/emtests/test_regex.out new file mode 100644 index 000000000..f238d2e33 --- /dev/null +++ b/emtests/test_regex.out @@ -0,0 +1,2 @@ +With the whole expression, a matched substring "simple simple" is found at position 7 to 19. +With the sub-expression, a matched substring "simple" is found at position 7 to 12. \ No newline at end of file diff --git a/emtests/test_regex.wasm b/emtests/test_regex.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e99a9da9c3b82415b5b76db34aa898e331a85c45 GIT binary patch literal 115245 zcma&P2Y^*Y()WGOIrrRi;SS6If|#HhP%!75IEGPR)!o%i&$GLxWnE_wopEH{XWeB$ zRLqz$W5$d*p<>R8IV&d2IY++Vzs{Yo`|S6=FSc_#R##V7S65euQ`&w1eWFsS6rB_e z-YuCrb!s$qx7hzi@|O5Nnp#p+X}3~ox0D>7s;s5ml7AKj{;9l0T4}e+)Pw4oqJyG; z?iL?3H9BawvZ6}6W%}Wta@9SaLh-I7ywxI2u;Z_iWs`}Mr}UdRdD8CfdrjP7;y(Mf z|E-iLuK!*WJ9gQ(WA{nDBbVNNkA2%acAC8P?vp3)+p%5yzJKkVI?z*h?$~|L)}5wI zZ2$A5eg9f23s!CN0h1;*A24~(UH9I*h-v5*Q;+J`JE|U+?Yir(llI-SwGM{R{u4X4 zZExRk-y)`;V*a-Op1V()wDx*yl_GCU@3;+$xQ3p%_17z+YCTc)OnrzsU~*4&Lw23G z&;EP1@4a8g#L2tvGjX3i_xszfd+fbesia!cT_+y6cSkoCBtyAf_t<^^iOE#YK$RW4 z?=fj&@3{Wk{BFm5hjCl)veVCZ{rN7xtmo|4F>#;$w%PXpGXK1zy&hTJd6#_a31qB? z`*?WQ9rE82QQ2$KzI*IGDcN!N9g~B)Le+7T|Gf9)y*vI!lrXFmIK@$C+!;H{j!(2- zG;m;YLUdddC*?Fv;&K#4X6O@jk`{oG-aP%_t^ih zyYIK_-s`SYIweYX-Dmf`Czl3i{7#~5X$U^&jMD7Lz3^x0RPyb=M|*4Ow5ac&{>EUL zG)atqdQ|HP?Oi$}YUmZ*yL4tWXyX3rqP_S3i;tn5_uGBXiKRhRK<@IF_KANjE!CIw zJzI0Hxv9Yezog8*?GsA_`*?8Y-KR_}4d}B{R2mu82A&lye|FUM-wE!U6U~W63|m1z zbE3Y-&8-|4jftYEBm0JEWM3<_jOshGZ{FCF@7E^Z$l8wOu~uqIY8KJMrICFbYn76f zM)j@r^&g8y)oKGvBOCHkvvQ7VAf{ifc0)PZR6sWYT4&@?9Tour+a%wpC9KKMn3k{> zKSNu>8vHc1gw^?ZuGA7D+a#=?Kww0OZFP$`h)em)&z5ZUrjw&(^Qft@W(^^+F`-P+#L5QfroV*LQZJrv z7b;evctgm5Uj`n87sRM1$&G+Cq3+yO;sU{Pq04N~r#s`J z62OgYBO6eJKw)iL+Xfb)hL*67tz(0Q&~+fRmLs%sPOc#~L`8?%P=Q^BN{C$6mQ`pu zTgH}a4aWQewt@|B306b~3yK_BghtsY0bJ2mROCvwlJFdDYufU{Wlg26 zYwMa7Au3zX*0YgC2t3!f^=-89Jo0&R{~O_IC8$?>d%x)ZsyOHVDy-Agi*uU9IQLh> z@2!-78I21MMe$gBC=%D@wQ=F*Siddd;>0da@&nt#?6Tb)m#5}Usm(6e!eOZ$mgdQn z@Ku_3zEKkXZ&eKURXQa+mDy8Sp0tHO*dO5J@E7~bwg4tBY76_@{&}>2_^17oye;AI z$PSP4s3V*h<#XRC89#AHOE^2Svm?>>lE^NJ1pd0nuJf1$kuC6;ha9F%52^H(D@Q2UP9t^2|sonQ411VkmOTa!b6EYl;jOl!ZV3IljKcp;WfqBYjoZRiG7gd z^w`&leVydhwlKYHxYvMwbeS{)Q^KibJGGq0Q^NUWJHMQl+rpJ)Bl*g5d$?I?_@;z= z%63mVkEVo$Wm`!0w(ue>Q??h$wODERri4$+_NnLkp=>|kX$vz`BY9@p9!^L}!#5?I zl^TJwV2_JayEqklT$?(3@FVuPJ+<3YvB!g{J(!C0Pp9^@$1F;1k;lBB8t(SAIeeYk z*Qv9|#gKG*#im!p9!ERF9$kUCE6yIXE9%|ZmGE??vSO0+Du%l~RRVRr@1D1mqb9^) zl`ATSJ1lJtH|a-Ab9Y6!z!;BJ40pGK1;N8;&Ow{3B->GbPaJNbcEY7dpfh* zvbOL*W)Eb7wJ5Vi864;F?cx2*8~?t`XUaj<9qpP7nY&~7ZHiAZUuE`HCOS{6+O#TZ zUuEI9HT$g{@5TCxR!3D0S414|rB10DuCItk1X<3l8txjE@u5((QH_Ea%C;!&Jy>QG zjlH~Tmsf@P6;->U3g(BUp-&3SUtVnuf8?+Iu`TRsyNca+v)#n(yW8$!^*wAi+ha=D z)AkgX|H=L&9-n9vZIAZwXWP>zP6>P2UgGV&ZEtaQi~ZSJ+C!`DWi3;}B%36T-pBS4 zKToz+o7^7uwMjO4O4!f#Q(Bv~iHqB9Uu$m<9k!pfPYDNDhaJ!orsVV9D%lk8kiXhr zMZN>=K=t|G>~9MFkNuBi>)-9~&Ois*fy|r-GHV_bs>xUcaz&H)KkOgMJk_R(2Az?0 zN=#SsrCP$Y$fmh0oF3WqNXZ9Bb}-2eaY{ruB&wx0RX=u!i?JDz&F}(;Ms{eV$`6Z7 z4*s1P8Lm1m91+`XMh<;}> zNF2~vk)7p$=0r9}^^6eZ&x!0DPd+!Yb3OUI$j&2KI(%^>bEUibN; z(fN^Phb&*dC0r2M1rF@O$Qg|v4gHHEyU3&GLRp*3^muV(7pqOAY$kj*6Qf*NwJRA* zd1MzNJuZ#xQlB#~i!`1tgQYKza>k!sE<_p<8VMHA{~0@k_e6G&SATD0_oCLc zhx-&`_bGFsGPQ^M>u?^340pf7sVeV-8a=Avk;rfldJ5wS#(6X{oGZ=6gz#8okEvN* z6T-r%J|R3F+2gKIJy9rB{D>=_B#wlR@Kj{Dx0v;wj_heC(KC@fqxO1ydw8x;mY(zK zDM$4?*^?1#ft|u{QhbVeKCW&> zf@o!VIWpXnDpO1dYNF2vM|xZ_Y+i}%m0ntu2pRg+U`hW?QB`lBIw8Co*{d`opUUJ= zXs?SRTjWCSHRokX(KjM{!yEl(WN)g`uSLaN@*2ALTb{o^D0A0rxLKQe#)6xmOtwS^^- z;eG&UXKbBuSfN&Psj`Bz&$QU4xr#eIw&|{s%!rXjGtgY2&8Gang}oJpvH9lVzG`YK zhL%WBg$M- zFRvkSL~KVm0!PMnWUPtnsMv7owxeUiEjKP48{4tcrH^(DXT>&4q2x&1D*Z;?3c-*tXE`>9OHG9nQG6YS&7rL-~$y z236V_(EZGqA3GDY&SJd~GXUDc*(`k=r8%+95h@x74V4;2&ZfvYO15(Vd2Vdy#?q|L zi|ssy^^|ZyY!}4Rt}axJU5NH{QEV5*QnBX7Ha8aUUmP3mLh8IkX#}Q(OJlnfB2EdH z#daAhC+3*gNWPq0S11kNlrS&0c`Tx)gsWn^itKIS>exuWnq1c?4d0Y-ZEV+iuIpH# z;b{xk$42t?%+S_Bh-K$v; z+X83WJ7U9$Y43~;x81mKS8R7NDhQ>vT`k;EErR1y+qxF+s@ix>eRs!pw?n!owtKwa z?u+d{p*LPkdw*>Ad-4OZJrIY70CkUkYW9$4elWHNmHDnJjk%*5n#E`YwpL&}GKKL4 zhuKzY`opn3+{F`V*OK*-*l%3OJ>r?za9go_mneC*C_!Uhj_qa7@Jej2IQp-~_G*y~DHg@H$dg|K z8&7^cw%19fCvz!(uf-Tj7R6yh#`Y`nzbwD4hhb;Ku)g=sIwIN|j06YtW^8XdptoXs zOZBWHk}r;Ju_wP1+dH28Zfx(8EamT=7}Lz+IBY;2Z_59M{I)K2Y!KFWop33ijql?EPVEAA0mh(APdfGJPD|$0|%p&J1h0y7{WAT~(-nA0UK3iR}{x z`u^clNeKItf%kdrD&Xgi&gU`px*`Zh(C3TTzVJ%Ej15OWeiaK@DEl=w3$gSUQ0i;M z-+$SE^{V!p*uLp*h^vFS80Fj8a8G$%Td9KYV*Ac3_&&Dpod`d~_JdnTa;5(i8}55A zKsq3n#D-G?YtRQoIuq+mH0@7IY+9l=PsgT_^iVNZu7eZ9O-n==asg;YVmPOilUt&< zS*qb73Egmr05m(#ADY;qiIl^`5^7|~AD$TQFo(4jY0O-S9g!&M$i$9xWR6Pgs6-0i z(TcI7mD#lm;2cwjb8KR`V;oMi^3F;aT>^7lVz^nJ!gyH zQer0w*AuC&Bb=PLg@7ON$SH}I{i4lmQpwU0PEBlfVy9v~IxVr&oLr|TcDf*Ve0w;< z3)vZ7IS}C3o$Zt)1lu|MI>o1$GZQ=0+j(|kXDjW@B>cK&zXpGy$RKSAa}vW95j2ZZ z=Ol&;%0UEK&P@z=imGZrkTvJ%W#=V!p5t|XV&{Wbj)65LsZh%DcPi!U6$Bop6&9)E~mTN!WD_(=F%ruDjR{0FfXxr z6p&hWRbp3pfvXd{8j`k!YZ4>pH59luK`px$d))QPPgF;^A+Z}0sbx1NM(m9+#!ZRc zvc3TpL*R`_Y-iNn4Pap^GNDMc;PCUlO zor&G)Om|mecR?|w5TRc>dpH_MV)rI?H+_9iV)r;r?@R1H^|i;dOiA(?ZpZC5dN46u?+$%9F`UP!|894dcqFk$9IrkdOYAYXFfSxC?Qaf` zYm7ZEOdd(XGN}!hGWi6}lTz?xf-?CeqxW8-dnK`Dks0<%!Thf#_Nv$ZLSip?;}<2ih$@lXHdKSvJhJ^w0yEy`C6u**Xy+*&B)BdXwzU#Bc@4v`k(` z1LLj4-f{#MC$<<%ZcBJOFp!eOkh2 zp20p7Vp1r`B#g+4X!|@NL89%8#BiT`66HQ*kbIdKuE^a-g7&Kfkjnf`Vz{rA*>#kH zxleqfRB-!;E|$OT%KcqpxNm!d{ywqq9nuep{ooY-5sSKG^pj%jC*`iGI=W#=VoQ1v zsg@sANYBo);rdJn)5*mjr9pCtr)Xist5PGDDT^#IhYvBTfJ>{H@`nvYk-2lMu8gmkkF6 zPbu3eW!W@Jz1wtS0r#}Bo#t&iy=inTq6SKKLeu-ph7(O6DBA;NO^ZviapA$TJxIX< zi-(lbgl+WUvN^hsl$XOup7|W7%#f+l}P9scg8biMyq2 z*O!Y);udx-=a&s9R=KB|*V*S*_NJ!AgfW3yD3o%fgA@3;L z9gfSLWxLaR834D!e0P-%-yL-7-DM+iH_Ufq)ov`9Z=;5kF21KKBHUXx+&t)fU)k;x zW$&p%Q>f5Q)07;Ll=y!qX`QAs3!2&{t>MYCZJbZtE<9Cc+rQrTPnQk%6zJbtHHPCR z6T&lP!`;dveSX#ESH+(cYYwlK?X`MOXc@H$m~7mQNLs@{S0CcfYACD1=gNkA7TP_p zUU(LYzfiX4%k~2Gy;QcBx>@k$vc2py`d6sPiIUxwb=B}+U2PAa zl?``0zMHFdv-jM+Vi>BbGYmsbO*_t+qR!!;mkswbrq{BV-o9|DeQhzwzAO{AFG1+5 zvVEoQC!xqv>ymt5m+fn)(Hy>!_eF-l?#Xi^LeG@N1#V+dcet?&tV&CcU zeu0;uVn6Be{(zUDV!!F}&Un*48!th{F6i+-jF+Hd@9*(Gg_odW7xs8x z!b?!G&-HlU#7j`Ii+a2t;3cTocY3^E;3cToPkOvR;3cToZ+g5l-twSgJA1rG;U%cp znLXYU@e)+*tRC+fcnKD9hw4;< ztDA@W`2?cTD33_(P}e(-ObvI0C+$E{cIs0*%9D;x?dUWgqvB|Rnskpz^D`KM$0&E9 z*)+Lk)1<^>Q)`kYIxDqVt~(r;8ga*g)bYaZ__R5knA(Xc!=C94oq*+3lUjXJYA1P# zlT$m{+j|P;0`kcad2$+>3OxqVb(%|MuV%KYW4&`~YNvYP(^5MP<)|&3&K9pjIU}_* zfFdluX6ijtSbU8zJ3BSpnQ2?NrE0ezhCosxa1Q&ysmP9XYBTGgB$7v;tSzRJWaf==+ZIXrDN3k>r=yBN5|ce+6^jlZdb>R5iM>^?MA2lO{v}F zRJb{{o9i8SQyRu}cig$&abwhBx1@H97n+~ieDAPZQ@hnm-aa16mW>fREl6#F zXTKvg9C+TT7`xNS;iKj*%++bQJGHx=?)PBdc5wHqOYVlu_oa59C*6<6RPU1e>5>OT zkq02>Lu#d3^e|d#8XigQ5zqfr#`eJIh7rMInNyz?E%AER=2wz`N zzMLBFd8&CO^+ElLvim@P&I=L^>%5A+!C}6}LOr!tm6Ud^!e37fC-85i_J)AZEEwd? z)Nlg+mM@y^EeFo38E8NtEZ~c~fWMs@Zm}oPthXrm4%Tn^#CzCvo^&MMP3>Lp!uL{p zk3&#x;e*sZ09JGOFtrcW<3zJ-_fe5PC4B52St&me1wK(0V9`OJat_R4eWoUepFU6R zbC3BVHQZ;k>&w)>RJ+(jeA5+79R&Q9zE5~m06XMn@U($t6XT>@z8a&e~h7*|&uF!^qD@7Zyzs;=JOh4Uq zc*PF)yhl{*h>8ULkrg{q8E1O*Q58GNqmQZBF+`*BZZ7Tns7hFsEMbirqFesM<+oMC z%C<&W&ByP`vRxlrv11+3tcuNYK*v?=IKf|8HuB>ucDyH_P_Yv{`NWEyNV2r*6Dl13 zJ-!lFr;b_jA1lADLLIAz)qE3UwZfRPa@gD(Pw&jA*bIkwNW~7Rh?0j^3^&csZ%wPH z2M^;UoKnS5(<)(el+q;g4NLKuW#mkTR~ zTjG2L_X7Q*ie2Q;=T>a4_rb*#ySM_!jRVc+RUB?sA7h4xn6BF`PpYx$Pqc@6{E4eEeTiv8yWq<8&nqP~YNx zJ`DqE<|eUgD|W5dcU{Gh$UcuPe#)>|vSA;FLO{I*Kh(7l~hvUG$69KEdA0{ZQairwMOzLSGz zg5dG(;Vv&^cX{PNfcbu5w^cap{fqD`rW%jAr(*YbWA3fky-K^M5`I;)U)4q4U@`H1 z6~h%W5V;DR`zwaiL2$K`EDux+cblq`;2WR~i3cn8pyTzB*z+MUV*n3<2wGHT6T-t4 zdsvaf!w{7ruWw2`Qn5!k+czaVTCqpLu`MhVAX`YIAFtTsWYea^6BT>Hvpoq@!Ut{P zsfytiR@%eU%0{3gJX5h}D4Y4Ye0%t~7|9=d&wHKqis1ZDDu#Qz&XMZ7&nkxN-Mybz4CgWGnYW!m zzNpw2j^URT`_f~+;z)Z%6W7-j!wqN-->9d*5hh<$!l0B(0mGZaw=`7S6W>+Xp7;(T ze_ye05gR(|@;y@HM-lNyNd8mBeyW6lD!Y_R@qszp6NhA6Qeb=HkmB_2p_v_8oVLwu zS|%|!GqahQwB?!&)X-Ui!1cpuotbrd*6Eo|&xGi~nc+ZmMrJc8L&h*j=E5bam%vhm z%0?yK^nhlEXNFsLv|$Kh)sfjrj@!we;bge^l+19-IylDiz8U~_HE3L$8NjY4>vfqcm)ELST;aUV z`-fx_0oX1MD;X$Ok3G|22mPr50yo3ejdMc$nGD)MH}O;hNLTQa*P%a>C} zU!17}SB^^?7J+Ju!t`_zrNIB6o#=j&E_SGwWZ~A#S>RTOKR>hiG+6M7fNO5g40j6T zU69#=44#;;A}QVKJ$sS*p*h@<*&WU?7iHm2MTNUE!*dsuxm!3(fw(8Ldos;}_bSHj z^=j^R0^R4`NdxcC40m6>$#!>F9_GIXGlD(=K9t!*Lghiqc7%tEGyD8#0(^ulg}(AA zsbuL0k7f2~W{<&X3o~2jJ^XlPj|+mww}&UZkUinG0fC19+#boe9QE_C3u_#Yc`~yn zy&cbF_Keb=%)%};+lAJOUi~!?pUn(cL=?;5=NP+Lac7DMvOJ#|?h#eRu?;ne8SsV7 zUU0--%Wjz?ZnFpxEJxC8JM&FK6~LCw`fCGJ6FmZQ)fxu~%vGYni=9 zHcfx8XZE^hdn2-)DM)OsE+VqW*=sn{yxf#*pJ}pk2Cw&yXF)35c8?}&OXhigwHbjj5LnL zWQO|$pkHM6MHU+C^IxNPa;q*BBM#c!8_`mH*=u_Jt! z*|(W}M}L2x+4oM?A2Rzv{q6DX;m6E(<$v`4_Nwae5fVRThWpZ!iXK~%8LoGyc2*7N zG3vuFoh_zUZF*IM^x&!;TouF5sM?IGW|KoW?O%lg&Ee20^WLFVP?=s04XHJ1-aD+y zFZ15aD)ZhhWAd5u(R} zsAj&SRWX5n#mJ|YZjwN@ldFd7SEnOa zdQ}7DjH=-Z*raw>Lgq88hCAI)a2I`ZR@HC~J>7S9)y}5PM9893w+5V3H5{8#=T+@I zwMn7YaDLS#_4$5WdUhc-E~pv~`@@A*7w8vyW#mMRUsN?>A=})l;V$wdw@qBEQcAg` zYPgF%g&1(Yv}%|B%e>oU;W91<&{mLSp!ZD4r!61NjdjtG1E8cda|?2X@>nj4mhuD9 z5uz>w)pHRs2XXd6$FRj{#c^mDjdROf8u^xUgfn8DkY=16tK+-^cA5^qofgyjqrA{C zWx&R;GK*Z2xfZFqnE8gaa)c8wTegJpHq4>@%EsGsTyWgYcJoY_I#h2fmwCoFhbcA% zs5AUv)iJvCr?go*I4t;n7C29u1Lu2>_k(BSL)Cu8b=L7=cC7I;-hRcNcFZYED0pIQ zzY?)e^770UC&zx);aBQopr7pLpU8ERdnl$9h%`)#q-hbqvWNI}8L%3!KJW`LLh8JT z2zcy@uKO2Ue88QDh2?HtKS0LnG7xiyZU)E}!r}hi;go_8V9+hWx0%(Byc(qv;3x72#+1Me0{0I#CDo$$<95 zS^KyAvcqDXl2=YYYp?#SAFn4}(Z#uXqWxUGPcTbs>HcmM8pwk5#YQFnV)?m%+t(WF zBBrmTE~oI{cRXX`&DSr(E{A_T|BQRq({AISf{ z{8pom{-K|%5&a5*-Zw0r(lDsymktE*waBv`2rsKCgLuvc;vh8ixGZFfa?Nn;Rlc7D!~8h?=oZnPpHNPf*-wBzdxW_xjaA; z^zP&krfvcK7^U1JsBw~gxn6io(?x=RYoM$rU{NWzbWY~dd9sgA?xI;bz< z#)*6#&~Mi1{4+s@tR$eaoTW4RN;q3*@aeL;c=v<)fNKut=wv<#^(o?9ozR!u=XgF* zoXMy0J_EQcCl;B+mO+& zsl9Gd9%Z9c_lhp*R;&Yt4)|ElhOMEVTvI_t)>^ifg1W!IX0tBtJBP2)gyXQ*d+JoQUSI z1^8`I;0Hf$W7~-3wzX}QrZyttH z*zcbF!hWGa2!#+$ocU7Won0>N?3&yzwu_>E&9Prm={NQpa_?e8Md_hJmCGX+iisoJ zxg-46eyi^KU6($r1LMDI3;*r9?tiO4BziVggMV+o7hs+iaKL{g7W(XJe?;W`KDAwI z+?rXwS3TSWh9r_OL)Dpk*dDg2kN|U_aWh!Z{$zg=PTUMuqlPNw&-Q2glQRBE#keKx zFl)A_`j;0CR7{tKDb`{wMKKWJ%CPONVtcC?H;0R2G7qn+(J;9f4f}Fmc(SrF8dh!5 zWnx>EVAn`%V^Fp=bE~+$7-*iz0%}!kZEStUT8i$EM6vw^qmKZ06o3yfE+5wcGn}|~ z?2l_$A4+1PVq_i2j|LWZkZJ3IQmX&Q?Xdsj9ryRHA#)I2b6^Lzj}NkcwCTMDHI+-q z6e6ZQbQY>arwi-9i%*uZzlY403CpJD;pw`REIJ*mOUWcnk2o7^%NF+--BvV1_mPXR ztDJ{KhVvDSYt)D8nzH?!1|cYhXuWxu?kfwGnYym*qX^6Vkot1-a6JJ*_hNd5@tH{N2bC&MmD%)`pSCO^cJYLszxuMG21j$ZoI=Ud{jxI4%`Oez6@+`@#GFGYXHT= zj~D4Sa5361EPlJj*j%6+7Rievo2v`LJR_mEHbmM>BZS(e(6LBq50@1x!DZgps!|+Q z6^CEWec^~($wdUB<4V64T+aYg%+sY{FMw^!x#6ma+rb(|SL;Tw_~RPg1lDTvTHOG) zAtF|x9Ey58yb{N zU4|xFYu*`|_G9eMLUFoF*LYR?ZMp%hX5XW`y2V;EQK!uJ1Q5Mdw}zGVcHImXq6;F! zf#@B&9SoYcfu@$4^Hnc_`oT;p>7muVx)f}_Gvv&DpDqS>r9-OwSx*&VzZK&~$p>^v zSXDo$3&E1j4@HJ^s3i6f`eA<#rMNWg;2-f@#BSm7u6k5=h@BPSpgF}dXrb=s>Wn3K zhKb^ausV_eoC!#_r!0Z-cr=%+}k$HwE^$Xrl=?1Up##VR~VqatnnxEckteq1@ zOp?BYTXxlR;@HSpW24X&0|T;X!i}s_bPk5 zHQxMbRN*Q$)huor!h1j{;mw$}`ctqUf})?6n2GtB?lQ(*mU28!q&&sLL`9wwg-_+R zAwtvRXj!4ST!A70ffNCnH-tiLF)$;)W6Wbh<*_V-2OGOakV@^SC-Z8~5OVQo&eEuo z@W@ab0&ntQ&d?g7(HFwtWXm)y8-x_tfRrW(|6 z9W{Pv9pvevz|ldBl zPgfykN*bPMFRF=|UN!xmGQZbE_zP9Y%%lo=nnHx~`J_i4gS8V37)Zn4BNE4{AJx>~ z8^d-;*FjR0PK~qG7`CfT&_htlQc|mBQmcDZW}Fn0?(%3Sx?zA?(knmcAyBsgJtP_W zmmx4wymIb?Zg0)Dz4+R7vvHJ8+OZFev+;`DOKt6?Ur}xcn@}82*~YeNf+q@$x)gC# zF59bFDi?iI*TGS|L>&|%izaX6t$&TBfNFnJpo{t=ba^j9 z=>8Yz{+BTOjs03IhW_t{0$1*LQ9>6&b-i3$(jbINL^XA_{EzlWA;haFqTX&Yesp6% zRBPCs7g8W1`jBWY+U?2Dt}W<7PC|4c;e;9_oc;n%e^J%0{_IUz(pqe9Yf4=;P+ED$3SnY0Ew5P1gXP1 zRM`Qxza2mpTEWXuB_I_K2F#JflHOE*%BhQMyjwBv2n1S?W@kOV0@I@S^zM(pio1D< zMdZ>;ERgFUJE#}Ah-yXu`Ky$tsr*QJ>Wt#C)+xcimn7h{UhlB%B_Zt^kE$*doau-# zS8V_r+0>43s6W4g$}1hE5XFZ}bwOuo3n(kZp|j93ty8AE+;`;#ZAoOB;c^#47jAly zP3x7tG$S9~>$Mff#Z?^PGD`}MIHl*cmA#}ZptYRh6LPn)=~TV8B3hxRoTgS5udx&w z4AE#X_2*XlXa#dRlOI_^hH`qU{Jgos14(5BOIDwO{a)yqUC*u5zGEwcz;x$6uS=B3Z?y60@zB>K8~(RxH&!6lMmh#uCfUdN*8(>UEx|94Hw8YBD_h3pp*k@DnSs;*wEI7-}E z5Q`oj)PeLLswK@bUFsGO#o01#VL4yYXdBFzG}KE6uwoHlY^DM{OxU2h4Yy&)?B%%t zCwo)hUKN>HeNEFxJ+5_m@r;UhC(Cm|V_`0&cwJ6y>Z5viV$MdX)uU8QD{?)&$D1`8 zZmh^vtZq|fIbIY45#9x~l~rtI6kH2>74SQh2f;KO=NUa$LmyVm6z)@w7Y zeQjN`zx%s-s)wby>cMEMVZA;N+^sLz#kfriQM5q;O>1-VuqYR_O@OwEvTh(Sn^HGo zd^6j$cw@$^U{S8LEo=)_v88RPDp;S}STAS)?2+ary^nXuve7ASwq_aTGLWT$&wZ|n z2?jdOlPJn6xljz zCU!So`9S7QE3D4zsL24F=B5~Ob-ITZDuoFe10oV_XZ=c~F=Gh21_)*xdwL7yc%%jD2t~?75RAxsD<+qn+EK2sgVK`dcUg)+^=yAP#qoS_Sst?gvpHdGl z^ysJm?I9dymmv~sPs`%Fu(19u(=qQiH3*eKb&?)$@ab|6IgYgW$Uj9r!-# zUeF6UN`6uA;VAhf*-8rm_hQ7@ej#FOiX)fuKP$iWMIY|R=9Od|s-3!$6?|HBk8An@ z=o-Fg>8d^J1Lb3t04*QWEx6)`%Z!&*aizpNK`de}%HVa`|ec8)+UDvZng#2uXd zi7-+t`gJ#9L*qBJaYJ!Z{AAA%!DPeZq{5c72zBmF8Mnm}*!SzldKUXjIBzkG-u5^Q z_CleTnOND`GlkR2a^_zo(>2dJ?Us68lrShwl-fRw!e zzWGS+?Eu2-QxzZU-5pi&iJsaK`fl*o&>Euj&-^K!PrLx>fcRW5@OWL?4A7YS@?VVZ zg7J0T=w7d1771|vMs{}0@~WJ-dVuw<_P7eX>se(;E``jnCDTcT9GEUUxNvm)w{#aa z#b(5+$PM9)zPeS|&Eb?{D^{j(66zXhVF!m3cw9$T;lthND_zp9E5sr*j%0#XdkU-f zk)EZlRATn#q)yyiyoCvM3Olg#;(xFW`(B;n;k#$xQCCEL4^2;4@mLN~?4v;p*Vh~m zV!`8tIv(te;ZATtm65f@=R_}pz&hBUP~l-!fg7$M^2_uq`4te$flh>iBr_+9ej^oR zfG`;<$Yf|En>7!DU}V;zSx>CGa+mOu8G7Zmu&N6#ndGE^jT8u;#C3}`R&C&G798ox zQoN{yzU?+n7j^bBPOE>`1;2F*{NOUCHW8kwO?Y8qR^M)Fo04H8#b9Mt3^N&+@;H*@ z(Pk(p8@W+;6MP#NM%_k?x&vJnHHzby^HhASQL0(1CIB{ytywfFfkl%Nuu~WEXKQq= zt->I9a4fzp@mUjE*q|`bWzWDu_B3jDs~{}%w&3vitcW7JdXM#7Px<;}zP4{^t*M$= zifL$37%@{{Qf}u;6>Bp@45o0w8_!m%sKi2y+~a!f7@e$*Q}3?rI@|zGckR$6ShN<~ zp)Ks>TGdYK56O}>)nJxn0?hK&0soR%=(CIc5*hOI)OPvzovB~huj)#bZ$-&+t(^d2 z4m1qdf+j;Xjbf#yM)?+$Y}LP2#@~tuv=%EipMInM?Xgy?7^|_O7>Mj<=o& zYOE+GrHY3R+F6+S$izTxdnj9GoQT0r?XNs^sSp#1p4c2%q!k0s6R{Hy_w57*2I|0G z+EUv~Ap9i2UkbR`tcwL*rop7$@WPU$-G{*%SCjbBu)>5*OL+&gBTRNP@nr9|eY*w> zuVC7w4&K4s&)T}}0xaDqL=5XTA4yudvDBlgp|&qpn4x;u!NWaEG@_@3Wq9?VkWhZM zoF!Wk%2bw>TVdkN#Cuw^?F(Ea!(ds4S-gqJU5mFgCAv6;>t+gU!bD--)?;llXJfeS zL@PpEpfh1)_TBU8{*b00KRQ@eYvr0DBem?ozJwzi*Y%YRQ*}o;%pt&(@^x@$D?VeYp9`o26b?2f@bY%0f+)z>{^WvnrqKrs=_Y!4l!=Z&+S{eO0zR%)yt)o(pAo zxN;e+)vdBcUxJ39vqzVsAY38RT>&w#lu4RJBV~(2qp{4vSd(=OllLT@p>NdVlB)e` zS*6wLn{)~Skq}{J6#LKf1Q2xtwz6LHuXbw?y-u%GL#eAlQ|91#s+T~yIC(@RKI{3j zs5k4aN^|?H)9Mykt-I2p)qK5NS*Mkbv z(-U_@7^=O49il!nck3h@?h?43arH|4lBoO+0-C= zW)s89^vZSGSUWw9#>$+!)yTfQ0@3~SeZH0+9p5Uq7N$3U;%QUno?(DzYGB zzMj};m{?*%(vX!*mP*s+?0T(CmKzr9z+obZR>t1SVUh_l7rXYbiJ?3+6qsXXQ1SjY zjG1lI;zZ-70O{85rReyum&Bb9tZ;tM93yQ=at7axPj&l zgEj-gaz6VmmzTDePFgTbs@LF0v0XteC>^SPCC)*tG$D*8lFG)|Xy&0Y>}=Ff^+)H! zJM!TNunAtaRa!7NDsd%@8#NZ+%h{@}5ZukaQbH1GAAM|fA>Kz7bn6{!TGGnedktGl zY2N6ySvRa>n-!DvX3C9*;445B4DdivaLJ$3=*?&}t8*H?zKyc=n>D)^O%^LxY4j)> z-G@f6AC@Z^x+K|x`Jzx0IE|%>H!6O7d5ldXw|2C(Qt>o6 z8ey@GXhmlmiS>wiFlXJ%SSsbKwa5^!EK3nut3@Ulg@#~$86tbTqk+YxP#c!Q+`e-0 z5=8?9ZqR>f{~+mp!n#UjqgsS)?h?v7Q%El;`KF8nq&8*LJ2;7u^VzhgVQ;2q}`IMt3aTlER*QlS$!MrL5B5F?4%AzmWNIe&gRB=dL%K4UB z_vRFf)@D%S&}lmjPt@Oi#S_{I>>H9oMAT0M^F|lUUdMOGsIThn3*5-zc1#Y($*}G4-kDCYkw%3(U0caIGSI|r?I6ewg~DZroDF6C2d#? zH+KQGKm_aC4o-Y{r1PMH>ymK-YqerG5=uGr;oUsfw3=vZP_j464T=&qCIM2^w7POM z)()*i;}kibwxBv7y|l?Xj1WI7J1@!r3LaZhtP?_yWyRLHly7v|mhCLih(4dp+U#2J zNihFAEpmX4_oXHGBy7+%+cO>F_nKh!4W>akm z%V^%6pIM#hM)@_f4DHB=9>CB(F(D8S4QN5g+tnGDl#vF`2JuE9qk`qiGik=`b5U zNwx%KS;baSB=pMRg;s0{3rFhk51q{Pt%hMd$eTLyrUS$PYe3;OSQbK?gnPGZ`FL2X zXt>PjWZ`^Up;jbn!v=!4fv8u9%CcKfWm4#dimpTvIAH^zZp7=x8bKN_f&`oEJ%Actq?91Arf2K?r2agz1dis8AStCe4yH; zxvYy&%w>J@1?&vDgwa5QLOznTX~$e9Da%}@nT33scDn|hq$4i zM3l#@a0`w>xG<=Y_bTPj}2(n$F2n?T%STj6qD+9kaG5 zK}@APW_?kC7#Eq24?@D&3~eZP=UElfq{JlMG3%*&h+#ht!GWBFGnm;2bWbi#Ylt%% zYbQlff6=SIm7LV*FHt^c0n#IXjoHz~N4b!Uu$@atpY4!fB}$}C$u!T_W=`4cr~_TeP#yHh4q0qq(BRZg3$o)I1G5lf475x z^(cXr;@q!Y^8>hO9a)o+2BfT8;}Bwv7VC%4dlHMoqc7;Tsz2O)M}k!U72YW1sZE#mZQx@=q*S7hfim1i6P77(nxxE zWFfs7X1xVEybl%<#8ZuPwxt@P(upE#Z$a3po6lzVI z`Y@gkHE5sK3iP9XB-N;n#ck9~J1L6FeheWKgvl%D4Tq5N+#B zkaUuj(m8@_`?}#JO|WZ2oJR7_SJ7i}UYVpBH2)u_R^&)$C#OrNFryE$rQ0-(3niv; z;87iCkcAr;0=!x+8xbU$$M=(NG$>zIb9w!HX~PUT7C0c3O<)cmA&ds)l@8|O;ct)rNTm1A>1V$S+J;Wa{9fVRM-tV*@5t+p~bdvW%(^DQT6LRPtz1bKB^ z)mCrkY&mx8?X`tnK$H=fWq;DZ5|SNL|5}_Na@yP>YW5UD(&vE49IA3_3gQN~o^8;M z6=QQhbDozS3QOBsjfI=$>!-9}X5pvn)LXK|VFlAzjQF@|%}~;MtxtXJ*0YMskphdN zXsDQTC|ven$(3CprD@Aq%jcLSaETUNO)NHSpkq6TsbCO`t77w-UX=AyJxE9KfjcnQ zMO+u)zLxjhaG0;Yq}Ng$IaREQ-EIT>70Y6`)JRD!j8Jf*FV$f(| ztdH>_P#BO)6;l?{sUSuKp&M%tC(&wZ;TkX;MYy;iINsmQ>Tghuo3`+d1$X+D2+tx( z-!D(Y>Y8IxwgXlY6BJRJA6Cy(>34o21vU^=jtp9@RpUg*fBGYZz|Zrr24*}c&j2V_ zVrm}1jF$Ip8345*Dk4QoFkiSLY19WIYB9WFqrrug7=kHsNPAd~>Q{4N!77gd%$^^j zXoMtQ;(|NT`hY$)jHwJCfs+l8SmrXM!WA;Z>P<#%y)>P(w7TD4pr-q6us$$Zf&nCe z>3gB5Q$j*~7}1Pxx2$Xo}>BU-RZa&G}$0{N-tv7jl~vaID2JT3{E+t{8ua{7*S5=UWE zdUxqo*0qXaTX8G22u*HiKV?@YmXS?w4bWM`n}s}9vyjK$thI@z+3S+NuBZ2GNP4<< zBx&}BG<$2dU*qTYO)H%yy{6GV2tPSe2%3b?*sVU3n%Qn~8 zJC3u+@5a$+$vrW#*gnQU3mxY@?It+JnPPoK3O*~OT?sI7)3)MYzTDHaH4@FmuGUy& zckRtqkZy%x5l^MACO*v6!JHuiOAA0BagzY%{LLlzxXM8#+}ZH^>r5reIFQitzNS}b zFsuE+6Y6tExyjGPS*2ZE?Dkz*UU|p0S>j9+W4UQFfy0VW=VzHxNM`tw%5g!dXfm*8 zb>*_wv<>V*B+rF{Edxr`BDsVuvx0z@s2BDRk%Vyx+!+J{x}v9yuocNO!eKORCXcMk zOfl2qXlapJ2IQrD4i)HrglHdxP^gKip=pAqQPm@H+N}uDKY5Aq-6c+!H9xZ<`A^+$ zSYT>rsgvm1j{n8xP`7C#?&uuVPzEf*vbXSaI~4Uv+*XiHe&<^g>KNbRP$`T%h7}Oa zuDg1fXAouTNT0hoO38#O^6H14)DQfiS+-PPeI1@g8;Jy)z_`+n5Cbwd=!~}%92C%X z1z{1sz}0|Gvlbg7M<6WXDLLp862jWx|w zG>QjVA5C~mao#{W2$kw1yVSO{XtcfhBduy%6+Fj*n zb+O`_thW~R{>t?t|H}26`9h#CgJwO4-%#Qd_p(OYsI5vHCM6riIO_5>b^C^P z`>gKsVY)i=tM};-Wu%t>ucdUfeO(w=^If$bW19{fG;-JSkt-N7F+n=yuWFIX-7Rtk+Gq`8 z7f{HVt`NeD@l%BQLl@;4?et+eE}4L)SR6X*-PoapZsMDk3?}qOmv42sygVThXZaoh zQ|!8F!3KKpGJEY)eNJDMNx2+|9;xMwrYqxyH%eDA6xX|%OIOh$eV z9dQB(|7cyBxP|p_3uj}PD)=95FD&mPrhbgd{R71{e~ZWJ$|a^&o`$o5tvXlI$jOrN zIumkCNoI!5a7S)=xd&WSi?t8fhkcwiXG=seB2_)>kiQ)Ba5U7agN zr|83BfLj5Xzfua{_)8Vn@~o@!a`;pzb^WKqm35V;wf{;{{QvN;6tjxT`wA{*?owe; zdnpP_H6(@giuD^$0We4(=k@@f!FCEh?pR{_5E>k$eJPUAh9uv_dEY_|e50%XFfxBW zbtLUm2lIAhZ+qz<{4jKZ?uzxJkm7>D)D0gER-GJ(q!bH(&O=i9VSXCmuvjGWBa!vi zQrzDKp!A_JbsiQ|Cod+)fGXw_NW7Gu41i=Dlf-jm+^U0;zNHrG*`>!@9lg%tk6 zG32v_S36?Y=*xt4#IDu13F+(W{Ii8reZ9U^2rZUlJn_7>59%BA*+O;mjrw?@dhn*$ zZmNUG>E@ebyIB>H3sU&k43+EFm@gUDE4odeFH}F@9<$)O9dIlm7sUDwp?{EjzQesE zwmZ5?+^H`Ts>EHf@ztm}PbhJB%!db8PDjYah@YYAOT1eRa?aFTQ* zvbk+XnPn+5h9aBuRYn`Hj%EE>=dv|8A{&qOL$c$AF)utS~gKF`x8x>NK<4zU02w05cWT@+2c$?aoDTivgh@E#o}X( zVxng`9LvWidDEdt_ODNdmzauTCBLW-GU|l*3$gu$uQj&ma*SSl5ItJ0MF>49=6ceZ zgh}0bYesjM>LMi2_Yukc1+}Vld zVbi33_<&FI4I~*-kAex7b|#qaM`#ZcNichPcOR@1x9ad8^od!%^@vjMWyP$z?90G( z0Yc(ISbu+3XX>#wmJ_-8hTZaKgKqgFQFB07qDK9IE~R6`?mQHQ0*B~4uPAevpXe>9 zKa;x}QvD9sV-tC!?q=#hc)}Y(eqHlODEJmH4n@-DkK#!y8GMdnvX~j^(%$GCVbNAx z$rSaD_52YUxU1H zS9rkSYGtWG0|%!>^eL62!Grq_&IS)o221zi*$f)+^?#_G?{;=|dTak`NxQCDTFF%C z0v9C5>4dUhfe=v}Ms#nI7RekZ#Oa2FCx`AG(~*~jAJw}WKOAnx{pj5+AlAK$Iu(yjE!FQeeUB zr!Krs^9MS9>c(sNLa#*|5thqIG4e| z80V&0t#f&Go%}9W#|NuyBwF?*btsAN#NCO5>VPlsX}2@s3#PVX(~deGEvRkv#6Ll3n}SWaB#?|2{@F8A}(mvL153cVWV2>Q|Jk7JeOiGeUYfA#rN z2z(tjtS&4zpgKN(nm^!(4(vv>z-C%v(~_-9I~PZ)%VW1H5&nlhs>+C*o@lu88kU3P zrN<;3oaFZxfKnmf$w#B-={*pQg{!)_>N?F(bj6|i^6W*r(#U%C z314Ed29-3WD{j$bgz#NIf7~mC-Tc^t?;1T>JlA2R+>FgrI;QCtG^t)i34m1-R#S-8uaL!4FLD8TLou0?3mYu3 zP!{hhbxY!+X-i@=*#geuMs3UmpR=N-9drj_NxW6*7h#U>yD|*U)m;OT?L5C@Fb6JQ ztb*k!+%i!2aMOUbJvR@L$<9+;0I2EP$Q}WU#kKGeD;EX=-$=$N_hHOHSdnqC4#Qwc z+&v8VxI_#ecVl_52INlR2HkU|Y#)l&C^@ui1RdNng1qP>Jw>sc*wCi!!b5t*MaVxa zk1leqpi7+mKFUabjG%S^7wSouV$?nc>T4IFg-kCG5yUPSa?154@Y-Gcn1@Zh?#FxT zF1YO}U40GMGDCk?H~jFx)Bkn@7K5Jdp7IfKdpc_RWpTq*I_q-9MbFuv&w8uq%anLUZy_=*bM>`KMCi{4Pk6tvOWAhh{92i-hev~^Kri=r@$wvO<&4%3i)Ewa~~ z^snnqD|j??v3^6ZK#BtJ@V19dV0_`rxyWqiCEh1YSQ<=_oo3k_Wq+@1fZtx0W9bh_Hu<1_R#g}6|LtLb;j1|`qnf( zzA3!85ya5C zD`g|wwv7L116esRKpa8&>Ow|%1 zdhpDlJ7f}JlNYoTQV(8OnVb>LtvD{0EE#SVH*^%8F>Etek$=ahQ>s&Qb)|94FwC-3 zq=u0nH5UAqi8{Ein=dP~eFoy~85o6!46fn2k?ZQIn2uaLw{sh~?Mxdd9h@k)F@wj> zT7a|#9rzh@x~=M5vTn52a3=N>0#GjTcAp36PUyXNf372)^>3@w~JY< z`jUNFg<5N*H4CEDafSHy44gacUR71efYKU8Y3`w_DscaoC_p{g-F0%iqYMcd-1il1 zLK%cCQlopiO1Eb)#bpwxi=Elofiay%r>l#dSIPmBmxHa*e91=B8m)Kr9>s%{s0a-F zOoRu(-p5rt1c0bgl!0Ub!NLB@P_RcD-4Dt7erAiSX{1{xmkb_tnT63l0i6S3&$ad{ zOP3pK55p~wW3&*IFo0l?0($^DkONR@h78u^DU28I2W<=;tr5lvtfLWpBRH~1xz~U&;)NfE^{RW$nkb$hg z#0F$YiU1C?T_1VrqTy*Z3R+(^ur-KmEkuSJ+s_uYl1PrAaG{~lp>&xv6fi9EBWQ^!W5NR|bQV}k z^COO)`RqU#!YCW@!AVhwSSdt;gaJfOjNC{(glEG!j*_ZWeD#vZjaHooaA^=O^3>gw zG02tfs@6KjDjrKk6+J~h#*#=Zw$_nRj6q64c-)YEhMbF2cVk*VP1+`r;nc{D#V2{T z6#j@CH&p8vMM%;BIgQq*h1M^!*0X`9M-r1~FDHUj_1yS4_QhJ45mzqjEOvWoOe1z- zwq`qmx?FABEP@jhaSvr&~0on#==6}0F+MlP zY{xL|w~k7M@L*J2XW>Dm>72cI3&DkV5dAv=vKr$aaU584)Z~Yxt{%0!`-nqO7Rty) zwYU-ofZ9DYA~pG!QpbZHsAgN@GXKk#SPqyyXeA2+nGIeNbVGKRNt5P)EbM|I9VyKa zDOFuEeBFRG-FiINb>qFiST=$+j?0;ac4L zvJ5_Ds~}#H)FoSK$geSAn$bc|I=~)-Fc%*lcp-QW5udHY_!rGS@XXZyT;2D`F_|bRiZB!us7YLZ~mUd-IMqSE%jnj_i;BR z;o85Cj2oL>RQogkQQ|&IB&M-g2rgRU7iQhUEIA*d#mV|_lLC6y!e>Z+dbkf0|2I}G zL`SY-87mnomuY~JT=lahjocV{OF+3zF-n&Dt@TGpf#}q5HkmWglzYN;W#z6@xpQK_H?Mvr zj7;q=esR_<&K6Orzucdab*GemXZH1`8>4?WnJpN4s^?HQa9fT^aj#2`BOe89;q7`| zc#EOna`uI^e?}67so%#MAQW^x3V7|DB}E+_BU;p1N#4Jl&@ndHCF0KWh$@o;_C3x1 z;>2Cd%pv}K;w~bzUNXmDn#A?)Qsylf`X7^AiZ$HTcPgA-q6Y}Q%M$lplID-4SEpv( zWd?0&;+6tIJH)A3)w_&(wn?~`jo)9ExMfK=-V396XEAY?hZdLk)3T1gQ?twb>H2V| zXP5djvhIxR63@%^X9_17L_on)$>9ll{#5$xtUEhoBIU}bl)NHwSAbEYU(UaLZT43t zZn+3^CA0ksD06k%OP^G4U-~+s9k7*ZDgVJ5}#s;@+9K zJB`41CGM^O{qBUR;qGQ+?@ipjA?-ftTG*QJ=hNM14c?L5;m^ssmaIDmVxF6I=N9Lu zM)tg{yFc;2OB{a>LdDgITMdd0eof-mh)CxZOJ_1O{R4>u^#>9jtV$d>Kf|}D6ZflUfR3@%zN__XNayDslWhN%v;D znVjTLB-}}!O#EIs1I?uRASv|L9lx0?1|SH^V~r^w&wkBb!BS~amyBNAK=yR|`Mn4@ z@0I}jfOH!<0Ml1(A}q)y>GmP1#DQdwWtTa?9Z2>s4eCJ@yC-o6vB~V|_G;$pK%iB{ zmha^bZbp@;8o!3O3t|gq&aBq$=r^V2egnJ%{NB=?L9j;M5!f+1U;>=?uRt4ZA*HS8 zro!cZel}e@(mwub7PkeqpxI&q=V$%AEc@^7L^QE|>KED~Ncx4}Jx|nHpwDqvC55F> z^$>#A&*ewX9g^40%6m62>yHnU_W11es4#s9^5?~J6R!SFzaZ<5&$4QCo0rW%xElr6oTtvX5NkLxeR~KZmhhf3GyFbbn%Ta~Cjk<<_ z*-^Pd-#qHi@v@#2gVTR{8ppW5A5DOumHuOKHryM1t<^O%VD1OoDW}1TKpG@`y%~uoc~fe?n|^JUnTA81~-wo zp1TNT$NSB#7n`d%_l*-xUNzW@x(}CWd7YO<$`j+ z+pM(5o-AdkJGxm{52i{fmLtPpR}vtMW*|0WAQngds2sog@oSuZ?NNf*g~Y>1+}-by zM_#~O;$m{DaDRnG$4g&!U+MH~g#$-{O1OUZFYYw&$A$Ok0b0m@nCXo31-A#133aw0 z=|rYY*14TGP(RB>KW>dp2`?VHLii!jiWhtuVeb0{V>z~o*M9qg|lMKgVQghoQ`UWu|& z-Ma#*H%Z==X0Zi>yGm+3oy=E*rz&2fcu1gs4TtKcdH*UWo8@1tu>HU(_-XFd#J|Rp zE2#YSv_cV~aD7zFV~;iH+^DfI1UmOxgT6!>QJ^mg(EpSeygvzE9u+S+ybsKGsTHS5 zrMM!JI*~6oK;s)DVk;Hm!-8IqduEdqdlWr`ROFYd6zm@utAIW&?_U>JBpTkL&`D63 zhbV3C+-m4z!N~C6E}b6zdM#mGUr!iVj2F)a012BY0rtXJ3Ps?-!^79--6pPndeF#F zaTAHqk3e+Z9D+Crzq?H&-sxb;%q^M_!t#4f+?kq65`4)I=HYq_84E;$x8Yt-H>CR` z3|T=GSvqy@kEZ)I5fXFS`5iUH>G0W|j5H{Yxrks7oX*b&f|$LK!74lNA4F@yK?-IM z*$jT4k$6~X;%XnU2Lc{uVm)e6FGEnET@)vkXT~0j;KUx6j?f*!QD*M}(6J{?l|;vW zFKtl)qw=Th9f7A{BmN+L5{P!uv_Pwbp0VYzOffWSSW?f*9JA1ZWyo_DGxWJIaL-#Z zU|-M^0qBe{$co&HL`!Q7>L9?r$a@~pYPiv=k7(2z$q6KTIl@k=qOlYQl{Y~Y-E_Fc zINhK)dQ{zjm#J+-dR00kw}IVEQ5o^K!NH1?O5$rYjq>Pqo3(FPxLtblXDNMLeS?21 za{Rpk(Vk7*vpVOWk1%r@j9hIKzg*&ZV^nV>If<%<8x&IH%HC`-{L{-i7#l1mYh`|}_tQe| z=aHY0<4L0#3Y@BC|AiDbnkZjIq!4;on-l?v(-w=$lTT$;IKyw9qmUoNx2eTBqrn{m zGE?(zs?;k-pkQeZsuZpAuT7Q0tVNY#ZhqfLeV6jm)yVgzc=?Vw@S_4dr!~J%YiiZ=eIxf>$y#(Rv8zY> zGQ-c4?uCu8g&RzL-oKH!Dah2{ND%XH=ZQx-m|yk$*u?LEPlju3mXc0%ch5xA6ZImRrq@E5JL@dp$rFs*@2vBjQh->X=&@v+5c{2S`d147 zol7*`KKwRq*2C)RBaG1@{tt=!1FZgR8BVilEs9xniQ})aNruslg`=BFrqQ$g9~1XS ztv(ZAoq{Q+iPRKElfGadja_t}fU>ydQiMAXHqoKT>3VmOywk~(YZ%v_U>!}DEP56RE&vyP_G3u8pY7sP%GmRjsLE|Lsz8{=|RpiwEXxSnGweQ{t& zE{WZa;T1RS(@SHw6yw{&{4z6%W@=t;2GQ)(SA>_}Fo|{>^Q5OtoC}#If2GWjm?_I+ zv^07DCQ)JBn_OeCJLbhK)7QSqar|!L@;HOOoA`7ipj|J+=m704p#3F4`-?%7lYwB5@)Kbja(sJ*bf)w~ol+|>C@v(2r-sx_ zkDp;Y&CP-(K~Pm}s{4u_H_D#c7_^%ZWoYs>3Y}mgJ=Zl_-&TPllIK;i-;HprpkPS5^)thBZl|s&g%3->jAvIRj%6TZ3ZwXjD3>H{a^Ls;CQ}34g zFgzM#Qtc+r!ZKPW&^NH~&{eqIWC@*K@Awj~lR+khEJ~NjCzY++B-u|&7G;Fr!F8Dt zY@#77%-jxn|F*;lk``ehjX^X9(ELQ~|1`GMiEl94HE5YVBMa@7{-25C@2Qv(z?imy zLJcx|eO^=};i;II=d!Ei=hG>vpN>6m7hre0K68jN_ark)*7c;C4}jfvU$n-@V(D$N zTJkEb{Ynw^r5NK}tNU{7UKae9$j|9t>EHP?=roeYMdDQ%a$}`ycDuMPVY|!CxIr7S zS@en!W?vreSg*ytA;_jy#M3n^g+3}8y)G0aYd= zET*>Mc#i#+rN$=uE%RPaf%e@AfgX6FD9p8;gm~Dp1i?P^5l(#$h zZH?yJismf|28}EIzY?cE&EI*lVdN`T5D7MlH1lIRV=?){-eq1Qm*s8U4h?>O5_9sZ zNJSyyY0(6l@ePt;d*A3!Lf*{VqKLR&NZbo5wkYugtB-l zCEUjo*W?x_T*DK0ie#RPIU$$nBY0U*qoj?{xlqCB@#BZC^*R9G1ek<&=3m9IULj!C;=OhIbsus2zd)5-*tIT5sPzOAbk_6Uj=lN9#9gQ!a31VU+%|L|n4V0p z$#;$8xsmj4Ott$w61|#yosy(dQ5#Y1uHF<*Uv)|HXy|gvs8U(fSW`Aygp#fn)tka| zNfY*?RFp-V4oASB5T32Mx}`S6!}|{$6?E_&b1viIhs26UAu>3YOC@VA z`4q*ebzSY%US_J|MlhZ!9FJ5M+X)Md2G=6B2(fK}<*92F*qV1+FdQjiQ4viLk|3L7V}-ax$xF1Cxl z)X$dL5KJcMb#q-@w>fFJMcxEDT!U746G)0YBS<|$b3JLUM`#Y56vL2K6@*Q#VmWDL z*QYGJdta33>z7bdOd=Js@Gby!cyTzPmXuIafLO0UFEGB-Jywu51YHl8Ge_Yw>JD~; zt$`r{nV}#vBs2iVicSJDie;#FhPz;kZhc7lei*>{*Y#+Pu)HJ{nen%nDS>c(7 zGLGv8qbIR9Jh(N8npkm;87$^#me-CVT@Dy~g-?5l95egko3AM3lx;zP!qvTJAuGjv zR@0oJ1i(!XV=|6KQz*=O#!7CZE-Q{CoMWS;A$ihx@~BfU6c3{MyqVH#|_EW$sMblw>>JQreDc6xc z5emraE5-8ASY5#G3rsEH! z5Kwv+WH`gUf$yjFkmE-MKT1LZAZorMKJf?(DpG8ik-~vYV7*&-0=w_Rudt zuXpt#Q~~G(L9f(IAclWhV?tVE3j4tq`uj0enT+kqO|nIOE{^(Y33-;#XXQ)iGh0I5Gbx=p zizbDr$*<4kBl;eFj+&W}8HN%e7$e0wE<Xe<6_g_rXPEN1_IZM5D>GU z!?=w&n2rZe6f`QH)g^-Q;RHsSWE&fK{mS#SyOC$xHj`NKM+rODwv6^L%Jc+d;%Blf z!wT%>YDHf&Q|=8_DqU~S`1f-Cl-!Ts{XM{J&*Ehcb(00Djg85vAS4z{Qz6wlKt_3S z^1ut6n8?WX&z3J{Z9NQpf91SrdPY=y#y%<#PX^Lx&e|ctj=zr%1`8pI^v~sm1ENox z0X}AAwI_CF0f=DfTRvH~ZA6=7C3^CclY)Sw1*dJR+Trb}XG3aSmEyLiZcI590aXjJ ziy3h)1gPF>-J`r!;R80wEm=&HLZHFPZc8^=C?&!i+6$RFB)0t0URS5QNnu_vwRK{k zw$_Q!)AgF;d&l*zcX5{VVNQfylBpy(_`A9FZT5t@(hsD|W`TGjM5fL;Mj&hh#N1{s z=a@g86xWEYpurcQJa69E%Ba!gVEin6oyX3almkI$pv?{# zDWNmi4RAxs5m1~wrV$$%RXNve-E{G_1)izGaSrSUH?zMDkUCr&Tbs&kajHzT({)x> zL_SD83gT5761Z|$Bx<)M%XtiBAH#AU<2vJ#;kFcd+Pom}c-KR}#D78Ojof&*k)A}h z2-2g#Q32?Oq&Q-5Zm$}5qpQ5G%tC-EQ*HDQZlXe+4sn~ReIWw%d#st78gpIY17Ue}e+3^0gx< zD|}!@K-tPDwigR&5|;SCVrk1Cu!=Xseu=>NKU`I|W?&w|s>-ZmRoS{j=qqZhy{Zmv zv#JhnT~(ceb0DkgP{_hw!u+qv&y1?Hb#nO-xQMmQo)4>5yB`ZTQD@WppOy{NR;9T6 zkgYq8(>oIcR%n0}oluHqIC-^8SMn+&3^Ul* zAID~Ggxst2?uOv%mL6(~EU}Mlv$FmJp|&Rg%BM+03LKa{P7p2^9ek?6ahcklHTkpB zAeg$R)!I&^R5cvZf$@j_mHtpuk59p*ommrUkfmg&1v1cNMXSRT1Cgx!wSA?4@Qp)?_&0&uRZ8%cQ(76=P5oTOKD~jDwUPQ z`A(5MMMnE!tR&7ai$!06b@#C0w1^9%^Ln;!Kv?es<%m8;a@MYB8{^DVwOFmkRb-CrW!xZh!9_Ec~(6bNBy-W4P@!omfeSH_Ba_D88FA*mV9sd00W(0j1^usLLE z_xJMfrTN3-dUv={rhiT;_CHs9fS(s()~yn!$Wap%n`{3E`t_H*ii}=_YLqE*Xq$xf z)0b3>%YboODT`Y*j%Dke2J1mR;3;+tf-7iMp@Y9On^Pv^Wrm-O*eeRsp_bp3J)@N# zO6d`#`ca@TjUR8&X{?O+=N%3YGWzJB6rkCJ-N`FL8cPd1i`ibV<@?4=>wtZNEYS=$ z0bg+;%gN*}IW$;tfy70zyC@bC!GfutUp`>bCm`V#Ms2W=JriZR>z|V(c*ztt!fi&; z6-9zzw*x%0ld*;+VETw!_v*}2w7=(K8h$;-gGvpXNd+C~&gy$Tru%IgmTzv_f3-}3 zUi#-Fg{83S7(UqEfTh7#(23BY3BExr6jOI|NxLjj!D;dp%7_KPZHEgqtP~eUSgN@! zfO(N8k{I4bc0h!&T%EYpz-y96%9A>Jh#yM|rd?L355g}UiZ9ASz@CT<_7|9Zy$_x^ zeOmTg2?kvuJAlROo&vZy>TJcZi@*1=_`*T&JsROBt>B9HZc-Fm=~T$pZWjC^#AM}6RmU(Frei0uKV6l@X4qW?)Z4P|wydi6yz6j-f8Dpi#Vg5C*t7lcNu$~p%_{tXr;A9*vj?*b8aV0 zq?ufXJvQFw8!SwX2br&0?OS0~g zbr3i0h2mgb1}Ah`wy-)wP^+xFlv>mLOgt#vOdh!|;z8^RrR&A_YZ$z1H5Ath3G3#* z{s7jmCL{=zHob@Do2qIij- z%0((c!o~K6{6z*oOpQyF1NnmQ)FqY^I&)d@FmLipBeztf+ERPzvdAqnkaBhMUDNZh zs~vdDR=$w56Y#BTHp&knfWOLO06$seA{dkd}jW;U*lLtoY3W3DgtL?N zq*nJAbB$8acAfFJm_JmY{wk|=o1T(aBe$pSP^$#vHo<6}x@xaz0jQq9d)&dZ_u}mD z()0Dg_HOfhqDS}Wf%$OjBye3F68fHQBq!NaPO`fqe{4{44Oi#ym9LYngh@#91?4^k zlovX=g5jdRS$rwmaC}q}GF-10PG)g!|g(+(S6}xpg608;KHo60-NH zCw{j4fSL4OSa`q3j*`F-sFN(cqcz$ zrSVGct4WDZ@>7<8CkD*cA8aXxRr9o*s>P~3BPVM$xCumfTtxW2h_D4jm;n*iV7QM( z>=Zi3qqj`WzUqN_N~!7RfFWNuJetsKYa*Jdv$9@D&|ihLKgzWO3sBytn* zM}gUwOPppeniGx7OA0I~L|;|}LXF(3au;LLzN`J4fO+capX5uXQm@I8%*N{VGGDSc z+LUKL{8?^gD*tBW-bB@pxqd1A14RZTE?~0)o|$;$kIn<*=O>;5^OxLdfDp-AcCjWC#v&><$M{rFRe0uS6|tVRpA|C@PW?z zF@@eppvU>iOpiR}-5psCG>w519$B7%cC+Mb6?XD}^7g0W>8!6UES<9cr7Zlg>@M)F zg{Nb){Z5ZHfWWu3+vvYfgVp^rqTPQ*H2e=7xe9W8_!hS*SP$5N&0*5`wRxUQJ!-&I;_1R;TV#PXelUKAMBKNyUT4PcOuIsw`5c2l{VKh_3%8wKF@sX&V|UcgIAey@FL@H1y_d4vyQ)&e7hp+uCV(+86pxyQj5-V}3`IJF3V$nde%cy+=*9Sa;Xyx{-yM3)zq_w0O zu5?Rdx72_v6Yk3l_r>jdjDT%4eDmdHPjp;iCCf3VP{1&FsA<5iG#52HBbUbjxLR&! zBF8myJ8MT)ix?RQdaXUt!Hw=Zd!K^}!3~XzPK;|;jyG0H^dM-VO%5I%Xb%uaGoI^V zstWlPdb>kyuheSLHh6mfXGLL*i0dfb?GH|j3Zreir=s|1LcG3v!CJ=h^gx5x=i zBU4_Qi*4ux&l!Mg9@j9t(3y*xW-tC+OyJuYq??LYx;yN(4D#-jhnl;IYu(Md*4->r ztgm;(c%QNG*3fzN<}Q2agBm!kh2AJeBMxeKrLCb+3aexH;PWCu!!T=mL3SCL-zLJuFXmq2vcdk{w?BgsRWMGqNK0$LBtdric` zf9+Jg1v1C4%DPo+(KsLa`EZPL8vT4a?dM~95=2ycyx7m(2>^lr+T$^0@_4UVKk;LG zLS1}%-8d5nS^fOIJ@Wyur(#OtT7~bbJi*$HV4#g%X+uBFxlMvx+|!=5&OEPfK5yL& zhyDwC4@S$@{MFQ7+|^zb|(+q>RVjRyj>)$qKwYP=BJ90r2 zT=O_%B5P|KUAv*j*(?;s-Hh+=sqp&>+pNNWWhC0;Tef!1-%QE`b2n3kkIbXYfDh9> z_2U?SGNJMbUP#6=;Y{|aQ4bF?5=Y}nR(r5K%09Oizfd5n_UjD!3QwvEK3-&B388-& zP`t;6i7CcS?4OqKb!_YN?=f5b*SxNxPHrnaa2WfSl_>WZ`&N+3Z{gqRfeAJ9y&`DA zHlAyTcx7J646S*GxoyP?kpS5F3BF+E*KqUaf@zk6Rtg!PEUw|WX;FofWT9el5vN^1 zPNXhpC4SWK%Y}=Jje+cUvPt7#zdhm*{>|g}JyuEEi*v+hi@(kEI}iewt?k7C2bZnW z4EQkdfp}}3VH+TxTiYw)tb`C?cyOt1ShaX^Z7(98YYtgwTTZx8oG1S*T`2I-I$s?9 z_UZtxSr-_{3&~3jCo%o7o5B(WGSYApJ`69dka)2og%MCpO?D9bdN`_^n%y2gy>*`dAZ_(iC|YKj+fABJ=8VOhTU=%Qt2ysfWUm#u1bhJ zq#4z&_;M?DwaWV(WeM?RECeanhFjS+7W~V|o)g)xS7a~2USW~FxVElTWG_HpFAysP zBG;yw;ys+6a1Fm9;gf6ljf(yyI5#QuiF$Oi!hf+Qx%Cc)x49vKxoLvASs&)+#suaj z+`|W}>?%bCqs{f<1Bp4FA)H9`iuEwt~J-SreQXAeG{a+vMAd7*W{lWA1%mA(Y|P%iuOg>bZcr= zv?F0-@0l(6mnqs!+@zWRWWtRLo@TL`uUzg~J%( zxT%XxO08@Y7bBcWV^wi-A`zw3^5|fNUgF2YQ86SEalnumorZtNEJ<+qyOBKPD*XM4 zZzj}0vs}9S+J(|azkANE!w5ahhJzBPQNiwVX*3S*vv#vkS9qI`H5E6D|Gi()Gtfso z9_JPRjw&axDI4brcF3d@k088$AhQz~p}!kBTA&SI&E2~NA8El@oDkoPVdEXhBt1?I z23sM~EA3DdjBu!d$4bFiku>YP;&d|@Hvj_#BUMfW4?Dn&40eL0(JO($*>s_8P`4k-3fYkDO9D$9?I9)Y0T+gBPp8BBs+G} z=>0}Xjvq);$~VC+2a+Z{S)%oQs?MiLa6zdt1giuggr6N0VzQ>RAqr30_0}$3^lCR1 z@mh2~FGwcoHAp7v1=0hF*AwMMj|NWJAodCZV76Zq08>!n;Km>TrX{ReC0^;o7Pe5T z$cNZA!*@>Zh1o)twjPY&cvn%2fI0dY26mb#k4yZlFHa^xKlppgXp(R^qiKq4xK{F& zr}cXz6Iq{wOvalLBVr=n9KvT`L5HyeGJ}L_h>1N;Crlj{>Zwb94T1IYLyaI9&@~20 zFlaqy=iv(y01L4fWsRV9g#`E|!|Y|TA0`Fvj4@I*tO_sGV)rPlI6!ie`f#X#_^V8t zZB+mUY4VZ%g0pYbScM0nCA$Thc;JrNDPh1K1mekEkcsvu9_)ZuE(V)J9y~5l(`1-(;9&Y@|^!%_|I;qFj(_?%$RAk zpo*RcpbC!#gr25|$c*KfJkJwKZLa4EnJdR~pt)nsHY;F)I#%hZV=>KPZxs3eE<_F6 z<2)Kv1>O(1wM3|AReTVmj9xj$e^a4PO2 z|Bziv7%J-r(fx^J84DCbxz5$3-=4UDDB4zT9!s^JG(gM?w^Gb~pFx7f< zmU?4slX?TMbe`CyLww31NgQuTnx>p#s?tt!J^?Ou?4k$0z&8FR()$YYiz0WC8d{(A z-=FnAhzLsXKj$mJ~#60*Zxuu>xpn&7mJ2M6^up=1*z(2I&ki z)v$7xN;O=V%PyZeK6W$W5utR0@oaOdH+XjFV$!d;JW4y%Ki ze$QM;yG5E~HGn1=^@#Q8R=wh&OT=wbA}jNDT_Qpn3S$0lH(GC~Q|?Zg6uR1mqQMpu zZ3No6k-+tP>Y93I|H_Sb&u4_!L7NJC?ef!@iO<+kPgzpVH#xi z-4X1&BmMYvQlU<^No9It!CoCnmCU4CBgHWTGLA_#o=G)IVY!GD9r-+I>yy@>v_Xo# zd2RY41J<5FKob^4>l?O!>F0YWdiZ)=Ar&unXVg|~Sr!<&T3Hy1yCKv31H~2fpzJHP zIv$eV8jbaA-y*v%Ky?O2H838G03yqBRhP{=Vxvb?-&L4S=245{$tn0)dXaq;fW)J= zcmC=jb7io68wMheM%Wj-3dj0-f{2?oQ@DLTX(;@jn59C+E}umC>Bx;tp+ZUL$ClG>NmEz(oJLaLd3rLJk(|iZN_tg7>-&d zt|L6xEfCx-ZARJkQh;BQX{i>@%hJDU)osihh@3eu*c35kEXo?I^qQ2fs)X(piD^iD zLs2`Gh|ZPtKSu=IlF}7ORK{#o6ZkFZT2<(6)l3uLQ4CKdzAKe1hOLc3@0#KuCCFxY zpGoNo;_nAYA4u`4O6XnxYJ~Wk^sUr+pZLZk(dXit1p#SexkCTKeHan$QV%ySz6i z?51B|C|IV-f7wQR3&xxKjkFZLh#1Gs2|);R0ty?2xjzJj-B2%GDM1T|@?!}0=$rU0 z@@|ZP{ap`~X|ntyJWhr!>;}kTwnTbU&jo%;4sE+Qw}0v}GBG7z6IT{1NG9FCu$K%c z%QuQts~P!i_<|Hwx?1DjzE0444hHOSz)k{e0kDlU>VFKA3Kb{4L%I8d^{ypG*C~Wh zXU>z9b~wt$Nq#FtM-2!raN-=SDSCX2ZWL>k;Rux``KjbiBX?VX5Yo#gYj1VW)SsZK zpqI>P3wyaO#x4`EgP4Y5a;l`P=09*kn*f?rnO@RluA>4B;z{TvO|Faz^JK$#v6@&M z)CFiacmh~DAoT^62!CI*wSO#AQtV9U1T$GJly=}H-vA!m;%QQ5s`}|Ms!SCP8`&AL z<4^peX);v;1?CyChUXlVADFUI`&+_v@lrOWj+ce$x>}M)0ZqY1u1mN1jaEZ@NFauo|(45;5oh7@h^<{|55QC86Mgz2P9X4Ee1ObNO!x*%!_J(7I#Iu4rag68mA(}uE$P=d0K zu4f3pm(*6%cty}^5^&p8nBT+O{vh7=2ccvgUlC&w&lz$%l(25yU}{gm-B|3FREIZ9 z|4AX)cv}x|O2cv9E=soVT*s6@yjeX<^`X-gg%joGt*F&*Q{+wKcGs?&a=)RgLGvjU zB6?4Pb3&iHv{>#co7Jc|iOWe2+Dx{Odm#Fc2^#Qq;KkIkPNM}~txi8w?DV~{Z2svq zD$+nX=@C~epeKd$C_AmwzmxV8xDWk%+?v7SAuK0j)G{-cd+(0ek{rrA{I(Rn^8)Ot(lWSUHk|5NC&kTgp{_Xnvm zRq|h#5?FX zQ7yhH9j0)9ONz?SLT~Bb-d1c);e%>3^u<)0+B4B(k_fT>BHbd2&G!s~sWsQN8sQG| z;f`^85c?_?qxEGP ze{%wAQA6_|7BTY?@eg@7K!;?xa`bB+5^4&{P{{vJK}1dZRa|6pAVY86!M;&kO?CEL zwhD!`G~tP0UMPj(I;MndWGF2P&of9%Wb`OV7fIKMTCpL#TT~p^^JU$bp6X&fpOSEg?V*ka z)0{^lzdc!u@rV_zP(})(IHR!P3Of zD4H||tbgR`Jah+wGtD>`#Tiv&^Ytb45Axc$wI!ixlqsXCL?cD79J-G}nZFb0{z4rB zyzhiXY+-Imog6w2MBha3w`0lY(xjkQqxlWZ1TGh}!^FpGfoo*3BgZg=Ek?RbL7s@Fe7u!-CFX{2vUb=bsoX%1GqrYaUlbih{|$ZMnm2IN>6;;mqa8(@g1 z6CD7MS0!+?W8r8OOrZge79&+^!O^B5>jUqNWus~TD%9rwb%kHwlA+<-L|KW0bB~lI-i5Q(qrSG1{cL$A1_nQ1Wxu`)3l^F<5SNN#2d&l?V)`am+@Iwle&a-F`{>c-(Z3&8@J(b1mIN2 zCKzG#ROieViRUp9P*0$@MF;%Wf|MJ{a%48jL6y0&|wX;yzH%)F^gS8R$6~j zn|gs^<%;j&`KLngf#1U&tp&e_=zXSnGwmOKv%?`Z=Fh|?dq^;? z;5ByK?x7veqs+5~um{&%7MhTl2oe)%YL7y93&$i1&ft{C!hIW;aoYsYEOZ{`R^E2b z>w_n_-Hb*($Sv9x9?B3HLRU>7hMVS&roEI>El(F1IzNs7BeJmSl0UMuYic4}?@q-n zX7O6W&q6eW9Sf^7v!p@^N5>R3xGQDo0@8f9t8l_RVw&GAZ1`Mk)G+>pZZ|v>?NKNO z8BNi4ZpYd=ygIk1^06$`=2V6m_Npb!G(~pQiOOA64VnRBljq7noxPc0ex{o#n&XX# zo*OllV4|gJ3$nbkM9%>v!+_JF+fP^bNg{r*7;`5 zF=BiBX4Fyz^zSIIBy>bqg$%V9I{zJ|%|u(}el6I)7Cz>DSl-1p_|Qcorc_u}fH3dE z25F{#q7z0J<`%AoZjKr{xS@xGZwZtcRDI z;;RC>1ZxWmtaF82D8;}mkAm?8O0x!M; zku7#c92Cr->!~gTWMBeCb(lak4&w)qJ{}&G18==FJ|Y9xkNKo9tL7)yU!Ct?$dTe; zFT3iSK#R|F0$ohwQajKM43Xf9X)J9xz(AMIy7m%jRT#k8iG*-=I_BXs>{K2CSFD!d z^i-(CIa+H=-azMZho>RE$<=S>)pxV+#fnBS8^_H}91)NkcKohGH_)4szDJ`Vd^s7IJ~a zjqEBC!XWOb04m&3!ZCd`#(*69Ok}P)Ol5dJ&2w0DwS*nYBB=8@%j+N4Vxc%egCR+}6*vMeX>idfTHgRV|GWv9tjj{91uhEU5pVII{2qkqbM)-sj|?W83QLH0FnzyP8Ru0j>yPl z$hL@iKpd$M06I}I3;s>rHn3bWnvl%W zFi9pAqS@m51sA?YiF*g?aLVhK9j&#;Xm?QO`a=UnL7gtP$5E2i?fGDS4WPf+IU1{A zcQt+!O$;J+w6W}D>$bzlOop}ZfH5$2{Tr4>ITd?ZOxvJ=ixlLXrnTcXLbDsr&O&Dn ztz4m+f0I!HOt1P^C3O0P8 zhKUND!_AGwWf81w0T<>L=E4C?bly$WNKF)7Y)y0IcB#Suw1ck!IjUE;Rww=(u@ z8EnU4K<&a^>$@YBDgr092!2F!^^Wm6+%lter2VH!nS{oR&8y{XMsr<;&S9i9qFXvA z!O1)^Lr_b_BAJjf!UW1BWwPjzj?)ZBVClp-^Ojj3E7vmp=o93V#)*T9OmyX7JFqE&0w3uyJ8sL6$2|pgqp!EXcxab zGOj%egTwN|%v%$DSh%bOjJSRkiQK>?Y&&|@%R<+s7)#2;V~N}HNTS;zEjhVC_cTfl z3qkG(uZ*0`_fs#`mmLFkJ8_(Jb31`UzakD=M1xC<$gXTZ58>u^bGvf|+fDb;+7o33 zK#*tRxDbqrb$ODpW*B!tl$mZOMA6FRQL?VZ=bCLf?-?$Ed+~;M-t7gS{!7s9DUqqRZuY*?Q!1%jj@v6j2T+ z;dwwxmJOP#e-{1c&Hkq)GjVBWSQ{f7H*T!1v-@Q&tL318BleTRQCHHie`v^pG5V-< z$QY&6ShCPjlR=&hu^vM|1i{Zi{^-JM89$eW$Bauu%oKNhT{zR`4lfN7BY#9_`$%^L zTfmVy*F7KnB!G7~=8*dUj=8~t|6gL?9Lr@=SJtCyPmQ=x9wTgyb;s%$I3^qe+yxFT z^sOdcrN3#5v*aN22<|Vn3|*ICymZ+ZP+Zy!&5{kiHxt zb-tRxwO)-Xtt0C=F@l(fzhNF8r04qRc53-o>^4{UVz+-AdWyX%Rc2G=wFgUDRf!41F>-Oph#MMq2Ws=g!kQPzlJRt_FRFCvgdz)WS0 z3Rx!h8WRrov3xLQ<5-<@-PoKPhZ#I?Z)lbxgoQsE1NXshpy&0h&wbVBN&vxz(Zh}T z39|y5uF#Y@HaB|2J0D_Hd)vbti^TwTsmU+eFj{F(0bmFp)gC1uOv<8YBKW&LQMmE- zdlce}ju{HF2$3f`a`mXQ}v>;*{NbifglEp zoK_gGDjtUr_=|#K2!+oSsR9^SJ18s!B0#-eOYa1O%B_G5i8Ese*vFU@Y7keF3&_Rh z6K{>!i_>Oxfp`CmV6G6Uv&;i7}Zp@wdKWx5NEI%AQ5^=fcq)p#~_SpsljWnfo7m@6N4Z$Ne z@ZG3kLE{o}?Z=|7F79;YpD3>jnda(>D9&|AvY85Pm@54q$?03<9n)YeD5*a%6`m=n zb>qV`*P^nZtp1yb`C&{f7Url;Qy?HzGv&3!Y9HIDGD7)wr{Egw^c{$5rXKsp_cH!g_ujZjiXUit+!qDs8H-Z@6|O@~iHq<%(>y*iZ&7 zE6*-qYbGaKQ2l{dLrbWlABQq1YpEBswH+y7kXjP_yuwVj)kjm~i)0yZCFaTNOJqTz zdpt#(q}&~^w$S0)laUJ&Kfct~J2qnIbNQp)RI6la-LRa;Yc(vCyRa6!+E9?mlM-F( z(AA!tuxb{|QB37d3Ep8Cp0=fDRXchjhzt#z{^)Di~uY2*@bqPdc19uslLiztN6wq?ba@$L?nz2k(25M=7HGrtOEOE>13;OHJ zZFXE?Uyf;z0-Nv46T;)kB?~+{s)nhvMSoLElPWK9f#o!j5Z+kMDlUR`9(j!?Dwo{B ziORbuk^(yz$6RAR%t5dz6@tmz>I4-_Fu=WQok5G>``UQ!PBbVj96T+A1DXYu-IG*? z7rvD$d-=YlNxX-v*2%NG+skU9K?qL<0Av>T`rS=`Fw5@)7h}sEF2nQ)el&X^=V=vZ zZ=D}2L+J#}5fhK5Lu0wNqDh}5ougGVG3>9TGnoa8yT5lBuMXulI}EeW4cIF-bHC!| z(oNdZZe&)GS?7n*sgPMoX0>nP%>Aj{s$9C)gpq>_6$Q{)=;J_C7YrxfH2O7*>Guy# z5id6yCXg|H%qsB|khD7stdJvr5u1ts}POGRhE2pP@RU2_ZqqVXf&>syN}L=(7Eg60Hn@c zZvi3c(h3EHY`sOTlI+Y2CSRjMCO_l24FY zyIGz=8unH44Qg%e7Caqn_r|q{zp%&S-E)f^hI(>~$)g45w*|PjE&q1;_|SCN^zWeO zzL)L#cMv7cHt;*;_oL}~w?&AA2KOk7ZTH>~Dbn2=Vd+!kBq?tDKlSgGS}yhI31`$zK9TnGNkyJuRG(y1=$6OeC30Pu_P@ss!=~?3X#@%@ z)D8EeJhG{X*A$Lvbp(0_7b2Vat|JQqCzxlg>T?mkJ`TA&mmMu84+73h&4=FMIsP~S1gw*=G zau8}?@11qk!)6b(-;>+FD!wn*q4pKuTUSN9Tz(+`BGvn={EOPx`(PdQY!v<`CnOF3 zhYI~j_tO2MAM3-jW(Sn-7atXOfsf6DDC`2CDAHpYulK23ivScB{^#J73iv;doFXKw z+~D7D_cS0qaDPCrDhQQ&`+BNFTF zN7h?o9%;Az0_>DLQuG<@I0M;n2D9S~Nhe!98;%7RET4*hZa2d1Hk{XgI{QyQo&EAp zXTSK<*)RNb_Om~o{fD2<{(bxGpzUHWETaxX({{rw-R@dqd4Dkl=LPRCN(S?Uhh&hT z$#%RVTWaLyE3&1EE>Ii@W-A_C=HGP!PuG-YE5%z(ya9j{!gYS3MXI#RMH5$MhX`UQ zB8Xuq0XInRi<=>Wz>u8aNk3g6UsX{iq*z4cOC9fv?E2T%KTH@ej`0pFbcd~zUzk#G z3X@#tG>ck!Dzoo&1Aiuc8m|0QkKO;wG`nlm&=w?u8{RGG{xi0MlF zgQ#lZ9BiRb0!VU8EQlD>>dzZeLTbIajbMcv!Ta+b)aNoMs%9!_- z%G@r8F4elj+|1Y>%}YxucZC3yO$tDHw*u3|*hJ*zq6NH_(Dq(=T)8{=cE3W`;I>7K zYy$(})iGXFxLS$ccgB8a0;R>;eX(-%J99MCpEaRB4}^~gW4E)KeMsI`+La$xTuCh{ z))fL$YOw~RV}C%z(sov0FFgSdF+Y(-H5tb&?HTQg zfOc6C1e^KNmbk8xWfD-SW~C2!+TvJBLj4R5ND@##s|c0u83feVDr6l5k|py*Ux9-| zCpR3OOn>w-8%e*LBe^5Vl_Xb@TunHJZe-QD$-Zamsghnx@_s`?DI<;PENP6r#rd3E z!vJq0?H3gNQp58{=$by^hC5i+2=-#p>+2;sh-qKOLkts*Sqg#qvS7RtWAj_QK2Y4A zZlnGyf#R>4x0t;Q21H_Yo3GiQLgs500MqvDykNdAH!`6M&QQtJA%9k2q+l4A$fotp z827Q_?~yo<%ZtoysL5DTFrauq)zHD4&2vqDUiat*vu#-=+ZI=5%Isvy%oU8;d!#B6Z|>mv(KHHICfeMV9~$X-O7_Sm@IjfE)W!JcA}p+wWm zLt1GJq+i(A_7wrc%-Hp5!XS88SV?kna5kL^lei#4P?|dyBVjG4-CE_6?&lIp#u?MV zy4^HxySL`jJd!^NE#o9Iq2+GsL96UfUl} z3kK(}3Ek*vsCyo7mV;~snZ8$HDDb$}kl1AJxIa3i1bXr zhp-15>ECvmMaMxN~pKGy&xK7eO&6-^}RjcVQ zJ}jZXvd6I~gT3AL5IK$gLw=(V62M|#Zz%S4J?rXvJonPJr)?gntfpVRVT)F%Upb5_ z(k^!_9ncVWXo5@pw*kOV>zvkZ!uJ@j}#LGOY90*g)?>{iI?UD2wtjX7mm5jW9Ikj2lYg1D&&fSS!r zDcb?#f#g{jMEBFI-qLO1wrrF?8%S>f|Fx+&%;C^!Q(q`4HG_R|fgJ-oU_r*9paI@- zGL;IxOJNgRr3EF{yLu8Uc%6tYR=5IP#J@8w6Ska9N^=5V&D8R*I6_@;JR^*e_Bm{= zh2hrhA#Q6mYF?bvFln2nU$v}Y_9@gvjad4f7d2z0JKa^zLi*7tux9HAzB4Gy_*OaW z_xP;ib7$E|TY_sOp$WeJ-)(DRXU#AQvp)LO4VJVHPIYI$uVgk-(3LnEsAW6qAi9V7 z8n;yD|AzX}BmFT+KTN5LU7#W*ZqJlb9}!==?VHRYYp%mMaQnPsZ4qSB_R5^Ek$)RD z@5l(u3Kl0zvxQwHW1O0r{GL%qnLp=cg2VqJjIs{^IlkjBxPT21vmi)J4=pt!B)Ei2H!IEJ|l{%1-({GNJDVdb1|+1rPeyqS|@%*m^RT` ztJ|TqM!`;@wN4sVIq2Et%J@?J^h5yO@fDYfow$Apy=qy4%T!xfyAB%hO0PH&_#?hp z7rkX1?>pjn*RtkDXi7WGns*}km53E(a}1m;`i0x98>=Ih`|5}R;U}yDBI_qD!(_xt zrkZGR9p{YRhOSTf+GDv)iEABR&X)qKf8b1`BsR{}UYy#vybKPkZFtw=!jk2p9%G-X z57|J$w9a%hL14H>L-tR`h|kb3*eMl*TgkwnFw#H%_@D-y?V)zA7=z(*modHo9zit2 z`-m}PLpY7DvdFSkcx4+9lyWnKK{=<8v6y@%s1BvvTrm#AE2q=w9*{<*1Dbf zod0V5A}gI9{-IOWy2AC9QOo!M(TfAyy2{zT%+?zxc1Fkeu4vmz5S0rBu_s79)W5!7xfO1IB&=rd#`C4n`dL=M{S4it7JUDGL9Pf@Q6efEmLS`s@ zL)u5XrEut~k2hG$>;gBHC=w`~Dcvck1%Cro^jQ|_1+WpqZ?*#I90=Xt~YYeRiq!Uw>HElpX7-H8o1YCg>8X_R zl+b-j=>DNid^*8Erku7R3Oplim2h}giYnzlljaB5&q-}1kf^Mrv;yP{ZIo21f{?om z7cM`tH)A4!g|X$3cN0T zmXLd+ES{ZoSz!65R9V7;U0oI5ECE)xQ_msxbnwGSHg8aI%+W0p7OgZ_t)0?lU#-UE zAJ3jv4BOz08R!bb%Lw3atRi);D^1p^7-sWIF?0QCa@q5Jas?iG#@bi9W`e4zl&n^J zYx&e@BP<1DsMD{M^>nPkzRqdc*UpQ)51Y{dH^6yS^y(|zX1Wbwe`d(Scxn$UdE6O# zilsne$-@pl)S*2OfN`-?CfuSMA;9pF4Km;@0WQsAqYXB_>L1>A>i<|bR=@C{Q?2nK z>|F;pp32x~;y|O$ranqAmJ+YY^#($`C1s=Meqi*N2vgWmt#=Rw@WBz(O+%OQu?cKq z2jN-rlQXRGk+VSTrFmvJ!X>Ice4joFt{^Pn?(_@)4WVj5JYX@l$+^ku2tFLjMM$Kw zcx&hvZW_WEehtB*+eTH&uB0&r010UlWHAeFYJ;1gs6 z9D!B_#^;=J7aK)+xPvIZUDzj@D|>^S*KL@rG~OU; z<1$u(wIu|0qnX{@E|#cfQpa{AQ8ZH+>EDjjj-iD~nrcWaMF((g*RNj&63TU*M5Ini z+!t{A+>aUhOSdoJ_tOmhRp>0jBljyIunWS!k{pS?AxA1Ao5R7wq=Et?VG%UP)=R%y z&w>%|P7EcuMFgGB+2SZT)D82`7U z!bq|A8lBz69Ft(oznb}9Z=5TPx2mv@qt?~OZTi5%Rct(*_Oc`zDo%U2g9kQt(|S3u zm5X!(3sG}*5@#ZN@Xy$HwnTNBEm6bW8lgr3WR(05jb!vck>D1`#WL**vC(wu%JBNp6X;+%$ z24fIm;7f=R?MJ0JP$-0;L?Ikhvg`^-AP*g2&iu={JmDFjS-=pzl8dHmh^BMh0VyyQ z!oU(p2&aa7D2IJtIc&hnnG#N~t=$yzw`QAS9&oGm(`=NdaZIO<;B1ttM%Ps>L@}AB z7jcSZ;3vx{K^Z6k%xSuC*D%%WloZM^fY{U+Txi+FbrIaw5Hr;2D!AQ>b+mozhHnz0 zx`2I8SLb?8PaWjzz?g`oIsOqjL=nYY0R`rq`kj;Ga1TwwGS_&rnR&`yPdTOO*H0Ch ze#-E}6x292TEya*nT*1g8K_d6#;QL+;A0dVNP%MMN?IqKN-^Jp=fohNK0jpc`I>CQ z@bwG00UM!@VB>kCS~%N;A%jL7&dT8=R!;DHA0F0hf=FZ>w!T{#j^ohXr1tOWL5*{b z>Tn{1=vJJ?cxY=NJB2nYaax_gHFm0$KgeJ>x!r{6LEM9MD8Vjl97?gR6kse{ zB5^jLPQOd%cTun-)He;;Xf8`f_!h#2BV5^AgzQ1HB;!%{IK7q4#Z%dnEt`L8@>kVF zE9_Ryr6X36Bb_;uv3H^kLZxzA6eA&{lJ1hs6EK=g7DqoefkqhHO@XY^um_Y%+*YP( zOSuHt19iN?O>qsS!&E+;R0z(Sll^uEYPxXkMg3sthc~AZ{PTP0(I_qS{4{Gfgw^brx zPZw8HKL*rmLn1fZKQnY|Cal7l6g=zQ=y@hzV)CqOi z4fmTlJm9dkewEptBje?~$irsLc8AV^&)7i)2y3IBARR$$PXVIM<5B4TcMi%W0u;;= z^WctBTf3^boC~4lvE(sA$GKx6>2V=`%~6FG^wV=GE@mZ1vI6PgsH=J{5iEronwMIf zS88aHb(}}4iZhEk8JQ{B$!KuA^h&C0jECyNYgky76J?MdD1IV=R|3gT5V@lK%VxS=PF*y)@L*ImXZHANLlt{WFexDH;p2&Vq zH(tmr=TH>^@MwtuPtqC16i9q7R->2TlP1xt+}$-* zwN#iRHKG0=mI<SLzuSQ*;7nMuZ()tRl6p5Hv&NKr!?g)xWD`{cKod zZB>+UcC=}6vp>Vv&eYN&3!X8sJyaIKRH8(whaFLqm+y%~AI9!Xct;H4qCi*&u z=)GL$8ah4<;M*<)E(XpZgwjLL`)w*%;@5IqRWUy`ON;_RsH}$ zrcSIb$Vi{Xz=mBesbs5FCT5#hid~;2GT6j|zer}ChyiKb&A!}gX3{cWN zY#j4!IDk>6wJ7sCFp5hZ&MNIc3%E{}H9LRiD!0=4Z%VKjs|DCz)B>bw3Yd=$`YNh^ zjo$s4&x^1zD%4_70pM-}EG|zIMm%RXtkZyESq9X7O#JJa_}^CA)vz$F(A3KbgDRN? zTO}u^m=(f~$eaIoQKCrJ>7^JaFX=#69*F2eXOzfUC;84>!e+&^oJ}d-qB%MT68Tb@ z*T%y$Q!KT10h>Hn$D3S>mqUJ5aJGc)s!uyLWo}PvYW1cXYBU;unQ(X?)!sH{t-$I^ zSHZz58m2Vg`7;9Zd>GDCbQ8F^L4(#Wx|ZRe_%JMvJ_9SnRw>zj?j#3|F7{SX$xcV;{nmntOZLs%o~T z)pXR7{?&K`Yc{-@aoMh^~IRWx4eQ6dh_6%cAjI(n~10 zua(jZzLvujJT;53En5yjPuUnh>TSl23Vj=)WJ5bewhg7uBpWD&;I-|jc|wCmn7uK< zlDiQsF?Q6ve&!fVlN7@jd~A5k;z=1;NMyvG=Qfr$TSabSfl)=!V!6#iq*fe>WFR+H zVa16Q2FvOh*d!fjhksQgwz(u7VRi^fBRs}IZ0o^3>G(X>JJaMu$t-A}>rKEyWw5mZ zyE9Ekn08j}Yy=A*ld`u-@r3E1#ycC+L7Awy1n=$?9%1QWjY+xS89r3$Qq9)=?p=Ix z!CQRNyri=;8!4mNy~|MEu6fIIoA<%LXfUTruLsq=y9uRx_qg43FN~?}g^4MnlOfe? z94Z-6i0u`!2je~t(1-2UE-dvQ>M-BKQnc}Id!h$p&S>^EKR`YFihm$p@YA;;hvEQK zWbPs1$5wr8ZLXcqQs~e;s@9H@f^jy2GF4MBCo)=r#z_?7G2>rGNL6eF*D4-%$W^V~ z#>NV~u~)FM;_qRjjB}Dz7x1r0cXfItF z-NuGNy?qIW{Q-?SweyI?(1%M4V)UwO&jwNze*1KnF=wg~3K4aRBb5H- z34l^*Q91*PlM{=kVX-0|7AqJQjSLx`*rH)!dM?w85W?;vQ;4j_z0k^D&30K0&r~C_ zG7dl~;w~4`?06elFcxh|_K!I`Fs0e`aJ;u47Asl61V(xjTap@Ej26YM1eCryMvMBO zp+2M7^k~2<)!?gKpIab>$W0hCG!b88nv_0>@k)sC8i?^~h_M-0%8x>#i=}V!WtQ|^ zn3jC!CtJeJT0XaO@Y|zsd`+@6z*>PwoK_QNcMMxnMKEi;owY)YyRC~`{3^@rWx2J8 zU%6eYHz`1yzAQq-lUl*mTk|u;tX$w>mVtksdMP^;Svk6s9H8Tgc%v(aj*u7KF(tG~ zoGU0_%9R_NM3=keHM%@1o81EH-E*D;?(Q(n)M1+fAFO4^k70fWo zs?I`Q#$Tv?Qi}j96!vafZp}_G(3@Q)+`Gcu0E6rUX zV#7wD2XYVXkqb8h4{|iB;$|g<5HCXZL54aMb_hXT6r?}2oJ_823e$*~ZXQ(MH6NC- z0)*IU>e`}YdzzZO=+LD8Ls;;06W_))VIlTm9HL-m5_U3uuPc17apo*^vN2U1y4UQq zA3HmNAqkx@D4CdMki!83nAOPd4*;C(@qW%Vn z8gwu^l* zzBWDqz~v_Zd>w!}7mL;dcut^7LqnX@Ax`Q;(eUboC1g4ez(QFy7zLbH$+4K5+5cuD z#%6UR!i5oQfk7&S#P*+CKo3NdiWIlVmkJZtNSsc^h+E{7;ao?+Q(ty{nB8gz!(siI6ljp&p-sKD4_ zV)8|LCj7gzXxs4rAV3}jh%D&1YI^sA7nf12$(W8I6M22Gx)mVvY3ZP zgek1`!jzfah14+x+V_m*dq{CLDqW+}GQ0x^aY2a;p0@{ae&xKE_T+tQazES@>Q5h@iqqDrodZf{WZKzhbY$7 zCWMLim;*6FnsZ=3W!5JeXd;B*qp9*F0tx#9WcnsWY=&HtMSEZu095!xWvW6hl9vf7 zHAUiObisP}1VPC;r&$*E%MJm#1PZ^vUF4RzOLU4R2Y(p@hB=1<;X)dyoa&f4DE-h% zGKsE=C()LKVN3DBV6^Ggc$;&@O7t}Ive&9=3-UrH`b9d$e=%)k3o^5MywX2vr?<6} z#imVId+js69Hz<``nG)Mi(%NU6>d?w!WCHI^7wcqS=)Eh?|1NZ4r<4innr~ft80To z4102-5CerRtcE%{h5fohWt&*Y!>GyH${f-t{aAZVE0pWp5Ws_L+Jd!Km&}84#RuQv zU$85{uej!X=cht8pi);EvcWg(0sVi**5eN99=Q(H9hO0pJUfi_fK6~+ht(jmb@-(@ z*-Ox{2RUZZo5(~Z(4MJETI8XbRsa$x#b2w2UT3m;+w%R*7?+7k5hey)S|zrqZAKlD zxSl5fu0xUM!PD3~guHW*e0PNtB9+AdiQULkC}mS`KSSr07VahiXVeT&qI%LhN^3lc zDrm!pncY`6(OP=eBR`7~$*W=X%BJ8t^2yrgT}`gj0NHv70oZA~@G74T{a0WXdbW_} zNs0i+AlEuG*_WU^tTWvvWFq!GOiOqi7H6iGh@c8)K(~s=9#Gxv`Mef(5kj!WP(@-P z+Zcr2WRo$7DjP&ob{nO!QYSJpYpu05-}zJZj*ywsp>-1Eks!XYlM3{ty$ivK?LVS- zOqiS7JLrjo;=(L85tKBri8dg9g5LT41>vWSll;x_Y`pz%nwef2Q*?}?8|n4vk|7sr zsA6~Z2lbR5ZDi}_x^cCeT}6>}%p`Ln?>4o_*Nd=e9fO*;}6o8bT2yE+=vNC)y{d74cPOii$&ahmqVG}^lPWVv8T zPu|-=_wOJG`y>Ds{I@O955Z%eJh<1iFdsfyM3FzZuje< zJno&GV$oUp4QBn4gr!!SN`51hZWw-6khHPW_YRzC0rRuAa|T<*nbONTaMu*9Qe!kt zz^KBeO83p4VeQ7a+x>dD4SsZ2d3yTK$c3`o-E&y1D4FkOhT0`HvfiY-J2n3Du7JyH zR^|+GXD7|Wvc|1>lh(kfLSW@~x?)j$3OkB#3G4*~bw6o7=mPCIfLqlVgj-d0(zlHt zWX)-Dd%)se<~z({gKjU#9HiUq?aHvzj-ejXgk#2WiknAqSYH?L?)6IS*X(-FHiuh6 zjOU*;({!2y0l~Tr6}nz3vu@kxv@2yFa!aqETMc#lp2{@T9yfgwp-BSzD-Yf2-w9$MR+{O>DUBn5V=_o40xJ$}xg|p% z{)|NDkJ!p#`$XbV09l&xL`0Dm%2e(PHNywlolL++U_&Z=emZ)T-g0R^WDwz7OFH79^nsZWPxdsWXc;`gQ`qk#=7svB<%`?@tN zv5witJjg4Dg$?m}fy^AXTZM6GT&bp8)SxeMsg*E<7 zhUDWzH;XKhUkX>shM;_Ye}{6x+{YNa$meGx2j2uNdJpmno|30;bVCAk2?9&el@M7b zkXWpJD}8EY6Fw8T%6kwF@LcZmtZ^&dDtEbCL!KUqHz<|#;kjGTkM_E?hfB|ePJ3xQ zIH~nlxE|3h3R9TCNV|-t)xuTQ(a;7YzQ|85e5|^Sw+ogEVUUW5P8u<>Tsz2?|behWU?(@J()kvsbN`BzxJx<#NAkv?#~pzN3_rRi~}oF+!_5R7<3(7@pW9 zN=2q~osxgz&JA|8C8C=ih z8V;s;E~k@eZY_TR&Tuj3{FHpR_t5D*!ijAn*Cb#VS}bycgDsm~h}Cj2`!8&hJ&dP+ z8T=OE0oId=wo4(EL)d1K+m3B#4Uz34kB>v=?B~1xxD_eojnoc=Xu^dIZogu%S z`jiSE4O7bkgH11_l@h`RkRex-3McO=c#+@AVms%{O`Nd&0JHrsa})zTOme!{>X;*o zK5jy&I8Yl>szuJ?3hiV{scK(Q&u7i!~0Z*yP>k@XlDyv^a22`ml!6MKQ} z>yxR&3T7W&Ny6s}x14#rs86=x@@LSSC0P|(ZZoCr%wgRq2isXV*kkY8x!OCN?u@x9uu z@!O}?x~o-{D>Mq&n&;E&V-*&HZO*l9l|_PnW3LaNySR!$-G&^8Wek3>6L};4#?(9f z9{g*m2o1+F=f7gUMp_VkCD=}qH*8|2D+eru?+aN&EJTY3Z{BOU(=I)Fz;@}S=%nZy zDYd;M!bj<4#yfZE*3w2h4FOx6>tvYrYri66pJkwY&~oNqvoMgzaelK@rl84p?##CTF}J`{ zl{>c4_#7P{a*#n#X8qEX_ADJvZOSd%s7+MqE`~`1gZfGgVy0SpJ47eZ?RGwF5tZ(-3TWF@B*L5r!>6zHb-QwW z6iBy6OZgvQfeQ3K95qv(<14l7s*<4BT)IaHO49Y-!q{Kn7S&3-C}oy%;+O zszD}WSk<{WQzc*=w=O8JJvhJ6_|-7JDrO%7qvIkdnh8UaIi(WNP4Q-w1}f7iLq0y; zY?<_yi8eba#JRW#^cC0t^xsYjWg{#XC>ou!*AjF^p1TGWX74RAv&`S7X$KUP#3m?t z{FdCcFi1@{+gz(!GAWedFH-8^lY=bm>Eye1tc&;AzinVeg8a zyLLHAE|+2dGWATH*>+B7yC6^*!Bl5Osl~*!66cpNUVF@Dy1l$a)L=V0G`joaJ-85h zr@kC?qaV-n{I?+^W)Ffi!!fwMF`&mj98QObmr`oj8da6$-v7Dt<0|(aoWJfT{UVgv zWv#m#KSovVq;{ra@%_*Gq9VmUcv|`gTFq(#I+PM_PxWJNxu@I>i$nYGNoHmyQ=6HU zA8tOW>K1K%0BLL0BBoeHv+^RMx7A`pp|yp*Htrg>eFDHA3n+jaGJv)blDhh>Ttz-=%E+iJ0v2|FcQ z0%RH}AjV3!MGAjVjH0Yu6ri0Vj*Ll(3U2Xb0yz zGRW0e&0AMkA zy0>boq!PBfL)bIErybedSf?%euBN>g(T|&ndcV7FUOomQkD=mFMXSmS8J0l<4;VACrz%B17i`BJ213XRNsI0hSvvv8)dc9aUMeBI`| zRf4Efe1PbUkVuS3Sb1xBo}@5)uEk_a>3&vGOp7QXtD7Bm+~H-(CP)NGs2@n%1f&j~ zYots~Wa^kxH-$G7K0mIThEqB32m2a!<1yI9_d*b;LgA|_?TT^gkVjv248kaz5(jElwXFZfXJ@t3V-2Uj9 z!b_Sham{9tlO5<~v=qCbqSyuf#4ac&c0n_-3u=j7&`IoqLSh%R5xby@*abbrE+`>( zK?AXi-j7}Md+f3vxAw(VpVen^B6WbJNiZMH!u%PCa=C*#sEv2G+O(#DDF;C@oXf#> zri*avVHaV*sx@sabHy0|MKDS!j}kg)1x|qnayMK&t1H%Rjs$49e4O zo!`DA7X&jAcN2FrcMEqbcN=#*cL#STcNh0O?)lt#?gBR@%`D(Pk9#5aBJRc9=W{RN zUdnv|_l4XSabL{6jJwDk1i|lxL2!)nk5T?H%0EW=$0+|8W@A@lX1`E2+TexWP`Ae2waN$K4FGFSCz5J3D-77C$ zwfeHl*YtGvuDzmA=qvbZ-IZ4ruD+&F=swqV?YSa;>hSB7bA9*QHe7$hjW_)SQ2OI4 zpZn2`{J81n&2Qgw%hqkA+WwAP-?@Y5Z9A3acKz5znRncoczCJ~cQyEbTxWOpE+xJD z$4!5(boZPqq9Od=``&ebgSWx??gqDaiUxkvRey^s$$Pq9Z`Eyn7|?osik!O7ejTev zL2+l2TPw4!<2P*ln|l3?G|Nk=D{(}p5?8}Bpyc{gPQP`7Q-A3X0^F^tPQ6vZT&L^D zyu<&#T0H&L`m@B_6`W{{i+pHnAML20sxtt2GW`7YCVpMtjnW3bT0j2P`YZL*r@!;; zKh^7R{`uFQy>I$+uh7QtJT3pBV^1&5JvdYE55Dsft$Xv^Uwi4oFnEQ^`t;xa+Otb% zNS_P7_418>z2xQkv6nA?PcWnS<8PAw)vq1Dcu%DC-^%UsCUuu#hFZ4vJ1WEVv6bIF{h4pouix$JugR}QDF*D+>&4UcNO;1fI9<58 zrv6D0U;jL=jrFS(@{-eU{dN1*&y7#o;t?&@p*B5U!k|A3%Zv>Fm$KI+x_tNAp2z5bdHeTg9NqMWapt3SzS&#zSDc%Q2AH%UjO`W4Rai+adi zuOHw2_r+K8_2S>B{p8c9YFAv{0|B^!ijV6<*V~LHbcGrcRnSp=}@6?;r86l|L1nJW+phYWLrr5#<5I!Tm{1HC@_e)e+_zuj6s@ z^Z~Z(5xr|`$4nZ`BzEc)ED*7;QrCL@4{1MTWTnJOQ%rk5;NIdQUD2oY0|EDxLCq+t zU-9|+O$JHsITt;V71Gc2%xw4(h%^gqa4DPwX^t4yOp>Jf-B)S8M-y>pG{C194BcsS zlk9@+uXBv+BwDr8dJ^{zsfh^_`goZbeFqg{rAu6m@n_aP z?$5L2o0I<>t;^`4=rIALlWAK7BSm}yaLzNU-|@tGeCR9nZ$frLG z4}6Q?e&R{3ku=Qa-{DTG>2Sc; z2k`X){5%E+t?EJWbKHSr{pQYbBhCa(+}L!27H$-pK|6N`_iFCTxOa00ecTOKna%w( z=!1eVyyD6*Y<^o9=C_Ao?@`=iQ5f;*=!r{W*v{<8RD)8FF$-^EYn{x8pO6n`mqvN)al=i+;F zTXJE0p*f89lnRBQr|*jWJz?{7PdNC^o-o?@eAqkve0cuy7s7d0z7XDc^o1~b@`bSd zmv}zMvs8D8SlP8LSQp+IOoe^naBw872k!~*%)K{!Dtuq~bK(2LyK+y59|%7f-ktkU zcu(%bT z+_T|i?)h*!_d@tv;ctge<$fpp-S9Kv2XdbcKNtS{@I$%(5dM7b55te<{wVy9;h%(m z8va@M7uU*rBhf3Jl<2!9y(Jw|{ik^x7d-SW(+qwU9@zc?NiC&LRM*keW z5$##_ZHdO6*uH6J=f=M z$laLxM0itfUr#x=DR*;jI^3N5VD9a?59fXm{ZaH!(f6Y_qsOAt(c^GPPee0KuQXj+ z`a*Ph>0q#?^pC-nr5&ZGO7AP}=^5zR+jB5C*z?52Lp@LA4)xrg8|^uqtM=^7jrH7- ztM!ccO!hq7^JGtdZmMTv?)yEj^*r&y(Tjing%7{*3olf1FTSuZ_i|xX@0SX_y$?r^ zM4ya)Klo_$<>=$l|A?NC{#W!|^w-fRqVGn(9(^zRmFS1jE79M~ngSLS=E%E+!tzTB zD`J7S(9^rN`-;Bq?sbTHS6+4XHP>FZ{%zf72u(@AhQ#r+eO_Nc*zL!N_fuS(&XMQl zLSb_OVYjfgAaU2^-9ll<8S<{;?$FQA=4uq3e>M>3K)Gwz-H62Z-Zv*W_P(od|GOV} zaQB{py-9pF^3U$FN%=?oDA#G^EEc4b+(+cEzj6Ex_&{8`&wky&%6sCo8Q|mQbQ?c6 zEBVG*K6y^fqTX52r_A?$*oS(sahrLT1jp;aU&g7z;D*NZg%jbjU{C!eA9fa2f)>4^ z(xSkLCkl2n<~Fx4QBD+X%UDXlfWPp|aVlB2V!w~%H}J>9q&M12y4@oQp)n9zA*Hdj6ivyBJA4E5Gh03y?NrKP)oWJhO zxIYug5j>Mbg~5qu<(}$KLXu}ewGgXF`?$n#aBU2_zUy5xC;c;nRTuwNBG)-Cl|6;Z zR zvRp9&C|C6HV_n7B{eF&i%?dv8baZ-FKoCyP_WM@CCnn=at$rh`PbNQRVTns^sOOjA z4NrakL<8Jq4K&$Ezi|?eM?q1cJf`G6$0gLA^-9v88R=uveq{*fm)~1s&Ri}|tQ$gR;)*a8( zec%a1%7oS|!m`W(JMGiXZTWNzBLyEjW}d+@JvVfY|7m(!08h*bPrMo@f`5)Od@^c0 zm1LOvoasMBm#6aI>2&3>giC@sZ4ACTw|TPw&dl;PpASFG>MXSL9*g65Pa zL77~pjh~9+eYzAuGX$F!OjH@3z3$2x1~2KMt7!0X90!VG6v#Do4ryJ}qpp6NNzZIe zs?_?b)%Hw$`|Qc@nf*U7GCFxE7#JBlFc9n=85lhn4319JMuMT?{lgQ%{@TFUfncQi zNTn8x)rLnWg0acb!HHmeY+$ewOpc8ae#9q@>(-6rk1Qe|DnDJ)2ACQ^&!9WVcMu(C^u=S@DLvv!_c#Qw$Lz zwTu5T3>kVFMAsKUc6x0ssp3d zvBP^^b4wmk^@6s=t*cj@zoflm{)NSrmpt{}Coa8wjl{#7Z`uA%8T!0@GdNV)w}1Gd zgCn)^iKCA`_IO&aZ6hO<{R1Oz@6m~h8?PLmtc*fwo2!QghDTkcR;$*6J1XOoBNJ}4 zI^k-Sv07!kGCDD^ccc>RAY{NzOdJh%R%(Za$H#}Oqi(1&I$RkFZi7?@CKRB2cn%Fu zOc1`K>c%Gr54e59BNbPzxuM}&WpJWeJDSFf)vAM)@$q1bQdEu%k57yTcMptAR@_9j z>P7}?`zvmrat=&T_|Y-d!`T3FBb9v<&g$^+Fs-<465l>|sB%c~X-0LjHdt|cC&!Nl z+eRm7-Q*Z`a^pwGCn|^B;K0a8mWq(EYHgr4Ji3?8tWmWPG_Jnra7G6b7y)q|B$ zH#Q8$wq0>s+__1A#BBht13p`@X{0)MknXg$)u0U8koBJrk4Yfw#BJkHMCQG#a%93I z!jS&~Le;L!-% zSp)sm$#F*?S2S2=jjX`|#_9+`TeL_dV{Q1**hodV^u2Wm5*T2}Fc4_D`p^%WZ4A_j z;eEq^tua6zCiQ0D*Q&&T8=ruZ4yhqF&@xQLsYIKi%y^LbIiD;BnU8YE3A;)2iTsC_@&rW0o(?zHi`= z=8)NGld*ZWNSg>^GzCe**>&4dnRujHJD3jt#NRml&o;k|`h1Pk$-rLUE;@Ses!krO zRrhP6YMA&MLm3$?1U7UJ42%vjD(-+@87$c(cKc+NwV-ljuu>VKax{f`b9nL)y*xQO z6x?Io9tR~WhS49z`{{_m2 zT+4Hu=M6mXp&dV?H|S#%;Eo`>(^gjB)Nafv^xp%J%YL)$i)k9;e zFLV1~2P#87%sLa3wNX+tzDFOe)T(av%Aw0Tf-M%$`o)4Y0lTwm<@hT1$nb=B^<>#r z4z2A7?oq_Vfr@+NK-HKYaarP~dYFg}fVh;&y-czyYWd2wmya*k;5Yhqtfpht@nKs5 zRx-U;-E64j?5!O6nZWE_=>dUSGR + +class Foo { + private: + float bar; + + public: + int baz; + + Foo() : bar(0), baz(4711) {}; + + int getBar() const; +}; + +int Foo::getBar() const { + return this->bar; +}; + +const Foo *magic1 = reinterpret_cast(0xDEAD111F); +const Foo *magic2 = reinterpret_cast(0xDEAD888F); + +static void runTest() { + + const Foo *a = new Foo(); + const Foo *b = a; + + if (a->getBar() == 0) { + if (a->baz == 4712) + b = magic1; + else + b = magic2; + } + + printf("%s\n", + (b == magic1 ? "magic1" : (b == magic2 ? "magic2" : "neither"))); +}; + +extern "C" { +int main(int argc, char **argv) { runTest(); } +} diff --git a/emtests/test_reinterpreted_ptrs.out b/emtests/test_reinterpreted_ptrs.out new file mode 100644 index 000000000..360335022 --- /dev/null +++ b/emtests/test_reinterpreted_ptrs.out @@ -0,0 +1 @@ +magic2 \ No newline at end of file diff --git a/emtests/test_relocatable_void_function.c b/emtests/test_relocatable_void_function.c new file mode 100644 index 000000000..7ffe3043e --- /dev/null +++ b/emtests/test_relocatable_void_function.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +void hi_world() { + puts("hi world"); +} + +int main() { + hi_world(); + return 0; +} diff --git a/emtests/test_relocatable_void_function.out b/emtests/test_relocatable_void_function.out new file mode 100644 index 000000000..3d2efad00 --- /dev/null +++ b/emtests/test_relocatable_void_function.out @@ -0,0 +1 @@ +hi world \ No newline at end of file diff --git a/emtests/test_relocatable_void_function.wasm b/emtests/test_relocatable_void_function.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ee40508251146b5c9b3d6466896a2817bd92f941 GIT binary patch literal 23690 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 literal 0 HcmV?d00001 diff --git a/emtests/test_rounding.c b/emtests/test_rounding.c new file mode 100644 index 000000000..8c52d47a3 --- /dev/null +++ b/emtests/test_rounding.c @@ -0,0 +1,81 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +const char *mode(int mode) +{ + switch(mode) + { + case FE_DOWNWARD: return "FE_DOWNWARD"; + case FE_TONEAREST: return "FE_TONEAREST"; + case FE_TOWARDZERO: return "FE_TOWARDZERO"; + case FE_UPWARD: return "FE_UPWARD"; + default: return "Unknown"; + } +} + +#define NUMELEMS(x) (sizeof((x)) / sizeof((x)[0])) + +int main() { + printf("Initial rounding mode is %s\n", mode(fegetround())); + + // The functions round() and roundf() are specced to always round *away* from zero (negative numbers down, positive numbers up) + // fesetround() mode dictates what to do when rounding halfway numbers (-0.5, 0.5, 1.5, 2.5, ...) in functions rint(), rintf(), lrint(), lrintf(), llrint() and llrintf(): + // FE_DOWNWARD always rounds down to the smaller integer. + // FE_TONEAREST performs banker's rounding (always round towards the even number) + // FE_TOWARDZERO rounds negative numbers up, and positive numbers down + // FE_UPWARD always rounds up to the next higher integer. +// const int modes[] = { FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD }; // TODO: Currently only supported mode is FE_TONEAREST. + const int modes[] = { FE_TONEAREST }; + const double interestingDoubles[] = { -4.5, -3.6, -3.5, -3.4, -2.6, -2.5, -2.4, -1.5, -0.5, 0, 0.5, 1.4, 1.5, 1.6, 2.5, 3.5, 4.5 }; + const float interestingFloats[] = { -4.5f, -3.6f, -3.5f, -3.4f, -2.6f, -2.5f, -2.4f, -1.5f, -0.5f, 0, 0.5f, 1.4f, 1.5f, 1.6f, 2.5f, 3.5f, 4.5f }; + + for(int i = 0; i < NUMELEMS(modes); ++i) + { + int ret = fesetround(modes[i]); + int modeAfter = fegetround(); + printf("fesetround(%s) returned %d, fegetround() afterwards returns %s. Test results:\n", mode(modes[i]), ret, mode(modeAfter)); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: round(%.1f)=%.1f\n", mode(modeAfter), interestingDoubles[j], round(interestingDoubles[j])); + + for(int j = 0; j < NUMELEMS(interestingFloats); ++j) + printf("%s: roundf(%.1f)=%.1f\n", mode(modeAfter), interestingFloats[j], roundf(interestingFloats[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: rint(%.1f)=%.1f\n", mode(modeAfter), interestingDoubles[j], rint(interestingDoubles[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: rintf(%.1f)=%.1f\n", mode(modeAfter), interestingFloats[j], rint(interestingFloats[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: lrint(%.1f)=%ld\n", mode(modeAfter), interestingDoubles[j], lrint(interestingDoubles[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: lrintf(%.1f)=%ld\n", mode(modeAfter), interestingFloats[j], lrintf(interestingFloats[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: llrint(%.1f)=%lld\n", mode(modeAfter), interestingDoubles[j], llrint(interestingDoubles[j])); + + for(int j = 0; j < NUMELEMS(interestingDoubles); ++j) + printf("%s: llrintf(%.1f)=%lld\n", mode(modeAfter), interestingFloats[j], llrintf(interestingFloats[j])); + } + + double param, fractpart, intpart; + + param = 3.14159265; + fractpart = modf (param , &intpart); + printf ("%f = %f + %f\n", param, intpart, fractpart); + + param = -3.14159265; + fractpart = modf (param , &intpart); + printf ("%f = %f + %f\n", param, intpart, fractpart); + return 0; +} diff --git a/emtests/test_rounding.out b/emtests/test_rounding.out new file mode 100644 index 000000000..700e7721c --- /dev/null +++ b/emtests/test_rounding.out @@ -0,0 +1,140 @@ +Initial rounding mode is FE_TONEAREST +fesetround(FE_TONEAREST) returned 0, fegetround() afterwards returns FE_TONEAREST. Test results: +FE_TONEAREST: round(-4.5)=-5.0 +FE_TONEAREST: round(-3.6)=-4.0 +FE_TONEAREST: round(-3.5)=-4.0 +FE_TONEAREST: round(-3.4)=-3.0 +FE_TONEAREST: round(-2.6)=-3.0 +FE_TONEAREST: round(-2.5)=-3.0 +FE_TONEAREST: round(-2.4)=-2.0 +FE_TONEAREST: round(-1.5)=-2.0 +FE_TONEAREST: round(-0.5)=-1.0 +FE_TONEAREST: round(0.0)=0.0 +FE_TONEAREST: round(0.5)=1.0 +FE_TONEAREST: round(1.4)=1.0 +FE_TONEAREST: round(1.5)=2.0 +FE_TONEAREST: round(1.6)=2.0 +FE_TONEAREST: round(2.5)=3.0 +FE_TONEAREST: round(3.5)=4.0 +FE_TONEAREST: round(4.5)=5.0 +FE_TONEAREST: roundf(-4.5)=-5.0 +FE_TONEAREST: roundf(-3.6)=-4.0 +FE_TONEAREST: roundf(-3.5)=-4.0 +FE_TONEAREST: roundf(-3.4)=-3.0 +FE_TONEAREST: roundf(-2.6)=-3.0 +FE_TONEAREST: roundf(-2.5)=-3.0 +FE_TONEAREST: roundf(-2.4)=-2.0 +FE_TONEAREST: roundf(-1.5)=-2.0 +FE_TONEAREST: roundf(-0.5)=-1.0 +FE_TONEAREST: roundf(0.0)=0.0 +FE_TONEAREST: roundf(0.5)=1.0 +FE_TONEAREST: roundf(1.4)=1.0 +FE_TONEAREST: roundf(1.5)=2.0 +FE_TONEAREST: roundf(1.6)=2.0 +FE_TONEAREST: roundf(2.5)=3.0 +FE_TONEAREST: roundf(3.5)=4.0 +FE_TONEAREST: roundf(4.5)=5.0 +FE_TONEAREST: rint(-4.5)=-4.0 +FE_TONEAREST: rint(-3.6)=-4.0 +FE_TONEAREST: rint(-3.5)=-4.0 +FE_TONEAREST: rint(-3.4)=-3.0 +FE_TONEAREST: rint(-2.6)=-3.0 +FE_TONEAREST: rint(-2.5)=-2.0 +FE_TONEAREST: rint(-2.4)=-2.0 +FE_TONEAREST: rint(-1.5)=-2.0 +FE_TONEAREST: rint(-0.5)=-0.0 +FE_TONEAREST: rint(0.0)=0.0 +FE_TONEAREST: rint(0.5)=0.0 +FE_TONEAREST: rint(1.4)=1.0 +FE_TONEAREST: rint(1.5)=2.0 +FE_TONEAREST: rint(1.6)=2.0 +FE_TONEAREST: rint(2.5)=2.0 +FE_TONEAREST: rint(3.5)=4.0 +FE_TONEAREST: rint(4.5)=4.0 +FE_TONEAREST: rintf(-4.5)=-4.0 +FE_TONEAREST: rintf(-3.6)=-4.0 +FE_TONEAREST: rintf(-3.5)=-4.0 +FE_TONEAREST: rintf(-3.4)=-3.0 +FE_TONEAREST: rintf(-2.6)=-3.0 +FE_TONEAREST: rintf(-2.5)=-2.0 +FE_TONEAREST: rintf(-2.4)=-2.0 +FE_TONEAREST: rintf(-1.5)=-2.0 +FE_TONEAREST: rintf(-0.5)=-0.0 +FE_TONEAREST: rintf(0.0)=0.0 +FE_TONEAREST: rintf(0.5)=0.0 +FE_TONEAREST: rintf(1.4)=1.0 +FE_TONEAREST: rintf(1.5)=2.0 +FE_TONEAREST: rintf(1.6)=2.0 +FE_TONEAREST: rintf(2.5)=2.0 +FE_TONEAREST: rintf(3.5)=4.0 +FE_TONEAREST: rintf(4.5)=4.0 +FE_TONEAREST: lrint(-4.5)=-4 +FE_TONEAREST: lrint(-3.6)=-4 +FE_TONEAREST: lrint(-3.5)=-4 +FE_TONEAREST: lrint(-3.4)=-3 +FE_TONEAREST: lrint(-2.6)=-3 +FE_TONEAREST: lrint(-2.5)=-2 +FE_TONEAREST: lrint(-2.4)=-2 +FE_TONEAREST: lrint(-1.5)=-2 +FE_TONEAREST: lrint(-0.5)=0 +FE_TONEAREST: lrint(0.0)=0 +FE_TONEAREST: lrint(0.5)=0 +FE_TONEAREST: lrint(1.4)=1 +FE_TONEAREST: lrint(1.5)=2 +FE_TONEAREST: lrint(1.6)=2 +FE_TONEAREST: lrint(2.5)=2 +FE_TONEAREST: lrint(3.5)=4 +FE_TONEAREST: lrint(4.5)=4 +FE_TONEAREST: lrintf(-4.5)=-4 +FE_TONEAREST: lrintf(-3.6)=-4 +FE_TONEAREST: lrintf(-3.5)=-4 +FE_TONEAREST: lrintf(-3.4)=-3 +FE_TONEAREST: lrintf(-2.6)=-3 +FE_TONEAREST: lrintf(-2.5)=-2 +FE_TONEAREST: lrintf(-2.4)=-2 +FE_TONEAREST: lrintf(-1.5)=-2 +FE_TONEAREST: lrintf(-0.5)=0 +FE_TONEAREST: lrintf(0.0)=0 +FE_TONEAREST: lrintf(0.5)=0 +FE_TONEAREST: lrintf(1.4)=1 +FE_TONEAREST: lrintf(1.5)=2 +FE_TONEAREST: lrintf(1.6)=2 +FE_TONEAREST: lrintf(2.5)=2 +FE_TONEAREST: lrintf(3.5)=4 +FE_TONEAREST: lrintf(4.5)=4 +FE_TONEAREST: llrint(-4.5)=-4 +FE_TONEAREST: llrint(-3.6)=-4 +FE_TONEAREST: llrint(-3.5)=-4 +FE_TONEAREST: llrint(-3.4)=-3 +FE_TONEAREST: llrint(-2.6)=-3 +FE_TONEAREST: llrint(-2.5)=-2 +FE_TONEAREST: llrint(-2.4)=-2 +FE_TONEAREST: llrint(-1.5)=-2 +FE_TONEAREST: llrint(-0.5)=0 +FE_TONEAREST: llrint(0.0)=0 +FE_TONEAREST: llrint(0.5)=0 +FE_TONEAREST: llrint(1.4)=1 +FE_TONEAREST: llrint(1.5)=2 +FE_TONEAREST: llrint(1.6)=2 +FE_TONEAREST: llrint(2.5)=2 +FE_TONEAREST: llrint(3.5)=4 +FE_TONEAREST: llrint(4.5)=4 +FE_TONEAREST: llrintf(-4.5)=-4 +FE_TONEAREST: llrintf(-3.6)=-4 +FE_TONEAREST: llrintf(-3.5)=-4 +FE_TONEAREST: llrintf(-3.4)=-3 +FE_TONEAREST: llrintf(-2.6)=-3 +FE_TONEAREST: llrintf(-2.5)=-2 +FE_TONEAREST: llrintf(-2.4)=-2 +FE_TONEAREST: llrintf(-1.5)=-2 +FE_TONEAREST: llrintf(-0.5)=0 +FE_TONEAREST: llrintf(0.0)=0 +FE_TONEAREST: llrintf(0.5)=0 +FE_TONEAREST: llrintf(1.4)=1 +FE_TONEAREST: llrintf(1.5)=2 +FE_TONEAREST: llrintf(1.6)=2 +FE_TONEAREST: llrintf(2.5)=2 +FE_TONEAREST: llrintf(3.5)=4 +FE_TONEAREST: llrintf(4.5)=4 +3.141593 = 3.000000 + 0.141593 +-3.141593 = -3.000000 + -0.141593 diff --git a/emtests/test_rounding.wasm b/emtests/test_rounding.wasm new file mode 100644 index 0000000000000000000000000000000000000000..cea8b61dfb04c2c2fa71e8254e2171d998f6730b GIT binary patch literal 48972 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Ì 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�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 Up+|TlqeEUXQ}jmDqu!PO1?FwyC;$Ke literal 0 HcmV?d00001 diff --git a/emtests/test_runtime_stacksave.c b/emtests/test_runtime_stacksave.c new file mode 100644 index 000000000..f366ce520 --- /dev/null +++ b/emtests/test_runtime_stacksave.c @@ -0,0 +1,18 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + int x = EM_ASM_INT({ return stackSave(); }); + int y = EM_ASM_INT({ return stackSave(); }); + EM_ASM_INT({ out($0); }, &x); + EM_ASM_INT({ out($0); }, &y); + assert(x == y); + EM_ASM({ out('success'); }); +} diff --git a/emtests/test_runtime_stacksave.wasm b/emtests/test_runtime_stacksave.wasm new file mode 100644 index 0000000000000000000000000000000000000000..58cda40c410929be1a9525ff18238cb6a57ec5a3 GIT binary patch literal 22190 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 +#include + +volatile char data[16]; + +__attribute__((noinline)) void *get_aligned(int align) +{ + char *ptr = (char*)(((int)(data + 7)) & ~7); // Make 8-byte aligned + ptr += align; // Now 'align' aligned + return (void*)ptr; +} + +int main() +{ + emscripten_align4_double *d4 = (emscripten_align4_double*)get_aligned(4); + *d4 = 17.0; + printf("addr: %d, value: %f\n", ((int)d4) % 8, *d4); + + emscripten_align2_double *d2 = (emscripten_align2_double*)get_aligned(2); + *d2 = 18.0; + printf("addr: %d, value: %f\n", ((int)d2) % 8, *d2); + + emscripten_align1_double *d1 = (emscripten_align1_double*)get_aligned(1); + *d1 = 19.0; + printf("addr: %d, value: %f\n", ((int)d1) % 8, *d1); + + emscripten_align2_float *f2 = (emscripten_align2_float*)get_aligned(2); + *f2 = 20.0; + printf("addr: %d, value: %f\n", ((int)f2) % 4, *f2); + + emscripten_align1_float *f1 = (emscripten_align1_float*)get_aligned(1); + *f1 = 21.0; + printf("addr: %d, value: %f\n", ((int)f1) % 4, *f1); + + emscripten_align2_int *i2 = (emscripten_align2_int*)get_aligned(2); + *i2 = 22; + printf("addr: %d, value: %d\n", ((int)i2) % 4, *i2); + + emscripten_align1_int *i1 = (emscripten_align1_int*)get_aligned(1); + *i1 = 23; + printf("addr: %d, value: %d\n", ((int)i1) % 4, *i1); + + emscripten_align1_short *s1 = (emscripten_align1_short*)get_aligned(1); + *s1 = 24; + printf("addr: %d, value: %d\n", ((int)s1) % 4, (int)*s1); + + return 0; +} + diff --git a/emtests/test_set_align.out b/emtests/test_set_align.out new file mode 100644 index 000000000..55e377b02 --- /dev/null +++ b/emtests/test_set_align.out @@ -0,0 +1,8 @@ +addr: 4, value: 17.000000 +addr: 2, value: 18.000000 +addr: 1, value: 19.000000 +addr: 2, value: 20.000000 +addr: 1, value: 21.000000 +addr: 2, value: 22 +addr: 1, value: 23 +addr: 1, value: 24 diff --git a/emtests/test_set_align.wasm b/emtests/test_set_align.wasm new file mode 100644 index 0000000000000000000000000000000000000000..49110c51006873f9169f6a722d6fa8f033af419f GIT binary patch literal 46150 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 z zHcZVz1UJ%%K2gWXB+lY`+{*bcismhJ1HRynTfL&JQZi zCG>dS;et2)I`2&o6We_|gXE?4qix6g60spT?JhGLh@^MfCb&YBp@=!L!Pn2e7`8Qs zY)so5n-`0;6G2WUua|IR+fGE;y>YVCAO1c6;PAiL{L*px2B(v7!SxG9FLW0d5eGMy z77WjO%v4i%Q&vF*wW +#include + +// TODO: Once signals are supported, improve this test to verify preservation of signals state + +int main() { + sigjmp_buf env; + volatile int flag = 0; + if (sigsetjmp(env, 1) == 0) { + // Cannot print anything here, because siglongjmp will + // print a warning in between but only with ASSERTIONS enabled + flag = 1; + siglongjmp(env, 1); + } else { + if (flag) { + puts("Success"); + } + } + return 0; +} + diff --git a/emtests/test_siglongjmp.out b/emtests/test_siglongjmp.out new file mode 100644 index 000000000..35821117c --- /dev/null +++ b/emtests/test_siglongjmp.out @@ -0,0 +1 @@ +Success diff --git a/emtests/test_siglongjmp.wasm b/emtests/test_siglongjmp.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e02454c04d523ee2439aab26ffe9d341bf2439e0 GIT binary patch literal 29937 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 + +#include + +static inline float32x4 __attribute__((always_inline)) + _mm_set_ps(const float __Z, const float __Y, const float __X, + const float __W) { + return (float32x4) {__W, __X, __Y, __Z}; +} + +static __inline__ float32x4 __attribute__((__always_inline__)) + _mm_setzero_ps(void) { + return (float32x4) {0.0, 0.0, 0.0, 0.0}; +} + +int main(int argc, char **argv) { + float data[8]; + for (int i = 0; i < 32; i++) + data[i] = (1 + i + argc) * (2 + i + argc * argc); // confuse optimizer + { + float32x4 *a = (float32x4 *)&data[0]; + float32x4 *b = (float32x4 *)&data[4]; + float32x4 c, d; + c = *a; + d = *b; + printf("1floats! %d, %d, %d, %d %d, %d, %d, %d\n", (int)c[0], (int)c[1], + (int)c[2], (int)c[3], (int)d[0], (int)d[1], (int)d[2], (int)d[3]); + c = c + d; + printf("2floats! %d, %d, %d, %d %d, %d, %d, %d\n", (int)c[0], (int)c[1], + (int)c[2], (int)c[3], (int)d[0], (int)d[1], (int)d[2], (int)d[3]); + d = c * d; + printf("3floats! %d, %d, %d, %d %d, %d, %d, %d\n", (int)c[0], (int)c[1], + (int)c[2], (int)c[3], (int)d[0], (int)d[1], (int)d[2], (int)d[3]); + c = _mm_setzero_ps(); + printf("zeros %d, %d, %d, %d\n", (int)c[0], (int)c[1], (int)c[2], + (int)c[3]); + } + { + int32x4 *a = (int32x4 *)&data[0]; + int32x4 *b = (int32x4 *)&data[4]; + int32x4 c, d, e, f; + c = *a; + d = *b; + printf("4ints! %d, %d, %d, %d %d, %d, %d, %d\n", c[0], c[1], c[2], c[3], + d[0], d[1], d[2], d[3]); + e = c + d; + f = c - d; + printf("5ints! %d, %d, %d, %d %d, %d, %d, %d\n", e[0], e[1], e[2], e[3], + f[0], f[1], f[2], f[3]); + e = c & d; + f = c | d; + e = ~c & d; + f = c ^ d; + printf("5intops! %d, %d, %d, %d %d, %d, %d, %d\n", e[0], e[1], e[2], e[3], + f[0], f[1], f[2], f[3]); + } + { + float32x4 c, d, e, f; + c = _mm_set_ps(9.0, 4.0, 0, -9.0); + d = _mm_set_ps(10.0, 14.0, -12, -2.0); + printf("6floats! %d, %d, %d, %d %d, %d, %d, %d\n", (int)c[0], (int)c[1], + (int)c[2], (int)c[3], (int)d[0], (int)d[1], (int)d[2], (int)d[3]); + } + + return 0; +} diff --git a/emtests/test_simd.out b/emtests/test_simd.out new file mode 100644 index 000000000..08ca37386 --- /dev/null +++ b/emtests/test_simd.out @@ -0,0 +1,8 @@ +1floats! 6, 12, 20, 30 42, 56, 72, 90 +2floats! 48, 68, 92, 120 42, 56, 72, 90 +3floats! 48, 68, 92, 120 2016, 3808, 6624, 10800 +zeros 0, 0, 0, 0 +4ints! 1086324736, 1094713344, 1101004800, 1106247680 1109917696, 1113587712, 1116733440, 1119092736 +5ints! -2098724864, -2086666240, -2077229056, -2069626880 -23592960, -18874368, -15728640, -12845056 +5intops! 36175872, 35651584, 34603008, 33816576 48758784, 52428800, 53477376, 54788096 +6floats! -9, 0, 4, 9 -2, -12, 14, 10 diff --git a/emtests/test_simd10.c b/emtests/test_simd10.c new file mode 100644 index 000000000..9f1b3a0c9 --- /dev/null +++ b/emtests/test_simd10.c @@ -0,0 +1,26 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +std::string tostr(__m128 m) +{ + unsigned int u[4]; + _mm_store_ps((float*)u, m); + char str[256]; + sprintf(str, "[%X,%X,%X,%X]", u[3], u[2], u[1], u[0]); + return str; +} + +int main() +{ + unsigned int u[4] = { 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU }; + __m128 m1 = _mm_load_ps((float*)&u); + printf("%s\n", tostr(m1).c_str()); +} diff --git a/emtests/test_simd10.out b/emtests/test_simd10.out new file mode 100644 index 000000000..2869fe0da --- /dev/null +++ b/emtests/test_simd10.out @@ -0,0 +1 @@ +[FFFFFFFF,FFFFFFFF,FFFFFFFF,FFFFFFFF] \ No newline at end of file diff --git a/emtests/test_simd11.c b/emtests/test_simd11.c new file mode 100644 index 000000000..4b9683fc4 --- /dev/null +++ b/emtests/test_simd11.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +bool always_true() { return time(NULL) != 0; } // This function always returns true, but the compiler should not know this. + +int main() +{ + int a = _mm_movemask_ps(_mm_set_epi32(-1, -1, -1, -1)); + printf("%d\n", a); +} diff --git a/emtests/test_simd11.out b/emtests/test_simd11.out new file mode 100644 index 000000000..3f10ffe7a --- /dev/null +++ b/emtests/test_simd11.out @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/emtests/test_simd12.c b/emtests/test_simd12.c new file mode 100644 index 000000000..b397209b0 --- /dev/null +++ b/emtests/test_simd12.c @@ -0,0 +1,107 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +volatile __m128 zero; +volatile __m128 one; +volatile __m128 nan_; + +int main() { + zero = _mm_set1_ps(0); + one = _mm_set1_ps(1); + nan_ = _mm_set1_ps(__builtin_nan("")); + + assert(_mm_comieq_ss(zero, zero) == 1); + assert(_mm_comieq_ss(zero, one) == 0); + assert(_mm_comieq_ss(one, zero) == 0); + assert(_mm_comieq_ss(zero, nan_) == 1); + assert(_mm_comieq_ss(nan_, zero) == 1); + assert(_mm_comieq_ss(nan_, nan_) == 1); + + assert(_mm_comige_ss(zero, zero) == 1); + assert(_mm_comige_ss(zero, one) == 0); + assert(_mm_comige_ss(one, zero) == 1); + assert(_mm_comige_ss(zero, nan_) == 0); + assert(_mm_comige_ss(nan_, zero) == 0); + assert(_mm_comige_ss(nan_, nan_) == 0); + + assert(_mm_comigt_ss(zero, zero) == 0); + assert(_mm_comigt_ss(zero, one) == 0); + assert(_mm_comigt_ss(one, zero) == 1); + assert(_mm_comigt_ss(zero, nan_) == 0); + assert(_mm_comigt_ss(nan_, zero) == 0); + assert(_mm_comigt_ss(nan_, nan_) == 0); + + assert(_mm_comile_ss(zero, zero) == 1); + assert(_mm_comile_ss(zero, one) == 1); + assert(_mm_comile_ss(one, zero) == 0); + assert(_mm_comile_ss(zero, nan_) == 1); + assert(_mm_comile_ss(nan_, zero) == 1); + assert(_mm_comile_ss(nan_, nan_) == 1); + + assert(_mm_comilt_ss(zero, zero) == 0); + assert(_mm_comilt_ss(zero, one) == 1); + assert(_mm_comilt_ss(one, zero) == 0); + assert(_mm_comilt_ss(zero, nan_) == 1); + assert(_mm_comilt_ss(nan_, zero) == 1); + assert(_mm_comilt_ss(nan_, nan_) == 1); + + assert(_mm_comineq_ss(zero, zero) == 0); + assert(_mm_comineq_ss(zero, one) == 1); + assert(_mm_comineq_ss(one, zero) == 1); + assert(_mm_comineq_ss(zero, nan_) == 0); + assert(_mm_comineq_ss(nan_, zero) == 0); + assert(_mm_comineq_ss(nan_, nan_) == 0); + + assert(_mm_ucomieq_ss(zero, zero) == 1); + assert(_mm_ucomieq_ss(zero, one) == 0); + assert(_mm_ucomieq_ss(one, zero) == 0); + assert(_mm_ucomieq_ss(zero, nan_) == 1); + assert(_mm_ucomieq_ss(nan_, zero) == 1); + assert(_mm_ucomieq_ss(nan_, nan_) == 1); + + assert(_mm_ucomige_ss(zero, zero) == 1); + assert(_mm_ucomige_ss(zero, one) == 0); + assert(_mm_ucomige_ss(one, zero) == 1); + assert(_mm_ucomige_ss(zero, nan_) == 0); + assert(_mm_ucomige_ss(nan_, zero) == 0); + assert(_mm_ucomige_ss(nan_, nan_) == 0); + + assert(_mm_ucomigt_ss(zero, zero) == 0); + assert(_mm_ucomigt_ss(zero, one) == 0); + assert(_mm_ucomigt_ss(one, zero) == 1); + assert(_mm_ucomigt_ss(zero, nan_) == 0); + assert(_mm_ucomigt_ss(nan_, zero) == 0); + assert(_mm_ucomigt_ss(nan_, nan_) == 0); + + assert(_mm_ucomile_ss(zero, zero) == 1); + assert(_mm_ucomile_ss(zero, one) == 1); + assert(_mm_ucomile_ss(one, zero) == 0); + assert(_mm_ucomile_ss(zero, nan_) == 1); + assert(_mm_ucomile_ss(nan_, zero) == 1); + assert(_mm_ucomile_ss(nan_, nan_) == 1); + + assert(_mm_ucomilt_ss(zero, zero) == 0); + assert(_mm_ucomilt_ss(zero, one) == 1); + assert(_mm_ucomilt_ss(one, zero) == 0); + assert(_mm_ucomilt_ss(zero, nan_) == 1); + assert(_mm_ucomilt_ss(nan_, zero) == 1); + assert(_mm_ucomilt_ss(nan_, nan_) == 1); + + assert(_mm_ucomineq_ss(zero, zero) == 0); + assert(_mm_ucomineq_ss(zero, one) == 1); + assert(_mm_ucomineq_ss(one, zero) == 1); + assert(_mm_ucomineq_ss(zero, nan_) == 0); + assert(_mm_ucomineq_ss(nan_, zero) == 0); + assert(_mm_ucomineq_ss(nan_, nan_) == 0); + + printf("DONE!\n"); +} diff --git a/emtests/test_simd12.out b/emtests/test_simd12.out new file mode 100644 index 000000000..84ce3dcb4 --- /dev/null +++ b/emtests/test_simd12.out @@ -0,0 +1 @@ +DONE! \ No newline at end of file diff --git a/emtests/test_simd13.c b/emtests/test_simd13.c new file mode 100644 index 000000000..f2bb1bf46 --- /dev/null +++ b/emtests/test_simd13.c @@ -0,0 +1,26 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +class float4 +{ +public: + float4(){} + float4(__m128 in) { m128 = in; } + operator __m128() { return m128; } + operator const __m128() const { return m128; } + __m128 m128; +}; + +int main() +{ + float4 v = _mm_set_ps(3, 2, 1, 0); + float4 w = _mm_shuffle_ps(v, v, _MM_SHUFFLE(3,3,3,3)); + printf("%d\n", (int)_mm_cvtss_f32(w)); +} diff --git a/emtests/test_simd13.out b/emtests/test_simd13.out new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/emtests/test_simd13.out @@ -0,0 +1 @@ +3 diff --git a/emtests/test_simd14.c b/emtests/test_simd14.c new file mode 100644 index 000000000..5b0af307f --- /dev/null +++ b/emtests/test_simd14.c @@ -0,0 +1,23 @@ +/* + * Copyright 2015 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +void __attribute__((noinline)) foo(__m128 vec, __m128 &outLength) +{ + outLength = vec; +} + +int main() +{ + puts("before"); + __m128 x; + foo(_mm_set1_ps(1.f), x); + printf("%.2f", x[0]); +} + diff --git a/emtests/test_simd14.out b/emtests/test_simd14.out new file mode 100644 index 000000000..3ae59d3c8 --- /dev/null +++ b/emtests/test_simd14.out @@ -0,0 +1,2 @@ +before +1.00 diff --git a/emtests/test_simd15.c b/emtests/test_simd15.c new file mode 100644 index 000000000..e8ec2b99f --- /dev/null +++ b/emtests/test_simd15.c @@ -0,0 +1,50 @@ +/* + * Copyright 2015 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +__m128i set_64x2(int64_t a, int64_t b) { union { int64_t x[2]; __m128i m; } u; u.x[0] = a; u.x[1] = b; return u.m; } +int64_t get_64x2_lo(__m128i m) { union { int64_t x[2]; __m128i m; } u; u.m = m; return u.x[0]; } +int64_t get_64x2_hi(__m128i m) { union { int64_t x[2]; __m128i m; } u; u.m = m; return u.x[1]; } + +void test1() +{ + __m128i a = set_64x2(1, 2); + __m128i b = set_64x2(3, 4); + __m128i c = _mm_add_epi64(a, b); + printf("%lld %lld\n", get_64x2_lo(c), get_64x2_hi(c)); +} + +typedef int m128i __attribute__((__vector_size__(16))); + +m128i __attribute__((noinline)) add_epi16(m128i a, m128i b) +{ + union { + signed short x[8]; + m128i m; + } src, src2, dst; + src.m = a; + src2.m = b; + dst.x[0] = src.x[0] + src2.x[0]; + return dst.m; +} + +void test2() +{ + m128i a = (m128i){ 1, 2, 3, 4 }; + m128i b = add_epi16(a, a); + printf("%d\n", b[0]); +} + + +int main() { + test1(); + test2(); +} + diff --git a/emtests/test_simd15.out b/emtests/test_simd15.out new file mode 100644 index 000000000..e92780248 --- /dev/null +++ b/emtests/test_simd15.out @@ -0,0 +1,2 @@ +4 6 +2 diff --git a/emtests/test_simd16.c b/emtests/test_simd16.c new file mode 100644 index 000000000..6ffde21de --- /dev/null +++ b/emtests/test_simd16.c @@ -0,0 +1,34 @@ +/* + * Copyright 2015 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +class vec +{ +public: + __m128 v; + + void mul(float s) + { + __m128 vs = _mm_load_ss(&s); + // __m128 vs = _mm_set_ss(s); // _mm_set_ss(s) instead of _mm_load_ss(&s) avoids the problem somehow..? + v = _mm_mul_ps(v, vs); + } +}; + +int main() +{ + vec v; + v.v = _mm_set_ps(8,8,8,8); + v.mul(0.5f); + + float f[4]; + _mm_storeu_ps(f, v.v); + printf("%f %f %f %f\n", f[0], f[1], f[2], f[3]); +} + diff --git a/emtests/test_simd16.out b/emtests/test_simd16.out new file mode 100644 index 000000000..6917aef1c --- /dev/null +++ b/emtests/test_simd16.out @@ -0,0 +1 @@ +4.000000 0.000000 0.000000 0.000000 diff --git a/emtests/test_simd2.c b/emtests/test_simd2.c new file mode 100644 index 000000000..d8690573f --- /dev/null +++ b/emtests/test_simd2.c @@ -0,0 +1,40 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef float __m128 __attribute__((__vector_size__(16))); + +static inline __m128 __attribute__((always_inline)) + _mm_set_ps(const float __Z, const float __Y, const float __X, + const float __W) { + return (__m128) {__W, __X, __Y, __Z}; +} + +static inline void __attribute__((always_inline)) + _mm_store_ps(float *__P, __m128 __A) { + *(__m128 *)__P = __A; +} + +static inline __m128 __attribute__((always_inline)) + _mm_add_ps(__m128 __A, __m128 __B) { + return __A + __B; +} + +int main(int argc, char **argv) { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(9.0, 4.0, 0, -9.0); + __m128 v2 = _mm_set_ps(7.0, 3.0, 2.5, 1.0); + __m128 v3 = _mm_add_ps(v1, v2); + _mm_store_ps(ar, v3); + + for (int i = 0; i < 4; i++) { + printf("%f\n", ar[i]); + } + + return 0; +} diff --git a/emtests/test_simd2.out b/emtests/test_simd2.out new file mode 100644 index 000000000..4b01ec862 --- /dev/null +++ b/emtests/test_simd2.out @@ -0,0 +1,4 @@ +-8.000000 +2.500000 +7.000000 +16.000000 diff --git a/emtests/test_simd3.c b/emtests/test_simd3.c new file mode 100644 index 000000000..8cf65ff77 --- /dev/null +++ b/emtests/test_simd3.c @@ -0,0 +1,496 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include +#include + +using namespace std; + +void testSetPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v = _mm_set_ps(1.0, 2.0, 3.0, 4.0); + _mm_store_ps(ar, v); + assert(ar[0] == 4.0); + assert(ar[1] == 3.0); + assert(ar[2] == 2.0); + assert(ar[3] == 1.0); +} + +void testSet1Ps() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v = _mm_set1_ps(5.5); + _mm_store_ps(ar, v); + assert(ar[0] == 5.5); + assert(ar[1] == 5.5); + assert(ar[2] == 5.5); + assert(ar[3] == 5.5); +} + +void testSetZeroPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v = _mm_setzero_ps(); + _mm_store_ps(ar, v); + assert(ar[0] == 0); + assert(ar[1] == 0); + assert(ar[2] == 0); + assert(ar[3] == 0); +} + +void testSetEpi32() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v = _mm_set_epi32(5, 7, 126, 381); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 381); + assert(ar[1] == 126); + assert(ar[2] == 7); + assert(ar[3] == 5); + v = _mm_set_epi32(0x55555555, 0xaaaaaaaa, 0xffffffff, 0x12345678); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0x12345678); + assert(ar[1] == 0xffffffff); + assert(ar[2] == 0xaaaaaaaa); + assert(ar[3] == 0x55555555); +} + +void testSet1Epi32() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v = _mm_set1_epi32(-5); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == -5); + assert(ar[1] == -5); + assert(ar[2] == -5); + assert(ar[3] == -5); +} + +void testSetZeroSi128() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v = _mm_setzero_si128(); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0); + assert(ar[1] == 0); + assert(ar[2] == 0); + assert(ar[3] == 0); +} + +void testBitCasts() { + int32_t __attribute__((__aligned__(16))) ar1[4]; + float __attribute__((__aligned__(16))) ar2[4]; + __m128i v1 = _mm_set_epi32(0x3f800000, 0x40000000, 0x40400000, 0x40800000); + __m128 v2 = _mm_castsi128_ps(v1); + _mm_store_ps(ar2, v2); + assert(ar2[0] == 4.0); + assert(ar2[1] == 3.0); + assert(ar2[2] == 2.0); + assert(ar2[3] == 1.0); + v2 = _mm_set_ps(5.0, 6.0, 7.0, 8.0); + v1 = _mm_castps_si128(v2); + _mm_store_si128((__m128i *)ar1, v1); + assert(ar1[0] == 0x41000000); + assert(ar1[1] == 0x40e00000); + assert(ar1[2] == 0x40c00000); + assert(ar1[3] == 0x40a00000); + float w = 0; + float z = -278.3; + float y = 5.2; + float x = -987654321; + v1 = _mm_castps_si128(_mm_set_ps(w, z, y, x)); + _mm_store_ps(ar2, _mm_castsi128_ps(v1)); + assert(ar2[0] == x); + assert(ar2[1] == y); + assert(ar2[2] == z); + assert(ar2[3] == w); + /* + std::bitset bits1x(*reinterpret_cast(&(ar2[0]))); + std::bitset bits1y(*reinterpret_cast(&(ar2[1]))); + std::bitset bits1z(*reinterpret_cast(&(ar2[2]))); + std::bitset bits1w(*reinterpret_cast(&(ar2[3]))); + std::bitset bits2x(*reinterpret_cast(&x)); + std::bitset bits2y(*reinterpret_cast(&y)); + std::bitset bits2z(*reinterpret_cast(&z)); + std::bitset bits2w(*reinterpret_cast(&w)); + assert(bits1x == bits2x); + assert(bits1y == bits2y); + assert(bits1z == bits2z); + assert(bits1w == bits2w); + */ + v2 = _mm_castsi128_ps(_mm_set_epi32(0xffffffff, 0, 0x5555cccc, 0xaaaaaaaa)); + _mm_store_si128((__m128i *)ar1, _mm_castps_si128(v2)); + assert(ar1[0] == 0xaaaaaaaa); + assert(ar1[1] == 0x5555cccc); + assert(ar1[2] == 0); + assert(ar1[3] == 0xffffffff); +} + +void testConversions() { + int32_t __attribute__((__aligned__(16))) ar1[4]; + float __attribute__((__aligned__(16))) ar2[4]; + __m128i v1 = _mm_set_epi32(0, -3, -517, 256); + __m128 v2 = _mm_cvtepi32_ps(v1); + _mm_store_ps(ar2, v2); + assert(ar2[0] == 256.0); + assert(ar2[1] == -517.0); + assert(ar2[2] == -3.0); + assert(ar2[3] == 0); + v2 = _mm_set_ps(5.0, 6.0, 7.45, -8.0); + v1 = _mm_cvtps_epi32(v2); + _mm_store_si128((__m128i *)ar1, v1); + assert(ar1[0] == -8); + assert(ar1[1] == 7); + assert(ar1[2] == 6); + assert(ar1[3] == 5); +} + +void testMoveMaskPs() { + __m128 v = + _mm_castsi128_ps(_mm_set_epi32(0xffffffff, 0xffffffff, 0, 0xffffffff)); + int mask = _mm_movemask_ps(v); + assert(mask == 13); +} + +void testAddPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(4.0, 3.0, 2.0, 1.0); + __m128 v2 = _mm_set_ps(10.0, 20.0, 30.0, 40.0); + __m128 v = _mm_add_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 41.0); + assert(ar[1] == 32.0); + assert(ar[2] == 23.0); + assert(ar[3] == 14.0); +} + +void testSubPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(4.0, 3.0, 2.0, 1.0); + __m128 v2 = _mm_set_ps(10.0, 20.0, 30.0, 40.0); + __m128 v = _mm_sub_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == -39.0); + assert(ar[1] == -28.0); + assert(ar[2] == -17.0); + assert(ar[3] == -6.0); +} + +void testMulPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(4.0, 3.0, 2.0, 1.0); + __m128 v2 = _mm_set_ps(10.0, 20.0, 30.0, 40.0); + __m128 v = _mm_mul_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 40.0); + assert(ar[1] == 60.0); + assert(ar[2] == 60.0); + assert(ar[3] == 40.0); +} + +void testDivPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(4.0, 9.0, 8.0, 1.0); + __m128 v2 = _mm_set_ps(2.0, 3.0, 1.0, 0.5); + __m128 v = _mm_div_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 2.0); + assert(ar[1] == 8.0); + assert(ar[2] == 3.0); + assert(ar[3] == 2.0); +} + +void testMinPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(-20.0, 10.0, 30.0, 0.5); + __m128 v2 = _mm_set_ps(2.0, 1.0, 50.0, 0.0); + __m128 v = _mm_min_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 0.0); + assert(ar[1] == 30.0); + assert(ar[2] == 1.0); + assert(ar[3] == -20.0); +} + +void testMaxPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(-20.0, 10.0, 30.0, 0.5); + __m128 v2 = _mm_set_ps(2.5, 5.0, 55.0, 1.0); + __m128 v = _mm_max_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 1.0); + assert(ar[1] == 55.0); + assert(ar[2] == 10.0); + assert(ar[3] == 2.5); +} + +void testSqrtPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(16.0, 9.0, 4.0, 1.0); + __m128 v = _mm_sqrt_ps(v1); + _mm_store_ps(ar, v); + assert(ar[0] == 1.0); + assert(ar[1] == 2.0); + assert(ar[2] == 3.0); + assert(ar[3] == 4.0); +} + +void testCmpLtPs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(1.0, 2.0, 0.1, 0.001); + __m128 v2 = _mm_set_ps(2.0, 2.0, 0.001, 0.1); + __m128 v = _mm_cmplt_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0xffffffff); + assert(ar[1] == 0); + assert(ar[2] == 0); + assert(ar[3] == 0xffffffff); + assert(_mm_movemask_ps(v) == 9); +} + +void testCmpLePs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(1.0, 2.0, 0.1, 0.001); + __m128 v2 = _mm_set_ps(2.0, 2.0, 0.001, 0.1); + __m128 v = _mm_cmple_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0xffffffff); + assert(ar[1] == 0); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0xffffffff); + assert(_mm_movemask_ps(v) == 13); +} + +void testCmpEqPs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(1.0, 2.0, 0.1, 0.001); + __m128 v2 = _mm_set_ps(2.0, 2.0, 0.001, 0.1); + __m128 v = _mm_cmpeq_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0); + assert(ar[1] == 0); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0); + assert(_mm_movemask_ps(v) == 4); +} + +void testCmpGePs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(1.0, 2.0, 0.1, 0.001); + __m128 v2 = _mm_set_ps(2.0, 2.0, 0.001, 0.1); + __m128 v = _mm_cmpge_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0); + assert(ar[1] == 0xffffffff); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0); + assert(_mm_movemask_ps(v) == 6); +} + +void testCmpGtPs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(1.0, 2.0, 0.1, 0.001); + __m128 v2 = _mm_set_ps(2.0, 2.0, 0.001, 0.1); + __m128 v = _mm_cmpgt_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0); + assert(ar[1] == 0xffffffff); + assert(ar[2] == 0); + assert(ar[3] == 0); + assert(_mm_movemask_ps(v) == 2); +} + +void testAndPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(425, -501, -32, 68); + __m128 v2 = + _mm_castsi128_ps(_mm_set_epi32(0xffffffff, 0xffffffff, 0, 0xffffffff)); + __m128 v = _mm_and_ps(v1, v2); + _mm_store_ps(ar, v); + assert(ar[0] == 68); + assert(ar[1] == 0); + assert(ar[2] == -501); + assert(ar[3] == 425); + int32_t __attribute__((__aligned__(16))) ar2[4]; + v1 = _mm_castsi128_ps( + _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, -1431655766, 0xaaaaaaaa)); + v2 = _mm_castsi128_ps( + _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555)); + v = _mm_and_ps(v1, v2); + _mm_store_si128((__m128i *)ar2, _mm_castps_si128(v)); + assert(ar2[0] == 0); + assert(ar2[1] == 0); + assert(ar2[2] == 0); + assert(ar2[3] == 0); +} + +void testAndNotPs() { + float __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = _mm_set_ps(425, -501, -32, 68); + __m128 v2 = + _mm_castsi128_ps(_mm_set_epi32(0xffffffff, 0xffffffff, 0, 0xffffffff)); + __m128 v = _mm_andnot_ps(v2, v1); + _mm_store_ps(ar, v); + assert(ar[0] == 0); + assert(ar[1] == -32); + assert(ar[2] == 0); + assert(ar[3] == 0); + int32_t __attribute__((__aligned__(16))) ar2[4]; + v1 = _mm_castsi128_ps( + _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, -1431655766, 0xaaaaaaaa)); + v2 = _mm_castsi128_ps( + _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555)); + v = _mm_andnot_ps(v1, v2); + _mm_store_si128((__m128i *)ar2, _mm_castps_si128(v)); + assert(ar2[0] == 0x55555555); + assert(ar2[1] == 0x55555555); + assert(ar2[2] == 0x55555555); + assert(ar2[3] == 0x55555555); +} + +void testOrPs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = + _mm_castsi128_ps(_mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, 0xffffffff, 0)); + __m128 v2 = _mm_castsi128_ps( + _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555)); + __m128 v = _mm_or_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0x55555555); + assert(ar[1] == 0xffffffff); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0xffffffff); +} + +void testXorPs() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128 v1 = + _mm_castsi128_ps(_mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, 0xffffffff, 0)); + __m128 v2 = _mm_castsi128_ps( + _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555)); + __m128 v = _mm_xor_ps(v1, v2); + _mm_store_si128((__m128i *)ar, _mm_castps_si128(v)); + assert(ar[0] == 0x55555555); + assert(ar[1] == 0xaaaaaaaa); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0xffffffff); +} + +void testAndSi128() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, -1431655766, 0xaaaaaaaa); + __m128i v2 = _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555); + __m128i v = _mm_and_si128(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0); + assert(ar[1] == 0); + assert(ar[2] == 0); + assert(ar[3] == 0); +} + +void testAndNotSi128() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, -1431655766, 0xaaaaaaaa); + __m128i v2 = _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555); + __m128i v = _mm_andnot_si128(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0x55555555); + assert(ar[1] == 0x55555555); + assert(ar[2] == 0x55555555); + assert(ar[3] == 0x55555555); +} + +void testOrSi128() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, 0xffffffff, 0); + __m128i v2 = _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555); + __m128i v = _mm_or_si128(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0x55555555); + assert(ar[1] == 0xffffffff); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0xffffffff); +} + +void testXorSi128() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(0xaaaaaaaa, 0xaaaaaaaa, 0xffffffff, 0); + __m128i v2 = _mm_set_epi32(0x55555555, 0x55555555, 0x55555555, 0x55555555); + __m128i v = _mm_xor_si128(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 0x55555555); + assert(ar[1] == 0xaaaaaaaa); + assert(ar[2] == 0xffffffff); + assert(ar[3] == 0xffffffff); +} + +void testAddEpi32() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(4, 3, 2, 1); + __m128i v2 = _mm_set_epi32(10, 20, 30, 40); + __m128i v = _mm_add_epi32(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == 41); + assert(ar[1] == 32); + assert(ar[2] == 23); + assert(ar[3] == 14); +} + +void testSubEpi32() { + int32_t __attribute__((__aligned__(16))) ar[4]; + __m128i v1 = _mm_set_epi32(4, 3, 2, 1); + __m128i v2 = _mm_set_epi32(10, 20, 30, 40); + __m128i v = _mm_sub_epi32(v1, v2); + _mm_store_si128((__m128i *)ar, v); + assert(ar[0] == -39); + assert(ar[1] == -28); + assert(ar[2] == -17); + assert(ar[3] == -6); +} + +int main(int argc, char **argv) { + testSetPs(); + testSet1Ps(); + testSetZeroPs(); + testSetEpi32(); + testSet1Epi32(); + testSetZeroSi128(); + testBitCasts(); + testConversions(); + testMoveMaskPs(); + testAddPs(); + testSubPs(); + testMulPs(); + testDivPs(); + testMaxPs(); + testMinPs(); + testSqrtPs(); + testCmpLtPs(); + testCmpLePs(); + testCmpEqPs(); + testCmpGePs(); + testCmpGtPs(); + testAndPs(); + testAndNotPs(); + testOrPs(); + testXorPs(); + testAndSi128(); + testAndNotSi128(); + testOrSi128(); + testXorSi128(); + testAddEpi32(); + testSubEpi32(); + printf("DONE"); + return 0; +} diff --git a/emtests/test_simd3.out b/emtests/test_simd3.out new file mode 100644 index 000000000..096264973 --- /dev/null +++ b/emtests/test_simd3.out @@ -0,0 +1 @@ +DONE \ No newline at end of file diff --git a/emtests/test_simd4.c b/emtests/test_simd4.c new file mode 100644 index 000000000..79207e835 --- /dev/null +++ b/emtests/test_simd4.c @@ -0,0 +1,40 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +float simdAverage(float *src, int len) { + __m128 sumx4 = _mm_setzero_ps(); + for (int i = 0; i < len; i += 4) { + __m128 v = _mm_load_ps(src); + sumx4 = _mm_add_ps(sumx4, v); + src += 4; + } + float sumx4_mem[4]; + float *sumx4_ptr = sumx4_mem; + _mm_store_ps(sumx4_ptr, sumx4); + return (sumx4_mem[0] + sumx4_mem[1] + + sumx4_mem[2] + sumx4_mem[3])/len; +} + +void initArray(float *src, int len) { + for (int i = 0; i < len; ++i) { + src[i] = 0.1 * i; + } +} + +int main() { + const int len = 100000; + float src[len]; + float result = 0.0; + + initArray(src, len); + + result = simdAverage(src, len); + printf("averagex4 result: %.1f\n", result); +} \ No newline at end of file diff --git a/emtests/test_simd4.out b/emtests/test_simd4.out new file mode 100644 index 000000000..994497724 --- /dev/null +++ b/emtests/test_simd4.out @@ -0,0 +1 @@ +averagex4 result: 4999.9 \ No newline at end of file diff --git a/emtests/test_simd5.c b/emtests/test_simd5.c new file mode 100644 index 000000000..a064022dd --- /dev/null +++ b/emtests/test_simd5.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef float float32x4 __attribute__((__vector_size__(16))); + +int main(int argc, char **argv) { + float32x4 a = {1.0, 2.0, 3.0, 4.0}; + float32x4 b = {5.0, 6.0, 7.0, 8.0}; + float32x4 r = __builtin_shufflevector(a, b, 3, 1, 2, 0); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + r = __builtin_shufflevector(a, b, 7, 5, 6, 4); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + r = __builtin_shufflevector(a, b, 1, 2, 5, 4); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + r = __builtin_shufflevector(a, b, 5, 4, 1, 2); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + r = __builtin_shufflevector(a, b, 4, 1, 0, 5); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + r = __builtin_shufflevector(a, b, 0, 7, 2, 3); + printf("%.1f %.1f %.1f %.1f\n", r[0], r[1], r[2], r[3]); + return 0; +} \ No newline at end of file diff --git a/emtests/test_simd5.out b/emtests/test_simd5.out new file mode 100644 index 000000000..738295bc2 --- /dev/null +++ b/emtests/test_simd5.out @@ -0,0 +1,6 @@ +4.0 2.0 3.0 1.0 +8.0 6.0 7.0 5.0 +2.0 3.0 6.0 5.0 +6.0 5.0 2.0 3.0 +5.0 2.0 1.0 6.0 +1.0 8.0 3.0 4.0 \ No newline at end of file diff --git a/emtests/test_simd6.c b/emtests/test_simd6.c new file mode 100644 index 000000000..ffd569b24 --- /dev/null +++ b/emtests/test_simd6.c @@ -0,0 +1,73 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +/* + * x86 _mm_max_ps and _mm_min_ps have defined semantics or NaN and -0.0. Ensure + * that we implement them properly. + */ + +volatile __m128 negzero; +volatile __m128 zero; +volatile __m128 nan_; +volatile __m128 one; + +int main() { + negzero = _mm_set1_ps(-0.0); + zero = _mm_set1_ps(0.0); + one = _mm_set1_ps(1.0); + nan_ = _mm_set1_ps(__builtin_nan("")); + + __m128 expected, result; + + result = _mm_max_ps(negzero, zero); + expected = zero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_max_ps(zero, negzero); + expected = negzero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_max_ps(nan_, zero); + expected = zero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_max_ps(zero, nan_); + expected = nan_; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_max_ps(zero, one); + expected = one; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_min_ps(negzero, zero); + expected = zero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_min_ps(zero, negzero); + expected = negzero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_min_ps(nan_, zero); + expected = zero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_min_ps(zero, nan_); + expected = nan_; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + result = _mm_min_ps(zero, one); + expected = zero; + assert(memcmp(&result, &expected, sizeof(__m128)) == 0); + + printf("DONE"); + return 0; +} diff --git a/emtests/test_simd6.out b/emtests/test_simd6.out new file mode 100644 index 000000000..096264973 --- /dev/null +++ b/emtests/test_simd6.out @@ -0,0 +1 @@ +DONE \ No newline at end of file diff --git a/emtests/test_simd7.c b/emtests/test_simd7.c new file mode 100644 index 000000000..4bded7c4d --- /dev/null +++ b/emtests/test_simd7.c @@ -0,0 +1,13 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + printf("%d\n", _mm_movemask_ps(_mm_set_ps(0.f, 0.f, 0.f, -0.f))); +} diff --git a/emtests/test_simd7.out b/emtests/test_simd7.out new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/emtests/test_simd7.out @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/emtests/test_simd8.c b/emtests/test_simd8.c new file mode 100644 index 000000000..e705bc6b6 --- /dev/null +++ b/emtests/test_simd8.c @@ -0,0 +1,24 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +char buffer[21]; + +int main() { + _mm_storeu_ps((float*)&buffer[1], (__m128){0.1, 2.3, 4.5, 6.7}); + __m128 y = _mm_loadu_ps((float*)&buffer[5]); + + float __attribute__((__aligned__(16))) ar[4]; + *(__m128 *)&ar = y; + for (int i = 0; i < 4; i++) { + printf("%f\n", ar[i]); + } + + return 0; +} diff --git a/emtests/test_simd8.out b/emtests/test_simd8.out new file mode 100644 index 000000000..7d833d097 --- /dev/null +++ b/emtests/test_simd8.out @@ -0,0 +1,4 @@ +2.300000 +4.500000 +6.700000 +0.000000 diff --git a/emtests/test_simd9.c b/emtests/test_simd9.c new file mode 100644 index 000000000..b01a6df6d --- /dev/null +++ b/emtests/test_simd9.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +bool always_true() { return time(NULL) != 0; } // This function always returns true, but the compiler should not know this. + +int main() +{ + __m128 a = always_true() ? _mm_set1_ps(0.f) : _mm_set1_ps(2.f); + printf("%d %d %d %d\n", (int)a[0], (int)a[1], (int)a[2], (int)a[3]); +} diff --git a/emtests/test_simd9.out b/emtests/test_simd9.out new file mode 100644 index 000000000..7abb2cab3 --- /dev/null +++ b/emtests/test_simd9.out @@ -0,0 +1 @@ +0 0 0 0 \ No newline at end of file diff --git a/emtests/test_simd_dyncall.cpp b/emtests/test_simd_dyncall.cpp new file mode 100644 index 000000000..2137c69ee --- /dev/null +++ b/emtests/test_simd_dyncall.cpp @@ -0,0 +1,43 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include + +__m128 getSomeSIMD() { + union { __m128 m; float val[4]; } u; + u.val[0] = 1; + u.val[1] = 3.14159; + u.val[2] = -124234234.5; + u.val[3] = 99; + return u.m; +} + +__attribute__((noinline)) std::string to_str(__m128 m) +{ + union { __m128 m; float val[4]; } u; + u.m = m; + char str[256]; + sprintf(str, "[%f,%f,%f,%f]", u.val[3], u.val[2], u.val[1], u.val[0]); + printf("%s\n", str); + return "?"; +} + +int main() +{ + // part 1 + __m128 m1 = _mm_set1_ps(1.f); + __m128 m2 = _mm_set1_ps(2.f); + __m128 ret = _mm_add_ps(m1, m2); + to_str(m1).c_str(), to_str(m2).c_str(), to_str(ret).c_str(); + + // part 2 + typedef __m128 (*type)(); + volatile type ptr; + ptr = &getSomeSIMD; + to_str(ptr()); +} + diff --git a/emtests/test_simd_dyncall.txt b/emtests/test_simd_dyncall.txt new file mode 100644 index 000000000..267a55b33 --- /dev/null +++ b/emtests/test_simd_dyncall.txt @@ -0,0 +1,4 @@ +[1.000000,1.000000,1.000000,1.000000] +[2.000000,2.000000,2.000000,2.000000] +[3.000000,3.000000,3.000000,3.000000] +[99.000000,-124234232.000000,3.141590,1.000000] diff --git a/emtests/test_simd_float32x4.c b/emtests/test_simd_float32x4.c new file mode 100644 index 000000000..458297804 --- /dev/null +++ b/emtests/test_simd_float32x4.c @@ -0,0 +1,127 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include +#include + +void printFloat(float n) { + if (isnan(n)) { + printf("nan"); + } else { + printf("%f", n); + } +} + +void dump(const char *name, float32x4 vec) +{ + printf("%s: ", name); + printFloat(emscripten_float32x4_extractLane(vec, 0)); + printf(" "); + printFloat(emscripten_float32x4_extractLane(vec, 1)); + printf(" "); + printFloat(emscripten_float32x4_extractLane(vec, 2)); + printf(" "); + printFloat(emscripten_float32x4_extractLane(vec, 3)); + printf("\n"); +} +#define DUMP(V) dump(#V, (V)) + +void dumpBytes(const char *name, const void *bytes, int n) +{ + printf("%s:", name); + for(int i = 0; i < n; ++i) + printf(" %02X", ((uint8_t*)bytes)[i]); + printf("\n"); +} +#define DUMPBYTES(name, bytes) dumpBytes(name, bytes, sizeof(bytes)) + +int main() +{ + float32x4 v = emscripten_float32x4_set(-1.f, 0.f, 1.f, 3.5f); + DUMP(v); + float32x4 w = emscripten_float32x4_splat(2.f); + DUMP(w); + DUMP(emscripten_float32x4_add(v, w)); + DUMP(emscripten_float32x4_sub(v, w)); + DUMP(emscripten_float32x4_mul(v, w)); + DUMP(emscripten_float32x4_div(v, w)); + DUMP(emscripten_float32x4_max(v, w)); + DUMP(emscripten_float32x4_min(v, w)); + DUMP(emscripten_float32x4_maxNum(v, w)); + DUMP(emscripten_float32x4_minNum(v, w)); + DUMP(emscripten_float32x4_neg(v)); + DUMP(emscripten_float32x4_sqrt(v)); + float32x4 rcp = emscripten_float32x4_reciprocalApproximation(v); + assert(fabs(emscripten_float32x4_extractLane(rcp, 0) - 1.0 / emscripten_float32x4_extractLane(v, 0)) < 0.1); + assert(isinf(emscripten_float32x4_extractLane(rcp, 1))); + assert(fabs(emscripten_float32x4_extractLane(rcp, 2) - 1.0 / emscripten_float32x4_extractLane(v, 2)) < 0.1); + assert(fabs(emscripten_float32x4_extractLane(rcp, 3) - 1.0 / emscripten_float32x4_extractLane(v, 3)) < 0.1); + float32x4 rcpSqrt = emscripten_float32x4_reciprocalSqrtApproximation(v); + assert(isnan(emscripten_float32x4_extractLane(rcpSqrt, 0))); + assert(isinf(emscripten_float32x4_extractLane(rcpSqrt, 1))); + assert(fabs(emscripten_float32x4_extractLane(rcpSqrt, 2) - 1.0 / sqrt(emscripten_float32x4_extractLane(v, 2))) < 0.1); + assert(fabs(emscripten_float32x4_extractLane(rcpSqrt, 3) - 1.0 / sqrt(emscripten_float32x4_extractLane(v, 3))) < 0.1); + DUMP(emscripten_float32x4_abs(v)); + DUMP(emscripten_float32x4_and(v, w)); + DUMP(emscripten_float32x4_xor(v, w)); + DUMP(emscripten_float32x4_or(v, w)); + DUMP(emscripten_float32x4_not(v)); + DUMP(emscripten_float32x4_lessThan(v, w)); + DUMP(emscripten_float32x4_lessThanOrEqual(v, w)); + DUMP(emscripten_float32x4_greaterThan(v, w)); + DUMP(emscripten_float32x4_greaterThanOrEqual(v, w)); + DUMP(emscripten_float32x4_equal(v, w)); + DUMP(emscripten_float32x4_notEqual(v, w)); + bool32x4 b = emscripten_int32x4_set(0, -1, 0, -1); + DUMP(emscripten_float32x4_select(b, v, w)); + DUMP(emscripten_float32x4_replaceLane(v, 0, 9.f)); + DUMP(emscripten_float32x4_replaceLane(v, 1, -3.f)); + DUMP(emscripten_float32x4_replaceLane(v, 2, 0.f)); + DUMP(emscripten_float32x4_replaceLane(v, 3, -0.f)); + uint8_t bytes[16]; + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_float32x4_store(bytes, v); + DUMPBYTES("emscripten_float32x4_store", bytes); + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_float32x4_store1(bytes, v); + DUMPBYTES("emscripten_float32x4_store1", bytes); + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_float32x4_store2(bytes, v); + DUMPBYTES("emscripten_float32x4_store2", bytes); + + emscripten_float32x4_store(bytes, v); + DUMP(emscripten_float32x4_load(bytes)); + DUMP(emscripten_float32x4_load1(bytes)); + DUMP(emscripten_float32x4_load2(bytes)); + // TODO: emscripten_float32x4_fromFloat64x2Bits + // TODO: emscripten_float32x4_fromInt32x4Bits + // TODO: emscripten_float32x4_fromUint32x4Bits + // TODO: emscripten_float32x4_fromInt16x8Bits + // TODO: emscripten_float32x4_fromUint16x8Bits + // TODO: emscripten_float32x4_fromInt8x16Bits + // TODO: emscripten_float32x4_fromUint8x16Bits + // TODO: emscripten_float32x4_fromInt32x4 + // TODO: emscripten_float32x4_fromUint32x4 + DUMP(emscripten_float32x4_swizzle(v, 0, 1, 2, 3)); + DUMP(emscripten_float32x4_swizzle(v, 3, 2, 1, 0)); + DUMP(emscripten_float32x4_swizzle(v, 0, 0, 0, 0)); + DUMP(emscripten_float32x4_swizzle(v, 0, 3, 0, 3)); + DUMP(emscripten_float32x4_swizzle(v, 3, 3, 3, 3)); + float32x4 z = emscripten_float32x4_set(-5.f, 20.f, 14.f, 9.f); + DUMP(z); + DUMP(emscripten_float32x4_shuffle(v, z, 0, 0, 0, 0)); + DUMP(emscripten_float32x4_shuffle(v, z, 4, 4, 4, 4)); + DUMP(emscripten_float32x4_shuffle(v, z, 7, 7, 7, 7)); + DUMP(emscripten_float32x4_shuffle(v, z, 0, 2, 4, 6)); + DUMP(emscripten_float32x4_shuffle(v, z, 7, 0, 3, 5)); + + printf("Done!\n"); +} diff --git a/emtests/test_simd_float32x4.out b/emtests/test_simd_float32x4.out new file mode 100644 index 000000000..d2143c6f5 --- /dev/null +++ b/emtests/test_simd_float32x4.out @@ -0,0 +1,46 @@ +v: -1.000000 0.000000 1.000000 3.500000 +w: 2.000000 2.000000 2.000000 2.000000 +emscripten_float32x4_add(v, w): 1.000000 2.000000 3.000000 5.500000 +emscripten_float32x4_sub(v, w): -3.000000 -2.000000 -1.000000 1.500000 +emscripten_float32x4_mul(v, w): -2.000000 0.000000 2.000000 7.000000 +emscripten_float32x4_div(v, w): -0.500000 0.000000 0.500000 1.750000 +emscripten_float32x4_max(v, w): 2.000000 2.000000 2.000000 3.500000 +emscripten_float32x4_min(v, w): -1.000000 0.000000 1.000000 2.000000 +emscripten_float32x4_maxNum(v, w): 2.000000 2.000000 2.000000 3.500000 +emscripten_float32x4_minNum(v, w): -1.000000 0.000000 1.000000 2.000000 +emscripten_float32x4_neg(v): 1.000000 -0.000000 -1.000000 -3.500000 +emscripten_float32x4_sqrt(v): nan 0.000000 1.000000 1.870829 +emscripten_float32x4_abs(v): 1.000000 0.000000 1.000000 3.500000 +emscripten_float32x4_and(v, w): 0.000000 0.000000 0.000000 2.000000 +emscripten_float32x4_xor(v, w): -inf 2.000000 inf 0.000000 +emscripten_float32x4_or(v, w): -inf 2.000000 inf 3.500000 +emscripten_float32x4_not(v): 4.000000 nan -4.000000 -1.250000 +emscripten_float32x4_lessThan(v, w): nan nan nan 0.000000 +emscripten_float32x4_lessThanOrEqual(v, w): nan nan nan 0.000000 +emscripten_float32x4_greaterThan(v, w): 0.000000 0.000000 0.000000 nan +emscripten_float32x4_greaterThanOrEqual(v, w): 0.000000 0.000000 0.000000 nan +emscripten_float32x4_equal(v, w): 0.000000 0.000000 0.000000 0.000000 +emscripten_float32x4_notEqual(v, w): nan nan nan nan +emscripten_float32x4_select(b, v, w): 2.000000 0.000000 2.000000 3.500000 +emscripten_float32x4_replaceLane(v, 0, 9.f): 9.000000 0.000000 1.000000 3.500000 +emscripten_float32x4_replaceLane(v, 1, -3.f): -1.000000 -3.000000 1.000000 3.500000 +emscripten_float32x4_replaceLane(v, 2, 0.f): -1.000000 0.000000 0.000000 3.500000 +emscripten_float32x4_replaceLane(v, 3, -0.f): -1.000000 0.000000 1.000000 -0.000000 +emscripten_float32x4_store: 00 00 80 BF 00 00 00 00 00 00 80 3F 00 00 60 40 +emscripten_float32x4_store1: 00 00 80 BF FF FF FF FF FF FF FF FF FF FF FF FF +emscripten_float32x4_store2: 00 00 80 BF 00 00 00 00 FF FF FF FF FF FF FF FF +emscripten_float32x4_load(bytes): -1.000000 0.000000 1.000000 3.500000 +emscripten_float32x4_load1(bytes): -1.000000 0.000000 0.000000 0.000000 +emscripten_float32x4_load2(bytes): -1.000000 0.000000 0.000000 0.000000 +emscripten_float32x4_swizzle(v, 0, 1, 2, 3): -1.000000 0.000000 1.000000 3.500000 +emscripten_float32x4_swizzle(v, 3, 2, 1, 0): 3.500000 1.000000 0.000000 -1.000000 +emscripten_float32x4_swizzle(v, 0, 0, 0, 0): -1.000000 -1.000000 -1.000000 -1.000000 +emscripten_float32x4_swizzle(v, 0, 3, 0, 3): -1.000000 3.500000 -1.000000 3.500000 +emscripten_float32x4_swizzle(v, 3, 3, 3, 3): 3.500000 3.500000 3.500000 3.500000 +z: -5.000000 20.000000 14.000000 9.000000 +emscripten_float32x4_shuffle(v, z, 0, 0, 0, 0): -1.000000 -1.000000 -1.000000 -1.000000 +emscripten_float32x4_shuffle(v, z, 4, 4, 4, 4): -5.000000 -5.000000 -5.000000 -5.000000 +emscripten_float32x4_shuffle(v, z, 7, 7, 7, 7): 9.000000 9.000000 9.000000 9.000000 +emscripten_float32x4_shuffle(v, z, 0, 2, 4, 6): -1.000000 1.000000 -5.000000 14.000000 +emscripten_float32x4_shuffle(v, z, 7, 0, 3, 5): 9.000000 -1.000000 3.500000 20.000000 +Done! \ No newline at end of file diff --git a/emtests/test_simd_float64x2.c b/emtests/test_simd_float64x2.c new file mode 100644 index 000000000..102f92204 --- /dev/null +++ b/emtests/test_simd_float64x2.c @@ -0,0 +1,112 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include +#include + +void printFloat(double n) { + if (isnan(n)) { + printf("nan"); + } else { + printf("%f", n); + } +} + +void dump(const char *name, float64x2 vec) +{ + printf("%s: ", name); + printFloat(emscripten_float64x2_extractLane(vec, 0)); + printf(" "); + printFloat(emscripten_float64x2_extractLane(vec, 1)); + printf("\n"); +} +#define DUMP(V) dump(#V, (V)) + +void dumpBytes(const char *name, const void *bytes, int n) +{ + printf("%s:", name); + for(int i = 0; i < n; ++i) + printf(" %02X", ((uint8_t*)bytes)[i]); + printf("\n"); +} +#define DUMPBYTES(name, bytes) dumpBytes(name, bytes, sizeof(bytes)) + +int main() +{ + float64x2 v = emscripten_float64x2_set(-1.5f, 2.5f); + DUMP(v); + float64x2 w = emscripten_float64x2_splat(1.5f); + DUMP(w); + DUMP(emscripten_float64x2_add(v, w)); + DUMP(emscripten_float64x2_sub(v, w)); + DUMP(emscripten_float64x2_mul(v, w)); + DUMP(emscripten_float64x2_div(v, w)); + DUMP(emscripten_float64x2_max(v, w)); + DUMP(emscripten_float64x2_min(v, w)); + DUMP(emscripten_float64x2_maxNum(v, w)); + DUMP(emscripten_float64x2_minNum(v, w)); + DUMP(emscripten_float64x2_neg(v)); + DUMP(emscripten_float64x2_sqrt(v)); + float64x2 rcp = emscripten_float64x2_reciprocalApproximation(v); + assert(fabs(emscripten_float64x2_extractLane(rcp, 0) - 1.0 / emscripten_float64x2_extractLane(v, 0)) < 0.1); + assert(fabs(emscripten_float64x2_extractLane(rcp, 1) - 1.0 / emscripten_float64x2_extractLane(v, 1)) < 0.1); + float64x2 rcpSqrt = emscripten_float64x2_reciprocalSqrtApproximation(v); + // assert(isnan(emscripten_float64x2_extractLane(rcpSqrt, 0))); XXX TODO Enable once Float64x2 type lands in SIMD.js. + assert(fabs(emscripten_float64x2_extractLane(rcpSqrt, 1) - 1.0 / sqrt(emscripten_float64x2_extractLane(v, 1))) < 0.1); + DUMP(emscripten_float64x2_abs(v)); + DUMP(emscripten_float64x2_and(v, w)); + DUMP(emscripten_float64x2_xor(v, w)); + DUMP(emscripten_float64x2_or(v, w)); + DUMP(emscripten_float64x2_not(v)); + DUMP(emscripten_float64x2_lessThan(v, w)); + DUMP(emscripten_float64x2_lessThanOrEqual(v, w)); + DUMP(emscripten_float64x2_greaterThan(v, w)); + DUMP(emscripten_float64x2_greaterThanOrEqual(v, w)); + DUMP(emscripten_float64x2_equal(v, w)); + DUMP(emscripten_float64x2_notEqual(v, w)); + //bool64x2 b = emscripten_int64x2_set(0, -1); // TODO: Can't yet use this form, no int64x2. + //DUMP(emscripten_float64x2_select(b, v, w)); + DUMP(emscripten_float64x2_replaceLane(v, 0, 9.f)); + DUMP(emscripten_float64x2_replaceLane(v, 1, -3.f)); + uint8_t bytes[16]; + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_float64x2_store(bytes, v); + DUMPBYTES("emscripten_float64x2_store", bytes); + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_float64x2_store1(bytes, v); + DUMPBYTES("emscripten_float64x2_store1", bytes); + + emscripten_float64x2_store(bytes, v); + DUMP(emscripten_float64x2_load(bytes)); + DUMP(emscripten_float64x2_load1(bytes)); + // TODO: emscripten_float64x2_fromFloat64x2Bits + // TODO: emscripten_float64x2_fromInt64x2Bits + // TODO: emscripten_float64x2_fromUint64x2Bits + // TODO: emscripten_float64x2_fromInt16x8Bits + // TODO: emscripten_float64x2_fromUint16x8Bits + // TODO: emscripten_float64x2_fromInt8x16Bits + // TODO: emscripten_float64x2_fromUint8x16Bits + // TODO: emscripten_float64x2_fromInt64x2 + // TODO: emscripten_float64x2_fromUint64x2 + DUMP(emscripten_float64x2_swizzle(v, 0, 1)); + DUMP(emscripten_float64x2_swizzle(v, 1, 0)); + DUMP(emscripten_float64x2_swizzle(v, 0, 0)); + DUMP(emscripten_float64x2_swizzle(v, 1, 1)); + float64x2 z = emscripten_float64x2_set(-5.5f, 20.5f); + DUMP(z); + DUMP(emscripten_float64x2_shuffle(v, z, 0, 0)); + DUMP(emscripten_float64x2_shuffle(v, z, 2, 2)); + DUMP(emscripten_float64x2_shuffle(v, z, 3, 3)); + DUMP(emscripten_float64x2_shuffle(v, z, 0, 2)); + DUMP(emscripten_float64x2_shuffle(v, z, 3, 1)); + + printf("Done!\n"); +} diff --git a/emtests/test_simd_float64x2.out b/emtests/test_simd_float64x2.out new file mode 100644 index 000000000..e8c38ecc4 --- /dev/null +++ b/emtests/test_simd_float64x2.out @@ -0,0 +1,40 @@ +v: -1.500000 2.500000 +w: 1.500000 1.500000 +emscripten_float64x2_add(v, w): 0.000000 4.000000 +emscripten_float64x2_sub(v, w): -3.000000 1.000000 +emscripten_float64x2_mul(v, w): -2.250000 3.750000 +emscripten_float64x2_div(v, w): -1.000000 1.666667 +emscripten_float64x2_max(v, w): 1.500000 2.500000 +emscripten_float64x2_min(v, w): -1.500000 1.500000 +emscripten_float64x2_maxNum(v, w): 1.500000 2.500000 +emscripten_float64x2_minNum(v, w): -1.500000 1.500000 +emscripten_float64x2_neg(v): 1.500000 -2.500000 +emscripten_float64x2_sqrt(v): nan 1.581139 +emscripten_float64x2_abs(v): 1.500000 2.500000 +emscripten_float64x2_and(v, w): 1.500000 0.000000 +emscripten_float64x2_xor(v, w): -0.000000 nan +emscripten_float64x2_or(v, w): -1.500000 nan +emscripten_float64x2_not(v): 3.000000 -1.750000 +emscripten_float64x2_lessThan(v, w): nan 0.000000 +emscripten_float64x2_lessThanOrEqual(v, w): nan 0.000000 +emscripten_float64x2_greaterThan(v, w): 0.000000 nan +emscripten_float64x2_greaterThanOrEqual(v, w): 0.000000 nan +emscripten_float64x2_equal(v, w): 0.000000 0.000000 +emscripten_float64x2_notEqual(v, w): nan nan +emscripten_float64x2_replaceLane(v, 0, 9.f): 9.000000 2.500000 +emscripten_float64x2_replaceLane(v, 1, -3.f): -1.500000 -3.000000 +emscripten_float64x2_store: 00 00 00 00 00 00 F8 BF 00 00 00 00 00 00 04 40 +emscripten_float64x2_store1: 00 00 00 00 00 00 F8 BF FF FF FF FF FF FF FF FF +emscripten_float64x2_load(bytes): -1.500000 2.500000 +emscripten_float64x2_load1(bytes): -1.500000 0.000000 +emscripten_float64x2_swizzle(v, 0, 1): -1.500000 2.500000 +emscripten_float64x2_swizzle(v, 1, 0): 2.500000 -1.500000 +emscripten_float64x2_swizzle(v, 0, 0): -1.500000 -1.500000 +emscripten_float64x2_swizzle(v, 1, 1): 2.500000 2.500000 +z: -5.500000 20.500000 +emscripten_float64x2_shuffle(v, z, 0, 0): -1.500000 -1.500000 +emscripten_float64x2_shuffle(v, z, 2, 2): -5.500000 -5.500000 +emscripten_float64x2_shuffle(v, z, 3, 3): 20.500000 20.500000 +emscripten_float64x2_shuffle(v, z, 0, 2): -1.500000 -5.500000 +emscripten_float64x2_shuffle(v, z, 3, 1): 20.500000 2.500000 +Done! \ No newline at end of file diff --git a/emtests/test_simd_int16x8.c b/emtests/test_simd_int16x8.c new file mode 100644 index 000000000..e1ef050f1 --- /dev/null +++ b/emtests/test_simd_int16x8.c @@ -0,0 +1,103 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +void dump(const char *name, int16x8 vec) +{ + printf("%s: %d %d %d %d %d %d %d %d\n", name, emscripten_int16x8_extractLane(vec, 0), emscripten_int16x8_extractLane(vec, 1), emscripten_int16x8_extractLane(vec, 2), emscripten_int16x8_extractLane(vec, 3), + emscripten_int16x8_extractLane(vec, 4), emscripten_int16x8_extractLane(vec, 5), emscripten_int16x8_extractLane(vec, 6), emscripten_int16x8_extractLane(vec, 7)); +} +#define DUMP(V) dump(#V, (V)) +#define DUMPINT(V) printf("%s: %d\n", #V, V) + +void dumpBytes(const char *name, const void *bytes, int n) +{ + printf("%s:", name); + for(int i = 0; i < n; ++i) + printf(" %02X", ((uint8_t*)bytes)[i]); + printf("\n"); +} +#define DUMPBYTES(name, bytes) dumpBytes(name, bytes, sizeof(bytes)) + +int main() +{ + int16x8 v = emscripten_int16x8_set(1, 0, 1, 32767, -2, 9, 13, -32768); + DUMP(v); + int16x8 w = emscripten_int16x8_splat(2); + DUMP(w); + DUMP(emscripten_int16x8_add(v, w)); + DUMP(emscripten_int16x8_sub(v, w)); + DUMP(emscripten_int16x8_mul(v, w)); + DUMP(emscripten_int16x8_neg(v)); + DUMP(emscripten_int16x8_and(v, w)); + DUMP(emscripten_int16x8_xor(v, w)); + DUMP(emscripten_int16x8_or(v, w)); + DUMP(emscripten_int16x8_not(v)); + DUMP(emscripten_int16x8_lessThan(v, w)); + DUMP(emscripten_int16x8_lessThanOrEqual(v, w)); + DUMP(emscripten_int16x8_greaterThan(v, w)); + DUMP(emscripten_int16x8_greaterThanOrEqual(v, w)); + DUMP(emscripten_int16x8_equal(v, w)); + DUMP(emscripten_int16x8_notEqual(v, w)); +// DUMPINT(emscripten_int16x8_anyTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int16x8->bool16x8 and enable this, or remove if this doesn't make sense. +// DUMPINT(emscripten_int16x8_allTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int16x8->bool16x8 and enable this, or remove if this doesn't make sense. + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 0)); + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 1)); + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 2)); + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 16)); + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 32)); + DUMP(emscripten_int16x8_shiftLeftByScalar(v, 48)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 0)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 1)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 2)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 16)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 32)); + DUMP(emscripten_int16x8_shiftRightByScalar(v, 48)); + bool32x4 b = emscripten_int16x8_set(0, -1, 0, -1, 0, -1, 0, -1); + DUMP(emscripten_int16x8_select(b, v, w)); + DUMP(emscripten_int16x8_addSaturate(v, w)); + DUMP(emscripten_int16x8_subSaturate(v, w)); + DUMP(emscripten_int16x8_replaceLane(v, 0, 9)); + DUMP(emscripten_int16x8_replaceLane(v, 1, 3)); + DUMP(emscripten_int16x8_replaceLane(v, 2, 0)); + DUMP(emscripten_int16x8_replaceLane(v, 3, 91)); + DUMP(emscripten_int16x8_replaceLane(v, 4, 32767)); + DUMP(emscripten_int16x8_replaceLane(v, 5, 100)); + DUMP(emscripten_int16x8_replaceLane(v, 6, -100)); + DUMP(emscripten_int16x8_replaceLane(v, 7, -32768)); + uint8_t bytes[16]; + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_int16x8_store(bytes, v); + DUMPBYTES("emscripten_int16x8_store", bytes); + DUMP(emscripten_int16x8_load(bytes)); + // TODO: emscripten_int16x8_fromFloat64x2Bits + // TODO: emscripten_int16x8_fromint16x8Bits + // TODO: emscripten_int16x8_fromUint16x8Bits + // TODO: emscripten_int16x8_fromInt16x8Bits + // TODO: emscripten_int16x8_fromUint16x8Bits + // TODO: emscripten_int16x8_fromInt8x16Bits + // TODO: emscripten_int16x8_fromUint8x16Bits + // TODO: emscripten_int16x8_fromint16x8 + // TODO: emscripten_int16x8_fromUint16x8 + DUMP(emscripten_int16x8_swizzle(v, 0, 1, 2, 3, 4, 5, 6, 7)); + DUMP(emscripten_int16x8_swizzle(v, 7, 6, 5, 4, 3, 2, 1, 0)); + DUMP(emscripten_int16x8_swizzle(v, 0, 0, 0, 0, 0, 0, 0, 0)); + DUMP(emscripten_int16x8_swizzle(v, 0, 3, 0, 3, 7, 1, 2, 6)); + DUMP(emscripten_int16x8_swizzle(v, 3, 3, 3, 3, 3, 3, 3, 3)); + int16x8 z = emscripten_int16x8_set(-5, 20, 14, 9, 0, 11, 32764, -32750); + DUMP(z); + DUMP(emscripten_int16x8_shuffle(v, z, 0, 0, 0, 0, 0, 0, 0, 0)); + DUMP(emscripten_int16x8_shuffle(v, z, 4, 4, 4, 4, 4, 4, 4, 4)); + DUMP(emscripten_int16x8_shuffle(v, z, 15, 15, 15, 15, 7, 7, 7, 7)); + DUMP(emscripten_int16x8_shuffle(v, z, 0, 2, 4, 6, 8, 10, 12, 14)); + DUMP(emscripten_int16x8_shuffle(v, z, 7, 0, 3, 5, 9, 11, 1, 4)); + printf("Done!\n"); +} diff --git a/emtests/test_simd_int16x8.out b/emtests/test_simd_int16x8.out new file mode 100644 index 000000000..0784dcd78 --- /dev/null +++ b/emtests/test_simd_int16x8.out @@ -0,0 +1,53 @@ +v: 1 0 1 32767 -2 9 13 -32768 +w: 2 2 2 2 2 2 2 2 +emscripten_int16x8_add(v, w): 3 2 3 -32767 0 11 15 -32766 +emscripten_int16x8_sub(v, w): -1 -2 -1 32765 -4 7 11 32766 +emscripten_int16x8_mul(v, w): 2 0 2 -2 -4 18 26 0 +emscripten_int16x8_neg(v): -1 0 -1 -32767 2 -9 -13 -32768 +emscripten_int16x8_and(v, w): 0 0 0 2 2 0 0 0 +emscripten_int16x8_xor(v, w): 3 2 3 32765 -4 11 15 -32766 +emscripten_int16x8_or(v, w): 3 2 3 32767 -2 11 15 -32766 +emscripten_int16x8_not(v): -2 -1 -2 -32768 1 -10 -14 32767 +emscripten_int16x8_lessThan(v, w): -1 -1 -1 0 -1 0 0 -1 +emscripten_int16x8_lessThanOrEqual(v, w): -1 -1 -1 0 -1 0 0 -1 +emscripten_int16x8_greaterThan(v, w): 0 0 0 -1 0 -1 -1 0 +emscripten_int16x8_greaterThanOrEqual(v, w): 0 0 0 -1 0 -1 -1 0 +emscripten_int16x8_equal(v, w): 0 0 0 0 0 0 0 0 +emscripten_int16x8_notEqual(v, w): -1 -1 -1 -1 -1 -1 -1 -1 +emscripten_int16x8_shiftLeftByScalar(v, 0): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftLeftByScalar(v, 1): 2 0 2 -2 -4 18 26 0 +emscripten_int16x8_shiftLeftByScalar(v, 2): 4 0 4 -4 -8 36 52 0 +emscripten_int16x8_shiftLeftByScalar(v, 16): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftLeftByScalar(v, 32): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftLeftByScalar(v, 48): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftRightByScalar(v, 0): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftRightByScalar(v, 1): 0 0 0 16383 -1 4 6 -16384 +emscripten_int16x8_shiftRightByScalar(v, 2): 0 0 0 8191 -1 2 3 -8192 +emscripten_int16x8_shiftRightByScalar(v, 16): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftRightByScalar(v, 32): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_shiftRightByScalar(v, 48): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_select(b, v, w): 2 0 2 32767 2 9 2 -32768 +emscripten_int16x8_addSaturate(v, w): 3 2 3 32767 0 11 15 -32766 +emscripten_int16x8_subSaturate(v, w): -1 -2 -1 32765 -4 7 11 -32768 +emscripten_int16x8_replaceLane(v, 0, 9): 9 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_replaceLane(v, 1, 3): 1 3 1 32767 -2 9 13 -32768 +emscripten_int16x8_replaceLane(v, 2, 0): 1 0 0 32767 -2 9 13 -32768 +emscripten_int16x8_replaceLane(v, 3, 91): 1 0 1 91 -2 9 13 -32768 +emscripten_int16x8_replaceLane(v, 4, 32767): 1 0 1 32767 32767 9 13 -32768 +emscripten_int16x8_replaceLane(v, 5, 100): 1 0 1 32767 -2 100 13 -32768 +emscripten_int16x8_replaceLane(v, 6, -100): 1 0 1 32767 -2 9 -100 -32768 +emscripten_int16x8_replaceLane(v, 7, -32768): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_store: 01 00 00 00 01 00 FF 7F FE FF 09 00 0D 00 00 80 +emscripten_int16x8_load(bytes): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_swizzle(v, 0, 1, 2, 3, 4, 5, 6, 7): 1 0 1 32767 -2 9 13 -32768 +emscripten_int16x8_swizzle(v, 7, 6, 5, 4, 3, 2, 1, 0): -32768 13 9 -2 32767 1 0 1 +emscripten_int16x8_swizzle(v, 0, 0, 0, 0, 0, 0, 0, 0): 1 1 1 1 1 1 1 1 +emscripten_int16x8_swizzle(v, 0, 3, 0, 3, 7, 1, 2, 6): 1 32767 1 32767 -32768 0 1 13 +emscripten_int16x8_swizzle(v, 3, 3, 3, 3, 3, 3, 3, 3): 32767 32767 32767 32767 32767 32767 32767 32767 +z: -5 20 14 9 0 11 32764 -32750 +emscripten_int16x8_shuffle(v, z, 0, 0, 0, 0, 0, 0, 0, 0): 1 1 1 1 1 1 1 1 +emscripten_int16x8_shuffle(v, z, 4, 4, 4, 4, 4, 4, 4, 4): -2 -2 -2 -2 -2 -2 -2 -2 +emscripten_int16x8_shuffle(v, z, 15, 15, 15, 15, 7, 7, 7, 7): -32750 -32750 -32750 -32750 -32768 -32768 -32768 -32768 +emscripten_int16x8_shuffle(v, z, 0, 2, 4, 6, 8, 10, 12, 14): 1 1 -2 13 -5 14 0 32764 +emscripten_int16x8_shuffle(v, z, 7, 0, 3, 5, 9, 11, 1, 4): -32768 1 32767 9 20 9 0 -2 +Done! diff --git a/emtests/test_simd_int32x4.c b/emtests/test_simd_int32x4.c new file mode 100644 index 000000000..1c2bb6a41 --- /dev/null +++ b/emtests/test_simd_int32x4.c @@ -0,0 +1,106 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +void dump(const char *name, int32x4 vec) +{ + printf("%s: %d %d %d %d\n", name, emscripten_int32x4_extractLane(vec, 0), emscripten_int32x4_extractLane(vec, 1), emscripten_int32x4_extractLane(vec, 2), emscripten_int32x4_extractLane(vec, 3)); +} +#define DUMP(V) dump(#V, (V)) +#define DUMPINT(V) printf("%s: %d\n", #V, V) + +void dumpBytes(const char *name, const void *bytes, int n) +{ + printf("%s:", name); + for(int i = 0; i < n; ++i) + printf(" %02X", ((uint8_t*)bytes)[i]); + printf("\n"); +} +#define DUMPBYTES(name, bytes) dumpBytes(name, bytes, sizeof(bytes)) + +int main() +{ + int32x4 v = emscripten_int32x4_set(1, 0, 1, 4); + DUMP(v); + int32x4 w = emscripten_int32x4_splat(2); + DUMP(w); + DUMP(emscripten_int32x4_add(v, w)); + DUMP(emscripten_int32x4_sub(v, w)); + DUMP(emscripten_int32x4_mul(v, w)); + DUMP(emscripten_int32x4_neg(v)); + DUMP(emscripten_int32x4_and(v, w)); + DUMP(emscripten_int32x4_xor(v, w)); + DUMP(emscripten_int32x4_or(v, w)); + DUMP(emscripten_int32x4_not(v)); + DUMP(emscripten_int32x4_lessThan(v, w)); + DUMP(emscripten_int32x4_lessThanOrEqual(v, w)); + DUMP(emscripten_int32x4_greaterThan(v, w)); + DUMP(emscripten_int32x4_greaterThanOrEqual(v, w)); + DUMP(emscripten_int32x4_equal(v, w)); + DUMP(emscripten_int32x4_notEqual(v, w)); +// DUMPINT(emscripten_int32x4_anyTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int32x4->bool32x4 and enable this, or remove if this doesn't make sense. +// DUMPINT(emscripten_int32x4_allTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int32x4->bool32x4 and enable this, or remove if this doesn't make sense. + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 0)); + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 1)); + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 2)); + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 16)); + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 32)); + DUMP(emscripten_int32x4_shiftLeftByScalar(v, 48)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 0)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 1)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 2)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 16)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 32)); + DUMP(emscripten_int32x4_shiftRightByScalar(v, 48)); + bool32x4 b = emscripten_int32x4_set(0, -1, 0, -1); + DUMP(emscripten_int32x4_select(b, v, w)); + DUMP(emscripten_int32x4_replaceLane(v, 0, 9)); + DUMP(emscripten_int32x4_replaceLane(v, 1, 3)); + DUMP(emscripten_int32x4_replaceLane(v, 2, 0)); + DUMP(emscripten_int32x4_replaceLane(v, 3, 91)); + uint8_t bytes[16]; + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_int32x4_store(bytes, v); + DUMPBYTES("emscripten_int32x4_store", bytes); + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_int32x4_store1(bytes, v); + DUMPBYTES("emscripten_int32x4_store1", bytes); + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_int32x4_store2(bytes, v); + DUMPBYTES("emscripten_int32x4_store2", bytes); + + emscripten_int32x4_store(bytes, v); + DUMP(emscripten_int32x4_load(bytes)); + DUMP(emscripten_int32x4_load1(bytes)); + DUMP(emscripten_int32x4_load2(bytes)); + // TODO: emscripten_int32x4_fromFloat64x2Bits + // TODO: emscripten_int32x4_fromInt32x4Bits + // TODO: emscripten_int32x4_fromUint32x4Bits + // TODO: emscripten_int32x4_fromInt16x8Bits + // TODO: emscripten_int32x4_fromUint16x8Bits + // TODO: emscripten_int32x4_fromInt8x16Bits + // TODO: emscripten_int32x4_fromUint8x16Bits + // TODO: emscripten_int32x4_fromInt32x4 + // TODO: emscripten_int32x4_fromUint32x4 + DUMP(emscripten_int32x4_swizzle(v, 0, 1, 2, 3)); + DUMP(emscripten_int32x4_swizzle(v, 3, 2, 1, 0)); + DUMP(emscripten_int32x4_swizzle(v, 0, 0, 0, 0)); + DUMP(emscripten_int32x4_swizzle(v, 0, 3, 0, 3)); + DUMP(emscripten_int32x4_swizzle(v, 3, 3, 3, 3)); + int32x4 z = emscripten_int32x4_set(-5, 20, 14, 9); + DUMP(z); + DUMP(emscripten_int32x4_shuffle(v, z, 0, 0, 0, 0)); + DUMP(emscripten_int32x4_shuffle(v, z, 4, 4, 4, 4)); + DUMP(emscripten_int32x4_shuffle(v, z, 7, 7, 7, 7)); + DUMP(emscripten_int32x4_shuffle(v, z, 0, 2, 4, 6)); + DUMP(emscripten_int32x4_shuffle(v, z, 7, 0, 3, 5)); + printf("Done!\n"); +} diff --git a/emtests/test_simd_int32x4.out b/emtests/test_simd_int32x4.out new file mode 100644 index 000000000..55e2e130f --- /dev/null +++ b/emtests/test_simd_int32x4.out @@ -0,0 +1,51 @@ +v: 1 0 1 4 +w: 2 2 2 2 +emscripten_int32x4_add(v, w): 3 2 3 6 +emscripten_int32x4_sub(v, w): -1 -2 -1 2 +emscripten_int32x4_mul(v, w): 2 0 2 8 +emscripten_int32x4_neg(v): -1 0 -1 -4 +emscripten_int32x4_and(v, w): 0 0 0 0 +emscripten_int32x4_xor(v, w): 3 2 3 6 +emscripten_int32x4_or(v, w): 3 2 3 6 +emscripten_int32x4_not(v): -2 -1 -2 -5 +emscripten_int32x4_lessThan(v, w): -1 -1 -1 0 +emscripten_int32x4_lessThanOrEqual(v, w): -1 -1 -1 0 +emscripten_int32x4_greaterThan(v, w): 0 0 0 -1 +emscripten_int32x4_greaterThanOrEqual(v, w): 0 0 0 -1 +emscripten_int32x4_equal(v, w): 0 0 0 0 +emscripten_int32x4_notEqual(v, w): -1 -1 -1 -1 +emscripten_int32x4_shiftLeftByScalar(v, 0): 1 0 1 4 +emscripten_int32x4_shiftLeftByScalar(v, 1): 2 0 2 8 +emscripten_int32x4_shiftLeftByScalar(v, 2): 4 0 4 16 +emscripten_int32x4_shiftLeftByScalar(v, 16): 65536 0 65536 262144 +emscripten_int32x4_shiftLeftByScalar(v, 32): 1 0 1 4 +emscripten_int32x4_shiftLeftByScalar(v, 48): 65536 0 65536 262144 +emscripten_int32x4_shiftRightByScalar(v, 0): 1 0 1 4 +emscripten_int32x4_shiftRightByScalar(v, 1): 0 0 0 2 +emscripten_int32x4_shiftRightByScalar(v, 2): 0 0 0 1 +emscripten_int32x4_shiftRightByScalar(v, 16): 0 0 0 0 +emscripten_int32x4_shiftRightByScalar(v, 32): 1 0 1 4 +emscripten_int32x4_shiftRightByScalar(v, 48): 0 0 0 0 +emscripten_int32x4_select(b, v, w): 2 0 2 4 +emscripten_int32x4_replaceLane(v, 0, 9): 9 0 1 4 +emscripten_int32x4_replaceLane(v, 1, 3): 1 3 1 4 +emscripten_int32x4_replaceLane(v, 2, 0): 1 0 0 4 +emscripten_int32x4_replaceLane(v, 3, 91): 1 0 1 91 +emscripten_int32x4_store: 01 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 +emscripten_int32x4_store1: 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF +emscripten_int32x4_store2: 01 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF +emscripten_int32x4_load(bytes): 1 0 1 4 +emscripten_int32x4_load1(bytes): 1 0 0 0 +emscripten_int32x4_load2(bytes): 1 0 0 0 +emscripten_int32x4_swizzle(v, 0, 1, 2, 3): 1 0 1 4 +emscripten_int32x4_swizzle(v, 3, 2, 1, 0): 4 1 0 1 +emscripten_int32x4_swizzle(v, 0, 0, 0, 0): 1 1 1 1 +emscripten_int32x4_swizzle(v, 0, 3, 0, 3): 1 4 1 4 +emscripten_int32x4_swizzle(v, 3, 3, 3, 3): 4 4 4 4 +z: -5 20 14 9 +emscripten_int32x4_shuffle(v, z, 0, 0, 0, 0): 1 1 1 1 +emscripten_int32x4_shuffle(v, z, 4, 4, 4, 4): -5 -5 -5 -5 +emscripten_int32x4_shuffle(v, z, 7, 7, 7, 7): 9 9 9 9 +emscripten_int32x4_shuffle(v, z, 0, 2, 4, 6): 1 1 -5 14 +emscripten_int32x4_shuffle(v, z, 7, 0, 3, 5): 9 1 4 20 +Done! diff --git a/emtests/test_simd_int8x16.c b/emtests/test_simd_int8x16.c new file mode 100644 index 000000000..260c7cf89 --- /dev/null +++ b/emtests/test_simd_int8x16.c @@ -0,0 +1,113 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +void dump(const char *name, int8x16 vec) +{ + printf("%s: %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", name, emscripten_int8x16_extractLane(vec, 0), emscripten_int8x16_extractLane(vec, 1), emscripten_int8x16_extractLane(vec, 2), emscripten_int8x16_extractLane(vec, 3), + emscripten_int8x16_extractLane(vec, 4), emscripten_int8x16_extractLane(vec, 5), emscripten_int8x16_extractLane(vec, 6), emscripten_int8x16_extractLane(vec, 7), + emscripten_int8x16_extractLane(vec, 8), emscripten_int8x16_extractLane(vec, 9), emscripten_int8x16_extractLane(vec, 10), emscripten_int8x16_extractLane(vec, 11), + emscripten_int8x16_extractLane(vec, 12), emscripten_int8x16_extractLane(vec, 13), emscripten_int8x16_extractLane(vec, 14), emscripten_int8x16_extractLane(vec, 15)); +} +#define DUMP(V) dump(#V, (V)) +#define DUMPINT(V) printf("%s: %d\n", #V, V) + +void dumpBytes(const char *name, const void *bytes, int n) +{ + printf("%s:", name); + for(int i = 0; i < n; ++i) + printf(" %02X", ((uint8_t*)bytes)[i]); + printf("\n"); +} +#define DUMPBYTES(name, bytes) dumpBytes(name, bytes, sizeof(bytes)) + +int main() +{ + int8x16 v = emscripten_int8x16_set(1, 0, 1, 127, -2, 9, 13, -128, 3, 19, 73, -53, 42, 66, 10, 100); + DUMP(v); + int8x16 w = emscripten_int8x16_splat(2); + DUMP(w); + DUMP(emscripten_int8x16_add(v, w)); + DUMP(emscripten_int8x16_sub(v, w)); + DUMP(emscripten_int8x16_mul(v, w)); + DUMP(emscripten_int8x16_neg(v)); + DUMP(emscripten_int8x16_and(v, w)); + DUMP(emscripten_int8x16_xor(v, w)); + DUMP(emscripten_int8x16_or(v, w)); + DUMP(emscripten_int8x16_not(v)); + DUMP(emscripten_int8x16_lessThan(v, w)); + DUMP(emscripten_int8x16_lessThanOrEqual(v, w)); + DUMP(emscripten_int8x16_greaterThan(v, w)); + DUMP(emscripten_int8x16_greaterThanOrEqual(v, w)); + DUMP(emscripten_int8x16_equal(v, w)); + DUMP(emscripten_int8x16_notEqual(v, w)); +// DUMPINT(emscripten_int8x16_anyTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int8x16->bool8x16 and enable this, or remove if this doesn't make sense. +// DUMPINT(emscripten_int8x16_allTrue(v)); // XXX TODO: Figure out if there is a no-op cast from int8x16->bool8x16 and enable this, or remove if this doesn't make sense. + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 0)); + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 1)); + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 2)); + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 16)); + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 32)); + DUMP(emscripten_int8x16_shiftLeftByScalar(v, 48)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 0)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 1)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 2)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 16)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 32)); + DUMP(emscripten_int8x16_shiftRightByScalar(v, 48)); + bool32x4 b = emscripten_int8x16_set(0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1); + DUMP(emscripten_int8x16_select(b, v, w)); + DUMP(emscripten_int8x16_addSaturate(v, w)); + DUMP(emscripten_int8x16_subSaturate(v, w)); + DUMP(emscripten_int8x16_replaceLane(v, 0, 9)); + DUMP(emscripten_int8x16_replaceLane(v, 1, 3)); + DUMP(emscripten_int8x16_replaceLane(v, 2, 0)); + DUMP(emscripten_int8x16_replaceLane(v, 3, 91)); + DUMP(emscripten_int8x16_replaceLane(v, 4, 127)); + DUMP(emscripten_int8x16_replaceLane(v, 5, 100)); + DUMP(emscripten_int8x16_replaceLane(v, 6, -100)); + DUMP(emscripten_int8x16_replaceLane(v, 7, -128)); + DUMP(emscripten_int8x16_replaceLane(v, 8, 9)); + DUMP(emscripten_int8x16_replaceLane(v, 9, 3)); + DUMP(emscripten_int8x16_replaceLane(v, 10, 0)); + DUMP(emscripten_int8x16_replaceLane(v, 11, 91)); + DUMP(emscripten_int8x16_replaceLane(v, 12, 127)); + DUMP(emscripten_int8x16_replaceLane(v, 13, 100)); + DUMP(emscripten_int8x16_replaceLane(v, 14, -100)); + DUMP(emscripten_int8x16_replaceLane(v, 15, -128)); + uint8_t bytes[16]; + memset(bytes, 0xFF, sizeof(bytes)); + emscripten_int8x16_store(bytes, v); + DUMPBYTES("emscripten_int8x16_store", bytes); + DUMP(emscripten_int8x16_load(bytes)); + // TODO: emscripten_int8x16_fromFloat64x2Bits + // TODO: emscripten_int8x16_fromint8x16Bits + // TODO: emscripten_int8x16_fromUint8x16Bits + // TODO: emscripten_int8x16_fromInt8x16Bits + // TODO: emscripten_int8x16_fromUint8x16Bits + // TODO: emscripten_int8x16_fromInt8x16Bits + // TODO: emscripten_int8x16_fromUint8x16Bits + // TODO: emscripten_int8x16_fromint8x16 + // TODO: emscripten_int8x16_fromUint8x16 + DUMP(emscripten_int8x16_swizzle(v, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)); + DUMP(emscripten_int8x16_swizzle(v, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)); + DUMP(emscripten_int8x16_swizzle(v, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + DUMP(emscripten_int8x16_swizzle(v, 0, 3, 0, 3, 7, 1, 2, 6, 9, 14, 5, 12, 15, 4, 10, 2)); + DUMP(emscripten_int8x16_swizzle(v, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)); + int8x16 z = emscripten_int8x16_set(-5, 20, 14, 9, 0, 11, 120, -120, 40, 50, 60, 70, 80, 90, 100, 110); + DUMP(z); + DUMP(emscripten_int8x16_shuffle(v, z, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + DUMP(emscripten_int8x16_shuffle(v, z, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4)); + DUMP(emscripten_int8x16_shuffle(v, z, 15, 15, 15, 15, 7, 7, 7, 7, 31, 31, 31, 31, 15, 14, 13, 12)); + DUMP(emscripten_int8x16_shuffle(v, z, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30)); + DUMP(emscripten_int8x16_shuffle(v, z, 7, 0, 3, 5, 9, 11, 1, 4, 6, 12, 19, 4, 9, 0, 2, 3)); + printf("Done!\n"); +} diff --git a/emtests/test_simd_int8x16.out b/emtests/test_simd_int8x16.out new file mode 100644 index 000000000..7d0f37497 --- /dev/null +++ b/emtests/test_simd_int8x16.out @@ -0,0 +1,61 @@ +v: 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +w: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +emscripten_int8x16_add(v, w): 3 2 3 -127 0 11 15 -126 5 21 75 -51 44 68 12 102 +emscripten_int8x16_sub(v, w): -1 -2 -1 125 -4 7 11 126 1 17 71 -55 40 64 8 98 +emscripten_int8x16_mul(v, w): 2 0 2 -2 -4 18 26 0 6 38 -110 -106 84 -124 20 -56 +emscripten_int8x16_neg(v): -1 0 -1 -127 2 -9 -13 -128 -3 -19 -73 53 -42 -66 -10 -100 +emscripten_int8x16_and(v, w): 0 0 0 2 2 0 0 0 2 2 0 2 2 2 2 0 +emscripten_int8x16_xor(v, w): 3 2 3 125 -4 11 15 -126 1 17 75 -55 40 64 8 102 +emscripten_int8x16_or(v, w): 3 2 3 127 -2 11 15 -126 3 19 75 -53 42 66 10 102 +emscripten_int8x16_not(v): -2 -1 -2 -128 1 -10 -14 127 -4 -20 -74 52 -43 -67 -11 -101 +emscripten_int8x16_lessThan(v, w): -1 -1 -1 0 -1 0 0 -1 0 0 0 -1 0 0 0 0 +emscripten_int8x16_lessThanOrEqual(v, w): -1 -1 -1 0 -1 0 0 -1 0 0 0 -1 0 0 0 0 +emscripten_int8x16_greaterThan(v, w): 0 0 0 -1 0 -1 -1 0 -1 -1 -1 0 -1 -1 -1 -1 +emscripten_int8x16_greaterThanOrEqual(v, w): 0 0 0 -1 0 -1 -1 0 -1 -1 -1 0 -1 -1 -1 -1 +emscripten_int8x16_equal(v, w): 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +emscripten_int8x16_notEqual(v, w): -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +emscripten_int8x16_shiftLeftByScalar(v, 0): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftLeftByScalar(v, 1): 2 0 2 -2 -4 18 26 0 6 38 -110 -106 84 -124 20 -56 +emscripten_int8x16_shiftLeftByScalar(v, 2): 4 0 4 -4 -8 36 52 0 12 76 36 44 -88 8 40 -112 +emscripten_int8x16_shiftLeftByScalar(v, 16): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftLeftByScalar(v, 32): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftLeftByScalar(v, 48): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftRightByScalar(v, 0): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftRightByScalar(v, 1): 0 0 0 63 -1 4 6 -64 1 9 36 -27 21 33 5 50 +emscripten_int8x16_shiftRightByScalar(v, 2): 0 0 0 31 -1 2 3 -32 0 4 18 -14 10 16 2 25 +emscripten_int8x16_shiftRightByScalar(v, 16): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftRightByScalar(v, 32): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_shiftRightByScalar(v, 48): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_select(b, v, w): 2 0 2 127 2 9 2 -128 2 19 2 -53 2 66 2 100 +emscripten_int8x16_addSaturate(v, w): 3 2 3 127 0 11 15 -126 5 21 75 -51 44 68 12 102 +emscripten_int8x16_subSaturate(v, w): -1 -2 -1 125 -4 7 11 -128 1 17 71 -55 40 64 8 98 +emscripten_int8x16_replaceLane(v, 0, 9): 9 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 1, 3): 1 3 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 2, 0): 1 0 0 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 3, 91): 1 0 1 91 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 4, 127): 1 0 1 127 127 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 5, 100): 1 0 1 127 -2 100 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 6, -100): 1 0 1 127 -2 9 -100 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 7, -128): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 8, 9): 1 0 1 127 -2 9 13 -128 9 19 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 9, 3): 1 0 1 127 -2 9 13 -128 3 3 73 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 10, 0): 1 0 1 127 -2 9 13 -128 3 19 0 -53 42 66 10 100 +emscripten_int8x16_replaceLane(v, 11, 91): 1 0 1 127 -2 9 13 -128 3 19 73 91 42 66 10 100 +emscripten_int8x16_replaceLane(v, 12, 127): 1 0 1 127 -2 9 13 -128 3 19 73 -53 127 66 10 100 +emscripten_int8x16_replaceLane(v, 13, 100): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 100 10 100 +emscripten_int8x16_replaceLane(v, 14, -100): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 -100 100 +emscripten_int8x16_replaceLane(v, 15, -128): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 -128 +emscripten_int8x16_store: 01 00 01 7F FE 09 0D 80 03 13 49 CB 2A 42 0A 64 +emscripten_int8x16_load(bytes): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_swizzle(v, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15): 1 0 1 127 -2 9 13 -128 3 19 73 -53 42 66 10 100 +emscripten_int8x16_swizzle(v, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0): 100 10 66 42 -53 73 19 3 -128 13 9 -2 127 1 0 1 +emscripten_int8x16_swizzle(v, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0): 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +emscripten_int8x16_swizzle(v, 0, 3, 0, 3, 7, 1, 2, 6, 9, 14, 5, 12, 15, 4, 10, 2): 1 127 1 127 -128 0 1 13 19 10 9 42 100 -2 73 1 +emscripten_int8x16_swizzle(v, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3): 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 +z: -5 20 14 9 0 11 120 -120 40 50 60 70 80 90 100 110 +emscripten_int8x16_shuffle(v, z, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0): 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +emscripten_int8x16_shuffle(v, z, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4): -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 +emscripten_int8x16_shuffle(v, z, 15, 15, 15, 15, 7, 7, 7, 7, 31, 31, 31, 31, 15, 14, 13, 12): 100 100 100 100 -128 -128 -128 -128 110 110 110 110 100 10 66 42 +emscripten_int8x16_shuffle(v, z, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30): 1 1 -2 13 3 73 42 10 -5 14 0 120 40 60 80 100 +emscripten_int8x16_shuffle(v, z, 7, 0, 3, 5, 9, 11, 1, 4, 6, 12, 19, 4, 9, 0, 2, 3): -128 1 127 9 19 -53 0 -2 13 42 9 -2 19 1 1 127 +Done! diff --git a/emtests/test_simd_set_epi64x.c b/emtests/test_simd_set_epi64x.c new file mode 100644 index 000000000..b702cd975 --- /dev/null +++ b/emtests/test_simd_set_epi64x.c @@ -0,0 +1,21 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +void print128_num(__m128i var) +{ + int32_t *v32val = (int32_t*) &var; + printf("%.8d %.8d %.8d %.8d\n", v32val[3], v32val[2], v32val[1], v32val[0]); +} + +int main() { + __m128i var = _mm_set_epi64x(-1588454185101182573, 437384867522774919); + print128_num(var); +} diff --git a/emtests/test_simd_set_epi64x.out b/emtests/test_simd_set_epi64x.out new file mode 100644 index 000000000..384b555c4 --- /dev/null +++ b/emtests/test_simd_set_epi64x.out @@ -0,0 +1 @@ +-369840811 -1425032813 101836600 986941319 diff --git a/emtests/test_simd_shift_right.c b/emtests/test_simd_shift_right.c new file mode 100644 index 000000000..8e782f568 --- /dev/null +++ b/emtests/test_simd_shift_right.c @@ -0,0 +1,22 @@ +/* + * Copyright 2018 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef int int32x4 __attribute__((__vector_size__(16), __may_alias__)); +typedef unsigned int uint32x4 __attribute__((__vector_size__(16), __may_alias__)); + +int main() { + + uint32x4 v = { 0, 0x80000000u, 0x7fffffff, 0xffffffffu}; + v = v >> 2; + printf("%x %x %x %x\n", v[0], v[1], v[2], v[3]); + + int32x4 w = { 0, 0x80000000u, 0x7fffffff, 0xffffffffu}; + w = w >> 2; + printf("%x %x %x %x\n", w[0], w[1], w[2], w[3]); +} diff --git a/emtests/test_simd_shift_right.out b/emtests/test_simd_shift_right.out new file mode 100644 index 000000000..ae1f9af97 --- /dev/null +++ b/emtests/test_simd_shift_right.out @@ -0,0 +1,2 @@ +0 20000000 1fffffff 3fffffff +0 e0000000 1fffffff ffffffff \ No newline at end of file diff --git a/emtests/test_simd_sitofp.c b/emtests/test_simd_sitofp.c new file mode 100644 index 000000000..729f87919 --- /dev/null +++ b/emtests/test_simd_sitofp.c @@ -0,0 +1,16 @@ +/* + * Copyright 2017 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef int int32x4 __attribute__((__vector_size__(16), __may_alias__)); +typedef float float32x4 __attribute__((__vector_size__(16), __may_alias__)); + +int main() { + float32x4 v = __builtin_convertvector((int32x4) { 255, 255, 255, 255}, float32x4); + printf("%f\n", v[0]); +} diff --git a/emtests/test_simd_sitofp.out b/emtests/test_simd_sitofp.out new file mode 100644 index 000000000..cc00e6f2e --- /dev/null +++ b/emtests/test_simd_sitofp.out @@ -0,0 +1 @@ +255.000000 \ No newline at end of file diff --git a/emtests/test_sintvars.c b/emtests/test_sintvars.c new file mode 100644 index 000000000..10e2c414b --- /dev/null +++ b/emtests/test_sintvars.c @@ -0,0 +1,31 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct S { + char *match_start; + char *strstart; +}; +int main() { + struct S _s; + struct S *s = &_s; + unsigned short int sh; + + s->match_start = (char *)32522; + s->strstart = (char *)(32780); + printf("*%d,%d,%d*\n", (int)s->strstart, (int)s->match_start, + (int)(s->strstart - s->match_start)); + sh = s->strstart - s->match_start; + printf("*%d,%d*\n", sh, sh >> 7); + + s->match_start = (char *)32999; + s->strstart = (char *)(32780); + printf("*%d,%d,%d*\n", (int)s->strstart, (int)s->match_start, + (int)(s->strstart - s->match_start)); + sh = s->strstart - s->match_start; + printf("*%d,%d*\n", sh, sh >> 7); +} diff --git a/emtests/test_sintvars.out b/emtests/test_sintvars.out new file mode 100644 index 000000000..aea5592ed --- /dev/null +++ b/emtests/test_sintvars.out @@ -0,0 +1,4 @@ +*32780,32522,258* +*258,2* +*32780,32999,-219* +*65317,510* \ No newline at end of file diff --git a/emtests/test_sintvars.wasm b/emtests/test_sintvars.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f2713acf23ef8ac4dc24df0542ec9cfc4977e39c GIT binary patch literal 45902 zcma%^2bh&bviHxM&N<8(m;nSaQmqJ>(KUya7j-1;>h7xduJ`V)X<649)SUs@ zLl546?*k7kLVB(c(iK+Od+)u+9kPF0Jr7^w$4=O}qhr@Y>Uk9M_woDhJ8s-2n++?a zj`@mVTNGi9%fmL`tO%+t52`2XLCB#8FE6hD-eV6MzkkPpf0;1$;JptTd(i%W`TO4c z9e6;gR4;`fNVE5T`;H%*O!7dAnXvDEI__9$4Ldk9@~5B&>h;@bA5Ung5o6@&V%x*>B%*$*%kEnjF^kRULKk zpAJ0uzzKgRNLZB%oZ_f6?(`~uu~LA{GTRKR7y)}T;{h_ zsYcZv4GmE(ZS2{rS1FFuG*!~HDJqrs?>#A6JFf93(VtX*GXCVHfB$n>w0611pUS^S zc;dsNonU7FSNor6M|rw`D-T7@y=jH99UTWBqK4mh!hwezTw1lV_n-bW?$GgnF0GsG z{ilwxV@v&-_8vEG;z4`wH~z2t{$=k2f3|5U&-OlO-vbXW^{wzbj;y7X@Oh(^Mz{~o zDeai;J$}EAw$e@wfBZWfJ8qn~Z|BD4AAGj-9XnoBJ8=A;oo{#l%f9=ME%mOFe~&+R zjQwk=PXqD$x8+_+uSWm)4S5df7+Y%Y;h($jJ8^8OsYi2ET05#W?9zYa$khj|JaXj7 zhF2HI+YXJQNozNRXzd0owGL`nyCH9C&HvIa-`cfZ)8STXPHGl4)w0ss4NbLj$x4G7 zY7PEl(V$wbPigJOywswUgBl6xS*v}LM!N~7lr(&DSy z8phZd>&aKXcn#aJdHAXT>1Dl?uF0ANtC^7A)?3~_)*Sj;pRkhkwUydJKkJt-Tb8tk z{?&;~B2iJ2)ZSP(L6+uC6exUFOB=yR|Q4nz1HYD1N1U0YY7>k+cPtuOBe zwqDrCHV7NrMz(QV7-lUtNa(aE`A8dSLy9kGGRj8TFd+v`S_a>|i_Db}Du! z0UvFnZ3h(#O?FbTyAEo|OHH-c4vrRA#d3?Q@LaPqa=~)V;<&}t@H;EzUq++CgHb%( z9*o4Ud2Ljm^S+OT8IgR^!`#n7%{Mr7zGjIuu+QWDopGV`v;dVG_Tf;Gt9TVlzgm7w=_Wx1!_WgEwb05eA4*v zVI+h;q|9$3aI|mKXEHM7jjiFx*l_22H=>Y-&lI59k(*wabg+#X(4h`ma~eUR7(NltTpo!Hk&UTqIY zq=tJH=*OqT@i8%+mD*Wp9#0Gxr*?6gr|sdY)QG++?Fct34&TIZPipt1c{DLBNo@(q z+rta6OKLBW>Mh0Ln;1S#?Nd+nLux+xmyx-8x}vrPN*H#}8QR&mHhWy9T(DT1Qjch8$jQ4?D5$(3cp9i6p>oAe`& zSyUD(aK)o#!!2^K;CD3DdA@8nmBk-#mF@Ym5`9`W+*@6Vt}M5PAIgTi$%9^u)q9Sv z*wGcZB46apb8-dFQO7&CV&~GMCWJW^QHQ^x&NT!PJ|Wy*v8O6_d!;?xU$Ofug0!?^ zODk}jhj)bcE2{bX6;+UIP;^&*8T@w*zs>3)Usdd@ifBB!YLlzPeN_p+t=VtwWY5+h zLQSt4t_V2U;ha%5T!R1;K#~iqhPy_2)Cr3EQ6cD{L`$<3JIS?P&v{jwR~6P*R_)3v zSRb8*9vQ4Yui6&=z+d}Ad)V9d7Mt&5`-sW+wSC3n``JFW-^8%L?Jw^Bqy165J=VtB zejVXYw!e*?7!I%l#M1}bf#T>^`;)bHgf=_CS|^5aHcp&;kR2pGKG@pq;Er&JjkAL% zhQHWf6xVL;;@%EB#5y{{1pAA1ObmzG1Us}fOw5-KwTa#qf3?4gbbqtIsj>fVf7jPP z>>nCV|7rhp&N?j|+rbITyGfa(aYNW!Cj!X{5ofa9cIw~9+ z*|AYNiLcD6wXm>Sd>+MTr55h00t-Cvs)FdkYN$3wwVJ`0u=R0~;VNUo^vI?Q%Zk=7 z$47R&7kUD5Vu2GQJJADXM24%hgp(p_ds2~udYuv38J^(G$jVve_Ow2g2GMro_u4yG&Ig#uo|OiBGPo+Ew(VJR;wOa7AQS z_&hl`Qg50IL(hxyYX{prq0yL7MR0&3S4MWFL%%9A94$AWDKHW(ua0cKxaLaOTD;bxF#~(30}>LKwlf#wGR6F$gcMa-w@diUft~!e`930>pcVU zfVe3#oazMs35A;@yV*h964@;d;?~G+t%D%`w#aa|I0)haaeHJq2LWQ$ym?f(BeFY0 zuBvnNosr$iLZBnuMQzn}?~V+2SAjQitzl7Qi@bB)6WKjp{JoLg%R;6j+@}z`Pl<~) zQb$-^hjV{qxWx{qsyDv?ZP`Ru6w6GF%a`#B;p}j*km;USZKB8ipP=o*ePhwIiR;o)QTk50R ztKwpfp07vtx>xv($lg$eUyX_>?2S1abzFU z&h6oo$Z+q|^q(pj9}~i7k$pyn&ZgGzd1Rk^hA$%ff`)7lUq(jCFUjy#l=rf)!2D~a zCuljF;n>)Y zbp(!!?YLO;)%4hKYPI8I!>u+doEY1QS~(x@7|w`ohQ3x0I{|AXzhm+{OW@a-WqfQ* zvM>x5S{d(Z_-u6z9Vf+hk{5Jx%$9NB#BfSXM02a1!or(AbZTs;di-gzo$TeDE{~lS zw}dld#K}`mJwGAn-HzR_DsQ~jTTkyOrf?(*w!|Nbi?YDYh=jW7)lI- z5T}U{i>hHwQdv#Y2m{l7)qHzN51@EUm>IL{=yv~!^Q zxiLR>E@+*{?jVN$+r#IRMF8d=UK%LR(I3jldxY!}8_PhAw-MRe(j z;gZ-ciM6J>R3UaLYo^(;&5pIOniJccSge0pY`9A)^K!-UF)>^b+Z7OTVwfA-T((Kf zEwK?jk5pGG4&THuKeqYom?nm+W4oH~h*)FwkXSMhoo!O4HaCg;4Ysy;`+aiZ_Pi*&iv)vcleL`=v zcy@7Yi#_`O*zS+RgMhk6KQ(*M6F(5!14?{%mCD>%4K3m`K6cc{E+h)03kI_hs`^8* zJ=Db#S$%u@aBMhX{z#0Z<0m23pTtzk)QxDjK*`CG@ z*gqB9Qy%biY`76@)HRSiQ{+}N$^hRuNIG{IUdsF3XDvG}q z+gl#}PHgXZ^t-XWOSD#e@5D%K-ipH(l<|iAugj0%W>ecDZ0;+*&5IS^rXkO$IFseG zu|4YmpJSf%sqy*Pa8LV8_%xk{$uc(FbM=sr!(mT)+3$%)?+Llrqi`>^9HDjJ`?0<6 zAU|;C=C7Fh!`MFb(2pRmeZ;WzacmzeFEP264!Iin>Z)B`touG-1pXwpPw3_2!>1Y^ z>{EK(=dsp(pF1+2$CT=;Kk$J%U&Qu>m+@t6I9l_@83KeeW5F2gI`2 zaH?Mo>VQaRVx5U*{K<(;PE_S1kX|IqX_zb3k%{3ZC!!0f05l~roD<54tzoxC>%pTE z8sR7bXmO68n%LAtE5f4_N~FIZlNj!3hc$vYX061IO%!!pV#hf$(-WJXXq9)oLhN`Y z_Jsv-PN>5miI6aX#fWP99Gm^S=?o8rHFd>|k*qMo)g_LM!Vl$msXD4>H@_TqkI7fNx950#t zFzfDiMiPSU9{wZ4r;u|KJJ&0Deq!ea#(Ke72_&~ohR z#IE)X3lduZLEFPMiIMUeGF+Rm9J>~=+x1FM(1dV9VmBmOj@_6Tp*O-6HzjtHx5~}# zVL5gSt!B5-e77ccD^cy?w#0BZ1M~L8ZcoC%Vl_6<8}JV22S$K96T=Ox(~f>|S7LWL z!`+?O-4IMM1n8Hh9>~fgv3nC+L`&b3*ga0t`x3iPE$!j#OA___#op3hP#rp5RCfRPVKZ7cp_m9`2>W0GO@>#Vh#CZQVUOsa8E(zXA*lR;lO~rtNI{6Kx?;` z6AlenyS-d6{ws;S;-x>I*z;cZrHL)2NQP{V8t5m_dIUY~xx}9Hq%S1)f+PB3VmJ_e zDY2J?=JTN0m}d5@%H?BKpF=5OIX$4+Yl-1jtrHQFy`C6uMUuUd7_K0hw#BQcTfCXr zn~uO+iM@rmwl%z+7_P`j?1~WHNeuVa3JvpaVmLn^p;v*&dx^bQFajm`jP!nD?Y3Yxqp@ z_L;DfeD7mNkA#e9pC^QCMEfE!+~*!et`F%RUnYhtQuomK`c(ozCH^Kc+*eAhbxFb2 zi;7>eD($yjX}?Ph_w9;+zfbIYhx0>XKR9iFL}2dt{G<^3NvUfpj0RYi*s>MKQ_FAl z{bOfpxE^D|0h7j;MHnn5Z<;_*gr>&>i?YPvAOEtSqPi;E*9LPE7M>FMsOtYlPXQnNZQ-=kPD$-F#?;eO!$Gw(QadA+z@oHb zRo?N#wVA2S^s1bl+S#6HsfVAF8t!x;pPL%)ob;FBJon8^$At4!cE=cVHFXY0M@#aENtZ1)`QoG0_E>XlKis+2Ao6SF2H)KAh_%Xtz zso^f7n0|(vTHH3PkLLoQqS#iJbSRc7LkLZ&_tjcp$Y0$XH-fso{SFtR78`*hf=_+|(XZ&WF-`5@T&@kL&CHG;EdW?=Of5zsye(71$bbN|tgS zNyIk!G=Z_>4e8&kU>wHrxwQ);*cgx!+b^=UB^+``%8t*PO}B==PF zf^Tl)kg0075p=uzV81)$=_1_1)c9Tq)N4405a$$pcxP&NIwp6ec9%CW`EP^i?oJKg zowVno)c9Bg)7@CL8w;k}sxhN=@2Nt7dsD;Bhs5`#cAtoPPZe@Pfo^hUq=1@)|2sA7 zzjaa!(gFZ&De4-cAi4|SvSMb$Zl?xl*I zXH#{OuO-|uexy$z>$GDt!nGPZE;HP*9`#Eya=x9} zbdNedv*WYeaXr(gwiB}ap}}^7()!Y&*_RH@n)Oc1tXbe@WH!TR=aVuc>?H6xS%{sS zwS-eMJ2j)LacIe`%f6&p6+SJq(>%xNnVs%cJ%e30=_JWJJqyjnLVIK?dZvp~ooq3sE;Z1O5X1IAC1%L|ya8+hkdE9)~ z9skliS9|kZt;CI~_Bh4pw?H*tkc|r0pyeR?cMWv}Q@QKBDTjJf4pp_U&kT1R4R%9j zHz>n}T@5x=M7S}t8=dAiWpgU>ACW4OK(klG!bu>DJ6{^@h4F zv)erP?U~)Kh8pVQuDMRy!ps(W@;fubf#zKbvAdiS-cjyG&YOirnJsdH--BS-!QHF2 zSOk6V%j`anTFio^-WH2#i~B{7`=R86s-}ZT9Vlk zk9sV#N9&*-1JvV!V2=aq2~G~P@MLBWX5s0~@H|bvXY{R&(zBW2XEXI2f3=x=UNP!0 zFJy*$zN>|wfb1`3OkXdG@WsCDrOa^8QOe7i`ti$3te*X>=OPf6d4=7&1ALWjZf372 zDywf|U&{<9(649qx&Rl7S#KcYEdal%O{cx-fZ5mh z7|SP)Ln88oBk*o!?|R$4m)U!03AKk0GW!5nE#bq=K2%c^%rVzTMf}9@v3n%i`$Sd$ zL`i@}%Y2HOl*9T=_=}M~&+Ky#`64siXH@FT%)V5mICMnk>6^^H$t3Unwo6m*yUcLk z(&N8ZkbPg^tIUGbBAk{6Af;U@-GFM3%QGM#1XEUV86o$|<7tmA+p%R0>Bp7rI3=9s!PCn&-Gfgk+X)1-l-yox z+Ue!6K1sqxHHK;VkCETjM{jeZuz`2mbtUdSv1}(gpc!SG;ebvm+ew1IuEfeGm+fSa zKBa7@c=V}dJC$fHS5GOU{&{jaY)Bb1qspS>)Ux3wmthC~s{M{eQB1K#NZ6hg-!ku7r1tTKatxfcH0{(FVO zFDct4s*Ofn(1BMjEgNo`GZl;r^x0*b?a=3xZH_mNijvTCrHTei6lV_wBd&_pO z;_fMjJ!`gSeW>dv_PwucxMJ*MECtTuvf=uv1_Y4g{<7h2S5X@9dP{)+K-nH}v>p^^ zJ_urT-TqKOJGIJ~@KD(vQsBVQUwKIDLi~rz_At6{6T>5AdjuTY!x90qCDi$`vOPvJ z3Gp8<+vA?>2{;laXb(@84Y#D+5uQ>qJ|={x%l0%GB*cHFY|nUxXQ>NBZ4b|(q*=D- z$nZiLA^r>Hw(z3T6Eq>bRJNDO65_vHHbP%UC-arEz2Ysi)IA9CU!~>j)$+vfTG?JB zsy)13Hr!HRzEQR}%AtQD#P9Eo__p%|o%)@!;riF<2a~^Bws)PA-z(dD5KS=zxDdZk zVtHTf-XFD+vb|rn4`}ueQEGPjegxO5**&}?eC&PrV{djZv0e;3|4G?!Z`XNI4fk2u za4WX$=Vilrh??bX=Z-JR_J!m3W!b*;kgw43E^D^>x@@@KE#VtA^EX1|i*o3jS$|3M zzonXz=6_d4n*SXX{=RJAGGIs}D+J0P?QngLj`CY5q|aTZuuy zjw-ZTr&ergp@v$q$*#*ftzy&AW!0*=k2=jV##z_Z>a19&Cq1HKM^uF9krl&%=#+|0 zk^bxCO6V)8+cK5Q$4bQljY7KV0nLu77;dFH5h2;J6~lEWp*tK`Fe$?M|xLNmQ8tN??sd5wof`s~Wn+ z`LG&t%hajo0>D!$hSTEy)QX)d!M#)7}}C{MW7F?24W3%8ln#?3_wCuVUv_v^zV$V&{AF%;GO$ZQ+87 zUEom{R%}+KX#Wc>+(YAB zUMY5oS5%5!;@pbOt%P|Mo9BgHS+Oe}kE?{oJn)!bvH2c#b;Yi#<8d{h7XZK(fX1~I z1K0wRURTjt@>;ctR+ra#;}FQ;etm^-QSye0;jZ_nUy_ksK*etKsGBNwQ)R_n;>{K9 z5^wgjRD;~NRP2^YzM9(jvI=dtZd}^3@K;;;q=}1=|EKKbn{~;k?3Y)uwoAil?TW> zAw1;z>-^Px_pp@GRoElMkzhi2v|^7`>`}ODNyV0Ut3Fn-$CTg0JHq42V~=}Lb}v=zB~)OU zW-9hFP};*Qf?}^w<5w&8D#@6~A zwtKr`Z+nJ!D)tT}Z4d8OjFj(^;k^p8-Fvj?2TD)Sgz#a-KCEcA`>0}segq?bT(OV6 zT|RLSA)l(@?98{D!@JnX~rn|54RII5^K2~Gj zRO}llrGQI{-}*}QTeWu6gz#O(zOC4IH1_uu``(HAL&bhjV|#c<__3mu>W|*oUQiu6 zgThZ0!+q&dMRP5y7;eQD?W`KkL)3s@I!_!?wIizPm`7IaNWTR)rD{{Enmmp|^Sw&- zTf)>T)7;c5m>f|JjhQuRnmfA6FVoz#D%0FFZYCUq3NhM%n&yr{kN#NYwPULj!f{nQ zt{Q5}+|xU3P4nC-RqLsF?v$!i?$oNC>gAtUwG;jJ!)aAJjWRXQv5ub*j`s*qJ)vqR zc+weFo8hRQ#Nj}J>d9Qk5TYl7s3yAORWKhti#|^&-6Vl*r&kT9i+pt^KNFS36_U`O z&Z-)&pc-p>Yg8wjS+$vt!P!+iyQ0hqi zDp)h64mLBU=F>gXno58OflG>t<|d(vVv<|44V^~7?4ZklYdW+&xfJ*;SNry{eLT@3 zr&Jp^T1K~oi8c|SQ(V{R1YLL&N;9NKEAXxwnr_i5#p0Y(!ytC)r}Y?3Mt4-(1DhFF^9OKJ4)~E;TZ+l zGm#Mb*P0-~bk+3dq~Q)=rMStp*Im_}*#A2ZhgRT3*Kw71A&Hv1Bk2n63UDoU(fO5# z29&Bg30UNycK)Vo{J$lIaiw&%bG2n%)0}t(7b@liyNbC_Dl2Pi{%*wG&^IGST*OcE zza>8xL>sKBKC(1u`X_D)1uF3QQ)r%ptB4FSzK#FCFSy@hlTii~rJV_f>>Wyy%Sn``4-+ zF)IuH%Bqv=FFS*L0fT%KaR*ck@?F;r0oRsCZ@xYJ;8$OM_`e%Fg$5uA$xx*K(aUr_ zdXtq7iU}hmMe%J#d`ORL+sQnyMNf zB_(=QV`_|2{mwvGS@G!Bh;Guz+)ZY@vdg?bX>7XbPHp8L>qmJ`jC8QYO{c*`xJUF8u4ccNtm%1Rk%HSmg9iZ z`q{3xjcU3y)mx;del8RtDG{tu&XcmbBF>jGIt^9~>aMU3w3cvzG}H+%W`zr-sII{t zEp_IBi-fsGeILIGVhWovoC zTotF-LOeXk2C2|>G_}hUt^5Gx`d}fTU+C-0p=NO+76p`@8~)1vOZz1No5l0H+OCS&&3047uk2UFK(!m@1$Jfs z&WQ-VG5D-EFjr!KuM3KOi$SV64Dd=)@!{P@5k!;`Ho^sg2poyq(RM6!fwvC>$n5tn zer>;2zk@;yMd(5aiQP30?e6QfJ!}t!{0EA!BGP}_f0B3)8z4dt5T@LlxKw-_+3pj< zZ|%2gtG()LUa3p()gJy^>)HQSV`!+^R<-?|{Z3%HKJQ@vKq$o7+y1~1^SjLUu5n#t z^%Y9t;w$vfh%!Jexu5N4+X@BH1{xP(1?`XaM`6T8Sk-8NV*X@*vOg-}AC-+uu@19l z`-_jcwXbZtBTKecYb~;Y2sdQyKxI2n*|;cMWRt9SeRYI`i;i#z*JBS>GCIQgt-3pF z>+@OfVC{6o_7?8Yc6k5tDE3F|BRS*5GS)V8JmZIr7la-HJD~u3sBzP_4winzC0py^ zX~>Dpi7xdwe$=D5aZ64Are*U#BvSo{x7k1IUF9$u>i#WJM?@%w+N#AcOJ& z$Z)c$sgj)(aqCuF$&+<6mFt+?zE?6nWQIXD76b7Hp^GK7et0T511F~!fhxQJIO-&eKExAzV>P^zU00pi+qK{iL-U_ zwdmxR7QgkrH3!&+bn&vt=IAOcW)fscLWI2{Vko-;Di$#vVXja8bG@NepqQyD&Ys7` z*vKyS2yd>d`~qw}0UR-3*IzvYaw=zqt0V5gs`o6=-B&TkHM;Yvo#eH;>uUX5!gWI6 zIw5d%6xf}WwUN9YbhVMZAz~wW1BCT^uf<04#;B%iuKl^_Iw9Pm%dDJAkT>&zGtoZs zuE=z#Vs{m{KkwFsRh53b?z*bh_vlt?v5!pDBDZ=3h~B3Au}XS}?!XGsg^}Sv^iJJ_ z1Wihe*> zUo{{<7#Yr?61kkv54o+6;(Dxuf7tKKy6DE6>JifQNTM|d-V9Hm~n(H@fV|w4x zwkeWOvj%H0C&-#2J4^fGmhLvj{kg^h^PbjI*?ZZVnDg1T5Q1$h*4C21Wjfo6Mlwg^ z>nnzmZJT>A`!-Xl-qt9IdmlKx593wB-KadK!i`jSO=#0Qtmaf-Eia9fxu1eFGh3}K z45A}YO1EvE)okz>7FB*~HPnVM1rDXp)L4KH$p=oz2Oi3bDz)`mS(YktFvqDiR#&Up z`fU)rhw89_ZD5J4B=xWjMS>nGpnHY2u_dzUvyt2FDJs2*^y1=%#JXbR5Rw$o`# z`39|6T2kM!=kvrrP`{ zY8G?$fjMmj<}@*9A9$vZSS~AAr`xJjMx!(q^IfA*hNp^Jx&R4dQ3Vq=iV3k9RrL5q zQ3p11mdp`pG&Wah?H*7VwiUy`uhbBw1~tJXjiH$;=C-ZC28`3D+Rvi05LQ3z+-Hn> zpr~ghxB^)YeXr<>lR^a6A#z(@jgbp-*lDhZM6>vajmi0zDC#X}egC)W_XYR9Lb^&> zgIa}a?n9HerEp$YY8TQPdoXt8t;5*R-NUM&-c=xG4 z+#uWqiCSw(R>~hNxgoE7(l%IWtHCqexo=)MaEes4okf{&SL6K3N2I)Al;|Nr6Etgr zDeKjKaDT9me`cW-se?*8Fp zIEL4XF5;s$%u{^H5|4LV7)RXQ$dFAp=|v!{rrx4+3C05`v64oMgqHW&1(tShelUqP zPz^VN=wx9lEI5OWt!@h=>JU(ko7d_RC9*Fiz>|PO=$U6>Ly%^+&up-^u|-fVW}BL4 z8e;qsXx&6w&0vQ%akn9H>_zi~pQoWiz|ShVHEu-!x@rBG=;UqYF%u`luw%)3%FHm6@imExdL26 zi$pWUWaIlYjOqQ~z%*_TsPh$wQ31wkRbUOTK*HeMT>*^ESu!g4*v!n9u?wSYCYwM- znOD-nf?R_ow0Z#H6oebXTJ+PkVC!o0h*gUejNdZ*G04_0Y|EAP#Uu#*;q9i{Z=wdZ zB@L_AquV;(Z0~)2krG_6neZ$#xIv!gb<}lOw@?Z4z-P>l?Du0$o;{js$7Rtd!5mYt zvL>Vppa1w7G#-Y)WE5XFS*HnqNb_Je$R!QbZ2naUn|}}0pa*vWQK4E`D6R11R(>OU z>c&x_XFS|`!VNpJ1A{pt>(vH-&~l^TjhcSwV%ED|q6Cs*m8Ix!NxOQzkS_)nPDv)h z5HOe!-8{w|=d(eu?&vC$y^Ri&k92QCyQ?y0=fV9#11G zK3MShwP+!Dd2P^TejP+Z4;n>_tZnPGOV+{I3kDT#%aCr(R{B-R2D`jRJSX{lorPOi zpscq->XNM`@eiBg=7Cz8sCpQ1EVz*a7P*FPCgn`*tgCaO2qYcA&>FiH1XA*8XX z_I4Z%5lf4K#qu%hG-$ZQ8=fwvK*V@X)-|$vIIP>et~eJ%D9uA)T_11hVoF`i*K24t zOF&|cQ1;m@%^xbQFoXBXCymya40Y1xpaBmt0o6qwkZNJnZ3Q#csvTxli}bTT)^ALG z(ny=vgMU}nL%ep@lv!^wWQQd*zD);L>Uz6>bo0#El$T4GJcx^j8(R9%CZ z%$NGNBpB;Fv7hN+j3@merDj0YCy;9iK69=A~WeV*uDihjjL{ z_OMkv+_nODLRoyMw3S7}UBpDTGLm515&(TEY9(1p>I=zMf7u<8mS_<;5dp2wVFtz^(JLS|bzUtJLeXD)*Va`*%&a_3769D4TJJRwcir z!C4rFAfQxZF*5mxDb;Z>aWzlIgf$=%r>Dd>Sl3B;gPK|s?ds#jwfV9izyE7%Fnpcl zMPddi(nkLs_jdz$!>Qy958`7*pfkQ&i3{Qfm zme*Dwk49I{&=uySsrf9W5*X)~SE@!i2^TcD$pI@hh9+;@ULp}wz`v7*l@sOmf)L=< zOKrM=HK|Qy%@@#YQ0t)S!5aW@Lk{}9TdQ@NL4g4VTSmj0YImp6hGNBy*`6$oR@j~` zjkG`8I9~$vRrsC7?;w3Mcn!w>&=4CmqO@gFvO)BtE?;xEZ$P)t>OSx08#1$MBTW~M z@D8>?%^Ql0nzRanObWDdG3rqBp|qb?z>GR9eW|p@87)oL(HOZ7olhxPpX4-M5Ata} z&Uh@sY1>pxDbdLKU|h}jZr4!bIt%K#!@TDT1|yG1$M~yKwASt(a{Aa1bz&c&7-zb^ z7`*5|#aA!rqBLC80s%Ha8WS`qyT;~D0$(Qk@UWZ4A!Aal7u+qX6 zZB#FG8`a;&nt!lCg@+N91J-Y2*>U2NR=CAIY;EsxJ5|1eEon5`QHGvK&p8f80`U*g zxx_7gR(UWy(9Hi(G_3ADrkQr^8~V7vkGSUV@o>rVi>sd2r!7oDTL{tmXoR4MRUrpAhZqQNRH5L+m!rJuCna;&m$N-{P%q6pRCWAgM5v8z~OW_+= zb-0%6K1$0ezfkJ>4*_RarnX*#qxk>hUnyq$ls5=&+L)9W|ESoDQCO)lY2@&>REzvX zoKE@}LUe2h*M*kCQdXfs<1wM3QGlG^#Cbz83}9>rF#YuBQ%91se2pk?NA|YY5p!@H zaTgtFotENgSzOSMvf-nCO3X1cxsU*IyiDOo`_bmnzAN?<=H=P_c$wT&W6C@_rcAES z#egd26G*(0PM#qd$If_;i`#U{yrViLp;&Wk=E}zOSnTL$&4rM4dQ8Kw9s2kvS8pZP zO%Zmk5+gzsN-AEJLQkc6jY3UD(9kU@T6a6FxY3A{=)bFnp?MTWWXSHQ9BL@1dYw>K z!Bks8l0hw~te~d?g4?MuKg?EPoL!w+Pb72DXT=hs__qJ=E-bZf!dWa)F#xfl7Tl&VRwWlW!4D-&W;%u zFB5KagqtKa1g!=Hp-0%4g(O|GSV8^uuu&xoaAf|%F~khq0!Qo`S$eA@cCBo^(bm_w z890i*UY6gW#cK2?t~+|CzCmW-)XX=^7@S)0rdYP%x|{jtSa!^ZD;1=0^KeRaTa0PA zdO^3#9-P|wj+m|19e`u=xG(F&eZtEr` z8I3wRnH}zR)DrGh$WVA#1@;++Ww-DZ&8I5BIdtgNx;r$}X-ilvdvA19Sgb6yD|I2S zC^n&%#NmG0Kr5P8WH>Fn>~_>RJi^@C{jxWP)t-8S*JT4Oye0!`ISF2kWm1j9=%un3 zhY_`QY{Eq!T{ns+WNb%dRn8CPjztG^TT)Xtf$T9bJ*eY9k@N-ca4+XpeLllNnm zC&O4oe}&OHwQuvr+II_&yO3v9vJ555_L#Y|(P~(Bp7qAxs3nYvhuat^ zI9eE^WuOFT8PpTNhA0?lR0MO~buY?1gdb642RnpS^$y|Z+9{0|kD-Sk2q+2E`2Y<8 z7<6~E186#w0}5EmyeA5BG(DOE%7LOly-Wrk)B-4SPXR6iny|W&gSu2=}pllyG0zZ(rv=lmNtgZd7eHhyQ!3Eyt>6V^y<1QkAh(Mb{R7 zCT!6K_}|#5 zWB;yQx&%@r5Ix$gRR}#H=6b@Jgh}0bYf5*M$`Uuw4-(P`3F#>@SRWLAt^s#|jSfHO zu&=~A?dPH0*9z?-o@{g%G(oojTd}SFxtvydPn}yA_k&Kt5EEJtr!W^_(ab zc+S7&omF;K+l*_qzqQJAw+g^?x9|53v%|Dn$5eNY0c{irXvM?8=FrgItzQ4n0-y-& zss+xoO!8gfeOu5ou$8sOnH<5KovdY0X6(W<%eTW*qycAFYMh&&9b@31;g54YiAYLsu;J^XCZJ^W~-IkYQM zoxXS1nq$lEG-QPWuGJvQ9PP>r1@WhGgshd{G16nmo7%&%uBMQni6$imJB}Umo9L}Y zTFg&JD^jAK>C6?=BIy|p$r&r!3zbk&5A}p0EdT!59%e{afwV)onn}`k;;!}B|L-q* zz&lHAy|(Jvuhy@*saL<{{~G0uyS{t(tCm;l+oxYfK#x)y_3PKruhOqy(oah-G%~2b z*Z)i5m_qDo^tN8r60iBBm8@J*rb~Pras3Nho8}Wy8`o;A))#_BG)IcK?sYkCp zmlq-GFi^w5{pigsAl6v!N(Ge=2Aqnaa4*fZIMC79HY$o6*qAL(Nfl1-N{Dg??(~SG z4aaNE#`ItCI!o5rm*cfYW7ql>yfDyMls40KKYr@QYxQDT%VI=Wt|owu{p(-{4pqIJ7hGfAW{-xWI*qOG;`5PakXPd z5M_{>3~Z8$^1w?0TmO1Xt@PaF;R%Cn6ROI z35n(_Ye+zRwK_cVzq9-C`%(KXAq!)>HLR5JM(4BSNseSJ<|( zSCO0T+al?5Yi4jwmFCUDz0xQNYvd0*A$oQfqcn@9O`@vbFBKB1{`MLfA+lwZ;bJi~i-mSRH?T5SW&jo^e55G5`?P(7a{%Kvux%8JvOD3uMo< zoLE5KlB5N(kh}tlCF0$s?g6;qu4S>ABmn1O*E_ad(WYwNM5PLn&b+=nsj zzYg5LDa^kt?q+`M4aBf-H;zZD7yb;*CiI%f+k>n%at`R~H%Bh-H=gz3lusS^q4D#O7$0rVM?rm);%f1m2MFmAd8p75KNP>(a=UMnT5d z*Ydiqsh;*~gucGAy(Vpb@M!E}`^Ku*_*K>Tb=_&PwOYd)uHoM}y13`?@5x;|>8*%f z0I6P&nm5vQ0FDRWVMr6~w(L}zq5YYT*S!k_tLD+43nP62kn2Y!PrWYQBDwJYqQKvif1%_XYrTk&vf0+=tm0>3 z_2n|FmsNe>!Bt=C9tR(&LSa~1cR7lsYQ{9NfpcNXS*Z5kU+aE{IPx36#X<6Kb!VzL zHBCsQE%$eN1c6H)zQWx=6Z!Z43AS;vD-fi=;^NlU`K-@G{z>TN*A=I9p9usB-NaryB=m zr7nHOykQ*DG%pHqxH2O%uJ3R9ASP$GNZFE*%61ghE5ib=V(W)di0A8xk;_vOhoqtf zQhD&qI4*>Vvd|^T;Y9GPhGa%Gsd9KM@i8k{F2-=S8M9Po`|34q(jAkiL!-eVEL&Rd&s?KX8afW79fwyy2!2XH!eQ!{Q( z<1w=4kT%z3U$V{lY3$k9HN|^rytNm$D1fqW_bog?e`8zNZy-<+!A9M8?nJPUS801% zW_z|nxpIJBDh*X0l{S*nMyj;xTq#$VSgo_hYiumm2VGU$)wC6mn|1r$!h1ME-)YleX zQ*HS;YtXqVGJ>!#@&aJ*W4&x2PHu|`gaOD3#wtSB1}JoYgz5XY`@uGBq~+9UQse>1 zXi6Pj5cV`Luc3QG}-8u}D<(f*%n1p<2j#~uf8idjT(hoE?Os|~?Go62jozSi2V zlX4x;sFEvNKUH!B#f?yLD;FCbDSI?e$eRzHtF26l4U7ogqkGrnIG_V7(UkHd9^f^v zLxjV@oLwD^f=Cg8c%XQkuuYc|ghRWnYVGYhY+tSbx+29Txo28c=?E5d^HQZB%7G^Dg;^1SP(ktqMR09FrT@*$inGnYp{6LXwyh-? zJ5l;hDt&EVXS1#;I_g{Q@o@jBc`4s8G+Dx5l0~%I3_ACKnRgSssKf%Mz#U>CE8gyZm82y zt*K{5wvqC*fJ=*TL1-6kO&et0`%^C+&6Kcl0e-r!+e!*?oR^MVVq-2)aL1~Mo}qgZ z^@|gfeuBSsMd`;!HjFpT+I7Z{gz;x8{p<+g8Kv(+>AMuApY5fm#d;p;OO3I7Milp& z6d%sG*lZ;&$)$?LXs<)kh*6lK*{7i1vwfIFSi<|ToK?4Kyw}K0KX(!{+#8a1sVPYO zfF_XSFAP7HZBr^)?-A)V9eApULJI;@MjEKm4C3gkcX4{Gv%W*)h5{j0h)N9yJ3?$` zR2rB$LXE{%PG`3jALjC59YFTCC8>i|RBGdhWSS--!C{sFPBpmHU&rpKw$@9Hn`+bI zc;!i{=rDj{Wz)FnKSYw*^l?A1l_o*`TEi+M8aj2pI-=oldf+Oy+W)8%7Wil)1Cc(U zMfFi@u|7g%6$g2K^dA~FKx0+F^+j=~YpuNMY@~Dj1L~VPuML>TJV>{y&&hI1W;XQ@~wqs0T#rYp!mNE<||pZ?K&eStN~d2o{T&G?W$V3V;mYu<5HVwbV)DCT+3 z%00Te(o>0L10`={m{vMm7X`$XW7PIkwGrBNQM%^r2|=K~ngA}NfJ}#e{Rg3uyIz;F zS4l`SaQNy)%m+z@9BLqP?@}DmLIhydlQz!GL66APNn+4ZqI%lTFQFrV@Q2G zsgL356=8l1E%P~>9@N!zh`|Y}tS%#qJ)h-jZtxsI=WB;qGW2v|kdpPu6Mn^=><%tp zA>HLlcWNB=#t>9Oi!^Ut7`E?1WcY=JefzHO(tg1Y!KmAOSNh^W>T!Rjit`2<`Xxzj zr2dTxv~Q~OS7`&bWS{An&&h$<^v76D#YtTMoJ)heqjEG)OBhzkPEKli3Zh@mxH?m7 z@)|H$5#fkUvsq*oH%38%{{S{RIi{q|}AT8)9@%ucUa1GYj+m zJivQ_?Dqrl#B^4ekz%=jrmXXyB%GxAFkO+eWT+pf)ThWkzelp{t<@=cQSsEu$Z#=u z@nA|@xWwOFnZz3_*hPRcv-P0L+)%u*(1sLePQr63*2W8ydKem{_R%ZRm+R@_e3%Bm z%M;lEo5SB45Oh6Rod z7SXqOl|{gB_Ggs!_R6jP9E-wujD@3pOz-i_%Pd0ahU5lbL9kA}dvJl?Iyfy|pv^kM-Pc2{!H{R2AKow&qV*hp&m%GTM|2vG3Iyn`!@Cq2U@GHCJ(T2 zZ5$aY$3ZOU3Rwk=)4F^#I=H*IgMoKI*jtBW5NxD21`L*ES2*Tbn8g}Frgt^o{QSaj zB&Pm-5Yj2*A6wZXFaot}<#%KnCZ`O&dtrsxQ~b9^2!j4Q>{YY91ieGA6wQLF>pXq zMD3>$I#d0yaEm|of}hQj1^(@=H=Y%Jy#@5b;z%T%6>vF3T< z6Fu+3Gb@J`55|n>JoWt-lTO}?;Zd04<8ZwY!)r31a~|SP#LVWXw8?b0i!`&f4`~t} zTKj^>WbIFi!LujJpU$YuAa*Ac9cjmEJ3h`HFW zw3~))odVk`Ih%~BE@vvX9e|vs6HH_nNC>u(t`sTA?t2&lr$&+;^LLy2;wJ;%Hr+$) zu{!m%f3|7A0ju~!r`mYX4AZp_0m4Q!#5OdW0{xz(Wb#EBsdt zApyL^Zsd4nevVFuF(}`p^f*XM)f06-s_~1B%-eDP7B%3+aZS{5HVL`?7vcz2HkU}E zO>&x(5y6bqZvHe)^(P}j>QU2HdTYxu>Y+nHMh_hfc3tsixIQP!y&(zZA#!TNT5#+7 z8=fX!;3NWf4x{NT_bJ^4k#2gk@VYQEo? z2!$)6t~kb6ht4*-`vGc)KGPqfp2W`5p}&xr;JqMtHSW?=F1BLv>-=yRogL1NbZ&^} zN@#plWLKe9cW7~h$L4ah&hSV&gHVK)3v_237z=>DOHFT16$8jM{#x?swB)tUJJ&k8 z*HW*M#R(qtc`>0~U*dW#cgty6VS${PfZ^S|vnBzXgyA*Y%7%|BPGQKnmE`7sMPAP1 z^)h=T{BCwRc#m-sl>60TB;>ccjI*v1shj8PV7MHG#k`^W1~2=f+anZKLG%t~;EMRD zaA$;=oO13Uhju{xuB5x;#SK`$1cKggoj>m?Wb1he?Q34bC_&{f~phBW`d27>?e&|U*&a%XSmVVXxiMqE^EHu3F@C3ijcOv;@V`KfGe6|tX2VN8ZOoH4Sv zrLpZZe-4_?^ab|Y^$fHIDU4s$OYAx^!93S68xwZUNE9~4w^J9-2$_vRW~UnVcD_FS)wU4p{ty-C zAsnfY_Xl`@lM(D+6*+&b=Txu9zZnU5F%{%=&tyfuV~*TGY}y&yaE@GfX3gznO~Rkq z@S0xq8-XDG?y&F~g6?$JbvP~y5yVQ^Es&iF-2Cah&U<^zsdCX*UW0WchhvY;@gkl z?@?9nrO%8H{>Y)W?$c0>OR&O4uhYweHgdESphxEa9Nnz~%?s=a4;Yfy#a7c%*>pjg ztOrpS^q|pyuIZ_2&KOy$Gp%)d)Q)od`B{$Uv(B1j}*Q)i>EnE zqYHhC*V;9mnZGaagHK~v~iF>>KEh?^J0;kVe((%gTIbfQ7)2)fD0TJb#g zT)mu#(-s~5XkI0ilC+-3#&biAIT@)#=kdrw9h#zu9po)NNc-=br4?Ol;BSs~je~5r zkj?d@mF+g^N0W`%LA-7fbD^T^?ii5Pu7Mg`{X%n^t^OT)4?Ab8zc7~Cw6@iE#Ks=Bw%q5SfDx0_s^s?{oDFoh5Pg#(_V)Zg=lAEFd;Way?`X!) zsZk8m>&vk9WNxk?w|Tzc%4QKrXn@ZEo$<2Q|1ubAw=|`BHznQd6+vP@U;2xy_%)Rfug0J1l&`6pW+B=WS zbjuDcQA4`=A>rric`&#->o4WrX^MZHc({%^RYabDq4mxW>o%Hv74 zWBC}#Whw5e8E)ie1ui#q!|`wPa+oQ|J>8Dl&qdur0D&C-xqKXeWS-L3bc-;)E4Ouv zG@h2rxw)cyx%7;yo)O}{! zeYwAz8@rdduA3Iz!iCtHI^`RU|wlN$E1F~}9UIs+HUUdG0&)znYY;a(M0~;LJ;J^k4HaPHq#etlB z(XJf3S189%Oe>fSwL>mX{zzabdcv_y=?yN~+&C(zrELHT`bq=6$|*4)l8JcESO5g7 zH0)XgoqRWxx9;MPO9D%k*$8Nv@?&hsf|$@o&zQ9co`~N!*DpLShegK>U}F99ktgH~ z>qWr{8BFp>;jNzB9fGU5lc^OG<}pYZlT!{2$SSY1qlJ+Ks9@KP_34dFnB*W<;+ee` z4}<4Eq%k{S8)Xs=yiooF=O?8Z25>^c9*fYr{vsQ9-)j*8>xvfzZu>z8QW7B#B2L|AjWLsLDxB0?*_K}ljnhh`@U(FsF)L)go~Mif^qHEmu4wiL2ElgG9VtCbqM03U6(!ECtM=VNgm)uyfduZ3tuEH!7 z6b13sCrPyR(DEx+OKGfe$eS2pX>G)VVR z>6~zl5(Up{F!ONi5rh7}NE^vH+P#y=qbfy_TF{^87z zC1@;nXa23?-!=2zm^A8MQWc8h;^7Qa{gdo%xj@$b+46XKu9{0GH< zF!SFo{@XMEVeuc%{1~30%jC-PzgfZ?cB`Hf|AId{Ien+S*Mf!ICDW-8Mt80b$xub^ zT5#I>g#G$S{xE@3*Ph*G~>Ozob)=PPQ1Bv_ZF@Ax#*lJ z4UJ+4xs%FFjchSpii4h_3g|Hc*UzyeO5vJa>ZHHz(7I$@XpwcHKh}ljSQk2DU1*DS zp(oabhFBN6VO?m2b)gT|g(g@RI$&K$-@1^yb!mxf`mQ8tn@9wp)3iD7c5(in7^U({ zBZY_H_%8k39-LAr6y3S(%rIQ!PAn^z9rXzNLHVo8!$n}cBZXZ9dO}eYU^WP|86stp z&~uasIg4wj<7GNhC?a9$C9vNbImG}i1r!;BwJTR-UmsJnKir;k zFfUN}-u6*v$Qd0Sb@=tl!*K@XQILoHMxBu%;@zQsC%0v=K=@!EkAl-Dd2CLd(mpzJ z4oObRck<4l1k0x&S;?K5w0pQCM7#B4&;;`|j*djB^QzS4IGb?y$io>l!8|+TJCfoo zc6dj`tsjFXm?wXm3EjL|o>%^L#cSqWIb9l>a)=O^V;`DBnmwKIX(sLHf9&hm?;AgS=Uqo8KRa{k%;&%G#fQH1<%hrGRjU5N+1k0K zdK4#XU;Wx6X}hNDb^okaSMzI$uVR0>EpK#8XMK=FIs~qZY@tFi=%LsQFdr-liXUi3CVKJdIkC5I!5KxK&wH3$?nh z!bnwXkzYx|Xf2ItMq$N|V`oZI_^Y)ziJi}R^_H)aFjRFfI_s+i$>}9jzSfj>sJQ7> zd{y@s5~bU)QiFNPU?{*p5pg>ihK>PvO1UJI7U?^O?k0hu&~rfBDQn@Y_M zN`_~XVGuyNut<2CAOiU0M;)w7Y7Lqfwvz6|3#}MVo(SVa)nZi*&j+ce6-2&QS=22p zSF02pD+Eaf=U5aj`GIQI;Mnx1?zO^g%fr$DUpTL;{PJT37sIO{yH)|e0LwTfo4 zs)u1y>qp=>bO0`I;eq4!aO>~a7reZzjRX-XndR1Ah z)vKzll9H&+9<83KMrL)37Q~WO*wTQfWob1BpimG<~cRuF!d; zhs{N>KWxPc8T-;%x_VZ{qp#Kpnra0`ktBbu(X9KzOCzlYD&Wy&=m=0QGBllLnvR;( z7HSk5(Lq*7ecZ@e3h`8&ph*oOM0d1|Q#O_8rf8<^WF|S_RNKp9=Om0!i(aheeWVfl z&_o?`QJ934ux{lq9JMVp9X^we=kdiY9QrSP<0;EVz)u(x%5rh?a1SG`L|al96edwN74_;u2L5J?_E;=|MKs|w*Rj6`}S1#>%V +#include +#include "emscripten.h" + +struct A { + int x, y; +}; + +int main(int argc, const char *argv[]) { + int *a = new int[10]; + int *b = new int[1]; + int *c = new int[10]; + for (int i = 0; i < 10; i++) a[i] = 2; + *b = 5; + for (int i = 0; i < 10; i++) c[i] = 8; + printf("*%d,%d,%d,%d,%d*\n", a[0], a[9], *b, c[0], c[9]); + // Should overwrite a, but not touch b! + memcpy(a, c, 10 * sizeof(int)); + printf("*%d,%d,%d,%d,%d*\n", a[0], a[9], *b, c[0], c[9]); + + // Part 2 + A as[3] = {{5, 12}, {6, 990}, {7, 2}}; + memcpy(&as[0], &as[2], sizeof(A)); + + printf("*%d,%d,%d,%d,%d,%d*\n", as[0].x, as[0].y, as[1].x, as[1].y, as[2].x, + as[2].y); + + return 0; +} diff --git a/emtests/test_sizeof.out b/emtests/test_sizeof.out new file mode 100644 index 000000000..0cab34221 --- /dev/null +++ b/emtests/test_sizeof.out @@ -0,0 +1,3 @@ +*2,2,5,8,8* +*8,8,5,8,8* +*7,2,6,990,7,2* diff --git a/emtests/test_sizeof.wasm b/emtests/test_sizeof.wasm new file mode 100644 index 0000000000000000000000000000000000000000..792eb5c1c989d9a8aa129f8befc98e6362456e1a GIT binary patch literal 46395 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 literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf.c b/emtests/test_sscanf.c new file mode 100644 index 000000000..aa38be3dc --- /dev/null +++ b/emtests/test_sscanf.c @@ -0,0 +1,100 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { +#define CHECK(str) \ + { \ + char name[1000]; \ + memset(name, 0, 1000); \ + int prio = 99; \ + sscanf(str, "%s %d", name, &prio); \ + printf("%s : %d\n", name, prio); \ + } + CHECK("en-us 2"); + CHECK("en-r"); + CHECK("en 3"); + + printf("%f, %f\n", atof("1.234567"), atof("cheez")); + + char float_formats[] = "fegE"; + char format[] = "%_"; + for (int i = 0; i < 4; ++i) { + format[1] = float_formats[i]; + + float n = -1; + sscanf(" 2.8208", format, &n); + printf("%.4f\n", n); + + float a = -1; + sscanf("-3.03", format, &a); + printf("%.4f\n", a); + } + + char buffy[100]; + sscanf("cheez some thing moar 123\nyet more\n", "cheez %s", buffy); + printf("|%s|\n", buffy); + sscanf("cheez something\nmoar 123\nyet more\n", "cheez %s", buffy); + printf("|%s|\n", buffy); + sscanf("cheez somethingmoar\tyet more\n", "cheez %s", buffy); + printf("|%s|\n", buffy); + + int numverts = -1; + printf("%d\n", + sscanf(" numverts 1499\n", " numverts %d", + &numverts)); // white space is the same, even if tab vs space + printf("%d\n", numverts); + + int index; + float u, v; + short start, count; + printf("%d\n", + sscanf(" vert 87 ( 0.481565 0.059481 ) 0 1\n", + " vert %d ( %f %f ) %hu %hu", &index, &u, &v, &start, &count)); + printf("%d,%.6f,%.6f,%hu,%hu\n", index, u, v, start, count); + + int neg, neg2, neg3 = 0; + printf("%d\n", sscanf("-123 -765 -34-6", "%d %u %d", &neg, &neg2, &neg3)); + printf("%d,%u,%d\n", neg, neg2, neg3); + + { + int a = 0; + sscanf("1", "%i", &a); + printf("%i\n", a); + } + + char buf1[100], buf2[100], buf3[100], buf4[100]; + memset(buf4, 0, 100); + + + int numItems = sscanf("level=4:ref=3", "%255[^:=]=%255[^:]:%255[^=]=%c", + buf1, buf2, buf3, buf4); + printf("%d, %s, %s, %s, %s\n", numItems, buf1, buf2, buf3, buf4); + + numItems = sscanf("def|456", "%[a-z]|%[0-9]", buf1, buf2); + printf("%d, %s, %s\n", numItems, buf1, buf2); + + numItems = sscanf("3-4,-ab", "%[-0-9],%[ab-z-]", buf1, buf2); + printf("%d, %s, %s\n", numItems, buf1, buf2); + + numItems = sscanf("Hello,World", "%[A-Za-z],%[^0-9]", buf1, buf2); + printf("%d, %s, %s\n", numItems, buf1, buf2); + + numItems = sscanf("Hello4711", "%[^0-9],%[^0-9]", buf1, buf2); + printf("%d, %s\n", numItems, buf1); + + numItems = sscanf("JavaScript", "%4[A-Za-z]", buf1); + printf("%d, %s\n", numItems, buf1); + + numItems = sscanf("[]", "%1[[]%1[]]", buf1, buf2); + printf("%d, %s, %s\n", numItems, buf1, buf2); + + return 0; +} diff --git a/emtests/test_sscanf.out b/emtests/test_sscanf.out new file mode 100644 index 000000000..f9c3d4786 --- /dev/null +++ b/emtests/test_sscanf.out @@ -0,0 +1,29 @@ +en-us : 2 +en-r : 99 +en : 3 +1.234567, 0.000000 +2.8208 +-3.0300 +2.8208 +-3.0300 +2.8208 +-3.0300 +2.8208 +-3.0300 +|some| +|something| +|somethingmoar| +1 +1499 +5 +87,0.481565,0.059481,0,1 +3 +-123,4294966531,-34 +1 +4, level, 4, ref, 3 +2, def, 456 +2, 3-4, -ab +2, Hello, World +1, Hello +1, Java +2, [, ] \ No newline at end of file diff --git a/emtests/test_sscanf.wasm b/emtests/test_sscanf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..cc29ac1766ce380abc7592b2921b1c15021478ed GIT binary patch literal 79782 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 literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf_3.c b/emtests/test_sscanf_3.c new file mode 100644 index 000000000..f655132a0 --- /dev/null +++ b/emtests/test_sscanf_3.c @@ -0,0 +1,24 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + + int64_t s, m, l; + printf("%d\n", sscanf("123 1073741823 1125899906842620", "%lld %lld %lld", &s, + &m, &l)); + printf("%lld,%lld,%lld\n", s, m, l); + + int64_t negS, negM, negL; + printf("%d\n", sscanf("-123 -1073741823 -1125899906842620", "%lld %lld %lld", + &negS, &negM, &negL)); + printf("%lld,%lld,%lld\n", negS, negM, negL); + + return 0; +} diff --git a/emtests/test_sscanf_3.out b/emtests/test_sscanf_3.out new file mode 100644 index 000000000..fe1d5b418 --- /dev/null +++ b/emtests/test_sscanf_3.out @@ -0,0 +1,4 @@ +3 +123,1073741823,1125899906842620 +3 +-123,-1073741823,-1125899906842620 diff --git a/emtests/test_sscanf_3.wasm b/emtests/test_sscanf_3.wasm new file mode 100644 index 0000000000000000000000000000000000000000..42b8398c80adeb2d526160ae65bb83c6fdc57b39 GIT binary patch literal 76694 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 + +int main() { + char pYear[16], pMonth[16], pDay[16], pDate[64]; + printf("%d\n", sscanf("Nov 19 2012", "%s%s%s", pMonth, pDay, pYear)); + printf("day %s, month %s, year %s \n", pDay, pMonth, pYear); + return (0); +} diff --git a/emtests/test_sscanf_4.out b/emtests/test_sscanf_4.out new file mode 100644 index 000000000..02dba361a --- /dev/null +++ b/emtests/test_sscanf_4.out @@ -0,0 +1,2 @@ +3 +day 19, month Nov, year 2012 \ No newline at end of file diff --git a/emtests/test_sscanf_4.wasm b/emtests/test_sscanf_4.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a2adcc209ea9748eefeea705a034552f64053d1e GIT binary patch literal 76449 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

tamP@eeS^uUD(A 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 z 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≤)K%OpajBdZv$oa= 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 literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf_6.c b/emtests/test_sscanf_6.c new file mode 100644 index 000000000..98ddd7432 --- /dev/null +++ b/emtests/test_sscanf_6.c @@ -0,0 +1,36 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { + const char *date = "18.07.2013w"; + char c[10]; + memset(c, 0, 10); + int y, m, d, i; + i = sscanf(date, "%d.%d.%4d%c", &d, &m, &y, c); + printf("date: %s; day %2d, month %2d, year %4d, extra: %c, %d\n", date, d, m, + y, c[0], i); + i = sscanf(date, "%d.%d.%3c", &d, &m, c); + printf("date: %s; day %2d, month %2d, year %4d, extra: %s, %d\n", date, d, m, + y, c, i); + + { + const char *date = "18.07.2013"; + char c; + int y, m, d, i; + if ((i = sscanf(date, "%d.%d.%4d%c", &d, &m, &y, &c)) == 3) + { + printf("date: %s; day %2d, month %2d, year %4d \n", date, d, m, y); + } + else + { + printf("Error in sscanf: actually parsed %d", i); + } + } +} + diff --git a/emtests/test_sscanf_6.out b/emtests/test_sscanf_6.out new file mode 100644 index 000000000..7256b03bc --- /dev/null +++ b/emtests/test_sscanf_6.out @@ -0,0 +1,3 @@ +date: 18.07.2013w; day 18, month 7, year 2013, extra: w, 4 +date: 18.07.2013w; day 18, month 7, year 2013, extra: 201, 3 +date: 18.07.2013; day 18, month 7, year 2013 diff --git a/emtests/test_sscanf_6.wasm b/emtests/test_sscanf_6.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3501c80bc8f3ce69e20bc02761a698403bcdf679 GIT binary patch literal 77192 zcmbTf2b@(!()WMQIrrRq;SS6I3JAMW4Jatdux8!mqK+c#y1TmZ*9QJ2U$1^ZCF37msuMbf~VbuCA`GuI`hY zaL9pCE|-huMSb>6rc9XXOQt89@j1TkhVTTbD9Y#bo=M*mq)Wfq%4j0fYEeDXp9Nd)n$)s;Ganj^& z6DJ)op>@BByG}gtpw@rnV#RgeZ(`dX2enN&pmSuO340yX+P2%I?I%o{bWqz)tq1+B zb81gd-MwwX-p#vBp4htY0SEmpmk3sQ(xC?&(0J&iy~ppre-_iNQ%o(cIDY*20}k4| zxmt#|LngNE*xLGwgQ{f|^N&OJo^Zec8~E59eAu-^d(?KR233VZjM5)F#W{7LjDuRke&D!Cv2IV>7fDD$WI z!vxQKShRz1(7*D3N85kzw|IZl(1Sjj*xEYjAhE@Sw*3#9l>2dU{J#4haOfd_&5cOM z@7p?YVs7pF@dq3*`M~je9rCvc2an%>(@k>Y)A0vR*nd*4SCQWXD4JV~kauZrPY=OY zxe4j`L-uNI&h6E8pMSv52OJ>Y+`F#hh1Y$0O*}+2-T#okI#=(0@Pxf5=6aMUzsFx& zC;lzhvn%O)H&?ut?sfk1YswtdIx*MK#b0-yFnMCGzDq-t8x)nhPF!c-eFyaKxADIF zc767m{2zu!(Ud`5Lo}$X<(dX}9n`f_-&8rcMWI3EU*tzyt|2K~R9{YWgSyt23pvXT z?pp5ZKNbxxmwV<0)m3th$~m}>m~Q3ryJ@t8fNl@8WsyU5SiA_>_LUEFO<@?ntNGoK z-&Oo>!0(n#VJJUCo5B!&8k)jz+diyMa8cA0>iC_*Zy$bV^K1OhtZqzhi(Jm?Dy61MZW}^TNNs%!o5wj@zmjhXBW#3O_Eu^N zo7g7SCwr@F3R~OOR;RbL@?5a>8%BkK6~aJZ6fF#mbD?CWpDxx%KV7YEcrF*pR<87I ztMolIbhCk>yA8LZU<_AnKeL}%DSM-~(Kgz;WN*|~v5Ixg-k`%s8)@CLx3!wWC>v$n zd8@n`YC zz7}|{Z9}bx>KiI>o7$$K z4#%W+Oj=1MhtJc>?BQzEYX#%^Je?dKE81hlO41VkY=36-g}>TgcLXkRQA;?)4yiaD$KQf*L zQDb;AvL`{jB2aDN<;Y%+DpL*#??poBJ?dN&fupU7pj1ks3WPl}Hl78Fq6Q)fl!Z#t z7G}jZE3PE1;q+LQ(naUR#&f!J0+`H-o5E$WT^1|t#@KH3&b>3XJL5{!8Xi`RJ?y!c zM-1(|OY|6Gsxr?h^;`_??74Vccq6tq;*2!V>EqZwjx$O@o3`+6T!}p}12JJUlICzq z!jGK-YG)_*ZER;l_Wv3HXS-StIcUnG@MOE@BLJTC$Lggj}yOb(~#?eu&lo*d50+j;p)z9n3iHN+ynW=kzRBA+1X{w3)JUF@ zwuVzu(g;lsXQ#%?+3?0isa=$cH?B&>8~hb-+?v|0sd(ew)b35i8;_^-a z)jJ+|O*zU!3qHBDU_8g9&Eb0eh+|e3gbG~oP{DXsI#}>KhUPp|u^5n!+~)l>I*|ZXApBKaL%l3Oa*^6}*p=OqhCyO}QOU*4AkIxW9kY!QHc&=0#4T7wF zGzdC~ysOjBgJh1kb7{$zmW1`CCA+i)*2kowOA4zmEj5R~@Ynv*62{wjvH701rHTegadeaIYfY`8+4i%h z$>9JyK%9J_9VkAYWX(3IH5_CI*rdtfU^`f8E!HCLZMB1}wKcTa!PYuC9BOTLXj7P6 zSw7Mxdtdy`{wC7>-Tto5{)hcTZ~wG^N}T@7{^gu=nEjop`tMBBhlNry8W~)WZt>st z-^x72ricVnBbzG8T+qZdEwX7Y0FQ|52$agkaAaghl3W+3M1-TFa%xlbV@J90njYD7 zFK~2ZM@Opsn8@_NxHBT-DUA)sMRr`2pTb*erE*wa%3hD+wO9_fm4F4Fx0OJ2c`20Y zqH@__OxXJP$asq5!pz8K3d>@pZ&NrSvJ<@0S)_>tPK@kCkC+`9Pq8ta6w%s~vJ$jw zZe(*k!@S7mdAm-J?DQ-dip-B}z9*j%*%_XEW@KlQj0UxBU6K-smNh>LLumdyh36`4 zgHa}ig!P=X14X~H7#|Mk?8we`Kno*VsCov9^5;Z$jwdgQY>_9Q8`-%ei@b{>bcA!F zus(I1t?*e2GtCdQ^}~8jl=Uh(vGl;OEtJy`IythF9pEXEo#J!Psgd!__PJ-aPim({ z#&b$FCTt6FXL;S{iALu|niPtaA2o&ZBRk)LT@Z=S_^UyGVPqG2>|zLOi=*(E+tE{QanmcYUFy&; zi;Rb!TgDU^iI$f~woF`eDQt3iR1SZzKXj_^ipZ`I;S!p&t(fA<$arRXGm8R!Rb*E= z=xZXo#v6QXWY>Cgw^jOek?~yP1xN?P^^x(YP4J&kxFNC|9K?;0-RK~0itMH;2-0tk zjORuNK{_CAiHyfVfLN*0FgDy8*{vd1$vJvOWGhevTElI$Rzvsp$arqc@FuM(tc+}> z53V~RyThx$GqO8TWLm>rim|(tIn$9^!`)Rl_e92Xx5FtZ@4Xs3s^Njic<%KSMiXrF zU}QY5foJo;Lyx2bRZ(>wcsR0$U4weWH7NdyB_1V;__pv^WIV4i(>)&9<4&L_ zB6~uu_4wBClxs&%dEFGF?%nLsh$YHy;ddz^#XKF^)85QyB6~(@Pep)N|k%W%@G_WO+U^o<~*2=K(cO)4=f_lZ}@bB732e(j*#&E@imUe^b=b zTc?Z*FGltvZKzCPQphyb)sd}s>GqPiSkm*A$X@XVzZ%)AYVb=@Hif(tHHX(cdueib zJ+jw5*Bg<&A&}_jDOoGuefJ$w?aj#ERO|r7l5y(4f7TS=Q5W zX=I<$kuBk~$jJE_1wM}|-R*NQ|3dkRY71XR_GMJ5pB%o5jM%SW%&#N++PUEy4-}ii zw-Jr8Z<)6K9ofH0YYE>)#`6t8r^Yrl4nHoJB~5Y$J`bQcI$HjJ>BXE3d$H$tlX2!;&UOOQ+p8jLQiLsq1&G`h! zaCU67_4cE%1F&}HcU)yf4*crUl$TLt3md^geF*j^WIvMVI4QQ1yrPq1TemV`ayTU> zp`po6LGfk`&53P}r=J?z$zIQC3fQS}W0)HoFLUG8a81dsDIo(bC9TYY_EgV0PcZ4D zl_i@e)HY_lI118jRHa-UB6Ad!*a$+LDnhI*v7FmDSXt8ug6XbOWjk3epm<}LAKOp$ zdq!*o&ww$mD%n*M=1{&ZoJo~-CUie5=Eu$gt+QDj#PEMhSim~RQCb+=LZPBzP**5Z zWC2CaQL>!_$VIU&iltAT8{4@I>B-^z*v^loQ(d4Ky8xZ(!q_g1rC2SFZE-BtzbH1I z3#jvArSUR3ToT(Q5OH!?65A4%Nz5&=k-U^#mnx0Wo8vGxwVx8&CX6lHSP}J>*lrPBeip{q=+KxF*nz;#Hnzq_S$C{(OVSQud)qne zWaGjv&a=CSXK#(|Rq+he<(LBU&UJC(zVQuew_YTK8? z?IqhqQ{KwhRyw3RV!Ok;?XKAF5_-FcXYY>fZcn}^wtM1mAE55gPucGC%=gB2uQK0W zqA@Eb^>KNwr1Js6J-55@M7vW+3S zDXfZ(XUw?pNNkUIw5HWZV|&ywdyF&*`^RH@+#{Zdjb{uCbqSIuvl6uB`PiQK3@^m? zf@A+;Y%gZXP-1m#t3CN8u<_)VV|$roIv7neI$l-y z6@_h6>exJN<{IB-nZ~zCsH8NU$?~b#o^pUsGf(=|_)Kg(Pq;RK4R&E*gjBMQYy@? zR#7KkUb4$Gz3*Kl@Q1N|$S6M~d?fK;A2I4aiKX{_;>dgwQ>$x#-~)9&jqOvfl&j9zKZQDui)$0 zzIGCP6Wcd#2dOCi-?8z0?FC2&#CNgrsC{Lq10quso9bq^X^Bls)Z`#TK*wKkJ!ebI@WV|1n7|$^dYYb`3 zT8SN(DCzjbj(22cCN?vXmUn_;>;z?Y#R539s&GzBjAxd^X;j|X31drOPD+etwx=-K z8d*pr#?z>7ZIl6E4lk9djLuUNJ5{*Op|-YgS|W1*f5jnlld5%Y9%*D~3#TVGFR|0H z63tI+z7y+=#LiH8k8cfUs*IiKHB%mD-QDIUA=vKWw<#gToR!#F-pB=sEl}E7N%(Eq zehc!#kMY?Q7AD4%MbIWnos$?(P!1xz2xKT&Pr z+QhC+q>f#e7_ryE71t+rz4yuu9zY$tkzTVK>Ass1yNRThaC2fjHvsdN#BNE#fJ_@3 z;2n6Y^8*rKMPfVys z;U0&~PbT(cf~}ph{ancRmG1UJV*L;o_Cm(^FDCY)*Zxdm&v@HcC$^d@5!qPi87EJ9 z0we9|#Gdx7&nEV)Bl=uoJRtgfV$TcBXF#(qpW0KZmzRD%hf+faJ)qgkiSf8$KV$D# z665JivR4!1$w;PU@j4n7uO;@HBk+1+uVb!l3U4IFlNBVjGlVx2<9WSP$Gnvo&pI7_ z_jY1$XN*7%J|n%8*gHvRH$+Pcv8Jm2NZYKLrr%49r_0#zeq!$@GCSzCIed^*mz^Ib zM!0@l_$aZDL>eNxG=-0qZXXLP+4nwh^vH-r`y?S=67AE(cs}tYO1;PM_$)D=EO!^l z*Uu9GD)XAecs^HV=_MIkpO^hoRC&Lw<^3u#o-aEC{yMR*9nLq2edDzK7K6Ft^KZr2 zzm>bJ%IJXa68o+bdCHYDef>B!Z#-Sbg=u-4mZz{!$=k``ehT;yZVspB z?UcNoicCE%Z#+VeuuFzZwq~=;+(vl4TbvhlF7gZ)f$qh5<5AX2 z@^%Rjk%(n-)0<23w#0KU&D&D1_R_pv+Fq&T%F=vDGm!!jr$WxV^Ts1`-jla`@|yg< zD~=8K=IvezW?0;(l!m>+{dse2AIRH%UeAMhBm5v(J(M?6AIc+g^Y*Yx-k+~bLDuH& z5xw1$4_l`C`*RY)u9cHS1(t^FlI7X$Bw_2y48@hPyoW836VQu=>C}joX(dPH%ks9& zL0+D>%he{br9_1*@^GbSbYhhTHeXm9IngTwRyXa zT-WD~=L+I(%-c2jY$mvoy~msK#v>-Vqg2WG=4LjTN_I0*w|EHlyH$Z2;g;u(_vJvn zl6?qqPR55T^0vY;xh-$Ec?VPeW|;2wyb)SKf3D0MFDqfX>q>TA#&lcOrS$F{B?xe5 z-guTl;=A&8mxy{t335V#c5{g)ijo1!sg8^Y)_1 z@F=nU#12|U0cmSiba`7XUh6<94@$Lh`*Pl1X56-hSMrQxd&LFfmSM-riP_l9)q;>7 z9z0P*g9~a@dNpsas@~It&1*DLcSR^AA|CH5+jM(o(|cHVfdhnTmN zhzRefRCqUU1m1-p?@8J;&%X8H!C7YAJ%~!4(Zr?gy%Z6u@&&uJfK$LZP zEpY#E!iu@O7I1=5?eD34AJU`LVl*i`D-(b~zE z3U{n;=@W^bc3eulw6Wt;<2lZgcBLTu+o{d;q!Us*A*~Em=`}tCXQh=T!)=!Gy6Vv2 zszZZjy%SSw5V+Z?&Gy;(q|}Hz34Bf#Vkf7KVNPmuQid9vmdv`WOB&SRQ&T(DOPrS4 zY2MVith&i3OWtW|Xvh==1jT%pfL_f!RmZ~N^wduG!t+y`kM_|L&R}QMp`4l8nLrU1 zUogR)B`m%`dMrqd=d83P+*q<38Tue8iL;Px)YKMMiKRB3lNt|6iv&Wrp353M4dL+GU=$487xf-E+Bj&*jQom)9C6lYUpILJQ+PiY7cjZtu`A0SXAq$_oBw)}!nkrs1*F?n}cH zsS$XBa!=}A3#F%0Bg|szY5r<4_l#0BV4h8l=b2g$KML8OOPRi&6XCOU+4HIKJWVYx zq#DOBD6>ZPQ(lTlSms4m>kjZGmbt0DsHC*Ihr zH3!VXHUmr~fM2fxej_!W*S${K^BVZPiNRPQaU2$rM;(E;QhUq$?(Njx#!ILryqns) zz-kQdrS_h>nrODU-p|q}hYvg;)82<_`iIH_EPCc6+@u`V$HHHX^hs);c+97%@qA39 zK1=O0HHu9~e4f^%wkDOm_sg26-dCyde94IaT2c0OhOY_>;y0=BeCqA`)NB1VHJ*>F z&B}Sz*gO7>VD+lMt06PBU{ebkGt&yjBMKi`pan-3vKC;rno+PB?)-FY!H)I3#}(|j zf<*f91v_3DXL$6?g3a{kSp}O#G^*rw(rITF!Z5Ogk!8fR!pACX!*J3a8HW3?-9YBv z6AN~t1Daj1*$(KWf}JGz8_2ADa=}ja6_^Vo9+;gD%ep4QS#`5@l10cr)dTC-!V9fDHR4GK5U1^ z_ni-|Qww&gSMFScz3;Swo#xQy7POtkU)gg{FWBiGJHKE&BJdd^@EK|siQ5VAb|U7o zk}Z>x2_M1;a|>(|7VJ!SemkpB-5@`^U_58x8?Zo8wm^7^#^3~r78Y!wS9VUpcvRV< zg3_Swc?DZkKm%S_K=>ER;lJ#^I#qst!OmA}By~XtUb&!PJl{D}!MH%buwWND^u+~R z>>Y4X!7eI*G9^gAxL`bsom8X)?EaQxFe5a8)T7kGn4SkOBWjUfh6xQ^9Uh2i{na zVe;mJ4EX$2huJceX}sNQraWx- zE4!tD-}JA-Z zBgt}4!FX;_RT6kTWWc|-VD~y&_lYy_12KkfZz!OZT5(*szhL((azN;pf)+Wc_A9wwWN_>UCq5zqE090?P&gvScTv#QV<9#=MA+QJhB zdx8Qo;y+oiC%wQ^v<0HJgr{-REZEZ&c(#BM|Jg!wcux6=Y75U7?D;|kBmN5oBlZP+ zGG8p%i{3M;NR}1!PA@t6S_`SUo-*BE_P`_C) zp59gZ!Q^ih>@DZyw+r?*L{kb8Zp6==Sl&^;_r|THVDA*{UAp}}oSL1!@58m~c8_lj zANUylz`NaRtX2che^@Y{H>$j-j{CS^Je~XYlY;ShjJo9w=Z;Sc_Nn9dS;0Q@n9uR? zE@-y;qF_8d8p9fO^BN)YX(9AVafct!7`~*LvgUtPz?%OR6#lwkUm`H%5%M+i;#*Ph zTj>4og8jP?daCSNF1&kIu;w3Cw6zcdc2wrodUVl_&fHLoHqCumXB2G)zO2%kduq^p zhn#g^t*J$u>RFE{+7U$|dSuafKy-T1rpy0zS~2vJ)$Kdg%gb7sf<`6n^nhl^7LCV` z4`jT4T+w*ivoIWvFB(rqGFkI`X^hM)+Du2_grc3`u8*^d#*-B!wKIehi^g+;9Ak-B z$ILDokDp;60z6JC+DSB-9Mpi0L=_85wy+f1&H1nzcFVj|&kca56pcs9{hXrBk@K)& zSYc^Vv{N0m(>%jzaPr)u@hI!OqRkUUWw&(Y{`8`q?z!g|ZGJK2ecGE_to*7eoKdth z+_~}0qMca`XBX}4qE=@MinhSJXCZ%yYYyiW?Ho^9RJ4V~tp67k%i&x>uyeuSJXJ4& ze}2&jpO2aIf}&kOUgDWt$b4bZF7)ay@&H7+xR|XHFDYiL#3e;rQVdIrw$v-Tv}l() z9+wG^rQorwXv;k5@}gZ<#p7~7UjYES0yM5F8o;g~>(xc+l2@ruq+MR^okJwT{hA{2 zqU5zjsf=&@4RY6`leXm=Df>D{RqyVI*#>4dq< zJCUZ{T{ND%s*SakwLDCB_ZE5e`R=}=-6vG;rEFWc-~HG5tNHE$Ii;(z2T3DCTX?8w z4;JkqxNB9>R(Y>JT(pN(-s4-tBksulh*w28_q-Sg|_aJ%`7>Vh1Rej6T~vU$p0Ofn}O0+6zEw2`>tYy-15+D%wkA(`@&0 z(O&j!uN3VSdblOLS~Q*)i>=``W#gqSyk4}|DWKWzjiSBb1>P*$n~=06yj3)EzD0qz zi_CU!)1&VyKT&Pry`sHW)NJ>D(TIH?M*g5^A9%lf=mBCrQpedx#mV90qJ2yn9wSBL z`4FI=7VXnwsL!Umdhf%}oEezzz93MvdJ!1%p^dF6+8QXOi1V}GswVoSdb_?Yd{wkB zi}n?r{dLj4cA|b$v~See9^V?iElN}U);rrPszOI7{JUs8pLtT&UEdXrr*n@^Eg6r; zr~^N9o;adpN0c-$k1W}dC2`;Ml1(pZ@;D05_Y%!-3`duk=8i6b$q}Vcms-81xnoNF zGR@5>G0n~3WWuqy5aSJ~Y3^A3=#NubJFe6gjxX8qrBGJkZa!ekn&(a_SvSpdr<9y> zb4oVH>p!t%C;I7!Q%iO#b!whNk8cYncmk--D%mX0I=f`E9o3WA9LP{Tnd2Bj^h6NV zM0bKJ=A~OU=BcHfB#`a2lJRt_(h(+~hs$E8ER3hqOU9E?4V~T(DTetao9`H$QL-~i z8Xaerj3IICnlXShFe);DLDjHj-n`xcaJ0c|Eiwwi3Ie@@AG*v&b&Wap|$ zdTS2nl_Z(ZbNAtFOYi)W@nBiFpd{&ifmcK}g!Y9cUe&vcOU84dC%Mt#A{A1~#U`-%Cn%$@iw%h98F|c*)aF5M+dR%)X!Zj~2%|V~0m1DUBTO`*D7BeVLcPqYgw> zv(r-%5r^T8Ca+}iSmqrJkKxA4*@-XlteYOoVVLpd?yZ6~U+!S@V_H7b3$3dRm=HE# z6-zSb9aR;R+`7&9Gy>*lO<@;X*P;E!cCn{8+PA0e>6y-R!P?A;mR%adWSb1o>F#SZ zO9$SB(ro$B3cS0<>Kr5Pt|z-M)-IuBzv2AoE@57*k+X~ahV9=NuSDoKC$`^+)TerR zW{A^b*-w6>&IR~s?i56(Q$0W_r9h!|wG5gT@hfA8pBVwEUDN@73Pd=a8xa9>U0OSa zfd4|lQ7m~QSJCg3;t_b&H7oA^>=s>xulK~|MxAWKB1-^j_#qG z>kZv9Dc&{oNog4UmVk+{G#6rPSIE8hfiu26Z#-Yo^#iGcYzm) zIx(5xGKaWJyx`&wzkH;7#iJ(R7XO*I?(+zrc+naE_b=2sQv6tSAGOK-mz_aAg+bOt zoB42CK8;_b@rl1Ukru|^yggQH5UGjh$v2vM5l8)yT)VvdAUZDt-GY=c$ldJ=8xWguxh z0b5U1uAkL7#D>`Vii9rf>CS+mo;hnP(tbnRP*8@c=}5of`jzw>ft(mY2SGfB6Nl>6 zeWUcsSmMyUUUgc2RHM%RJ5vvD)A4t4^k!9wr!(%GwS+BrwJktGqj{77=pg&X!fInd z*FpACo?J#zp$eFYD+E-iwwXK_dI zU2RtYHi+kcVZTtqZnm2eerdnV1l4Y#2d7on0_M*NjU!||fVmdydmT{hl?kba(AOJD z!$;d_!KvUF4N=C}7&ioBa3pPe+dlIJ-Y)c|u%Em5mHkTN4hkWP@P$(0-6e;1cYSRS z+e0zG#qm`{`knob%zId05xTE1<=n&t;@ik}ZwtS-->a|wP}O9+D`1)suVKUbc-;0BxXg z5LVFkv3-OQ2VvEszDn8G_O*SKaUT`qP^`l&+urJ2PVK9h&d5@%$(piaAi@b*+h4`@ zS1}ICX2oRd9j1XWDH{j}aXfaCvM~^bHRf0x?)PnlHz z>3#OE>QFh1PWgKqCv6Y2|8CKJ1ZpM+ZYe@cYnbXP!&H~c{}O+!WB&?8TPO5O&EJpE z`CF0bNS(hW>4*r&Q0te8A-DWY*U{VT-L=Z2BIEG|iYv@V>qM^oi`F0>dTT9tjE?3C zlNmah>!Sw?d++K}@>pGQK;(cxB>8+Pd7O^!YAJcVpC)7}Im^%Y&Z6BX>eOwvl$@<2 zr^bvc?_J!&iRpRF^u6_%08z{uZVXoofvbhUcple&WQHNRCm7r|uf-})N^0vsdsbaTfr$2AkfmPLhi_W^L)pzJr zYPOC{)FU@}0*KzM^Rdc$tIog*(dCixfanUHg9Xi7KvT=en^Z3^RaZqS>7dn}I{s?D zz2lsHmyW>J(jnE|te3KPKMLXo#(Q)eR#o4tqpuRk_eI9zP)Y0{^!V zW!-e+UG<<&%Q_>#KFfTavr1=C<#)*G*k!{x3#)D<3^5*w>=7NMWww86REV97uBk-k z>5u9cq#x5+RS}I1>?p*(dIpwzIn|e^#Zf;k`}$|AzHZhHT15>^KGrM57Bi$HKdZWy zt(70m`f+VzTLmnb5o^iZw9=bgT(r^$T@2#)wcd0(m#p+HBXE2LnHb*P4Shl$vnlCe;3ufx}zU95}f+!fuQI?DX8#;ao)PxkKCof=DQRhPM` zr)>4jx`M}8H}BWJ)xO#-I>)bQV(jL`_NW4?h-p(5 z{fQ!f(!}yB)rY88eOzrII=O`I5ON^x^a2JV=1<6(vEW%&OaEjHhu&4kMHDx&?{G%L z@Nv4tM>%q8vrJIcfQpROB;Q_~nO;uoO!1xagB?O@2e3mvpvxFS2qmV%xx$^T(RLQY zxSlhX(n%}p>an(qBKK2MJLxKv+ttQp?ixGTn1;SJjH-Gp+KcViDD8!g$y8WW7?B2* z!lH2;u;HgU?2%#g8`~W$+Z(foCcodZz^2mQWyqpQ2w9HX3)w${>>q{K@9ei?FEnAT zucaFAq39}AsuQnvYC#6&f;uwA_AmAqA;WDNqT8M_7qr(-RCAcX%^Hvo#X{5;)%NCR zd=pBA6Az_A_@GY+pTC07UsbW|5&Kh?v?kl%niRQ@P4FKz2U~>LMOSVx-yeu&;y^E_ zd13-{M4Ex0WRq;XF5x&x;134;!OG?s=q?T*ajlRbwON}gJJb%bL&-ubxJM`lBtLGx zP%;2ARPX(%af^2+_7DL;ozP6DJ3HW2G>FbU@i#Fw7kG$Ry1)Zs9cG7hA{J52s1kpZ z7BYn&X(3aic(hHG9NkYcWm>1}JNA>zbL~M@XUf76*fm^D0BmGa+QQL(YX^EG^L=L4 za4mr8za=p5qv#)}W=YdO!iA`-0q7kf(R7z%n1y(b$g)Y}-%r!q37xL!a7e?*gN+{N2cLhF@Dq9KEGc|Qbc}TH@a5hbP zge8D21Z{Q56W^`Qv91g7esJYSkWgRHc<2b%chHeUH#8;s$`v0{vl!h%pnET<7Re|% zvY&L5p4L-fdTCYA%QZ~oyIvZNiy}jBH_UDVxL(Pmd~ zcwe%x6*ShgLTNo)PYvp#de*n~vwO`3tC*Ivy7`S;PBhL~&Z=0|{K#51D+VINY?y5z zN^PKGx~$HNX;pBz&Q!9Zr3M!lx+Csity|PSDf;FwuxLZwCaM7Kr zV0mk!y__B1A;5FGMD6u;qPcG1Wg+9j4~^SrJ6CE11BKyHG|raH>?eZ06*21H(ul|@ z!>68sNf49Kcg{j?m~j;(hf%AU-pv`@G=vw)*G;O@TI=s2japCxis264U+Ja?0sY#q zcmU`(y39e=+HYl|QjZJ?McagHdN9-uQJH^7wuxGap^EDvkhRm?K)Z<=47_P>#URsE z570iPFd<`fLzL~VU&%5i3IW&HU|lF2+IVB^ux`>@CVJW$vytO0&bs#;srX`YH0?}+ zU8`GOOjpjJup+^3^C8xbbcz%Q=t`M)&F==`uPSvdHe3C*XO=N`h*-{5P+@`M=}3KF zzZ4leF1Z^bPR~?C$n&u7N>NeQ4Ap+^80dzfCv~&d-EnE4}wV~xhGM97fOco=D z6*P9${k$$|>EI!OgfU;#g)0KN+U>CXjoWa9i7@9X_GLHrLgH7ny+LVG+|Q-AK(a4z zYGwvmjq>)Y%)sIYEa91x%j`OpiH4v0^5X^Yn-qq#=gXWz3<3&s~!>vXk#t?0pdjSSM*uT?qMy8!D; z?E__aSF_6InhQn4>qf$m=;xp|t zGZ@1JT*rczc&r;pQ5)SdK^&3-dvQ^1$&ACtdydRBig6g1mAEmxClSK9(bQS+f0$8y zAIlN&ttAl1G)~`N(ltlitAaK46dM+ z%Z?Yo2Iv)eW%`x83JBpq&p|elnE^$#L3(9KF!kw`sm}&AYSsh0$gE9soVas?s<4v5 zc7v8MOoB=VENNPU1Yo#jc3{lEK-Y{n$djdEQ3c)EZpF=N>}17NpKJfO=L^Ae{M}^tIYmckNvZ!%bt2M8S|Tp zk2Xp*YEcBhdT}yqA||wt~X8ba>J$|@p^Ben3ReSPX8ku-yF&ElE!_q5gvgpzx)?sRq@6O1o`+H^ly%<1? zt!!WBck0{@!>)?4-pY!B$ey;R{aMBStYWOUvSQMnI2GT@(#r<}wp`mw*@}jD2qs;> z5umCoOeA(TSipY zW}JrzfEC&2lU4OiKE~OI|oE zyol8W(wUK#G}b9tYcZXk60x2*1ruSmU}3Jz7Az+NbFLO<*yYL^M%gu~EYbYNKwqI{ zhPk3RmxY?&n^#?;sW;{`&GB0uLT94LTH2<25?Q^SMLoV=5kXm%FVNiX@vW??HOzcb z%|fo$JFxE}S#pUIaPOdVwO?P$K=+*|v#P(-W%GQxJzqB)YK&Z<>j^cuE_CBAEAGW^ z#9dpr8X__MUc>V-MPdk(<@92iJ|PR28Lop}w^?S}i_rw+g0mDw;8M};QYd+uthX!) zDVzC9#LLnrFy zn$7kWx8gDaZk6#iD@0-yI5{!o^4!wV6DuNYy4eNSUi8C>wqhQqy(EX?^*OG#V`f>6k%Xxjmr$*7nLq zx_Wv{#dP(xUjeiY6VAGTXFgzIDeymGLjQ@_XI-(x7Nj8~nIV;?&C8!OGed5XE%eqE zNwoC!R<0|7faNf|c5rJ$U#QD4$B3Zf-ECc_vu!f3zHJ0vYpi-zwv8Y$!B$)yVdQPo z&_yN&8r8$<4{G!b zRlh#20qc(oLx`lZp*Dp1XDFKhW%T(Wl>u#)0f(|hoVN{|Fls7seM}c+R@eP)STh87 zL#{NBL@GxY)4@$v5j3M+*%)O>GmGnywvp1j(HpZk*u=KYX69{`Tlc&B@^4$=fp*|B zze1z8rO_8u9eti9l z(V}9lC}_Ft3LEZ-ZVYaqK$R(K4+NBg1yN|A#Wt`RHEj^KA?CjdD_h1=t}?tyrgddm zi?@xMWMR=;Z>%f5WkGi|FsNk8!de*6H^}Zq*)scyWo#M)a~A8%%c7`3%-Iv>v`)-v zV$PoMOi!^Ky0@4f_EtqjOX-xlY<$%TWq2xUrLOIVwYq0aSSKdLM3v2>b)t@J>dsco z1a%E1db6M)2 z;0iVu7<<`JoDw3i4u~sm9IuPqaKVyoBkbeZOKeP(H%3tpLF@IOn%_(Mo{%n4*Wf1M zT5$p8eJPxm=d_K0!Mzbm)p_qgruGq50`>ZAgw=~oG`@1mVjrLNA{6$s4B5@CzM-pd z7o_UWMy_&S&PiUGvNfN+D8n;cBHGXo^7qR6&Z1Pft8;$o5~H}_=s~2PIH1qGXp8Y{GlnStFC*ga&WG?3|8BFNS9?Iwmu0K_6*N+S;OFz1h9e zNTrLtPbCK2QYLgk7eITNGA4oQ=ZLWs&MvLj)8irH-aE*J(0XP7&04y_5oLS>a zwmj)mLl5I46avR|R0Y?yQLbs(+~oc#Zk+xhFp2rTRW<}M8qjWfRs#}bd3yu2@=nGE z7v)TZDGM%TkuZl3n_&YdPghGoIDl{-gu8};4C{f6f|52AJqO}mi;uxJEHgeA^v0Yi ztyap!ucNN&OYN!BdyH}?0!wjMNAg4?XR30ufGmVO4I5~rv2RNwD5HJRDTY=UYp(55 zUp_vK#tP=RjFmNiEqdmICkwK|IuGM#rG9f8Y{Q1Elyj2ntdte24Z|VCN=Cw6Kvb;s z5XA~lZYAZrFjhAV9#ZfskQMd#eYwrZ)G;d8dR+~u%yXoCT@(ZAuMR!etmZ#5bg2yX4_8%7P( z98th;Qu_X1ZZfYg56=z5+q(AFc*K!?#VSOICI%$_)Z z^bw(@bfPDMiCWZ+H`)gw^wz+f&@fK(r|OX$t?d=^#(#|LnjGzym6zbBZe~+@NQxW_ z4gBH!FDB!v9*m%)b5uhfK#0lCVh=tu9hZ@uEp%uNxyn#q7O52LAyhcj(2nY9x`Y@? zPsOKcHdi%wLtg#Rllp-lG`;4k)9V&2vY|i$4f20{SV%{x;a-)}jF&WQ1g?clk3A{Q z)|p)?IJNT^xTg9SxVow+-@@_=OHH*9G0m$?)8*tc|u26l~fuY=sB*^L%GLzmD-o3LXxn2x1Pa;ix0KBaGlZV0qesQn{!J6tNy<&XkHE!hAs9nZTa3xv( zw(aulkMU^xqf3q<8c}fJKK#5&!w%y2U4H+`FYJhMY(-q@%2`$q1kQ_kV5A#&NP2<1 zSWnK11!Q|ehoMq7u>#!3aM_I=JOY=;E@=o$|8+A+!=R2Gy5}SC@r|mIL@#$$KZqZ* zzGhZguaO(8N%cFcF?3e1tX8&%iLd>~Cz@&nn!6YHieDT@G5TFyp)Sd>tq24rTy~ve zuxT)^f?l_djc`w(sIc;zq8lu{9dl>1hVDDMs9AEwOTHW1yRoX}g68*Yl@0E=rg@bo zW;Zem99J@b6l+cMF#?5;K{af~-OPYOpZYZBf@ZMzR9I;H$~*E%-Dw;?qiT`z7+pym zj`qunF@zn(?V21Epz!C_49Dvx;_6k!WH?s07;CFz23Kuzh5&VgJDtCXvrC%AC|u6` zrT5ZwMl+WsYe0V`G**FzMB%z>U3PP`8sJwqLyvD`K2Ifj`0dTkGzseAdg87;f$Vyn ze5LCFy3Kj0fJ{xe#My~Djq5m_3Pfl!4SG->xt2HwH@L4xfb|qyT8w{7nB*8rYum9PvsyMF5HFw{- zNB>g)hWhUP`IqWX|NdR{r(6I2UG>|4?f&I{YxU}xTPN-x^)K`-_U~Vp^y%NfcmI5U zG4OV32wrAYkZ;oL-E9LkYY*EU<$?pU+m*R9S}&Euu|Sl$Gg{X@bJtW7hSmM3%I^+` zJ&`J$cY*WU3=U3b!1!#_`1!tb%^v~chlaZ14etM6Z~(nLlV5`DgnR?fG+Re<>uA` zt^JD=bwpB$c5(j+sj(st*LTlhcE`5RuP&dp-D>YO@l&@%H*GiY#Wyb4ZrI$0p&E2Y zkFN^@`K-mpYTp$x;;Po>9Jd~B>QZwbjo$Hgkbd^WuW!$>VS-J7&&P}9_hRG7w~@w+ z9Qsn0$blDM*bmX(@DuGJh5gF59|D(i02*HSd$@+~n}80MT_Yv1T?AOK5A`>+rCC@$ zeXK+eq$c<2JCI`mlR{hB{wb6WX2(Ro+ACs7g=?s>Kw+=QTAK0R6CDmkdDL36cf+O` z#K~D}{$`WyZ)4@5N41mHntxEoKO~v{77owQ_YI((vkf2!^#evIXMosZ4TsA)iAJz5 zB%$rC&_}nxd};*Psj^x9{}{_1+@Qg`Wkb)NJ-gR+McStlQyk;FSs7=)0QeaZ z8DcyJbS^yCrf?pCoAY4j5magQKd60#ARPy$*?-zR%^;3w?!K{4xSDkTFaP=6 zjO_(1kLR$sZr7ZtEj8!e6SQl@wwl^>e8gh!gh-zStBxx##Lk)*I?>NWh~e2}Lk&5} z3(ZoYlT@fSm^^a@^Ru#!;o_%_*rw2@xi$)$B%^H;we95gwyA}jps2Qw&i_j%5l|Ba z|NC$JzbF02l*on34_O;iY_-Lkuw7qlZ$G|YzJYj(ckP^Zq~-aTb%+p-{x3V?|0!E8 zc5#na+D|GY!osK~wW2bfX$&{t%oIsa^V25KT*&dWbGEw)8*>OnUBOl(Zlm2?%ym=4 z*y4ouPA4?qkDhERCdit~P9^)9D#dmt`Ob>Q*4!`UfZC0#z9Kf8&Wwanb|pqNYL24H z?aTn$^sb^{fQ1>z1^$&%sy)XMIET<8-}!U|a9reoqBcImCUw}cWy$7B9N+w$rjc_V z%R8Jl+4ww#$)QpEov0Z*vE2zLU8r%pSbx|R#b|VqPO;$Qe{sh#7B)LwvD%cWuYH#5 z&s~a9xGrWqH|R%7wy!z1&wkG5zy4;9oV{`X7g4J9f*c9KG zcESwG21C}#K8Y<+Q@YCiU`v+6GLW%#%DULU5O=?;*X*ehcdNINgD>uq(4|qks*58w zRyk>>%{qq8^vfqlx_9v=XJK*lf_IY+32C+@BC#Cfsprl*FGSgsQDDC zV;}T`IqJcOo0sMEu$>M?Q1R1 zs_?Vwr|0~5H^h2D$JlA(;PAb%MnB=4IY3^S0e8(XxLoJsTx$s({I?e=1O;8I_^?X3 zkNgX8A3?c~VhQ&H|y=d=%fNPH$ILKj`1%SRB`z>IQV$d!<{GM<7exW*~B zhR|1X3>M|ScE{j$%6%jEVDD?^j1J1-j^GFrvwjWF)m1!Sij3e(;Q6v#JHd0cSNDqW ze8urx?UlXi-kc);Yr5M2&*u!!*X7g6TUnpV1G_gI&o>CYE$2<)`Hp-xJ4XGx`Xn9| ztxpd(bnan{9KcW&??tx0fW04~6=QAwK;D{MYoH!}pKozy?Wrnw-^v?WUGbfqt^w>F zfmxOV^;Io(YK+UXrk`ms&C1-Mr^VTsd~#K_RopBybrm;DTq>u>tgUqdA2-A5aeUR{ zPLfL=hw%4?yRnF8CN0cE1T=&J}2wk`P(-4&;86!q!GaCf3%zVJ7F!ewLT)`3kFUCd+*J!b%kFlz|APleEd%5gwKrIZx2A@ z@8|)RNc2D#U9JpO7RKhEz#9g|^j$zwp;&DOp<-3r+&#%f*{W?}a!pvE71)AgOXj)n z6|3vgu5C5&rK7EqAEx7epEZ~A|0%uLu3dZ|uCG)(RFCf^qJDto841*5r-**z<4tn1 z%8i-Qu$8_F?$pBV)~SWlZN|8nzwK>h;gp_=h3OV_irrE4dOSDDvwJ*SH6q8hH}#ztH} z6s4G}8@TC#tKsw=LhgBJ)`5CQ=tBPtArj%Dn2q|2$ir8#)?#^lYQp;Xf|v#JC>F@q z`T|*Z^F0)6(ZUz&N_?}vU}RU>?VoCcioSt5pH)=XdYf;MM7+VScYxkJ)h=#OE}X$`(HWm+CW}qz?*M{Cjci z_tKa@ys7juZ{cOJUFI#!X>;z(g#C;m_2pSr=c*pYrwB0iYv;pN2HziGBVM+jE+k^K zX5Ue7=*^h}MYffI8%lOJ7!&wT5FNLQU4n)>A}HHuENhcQN2T(>(Jq8GU*x3(SNc1< zFWC{a`tl=5w6Qi=Hm>4RbwFWfPR;cFLoAaUsigKX@C^}4I?>i+XKhh4Se0DK^X*vH z|J9AS2H&^VPPLzHQ!2ZbDoJ|sZWAWwV{ATU7FN7fy)Qs|Kb)OtqGkjh)D~tF6ZsC%dS(7t0pm+(kW|QAYc$ z?$5QMFKL9Tynw(ZvA*Q;y+z0w2D9la)H#!gRLzKk`+%a>wf-7Fx?iVXb1?p`E2obi zTac9OhX5OhLd@wxP-Ej+V+?N&7a!}}2wNY^ybYzU5!zcF;qe>TAlpEi9C6~XjVk#L zoY}>9<)z)b=h~WE*P#Ef|Ja+BxU0>&$%E=|csG}~w&&~%qK6^B;YlzvF&SXSy z1_y2@mqeNSmiQmaV@o!vfE`MRo05DjTaX@-=2Ol2@r6z#xZUy)sgCb7RkaJHe8=7m z>}%;ZQ4YgT+MdJ)Mb2I2F}T!>L-B=RkJdm>)uru9O3vaf5>8BHS_xBhxm;iVCXIH~ z$l3WnQF-UEp`kA|B5gLqOuh>C$5R2v7%|9bbKQGP%x7aE#AxN?tcfcv`Lxn2?1TVw z3h3y`6x)!uGCMr6GP>76<#2gIdO^eiFnrOVUdrS&ax)VJ-JLQGocwGM^VQN39O^PA zNcP=zg+;kxM}|(X%1tnCyAMLuh1Acf^~tKhft1>~OGmqj@}jDIcPsSmM+N%2UnO#2 zWYFY`S54)X!!!5SO~%Q)h9=TFc|!TZhs*6sxE4tVuezWajbvB^3u-GPh1yIflX0LT zP-M+rs+65T+8r593=@#YK+T;hWetl|LrN|kLIR%-ozu_=J6Ntb#Y(?J5o7Dw5P9UR zZ$n$%Bd0h{LamA)#+72Fpt}?XSEhoF4loUGMV6I>+$b$0b`E&Ws4lo@Bo4%*!d5Xb(L8%yUAVM;RjQSrv)6Y{#lN(lJT zp;o3bK4m3u?=6G?R(im13j$k!z?NYv%r(pzTLg_M={5R{c2}@NVCmmTtka$e;l9Kpae$Y35FPdV9Gi+G(N0q_jFx$~_7gL<7Fn?VgRdhCSOpe2a8UzTB zAJF_(hiEnUCcY&RPK@R3>nr@UbCpDp3?oAnXiaG*T^h zccwvTX1jB175Mrg-YW4rgpTc88K#Agw!pQt<9$S9;7+KjPx>UPQltM-MQD1&5uEAZ zgIRqR4YPlUC+0@NXs*xo{}3%bieI=^Qk~WiC6>a71 zj1Ld}jF~cP zD-F0_XIs>OjA%FLD2m43jb8tas=w+yd6Q0|kP(61u&MK{hPw{Nw7+C9u$SKKFm7=e ze)J^ELZ@Q}X0oo5h>;83rc}D77L~E=s0D@UQ5H2|1qP$6$+yYGW4AGJ-!9WBXvnka zy&7rxbd0m+N}U%Mhu@*gjyjs8rfc-4yDb?zT`4jb|K*o%6|vx3WDQ2_tNqoGJ&SXWZI)`jxNW z4|EKfygv&+yCIW$9z=G@TKQ1au9G|%E!C~BS@GwqC%>e}t};NVHBlCZ$357E$p}T>g+MzejS?r-i3M3}SY3;>1TiYEh@Q~r0I3F*baF5= zyz;`p%8EfYuw8T3^qwgr>uHqWT7?(8#t17F=Z~Q*kcN)a98V8u{V_C*aBeKxdTnTF zBW%M~rv8ldBdgz@-r`&HYyRzsB2Y%ul z*ih>)nOTU!$UZL$qZ2+=p@a7Sr@eQNv$87t|Mz|0dk@U)ff>#x(X~WSK?M&89ujUq zUsqJl`drsqD@plO(Y{GOG`RU7S|cYKp`OyL zo&xUbcJc_K=lH25p?zQkAbLt0^JYtX9%;{;BgBs} zLSHw}A8m}l7Pln@!!4!d|HOe3k_gG21l{cTEJ2AB|bQ6 zQxG=GZNe$6*cY&eZ9u6jKHyOmkLK~{a2_Em+azgMwQ$2`=L}1H6m@wd{O?8{MM*!_ z`Y3i6Tba4vO8tUh$*L7K3ca|0xmuaR2=h^NzVC|NV$r@ynt+wDhPGAG4PY;Qw47i5 z*9j12B?B8eg1|M+S*5nPX4g_OnQm64wyIKPr|gk z02)TY@ONp!mQ(8GbL5~3T2{v@YzKwy^o!;5sE-~|wvKYyN~>eNqi%TDuk=m}E9SQ! z<`|Zg*?=a&X_Oh3)Rx&fu8%usP5{tYRfe*imzC{&cb+@HPF`Q2Il<`_(ULfmf#kkNACyH@VMD`ak-Crz!mrUdtt1w%C z)|_4Ls7g$xMXQ73i)p!e{t|hLVH;UsLthMTJs6-94d6CZqcdZC<^&a6DqL#75k}z8 z2{h8ZRJhErA&k?PTY1bGR8dYkk|Tpjwt`y57a)L)r{#_S0>Xxgt>zWxP4fy=zOP59 zs|X0WSDJIFjNBFHqEbSE#G+s0ky1U{UnMV_7WQfbK7_C#2zDSF<++297seO(;I-qz z_`D$KB@E?x2Qd0$HOV#6iuk;|V8ZL79*cUGL*3ep^bIyY=}<%-dHPaG8j$|zOrB0G zJ@}5C@ zOg~cX9++a(+RSueR2>wkn&J*}Q|df|38*?qESy4BDyj|=H_Bt6XhLMc4)0SKx@4Oc z!KAYX-CGtn)+g)?Wv|Ngi&1m{Q@AQ^7!FSF8>N+P5ANNJa)*Lgr39G8o{?t%Iozan%Q++Fw; zMZk-@%#=H0v6OkIW@zrRZIKPh`KhC7>A%%g#gLzk&RUr=FxLSngp)#m$|4LMPPDap zTN8!k7_Yg!fc5%XVFk%$jcs2TzU$nDwp?FhC9z-89m6XIbxHipwNy@< z;Tb(f#j>8+R0`z`ScbCX9H7KT_DJ6hk(#_CeP`+0p1?a_ZlePBRs+I%uPmnRC&5RM zog04}Q&zZLRp{MG*SrJlDuzKtVQqmN-R~6|0@qAhlyMlY{QT@JkW$=mlfMi$eBh92>^q9kcG9bA!S~2YWahk)giI`29 zR6%5G>~G5ERt6f~o{zg8R$ry=*QCbYi2-mYXmL$yY*}Aw@}kjYNv8=_dpNe?SjjO# zS%J#KP$Au;B>7_yuhQV359~$>c!Kc@OYs}=v%q5%rbeFj>%!EpL zE-BAd%5_SaLjo*iW<)L|>ICZf77vNp7oj|eHt>F)eG_C!aL_pEMX7YGt5w=YmQOQOsO0DCP$~xW;<8DO8 z1okG>;=E9c#Ui)JMsvPuMi@fgo`Uo)yC(m;^)5Kyx-k;F3`6!i!VkBC4A#ggK4#oJ z0bD6vcoen@Q(4}9iE(z6jgjop(h7NP9Gvc9?xx&HoYA8Nr@F#m&SgN;doq`p`_1%l zHJ2Plj*K-zPg2Et?3-Xo4ZVq^u*d+*+YJ%gz3t%{9qWK?qB4YsX}h7?PUN^Hzy0dz z9;4E)S-)stUA~~;KF!*K6sGl_?-#~Xt(z3nd;(FgJcwo7b?wqp0|4b-Bd^K(mK=5u!$=3@9sHE`DNK#13NU8`Pn$-|1^_eUi zs?^`HXmF>uY5piD_%aDTZ^=AQGQZG@K7TH$ayD#Klo*Zs6|RcL#AZgz^)kW0|4O;A zjwy=j=v==^!d;D^h{6~O2O^PGecl^M^4g#JWCYlt+TOkxn7%o%=6~KhE`>GiFa_H> z$`i8sH;WYcVN?IsE^q7fBZUZHbEAAoxg5JvJC04S|og$Ld7QX7;sh zw1yVvHoCCJQ6;gO5tCSl!84ZzxHF;QOuC1Ra0wACFmjp$3q1nknoEH{L*UP-FBxyi zTXH9GH_hecWLdB%=RU_|FGkA9kb!{<;NT8TpX~$KUNreUVleYcW)F*!2+9mPs~7 zA@T_I9X7dC4NIj)7E4qPV+G<5j=GP+uQk=B+w5YuO@n0<4uVO8wN#_KtUHY&>Vs+V zT7RcB3e!$G*WYB$xvqs>Z;sGYLK4$1w9^)kN(A4dEgq8;p0;4zNOLZ3mKbuQza^44 zuUn#{G&$P}Ngfo#M)uwyvY(+n#MZ5UUa=u~b?tHgT?y+$n(P&>hGN_WY?Ka$M86u% zM{J44l9^x1tx}@j6Z|?0a9ebr9Vr-v0a91exMZZ zkVIj`)Iq*9}(k;wi*%bvIeJ-FT;+)p^aLz(}eljqRM^X>c&sKGW$?G$fB z4K>Z7SUN8l0-!oOH)x?yNzK^q=JfleTXYXU zMWuH(fPt^8w)HrT>Z3>@n4dx?KS`Y^C%Ko{WhR`!c`NL|W% zc^GWc)J#6#vJK<)wqdl<#`5~1G;62?3pTYeoimBQ346R5X~FfI07$237bP~#UzBJ) zwl2wX{xHiKkt~<15df5+&cMOR8FVB$2amEJTFzh6*=3gV`WS#Ppwf`@twNb{hw3+0 z&R`{Piz&gngsios+g_Jc@YiCGjTtqZNnQ0SR6SZst9$BaGtH}N-Cb+9+l4&T>J8-K z?pmI06yy+KVH>bJ=3@ii5##NIqYsJbfvTC$mz_u#L+|Yw4?mm8Y+)j7xjP)WG4?kp zQE;Guaf$M0Ru563{F4H&Bh4; z&$WmFVLUCJFbk+7m_JS4|6zZx>zNer^N`e~rKBX`{JJrkp+#j115otq!iuU6{=3*z z`E?+S?~2KdC6`dJI~8RFZ-_mRs`Qy~xcc20YW3#WZza^-mgha#7g4({*#AI0)qQUa z7TA4@PIg}`+o!E$K+LU13>cv%EJ?u6gOc+AU+<4Kq5yau4CEDm&U%8TI#(b_5o`L4 z{P$ui^4*w8L&g7FOjTO>sn~;Q@6Zn(jzd3qBnBS~G`3DY8Xi?+JWMW49!M=W?N4}^gwk3CqSj%U5M zFFVAG6EV&{FwW4{m=rh#WT*+Ij}I5F@KW6Zu-_^nO~xG*RR={{BYg7BTBb=r^2{lo7F`QzB} z@W(O6BC&hZSQWuUy}V#NryA)4nOb@~$Xsn?e#OXqs!XP^8+}+U%kIH3p%4mJ3WNgt zPN=WO>8>h%B7r565>|uPCqQ4fSq(lN<066FDDq64PT*>So7}dm!3~D~wm}kH`cLTO zGyP8m1GkmjDyRq?^sG?nTFL=RhgE(qR-yJ*sjuSlgI~Ex_)2oFjK%vfQ={O5a4*8~ z+wkSYU!J7nAUTZDJF8MH*XL3ETdoFY=cyb$52DngDD_$^_2;eBx0Fj=qRC+Iq6x%1 zH2u=p_ZAhh76Lfbk2Ji}fB@3S2q>gujSQPBb`>2u9Z&L7wk!h>(s|rfD9UC3DM~z5 z^UGM`F#QHt{U?cmHc)GX8>h54+fV@T{#RB=!`<^Zf3N>p;(nHt=XJJ@iTiotLwj7F z;OAnVe;GTUWLnkyfZ+zu4aP{mJxCx^Svc+A0emb z5`x|5pHCcD&nFxFFB10)%SxEEBt3sgx?-7xQyYc&ChspKM`>Sg#YEj2R=kjWTjFj@ zdMum2#-!8p{`SP(UMfOj%V>808|A@(M8BBK53n!lPQt4lH3XCB9f`Z6R1aE4Z%o|A zp7)y)x2cqexm?vOD+t6(Rms#9v-{1xEwkHO<8zbyM1ZHqHf* z;REW3@v;ILO&Yy}K%cUGJ;@k=&GLQz8;Rq=H)w!66L+VT3FR*_W^3mh+Uh?_F;G?A z=kMZ-wZz>;jBny}*EKc!_VnpWHpc>TW|BBI$@luZ6Zg%;-JRUz?@8P}-ASJ(eS4ga zkX-2~soiz95S(*XMweWQpSfJFtkv;9gMaJKw8`-u6_%;FWPu%?(8SofoY!#2mtpWLTWgF%F{9cU0`#T)o z76`)txsv0CQchG{6*;WR2wp&MTlA~Z)wtDBvtJV_WB#fFOlzyW+36Y#)b_J^#$=Bi z9SIjumqOZgJlO{4Izc}JWHQ%AUMAYr48+*V!a*Nj#RJ%%&T`!*tqopF-_PE@% zNL9<@%yTx6(F3u!Wv^_TTNK4?cv~c5nC^yhaJ6Z2DKHxZuCHJ||1;JgVl8$OS4Qbp zT$myY8!6wJ$a4OyWyaMJ68ECq-`MR{+~RQVeNjlfFA3S`_M0j3>@|^;kp;vV=zHFe zDbqh=g!^BL{PZv@UQTIevR6kKO>+`r2mqI13WeDyW#+IN%DhgsN7C1s;d(fG$if1X z41rN7R$BFcS$j$y5ra5s7#qqVG#=8PgV>3qk=P3X@BSz}5Asv2R;Q?cAPM2uV3Oo` zfaQ2&BpD*Y;5{we4JM9RZ-1xwLnNNK(KO^61e#1=dij=ohMZ*Om-e?1MYkulCqs6! zu5x>_Lu11_+tQnD^*T!>oMrhT9Js|2WJCW|z-HKkU6D*1xmNy9sy4}Li;Jt6yRJ^~ zI5W*S=4fqpucqh!f%Uekuk@lTIH$RlZ7@D+Lg4fLHHwLwne&3nnOps9F{5w)o}10^X8}@_#f-b0H!XfjGq%J5w?Lim919shPkL!_$T4_G)J_2HVfO zR5GBP!$CLiSsnzZs0$*vJHTi}c83^PG~OfBFiFmoobg{Q4`~2IiT8!Kh!c7C5zmkq z+#jAHi=Y)SiWj3jD5)d)@#Nd#$wS)ts=Fb!c+f7`9P@dYQg7BH_VfEPO&~#>tCJ?? zY6AlemfT|!1i78{o)V1U_+5OgMDQQt+bOmg9F7?00L1o(prGE<&o}0nFINAfP+C@` zKX59pmE#Sw16C>jWHkRNWb#(z#-hrYgKMY5{Gpb@p`bBgd=IsAmR52s}@Rogq7=A3C~ropP3;2CybLnw<|?P7S0C~CPd)`{DmsTy|4MjLYwBM|sACvtU*eE?b)1*zBJ+xJ z7iPCWFx}xr|DlK?-phiLTD(^x$A_~2Hef^5wO+tq9Nxt!&<8OkdL{BlgbwzCk@2eR z(X~y5y*{M7ye4=k_tJH|WhMQyjK;MgecKNIv9o+I5RKq9lC4*=hgz#pN%O6eUKgT= zjK%MS8>?`06z(wDSI$@9@@mrGh%+renp&S}H9b=d_zvX`CHjkiFs-amwYG-dm~u!kx2VxDTCa?=%0oto_o9RRW{Q%yM-qgDk0$9vg;~`j%qoR>Oaa_uN$pg>#V)rb zH~Q}+?$N}3hhlzLS2Eq+lKAzB`)=ZIP72*^bVI1Q9RKwC5xr)lkb|Q&Ec`XRa>$1u zUb0j()D{i1KJi~=e?c{05L-20s8f|x%@@V)qB!mP!98y=E?gY5S-F_<=^0}^(C5$U zt}aEEbBS=!mi(o{O)L4&$L{lbPx3cuONb$DiM*$$Z1CSp9G~?R>T!193R5U&HZwqI z#qQ-ee<02iiQ}U<-%s54EnV2(2mtMUc_1Jdg+ss>Wf0yo3F*OpkT^a{;>pB48ImY$ zo68Rq$45b)VrQJ?f*vO{*_ArDNnX#c3a5X$n@Xj6dkU@gqs0BF^gv?XtHZHAgtAKR z5f~|L;(n~hYis&k$~qPE zndDmklf?a`l>5}_2>!2Qk6wD9;{Pr%Yd*=-`UJPXeM4UOM-Tq5YiSY;FPo554RrmK zS6}7T?QecSNyiDmM>@_S66j$Dl>*iu>KJuqu~r`DhAzvnY*rLGJ*V#(n7@Z)MwIakBCFw5!-CsQ0wP&($%(?$hTYJTQ7E2732(6WzXYkuBBGMA17L zdWHH41_3}djb3@!V|OX_wCwN>Dgv~GUTJWkcZxe{+Sf0;;JL>id*ddQS5w^-H+2~z z$&^G-f~JE&ij-)!2q<0TPls-7#7qyw%wWGaqt1iDC*E`sGZSKFikRu*BXA~0j9hTD zkQFhw3e|FUu80vRA7X%!DE>+Q*euI}uHlFVZ5)iF*u0KFyACdGFhU+C zbz+}2o31VU+)}O*C1FaNe$=Z8-iy*TXUwM049RlUTXowHYRqPz`1OEKE6Au&;HJnp zkmsgfLB_;2T%YT(^chlA_afIC<%%lAMPB$mrZRG&E;ngRo3_tdM7x6?VL%w{hHYSP zH5~8CalFDjC?_uGqS_hIf|cgSo=*G3rw4_nuk=dxSh4&0y;afUUG5>cGPJpf+o# zOS3sGsLT1ATTMTiQi}eMt+}IV2+ZhfW>Pf_p>1fFaGf7wr%HCJ!|UtOG+nLOl3ouDeoscTFp}XP zR#V5G$_HSy0-3LJH=QA8pnSv+#M-u`1H&$k{g2CYdb=CEi5{A|gVzcQ#!!`)CNV9Q zv)5`Snpve%_Fkh-tMN=4M$=z`&V-a1B94Bnd;w}wYz?z@e(!9Ug}7mEZxKfiS0Fox z328|}hX5i$xsDR;GwefXZgLxoa5)VtDZoe?WoEvPOV7x_%Gh4r3UuU`u)c za5`5}&r~wO9dMqYX3BFU?J0ls6Z}4|7oF~KhKG@UtdTgD=kwI)Hd6?YG|x|DklBa7 zZlVZ3f|-P3FeoTx&lZc6L24`I9fb^aN02VY;_NZzAutCne+1*aquldl3IrhSWU-*P=1skw|8 zy%{?8E%_2u5sqXep$KE#kv+m1GQ^D`?2&%54pgb)Vp6F!NTiBHCULB7nyb$y!bzp* zXPwK$j;siQsrvUZNK=nlBlI|8Xqpf!Z}5(rm@y`~<1UgcU4rBN+<|K}i9O;GO8XPF z8rmcC+u@=Ol7_pJZqgBqymKek6#HwC&;lt||2F^Y2Pg50!uh3<;~|CuIz7PH5@T5J ztZ;=Aon2ikR%;}36>BsMKcd}EO|d5Uc8_bl&pA$BS`|gr@~BWf>J$7{R4e=1S;}91 zl7UKXk~$kHwQQ+yIfgu$Kldt~A)|RD3dfsFb*4bnE=$Wat<56(tOw~4{AN_M9t4y|bf6tCBa()5hggzsq`SlocgdVG z0%q86QqF1aJ0G3OoBQNjABsMtXbn~o2i1nOk>qBOmJ0$00>hg9E$5Y*8DldedNaza2x=I_CDzr`l&mD{@SkakLMQKU^q3bGH z`&Rhx=5m>P&GNUTDpT91?45bBj5MrSv~{1A}k0J0h=_Z9=FlY#V*p}t>Q zAhm3wfR;S8^kNva=XBNm!U;<{ID=KRhAd@YNNefZMM|G?Xe!#z#%ToYGA{tX17rY3nr_ZaLSS3@OWi zn@bs2PM9iAX33r`xVeD1b^ScwjoV)?Qj`uq|z$}xJoZAUENu?`0=);~3 zEkASFmC0ImXRjx_209;_5I4r{#33s}9J28V6|%z9#^K0|Y-3B4OU0#SCgUlGUC_<^ zXl>I*)9ux(HPFy>mBiDCNMBc{(5l!vLmGvpu?}`PSzFnh>jMo$*6>qy)MOA-+!UiZ)w7dF2cc&lvuzonxO+VvU$5Ed> z2*9n5e4SXuY2{1BIp;(Zoq-W9Pi+@j_wL{-+vpTI+rT(mX3{s*Da>8iZXTiAc%~#I z6fccU-i=rE4b$yEV_0c(t_N0bb52;ff5tlfXPq5NfnfX=T?nYeb6Nqs4i^WS=QzTc zv^J;FXu6!05neU|$LV_KCRPOx#OjSp;Q>4fdTP{fXFVo6?b@#Ui)+q~@ooaYYdzS@ z^_M1;5q?cnFN-DlK0!QljZ}i1;YNKie~i-74giU{hQ2Y^)E&usq`NuM8=uekc}}ry!gNQXI5rumD0^u zXLg?QTRX5i33868$gPI=XHZ8X53?G4#;DX*9x|R085#wsl79fO3c~m(=SQ8CD=86v?E3ueY5vr2;g@!1((AG0Sx*Dp8=oiO9 zy1G{W5-*fFEiUL|k_z()RXk8KSE>wQD;Jl<&GJ(*U2Mlwq^`B>{^bl6``;KZ4?+5U zY0T_B3VS7$FKZh`Co(+hOofk=n_8- z6`BfXLQ$n-LeZ>BcA8n1eqyVNqFHc61wwRrO?GUIN0NE1!M>1GUWYoFM0ZIO67HD` zgmb2DlVp|D;q_LB*IQDECcj)t%H)&jDNR8#neH&hua8r}@hFjQlpr#__!-t*LE=cM zZW1OEFkzc;sXwE(=qkfW4U^pKV=#FdMn@1^&N+GTZY(|}y|0qq&9QuVj%f3@#vtWX zxZ8}h+l;i^jI^(zt}T&vyTKwM4OrwIu}Iq}((WLsP4Y${%N>kd$%`sYsv`V9Ki1DZ}gjtNo%&8_Zwg^YOB~BA! zd`E6HcTEf{dLgRx?-^+f7UN8$ zqIDrF=+lC?0XJl#VGIQT_EH@Dn#zG5FtzUsrY29EA%J0|1ey8`y?^Z)But8KAp}v1)s6T2F(BJCVvvHtMKUSd> z!o6qlcsd(d&G58qb56$CY%rRULdfUb!38(GC|s9rW+EUc1~3t;lQ&|PClgpi1M;j_ z`_>*J8HLh9IFVIJnUGJpS;QGmlwFAODO`WJdNr)hCJK!YI&)4O?78dJ_H%>1w#?Vc zY?z4_q1^1-EYH@gs8d`ktLiEKAn7sd#bd}Dl*K$WtCoVK^Dt=U zaUY@s@gBg4f8lI!5$VGwjcSudHRU3T(nwLH>)Kn4hC%lyv6%rU{b_-Tej%T`{&~YJ z!bH!-?lcgcP5$)o`d0$vWynBY|5Bht@z@KoI~^Cj%M4M5Cl9e#vuhGTfGq{L6h%zx z##?L3O{xQINPUTjwi9gD2<5W`fi}HisH;bu%^IA2&q02ftreE3@?aI#=85_GI2nsQtnjd7E?x6A*OI*vVuM8Z5lYHs<0E2@K3E(f7(=4b~YV~3Ly^!v!fuSHc z82d05hZ>4j$(@HgS9EjQsI~TL`SehGqt9ne_JRCJT3qq!bTuryO^qMCJQt(lLo>FV z>ZW4FnocSYKl_%4A5GSsrI+gTW;d@PYEn52QK=^`x^UnCnuR(=Ho4EB;vmlT8r1!-T9&T%JC_`_SLu zQOItGvS-rZxAN*zK!A08u8t5c8C{%lw+&s_+VL%Ax<;1Quh8{TiLP~qqWh>!*LEfK zoh4~UkW~-Pk{z1%o+H@Zb!yF_g|v6kUmt-JOF4S?%MrHl-eIW1X8p^Y-;!>z)%YOA zHPJ1IqNOCv+viklmrRhs%&nsV?)k$_hr@beoWHg0LM2Os(19j$bi+ zL)Ht1c6+3e0qhxJHiA$Ahz6oe1OiAa3c*OsUKD4C^alc1{~5az5wS11ftyahZ*=xA z(|L<60ahkxf~V!?2dhP)%eg-f;J7;EszkjN6Ktg@BssAB^ofuT?!)7>3um`?n)^X$ z{|_q-y~hA-Dh*h*Z$cum3+WF>;ZPSu7!(%@>66^O9V>~IByo?qy`)cm%N!Gu#5+R& zu;YF^Cf}7k^Tn}B?KaimK3-9HuH zis3MqIyZ*Z%OB#}`4p&6`b&k?QQcXzVs(|`Mce#0s>i{R7bPyo5s%1AhLVJDsBA4B?{Sg_Fzo@P#Y zl3QefJ|$j{+TF9nimB91Q2k7I)?xH~R;W9V_%ic>W6q|3X2;?{&Cg}*4qx>3)$CX? z4Z`5P_DC7OKL@q51>T#egT}$`@$47T96|PY_ySe`S`0XrdHH9?Zp22)jxC3U>}$Zi zi9q+};2RNlkL2-7$lw8fZS+_9*(MpHf7VU(^MtgO1EOAtVr^$E>#B`q!GJ(C0Kk_N ztOx&wvc4RF`SaWJVnGZ!d$2Gn%4ERqP^cbS z3;-hJpt#R+-jBnY05*F)>%_)pzw9o8M)%FRc6lrdP1OgSW9@v#h(7h1JH-`l46qnB zNy6wdR%pq-tA7)KGS-;Qa}h<$hm~N?zLvcQ;Ms|B_Ql!Am~WQAFhQFA`Sj6~KF~ z2VppvWweiF)D?q_R7NZ1R!|wOik%%Lx0Q8wc`uIRl&zNVM{-|C!dtQB3<+l(TcG6T zLHVCC0@jL};%-qvLi%3Lq_$EpGG?P-R36exO?42CTz2Q-xPAXd6b)49f#uLzVV9-h z(!R0PEbG1cTD?VDr^i+tWECw)(=02*;fgF*>|uY?A4LPZMe>$}lmm@aRTZ#6g{DJO zMoA?Y0wb3vr)~6q1&;_)N}Q4;2VLE@RmtViieBf(f@pj(LM1eiljUQU%4|RWtF<|y zDx3RO*(#Yua_`D2@rYHwJZSHbnskFLx_0X++&%}1_8ibz;RQQyZNl|}oxAp$hq_(e zp{9V7+D*+kk;Y@#NvYaYr2`?wPj#Q_(iCsG2_3a>NL0`|ZQ)7u2)D00f(i;Rr0>?w zofq;VQ58}0*HsOvC9)_B#`VSP|4qCA6FhP2u8 zYxl3Tk3-dX9Qu#&Li%xS`gtK|GGuy!t8ynS6Dx=blqm;wDAPJJty89bHfjBzW7V%r zi`A9cV#Z3UEg!lD9g87&K?Cvv(mn+&;3;Tv!wZA~$O;U}L8I zn$Q(D1%HI7XH>``ZjjQLMt0Mb-H@=+LC=}icBHkP8)ZY3V*{fySC)58Mgwp-iKY}^ z4qN2Bg{+pMyIP8OvG4-%fE<46g#-uCuna}|GCN*CT58cSl7WgerbEMY(J(U5KtI|f z+oT*jDCOScUzdF}H%bMPLkS`hdK^HZsCaPjqeD&zDs5gmCxq9R%R`Rj z4VT&L&j&9q?Gi=kOj~&#*%Jxl-pc*D2;mvI&mwoj=weoHx#z=r9_fpY@VGpR`+^c= zTDEy)>DHQGx_8ZinpG~1Zn?^YXT5tdY?PuIxFG@V={H~rkInBm?bY1aW9l0X4$ zko<+=#})R^x;GU?BRtO<|VvZmM>R|SGtAu4o$xkLfj zS1rnnpz5%dlkT>c4Rh&)Hd0QMD`jxKlxy|0s)(kioo)a=K6ik?(pC(Xj--`y&`La+Qe;!5s6>c!fSO70ORgJ0|RmAToH&Vt9 zCYL9T1NDP5tDlHfa_D=l8 zu+|)D-%C;DxT?ZxL$0LAd9JHSyUsTNkcFk~30qCwm1-IwE9^;yQ2S~ExQq-6Qu=WO zPfc-bSP8M>5YY@Awt8VForBC=?Qtr-M{)_z+`U)wYO0u3==t!ua(>_BanDvQ6RX^*lWVv*WPgKPAOFtst zv1fh}dCV)LiuBJbwR2!m`)lrg4|i=Vj@hiOhEjM9s4f}0*AhC!?{x(GpOj?_i@AmuM)&Z?gD|CKD5k<0#- zFBY`Pgy@eV{5?XyPw0zfECJ;g(=vZ$)6<_RI57=sKJ2(|V7Zz)I1Hug4G2YOKhC^@ zLGU-3Cj5#!*&U!$EQh;Y;jWDR$pw*eXHt8Nza;N2$(IP3y1`$XcbAs$a|^sF!6@6E zc4ia`DLggM;m|kG(7%%8rl@jfo9grx8ig&HS#eu+AU6FlR#RP=Ah^Z46Px@C6ACuC zfMI@7z5xcMjH~#sNzx)h$s`5H!?~7nDxr9Ib+}G$95?_aiFNWK#9W&9TgwJbZmR!4 zfwQgijv^1!rw@{>R1+xG=ki#|D7Ezo7CS-X{kgp2-9WrBL_MEqxW6&Muq+cIW4y5; z!GgqcT<1TZcYHpVztLZ&A9q=Py}vx~F3+#?U&y;Jh$bN)sKL+i=8Jj9N1?CCyDP#= zmc1MuXEk|Kf-#Q-6*u#j%Vt^9+^mYZ1vbBln!%#w)?}l9KXH7Tk>cDYCkU>2rZ?{g z5Oqpg#FdU*AEXmB_~8O!0OuX^x2VKH_}w8F2Px{Gjq+`fjzhXCrv^4e;1R%_vf>=T z`~xV3LJBM$!~g#XLGS`FAZ4_{!k^DwNf=?-&SLeSmt4zi{#CEvvi?5AZB2Yv-Uh6$ z{Oy?UYc9PPzQs8IKC530^}ihw$50>UxSxi_KJUTs3`;vy`Xl;n+`O2>o$gHhM@DaXPOjFvy(dPUrPWmg-`HJ&?G?j4>y;6PwvD zEOt#zY$ArbmS$9jim`+RU6574I8EK7(b95uOG)oEf3lQh)(_YiF#J`R-2-kyo`vElpI?)AtMYCQ>~}%lT@V;5 zn4PZ8yS3d6wm|y}$nGT3wMw+i68+eHK!@C4oJD|s$YDGEUWnm8V}0c_>B!mIdqCM| z3MoDq&OvOKd(F*jQ}xZzYb;o5@=L=fu@+ z@^2@Oi?@?={X2Wjb;6+#Yk-e#CN| zP1wEs0agPCC^(ypwI*k}(3F`BE4C3qhJl1Y(0*Pky6s_jxE7mxz)unH!ZK4ZeZl&} z5c^qaJ>5CY+Hb%r=1Ec;51PUDA*8Se4Y5BBaY^JqBj-=sbGN7NjxVR!kB6N+JWjrE zj~6eo8~L1Q{{@|nqoQq-QfW>;vYm?^pzvCp{+<$`aoip_&YnI6nSVv3!ZO}p!QKiv z%@+~D%+_xHDoyoYM1+K?5nJi~Tv`_#ZZLXCG1w85b(-3)k23rAtE1)8)oF*aU*^rx zi5I@2bHdQxE%WQ`O5tvdaBLx;AsZs++y-k9-hLTN_M3PjPQN)q388#%K`W`^-6ZE8 zH%EACEG;efQ}SPx{!T;wt@7SM#M`9VgZ$fAZ0}d}FEFv$`>#bP_(&)9v)l`be~~Vi zD*PSfLJ;xT9Z~5WW2~jlHX0-$sk522)Yq90krlW$wbXx^SbD!ydPVmI<%_8l*U}%F z3yY0W*?~oKQ2C{CXHem>xvZBCkD!+WwnJ!nmyQ!7jk`#FR?+`Tiy{^Bn^Nmh?@a}XRvM4}8{-DV?Ge{)jb3eMEzXQ`MKf*fA2-G^+e8;Nl()=tV=y3*k#%U1mq_=QVivxHQZ0_ zG08q_=ZQTF#XpxuNdA@3_dKU$e~xz%>T0aj)o|6(Fp%I>+4DGYPJ7LkZs->ZIE>Bi z^Efsr=y3K5;;DMj9Tm{cp|FL&<~Z)aiv8QBMD+ zPA~c|<=w6+o%vPehOVYgnjX8tkAY?Ldy+ES?y?Wix2F_lSOU3!Oey+n^3n{IQh#|$ z!CjLt`fKwn!O8nI0ahXK+PwcTabL>&kLa?4cVkif2PuiV7samwS76b5QJ$dd{Ka|H zCfL+n#K!(hB)2ZRznJ@LxxX&&uCo-^DaE4d>{ry;8>%YzhIOouSPCZV{b%!z&qv7u z|EKJvG6L<|Bz+4(-?X4_V#09+^Vl3IU)~bA)aL~1@?dM`37SX#jJPOlHn}>uPFk3^ z74l%ce8-$onC|(V$j>R@(Ql3p1X8E_i?lRil)uSI2A(N2NXb7%$g!j``LlAI;}0$n z$dBi0Mu}%c%y@{IQFJr>d+O!yQB>2PsF(l4^e1rbKO;9o8NP3RC=gkgt^^Xt!yEqu zFiUipgR6aD!+ou2`-*ixh=M-kL({f=01s?6mlGl8hgnSZdan1u03Wk8jYSMbJ^79~ za*EirD|S;+xy%U)7Y4#EHZW6*{@00{h9Ldd39|h|{o%6AnC+%=Gua;w?#s=VPYQRK zJA4j!MCS6(fNGmsnlPTFA0?zEc6vt>dgH^TInYi^r-3#`Smh)52}kObG5)YeUmWLODTan&~P z_s25hAld^&Gkmn7JtTZI(RjNP9-U(hDoS00ltyv9t+x6BIn7r85&2owR)2FW*tDd9 zkH&74vU*HdX`s{l=S+XXn=N_+yBlB{^t9f5C-z_jpyInw0dkuAz1{cBhnU$aJRSp` zc9WVihpS(w-6XG{lqkw7{&3fCPUhj%7IU~l z`i-Os5*C4kekzuGQ*M#<{}>E)Qt~XMZuYd0*qi*{6UXPNm=*vuJCi_VU!wRP<;6^I z_*p9P$8nIAfRo0W{~7+mLxg!CnNvp5^VG2Zw%h%=Wj+B!w3;i-i&pT{gxuH4eXs4GBJEft+x{C~d6){KdHB zg-AvK?WjL(@Og=W3BH^u_&A?qmdRPmPj!YmmHW}C6kq^`EOhcZA*(6Wo06t0Efu&*ylYh^1z*Qa?Pv) z@UU6FlMhkLTqb|G))<$|nXX#n3z@H2{NKx;BH7|(w_a{@4=Lz!dXHwG4hA~~XmKSO zz^zv%DGG6ho@O~;+*^JZ`MsL_z9b6v#<8OMPbNFRMv+_?u&zmn^#f$*l;~tR{kk@B z*Qx|e1^76rL(>7&r0x@K=|ARe<5=lfYKnjBmlRRS6{KCMmfbyiE4j}=(T}c8NMfnJ zl%}e2)0;2A!&HXnfZ~uP%?;7}b4g9+X{#^tAu7Q8o!2feK5b4<29zKf} zXj#ExD3?k6-k!ceXdIvx$AW1v0hfduQ-xX@1fZb8_b#}c*Lf5y#G~L`1*lTlx=7Yd zafV;4z10hrs?`W+89bGlb2FFhi-fGE%tI-Hd|3rRR@#L`EBInU>c;+b4;E!o#Ogh(*V^O3b5AnN4%kL5qJbCc zM`s?BTBrcz#mHDx)~-j`2?oCxA-&$D*SnNnQo#5{rFu5=T#y}WL3|7!0-h>LE0zn9 zlWvaWBqyM2SgmQ%-G{`gwPTLbDF(TL{5GxPjPzQRX0^%+P?HwkqhIC+DnQ*ySAuKLwEG*}+TDp4@7Jc+y z>;m>I6AsqT0)Z#CKoij)P88vJ5w7Nw^F2u&jo9;J# z89bM{Qj)-%CAj5>g4n@Uv=uCx_e0oNus5LTVd(TZ-Wb}AE8i57j^HN z;*`kn@)e^#!A)0%f|!Gm^l39x0kA;axVE1DSHUKTz0GbpniF<`d@g!-+I4M58#nA; z^rE-j3|-!4LxT2EbcdV{_J#}+>w{~)0Lg=$D~OjYqX@||>eMPq57@C%1MyVinq318 zuh_JpILJB;x2iQ#6rMF;=BcrB1Nwh+t~sl3urG7V$q|V`MME2$)hAkm-Pd;C57hm@?)#y-AKHDto$j~mzIVDeL+y~?PP*Tz`~5Du-=+J0H{I{n zeLq3>6T0vB(fvN%_mg!$x%>V=-5=O}kK-AyO4D!H!iVa1`Pu(P{aA4NPDv;C2 zr=l^ojn$)N$Rg5ly`iOIQ4x3FC%R9%?@3-nm2)X(L{)4|XywvcakH8u4#M1QU z9P9+v&$_p`VvBe#qy|SJLGD?~ZZ^u2*@ki8Q&<5$rorv+(2lk;Tyq}iq_ArX!q>OTHMO_ zNiCfPQUip6Bny;mQ}h3+qVO$QQ#^qhA7yrX)RcpvBu~lJGh9Tom$?LqItQ=T#>3O< zT4202#ZkR&K~XDUHVCtNUTTq$pUMmA;!5F|Olyj@w6OX(ZPwH;!nfc+Jpggb!(N$t zz?xzu3DhzM+f`JHT%VKcFWfH5rCq&?TSvsX+~$ODo^OF~1>atLd-JX2TgA7?x0-Js zzJ2-D@U7+Bk8gjz1NaW)JBaUKzC-v9ZpU{d-|hMCz&Dr6eKX4Cwvhi8 z^4~)KTgZP4`EMcrE#$w2{I`(*7V_Uh{#(fZr{uqd{I}$C)el6uYT{QDznb{fKPAl^ z;d6`l{((emch2S3uZ?n3r`6=TuD&Lhd*$7NfZzYCf8FLmS+uHRb)UX9wf*`J7&vI~ zkfFndkJxVH_B%MgU#_N# z_eoW+Tr{Av$n(ky{uFZ+ij&1G1=eqmm{p3Y7Kw9}dMs0*?)N<-*)>gE{%62U#5l>fmbxxD`5D#K&`_IzIsXcw??`5$bR%h{jG@R+}R;P71k{`&jL|F(H= zmG{Zv%1_HR#1pY=_+vF>)zkBRIg(xUtO2{WKikyMggy7#d!LE>PMW-5I&J!lgJ&M; zcO2FSKM?)qY*$^IFOKZL{m!Q^Z9QYz0#~T0frE$l9^7k}orVmptm->rhtZ=}uR3qc z*l`Db>YyppXVo8a>~Y6``h*itI{B1_g^Lb9 zrz&Pc2brIJhUjqZXEZEqbS;gib~vM9`C>|OSSNRZ!4< zN7Z#KUIKZoogLc-KDD!*nw;I*-r*LvyG5;ME-l}5E^TXUSa`Zonl4&I!tIWRBtmXl zTWfRUQg_B;YOHSjVOisr+9N9i_1X}k<)*c?E^MYbt!!;@24(1OzwkU`f$m1EYlkDc zZ;xy|t0Po|Rrti@ZGo|c<`_L2pyEsGag zCA*f^)-#MhmNqQO*g}Dhgg=%vEIr$`o8$^fajpK+^o|Y z7JdA+_-f(li(3}C5=$yjsd|h(%N*IAx458PQB{3Cb13uQB3Q)g_RQ8!5^r6&u(K^U zzoUT;82Z@4*5z~_^{~U+sQ%W@c1IgGsCT)6~&XI~Je1m}J}NAj=6oBeb;=X>jcwaMBVL#5!7cO=Y3Po8ru@ zlZD`ble1pdo|{WWxYHZj-GWA1qrH(bk;ma}tsSikTU)aBSB+*Ah7RA|I^x>}ylz*` zWQ^8Moi=trXnV)vrD1r<+JlTU4m~6*aCh63^E|T+HnHN{2$H2%er*LWbHp}}+dI!- zG*Fe!Hxfc3iqQS$&~5I@(NAqyqA_IKu%*8FNiS_6$f_w<3b-w8hcPt4ZWcA)Kg)HFqU>VcvfPDnuTG=>aGP*)%|dK!%{0{<5IfG zsf@2K)Uazmy|crHsqR^!p#}C@bhaA#jJDR(G*I;z_PbuM^P9z7k4h9l{=R%${l0Po;@nf7&f<&eHe}yg~OD1Bnyaa zA!QF(<9^~l*1b8FsJY%+KCt*L{rgz>DlGs@@BSyh%K!i7f4i`8`2X_nG|{oUyH0~n6ZcBA)Nw3}Pfy0qi;aCvrP zLz^SuZZJVdTLS?X?&d}>swyS1_y0bD_K-j~J^w=zTvhI1Et|yI?d=TFr|$0>7It*9 zxL|&7Xk+SzvK)-Jc1GXXchREX^I79-7ABVc;GFlc;AZmt*Ch4ii-F9{Y7=pjQi~W^Zwr#%jv8^jlqu1aagqMyJdhg~dlY|j<8nFWI4n0VPd??*?_tqlS-C^UrHY;s z9XhVy0fkihuyOIB9zOI?VxmKdsOFsFC4qWaR>@%knx*9ca;Srw5j{Azf2@ zdFpQMEjUE?;-;_5r&Hv4H7Rql+cX6i=F!IL_x z>oa!3{s-;Vw%>v66DEz_f5QHI9r%y2d+xVyE?2FEC`dDQ&+!LMNTzrs)wGY_bK-=q zaXohU<1Z__j^2LvU;TRQuXq1#HD~ws3Hu+o!vP1A`Pc1j)yUFryH~a!L&oZRH-8_y zYvm6_6!x8Xz@FnLCchm2%jD47TWR#9efFEQU;96Z5>|x_r#PA#PxUTK9iQmHsID&g z(;uTaNz*t=^7#}tjN*v@^HCB-xqL1k7x?908s&?ns9RmRzI%^`h8_)#4Y4Qm>=pIu zz1nKg>iIs6J$mHgIG@i8O1>233VZdO5)F#W{7LjDuRke&D!Kpsb7(ZEQ07nZKNCFj zq0tV)LI2ACj<)~NZ}Fk1u_t{rp{;Gw0b+~s?fV@tDfg4&*nReyc<@1g%WasB-KTBB zgxu;4V<%3Wy#Lre4?1N0fn)dEbd%iJbnO1)_nVaKUF3HnMRThW@-EGd^ALQM8=sCn zXwSBm+@5uN{{w!WI8nU0SAFLTuY32NaFA%a-$8$KuHNmy@q10k^(;|-_rJAGI3(Ar zj`Y1+Dqc&EdVl#XWe#YYkZbJbue*((JR#T6tue|Cipq5p*4SsCfdl$)yw5&$FE7gf zaYz(R8B`adL3NgE9$Yu5uF}w4Ij~isLFHfOM_R5iDO=P~PIH6m8p?&7-@)} z!R2zV+@ShOu1Pru*AvsdT>dCZ8m1)wP7Vcd41h7Y?u{jj1M@R{7+Z=NI zY}p(lety~TeJZ`4c4$Y^tM>xMr&LgR;Qu%vpn4PzqyLU+gb*K=_;eZAah|7qy0i?4U|?P&mvEBX4s!CbDCq zO4J@siz+jQ8h_*V=5TIg=SFJtWszML3Ho)BUFR`NBU|b*4@JgvZqyW>iR>8=uLx9o zcrCKmqRNzm!UvHM`hYrDMc`b{$bm6I+^8rZk5K6MHbJ)K3miC-!twX>1LzD#l)=?PZ}?i!1+I9sU_5s@SnxZV<~(1pn+oEOHw*TBL76@&7|)xvOji_| z!?y+Fxyhqmj5T_WF51yWxT3Psndg)uoTGtvcG1peM74+cMNx;pqRur$5#JteE!tB> zyS3OF?l0Q?ML}9#wB<#(&Ewm`dquVUy`maOF(~>=ei1Xj41Y+gF<%tzi=t>etz^?m zq=Z9nCqf-xGM+5r6o)gbWIS~OOaxiZFB#7@Dx*P=wT}it2W48Gb{!-u zyqyb6wy-3uuPE6SC9pm^4c$^$ePO93{FT4<*VZuB#){3y**G!zcpEPk-_yp~o|D5~ zwwJhjZ`)hEJ;5f}o^4?t+sh_Q4*S}^;_3ZtKXG)k?PJYtp~d#K=E-5AO%x~ZZ~Kdn zCs~V4Y6}P0M4L1@9B2nBt<_q^y=``YwY7zIJJ8xDhl8!%4sH&UD>FB=$=(--*dZd_ z-|g?}?0?ul^!88tr^M;M>|f3~huYtnZT`+2a%dR^}--MI@LS*;Gm9 zLS?n)FfFoaE&vaY>~Qporf@`LN03|}r$mG!qjG9f^kYZ5@R}akbT4pJWJg7+{OHK^ zz_>Fa<0*{}$3}K+l%K*|YNc{mTFPFJZ5X*Sx;;o*UU*k}J8eZGDmw83vOjtVi=_D?CeK8ywcQ^};$%+O4XZ ztQ*#GqO4PK#bE8QEtJ!sIwi7G9N?*uo$7PX>5=iw^torIPikjG#&c>lCTt6FPxQJk z6pb#7G$|A-Yc_|ABD=_eT^xze_^UyGNo1FJ?0g7o^O+JajqFl2iIis~EdinKK=!E!t@Ze}@T_Y` z&wAYyqwZhX6A`NJufp$BLW+4Vvgf>+&qwyW(w>XL@5}akTjs@Ljqn#D9LSQ8tCV8nuKsJbP(!cr&s$J=a^2y(N&j z@RO9Rl^=fi0jc(OWN#~Wpkm25_4}VUhj$`-hp{m^yc^lOG_^InCn)wF1b;uW_sO<= zU~~8|vJXAmN0EI*KevXDBjb6GuKz^YcxexxM)oNMrZzN(&m#NG3#^Q6B^}usK97u? zpHtwAsM5o}0P`=EpQ!fmRb*d9m4?aT>&S@x8pix4vTvLlzV$${IeZt<82gTC>-)&Q zC#^O75E;+60G%4!)HwX4T$VKXiF3}h*rvHYdw6Vzy9P2nMhHzuPlYtw@c+;3jVO$) zY!~h=r4$<26poDfrG}&8${Kc5+!BtC?MST_Gz8*um=Ozy8F70!28f}r01Nz(Q$HYCwoPw#I{yt;N);>OhRL`or>bk7&(q3*iP|!&QQQkkDJ1**m#*0w}tCVc6|vMXenvsurbLJwzCD3KDw)9vxVBmVH+C( z={BlTt{#y&0!nNIAx;+|?ka_~$Yo_sBM7E@OO@@kc!lCkVNPs6)9+ca5j+dVxVB{1 zN|;0W_Ar+!Z7y^_JLbpE2CZ{g9mMc|YdDv6j-xa$ws}HD!=S!UrpUPzIZw%U9w5(; z?fh8!)CI9!z>uCCE{g4{MhElV*N{F?Oqt4?QUW^=*x5$c*eL6c+ufM3L)hMS4m;VHu#5BTF5=nS zV!O?&SsL3?=h@q1;}Or^5gX4=qr;uC-N~TfEw!D>;r3GYx=U)?m&2VU+eK5}U9sKe zknWD{Ztu2xW4l-A?INDNFSh$U`Tp4MkHdq2x?4YGd(bmK5ZeRFd}oQq++GSz;xk^h z*UL_13cF+sW~0>fhhlrE#u90DdHQf{Ji`2u*qZE-cyxF)wnvq16w%FLS!_I`#)QXX zd)%Wntv(Uk6OP%Fq)FI6728uD@pNoFqgbd*kUW!>pe--O_L66KIkuM_`&VLnB};}9 z%VS&a$*+QqC%+ckYb4W=6={60#^I-A30p9-Usm`fh3%(d6Wbze=AE;NX!bhezyYm@ zZG{7RBepkG&nBYyo3Xv=$#2K@wkN+6+dCvn<9j;}o01$hr;Zg0zpk)tN*$Yr&0OQ# zEYtWl36+$FGg&?x+p`YvIp#^98lR7i=V`YHJk6kCvW$)AxoS+Pz+q2%-S3JfSMW`2-#7`rjqO{vgH)9M zeQZ46cmdJ@@k4ApYF`=ZfXLLurY4&4rzJKmQIikHdXaR}u%cW?B*rsM);Q$?(DcN3 zoKQ||iQOjYgGVNG!jS^d^VmwDXtWl&fYbADUqNL*zJI;|g zKC$ByX?Z6o#!gUXS1f>YVinFwiSeB1aGI2NX2RGKn3EIZndvEvwk8%5iSaZE{U#Xz zPUEFAmC<>6Vy6q&)2OXIoRP>Jz+Z95tb{ebC^MThGPH*?6PumbnOKSDBsRy1byi|$ zsl3Oxg}EwYbG>HD!>qg6tRw{6E&MJeq?of4JKGz1Zer&u?d&A{u57;pdEv+SY!34h z>@=D zR3!Oa9lJQOi?MDoIVE<9o3iE$h|QZtkr>Z>I^;@a zq}FgtVmvnk^VY;}O~SxT8yn~yc$@PB65#g4 zcm`H!$GEs7u{)gM?o8}X2&NPw^h;L{MDs}Op2Y5=r|(YeZYSxziQTK7_ITDMiN^hX z-qT)D6*@!X{=|50tFoW^>Vd>~x_0M7iSc-hdha%8h=&t<*wK05z}pI_UyWB$S0F>cuItO3Nk;F*fUA! zr?UNB$oG@(_HttV5f}Dy#`v!!_KMg3d}7ag+m|P{oGKC7)=%T)Sx;c3J(t*Xp7n*q zUT{QTOpFIaUrOvHq4_*$*5^}uR`v4I-{(+j=%fcUdo3}Z{#7DEvey&i=}NK{iScA4 z)3SIC4U0Dtd&3cUGqE=@*EWZ@6647VlG+u*+lleK*`;INNsMQW&c1s$v3D~@pa!3j z-b?JgBy<>}C52d1Rez*y)=bkMB*xQiboel_4-=Uk^x6_WN~+7wj}s%@FeZGG*e4+8P4e}N1c1uCDlwif zlv#R7#?~vdUy3U4SGBxfC&u$tSHRyS_Km~&HnDG=w%=hecYMBAjD4@%WmQH8{E*lW zUC2|eyzeq|YTkIdjS188HZ4zE_0|%O$dhhIXk(_b$}>*S8xLeSGEa;h>3cS0qxDDS zc~ygs&Ku8Bp5#rPp+ZVICT~15JcStWIW}*{<~zHqT)A<$WcYD;J1(!;?fASM4?dNp z!z)uwXe_A(?iya1qKNydzYh)1C^t9zwLgaw^LApMeY9{=-cHI_p1tg;%hH3w%sh42 zOmEXv3#a8%fUC~m+HZL)TQ_ZcolGMuBbbTuc3R#}0rykEhj2?cJ#VMx?Q~@78F}M@ zYP0e-D=&jZu4_|fJJ>mSo8wJ6D{p6crkNf;H*Y*=0Qu~^@yyNd8qV?1ocx$@Zr*q~ zmraH1N_L%8ny#SBmAMXMUf$;UPQ`h7JI^aQKaadQUlhyw>w>&p;0YHg;UXnWjkKDr z%o`q3mnpuDaB<#vE}-U1@^*>PG&kaLz;;ch&UB;-j_EXk@Nn%-JjRw_d{`Xcpz^NP%y*d zL8UbA86L`;WBYL49`t%1$s6HE!0OSwk@{#Jk(;;2RPv#GWeT!3Z;$Kk{(RUn)!$!` z5O%GcEGn=xWS1--wo<~@l^KdFV|fo-A}6313)86)E7MAj%CE}XRSxp%yj`s}ku4=E zEXu=`qR};ZyM`PX`|`%Kh&El9x9gk`*H@#O!wtNXuO-}=w;S?yBe`zM8_y!*7U%8y zd^Qs-X76!H-gv|$cb6&|-`v6`Q^{^2>Q)cIezz%5Biz!w@xBzO*RT&E&dK=j_PpKh znB0-KJG_G_e+x`^XWj_iPJiB&H(u_7>2569jTzHzS)bCocb6c*J$d7~3KHL&w|hm@ zyGxK03UrV&B?r_b{y(W%CFhKcoVImKcp`6GRi^9|p3K|UHRPYl8_$y2SU;oTtNNbJ8_zQk?m6|q zGf?~aygiq<=c(?+yuH}LdoShfC8yAjfg&4T6c@gnx0js}Udh`lBEu8J_7^*783m-R zS<&Tfxp=J;r93Fr#_el)dyR417GBRYlI?XDh+BpoD<@@RGgk{jdU)_85e+V=QE5fq zR;b=Hgv}c?hM%|cMhJ4gowv6<@J`+cza#c4kw)z3@NV9CZi1M%mWT-NsZ@ABZv@_l zARkEV4Z)n3H-aC+6CdU6BN&p`)OIX~drEdI_S}QQZGx$O_*fYfv#4Z*7nRz=r+MSK zjnK^{yV<+!9&rj)RXK&>rG}mC+>r70XL;lK1(RnUPPdgVpilF0^?9CG`y6b($lDj{ z^wX*t%2hGHuk!YlCw!f^T?vj3-{g((HxU1ZlHDLC|9Au2 zRZ}D)(F2tWhubeSwJfMkDcPL#UA{7XsC}1B97D6o=d_`$K$LZ6EiiW|Va3d@1uh&) zSTXZzfdxYeD`tKzaP3gSin*#5STdBbVs5Mj?ixy1F-vQKhlUbX%zd@MlS2tBW?3!p z;!whhdA1f5BdnMi zwZLh^2rFi0EiiW&Va3d@1uh&$STXZzfd#_|D`tKzaP2U{in*#5STc;TVs5Mj?ixl| zF-vQKhlUYW%zd@MlfwurW?3!p;xNLBdA1fUz>XyAF{#wEqqLJR748_{(kBu4oQ{HV5saHJruHs6&~X+FYOri!Yhr&K4G5B0bJc zjpyvNH7qXKVun6QO5)688#T3gRbr`4=cUF&()j`*TrXe^o`wrkyU=^!qSP+(x-M4d zTnNQ4N$nC(nxERm)y|nu=UgTTb{W*ToL$wFP)k_gy>ofBLR;WnKqS4hFty9Q3$93w zXQ3wn;CujFnc9_}b`^TZkGkh-@1CobxjwHoPA2^pspX5((cv1r97O+`s3V%jUFTgn z#Jh5cntgq0JlD}-H>7rh3Y=f-upuJCjj7$}G`}geo4olqr*?C-!){8$kd6*J-#cuG zI%;uhi@ng2)RuTh-ICfZUi#M5ZdFGOak*9Mq!%^)R58rMAqI9!u@fDyYW*^|&C|Wd?G+`Z)kW-UsqqN(>#4miz?oy#3T(U?;5W4Bv^N|u3)>7ZkpO

T06d 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 NzbtondU$T!{{w&_Cq4iG literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf_hex.cpp b/emtests/test_sscanf_hex.cpp new file mode 100644 index 000000000..11e0a54bc --- /dev/null +++ b/emtests/test_sscanf_hex.cpp @@ -0,0 +1,32 @@ +// Copyright 2016 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include + +int main() +{ + unsigned int a, b; + sscanf("0x12AB 12AB", "%x %x", &a, &b); + printf("%d %d\n", a, b); + + std::string hexstr("0102037F00FF"); + const char * cstr = hexstr.c_str(); + int len = hexstr.length() / 2; + char * tmp_data = new char[len]; + for(int i = 0; i < len; i++) + { + sscanf(cstr, "%2hhx", &tmp_data[i]); + cstr += 2 * sizeof(char); + } + + for (int j = 0; j < len; j++) + printf("%i, ", tmp_data[j]); + printf("\n"); + delete[] tmp_data; +} + + diff --git a/emtests/test_sscanf_hex.out b/emtests/test_sscanf_hex.out new file mode 100644 index 000000000..6e7f66aae --- /dev/null +++ b/emtests/test_sscanf_hex.out @@ -0,0 +1,2 @@ +4779 4779 +1, 2, 3, 127, 0, -1, diff --git a/emtests/test_sscanf_hex.wasm b/emtests/test_sscanf_hex.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5e1c2cb73d40cbbd59727e48d53ee04ec90bf594 GIT binary patch literal 82088 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≶y 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 +int main() { + const char *line = "version 1.0"; + int i, l, lineno; + char word[80]; + if (sscanf(line, "%s%n", word, &l) != 1) { + printf("Header format error, line %d\n", lineno); + } + printf("[DEBUG] word 1: %s, l: %d\n", word, l); + + int x = sscanf("one %n two", "%s %n", word, &l); + printf("%d,%s,%d\n", x, word, l); + { + int a, b, c, count; + count = sscanf("12345 6789", "%d %n%d", &a, &b, &c); + printf("%i %i %i %i\n", count, a, b, c); + } + return 0; +} diff --git a/emtests/test_sscanf_n.out b/emtests/test_sscanf_n.out new file mode 100644 index 000000000..c3ce6f046 --- /dev/null +++ b/emtests/test_sscanf_n.out @@ -0,0 +1,3 @@ +[DEBUG] word 1: version, l: 7 +1,one,4 +2 12345 6 6789 diff --git a/emtests/test_sscanf_n.wasm b/emtests/test_sscanf_n.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d699770c517cccc2bdf5f750d8a811edb866c9aa GIT binary patch literal 76809 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 + +int main() { + int x; + int y; + + const char* buffer[] = { + "\t2\t3\t", /* TAB - horizontal tab */ + "\t\t5\t\t7\t\t", "\n11\n13\n", /* LF - line feed */ + "\n\n17\n\n19\n\n", "\v23\v29\v", /* VT - vertical tab */ + "\v\v31\v\v37\v\v", "\f41\f43\f", /* FF - form feed */ + "\f\f47\f\f53\f\f", "\r59\r61\r", /* CR - carrage return */ + "\r\r67\r\r71\r\r"}; + + for (int i = 0; i < 10; ++i) { + x = 0; + y = 0; + sscanf(buffer[i], " %d %d ", &x, &y); + printf("%d, %d, ", x, y); + } + + return 0; +} diff --git a/emtests/test_sscanf_other_whitespace.out b/emtests/test_sscanf_other_whitespace.out new file mode 100644 index 000000000..0d0f4bebf --- /dev/null +++ b/emtests/test_sscanf_other_whitespace.out @@ -0,0 +1 @@ +2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, \ No newline at end of file diff --git a/emtests/test_sscanf_other_whitespace.wasm b/emtests/test_sscanf_other_whitespace.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5c8301ac2c60098ddd63d38bf60534a52b9e018d GIT binary patch literal 76675 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 OWev-6N2W*S_WfUY9ruI) literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf_skip.c b/emtests/test_sscanf_skip.c new file mode 100644 index 000000000..0f09db4ce --- /dev/null +++ b/emtests/test_sscanf_skip.c @@ -0,0 +1,22 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + int val1; + printf("%d\n", sscanf("10 20 30 40", "%*lld %*d %d", &val1)); + printf("%d\n", val1); + + int64_t large, val2; + printf("%d\n", sscanf("1000000 -1125899906842620 -123 -1073741823", + "%lld %*lld %lld %*d", &large, &val2)); + printf("%lld,%lld\n", large, val2); + + return 0; +} diff --git a/emtests/test_sscanf_skip.out b/emtests/test_sscanf_skip.out new file mode 100644 index 000000000..cf1cdfb8e --- /dev/null +++ b/emtests/test_sscanf_skip.out @@ -0,0 +1,4 @@ +1 +30 +2 +1000000,-123 diff --git a/emtests/test_sscanf_skip.wasm b/emtests/test_sscanf_skip.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ac151b825fd62c10024d3b7963baaee66f504f32 GIT binary patch literal 76565 zcmbTf2b@(!()WMQIrrRqnL988D4?iR3o1%7tXX%tsH4cL>#Ccc-33&1ok4WQ5!YQG z0Y$}(5yXTU6%;XNRLlu;R?Imk%^RG=nx{RIj49@pdOl4a;Si2X*qx#;^3yl&m{el36mywpD=0S z__n<#>@Z>9{n`%B#fs~(_k{Lc_iGul^sTJwd+p58~eLme_zeny?w&I`)|G9fn@$&ds{WKw9BrQt;UeC`rggo$L>)1 z6A^{IC+@fV_=(Am<9AFBslAm(PugprN&B=POq8%HWH`mq)Of0QS?c&i`$u(k$zT2) z#YvjRQIgN6uwfKO{GX4KD9Yt?`MAI@|I#R5EJfYw%JtoQG&J;RXl#f*p=YnCSML>8 zh*r$^Y3$J>7svU0UQqI-C|B5{=agt*T;@-rKY9I0`BTaL^3NgBz(Scn#a||P=0l>b zg@gW;|2x|1XTQaVqQ;)|(S)|PN&AT{#<%aY-=y5C#j$(sHSxd${*fD&j@_$m!i3z4 z4Pz%xoV@SY-48fu{QhJ2*s{n`B1Lm65b`d~jq?zEl^dUqJz)2? zmfY@jdmaowPn;;;+@rqph1WfMPdGp{-RFRRI9Kno|M)#7xNo-+HjO~^HN^VeO*Po9u#=++qJ21ez&2`lZj*MR;jueaA;b?+|9|9Nl} zO&M4hqJedmYaUcLu&&b3T-m=>p@HQc^CKfmf)yJ_guIn3uc)QLN{xSC z*`mR5E~Hkrv>IDhY`w+2T74zo9J*U~OO*IwsLWp7>VZ ztj>CFoaC%dxb(0d){D2w{MD^aSsMq{RdNmG*Cs{xl|<3|O0>PvNt!jiQ7yl(6#ii`= zTA4XSt$VXzJYS`g!;?jOvRFx4!{6+0^hNlG{bL*85*M|G1MGlGbU--N4kd4MI6AVU zqe|2sPK_!z3^D%3?akrb$j*(_uFE33%xQORWY>Dk;>Z?z%tMj!oEtTTXCiwB#47^T z9$t&=wWu=Xfbd}?gg&Iscq5_ z*-oh!V`yhD#$&?UvArE|zB1nyZc-Yd$>Hw2 z-JP#Qlf%-yEhT$vcma0F+Y97+OKF5AhfnkNsptAWZ{HJW4Kq?Bc}Ch6PDx24G&!7; z8ZYO-8<(bbX)4~hCKYe+SG;k1YPYB2jR#VDAQj=CO6@6+S(e%|k9j{ep4-!=@O5fm zr_LLfLeawtc345YalA9@@dfz0Al{g*amL^9R8d96Ar};k=XMQP>LF5rHcv>2=cu9`RfH=l7drEtT!eEp@XjvU*^H?6Fs~@;@K@BinkeGi!)---s%WBpu2vZhf~_ zpkxb5!upDmT~Pw-qtehVh1D07TEgG?YkzMIV{NS1e4LFFlaIIYV)5N=ob5h2>|uL| zyZ5v`#oH5Xg6-ZG_Od-}!sM{G?Jb_($Mz9NH``v;+!k7FZ)=_$CfY=C^1imO_;`}F z*rc|wpG~w$lf(YDztUQ*RovTV`&nCCXt({XZE`r!+U>yRFuAgLm`(P+ILHnX>HcZ| zRA(P-2kY%$_AiOkf7`#Ea}Ke8BIp0f+;T`LB_ol+1x+>oZU3#zQ*4SzFg3ENlFWt5 z3e90!WYb v0bQs2EM*@W>7)xjs&b2uDQa)TZdij&R{MJ+kRu;K<01j8yqik?DbP zXGF$R8Xb;_?3gG&g}2m7<*>Mvy&l19u^jF!0Si3uEP?3aQYh6&-tBdmIMRuMipC8%zo_s-M7mzISo*#vQB!@Mr;~a(0R@eqo$C_ac zC(0U?oLGAGumzOUpgK9SlO5nGk)7gm&uNkI%=EcurcY|8N5*qXH70BUaZm8NFBFX~ zj5H|}E2}hziz2(ofn6Ml&-klBe@SGQcJ-3i4FcK}Vifo~{ z<_g&4s;C_PY=7=j-=fGCiEs(c*+NWlb!0pzcr%LveNAN7IOyvlyUrVYePq{rbGK0X z4UzF&=LJXy#Ep^hs7>&nP`D|wn;gW=k=^VdZi(!cDhSeVjg04J2SGX@Zi|e^L4a7P z(l|QY9@*_8SIIg0j>zsn5oil{(pnAOyCUPcGsBy-=CCBPB|f@nA%9(N6jzha3eh$6l{JQ*3!o6K}iMfQ{v=;_FwR%<=JEj;Vm(X(DR z#i)BHdm=);-6{MrC8U_=B74r8`Fv#0EA6=`{IP6*w547w)(C$gGM+4Ash4^Y9HUIf zC4ww3MaJ`l%J@8>=4l!@)?>2q@^WM^cTt)|!_ch^H~MdiT6+7GG2xZSUZD+@DNG8P zrn)S$WiH)b6&Fi-z8=}@-rzSPdqWL=HOi)tSEH8jre`lr4sS*FmgjmqvbO~?7gkNl zTKVaxpO9+rMD~ti2Pl?|Q-AzTb9gthcNrU#!+VjvM^jtF`+{QcL+}qG`+#iA1~i9{ zBKyd*eH_`x^mA+YBr=}&>H1HVjhFWDS!AD4U}{5i_&l=Dy}%cdeL+XIhA$%{=a&@t zDysCbufY6kQKeyW_%E7#x3Ef*pAR@K|>%ehZ(VOm=U*!qk$Ou3P69LhgIz8IIKpL zxqx0pW8s+Cj&THzjqTW2^VM;&@u=61kBz7Q=x}0eCrWcZ-Z7jR+f2Q!61E1`cKnX1 z+>ryn`ZVQb1lhv6uuxxu{R!DB5*;VSc9K_ga%`(r222j8#3VE}+bJmCjG7ykjn=RDV3!B>rNVjg4 za`lMJ5l~`X2yvPSv7{7MBbSvmjUbrrEmgMEIu?pIg*mbPTEAz;M(|7+CPBVi8Z z+rwE@X=g$AvtxejY|uJ~)jy&2R~n(o;fC0Fxq+40jj@=Szv{zVV!Orr@K#6=eq*=BVRUN0CbW4N zUAEC8>TR*zCc6A4jIxoTDJ8Hqf$eN`jg7MIxWnxVTZgS|yRfZ|3EMl*ZZDp_J+|Au zn#Hj#cAmW>HXiZpow4z3J38DI+g%I_-csAP9PTJ(uiK}#RXN;Mvh6kHEs1T3L%KV* zyS>})jqP5cx4n4wzS!>bTdm%?Lp7{Kx_{v^Iatxb4MvOiO+c1N-x`z zDQurHn2l1?ABydv8cU?r<>|w*@d)!rVr#NT;?d#J*dA53QA9U~rLpmh8WSFm?QxIR zwE9GBPdH{zk|tsQRBTUq#M80yjAEfKLGnyig0{RA+e@C|<=9?!>|crPl`I)bEQ@WK zC%+0dp8Q&DuaQhgR;2O08i!wzC2Y*dep%s{6t-W5^=;#@p?A*uqS@<=0|)d*Y;QQA zH)DHK^{g+7zZKhCp8QU1?|AaNvAs*OG`@G@umQb*QM5uPWJ9ncnvS68MwY zK4Fv}5I&W7uumCvpU2YsK6hk3kEzwQKk$J%U&Qu>*YRa+JoMsMu~3DsUt^sRKYsz8 zzDD%@#s1Qz*5$D+?`VeWfEBUHH?i?N>2-}#1>eT@tyl0}Y~MKvzK`vDw}Vua{$p%B z-+2Mj0r698JZfJV>VU}9#HJ>i@uwv=Em4yX!+Mc)(y*djhbP7}O-4550?_otc$`p9 zY>C|_>4Qfkbixq=(BvF{WMW4q(g=@AsFCr0bYeV5Ijm8nF>57uOroS?6Fb(CIWDo| z5@~tIE5?pjW>+kLb3zr)iHY%?;BcChcV@!a5}1<`G+08Ztl zGL_MJT4JXO*HfvjJ)EA%9Kc_3$gHGlotsS>8QQ}ciOo*z46H&< z!dWU~XL-$(hgo;ASxE@COZY=dNHJ$8cD6V2+{DgR+Sy6?L)rcS^1_et*&OC3#*;v8%kmqQn+K(AIEuV&uG<0@oy{W7lAIyH5FuY7f^Zc6}ms?1sdMy#cPc zF|ixHS8nnE>e$Wnn%zwI-ICZXB(;WH6XUrFn71W%TM`Cj+SmZ^z}uZ4kN|fi#xtNw zJI2MGiQVZ8cUNL}K`^BdpCU&oS+T&T5BpUbkc~5&q zRp<DrwSCC1}1>b={YAs$ZbVMptc#2)dOM-zM0O~^~hOzWG% zV;WwM36Y1Buu^IRq(eSV>!b@jk)T690b!p^?C~ViA)idj;VBXBDaiaxV$UR@pUST6 zLcX7Lx0e%J8F67RXN>;*^k z#l(0(^rggJ5}MD0W_>=jXH_pREBhQu4W0CWX0Ij2vvQS)knHuuc)F78jl_5|l4)7I zl7_{biM{Cvyp`Bnm}{HE+lldH1xf7+;hn^I-s;jZ?8~ZWt3jP3%*VhKO#> z;WMS%XTnPMy^kF|G9uAFPl%U9`yw%(&pnA!A2K|?OpGVX-A(fKs|0|`ygV_UuasGO zNygR}X1^3w-fwDozfFwio34PrOYA#`^L=99J8gf!VD9+*s2KZExy!1I4)`gtpSqBz zTsh0vk5lu;(``(cmbYnn+N!sfaCn|{JKXno=6S~HdEhS(8GB7<6gWS&?c1*sryULY!hHG{^HgCt~HM<>`x8uO4^2zYZ zRHLrS2erT#!z)u1vAp{G{qT%(4`sjh*Kk7KPRO&R7Ea9DiTTR2mpye^dO(<&rw*Ix zZJKJ~)O-qX)%kn-J#S^}rp>XFXk=vsGg017&D+V~ehT;yZV9L5?UcNohD<#@Z#+y{y9(i-VD3^EbTv?D0X(m!2;#A0aU*32`&inIre_oT{PsP#UfxJCH!3>KB zmD0F-cqngZ5r?Zr&bK$%pclDahKqJ+8O=^I?-ze}79t z*r9TgsKC;YU9x=GR0*3^W+<+VHeH*yYn>3+Rim22^}Lg>CESp=>+^O4xo*rG&m!V(&f9hQ zY$mvwy~kVf#v>-VyHv^e=2kYDN_Hzzw|NNmyIp}A;TGqO_r*ZHntcdyPR56KEMu>S^iHPvNN`(*dM&JVo z@}b1uV9a@WBlrC_mN%Z; z3Efn(o4m{J5vNd9l~WjAYS>B64H;j5o;RM~GI{3Vbo;^u^b#LeU*>tWFTv)kynUrk zUsBCbu8O&@^Y%4#XbQ_E=9VkVT%WJL$=f%c@NM39AUHaFmp8)SLHz4WcD{{T$p@bDPw-%T`l(1sv)dJTHC9If*wZJVy2`lD? zT42dg!irg33p_NGuww431)dyASTRd$fft7oR?M@tz#BseD`r_O@WD{Rig~9N_+ltw z#e7l=d_R=1VwTqe(}xjO%+y-oxM749Gouzbbr@mA%&Y~@8b(+#vulA1hY?oH+*)A% zFv5zNR|{M-jId%B)&jQ-BdnMkssa0L1=4%8D344HU`LSk=v3<2k=n_Z3U{<`=@W^bc1%jV zw6SAT<2lBYcAy~p+o>JrNyn#ld|DZ-(#w4ao{(1N53v)J*Hwo`R~;HP>z$b5Bt+qv zsm=7+`J~i{I|+PF7Gfu-P2tqkPE8qVY+5qwvMzDAqSI14%}bn~+UefZS**IrCrjSx zX=uz81q8($mw;Z)Y*oj?;f&PI@WOLan}hbz8qQ>A)S;Y}+F3vm7GE>Loh>ZBMtYo^ z8qe8jYq+^&H#77>QW9q_+o-9{trAOZIxjUIlFk!P9VIY8QGBT$I{HUf0Fy zoC~4&C8=HFN%K;>xY{}M=$y+0!7hUum$R#y5^4$ay>~9JR%r9R3y7q57NmB$cfl2@ z@htEp0GtniD^t7D(-xw4{H%Mf^6t4xnd|df<7Corky^ee9UZR5%R%(7i8`Wb+_m17 zgS{&UtJ&A3#&azlc71BstHAlS4jU{Y+>qK0PV*a6yV09}Q))L=JM6|Z4DRT#^S#3c ztD|mC?Pf1@OKP`xN8Os*tzP=J)NWHp4R*O}gT+RRQ(NrW??{aYH1AZ5-RYF@fpQmi z-ZU&pZHW{7ZVbZ??jH5U66kwxYWI55eJCW=zPOLRxL@?RA4)!`R;oo0q5q}f;nW`X z{Ewveh=Y1mpdJR)($toE(qpMTS_SnOpdJ?ldmLC#uydG(CsTVc4Ns>=;AzS|qjxQo zo=uG~i>c@MtHs>&N>NK+NR8+DS`R+~*+Hg4=>Py!wXppFk8(i*bH}mI=Wy-d){LTc1%Gc{n&yXtBf-| z`nZA}=g}t=>;$4wCAXALdt4z5AxjuuMocSww8AzdtZl=?P#?By%iMcn!A^8QGYdA; z0i9H^lLUWlnUzm2*vX!JO2JO?+I<3WE?IwnXFm$%ocy1v||v zcdo(ScY482cWAQ;+Royy?73$Y>5p!Y57D~y44`GB^ z1vUu_c9uK8on5GIke^d9p0n`{I9E}2uJ96#!3h%0E!bSI?7V{UsIv15N`tx=7VP{2 z8t~i#!oN@s|7HKxrSgjkc9B{msS7&r%Ebla`N^3I#s&H%1-rzd&nwtG?|@4Sc4+~W zDM9*W1>>3Lq#_*{mlupjO)OJX!eV~G<~xi91zX@St}NJXMsZ@2T-mm z7>`2{t?eVm?VW&7*rGzfo?8e#)v*MhOGD4Hxi#sUf?ebFU0bkg3zb9Jid2kU z=kR+%AFeu#&f-=ARc<+s!}kXp6a5WGT`6LiyQE7DcCLQz?%y)Ox{|M0iVC> z@Z02`s1bELX=G>*i*ZUU*kU^Ej)L9cjlL7lES2~8ws4obG~VSkQy#Y4*={R@6>aCR z8*_`t++DD{y(RY)>>j1vT?o6CZMUkZTT$$LZ^3vn*@r9z&V2>rSy3$@f-LtJjOR90 zC4tvd2K)yK_JE`Hpg8kE5M$`}fdX2o6~}~!3igm92ZTNd9x2!( z;Mf|L3Xm=XhCD*PLtgwK3jP4Se=OLK1-#iQ zyMhbvUKOnQM-*)Zgn%89d9@x{v?DV&)S^vuU)C8#n}IK@wB}wKG(RC{-B)XB(WZLV z!-{rTQHUO1G#(J0UbN}*f1Oqgy=8U#N%iuwLZ+ZmNe4Zk+0jMgS)ocqNOnxocsjB$ z9F8p-Pew9X^LuNI99OjC9D(DDcD%bjo=`NNtRSgfA)Ht=p5x^hOT0Q}X3=O3`?v+@D&sQ{_Bt7*?9YX+=BDQ9Io; zoDL_?DjJWn&Mw+)QB-zISMJX!+8LgEPSNHRL*A#oS;flE&Ed?Vo$1bvXBF+NVmPO0 z=M=R%JGW@(diTubFL5p5yrP}wN#_@BZZYfs^NZzhfgsogU~r+Tm%zWMXoN4q%z1Iq zE+#MWOfF=;q-d9Tb(ea8&bh3Ztr9OUW~;>cMVns?3yQYDE4!j-S2!M53XcWgv9M?h zJ?W~VU0KEBDnKs+fGq-zYl;T2MP$9UC|&Xz^@+60YrS)bM7Up9Bwm!fzGytxdD0FP zWED`f8$9X8qTN{Rx=OsMs8!-ko|k4&`sSkDT&(n0A75Ie@79iU8)xBCGp}@U7W2Q_ zUY;FJK^4EO7;Y_k$KUFZZzG*d}Lz$&*Fjb|1_U0k%q;{IDyB&9RGKOybc`KEA3 z(e7|Qxuh8GR8+XDXaw$p9!rF+rl7lvc6U*e-aU%3d%T(@PMCYW6KUFgMdP`*+E`ms z%foc{K#^CU?;b4LgF@v2%C?7x+<%?Fn(rQ#Q@Sd9gfud=hewO{NYNgJyOtJhsrTw* zMSD!;J-#hG?vCt_dsURD)xWcci=l`8F6_!0#$%o++7sT0r;GNq(w-=WUCXvBO%<_v zXy`ptG@dLXTi-s*Xf0X~%xKMxX6oD%wl9z%tDg?PZ{}hF1i|UZKUW7VTBCX|{Wy;*NgT#J=_}J zC>qZz#kTOKvhmU$-YVK#6wqw=ls>p?yh-SM~0^lJQ*PNp5twRE3msS;=@V^%P>j_wtfm{OfRAJ3Si_aR^QU@=6wu zW!}N?7;e0ro%jaNy6LeTh8bV(-YQsgx-F=Nt(1AChG*f=G0`IP| zm82=)?s~HOVr?Hvwj0MIx5u+pBWHWtjqTqUuSDo~YHYiS)TeoQW{A^c*-v&;=K}n6 zcM2lYX&#`IQlQXkS_Vyv_?5B4&y0Z7_UZsX1tOd-h=_o>uBaVD!2h4;0?a2%v?YJ}&VBIL!#QRqP(A1M63!d9k^9-+JI4c#*-UKjeNG>rao z_j>_+H8Py%>9E&y5EEa1(eGua=o|9GCpC)+eUT(Dy6e5Wz>7p(m`re)L);}^aPf!7 z4kE93)CAn(zx39972y*vI^+NTwOU6?U%~IIHo5<@GsqV($nuCYpkk13YbONUTOPmp z*6_WeaEbpPot=jUAPLEEr2oO|bU%94i4#3Z5PK>fi8=@KLzLoAU&f`oe-|vK$)o-k zt&?d49O0qE%m7zcQa13cc{?46EXyF{ljj*IA{Z*U({Xtov$ zc)Cw#^x_deOGv_unN;EQ>=}*&PU~m7-!`u4@>FkqnsmWbtRlDXLLF& z6YB1;4z#9lo;=iv&t`@5<)|)UkC!_0zy-owQs3n_aY!PL>$+qgU;{Y1tMp9z8E1T~ z35Uhts1oapTyrr(lxF!>x7EGkfi{q8GxP8u8>C9tkZ4;Y14-iv*cz&G&8)_?Y%N<; zkd*-aINc(kc9YGnQrX&4^>Q~Zl7;<759R%?hPQ%T2m`3Q8v9zwOtKMAC z*0T{!_#UtCOg*$6hvW^!(HmAJ-bS{OZP*$%=G8U^3616v0_BCH&5QmkFw!I1Rre>vwiU2#q0RJ%PCb>w6tg?41dz#?a3jNyA6l zNWrP#7!6TI*(f&zVsIpFE88mb1>Q3Bqp+X5*x7d0xPwB7B7C7#co)f`U0e+9YP%}t z4>-PxNPo0Hl6hC_CqnlVrktC&SbQ7VF74q@_9yk#pQ}2r+@=5A8vaXy=fBh$5;dD^ zg#Xq4DzF@%cd&ma7UGPxzawJ)n%dYh$3<4@QVR!Pp@$?&KlSA9w!3XE6hIqj9E26L zJ#9~6#6eiKsGm~yvb}6iW!zK6I27wJ%eIF)ms9&HrZch>YqsXB7>IB}*7i}ceN>Et zvRN_NdWUErOv(nrejJaTq-+d?A`_ zb*LOdr~I>>leUN0f4AyB0yUEZw-h0!ElhQlVXDjJe~Uj>vVVu7trS*H&EF5x`CF0b zaGk#;>97dLP+K_@LvHz*uA{fvyK9w4M8@L_6jzv!)QMdCH|QfC`e-eAl#b>KlNmah z>!Sw?d!Oo3@@QRgK;(cxB>8+Pd5n(kYAJcFpC)7}d4iwsJ%M(gs8hGuQgWt_oGRN% z5vOjolss7{Q#p>w>3e14Mb|Ls4hCOJo~C1}DsZ|^r%FuE(iv6G)p9d}4x^nBwdhzb zMP^a*Oh1>)Qt~XF)a7Vy^{B1Le~!-FR#-}&i!GB|7bb_fk&H?86I&d2b z*-A3AeqRXjI*z^iT^PK>xECuPPP{}1U$a4earRpsTl0WzSQjsiY@Uw7a!rD6k`Q4p zj}T>-L&YqmEzI|+f4+CLDikx7#Muit7#nf=Hj6-BTrn9bU_1!v^nyn)f z^~f!r0HU|*e5|tGt~0Pgba7-nAbN++!Gh*(ps8i#EvlE7s;eTEbkgb`9e?%PO`sj5 zx>rYFYw3{cKGsXwyB`H{1LOTV4y&pk(9u_wdN48`he~26p&#_F3o#q@_BGD!)Tc$1WVgSy*)=VTkc~WRL48EwlZz!$a(3bWJ5PPk%zc zApNAys)}fAU`HYL)ibc%%c-F}Esj>!vaf%(>f-_zXcaXw`B?7|Tg;G-{H*E&F$1Z56O!Myw@s(@Gz5anVX&bTNqE&-&2mT(Z)yjKJ{~WMX)CH}(yA%(5V#S}IBG z6f9Vw28w!%9H1pb$yg|N)ZuH+Zq`k7u0!{yjxs;2@#r^Zddd#%@k*k1C*wm^M|>Un%le zO)NXBK199h<7xxZ$t85BkOOI_7cdYpe?`uW2G6ou`d4E(^r<>7qPU5DhcX(5jtLvv z#>$aXn`MHk22^CUCi#xy%=B_vXNvEVAM6lPTZ0|)0bRxrLMSm6&J}KFO}3pF#`T=h zlup`MSC6*s6}h*X+C^8P+zvJ-bJy6~Mm6@UVN}&)(OzutCTTBpOs2x3!iY4e6c&x) zfDJz_Vb=_!-E0@I>}brcn*9F20-H+zm?4WMA!IpjFJ%7$vVRd?f3!b{z0icUzLsjd ztD>t^scN>`sRbF73+l)e+rQi2g$%c8h;HL#F6gM8sFpCEn>8RGiiM~xs_ntg*k+Up zCmu?L@IjvtKK}rpf2d;DBle*zY0b8eH7jyY8}C1A4z>ufi>};YzTX$i#J*lm^Tc@O zh%^H~$tKxYUBa=S!0!+E{gurz&|Mrr;#wg=YPWV(cAy<#2a<(WaF0+9NPgUWu4DjY zsNVZi;}-8u>>&bxI-!|PcXq(5Xb@d{;vg|K7kG$Ry1)Zs9b$)cAr?_Bs1gTB3z@=? zw2-M$Jkq90j_xg)GOf$?9eYdWx%Qx{GiBj0>>92n05-BI?cqqjwFAA8`93pixE8?l z-x`?rQS^^dv!v-C=0eof0Q3%#Xu8WW%tAbeW!a?h@2%<|hl!uHDg5l~I{&b!`@LB@`R5y8<6cm8}FCn3{T^Jfv7cIGZLt!V*;~3v zFY6^Ry|pUn?HVTXUNMM!(GbB-))lHss!F2`odd1t-rns9{C-*#tW;H8Rz`nZsWtT1 zqCgu&z9^tlsE^Jsuvixbb~T}b3N*l0LrAZ}Au5??>bg{8X4O?eH+8pGwAs}g-j^(F z1&uYWP+G&*P=mUuo;7Vv8>A)=QZX%OrC)Q)iN+brSrx0AA6d(0#Xw|;4Y9RVY;6@A zX2Y^#S`{3sGnK4pslmm?2peJlZquSx<9R*CvoB3^_U~q`ZB-BJTGfMnQ{#C<+rTyy z>}<%UnGD(}gQle|d05j5+Gar8Oj$P)n9Zph$-RYbp5060Rj{U2+OO@`s^T~H8&$#b z)<$|cJG4`P=X8nMTPsDg+`!91#)Tgmx6gL2)CdL&!xLznt(nSyDjj_YJNpG3xX>ZC#jp(h1iUV|s%)91ygYZ|Cx)z(Q{yH+t7`v8O&Q(xhf#T^%{an8k z89OhzTT7gtsfdv0G2NA-qOKXL|4{v&RPQbI=%;>hbqZ5TAIY<)WE@?Z8A=~l__3;? zv>U>x-u23E8l=zYhC0E2Ho_t=_-<|nzK^))b*YMyU(gjQN`6t6#Z0oj5HYT~bEP}7 z?OBDNQP}FRz;$PPN5Ty~P951zUN+u2t}hFq>&c>}E68Zs%7?BEEgzM+oLgtI7&)w< zv8(QvbV*Am4+$iU`HC)F5y)k3hvjeFjw4KjIajf-xv>`#zpm{KN|WM#E`0=&eSy<5 zGsrTOw>M-47C&GK&zxM|^4nA1WB|SGi?O$V#t*WKfEpe4jxJ+Sb?@ok74_)*T4#vF zAIRQ~Bzy;@;R6&_3DQmkKCIflYg{8+NgpxIN4lZ~5Tb(f#K*d-MOA#F+gXIX8^$%L z`Ur*3{PvYkya4Hd_*|E^cwI7@YqWj&GwZZqd|kCpSL@e`9-NoUAdUT6m2^nU zF-*X9ENF>GyMYw7(Jd3iAt|sI7uA-`IDD+<$SgM)hjCeno3eWnA&eVMody4g8P)f( z90A{20)b59^!+7WbHu$WSW{1~g3k~j4g}aGas=2m;yJ|yQ<0p_J_C9Q1k~Yv*~V(@ zcmZsHUXfR(U&*V05DxSlWFwgwP(&N3SB3;rpI({zY+#dSJ+O<++BL_CJJ+rXD;aFp zZVf{usARyBrZrFihT2d!?PC4~x@NqAo-7TED(KD*D{fX}7b~v%WCO6w7t=C(N*Hc<=)S;a7GfhTw9Nd9brCbEg!KQ|+^X=eXy!2a3GWlw{cjQLH) zM;fJ?v?u~#gE*NrkrG%FDFKsiCU3SvsTvh}!*(MH{e}?toHnqe?d7tjS0-y3wDFUX zl{s2)Hna^z6j`7<4b3djvWa^=-|ZQpnpkORG*K9_Qe7}^EA5Gu7a|3tvA}K54x@;~ zGKO(O18A|8 z?aTa8o!e>HRWa6ESuqe9XXET|D)u)OW4)CXllH`^_%@baJ{Yj&+V09$G`vGF>H3WT zRb62Mu@jmCt1usDo`gwtfE(Qz5ls7gYp-c<0r0Kye`HWG?q&jo(Q=lNJ#=WrQ#m20}}xiX#l z3XNTrg(7QdyY5M3^>#M(_%9FO%sLvT&Kb7DCwFoq2IbEoFdC6xEI8@>@t>2V+lP)my+oCgC-7EudEgf3jqU#K+w2~V-QMcA? zwzs(zml1HgjJH`K605+;i6NKgw$7foBf_TZ7fn+eU3Hf%#oql5<((qGD*8X(6kTFW z<|fc=`me-3tBEBxCJh72UjC|u8FJ%np|_ey zqNT65ay1DAEQi^(gPR%pLVbogMg$e_VXHBnZJv4cZ7%RyV>PI<%>{`Gw&LmtBX9G@ zZZa{@sGeNbjSF!v7_b-8HQ}D5KA>RTw|Trk1Xhp1_qT(Sy%xB`r6sOD4S$Iv5ZZlV9sJgd0`YaiaC41oYsXo zP0ZN~p6Ml)L-!Wb!``Z>XepgipN+5Dt?gMW-6Kx7usajhiwQANW%Fpgs3V)YvlTNz zePfB2@zNa#1%J=*GF!+V97QD`*`*e8x!TtQPfk=djF^9_m;jVq)XH_NSETn zVCquuOX0jYr)>lb?oCjt-g^f!b&RkQs5fLItU*0X<144kbJ8@3-LRi!$Zli}jdj9Z zkg7Wyxypk%CwXPcW_$>t49{?hXyeL|zjxMm7Nx>no%1`FNR_(LqK7On(5y?dpB&Io zUK&L!DtjNx4bA01JJL@**!OF%^gEE%v;S@j`qd~QqrU9k2B)!i!zj;NSxSTCIQ`;7 zJ*hBHH>g%Mut7k3TBCk?S8vx_a02+slzp?f6_ z!$2CXDz!DWCd{JBF>X4QR1(Qe)vO5xwQO)tiw1*s1$w|O;OBW5Kd`^@^n`Na<(?ds zsKm`Zol|;RX zvgJvi8k74pYAtTHxFU+qe!Z<(%X?D`mxM!*DHPB_rW3ASzaR zh+>5&x02T5Q&c}XbdN{+?(kOVm@r3VJzC%odTunl!IrD`S{tortCqts4YyKf<1J~G zkPz~j9KuU{G7M4H4~8|!uvP8ck5u5k^i5y&zF%-g@7s#a^nQ;1*UFl%7mC_I5Q?i2 z&G7a)+0*Gnr3VY1j=4mr5jt9}vgGSRM18t2~ZIiNe1%o2D1(9zxZ5!llP2V68 z&uN38%EC?PGukGo<<8ma+AY8-sBv}KP}Dq(CmC1fbu1bd7w1=OWM`=geTT}=ws=bK z_HDs@p(v~nqsnx+4r&&vXOvcwHZUA?hI_NvZBVl?zIe0NBbsJ!K>7xr-f6$^bQv&c z_Qo`OqZV||^=y;T=$sqdrma;oe9ktKyBu~7sjjGvQe?MKtED@3v>FWy1UGZ_4WkBX zjws+aDgFE}H<>q-2W4|wA>(hxS>srmr0X@|SgyZwN#3(Ioi7>DSg1V2oZh2LOnpQ7 z?KoOXEG-5W%g3m7&~T}XHHMfXv3ogLSLLFEnz(BmCeGy|=*A(iuFG47m~v;+`>LA! zP)2OkQ1Ho*D|&KWCj1_iDcegX!@T*%H6-wGlcKr!L*=DMF^8xRdhv#m4>Rj+MeAiN zj;T%>`NrY!Z(q%e@UQEH($=^^s7Z26hLU{aAc5PYgOfGolgz*+l?_DAp;F3=?EcAE zRc;&#V-T5hY^%y6B1_mZ9SCTSdSUz!Nebt{9rhQ{H9Tc?TZ25SJB-Fb3P>Ym_Qd(4 zuLv!rllFm$TGX94+6N)@*2tXDI7V$(J(8ofy+YpjkC9!IqkP*(B_#N%o7t2ek|M`K z1AjRGi^;gE2P5d{9Ocgg2r*ez7hUYZXQtyalCuS*QdMinRR;UANTpa0p~9htc2-Z* zCB#sADn3oKxvIGv^6H14)DQfi=`~lKUN>fu4Fw8lkpJVuLOMbX_o|d;yrgkma4lqd z>`8I9&a9*0)ToQ{6L%*yR}ebN2p&%$T~uUJ3{Mrgf{62EzWfW`F>Lk zB42{41)uE0;ST++Oy`}eopqBdp=XdLJ^)_R{mFyj0KYg`gJ5~}l3p=B^BOmDYt$}eD7ca= zf7=du_Lq31{lz86S{hMs;hy}wLBsar_XB?a#V_oLaqNz`QpZ_V4+PGOdSJL4cSw4f zyjV}pjs;{ZLx-VKHn9TS$8gz+9XtY8#V%6s zvo!k38cp0-O{(8njiIx8Wwo+BMtto*KG9Sw(9)y8H{IemiqY@t3-w8kZABn3;j-%# zgH5Ax74&NLY=nCPMTM2$6y0dyy_h?jHFV$CMa_~cUh;$3K8RH<7c_rVt87r`HO)&s zF}smj;JA|c(^zYo&k!hl461QM?q&uQ`qURO7c_s5i@SKg6_>rUhFB~^=*N9ju9 zaHL;Wj3Mj@Zr9|X0ENG*W;j+i5m&D&Cd1LX#aLS%Gq`G#GX$s`-0A#voL$l^M&WYi zZ@ibLGn%<9Sp)i8p|KP+Bnnqk>$01h)d0V`8G8H>^LZ-K!*6ePrb$o_*ARE*31rvn zl)L$i0WwbiU$Z5Naa4#;j<=FVunR1U=gQRdEQUH8mgQ%M+7ze<(g z9S(aURX862=MNbioX&vrM~5>z(Mu&^?OE1M(`N|IY{BWD!C@vNBkwEgJp#iDc59F6 zSIrSu-}`1cB69tI{|6jaYTU*$q+^7xf{J%-9IlHiCr07Sq`n|{HbnH$wvG5l{&OSn zz_jBPFn11X!;R^*6Mq zSy(=OtVH*vCim&vmtz5wLVMZ%C6xAO$3(x{D`H87YpAh6VXw$qTkzf!9S%f!)LODn z;|3YT$ysX-vdMPPXnE*S?PRs)VCpznlIfsuXokLT0Bx6T070l zf_)(gZEuA>x&`J_Bfw6T&FcThSnlKo4c<)}d-dwoqrQ&6Kl_*O)hp)_d{wm6(7oKN zo4*y(UcKU8#a_LVUe5Ax4Gi}>=uN{pKdE4ZIm|buJ}2sMO@D_+AWe!Qru!T_r7|sU z9KW(A;GB#!)0N{)rc=G()t1{R^4~mtr>G&JmkwR@!pOnd4X!NGK9!i_DBsP>IQwP5 z&xptn<1wIf2@;YGI-f9w^9bCW2Rjd=N^AHx&)j$M?%O5Kr;0J+%XAc|K+xB7~#=%Z~Ve z%9e{=+~bw@tIDu2H>ydksElVC!_7A{Mbgv#v#<|YlFgMkzWF&# zBj-YvcQ|db@p%f9LzDJ9Q8Tt>yAw{jMB{dz{;(^G(dbg0V!_A%vd&{HY<9Y0wE!Nys)$6P|g7`>5VKXO9I@CMVfI zC3pptyHY!-pu~6LXa^gid$O}B!MniuYLV}ZirBs*%GPQojjz$k7v9R+WThaxqx9Fc zgszt#pgP^RU2Ck^x#yaC5kb5O54xC*Qg!V^G2x2V4~-jh9;QRO+>B>qOOH5$)m$Ig z0Ng0Z~3Cm#_$k;k%UF=_od&t#m_Ed?x-P_2)7k5eM)}&q4 zc@Z0{oV3!%J2Wq*wo>4u(elRQup0L?=z||}+_;0rdJo>(IeNi5<@WH;NOgd<6U4 zr(-xOf4|P&{0H_aYkPbE00J4qAmkjOPM&z6$`cRj#13b5Mu&%VGzUUH;9dK$c%tT0 zsE&Qa59X)`ACH)IM}p@<7!`P zc|nC=P(Qus$Gaic%R0tR8wZ7-jWzlS=ga}}$_%(`hC$_eALm+2=-|J-LLn&VTE!<- z%6;lzfcq56eI`#rpyEXc&R>XfUpS|I;zQy~IT5<(`bs{6xCUmF`&zDqyp{13RKev= zx#fhum1D3d_nkWicTnzoxd(e+J7;uK4tE4cn3y$dcrL5r`D$bYUj@(CjSTJ!WmK6Zp6pR*&PW z7I&(omZ8|}3s~8EU^>4s=5uHD{mQrsNnhDWC-*s7=g!}@k$>)IW+Kh=KNX6rGl0(p zjW!%fE8oLL(`C(=D>b7qlV}TZ1ptgtZP$~5aZx?*FUZ4f9T#rL=_7hR36wLNyC3q; zO2Yuv()Apn9xCSpzY`?W5q}20T;Ef3nU-V-*~U<;9PZ1j9*QM~FT_@3x@Y-_W2>?n zM;_0GA-oz>SA!;q*?+W~`8#1Pvzb03E)0(*bD!5Y%w_B$cPPZB3X8yJ_p%xdqka{xIa>rWw|9?^oyE}`DPoNi$+in-=kVIW3kmIz1U@s?JmTG8td38y%k3=h|rIlN9qWy6wp~ z-K6R~=_b49{L5~VNPO4r`8d47u+zHv1%1|yH>M=d_aZlYWR^lccK3?DcgJj^uiY^+ zD}7~_K(^Jpc+}_fs>}Pgg?>-a$CR`P$feNFr(m}Asy^_No}c^2LWRSR`miTUb-(pP zY>w~rDPS+Pah(aQ(-YdIP-$GR4UH&b^sz}Dm z*}r7yJi8?31BepIcME~L9f7;~C|zv#WFIiam(G-SQQN+AVU!@c=FZT~tc1)S`_1Q{D(Lb!E-SEp|Z1tegUy+3Wfap<4EaTK0xoR)#5L zhkp|;mhS&n%*O`pP0lg-_ul~60}L=2>7%JVama!ru8Au%C2~>hs5Scx28Ek+8kPbD za&AD*>pF9$M083-60YFh7VchQdq7eIKd#=^H>}Ez(?C9_sZ_T30k}Y)=_Gw%z~bMV zW4~9#{NYWd7kUe?jO|KqVNRQKXC>@stkqCHq3T@K)A$qt#(wR5xXR%B18l_0_S20- zjMnTs>J7a)bD+q!5^zJw?gnE5-xi|dRC(B_N0l;BE# zXZIyLg4R%eJc-uR2FrR?e5wv8?98c|zJG{ia$S|wJ_f!aLJ8Ln>$#n_s2QwEuH^Z4 zEbIU3MqH!sTWhD<&$cNQPd1gLy#g%P0QN($c`Cbewf8W~Z{*PShr$@*S3MSwlq27#9`}J z@|`%di|@)yhj-8QHMg#T|6%{J4=r(LwH4qIzrz*JEth@BwlQ>tH;bL_z|c~|;VF^3 z!mdbn_^3OZcUc0P#_sw=g4l)4l1BK7PvX+Yba0iEOM+2PU4EaP4|06=XkJ~2*_O^^ zL>~qRZYP&VnfsRbAIf7(HmQJ}N{E}1d@Wm$9+Ku$&H3>qP9(V9@(`(>?=)4l3#I(T z-VN+)>E=-m!%y0g#0EvqUF9*j)Qm&%C18)%Ku^`D9ZE{h;*AqdOk`RKQ*^o9Q2suR zw$aGh?mtm^yReR-FEt@;HpEQ6bOh{DmSc<&>(>!5O|JR!Xx;s6-FXizU@avHgriGm(ZnMO{2Hj4Rb=?D&W z851P??z+OF+_()xr+4KR7`MX*q3S~F=hXUURp3BMZQP}!-9&jGRDQZ0`mRg``nq2w za$sc87$-q!`K{Fc3um~2^Rz?c7nNB9- zKt-U)n!8jfJAt%2GLjf3Adi8X+g8dN7O94mTsnjVJ{>xzp%J#fTyct(l@COWtzm1) zBWFz;+~yuR#W50URs1ln6e|VYr7);66?AlfX=od=tR&<{Xc@6xz-vZz!9~MyARZAm z^+8n7(BFasx1f)A6gk%ClhOcmFBl!#9ogE&8D{E~Cixpn=MiB_GWk*QdgK%Gy2DBc z_|c&@rZGNcC2#MIg#cE1z;6Kp8-u_mVN=XC%o!U8jVb9h`iyoR*dZ{s$!uIrRu&t? zR@V}wTBzqq^vOUxCE2oVrMHNfmB4+rf}QtCcW=P`wrtyFt_mA=I$F}w$Rb)m=fkPu zaOAoOz%(Qtlf0xP{+1v2i$9E}*r5y?R{c?B&=|~iblhbWrz*@}*G3hcO&pcuaG?eP z!eep7ucomFBPa1<-ygx~@t_B=CJ=sw<#^^}`LwfEzzCHI+^2nP$eT(OMH2|y0T_)` z%iZm05SrO8+*$>`eu%e9yiTEG+f{~W;iD~ZE$w(8))crCs_K(IiK^7-gR2Nlk2r!e z9egmWpFqRxVDZGPNEprXx&B}==p0#O9VdJMCP5^w06-9BxM7`D6xLUw$}DL!sa4Td z-gfx#&`&Nyu-$U}hHskd;CzK?_gtAu*JU{;3oPc?R!j+?{J!wW&^)h3xbq_pA9EaK zbY_bs!+B1+3mwz!a-Z{@co+Ez6p@dego`6gt{IltWiQcN84Ij72r>Q5iz>^ZhZcIG5#bePsk@37yU(qMLClxMCi`%D0N#{2FrDRS7QuIgG4V2na`{AtQ!X z$atlbalRwBP*)8(9oezCDhk(Bk#n0XZ{^CT-LSGYXQo$C{<=u!R+>|3*gi9~0zPA= z%-Tu=Zq(TpH6SC}O*)FAv3IlAf3xbZI#1rBQz&FaU^i~ye5>KEgE1X184T>Dw>pg5 z9EKk~$+FPtn1PwBt0ZFNLboZEy40dFmL0XAP(8|`2Hb(cC~NYaGV$1*Ox$!&o8`7rH4Bv;vif1)a@G=tV`dWV7><$^Vt-EZnj}QI zg41l(T8e2G-wX_&7(4Mee<(A3!mfOlF~Y#<1J|7zu!HhEN`GJg%?Pu!*6El!2|q@s zKdyU-sAH*j`V)@b6W-}dz0=(k>YeVkP!5e}9EqLtnTWTtJr@ZhY@3`a2czfR+Iq&- zZ#@Kb44J&Y06)7SlX@OOcF9`#Xw;#TJQ6L?t*=?}m#QbfXT~y4KF7tP%KdWIuFs-T zb%)Aw^>Q>nyG?S`lp}OJn5g68KZIp67$P6*P@q1GbmF-o^v3N-ypKVFT*tAr)d0tgXzKcd91F}8@aH-2NtzY z*>rMQy|O7tY&wP+dq`#K)TxVeqc!{5X07s$rI|xOYg2scYwGZj1=%&nGGuIoR?YEc zruNxU3Mq-IBWf^FYY~O}&H_x{qo!c+ePdM;% z=fK8Vf62^36h`*hQ5c! zgr11c&mU~p=CE6}fq$$v@K4+v^{3HthoSmEs)2t|1G77&1YI67!kqKVVO-Wg?vD!N zyn*BV<|t(w&s9&#wmV4dJ_f&%-75FK{weO$I;gydJD5Y46?RtgOoZ|9#*0-UBmxV21NabS)565CN5g zhlCpt81RIsX?Yr8RAvT{IiM!Wa1b#qEe|PLB5Imq`Ix48M5)xw(yTPI)UwRX!qT2J zmGAp=t$Xhoe0*Nd_xpSO{`r1i!QQj)!#Z4Rt!tgG>vLTzI^TE1Zn0>;Lz;lqv4*xa z(hXoQeVm+M{`UzGW;FvFI)cD8Or< zze^_aj8&MeKX1-1hp7^iY0=u?_+naap1)Y0V%SC&*w7b)TMq{4L<6`D)#%I^pE*Ir zmI{{`aD)-~3j&RFE)^~{YzX7@WmX<@233@kj^vnNlC7YY@dXGV<7v60fq<}KVyk(% zdDFZcmG2u7>M8<4?iJ=-DkFE*N>oZHkXZCy!ciaF zwv5uYMcy+=kLgFM-Gft%TAP?IjH*KdRa4v{Zc3d;FacGEh=o(AN=4Nn;zoH46itXM z*x`K&LzisRBA9gcpmWROM)`!Dq3l(eeldy;UVEUn|%_!R)Rg?N;aKQpe`}Li?`60@;97-QjftsuJTck$og&A1SgA6WN{fz&v)y znS`F%KsWMBQpG-5$rDlA!R~cT1~|HK^C21pNP$0istr^?NRhpqTqo>cO>%Wt#=08E zP=KZlG6dd&#A7KmV5@8sr-;d1K%%ia2mUhLahb;ga^qe1nSx=`qR4_Q9veW*jiz2i z!57*5RgLbWr*TwI)nr5Z?l8&v8TwUNK@&qwE_MxWaoJ0;hPmn1ONXsXYWY3K%vZu$KlH`dfr-MnI25ORO zLw1EIQ8pVrxagG)T^!*G+=$Zj((WSscR0~+>Y1kw4Y3l)TM@|nB$Q)aKsl}ud7T6G zxqemXGPt|&tBQaZ_nawr#$qY+PR-EVVcQ}blJirC*V2EhtBN5%8=bW>WniuYPzWc5 z0F^};I-F>0^|mew$uVAYc>(M7^}-60%R1Y>Fnrg!3vIc+&c<^aysZz}pv_Pl=)71X zHFrfuUai`wVVI|vF{m=UUTy<5L9Qprm&`8)K^T8|^fGKC zhkNpdVFM|}mk1MWAuS|fbgi*7LHEk+R7=GS#nQfkG_XBV#aW3Z_#>ymluKg2qWd(j z7}O>4GuKi%ZH8xb85PTVW>YDYGhi9YlCzHz8`>p(Gem0ij`W?SZ+imoe7TJZ*jx1p z>%Fp=wwDASL3VCb?iJ|A`JNkH=S^AR_EMq8kgjt9io)6gIlA9BGz79ezprF* z^ejBfn@EGDKE+3lj3xr9W9>mf=pv3mhi?2NM?ch5@CqlBQhh7pZ*hc>bHp4|;RjoQcVl zah9w=-Xx1(o^rBU&XVkjBzvM&e5^6*q-@AK8Mo^vFAq~UbwR(av=OK?{;BR%#jhuR zy~VH8E#6Tz;(?|n)&j)2S=Wc4Zg&Ou*u#5$=ZfGH^8v}OHbt6A!RRrE|FlnXMYL+r z`J*+5UmY=d*4W>e&8-YHx;-CvJ*>V;-LFxNy*mTo?$F{I)!4GW)Z|5@%aTqL zs`hYf!?BWMg0cdYhoM5cPf7B}AYP@xKOfkQ67U4$7nb5T;Ae$xb)_E?hWJ3*L4l;H zZ1kqqu`ilI*_m`@vC-fT6+s7yAf`SeNZX={KoG_oi1?WC3XC(A);XCLs4wUM=aPPx5!3wzG_AoLbgvqdY4_3|J`~QoNwI_iCqRE`yJv3 zTS5A3Zk`CPlrB6RTZO4C@4mt~JKV-d_GoE^yf*ev_c3=-+>+k`bLbw!({EV6sApZipx{2s+JY3Ob)WAS##61E6w`bgyTk5oktTI*^~mu% zmgBvVJ57TN5qi#-AR6Mj-z#`vxsvXjvf2M!C_#KRZWciBZb`{E2?wa8@Xkn5NXkg6 z2p*c%5G(bWEE}rS-?3gy426A>$f`c?jU;*PO?@%~Y*uaWS`19z6j<}W z?j4uHns%6iZ5`zaS^b+uiu|yte`^;xpon~2BKN)sq3(+$3;wP|#jYQGB&QymjgJPv zN4sKmqGmJu+7?ket#&1t|11#9ZOus(E1_%lo{jw7skX@4P~|hmo}y zsyXa>2x`kD8>0|;g!&GfT&jkpQUi-6Du=NG@droUN8#6+>XMyyu{)>1vIz&lq`_LM z!Cl&!MiKSFw0OP0QyPV7r>^ujnscseVAq=>^pudqv$D(%(px8GT&aE2q}koEvjGEp&;0rJUB#K z|A80`Qk4^EC;%ybHw|m0|7_#CF5J3dLi_QB+pdfopOK4UTk*J3))d zOgh6%LNl9mW`%%?D>QVQcm~rrn`>;jSz1k6M+oc53Z^e{ZqaolX*cmtNFN5a4Cn$} z-ok$IcBxBwFAsx_nwrVyJGNoG&NhrT+E`vcl4cE+V8Ny~rgJ9ow_uOAA}zRn8vyAP zZ9`(i{Dws9v5iTV^M_f^h-A53ivXYmbp{Sj&Y&a7Ie3))&~pBY&Mvc@H^l&i0hNZF zZxPCrJ5;~1at14TYfK3?CSlm%w zZWHoQt2dB`W3)WmBFG`Y!WLk6%*O`2BgXcGqYsJbfvTC$m)%JhL+@P~4?myCY+(Xy zIR=j068jsKD7e|cB>-lj6-$Yk!WaHtH<*WG^xcb%L4VJP#)z>yg9J~pS4sV$fPokj z`llb}X5$2a=UT*oFrJo7W#8ch(#$bWncj#pI#j<_cK?cO!VZ?wDYQ&NR{5&W*5AgN=SR)F6*Zx3W@#m~3 zXsUAsf)uf)&&dBrOhvvMGij*!@5EH4m7j_|l=cq&;Ndv*gGXZUu|Q+%{G&1UPt@bX z@VD2(%X4Cg#)oCCb}CUV+`(ReJ1g^AuN##+S~ ztr$2DAoL{c>U98>#+m?YOSPB=2db0T`m?6pot+3Ag&P7Y0|TjV#o)KoJ&2+C2bq`0 zhp>0BF=_8g+ORQck0I#^S<W@DzF7FJO$xX$C<^I5Rr!MOouqZz zkIntV?+N*n*zxcuF~%aXd&^iA!NeSS!FXOZ(gQNJ^mdTB*2w&tk@<9)Okp>Auv(Vg zgJVJ=6s{Bq1@@g#UyswhRQyB&OC%+%2CqwizV5Udd?v<40=ZG-nK+%m)dV-WomYdK z4gGC{B)IgS(#dD~=L7?{mE0Pr2pse?q0+UK`-QQ}FT^U;-Wv5)Tz>E?Hwj-$R?1ks z2QxJaE(rG`9KQ`;P5fm^IvSG07`=xo)pC6S#lPihaCV-`(Q`jaJ)Banw^D!6N_}&= z)Fqk>_AZ)0yu-e~GWNY$g{*}D4)r4quQVWlG%^AT=_n(^=8C;Uhfc?nyp%0VAB1!s zcNL0q>3@k5Pu2V~ia1Qa0apJ>VxY~`8sSDO?X5Nx0KEUT71D6`JkH)N)Ajzg#NAdZLSoBkcK=)C!GJ`+oXiifFX~Rht6>^~N%Z!_ z-Cn8(Eu*(2ZcEquI}&$CDN%!%qv54oeT2g6nO4r0%!_-*;&Ac_vM;SEKFyMDGE$QU zo1Ggp4le>Dz+iV8Kiy|%8rjnbw8%G<?>*j{iCQTYs)aj$i(!vQU8U;7sE_ ze{bTrxEC_+OQ3fJCl85?bBzpk&_N)0{=NRYi6g{!33z|v?$5}8$0*}6@tE8ikWWXp zQ9i)$%P4%H!{Kd#Fbt5ZIc_NBM8!3c!>Wwn1@yK>zZPAMTN^d`b&)dWuPVT_w#u8G zuE9WUKbvPv_Q=tZZ~=8Gq#akh`4T>9B4hH4B3@MU9mq>W-F~{U2h1b4c#T1|t0dX= z^0_ctDza^l%T2RXwLH!|XY&|65PMtp%C@;hQOt(7St5q%ZXgF&nKn0lMn*{xC~M#%tk3Qht*K#jjBD8 zzSa!a!`VX?7MNrRj6$)}s{gCnQ|gEq#7TqLP!6E+koFwHP8^NIz6f{^MB#aepJKH- zMg0Rw2)_oCB*%j+#~UKa5D^BCw{X{+IA)Xmo#GFdc;W`rkZ%@fGJW}#oAViRl9gZD z+d>rGcxq3E>||Z##A-*n?f3OdGmh{!gmz zkku9!S2A~9mEdt^nsLl=+U#CM&;KLqZB<|CMMrQ>a|_#GeAI-%=liP_6E`#G1(!3o z_}62$$Ot1|kNxplbL=7CO~=c$Ik@IO*vP-lOzFi2TOv0LsqHMu>t?xwW(tkTOCkN5M9 zIp&Mi|0I-_73q(hifiR~)9ip%%0C;;e-4@aC32%sWz5C3(~Kr6LBj6})h#CE!DD3M>Jd<*aOxza4 z7GlGnM%lpoPnIW`*XIzs*P#hPLBj9RRxOnFXe-yxBs^ESer|&FpE6GV!mbn>_QeSO$x$;UpZ%qcbuS5QiXFVUF*`~H|F!U>*3`d=P{%OPzRV%> z>NqdcMdlUdF3fI$V7jA<{zDN(yjLRkN{IJr=D)~ zRMLE_q&I}z{fBjhe*~8NPZ|9O=>b@-kp(xxk7T4yEZ2sopH4UX z2ef(td20m!Qzr|lRo@fN@jm}x;&}gHvdKS$e>7$LzOaWW^P4TQvV~T1sa_}c;%1}LA+$CW~eP1W>ez7&i;aGz96=0zEGzsshT&$ZbO`Q{P3Q?FfLpavst-_ z^6434J<#XR>#i@Hv&L=Uls@mM&S_fWf_EbO+tFGA102E zl6Wd{PlY53JLmGF#PLy(r`Z{2xuC}hO?HJ2Zj#rtE5qqu?#5E7wojqeew?@;mmWyW zdsR5rhfr3@T>>MeP25lPm<_MJriyM#+}FwYnZ)tAp0psQAw%I)xmW|DVjYBcs}N492(_(0LKp z#)$o&r5&C_6mc_XuykK@!1+}fkI(U#R)5U|50!L-S^oOi@wt|b;TthvQ}+gY$#GC$ zX2%8o2D5n|w_NTX|87xlPW&x`navPGux;BcOZc#HE59m0gF@};XHX+t%s>YHv&8*O ztADA}R?8lDGp`^IhKs(p3By9Iq%i9@c!4r}YSKe|v_!@Q)t+U)Rzk z7+y9asp{)`DX*T&tJB|npOTIffRA*X10>MH3@QbzKhQDi%wnxP$PHYcVcD!Ga(YhR zGcbP_$&57leN|KtI+`nolIKwJOnds{C{Yg|v#`!1$Er-Lc~Xst-~4?Rl_%O`-WPe# z`3?5I2u7eNqfJ7VM;jW-0K)1Nza%^ryj0{z=ha2hksLMb- zBUKf9L6#k+X()d*U{>vDz&tjVQum_I@?(o`tkM*;2Pxn<<`bDaAiFj7)bdR0Gy+n_ z;=h?$%4W3@TYP}TQ{2?$h$K@IJsFw~0Vz_V*&?8Hkv|=}u@N&p5Ho}Q-i$gA2A_D-Ma)cynJHqX zi;uvW7%_6e%|ceh;3`zh*~3JPK=}{@j70HI_Qz*g7IY0q)NA8l93|(Va1`hgg)|a` zwuFi1k>NZt%xtCRPvi8j^YFenAA#lZ1$Ro(BXj{cB5vs^Zn5+-BXQ>(^1hNHxnotC zL%mdoQfT#clGp4Mgrq)GQ@lA&dgC9sQtG8Xbc7w<=CCx9m3eN4rnX$}l~tSR0#Um9 zY=S5iJ^bnF>=h6L{xB-?abp6yMz&h}l)@H%5!v|imn!1W&R zGnJPnejjSHcDgj1(}KF3zqz&alPRU>|J;!~j)uUDzGfy>!w}k{k)RYiRkBkZUSE%+ z>1xHMT+gFIOD&V5?oY)Z`AT;xm00u`W^e)*i&c&`GM@tJwCeR}1g1?}bu28U^GT-p z@r-6+B*QDpH3G!Z^}7&v zB*Sn8ThfDo)47T{OeN#oLFWl-raXtzp7KXO&hPKK(dmw2co^zO8HuBKK2MEqGlc+2 z^ZWz`nf>|eCW!E(nMo)HgMw1_Y_Uigq_$EXCS<5PnshN1XOA%tfjMybqZ#KN{a*e_ z=KBLnYMHK0Ue7Rgk^t-gJ|U_*1XV-Wf%Knhk~~l(0l(z3Yb=DjA=ZJId=(HeO)R>J z<$5?qa~UzZGjvQW`4UtSj$tIB2qWDwUBVhN#Em5EF@CZRRH@=(QmHjaq>4l);r%_$ z&B-RhNu}s#uVi9JR)oM*{rl5MQ$M{<=yAl*G$B^r;2rN^#+c+z*dSTD1jh%sgV$*i zd&DD@_9tmIv`^-@!$q4V4RJ33aa)kx$j)@c}iM7y1uVomVv9@l!GbDX@iCW@-%QK5SHC-|+X zR`#{Cl)w5U1C`n&bv9CJ*;3(h40$qt?p8WOM)OD%jyIX=Oo6CfmX>K+n?>|l57Hy} z&8TKQ2r%KMINDV->`L07c=ivyniOo6<@&XlQKb?b=n$bEn4=tNUprn#Bn{>cu_WC{ zcZnP9lDTEdckfDhnoIFTQKp>3A?(xvn+P>ub9kD528AE9v8Nt&-l9rGeNZ5)kG!eAwrEg4hS_x zEnORBXJnC_{P&Z)vecZ@!8SlANCA=IXmg#J1a%x3#h|QNv&PjnQ3XAj#;ReM;Hm}z z5T-~xV&A}4xR(Q`=6dM>9Da0IfRSnZqgp^a#ELVNgyM&z#HzwiubSdTg=n&x@IYo# zHO)xoM1i;yTlQ&9ydQM(11QMtx7<&Tr@F~hUI;yb&=rhzl{PF@Xq^O}I~Y^2qBEn4 z(v$!~*HyCit?&m(JPh7L=djr@)fZKeScOcr9w)Z})GI%X&TfGDAt1{>WYt&hE&5O= zed!?seXq1YYS}~qEqQ3^#xQ8l>8b~W6P9#v2CHZdS<1eU*3z|$l;nW4LhC5=fiWm6 z6DGb{0kY$cveiGWOXGlhXTBi5w7UgAE~sxurmNSi>)s3>;A9`?9VCtW4&GDInTuI# zbH;18OKX_rKl~ShEXRD`L0pcf^sLkDvXv2fm~+cDlqyTcM@_+;(oH|CRozu->oo#y zS!qs&lx0Bjk08T6iV(Bl<5&|_@+3>-6vy~-wjcjuRrH{jQ?eh&wjWm1xJyN825 z?8*-Mu&aTMrME7-GFi(Q_Ik2wp!1;#aUMY#&^B!Z-Cn&~0}V}ANj!~+^mTO#t%|KPq)}KJ>tKgdw3W@d9?(E!4L@Z^ zO$JeA>7`s!Mk$6MC62$QAS}0$lCh_B$0$nw33olI7j^tStbY2F07IEvH3dC)m%xVPl z^fQ`u9QE0S0Nm=x*NIh}R=!l6b51nT85rU6)OL||?{2QLg-(&P4UDs8CVfMl!rX=J z?Gd_-WlBOq@$#tT-FQ{cFx|cv!%ACoU9fUnbHd8K7whz&jdmyng7KSmA)pe^X$9~) zTpVnk;|OEY+MGtC>2g*^c-aV?pzA#vSrt4Gt2Zu%2kh zy9xZR^52yER zG%mhfU^ubZ-KOFROhyGhB()5g{RV#mF@uy)ppPr8e<>14rT-`)GS0+?Y^2%Y#s9-U zvocGoly1H{v-6bS+P>9EkaI*uZZ*6=i#if{nAPC3My0m$knya@&?rEa{1bpx7zR*N zkW4@QdE1DTu$yFFm*`z(G%;~TE~0M}tcnZ3nrQejS9}OriN(B%P?gLtG(^dTww?*n z)lfx5zbFpU)%Eh1c%jT`aX}xGRG3ew;=Yo(Qe_BRxwtrPlAns{VmqE9b**LhFK4LO z|HgQE2-5FMVrK8**ej`gSu2@nRzWR6I)dj&4ME;5TeVgvtwgClFVxi_JySKTGYuT zx@Ve@aMxTQoHKPBC99+kud_P5&XPhj`PEWVCZ9}CZ48phbho*FQ=9^hM~QTU1d-`Q z&$8wU5=TmPqcD+x30s6q{W-NoR~bxdnB-m;gUQn{I)vDA&dGy!WAQ2JeVz1fisi#| zNQ=KE1}Ue)-D;%WYNXw2qFD#z#?ytMcNjTb~{PkA#a3%v~LPYs0s&m zwnZKYTfBj!XyIF8XakOU07y+})9l5gA*3Mkc=m4a*r-`7aMY-of;Iv(#4ChRco%0i z8)3i$wXe!i0f<*>$aHJ_<;88fjiCtc^1=n8kR^oN5wd zn{dS2;xr+~_vA)%uf(vT7otl4fsw|N@^N#dDchuR!t?!u=2H>i96I!na))L*ohe}9 z6Ou;5Vw{Oov@T=?eMay$;D$^zjG+L)UXFubQ#sHBruL-Vr^*v&2w)f~L8g97xtju{ zO0M)?F;AVsRy`%xodM;i2@?e0k8F7UDHtoDaVj{_yR{GtY!FpOsP7*e>W`WP^tU$l zY#b=mPgE#{aR0D)Je`fKW^mfEH78?iHW*DvA>?!J(1IIW6s}7*GZ7FJ1DJ@_$(u3D zlW{Df0eQ|*`_>*V8HLh9IFVIJnUGJpS;QGkls$>^DO`WJIciv)O%xg*bmrVR*mKWO z+aDI}wPn6mX2VRh2<2wqW_d2liaNzDV^uxHA0j>G9Pt?P24yi1&8np!={yXYdHF&_ zuMsxXlMe2o>DfRl1_o_eo^YfYVe^^<**WXAtja=y!k@ubC&7m&85^=^4oqkP**s?f zPj#m%U_IALn4qhZkfNo;1oNq>4^ zqF>7Au7ANWi!jmiu{#|^XQMwOy#BQSc^NX0*S``dQ9Sly?9RYN?{Y(w;mJen)#MsQ z5MWEeEkzNNy7AV!a+B%+8&Y2)qU{8mbwc?pL7+`<80h98&SnkHzUL6X+|~-qRe3TS z50wXq%xsxuPlZ<;5M!PFXt_9`T`9LKbBie>s}NH-F&DyUx5dexqQ^GUsb zZn)tzpDML_SatVI!xdfwmE%)>?W?d62lwG| z+JUp%JI(zdwEu^dhTdZUHkAgf+P5K**oE||VK~$U5eCJDLi$7Qw#Q0hHA&oKZZGMR z-!aF8B=NS;KkT@-$K<=ZYrZ&EsokkM-;XJCM&bLc14=X)={sl>Jle;Z)3*9!c z6Vl(kh&)Qg8%;SU39~ubo!}3u&dw}g`}RG-!Zb5{U)G4VM|;D7`Jw64RuOiTL0sxW zPwae%%Bu9aVFkcp#Q+E^N2=b5Hq0T`vkdzwHi9f@Y-h#RQ==$t@POtZ2Hgqivz8xh zW?E-Eqx(7Gtr!k-sdFP)z5Fq*olk*!q`y*F9o3yhD^^!2UbNGHqk1$Pxgl{mj(9{~ zGLR%(Rqe6C8y@|)Q0gbzGj&!LDNiD3s4V0@B*pk^rhVkkrY~^Uj@UU#0KNwDCw4~w zO07Lo(9<2U)C!v-x39Q=v*AhMmmAI8bQ8?|2Sv=U5RUZ8VL(XP(1Yk>B<8jNSQDp^ za)-`+u8_t!bpl5L_k*oR5cgIL`;UP8QA?0jnfVK%@reve2aRjh3+D+md9UJD617Oo zfu(-4wzJ<@)TcY6f>Cw@5$`@Fn?59CJ4Pb2}CXYJMSO zcle^GuV%-JX%GhQwa3W#{duUJE%4q19W)Mhk7vJ(<_faM!xyRg*JHr3%*#JFb|W@Y zc5FE;WKRR`O#r$#7vG4udnAuvK?V=-Yoou)&o;>r{qs(uUm&Ed91!(F6l*(USyv4c z)y@Y40?_~fUskX#{2R*pN(AQ5@5+l|wwl^iz46ruc%P#EHamj`GtIy6HZA7lxI=cLm0!#lK67Pb>=RgZ)VEXaRB&sLqnfF`xUX{MTZH zj}L12e-Qq8*Z{jxEB3FzZ-tZDDiE&QN`H8ixb9J=hR1}rCGjx@Zi@(KU(fxgwbWJ(2{*G{}upctTCJ9Xl)X(%GusPmC*DTia)6sP*XZbW;-YLxa|b^ zn;mzwifhz=Mdb0yaV)oPGC3k;#M#$jZZfVT^Q{6$B3KQt|1OGj2NLTqaD#>3i^~vP z^uH76x76NI@UdDiBBZQ!!x6sjXQutx_{Cv{G@R#Dqe+pQsxbF#ADZvqX8Uks{{k|ZTytWnY-kQk&C8v^tmwc$Bh{)+* zB&^gcfcIJt!f-IlXn)J7BL*3%j8@C7pfXw$J3C5l2kY+gUL40MJ1pUk%Dqfy+vB5$5tF<70pP~EGxv}iY!;`VSm#bMFYD<@|J{@1C3Nw z6|g{srbAOkNhKHpBbO(qo%DYNj|fsqoRTC5UEMWR$z{>1Zs*5>XnZ+BCDfOb$P0cug#$(t?soGSf10lsvb&u-O6mPi+9W^l|DrlXy@FaS)o9K?F zg2D^wyR~!Yg*?-c+p(_Tj$Ka8RnV&4lv{VIjofCF+ic~A`#=`zIt-CDUUhX?AC!tH z&)}6IZMOW{{VVMgP&J-_{v*7Qeq5V=UdWjYnV#sX+=Q|=4>dI^}VW`(|XKJMW8IoI$F%|VhOu? z?e=+rjhXUmL|5Dx{1Kv_Q6UGoeoA8+*-cY+1HwiJJ!e|mme#g!kquFf4UEcMS>81n z4Zz_fno@i@Y?1R8vRaDnYAN2u!VAO$a`>qi5*$Foaun&y?RWucsYSz31}f5+4h_>q z!_Ytj{pb$aCgs>cDfcc1LnxLc_e`sbiD1D?%s?jXC^Xv}y$df8Dwsz(UYPrqR*ck~ z3%X5@Qd8*+cf*v%404~L+`|Trbxr7~TciTXp#%{LT@Ij7R6IEN5g{i86*_EJB&>8J z9C}cev`Tl4#0s)OTg@EU6wK6A4a`3dGcfQY((x&^QEpE~I21z6!PF?*3^SnJA#i`Z(pa3>V{=)F%3J2zLuGh5u1}Qw11>+G}RCp|FI1-0UdNUzw!eh3qDYnN|fgo0h z3LRiBQ2_Q;i!vjqI&9^nyX|JfTsp3WloRDj8C*BzT0JeRny4hn zo914<9b(6%AK<$ZYk(%N!qNumR^+y>C;AQu!;Z?(n z_#Nd&%Gmzol4t#xw}Dy9h+Z&aGDke%dfDg+4LoV0k}_o_&DV$Mb;g6MTpvtCV_AjN zIJRawx4I9kHCNjAQdBvvs<7ISD=Bh5%vGcv=NkaX!qWDHt)}iuH4Tsz_M}3neKi4G zMg|2b{WyZBrZ_6BgjjKiXa){jy|9zcL1wP@1eM++xrAr#-ZyzIS=H-&uVuv>^5Al3 zR}U_C=2a1Iu#{@VIzbm#GcsXe{6->soCgxwrttJSo}P-?aoF&mnqs=z1lIF7|L4U0 zIgw-raW18ZHu?+m?!r88-o$P;@BfvgC|1)Khrv5V5 z>uq6ro1{qWnSV8`kiIgkNdLS-I|mlEzvk`_aM#Y_n627sD23O7>XM;*J)uMVK}WFv zSveNnpOO;74gBd^|8C;m?fPUMrepC`HlGxrphe{?+RACm^Cxr2zAAkSQr;$WR`sO+ zuVlfDT=uVgv7kjJM1KPdg6s4>V-tZ{S66* zWtk8e+@Gzs}Y4Ss<)U(P!| z3VnIrT^?St?B(bGc7BwPIZiR06R6z5hs zL2ykoy?H-?s8iD-u5{%3ARVW{4;Ki1IPaLhMI{cx&s-d&sDHM|w?R4@>8hL>*bsq7 z0CUQUa{%)XpcD!zuyhRn|04v!3qYTg(FO~DK6fQygk?L6)qh@cEwlMoy?)2~`vA8i z@f~>^usZU$VZN`q^j`QDV~zp&Yfd z7|6EcL?=ivg3yhmeR?)JoQ`8ZjUn{MjoIiSQN$U%9>*Yax;ul{CtIqE3HCtZ7Bj}2 z=uT>4zp&UfHnNEr=$e~Q87jsS7IZ;Y0pm1wjz&w%*)1i#)BPz@l371sW5DoNVRjF= z33&nmUFS%2XS&(1&1YRlTE<0CTg`6UyrM}DY#alP}MAs|PGE4Mg_W>Ppe{nVedLf5x_xmD-|D5%e&!t0W zYwrPNpDU#JU^o}CF}njTYj&&CmVrpS$wcDZJN#Q(&#+m{+*8+R<-*3|4*!?L@p&s* z@Bf;(+B^LA#Bs4bS?S+S+}liA@<-9(|CYGFWjE*hzw3?rJNl4!688=w`c*6zR;l=Z z#(_ZjW#hQLU&U!QrQ{i6|dMcgy`IyHdCtA{<-DXUOKrIk(vwgtuSClKn=Wh|_P1P(mo*o6$?F{Vexl z;$Nc6r3!yLxe!D=c6(HM#~5p=vyBExNa}26E%lA&Lu3`MO)d3bC6?Z=lwQ$&N%>+b z#kKT@=E7o2RCZv|6jXj`+#XbTY%b?Whey!M0NWw7yi3Q4k;Yx5KC9?|twoUv`E9B7 zsP{$z6ycq_ja-~j(EQ(#29I*Rl+dofPH0#_ikFiB4<_q@#G-sC(ylxh@23{sWci1_ zH}gUp*z-GL`;=?2tH>qmDw?26znNe zA5pL$Nkb$r2v19ai2i7{|FLvP5ZX&@@e|W4c07?YWzsYB4C_+Q3U--x00H@_jubT0m+Xb?zns_X@vIH%oaOE>gO z1sud?_XQjq6!dqmQtJ_QFHW+y0qI34j@(|hAN`eidf2NOET|s7MApAHR}a+HZ=|hM zX7nGobL#ZM zj3}pnQ>PdGSMm^Bbe@-d-tMk$f zl~R9YO2J*7FZyfpEWye9bpci(@S42;FmYeW`;X|d{r6^3{6{H?Iv2%n09RnqyCF}| zjsBuMY7=bgHn6e(3dwEE?l0p08t$*nyK61QjY_eoI{P(s_NJ=Jy=fimBbI{6Cja@o z$?(6=n;TbOWM&OA0(%9p>0T zS|=^cc7;4tFW)w26sCKAJMwc2c=VgA1A)}({w6Jr808%~$-py(1}XWc2sxHCCVy3q zbN!(O0{O9A%_#AVh#3npGm378|A%_{KPal{Pt?o*Y5Ehm_Pxl>P=@cD9|}YkrYnKO zvGB%w0A`5}b8xjkY&g-1Hc_nmK@{{MADXu119)JExts_wKg?pP*K@r;2Kbn*X)Ize z>dJS_kyFH`9kH8=%4Kd)xG)fQuz{Ic^uI~mGz96tNs#Ry;g6DK#%wp0o5}tta9?h= zd{Ve0-BEMFBQlq-)oSg?%)83bs^$yiCPGDA9|KPodtE44v*z-n{k&9uLzvGAMH1`e zbb=Qb#Qx}l{?22Fl3x)~ULak&Hx>N%)s8=)jaq{X1$CYcK;sgeLeT4Qf||J5a|D2% zot`_V41r!AoZb=F#8%*;Up7ISypT~AaM0kNIg$fFi3DzJdB8r0AeYKN1@A89oqT_@ z>j@}miewOI5}nU?o=W{?`I1nn!9rhdrOwDq;O&d`Rt9fsvKkH-vsB z)~zA6SC!hUq;|Ui&>^)~N$vL`wclH6GA2;k_{@Ym3S8k+a1ty%NwXA)=zN;2$ND9J^A?*&-)Ep;x)tR<^q!5pnZfa-^mAv%O)W zA!`lYWOk9m=z&FV@&8C1A8paWM>h!@eNQZ(t6bb0Hw8F!8qW@JXtLt%?$*+~Ye9Fv zd0e#({Qa@aIEeND(F`B0Xb%Y=O*G!_jz{MhgNjnuAf@3PZ>z0-Ku)vOe?)#(wbkDm z3pOoj;G?k{uB;vtRvPH^fjQHk@MfFd!0rZ^20g7e--|sM0jT&sRDhi3en0mE^C4!o z3XjJ?r`@E+%;D-c>3Aq8-0?y@XWKh2!gexKashd3`B=#NtKNH92>6jJ(G&_?(WnZHB z9_7VMZ}?d%@h5SRm4K7Rn*Uk;!b604Aemc6(eu=>{_PcN6VmgjVaI+gq3uoPebhAedQIw8&J66URw z%iqEqzmvO8LQcZYp7am1q8z501eWm{HTloP@v)lxy}Tw{;eaXuM4HMikWb(&Rxdz2 zXq0iFD^xGMsu4%)EyFiT4E_`tD`kB?>T>L$m|>v-z-GIu>Oymo69Z z>z}HNz@P7Fuwh1cKgP+S8s%SRl=T7ER!M*}1LuMbn}oXdD1W%s(&4J|js)ByCwnGN zA2IK0K^3{2DRkl*Ef#lV>DwdC(836m)@^cL- z7a`v=k2nO|kodhNY$-8`J;1osnrU4EUPmm{Ed=U@%PKtXnqyd8w^~C#pQxd``O#K_ z(c*uD99jYf@FV^Oi66}ruDrq+#jw1$e1w01F;c=-9A^Z$FlGlX2g%g<#Y_%!it@mn zb8^kB0`Ra&zLO7E%UmjdxYih#$(gQN<4c*ZSp471pCZ}fWOt6-<{n6H{w$rYqssg~V6dMmllK+%t` zO-N#?zT`urs)XTiSj|h}o&uuosLlNkCU5_K{qGw1cMbfz2L4?G|E__5*TDaCH4y38 z*)Bed7HC<)VknnM{I*ZuEHn;Ki{rsGn1D;djj2K{^#f2);ky@H&g(o17UEHGt^!o4 zY+WSlrZ~ed*52X;OVw%wv<#lg%(2)uqmlQC5QK^2Gc`nF~wIDu*4*^dV zr4=iL$VsaYlMAO0!yJ1*l02Z&JOJEk!R~ zOkFOVP};E-@^H-K`n1SLAZ-_=)hpC!=_{lZ{1C~zjAb`~?D~i7ph@Smk}EJR%N6$* zmg_ErW$8W?{rN6s(s1Bnfy_@Ewdye1a3U=!lh%Rs%A@n_=-8U8^PnD$nBFU7yOC~( zm=O-gYs4KHh}i>TMurTaSPn=a1_vaT&nOpQiK7ECdm|kfT_#*ERtSqr8Vk!gtd{P0 z!lIAfmtDa4GT~tTED(5N3p4@!;RF$$7vX9?IqvCfzSs~Jfb2f*ck1K!pO2#f;zDeU zyy}q&VA%o$bjHVqdWXe&iFzK z@_|aQUC<++L~O;xq6C6N$+I$m00n&m=oSRPuvXu)<0znvu1D=j>YO#jKEX#2NuM!86#xswjce!7|0>u7vA5YfM{~k1kk3W;cDt@^ zYvG37i(YiMn}I7@Y)H^Pitdop!QPNTVm)xp7a)1Ca|Q8|a=dY9O9U zT(fJS;T4+}6bD(S;a0UqiUQUK%se%=GNAvr=9;ql2K#bYIXNORsAy<|(;7)3FT?3@ z-(C0JJMXJ?U)_0MtNYr{`@XvG+j&1w_X9icchUVWo%c@nW~d$V+g0%*%dsKUBNBc6?~Fi!6DfdypdhO71ua4TTs*rm<_^g4llJx$WP^kbaAC{Or|x(T3T3roHlFh72#X3uO5K7 zAVf^sm!AD2rBAtnSgXrnXn_ zK7IT3A24vx;32yV-E}wThYb$_{-^i&b=0qp`dF8_nAayk1`86NYO4;-HB-CKV@ z`QJ|Ot@1uOT={9ahIk@&4S%eLta`e>FGsSAt~FrS_GhOW8aIC5{q~HzH=bR}zT!)a~KXjrkBQXJXN-Dz$~!xE)WF_yKr5Nbht z>p8i)rEQe1{Y+?bt>?71H7s!p>zkW9L-FLyWi9nBi<{4J?Mv%d)GuzfLf0)_QQy3n zNDU25x#=y-T3g2~YEX8rdGXRF;@2-4vur7mtb`%y+>BBwtu{!RI-9<1=~9ZWDpH-c z(FD{}Lra&cYg@bo@|Lx??Hu^D_Eu_g_OjMCx46|UT6Wgb@=g2FmWKL;XBegFqD3U! z>S#zJqE5MwB}_Cn`lleTML{)89Li9JkMC5 zvk~iB;fT)LV;atG3l(9Ne(2c^3)OZ@>f5sHOSMU>wl9INa%px!ZBjgI@nuU-&&@w) z$%19gix*lYyXIxf&NTj5TE8S?3k5m`{#a7K^c=VBObV*{x58&_KuN7h7B#dkY*~CJ zJO{1iW}Q~Q=;N=&R}0Tr+`Pz@SWN2#}5?G*~E<;D4kQIcU5!zab)VtO;IBAIrVjZos zrm|4tO>t({$wF|z$yqOJ%^gNXxHIZo-GT;MqqTuDk;hRj%i5MLT-KbmziKq2Fm(9N z))C(>;B~8NCS$Z#>a?K^LR;GwFAc*>)*fV>ap>V$fjir#oab3Bu!$AlMvyGE@@p%2 znIm?3+}eI7qk*b)zL5|TQH0JnN9=T0j(%GG5{)4{hb{HZPkLzsK~_zKBA^(a;OpPdg2E2xDnygJ&gXs96|>tj<~xRhYHJ&MdzrI&um$Cx(2E)17Fvt^b95f>$+#u zFI_~hI2wMXvvdw(^V*j&7c`u`u%TfQ#8DK+&Bg6YXyx{$i*lc~X3rj#W(=F#$UY25 zjKX0`Jcb2Cwve(1tZ_f_AM4&6OVr#3Eu&ccmi~P#e3ce}rFZ{3zsmpr=6|=cdHDbG z@02qy%I&BeTQg!&Rc`z^x9>Q&-#EAbxZH?Q&5V&FM)6(53;XBBj32-6gvkdSaKN~U zllR|uB7w)SY~s(jN&8LOfBfWq_sfk4(d=)Qf<4VyCQ literal 0 HcmV?d00001 diff --git a/emtests/test_sscanf_whitespace.c b/emtests/test_sscanf_whitespace.c new file mode 100644 index 000000000..425bab619 --- /dev/null +++ b/emtests/test_sscanf_whitespace.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main() { + short int x; + short int y; + + const char* buffer[] = {"173,16", " 16,173", "183, 173", + " 17, 287", " 98, 123, "}; + + for (int i = 0; i < 5; ++i) { + sscanf(buffer[i], "%hd,%hd", &x, &y); + printf("%d:%d,%d ", i, x, y); + } + + return 0; +} diff --git a/emtests/test_sscanf_whitespace.out b/emtests/test_sscanf_whitespace.out new file mode 100644 index 000000000..9a26dd1d4 --- /dev/null +++ b/emtests/test_sscanf_whitespace.out @@ -0,0 +1 @@ +0:173,16 1:16,173 2:183,173 3:17,287 4:98,123 \ No newline at end of file diff --git a/emtests/test_sscanf_whitespace.wasm b/emtests/test_sscanf_whitespace.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9766b2c270c9b006a45619052f83431936ca9c92 GIT binary patch literal 76613 zcmbTf2b@(!()WMQIrrRqnL988D4?iR3o1%7XLq@%qsY3ht8RLB7f{i42GJQuTz7p0 z6crT}BZ>(lsGyh=D(0-1vtrIUVSc~AI`__uKKp$B@BhW)+&&$utE;Q4tE;Q~B@`IJY$hen5He=0i4Gy6nsbVm1nQw#C5H-VmX-s^Ar5Xz{7lj>nJ{T`_X(3G zj&Iw0!j2R6-LLK7T&%brdrxTJb-(uU6T3$C9l!g2ZS6Zv+Isw?N&B^L*S6n5T~m8` z>Mrf$_h{K^@`Sd%Chm7oE)lHqqyr~TY&vk#9%J{}CyVLcC8icv96NUG#QpYYsg~jG zfC=r}wzd6sziJu99DKkY<0npBZ^LzSdB?nK+{Rg4eP`T88)i}E&ZugpZp0iosk6F1 zV<+r;z#eV;?B70N(%5|`?7PSQ2anx-pS^RrYAr-Tnz6f&KVU*K#UrVvef;hdCv=VL zvCW@puG&P>;U6wjN(f(0gUGkSd zM{$y-ag^lqDQpeYLN z6`~dMeHwf8$i;C!pBI#TDasZ0=s6`C7?=5z=ucjMQvOtOzx;DZG_X+SPw|%tp81ey z8{wdT<^PVh{@HKwp{TJZeKeu1ZPI>Xi}CII>^CX5YH{pddrds>fPdtMrDOMMn=m1_ zV#C;p6DRLGcJ~7g8o&S8eKuG>H#Qx+@A!Qt<$4$Sok-E#3WU5%bK^V&U**Q9V-MK9 zttGd6-JS=-&l4w#H}|OTeBpJ^-V+WGP4_wAAI{ag>_2{w3Avsn%J2G*wh0I2dexD> zM@z+P=~3@5zo*Q8Z4+{h-TZZz@slUy8oD(`xq(r+Zo*1??KPnP%Iod5SKaKZ^M4*3 zMN%w$v1m}a z+$%S*zLINF&O!CWbT60Z$5B54?F+Oe8B~YGi-7g5SaaybPrv5Slb?;7L&VR9&7qt1 z4Rw`V$XQ)wYH95xw@IR4shKzac0@FKL}T;dIJa?}qd++s8IQDbsJHq`x_#(w-M7t; ztdGh>^{_hYQHk4|LxVL?AT(M}izsG2EBWTo+j?6!y){ELO2z0b?@RYV;1sNYyAx-B${KwOr-PXmofmqJa-aB6FoYI@}cN zw>eyr*d^ZDogAJl+LOgf z(i;9|f1~HZKkOe+OL0+aIKU35L(93C6bx!zAy@{j^$p^~(R<6}EMt|V>Yj98UI{|jT|Im0^yOpcG6!xgbz z5i9NH*lv!6;ytn56IY_P@R(xkG0(jug7@w#4XP81SLQpVUW}ogy%>)PZ^!m_oRJ1P zeHPniaYiX<(;j|^E3pS=B$b@aNLs?l2|so+sGXD853!vCkuO!^r6gXP@MG5!wIs16 zNo7iNcrdXClS=*M@N{BN!)vYKRmIq=bleAteUMb>uCEjOI;oUe!(n;jc@^l#KEik$gqIE!?CuLX*SYdAmDbi6)1od0R^M*6;%ClD8Mg z^_J2IO%9*t?NiV7ecrw&&>Ci>M)HibEu5T^Mrd+4CpBKqfj2Hm?UGcyaZM`T;IDY& zw$yG*#TyT#_CPAaKb6{39YCN~4P2ua*zD}JtE`g$l73{Erc;h%{*5eBB zbwRvwy2cZK!&5~S6^C3EQmkeD%kS{W%{&WJa5%9U0!Go-xrMMMvr8 zFD$i$zw_7r-WtZ*Sh4vy8z&|oZ{x+{yW2S1eR9~t_7HdPX?u#dC)fnry)Eozd)S1@ zVQ<@8JiU+YBaUviy{x${wAkL(JUL9XiQ?paZC~;6Bx|urZDBu~Xp<&~{cV4xwOXsV zx6Ssmwzkl2`&--OaGN9VF8I)BdT>KG+V{+rR8z5~u&Re>>+K zV*d;U{x8}gq2!ZH0Wlr^+x}abr`QycU}|JjC7BDA6`I4e$fmgfJS?)qP)M4>;gKCq za($c<5srw;sZG(39pS=jdSuhRz>$$18L9H4BGUuo&WMbsG&&p;*)dUm3U8^E%3(<< zdp&~JVmaJV0v34QQ3BB=rBL!Y2F8S~kBy9{I3~=DY^Ja*YTi9Avg5qc<4F?>oDkUw z9x*F2o?=rtF=EC!F)Km4W=A&LGn^jT>E5n0B0D2Xh9Yw!o8!r6Ms}trpB33zBr`j2 zS)ZgthCyTrYtj7E6`rlI4GOEd`P?(hC$-Ze<2kt+6SiamKi=!UP&B$Q(xgzVtkN7VitHi>c5x&=e)5-qQcY>~L;a@gd`s2u)mf9_J>RgqmK!X-3k zOEJaOk?|bw%`6J^HIZH8ps$PUI&bjxkzMc2-BRf{M8$qt&#CK2oNh(8b^oQBD+oGDmh2r9@*_E0&U?A zTC1UZXJkBgWO$R-9PWzjE+1TXM|QVYe@|rhpvbg^dlh5%Ds!eIwT1htaPE(c=RSv1 zQr-tNc2vW|k?}m>DU2rA=8?#FO6t699(XjeN7bzAJg_vX&I6A{_Lyr>kGlrNU$Mj! zL=oQ}o{Ws=O=h~MB74dS^mJrTtF<2A7M^wO=vl9uV${8pJrSX!?iBu*5>m`_kv-?l zd_J=0mG)c|{#dp@+EOnTYlOcL8BZ3m)Jwexj!~w@5oM7Q zc{#F|yC_YfVdz$d8~ry$Exm2ZnD9zuuh53d6efjCQ(YF>GM8?zii;&ZUytl{Z}1zD zy`cub8f8<+t5HjM)3cW*hqoeo%X7UQ+1mn{3#+DNt^D-UPe`?QB6~-%0~AZfsXzX@ zIlLR$yNr#=;l0S-qp7XoeL=DJA@~Q8eL%Kl1DeA}k$vRZK91~T`nffH5*g3?bp5Bw z#!GwnEV9oiFtwpMd>+~7Uf_$!zMvyp!a|D-@=&RMfRO@!}lI2HisV~8e=~&ZT%S8kEFGRpCaS=9-vcWn;M5z%VkNERh@ID z#Wv0L*~4Nx%r%hdF+ylMdMc#Zg8zSIZ$@EcWvg&+DW%YWrf@{eFEtz)S5~qkK!;Dxs%!u2=(LfA+1)x9B!zy-k99ARBTtKg)v2aXm$2bDV#&&G1`D$it zJnFUMV&myQI-C&O3DTU8a|~z2HcM}-gl&MeJ-=frx97mGK23QULAJ0iEYz1^e?qp3 zM8}D-o#+*v6x(W*0h7bYF$s;$b~1`LW9XFFPVw|pV>`*~IZXjOHEs&CW8-CZ+!n4Y z*>xpkprxdh!+Io3*q$z!^wC`7G#ao2%ZUJTvM`ZB+Q|FdpL_K?JVeicFd2R4O-{0I*8%_ z)^INC97kzxY;%Q*hCzLyOp$Xba-NdyJV2fw+xfBdsS9GefFV6OTol_yv2?176=N5p zGtG-_UM$6Ger)q&vHm5o@mx%umnw~y$>FltE`x}Z!-CiruuNiZiH+oiS%zT4{tPhihWH#&ccEa*RN0xGpx5uOrv>N+UEm+z=Zt zH?T6hF%~oPSADoRw#D9uw?KmMYr7>5qf`48p)JDbvW*r|Z;kC%(dE}+l#L8cDS>SW zY;U7$Y?O7!?QVtGCTwlnhwW@k*ui;r2l4D}vEAm?EQxK2^X%=h@rY;dh>d5v(c#Y6 z?qpE#mfCjZaC<3x-66HD%i+$F?Vu^|uGsE!NO#9}w|CpUvE3{5b`a0r7u$WFe1B~B z$KgRh-L0RpJ?NPqi0uJozOzJQZZCx<@fj~$>t#DKg&i^mvr%gLL$N(nV~Mo7JbgGe z9%24SY)$q^JUToY+oQ@his}8QYtxXMIupt=Qi3_?E-K0+*g9NWh#OG-tmLq(l@Wy!A0^u7;}z@NnS38Vag@TtUueafi&JeJ<~xg+y= zOs%f{fe+OABDOEQjxS^5p%=f3g(`IY8ta7k`3vauHKOk?_LnZTE{|<_M>AXptcXp% ziH+w;uWOVl_%^n0y@Kyz`_4)5eQe*m9i*c4A7kVB&I^zZh@WEPQTxhJ2SlbOHZ{?V zKP|CoiJE*E){CT*h85*HJTabWiReNu08LMf#|h=cF4GH5(g%-7=!7E#pvgJ@$i$9J zq!AvKP$T30=)`!Aa#*8CW7bOSm_$j(CU&eNGc&Q7iL|`q6l2FJvnv+BIlc<#gv5A` zcQ{STJ1b#q3CxL!@yzlRMq3jLiNtuCgnp9@0H^R$nab!qHL+8L>nYUM9!^VS4&bji zWOh=u&Yeyg8QQ}ciJhL<8CZ$tBsRy1b!K8`s=UXyg|k$~&hnZm53}xKvy%{Pm+*&_ zkYdhG>}+r3xrv>tw6l}&hqCF`l3tM3CkD#CT?_s(M6N zQw4qOg2XOxv@T5SLeQ$@!hn>dOdY!@v5OQrK#}Bgb?oBAF2=gW8&)Ub)EwsAD(NYj!i;w>YuI zB(;WH663iEn71Z&YZ3-z+SmZ^z}uW3kN~$Q#xtNwJI2KwiQVB0cV}XELNKKe;Rfr- z2B3K)c28n=(bIP)cDIxC-o)-zPkTJ;l0@VFKJRI-s0y8-aerbww^i9sef2`rWfON>mX`OU| zClYkXCm`&Ti9McVI^>f{IXor8Jq4McN$i;<^i$cDUC8&7?)GwGD+~{#CSTgFaq94j3*GhrqB-p7s}8Ifq8 zC&WvleUTW?=bl8V4;da`CdQNH?k4&ARRTa|UY;1wSIR8CBxCDqvR{fS?>Du)-zLWM zO;^C*CH9@e`987lowh$=O=x^Syc(E3qB2DhGpfHc zM`VcI@o;qxnw`r<{Q}QXmRp;;R_q>&@ zTV-A5BpO*6!Az95Q}T8axStF@gj>R?c{@38ry^5N%Nq|=o1M4Wc^NEnU7PZ(H)T%V z=6F-i%-flsX{pDbl{cQ#fP8k|c+Sf27|!v~ocx$@Zr*q~mraFhOLnbPny#SBl@}ex z+`P^8or?4FcAi&qeja&qz9^RU*9CdIz!NS~!bMKXNUPb(vf&|hnc~|B7w3)V0&1R@ zw|PR-+_*nKZ}an_&Ly7V641RgZ#>F+S>7%KA`-DoZhCV;-WGW7g?U@()n1;r%R4HS zTv?b8X(m!2;#A0aU*32`&inIre_oT{PsP#UfxJCH!3>KBmD0F-cqngZ5r?Zr&bK$%pclDahKqJ+8O=^I_9ee}6+l*s*e=sKC;YU9x=GObMG; zW+<+Vkm4_=uqpS0FH90W$<&Ebm z+H`H+u606OSB+{8*Yi%kmT*JfuFu;I^&~d8;_Xe?ouV= zn_JjqD%mYW-RdFO?=}T$gjCe0J#>-tW-3=wXA!E8t>r;C7?h*vJCvQB9Ao0C6M5ULGG)8)WZpKfA^%j~c%B6LTS~?l+ zdns=(IfZ@>6xr~ixbWq?z3hzeO5R=(8J-|^WwC>nQ9#<96nxM|q7azZvXbG0C(hX+p((cpp_mEOqP8>;s-Ve=-9;pgqV5rUlW z49EwQbAco|4^)J@ zrG}m8+>r70=XvA#4U=acPPZ>yKtJi@>dQQ@_9fVSmA9|d=}%TOl&fOy>%4sp9h$;& ziMi#3w%F>uws_i0@H^QR?O5|VCGQ5ikVRhoHCTKVrJC>XALE+nA2;43x^U`%-mXF z!BE1AnO_TBGnBAm7S#fahZ0uI4Yj~sLkTNpNiFcuP{NA2uNHW6C}G7ctp#2jN?0+^ z)&g$~C9IfbwZI2M2`lEETHuSJgcb8iE%5zN!irg53rrtISTR#;ftkYyD`rM5aLO>k zikVdloHdNFVot9GE*wT!F>`By1;Yp{W_~Sj%`n1>SyT%w9!6L(H`D@m4I`|WCAGjq z!w4(pzG}dJQ~49iepu6Wv%LM34^vZ{npW7%o|f7)<|0=3{3Q-`EVaWuX*%1VX*Nqt zPs`zm6y8394ay@^1K1H{Jvxs8?VT89l55pGEB2B-Orsom(!zbUnwsvUM?8U}ZC*!kXJgVj+tr*^X!TAbQq@2Fc+ zyTwc2n%b@EsKG9GZLrvANoq?x`|YXmfaV>Fu{)d+K2Yw&&YOn2QoG9uem90;2X~M9 z;x6cWZ)*2?(tRi-)xNlozPMlXxF1SBs8*^)52631;o;OC_WX~e_K1UeRG=OP)Y88pkgyvqtu_UW!Oq<`q`!4)9f$xv9OP zq_nz-eJwQ}fqp%;*9ACR{l0;XHv{~p7M=E{17=~H0VWc_Z`A<5of^+uUMKB&6MWvm zV62ch4vWYWj=;OAz3YAVUTW{*CDa-|NbLh)HH8mT`%qm?G}~MsW$BZ{#~zSr?-Mos z6J-GwJ@YAUQV#1g;V(w|Jhjg~=8M#LKBG}zruL;8#ik=ZPs>wVp32_)O=crvuAW>7>yR9VQO7KWPf*y_p^jl;s9XJqW((@I!&csS`eu5;raQzV z3U)+6lsvLvJk#9AX<9-3cNC6dN`*m)4_l$}{p3UI)PkMrl{?p9?>ntvr#ZCQ1#M^X zSN7a93U-Fa&M6p=2z;gpe5Tq(;#LB@m58~hWQ(L^!iO-z>;jvF1v|@~-_9;z_ERsN zQ!t*h@eMdvQFgBI5{^b2nF_`Q`n-b8bLjI6Hs3qol7d}Q0A)&$erdsY<~ylK2gYRu z<53gK6qT@8P_P9KV`0G-I*cm{c14wrTM5ra1>;%hP{;w4D+|WsP(*9{h;e&WfghJB zR~PK6LcpF|2tC!Y1fNSo&$78S>6(IFH^4EPTe>;XsXL2>4T zAjZ(`0|m5FD~<^d73?8J4hVfzhP-aXf4E=|1$&MH zFBCB1zffoiFDgG#?ct?@y;P79|K)-a`!YV6uN3SR@0n#Dz=;1UJ!h{LCWqGw_8Lj8 z;q`*?ECc2n1$(0q`ea7@KHiCMJ5MmE-zgYRpDO)e@^=gNu5~!OTi$l=_@ZE6IDTIi>`RaN3Lo!+W~;9Y#?!MYELS%#7b0I2Lhsc2$eRBR z&6G9&+XB}7Z=vva1^WhpA&-#nkQYCQfX=zYef@)FPFLgslzo9ESC;sHA6 z(qgtsysVh55*HM0K`|^W+Cs1F@}gbtcw8Yo7J|p3qAl{ID~onT6^|2lcMg#V_v?zpi;~wDjpsT~+L3~+0*ZEnC*4@I8;f06i8mFs zO1#PQ(hN%9T(p~umHz7EON#W}+Hr1^EX+xiWy9&>Earc;y}UD=f+~J#G2Bx0j=#kr zFD}|*nyDlrV3pg7#xonDE-Bg)asOf!N$E`QPe}W9zA4;ZwA-Ce<`u&oiVAlYjliAI z<1S$Z%!-CfkAcaLK19| z5eh#Rjps{G%DU^PqVaU?(Wxcl@fdaBm(CN1mF%#R2Ik=-TpI)-*B~2bj;Q3yn z`Ay--64Ts~B``Ux6zWrJ&@^{ciC?C<86~E<8JtWw8W&=`0X5AXjUW9nDr?7-+QYFW zJC?&)D%{-%Y+3W%$tCNqdG6$rQ|^?Ko#OSMP_h&J^uwtoJC!;$&!NY+hvPf}RF5y& z@t$>7$!0mKC$c$^p?VU>F@)#|AgYP(I91F`_iW5lO9x3H+i4}^>0YHHOny2pi(RrX zp3W#4PewI#dJe%6Ij3ZE9D_4Uc4kSV2dwekGy<<*H5wlpNg7-*k`vx8yLcobGn6zN~thldkB@#hhq&G51NOua@TTMjS%L zeVPNa_O`-rDQxwe&1$GhmO3qbaY%pP0cHN^0QxZEFeG^B9B6Qlbk*Y?>8c(#^G`{Z z`QwuadGT=+dQis)3cs(gm8qjg= zFFQrwkRLv&Sxo4QBze(Y@7)DnBU-x9+P5pLo$3 z|M#!eI#T)yeqXi8{g<6VzJNiNN1Oo_gM3>%A>iKf_|3P5@BQe@_y4oA^Uwe!AsLSJ zKX{$)N3S|@q9+MrPsJlq=U{$_QvB)5xODgLg2gm>)c>M&GL3*EJam}c?1AHKrg{$7 z(Nwkg2szQK8ArxA)o%-gzDmcpp63W3N~8l~Mr=H4cA26YkVnTj)(eI^(+h?>)Bgeq z9O8w2=3ak{13bn79_McMPRFiYqEi?%Bl_qY+=mo8U5f=g-KR5p@ra)-Bw@x(s&IPt z495Yd^)uaX8`pGssyE3^{cI>gRua%r&XKda63&$~Ivth?b$3_?T2nYr9_qwrv%>ju zRF|;FOPzV(0%0zx@A8{CBoW7TU9u0b0UX^`dM5phGd|XY!(wn$iFHPR$0c8%VX8d3cZwQl)E1w5^eWr11o74OO{jR^wW>maVBs=(0w07;J+*bJkX*{W`Xe zpbSydk$ywsW@&@AQ zjj9rFW82s^Y7Lu6+HC?78qFgFU{l-F))Q9i3HoNXnT_z|GKvaSz(kwd=Bi?gYK>dk zmU`XFwj!b_{0i)Tm0<@9Ze!bs%eJ*`m8S{sO!{s++l~y|C}w-xUNNI>GvwiU2#q0RJ%PCb>w6u7@0|&$#?a3jNyA6lNWrP#7!6TI*(f&zVsIpF zYuh^W1>P$3qp+X5*x7d0xPwB7B7C7#co)f`U0e+9YP%}t4>-PxNPo0Hl6hC_CqnlV zrktC&SbQ7VF74q@_9yk#pQ}2r+@=5A8vaZA?0=~JzM<07kcsfB~D&_fcXpL%k4+ugPh3ZM-%4#EoBp0=kj;vlSA)K4jU*#4>V5N zR>3lkIAojMuh5N>*qj(r|Kvv_iW9fA^q*3j|0R>^zr4@>T^%Zi&?*0H=cMf+_TR0# zk3h}jz%50HX$wBc5s~ru0>u^PBXuIz{!MET4}G+jJW5A%g~<%gOGQ33E+voF6$eBP z2t<<4my*Zm=&qKM$NFhPmXgQ&`QGDc_X#?6n=K`0>By> zHePfMgYIDPrR1qPrm6y`>2#{Z^lY6`bz#*L2T|jOQF+p05M9p^&X4Gwb(-5U=CdtKWIS zJB)j=;^D-3I{2Cm@{6e!kOY{R;ENo4bN6qaiebd!V#ds&1iy9_F3DQ#haPyGwL zqgA1Jt0c}|$idi%)3;d!^5P0V09(xfM=a9uS1*8_%30ych;y(SJy+@MtC-_zoq5$t z@*16WwLVSZS|M<)5V$f5tj-ErNL~lJT1Z|Wv5>qT!uq+_Y$16=RMs)qJ{)vy4>#*D zE4vbuOi_bs#f2vQ>ocHGEt8#_5={UMdxFc^){V> z6{1Tb;{nmzbq*FZZv{;)BNwY)UaGE&RMJVSdvyHOe0#?^`(7P^t))Y%`&ch!?|u}- z4UG5eIIOCEKu2FCkRObU$DxwgN$7|Cu8-_^tb>2p&&#^$#=GhfotAY*fPI$u=GIc3 zMU~$nr(>54;Vi7Wkubz~JhI1il$P24o#7#NGPd=5Wk=Gq0_l!rC%9=<10vRiLsR$`-VJbS&-+B7)fHMV8IHtny6Qoz>tAUU|eow zb@-aIn{^YN>(KqFqs$L$Jl$nO_8!)Q8cS?dm$|{FYz-~UppC}5v8VN9!T}ffua^}q z$89s?R_4N<6|I<6`$qTZJip$Dv6~ayqY9`ZrcG7!SBm^q6U)x34^glBxY|H;atYlj zK64XDUyP4XSZ znd#-U&J^DzKiDCpwgEfj1GFpqqP^JOP10WIm`sI5g%N2`DJ&Yp0ULf=!mb%cyV)*a+0mF? zHTnI41vZubF+&zjLdbI5Uda9hWd9<({%C*TN1CwK*HVplRdkgqRn1mAwIG9XK^>W5 z`*-`hkl{8B(QTZ}1s$~$)e^>Yvj*ftu@JRIwLSP5+l*4-#6zhNKIjv|=O5tn4^`}X z#6FZIt=aamW<~C4O7kEIdL+p?)#3HH%RpKCNAyfE~7BV%8N7_`$(Y+;8rggc# zV{gek*B(@LrYszWUBlG`z(zKuJsjz`cAz&h-)CkG*8-USTLbexivBTbmNfmtT!^|F zfZibzO?NqlS%~MbESog`y*0fZ*X4>1$HbKdVdAQSn56THj=eSQGXKx^*{#DkbB3k3sRRi)8}&Vg2RZ|`;lem^Y=R;ns4E2BTI)EfG0QJ@VXUldR&)JNwRSgeZz zyP8lz1sY(hA*5H~5S7d`bzQ14v+Am#o4Q*o+U)8L?@Jc8g2tLwD6L^@s6pLS&ziQT z4N{W_shF0ty1$HDPBhL~&Z=0|{K#51D+VG%Y>2I`Vr#3|FdLQ?)2iT5ovCC+OARhA zM%W1ZcbgWq8qe!7o_%SWvwt^hZL4}%*Qy@un;Op>*#@?eU}r-%&1BHV88j_z$-|mf z&^8C!=E}OUz-&R?NbW6di|k$!uYxtL(tc&XQWd|pU#kk1w>Hwt*`b{RJf}<4-dZV| z?FL>JGA{hkxP7*BrA9DN7@k1mY|YGmBIvsjqyAluh@3Kf;Tf0&F&X{jEaZk6S3zL`7Sw=ZxP$k%y6Hhczw;{|0Q$WybC9+62brkUBWs1C zt>aQcSjInEpRqqwra}6QZm1Ld zXCo}~g74;L;QNSsUYDvU`2}5}qU0B4S+WzV^`fT>5`UC9ui0x^A%mV zB9P164$I%T9Y>f5bFN}vb7L1zk`vRwCW{_nlZ*Ry9EPlWeo;kU^ z<+rE2$pCuW7h`Y#j2~nd0W~`89bLwv>fY16E9%krwayTUKajl}N%#&*!v`p=5~Q67 zd|0)8*SJQul0IUZk90)~AVdY{iH~(vi>mlUx3dU&H;ijg^$`l6`Ryy8cmdJ@@wqN- z@w#L**J%6lXVz)K__}JHuGX&=Jvc9yK^ptDD(89^V11)~pbYP7R@q#0p=g+0!8wxv zhsk6t9NknbeT9vq>9Hzun=u0~GoZTRm_lq+%4ke{rhR4xW0-*JSkMxWb^|GDqgy73 zLsDQbE~+h=arjuzky&mq4&$;CH)Z!ELKruiIt%^}Gpg@nIRd`51Ol1H>HAB%=7@V$ zu%@0=1)m{690;&WrXo3;eFpRr2&lvTvW?Z)@dDTYy&|tnzmiu0AspyA z$VM_Vpolh5uM7#MKD{#a*}x{vdSDlswQG(OcdlI(Rx;SG-5Q2SP|1KLO>3Y447H(d z+Qs|}bj^4JJy{wSRnVOsR@|({E>>Li$p&DzL53ZS#WW^*GmQx=tg-6OEo=)iY^oRx zvWj8W0#EMHk^I>bO=MHIe{N1_v&{b4fc>+V%bo@?8S|Tpk2Fd(X;B2g25~ZLA|&?QJvdq*i|vsTUjv> z8E50{Zz}dT6=S`X6_fVFsrWXQUOpJG<=XDbRy4drFzNb@099RK0r z7S&1KWBXMH3U?#g#CC2++}~O|misKsC_)UYGL0ZD%UH)zPe0o)6s(^v0Py$D6&TTz z!%Ccv&*XvoQnMn<-ij*A!Ynff7R7T~lI;gvD28SD&R{s324?|)+tzPF`b?q zv7R^?6JfSsVXn*;EGGeTwiagC<@_42?3z@TXntd$uh25XTv43MLe1~Zt1i*h8*`ZE z_^l41vruF$ZPz`CtlrM19$&ABpsdQz)!gp!ZLF#_%zRPJLax?3uQCRez_;PWS2dBHe7LF>7_D#LKZGFTnW2wi_Er{q6x?aXCaEf<)Yi=Q1S{{Z&?yjHuIH?WjV$0D(^!s8FXI0 zK{pPn_N!#TRikf|R{)|QDjV|>_k(x>h`Oy;S+D-Ni5En#)osNP>MGEb<#dti;fBvyfw z6GJY~t(`q_dxTBb{Hg@6{Z3hmz55%=J4Jp~^nbi5y2O~wRkqYk+D;yfi;b(X(k?ix z3WmtWvMiL1tAx~a-ErDbJ~NF*%0N15U>&yyblmt|Syxw2kJ2UGTk-=>Zo!1J8sM1^ zSXhdr8#1A9DE3)REU^h`$Vg^LrD^kW!xm=9O|pgFY9fi2zTV2!BoMG1X4ejGZs-g3 z8Ri%fRJ@0+#&ott=GC`_z-x`wpvtxoBqrF3t0RoOEgHMY#6Y8ZTD@F|d%=Lckgf@r zJyl{FTu*aXgEl=wf1h&uS904+_ske3wf-&W8SX)io}ud3wEni{n6MU+R5sYwV*VM- zCO{c|eyz%Y_R4?**&@!{I?Wh0mAEFRi!!V0{x+lqg1aGCnnxm)qnqjIB&!IT(V=XN zu%v~>^>ABPY2N7dSRAZxTV^x!mdcG<;EO!83h+QXaG77B(Oc4JmftjbBO7EJHEBxE znk-f>(da=mx*Lt&DD=-5I;UR5K9T7LcqXahO|u_g|6;VLSQ`pjF1x~pJEEI{8z@j^ zirNDKrC>o6THRt>y#+OGAhsdqzX~f`#!{{_)NfN)mKAtg*DpfXTOX_|ePls*G%%=S z%EAg5(AUoHMcFj_iDhgW1#=b~%8R0?QOwy3=Cm%%X=2V^@JuhU9J;rd9`;s6MN8?F z`fPmF3uSmJYo&X{VVlaBuwG1vi7J~%>qQ;e)Sa!E3F;e5^maEWEQ>r01HaNjPH90m zuC#>Asp`Y>kI1lIV4QC#Zx9uPu*TukabplDQi5`pgDcovVC-c>aY~55Iv}pNalAfq z!v#yW5!lDGm)MvnZ;qm#g4X*#HNUs?Jt1A9u0gss9|lvGdS43XB{^*)U~q4OQuW?D zkf~#Yl|a2A8(|G16OFH&Jm1G>gV+uGS%&P!*3eid+y$w+vyrPjm~)a>rfkk<6Uy)m zmxwm54EcL!eP>ZB+|@b1bBR=`8!dXs0t3yuH2aGI4dta#w4$>2vE0xcSNU6{pL($G z*Iwy&AggEp-467tQ9?$2*}Y9S@6)<^P%KMnkQ}F9e5fZC=II92ss=U)Xisa@PcQ3P zh25(L8wrsG1)Gf;E3|2!2-v-V-BVUdj_?8X6B`34WBvz| zXsGBkoIaumu0VprLQkl!g>W4STdmo}mPv$X0f*4Nl7?X*jaHS~npzWPQRNsnok}W+ z7_mTr}0A>MLW_599jVsymq)!b!Y$aPs;Fyl8;Od&> znwHH??w{hu>0bhqnD19*LlC0@9j0eBAVHRQG(aowWOQ&*&P159;8GR|bNH|YHgNLP zSpvcVg!3R=7glFjug)kaX+zO-AnvvJ7-T~-<8wi8%$d?^rA+)js#9NTPnF(dlsgev zin}_JCpu#@5xRgZgglLFYoxJnOCu+vb7A04{KBYk&x zYjjMQBeEVX@CQ9N8s1>bReP;`Hl$U{VVH(nsk8Bxv`R<_`AiPsB|aI3DC-Bq8f4hI zcJ4Q{ zx=hD|=;%SC>5+l9Mys|-S-OHjk=ugEx0<#Ma<-;#5QyirK~QDkCiEF?6V!6&Y<2Ax z;1txjx@;(F9>$Z5EAu)Q4U3EOD>kyTRE54n1cG$O>DE) zsu@0Kd{Jg|vaKi86}3@{?3QY^bjOZXqhW#I=B~bB)IiM<1^gzZpa111^M>-EY)&g= z{LMIP97~gQy(S#X^>;4Gd)B7&Cr30EDlamp_vjK+-%x%#j@A-Oi-E=RF=`z&{KUl? zLrjs_y_~G8rqy^@w{e&_my4hqhrqfnZy93BolWnnYVt!Fu~kFCC%=5pG#d zHEs}Uk{pwvB;Pnl;5O~xWKH=bGjK^|15tCRl=33Ge==5;8;8OeMCKe@hLWm9WC>fQ z0|CuZFN_}|N#Pv0!~O!ghNrA6``ec(mpT|=1T&ksPh<74pV^jO>~mT{$Z+!B5@Hru2{$ITjlD!}(uK##KESK}YAPhCF}} zlT~%m#U6ZSIxZtQTjW!@Vk{882yE7hDUO9(!V(tuyN=I5p~`dQXj{d)KMx zC_fOV#cnOs*b(a25wecZ;EvF`9idG-LVP2t2Ijub;L^_Evz@_ZoxyiHgP(K;m*<*m z-3(*Wb!?-nrVD&@4jFAWeJ# zyr%n;2g3n=aj*u#^6DkMVtnQ`ZsgXeUBpmuC0YKq9rEli@kslNOOCZPqTs?k`FVqe z?Z@v2{Qiqy*b(E{?Qx}!v#cHnoEP=La5wId^fGy|o}3*E$kv7qL#1qD1-OslvJ*Ra z1g?x-(h!#Z>t>L~ft@>aFGb+v8&xHVUhb-X1V3hJ^p!Q5xUrg4zq1-cXZ6ZzWqXYH z+JAhasaBw+M}aTE#c>p)-_;lDlN{TMKw!dU*C_^@M&l~z)#}*@_XLUxE59ka(ZYK% zcQ$M2zORd#C0D%U2eEzNS~V9me^je%Q0FzxOFc2Wky+rllKInEYnsmxD0~d6aU zuPP?P(YnQ0TOBjFYLhbrs2kkr{B@jN(kw>da^`Qmm!>nCxhz=&`dgu~6f`6XR})dQ zo14`Dzq%QE{1EebD$&DlZ+50hP!HD-cjXCW*X!gfbrW@)^I!p)nsAA;6LlKbaXJ+a z(=E<6jRtIMgVl|wN6IQEE!D=ZICU|%swOrJAp5oq9fY@Lf^Dg(se1cP+15}&HWR8n z{vjoP!^RCjx%G#Fjg{PXax>Se>36oHa&JaD-9M6Zqy_L^#dbuk8HqZ$S=gEPYh$%W zrk_<%Q`aVSD;vWG!<8{fFwg(%f3|ZK$J=u)JvQ&zztq36p+|rIrTWvqe>eT<-oJmH ze*3T3zr6Aay?fb z1r_hwI9wN3PKd&pNqs@^Y>4QgZ5#2A{O3mCfp7oC)XL_}pS6tqoBfsc{4KRVmv!Yf zFO>+nUe?FgPRbZ`PSV-8x6zpBB?|>xc`LISdoY8yH8AeOJYZt6H0L+1$wzonb-2(He5n!jvX7&GLEO&B) z2Jfbgy?XWPQD4X3pZ&}C>Xq{dzCl`Q=w9yC&EE=XuU>JlVy|9FFK2nU28Meb^rqpQ zpHwiy9Oj!+pA&VsroY1@kS0YD(|wMeQkfPvj$c_5a85>=>B?~?)2UwYYRhdL`EQ=S zQ`C^qE7c#29GunWUk3b)hzv0v13H%=A=#kw2~#+az|DEE^DwHk zhF{b^OpuNN)9gQOo@Nk-we(oeCtOXs|Cj%KZpQWkmdA2fT(@h^)Rvm_?s3{RVp~mZ zIyPdlcU+{;f>p#l~e#R>17L1>O2J=s!BkTsQ^O7=5VitSAD zogIy?xnIfwwL4dRMQk>m6$zv4N{njMDT*q0Fav1QyNW_6&CNib>t89Q+VdQN^9Y^q zJD-jKj*A>n)W&C6zaBfbEZJO%1y4+q{h&d~uhAZcW-%ogcBW%1JAIyhHP1YAXdkF)eRA4y$obgFg5n z$Bo-*toPs@5%t^=HTDU2W_zxk=ht)0P+d^PnfG=buw996x-;V1Z3jzhH_aR%)nWJO zyiL~qU5j!ytuCxX2M;B7IRD=$PN?z`>~o)v;i&xmI(zdU*r%-R@c{q`WDJ9lbA&p1 z;(;npJg5^poYff}9@5bq2>F0_?Ze`UnoprR_7OjrqaJ)z{)TwUW<0S}r*nAY3N|nJ znDfMA5Z^s7RrD!$x~z()rtox>eYMWQI&451BgTl|o8vTTG z<^XwR2HZ8npmM#BbFC$G@ZVmc5EOK+;*%=nK9yS`C+$aPo`gWfix8Z@5aqsbPW!}% z#Fug+bkX&dd<1a~%qaJ@TnTwA<0+_u%bjw|34JTaU{UTncMR^J-1l-1_P%z`=%gI( z2#zo@Yu4~wR>kwx$Oyg)p0CNZ6FirBb*~H0*B#GgUfCP&%_;J~sk;sEe9rKEOFo^v zmG!ASuzTC_e4EgFa^4i4@5^VibJTyJPvTM0n)GmE*B-{m0Sr~~VPtCx*hdjsG1lgf z<*muJ2I}FD_!ei@o~nZPgS?^D6+g-88o=HWm}NOoU)55l#<)Cd`k5BftjrC1TAZE9 zCs$Ql#mzEPS8=n%rE+@A+FB>@aWkwQ$5$=xR7ovEvDp`}viHDreq+q%&g%P>aTSuj zvawF?bF$8zzingx+|R5;n&*Ei6jx^ep9>moIFeSrhmEESoiSHxMqwt=7UBv37@^v( zCj;Z6dfs1DP^=v8%c~xWC5A7=R%5zn`G{kyvKmJo&xIkp8dFz;CWzU8w43=mVJ)+{J|g4` z22KKd@6D-og;aZY^guUVt_)S?#^#^E8v@1jT|iQy zSZxNOVpZGHBgsYCs%>s^T{u@Ouyd15ndg31tiD@^w$;d&jy6kvnU4E?)?CW}r}Scn zcJXt#zEbT}J${ym`T>?_CQy%^BKnPwH_6E=H)=}bX8J0)Qwz6Srxs4P8RKUDwzHrX z7rKyo64Y|XTKfNgQVY8~i;7R67mnL*7;&FVe7L!pMqjL=)H%t#?8*l&fuMcaJqSNT zHRDy5uIFS+*De&VGOy!$UKQ8#Yq(wz8*wY6D8*dez)cTa4X5uAa?eAH4%9nB^ZYY} zNQ6sbHtH`S4`0Drf#vb33G3sFV;0CGSRh~T3uN8R_h_s|3ty}&@y$B_T3t?y<%~{G z#+j<~l)g;HSL;THr}eoun)xKf{EKdT@=Z6XI#0UE?m7RmnodG$@9I)%^sPhkdNKHqVL@?o9JtIjLb@3nI({I^)4Ru`Mm1#{%xV(6ZA19T?OP) z=;u=~+j>tEjH^Hs2(Pc$2sJ9B<3b`mDW6;l=u>BA-pn+I&l_uPWY3n{SOl;x>H> zQAjL_`4pm%$g20s?$Eaom3XIr3$ZGa@pASr89LA274rc^iR8P5z}=3(-F%cTwtKP< z9Xi+CTjQ4d^mRnp5boCp5&6I&U#ikK5bZv=<>8pEq|9XU@Xu%pL#!xbUaGHBikO%A z2P-?K%mw;vC8X#d*3xeHr7^bp)!8`d&lbsgn5Zv{u~GANN{rN5>ll%JwRP*QTo&_L zLbdYM*j{yOu(#}WeTPsjdqXXILoF-A6tcs=2^UNEe=Fu=gZ3upnEd;10PFz<7>xAM z)SftG!4cQQm01$GD0bAEeFlTVO*#!rfdV-uG~!y(&Ic2NZVZ)J)$$ z#4@?AN@^bi-w>gMYlrpRUR%@*RwY;Rd^@(xskLk)uF?0cwNve9+mwnYn@ZAN0hVh3 z`ytr!6`9voEc2fHDk*M`4R^BMOg>vyR2=R5sg*xi%5o_>xAb$_ofw66;4U-&=&7VGx_X zLY*^-NY#uuxDP05HS4bdr2BPNZVAS})#UWCss%~Ol@Va8qY!h35Y*Us))>Q^!^Ov% zHq6$_7IQCGM=Y z0zBe(xZ=6xvJcrdhOY2tvC|zGT532vC308T73mHib!YP~OJLL3U7tu0yRcc(2w(9@ zT>6*}u5xloFzTtx@3Zqkj?W&=s|zvP(wU6t!{ET}-u7 z!0<(bdMT6B$jwX?^l-{Fa`LlL%vVcCaHz|eAlY}<6&B^jZ5cYfD~n;=4j+USg)E~* z)%MM*z=4$7xJyU7iSjb-zmFz{sG<7q6Pit%qjruj`MIcMVOXb@GJr zh0ki0xg}hSWMHVepc##1SOg2Il#xPhrjyAyP!TAy<}OvrP9W`$j3kB$$YY@9c9pV* zMXDhsmkuF;PlwKFXoT%ASDa#HvBrhq6zvajM;t!)Kb|}M! zrG8WyGzPOB9d{|ksS5MgwNXW96G!DZT&O{S@K_S@t7+`P$Vt4!_eU^#Jm>+e34~u^ zIiC4gKJBa(FhXSl_h}y+@}?3+(FDTw07fI#a(8>^Q^pndFY_}Z0;hW|^V}aEMA*R3iQDr%lyez^7t2Or7s`wHP=d%2*uZ+Mfq0@OpbTdu` zSIi?=`BsrzP(u#8D&d77hmrMi0pW-=WW>-48Lx0ME^y=)>8c^8BRdvXM&X(&a&B|w ztz0>=4l8SOW_lInuZv`Er8$*`9Wp~J;4@~*tgSTQMxAX@12UrBq@ySrdpCRiH>>`t z^WQNRo;C2i~S(EROiO23>;=WU+Q_zrS(}y+E^6407&AW77TpWJ4E<5UMmfK3z zEL3*L>W6*HSxXp>nMt%`I7(KC{W-~Nk`UzzPP0{ODW+X~GcbH&?8M{zq0ICNyYgAa z2m_}NTz6`~4$AW={eb~ABh1oTr(^0Q{1~17xb7jMj-}q|PdIi@c&9J*PIptNce>j` zIW(SeBzDecBHqgOTqKOJZE~s{jGlLE>ls(S^$^f8Wb*z3{OpEI>Ujj&C2QrQQHM_Q zNVHJ5zGlT=s-FCw70WpJ92bi!_sdzkK8r@x9V*M!%h7`DHpx*_j?nR7qGrZ_2+L$J zL_XG`Kz$bJ#B)RFjoXoUAAm5hOH3r^ra=hW> zc-6`Arr({a0h-wsxz$e+?(N9l)*_er7+Rp)iV`bvLV4622q9vuw5v2&TbVEKR85S> zc?g^>xLs?b6EBV{Qc zDcl$84h>$ukEZJqjf_r}DxL5&wo#)q97{)wBT{xn+d zFjW6XHSjNLV0NdJpvyx>m~(zPjLRCx{ZV0@H*lQa9HngIx#~&Tb_a>w$KY48Tjk!@ zKgE4o2bK452NNpTjfK|kd`iB?2fHoIjLo_>VH_I!?yON)TCkIu~ zvNl#>+bL{^Um~AJz4VB(wU^6QS{>^hb;G+prFU9bF~9vN$FQW#`ZWqpqs*|Rw#?3P zz1%tT0)WPEb^v^F@tn4X*O zFP5hmwvh!k^u^%Tg8@3x0B%DyIy1&+PEfI>!X*YAVFdnyKqFmCg-Z<^!Z>}ImB*Yx z73HKOIXakRE2w3BJ_5*idhRG7AZ(b}YF=*MG%rWx`$mMiihz)Ng*lhX$X&G(l@bah z7X2EJle6PUZ?gGG2P5*x)0axpfb_>_@^n(^X{NIH*i&1X&&*~208?m* zbWKze(6E20V?m|u%hARz=EC9R;2rlg;Af}RiMOdcgP)y?KZkSGga$vOwLuiA-Px0S zi2>*dOox6<(T!o-qU|Ith1qYJ5xSLd%*VDZW3+9N_YBfw`jKk)pcJFlCZ-Fc>fk`t zRClnOTIUf=K-Ixw;S{P;QFXAmQ62+D6Cw+Cc%Q=1CEK(JCY?R#+OoJYK4E7ldsU`i zjG_aW!c}R*a7g-{5n9=HL$8L(d=8t^Ifh&nTUEiY73`p3c2|-1sPprvV{?9?eb=FZ zY{07SusQ)%iE*gNJ_53j5ZQ-{?5=rWK0D-0LeFfV8~G)vVxO$!iKy*h&pIXp99_5t z5DfyPz#lx-1}Y$=$X-sa6SlJ^xw<=JU5#TXK+^^p0&hX$u@oAxRkn#!#AF^I(O8`W ze;MxB%wqw$@vi4A!7yo2WI+~>4WQ*lQ!l3Ai*5d@M)%R%II6d5vLXG)2+8^x`c+s# z6GKfdaSd)s*-Np8yxzW#Brw%!T<4oePas8W|K?DUOI@>DS|?B99M|Eu7Ua-zbbSY++FxpMZk-@&yqW1v6OkIW@zrT zZIKPh`Dr6->A%%g#gLzk&RUr=FxLSngp)#m$|4LMPPDapTNj1o7_YfJpY{5BVFk%$ zoo!zjzU$ltwp?FlXP`GYpI+z!!x^$ie){ssT9f?unc9% z*-wcL@0Pw9A~kwP`p(j~J%M+=+(rfLt@?%aURg}rM}m(aJ2xu#2=wE8&yB6~rmS## zsL*?ou6YO8Lkxq8!rB5ky5BoA1hPH9w`6hjEIiAbNQ0$5#Yc{eCIYEr?SVn)B91|a zZu}%iKh#w43NS(VQKJKylL|P6T&GZ)lsD{*SdSG+u5UTPgMt?kCD^6^wsa-SBwhA8 z^lI#g2dxBMbtTF1u zY{)tZx9cY@4^uaFLBFlE5vVKvDee@-uP1)J#jn&Y-cdE;fu<(bLd3aQ*N31UcLn#@ zBl~>&ir^FT0m-g5Mw&^%=rM=?q+fDHv}(wCV>O3g9Wk3Sse;JX*x#7Vtqe4}Jr8$1 ztiDR!uThP?D+A!J(Bc}^*s{LVw<_Hb;&v65qgvI3Qdp+dS>N%F@aUZuf5 zAJ~l&@C4%*mf|tDGb8%> zA!W8ietyx-S4Uw!G!fOck+q?vd{jtTPInj7u_rp3ERRyk$B?o-=enbmGA^GiW#%sb znUFFwmj4WjQ+A>&g_-<}vIyIz&8TD}6{Xg3No9S;58-ZD#su~z)Z+Y5i^U?h$VPL% zYGxQhwoOHPmtB+p-Fg?CZ`}}yU4|h09p;BxK?Z8%6dyBgo`CX#E<6%jg=sABzQQ;= z(#A;kXlaGKHV#bpGIvw%B+ls3f>T{#Am=im={=cC%>8D0xSC52BS*#>p(m+gJ@zfI zq=w!^Qdnew-abv1o9ow`%?QV`4L-<$9T5;D4oDSjQAab+ppoA>pn@P()!2 zh5eDpsy^?HBzf&ieKG=UQf=>C3{2k?So6Q`9hbqHc9?=~9pwpG{hLLK{IIEiYZp1F zh?u#S~{*FY&ZUB5FryiS(j|RazY*m@h=-Ua%?n#6)SL6W7R9d(QKyUXG@x5fFw4hU$!1My{rQ7xI(yxk+m4AIqZ4}YRe=WqY!z7`VO01s)nUf1B)dp zhp__j2S?pU;n$k#k{x!jJEp<12?xQX!CI=pUD}mK5%t0Jc)h<<8inbntn@dUbFOP( z*P9~rl#s-<3+=SUqY}Y)Ym3Jug{LhTH`1Jon~D_b&Fkjq7){Q$LXro?u#vqt zi0o%-53zmw+p9JOuddzhzb9dRNRz$7RZxt(fX&jukm%Q<1&A%tSTgfVxm8N^`+`4b zgw^IYNwWWV_xmS=bIuaoNdOyjFhGh-xb$Z!ICjc#%@35~y*%~QLr{AW>|F6@g}+nZepwVZam||1GL)@U`8|^r28-<2ilUa+8l99pa$D4wNtzqHPm#6V(Hvq2!QHrWza&Q zl3JjhGP&Fy-6F|snwuNeXux}_(?>NfYwGWfn$z!}Zq+^f6qVlD2>z%fLTqX#&GC~7 zCoBqTSUo~!hwe2*L(6}!-%_d{W~#f8$g#QE65)p|Oa)slA%gv|6l~j6w}0)y{z-}b z(U#Os4eArcXrZ#o&*c_MdMqLG6#%%ksYl-|9>vzoUBRvG3-o*{ zNR+8s>R-;7U5;KLt)hP@awG2ZXk;FdUS^Y&GUWSXTIy-3t9ZQ0KVxc{r+J2ghRm zz=ZbW3%8vaH$E@V7<(d5nUpQuUNSh+$?kY9CNt>_GYQRX(wP+kDz4DbZQ>bB<7}?6 z*fO9CaCr;+#oMJW<-I%%Hfm}npKsfS@jBZu z+Gt~W{YaWMRDuPY+L+Fn#NUEF-iox~`fUKDQ?v^c8|E)ev>w}#WI2DB<%~#{%e4pq zN>FFu;N%QClAMD_*$*w}ujuSD%XwoAKp0SI$oUqbOu0k#8!Kn9lDEc`U_(OITGH*T zODg#5vB$=Y8qTDydKIc3Ev3~x^|OWMRkiM^wcBk%9%}Ul@^DWr&o&Ek2(Yjf*d6n+ z0q=;hE#c@xB6^@|=JRD&(#6nwXU4E=EVn7&APbbU<>Imjf zllOnx-)p-k1^hfDbxA2HNjSe@jAm$2nZf`R{f4ljs)PS2HdTHt2;;kAa%0IQ6zr}= z8NnN352Px6CLFGQcZOQMDfZh5b+_et5B5dWZZq~j5KndA8-oRQ-=>q@7t8i(I~fpj zyAcCMs1ZvN@bjSLJiyocV~r>PUIzks#h|1G8} zt^8E%A+&es2M@=gA3PF+j|CcACm#)usxclWmqrgH7H)jZ2zl7Bs9S}NHEuL4tbaV? zMgXw@VIPO`$IU$6AhBX0!@!D%0tWU8c<6`1z>>#atWd|Z-rJ8I;zfxVXI~iS3&uEy zz&MY`aLx~mbAZ?0L{57#8jnY@u%CB|u~sq0DhAF22t66QdL2Neu_nOUQZ1&zf$HS7 zfvjnFWhVkh;f8?9z(DGoG5GCtH)3f1LFVQ0A?zJ&Oxin>Hf&7Vdy@2|ENRogGo0+A z;bg2B_(w5jUo8CACIws=6oqu3rhGy8PS!f@$L9Xw_k?^pc07DK##khFZyBp1n3yXs z7|*FjdO@a^-VQR?8kzrLWIk0UQ`n7Otd?c>;FwSdg)0R@fqf^`*Wz>!6+e-{5=jZG z!Rr#BuRE*;pNVmiKyDOy7EUK{HNj18$JO8_Lx0;K2`>F7bn;pLr-FgoN^T8Q1P=O{ zQ0ZFA{lZw~7h)A^Z;kpYEY+ z)pC6v#lPihaCV-`(enUGJ(5zdw^D!6N_}&=)Fqk>_AZ)0yu-e~GWNY$g{*}D4)r4q zuQVWlG%^AT=@=u!=88Q;hfc?nyp%0VKZJB1cNL0q>3@k5Pt*J|hB!>W0apJ>VxUdb z8sWw&?JYJG0KEUT71D6`JkHqnr{@xa-RGZA99PdLoBS^m z_e;x4n6xB4Z)v(}xr9@jh4?1#FD1ulUvI@k-5OTBkbG<6ZcVx^o4?Ma)BXOo#NAdZ zLSoBkcK@5@!GJ`+oGb{iFX~Rhs}UN4N%Z!_-Cn8(Eu%LlZgcnhI}&$CDN%!%qv54o z{e;5nomS3~%!_-*;&Ac_vM;SEKFyMD3R05>o1Ggp4lf2Hz+iVOKRxGU8rf3`wAeS4 z+eq7w-R@Ea-+W|arbm3eXjKFaXL(LrDLRa*V#gF&RH2< zaw&f13c0dY$NwDutv}Z)$1i_TSt!7_ai(#fzc+DQ+zT1^CD6NqlZQmcIYtIM=pYb0 z?_U3%#1Y~<1iU|S_h)3lW0bK)JSMjWX0ljU}uSHkm)<#W!U8Icps|ql!t@384YcNpT&*mAEJ#us;TtHn4Y3CJhzKBnn z$e8@1h!@p-2lEn9x1V9`0rSW$USm-0DoJ*|d@hKViEP{Ba?>nTEsrzL**r!M#NL*@ zvTbfr6tm%NmWW}78_dDgrpcwiY!JA?E#;((Sk~MHV((zB7^Kysc%% zRS^>RqTJuu?Umf(aPECkNW8BI+35D4CGqUlk(7}I#2M&&-j6BMKVyXZUy1yTFe_e0 zX=kxlM;J|W5@HYlmmvy;*(hb^uo}v|LA6KH*P7vaID5##0+S4ZQ7Beg^?y}+N*xh{ zIB5tQ%0V<9(w>9aiKCI&8v*YDC_E4LQ>|8~s(&B};n!f2BHB{|4G#yvfAR}O6IPs5|E8I~uX3|FbfG9ON!!FP2Nm#^ zRFwat*_sOxsR+a=zSxb5`BzNM+)2#@ju@IQGPhT|i80uI-ldWOVsL+WhAe_sz$jjf_MoJW zxHTQn>Gid`-Bdnt41*U-uwDRe?`PqNIn&f{-@- zAgT*MPo#bEtV`VN@N1roe5Ud#0LKC zC=+h`kWth*NHz%tZHO8D?kMc*N<5Qtj7;1f#1>-1pG4Wf`yR^^%aOj4YfFCQOLJ3HVE62wwk`f%b(6{mGHDB%l4I zjdd>yY>FMcxiLFZ1^>11q}J5GiBQKd(7uG}yE@KGbdmW*xeK#fAeipRqW@4t5$|O| zNiE(hk>f+ze;2T!>RK=0FAncw6zGGP61@`nqe2IJ!N_=3_UPKC!d@TJU0xGBlzZtq z{%j?ETSnvBkZ!ZXf9xzD3`8S%jb!I4*~6_>sH6o}NpA?zL&oBF!i`b5c?x%g>?;>2 zaCtT9Z@`(BA4RRtvYMVH27E^*|5l>E*!e-DW(ndrN`?Jf1Q^j?y(=^$guiQY+rL{^ z_V!1Xv^;EjaKcLkM$Xg@$J)JD1R{f`Nj`#To6UX}p zla2l%{G%z`_k}%7sUI^r41?A~iHIMK{P+FH&kB{wLgeAZ5$j=A7LO!u_jFQYa4_JK zCZQ(z#B&77`v3yx`t4?Gzlu9X-lF+`(_-Qyc9x8k*uF`)*ck(@gWKQ8$*1+|IIBEl zgm^DH*l(dIiF+hLNcd=yPEwdP-NLL@JMc&L7_MXU2t#Vm2!mQ9eCmtOxr1dEM2e$Z{?g4%(8xM7U`s z|HasSQSV9qMr{c(q%D#6%+yW(`-$VTkwQJr4qRah<;-RU2(8$?9Orf7Jdrp)it~fS z{lLAgGd|3wJ-II_W?1zctqa>b8+>;@R!j8H8C~SuW^t zLX%yggPY{_?8^&ym1a<{-pX%qLf9<$-K*HqC> ziTfHEKa)5<*VFdTCIEQLSS3!oF-ht*F{bJG2bk+Os8u$on9nBH_@5;1C#Bq{%|P&f zEqnCR0~PfG+4T~IpF-NjK}AC zOsoIH1P_&TgW3N2*zviRjo}+HU{m)7d&vn;UuRbTn5EC(q&JnfCU_ zQlefyW?`L2j#Zgf^Q0OPzxn$tDo?b>yf5;e^Be4a5sW~!WDS)f#^C%)NsG<|JKciK z0EsrhBV9pBfNpUk<=EVa7#*r&H#getR+oW#Myo3JfGj&q(@_3sz^vNQfO%{zrS3(a z<;NG@c%><54^qGh%qKE;Kz3{DspXm0X%wW4$A2@kl+9|RHv9SzBY=JCK`@NZ+&UjG z8;{Srip_$0Pd{>{jtO?3U5W6(=$#bk-Oo*O`^iPNR6~L(Zk0M#^l_h#04F!;oqA!24h%q$TzLwp3z#E6j#ZWgj423Mh4&K@da1j>gP zU?hrvl0PoXvY=}?qFx&Z<0v@?g`+^1D5Q}fv?WY5pA6@dVP-3}U^=INos0Ly1qdvU zE4Y)39-#}s5phdzaf_vw8HqdRkoT1o$(^gp9O|VyltQb&le}h!ASCsfn&QoI(ii{0 zl~OPDqa$qZF_)#0tju#WHMQk(FR$7}7l_i;XURi-lzxOQSd|;r?d?uHU2{gG*IIRZ zk2z*}yUMXX-QJ^!q_m2;n-jn*i-_o|81&e@4nw;RE^Qz}9wv2SpEZZBE&JS3t`a3- zN}GPvqY>VV(sgIdq0bD;a@AXP+Yf5YW}o9F(} zR8;pO*Ba%DD#S%z_&%mGa-lBo(3m!T-}Q)g2Ry=nFwhOz#NKKs-j(Bcm3dH3T+T(c zGob}5&5u2u{)tZy4o_d{k?gf<&+~e!qQ|@3LvU&I5NM}#`o0&6gKiOCIo)2foQ^$H z&ye8Vf@GU+%d>HW>uTS%46ie%N9)xM1YGY0KT~;W;`gF9YiCHaIX$S$`I}oyKbcyJ z{@(W7u`~o`^fj}n8ivqTjRd9Gsgj-M@cMczO;;;6<$699T56dbb$<%}$XB{ksKlbj zFoP4gSgdlik@*xzr&q5>BQSmXs$*a&oli2|Ph>O;BN_f-HFZo>J^-T?$b6N%84Nl7 ztPvoNuHTKgBN&D&*peOyoX%CuWh$BA4m?*-Gvzs) z_LM*R34UMKgHCrO!^3bt#z-8)^Z9CYn<)fHn(rqu$n48sH%Wva#Y{pm7!;JUXNyJ3 zAhnh92q8n=QKXBpID3rw2+V=YAH_KD==btZvcMluQp3l7_pJZqyNs zymKek6#HtB&;lt||2F^Yha~Z;!g-~U;~|CuIz7PH5@T5JtZ;=Aot>Sl)@mej73(w% zKcd}EO|d5Uc8_bl&pA$BS`$Up@~BWf@)P`4R4e=1*~(vil7UKXk~$kHwQQ+yIfgu$ zKldn|A)|RD3dfsFbEZJlE=$Wat<56(tOw~4{AN_M9t4No%YE<$t87RESVxjsrqXQA^iG*%?_RC;$EAt}Hd@bg~W52~t30 zINDriCP5tsMlmRB)~s>0O;kZ|rm<=mCb+6W0E8(LkJvY`74GA}skuHn0EZtP7GPu= z|ELzw4zc14C87A?D6y*W)2F6*Q6ZY5COm+dR82FQIZ+_)#Fl+p6Ym3^`~V7a`z-fU z;%ROQl@~%!B6I~~U8N0666CVBaS#kXklTKuaE4dN2&ybGqvO z;e;g}oWUwuLzc2Hq_uSIA|=^Bt(V&j-kC3mFYRu@ zPYCMU(dp_n>v}fB2RPZsc?U`3zJvEvbmn5#+MMy)?bH@#`49hvAj>h|cM_N5DLv~n zyKG~G9^u?_4W-JG@ljJSr*zW~YgKnu+Io$GTUMHrA!Qkm{G-TlH@TzLVtqGXOpD#B zr@%8tSv|9=G4~(v-YkuKU4@eSpv2b_L@L;7Ut?`+dnvYeAFmoi)v<(|Ai8Y(HO|#& z+-5zYq=QQ%)ffF^90~5}b*>uYs9L9%+Gp~efRmn@;?{h$r&w`3BihT|5A=B14)hqG zJ_E-LVXv~0-(C6Tvh-3eDWeoakP^pVQxKNhNXgh! zx?>cj|Af2V)QdX)ZdN}7Nr0hDu9||LyIWxgqavk=!s=$Q`6EdgXtNP`Ct|8{cIp~v zojJMbW^|5+b5m`Ng|L3g6z#5l(B0{WKCB zL}y@x%TwD$*1fy9%2ql>&NeX4mYMVobqaGAHqIk-8_$%4gyN+!$-D8Y-eJ1^XACQC z$#uiZZOI8M_s>|T|7@^BDG-d`tP25^cup&T*WuzI^BhMQlh)=m8qJWiGQ!J7;CNl{ z*2t>hfmpq989abTK~IhPovg=Xr(N51UvbUZG2Tt!cdZ9|xW3YaGQzKm=E`D8zE2R( zTrHI#XSh*c%pW7Qv;#n5uAy&;bT6B+zJ4UVXM=I^?E=Gz#qKs0Phc`C@FA&X$m}=x z6Nnk4gaUnBVf~AdNGknD36XIoHe{pC4ln*6{+X3oTBUUJ)tQ~A{MPobPJ)~xDsrpg z9rz;^_^j37vqq)1@{sYY$j~T2mAnVQDhvatDM)63{=8#EO4v;@uSxW-GMbn;BNx%P z30B1gU`;gqm@7Vnti)noMW{;V7Z{@C0$a}n>1wDVqF)pT>FRp6y7FtqML=6?}R7{mgDqf7jBRA?%k2}PBT2}QFi*>zS~ z`iZS7ie|wP6$sJg)!DHz9!cgk2Kz!%c`fQ>65TybNVt105YCypjgnPThu2vhUS~-m zn*3@hDU(m8r!)r1WV*{dzcEe$$D>5LL4wHiqGwri1&Jf2x>1-&z=W;BrT(1SqN@xg zHB54^i^1e+7#&7zIp^fTyRrC`^u9)VH^uVdIjq&+5`&ae;chk3ZZ*dp$0BXBNV}b+?vOXaK-xEiBvge1JKHP|gst8{Qnc_bF|+~4+#jSSv}yL@ z(J)dFc|3bJcx==x7C36mEI}KA8R8YfD7=fanvF1EhTkd?c6SV3khZ?ZkcDIovhdrg zi(&L9tW>O1-z$`%n)yC~4Ap|)F;rp5h-SXukc86|imG@}el!*8A;BU8IXKc3Fz`qm z;lwU4SDMm3Zi&%4q*WS?LySj-Ad+^5PDX9!>zDM6-wOSzi@q)M*zUN%pi!d5*g*PQ|7rwJ1T-;Zo~ z{s|Z>pm8cV(7Uw|3v3WoMyT%}8|sgm1oXEy_G}y|)YB@ILb$(MJf6-$Rx>p1+>(g3Is<;esV(SSVXs(ot@lZ--XA)Lsnq)f=C z+-%|uCCctZ`4p}{+*~!R&L#?t4?1&R9PGL0s_hRA_S!OEE3;uHT7+`5Z?imGvZ79P zEv%}i`h%s%oGTtf-k>bzqgk~SB%OyrGcR9==rzKIdeXr?G(8(=#lWB~%M*??BWzxi zAUkKhmQ`6uQ1~<0>O}bPL}Nqt%z+6lAe-kb;3@7D1+0ht>W%vl9fZ-C5p#hh~4S9=v{7zGCX;Ry_#I32m)*=xTPp!Qa9dOS8h@rU_1ei|4Gf`hRSV{xdVXpP)?xRs)t z(?+ee*UG1d+8cd7YqAgIN7CYoS7)eU*==h4;N?n;iVx4&a+;fl6>B=VJpAle9)2`g zca&bL)0^GAhN#KqFhr%642h^NVRt{98ocN6rh2tcW{ z9{b<@We@l$E4C@U1{4QyuGfIBf7QB-OZR;S^sL}quK@)fROa&0fB{tldJGtl4A9bR zps~O|J|T1PNTo(^>fJMk`_O!kLPZZny4glgUCN$GgWt-lN&x}Z z@wqBOxMXy3#@!BdU1P_$l<68?UcW-uMe$rGF>~B)OVJo9YIz-FiUoD+H;;@ zch{;l2N%+wMSoocPAui<-LFR2!h46I3Y+z>a(+v?)mGyJ6xUpzRPlB&FTs_SUiK@~ ztDexA07G_%*B&WDHl@1U-y$m*anr3r!U@85JTSE;e;a|3VuW?KTRPS6BT&n*a6 zi$a%ke=fjrb;vb|dMhT_N>NC1VEO42AsyU@$7v_dZtpbrgV6q;RvLPb0oYU;uxj6e zL}C}xr$*pV7ep8o7YgZ*xZ4&hiPa==kGZ|1Pk!4R6OzO`LjSPi-WHSZ>hAgCSfzG{ z>U=+@%o&C6vkoXxShGVYQ2OU5!Alu%oGi@d6nDHousS=l zfbH9N1q;*6@I6^0)*j^z1LlXPPgzCSQ3i3T3q7&pAu6lVpN}X24l4#gSUFPl4zyto zv7TkvPp}bWL1Q~Bww@YAX@dte2QlbQN}sj-U^CM?+Zo+I72b;BFqb+vn$^qeaqR*M z)GPg!!s@8*ELyR;O7Wr{{u|X};m8XUm*a>>G;{%raJcWsZIlLX*DK>oz;a6qZGM+kblJ(gNwW90T0_ir*hDg1Jy znVW8ex&NSu`4z&EJ~;viDI0naeT>B7CBT|Eg_JvV?sJ7S#;FrH3b-F^J%YHmV%UEa z+>csAs-zaO%Mkqvj3Ly6V%AJ`oExy1_HdDNk~XEYPRK>sGrHORShm z-2~Ooc4Zw#&z}i(=Mi6KK5)$0^v~^B9H{w)jNRdj-oBb0E2cphyw@HrR*ci$1*Sf+}MrSNZGOFu#mkCxHk#t-aLFG;_i_=egzpk zz^{$|DnHvKL-fzPh<=`swsJt!3sJ1?jAdQ5u`C!6hz0=ol7e;P-%!?CAX2$k%B20;2QHg&iY@i!qE+bzB7mho9d5VPW9fI$yBK{$w z7ZCAxQSG7N1a&z3>kMfM{0Euyy&8FVuPa_jq+oJSiu;4E;_j(+(|!0Z3@d~02#iaM ze}@*|uPCSw_9MBY1jt38I$I{keD0_6UyTtyKB(dULHOrk1MEg^*uMh56;5W0K)7xT z{ozsKx<{EB9uwY{#P=+4TSPefsunDJu`nviWWerFs2*Mn03zg|xX*IlkHwk*HhUxM z#Kva7>MDXp_bs_Lc`OS})eD?s?E=P#UUM^dimTjcU@>fxgwbWJ(2{)*{}upctTCJ9 zXl*jE$~k!X1XKx4f2R18ivcyIb7Z!0VvpNKfWHX%NPukw7+pjjuN=p7>!y$+QbwG8 z9qOjwIx^oTa3q4&@cOT!NOyn4tOjnd(0gzhf{XsY1^O+uzbW{5trrne*1C}hU-vQ7 z{%ri>Fhd$UC$4%|UIV!?qxZk-lqKWL3bcxToN-|u^|Kbe{}BFC9QmGrm5TdM0V^dq zLQg{=ZMokUq>|UR!X2lH{9ke^DR{|;I*N##{zbw{y#jcz^&kufvyAq&j5=eGk;-Vb z+zKkAHLZMp1u-?q3eA6?Rz~F6|pz&9dIBx7Ayub$V>Y zK~~X>G|jR?9InW6#UA!IeNi;9TO@BuNIB3*RaF5CRA@RhWt3EcAuw`za@s-vSMZ1+ zrNk*oa?sUXQ4o6u4Fg+v9d(-xjYk8=CDqo|BFZy(Wk{PXzjpsh`*>81$D{uUFQgyW zrk@vbCPSttxGHzTai6^>kh5|bFBK6X|cL8Tg+HVwdF(Cpkpxv zFQ`XeK-#B(1v~{UZg_z(z&E%Cy#Sx0OcxV*Uc(6Agu`f@v7Kw4_iFr0ykG-g1<4AC$=&_F-BL$*mdc2LT_+rbcuCCNS0 zs$wEo@DekSNe2qejz;go3xo>hQH~epzNHN#HRpnE)1%Z>IwRc(r7@G-XDauwfn!}0 zI_hSrKyoNSL_)U%C=?YB4t`X~2|vKtMPEAwjADA?qVI&aG#97W5MBsMgdQBDa^~%z~C#feSZ8 z`;&XusT#%sIv9C;Nd6M}Y>^b=VoM&m#CRkVjebISeVIJuNZxR%z5ZhG;?gEjgwC{; z=aGp>823@`*G34>$bB}s8%7tiddoc@*7HbTbcDxcQQRApAmd`K%V|l@kgCyMO45i? zn4#Im>^`^HFpIFHD&1BiC)0FtjokEet73+GhooHxa7Y3LutD+{h96frAeVD}rspq| z!c$o=9+5?b$Fhbaamb`E6S5{eX3LslM_d&MVuh&C0p=0~U|+Q;GlHtaR!+Lx9yZLS z6Iw|*QLdE1^-!+W(~}D|5h)#J33BZzlox9j={>OlYGe_=qufXtJCI!RtRM3>Fl!mn2S!Zh ziU(XD8$F?cCrwmRrmUp-`Vqa(cyN{Lhlyw`tB@MU)=cMC_k*?ON&8-kD#uk7RvU69 zMb3x1inQ}Q0{~fA+Mcl0)Lp5j0kXoLR0y@NCV%+(&R(t9MA@XXzNC$A=}`kd#rtaw8nT<+}d!R5}pD&h^6QjJ(A=;CTdCM=BK zNMw)mKqA`|o?ge(Q!qOY8~#&LOjn!0dLHZll(;`7lFT5^r4-Qye?i_|kmt>t*v;ns zzmgQiYWm^`c<0T;|B)_Bl_O2DQA*@9)#kNnV8eaAElh8d6p20auSXQp-;OBKKd;cT zn?>zQ-2DOW+EE;{MOzJ}@ETBEGIXycbcjFb2=+fI$D;dVQbM?aKV9qJP29WPpUlT} zES|>ZlL8d9sC-#lIc<6VXb#y|rEf#ZU&)+RJ?Z}|SvWJ7{VQKAY?TSoA4T{-2>mZY zUnFA*D8Go7`74{AzD&W1X;AZF$8|l+)zraZC{?dVC_?*j<`oQrzsWS=SKP_&0G(nv z+-(YXMeI*5h?F~%+E4q7^X}q&iI8cV{3UsJN%=mv(3=vBvfXKCMxl_xQv)3ieFF{s zYe{a3DtET2PG6x>*pitQw^avX(+^`c)ddNHTdX^=$-f|>U;_&n<`?A~U_i>aivOA< zEh3amQh+?1YbmD^iicN+Yvsm)15lD!Coe+GC3(NSY|!MU`41F0+d7XBd6+(ZkYuHr zK&ifv$4W-2ZA`G(2^#M&)x8$r}@lc_gT~ ziN9Pn$&%(KRm{z>`Hj>J7A?0VoBjKV=?bmaOVouI)F z7YO}0@0hTgvK{^)cs+=0w5P?SkbIOWy0P_!^6bdP@bPWIhGX%j4 zK);mH1`B^acO_wjWjl-2e_nDev-wxOe%t!{Ah$j7op~FuI`g+-zOT9TUicQ{{QIna zG1UJ~NE}0bnB#sL7W=#h!!s=HQ0;RDHNTkMDZhL1qjg2zb>`g_)a8|VcV&q^)v#CP zG0Ku<9-pmL;+6#CIRQc+O)!C@j;<<&&gJT5HV5U8CCg%*sd|W4)L!i1x&I; z;N!Alb0=X^Yes6x9B(#iB-A9Mvu`CbI7>vukIcU8hg6=~mtlq0;i=b?bciDnc2w$P1;TXl;n+`O z2>o$GHhM@DaXPOjFvy(dPUrPWmg*9MJ&?F1j4>y;6PwsCEOCvEY$67`<|b5zim{Xh zU6574IE`JS(Xw)O%Si7uf3lQh)(_YiF#J`R-2-kyo<-s{pI?`EYw~U#?00_NogWw~n4PZAyY*cRwov;E$nGG~ z^-8qN5`EZxK!@C4oJD{>$YDGD-iYBpXMN>!>F_z)dqCOe3MoDq&OvOY!);3)HPbUu(7zq|2c7d-b&W{w-Z-;hu@YsF195r{X2Wj5A?+Hb%r=1Ec; z51PUDA*8Su4RHVsadG57C+AN)b2m|UpDCxyWIGo-K;gAG{R1UH9sj2?Uh>$Qf zVk^DBOY4He4MqW3V%Df5JWt7dsKSI7;CAs zjRr|b>TG5$^$q4jWEHMWE%jd|mfo+FUeSF?`C=-?we*MP!eVn&c3{yIRDNmP5mb0= zF6T;zN6^av+aa{POUH?k#$BX7yXb$dMUe{mEvfaW_eKE};hnpUT%1wR{NI)ak8-`3 z(5}BuXjnjsmy-Ywrs#phqI@XQ&ODgtrxo24`G>wY^FlF2a`Q8hmp91~t{hTyWR5E; zn+>a{gZ~wH)53^1)O#7mTad@jK69GDL9**k#qY+|q2z-PX z+5z#~pBH{u*aJyU3GO%J&&Psn9VL?+RrFg?l`xS)*>^!N#_4Oc#P{?}3)=6??I;Su z<^FMbfyj==I|kjMJH}i@Op|*EK4&tO*)d@h>`7A}QLrCLLnJQv2;if z+DB~hwCNQ)pU9aq=^1*4b*X0syG%QQfc!*9ilIEThWn{KCfT2v9U(;joA8~UXJ4q>zVJdOnT(?9mJsR1aSy>tCCz2kPoK(pIW8FG>* zChtE?+*k7cBf9LsaV&~omy)P!QTzsQ1s1&*<_WsNUzA5}f=%6pZ0x^6avQSyi@3jr z`)l*=T1#<*QY@;@eodXdsj6~sTF3f`rC_qre?IT{e3UHof67iOBhVg=(zg)wEerY< zCLEVDkIj?v<OBzldD7Oq=nh0kca5yJLZhSbkFZZeqI5O ze)Du7kUHI8q@@v~{7w2CJX2_pl7EVjV@YH3wsM^34=E7HkLPM;iDyL2c!-%6z&Lj~#Z7YNp@x%?KratY?}%$+EAY@SnIKJG z$S4aqXzmXYL=;N>KFAvSAT{*W_*)Ps0(>T|t7D4> zWNw3{YA9$jy(UI3d^Mhy=xT8{2dt=Gs5xaSc^SKNAko)_1<6-qH$V7j&^Wy@b{k`{ z<_!jYhBY^ts|CjC8-#1t@cxo9k~D@&Qi4Tc-4{FXOw?z05WSd@=3}O-cJQ z)A6f`lcn^l33iSQBP24XQ7~veq;{*o$V%<&LO&Dh){xpOO6?U=yIlb2klHJx_WO|9 z?=3YM6DVzbX2Kl>uJ9>18J3=`SqemSK226+fN9v{Xh72JEa(zP7jY(w;(+@2rf}1? zK)X|pT`A@qkrSZMtK1wb+g*@|xcM$Q($f1m-Z0USwT5mor^sRSz@j(%zbB55w&>ua zn}m(NCzj7uF7Az+0vtMx=L9%3S@CvPYw2CJpu68ZuG$9v{#a%lM0Tih!o0c^2(b$btR*wlQ4Rrc|oas+^ zvsG_kcLPj=p4OZ1#vY6SRD2IAKu&YNkNdv)5Hnka$77(=ZgOMhaP=E>JQNh}I3b?1 z?Hw0kI~hb$h@!Nad{VEqo8GsCC@_YX3q$TeTV-?;`lrj(*l5IXA!9EOBCOuyqM(;KT9P(9S2znIBBf;pXDz+ zM3@JXd1VwmPYvsDyWL+{<`Y14OG3-5Dr>qb)#r2as%lXUm`n1{@xGwHUGDTPk0O>3 zF9@#<7}wyrSSSI}Wn(-` z8Lv{4?3O*%41`rP#Wdi65)eEmGEito<{G+_aSkyN& zuc3eBeSwF*XPI}20*vKg?STGdJ}g%`(8X+kz&+(qaJ;43IaIat=a^uONN>xts0y}C z4=U&ScjSo<7+vN$1`>e;9xR9yzAm`@R5`QB{!>NwDY4Yw0uy5Ffcm#~0j{@{#k)AW zqF-}{3KkOncZoaF{Vu5kN>2^0n(O}|I6dgnn53^c2OjX{QfLr8b&&25?=3OnQBA2s-PF$nK;`WSP!FYji zS)Iryz+rMcwl;~Gb`=Es=f;3<6YB_^>47?)Zz ztxLe`h=qEDKs|6-g~wfU42$blYv|_^HFOU@)=Dr|{BMv$OTYkr#6LgrW0}I0R~Vxh zmdD9Q_y-sx!8I4-i~twL?7-z9nHs;C$zg6$9=LN(u9;N;9yZB$@?mP3OXUyO8sjoK z(^YGHDf1PJ|9kmUBwL*9&XwET!wR~b(XH8MfWb}yT3kT}aO)LGib9;Br%BEi_mSU4 zey<|GuZV(uaIC2QlgZAnRwNe&tg91Z{SetXB|2G7zphE#H7Ws90X|OZ&~yMbsry7* z`j2_rI8Hj2n&RL3Bt=wm1!-5RWp|I>O71gI^rLGNl31!Q`Ov5;VK^LC^HR8{fT%lb zbN_?M+rMA`y9WMU1OKjpf7igjYvA8C@cL^^i1o6n+!T2`dcodwg097hm7sk;9E0w%ep_-Z~nP`H{;v9w~rJeVTLmsJ2{ zrJYE$f-fedZtPF@Vo@eVtlqPFt^Evm?#YJP0o$lWH1Ix_ad=s z?U7BfWl{=$h~!B*=BJHX zbr@|pk(QK6>qL6x(Rp@uZpqboP>)7T-xadmNVh@ED2L-U;*Ji)>;^HTLk3VR2P6=K z0}{(;j0>>Dv4NOzNC(E2373l%!s3#~!g3C)r8|+Z=%e>$7cj9*I9NXm1fJLeO+tS- zNrdM`xSCInd%Bu0HiQKryN~;w`uP3l<7kk$5E~#Y+sdR7(8?CBey~Z1Xmh8;b(Hj7gCT9RD$h-9{D6r1O z=o>({AOME7`j;I?0cCW(YEM+>tSR;jKDzR>XjHqqx_3=+YGio%ijkk-rmI3h%)v;y z%?wolED$%YolF0#U=zgNW?YWugk2z?i=G{JUEAKu4Z9b;=xH~DSG3xYpnVkGA*X}A zA%nzv;hHZ%@?hr*;w8%|Lb9AXwTjXMcC6GuJdL%La^wO#l9b>F}1 zez5Kbcir!#`<=S(o$k$0JLI>k?sx5azq{^t@46qS`*B_O6LdeJ>waI|@7r}hMfX#> z?hn%aL0$Jap7E+Q{e~@ksBV{^^WW5u1*h+ngpw6$zA1Dn8e_*;-CBk$A|2NoS}GP5 zao2sK`=slhfS@PGJ44dy6Z!iswRVa1;{c z?xpNvqb!*n7zaLu72snU-2M)3Z!N<$cVH*8?J!=-uHd5V3jWEi;GFCVp2@D@mh1{X z$*$m#>}g}{p^Z%&#tV+t$d%<(pexiKp04}K*l$$u;PZzcb&^507STgm^Y-$60O}Wm)p2L%1xVIlk2?d>Rj%XcMAfB{~!J9G9SvKRTZmy^{%Py)3;y$0RsmO z9x`;;PQ!QJ#rY8$=xcm>c%H`}&Wq8bAK5%%hZ(sfWHW z;U}Wcyq&6R^TpwPci!#vWi4kcU+4-IHE{6Io&$UAzU!dDl~uim?J{cQ+BN5n9y9i! zPaQmU#_YL=9e4a^K6}E6C!Kss{i4MUr=GT?v8lPWt^MrJowKq`S6y>+!)f)+ZsFPO z4X&+Wc}K&tMGd)`ElcZ{aHw@_YfEeHsD`$V=61KNrQNkQoYC6Q*08L-eqnP%?r@&e zyY}|8b4NC`E?v^rwxng5Timd0NyFmY5oa{C*0<|{;&HQdNqalb4{vd89g9wPr!Hx3 za4oHF@sietMeQxEXP4ic(b}@8p{*@9OCcK0TGH0umOHk-xue0gx3swC`qtAL+^LFL z-%jRdpCLM2+ZpwX8eDV3sqM~aSh0js9MQquscvb*Ql(EZS~^+@wXmb@>|EWlc1qWA z1~j?0v)kGmmbyjt&COk*cydNdYkljI=CfVLvicSEOPa0Fb<0-NH!mSlLqk(;Mr%u3 z+n$RXl$~o{vaE^t^^5mxSwTfluvdqbBFHw6(h>ZEkVPnaj#I9m`r9>KC1El%|UplW?1(A&HQi-rCaC zu*{vYgc_?Ge?-=}rS{0mK)u$7Xu0XlEsL6HPAgk0oIx47+AloMSfHyB>)POmuG^y< z&T0=8VU>Q!Sq+QSc1!Eqv+PT?Nvn1&g|BjHc0p}YJZtfmWvAs9oV|2mOY@RNR>`ip zrR5Cck7e~sGqzBmqv4OG^~=t7EoV?r)xQ-!YXeGZO|rP5ZBgrzGvGOBEjR1*`o$lA zExuZG`jY0wuEdfGRH`0h&oW1L-t_&kSv?MCx5zJDjvs1+k9SRa03g@uoO4>trD~ z;N`5BwdD?_BHZcqZEj%$t%)`>RGX3PXqQY8~-= zqfQ&zA+)W1$+9rKWbHx58HXO06}YQy%6XpI3Y%E*Z3M|uE5EjampNjG$88;FFdC>z z7Z?d45k=^FbNCK-<>;r@FVz^bW7tyP{G^vQ5M*vaVW%o-#S-_MgHft0g_ijXHhtIKH`2iw_vZ)nb>U zWtS{l!aU0cAm1aYDCG7WOUMbwO*kvJ`?8Ma<~?$IPB?DtgyVR$=Y+GyPB_c)hFH0} S!)N7|)i28(o*tgt>wf{rs_SI{ literal 0 HcmV?d00001 diff --git a/emtests/test_stack.c b/emtests/test_stack.c new file mode 100644 index 000000000..cec1417a8 --- /dev/null +++ b/emtests/test_stack.c @@ -0,0 +1,27 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int test(int i) { + int x = 10; + int ret = reinterpret_cast(&x); // both for the number, and forces x to not be nativized + if (i > 0) { + if ((i % 2001) != 1500) + return test(i - 1); + else + return test(i - 1) + test(i - 2); + } + return ret; +} +int main(int argc, char **argv) { + // We should get the same value for the first and last - stack has unwound + int x1 = test(argc - 2); + int x2 = test(100); + int x3 = test((argc - 2) / 4); + printf("*%d,%d*\n", x3 - x1, x2 != x1); + return 0; +} diff --git a/emtests/test_stack.out b/emtests/test_stack.out new file mode 100644 index 000000000..687e8ad64 --- /dev/null +++ b/emtests/test_stack.out @@ -0,0 +1 @@ +*0,1* \ No newline at end of file diff --git a/emtests/test_stack_align.cpp b/emtests/test_stack_align.cpp new file mode 100644 index 000000000..58775f0aa --- /dev/null +++ b/emtests/test_stack_align.cpp @@ -0,0 +1,34 @@ +// Copyright 2014 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +#define ALIGN(num_bytes) __attribute__((aligned(num_bytes))) + +struct Aligned { + char ALIGN(4) a4; + char ALIGN(8) a8; + char ALIGN(16) a16; + char ALIGN(32) a32; +}; + +__attribute__((noinline)) +void Test(const void* p, int size) { + printf("align %d: %d\n", size, reinterpret_cast(p) % size); +} + +int main() { + Aligned a; + Test(&a.a4, 4); + Test(&a.a8, 8); + Test(&a.a16, 16); + Test(&a.a32, 32); + + int p = reinterpret_cast(&a); + printf("base align: %d, %d, %d, %d\n", p%4, p%8, p%16, p%32); + + return 0; +} + diff --git a/emtests/test_stack_align.wasm b/emtests/test_stack_align.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a4dbce9fc2238288bffef010885c31803af82ecf GIT binary patch literal 45808 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 Zy*@R)u82Xb&g}e2C-4GizB2FJ@ej_0GbaE5 literal 0 HcmV?d00001 diff --git a/emtests/test_stack_byval.c b/emtests/test_stack_byval.c new file mode 100644 index 000000000..51084a775 --- /dev/null +++ b/emtests/test_stack_byval.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// We should also not blow up the stack with byval arguments +#include +struct vec { + int x, y, z; + vec(int x_, int y_, int z_) : x(x_), y(y_), z(z_) {} + static vec add(vec a, vec b) { return vec(a.x + b.x, a.y + b.y, a.z + b.z); } +}; +int main() { + int total = 0; + for (int i = 0; i < 1000; i++) { + for (int j = 0; j < 1000; j++) { + vec c(i + i % 10, j * 2, i % 255); + vec d(j * 2, j % 255, i % 120); + vec f = vec::add(c, d); + total += (f.x + f.y + f.z) % 100; + total %= 10240; + } + } + printf("sum:%d*\n", total); + return 0; +} diff --git a/emtests/test_stack_byval.out b/emtests/test_stack_byval.out new file mode 100644 index 000000000..62f1b081b --- /dev/null +++ b/emtests/test_stack_byval.out @@ -0,0 +1 @@ +sum:9780* \ No newline at end of file diff --git a/emtests/test_stack_restore.c b/emtests/test_stack_restore.c new file mode 100644 index 000000000..8b4478240 --- /dev/null +++ b/emtests/test_stack_restore.c @@ -0,0 +1,37 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +extern "C" { + +__attribute__((noinline)) int no_stack_usage(void) { + return 6; +} + +__attribute__((noinline)) int alloca_gets_restored(int count) { + char *buf = (char*)alloca(count); + sprintf(buf, "%d", 6444); + return strlen(buf); +} + +__attribute__((noinline)) int stack_usage(void) { + char buf[1024]; + sprintf(buf, "%d", 60); + return strlen(buf); +} + +int main(int argc, char **argv) { + printf("%d\n", no_stack_usage()); + printf("%d\n", alloca_gets_restored(200)); + printf("%d\n", stack_usage()); + return 0; +} + +} diff --git a/emtests/test_stack_restore.out b/emtests/test_stack_restore.out new file mode 100644 index 000000000..02c399868 --- /dev/null +++ b/emtests/test_stack_restore.out @@ -0,0 +1,3 @@ +6 +4 +2 diff --git a/emtests/test_stack_varargs.c b/emtests/test_stack_varargs.c new file mode 100644 index 000000000..a815f5fa4 --- /dev/null +++ b/emtests/test_stack_varargs.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +// We should not blow up the stack with numerous varargs +#include +#include + +void func(int i) { + printf( + "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d," + "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n", + i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, + i, i, i, i, i, i, i, i, i, i, i, i, i, i); +} +int main() { + for (int i = 0; i < 1024; i++) func(i); + printf("ok!\n"); + return 0; +} diff --git a/emtests/test_stack_varargs.out b/emtests/test_stack_varargs.out new file mode 100644 index 000000000..e036282ac --- /dev/null +++ b/emtests/test_stack_varargs.out @@ -0,0 +1 @@ +ok! \ No newline at end of file diff --git a/emtests/test_stack_varargs.wasm b/emtests/test_stack_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..080b557a7bcc540900360304d295815b0b1b4a90 GIT binary patch literal 46255 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 + +static char s[100] = "aaaaa"; +static int func(void) { + if (s[0] != 'a') return 0; + printf("iso open %s\n", s, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, + 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001); + return 0; +} +int main() { + int i; + for (i = 0; i < 5000; i++) func(); + printf(".ok.\n"); +} diff --git a/emtests/test_stack_void.out b/emtests/test_stack_void.out new file mode 100644 index 000000000..c8e99c4e8 --- /dev/null +++ b/emtests/test_stack_void.out @@ -0,0 +1 @@ +.ok. diff --git a/emtests/test_stack_void.wasm b/emtests/test_stack_void.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b13ab455659ad175a130be1c0cd2fe7e6792eaf5 GIT binary patch literal 50547 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 FzXO!Jn6Ll< literal 0 HcmV?d00001 diff --git a/emtests/test_static_variable.c b/emtests/test_static_variable.c new file mode 100644 index 000000000..0659df494 --- /dev/null +++ b/emtests/test_static_variable.c @@ -0,0 +1,25 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +struct DATA { + int value; + + DATA() { value = 0; } +}; + +DATA& GetData() { + static DATA data; + + return data; +} + +int main() { + GetData().value = 10; + printf("value:%i", GetData().value); +} diff --git a/emtests/test_static_variable.out b/emtests/test_static_variable.out new file mode 100644 index 000000000..8ab80f3b2 --- /dev/null +++ b/emtests/test_static_variable.out @@ -0,0 +1 @@ +value:10 \ No newline at end of file diff --git a/emtests/test_statics.c b/emtests/test_statics.c new file mode 100644 index 000000000..dab5a936c --- /dev/null +++ b/emtests/test_statics.c @@ -0,0 +1,42 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +#define CONSTRLEN 32 + +char *(*func)(char *, const char *) = NULL; + +void conoutfv(const char *fmt) { + static char buf[CONSTRLEN]; + func(buf, fmt); // call by function pointer to make sure we test strcpy here + puts(buf); +} + +struct XYZ { + float x, y, z; + XYZ(float a, float b, float c) : x(a), y(b), z(c) {} + static const XYZ &getIdentity() { + static XYZ iT(1, 2, 3); + return iT; + } +}; +struct S { + static const XYZ &getIdentity() { + static const XYZ iT(XYZ::getIdentity()); + return iT; + } +}; + +int main() { + func = &strcpy; + conoutfv("*staticccz*"); + printf("*%.2f,%.2f,%.2f*\n", S::getIdentity().x, S::getIdentity().y, + S::getIdentity().z); + return 0; +} diff --git a/emtests/test_statics.out b/emtests/test_statics.out new file mode 100644 index 000000000..c34f2cb6a --- /dev/null +++ b/emtests/test_statics.out @@ -0,0 +1,2 @@ +*staticccz* +*1.00,2.00,3.00* \ No newline at end of file diff --git a/emtests/test_statvfs.c b/emtests/test_statvfs.c new file mode 100644 index 000000000..9a879396c --- /dev/null +++ b/emtests/test_statvfs.c @@ -0,0 +1,31 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + struct statvfs s; + + printf("result: %d\n", statvfs("/test", &s)); + printf("errno: %d\n", errno); + + printf("f_bsize: %lu\n", s.f_bsize); + printf("f_frsize: %lu\n", s.f_frsize); + printf("f_blocks: %lu\n", s.f_blocks); + printf("f_bfree: %lu\n", s.f_bfree); + printf("f_bavail: %lu\n", s.f_bavail); + printf("f_files: %d\n", s.f_files > 5); + printf("f_ffree: %lu\n", s.f_ffree); + printf("f_favail: %lu\n", s.f_favail); + printf("f_fsid: %lu\n", s.f_fsid); + printf("f_flag: %lu\n", s.f_flag); + printf("f_namemax: %lu\n", s.f_namemax); + + return 0; +} diff --git a/emtests/test_statvfs.out b/emtests/test_statvfs.out new file mode 100644 index 000000000..8c414d094 --- /dev/null +++ b/emtests/test_statvfs.out @@ -0,0 +1,13 @@ +result: 0 +errno: 0 +f_bsize: 4096 +f_frsize: 4096 +f_blocks: 1000000 +f_bfree: 500000 +f_bavail: 500000 +f_files: 1 +f_ffree: 1000000 +f_favail: 1000000 +f_fsid: 42 +f_flag: 2 +f_namemax: 255 diff --git a/emtests/test_statvfs.wasm b/emtests/test_statvfs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..116a57c82e4964bb04056ebfe565381567950c28 GIT binary patch literal 46606 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 literal 0 HcmV?d00001 diff --git a/emtests/test_std_cout_new.cpp b/emtests/test_std_cout_new.cpp new file mode 100644 index 000000000..b475a8247 --- /dev/null +++ b/emtests/test_std_cout_new.cpp @@ -0,0 +1,26 @@ +// Copyright 2016 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +struct NodeInfo { // structure that we want to transmit to our shaders + float x; + float y; + float s; + float c; +}; +const int nbNodes = 100; +NodeInfo* data = new NodeInfo[nbNodes]; // our data that will be transmitted + // using float texture. + +template +void printText(const char (&text)[i]) { + std::cout << text << std::endl; +} + +int main() { + printText("some string constant"); + return 0; +} diff --git a/emtests/test_std_cout_new.out b/emtests/test_std_cout_new.out new file mode 100644 index 000000000..ddb4b681d --- /dev/null +++ b/emtests/test_std_cout_new.out @@ -0,0 +1 @@ +some string constant \ No newline at end of file diff --git a/emtests/test_std_cout_new.wasm b/emtests/test_std_cout_new.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8a154c5cd25c0c23761611ecb1256f9b0c7bc11e GIT binary patch literal 322439 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 Sq0afN6q`}c +#include +#include +#include + +void clean() +{ + printf("*cleaned*\n"); +} + +int comparer(const void *a, const void *b) { + int aa = *((int*)a); + int bb = *((int*)b); + return aa - bb; +} + +int main() { + // timeofday + timeval t; + gettimeofday(&t, NULL); + printf("*%d,%d\n", int(t.tv_sec), int(t.tv_usec)); // should not crash + + // atexit + atexit(clean); + + // qsort + int values[6] = { 3, 2, 5, 1, 5, 6 }; + qsort(values, 5, sizeof(int), comparer); + printf("*%d,%d,%d,%d,%d,%d*\n", values[0], values[1], values[2], values[3], values[4], values[5]); + + printf("*stdin==0:%d*\n", stdin == 0); // check that external values are at least not NULL + printf("*%%*\n"); + printf("*%.1ld*\n", 5); + + printf("*%.1f*\n", strtod("66", NULL)); // checks dependency system, as our strtod needs _isspace etc. + + printf("*%ld*\n", strtol("10", NULL, 0)); + printf("*%ld*\n", strtol("0", NULL, 0)); + printf("*%ld*\n", strtol("-10", NULL, 0)); + printf("*%ld*\n", strtol("12", NULL, 16)); + + printf("*%lu*\n", strtoul("10", NULL, 0)); + printf("*%lu*\n", strtoul("0", NULL, 0)); + printf("*%lu*\n", strtoul("-10", NULL, 0)); + + malloc(0); + printf("*malloc(0) does not fail horribly (spec allows 0 or non-zero)*\n"); + + printf("tolower_l: %c\n", tolower_l('A', 0)); + + return 0; +} diff --git a/emtests/test_stdlibs.out b/emtests/test_stdlibs.out new file mode 100644 index 000000000..432bad5da --- /dev/null +++ b/emtests/test_stdlibs.out @@ -0,0 +1,15 @@ +*1,2,3,5,5,6* +*stdin==0:0* +*%* +*5* +*66.0* +*10* +*0* +*-10* +*18* +*10* +*0* +*4294967286* +*malloc(0) does not fail horribly (spec allows 0 or non-zero)* +tolower_l: a +*cleaned* diff --git a/emtests/test_stdvec.c b/emtests/test_stdvec.c new file mode 100644 index 000000000..1a54d7f38 --- /dev/null +++ b/emtests/test_stdvec.c @@ -0,0 +1,32 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +struct S { + int a; + float b; +}; + +void foo(int a, float b) { printf("%d:%.2f\n", a, b); } + +int main(int argc, char *argv[]) { + std::vector ar; + S s; + + s.a = 789; + s.b = 123.456f; + ar.push_back(s); + + s.a = 0; + s.b = 100.1f; + ar.push_back(s); + + foo(ar[0].a, ar[0].b); + foo(ar[1].a, ar[1].b); +} diff --git a/emtests/test_stdvec.out b/emtests/test_stdvec.out new file mode 100644 index 000000000..cb3a61fce --- /dev/null +++ b/emtests/test_stdvec.out @@ -0,0 +1,2 @@ +789:123.46 +0:100.1 \ No newline at end of file diff --git a/emtests/test_strcasecmp.c b/emtests/test_strcasecmp.c new file mode 100644 index 000000000..c38b4bfd8 --- /dev/null +++ b/emtests/test_strcasecmp.c @@ -0,0 +1,86 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int sign(int x) { + if (x < 0) return -1; + if (x > 0) return 1; + return 0; +} +int main() { + printf("*\n"); + + printf("%d\n", sign(strcasecmp("hello", "hello"))); + printf("%d\n", sign(strcasecmp("hello1", "hello"))); + printf("%d\n", sign(strcasecmp("hello", "hello1"))); + printf("%d\n", sign(strcasecmp("hello1", "hello1"))); + printf("%d\n", sign(strcasecmp("iello", "hello"))); + printf("%d\n", sign(strcasecmp("hello", "iello"))); + printf("%d\n", sign(strcasecmp("A", "hello"))); + printf("%d\n", sign(strcasecmp("Z", "hello"))); + printf("%d\n", sign(strcasecmp("a", "hello"))); + printf("%d\n", sign(strcasecmp("z", "hello"))); + printf("%d\n", sign(strcasecmp("hello", "a"))); + printf("%d\n", sign(strcasecmp("hello", "z"))); + + printf("%d\n", sign(strcasecmp("Hello", "hello"))); + printf("%d\n", sign(strcasecmp("Hello1", "hello"))); + printf("%d\n", sign(strcasecmp("Hello", "hello1"))); + printf("%d\n", sign(strcasecmp("Hello1", "hello1"))); + printf("%d\n", sign(strcasecmp("Iello", "hello"))); + printf("%d\n", sign(strcasecmp("Hello", "iello"))); + printf("%d\n", sign(strcasecmp("A", "hello"))); + printf("%d\n", sign(strcasecmp("Z", "hello"))); + printf("%d\n", sign(strcasecmp("a", "hello"))); + printf("%d\n", sign(strcasecmp("z", "hello"))); + printf("%d\n", sign(strcasecmp("Hello", "a"))); + printf("%d\n", sign(strcasecmp("Hello", "z"))); + + printf("%d\n", sign(strcasecmp("hello", "Hello"))); + printf("%d\n", sign(strcasecmp("hello1", "Hello"))); + printf("%d\n", sign(strcasecmp("hello", "Hello1"))); + printf("%d\n", sign(strcasecmp("hello1", "Hello1"))); + printf("%d\n", sign(strcasecmp("iello", "Hello"))); + printf("%d\n", sign(strcasecmp("hello", "Iello"))); + printf("%d\n", sign(strcasecmp("A", "Hello"))); + printf("%d\n", sign(strcasecmp("Z", "Hello"))); + printf("%d\n", sign(strcasecmp("a", "Hello"))); + printf("%d\n", sign(strcasecmp("z", "Hello"))); + printf("%d\n", sign(strcasecmp("hello", "a"))); + printf("%d\n", sign(strcasecmp("hello", "z"))); + + printf("%d\n", sign(strcasecmp("Hello", "Hello"))); + printf("%d\n", sign(strcasecmp("Hello1", "Hello"))); + printf("%d\n", sign(strcasecmp("Hello", "Hello1"))); + printf("%d\n", sign(strcasecmp("Hello1", "Hello1"))); + printf("%d\n", sign(strcasecmp("Iello", "Hello"))); + printf("%d\n", sign(strcasecmp("Hello", "Iello"))); + printf("%d\n", sign(strcasecmp("A", "Hello"))); + printf("%d\n", sign(strcasecmp("Z", "Hello"))); + printf("%d\n", sign(strcasecmp("a", "Hello"))); + printf("%d\n", sign(strcasecmp("z", "Hello"))); + printf("%d\n", sign(strcasecmp("Hello", "a"))); + printf("%d\n", sign(strcasecmp("Hello", "z"))); + + printf("%d\n", sign(strncasecmp("hello", "hello", 3))); + printf("%d\n", sign(strncasecmp("hello1", "hello", 3))); + printf("%d\n", sign(strncasecmp("hello", "hello1", 3))); + printf("%d\n", sign(strncasecmp("hello1", "hello1", 3))); + printf("%d\n", sign(strncasecmp("iello", "hello", 3))); + printf("%d\n", sign(strncasecmp("hello", "iello", 3))); + printf("%d\n", sign(strncasecmp("A", "hello", 3))); + printf("%d\n", sign(strncasecmp("Z", "hello", 3))); + printf("%d\n", sign(strncasecmp("a", "hello", 3))); + printf("%d\n", sign(strncasecmp("z", "hello", 3))); + printf("%d\n", sign(strncasecmp("hello", "a", 3))); + printf("%d\n", sign(strncasecmp("hello", "z", 3))); + + printf("*\n"); + + return 0; +} diff --git a/emtests/test_strcasecmp.out b/emtests/test_strcasecmp.out new file mode 100644 index 000000000..b572c269d --- /dev/null +++ b/emtests/test_strcasecmp.out @@ -0,0 +1,62 @@ +* +0 +1 +-1 +0 +1 +-1 +-1 +1 +-1 +1 +1 +-1 +0 +1 +-1 +0 +1 +-1 +-1 +1 +-1 +1 +1 +-1 +0 +1 +-1 +0 +1 +-1 +-1 +1 +-1 +1 +1 +-1 +0 +1 +-1 +0 +1 +-1 +-1 +1 +-1 +1 +1 +-1 +0 +0 +0 +0 +1 +-1 +-1 +1 +-1 +1 +1 +-1 +* diff --git a/emtests/test_strcasecmp.wasm b/emtests/test_strcasecmp.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d3fbe9f9a20118b221e2bf198229fb335fe83ea5 GIT binary patch literal 48825 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�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 literal 0 HcmV?d00001 diff --git a/emtests/test_strcmp_uni.c b/emtests/test_strcmp_uni.c new file mode 100644 index 000000000..7f1ca4d35 --- /dev/null +++ b/emtests/test_strcmp_uni.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main() { +#define TEST(func) \ + { \ + char *word = (char*)"WORD"; \ + char wordEntry[2] = {-61, -126}; /* "Â"; */ \ + int cmp = func(word, wordEntry, 2); \ + if (cmp < 0) cmp = -1; \ + else if (cmp > 0) cmp = 1; \ + printf("Compare value " #func " is %d\n", cmp); \ + } + TEST(strncmp); + TEST(strncasecmp); + TEST(memcmp); +} diff --git a/emtests/test_strcmp_uni.out b/emtests/test_strcmp_uni.out new file mode 100644 index 000000000..58e237d76 --- /dev/null +++ b/emtests/test_strcmp_uni.out @@ -0,0 +1,3 @@ +Compare value strncmp is -1 +Compare value strncasecmp is -1 +Compare value memcmp is -1 diff --git a/emtests/test_strcmp_uni.wasm b/emtests/test_strcmp_uni.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8a6fde118a8144d30ad0506cb2ef5d47b700d45f GIT binary patch literal 46615 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 literal 0 HcmV?d00001 diff --git a/emtests/test_strftime.cpp b/emtests/test_strftime.cpp new file mode 100644 index 000000000..2694565b0 --- /dev/null +++ b/emtests/test_strftime.cpp @@ -0,0 +1,185 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +void test(int result, const char* comment, const char* parsed = "") { + printf("%s: %d\n", comment, result); + if (!result) { + printf("\nERROR: %s (\"%s\")\n", comment, parsed); +#ifdef REPORT_RESULT + abort(); +#endif + } +} + +int cmp(const char* s1, const char* s2) { + for (; *s1 == *s2; s1++, s2++) { + if (*s1 == '\0') break; + } + + return (*s1 - *s2); +} + +int main() { + struct tm tm; + char s[1000]; + size_t size; + + tm.tm_sec = 4; + tm.tm_min = 23; + tm.tm_hour = 20; + tm.tm_mday = 21; + tm.tm_mon = 1; + tm.tm_year = 74; + tm.tm_wday = 4; + tm.tm_yday = 51; + tm.tm_isdst = 0; + + size = strftime(s, 1000, "", &tm); + test((size == 0) && (*s == '\0'), "strftime test #1", s); + + size = strftime(s, 1000, "%a", &tm); + test((size == 3) && !cmp(s, "Thu"), "strftime test #2", s); + + size = strftime(s, 1000, "%A", &tm); + test((size == 8) && !cmp(s, "Thursday"), "strftime test #3", s); + + size = strftime(s, 1000, "%b", &tm); + test((size == 3) && !cmp(s, "Feb"), "strftime test #4", s); + + size = strftime(s, 1000, "%B", &tm); + test((size == 8) && !cmp(s, "February"), "strftime test #5", s); + + size = strftime(s, 1000, "%d", &tm); + test((size == 2) && !cmp(s, "21"), "strftime test #6", s); + + size = strftime(s, 1000, "%H", &tm); + test((size == 2) && !cmp(s, "20"), "strftime test #7", s); + + size = strftime(s, 1000, "%I", &tm); + test((size == 2) && !cmp(s, "08"), "strftime test #8", s); + + size = strftime(s, 1000, "%j", &tm); + test((size == 3) && !cmp(s, "052"), "strftime test #9", s); + + size = strftime(s, 1000, "%m", &tm); + test((size == 2) && !cmp(s, "02"), "strftime test #10", s); + + size = strftime(s, 1000, "%M", &tm); + test((size == 2) && !cmp(s, "23"), "strftime test #11", s); + + size = strftime(s, 1000, "%p", &tm); + test((size == 2) && !cmp(s, "PM"), "strftime test #12", s); + + size = strftime(s, 1000, "%S", &tm); + test((size == 2) && !cmp(s, "04"), "strftime test #13", s); + + size = strftime(s, 1000, "%U", &tm); + test((size == 2) && !cmp(s, "07"), "strftime test #14", s); + + size = strftime(s, 1000, "%w", &tm); + test((size == 1) && !cmp(s, "4"), "strftime test #15", s); + + size = strftime(s, 1000, "%W", &tm); + test((size == 2) && !cmp(s, "07"), "strftime test #16", s); + + size = strftime(s, 1000, "%y", &tm); + test((size == 2) && !cmp(s, "74"), "strftime test #17", s); + + size = strftime(s, 1000, "%Y", &tm); + test((size == 4) && !cmp(s, "1974"), "strftime test #18", s); + + size = strftime(s, 1000, "%%", &tm); + test((size == 1) && !cmp(s, "%"), "strftime test #19", s); + + size = strftime(s, 5, "%Y", &tm); + test((size == 4) && !cmp(s, "1974"), "strftime test #20", s); + + size = strftime(s, 4, "%Y", &tm); + test((size == 0), "strftime test #21", s); + + tm.tm_mon = 0; + tm.tm_mday = 1; + size = strftime(s, 10, "%U", &tm); + test((size == 2) && !cmp(s, "00"), "strftime test #22", s); + + size = strftime(s, 10, "%W", &tm); + test((size == 2) && !cmp(s, "00"), "strftime test #23", s); + + // 1/1/1973 was a Sunday and is in CW 1 + tm.tm_year = 73; + size = strftime(s, 10, "%W", &tm); + test((size == 2) && !cmp(s, "01"), "strftime test #24", s); + + // 1/1/1978 was a Monday and is in CW 1 + tm.tm_year = 78; + size = strftime(s, 10, "%U", &tm); + test((size == 2) && !cmp(s, "01"), "strftime test #25", s); + + // 2/1/1999 + tm.tm_year = 99; + tm.tm_yday = 1; + size = strftime(s, 10, "%G (%V)", &tm); + test((size == 9) && !cmp(s, "1998 (53)"), "strftime test #26", s); + + size = strftime(s, 10, "%g", &tm); + test((size == 2) && !cmp(s, "98"), "strftime test #27", s); + + // 30/12/1997 + tm.tm_year = 97; + tm.tm_yday = 363; + size = strftime(s, 10, "%G (%V)", &tm); + test((size == 9) && !cmp(s, "1998 (01)"), "strftime test #28", s); + + size = strftime(s, 10, "%g", &tm); + test((size == 2) && !cmp(s, "98"), "strftime test #29", s); + + // timezones + time_t xmas2002 = 1040786563ll; + time_t summer2002 = 1025528525ll; + localtime_r(&summer2002, &tm); + int ahead = timegm(&tm) >= summer2002; + size = strftime(s, 50, "%z", &tm); + test((size == 5) && strchr(s, ahead ? '+' : '-'), "strftime zone test #1", s); + size = strftime(s, 50, "%Z", &tm); + test(strcmp(s, tzname[tm.tm_isdst]) == 0, "strftime zone test #2", s); + + localtime_r(&xmas2002, &tm); + ahead = timegm(&tm) >= xmas2002; + size = strftime(s, 50, "%z", &tm); + test((size == 5) && strchr(s, ahead ? '+' : '-'), "strftime zone test #3", s); + size = strftime(s, 50, "%Z", &tm); + test(strcmp(s, tzname[tm.tm_isdst]) == 0, "strftime zone test #4", s); + + // AM/PM + tm.tm_sec = 0; + tm.tm_min = 0; + + tm.tm_hour = 0; + size = strftime(s, 10, "%I %p", &tm); + test(!cmp(s, "12 AM"), "strftime test #32", s); + + tm.tm_hour = 12; + size = strftime(s, 10, "%I %p", &tm); + test(!cmp(s, "12 PM"), "strftime test #33", s); + + tm.tm_min = 1; + + tm.tm_hour = 0; + size = strftime(s, 10, "%I %M %p", &tm); + test(!cmp(s, "12 01 AM"), "strftime test #34", s); + + tm.tm_hour = 12; + size = strftime(s, 10, "%I %M %p", &tm); + test(!cmp(s, "12 01 PM"), "strftime test #35", s); + +#ifdef REPORT_RESULT + REPORT_RESULT(0); +#endif +} diff --git a/emtests/test_strftime.out b/emtests/test_strftime.out new file mode 100644 index 000000000..1ff67172a --- /dev/null +++ b/emtests/test_strftime.out @@ -0,0 +1,37 @@ +strftime test #1: 1 +strftime test #2: 1 +strftime test #3: 1 +strftime test #4: 1 +strftime test #5: 1 +strftime test #6: 1 +strftime test #7: 1 +strftime test #8: 1 +strftime test #9: 1 +strftime test #10: 1 +strftime test #11: 1 +strftime test #12: 1 +strftime test #13: 1 +strftime test #14: 1 +strftime test #15: 1 +strftime test #16: 1 +strftime test #17: 1 +strftime test #18: 1 +strftime test #19: 1 +strftime test #20: 1 +strftime test #21: 1 +strftime test #22: 1 +strftime test #23: 1 +strftime test #24: 1 +strftime test #25: 1 +strftime test #26: 1 +strftime test #27: 1 +strftime test #28: 1 +strftime test #29: 1 +strftime zone test #1: 1 +strftime zone test #2: 1 +strftime zone test #3: 1 +strftime zone test #4: 1 +strftime test #32: 1 +strftime test #33: 1 +strftime test #34: 1 +strftime test #35: 1 diff --git a/emtests/test_strftime.wasm b/emtests/test_strftime.wasm new file mode 100644 index 0000000000000000000000000000000000000000..64b28dd4d02695798ad8f781cfa69e538285b923 GIT binary patch literal 52209 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 z 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 +#include +#include + +int main(int argc, char **argv) { + int x = 5, y = 9, magic = 7; // fool compiler with magic + memmove(&x, &y, magic - 7); // 0 should not crash us + + int xx, yy, zz; + char s[32]; + int cc = sscanf("abc_10.b1_xyz9_543_defg", "abc_%d.%2x_xyz9_%3d_%3s", &xx, + &yy, &zz, s); + printf("%d:%d,%d,%d,%s\n", cc, xx, yy, zz, s); + + printf("%d\n", argc); + puts(argv[1]); + puts(argv[2]); + printf("%d\n", atoi(argv[3]) + 2); + const char *foolingthecompiler = "\rabcd"; + printf("%d\n", strlen(foolingthecompiler)); // Tests parsing /0D in llvm - + // should not be a 0 (end string) + // then a D! + printf("%s\n", NULL); // Should print '(null)', not the string at address 0, + // which is a real address for us! + printf("/* a comment */\n"); // Should not break the generated code! + printf("// another\n"); // Should not break the generated code! + + char *strdup_val = strdup("test"); + printf("%s\n", strdup_val); + free(strdup_val); + + { + char *one = "one 1 ONE !"; + char *two = "two 2 TWO ?"; + char three[1024]; + memset(three, '.', 1024); + three[50] = 0; + strncpy(three + argc, one + (argc / 2), argc + 1); + strncpy(three + argc * 3, two + (argc / 3), argc + 2); + printf("waka %s\n", three); + } + + { + char *one = "string number one top notch"; + char *two = "fa la sa ho fi FI FO FUM WHEN WHERE WHY HOW WHO"; + char three[1000]; + strcpy(three, &one[argc * 2]); + char *four = strcat(three, &two[argc * 3]); + printf("cat |%s|\n", three); + printf("returned |%s|\n", four); + } + + return 0; +} diff --git a/emtests/test_strings.out b/emtests/test_strings.out new file mode 100644 index 000000000..ddf9aee7b --- /dev/null +++ b/emtests/test_strings.out @@ -0,0 +1,13 @@ +4:10,177,543,def +4 +wowie +too +76 +5 +(null) +/* a comment */ +// another +test +waka ....e 1 O...wo 2 T................................ +cat |umber one top notchfi FI FO FUM WHEN WHERE WHY HOW WHO| +returned |umber one top notchfi FI FO FUM WHEN WHERE WHY HOW WHO| \ No newline at end of file diff --git a/emtests/test_strings.wasm b/emtests/test_strings.wasm new file mode 100644 index 0000000000000000000000000000000000000000..fbf12fc942e3b91f7676c0dd8f759ade50272bc7 GIT binary patch literal 80245 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:yW1NgF^7a2mF^4M~W|#@GFV?N=61eMjhM5V+w0P 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 literal 0 HcmV?d00001 diff --git a/emtests/test_strndup.c b/emtests/test_strndup.c new file mode 100644 index 000000000..3fcd39c9d --- /dev/null +++ b/emtests/test_strndup.c @@ -0,0 +1,45 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +//--------------- +//- http://pubs.opengroup.org/onlinepubs/9699919799/functions/strndup.html +//--------------- + +#include +#include +#include + +int main(int argc, char** argv) { + const char* source = + "strndup - duplicate a specific number of bytes from a string"; + + char* strdup_val = strndup(source, 0); + printf("1:%s\n", strdup_val); + free(strdup_val); + + strdup_val = strndup(source, 7); + printf("2:%s\n", strdup_val); + free(strdup_val); + + strdup_val = strndup(source, 1000); + printf("3:%s\n", strdup_val); + free(strdup_val); + + strdup_val = strndup(source, 60); + printf("4:%s\n", strdup_val); + free(strdup_val); + + strdup_val = strndup(source, 19); + printf("5:%s\n", strdup_val); + free(strdup_val); + + strdup_val = strndup(source, -1); + printf("6:%s\n", strdup_val); + free(strdup_val); + + return 0; +} diff --git a/emtests/test_strndup.out b/emtests/test_strndup.out new file mode 100644 index 000000000..f86db64e4 --- /dev/null +++ b/emtests/test_strndup.out @@ -0,0 +1,6 @@ +1: +2:strndup +3:strndup - duplicate a specific number of bytes from a string +4:strndup - duplicate a specific number of bytes from a string +5:strndup - duplicate +6:strndup - duplicate a specific number of bytes from a string diff --git a/emtests/test_strndup.wasm b/emtests/test_strndup.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bd7fe6c9bcfa93c9d952628f3bd02db868c06680 GIT binary patch literal 45840 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 z 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 +#include +#include + +static const struct { + const char *input; + const char *format; +} day_tests[] = {{"2000-01-01", "%Y-%m-%d"}, + {"03/03/00", "%D"}, + {"9/9/99", "%x"}, + {"19990502123412", "%Y%m%d%H%M%S"}, + {"2001 20 Mon", "%Y %U %a"}, + {"2006 4 Fri", "%Y %U %a"}, + {"2001 21 Mon", "%Y %W %a"}, + {"2013 29 Wed", "%Y %W %a"}, + {"2000-01-01 08:12:21 AM", "%Y-%m-%d %I:%M:%S %p"}, + {"2000-01-01 08:12:21 PM", "%Y-%m-%d %I:%M:%S %p"}, + {"2001 17 Tue", "%Y %U %a"}, + {"2001 8 Thursday", "%Y %W %a"}, }; + +int main() { + struct tm tm; + + for (int i = 0; i < sizeof(day_tests) / sizeof(day_tests[0]); ++i) { + memset(&tm, '\0', sizeof(tm)); + char *ptr = strptime(day_tests[i].input, day_tests[i].format, &tm); + + printf("%s: %d/%d/%d (%dth DoW, %dth DoY)\n", + (ptr != NULL && *ptr == '\0') ? "OK" : "ERR", tm.tm_mon + 1, + tm.tm_mday, 1900 + tm.tm_year, tm.tm_wday, tm.tm_yday); + } +} diff --git a/emtests/test_strptime_days.out b/emtests/test_strptime_days.out new file mode 100644 index 000000000..dc4090326 --- /dev/null +++ b/emtests/test_strptime_days.out @@ -0,0 +1,12 @@ +OK: 1/1/2000 (6th DoW, 0th DoY) +OK: 3/3/2000 (5th DoW, 62th DoY) +OK: 9/9/1999 (4th DoW, 251th DoY) +OK: 5/2/1999 (0th DoW, 121th DoY) +OK: 5/21/2001 (1th DoW, 140th DoY) +OK: 1/27/2006 (5th DoW, 26th DoY) +OK: 5/21/2001 (1th DoW, 140th DoY) +OK: 7/24/2013 (3th DoW, 204th DoY) +OK: 1/1/2000 (6th DoW, 0th DoY) +OK: 1/1/2000 (6th DoW, 0th DoY) +OK: 5/1/2001 (2th DoW, 120th DoY) +OK: 2/22/2001 (4th DoW, 52th DoY) diff --git a/emtests/test_strptime_days.wasm b/emtests/test_strptime_days.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c8359d48aabcba15a013e36c7cd468ea24389bd7 GIT binary patch literal 46101 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�j2;Qq_VC)Z^%1e0t#gY->em(aBpf)}8a&4lA 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 E2kKHz&;S4c literal 0 HcmV?d00001 diff --git a/emtests/test_strptime_reentrant.c b/emtests/test_strptime_reentrant.c new file mode 100644 index 000000000..729b0799a --- /dev/null +++ b/emtests/test_strptime_reentrant.c @@ -0,0 +1,52 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +int main() { + int result = 0; + struct tm tm; + + memset(&tm, 0xaa, sizeof(tm)); + + /* Test we don't crash on uninitialized struct tm. + Some fields might contain bogus values until everything + needed is initialized, but we shouldn't crash. */ + if (strptime("2007", "%Y", &tm) == NULL || + strptime("12", "%d", &tm) == NULL || strptime("Feb", "%b", &tm) == NULL || + strptime("13", "%M", &tm) == NULL || strptime("21", "%S", &tm) == NULL || + strptime("16", "%H", &tm) == NULL) { + printf("ERR: returned NULL"); + exit(EXIT_FAILURE); + } + + if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 || + tm.tm_mday != 12 || tm.tm_mon != 1 || tm.tm_year != 107 || + tm.tm_wday != 1 || tm.tm_yday != 42) { + printf("ERR: unexpected tm content (1) - %d/%d/%d %d:%d:%d", tm.tm_mon + 1, + tm.tm_mday, tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec); + exit(EXIT_FAILURE); + } + + if (strptime("8", "%d", &tm) == NULL) { + printf("ERR: strptime failed"); + exit(EXIT_FAILURE); + } + + if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 || + tm.tm_mday != 8 || tm.tm_mon != 1 || tm.tm_year != 107 || + tm.tm_wday != 4 || tm.tm_yday != 38) { + printf("ERR: unexpected tm content (2) - %d/%d/%d %d:%d:%d", tm.tm_mon + 1, + tm.tm_mday, tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec); + exit(EXIT_FAILURE); + } + + printf("OK"); +} diff --git a/emtests/test_strptime_reentrant.out b/emtests/test_strptime_reentrant.out new file mode 100644 index 000000000..a0aba9318 --- /dev/null +++ b/emtests/test_strptime_reentrant.out @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/emtests/test_strptime_reentrant.wasm b/emtests/test_strptime_reentrant.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6bcaba009253daec9287a02c161e73492272fe16 GIT binary patch literal 46711 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 literal 0 HcmV?d00001 diff --git a/emtests/test_strptime_tm.c b/emtests/test_strptime_tm.c new file mode 100644 index 000000000..b6d17cb73 --- /dev/null +++ b/emtests/test_strptime_tm.c @@ -0,0 +1,65 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +void ReadMonth(const char *month) +{ + tm value = {0}; + if(strptime(month, "%b", &value)) + { + printf("%s: %d\n", month, value.tm_mon); + } +} + +int main() { + struct tm tm; + char *ptr = strptime("17410105012000", "%H%M%S%d%m%Y", &tm); + + printf( + "%s: %s, %d/%d/%d %d:%d:%d", (ptr != NULL && *ptr == '\0') ? "OK" : "ERR", + tm.tm_wday == 0 + ? "Sun" + : (tm.tm_wday == 1 + ? "Mon" + : (tm.tm_wday == 2 + ? "Tue" + : (tm.tm_wday == 3 + ? "Wed" + : (tm.tm_wday == 4 + ? "Thu" + : (tm.tm_wday == 5 + ? "Fri" + : (tm.tm_wday == 6 ? "Sat" + : "ERR")))))), + tm.tm_mon + 1, tm.tm_mday, tm.tm_year + 1900, tm.tm_hour, tm.tm_min, + tm.tm_sec); + + printf("\n"); + + ReadMonth("jan"); + ReadMonth("january"); + ReadMonth("feb"); + ReadMonth("february"); + ReadMonth("march"); + ReadMonth("mar"); + ReadMonth("april"); + ReadMonth("may"); + ReadMonth("may"); + ReadMonth("june"); + ReadMonth("jul"); + ReadMonth("august"); + ReadMonth("september"); + ReadMonth("oct"); + ReadMonth("nov"); + ReadMonth("november"); + ReadMonth("december"); + + return 0; +} diff --git a/emtests/test_strptime_tm.out b/emtests/test_strptime_tm.out new file mode 100644 index 000000000..c241cbddc --- /dev/null +++ b/emtests/test_strptime_tm.out @@ -0,0 +1,18 @@ +OK: Wed, 1/5/2000 17:41:1 +jan: 0 +january: 0 +feb: 1 +february: 1 +march: 2 +mar: 2 +april: 3 +may: 4 +may: 4 +june: 5 +jul: 6 +august: 7 +september: 8 +oct: 9 +nov: 10 +november: 10 +december: 11 diff --git a/emtests/test_strstr.c b/emtests/test_strstr.c new file mode 100644 index 000000000..51de30317 --- /dev/null +++ b/emtests/test_strstr.c @@ -0,0 +1,39 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + printf("%d\n", !!strstr("\\n", "\\n")); + printf("%d\n", !!strstr("cheezy", "ez")); + printf("%d\n", !!strstr("cheeezy", "ez")); + printf("%d\n", !!strstr("cheeeeeeeeeezy", "ez")); + printf("%d\n", !!strstr("cheeeeeeeeee1zy", "ez")); + printf("%d\n", !!strstr("che1ezy", "ez")); + printf("%d\n", !!strstr("che1ezy", "che")); + printf("%d\n", !!strstr("ce1ezy", "che")); + printf("%d\n", !!strstr("ce1ezy", "ezy")); + printf("%d\n", !!strstr("ce1ezyt", "ezy")); + printf("%d\n", !!strstr("ce1ez1y", "ezy")); + printf("%d\n", !!strstr("cheezy", "a")); + printf("%d\n", !!strstr("cheezy", "b")); + printf("%d\n", !!strstr("cheezy", "c")); + printf("%d\n", !!strstr("cheezy", "d")); + printf("%d\n", !!strstr("cheezy", "g")); + printf("%d\n", !!strstr("cheezy", "h")); + printf("%d\n", !!strstr("cheezy", "i")); + printf("%d\n", !!strstr("cheezy", "e")); + printf("%d\n", !!strstr("cheezy", "x")); + printf("%d\n", !!strstr("cheezy", "y")); + printf("%d\n", !!strstr("cheezy", "z")); + printf("%d\n", !!strstr("cheezy", "_")); + + const char *str = "a big string"; + printf("%d\n", strstr(str, "big") - str); + return 0; +} diff --git a/emtests/test_strstr.out b/emtests/test_strstr.out new file mode 100644 index 000000000..aa0d917bf --- /dev/null +++ b/emtests/test_strstr.out @@ -0,0 +1,24 @@ +1 +1 +1 +1 +0 +1 +1 +0 +1 +1 +0 +0 +0 +1 +0 +0 +1 +0 +1 +0 +1 +1 +0 +2 diff --git a/emtests/test_strstr.wasm b/emtests/test_strstr.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7764d03adb24eb8d23fe77f87d155fc22650555e GIT binary patch literal 51350 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 +#include + +int main() { + char* endptr; + printf("\n"); + printf("%g\n", strtod("0", &endptr)); + printf("%g\n", strtod("0.", &endptr)); + printf("%g\n", strtod("0.0", &endptr)); + printf("%g\n", strtod("-0.0", &endptr)); + printf("%g\n", strtod("1", &endptr)); + printf("%g\n", strtod("1.", &endptr)); + printf("%g\n", strtod("1.0", &endptr)); + printf("%g\n", strtod("z1.0", &endptr)); + printf("%g\n", strtod("0.5", &endptr)); + printf("%g\n", strtod(".5", &endptr)); + printf("%g\n", strtod(".a5", &endptr)); + printf("%g\n", strtod("123", &endptr)); + printf("%g\n", strtod("123.456", &endptr)); + printf("%g\n", strtod("-123.456", &endptr)); + printf("%g\n", strtod("1234567891234567890", &endptr)); + printf("%g\n", strtod("1234567891234567890e+50", &endptr)); + printf("%g\n", strtod("84e+220", &endptr)); + printf("%g\n", strtod("123e-50", &endptr)); + printf("%g\n", strtod("123e-250", &endptr)); + printf("%g\n", strtod("123e-450", &endptr)); + printf("%g\n", strtod("0x6", &endptr)); + printf("%g\n", strtod("-0x0p+0", &endptr)); + char str[] = " 12.34e56end"; + printf("%g\n", strtod(str, &endptr)); + printf("%d\n", endptr - str); + printf("%g\n", strtod("84e+420", &endptr)); + printf("%.12f\n", strtod("1.2345678900000000e+08", NULL)); + return 0; +} diff --git a/emtests/test_strtod.out b/emtests/test_strtod.out new file mode 100644 index 000000000..f80511c3d --- /dev/null +++ b/emtests/test_strtod.out @@ -0,0 +1,26 @@ +0 +0 +0 +-0 +1 +1 +1 +0 +0.5 +0.5 +0 +123 +123.456 +-123.456 +1.23457e+18 +1.23457e+68 +8.4e+221 +1.23e-48 +1.23e-248 +0 +6 +-0 +1.234e+57 +10 +inf +123456789.000000000000 diff --git a/emtests/test_strtod.wasm b/emtests/test_strtod.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7fd3757e9218bed35f014238a7ed80ea4796f3b2 GIT binary patch literal 60714 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

bLa#LA)~2?pD!3V?Zboe? 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 KMaiOI+W!IrmMu;I literal 0 HcmV?d00001 diff --git a/emtests/test_strtok.c b/emtests/test_strtok.c new file mode 100644 index 000000000..130a476d5 --- /dev/null +++ b/emtests/test_strtok.c @@ -0,0 +1,27 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + char test[80], blah[80]; + const char *sep = "\\/:;=-"; + char *word, *phrase, *brkt, *brkb; + + strcpy(test, "This;is.a:test:of=the/string\\tokenizer-function."); + + for (word = strtok_r(test, sep, &brkt); word; + word = strtok_r(NULL, sep, &brkt)) { + strcpy(blah, "blah:blat:blab:blag"); + for (phrase = strtok_r(blah, sep, &brkb); phrase; + phrase = strtok_r(NULL, sep, &brkb)) { + printf("at %s:%s\n", word, phrase); + } + } + return 0; +} diff --git a/emtests/test_strtok.out b/emtests/test_strtok.out new file mode 100644 index 000000000..1e63af4b2 --- /dev/null +++ b/emtests/test_strtok.out @@ -0,0 +1,32 @@ +at This:blah +at This:blat +at This:blab +at This:blag +at is.a:blah +at is.a:blat +at is.a:blab +at is.a:blag +at test:blah +at test:blat +at test:blab +at test:blag +at of:blah +at of:blat +at of:blab +at of:blag +at the:blah +at the:blat +at the:blab +at the:blag +at string:blah +at string:blat +at string:blab +at string:blag +at tokenizer:blah +at tokenizer:blat +at tokenizer:blab +at tokenizer:blag +at function.:blah +at function.:blat +at function.:blab +at function.:blag diff --git a/emtests/test_strtok.wasm b/emtests/test_strtok.wasm new file mode 100644 index 0000000000000000000000000000000000000000..45bf18d04d567d27f3b5dd2c55a36119ee84be49 GIT binary patch literal 48234 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

NS2+@-wQzBYMTZ<;yJn!yKC+Juc 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 +#include + +int main() { + const char *STRING = "1 -101 +1011"; + char *end_char; + + // defined base + long l4 = strtol(STRING, &end_char, 2); + long l5 = strtol(end_char, &end_char, 2); + long l6 = strtol(end_char, NULL, 2); + + printf("%d%d%d\n", l4 == 1, l5 == -5, l6 == 11); + return 0; +} diff --git a/emtests/test_strtol_bin.out b/emtests/test_strtol_bin.out new file mode 100644 index 000000000..9d07aa0df --- /dev/null +++ b/emtests/test_strtol_bin.out @@ -0,0 +1 @@ +111 \ No newline at end of file diff --git a/emtests/test_strtol_bin.wasm b/emtests/test_strtol_bin.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f3889969c9b4df3db939a264d4fa277bbf65cb95 GIT binary patch literal 50317 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 +#include + +int main() { + const char *STRING = "4 -38 +4711"; + char *end_char; + + // undefined base + long l1 = strtol(STRING, &end_char, 0); + long l2 = strtol(end_char, &end_char, 0); + long l3 = strtol(end_char, NULL, 0); + + // defined base + long l4 = strtol(STRING, &end_char, 10); + long l5 = strtol(end_char, &end_char, 10); + long l6 = strtol(end_char, NULL, 10); + + printf("%d%d%d%d%d%d\n", l1 == 4, l2 == -38, l3 == 4711, l4 == 4, l5 == -38, + l6 == 4711); + return 0; +} diff --git a/emtests/test_strtol_dec.out b/emtests/test_strtol_dec.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtol_dec.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtol_dec.wasm b/emtests/test_strtol_dec.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2532eb3c9ce4d80c464ae5ea835e91d41999c342 GIT binary patch literal 50482 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 +#include + +int main() { + const char *STRING = "0x4 -0x3A +0xDEAD"; + char *end_char; + + // undefined base + long l1 = strtol(STRING, &end_char, 0); + long l2 = strtol(end_char, &end_char, 0); + long l3 = strtol(end_char, NULL, 0); + + // defined base + long l4 = strtol(STRING, &end_char, 16); + long l5 = strtol(end_char, &end_char, 16); + long l6 = strtol(end_char, NULL, 16); + + printf("%d%d%d%d%d%d\n", l1 == 0x4, l2 == -0x3a, l3 == 0xdead, l4 == 0x4, + l5 == -0x3a, l6 == 0xdead); + return 0; +} diff --git a/emtests/test_strtol_hex.out b/emtests/test_strtol_hex.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtol_hex.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtol_hex.wasm b/emtests/test_strtol_hex.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2cc341554bcf8329433b4f538fcc07a0d58105a7 GIT binary patch literal 50490 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 +#include + +int main() { + const char *STRING = "0 -035 +04711"; + char *end_char; + + // undefined base + long l1 = strtol(STRING, &end_char, 0); + long l2 = strtol(end_char, &end_char, 0); + long l3 = strtol(end_char, NULL, 0); + + // defined base + long l4 = strtol(STRING, &end_char, 8); + long l5 = strtol(end_char, &end_char, 8); + long l6 = strtol(end_char, NULL, 8); + + printf("%d%d%d%d%d%d\n", l1 == 0, l2 == -29, l3 == 2505, l4 == 0, l5 == -29, + l6 == 2505); + return 0; +} diff --git a/emtests/test_strtol_oct.out b/emtests/test_strtol_oct.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtol_oct.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtol_oct.wasm b/emtests/test_strtol_oct.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9beabeecf3edad0ac2cdd5bffbfa5083b8b43a75 GIT binary patch literal 50484 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 KI +#include + +int main() { + char* endptr; + printf("\n"); + printf("%Lg\n", strtold("0", &endptr)); + printf("%Lg\n", strtold("0.", &endptr)); + printf("%Lg\n", strtold("0.0", &endptr)); + printf("%Lg\n", strtold("-0.0", &endptr)); + printf("%Lg\n", strtold("1", &endptr)); + printf("%Lg\n", strtold("1.", &endptr)); + printf("%Lg\n", strtold("1.0", &endptr)); + printf("%Lg\n", strtold("z1.0", &endptr)); + printf("%Lg\n", strtold("0.5", &endptr)); + printf("%Lg\n", strtold(".5", &endptr)); + printf("%Lg\n", strtold(".a5", &endptr)); + printf("%Lg\n", strtold("123", &endptr)); + printf("%Lg\n", strtold("123.456", &endptr)); + printf("%Lg\n", strtold("-123.456", &endptr)); + printf("%Lg\n", strtold("1234567891234567890", &endptr)); + printf("%Lg\n", strtold("1234567891234567890e+50", &endptr)); + printf("%Lg\n", strtold("84e+220", &endptr)); + printf("%Lg\n", strtold("123e-50", &endptr)); + printf("%Lg\n", strtold("123e-250", &endptr)); + printf("%Lg\n", strtold("123e-450", &endptr)); + printf("%Lg\n", strtold("0x6", &endptr)); + printf("%Lg\n", strtold("-0x0p+0", &endptr)); + char str[] = " 12.34e56end"; + printf("%Lg\n", strtold(str, &endptr)); + printf("%d\n", endptr - str); + printf("%Lg\n", strtold("84e+420", &endptr)); + printf("%.12Lf\n", strtold("1.2345678900000000e+08", NULL)); + return 0; +} diff --git a/emtests/test_strtold.out b/emtests/test_strtold.out new file mode 100644 index 000000000..33d40d5d1 --- /dev/null +++ b/emtests/test_strtold.out @@ -0,0 +1,26 @@ +0 +0 +0 +-0 +1 +1 +1 +0 +0.5 +0.5 +0 +123 +123.456 +-123.456 +1.23457e+18 +1.23457e+68 +8.4e+221 +1.23e-48 +1.23e-248 +1.23e-448 +6 +-0 +1.234e+57 +10 +8.4e+421 +123456789.000000000000 diff --git a/emtests/test_strtold.wasm b/emtests/test_strtold.wasm new file mode 100644 index 0000000000000000000000000000000000000000..78640890e85c7cc754d1335df8469551802fd420 GIT binary patch literal 60716 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 T4i+w65OlS61&fo#!Sw$H-;^!7 literal 0 HcmV?d00001 diff --git a/emtests/test_strtoll_bin.c b/emtests/test_strtoll_bin.c new file mode 100644 index 000000000..66ebe2539 --- /dev/null +++ b/emtests/test_strtoll_bin.c @@ -0,0 +1,22 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + const char *STRING = "1 -101 +1011"; + char *end_char; + + // defined base + long long int l4 = strtoll(STRING, &end_char, 2); + long long int l5 = strtoll(end_char, &end_char, 2); + long long int l6 = strtoll(end_char, NULL, 2); + + printf("%d%d%d\n", l4 == 1, l5 == -5, l6 == 11); + return 0; +} diff --git a/emtests/test_strtoll_bin.out b/emtests/test_strtoll_bin.out new file mode 100644 index 000000000..9d07aa0df --- /dev/null +++ b/emtests/test_strtoll_bin.out @@ -0,0 +1 @@ +111 \ No newline at end of file diff --git a/emtests/test_strtoll_bin.wasm b/emtests/test_strtoll_bin.wasm new file mode 100644 index 0000000000000000000000000000000000000000..305f849d3176f36506d7ae5bcf7272422317c130 GIT binary patch literal 50329 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 a_AKt( +#include + +int main() { + const char *STRING = "4 -38 +4711"; + char *end_char; + + // undefined base + long long int l1 = strtoll(STRING, &end_char, 0); + long long int l2 = strtoll(end_char, &end_char, 0); + long long int l3 = strtoll(end_char, NULL, 0); + + // defined base + long long int l4 = strtoll(STRING, &end_char, 10); + long long int l5 = strtoll(end_char, &end_char, 10); + long long int l6 = strtoll(end_char, NULL, 10); + + printf("%d%d%d%d%d%d\n", l1 == 4, l2 == -38, l3 == 4711, l4 == 4, l5 == -38, + l6 == 4711); + return 0; +} diff --git a/emtests/test_strtoll_dec.out b/emtests/test_strtoll_dec.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtoll_dec.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtoll_dec.wasm b/emtests/test_strtoll_dec.wasm new file mode 100644 index 0000000000000000000000000000000000000000..ef8d5d020d9fed7d033ae4534e19c626f5a7f872 GIT binary patch literal 50495 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 literal 0 HcmV?d00001 diff --git a/emtests/test_strtoll_hex.c b/emtests/test_strtoll_hex.c new file mode 100644 index 000000000..0b5448bc1 --- /dev/null +++ b/emtests/test_strtoll_hex.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + const char *STRING = "0x4 -0x3A +0xDEADBEEF"; + char *end_char; + + // undefined base + long long int l1 = strtoll(STRING, &end_char, 0); + long long int l2 = strtoll(end_char, &end_char, 0); + long long int l3 = strtoll(end_char, NULL, 0); + + // defined base + long long int l4 = strtoll(STRING, &end_char, 16); + long long int l5 = strtoll(end_char, &end_char, 16); + long long int l6 = strtoll(end_char, NULL, 16); + + printf("%d%d%d%d%d%d\n", l1 == 0x4, l2 == -0x3a, l3 == 0xdeadbeef, l4 == 0x4, + l5 == -0x3a, l6 == 0xdeadbeef); + return 0; +} diff --git a/emtests/test_strtoll_hex.out b/emtests/test_strtoll_hex.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtoll_hex.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtoll_hex.wasm b/emtests/test_strtoll_hex.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2fc8d6f133e6fa8de5006b239d6e09b679be829c GIT binary patch literal 50511 zcma%^37l2MvH$Nm=bn2na|dPsS;U2EL zp9_g#Ri_>_WlGCIQ}^9#zy0!%-aSI z;J$lLnX<`d8yAX>dC#yd^03BLVViH32US-E)e`k0WaI($x_EB`cu@W|6e_)UtB$Hii~xu`6~zEPpHZ{O+BI&qahiT)Jz zC*@C8_}4!NN9&ZT{3-uygeN{Y+7TZ2f7QQ7JIK@hTYeyF?n`S-?&z3$fEZx!&ixLU zS{PE^>kogJa?pYQRT!P_^@onhlM4fy_L?$f+Wvd(bKsx%{?lIjZTh3a_;j!R_ug-6 zp?{g*DP%3IhR++XFu{FrP+?-a*Ma+Vv=x5V@cX~Qxl^Wy3wLQ;^}*+^{U;wN>g{*n ze>wmD@=ts3JGs!eLjFDet7Gz?3;i01-?uIEQu;Ld$1lipK*!`lb1(n=<=)dK7n*uC zM}>8wYQxV5?zY>Sg9q)l+inf#z8mi_GK!|J(-5L{8m!PdykVV&tf@8oQ@ecYRCg_o zwL)`JwWz6@7S?HKs+I~?7~W8A@E?nYSF8OB>ojJC7Ns2CNJ#H$b!8l{HND>9**!E^gF>pdepuJm9rw`>SAWra_t0pK3hixU!g{uza`v%4 z3Td(p!blsboXys(kiNEI7-ggCIr~{Zh4!}r)@zHnU<0yZYZzz)t(t#TTEie4WWDpR z#?~;{23u49)!Z6Zx7Dq0{a?;SE`#sru^F=$?w2^_~h1 z(CqD+)4y5dzo!y@XNByGXneRoipSdhky9p`f*`6q8NqhJY`wti*{FnXLPk~Dq^*zuI z%%TIsA$AC9Tf>o&9T{a&XE-U!z8-1(jXPVz*^!+cWl-Rv$S#Tm{i?{W@{r|`E%%TI zBEy{>wS=c5dm6+uf$9veM)qoyO+PSv5DB3VDD&$G9PR4}0;OciAm(AQ;m%eNB@l?G zDpZoraBOVH##z!4PLEY6&2nCBxYJ{$29sms)^KTTm&S^_A+{T0p?Ftpcg0!M5gt{D zJ?g2KM{x5!mEjHQIoUH#sTX2sXD`GP!&|Yv73ZXZPM^m1X`E9E+H{5=;w*O0Y#7{T zCvD-xgdaN*)XqxmhuF@7$QLQ{A|kI!__3=9TAtYQB%9tE?oaIgBx{@&o=WVgBx`OD zuPDS`q2b<7?ENI8xxPy5t0b$mheL~odj;sn6p7sxH1)Q@K?NXOKP{I;*I-KyDt^tpG@sZ4_T4g z3J-ZNHQX&}OZY0auTtlY3!&(tB|Eev-Z;jY^_UWTT@r7cR#MZRRtis+l~o*aZpm=B zq>7-Z_uTV_QdET&d~!+2a7UzV;X3_@W9}#k6}aNzlHu-fu;6zD)p@RD*OkN{ZM3!*%yU8+&QZrZvutP5qdLRlvZ%vf zQRfPR2=5Fxm+i^2-CS-D_m=HmM$(qBqHHV5aGQsBg!js-`FmwmkZe$NSAH4ib`8Ht zYaw5j?MokdXH;xPg}5)v;Wt(Ljh*1x8bqi$6~pBLCper_D~4+jU;;?8uwu9?lt-N) zuOAhH4ob8l?b%75@Omz-*wTuyzNBK8RKWU(H1tYg^`(`z@Sps(|7;I?*;UWN2%YvP>zEb}vQ9gw zHB8I8*0*Wi7Js%si#`8he^F!q)&8ol|F-|uaQZj=_LorN|FRt%D#=*J;1a`h z_`CgGiKp9ik)SKGE{)8kjG=x;WHWpKJT$UHk#kzYVUZn1bYq+n5N1Wy)TZmlX8GVX zGqRbU;qb@~k5u>(k;%chvm?V*#)qRKJ1Qzp=PR{JH7u{>pR@QZSHo=;V1egt6%bus z36;jES~VCGwmv#CTzO)c6WJVLS{L&1T4bkry-ttp^gJ4h%!_QEN1qYd86G`9viU?KG;G(Hqy#ck&x^u(RR1*j zPnF+>GqbN3)^*Yj6aCJle>kACB0I|gEr@J^${8lgpA*?R9=$NKg&uuwWakns@-B>! z56+3g2+BB1{xjvbbtq#*Sl5ZNZdMRW4-4B#+@MpP5ZMV1@WjYY^ttEc$Z&Ig?wRY8 z+9{FYPOOE5?I7;4UiNvS(Rq<3g>trLYdAl$^Bvd)k@$?i>hy~uTjZgOA*?NCO1v<# z3sogzwi7zriBB%A*roKOEFxcLxHz(leV$wrsW&Zwp_fM46C-V@&}dAkA~-;iOCr0( zpUjzqQ}?DDU#fE*Ievs^{?8X`h z;%|x!cY}i<9uPN2hI0@gR>_*jhg%}MMdYeDN8cLRtq1}g;Wlcku6uiAxZ85PiE9ma zM0SUFt~(>U(~G|=vbzvuI>OxwvAdNxmytTcJvBJ@Muxk`;UHdig!|NYRKkOi;qLPo zdJ}B(P-M7@8ZVy*9**o`RjW1+JQCIBfkz{I)Fr6LT!P}SSmJSl2=5F}M235VneNHR zo^%2|71>j&t%rAnXIwgZ#>*xfW&hkBkC3&09)6wTQ^>QCJ?qtcF0$to_iPk?UA14^ zBc3f*4}U%~TpsX<=XwDgBXc>30Ft~I8SZiA@p(Yi(=>3jhvfa`rO00DAvB4Gp;r}d z^xqV*^p@!p!^@GqOdYc6ObWTAx+1a_KDxakF4pMzT4b+zgp6ad0-V(?{SSuxIwsPf4Mzyyidt0GH6-vUcfBd91yc5|w^o?oZ-N@dh zs_o%DL9zEB`1_H)PqGz5Tf>Kuedx(PitHoWxjlRw8SXur{u3qRqceOO*{5XaYHAIi zMfRCz_&l=DX~_2QMP#J>f(&0qSs(in%)e54f;z)Dk$n?oP1C}+krDbWjQL$;-#IsY z@1AmN_#vV)_5;(_KO*}FaqVGcWVr7E+7(+@9M-B)L;(fJHvd6wE58e%$OfL6SU4^br8eZ;tI|(d8#$oQ(}FDV`ni>}=!fY?L?0t*+eI zG3;PFhn;L# z+kHxWdxgr}S_v)UGd_0E$4(>)6LJQ#ajN_3W8J0eZ?IYzS zCX?upsgW;os;1E*uHl?NT&FI#D@FMGY}7mm9gPezbe!Lk*>tL63zHC5}T2z%7>!8NLJA> zQ>w!f!_7!U7g7OeW@0!eloMOSZj0o>SqY6WO8{D&;}1{l@I(^f5eX&I-;YcTcZ9~yq5^Aelq#5yCfGnC)MJHmYBvH4yy`C-;y+Nnth_RH|A6rV!QOzcdrkm>BL<71hWP){-HQotxOXj@EgJod;T3 zAq-84%Ehts6FXmlLlsCm7soD0>;kk~Oiqa{a#hx10kOr@_u|AZCYi*sC5bKZWJ?oU zN?WyuOA^B^ra>-MGCn%Pvc#5=LE_kDiCyLyE>G-o2-+U5NQ{(Mkm1S%aqLReZdWTk zL7m~6#I8vsj$NA=q1VC{*ClqHx61YIK^(h*Rha!0-c2{C|(9(A%cBhl{ z?!@j^OM5u$l0^Of9&c$cs0N*`ac^R{TWaj5wz@AdT+ilwATgYWsP%4fhIlZs2OX`4 z5_`x)9!~6GS0O(_Vrt(K9#!{xRERv7gw<0UDjD)IYA0FX@dO$2aR~cFVvi-c4EaP- z4Nr=2PeSIW6MH&A8&2LKKFAN2?DkS(Ll`dXrJV6!PV8kb{kg=R^SZA{Yz0L!WZPi% zlV?1Fp7v~F&wA456MNnfeIYR%h`yNEi$e1`&}=NG_KeEqV~Ee8l(32((CpR3a6@WD zgk-NJhU-bP*Av6#B-65Zb#;q35_`iDcr&p#QP;MHw-UqU8Hw!);qAn5Z}w=IcM`*` zzN+osP3+yA5h%fDr1uhgFA3d>XpKUwscJuxHtVYC4-&)m8XrDP?88KA2Yt4MkCNK5 z^W((uH%$zmB=(6&LqMfuFO^twNzT@<=f7lC+HdMVhZTvp!-}fw+n#V{(QuGq zR*?{!r6>}p_JFc68B> zE^2n0Q?xnYlPw#Qb(zpuQukarCY!E+YiqwZj>#!EC;zqIg=33$Y>|Dva9q)jD`wAJ z^yEe9fnjcuGHkBbsmsDi#T4Kw^B49DzN*$s8+FH1$!sHLqN1Htv=hMnMDW4i7EUhO ziA6h^G4+(9;h@^7MLV@9g+-xfRc1Tbc}1J&RXL+*XLzD651(H&+$lglvuL>a#a+T# z?wePf7|t#lA7`_va8<>wl1S4NbTymfFcuVTf$vnDQ?zrukcCCYn}woS-d^Vx?OcyI zUlHdkqASvBHk&&pq&}wjHo^r(!<|dXi;A{LXqqec7Z+`DQPjE66I=+o7ZnYsq!$a^6!koXB}^(e5p3@>^LR zAMPvKePqnBxL+~NKMM~O&9Qy3X!m)vA6D%Ibg5fOIDju#bJ8nR1P3|lK=n{2kis%YNBR*VzSi-l=d#LAQ{*Pn%DMO)?| zFDu$*suRglg2LrRxKcE_qG(r;0%c#(aF4eYm0VG(XJ)c zbw$HnPS_1aySkXq1UInvcw^CUVv;*S#S6KKO{R+7M9|IdgZ*xir%t%#MdN!pP_JMg zLY$NH;jKlx)iJrPXt#L-lm8}|?)IYLyOs95qiB5G0n=Suv1@at+p008b?>Y|fV+x@ zTLy{mF52B9>YWwH2?e^znUVr(68^8$tdVnePEOmVEj(Vdt+VMng(r%(O&$3si-vmw zMQW ziiUd{!ab`Ncp7RySF~q~_8i5%P_!4idGE!dz33GBXP}G?FNh0YD%wlV2rn1yWs%`= zLWhVQw2T7MHmvB1wnDtN3Z)__)%)$MMSGQg+Yw$X(v$5q9}u?+Kh2KI`(~l;h4k>? zaUvRAP^Z%CMSET4o+51CpfdctRWy8%^X;O&<(_wnhW{P0SA{r2$A@=|hPw`8-drId zyr*2@{i5M{AA)?KVQ(bryrSX#5T5v`Xdl6le5Ur(YPhRnH>1xzFx(=TYKM=NKp~e` z4FBboj__&GaJS&QzGByVliejwp{N?C(7jZ#2h{;!sv|X4POE#)8--sX3+kRFqwp(aaouy}DEtapR`=XE3co_G zt$Xemgz)Tj;aA8#bQSQuaK|no|&WZE2OLLnKK%{LT1-JCymChkhyiw{L%Ooa$4PU-e~*^Sy1;Z z8I4~di|d{%N8?w>vbyKS(fAc|ZQXOnX#5IUUiUmO8oxsBse7Injb9;;)IBeZ#;=fP z>Ymp}<5$Rvy664T_!aVY-Shcq{0jNF?)iQ+euaEp^VrX_->~e5HC;9<+R9?+O06r+ z*vy`h+6?9*R`~oS3~?;A!#rvx+n;GZOUz8GVO9!n&tik}@YDb{i=;=U63-6TPQFCA zBYjJsK;*QeQo<#T9i1BPD398OjO=fxHpiomN$r?4bI!ijyWp{D_WnpaR%u;yXm-(| zS+m}8DMmkJo}1cSpPi3Sjj-dv=L8{kLfR5eO6{bSuEwS%vo7nBW>xs))K2ysr=)g@ zSM^j@-K3Ky@02t&=Yj$Q#XKJYy_nNf91DljQ#;)=&r59{(notZgPl=_GC#HXKoJ&S zF~OZFEWTp&I6F1mnQ42tp<*}C^+8f2&H}bkQ(I6Ymg;m)YB-`63WRVymo<1A&P(k) zZ-MhuJKxK?K#g-A6kn9uB9B^}+6A@7Sxnk)f8V_SmLd7ajigG;!Qvx zt+O<>i@gahNe#EuqX4iF0GFnAsmCot?)azXxy+mAG9_*-YK@bRewVA}m#5>y6<9fl z{`H}bU@CW&H|0ogN*^t+P7QYz4R%dx*C@lndV`G=5w1<`TBrGSsa@yQzdp6=YYlc? z8b)?E*g|ixk!q+LQoF%3-I&^q-cUECc9ZA6IklVBQ279CBgIC`Q(NxIZ%qvcnzt#$ zZgWa_N4Xt6ZyN4M?G7jSohXJK++AvmJD~5~som{S_aKne+TtGC;$G3?UMP9LYN;AM zfc%$+2UB~{(?68jLk{X;fqD>7kEHg9M?IR_!!=Nk0_rhAu*ZP)I6H@Fcp|m?)9_Sk zc%CBP)B4sz>6z5e3c{MehK);sSYXY1bX1$J%HwXNN7M=En z17=~H111o_Z`J|7l^X6%FO&Mb0X}b|FqTgoheqUaN8p{*-to43H??=M5^4|cr}jRu zTEYjZeW0c$m~E~P^Z04uBlk$P_pz$}v629bmiYuTDTno`@E0R}mfB|?@_A~wPpQ-w zsePeJvFV7-)7Pneol4*PP2E!O+thI1(Br>TkbRfqtIUGI>Dru;gQ8Jt;d{~JZ99GI}fZA$y$!5Fp(~%`R($gMQvZJuV zYzaq~>}VyN?ZI60pHq#-_D%q@(D0z6va5LP-X+}xycLauFiiJT458EU0 zt@N&Sa>-8i!kuf-_nlI*QykisF9)+J@vh!6Njk=%%uUt?v+)8IE7#HY^O18+MFD}_) zZ-5I+c3}yW$wB-@CBrRtQV|b~i%W)66{}>`V6miROB}}1k}Y)@mzM0(8XdP6p36#x zTk23q0hG&1hI1&QwS7pxy}ZPak0@7^?DA4TpIZuj)v$PQT24M}p3<9HYdNEvM0LE!nMJ>D#c(QhpEb2)DaQ zB)PX_xSLg!2E4u*3jF&@cAuklzc}-L5Tol3gaTTrl_!P=O7?&PhlYX5Lt0njKUlH{ zv3;8s9xB;G;Mg7>5g>bnIzL*nM@c3n{$nM3%#%G1N5TZ{;fa#r9w~K%CzXtk&hS*p zo+5*k_)nMYY0vNsb%Chu;aQ9{OZF@oo-d)qf4U=4d$A-X{!1kz^rcd3 zc)4URd&{hF4@&%3XgPbOG%dVZvR8>}53iLBw*r{2m+bXY7?>;Z2YMsEH(VW=EC{w_1&e zknE_k;kuL19gZ#=E+?6^`Tf;L=9F!YBXCUFj&ak+W6OriGZNbq!f|E89V5e7!qqTy z%Z8IJzXHJH__7^Ol?k8(WF(4MP_YG-(5=pg)zDiOoqDbSJh5yz3HK+J?Ialw8;TW{ z7G*oxQ9H#GoB}7GS~i@Lo>sQgL{aH2UARBJY^Qtbd1aed4n?2#PAzAE6&sE~}Wvvpg_q0@l+&7f%hH|!s+W5jUZ8s_|Y?=Ej zt$fnNdC32%dpT_k8I}E_a=5AN4S$nEzOigKQcXn>0IS?mHr%NYb$QvAi~Da>mXyZy z_Jp)w6;nu6{u+nr@idUq+r?($;paKhZ}jY!q* zDI4zYT4n8ydK#v?`^tR!e0P7@?iVWek+(BE;P&hM)qMA$jM7!uL&TAwGdx_jhsyRa z-1SJ=9`ROvv}}(mzlV2($J~(pF)xbz)Ot62u*^Z6-NGKMVLasVvOVsVc&cnqDem!d z*rRHDP*oADkGkH|Wy9qG`TF)5dTZJGC>ffsQN!6Mlegg)&J0X;Cpip{KO@|cC?dxh$^gu^RLbB9;J!=>j=0J|>2^_}|qQ`-#Cc0x( zFdx11K2Is#B!O(FR1D|m%yO!ohRI@&B=o1#D~8LdhD^_yHv;EXY@TCqM#avksCUe- z7%qoRYrI9T}{5!Kc`|ic5}|H*tx2bzS_ch z6^+d2x%qIurFVYCaA+1TsA%-QzzZT7gZ82dpK9I36~is^C|5dMs7#8vsA9MaJ%$kQ zy|`i*|I-xPJR~f^N}hUxAU%B5?EB>!(c)NV?68O=rbP!9i({LreEbD*AgZaIo{0!J z7^47LC5y*$>tJ{cGhWV4e1m1(%vc7)^e;DW6|8wO2b&jD^EsYrZ6!d3z(GPqZ)TgR zC?>hJ+puW_%uiaw1Y6so?P(M28IJZ%vPqsOSAMi{qGdu$m}b)eI@4{9j@5xTp)^-^ zv;yy@v02g*Fn2w{ZLubVitWjH$O%}ss^?6wJ=y+^u}Xw~C&jj>NPV*BXNEW>mi}Z< zH7>wUaibs-o$MZRDFzCyt!2=Rh+io?{LBbQO;7{)DG=dwZbSggbxHjg0`~v7b5Wn% zAuD`FR-K4pqL6{S6dhQ(=W~b~x?}X-9-ej^_opKv^v^XxgXyN}&&t9bz)EqQTd%vR zJF)*W51UrtMAvbXcOi+HyCdla?h0@#cG3Cehz69YItdVRFgt(4E&kt>!MIYo*}2-X zW@%2mf^!pdg5AX2CzU~3n!giq=Jbt-5f}B7{BO!{jhxMDs*NlS8fq~}f6oEs_UHim zAmT72c<3BxaEo-6;}+>E9y9Y#h?e@} zY&ccBN>+8qBV!Ef1;dT$1;dT${{;yQ;)Q)~UVoGWJjwwc<7W0w$DU21Qy6n1+UOh1 zhvYj=iv=v*XVQDIh(A?G!i@Q-!s*%59S4lo&v3hKOw(nl-Xb&gGoc7ci9kjdXV@3UiJ6K7JF%NW^hnAK5t)&e2`P z=cAu-#>ZMPSPYITq0Y#46C;MwJl!xG<^^*coMLnJ@NgThLf6&Mwr&oR%Hy$hRpf}g zM2>;m2n9lybz1{xz&&wZS4R8MHd;{DSJfH)#^_h0-v*2m8_+-ykM6XgZK&qkNT2kj zjcsFnZep9*MlIML|HzqoOeY4(n~I}1uZ?(H*cP^Vd)Sgs+Y%(yn>P}Gt!yjXL|APi z=v&*?wvk6y5mYDwCfdffQ4!nLO5D!2)93cKJpnD@$6)v496MNWN83?c_EY<*(zIZm zN!#sYJCR^Vh3srQD`dQl2hTzntbuE17TY_90kBXDzMtZ=ejJS-5c<0~)GSV%XcLwF zXDsf>zKiVwz-ICMuC}Wper`Wk#BR1*K2ZIfL-o6|erHDn-$Z=Y7nrNDzSjZ8{`nx) z90q$OsrXnMD>xa3(GX>vjdMjH3P<90upM$+;O)a;GW)rU-EDXEJ1E3Zge{aZ|5D@7 zFI`^S!}d_fuP}TSk$!EzCh;CNScD!dOgT4kf%rDEUv`Gy*l*NUzpcrP#`Iy-CY^I7X)?R3QU7S7Oic>nS! z)<^53Ib+8%)-v-z#t%DC5PAu0XAbrtw)y=Dy~v5qi7xdQe$=BlaZ64A zBC+|urBeNGZ?nJEy2`;c%3nG;X?w8!yvE+3cwCjMC6{uau% zdKi+Le;=yzw<6JDI)6*lp%I3mT*TnRkZXQs>ga9$?Na5e$Z)C|n$l$@(0r%HBw#Hm{?B~Q@FRE}eE`d-QS&@~LYgTa@QC+nE1GMu8*sT!tF)frXJ z)p9d}4x^nOwdq(cSxzPA8GbI8rR02_)a7Vy?WnEDf0oYNW-KMoMwiL03)8}a$QHPy zdroAyvw*o!2W~?tUrFZL@ADvD_pw)V^(E&u5%LudCoa;#*SwQokpI^D)?#2A+Qkba zTdbq7T$7-iBt+PYBZjhzp<*7>5tjJWzr-6_1&X&S;_RgyjEy*bn+GsnTKmB>T4y>y5 zn|0PzwZ2oQQuB3Wq87Q)BS7>fosU)0TXY6ih%S!|2coy?94u(w44PU--l%fACIhgVlr@4N!Hm3J2ZJRs^HRCcHbAqfb zvLo8(r*yZmxRoV^W8T|(D|;U<+G(W4YVyPlWu$@{(x?025Z-d~y1Z0ej zv80tde|p&lB0(<|&@EwYWJwzW)`qsR;=IzESTBUE?Q)4}JEi`K{ltEx`0a$pSmUfX zUm2C&j!GkiQR&T*4>xZK$Y6Pu)n_VHdN`HtMWr_nYvc+TZX9aW6rPV_wlr;rsEZga{g=|bKmkae* zlGXUySobUq(APj)%?9dnAxA^E3b~-a8WY^8{20Mj`A-Z$8wYcio2tvAs9DU}59YKU z%xPlIe(+2`v0R$74(zRh%9he7jrn}nD3sx;yq2y&;-;jW2^+bvO)yaH$+iiLF@m&Rlh&D_ZQL?${OA( zTr(evo6Bm2`Y!bWmWv|SU-NKrh z8-%+cQEQ20h3x)9E7fFce;Y0>tHLv!xo;i>`TOT>XHhEL)i}HPh?F&q7d@nCf@V!H zWv$w;uhmq2B#H(o`9Ld-DHK3E(oZAU5AMtcAB67De|G}?T9A-YTlVhItzDqh2#VE^ zrpBNNZIjwOg+$P#QdPkw0qtwe`sv5ka1Og)9X2CG?iK8^m5q&6m>JmpfZaE+e}Tmt z(3?WyeM+|WE2&Qf+UU0z;w6egh~HG*FeO&x$sm`Ts42BN~x0(i*1V*X%0B8RDlW2@;xFKys7FN!JGr~p)RaUj28aJ;~*F3U} zCBTz_L+G8QVFQpxI7n>-1NF!}s2a1X%~Fj>er9xiTVGJC2KTh7GZ+fWK5z^8c^di; z?5{L^p`3WRFFT7_+}hVUr5{bt?sV)-4@amCL{x7BjSU0xDSRN;stxQ2V<>)%kD81F zaDbE-O<|Zgv(A-B2(+mo?{TG?z%d=wz%{f;latR)zMSJiw*LuC!~EbH8-f@WU}#qb z*76D@jOE=G;MzJ%#s?qDnFv!BZIsR26vT&Zuz{1O!4i6O0O2ACH-uqy>tXbQO7nyv zc?yPm-4Zg~*0!>aY@<&HPn02fD!1m|ofJWGs)kf(Ws zdKzL5l^_p%#&n8$Al6*ltEqZ)8jTmsi8(84{#y9lM^9rQu^voD@u(#PPV&Ke&FitA zE@)gwSD;XI1sVgfEwum)!^H51Ls@?|D6lqV0 zGX^b4BLwaoG8?<9jEuHJ=`xsMnARQChOR?FXlut+X>i#!m1-u=>w@}un_q85abNQ>Dj_yh^@{PkrRhGLP2ZW8u=74 z)P}UFn`od9%pXDgFofj^t(!_HOPx!Jft;+G=mf1<(Gw57o&9$Wvys4XD6U457kAD!XpuI$ zw!EK8Q9|UeHH2nH_E*%ZYgGze3ja#I@#JhkRzb68} zCp>aAn`VI3v@RhTFV^EMN)6_#f77h zME1qfW@cZ5*TuTLPvh~KD)_=EG-TL%WE-)stGyNidKnwHnR$Trt8?U*)R9B6iGL}` z`Mx?pP=kUTDo)6FsgrSuBezUSPDjp_o9Hof>Y7eb{%XI>4{pes zCZNznoeB7ynb2xp>x8{dd+n+~j@R|N#ZTP=^(N)}b$vBC6iwxg0#M*Y=NRW(4&Rcw zIJWyEhvAw`!MNFB+^jm}Noe#dMWW^!iCCgQx9M2};&7FHan%4Z_7-VCRe@V06rWz@ z+q7qHw?z}f?NX_Nh9-#*>ZIk+inHb&ejOm~;%e4a)w;_s1q7wL9VNdMP;&=0p*!9q zooLqG9kqcY_UER!T&&Glf7~k_DaH2E()~Wyld^b!K>AQdS50a6MOZ%6gp7tMwVMPV zrajP!=7f2q-sq1?C5jGoe69fnEE-Z$qVI(0ek~s%q5zuDCvplrsapfXv$aNlT30Re zRmE6B7(EkVVIp{uK6*4Kol$E>pe}b0E-Xzcd zqAms`-P~B$;XR8=#K~^-bW@P)zR_6x;ic=$18Pmyc!w)S3&qS+2m0CD^8BrogA-wA9%&d@rGM% zXncE9W*gd1)F|>+BomCm+IE8$%pjt~>RdKAZXSdXF;?G0^MnoI%#ZH-qX=%IqlSa2 z;2`SPO^rbrMozxiWQwUM)z^qKsu5mlG`L0eOqV_gbaT>1 znk^dDD-ipvvE5aRFe*}=M+}-G$xipVFv25#hvXt4tMt2}J7PVT+vDtUI`QOGvPsVD+J7sJK1Z)*!L3wAvvt+AyfB`H#lx6g_FL&zu9B>+L05DS|%NrM6*gf|0yTy$;t! zjbnxT((t`*YUDP?nX)j+>6F#z#G=i{jn~dJz%zB#9Yv=dB~D}_0IO;z01M$TA*T~- zP40LTohGzu2VTk8SNCK;1O1=v!p1r!eH;CXZS`Gj*N$$>BccC;qd%b=ea23LKzd>r zTWv(aSa8@d0-N!I&1SsA-W}MxPt+#4GeRHRJ^acU0YP<2*n=(dJzB$_wF>^aR>9wJ zh3Id_>)u!@_-j@0-&DbWQw4u5=$tEZ=xm9HNqGg?77vpgiAmZN-%H8%=IUp4&wW5* zpNU~#%+c@LV zjMv6IdD}$P14PsVMASA>OV?P7THIqDI&-434<9<6sAxX8qhHC`Y4>E)sP(jo+Gz*g zVX-RPNo5ZT`=!qD1TjK&cGoQ*;PW_WLtNi_oCGW8w+9LgOJdRft-2mth3Q^w;q*7_ zZGW2>4z`1f^cJSWyl#K5)$I`byB#vVwom_e)ve1%>nrcv>UG+NBE|@N}nB3{A{NCBem1cL|$VRX6vJTn|+vwn2d`Klda~= zcwAxkaJ07FQ9Pusy7*9czJ`h=8o+(1{wmV=%-IbW73Rp;Q=;WDx*>a&sBoO`)H6=c z_4@ej&{gc!EZHO9u~$+r*v-Pm6@H=pd+cR*((XOp6WKz4NB7c_5Oh!Sjr!yeH;aAw%ujjXA0t*9rJCS4_gzrhZsS>c_SJ)Jk?2 zsuA>{LQW6%>Cl6#a4G9I?x7FqW6j!6@C7rvko@SNui4PenT&lk*}_Jf(iZ$M&)TN#VXJtoZ3TXL>di@A zvN-heE?H8$p!mxr1KT|Rm06dT;3b;3SEyvAu(j0Nm^El4vX^9#)mWdaH7JzEP-%mt z!r4hWEF0vjM*#GvsMU0@bAKqm8Z0q5^ksWt>snuAz#^Q@Ndy89hZncbw-}^3;wmLH zT3$RR5n*eWskhEb5`!~zsOuu0jH6ojF z=*-F#NL|TbjI|&Vw%)`ySlzDQH8;}puX&)0Rx5w_j_oEx$m$|5_7%ZG?maL_XUrJ9 zO4F!L-Wzs61QG2Tv_4;#EvAEA0iz;w4Z*q;xL)X;qVP}fRI_Ri@<_Q`$-|s9RaMsUgQ2YR;4}<`(K5El3)}%Idbx%u8-6PPj z;1~dI5VWz#fUnkR)_9Ln83jgD_4Z=4fmm@P28|U_k5OYqq}}9=vPXcvI=>6}9j@#-f4XagcZ3aZ-c)3ik}4<2^gtWu zN>6G&lAcJDOX-PDj7m$*Nw*H`N=3UaJxeLnmuWgF>@?`mnMF8MhB@J~XlM0ma#ymw z^ga-l1>itt_3&;b7K+0bq|IiPq7D0Qjb}ew&xehg{gY!)hx3i!#Ne7~Bs@fp8CSM}XnybdL+)zMP2%x8>!t`vqZzinIDCB1o zYl=^-tc3!7SU+rP>Suj+;VGgAwNWZ+XWj{?6l{42 z&bmrK-%zJ0NSQr`T{hc@QJ+2Qmq#aG#MAp65*-XDeG|h<%X>aAwcMYV`X-k8n;Wz7 zpwK;E9^E?4C#`UUd$!{mF~3#YC5VDXqaAcDHR-WBMKr~~o~$Tuh}9dX!UN6x&o)z7 z(|b%aYq|cRpZoiXYyKLelY-y<(l+bY7G|;{MPoIguCZczKFuGwxL@>Qh+ao_x=q%v z_WXpttLSX|g>~pX^PG!a<0BTkQg&oDCWAgV$$pE%USbvK2Q$!g+%4@8Yj2@c{||Gl zdZxBMBck~K<6j|09l;tDxW&dK*O0NC534mMxxx&o82fiRDT)P%TsN^2mRJ)DjYoxs zMgd6jb&Nv8hXJkz2Fw8c`NWY#mJpb?w4PROmP8oj=UYSTw&aHJ;(`H`4Id3qVvOR+ z6}vq=g&z@%WsY!>!R_H!Wp`tEavvU3<`FSva@kJ|s9aEm#H&fW0Ld_tcWptNvWsXV{3MOA^8-ApN`9oqtCF9pX~n3mCr!!V!v@7)RqXf zivhJ%m(1s=U7~B{Mes{?9lc!&YES4AY6!R}M&`RvxGffLYFL8S0D{mX?2Fv)PqSD~ z{n6a0t^4Z9{JCSurS+FPVpr&1`Wj+a>SlV{`YOM)o}#bTJ@wFH4f+$8GkK@JMwiyB znXlE=^=iTEV%=Qd-OSg=dUb8AQb7v8%wDN(in++XR?yA5y!&h`D!uRKj9N_gXIscR6Yas!Kg<7FLIS zHs&7s@FmTsD!@5(=ry`KG}CEIxJS3s(@|luk`@~3LSE5FbY*M)ZbwJKSxfMmZfp;)>bm!g1h2%p03Or%6}sJ?E8p9>@m_b?KcMUDH5)%D zk3e%Jy)LC!#UG4W8jIHsW2-W!_d_w)*^817>x>PR(mwaYs+3aLm!6N%ozb%l$xtM9 zgr71quHJ^F!H&#RKTT~&RhO~rqb0S~tKt3F-j9(^-ir}WHb#j4k}LMrzRjBlR560( z+u%-;ZbY`XoyaqUEF;OXJqjC}poT?XQ)~PUTf)S6tWAW16NE8mB9wqL5w!%cAsQHs zieRpr`SLOk;71hsi5-Ac{gd!xZPZQ>kD;g$1dcS+_yAQ63|iZp;V456OPTjXe?rr9 zu0c6C)=(>xfrmp36uGAWa)3e6Qqkn&8%i3n)qlW;|KV)NhEL9fo=~rKJ--5e5lWjq)s~Z0v&pL2@2SdUs-jC4HWj0xf%)Iq>`^_t7yg)Y*|WM| zKfjD$O!RbYf8_B24mRY`{`x?8fvG4~^z*uqUp)3)Z2!e={p~vWApMKz(Pphe=y5UE zdsp;yPH(+h5>zlA-%tlo*9Gn{^7?Oa0lCj@MBDq3#@y79NJx0XczIMipgn$ z28NeyT=|lr%j~qyRsD$P##&Lw0Qn$6_M9BxtmQ;8<2nD5&23;+wat`P`%9}7Dk^}7 z#(cepLPgR#4~u0y_r-AsTJd18IViMu>%;z*0~CS%AcXTQlYBkAe~Yv&gCyh3h+xhx z1P^pAbv)B-3k?jZ2f+h_oCjP9V+RXw%x%22T@$1B{$B5kaM?dHz2_CL?x2QcwW;xg z$b&ID+oHzPV{I(joNUYP;b)8P;YTCQLG?&=`o49UW6SO|WQ79%qV>s%kKV_Zqo{pm z^P*0BP1}=jZcd6I6g=(W4Nlob66WWy8z4)QIm{KaBb|y|FJr7|&s9329?BfF<17Ex zE^W?nQVy-hMN%YvJFd%P|G&Si0dFm|_1UWTfa-weral8!{cDsru7CF(P${j}zu$nA zfL?`SG+;o(fbxI=$pDF7oFAbAU;QtI^Ke7G(cAh|3OvbMET^TiGM(?^$niQYV(ZX+ zB5LEX#!5{P%%f2};ku(kW4RW+&Jy0QtieD*h5NyqSwO6@R8Iw!PzIo^%E7r#%1(;5 zjq>7#Hm0jmQUx?sdBRh**UPaK^f!*z+Kt73!s~Rs9k&XvwHoX4D|qpoL=I%0pH%rr zH(qP@*az<0xP|~W4y=J4oK+^~XIyB_!D+_f{`rydUI?~loNf8K5KP<2>$0;Lew5wr z()a-7^)2lNVh0oXcHAA=zZ+lmgsy}qENs{2t#r0UP}}Q=TUx^6+NLm%t6j)QbrHKk z?C4M6;0iw)8Q9Dv%@P!V`DU&VWN){s=RhvtWD*n_n$5BhcpQZFI!J6mX*_?C-RpSv z>&EkZ7XfA@HX|8V_+@_JMH{Vr|6Px2&>;^^)LYqL7DVndNWx(W&-cfF14J~)Mwu{v_uF!!P7L>DCVjp3$PrIz9Jw2SSkNpjn8GyLTjTKmpUG3Y+ zfZ)NBPf$VedC76i@a~#9@)NjyV%M0 z4Orxd(W)ND*|2Ds8?n*!+puk8pFB6qw>z}qtC_(!e4DokcWI|Ltd%|Jgy`K}jMCiW z`@B^BUf;}}o*ic?JHOR@KeszmV|OMo#Nm2!WRW&%S*AYbYg3k<8bxV?8#D(oI&Ypm z>gB;^GGEBg96p|(TCqZA=&K4eNi$~|F~@ygX=STg%T{e{P`>D&{sYSS@%kVzJ25>v zi@szqAgrNz`+N_R{)-82tw7dHtB3{UEyY|;tb7L&5%G4{^{Z$At7a=>Gid;@sldA{ zXTO@alwHNjSlaXj5!y(&f8jqpzlfy;H!mt9@5r7P(KZ~o^5+oWWF!_ZVL`!GzMk^o zyTECaYWR@V3f#}bI4I&ih++SA;r<`N{43*b=I3_A820U+Bo0$A+&VW~Aa5_SR>?WI z-fs?D)o(oOgR8QlEwRDPn}qwd!7NsPKpySLucgg+ejlRyKFp`AjUVwneDA6cgZd`g z(Vx!tyKD-ofqmDIk*^1JH>tB?7Pj@GA6->+KAt_HUHgFgGW2l?!%fPb{MTpy`fw=- zllq;k&7$V*xEjH@9RV@*naDPmrR}o{U=MzxHuVX74${AsKUADO>Fh>s6xn|L0V(_V zyMCLqfj^NQZ8qtdik}A!0zx0I>g1Aw+DcobesUGk&(tLcRJ|aDZ09V?Zj)G+U291A za_ybJ9{iivbw$Lcf6&u$!@RC*tEasZX$zlhuWDZ(JlN69*}k#jHGV}keoedmHmo(g z?)MQiPRMU%_}Aoqmg>!jUI3|Hi<&pn2Jf!qDQ^(c)WF!#ivzG3Ne4C;hOW+bKWjhgA$W%JJyA4($CFLzp&M zw_qxx%f|h{9^>M2f6#I{{oz*fV!ARx=K*gM@C~>w7H-;*x2yQt5W%RbXQus&b40sV zdHacnpU{I24WpSL*5?Ik*zBEJCw4Y_epMATx-TyrsC}lqsd}^DL{p8h-V+mN~gF!j)3+t2|m>` zha~uz1S6{G<5l8DeA-r&h?dbt(`)FCQG-;u$R6Jdum4DbvIl=fa|m zaiRAs-9{mf{MzrFAo(}i_Ro#B6B233{jE0PwZ$e0cZ?=->;QPZ5hIcxbk_tWeFtDc zFJU(>lu&_gRx4;TFQ`jf#VTlqHiLy1o5!08)=D-%yVv4aov(DjY+?UHfLBIgvm9`Z zV^eDGc5mOrC|FBP)iJq+b=h2Nt35o%Y(J*rM~{F3;^<|E55bu9(kNO@D*e^EQ)}(f ztqqqdoTa88|MIg!PB(V*3iZ>M8Kz53d1ln%$}B_FTsZH?Mgyxw%9e&yH(gV`5-i{c zf_*beyKZ@6^zxMSPg`s$*2*wZ8tR%Hw!=mas(*ly$o=;Q{&!+roYUf$|6z z>b`O(f_1z~+ml&x&vqzR3eZcXags=-?M!Jqt28!!5!4Gv>&SSGjk$bKucGWZd*!fM z@@w_4b@OkrQT{FaA9(~zd|7!a0y7O2`a5f|-}&h`F@Xy0&B#un<0*8!3hljA@;}eW zc%jwCUNzamYpNw5dkr!fMn@3#MqdEzNfAbM|*8-7*^!3gtws> zXj6HuY{#~?YadqIo2uj>8=y*#qquP@Zcx6^VV^T=?#!AGTB4;)fdz~R-K%@mM}z@wDRw=e zaJr*_X>d;}aEJ-%-}%lJ2HL}!=_MT&G4&kA2*jZqaTMBtBO@7(pd0{^Bixn*L=KN^ z47WS9BRFoL-BHQZ^CH_&d0N1wCFjC<(blv<+Pyw?0&p-UVA`#ub7U_fEyU3d{-}sa z?kGy%IFFvITODfGJW%?v{xUbE9~0Te*q5{;S8jraaZ{CkMuhSVkULTOPI>8Pcx3^3K8Sgc6)6bp6 z4EKhnU8f|Ze&8g6^e;MskZw~bSl@BQ+1l__5sXJnC|ta(ftrI!Y<>03caOE#cTn7r zBZP#g)VU=|6j;otG%$078uO)`_HN5Q%w-#Q069^q)WOOswQ*cBTN9DsFiTKsCAijK z+wL61t(6)#RcFWXpy@@?VKBvNGq34aBFQ59xNq3XlAv}8!|LN2y4Xh;B16?R=%{P_ zU7aw;M-v%{^aCvrk>y4|A+oxIJR2)9h7Hgd0=WL18>-97Ll((KB5-QwO z^JM8zN-Yivp0X1l$r`3+Fu!I$=2P}bt)b0lVai|CDrMn8t5|R0L8kFcy*i832RQ@! z_X1=eP7_Jsz<#5tI-+)zx_O5XF$dlV`=JR{-%1Ps%{!_^nyODlQ9lU*1KEu2ihJzq zcg5P*A4n;@Vxvcx7?>rh=!9o7K|G+td^s5iX@f|$-9MVIKd{C-4^FrKDIYqHsN)~K znkNn+b|uS>+?2+%a_dj+%vAxgfs!{fE`mP9ZEQR(ZBJDjpVe&-x0;|U6Qe}nw?_s4ln+_OP7V@Xj6QY68cQFMICi!!F{$bl`fJNi8b@7 z@aKHiy4->=gvIQi)G^B=Th36_u15+Z3go3iI>eityaF{!tn&EaIIM8> z@9UL?!}3S|dW7sAo{ZwLEIw(5R6^wnE#ir?VeReF={&joy z>5w(%yF&ajQeQ>tBY7xRm>)^Ye8!@O({kFxUueg)d!9_jNU8Hm;#bGb5t=2=I%|FSX;j1Guc47V+U;VqVPw-7J>bA^}39%vd zm_Mq`egh5tqBJ);td5PAFRHUwXcU%YpK6=W$${GRhgeO;PTatZD~@>e^#~rqH11G8 zA*t%&$^jYU>O9HhRg{uRh9OTI@3!)2tMZ+x_gs0Am18SOJl4*FUwJQ(R}Rw}mNqu< z1mgUpwsan*@!;%)XAx`h8&j)ecxca|El7CAHQ(_*rl@?p_c|-N$8V1^Ik0MgUhVyTkY1kbD*Eu< zRlJBdWHpyw1K(b&7i2}>{0&(Fzn(WN*$}2-Z}i7w6?T(0RTz+YJ9ZH7$O@%vl52Rg z(Yo|X<2ibn@#JEUhCPLs?UHbd9(U#4*tW1dvE^Xc5^ha+VHO&lQcqnd?5$U3!Th#_ z+n4=O+eh&EgRUe5%m`f}7_)nHOZv@iuDMf1CJpwyH z?n2kd;^8iE$W{+;Cuw$wBY3wSt+oH;4xxm%YAxA0+^ffF0o0~PX|G7a{ptx|@qj-_ zd*A@hK?~KxA z?dm`6$}mjM`?1eH=Xdtm-?I#}^mzaJrp+#AK`wOY~e)X#WkR)YNy zas@>Uxb;?<;l+ny#0k|X$zld#$GL7GK96f2JeVvyX?_*i$PL>QUBIKT1pC!PM-iKd z?q-qM=r$4kJ}Wg(vad!iPpWg>c|*txdAC`H)MmKC5Gq6E7-mD~&njS?&CS)Q*r={Z zc^l*Nr6hx3y%G#q{w8oAF|9{z@6if!b$#%@l({*+gog=j5t5d1a5EwTE6^70{4QyU zFK%J!J)1X^EX8}ZLJ;)c`0TVhTcwxvrt*zYwStMZop@SZB`t9(j@`vA@h;D^yIO8T zRT+DWY_ay)SZDjY_|g`)OYfWB6knzXP>ua^yLZ#3%k>Cq!j1u}rME*{qtMG$XoDrX zkUnTfzwqJotBZ5k8c5Z%;|pxAT#%X7E7^mVUC^4Dl}68bj8Kx=)*Rd?k%3GH$46qT z?e>^AY^O?CjQs;$cH0=i;&%VaEzikb&I7lu^Y(a;9;4+^*o*x0w#!C8_R?d~D6iY{ zgsu1dnclPI?c0ArA7T&M-h#x@;be)1G`C0&=}dOFr?7=M=U-qpAAyU8DBx z-6bKW-q3@U59xwmk7mCl#ltpfcZ@r772-#T8A7E!CO*+9aH5hUWL$3NOjnrL!QyX% z2xl0a5S$>a6e-AVG7N#2r*wAA-xHF}Pb=k}&{$$WAdI`aa7gk7ta6p99S}SihN~rq zP{NT6#0d<&bgOiAk{OPVol(&p#xC|Rbh{Jn-In-9b1B_TDaS7x zubWfOaf?#}Ozfvph4|Bih|@nK<8Z3?vuGvNy-#!0O;GF_TztHW|4Zrb^kKe*b}Hko zy4MNk-pXeC_;maeK5Q2MIhm@XoJ@R*UYUN3DVI_D+o**kYQk-)dK_!4m5vyFo#jTD zwbE~p>XXuM@TET*S$U7DyfnI8VtCmGxAcdnNO$=8l=Ox;z5tECsN0{Ju;x{G2$%iR z;gR&igmP$khb-Jt#vPP?N?I>u`vv67QtLrsUQ#gL`73KKNJWPKZ=}JaUyntM>*Emv z3rO)=3Ls#y0>IPRjzY%4Fd-2yO}oWzX`k1^ka4lj&9`x0J`{gN7f02;JMA32t)PQ) zGjzrY`QO_aX99`j7HK?(XVw5LX4)I}#*mA?o&vB+LpeYv&(~9Z@i$W(lT*)K>s5elC7fMW;|~IZ^dW=4U4{F5wVqdc^Md(eU@_943k`VcLCSXa9MZKZniQ)znK(w_LKl;igai1vfXzY_mo z3OLgo4$~ILt9c&Iq>rbi;ZXt4*xk*GRs{C5bb0HFRN_kO3F^aT>E&6~hOVYhnjUlY z#Lrtb&r=OA&-2iHy@WkW>f7Ykm!#wCcndbwhZYk0<1!g>s#VC zBVN0X|AQ&J-#j*LKa-NExhZ~;m5EL7l`SN_K`(y4NTIy>&C8AycSGWTKmP0S+oRYj z@dlNc7R?@qW-p0U?j@U8ykh=lbfbSMoX5=9$G=GKmy+o4&C<7!^kqx>GFLdRDqhu!@!nOs#-+9G zpQWYIWO^+{2$vhRNWIpmv92+}n0U8a6|Zb1QG67x6?L9bV~(ORE7ER-bSm4>stoDQ z*spAszi#>yxb_XMJ*vWAOKGAbi+`7{geD#ZZ@d9umh3PGt_85+an`lt#Jaypd40&6 zrfvBRJn)t-=OsDcOmb@0<6Z#nm|LbaPPVSc@*UsEC1TUj&@Dyf!lUp~xUdk8BET$7 z$4^9V83*Z4M4aufj@RmDMlaKQ4P9Fc?#uNKNi(y?tz88kk#G4W+O4gL&#;D`Au?Yk zqu%P`U?;xqL^3YTo%S>wCeBaeAUiu&~%OW8wBcZ zb@jW9Q6;`Fa`&;-=b9VPxX4`@GV3D8Z*RW<(7l-p`x_AGE%6T{_e1Tn?bzySAe(lO zCR@k!1spW^=d^Aoqhn;N&S$-zVX0E z8Z7j+)@wsL^A&H47xEHcm}wu;M!^8jBFZOZXPoFDK8%4r$>?{I1{&})$Y~y{P(k3J zEgO)z8?01AK~w4VA?L!^h4D#DwJ=^-CmF>pWXM&iv{p#xK%zhCHzc15-RT|!t#$gw z(A^m719Vg9ZVEH7=FJ9tW}W`DH){^`*)8Oe3PG7OL4W*NAs^tB&xELE((#j#o9~`P zi~(PaacEQ0KFR0!*~q0ivwt><7wOIsh4f>Pve{r9DMy zw+R64OM8map7W(WXQk;ffy$mAFM_RGas8NZSbCAZQlHleNwhTqOv4^$0g^_tU`m{o zj=@gP5bV!z~33_ z8VA|FN;bnsE8EwEk0u+jhw>I{$c2jf27{7jW0XXqzDG_Y>faR#H;t(OjZm;@iPhf> z-E4{a-x5|D==2GJ=}(CHwqjs+15AUSR?K%o-65eBchd@x)A)}SYIJoo{xlJ za4qYPu>GLg9wDCBU@5jSMpj3fn-D({UK=p3!E?Ex1Vk6XxJT=-0e3|QgOPg?>#;EI z@h4Nd1W-Z!X^YQKS(xC<9>K@?eb1Ko!N@%rX<-dAUvU|L0bFEZlJ^N|&XnjE^c?5Y z@WwNOqLXqFcl{~l4W`CJGv)H(-L2_Vu^yg)vIvlv}oOz85W z(S@isE6i?2{@m~nBI!#ZSaP!doOs@W4P!kG%`ZeJ3ow>;&M*Q$zt4Ozr@y3=`VHcZFQL~gBnCh7x94+VGj12zQ-54v=V zfM2hxBF~?1XtCjo@axbCq}Lf zd*k;_mGlZ8S&ODhb?s`u>dZY+6Z47f!7fWP4tO)dx}~8aO572;zw*U zcDqL+O@N8ks!!bk?VI?MM&V0 zyIQB6SMhP^Psblr`{%h2>gY)cQ2s?+4q#-ii5$Ngj1NcdLwvRSJ(aj%Ku(^}1koOGbKeE zjP|vd!@Q34bOlL?qB>HYOJmb8z19__QOUI`VzSbrw_3K~O6il(wFyZq)z@26N!BqO zj*ID1xMu)Sk9G$CjcadvlkBCyUJC4`z+MXMrNCYa{J)|=N;leFken4t{lvC{%}_mL z&+?lEL$M9VbY}-#I^0+))Y5bS1ry>)tuBb!4{0Nw^6wP@Rhk?n*fHI13KMtdEwNy! z+Kqsg$?W1l7Q}?vTxZuJJP|)vjPAU|;7Fh)^s{HlrP5*DC7h7QBzL5rZAqOdT+PXB zt=KTnpbJqzs7*BRLj42I zPo;SRPz+}*>g(uTNP^z(g)eUs&aU+XqhJ|$(#C-bs4K}f2!NhS4W#L@uOO0-(9tWl(brBl9sLe zEcE9y8%>kdVZxmUFbvw7C0qe+WC`WU2u zqZt~6;6I-H%=nogF;Vo*ohEIljn!^_w!h#)lM=BDNg`Ee*f#b=G-}ZkXG2x6M z{MdBAnLSe+(guU418+gPL?{%*4z^;fV9}O%e*_C;1BM=k&OAbl!Mt$A6Em%fHZwn7 zYTw@*w`~z$GLjVVz*K?!z_%$aV#NMt=SRU2a@7QrtD*#hXU2VGR>*+hDq|A-OwGIn z;m-%!z;@9d*(5>~6N{1v4rSolJP1(Gw{~#wN+tf=w_%$JD5IOwxl%mak>1DCs)Z3v zbudk<0?qkT9Dis7^II z&JE2r$T8mEv;>iQ%$EaTFO zj`WfQDhCCA#~j!M(aA|cka^PZ$q0JX6m}j%za~%x5W;z|p4f;n#4*Y2&mq5+@gTw} zVv>1gY%SZmC}C29=W6=LSWws$UQ+Y8MCSAa@EBoWeVhIn^3Q1cXUadb>38zmZFOJYq4FQvj6Y2N!7Kj`mw&lx{=E0Uw@9_$?aNt{|ow9a^^w(z==nVhWyIH zV2sZ-W@M-$wYlLB)rzp`kK~V)+drbdpE| z;8)WmQ8bS7ze6Y&4t1o@h2pdA@*Xog3CD4??? zLo}{bC&~?;1NzpCRFD~+l)iI@*5*IxC(zA$yEBwzYfn#}GPR?#YuY~hPTz0;83!Er zj+wI#I@raB%=QU>U;H0b`~QC8VEj*4&>nPkbt$mb$F%96w08$VSJ2T;eAGTMNbS>> zCcJF|f6~DO=gz_mbtO^q;ow z>~r3G?s@M!|4*_5gSibG^P7hX6`*{0hV#`b;j2roQXAOhHslLAS1P-~d^tBzEtPjPVn)iPfn22$^e9Dc zd%jYw1b>_@)N-y`D!D?oyfNoCC}*}x~OVWc560Yuuk_C zw`L1@GUakZ!SZscQkg%PQ+2M8FAkAEJ2<~oB$M^f7agpq_tL0A$lACIID&^7C`1CZk##hOdH5;((fT&qlmd+!&m>V|ab3kRLE2yF#fn zV*F9e4kv7(L}$St!`b2vR~n(CqQ7-M83TH1Lo%4F43zUD@EmPz4C}J&;BQBZuLd^d z3xlrCl1fx3kFjTiBb#-L3o6Pg@{O&b!GD9Wh|zXisYck#WBV?O_p&pYaq*9EfCaGD|$v!{`~MrAtze;(He#YvP>B!0zKCl`bpEr zM6KpGM~n-u)J9khMA9>@3BC|zXvVA_=WAr&kR8?< zGCpm6ZoXZlEd&Xff_lR7ZCjnIZY!0C8q>e-A3OcuZha~Gd}EiB?0VlX26}yM!v@&F zucgfaPkPK!GvJr3CKc4GX5jK{(R!IHGEFwHzB*4~SJ_mn+A`JrDr5_=*WeBf@<_R~ zQ47_Wg>P&qGlLI-P2Ek|;vlo)4EUAF(pV`>`1}w|o1Fm6;XGR<7&`<_tFfW2==4TP8*mT7&s>opasm qy0-_16>EjU;lcdwb#uGd5kwK>cf>HVLEq}0pqMQNt23*EBmWb7HFE_3 literal 0 HcmV?d00001 diff --git a/emtests/test_strtoll_oct.c b/emtests/test_strtoll_oct.c new file mode 100644 index 000000000..e42c8ad61 --- /dev/null +++ b/emtests/test_strtoll_oct.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + const char *STRING = "0 -035 +04711"; + char *end_char; + + // undefined base + long long int l1 = strtoll(STRING, &end_char, 0); + long long int l2 = strtoll(end_char, &end_char, 0); + long long int l3 = strtoll(end_char, NULL, 0); + + // defined base + long long int l4 = strtoll(STRING, &end_char, 8); + long long int l5 = strtoll(end_char, &end_char, 8); + long long int l6 = strtoll(end_char, NULL, 8); + + printf("%d%d%d%d%d%d\n", l1 == 0, l2 == -29, l3 == 2505, l4 == 0, l5 == -29, + l6 == 2505); + return 0; +} diff --git a/emtests/test_strtoll_oct.out b/emtests/test_strtoll_oct.out new file mode 100644 index 000000000..b23c1c517 --- /dev/null +++ b/emtests/test_strtoll_oct.out @@ -0,0 +1 @@ +111111 \ No newline at end of file diff --git a/emtests/test_strtoll_oct.wasm b/emtests/test_strtoll_oct.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2525c0e911dd8cd356cfdf4d26096c0b944b9321 GIT binary patch literal 50497 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 literal 0 HcmV?d00001 diff --git a/emtests/test_struct_varargs.c b/emtests/test_struct_varargs.c new file mode 100644 index 000000000..d54363a81 --- /dev/null +++ b/emtests/test_struct_varargs.c @@ -0,0 +1,78 @@ +/* + * Copyright 2014 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +struct A { + int x; +}; + +struct B { + double x; +}; + +void foo(int unused, ...) +{ + va_list vl; + va_start(vl, unused); + struct A a = va_arg(vl, struct A); + struct B b = va_arg(vl, struct B); + va_end(vl); + + printf("%d\n", a.x); + printf("%f\n", b.x); +} + +void a() { + struct A a = { + .x = 42, + }; + struct B b = { + .x = 42.314, + }; + foo(0, a, b); +} + +struct tiny +{ + short c; +}; + +void f (int n, ...) +{ + struct tiny x; + int i; + va_list ap; + va_start (ap,n); + for (i = 0; i < n; i++) + { + x = va_arg (ap,struct tiny); + printf("%d : %d\n", i, x.c); + if (x.c != i + 10) abort(); + } + va_end (ap); +} + +void b () +{ + struct tiny x[3]; + struct tiny y; + printf("sizeof tiny: %d (3 of them: %d)\n", sizeof(y), sizeof(x)); + x[0].c = 10; + x[1].c = 11; + x[2].c = 12; + f (3, x[0], x[1], x[2]); +} + +int main() { + a(); + b(); + printf("ok.\n"); +} + diff --git a/emtests/test_struct_varargs.out b/emtests/test_struct_varargs.out new file mode 100644 index 000000000..f6214ba1c --- /dev/null +++ b/emtests/test_struct_varargs.out @@ -0,0 +1,7 @@ +42 +42.314000 +sizeof tiny: 2 (3 of them: 6) +0 : 10 +1 : 11 +2 : 12 +ok. diff --git a/emtests/test_struct_varargs.wasm b/emtests/test_struct_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a8c4ac729e00c21182f240d9564f590d0d13bc78 GIT binary patch literal 46384 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

o#e1o@k*Mjza2e0VxF+|BI1Z>ri&RdFWSTEeTT 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𝔄k&h7<6`M_b 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 literal 0 HcmV?d00001 diff --git a/emtests/test_structs.c b/emtests/test_structs.c new file mode 100644 index 000000000..9b08fa210 --- /dev/null +++ b/emtests/test_structs.c @@ -0,0 +1,28 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +struct S { + int x, y; +}; +int main() { + S a, b; + a.x = 5; + a.y = 6; + b.x = 101; + b.y = 7009; + S *c, *d; + c = &a; + c->x *= 2; + c = &b; + c->y -= 1; + d = c; + d->y += 10; + printf("*%d,%d,%d,%d,%d,%d,%d,%d*\n", a.x, a.y, b.x, b.y, c->x, c->y, d->x, + d->y); + return 0; +} diff --git a/emtests/test_structs.out b/emtests/test_structs.out new file mode 100644 index 000000000..7748b49e9 --- /dev/null +++ b/emtests/test_structs.out @@ -0,0 +1 @@ +*10,6,101,7018,101,7018,101,7018* \ No newline at end of file diff --git a/emtests/test_time_c.c b/emtests/test_time_c.c new file mode 100644 index 000000000..b98c4023b --- /dev/null +++ b/emtests/test_time_c.c @@ -0,0 +1,14 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + time_t t = time(0); + printf("time: %s\n", ctime(&t)); +} diff --git a/emtests/test_time_c.out b/emtests/test_time_c.out new file mode 100644 index 000000000..dc3e339b4 --- /dev/null +++ b/emtests/test_time_c.out @@ -0,0 +1 @@ +time: \ No newline at end of file diff --git a/emtests/test_time_c.wasm b/emtests/test_time_c.wasm new file mode 100644 index 0000000000000000000000000000000000000000..048fdea4bcd16a1c0f4e156c705054b747e3155c GIT binary patch literal 45539 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 HJGcJ}hS(Dr literal 0 HcmV?d00001 diff --git a/emtests/test_timeb.c b/emtests/test_timeb.c new file mode 100644 index 000000000..caf399ce9 --- /dev/null +++ b/emtests/test_timeb.c @@ -0,0 +1,20 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int main() { + timeb tb; + tb.timezone = 1; + printf("*%d\n", ftime(&tb)); + assert(tb.time > 10000); + assert(tb.timezone == 0); + assert(tb.dstflag == 0); + return 0; +} diff --git a/emtests/test_timeb.out b/emtests/test_timeb.out new file mode 100644 index 000000000..488c9af75 --- /dev/null +++ b/emtests/test_timeb.out @@ -0,0 +1 @@ +*0 diff --git a/emtests/test_tinyfuncstr.c b/emtests/test_tinyfuncstr.c new file mode 100644 index 000000000..1b30eebbb --- /dev/null +++ b/emtests/test_tinyfuncstr.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +struct Class { + static char *name1() { return "nameA"; } + char *name2() { return "nameB"; } +}; + +int main() { + printf("*%s,%s*\n", Class::name1(), (new Class())->name2()); + return 0; +} diff --git a/emtests/test_tinyfuncstr.out b/emtests/test_tinyfuncstr.out new file mode 100644 index 000000000..ed0d2567f --- /dev/null +++ b/emtests/test_tinyfuncstr.out @@ -0,0 +1 @@ +*nameA,nameB* \ No newline at end of file diff --git a/emtests/test_tracing.c b/emtests/test_tracing.c new file mode 100644 index 000000000..d055046be --- /dev/null +++ b/emtests/test_tracing.c @@ -0,0 +1,22 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main(int argc, const char* argv[]) { + + emscripten_trace_configure_for_test(); + + emscripten_trace_enter_context("Application Startup"); + emscripten_trace_log_message("Application", "starting up"); + emscripten_trace_exit_context(); + + emscripten_trace_record_frame_start(); + emscripten_trace_record_frame_end(); + + return 0; +} diff --git a/emtests/test_tracing.out b/emtests/test_tracing.out new file mode 100644 index 000000000..654cf7cd7 --- /dev/null +++ b/emtests/test_tracing.out @@ -0,0 +1,5 @@ +Tracing enter-context,0,Application Startup +Tracing log-message,0,Application,starting up +Tracing exit-context,0 +Tracing frame-start,0 +Tracing frame-end,0 diff --git a/emtests/test_tracing.wasm b/emtests/test_tracing.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f7128d247daa9c6234ccc8068616df50a6bf0e3c GIT binary patch literal 21898 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Ë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 +#include +int main() { + char szToupr[] = "hello, "; + char szTolwr[] = "EMSCRIPTEN"; + strupr(szToupr); + strlwr(szTolwr); + puts(szToupr); + puts(szTolwr); + return 0; +} diff --git a/emtests/test_transtrcase.out b/emtests/test_transtrcase.out new file mode 100644 index 000000000..d234d1352 --- /dev/null +++ b/emtests/test_transtrcase.out @@ -0,0 +1,2 @@ +HELLO, +emscripten diff --git a/emtests/test_transtrcase.wasm b/emtests/test_transtrcase.wasm new file mode 100644 index 0000000000000000000000000000000000000000..47d64722a476a4163cde9f5c1bead1b315df6ee5 GIT binary patch literal 24191 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 a{-3+@C$rllciu&po%73%mtKC}#s3EycxYh& literal 0 HcmV?d00001 diff --git a/emtests/test_trickystring.c b/emtests/test_trickystring.c new file mode 100644 index 000000000..eded1b2c0 --- /dev/null +++ b/emtests/test_trickystring.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef struct { + int (*f)(void *); + void *d; + char s[16]; +} LMEXFunctionStruct; + +int f(void *user) { return 0; } + +static LMEXFunctionStruct const a[] = {{f, (void *)(int)'a', "aa"}}; + +int main() { + printf("ok\n"); + return a[0].f(a[0].d); +} diff --git a/emtests/test_trickystring.out b/emtests/test_trickystring.out new file mode 100644 index 000000000..9766475a4 --- /dev/null +++ b/emtests/test_trickystring.out @@ -0,0 +1 @@ +ok diff --git a/emtests/test_trickystring.wasm b/emtests/test_trickystring.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3aedb7e4193e267ab7ba71e862767d185f5b294b GIT binary patch literal 45415 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 B>j3}& literal 0 HcmV?d00001 diff --git a/emtests/test_typeid.c b/emtests/test_typeid.c new file mode 100644 index 000000000..f832faa51 --- /dev/null +++ b/emtests/test_typeid.c @@ -0,0 +1,59 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +int main() { + printf("*\n"); +#define MAX 100 + int ptrs[MAX]; + int groups[MAX]; + memset(ptrs, 0, MAX * sizeof(int)); + memset(groups, 0, MAX * sizeof(int)); + int next_group = 1; +#define TEST(X) \ + { \ + int ptr = (int)&typeid(X); \ + int group = 0; \ + int i; \ + for (i = 0; i < MAX; i++) { \ + if (!groups[i]) break; \ + if (ptrs[i] == ptr) { \ + group = groups[i]; \ + break; \ + } \ + } \ + if (!group) { \ + groups[i] = group = next_group++; \ + ptrs[i] = ptr; \ + } \ + printf("%s:%d\n", #X, group); \ + } + TEST(int); + TEST(unsigned int); + TEST(unsigned); + TEST(signed int); + TEST(long); + TEST(unsigned long); + TEST(signed long); + TEST(long long); + TEST(unsigned long long); + TEST(signed long long); + TEST(short); + TEST(unsigned short); + TEST(signed short); + TEST(char); + TEST(unsigned char); + TEST(signed char); + TEST(float); + TEST(double); + TEST(long double); + TEST(void); + TEST(void*); + printf("*\n"); +} diff --git a/emtests/test_typeid.out b/emtests/test_typeid.out new file mode 100644 index 000000000..6355c27dc --- /dev/null +++ b/emtests/test_typeid.out @@ -0,0 +1,23 @@ +* +int:1 +unsigned int:2 +unsigned:2 +signed int:1 +long:3 +unsigned long:4 +signed long:3 +long long:5 +unsigned long long:6 +signed long long:5 +short:7 +unsigned short:8 +signed short:7 +char:9 +unsigned char:10 +signed char:11 +float:12 +double:13 +long double:14 +void:15 +void*:16 +* diff --git a/emtests/test_uname.c b/emtests/test_uname.c new file mode 100644 index 000000000..4ca20f36e --- /dev/null +++ b/emtests/test_uname.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + struct utsname u; + printf("ret: %d\n", uname(&u)); + printf("sysname: %s\n", u.sysname); + printf("nodename: %s\n", u.nodename); + printf("release: %s\n", u.release); + printf("version: %s\n", u.version); + printf("machine: %s\n", u.machine); + printf("invalid: %d\n", uname(0)); + return 0; +} diff --git a/emtests/test_uname.out b/emtests/test_uname.out new file mode 100644 index 000000000..cd36c5318 --- /dev/null +++ b/emtests/test_uname.out @@ -0,0 +1,6 @@ +ret: 0 +sysname: Emscripten +nodename: emscripten +release: 1.0 +version: #1 +machine: x86-JS diff --git a/emtests/test_uname.wasm b/emtests/test_uname.wasm new file mode 100644 index 0000000000000000000000000000000000000000..770bc8353cdfdeb4fe81c1b3ffa2ee9219a606c2 GIT binary patch literal 45673 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 z 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 literal 0 HcmV?d00001 diff --git a/emtests/test_unary_literal.cpp b/emtests/test_unary_literal.cpp new file mode 100644 index 000000000..5d929a7b1 --- /dev/null +++ b/emtests/test_unary_literal.cpp @@ -0,0 +1,41 @@ +// Copyright 2018 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include + +class UnaryTest { +public: + static const UnaryTest STATIC_INSTANCE; + static const double STATIC_PROPERTY; + + double p; + + UnaryTest(double p); +}; + +const UnaryTest UnaryTest::STATIC_INSTANCE(-1); +const double UnaryTest::STATIC_PROPERTY(-1); +const double STATIC_DOUBLE(-1); + +UnaryTest::UnaryTest(double inP) : p(inP) { } + +int main(int, char**){ + const double t1 = -1; + double t2 = -1; + + double p1 = -UnaryTest::STATIC_INSTANCE.p; + double p2 = -UnaryTest::STATIC_PROPERTY; + double p3 = -STATIC_DOUBLE; + double p4 = -t1; + double p5 = -t2; + + printf("%.2f\n", p1); + printf("%.2f\n", p2); + printf("%.2f\n", p3); + printf("%.2f\n", p4); + printf("%.2f\n", p5); + + return 0; +} diff --git a/emtests/test_unary_literal.out b/emtests/test_unary_literal.out new file mode 100644 index 000000000..2a7afaf32 --- /dev/null +++ b/emtests/test_unary_literal.out @@ -0,0 +1,5 @@ +1.00 +1.00 +1.00 +1.00 +1.00 diff --git a/emtests/test_unary_literal.wasm b/emtests/test_unary_literal.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1240c3cb64485c420b81385c39eaee192fabf2e1 GIT binary patch literal 45531 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 +#include + +int main() { + char *c = "μ†ℱ ╋ℯ╳╋ 😇"; + printf("%d %d %d %d %s\n", c[0] & 0xff, c[1] & 0xff, c[2] & 0xff, c[3] & 0xff, + c); + emscripten_run_script( + "cheez = _malloc(100);" + "Module.stringToUTF8(\"μ†ℱ ╋ℯ╳╋ 😇\", cheez, 100);" + "out([Pointer_stringify(cheez), Module.getValue(cheez, " + "'i8')&0xff, Module.getValue(cheez+1, 'i8')&0xff, " + "Module.getValue(cheez+2, 'i8')&0xff, Module.getValue(cheez+3, " + "'i8')&0xff].join(','));"); +} diff --git a/emtests/test_utf.out b/emtests/test_utf.out new file mode 100644 index 000000000..a2af5f8b9 --- /dev/null +++ b/emtests/test_utf.out @@ -0,0 +1,2 @@ +206 188 226 128 μ†ℱ ╋ℯ╳╋ 😇 +μ†ℱ ╋ℯ╳╋ 😇,206,188,226,128 diff --git a/emtests/test_utf.wasm b/emtests/test_utf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bd016cdf36d259ef307fd88daede37e8f69404de GIT binary patch literal 45861 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

D675dXVXF3;OsS6OrVy>C3F&Xr6 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 Ki<#1lIPfpjZFxZe literal 0 HcmV?d00001 diff --git a/emtests/test_varargs.c b/emtests/test_varargs.c new file mode 100644 index 000000000..87f9c0974 --- /dev/null +++ b/emtests/test_varargs.c @@ -0,0 +1,107 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +void vary(const char *s, ...) { + va_list v; + va_start(v, s); + char d[20]; + vsnprintf(d, 20, s, v); + puts(d); + + // Try it with copying + va_list tempva; + va_copy(tempva, v); + vsnprintf(d, 20, s, tempva); + puts(d); + + va_end(v); +} + +void vary2(char color, const char *s, ...) { + va_list v; + va_start(v, s); + char d[21]; + d[0] = color; + vsnprintf(d + 1, 20, s, v); + puts(d); + va_end(v); +} + +void varargs_listoffsets_list_evaluate(int count, va_list ap, int vaIteration) { + while (count > 0) { + const char *string = va_arg(ap, const char *); + printf("%s", string); + count--; + } + printf("\n"); +} + +void varags_listoffsets_list_copy(int count, va_list ap, int iteration) { + va_list ap_copy; + va_copy(ap_copy, ap); + varargs_listoffsets_list_evaluate(count, ap_copy, iteration); + va_end(ap_copy); +} + +void varargs_listoffsets_args(int type, int count, ...) { + va_list ap; + va_start(ap, count); + + // evaluate a copied list + varags_listoffsets_list_copy(count, ap, 1); + varags_listoffsets_list_copy(count, ap, 2); + varags_listoffsets_list_copy(count, ap, 3); + varags_listoffsets_list_copy(count, ap, 4); +} + +void varargs_listoffsets_main() { + varargs_listoffsets_args(0, 5, "abc", "def", "ghi", "jkl", "mno", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", ""); +} + +#define GETMAX(pref, type) \ + type getMax##pref(int num, ...) { \ + va_list vv; \ + va_start(vv, num); \ + type maxx = va_arg(vv, type); \ + for (int i = 1; i < num; i++) { \ + type curr = va_arg(vv, type); \ + maxx = curr > maxx ? curr : maxx; \ + } \ + va_end(vv); \ + return maxx; \ + } +GETMAX(i, int); +GETMAX(D, double); + +int main(int argc, char **argv) { + vary("*cheez: %d+%d*", 0, + 24); // Also tests that '0' is not special as an array ender + vary("*albeit*"); // Should not fail with no var args in vararg function + vary2('Q', "%d*", 85); + + int maxxi = getMaxi(6, 2, 5, 21, 4, -10, 19); + printf("maxxi:%d*\n", maxxi); + double maxxD = getMaxD(6, (double)2.1, (double)5.1, (double)22.1, (double)4.1, + (double)-10.1, (double)19.1, (double)2); + printf("maxxD:%.2f*\n", (float)maxxD); + + // And, as a function pointer + void (*vfp)(const char * s, ...) = argc == 1211 ? NULL : vary; + vfp("*vfp:%d,%d*", 22, 199); + + // ensure lists work properly when copied, reinited etc. + varargs_listoffsets_main(); + + return 0; +} diff --git a/emtests/test_varargs.out b/emtests/test_varargs.out new file mode 100644 index 000000000..45fa0a267 --- /dev/null +++ b/emtests/test_varargs.out @@ -0,0 +1,13 @@ +*cheez: 0+24* +*cheez: 0+24* +*albeit* +*albeit* +Q85* +maxxi:21* +maxxD:22.10* +*vfp:22,199* +*vfp:22,199* +abcdefghijklmno +abcdefghijklmno +abcdefghijklmno +abcdefghijklmno diff --git a/emtests/test_varargs.wasm b/emtests/test_varargs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..d4add6ebaa53ab086bc95c7002d24c33ca49f298 GIT binary patch literal 49723 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 S4DA{SirHeYE3+%O;@<#C8D#GO literal 0 HcmV?d00001 diff --git a/emtests/test_varargs_multi.c b/emtests/test_varargs_multi.c new file mode 100644 index 000000000..6b4669b10 --- /dev/null +++ b/emtests/test_varargs_multi.c @@ -0,0 +1,41 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +void print_vararg(int n, va_list v) { + for (int i = 0; i < n; ++i) { + if (i > 0) { + printf(", "); + } + printf("%d", va_arg(v, int)); + } + printf("\n"); +} + +void multi_vararg(int n, ...) { + va_list v; + + va_start(v, n); + print_vararg(n, v); + print_vararg(n, v); // the value of v is undefined for this call + va_end(v); + + va_start(v, n); + print_vararg(n, v); + va_end(v); +} + +int main() { + multi_vararg(5, + 8, 6, 4, 2, 0, + 1, 3, 5, 7, 9, + 4, 5, 6, 7, 8 + ); + return 0; +} diff --git a/emtests/test_varargs_multi.out b/emtests/test_varargs_multi.out new file mode 100644 index 000000000..49d16c2fa --- /dev/null +++ b/emtests/test_varargs_multi.out @@ -0,0 +1,3 @@ +8, 6, 4, 2, 0 +1, 3, 5, 7, 9 +8, 6, 4, 2, 0 \ No newline at end of file diff --git a/emtests/test_varargs_multi.wasm b/emtests/test_varargs_multi.wasm new file mode 100644 index 0000000000000000000000000000000000000000..caa021a0dcc72d40d412d497141ad1fa4f768391 GIT binary patch literal 45867 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 +#include + +void print(const char* format, ...) { + va_list args; + va_start(args, format); + vprintf(format, args); + va_end(args); +} + +int main() { + print("Call with %d variable argument.\n", 1); + print("Call with %d variable %s.\n", 2, "arguments"); + + return 0; +} diff --git a/emtests/test_vprintf.out b/emtests/test_vprintf.out new file mode 100644 index 000000000..16f215109 --- /dev/null +++ b/emtests/test_vprintf.out @@ -0,0 +1,2 @@ +Call with 1 variable argument. +Call with 2 variable arguments. diff --git a/emtests/test_vprintf.wasm b/emtests/test_vprintf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3c47e72d0c9f332f10a1bec63f434712dce2be7 GIT binary patch literal 45444 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 literal 0 HcmV?d00001 diff --git a/emtests/test_vsnprintf.c b/emtests/test_vsnprintf.c new file mode 100644 index 000000000..dc386c5a8 --- /dev/null +++ b/emtests/test_vsnprintf.c @@ -0,0 +1,48 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +void printy(const char *f, ...) { + char buffer[256]; + va_list args; + va_start(args, f); + vsnprintf(buffer, 256, f, args); + puts(buffer); + va_end(args); +} + +int main(int argc, char **argv) { + int64_t x = argc - 1; + int64_t y = argc - 1 + 0x400000; + if (x % 3 == 2) y *= 2; + + printy("0x%llx_0x%llx", x, y); + printy("0x%llx_0x%llx", x, x); + printy("0x%llx_0x%llx", y, x); + printy("0x%llx_0x%llx", y, y); + + { + uint64_t A = 0x800000; + uint64_t B = 0x800000000000ULL; + printy("0x%llx_0x%llx", A, B); + } + { + uint64_t A = 0x800; + uint64_t B = 0x12340000000000ULL; + printy("0x%llx_0x%llx", A, B); + } + { + uint64_t A = 0x000009182746756; + uint64_t B = 0x192837465631ACBDULL; + printy("0x%llx_0x%llx", A, B); + } + + return 0; +} diff --git a/emtests/test_vsnprintf.out b/emtests/test_vsnprintf.out new file mode 100644 index 000000000..ef8a3f7ef --- /dev/null +++ b/emtests/test_vsnprintf.out @@ -0,0 +1,7 @@ +0x0_0x400000 +0x0_0x0 +0x400000_0x0 +0x400000_0x400000 +0x800000_0x800000000000 +0x800_0x12340000000000 +0x9182746756_0x192837465631acbd diff --git a/emtests/test_vsnprintf.wasm b/emtests/test_vsnprintf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b2c976567587c264f33782d5eaf691d1db78c3dc GIT binary patch literal 47688 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 BKC=J- literal 0 HcmV?d00001 diff --git a/emtests/test_wprintf.cpp b/emtests/test_wprintf.cpp new file mode 100644 index 000000000..5e9185241 --- /dev/null +++ b/emtests/test_wprintf.cpp @@ -0,0 +1,70 @@ +// Copyright 2017 The Emscripten Authors. All rights reserved. +// Emscripten is available under two separate licenses, the MIT license and the +// University of Illinois/NCSA Open Source License. Both these licenses can be +// found in the LICENSE file. + +#include +#include +#include +#include + +void PrintWide ( const wchar_t * format, ... ) +{ + wchar_t buffer[256]; + memset(buffer, 0, 256); + va_list args; + va_start ( args, format ); + wprintf(L"format starts with 0x%x\n", *(int*)format); + wprintf(L"fmt continues with 0x%x\n", *(((int*)format) + 1)); + wprintf(L"fmt continues with 0x%x\n", *(((int*)format) + 2)); + int r = vswprintf ( buffer, 256, format, args ); + wprintf(L"vswprintf told us %d\n", r); + wprintf(L"vswoutput st-rts with 0x%x\n", *(int*)buffer); + wprintf(L"vsw continues with 0x%x\n", *(((int*)buffer) + 1)); + wprintf(L"vsw continues with 0x%x\n", *(((int*)buffer) + 2)); + wprintf(buffer); + va_end ( args ); +} + +int main () +{ + FILE *f = fopen("test.dat", "wb"); + int num = fwprintf(f, L"hello %d", 5); + wprintf(L"fwprintf told us %d\n", num); + fclose(f); + f = fopen("test.dat", "rb"); + fseek(f, 0, SEEK_END); + int size = ftell(f); + fclose(f); + wprintf(L"file size is %d\n", size); + + wchar_t str[] = L"test string has %d wide characters.\n"; + wprintf(L"str starts with 0x%x\n", *(int*)str); + wprintf(L"str continues with 0x%x\n", *(((int*)str) + 1)); + wprintf(L"str continues with 0x%x\n", *(((int*)str) + 2)); + PrintWide ( str, wcslen(str) ); + PrintWide ( str, wcslen(str) ); + PrintWide ( str, wcslen(str) ); + + wprintf (L"Characters: %lc %lc \n", L'a', 65); + wprintf (L"Decimals: %d %ld\n", 1977, 650000L); + wprintf (L"Preceding with blanks: %10d \n", 1977); + wprintf (L"Preceding with zeros: %010d \n", 1977); + wprintf (L"Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100); + wprintf (L"floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); + wprintf (L"Width trick: %*d \n", 5, 10); + wprintf (L"%ls \n", L"A wide string"); + + wchar_t buffer [100]; + memset(buffer, 0, sizeof(buffer)); + int cx; + cx = swprintf(buffer, 100, L"The half of %d is %d", 80, 80/2); + wprintf(L"swprintf told us %d\n", cx); + for (int i = 0; i < 10; i++) wprintf(L"pre %d\n", ((int*)buffer)[i]); + swprintf (buffer+cx, 100-cx-1, L", and the half of that is %d.\n", 80/2/2); + for (int i = 0; i < 10; i++) wprintf(L"post %d\n", ((int*)buffer)[i]); + wprintf(buffer); + + return 0; +} + diff --git a/emtests/test_wprintf.out b/emtests/test_wprintf.out new file mode 100644 index 000000000..8dfed67ac --- /dev/null +++ b/emtests/test_wprintf.out @@ -0,0 +1,59 @@ +fwprintf told us 7 +file size is 7 +str starts with 0x74 +str continues with 0x65 +str continues with 0x73 +format starts with 0x74 +fmt continues with 0x65 +fmt continues with 0x73 +vswprintf told us 36 +vswoutput st-rts with 0x74 +vsw continues with 0x65 +vsw continues with 0x73 +test string has 36 wide characters. +format starts with 0x74 +fmt continues with 0x65 +fmt continues with 0x73 +vswprintf told us 36 +vswoutput st-rts with 0x74 +vsw continues with 0x65 +vsw continues with 0x73 +test string has 36 wide characters. +format starts with 0x74 +fmt continues with 0x65 +fmt continues with 0x73 +vswprintf told us 36 +vswoutput st-rts with 0x74 +vsw continues with 0x65 +vsw continues with 0x73 +test string has 36 wide characters. +Characters: a A +Decimals: 1977 650000 +Preceding with blanks: 1977 +Preceding with zeros: 0000001977 +Some different radixes: 100 64 144 0x64 0144 +floats: 3.14 +3e+00 3.141600E+00 +Width trick: 10 +A wide string +swprintf told us 20 +pre 84 +pre 104 +pre 101 +pre 32 +pre 104 +pre 97 +pre 108 +pre 102 +pre 32 +pre 111 +post 84 +post 104 +post 101 +post 32 +post 104 +post 97 +post 108 +post 102 +post 32 +post 111 +The half of 80 is 40, and the half of that is 20. diff --git a/emtests/test_wprintf.wasm b/emtests/test_wprintf.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2396f1859673e6a38ebd95d68411d7f28ecd8718 GIT binary patch literal 64651 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 +#include + +int main() +{ + char msg[] = "Hello!\n"; + write(STDOUT_FILENO, msg, strlen(msg)); +} diff --git a/emtests/test_write_stdout_fileno.out b/emtests/test_write_stdout_fileno.out new file mode 100644 index 000000000..05a682bd4 --- /dev/null +++ b/emtests/test_write_stdout_fileno.out @@ -0,0 +1 @@ +Hello! \ No newline at end of file diff --git a/emtests/test_write_stdout_fileno.wasm b/emtests/test_write_stdout_fileno.wasm new file mode 100644 index 0000000000000000000000000000000000000000..a7062fd300729ba31d182ef172d6b78a0b008bf9 GIT binary patch literal 22375 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 literal 0 HcmV?d00001 diff --git a/emtests/test_zero_multiplication.c b/emtests/test_zero_multiplication.c new file mode 100644 index 000000000..9933fab14 --- /dev/null +++ b/emtests/test_zero_multiplication.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main(int argc, char* argv[]) { + int one = argc; + + printf("%d ", 0 * one); + printf("%d ", 0 * -one); + printf("%d ", -one * 0); + printf("%g ", 0.0 * one); + printf("%g ", 0.0 * -one); + printf("%g", -one * 0.0); + return 0; +} diff --git a/emtests/test_zero_multiplication.out b/emtests/test_zero_multiplication.out new file mode 100644 index 000000000..bb69c6718 --- /dev/null +++ b/emtests/test_zero_multiplication.out @@ -0,0 +1 @@ +0 0 0 0 -0 -0 \ No newline at end of file diff --git a/emtests/test_zero_multiplication.wasm b/emtests/test_zero_multiplication.wasm new file mode 100644 index 0000000000000000000000000000000000000000..df2a0d73ece98af000d571f57526241b140c9cc1 GIT binary patch literal 45576 zcma%^2bh&bviHxM&N<8(m;odhsTKsxnDfd(9SOVYu6pl!@9vtGb)7-n8IVn083Yj( z6|-VO44{G{W-*|G8O59xbIv*P{r>fy8QA^q_dFlAbNcO2U0q#W-CbSXT{w8$5mBK~ zi2m4kP%?4i#AxC{k^U6iQ#dI0ApRB(DijXNNZ|oWS~w^o#A3ZTT`k*uqil0sTCZoqr=sJ4rn1kC68~v-%M;zJq_d=|&ZikH?zu%GL4<566 zV4s5zIkIj1-eY$=c$dv=dsTlmVz>SF-six5_WMmOW!Lee zkNC^(M;=Auea5%d0?YgESKVzC32Wb7{QJOPRewuB@vt#R9&+%QWUqtwN{;UMDvucZ zr^Ck{KK}0n39Dj`QyjI&?cQXW;}iWQs;f(O-YJTcEK8#Vc8cPN|I;Lj3TYvYi~JT! z<*3}Ht}d#i^ksLSqp36^F}KSb03^j z*eyG7+#zi(h287^_;)yV%ouUs9`&m}_-yJqdYq_s__#ki-|qXDgAW~D=w2rOet&Ko z{ntW|I^qv)sd_2h>iy$4-6n2eE9IX z%kPVK8XQFv``3l2f1MSY2h{bit2Q)O|I#X7|H@wJP%AVh6^j}wS)qSjL#0@-!hpI; zo&Q)gpi=2k=wDwgG%4kPdP2HZDmTROS`&*$19olTEzaROG(H4w?dss>(1#yu4!!y5 z+Z@*9r?ENo<)_>ndfD1xjcOr)ROo6^=w@9*qcw&GYY5#5?_q0Lk8R^Z^?`M5jmDvC z5!|y{u%0a;CN{BNmegW<<*_NTX-mk6Em~hI)?)kSu_Y_r9Ms*7s>JKf4*jgR^{XZBohPo4xY82pt^Vd5{}R8_^g^t2w!K_Spx^hh45C~T-MI0_MD9#AKCug-N!y%a+`dnq0j-ihs< zI42Es`aHJJCb z_9Cg?Rvf+w;j`2}^He{k_9LFwFfB8pr)6#7jEp#Z6T(HA@o^Enab;##X5x(-GVum~ z#T$2Jc2_3ecqp@nG7+O0+L$J<4Fp{PWk6%F@xN1|(r&EdzQ;coSymykP6;rNmrUxF*D zH#qa0UV?Mf@h&Xch4iTLVQxv(;jgH3Jwb$z4|kUA>5|=9Y7GyT?7@;Ctti=w65QtD zZQ+BGYW_h<6(k!J-HTtu<6hynSuN!2l6_qgjVG0DQkl4~OX0T_`>mbs+3G~7>1D&^ z0jE2hbIOLR6JP>JGP`WJ>y<~HAg>=4f(}ZwB3r$aT;}zhU$*%O$EI*i*{&&r_3>Hg zf~Y05CH#TE_J`JRpdBbSKgbRelOJpci^UJIgY1wA;ZQqN-2F%Uqj-C?jkZJD!k_F= z8$BT$W`~KV54Xd`(arWJYi(`Q8wO=Y7P^s%Lm&8Z;QX$Uq!mV+27RIf49Hu>mT+HiPL}D zKb>=qw!eiU|Cj9OP)>#-gNqun{>T1Di6`1bk)S=Yc1h-9b&cjQDY8i}0FRCASSBY; zVRB@XiLQ?`0>W`oC9{e8vEy8LO^IxZXP6q<)JTONADJACJ1sI?c|5)wrmL(0nCr5U&7kUbD zVu4d5JJkbbM20Ihh0`Kxds?1@dYu#5IiBF$$jU3?F-D_@H)nWVkbGAz^2Tdy1ERnP_xbq(PxnU8gx*9@*s%?21Ty z#$R>%Ig!or(76!S<}xH+8QGPp5-~dqot?!e*Ou*CdQvqa-}rEKWLNt*IWJOgng>JA zkE)jqwE04#KB0=>07b5e>>7uDZDcrFZUIAJBwAh<*#dFRHL%HbQ6(H;2dq}!!pIhi za0%7fSxj+#WVlnjnk9k0A+j4B^i7f7bmzvhPx-no4Dq%B(f#mxt2z@)Qi6_viq3Gw1xW>V)rX?K1XT`57gj17#Z#X zhf`MChtzje!m`M44|xo|3ATAOGF(}WmyZLFMfRAgRT~GEN40U_@yH(c8PpR#gW|7P z;z@!CA0M8I4EGiz-P4gh?F4!zvS(CV4{r<4`RwR9FPm(Xy|+CXh1m8E|C!-a$n%js z@6~)EvKJKhd=&n(V*hE&JzK0E{$gafJYc!!dI=mO^LY>fBzZY9+>^@V1u83@fOSjj=#gd+HMD~VP z_|3@PRE1xQ@*(84s3pAR$;%VM+mXHPsosg~9f2%_bu*GySFT)%RC_nFcNN-Cp(Jeo zdDrIfUS#jlHztJlBYU5!wuTP`#Xf-GA4c{e$yW4h4j)JMu_yZ^vQKE|*6?X$xDROh z&yO5tw5f4R zI6k)Hv|3OXh$~@QEF7lAuum_zyT;R1@Z3!wXjF+X-8XkEnW zAcp^2!^Ny~9Hm*Y%@Qi=2K7ZPCNCz-C5pC7069Ch*|FwRm&SG}U3x;eJhsbY&8et7ig?h4AhN^yKl2v^5;HAI{c=EXLTWfEgcY(&o|)isL4 zHz6#DZ2>E$3E{fft|NJCSQs183rTgo;_yufH^g>>r@E2l7@pQ}Q*1=vM5>z=hi^i- zB{n{8VP$q}EN14f+VJ++Zud640}_N??T$E%$m|#Rb_ydZHbO+bGqyWLmtDg!8ycE2 zJiFr=ZX-I_C~uCtT_dr3*v*EAJ#ADN={!49JbPDccX=_3V_WPzdv|O&@$5aZ;r1L6 z?v3qUIt5>u?O6$Tm-Ek&neA2y_m*v>hP)-QEpbRoV_WLYc7JU53%!xz*#}~Kz@s0G z?ZG%a45+30so2Aw_@USyQsR5dROaq-XcC|Cv70{jBvBZdGnfri)gOuNkq(x~YRl7Q zvEhXIqp>yFqw$FFSZt3e*)W2e!}8d0!$yTCVtc}aHLN}v+mnvjQ^ZNwKONiC9`HXyb{|hj{U2#y_!cui50P}@aWgT#-m@4?RBDQ$f{<1uf<_& zl7#K(*{{g|vi!Dn*wVHO+j!$_DVn`OKX5>A#`dNIdMmcKRL+*7_}j6)?a}YX_O3_2 z7u$P8YsU9(9JV4lY)ct$%KwJ^wiRV;8@BNo-!}P-Z_7~4s5pb=bFn?=0H0@^^r7*E z*l^GINcaq$hQTs6-1D`NP=&*u^0MC-joue>Z$#lfYB@~vz7Jyiz(IcK%*|gh_eZgP zsY8l*Kg2Hh@ZcNPTwH<{>%PrwNk&0?c2_3_#Ch* zHu)|#+*4lGFct89Y~OnUKg9Nfli;f;D{4ndjc1{w4?Hm3h z!>5o76T8qWd2wPFEAGN1{71$91LTDt{j)jDN(`3=P$zO-k{B*11py?Pofz&M6;+Q2 zYpOCIyEL&&9j(g}y9~6dh0re}DxZ#Bp4jCI?59A|`E=}x#I8WQ#o(0K99Lz{6%dHZQSxo@{<%^J%Nra7|*kxirYNO2)_dupqGoWYBc%y2P&Y3=0!m2tixJ z^@)-4dNSOQFde%AwcAZfPtf>qb7D6qnvUI)7@@bo6}KjKtGCK+?qNE%h*q;jG~exs z-A+_%xFa##ZNR)Uu{)E{FQ1L|^9H=j`2h)VcVf7HHQLcH?n&$(XSjP4yBC5fh5-H2 z)cu%wBz9k7OK9n(i7j=K-k;e0YH1H=U6QEZKj1Cx1=XO_H6Bb1cUO)5)K(8AhFiTk zA4v@7A!@z5oFSGaw#?CbG_glLxx8@VL6y<3eOv64uPDpXQKHP&>^9 zo=liSJ_%u;O6-XwpF=*CRKn9D+|!Wx*~FerQ0kL+Ef?~AHFtX@v9%Bv_Dat9uO{}Y zm;ORxFL>QoB({Pg5!u#P{p2~1pr<{b*z=zB#l&88L|;k_2cj=0_Oj4?0W|B=%$`%Z ze5~bTC?%|-2Q+&dCRG>6X>Z=VY*>GwWy^hk(A`ywG+ z679>xa9?;7xjv$Me3ck3Pu)fG_3H$HO8jkNxUZF1^OBscZ^(bisYyvtmmJ2d)Moik#U-g- z;)TpkkvFqNvAn%5P3=;TxLgsJJ1HZrW~(bU44KOm-$uA1HQc3?JSVj|LepHiKR30x zsi71OwTcqBE)c3El|j^kQM! z90)UGE5%D&Wa3#rqMsom&=xTzM@9B$^D zbS>eQ)NW4g7E;}s8g3zBi&DEO%}0Vo>^k<_$PR@sSr*^kva!+dacmtFF4w&xV)bQO+doD?hk0mhOEoHkUXS(g{ zGg^0P83Npw8g2n3zCX45MbxEb$O#2H$(fM?Y7+kM)U1(nT24;eu_Zj2+78u;dxob{ z+pz=rr&Gf{1@d>4jXt>JsPIf`xI0*V-(I%c%i>J3HHFtwd#%U z<=y&ObzhbDTxz&yA>8w7foGxi3#mPy+6xr-Qfe=C^4`m-z3deFSD?s-m&Apyr1pw4 z!mFvhDl$At=vrb2Eu(<6BP+VpR*2VDp_GDBN56eNwb$vlZQ+fSo@{TpK-@m;Q9U*9 zn}rT9q=yGj717{=4l2Ew+M6o(Y+>^jmEq@|)bK&hcT;=EJ@2K4|2?r+nK(j6g!fa! z-3l@9EE5nuP_FP{YIr_`ARkHW4Mv@p8s3lLiBD4d1cu}@vpp)|zOvnkK6hNWOEA?A zpDKYu7M2bF!g5>qJT=^1_--rPZQf+}iBl-5#wm0!RqQn9hMcdzNDcQ(2G0~uw=Z2l zKjr=EtCUas3T(bk?Q1pqQ?&$@nwa}0wQrz9Q}|Y5?pq~U;N#VIseR`W->3E~yd%O7 zsp0d^sf|fLrPU<^?I*`;@xXlWd1@dl z5G7sS;dyBweuX^O;dyf)eub>)@O(HBze3*a@O(KCzd}Ck@ccLsze2w4@JtzmUm@)s zp6P?|D`Z-S=gdL)6*8m4bHO0|3OTpKbJ-yL3Ypd6nKuZ(LgsdOZWx4LAqzS@w-3Uv zkXt%DO9tUr$l?yqBZKfO55}*MX&s(32jf@Bj1JEQgYhfm+z!uWgYhe5 zR)=TaVEhW1+u^xkFn)zB=F_KWj9(#(J3NmJ#;=eEY99M#^|vhhVNIW# zrM5B+?U}V_RW`FHWj2Yih!sA631d2z*<_EJ!uDsDj}lX|N;ocqw~u3ka%yG(JC39$ zWSX8$)lR;qa3}bdK7q{BPRt0`Z0w}Wa3^}yugJ*$c4pH(>g3E$&Z>^d>fB@6^m11#U)WGkkPDEi=MS1E14{*y&kQI5V>|GrAg^mW;ZrOBz+- zvobr&bDW*o*une@eKpqg~H++q{qdX;V#Tt!=kb+qU(dCB+e|hQ8SxWBbMrPNoF{rW($OH zy_7Y07B0)|GH-#)GrQc&xXSzMJ+r6Rg$m|Z!eP?EOs-XtE+_k}Cqs5sm z_T+bGh6Bxe6k_){CA_2Di=H^*P0_cMDR zE1}l#VP+o!t0{bx*+*(>g4yQ!IFFwYK5>s!d!MT6pDGEkXqnG2lX6&}3x6@v7nyzG zAzx;O`FOE9uo2N= zQ_7ej|EcoZMwGE>*u=H|o8$}X4Z|*8dD>=5(WW@Wj?7&~O-|-lV zDK-xYyD;Nh>0RrrqMhZ1JJ+D^JG*FSJG66(+Royy^ttC1?K}^iSu~soe7*>LzUoEf zE&{xZh`FF_3pB}u4`GCJifj@V?E*J`yReAbPpx!O(Qp@H8*s6L>|)_18iNxgnpLz} zUf3l?!>O>@Ma4ng%ZfI;$P9Q^5#e8~g#WhxUaj!Ui*~tcBdH5I@X8fM!>x3tf^mU9 zr)YB=`rM+;^#-`IXjc|NnHZ3ZPt9G@L^bt?gs_?ZP5IE>W&8+QMQ$pIZ#w)v$P<&qDW#xi;yB zqTS%--B`36i`8S;id2Z*t@hP&Bg5D(okRVf;-yPBxG6!?qya0UMD zMY~-MxTq+_|QUK{IK1x?am_h&%X})Gq!lh(xNT(n%q~k`xLjd81}E&{xwn8OYD1p(Qvu!LzV*P zfuiAhsRjg)e>ZOwpbpgOvEs7VTNj@Emo4sIB37j5Le(JQ-drqQrl(*b-h+dVmy7mtQA+$* zibm)w*krz1v{$`lR=5Wx{%f?Hy;htMUN73~M74%DiiTSO%r}enW-;{6mH55A5#Mp1 zpi{qFG+gf*{b2IEl`!QUr zX7}*6@QL@~PrTW^#9A@%{HI03y;I{wHQeV#!>!)7Ula}JA!?R)oIAcO+Lw;sS4I2E zL%znwyQtCXo1)>mH-&H2%-;%;FN>jPX1%4&|Bh-(oBw?gZT|OA_=lo>hrp0U$PdVi zpG3i*p!d&3`?-kiJ$ct~;oYN(HvhPit$`4*<8rIksU@45o1vC$Qc2=%TFIuBG$*cD z4|STA$XU15YA;#4Cq1@g$CiZXRW2WE7)lVJE3H_ zHEKkJWG9vk*O`Rwa8k)|Imx8W@2NgAy=2oJfs;#ivYS4hQZihgk=WHCoLVy6$)#1L z%qSVI=c=|ltz@TBWdbOHITA(8D%-4b=v3#!YUnLfr=BYS&nOvAllwDEcBYJn4aEve zi;|t?sGaQz&W4lEDH%>l&n?-xqNwziKDj@yWaoM6nI)T93aJl!=aj0yZVu;{?0h$F zyr5(kl)^|mz3-hkD6VwS*5)FXO}ABQbDjw!Qe6#FM)q~ z$?#u}n)8a1T|rvH8C*y_r(|=yxGUX5<6KqBSBY1b@>SxzlFciH`6Zk0gTewTWhzH+tg`h;YBDM7St< zbIEWwdDO4S$SR;@w|La8CA+n>`YQ3Zl2(bgd0MJL?nNbARI0A6Home%+ie&Zw#)tH zWf(|u7Wdz-EE$dI z?FnhWNt?pmCA-`CWKJpEqo8na$?)6@J(dVt4M9swwzQ-{?>>dteO}BGC(Qlch*a%? zlHu;JRo0etq+z&wsKlp_cMq5BVWIL6dB=xGN*eF@tMP7GsW#p{N*oEshsR3xXvrRf zyOx)1xwq=$C3{@?J-jVEp*;447e#(*y^k#`alU7tupes}4|%d=PkJSuDcLiMd$JVv ztJr>2RmAEhnfPqUaCtz!zI~3~TC#3RK>$gfFBxu`io&Ep^}5<~8D>iM3Q$_ZtAb*$QsdW3_8Q4F+Pz+~*FD)A zC3}MwZVhji4EJiOExe^ULkquu+o z=!Z&A(D?9C$v!G+wEMVZgnkSoe^Rnfyj?zZ4bIjw%hm$=5R8J|}DV}sj*=9JZr?EMZqk1~WF@)%;AgY1xWEIRu z*SybDN+(Gm+u3Eqb*<46CO;RG#nqC~pUx{AE~grEdaG9_n_0G*j=}k5JHM>naY5N| zIc#D(3nB4^Wy76cURBCPWy964YQBrhb}@A(K)RZIseeh?aO~z>TDD77C4IGo%gU0> zmkAoOS`Bu2*>GqUt|&`-U*QFj452-z%%@s+ZrN~iJj#_0S1OZYt|}YuN{=A~e6KFs z)&DZYHm()sVI@yJRcK+g(f8}Mqq(up*kKV#OcTfa)=h^tRQUKC(}Ad_c6u%%;Ao5j zWR)zGbL(Ju3^QKNPJD-D-IQ1c!}KpVZxyVWG6$O(Q}gMbX+0%Cg|H#3SfaPKtyL6* z+eFxb=o+v*+)WV6DkxgNOO#tW=w>3IN2i}Cz4B62N zyqm^Wlcs>V>*;QbH8PZKf6gh6#IjXAXQb`V_HT?;BJ?{mw*5uwvphc|#M!a*C;O{$ z0e-d{1(E11_mE35P-s0ZgC<4%O4;FOMnGz$8o*D12&YRU0${FdI*uV=|Bt&A^~n-h z;UigfB8GuN2J%vLVC9~#ncUDFqxaVEtb**>NC^FFP0(PvY5McBa0jqb-0IfrZt70# z|DA_TD{!LgxXHVa#LV51bOUz+OlS8 zPP~G16LW&y#M}p!K3bZ;7jga*^Jxyx+B@>UEx*-sHmji~S?aX##UT9y2b9~R1L&iO z!;s*ibD+U3(p8RIq^o$$%s(Sq>W@z&Ajo4i$tq2ncy;pxJkU= zVh@iVL{{-k6EKVa%4_#^giXBYjQ#sJsvR+X1iz2!3{Mv-Hu*mVnk0A#BRqTQRiTOiZbl!E0}bzy&4vi zWKsWbwUcTD9O0p3Wo8c?XET*ESw~Y<&-!t6SMj;@ zGtT%}69$XHQ61`=%>}9a1Cd%y?f{d3pL@}1E2Na{C%&`)2Bm?;>1xlO4)zO z;*RXUvR?tPQ9Qqw?WKslZEr>FWBcTSYVXjU)2eF#^OyKW;j`|*T!Zz!4k&VbUsY}l zeZ7)Ye5ef-oGOOV5M`JRb44HuN8)y~-Ev#tT|!?n`?-r>+ppE{pb(-6TPS7TS8`}y z7eo8mehT>y3|~d0|Fr)k@qX4h%m`(SbCH$kZaVXYdR_stUE~oaDO=o1u)@;prHW1;2 ztR1dwhbtQgW%F#(^=_<=FgEW9M{+!Ntdh|YHg4A0S=*S;S_f;TBephihPKW7mq)Qa z+8E6lJC?DQnd6WjHck+_2<-SA>`}%^+ZtH<5r=H8i>DzcIw!i+-}q6F;>0aA{hOxE z|IiZiAKqsFtaX*6X_UW>=cMh?_CKwWoUP~{7>=6n)c67vNgk6 znfdpzI)5t?P1gBaqK=I)47Ig#G31(`DLQ(afBUTRxX5t6K=BFlRGrARe}X>Zp|{qO z$LnaWFqy`AsmOZ|8us3`rQ`{^;()+@fk4vvQu0I{-PKa^BtK2aQt}i(-+K!6K2@h~ z^QGhr9XVC9(;`mYYAJcTPNs4klhgM~#)qz9&>alElsrqvRF&auolcdQK1XL%IakZg z2s(^*Ueuyvxnwzqoag(wT$Yj-=%g-3b8AO!MgEI)=C;aG@?vzE+`2F!%!+K5&vY+| z40jPQXY0UiDCR54T>E_)#Oplv>KAPA4dY&+a5!;}4!-7{{EGay*0<&Y+t4mv8QEMN zh2@$A-6SExUL7IIu7-+vOk0@eL;pN)XcZ`CDvPt{b1*jI^lcu1ytvj6z}6DL5eszu z)ia={a#px5;vB4c&qAGj6?0s#Gp|}n-k`It*1IX(C)mc#s$(uk|3(1=! z7LqqZSU>lgFC=e?Dmv!cn}e?7!y+AKWmkf{nG4QD>&SZ|)252ulTVNC)qz!&ey7g5 zs@6+&Dm7n6CTfw}Jpx4U(D_&;y-R0ch3MkQa3FfO&cTA_ouH{@g{-30 zeLDVXzP;m|eZP*tcEm%f2XyY$zx^nPD;OWtaaa}okdD4eAU_-#&Y=>yiqMbvT_5@J zSO>q%&&#^%#+&L%NY+y$r_SG}6+{&q;vUlV+tNgDQtCT~L)!xp{0Z6K0Y;oh- zP_LNZAyc$sVfC52<&)w(KsH(QSza(2p#6Q~(58D>+o`^GwJzQ!US|swcq$^zoVE@rM6Ks(^5qaWIMIO>}qY>xCMfD5s*!66HA)I zrq;za6$!eifX*4#=9aWD!P?A*D9$Urg>_+)wR1jW+F7Z0wOwsX#qX?24>it;^HrtN zJ5y<9VN`k>=7-xf1?FIRmDOj;RC)lF?n0%v32WyHn1Wi7Av~8{HPh_v^RI#sMuSkb zHm(3F(@3)M}ULr?3eBx~?B zL>D0S(pPU=!+PtgBuAq!Hy8Ote+>q>4fA6J+vh(q0Bsn|S!$>(h@wU@XAhXuR%1>R zbM}B|dWhw+oONJt6;!f}Myb!oyLzDvPvy0A1yVQbmNQ|!n2>9j@*ZC=>cB?Ml2ue1 z^^Ij(y9*SCZN)I~D>cNZK}|4GGBi_pi6sGZ)E;1*HdMBXib7cZu>GJ>>Vcx372pbV zIrP1}D^3g%Sck~(qpFWwk;6)JBQ%=%M{Eqvi=wEzp!NLUs^1gbdkX0?WesQ+u2mOJ z-j>37aiLX6OZISileZ4Cp|gjTLA@dGVGSY^m9L&L*ZXIK*sVKzWje1=-PRf!>x8=? zQEN@f3e|@T%~X@E{T;b!tOCz)=Dx8Ha!>kOPbh8Px>Q)od%Bh|?QOliMQAf`BngayT9me`b#Hac&i>&tybP*7 zC3L9`^W){wMFXnE%nSlYSy;UwBbHQWrM zlZBR1=0TO1Wok8(i19<9 z8{5W$S~1w6Mci#@9J|r{;OA-R5b(3obcb?c&hBg#R^#UG-t;|aOSYS1=VF>zZ6Kn0 z8>qAQ%E#p1+`rblEo?&Zo46RHW5XHJMl^)=#cCaF#*j~&8WXrRZB2n=e5rw}Ym#av zA8dSm*2nt%-@qid`_}jh#HawWS`}E=E07?ZJ1ejrBX2SyxNK%*%UFd`HiJ!|qKqqP zPM$hTX!QWXDG1kv_35YU!`9`-VQb|nkl(uYV}NaJ1H?8(eK80^e|Wp0@|&nmZArtb z_2{;aH_LmUU!(-*Y$iO52sg;nxPiJ3^A;*W9{7y$k@bG8!Lv(4<)kbcA(*3bR@Q(t z`-M-Q#o}QQOh)nO83axP{-DNzERYKl)GYoL%HrQcCG_AfASzT73#ApFoXW3fOSZ_XB>kzV&LR^$WCrJib{?FBBPE9mVwsrhEG!>+v+A;)4Z` zU!N9&m-~Y*K_)xjr}w=QS~;J>PMSA92#h1dO_guP_?0}%Ba$IXi@qiS83foEhsM(g!*+@ zg$9?QQn9v2zov%w%|K@}uh!?v zg{>QkKANS~M+&Qr;N7YdM@l9`owPAX;Grg8mJ_0`LISg%pF zK_hM42>$J(fe!xlNuH)(oSr=tTw+W4pr~1PiB+@|V3o$f zFb3lTH%@|WZ8nI=61EHnK7F8E7(Yak!Ub@L{RMObJ~j&L+XjGM-(fVGJep!MdQOU? zJ|eVck<<@NRHLqZQ9lTwuSUj%#!;#}Fnngj7^;Y#eDNPWyF-qymFJh>r))-3T1Yc9 zRu1Tc{I7I7`NS4MN8<=k3LxZEZT{zC4?Z((7fa3-S4{&7I>6I8k`|bgF|S-zJXMzv zV-{0&m0?5v19>HjX-WOS54923NpM0IZ7&k+2+L~9fdG(#R@-L?&T3&#`WOKA)Fz#6 z)f%>shuZdFmZ#o^)J2O!7iXuUdJjD>?>)9n{wqZ(%O~og1w^@83_ECiK~bQ_?4rf( z8rDFd3P2?3D5tn7CX`Mul}D61%6w*ICC-d7YYC1MNEF#I@CxKmG96=3w~R z$&1D!z_RWg2g9y!)~eNz7>TYf9`CBjQ)m?J>NHGlz#Q*r*VL;>rZ%M6fC2}Ft{I*L zPo-K}jXaXB?4c{nNmKDrN+lrYS5>M)ISB_eILQGk)rSUe+ioHeL%_e2hM5!Pc7qV$ z)lF@>i8ZKA84LuP1!@g6J$MrUZpucVcWbpyBPbwXxXWlrL*?Ey+ElE#Im?q3(Q3=H z6_M6wn^%_ueNBF6@jF1@h=YOLKQzb&3@dDx6l?(fsKeLT>Fe9+vzpJl`KFAlT1eA{ zBfJA`K;xz&qXw;QKA85?3>c}y)R#(2&S+|~fn?+cbUvkEep03Bx{y!v zapbWGr)5(Ops7^i_O(5+ZWkIIj*^&GcjRw`Bs}@tizXxv(733lP|rs zt|uG3jAn15kLDXQ2)MOhP4cjBDHQ0#`e9X}pN(19Qp9T1MyP77>x5IEfN*9e;B*EC z%@k@^V5ol9rHxL(oI`LnPy+f!F8CQuHes4;o3l)075M5#$yf2jZpTErWcj-oR{CFV zS^h58_`@Akc#x=UuznZo9w$C&g+=aRX}i?#sqz(ULDFb9UGzkH_Hno*5dR?UODyue z%CYc3BmYCuu#Wc_-O1cD^l*Oj0z|QxYi4Uq27O#3N@1@Q!nbbfa0ADE zl$Kq7q15po3eJv9E!_r2@&CuaLd^21S|_+^eNsUFQL&ezutt4S&*p8R!VHidWjg8O zDABn?xTdremh8_7jmL$CqyRa;jjMIJ7~rxU!1U6e&m2ki@&)Fd$lmcfavdC7+<8aZ zpef&478mrQZ1|{`60^-rE;N8_FH`vOzO{M0uZn$#c~y4bUMBa{m@+Z}gZZzUV`tLena5W0UGIV!T4l|T9y-paba8+AQ zk^xQOY}u)R;La+{H?vh3dspYy66reV^J1w`d_z0*0q9_+Cd24zt4g8nsA;i%g;{Zx+pJk0U81e->IsjtLF4<}s@0{j&C(5Qn7Hdw zEtmXjv4zgO{DPP(nj}WoCb#w*3HT}&p91d+;IR{qTN^tlUErk3VW&j%&UMu0I%-$y z*0vgISLvd*DyUuUcesJtJfU_qpyun^wj8xn^y?X1*=fJ?2A|3R3v>a7uMY%++wU zg6`CPaBAnfVwPHW0glDv;#e2E`JKkMJKVctE_kcuxJOsKDaXCBaT`y}?a;NG+%`-K zx-{zeWKOuxQA;>ip^L)9ny}9hZgvY_(|oD|oI{6RyR$`Gn8 zE6SZv%j57MZJ-&=tGYNXyyEw$v3bOGYY*zaF>dXtC3r)3poQ0Ufm)RWuf@7jjm_v4 zx-X7P)LOYiPPfB7q6^_Pk}i`+ptfuTUHOau>R0Tj8v0AdoLXbw}=0AdLsw)#DM z_8{w%7vvZ*2CsF0v1YZmi3%w-XaR8{1)A=ZC349_{z}g_jtLVnx5GEAGT& zFU0m|?!Rl5ErARPM2{A07D7*oxt??;VNiG8n$p>%x``X;M+oU7g!Ggctd9u4kihM0 zBf~G)>?<%&`$cH=xk9Umr#rfHnqXVNU9rvns-}cR6WS9lg|xjIx0JPrptg3Hi!_C~x&mFsAqQX^(jwcCzF3Eh#1uqEB1i`8K1eeU zs}wgob_6j7spx`Da&j;s^s7F(ZU|hr$$A|mwxu*Kl&n7Jc=qVT^YU28OiFB0GOVy~ zZbFg{9aiA`e{@YH9rD;jy%m#6LF9x$!c~>k2XZ)>P;ci3UJOkZMCu8cm=HwEEtH9g zLfpiJ1?7`yG@o8q3gYY3L9(p+6knhEt)`OzaihPXLZ7_JZ(9chSAc$o3W^IsDRt#$l#VLja!HNWKj~9U^8Ew`7ROmAhH9o zLe-4TGw9#QrLXLVy{NR>EUIOz)YmCr^e_L#>i8Rjz_i5lj0^gbzJRd0#_hs~x&@q` z!5&zxK-NsFhy~>BNSYH1%`2doBHml*6u>!mt&Gj20l0{Jy<^)8YpTXAWNNiC9#;5u zm=&Rog!^az%Yz1(UvZa#GV(IZWf5(I36noC@HUcIykwU{(2sOEF5d<0H!9&{Rx5Bn zSIwe``zVI}H-P)Mg!xy-oy^aD12OE|iQ{DT!mY4u!mf$DUC3G?XWx!~GkI0N@vO^M zWkp+JeH%9p56dn{?fr;6x-EZQU69Z3qjcZL_|$eE7C(=O@v-)N4Ai&Czm_wmJj^G$ zz)&UMYSi7LgB7b`ColT(RYm9W3=1GEe^6hBZa%~C^Da;S`$hWQIA+73zLd3D)VM8& z4LE6_Y3g&4ZKJKO=M}*5f>Ggxh!Yvypx+kW$)EnIKJDyA?y}}XFM7&uepCK7+?78n zKS%)Yy$Bivgl=4Zf!Tj;r7coFy$b2);8LGrpy~xF=624qY|4sdQFuebS8F%tug1T5 zT~|c5A_}^UeSNR%dg^JfMcC^r+v~FC2aoy=wy!UHjbBrZ-_V&BTfaHH=@$O=BlB|( z|DN2flirT#1(52EsBtqL2Vi^fT|}B-zfJK3X*+jSF&!!e*xwgO53Z{2rkXe1!ah|# zGq_c+MbQ4Y(&F1z!h6`IBXfTv+c^}fd*-Hd7}0S?J4X443ETnLw6(}c?zYIU?{X73 zEA`k3l(R|)UOTq7;Js81uHeM*AQ^>6?QJ|)4xO4!^> z+?-F_o)XbA+D0_V_E>+W<8{V);qdPUU-9$fX6&T;U8DHIn=>nuk;Rm~VCHgPUY*$dVB`x~9_5J!IN zr#MLdoz6_iwA$m~_dJiq{PbmRTksx(xtjiNQA(qE%9^(M@)JGJ3bg|pOj zgDSVaak{Z#R_L&2tk#V|o90EK4p(M$#@e zE-l^ae3r~4na3G5#yR=fxnhpx+6|WIekK5JAB9GH6n2k!1S@YX!nNAe(E!$(d)bDz zmv6vn+fB{54ULCntwP$WYFDsr_^Iz&-!a5{X*=;Az_vM1*6qH82k38XTl)H@QM=6Ln>`TU@xitLaxrSdAW zv){QrnV3L@c15yN=m-iOp+dXP*ZiN0 zS-sFoeV5wY!fUD}AA1ejH$_Jf4n|)9?1QYE9mLLU9)U6dUBPHY=-2>-9*Q#k&{p5r zhK)3xI!lH;02xWCBXh!@<>l3NE@-?w%uqv*ye?Y*bF4sM4`bWoFm^HX2+k1X?{2lA z7-&&>&DPVJTeVZJ?HN_FkM&X|hf&-x71t+U=*ZZkaeTG$sCin-6j;EB&|NxLO^yRL zuu@GaKk5Nq^Ey&EjAid?ECwQZ1nPnOal#fIN)QgMwwATF%4}qn0g%5?vKu(;CLGqy zaiAZ~mvMZ76_iTn3f0vqF3ml|s!B((pp%y>{U|mxc`wZJ2$TxaFDQaz3o89@W|r@5 z1~xTCf&R9>VC+umyQ}p6KF?-elXuj4+5+LUg`-gFT;@3eu+In^#J z`=Cr|1@~B~6?7VN5`$rj^b+lUT8{C@Cbptj8>BrxA+nJTR)#%5WDg;-kt2dYo6o@j zP&m&~D0VI&9R;k2nEgB7xxzquI8(f&$q_@(WF!z)FXAY)11CiJ0SFo z3eH&N(KB>TqIPhC(ogZXt|BUql)h(P`uSdZn$PFa zzEqIqGorZL#P}HGVxtu_C6_4{(q5aS5mFe@>_brZIWA^Vmef_3vsc|Lc`wOLKX(!% z?hQ@5%oL=4z!FIM7sQWcI~EGoeONk88=fj6w}Rj*BME9OgV_4&p6?!OukWb1E=PzN zqEf@bju49(l?G;xP<_6X)81{##awkr8<72NN$OxFm0CY6nWlkAa2O?kQx2~6*S0&R zt+i6)hRU=!?lUnJ9r{wN?lf-r50PXJecU%}Wl2yw*0AQVx_0fa4y!wc9>`0s|D#Tr z>?2(BN%#R4AhNz2K4U& z$ZnYPXu^U0Mnh#_%{aMnmk==q-VXcKOlT4VK;tjeA`O*iqNs-^0lnFbZI4&m*Kd!t zuiu+eQs$4T3uX<^GO~z7Kl{a{iFGM0&9fx;6&@0@gaM_24iW~xZ7I9 zu4LJfkMo|Db96PMrvlRkO5V)4TIm=a6cAUAQrlD2dT7@{>58)_1cCZ$0=SF#@Y#!)4>SvnJE`^o%_Tf@!WHTd8)VO{A45~CUsB@`BG&8@c zoft07KRyjyBhSWa_04tR9q!P7pDqi@(WbbR68a3aSnYB7jXzpTz*W*Bv1Wb?ea!o4 zV7OOK)9zwceTOeD`A@6=qK;V{*lsmjOq0qLTFPn3^S<6E1C?(;Tm+@3Ga7fuFShSMWa#Yte*2E^!Xd#o!Km8;H~L~j>Ir|Q ziv0!}`ekWuWd4l_v@fcwuh9l9$v)RMpOXW%=})nmik-OLRSpgEj>_>oEn(bBc6w6L zQxLtX$kmyelUGnmCRGf1T6hVCXHb;yLcNf}8z*{qHy+BfyFi|v@@_y@!;(1_j|yCn z)RxZcOCDUThX!i#L#WlsTwU+bW+gm~lJ9t*oGKqLsH~qaMxIL~?k`DrC#9xD-jqxC z^h%1CI5WS#p9gp^(f$2EJT;vaW~AKQKU25!pC+7S`7m9Pvvg5EPN~n({rn!uw6{{D zZHo{&pdyBg`=SJ{rwed|Ah(oNpq`{*r)_SD69dwLbG zvS=*58NR(mZ?cHK`Kv4few#m|thZNg_vcs?#$zmO?Q``Wzr4&Mlx|LL<`o2M*SiOo z=&ggZ($yOFZ0?Fr!d-eUg_l@bYR@l6P2ui@H(Q|5*&V41g@g5O3z*-NaG#Ms6SEwj zKaoO0zzo!({FvQiy#-U-b@33&7Hpw8^a4ifFmPI!>=2@5r zBtfQkG~R;h>@b55PORMmV_Yazrz6)J3!Fe z^h(hzs5*{A&lCB`Y+OaF@(^rN8jj6*_Sp1lwkkt@#yM!7&3Wfr!jzQvxNQpTcbuLS zarPU%Y#BIB)w3csb}S$*^P63c0_ao$?PQ7WtUkbFq#h)uUft2d9)+dq0pTCsSN>65 zceo#!o@oEbs*Dx?L~YFKK+~FjBeY~7Q@^kor=RBsUWMtV#bU^>ymoV678djKcVl>< zWhzg`SmXTgsh)S?nU$mS2V;h{pZUQ{NjvYw@F-0Fag1Jw;We2r*bnh1V&(?IDU#8>M zD)(}BB~`skQFRj(tdom(5cn&!f2Zc21D?t_R|mmCe=d{l9V+1k1~!ksvi1&gHSDQ( zn_i;JRh9l~N+F3*xH{^HL&iFEmeHLLP&@RQ{t)#=Eq{RWTl4=Eu>OF^hOqdq^PKU2O4~?<=-HQ1H#9<@5~iQjhx+%k7weJfS;QJO9$7c!mSPu3FKFY)HuUu<`$V`6$LQiI0$-x&m-V)?`ot^RtyFD% zr^kjih1Vj(y#mo5Px5!yc;9(f_U?wk2YYehy01Q7*A9;WyrJEk^yu9S{%`1R+3r!z zSJ9(R8|tXloBopXo3!*>HD6PB+lzUdVtC7qr`tLpe7bALH2K?IE8$#TS6Kyp#jZRv zkXFKZDN}IDen$qYkmI~G@M70FY518g+j|oxZSQK6Xw{_nJtPy8-f1aGXX*{D_W;T( zTD+A2xS6%@6Zk%lZ+~V=5N8TvMKpUEntdQr*$3XSco*!aWLEz67SDqn5 zZRN3_MPXFNbvUDR5>i}yRV%S$$As&-hS;dEM@FKsIlkRH zct*%<4l=t}xNqlc_43-Q(cgG4|JL_U;M(t^{2<@=+BA{M;s@=Ofa2!x#&;OZk{#y2 zw>50ItygVZvF?viz8}Jt3VDBo2iO_m{;NFaPqm!t_4v0Y0WYS4oX(l7&UcKFyNXTQ zV;jnr3(u_iJy{d+XEwB=7yX8zNPi_kx4&1|M<+9e)4lhmYWraKWy4#vGqbntGYWe| z#`4LUt?eCtv)+pYb^gw_;oc3`)WKV6(FYQ7Aqo-i^Fd+ z{rxqg+PFX>V5Q?als!s)Y5$#rg4c)i|KWGdC-QBlmYbc>OV(znn3dc zd%^>TxbWAo~k*3>&s0((`*gseFR5g2yOw}3IJCdBL3;KvVl{g&%W7U&eK~p8a zst=(1^8c?@>(g~*pK6UQ^ch}jw{&I{?-I7*Zu_`e_ZLkR+~8S6IY&2l5nTv_Y3QAu zemkq7F@DB!n(H402s>!chRNJahw4_)6nb8aUijQN>`YgS{Y_jowsxYn(GP`c*NW9S zCeat<6Os#K`*m&uZOG|avCYEB_NZ`)n?A#uv;8G%F~wBEio`bMamV4ZFXp->-=tl^aLiMS6^?tpnS||h<_I9exiiKesRr6yf4~}O zSIYXCTyt}1uL;^~K)YH7&^ff%fW||Ng7%g}(_sRAZR)QNXZW5c9G2crqtrZUNRkOP zgK5}fKa8YVSE%S6mgv|=^D3!~r1d;Do||K?laV=eH6EUuLsJy71H7dN zX#IVgtfKP;{B5z0agc2h+1x%_+3t{iG}(w9!0RS42P!(wjsdBE1=LvT=a$nf_3zSq z*j1MLi({EhYgv7FZ2eW#J^mc_-SLhE-#;PdUd6!fOJbhB#(G*YOJbcN0gI(zf#o#c zTghtrx3#kh_v=w?+m0LP-PHLSI-V|G`>iaVYs))4`EoK>Nui3;V)9`{Yc)yq!%{^# z;rFrbTukqeVf$ompNd}dT$D&zge5eF&lo!MiLU=KY^ama6=0+z*1!R=@He5^+5$9VTWlYQ+vh(^*ZN=9{B(G%*n{=V9M#tR>U zMYlAxMAdomb)x69@&9S>+MeVp>Tu7Tz0Zc7&2`0qJtTq1Cb&Q#Q3AWr37L zMe*#++3aM`oHKhan_b1qLa>NfC0I}vzWU;eRQV5Bq{=s+e4xOxtdbIZ0560pd_b+j z@B4MnIWrhb%Qvl^O3wDZ`*-O+eY(H?H88l6^;f)i8pXeXc-*goVlx>@9k}+MSX@x@ zYcLh?T%1q>L>C{%GaQEnxJy0=jNE);{iax%F)LF)DRR7f%nUxi#lQr;oFRN1{~lYx zt*yATl>@7)K6`T&zyKU%K_{;fX^t*2OXxYAzk_bPMJPH_9>#HDlz&=CIZaN!O&rB5 z_U=#N>H3kgN zR^I1*+V&c406$RAdqq$Nh}3Dkn~S)#q*K{p-1njHr%HWbln{pD)cpghki{!+vs zen~%!>syMY%3F?}$Mvx_K`rQ{2(BxRD!Q;0|u+2FJgPm&0s{_jD_L02g(W00d(5 z&%xmUNalIDrklcefwy&28sB$tIXAB8Ua7q3=od-c_Z%?yd8cxwpU&wnu}=eoT?NqM zB~$<+UUI6~5XaDiYf~LSV}8KHdtfNr=Tt#-6 zJ{WgO*plmK#3<8Z-|EDnE8OVEUK^3b-1_>6Taq0NhlT-JZn#$gqTVR0|KQl$W|B<~ zY;s_e1DhP!{=nWpD?Y!WT+EzZTd%qp~!?|hn58{E^ZtrYH0@m z1p}3#eyu8)4{;)1Fcts-RT_0Hf{y2giq>8JafPr{&PITisXmPbSs*6F=ow}$#1rB7 z?8c?b+$=g_023S6jy=OYtXGK>GMMDC(%XH7`-rQ#A5$w#m?uEO1a~iA!2E34efb(N%h5^_i!5Rx`-FOvWg2wKJ zDQ^hn4Ry+M`f>P$RJ~>`7dQZT1J8i`<(kD)6{-WPMC4Sj0=v$|6t)VpHBP#>ps-PX zF&C=GRs+6GpyDzxRYaaGkSx9D4>F(i2Tu~ZEBtPzd&e~AI86#uGtokNq{bD|e z3*MN5OMTcN)=(?R3M$%H*@X`ad>cUYG>!HKVg%*|S7or;&uB68W4_vVRr|Ol-$%WK zBvHWC(F#5mfNx`3d`9dNJ3kC|@Le?^-&Kyq;E8b`niVpq=TXKG^cgk7x}sSh7zVZr z?V(K~e2P&;kq8=!I)@DikkGf0jy)=<-FCr^vAY1usJE1lQD?_W+YGPzAkjj3FT3|x z>6k@{?ct3Tdq?(+>?zHGf-(_b156^;L#w~Mk)`1q2YHL-1L%JP_y_`e?f|$>4x;&R z45i{OClNgOdSS$ncqUdO84~y%h3=qG37dh!w!kbmi$=kMkB6Bhkl?I6e4rroO%O@6F@) z)4xCWAE5t0?w_K6D)%3v|4{BfLjRH6f0X{CxgUmS&}9l${xzTQhTXdF)W6`5BuC%r zthK;G?y~7r5JqpVF3F&Z!iCIVWGjlf-=W{h{V1M|%4#XuMh)~dDk}~W?+D)X5opHy zMeg(}suSK^(!Hq_Kc~)_(x6dTLGGq9S0h_YkK#a2p$gDr2wa{MNtD4gd(=tJc8D%n z7qrN_pg-0H&9N@%jCDap1-V<7NL=W< zo}_Ie3P93yIPdgu{+}47i_2rB$HDPEa&8Zt(oiUL=c<~;a8Wq5q8+TLN3b7Mys`Y=WN!p?$%d4bZEo#SdmjgOBj{QCJ&YM74_AN-B0u@S^OBZI22 zZMcN+;Q>5KYJhocPDyDWT{%aX6XmO-8fGw$g5)K4XA<{lSBSXfF>HeIG>)!Bne&Fs zrPLO<`}k19CK%7|_^zaImb<)TbjxGd1mlT+TM@c-E1%c@^~4MFuAeRo%{YV*FvmWG zL&Bc!_$-q+x;Y?jdGv5->dw3FK6KB$hmU-=dSd$IgEMC;Q~^VfSdcuXNMa zn{QhR!uHC7?jIQ2wtdHqLpule@7*;qJaWS)Kecbq<)^=O>+O?A?|Kocq$3 zzw-E3zxKq}-Fm}YJm0*q>_>63{*7-wnYF9t``&ri*9+^3r(1)srw<&tlq9Soh*s%`kkNCyU6_1R?;Ryr_$HNwbCKg=x~8crlH^$x~sR=w_@N z;l&{Hq(S7l^(AR(wb4Mqv4$X#L7j-gWiQa}COB66%tKbV9eG$9z*pB~Qz!hez6@~+ zZ4opBH01I#;Z_B5A=YAOMD9K7ttEyL!t@8%ygFsqauZv9hntXU+JauGs&#;yAWtM7 z2ItkI>#c>*Z`Os$+7H9F=ttnTtXeS9S?EX04c2wo2BGA?5N~AwN<}0MFRn+;Hgpbc z&BS`bZG1eMdR1R)`VHMtNha#BN7OUZ$h>Z9LCmaVUv~|e{xzT?!rO~sio(NsJ&n|( ziHiVwwJ}~ zG#H_m+*mJokVfo*Ce$$>g-KWseJg)*)V9!c_*^>F+XY0&NkS`;MEiH={!ZVHN369e?Mgy|+QE7rHgc6_P!l!3sqNp%wTwr$Q!E{4%^*8MyF?(ToR@g*?%x`z{Y!O#UkFQki$PzN)X z<^s1AW2mW{AuHzsTa^b+yMa*Y1?VP=7+F4luf{rs+>XNY9H_bm zzV1-;47>=W>n^!L1HIxA=qox)K8QV>hIkivYjw|Spm87t<7P8$LCR^+P>+e&ZBXZp zA@4R+Z-yg`!seBD7E=#9k&=Ky_NMH06ybI7e}WT^zC7+@=|{M#l*j&i7wi9D{vFxz z-?e^UL#ut~`ClEJ)LKuSn_5%*gVgswtqx9|o18j_po3FulT&LNF_4?8&CRI54b)t9 HPTlbj7t;EE literal 0 HcmV?d00001 diff --git a/emtests/test_zerodiv.c b/emtests/test_zerodiv.c new file mode 100644 index 000000000..4d4132133 --- /dev/null +++ b/emtests/test_zerodiv.c @@ -0,0 +1,35 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +void printCanonicalizedNan(char* name, float value) { + if (!isnan(value)) { + printf("%s: %f\n", name, value); + } else { + printf("%s: nan\n", name); + } +} + +int main(int argc, const char* argv[]) { + float f1 = 1.0f; + float f2 = 0.0f; + float f_zero = 0.0f; + + float f3 = 0.0f / f2; + float f4 = f2 / 0.0f; + float f5 = f2 / f2; + float f6 = f2 / f_zero; + + printCanonicalizedNan("f3", f3); + printCanonicalizedNan("f4", f4); + printCanonicalizedNan("f5", f5); + printCanonicalizedNan("f6", f6); + + return 0; +} diff --git a/emtests/test_zerodiv.out b/emtests/test_zerodiv.out new file mode 100644 index 000000000..3bb47f8aa --- /dev/null +++ b/emtests/test_zerodiv.out @@ -0,0 +1,4 @@ +f3: nan +f4: nan +f5: nan +f6: nan diff --git a/emtests/test_zerodiv.wasm b/emtests/test_zerodiv.wasm new file mode 100644 index 0000000000000000000000000000000000000000..f4c1f419297d2d775ce33b33330f4d5d52e64b75 GIT binary patch literal 45706 zcma&P2bh&bvj2bHbk1SUzziUW0jX95%sK1Ii#ihSxZ{Cpo-GcewHvaix9A zlMbsViVlko-zPq7QgqlpX%Q4ZoeW6Ej-S|b?D%o}b{sJF=VK2#xZ`i7SYf>m7&~E) zgD31eZpFZr_ucQ{jtRdQztg_s#~(al*N%h#vSMr>kKKL3zWcZRV&d42KaM;2FQr7V zYU2+bH?HN-@%!(6;DJR*&lN(t!YX_3z4y3-_iwA`;p>pG6L#t7*zMqY9)x5&x%2 z6qV9a8dv!(^=OD1YK@Ii&$L%lb8{(<(==7mw0Bf0@85e;v{qc>Poh7m{$%{gOaK1o zuxPDvjX#xtkMP8YMLWaT{;&4WXeW8Pe=840&An-du^k=b4_4FfJK?~C$Cp;G?ES|- zjyv>_Kb6+Y_WonX*s-ORoAw?zZsI|E?{~;w_WkqT2X3}$X{T)OgZ4dee5qfB-*IFu z^~dMUR@&Kp@J?x$Z0|$%>u4*rH2mRj@a(v8;=f%Rmw)g%vhUbKM7IME`IB?*?tk8Q z|FNasRr2rgr;f3IDfMX}e*d=IOX=0)E_gNG!>J;$Njbq?YELot@uT#)Qn`P_~Rhs#e}IF6B!H zTD5t^s#Y7^(3Fw6m-Si{nylinR>`Zap@;Rbrfrf^e(yl5bfvA8YCnt9N%22HEd{ma z6;NvyYH5hTDYK07A}enlmn<3<3(ItHgT+m?MNynh>Zkl=@^8FC{*B3>D`kmVL?MNp zI(G~!J6DAP#m_1>AoOsr^_UqNtRbvQ2o&+KnNEn+2$f#rlGr6l{@3=#X%@9ZuTTa7<*!M0qqJoEqiN3^D%36I#Q$k)0co5a2z@}AUq|3*Uq>)fMy9;6H5?fm?py^? z0)cpHLM53HPKfPF1;m(Ye8ca@zTf-HxT@fp8QEZE15#a9F?vC@Q zBRr}Qd(=}ej^M9*tFRJXD!;)g^+F8o?1gwtcq_KI;(|2L>C@OgjSEUan+f5EIFH>k zEy+tZEolpdPZpmt7TKg4zpM7~s!mlAnx!jD}`(Bi}vC;6n-@IYb@Bzfb+@Kj`HWbxix%WHr$OK^g^uOb9BXyuD})f5@(*1D{ziF-q{s9n;tbG%&Ukx z{1tVsCW!C};ns>hS+QFYtM^sxzKS3%tJty%+~(mO;k}A#{$52DBpVdnjbCKcZs9js zJ><)ZeOVEWCs%E9mAEe};Wst=jh*b-8bqk+Rl^klCp(Te${YSD~~!s zQ9mjK9h7KUwqhr_#_PGDY745u`tqt>UIpu;v(O`h)fZIT!teQOzi$tF+umaHeQX~w z`M$QVSbRU*$M%~T_P71T-G8t@h_}buSlh27{L%Keu@l1qc7S;LKs!(z-D-cd){f9- z2UzRGFwVw_lMk|k#K+^U&Bk|xgKeCRpBVmZe^y+(wTpW@>|pEY2ovnj)-f?0Y7^|x z)-W+&Hq0h^Tl~fTBGUcU{;J0QoBd5+f49F&oc_c9;hb}r{gr{|uL%6ZLNytV3@&S| z{HOg>i6_}4k)SiOPD$o+zEW$L9NAZovRWXDG7B)&4M*23ay@p%-Vm0Gx?3M}xvqY9#n ztD)K$)oKjBV(a4~!!c%0k8HZItmFe)!|{CE#ahy+MZP8 zpkAj(cDg4xBeFBRUS~#jW)TfVW<@s3qtA-$ERUWY*=(X2fwyl=G6KV3l7yjD{|xz0 zm){15HEn2E+ey2o=yx{#!vUQW**OkqPGoab&YGh9d6Avx(dS2YzDHjW*#$(4yyr(@ zEuzB^$~Z^QpC3cCrIJC9+d|?3o!EZibINGkj1x zEi&9G^^mYV#67{wzECu}Fw&q<$yaX;7e#iF1G_j9pYd0ner{xQJ#-#~wRsGQmmu#{ zC1SQ0I@^m+uBh4-^rSo@--K{kWS99kIX_Zwnh!%Si1KTO*aD%^m{3JrSq;S#E|y_n+a$Z#ikH7f#rO=QFjw^#fPk>RfM48#NC#>jB06Z|I>Zi?(C2eBx!MGoTT$ZoEKApVxf zaElxS@qoBBGMs||v1;BtD%=*?Z6a6IIr{dS2>biGEhP$J{o4D4nB(f#m zx$cVWE-(J>$nIt$(-H1bh~1;a#T=<4+*^lpUu3v@9Zpqg?^oYZ2@gevyWeBzO|Z?w zk>RRpykZ=9B(g_Tt@=2yG^&pSk4E;W&!8Uj85DoT5|0x^_=NC8WVkmN>7I=2Nhi=# zkv*l_dU!{8#%D**c-ds5>|fa95!2dVg#XI$DdgG6p7m-z7uj=)do~LHRkQ!HrJgNT z4}U%~ToJI;bG-nLk@-A`0Ft~I8SZiA@o_-a(=c$HhZOzgrN~}dVbUZTh8{Jz(SI|h zrMFEQ6JCz&W$KVmVo)e%s>>o<=F;sIaj~T5YmvR?6@ERk*Hz(HqGAYnC29+Ac=GDR z@MdIhdaAb~drKfoVPHm5txAw;Z%6jFLI)|7gq=U`*c#r6>>c{X#PDup?^4zF@SdR9 zdl3Bn$lfQ}vO%rk!^l4LWFJNL5$)U_K8_6c9!>v=lJPMid>YxOWaw;a4WC8!nP>Ps zvd?MA_V7hyr2K*mUq*Q^`x4B*QhI_Wgl{7ICd!*8hHoPy^jjG7yU4zCZus6kmDcb> zL}ly;hOHkX`;oZz@Ka>C?*ZBwTW1^w)@qU_1D$gw$2QsLvq!{sgwH^x#0a4&%u^xF zcKrV{dm{?N^BuxH)r?GoTEbB=zmzaF&R4Oiaa%Y#wxhIKP#1`6VOlI4ro|J&F+dC} z3&3hX53AcTaae;Oa{;}&`ogiX9qR}j7u#{M#;fVE;nZr!$A(*NR5&rV6E$-_-Z7jJ z+YEiJ9(D%SNPfrUx0k@LG0XVah-6`7SZHOutKqZNB|1)u?IbVgYwT z?F^x|N!ZRdf^-|#Dc6X|+z3i+3?XKU5KF3I4N_T6!w7=uo@%~>R@qRzCCrNLXZk%W zHoRxS7}r$o8VPeKKOxMfNSh7a&yM-Avq9?|RtGWs-yY6oo#QCYiEWNhQ8#ETvveiA zEu5!lI}ecO$98_K`P2omT|k$f7%qzKqF8gPixpxQGiRC`+uT?at9h}_i^ckv#D=?= zGA~se9}~l6v0VlcCx-d4&1ad!*b*Dj3rKaj;_yuj3u9ZzifLlFGPWy8-X5-sjp(aL zb+zK~O$^t>c8#aHmgN|p_HbQnL|;d$>lKG@Vz?nTK5k%Tc4I7N=C9iD=GbobHoOHA zgdOdcIE>2dXZW@YqiQxvM7=e(TSb>0!w4H5S~5I4;~8nAy4a{_j@w=9v2)nTMuuH& zOc?DvJ6b$@TWq&^F^gkc>^ysWY&h}k9kJnd9To13?M^xcUzzP%3%6H`&(WFfR10@j zZM25GC9y4WNO#3{mp9uzvE3u|MvG_fjqP5KzAv`>;_v{V?$S@q9`MBX$9BIG-&v(H zw^u`p_>7O8^sy_6!svp*Y=o-*U~CU|u|!s1o<0;CPMAL&TZ=s$j|z{(_K1>=Ahf^CJ?wCD6oP_<8u|4SlPsN5C!9rbvw0N&Xk*x6Q+*wpG}|8)s9| z>^1s<1A0BS*B#IsvAv;kHWkI+jO|U2eml0eJ^G#4-XU5uzPIDB8PQ=&%6MJ=*W|a& zC}Yd8h0pl5C}w<{hCHL<43^Kt_KX93mT}UD#^++gJ>?_eQ*;^z%h+(w)E(xnPb41f6MEfevF3fBIWnKcld6UvD#vD>2g;86*UaFhVFILA*-Y-*wz;n4{t(%+9s40p7{8bKVRR$|8{ ziaIW_;~bgkiA_&5%R62ncDxe%!~!@c)Zv_%814jz)1tI968e_FoRk=DhR4v`T3ARV zhHDY}Em8oS%17Qw@0^*~OyPPerA-K@B~l0QR~&MBQrFI%K^zGtgfkO6Be65l63t3% zmJ{o&#LiNF5AO)GmB(g#$>fJwcem4%5N!AGpBX-doSoR&UdeM4J6CaMC*eP9_Madx z{OF&pVNPPWB7i!P>%7EpK`96z$@z)lPFGQlh_IHN`Pc=CUEpY4nAnA&m6yVxjHqHd zc2Qy%DR7ViN$1nCixayT?G}SmVsl-UHBUfn9`(H}vCBxN>Dc_l=6kXQi7lY5+Qa3E z;pWjGS11`D6T-s87Lq~Ju`3h1(lcC@*i{g;JzSj_DX%8OH3`$PYf!sgr}P9(2-hce zeWK~u4T%wY16*-qVmErL+~gjnV~c1tTSW8SoY>7owTD|0!`%eTTNArA34@B+*dTAf z+ngVe0JkTG8&szq{o;i740OM5|e=yZ+y62skAXFs*o{fXgLY|aN0!+D5W?>1+MhZ1|p(Rw(shdtzx z#2#@K@=_90`=B!*jMdE334 z*t-QIP=b$0?OY!ocB!U6NDS9wRQNEl4-=^!^w}0ZO6tqbj}yb+ zG$wqK*e4^q0^ePZ7`ZGS*v?)dzu5c^T7 zYbuNe_$jfURv=F;zuDK1ovGn^j0uxdo19WteYJ%nQ{wH&RCT@A6HZAD2N{k^39+LT zMFQ1+YRac7baZOCsUGE3ou*8RIVLsSG>;(!e2z`+*mQYw)$(cUYIHj;wc}EaZqrkn z4nFyeb@NUW8q>Qxr>>h%QotGY-`VRHlzV?2|Fz$S6H+@NWy3F=nA(YH{>-IMUYZ>e zW~7v1GrUfn7EVnwfUC@3+pqbmSr2x;!bwyz--wYYwNq0&8Qf0+AN*}$W@@LTHWQh8 zT533`c6w^3r&3syR;j>k|NUMx&IBUYw)iNY7Aw$MRdnc9`A6Uj1y!c{3; zDH>g!+SQ~$*_RsbD(ZA?YS%g;uB!*NhU@tzU0b*zwd+&6fmAo9hP#TeMX6nv79+tT z_8xCe4JRhKtC|;la|@eHRl9|tTiply-6l^L;TEUH_hO)4%|3)Ur{KfeQ@hTnDA6;xLa6# z-(0nutKv+uwS-qvd!^nAS|M!MQWQo}tB;ht3sJPoyPPdR~0*G83m+mS<$7oOuV)n zr4*F9`t7T!y-L6B2(P8|WP8m8;?`l8{KTSfmb$!<9v(bVM1u>usPuYjudCeCgv}dN zhM%`m!v{IvPVFuCyptOKcf?**;s_lT-c1d6BgDM5N= zct3-%VA!$(!tM zaSBD%Ifd?}ik;-#Q1JCU z?JMZe626w0`&vmB`*`(DYTtOox2gRc@2K!yYWTl{_}5qMdNKLpA@*}dk{Tk>J^APB z*nenf`MwxR>SNLmY5v3z`@!*AI;0qUULV2=L`j!*dEOs_UmTKNP=0-tO{zJ`}$~KJM~-KNP=0zV7l&8HQgWon4;k!|*F)T9@b4VfYm?qsudU z7=DGE(dD^t7=DG!>GI4UhF>A`x;)nm!>^EqU7nkV;aA8FU7jVw@GE3-m*>G@_!V+* zm**Kf5WmL*7UhqYCol+GqcVtXES?pW|J9d@>{hh~j>CuY_xa5FNS;iL0O znGtpp_?#@nPR?4wshORc(bd?rWYlF{(yR*4%xtFTI4!f&ysD?O>L#5ud8cKextJ&* zC}z0?^kU9XaV#9p%f zT#uTU*~Rt7nMdPXDhPHd)VPdY)eK)-nD4D~S-n7;?@d4;t+ODr%e)CL&kVP~qX2L| z0ItaF3XfaJyyIV*=Spv$E0wr0)f%UeepjjHS7oEZ)mS-*{#~MuU@CX5H{~#I%3-SZ zb(!I=rNOSx?0RK5zpKH9i3m4jc7xOW#>{T?>fe;vP4x!5F$=@G8|-{KZ_VshHPkSdyEaU0v^cZHp8WRAaG-gILhKHwgm;uX(eq|uNoGr& z;CG=Ic5rvAEtWvvdosJnqwZxwQg4fUX^Zv47tv+zV_4`kt~%GPT4p6hDi$07R*8N=5LB7CtfdoeTIvy}2urhfdA602uFd3G{23y(YkgVb<&DcniR9XwhkJIA9jG1z-XJ{AL&6w=%=M z>19%%H^Ap@6vpz2Uf_C8kCKUNZ8(K4T4Cgrd`75-wR&ocYWLq5+8_bHY7BC{`4DK;IkdHOoDuQTa; zzv;5n`!+M&H}v@L6lC8O_$sp?exDicbFbIuUg{5-;XbWbtK>za@AwhH>P7$5g-mDJ zI?L)algow^g^w&#gComD4NzN6E88?TembUX$9URf%XVy8BK^3s9jAoTJa~H9rhD)S zWjldjrjk2oPCLCE)+0&Su!fkH{}}mgy|9jL7}oc0yN=YoCzkC*2Q;H>GaS%KWjjgm z*O6NJFO!vurASI1Im~o|B3S3x|Fd&Sl_k&>lX{^b;1r_ zdD>=5*`_$eqsn$vS(KbwHr(Vg?7&~O-_aO~DYgg+J22z>$-CCfvd#3uoomqdomRHf z9NOvSob4?BN}qdX+0OLPS!KhCz-NiTXQ^I9?jXQBh?onjwosEy_z*@oz04+I*=D=( z+u7y%2KhNV5&q>` z_#gY96$-zoY!|6ElDeP+uUuR<+)vI_FfP#NmTj&>pI5ed-T;@B?UFJmlY{t6%Z8ih zq#_;|mz52tD%QvOt}WZO<@|8AA{AoSIsD!d57(FL za_5G!;jZ@>#6xdPRmz6zttRR%1^yyFT!DXc*=|+?E-Fhgc}rOeeEzDzZoU_m&OUPc9RfT8J?jo5Vbu# zi;-s8o+ZQcWt8~Om)pV%N>9*)@M76sEK7<1QrQT737gE9%l5Lj%rf_&#D9gBvscO! z!>eU`m8kacTG?>RfcbjaUN49Kg%ZENH{x5)6Ljjg%ZBS;ryorIPTAgZPJXv+??N=i z5a3Gu!ieQPwR?ZeO3LH8sEt7iA`j_{H9;g7u8y~KJk@chSR!@X7K zMK#=~Wy7u5wx5*^=OJpAx12jZFWcvi-xp>3!b85q#=ET1>Z`KhdbfnH)y!WDk(q)(EzD3WHrZ`ir&Vkkwyc^p_fe<$2|4SwTAdZ^^rS~r?1+jGJ+fjr z5S>!7DYAc^TnT-pb^A%>^087eL8FjvdO)*dDu!FBPDDs{Y{hWhN$3v8RSZ{Lb%DHr)|8zGBC_>Ej6%!xb5cT@k{G6~i50SzgMFisAY$Z@ZH!b`n)4fD)J^QN*08 z&8dcNbv~?y-ZFLSxdQN%is3Z5Keb|~%6OQQ6^P536`Sd(o#qKngOg9M7*0vgsMr~z zsPvXTxj(aFXL{;c6`NHFsSkUnSMp!AhO;VmmK!(DuGs8KIHzLgRJ1xfw_@jd^UUEd zVQt~Oik;_C=T~e_rD*^2E46TeAlL<9aG{Eqz`v+s_%EuA3Kv)GV$u@M;6mcL6`SkD zUE&@Z=h8~CO1!L6tP?+W>reXlQilo<8G?%hyOvgLskiE*6?;_qJ-j14=7#K# zc~Ru2*1xoeDjcWzW!Qr?jE6j4vB$jQF zZ>?A_r67PL&sGfgkcz^jLG@w4d#+;7IbP3K?0N8FxNBk=R;iD7FJQ5+&_N0%p^tVi zR_sMgU>RmA_7YIq!^?tVFH_@JD)tJ=G}^sdu~$9WYZZHq7H$u(R}A-Zr6atdWPD5r zZ&vJ0GHA4Wt730?hPNyBHY9Bi?^KMG?~vi$3Zvb-wCMXvPtb($LB&3(XtevVVuXGO zBY#w}kGx$zb`K$+sNw9B%Ea(##Xcnti;;@qJ_hLL75lsrnu_7B$=mP?X9kA5ukci? zsZKs-V_#S7Ybd3Fi;Ca+O!OPIcGHCLZNDH9Xdkc$BN;;@Tj7>eySL5#TMLOa0P5)y9*)l*;T`xRb5`nIaR|o zE^oebt9CARCP2EHVyS;#)o|?QTu`+OR3&}2g$t{a%ohq8vRVyxQPps07A~$zdSC1X zkqn_dx5}qlcV5+Sb3MwH4wopCVlJ&3?h=n71bi>6+GYPT#5S)U=3^yKJymFFh0*uR z)uMT^&e&lQNlZ%^Xam#XO*KCL%5)&AtDT;S2sjL*09hpq<-$4`9>a{6vlHK7SvMt? z!7%;H&07U)mdwFs#ngPdXIeuEP$8_tDwgQYZF3dHAh$*vHjRMUu{DggH5}TWHrk%y zXx~1zk0)BQ|#^Q0wU?s~G@VvP<}+mkbv zqp@sN&lzodvi%!ll?eS#jcrendZy=Rgg7mh{$x)zF2GN7qaYH^bPu@{1BKSmGH7zd zuaq5rW(1^0s{#BJh;X_fA^_&Pyz3YO_W!sGP@gQ36+V(xCt?^VWFRj^2UhOI7~+QR z7`?ZLrxj#RM?&adYk~&TP1B#1g*$+i;zqY#cT;y_|92iXt-y({<0kJy5;J#4(hb}d z;8yIS^UDzpC{uM3Fv-E}{0+DGe^UnIO6g|jYRkH%Iq?cEOw0*(6LTL_R@Tz|orp7| zZ$wC3)KBuiDL*G-8#p#vNR|dId@)FW&jA(o=m7d4;xHt5=n!mhi*%La7U?P;GxJY~ zmipu42zl{Q6nas{`|`ghztt$CSLo^UhMt8KZwM=ARE+j=^Lqh&B{GcXX|Pvy5EEN| z(eEXv=C$aMOD?fftEZU^2mF3~`fq!Nnea*)X??XPSUn{1;xkFC%Q? zMQ7~azf$dpSy}K`R-N2_*%{<>8071SGoWISZ@W$ixV1cX^X=h#Kl<|h|8DFQ8h|7u z!;t<5FVpSlRVGICL_zFMEE07N=7%W5p1y`j_i8I(F9!)!Ej@G!Ej^x ze?tO;cwt|d*B|Quk9B~@yP3Vyam6OlDU9h6ZS)Q1L-L)W#R8V@Q|P@|#GfuCVa7tL zaC-Jk#{r}Dv)pbQ({x#?x5!NWY$!rfBABC`BV%<%oGW8=8mtiNZmoE@6+AI^)0v!dz0{WqxE@?S)0 zk#0>}(+gh9)}q)#Jv`V3tI)M2+SV>WQh7YKwu+>Dk$$KRwIK?GE^D`jVK&SY7j;G2 zuWRcH%6h6g(rvI#^#5QWd_IOig>h&jJ zki3~VdW*Wm+tRkQE!x9Yl6G5xgnIKv0wQW_z zcJ&gsx9#=0gY7^-OZXYs{j9(a7Tno(R#kVgU6iH;>rC2iSKE~YJ1bY|CtPf}0`-Q$f9cmUQjDE2LcRC5^Mm89asZMfj%7)C>s5jMgV zfhZh_+sSq+Y=L(O1IX;>E`DXdQon;jh$3vElzDf_q1}DHwukMZkpIN+RYdwP`!5pj zVFN_y0m77X6BmnbBinsK_>KKWZM9c@&MR~2z1qY7Xg>QtY7B{*?Nr;}+HVDx6z3uminBQi$ca7sBtFKTB2VbFwB+3A_e^53K#X8KI?XSk=)V{Lmj4at&t+mJoBAk%51C{MSW#gc1kxjbZ_0$o@ z7aieXj>nEyGCIO~tvWkv>+xCdVC{6o_7=|2c6k5tDAq^op*ds6GS)Kl5afp)A_zSM zc0vL6P~)U+9W4EbL$=n#(~uLL6J6@B{HRB9;+C5JRnz9bOQrgEZ?k{YyUJlS%3mjN z()KX>XS?nrP&GMlOBO;pLZ?p|I$bXRL;SId{UcPklVR1&{QC%gV)$Z)u9bpnWmGu-h0rn_pdJ{ zkI@we1P%%WlFpZs$Li>=mXgQ$X+oBgC;0i^6R7uzI(1ttC1>c!sgj)(aq3n}$&+<5 zmE)M4zE?6nbPa>n~vp@<#ckM<>zu) zO3v0vU5@6~kJ^g-=jhCB&QkJRbeY_`Ffq)DY>v-#&x;Iq4lvKxf!k0nR+5GG`$CA< zeeAWk>Vxx|O!5^DC(hNu*P@eOT>RGi);wSv+QmyEo2R3&T$7-iBt+QDB1G9`P_c;V z2=jgDpYIK=0>w;KarOcZ#zuCbM|g8x;Rj&r3E+r@I{xYz&{H`pTp4i=R=wvcoqZK^ zT&**&T1j4`v#!>^C0r{6t`!1TMuF8?SqsVQKvxUN>mwGD*F#u8_gX9@Z-{C-=Gvcw zt`ou{9cE=$g1ngv&P40TJ0jDjirrD1{=8EMR#p0~I_s)h-=$Nj#X2%ki`?uHAbN|= z$13SSv&R1fR4tTO`a zv((o)OLZ1ic88pfT{?ubuxeNQ5aY4P9@9};M*FYV39*yWXDX3-{Nwrs=_hnnRYYS0 zI|{L{o`L07PEEC6M1Hf%|9P=WHI!NHZQmMzq#DK+HxGn*Ws}`;Ubb>`EpXpW^J*b8 z-42p9)y~SI;aWzH_&=_h!HnBl!}k2Z{oC0HjtZ94F<1r){N}9qHdp=D5bte89G!z9 zUvV1iH*aHj-^#Wvl29`)qA@4P8X`MW`{I=Dw#NCn#sYJ$=TY`vwgxxSY*#43wi9?w z30$YMooMtk4kr5i3Q@9Ma}P$}W-8U&8l`dX1E=>vUL~B3%3~_rNOjkMHoe1YPW9FD z(nxN^S+(HI%vNg)gXsvAvbL?Q;)gJk9x{eWmG4>&v!M)u!{{?LCZI#}K@;*phccr| zZQWL;rHUNFc502;)oQk08wBqmAnV)umb8WqtcPtN67*03-7~C>ENNqcwV`dSIIr|3 z)`Lmb_Qi~8d!^pdcC<|uzr89w+&C-FS5Bq3r_#*AsPq=h54UIu%)yE(tIt%a^k6F8 zgGz4^Rx1=RCAA_$cp9i4U$+X$fWq+)}7WWPlQLSfyRl zVq3Ep)vdPy^U;S+*>)*=JQ%7Tf4Jei>D>1;W zQye4My7-9!Xd__GN>goN6g7)E`@o$4>w2d?@Jt`ETvo6S?5%<-meDAU#dy~!l;NqO zmaahJ4yS?%8^wfNdsOuJMo|Yga+b_dX*4!hY3&|R7`7F|z^~L0qXsp>B+1ZB<#Cl% zz#O#?7^h9O&7!gpRzK|AXN-EFsAna(0$mP$ujq=CLIlMdw}|F7!z1^2!}x=LAt{UWN|MU%Isa9&($7t)eF+~hJwNg#C_P6CWvl=|ZnfvBdAb;PY z?JUZKyBg=0E|KzvQKE+wP0*|frmR={iPf5FOQWctlJ~dL`lS+RNBU_5`vDX30f(ad z^WR-TzaAuH)RsLv;Ix%MsSy-wAf~tf=4I0hWCna$oveUnp(fx>Q)od%Bh|?Qi|P zMQAf`Bnga?T9me`cW-se?*8F2yb7v5C3LB+Tg?1RH}QD4g>l5)jfiZzNiPCnHT4$l zOCS%R#7dGD2`%qj0!uqLKafQ0tA-mwbh5A%7Mvl*Qnv+(Iuumn=D}U6MAoGQcoJ|3 zJ@YJV0Md;1nGMl0wg{@lEK~DLBE}Dau4n5BYK^TRIT-me&w`&&Qj-x1cQ`1M^3(y`$TX(O7# znqsvsHe<-AO^pfMDz=KiF}~EnHMB@IQw%n~K3myV{@=hPw+Gbu3dE=YvRV}w=oLs1 z&fOJQgON8G6;D|CA4|~;S_`$!kYBcHDT*&^UkXlDUjc~ z_G7TEXM@EyWqmOSLVtL>srKurL2XIHs`co$jyKDDpI@W|7i=ax%Lq5f(>zpNhj|N? zAP;=T_{e%c*5KKrsdiizjS|c;1uJVnI{&$kp2p%~C`?B2=oth~1OCwFVJwhK64WgI z70Tk@LnZX!E+8sY6APsko}9{WWKG>TD)fwpTTi%QCstrEM`XR);161E6ueQ>k6(1x zE>!}_xRs^oZ%Mm)y^t>i3%eu}VThW3`oo)v?bNmJt;zGsme|T_eLvtw>s!B8TE9g5 z#}iuB^g@xr)lpo7V7j*tvK~((Dn3~7_%&%EczG?*Wqch>Lk}KBi>zg9w@cT7>;;1g zr)5aDMl1cQWJ6rvBc79fzRtoeOi>r! zLvF*Dmyy$UXi)|rS83gq+fZI82=(iT8VxQ(rE-0beiaSx8-mV;UagI6BUK9(l2>aJ zf~odq#Bb*D>>((A3){lur9z_GTT$&T+n7XdVq1@561kOa(=NRZ%~P^1r7qgiHql(P zWZP+Gy1iYP8Z=z$4Nn(SAZk1(>%goY z4(m3rC(h*}l;(9{U6;4In3B}Rcs)>~8M6x;7|K4HrTK%U6-Mx0`J~a3$xtV4UP}TG zH38K{ACPKd#26wP_u-3KJIt)Fe%8nOjj0bBY4iH<@5&nJ;9sBQY5K(pnik11jr3{r zngX|VHz#WhCz_5+Y^4|!HOsEBik1Sb*1Rr^!T3;eZ0oZ@M3%5+IPmEM<-+(Ok`yk1 zJM1r@YxA*wSku-9^qLN%nGV6of;eLIoE%3hi_n@yQa>K`dNaOn1CxkPGyzV*rNZ4A9!?u?Q;hLyIu0koQeHethOmvF0^BAq zt2HtqzDm7Lt8$*%yMNb!TOV%Cx3ZB#v?}?f4bH;GC<00~CL@!Nm{J`F6Ib(OOc)4} z*gYk_!Mb+J8`RVqXjeZ(T$}&&!*_pa4Ti6iyl5-}EbHDwVAwUy+O--IBhl5x<2^Nb z3eBQjgNDhqnd2SintBz<)P^)`Q{d3hGsBbMspYj5$Rp{>9=gJuG&LWkR048-d8KNU zlW;(TlN_*8V`%cW?IjX11pGT`m^o2yF9-o%z0{`bTa((9!9bu{pw>atgVzV(25j_s zw^r*kg8~AEyNot&s@<7J8;BJ*VtKMGYVE$vmk-@>yHUOr=&SHMhu^{aMtBY3{-L2Z zctmNdq-2BXM_s<=Zr^}zpVfWd%{O3V)k2ys9N`^egPS)J88v7X1ep|Q<3j3C^I^1~ zX23`troL2Kaz;~=wIw6hrt>KU^OKyW>p?!v$C1Y(oR&?+kP?lo3*&0Oce_N5+bpQ( zZtOi*FpxYV9r9PDXs+EYa{Aa%bz&D#$eFG$gctp%`052+l!k*^Aix4hGC@MwEjCxI z?0{lc;+hLO6B9<4Z}l0*>U@bft1lNY#nM~rdeDQH(du|ru`I{J4T3p-^U0me6*e{0uCf4}F9aMObsBEx)6YCx) zK52zT?qO+rm)}$6E7+2x(N4PPiS+E_a7iHkq1u;Nr=nbQQtKt z5`Ds2^v+q%#h2*B`QbPVwu@|DSQe)D{=549Q43HgVI_aY*(YZsouCx@E?9T~}M}>x@ z06D*o^M*nUaM=!E`svRnjwE~e0`pd6Z+RWL4vsDEq9d){Qfw`Y3;IzueAG{g*=8me z8bG#}Dg0>P+C17<#lFM5JiBi%lY44RnMcQz$?>@uP{nuxiC5CjGbCf%8P9QXn|7IZ zQl})8+uWKFT+?H*qwh5rO4jKy4Zl|C<5I5PN^YAX?A#!8n!r9$xy?XWUHhcPu7L04N|3UxN)Pv6>rLMXKdWY!^S?#%_T86xvi6wbZOMl$=q4LKlUH zRbZcux!EmzN%N@+a1I@MweAkhaM}{?)qQVtR9LJmvnzEWuPApyEseu{w1H+cFYDs8 z@RHx7#^w>%t=*^l#<;bop5QgzffioX1!_47UWs+38k^C}bYC2osI_y4oNkAEP#3~! zBz;I8f##AoUGt{lrt8i0(URFJweWsy@5jte-iw)@Y|JG3OD?Tb`!;W) zb+=&oI@C$hjmQqRD|uEW%P_L+z%_R^S`Ev}v)=d{wuCY9a2o>!M+;-D43q#XgL(qk z5Ca2AMKIS{_oB>$`4L5Sw1b&d?-+ijmC|VO7! zdtx9*(_<;192g4J%S7;C7C@1E3Lqu{ismp?9UztfVyoZ5hre?+{Js6YU_wu*`>zW@ zxR33lg!{sN`#Sew1R&n?OV#GG`M;;ya;$1LRyF$rRT)cFbZlWWVT&!m|HWpH>LUAa zK*43t>c+a_dOI=E)3F`Eb$*x%6w!X4UwDC`C|30Iy5dee_FQa#;{LmK*%HW*K=f#{ zRw4AbnCo$85(ahWtts72s++ihevptpNJvkK!TO-^GYQ-QHah%_&At-zw4a4`pDVPB zc)Fvzpb54G+!fpEPY!G|2K#{t%li=*c(-z8H;@k%WY397WIZQF1)lS-d1sYX)wbhW z?XRu6x?2Tsb+@ng4zt5FTj#3ooC~xuAfOcw1Diubd$)Q0KMH^%u$vY*&oan&h4*d2 z&cIgI9A|O_b9OS9!I-fN&n(|kf`K#d3Pf5JZMnI2J8ujbf(67?3U(!!gFDx>sz*qlA;ar8-)#z=# zswLjNNh>^jqf8gM9C7;#TZ`rsQ5)B6tkx%jMKoKAxbEoCSgA*^HJ=wD>M$_F!2RIO zEFjic?n(ufPzIdJMd4nWTXA5cv0YRYH>fdNo{}n@)|C+B4%}%GTN{qo8jb0{;B}^M zV_%Nfz{almD|m51V^P{HxBd9B8?V)iX)TixVY!+BHukTB9gtVY6jmd&<^T>h)nq!t z4V)-{u@?Ed6bvg87VBKHzG;4^&&K;HZzNha5Ica#x8v@}zTNn$Cv+xU3TeAFZ!T*Q zL2d6c7ikIebOpMML-xWpq)oOV1F#MmjVXwXM34*%+-_t(Rw-_F>|y#<_1sCRM$FNP)yBlQGKObDXou9As~LfpiJ1?3xPG~XI11@V>Y zAX%2b$=AnztLbDwT~R1dC(vr^y2ah%>L^u zZISxP}w{w^CW%AZ_O^FQ!YS0Q>s_>AvOF-9YoE8`!5RW(GIvwFuh(Mp}H!T6hP$ zbY$+YWjlvLb=Sgl4kJ3wXvZiYF@f95Ziatu)e{naeV3cSAr}|>6A_E)54V#SE4b0J zu)9ORH{b#mxM@RfgXU{PCPpAu1Drmj`dih)yD`^D%P#8U2xuRZ;8Q&uK!T4+Fr*eX@)9@V)3&BWw2ZbcO|muC zpXnhwcY$KnJo+)3|y zIwH2s1?wl~-Q8<(wtat!WJvR)UR40_Pf^&s09@zTjGAN3T0=LAg0V&H#W>lUG|K5 z!#K2QUKHwZWkzRQU*GgWP0nhOvZW!_-BDDp3=5Ps9QtMy>iK$N^zxL%CaGwFRvtVv zwhLjREOcpd*bzLlA(;_PsvI8c6+mXN9E@RaGiIvH^5g$CHz!q(wq6ZBOJ?a`ny z&dJZt6>}`tZm>l6GXZe>7&O{ruzM^bSb1v^uGOZF2C&xL&DOEqd;?C~ZfeFYXgnlq z4rz1Mu4G&A)7Z1IYl!#Kw&Oj3EeoKm+kFWS&|lk@_G<`KM6gizl{*ov<5k+8mf4=| zP_7)HmrBEwN2QIVw2>;UI$y@sC1&f)@fsV8`9W6|*&%02uF@Xy0iDakHQ4~5#h4x&a`9Bx4dZD$(9`(6}*HlYB z_8PQrijE-ci@pHZ`&cjAhn?FZ0%ZWYg0YIwu>lI*A7%Rf?Y^-M8)-T1;X9$XSx7tt)w5hyS>uas;+9}ue zj4HXZ^;0EBP}~R=w{o%2k+DbfguMCC`C7`9Sip$TJ-Sy-jsrHZQcWp8>H%K!I#@W2 zXYXn}1|mfS>Ve{M!ZsaB5Dx9OsWUPX=AL0yrK4ET$xD@fC>xr*7iL8SN(Fx!j0lb`sPw;@S+Tbn*whpS*0MDPV`oa= zS*5S#^K9ldMMs^lEf7vyI0}{SWu6lN`;4%5Q4)#@*I7`~VYarh56YBQaF38$L8mb% zGZ?l>FVX3zc2UY~mDSf+%H3h>i)+*VqM1RbK&nSIYO5e38{VXp%E#~uRUuwwm8ByG8QhYda zvDr$RlFJkeX|GMv2q}zc_93YETo{Yi)-b-@R&z;1GdqdMMGX<$1umqC+ z1@U9qwxyEw9+6JdhNp@stRT3`NP-&6Ahy1G7rV#W>pL`VC=gZI9WPyt|kr%o{AG7 z$s5M!Fuz7W##8o5t)b0FVai|LDiz`3Ca}VTOrscjWen7dc?R_F0mxpM^Jv0>{YF!5 zNZmNOdB+ej2Hp(&)lFy;13>d|wMbL#sVM5BNkD%#V>{y&_Vqhs?d$ial$7~n>VjFr zvrH_L(c%H??a~t*2x)^z_1!<3uP?AhIS)>}-J(_n}mDrzHb`;~hXXPAS z-RP;rw1JX0Hm+7WTn7cjm1ETQ6w?Upx+q<9_Jkl%Urhj)Q9!0mzy3VnTU)ow*sCO@ z5ga~y5%Ym&sd)$0KA^dTXRg^ac|Dob`|zM?#XAXvSeULrh=r*L@lK-S5f|$s{QL|g z(?a?5)WV`9-07jS3Ef8zJNSa1=OSAfX`<$Bi)T=!nL(XPEuvY)P3^>RY5vh^;2L>0 zR`V|h!aLld|1Mn?lA}#=DJAq7YO&hm@*97&mVis8MPkkT75bR((ZF!8oTlC7EdPct zF8NRMe^JLQj%+cas9o3oM-<52|8$5qF@53{R!XdKo&Si=;@{Ulm5wZ~&0itpR~&hd zdDk9DTG-*4wq{a?3dzYa}hJ@rYXo=NIs zczQ*cA4AK0#-ayvHEm+BgQ{DX(Z!z2bTv0PjG%M1!Ymnfx-dw|`s4|};!aivm#&cR zQl&dJ4tsMER6>h1Z&zGw--XEV^NaiKyS_{N1>XdtZVTP$iw&vA{Fy5D8))bkrMZ#$ zHzv@&sLo%Z4Oo(Ws%<_e2WrzFVl@>zas6`+4f2l4(L60-+)8$GQqxlq{c_~$EX~Pl zC?%5|L!LHXLg5({DFdkkzqdPQ{}Fvy=MLc}>ZKbM??b zJ$_?qbv#$sJG40o52F-2-p8lP#|tWJ7K@Q*5{dis65dIvE0H(g(mlPB;w8>1uJ7jo z-t%;SKM+q$=Y$z4H}}ud?ffSRCs{sBSL7UB)Q?l@Q*=MSM>6fL)hT&F@zl!5a3Of{ zU`kuK$lqL<#2YKzivVTj>OqzHp?G1T4K2>Rgy&MMjTa{MFf>T*qgSFY)zicI#u9#) zCb|P`9)D{<(D5AJRksmc}tX8_t`}@jz%b_!M@!gqT%Bw6IORtA-Z_t}8 zqHpmki-6zc&nWBdm7D!J7KQN`3tRhKy~i&vvk0Z@lk0f}!8-Ns!FhV?U}m~P!=A=n z@kzK%&!zAZOI!W<<)|gxp73T1G&-#-b*Z$k-faQ%I}+|Q@@Ha};`1j`NC=oAI+P!? zd#tx$@(oq`5<=MnQe|oH#p?0gtwC{Kim<# zN6*06?>Uv1@cN4-Bg1`q?gcR#dR-dFyf4;<-7rYG6ovz&qI zAE=F49cWrJXq1)=WEvDUyRelp}8-3 zOxF6O5S~4m{&YrN7h-oZ;GwJ0BBl$`LCVMK0@vyK{v#u)6&N4}9?EM(q_^Eau%N!+l5InE{_xBo^Rp~~h`Nwi5% zb22KJky_2q)KGsiDx@AYEv2`yoJ&2lDTwsY#$eYGZ^ZTNDEEdWl!wTv4RgV5>Th`3 zFjk1{MBrv4P3O2z>CTIE(wm9b`H>k%z16_Po*j(~7Z4&&zfi}mRqjRXN~(Gnpz0n_i&H?H@l9rZW5`J=WBCuIR=Y)L-z?@)=WVE8K;Y<2z-H}U)0;m>Ju+%w^Ft7ogN$B5?+Z6_Yy>V zG%4O)<9+8H*}EG7AMD13>%RJURXaQa@S1jW(!+Kx`M=>iWjjZ8UrmoXt)rt>ulq~R zuhY_R)O{`CO)ut6is3Cco^I=c@bQja)8wyrtc5dpU1d4+WjpfBKw1lDrcA*p`z;x) zLXI=jz>8g{r{PDsZ2$F{w7soOqUDp~caTg>dZ(o%ouxOl-T^4DXz^A8;AYjokKy}F zzWtdgL7XLsHPP%vX!f2+W$$^%;$5&Gk~ziOTRac8UwB`8v!Ftvb$DyjlYZbyKi~+* zDU4%dwE6O((m+pkPQotU%o}SQ`3QAUvDn173pcszv1d~5qR3Bl*H#hxNfgFpT!%A8 zH*QI`ed^Ca)0sZ!{&qbBEg{9_SM?IRc1*aQYhxP|cF9N-Ho~`a7taWpjX-AS8u#sd zsa{@xHTo;>VU--uMQCS+c_%_%??PxAdxQDc1cy zD)vLzQX%j6@Blj_+<#T%{Gpyxy&nJOB;dtVkkdJn75R=aa!0XgXKcgSa^aaZzb9)F z{>+Bg^rGJg6zMM|==OIDztqW$k#z50P_vJIwwjK~ zrYq8Pdk}TO4jTLCnx3j=kCCZ5!+KYe6Lmo!aVHX|BVeq03M*);bdp}N2I%hm|0~t{ zWL?>(T4M`+ir3mLof*Y@ge|z+KF%BdtcijfJc}r&>*g+^OJNudy}i?Kdo?u1&sa`# z{i6V32kqG~nVaQM-3ppQ&y3LvpAm=c>1wgRiL1uePSh6qp-}Bwu{y^jdUi1(IXkvr z6*ka@oSqZg9E@xa4d=P(Gpu>OzeJ6kzM!}$4AW=Zf@>dT%B-o=MY1s$*+{S3Ra6*t^Hp*94R>g1?7vzz(V%q% z-DG5~cpiJcUQWbmiH?0Vuae40TF+zSxjyDP8JR=p@yNm)nxcpu>@7W5>+hRn6TT4aV;m={;9&cOn{S#vDR1ECy2GdwiD`rWoGbCVf7g%69&G%-qn*L4wtinBd z6x+7q26{JjzMPJyi`RZ5i|6|C4o|V1EL2jcqO_QNK+#%F68(TwQBL?@T5m3<_s6h( zGWW~c|JUBR$H-OHas1BQeb3gN?Q_Ki&(H^zZE=B?qLjANEo*mamjaDcMe**;o$hpJ z?w!5&&URNZT^>fnL^Kcs{>eZ7BZ>bLLlgfqA@BzQV@xE1e}J!&U<_)4pWiuW?w!RN zjsIzOvb{a;$M13Od3^8h$Zei4y0TdW5*pw$Kxe${^}hm!+AU3M+D(g^y(&oT7fOF| z6@M@1;Q*l7X%bDFJF%e}0WasLOBz3m_Z3TOaMI(wg0CHCXe7;x?%gSho=}bT*Q?#v zb>)*Fx@Cu!s3BebkkIpuJQ!S^^%rvQG{wI`Jol?mY|0~D2iM*U7MGs<5~2dn@9k((vfukxj7vorPMyo`4bn8D}Q3{1%7w7|#tdtixMTe-7U23Dv1 z+;wGu0er}UlFtaz9F>?A=sC{cARBK96rGfZ_*|IsPwB3l5=sKgcpFM`@h5+plE0OU zx^?G(Dgi_~h8M^ua28FMcPw4r(R3lod`+ppjC@z)AB3d8lgqQo`Y!R@tdcLuWlMUD zlG1>&9FY~!?*(>_T7fQR0R-;J;eg{0LY-4Woj>MD#)$MMAP~A^S0rF?w)CFdr){s% z2KYfeKmv~lMCugp<~)~{bSgW#G;+NFDT;Gx} zl-_dH8Lp3=0ZI=AFU)BQ~stu%KAHQO(ejX zMsmT19pbq5OzE^H`Dr2fnhS36h0+Ide=0x)g!d7FD&m|@FVX(ciYpi|5H63n@?G+2 zb%wiL+&r&cd875qYvKtPn&E=Bn2u*%L0er?A=55fUB1$EBLX zkIQY`B0~Kp5!Rg1>epTMx+{17(uYYd{uKr2FHPtkOo;qz$e}Jk1N_MUO}8|`D_rWb zPz*tNJjr$}A0xRe#a%Vajohrj<%Vu3{vBQpvjw@Q+fnWH!Zl83$aCi?B4mal1Z5X>sgmvKWFcp7tKS8Vfi_^%9|eW zD!?k>45uDIO=d<4oAdcgIXP%U(0*ECGjF7@O@ibQMe4{E50~@_)BB@tfg`zIi5Ql& zoLe0~@Pr)nbJiwEVmbQyP>v)!7!HL2Svhbo1EO9lI{(3EZyQNAD6m0+4GL^fV1oi1 z6!^cQKu*4BSB~8)l;bC+6-ydMCbZErW-Wpz;`gn!OOMH6(QyNq zSi5rcaXG_!NpM02lRQ#*yC-*t;A-wF*{%zWfBd%Q2qnwC#4wzu#LSz;&iKJFBuqL&Fl+U!On&CBxbM)?YPcdOmHf<2}&H_(_prUF_l21sa(Sl*I)Zd3-A zIAI#IkKKWZwBcf6g|wKY(P^=brOUmUw46uZ!YbhAwBcf6T?zzGtP>sN{P3VOyhj=? z>=VO18T;}YVZn@hBTlp~N>v#)?__O=kVte3EQZ6aX_pP zD|m&7_LO$8uwZQf>%}zM8^ma|8?I7+xmTjKnIE%i-%;+7Bl#YYOE^gZmxoI%7QnYj zT9y$zw4EObc3D^T>2;NBF?iazkC+uQU(Zv<0P;-DSXVUr1A}0@Xph(=VkssfN+Kkb zItL91P@r!^9eY%W-Byho6LkT~s5TYLBC{ifErwP-a5PukBkDa;IBHR1JLSfTT|+yE zj3JVuAinw}iMAeEe)SqDjWrH=^TnIczdja0py&2Mb)g{5$1%{>?qU+*Vf7*r1KKmT z9O)rJ)={W~Ge_%b28C_HEVmR*!5SZrnI*d5E>=rV81nTiUC>*C^80XSFXsuKBj1& z-=1?YFHrd5_EBfZ866#U`1Q)eaR%j4kca$6osl8p-JyObw`H(E_+TH8g3~8?Y)+lh zKDu%aNlwal^3I?H%cme&$=#W>d$=n^yY*wx1oJeGu0*NxW2wt=HsS7(hcjq`d3MKl zCB<3n@{WjGKL$-OPyRL&x_Praul`#XuZef{bZKZxAwnRIeP{}4@^r_inY5#u0@|$~ z>nJpN^DVa?IC$Hk+dor2K6T=*>9eKlKfVb&0Hb%04;On1*KWSuozHuXwy%;fR1GgW@2i^R^b#sxZAm*+ z-0~{EYWTH8={79a>BT*5d^Oedn^HdA2-^{<=G*bAGZQ5AuHB+dDqf8fzo{x-qmiW| zq!mV9RBx=RcHk|0^@i^BOt9=V>SXf$MQ17s<9L77m+Dlb9xRgItL_g2GU*MqewMxOUf{|o!jz{65AE;Ixip_lb9?RSgKWrbMt7oz~#~Wc~5q9dnMMwsH$oOZ% ztq5dHoQaW$%zM^fNem%0(eGOEE5f^`m)Pn%)P$?;CUWJJtpjS(Jolw4p{osorrUuLB*|ZIwi>?B(r~MZ2zaOria^hWhel~; zP}HPet5a-*f-IBzgyFRm;;A@6lA6*Ht!NpgY$}mWkxZ*(COP0#t7Wls3PPv_FIMwD z+=zYpL>*_MFbOMR!}4D!YFlU&KI4wa?L5)3P{s;c3{CxnhQ>)fFvE-G2NhchJ#9Oj z@g}YFVuYCJ?&}f6mX=2Aj;9i_E;w$t7!8D^_vekru5a6%pIi*1#Z>(}{%-ZZ+V~QfeBHx|H*fj{qvzYT8scEa(v0D@#|$+U zGh}5{kXB`ZQ(mBZ=?ADujqz0(3afabo#2EOi4G=mp` zR^0_JsG=43A+IP)Hi+HZ4tW>&D;3|b(m1-pxLI#E;c`2uIuB^J+n~-HL%-Xo-V8^K z!seBDmZ^uGNa=uF`lej($m4bSw^t?{Jz3mG(hte5QWpE~T~h!5^6%uf|E~4BQ=som<-4mh=gPVF{l|AbO%^4#Q#vo~lr8lQ6ZPoA5YJV(&}$(4!86-5l3 RbY|wJ9Wpy} Date: Thu, 27 Dec 2018 06:57:00 -0800 Subject: [PATCH 4/9] only support clock id 0 --- src/apis/emscripten/time.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index 7b3ef97fa..614a38540 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -40,7 +40,11 @@ pub extern "C" fn _clock_gettime(clk_id: c_int, tp: c_int, instance: &mut Instan tv_nsec: i32, } - let timespec = time::get_time(); + let timespec = match clk_id { + 0 => time::get_time(), + 1 => panic!("Monotonic clock is not supported."), + _ => panic!("Clock is not supported."), + }; unsafe { let timespec_struct_ptr = instance.memory_offset_addr(0, tp as _) as *mut GuestTimeSpec; From cb65c9dad6ed8fcccccc15440dcec2c4dca5e3e4 Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Thu, 27 Dec 2018 09:41:29 -0800 Subject: [PATCH 5/9] refactor localtime functions to use time crate lint fixes --- build/emtests.rs | 3 +- emtests/localtime.c | 13 +++----- emtests/localtime.output | 1 + emtests/localtime.wasm | Bin 45695 -> 45590 bytes src/apis/emscripten/time.rs | 57 +++++++++++++----------------------- src/emtests/localtime.rs | 9 ++++++ src/emtests/mod.rs | 1 + 7 files changed, 38 insertions(+), 46 deletions(-) create mode 100644 emtests/localtime.output create mode 100644 src/emtests/localtime.rs diff --git a/build/emtests.rs b/build/emtests.rs index 591be871b..5dc3225e3 100644 --- a/build/emtests.rs +++ b/build/emtests.rs @@ -11,11 +11,12 @@ use std::process::Command; static BANNER: &str = "// Rust test file autogenerated with cargo build (build/emtests.rs). // Please do NOT modify it by hand, as it will be reseted on next build.\n"; -const TESTS: [&str; 4] = [ +const TESTS: [&str; 5] = [ "emtests/env.c", "emtests/puts.c", "emtests/printf.c", "emtests/clock_gettime.c", + "emtests/localtime.c", ]; pub fn compile(file: &str) -> String { diff --git a/emtests/localtime.c b/emtests/localtime.c index 9dffefd9b..a2ad4162c 100644 --- a/emtests/localtime.c +++ b/emtests/localtime.c @@ -2,19 +2,14 @@ #include int main (int argc, char *argv[]) { - printf("Hello wasmer!\n"); time_t rawtime; struct tm *info; - char buffer[80]; - time( &rawtime ); - info = localtime( &rawtime ); - - printf("Almost!\n"); - printf("Current local time and date: %s\n", asctime(info)); - printf("Done!\n"); - + struct tm info2; + time (&rawtime ); + struct tm *p = localtime_r(&rawtime, &info2); + printf("localtime\n"); return(0); } diff --git a/emtests/localtime.output b/emtests/localtime.output new file mode 100644 index 000000000..826f3db8a --- /dev/null +++ b/emtests/localtime.output @@ -0,0 +1 @@ +localtime diff --git a/emtests/localtime.wasm b/emtests/localtime.wasm index b8641411ec0e528fe9628a3c5b0a964d75175d93..1da0cd5a9b84dbb56c4049ff999b4df06632e314 100644 GIT binary patch delta 3936 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 diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index 614a38540..43c709089 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -74,17 +74,15 @@ pub extern "C" fn _difftime(t0: u32, t1: u32) -> c_int { #[repr(C)] struct guest_tm { - pub tm_sec: c_int, // 0 - pub tm_min: c_int, // 4 - pub tm_hour: c_int, // 8 - pub tm_mday: c_int, // 12 - pub tm_mon: c_int, // 16 - pub tm_year: c_int, // 20 - pub tm_wday: c_int, // 24 - pub tm_yday: c_int, // 28 - pub tm_isdst: c_int, // 32 - pub tm_gmtoff: c_int, // 36 - pub tm_zone: c_int, // 40 + pub tm_sec: c_int, // 0 + pub tm_min: c_int, // 4 + pub tm_hour: c_int, // 8 + pub tm_mday: c_int, // 12 + pub tm_mon: c_int, // 16 + pub tm_year: c_int, // 20 + pub tm_wday: c_int, // 24 + pub tm_yday: c_int, // 28 + pub tm_isdst: c_int, // 32 } /// emscripten: _tvset @@ -155,21 +153,24 @@ pub extern "C" fn _localtime(time_p: u32, instance: &mut Instance) -> c_int { // NOTE: emscripten seems to want tzset() called in this function // https://stackoverflow.com/questions/19170721/real-time-awareness-of-timezone-change-in-localtime-vs-localtime-r + let timespec = unsafe { + let mut time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; + let seconds = *time_p_addr.clone(); + time::Timespec::new(seconds, 0) + }; + let result_tm = time::at(timespec); + unsafe { - let time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; - let result_tm = &*localtime(time_p_addr); let tm_struct_offset = (instance.emscripten_data.as_ref().unwrap().malloc)( mem::size_of::() as _, instance, ); - let tm_struct_ptr = instance.memory_offset_addr(0, tm_struct_offset as _) as *mut guest_tm; // debug!( // ">>>>>>> time = {}, {}, {}, {}, {}, {}, {}, {}", // result_tm.tm_sec, result_tm.tm_min, result_tm.tm_hour, result_tm.tm_mday, // result_tm.tm_mon, result_tm.tm_year, result_tm.tm_wday, result_tm.tm_yday, // ); - (*tm_struct_ptr).tm_sec = result_tm.tm_sec; (*tm_struct_ptr).tm_min = result_tm.tm_min; (*tm_struct_ptr).tm_hour = result_tm.tm_hour; @@ -179,8 +180,6 @@ pub extern "C" fn _localtime(time_p: u32, instance: &mut Instance) -> c_int { (*tm_struct_ptr).tm_wday = result_tm.tm_wday; (*tm_struct_ptr).tm_yday = result_tm.tm_yday; (*tm_struct_ptr).tm_isdst = result_tm.tm_isdst; - (*tm_struct_ptr).tm_gmtoff = result_tm.tm_gmtoff as i32; - (*tm_struct_ptr).tm_zone = copy_cstr_into_wasm(instance, result_tm.tm_zone) as i32; tm_struct_offset as _ } @@ -194,30 +193,18 @@ pub extern "C" fn _localtime_r(time_p: u32, result: u32, instance: &mut Instance unsafe { let time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; - let result_addr = instance.memory_offset_addr(0, result as _) as *mut guest_tm; + let seconds = *time_p_addr.clone(); + let timespec = time::Timespec::new(seconds, 0); + let result_tm = time::at(timespec); - let mut result_tm = tm { - tm_sec: (*result_addr).tm_sec, - tm_min: (*result_addr).tm_min, - tm_hour: (*result_addr).tm_hour, - tm_mday: (*result_addr).tm_mday, - tm_mon: (*result_addr).tm_mon, - tm_year: (*result_addr).tm_year, - tm_wday: (*result_addr).tm_wday, - tm_yday: (*result_addr).tm_yday, - tm_isdst: (*result_addr).tm_isdst, - tm_gmtoff: (*result_addr).tm_gmtoff as _, - tm_zone: instance.memory_offset_addr(0, (*result_addr).tm_zone as _) as _, - }; - - localtime_r(time_p_addr, &mut result_tm); - // let tm_struct = result_tm; // debug!( // ">>>>>>> time = {}, {}, {}, {}, {}, {}, {}, {}", // result_tm.tm_sec, result_tm.tm_min, result_tm.tm_hour, result_tm.tm_mday, // result_tm.tm_mon, result_tm.tm_year, result_tm.tm_wday, result_tm.tm_yday, // ); + let result_addr = instance.memory_offset_addr(0, result as _) as *mut guest_tm; + (*result_addr).tm_sec = result_tm.tm_sec; (*result_addr).tm_min = result_tm.tm_min; (*result_addr).tm_hour = result_tm.tm_hour; @@ -227,8 +214,6 @@ pub extern "C" fn _localtime_r(time_p: u32, result: u32, instance: &mut Instance (*result_addr).tm_wday = result_tm.tm_wday; (*result_addr).tm_yday = result_tm.tm_yday; (*result_addr).tm_isdst = result_tm.tm_isdst; - (*result_addr).tm_gmtoff = result_tm.tm_gmtoff as _; - (*result_addr).tm_zone = copy_cstr_into_wasm(instance, result_tm.tm_zone) as _; result as _ } diff --git a/src/emtests/localtime.rs b/src/emtests/localtime.rs new file mode 100644 index 000000000..6ee4ad406 --- /dev/null +++ b/src/emtests/localtime.rs @@ -0,0 +1,9 @@ +#[test] +fn test_localtime() { + assert_emscripten_output!( + "../../emtests/localtime.wasm", + "localtime", + vec![], + "../../emtests/localtime.output" + ); +} diff --git a/src/emtests/mod.rs b/src/emtests/mod.rs index 8e7884ef6..7b579dc42 100644 --- a/src/emtests/mod.rs +++ b/src/emtests/mod.rs @@ -6,5 +6,6 @@ mod _common; mod clock_gettime; mod env; +mod localtime; mod printf; mod puts; From 5f9247cb8e2bb388d40191cc80f3d9552d51de25 Mon Sep 17 00:00:00 2001 From: Brandon Fish Date: Thu, 27 Dec 2018 14:25:47 -0600 Subject: [PATCH 6/9] Make emtest generation cargo fmt friendly --- build/emtests.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/build/emtests.rs b/build/emtests.rs index 43a819402..dee31a190 100644 --- a/build/emtests.rs +++ b/build/emtests.rs @@ -116,7 +116,12 @@ pub fn compile(file: &str, ignores: &Vec) -> Option { let contents = format!( "#[test]{ignore} fn test_{rs_module_name}() {{ - assert_emscripten_output!(\"../../{module_path}\", \"{rs_module_name}\", vec![], \"../../{test_output_path}\"); + assert_emscripten_output!( + \"../../{module_path}\", + \"{rs_module_name}\", + vec![], + \"../../{test_output_path}\" + ); }} ", ignore = ignored, @@ -147,7 +152,7 @@ pub fn build() { let test = path.to_str().unwrap(); if !EXCLUDES.iter().any(|e| test.ends_with(e)) { if let Some(module_name) = compile(test, &ignores) { - modules.push(format!("mod {};", module_name)); + modules.push(module_name); } } } @@ -155,6 +160,8 @@ pub fn build() { } } } + modules.sort(); + let mut modules: Vec = modules.iter().map(|m| format!("mod {};", m)).collect(); assert!(modules.len() > 0, "Expected > 0 modules found"); modules.insert(0, BANNER.to_string()); From e7cf5cb5b1c53dbf503f0b55a85af9c3dddca6ba Mon Sep 17 00:00:00 2001 From: Mackenzie Clark Date: Thu, 27 Dec 2018 20:15:01 -0800 Subject: [PATCH 7/9] use default values for gnu library extension fields no extra clone no mut warning --- src/apis/emscripten/time.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index 43c709089..f588327a9 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -83,6 +83,8 @@ struct guest_tm { pub tm_wday: c_int, // 24 pub tm_yday: c_int, // 28 pub tm_isdst: c_int, // 32 + pub tm_gmtoff: c_int, // 36 + pub tm_zone: c_int, // 40 } /// emscripten: _tvset @@ -154,7 +156,7 @@ pub extern "C" fn _localtime(time_p: u32, instance: &mut Instance) -> c_int { // https://stackoverflow.com/questions/19170721/real-time-awareness-of-timezone-change-in-localtime-vs-localtime-r let timespec = unsafe { - let mut time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; + let time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; let seconds = *time_p_addr.clone(); time::Timespec::new(seconds, 0) }; @@ -180,6 +182,8 @@ pub extern "C" fn _localtime(time_p: u32, instance: &mut Instance) -> c_int { (*tm_struct_ptr).tm_wday = result_tm.tm_wday; (*tm_struct_ptr).tm_yday = result_tm.tm_yday; (*tm_struct_ptr).tm_isdst = result_tm.tm_isdst; + (*tm_struct_ptr).tm_gmtoff = 0; + (*tm_struct_ptr).tm_zone = 0; tm_struct_offset as _ } @@ -192,9 +196,8 @@ pub extern "C" fn _localtime_r(time_p: u32, result: u32, instance: &mut Instance // https://stackoverflow.com/questions/19170721/real-time-awareness-of-timezone-change-in-localtime-vs-localtime-r unsafe { - let time_p_addr = instance.memory_offset_addr(0, time_p as _) as *mut i64; - let seconds = *time_p_addr.clone(); - let timespec = time::Timespec::new(seconds, 0); + let seconds = instance.memory_offset_addr(0, time_p as _) as *const i64; + let timespec = time::Timespec::new(*seconds, 0); let result_tm = time::at(timespec); // debug!( @@ -214,6 +217,8 @@ pub extern "C" fn _localtime_r(time_p: u32, result: u32, instance: &mut Instance (*result_addr).tm_wday = result_tm.tm_wday; (*result_addr).tm_yday = result_tm.tm_yday; (*result_addr).tm_isdst = result_tm.tm_isdst; + (*result_addr).tm_gmtoff = 0; + (*result_addr).tm_zone = 0; result as _ } From 9a8d3a2546fd69a69bd502bcdfb878b7010e94bf Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Fri, 28 Dec 2018 12:38:39 +0100 Subject: [PATCH 8/9] Fixed formatting --- src/apis/emscripten/time.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/apis/emscripten/time.rs b/src/apis/emscripten/time.rs index f588327a9..3554d6386 100644 --- a/src/apis/emscripten/time.rs +++ b/src/apis/emscripten/time.rs @@ -74,17 +74,17 @@ pub extern "C" fn _difftime(t0: u32, t1: u32) -> c_int { #[repr(C)] struct guest_tm { - pub tm_sec: c_int, // 0 - pub tm_min: c_int, // 4 - pub tm_hour: c_int, // 8 - pub tm_mday: c_int, // 12 - pub tm_mon: c_int, // 16 - pub tm_year: c_int, // 20 - pub tm_wday: c_int, // 24 - pub tm_yday: c_int, // 28 - pub tm_isdst: c_int, // 32 + pub tm_sec: c_int, // 0 + pub tm_min: c_int, // 4 + pub tm_hour: c_int, // 8 + pub tm_mday: c_int, // 12 + pub tm_mon: c_int, // 16 + pub tm_year: c_int, // 20 + pub tm_wday: c_int, // 24 + pub tm_yday: c_int, // 28 + pub tm_isdst: c_int, // 32 pub tm_gmtoff: c_int, // 36 - pub tm_zone: c_int, // 40 + pub tm_zone: c_int, // 40 } /// emscripten: _tvset From 2ee910416df89d7fc9572a27f0481340343f111a Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Fri, 28 Dec 2018 13:59:55 +0100 Subject: [PATCH 9/9] Trying to fix failures in build-mac tests --- .circleci/config.yml | 3 +++ src/apis/emscripten/syscalls.rs | 9 --------- src/bin/wasmer.rs | 2 ++ 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4203a0881..aca4d3e96 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,6 +91,9 @@ jobs: command: | export PATH="`pwd`/cmake-3.4.1-Darwin-x86_64/CMake.app/Contents/bin:$PATH" export PATH="$HOME/.cargo/bin:$PATH" + # We increase the ulimit for fixing cargo unclosed files in mac + ulimit -n 8000 + sudo sysctl -w kern.maxfiles=655360 kern.maxfilesperproc=327680 make test make lint - run: diff --git a/src/apis/emscripten/syscalls.rs b/src/apis/emscripten/syscalls.rs index 150ff625b..17cc91678 100644 --- a/src/apis/emscripten/syscalls.rs +++ b/src/apis/emscripten/syscalls.rs @@ -852,15 +852,6 @@ pub extern "C" fn ___syscall197( 0 } -// /// fcntl64 -// pub extern "C" fn ___syscall221(_which: c_int, mut varargs: VarArgs, instance: &mut Instance) -> c_int { -// debug!("emscripten::___syscall221"); -// let fd: i32 = varargs.get(instance); -// let cmd: i32 = varargs.get(instance); -// debug!("fd: {}, cmd: {}", fd, cmd); -// unsafe { fcntl(fd, cmd) } -// } - // getgid pub extern "C" fn ___syscall201() -> gid_t { debug!("emscripten::___syscall201 (getgid)"); diff --git a/src/bin/wasmer.rs b/src/bin/wasmer.rs index 7f9f82bd4..77596f3d9 100644 --- a/src/bin/wasmer.rs +++ b/src/bin/wasmer.rs @@ -43,6 +43,8 @@ fn read_file_contents(path: &PathBuf) -> Result, io::Error> { let mut buffer: Vec = Vec::new(); let mut file = File::open(path)?; file.read_to_end(&mut buffer)?; + // We force to close the file + drop(file); Ok(buffer) }

(zc^=yw~%o8gF2*t`-?Gxe|&DeaL<-;~{s zJfzG2Lo(s$$-+Jse@J$fve19;lJftTf2-U6yV_5F?%pFqyeH#k-CO&tdbo9X&w^49 zujoH#40T4RA!q-%QflJt#HzD5Xw~bVa`sQ09iKRh*Zzss@rhMM2y%61=BAy%3!J&~ IoOAO(0LcO#tN;K2 literal 0 HcmV?d00001 diff --git a/emtests/test_globals.c b/emtests/test_globals.c new file mode 100644 index 000000000..2837524a9 --- /dev/null +++ b/emtests/test_globals.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +char cache[256], *next = cache; + +int main() { + cache[10] = 25; + next[20] = 51; + printf("*%d,%d*\n", next[10], cache[20]); + return 0; +} diff --git a/emtests/test_globals.out b/emtests/test_globals.out new file mode 100644 index 000000000..2cb6768e4 --- /dev/null +++ b/emtests/test_globals.out @@ -0,0 +1 @@ +*25,51* \ No newline at end of file diff --git a/emtests/test_globals.wasm b/emtests/test_globals.wasm new file mode 100644 index 0000000000000000000000000000000000000000..24fd30bd1c162d69f073f75047cc48c8026da7d1 GIT binary patch literal 45397 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%0Dk%IZsNyOB}`P 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 +#include +#include +#include + +int main(void) { + time_t t = time(NULL); + struct tm *ptm = gmtime(&t); + struct tm tmCurrent = *ptm; + int hour = tmCurrent.tm_hour; + + t -= hour * 3600; // back to midnight + int yday = -1; + for (hour = 0; hour < 24; hour++) { + ptm = gmtime(&t); + // tm_yday must be constant all day... + printf("yday: %d, hour: %d\n", ptm->tm_yday, hour); + if (yday == -1) + yday = ptm->tm_yday; + else + assert(yday == ptm->tm_yday); + t += 3600; // add one hour + } + printf("ok!\n"); + return (0); +} diff --git a/emtests/test_gmtime.out b/emtests/test_gmtime.out new file mode 100644 index 000000000..e036282ac --- /dev/null +++ b/emtests/test_gmtime.out @@ -0,0 +1 @@ +ok! \ No newline at end of file diff --git a/emtests/test_gmtime.wasm b/emtests/test_gmtime.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6f7df4baeb1cdc2c918afa2cc34068646f881882 GIT binary patch literal 45876 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 R)zr+S3cNtglxEb;{{SRyL}LH| literal 0 HcmV?d00001 diff --git a/emtests/test_hello_world.c b/emtests/test_hello_world.c new file mode 100644 index 000000000..9409e0a8e --- /dev/null +++ b/emtests/test_hello_world.c @@ -0,0 +1,12 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() { + printf("hello, world!\n"); + return 0; +} diff --git a/emtests/test_hello_world.out b/emtests/test_hello_world.out new file mode 100644 index 000000000..30f51a3fb --- /dev/null +++ b/emtests/test_hello_world.out @@ -0,0 +1 @@ +hello, world! \ No newline at end of file diff --git a/emtests/test_hello_world.wasm b/emtests/test_hello_world.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bae3b49bdeca60034951dc79dbb66e2a049aabb6 GIT binary patch literal 45321 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 + +int test(unsigned short a, unsigned short b) { + unsigned short result = a; + result += b; + if (result < b) printf("C!"); + return result; +} + +int main(void) { + printf(",%d,", test(0, 0)); + printf(",%d,", test(1, 1)); + printf(",%d,", test(65535, 1)); + printf(",%d,", test(1, 65535)); + printf(",%d,", test(32768, 32767)); + printf(",%d,", test(32768, 32768)); + return 0; +} diff --git a/emtests/test_i16_emcc_intrinsic.out b/emtests/test_i16_emcc_intrinsic.out new file mode 100644 index 000000000..35af1e0d4 --- /dev/null +++ b/emtests/test_i16_emcc_intrinsic.out @@ -0,0 +1 @@ +,0,,2,C!,0,C!,0,,65535,C!,0, \ No newline at end of file diff --git a/emtests/test_i16_emcc_intrinsic.wasm b/emtests/test_i16_emcc_intrinsic.wasm new file mode 100644 index 0000000000000000000000000000000000000000..017720dae1f68d317f23121c59a7f3520f66bee3 GIT binary patch literal 45671 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 literal 0 HcmV?d00001 diff --git a/emtests/test_i32_mul_precise.c b/emtests/test_i32_mul_precise.c new file mode 100644 index 000000000..35ee6d080 --- /dev/null +++ b/emtests/test_i32_mul_precise.c @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main(int argc, char **argv) { + unsigned long d1 = 0x847c9b5d; + unsigned long q = 0x549530e1; + if (argc > 1000) { + q += argc; + d1 -= argc; + } // confuse optimizer + printf("%lu\n", d1 * q); + return 0; +} diff --git a/emtests/test_i32_mul_precise.out b/emtests/test_i32_mul_precise.out new file mode 100644 index 000000000..d46a50554 --- /dev/null +++ b/emtests/test_i32_mul_precise.out @@ -0,0 +1 @@ +3217489085 \ No newline at end of file diff --git a/emtests/test_i32_mul_precise.wasm b/emtests/test_i32_mul_precise.wasm new file mode 100644 index 0000000000000000000000000000000000000000..bb6b625937f78501b4947921611f1ed7cb443547 GIT binary patch literal 45413 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 W)S5;NB&KHOPOH!j)m(i}-S-bOspUZc literal 0 HcmV?d00001 diff --git a/emtests/test_i64.c b/emtests/test_i64.c new file mode 100644 index 000000000..e44254a87 --- /dev/null +++ b/emtests/test_i64.c @@ -0,0 +1,36 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +int main() +{ + long long a = 0x2b00505c10; + long long b = a >> 29; + long long c = a >> 32; + long long d = a >> 34; + printf("*%lld,%lld,%lld,%lld*\n", a, b, c, d); + unsigned long long ua = 0x2b00505c10; + unsigned long long ub = ua >> 29; + unsigned long long uc = ua >> 32; + unsigned long long ud = ua >> 34; + printf("*%lld,%lld,%lld,%lld*\n", ua, ub, uc, ud); + + long long x = 0x0000def123450789ULL; // any bigger than this, and we + long long y = 0x00020ef123456089ULL; // start to run into the double precision limit! + printf("*%lld,%lld,%lld,%lld,%lld*\n", x, y, x | y, x & y, x ^ y); + + printf("*"); + long long z = 13; + int n = 0; + while (z > 1) { + printf("%.2f,", (float)z); // these must be integers! + z = z >> 1; + n++; + } + printf("*%d*\n", n); + return 0; +} diff --git a/emtests/test_i64.out b/emtests/test_i64.out new file mode 100644 index 000000000..1f5d4f860 --- /dev/null +++ b/emtests/test_i64.out @@ -0,0 +1,4 @@ +*184688860176,344,43,10* +*184688860176,344,43,10* +*245127260211081,579378795077769,808077213656969,16428841631881,791648372025088* +*13.00,6.00,3.00,*3* diff --git a/emtests/test_i64.wasm b/emtests/test_i64.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e3b45cc8b006991384fe74c1544aa7868093442e GIT binary patch literal 45936 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 ZSH~w;6=J|`t2{ex1#V!?mS(Lh{sFGSP*MN@ literal 0 HcmV?d00001 diff --git a/emtests/test_i64_2.c b/emtests/test_i64_2.c new file mode 100644 index 000000000..888955574 --- /dev/null +++ b/emtests/test_i64_2.c @@ -0,0 +1,121 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include + +int64_t returner1() { return 0x0000def123450789ULL; } +int64_t returner2(int test) { + while (test > 10) test /= 2; // confuse the compiler so it doesn't eliminate this function + return test > 5 ? 0x0000def123450123ULL : 0ULL; +} + +void modifier1(int64_t t) { + t |= 12; + printf("m1: %lld\n", t); +} +void modifier2(int64_t &t) { + t |= 12; +} + +int truthy() { + int x = time(0); + while (x > 10) { + x |= 7; + x /= 2; + } + return x < 3; +} + +struct IUB { + int c; + long long d; +}; + +IUB iub[] = { + { 55, 17179869201 }, + { 122, 25769803837 }, +}; + +int main(int argc, char **argv) +{ + int64_t x1 = 0x1234def123450789ULL; + int64_t x2 = 0x1234def123450788ULL; + int64_t x3 = 0x1234def123450789ULL; + printf("*%lld\n%d,%d,%d,%d,%d\n%d,%d,%d,%d,%d*\n", x1, x1==x2, x1x2, x1>=x2, // note: some rounding in the printing! + x1==x3, x1x3, x1>=x3); + printf("*%lld*\n", returner1()); + printf("*%lld*\n", returner2(30)); + + uint64_t maxx = -1ULL; + printf("*%llu*\n*%llu*\n", maxx, maxx >> 5); + + // Make sure params are not modified if they shouldn't be + int64_t t = 123; + modifier1(t); + printf("*%lld*\n", t); + modifier2(t); + printf("*%lld*\n", t); + + // global structs with i64s + printf("*%d,%lld*\n*%d,%lld*\n", iub[0].c, iub[0].d, iub[1].c, iub[1].d); + + // Bitshifts + { + int64_t a = -1; + int64_t b = a >> 29; + int64_t c = a >> 32; + int64_t d = a >> 34; + printf("*%lld,%lld,%lld,%lld*\n", a, b, c, d); + uint64_t ua = -1; + int64_t ub = ua >> 29; + int64_t uc = ua >> 32; + int64_t ud = ua >> 34; + printf("*%lld,%lld,%lld,%lld*\n", ua, ub, uc, ud); + } + + // Nonconstant bitshifts + { + int64_t a = -1; + int64_t b = a >> (29 - argc + 1); + int64_t c = a >> (32 - argc + 1); + int64_t d = a >> (34 - argc + 1); + printf("*%lld,%lld,%lld,%lld*\n", a, b, c, d); + uint64_t ua = -1; + int64_t ub = ua >> (29 - argc + 1); + int64_t uc = ua >> (32 - argc + 1); + int64_t ud = ua >> (34 - argc + 1); + printf("*%lld,%lld,%lld,%lld*\n", ua, ub, uc, ud); + } + + // Math mixtures with doubles + { + uint64_t a = 5; + double b = 6.8; + uint64_t c = a * b; + if (truthy()) printf("*%d,%d,%d*\n", (int)&a, (int)&b, (int)&c); // printing addresses prevents optimizations + printf("*prod:%llu*\n", c); + } + + // Basic (rounded, for now) math. Just check compilation. + int64_t a = 0x1234def123450789ULL; + a--; if (truthy()) a--; // confuse optimizer + int64_t b = 0x1234000000450789ULL; + b++; if (truthy()) b--; // confuse optimizer + printf("*%lld,%lld,%lld,%lld*\n", (a+b)/5000, (a-b)/5000, (a*3)/5000, (a/5)/5000); + + a -= 17; if (truthy()) a += 5; // confuse optimizer + b -= 17; if (truthy()) b += 121; // confuse optimizer + printf("*%llx,%llx,%llx,%llx*\n", b - a, b - a/2, b/2 - a, b - 20); + + if (truthy()) a += 5/b; // confuse optimizer + if (truthy()) b += 121*(3+a/b); // confuse optimizer + printf("*%llx,%llx,%llx,%llx*\n", a - b, a - b/2, a/2 - b, a - 20); + + return 0; +} diff --git a/emtests/test_i64_2.out b/emtests/test_i64_2.out new file mode 100644 index 000000000..154bfa578 --- /dev/null +++ b/emtests/test_i64_2.out @@ -0,0 +1,20 @@ +*1311918518731868041 +0,0,0,1,1 +1,0,1,0,1* +*245127260211081* +*245127260209443* +*18446744073709551615* +*576460752303423487* +m1: 127 +*123* +*127* +*55,17179869201* +*122,25769803837* +*-1,-1,-1,-1* +*-1,34359738367,4294967295,1073741823* +*-1,-1,-1,-1* +*-1,34359738367,4294967295,1073741823* +*prod:34* +*524718382041609,49025451137,787151111239120,52476740749274* +*ffff210edd000002,91990876ea283be,f6e5210edcdd7c45,1234000000450765* +*def122fffffe,91adef1232283bb,f6e66f78915d7c42,1234def123450763* diff --git a/emtests/test_i64_3.c b/emtests/test_i64_3.c new file mode 100644 index 000000000..3b4ef6615 --- /dev/null +++ b/emtests/test_i64_3.c @@ -0,0 +1,31 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() +{ + long long i,j,k; + + i = 0; + j = -1, + k = 1; + + printf( "*\n" ); + printf( "%s\n", i > j ? "Ok": "Fail" ); + printf( "%s\n", k > i ? "Ok": "Fail" ); + printf( "%s\n", k > j ? "Ok": "Fail" ); + printf( "%s\n", i < j ? "Fail": "Ok" ); + printf( "%s\n", k < i ? "Fail": "Ok" ); + printf( "%s\n", k < j ? "Fail": "Ok" ); + printf( "%s\n", (i-j) >= k ? "Ok": "Fail" ); + printf( "%s\n", (i-j) <= k ? "Ok": "Fail" ); + printf( "%s\n", i > std::numeric_limits::min() ? "Ok": "Fail" ); + printf( "%s\n", i < std::numeric_limits::max() ? "Ok": "Fail" ); + printf( "*\n" ); +} diff --git a/emtests/test_i64_3.out b/emtests/test_i64_3.out new file mode 100644 index 000000000..c5941b24c --- /dev/null +++ b/emtests/test_i64_3.out @@ -0,0 +1,12 @@ +* +Ok +Ok +Ok +Ok +Ok +Ok +Ok +Ok +Ok +Ok +* diff --git a/emtests/test_i64_4.c b/emtests/test_i64_4.c new file mode 100644 index 000000000..1da2fd163 --- /dev/null +++ b/emtests/test_i64_4.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() +{ + // i32 vs i64 + int32_t small = -1; + int64_t large = -1; + printf("*%d*\n", small == large); + small++; + printf("*%d*\n", small == large); + uint32_t usmall = -1; + uint64_t ularge = -1; + printf("*%d*\n", usmall == ularge); + return 0; +} diff --git a/emtests/test_i64_4.out b/emtests/test_i64_4.out new file mode 100644 index 000000000..709089bf6 --- /dev/null +++ b/emtests/test_i64_4.out @@ -0,0 +1,3 @@ +*1* +*0* +*0* diff --git a/emtests/test_i64_4.wasm b/emtests/test_i64_4.wasm new file mode 100644 index 0000000000000000000000000000000000000000..084a00192a6505b23eec89d1efd4c6e527237440 GIT binary patch literal 45481 zcma%^2bh&bviHxM&N<8(m;odhsTKsxIqS+n9SOUJRqtKz2Gg>xGl)CG$R<|?MMOo# zte7x@3W}J;fC^?5b5_hb=g9Z_*L!AQ_q*ToeAv$Ew?lPxb#--jb#-^)!10Ggg+d|v zW8(qI#EBE5i3ddbQ*ck=fY^ihTR5OlI3Od12PkRbfaIt=_9*4Z;|d29CmvZ#6df5I zbwGUN#OTNa(mW`BHtC;?88@N(m~mqdY&&Gkuf`m9c-!9#vBG*BGNyf>!`lxWyK-Q^ z0}nd9t$mMiJ0Cc1+~MuJwH^M~m1BE(?B4AM9^A6WgfVS@8hiL(3yEM=#vL(sY||0r z4&MLJL-UaCD}{81mG<9%|FMT3+)~TK*Z48*ySBCMet0d9LjFGf-~-2w-E@mh3aMkh za@baRSpAByEw{*nDl39&iMkPT#JCm3_1%BWVdD>OJM=H@W5(@&*qFl({>$I@Kj_dy z3WZuJ1VNhp4?1xCm}H^{QcU}S2aO%Ga#)XD_S?PstC2hJv&WwM@43&fYbm?8k2&lw zyBvN5iT7-8s|A+#-lw|rXcE@GyZQJ2zpDO*fZ`!z4?pO@vB~ZS?w%ak`Bfe{?oWq~ zJGA}p1PQBRj#C_U#2wybnd1}vC911ScGy0OlPrs)1a^wzi2u_hiVA5Vjf?yiO692B zt*$Prr1jl<^eDt}nx;ycHbjNu!96EN1LF#R68%Z_C*x1G@SlH`5z(X=@vIxElVz_CpUJS6HpI|DXOe_K5L+F07mF|EIPw zV+ws5_8&WT!eRR#H2$v#{$>9|H{YyK&GtX+z(dCsdYAYeOV+|F_`J~y!`%nx6n4(` zAAe9=OJSF~KmHw#9XnRsw`={14?dfEj~Oqj9XkHc&bNF2<-mi-6nd7)zt5lB#{9L= ztB&}CTdH14k9z<3HF*wi8&hcP=AU~XIAKhop<82A7#LORcI!K0#2WqkjTkYa?%~Dp z_Cup+;=sBP4Xm?5^Pswcb=8LE>R(#r8(7&r9cG2bq+(G+B`XZ9Yp4_pRv1)Qsq-I; z230D(3Ipq_g(jsOR8L6vO67$p?me-56kvM+ZxaXWz^a=FSg)!zhem$-H-`p(8k<9p zY9SP=6GJq7V(4d4s90rASk?N4)ofK;ZLd&o_0^~~bhjSXeXF=oePB)N(Ku{1QpOfn zqvnuU5+XiROXq~%WL(91+bVm7%ra#xT7wm985_t*QFRp6-|9liN^?UW>mT}BAM3kU zC|g-Mx>=)jtL11^QN0G$RSON3*T+QJ& z?4@{gcqg`Z;+!GRk=k8?^voA&TiT#el`HK`VCYSI!;Px!IZLG8lCev0ivh^jXnxZ+9lTrq~>QEE?`s4|*w9 z?>Vky$CcoU>J833rO;!u}x@2FMMB_r(hl#eQR_ zdA2$cYFgQFdBAB7=j^iK>I9eol3Y?Y-1W+%PLS7+3PA@YT9&QcNiOqx&Mn*Avar6U zY}b^*`nW7~%V71n<(BXV{@Nc}!~V9v*!%!HKumt19Viw*$PTcBCWM3SU~%^!?T_N^ zF*e2yY72j|gKf-&aEKiuo<7tL6-PJQpRBnpwAdlmJRyv=vEt;z>@e~1IBT(SZQ*bm zYvU$_zt~?C*J`ce-Znej+S)?9{l(fQgd?ooj%W@Os!NC31aFJK+FwPwzuDi^*nhXb z>+2u(4~f%%+CQChjDLk17>|F=6WyBg2(OhiQ>b6P6{7 zlqW@Yk{5b1abkf}B0I$crbmV=HHA|nYI|y)gL<7E+1Z}poXF1cdYv2Dxp_1cnGx9x zk3KK5^E~?e$j&F4v3Q62BqJ~kB1srR_0N(2Z24_aSlfn#b)2+oi+&f-KOE47kzMG3 zW=1ws<*Y5rUmV%R9(_qRB~9Vf~<)q+@h z?XUxsQ>QvDveO*k>5-l8W6zn9;imi8Gu;QZvm(QtUJD63K-`nP?8`)>%OVX5rRo~Z z;qu5XcVJgU;xqoL)6a@*mWR%Uur`|^@yf`qRF#O?LFnutKDoAR*V2=!5&7D~)sbE8 z{`i97EaL_kJc9U25=E!dL>h7TUTOz~VM6N2;u>8XJj}B0b=E9N zW#{O-BfFc4KwG$n+N$f`8yW7N9B<;9!=lI*dFNUj*5qvBYWPf`9fqbDDL?v{CCCv+m?E^SUvp3$Z&bUQqT1gI7a64AOcA8a%8wC zmB+^cRZqjfi5`;omscWtWu-}zXc)Rx;70$=n3mo(addb!vRA1CGvjUwVy3z*vSlva zUK1BfdcG0a8(!fzBYRU7el5y}kk_J?@RlbpPY7>E_O_>bC$e`0vJlqHNLpRKd^u9> z-N@cm=m3S1u;b^Qn!|gMy+_}e5Z;gMeX80TJ`fc90D^xQ*@q-sHlR6t9NEX7?32ho zp`Ba9r;*`4py@wTGCtbF=aGF*hK`2j@I_=_c!n<{`;vxi4PQk@%CE@qbyV$PUxWEK zN>5OG_%5>VqH4p0@O@;2eh*{*5ZMpT4L`c4)Es__sEqx@u=R6fKNHs)mPdyB5uhEh zb;M!KN=4FSP3N3Ru}$*%?9s6u?K6W<<5az>^BP2t#> zUrLw~S68(uaZ5NZwqvzgP#1_RVQMTKrpE2zcp$Q70>J7(4{O-*aafBWa{;}E`oamZ zo!|(Z7~6@l#;a+u;nZp;#fDpbWH=?ZQ#5lv$uXQB+jM=c5q1IA2!2Ob?=FB}eU|aD zG0DOvuuwm|tK+jZBsxxw?Nl%5wAj|F4ww*5kBMk(w$qt-(}&K8?F^4UGq%&boU`Py zGvlUkc5Hl{9k+#>%63y38E6@Cm9Qz%61L|ECT+B+Z088IO~dxKF{In1M!9-K=EhKB z69{pp2(hRf)*_WvG>jma?k`t&)H)T4H-#Co{X)Oz#fJAh7~_Vr-5_BO<=eyg6lv!} z_X}cv>;llbkkvs9|F?#VSm!uOGh>@6RMZXXixsk5M3##cZ5IRblGrYZHJ`dPwoB>K z6T;=OT^?&rb%jFg3g%3+Vw)9fVl_Lq*|Avv%GhvMQ07&N<6}a&I<~7J;)F0KwmB@5 z7+Yc^dM>H1Q5?PrVP0(WSTRiq*Tr@n$y>wx*odA_s_PYpZ$h{swi`UvjV#CTw1%5v zBl;#%-K;o#6T&UA@o@_)vs+^^Gk?{Fx5sw7x8WU-Anas!#9?G+zreSB7+JBABI=#7 z-6^{46o%Wd(3IiX1VB_{wazO1Qh6e~!v*=SsM@Y@;;fEsAZCLs}f$VsEzlW4mAI zjS|m35ZePD{a|bl#^GT=E!I!P9`?i!#rBXA-&>|Kcb7wx_>7O8^|2d?!l<0VY`Cia zNNkUEvP4!}o-Tt;rsZM~25@drZlO6Wkn@#)ca{Iy@2E6CSK#^~u<#*X19~&IHyzMhvAv~oHWS6) zj_qxaemAyvJ^H=a-XmHwzIWrWIniM&%6L=$H{`d?DPya!rO)`b%x8R?g=$8{87!ZR z?KubdJmaJfjW5K8d&Wn?XXrExma*ZUuZ4sv9QKr#{k~}QzL0w(3inaV;hOh-5Zeb1 z@>p`lD|2a0?51xT|KrD|9 zr}|Z(4v2Il){$t$pOo07L{&Z-?M1SJhE=6HCNbQkM06n)fF>t~b3!?>C3c%MA3Qdp z5snprCg=DmiA_l~BRnplMEd*jiQ$fOSi^~9)Jp7xL{TRucA_IQEwO2dW_c$m#7&^yme>`dW$ z2Bo!!vl6KT_$v-MJE>{s&LNHj?cv1zyRE61zxo7bM}oD)wI>FZ}4A&0%I@xIBP5k?Z2ba6u^u zAju_(;m%f3^@y;hD)X^R6T8&Wx-7BFK&x5^12UrW>Dc9oU9P|Z3M8FR$F4~13bb1c zPKnKORn}|)vDwu3>cp-lnWkfN5}V`6<|a0mwrUO6B!-(!gIud*e6)voiOnN}reoJ7 zcAaOKpV)i|+8VA;jFi`t;f93i*bS)NZc=)J+QZF>-JEDTc1vP}-U3(Ln%J%0Dz~|Z z>DU5V%@)vnwEB*5K?;Re)bN58lyv3s21 z?oI4o2&NbU^h;9@VCIq7eTglir57i**hzYSV)v`1J)Ct(qJIB?x3m{jgHG3YFfrU+ zHTF|mJ(L)3<>q`OF`S2}_3mRyivktIo3 zHM0SlLq0+6G#7X>VGj8ugncTpCz5;)`BYK~Pm6F*L*{1_dp1ECPTtjA$oJRW?Ulq< zLtNM^Ipe>Y*sEUp3yHnpbzhd)GKxfGTYvSF=RAU*_IzT`d(syZd(jbnDKQ*~zMR<0 zLh}XCtWPt0PUZ5knvbEBu!0`Y?DfQOtJR1I$=*l|w=&7zObnNkOv~a`)h*si>@7#& z?ZneXFEQMzE86b;#NN*tff9T~`XI3nlF+4ymK0)5 zRr}Fwvr{$wQDV4mBg4mueVj<`pwE`@Nm5&OewrBmhSA}(#6A;g2A z`^3>BArkG2gm6i;FB8Lk;ZfxJi0<)KVz@kYH_6wp696jlw~67tR$|Rda<;x9|0S!^ ze%G1y`^0eHtqk~w#C~u%KPL90)AlD6=8n(L3bCJ+x}w5pfaQrTUx_@G>KtD`cBF>u zHabj7ZBj~I_09Ar2)CB%+Z6bV%ODJh?-&~d5Zrg)TBb*eHc z=J?cbQ$2LQ#&!$=r%32Y2Z`sSg+b)LgUAEYo5vLRVON7 zYVCL0dO77@TGxN=cj4sJPEOe}3#X)ZN?LvHs;95Y#)s)CW!QADQ-_5!(hT4#^Vjxk zzADy@jj?blm8@>eNR-+cshtMyr-KjvmT+cjr>Ax%GWD#~a8T{+)Xq+&uqdotmFK)F zGg6!3RXH!U^E}Z~4?jOO+*v@rAT`|i>94|t?wgU04i}}y$3<)^+*r07HKkb@bfx-| z!lccBw~Pu87N>l#y1m)n)63%w>viBV3Uh?ovvg zmD((!X|CL#o!abF)Vb0VTnV~YrG`_|t5drgh)Bc=scFqQsm<}!b5on^#a@%zHC=^D zuFOqCmWvdK*a0~oNDU`)KA75rsRqC0rIF#G)E**Zj>W@@Y1}0|lA2??B(;aVoJUi` z|0q~JmKw2-rHI_r9#_ss(&|KHZE8>G>%lZ^lj-j-i3q={o+>J^G-Q`74cjVWyXsVh zRnWYLZIBbti-l=N#LBc9(oQXx+tS2ykC&xOtHH{?zUlQ5TmXClu%+XGRLBN%((KvqsLTIXP{+ zmhfb1+g2y;7M@CNyH4bvP7U`I$lp;m`rvk>!!xPj?qKzOd)aO;i!;gA6kbd1wOT7^ zg|r=*Y}eO2Cbso|c5aL=m+o`u>kr1pGjFHqb|slC+2doQQx-g*Q@q zvc2H~ahtGf^_0AC7COC<9v(bJM1u=Dsq|)QZ>rq0gw0!2hM#v*!v{IvP3;}`yq6mO z_rzXh;s_lX-cJp8E5y9BOhEWRxx$C3;rS4Pd?c|q6m?!|ct3_GK1uBp7?RJ-cCCc_ z%62FE-0|Tq!BjhZsssv|UpD;n%WdKF)NpsJn zpB%4+gY&`Xsllv3lyqsQ=cU2;74lrC=gq-a!rVYWbkg1)XGlt+-$n;Ln`9tt4P!L+~r)(@xKiL+~r)+fL8qq4*Wj(dn5s6u&~Ic6!bjieDkqJ3Z$Q z#jlWaIz5*S#jlW=ot`;E@hfC@r{{*D_!Tm*({uY!{0h0H)3azOeuXUT^gJ>Yzd|0U zdF+?f->~e5HGOWD+VV7XWY&>Y+034l*(AmyR`~oSjOkcr$9U9awm-9cl$e}V!m$~= zeJmT4Q!)eCu_Qe{)AVeLcJeiaJKneS31psjLPoe|V<%>YJHexVMMn0wGn?j7CuMe0 zR&`vb`sC>3ta|%kJ6UOc>d@#@henNhr)1VBaMLrJ?xXXmnGtp>_?#xhPRp9Y8JV4t z(bd?rWYlF{(x?ibnc111W(mHc9yV{%Jn#^!>JqiGq0N~opuJyQi%sc+Ad9L&3 zxlW1eQ>}4w={H|BpP!8k*JI@%`ge*tf~nk%-jqYVDTk`sH)V#qkp{atvzwLSlFkMj zDk9vH*)2}&=wDh9uGpvhgD0}=n>|BSy+NkVW{*0k#{_B#pq6H~)T18H?6DfC z#{u<(AlMVYdXk;PEIgIj!&!JHGd$0b?^%6oq4Zp4_*qOn&tEO(UQmo``eJ6d7dl(` zNyz?E#_;u$2%oRZUd{~nJf*ynsUN?h#Om44c`gEBnO9k@JHXdi=4SS)qO#f|_Vvtg z0{up2ZwPR1nDr()-W>2-T6Ef54w!{)4wygyzugJ=oy>4=dzsYdE%134g|U3%I5Z+p zIs)%y_MW%h`?1Wb!EAGVoX1ZHpSVY=y-!v3Pn85%w9IFi zNja>~g})f-i_E_8kS{aCeNLsm%IqsuicLpsp1#fO+f4f2@3NXM@cYbg-_hfLP>}tQ zpbrjWSCKU}Q3LjIX2FDch z8lbkCTC}Nd{B(TLj`y@D6zznfMEZ$EJ5dRzdhoQOP4nQBi*_=>OeJ^JoOW6*%>xLb@^0dw5qD^*)#}@6_q9{3~ zXt+s5*nz)lzvD0zQ*0g*c4Wr4+`HD9MLW|AcdkL-cUIBPa%g84wVlOZ>2uF5+PNM& zqi8r0_&gE#Jk^WH9R+wt5p!PI=4p}%AHoP{7uh5%+WBt$c0m!fpIYg{qTw#UHsB%! z*+s%jGzKR~G_zCH&TYyHeqo7wvM@Mp74a z;FT+ihFk7T1>*vJR?%iT^w~w5?G12c(XK3lGC7F9s%W^`PAcMoadpvfs$zw#5*Blc zHpgMiE!td%ac$AAtH~uc(}P(lRLK*4R^E0ARc;Rs!}vu zPc>0bDexEY;R^iQi*~yja6wUu$vcWt;PY1verJ&$s|QUK{IK0#c4rZ*;l0AXj4d9rxM+*LCifNXKE*9AhJ7oxZ%x$o z5&Pa>G+ZwGkfp$RplG;0ssRBcd9Y}>J5`hfUQa3TA1c~Ij@HBC%!fgYuG<$1Xr)#f z9Udv#BMKZ4`YI1;U5US>XiKntn-Cr?+N0pu8kP!>Ev3$n7wvJ9Ns0eN(Vp;RPr{Kf zL2G!bXt<@tw(zu)@zEZhDcUn+kP`pdqCM*wo}(@hwKY7Ck!I1JC&P)FXzw{EzhAWXA(~Ced+jpRkW`>qp6@2IA<`QI1O=6?@` ze<<2_2n<<-{D8dpNfi7EdjDLspNpZF@~+~-yH^!${;?%n1tDO^=2op!N;V}oLoL~) zlEmB8l1(jXPAmg`I?ZzAtlMgJl&r&(9$m7dOG5ORlHovfa>*u>hlHWGv~J5)E+4Dp z6Eq6xq6aiPzGS#nYD9!&CzK4=m4xnaV##nh$)wHitv)iXWYZjhlS+1yn?9agGF+aK z*p(riQZn30r4^-2FBz`)incqoWT#SP0w{qw5=G1`+stz4Qs={J=q*#Ho+|)PFBwjg z`!h;*hKz>|#R^M{lAYbjC$Tf^fzK+gw&%?FJeN(Qj`B)zeux#SIM6U{Df z^u{3&;eJzza8dH+lHqRhs9%whRY1vZ@u*u%c57+nRpM)0UJ%58E^B!y3jzo-Emu zUWsQ)_Kf15EQNh4whvVmv3f`*K3g(e9+0nZpQE>ytcOw%K$7Q6hFhYdFlkVI81P;w z*$a->izRyzycq5pSca8q??GDLP_YO-OD9=853BBnUcK%l-BU7pxCR___dO~ zMly|dub1p~PxeO1-k^nB!L|r zk@7tb3}$-aeB3b;J~t<6NgQ)@T0 zhwn@FUCF+uv41Gp4^Gq{OZKB0+r!(!PbJM%fAYrmf@;ta3O|<&_mxNG&9%H_xRqP9 zqii@2Q3HPEJaKf{jxMWX9#ghs%3}4&Wt&{q;BhRL?`5jr6sD9J=BAXv`mw!sxPVv(ZXO`_u%G5Z=Jia}gRVH zL{9-x4Rj}|U_QF%eV$UfNCMf;DjQA*)oM(B4kn8$C80l^TQ*!yHRkjjZzFI<*=9Hf z=aucevUn{#Q| zE>)HE)e+?Q5g#Iga)nUYHP_}(JXE+MWR`r}wwlCYiF;RrFdQFmr*g=%gyfv@U_S=o~OZH*Fj8d`9;51oT6{a4xiXOB=kd)yyT|$ZUQe7 zt;A%4%NXJ&@q&vzJbDmW#WPL7EdDF6-PaK|@uD;K@876)#Pk#VeyWq(FFS*L34?qa zaRyWj@_pwC0k@XNZoW1A=tp0E{J$GJg$5uA$uOk<$;)&*dXd{eRR>su6I6hmMw+J#d`ORL(IvnyMNfD^FBoo2FBoo2{~t(T5HIX=^ZFAU;0X@!Bsa5nIeKNfli}o{PvexBQHW122Y^(L9AUjRi& zN(6J13uUaXh>K*5PJ`t_-3``())X$5g*xH+sBno4)g|n)QfC~vRG3TZyZj~$NyKqo zm+S*<07rKfpG!aEjE^;8uoxUwLY1Z6L+w>fu2)NQJH=(Y8(w zlFH+;byOtfi}XWmhz(XCbXli447H)2IIk66(zx z3&1wEjcqEdHWl=3ZCl&eqbp2QC;}$h&bCt#+t*6m!FJH+jnfI0)+S|p@KDLiS{tLrb5$V6}ze&80^%tT03scTbTp_-VZ148)8~csgYQNf? zSLV|DwT9nnKKolWhD6Qws_pOWcLK}tc?bIkLLtun_6J1F?=suJ!f}x`Rw{*quh2sh zrN3J8AUnvm7Yd*aG!DWF+8^zY!ia;gs!@N%{K@`ge^kOhDjSDl9cIN2R^xJNU)gj< zmTb+|oM!_OPRQD!%66!-aZonTCSC9P>ImcVj&L}~W5+2O9bx@uot?Gy`K)!YRyty9 z6K81KynlHV>!bD2oUvmWYneG7`C;P)p_{o*@*H*%tLqD%da zAN43s+)~rOY1;e`EiwP$ZT8PvS2>bK`CB_DZI85nwdy_sRg(j^WFe$2boi8^!{zcn z#UHEMKSRk@4Xb75-$(2Gtw?l?&fgMsbcA83t(J=+*ZfS@(cApnXO+iBhVuoAPnf6Z zM6Ugl+8`eKYAt!3j^+xJshpRJy!W7C?^|0+9102Qzbh!;?%8{lBelpD#tN7eXnGE=o$vy!Qe~DGj&W=8P3w_ zREg=cbw-tQwcL!L!)WJ5EjpGT)!m}d?lG{zb}J$UB_PiN({bX+$$6gC(hEr*SwQok^k2E z)@)!K+Qlm)o2{d;T$7-iBt+P&BShKNP%)2b3v+zvpW_X!0>xWparRse#zvgJ%>$4Z z*ZKk2S^_v?o{qnI2J}?U3fD!PgH`XDud}aWj_Y;iRV&FGbk^1SHia97z>PxSx+t(Z zD{3Km6Xa443y;!GG^L1pR7P;LcK=clsk5$sUbOu(4E{qHZqIc^YENI>dnp#HQ zu5$UPnJQAq3R>N#kn>j-RTJfwO+=U)BWkAk>@@j)GjRnZUW=&JJ){fOW7ksptB@Jsx>tgCLksUFp7S!V>;XQ8hMm+CC4><&2{yKpdPVbzTIA;uGt zJ)xttjP~!Y8)7G;&s4aRMe$GS7o?xkSyd5@4eThyzIq0hTRAmU_K5sumH+i(m2xPu z+S{Qy07*6E-j~MJpu>WzjG#BZvQQx6lmNEi^k| z%?5Ee4u*WiX{_I(h2ec`+b&N+&FZYqoFHq7 z>`d+RQ@Yz(+{}`~G4F2OmA!|p#kDuv=Sr~c1zuAE*Xe988vTNUi9WwVlx*MFjnTJ} zO7*mQY216k>AjFw31_3KF%_<-x@$q3o?&&T`s&rf2yV?;E$7V4R&NP|=m?auj;*8O z2Q!l%Jeo_0r(!vC5BilrAUg=F4O*XR~@)^?(O1+cqWSc2|2UU8Q zaaNqKDwW=WN;3jD!pY`Jy*aK)QSw@x#X&uW^a>! z6@)MvgsQcL0anOQd~l^oQ!q2&7D7oP1C*G-YTeM8I4k(k9YM#8J@~(=?bJC+>hi;ST81Q;L;=S z@%5q(Y~(CiMWs>SSf;hRL1EZd3LW`VDw{_|A*_Db zalmNxKvB;Ma0R*?`d;1@xy1>rL*%zc)km(#VWqhq8qNG8HU{SfQPfk=djD_L?+xy~ zg>;#+1~m)Us*5IXOX0k*&?=-QTeus_TL;->oTxh16Z0&EyeP9)MhBNn#{UCquyzMN?gu5DNPnSs5x{;!X z6iv{q0j8`~`>E9%DodlNkCOMb!Ulx`Xh-^~2mAi*)&57I`}5!3K))6wWYm`3+u*cS zK&c)SD=`tHkWLvjNK$5a<5=>=asRs3Nr({ z7qEK<_Ajt_1A0S9yidv2emV6iLmT~eV|t0A5aKsfy44zTMUz&!jA>aE^;bRnLzai2 zAOsOIVo^uJTVXlKiu#RhVA;zd_olz~hSKJ(ONFJpr)vq*zSh@Ugf{a=lE5gaMQN*A z_g1&;>K`t{xxy>&A}+OIp8QKU@p!j|am3yAh-|t^4+3E|^%m_*AP=C#Dv}lnE$>_c zOFK6|oJ1R_h8sb2val2uoWaIYw+V?l1XSb3wL4XbtV;>-B;XLbSF^AoNHf}JHdxEp zJg5@0Os!@TF@6YieOq5pD+W8Xh`SAqV-K1i{5%aE0)AGSo={HA*^{lpYTVq@o4yxq z$#!$>Tuc+I4MbFL19kR3`IzkYowbDxD1HMMgLG^-L)wUju(nvOlg$|NX;WhYx2mlw zaEvcCaCJ>m&E$iPuh05fzyBMUClLFf-} zH&lKd)u}CMShXJA*70U}@AHe4;GE5bXA$8Bc^cPI*J0j5CCCGxF+Q^1k2QF9Yp9%< zMI!}sbk52ekS=-QlV`Db7y^?~JbDI!(||vuaWD(yf&?{-e}%I6_fQEvxC@91)x<(+ zg(s)->seFRj||=8Vb&dP*qId=%n@0S7Wjjf8wqbz^g|c3o~=?Pkc?Yd^8S{zs@Dto zT(Gc9G69CD=%+8dnb^*q``(&7_p`+MsrCJUAFXeFnrZz4?H{){tLcRzgR7&s7Qu9H zA7nkAMpS&T;PGqILh$lH&}DobL_-f6NsA1$by}tCK=y(`iPJKqTdSFVRj|RX?-9>Q zKVM_vCMGEBt(3Z8YfJsZqPTH@rY5T1hEn}#lZQhCO-wHc91*HEY(*JW+72yBf8;8y z+ph)Xg@RDO4zJMQGE^$o_UKpD@V*h~Y~HYJ#9Z%+K?9?u?v;(D#}+e+%9t!z`xMGLmQW~Mu+)|w1<)tV_2 z2yW-|F*HHUTSPBEN%Zf3xyh%YGAJLUiaCEHC>pC&Nyp3KSdM=pPa7&dy9TQD8jIDJ z7^Hiw6jI+%c_)sBh^58AV)>YP8Z=z$4Nn(SAZk1(>zY|D9M)}ISDed5D2+p4U6;3X zF{RGO>oql+F}tueL(xaGwE9S4r4hVGb>b+=WT=xi1_?aW1XLG&K&pumV~A+ni!WyF zFtfh;STE}{x;AK}jqAa`{WQ?Qzdp&+^otWTO_F08=~MNUw7N|fCuvdOV~0T`1FBtVf+wD3Kzf~_7~7~_*gHjZR-GfZHLil z@@R_5=s78l`ian*MN&U7QH{FuMg1Uzz8V=58b_<{!0?$7W2ho}^TmJk>`pnlTAp8m zpRyTEX(7$bSUI2%^1ssUL=n>Oie^VYCUJj}KMvpn^dq%K+<#N}!-I;;ti*gYk_&N_F>>(ta5XxA7ouB|Tr z>4(2I2gBDvUNjZ~mUZuV7nLZfI`r(tp(=6FZCrd~xdwIR(q z6gVVw&+sI8D%HwL%K>-27T}GQURPIfq4aJHZ zvpiWAt+YH_7HNI9adj!sSLJsmzk~FR@EXkhLqlxP@WR$f!3NQfI(>~@zW!Z4tNFZ} zZ^+21g*06_!aLXoHEt*}YS79FGBMD`xzwTNLuo(FfRQ>(eW|qMjHV{*NJg$h=Tiz@ zWlPg_BcJBu$YT*s%cgutiAL0fak;v`F4twP4i4(Mn|RL^3?z?8hx}D3nrnB7oL)9W zo!A8wa;EbO;YI(+zj{CyrQr}32(SQ>Ops7^i_MiQ+aK9QIj*^&GcjRw`Bs}@tihLv zv&ISmlP|rst|uG3jAn15kLK$$2)MOhP4cjBDHQ0#`e9X}pY>VSQp8HsMyP77>x5IE zfN*9e;B*EC%@k@^V5kAst&L8>oI`NdQ3Co#F8CQuHei}-8?#Jg75M6U$yf2j9!Et- z!b#u7u+qZ(j^+F^mJ1GV$TbAlrlLGROioFzt zRqB&^Sh-MP2FQ*wo%C^(=-eUf6nxyVWPeU*JT5dO1<3hrT&>H+0GI6mrjP!7=18)a zFEH;!_KxS~Iyknt^NzGmQ@*trtsr@Yx6i?75fhJitN6< zOztT$WgZt(CdcPuK;`2JBwj^3&yb95XFMmyE!t(?S)GzlZgXqo$i}o-?C5*Vxsr8S zOv4Why{LK-2NmX<*(!{^t8;3JbRG1$u~aC&p&j}GbSP7k z;dHeXrBHX&wAey94bOKPp6})PrgvUmZNvKjHbne#wgIEV%(%*J)+~=M)>e1*_{Z6x z@qKR9>eAR|>IODU+;ypzOa9f^LT6rne#{k35~Hh=TllrE8ra;H((Ac%^WgE!?E3A!v0V2tC5S$~Ea4#d7Me#~oF=0glXHI)+>WH{TJv zUN^nf5W7Klz0uY;`ZaJAeUol}gBGjPpE&O5o%&{71E*%bMVG;;1#gXY7hG2}-xlj0 z^I=K_Dg1gkrMe^LYPecKcj`VkwewvuORc*A$Kr8etc%_JPUG7h?%gpLyw!5tqbuH& zm~(V8g*PUE8OR(C7i3!Md4vp*k==Nb_-wAe5wMRLx*0yt3xxK zHiZXt-y0nj7Awl^N?ph+%AHV4h=v%vP)D zdNX}AWwvT1d>Gq@F|(5oVx}jXFp2(}OY79WjT>v-Em*z|b&_-;vZL)rp4G@Qlq@@P z&7F->!?N%9fBZWBv9i6ECgWCy|E6U=`aq+VJY*z7|7A|SPCcyh61%R5j>a$P~^S> zh)IB=IZRaph$Vp7>i6*B@0|_*V1LM&&=czZ>s$~XUPqneFT&HhML#!wX~2AEp9% zwBP3!UScSU75$>FxD$`P5Zj-*|E^WG1TrKLJzA_;2t6t0deWJMLEU+4a#xe;CT^e~ zCZrD&(vxGbJ}mq~0=K`73cp~pufRO*7opYX3auiZ?&!{Gf^7kJ#Wwqs1KW<;1AKbN;Q`QD#-O-PmUPTeGh2Rsmey?d!cG?MThmxvIO$ z1=<)8(27Tb%@Lus%e?-dIY1HEO$(f78RR>|dpBWcVEr`5nH0gC9n57gX6(c>t8OL1 zz?pZ2qxNwgI9i4WcBJq|-{q}+j7$*J-aqQbPOi^mPVafet2?V*G-QPWZq*>l9OuRhIq|2mg{+z1@v>v6 zHnfHl+)N?C5=}-7b|Ne0x3F7_G?|}eHvLPpMCzq>rXvSY%LvZ~m9UxeBqf(OY_y3%nbXma<|=nJ#xZ;`SFdkmeIn z>({O?*Cv8_G+T%Et3&pxw-(>_pO2LUoDT$tww0g{v2$o$aI7oI8pv$E%I$47*-@K*12STv+BJ* z8}FmMk!V>*Y=0u(jk_Xycj2p^(2;N{r0w3gnXE+wwYAe+q$$kS73eY!*$>;07TJdM z$2w#brXVsBK{8Ls^RL3Sow-#=VgpZ1;+t z?BKv2cUVu=!$1t3)bt3&@_u3a`W|_1mT!w>%dL^YEmaz~2=~dNB&=Co;)LklRgBU+ zAZrp;{Xvbo+j4W{T4&sj45V43=audG;lN{Z433p55Howuw$ z?&ZN|zBuz;BJ4qA2V#Y)8JlO&zmZE{*$;bBX|-8Y%T}qcQ@-fm{)^S|*9U>AiRl>^ z^d2h4Y3)pW|!pE#u;C`-}MG^N=4EwJG_iqOCFOR#JpZf-4*tZMEW7G>b$Fd2#Ch~S8 zYlWQsJNwNsEBcLRU9uu8+7j#ExPEw8c0p?IN956M`D^Nee10FL`##2}w)?R7c|?ql zwdZ4?zG?oolriODKG6k+D*0BT?xvlrSPk2I(T}evI+tfy0Acxq`ZDzJ8HS&CdHO#u z((l1B8wT~otj(gvtvGDJNdrw&pNniuZFN1b0FD=o4lhKU$lwP3w(w5=^iTC^XE$<} zH6MD>Q}*zi^0(x!{L%SA0(kF5&>$f6;PMO1{%b33k^1QsNIwUc`V<3IFGw-BbCzXO zRxFFc8xp=+yE%U){>|&UEV5-$&}HmvdtKL3PkSxGUSHW>mo-0l)OWIdec5aLnri%p z&a~Lt&EZYA@UI`0pL6)n=D->MSc!!8|}`)k?Gp-|l|H=V1}}4>$Q2 zmN~muxJ{X>l+l9@2+_})Z1!HQ6FZx|xS|S@?h6a!b=)Iws_vZdps5C1_ffT@ zAF^q(?ktjYq61l>Df_xQ&9Ob_Ia+j#Xlo7yjmVF5fYZlRf9pzkKjs=~*+qRC0qs)~ ze6EKBNbo5M23NwyUgE}l+BTGkmeJOuNw&fIGaavU7bsTEqrVVF`T`)wj|!f8UA%d6 z;s0fhzbF4v$v4(~5hZ1#4P>uk^RUJWoz*L}S_AWo^^adsU z0AN8cvT-YvP=RhyD`*QZs3YbGhYFgcV;jQj=-9RptmVwRyVl}t`!0`UNb|E^RRHkv zC~T1fu5oNe&9P>!pc_TOT5PCnkZ*C8%(b@KUqoiFFy;XUh@%@HxLT#5a%~i?B9;Cs zU8y%pT&(0NdEZ1(ZME5fRaQkR9+M}_1%p+KN zYZ0#1rj7=%*4*9JwcULKPTOv3#w}?)Bx@DYR#m%#ZOKo4_xjEu-b>q__W-uafwFG* zB|JcXZClx|Ay6K{Lfu#HM6ixmY5Q7c`|7>EVt`&M4O1SKHiFVdsI>AN8CMsWtux1~ zug~WPomFIqoGF!8ktM%Y|EkG;*3I@~|09oJiO+Lae^7*;)1%PeS)KjP?a9OhDzrP2 zokB-a=tvdXeXi#JT+Hf)R_eRe<`!O4E&14M(7q`;f^Z=E0$?9tJ?sE>Zu1C~0q6?G zC_={uDD+^I=?Ay^#x`uE>C~ArzdgXP|`k!M30(%JC z9*3}tnMZJjAb)qO1;s#%%4@dX*4(O{a&6D3lKrfYDmk3uhO4-K`9ep=9*ynQ#v|rv zDN|qpBSLrUS~WQi*uY9PrTnM|c+Kl@;V_Q9t8o~J1X%eE^Ntmp7_sx~}TL~aGaRYnrjSO&56 z)id8c)?VKcab1oOGeo6^gB>9jGb#Ll8d?OCT&3Ww6|OCHVf@s z-+=k1Hf;Ogf%q#K$H~%xb2V{D@RXbYNwscV73SCI$9T#ccFKA^dTXKvUmc{7>V^QfR{ z#d`^an3t|ZhF2C_d zYYDhYS|rxY%h1QXg$9Ouk^lR4dEuD++WeJ5_TtEU%)6cu705KHT&AU*mOSt4eKJt_98|uhaAx&> zHU2@n6l(vvJO{ODD(k7gC-u*yKAxvng!%Eb%oi+rFjvzi20N&_bs1gkMNC(#2G0?6 zkye-m!%i0lDOj&+!mqfK)xlLOrMpV$&WOYQTm+@3Ga9$eFShSQWY{J7{q~*Tg@b}` zf>F15ZuG^5)D!+p75fb|^vlxR$ov}=n;*9+IejebxSoik>@sxCCn4WTT{|w#Ef2wej<-;^Z&eTQy zIHf*a_w#!s)80yrl9%RBt&9klffo;^w1mt3&6SC~vBJFwP-d1MRGAa<7ZzI3;>=EX zF2!1SVNwr6gVX_fd+#beJzU*H!tbg?cYw|2Zv_ZCp2NE;S0`1rf9Cl6D;x!#>+i2< z1mpFU-l7$cs^G3k1R>*1@7mKVO2XSKy{kwYo?gMt_ayYm5xl?xd!g65QI8(0m2UF> z-cN5ibfhl6JJPFol|^Ie&G79ldXq);&0l2^@Z0%U{Gp`_6hu%H7SZ^JinXc5ZXK`1267JG-DZIqeQhR*GF zTfqFDg!_#AnV6;c{D~A20%oud<;UzE>n)h-Mk;*~q3i)Eva&L)gYt)6$TyhT@mVRg z?vlVxko(XzvUs=;9IC5^cayAolp}b*o`JDHa4Ik1^%qM*KL&E;rB!gfh zv@k$e7Tw^OXJHWLoq z2rO0i3;*!G@{j78BmBtpMEgfpMf(2}wK1y$O=|{>)RKWr1Hwj}ex4h66{d$4iy^=A z+Rc4gSj^4ejp2coDLfftjdR1NdftU+R*uXcj2Yf>#s@DY9lRIAqcHi$QF?vpdtDj;QlO><$JzbTwMUbRs%H`B+`x zI$Ym>OvF{O72C`<8qM+}=3u|lZWgw83T&_BEHb9Jo+)2;0CK8!FwtS4A=pl~Qluce zuVDzB5=nQ=-|cFXpA2~0b&1#$wCidAY|(lHR`G{UweX-BrfD4lgpFv3?P!P-qwtT6 zueJEvRA2wo1+gcAM-aGQ_@4?&0(gnl$VtllJe`iqpnQ?i?J!MM*(v47H}Z>x%sX-Q zZEC=d<64;GY#OTeKd2*A*{W0$Ez;ARh6-kcR`X|Ss6P!AQn!kh(%V{{*DJGAp+g=s>2pPw^d3}fA|6XvxO!27aysQaiMh?s~y=&vmQ zm7&a!l~b{Yefx-tJ)#|=D#qhW{5bj&W)Y8S4+%tjiY*@VeZ`Ik3ci`Nl%C;T>T!Q! zxdRiBCv?XYn}^$!mO^G2(pE`emv zMc6}?Mrd#7d6mz-5^N2H^|)P}9l*}kBkQ`{QtSfh1#KMJy1pJ|p9r_^SY13t;7b(! zvffr!pLj*Pm8y;J^w_Yb@LFWJS0LKsN&fB{?>q0r-raEcV0SKD_tnSi+Tjs^H?*6R z9=S`w{|(zY+a;>`DtgpuT^+T0(_eCala_v~=4%RXdogcQ3~#ydbXzBcPj~8^CV#tA zC7i?SDl4Eb+lgle(n>ftWeQH&@5o>ka-5q6UhFzM4L{Rm`)X zJ2fTg485WC9zc0Ti?37_Jm2T??axdJ;tWBoh-NQCvkycn`@lOE?}Gi5%*@~3 z;(4%x!iU1-bCZbC#Z|^#U{R8 zxyfCRJ(F@*MSiBcw({7|qA)t+I-JqEaZ9r8bAJw+&h#bsx9b^b2`R37IU0LJ#`0q{TiYZ2+7bP=$b77>$r4Sc=mIUV*Ksmy)>!`Quvaw-duu!= z6(A<-7Aqo-jl-`q{oRXEZSO9c?va1{7W`sW^*;K{_~4HmYUw@|)40T@#`HS9JZK|E z$pCsp^`E1daE^19k;8YY{rNYm{>)CD_e?4K)os+v7Urs@pqok>p71%1Sw zLY$6(vFgdKpsA8y)d$eM`F}6f`ZQhHr&?nReY)4$Eu9&~yM-;e+di(={Y4W6H+U9N z&eqLcL>IzP8hQt(-wtYMjGwWb=K4ng!VcQAVKO(vp}G|`g`OLu7d|HrJJ8i)e-l@Y zt(~YX^+TcBwPJOSN%Z;ogye$Q_R4Lb4LLnCwwV~&9uY2f(`Q)o5`T#rIelqf$=2P0`#7IcYyDtZ8WP0{08*-iTdZJr*xhLj^zx!e?bqK)vn z&8Nbso9D;jH{7A6vHyD6M1$7RbdwR4{CVs-dN~oNB|7%eyh&=f`NAaChGT7TartLS_Ie_O0$9AsNSHn)#fwmW1WO*Uc&@w!ROfr`$vV?Y{M z0X3HTx#cuV{k!xYc9o_6!dPb0T2|j3+dvg{k3WZfcf4J}_fLqqS23{rqL`^VF``lGltH5qU(PQ8|ox9IqjO% z&6dg%dv5q9G2D`v7Qkq>i9}o^BjZ-6M!=G|DY*SCpO4i@{TT1QXR@zd1JOvD1W-AXMIlZP6Pf~;(1>Muw8BBW$^61Y;mc{ z3lJ6aTuvxqqRYa#Npjc?cSQ#`BhQyuFU6rL*G$ccCGY+_7e22dnBdDMnUCZCPkYz) z8^=|L&+hoXPQA|6lr%ltTpHq}xNX`5nl#xs4Ox>oZX3}6g)-h9#}m)atY>B&8;asy z5T%tUs1+)&yzo?se*iTSZ#?l3mDh@vhn7oIsXP>r%J==w*_quC1mX?kRWd&J%kOgL z%sJorou`&@Yb)+-<-n?{&+n=N7=VK;Q1Tj)=1_?lLeJs+9c1HOLeY`(2#yP*{BzQk zbEM>Z#8JFy@BS1@{+<_gOXmPp0ubpWynuWH&LVVq-_qrMp$nqSX-YX6`GMdcNYX#> z@@!=N0P(n4rC8x*OEN~WG{9IMYO8W{#-;dj7T2> z0wEo{$$;UR%169U+g_s$;0NmYu!x=kB6SY$<{~aF=~Q+E_kHN&6seDm5aO@{wtveQ zl;>E*Uy2ySuj$8eeM_-adDqc%xIVT9C_N~6Z3bXdAmM>7T?Xb1xF1wxcYs@bv+@b=PX$l`!uuSdig2FE zF46wfiYqW)K)5{T@LckFJ%_tpoFZPke4`EWHSv-In!yE<0bqZYmt>m(o`S`ej*v(I4wnjtU*v7v6rn+r2-cjT)o(lcZHIUMq7PHJ_?HSWSecX_Oj7;@ zawr7|zz_Mq=Ts)~3TIswib0ge%UF)ZVI&8i;*OrdjokPGcW^^DDE4h{!^Gq1`u-DJj(cw0BQ@nZ*Qv76(>dM6 z_Gw_Ss{mTOjtbC;*PSXh#4+^X+EfS7n4j?eZrs?tgzLJ|f(LOSHucA@oxj0M+6-84 zILP&DtexXU^Nhx@{8L`#jUM1t0IPsC?0NudQX4C6E*7s9xX}hd`(*`-d1Iw*4B{pV z>nN1JSdks3kH?)7w&eO5G0L>qw>owBC2sU%uZ>7zZhd{qEy)gsL&Jb9H{7cLQLmTP ze{k$=BgqB@HYl(`fei|5P+)@s|5p?!@I<>-cCC=xPncF07z==aDvdf8LC14LMe8pAyh2ziXCpw%RG-I!ED#f7 z^bE5W;)(G4{`$2SxLI_{04CONo_LXaSZ@(0WH8BNrT6*@j}TXL98)Vym?zMM3GQ+T zAgj8L6)hM^KrgWBhVRq+Fk#|GEaNeIEgu7(`-ot6fNkU?8t_8?0nU%583JI31Zynp z>-t;x5;S%%OnE~nZ>UqA(~rY1?9~lxxxfLy8+ZofFV`%ds!$zRAtI-G9oTg)rm$6* zt#Q)535AXFi@8ueu`I~2btIx43?>p2Jgf?!CQiIj>Mt;h9jD{uGI2uH_3LQf7Co-F z#IWY{i1d1Ng-olygOX@mh9zw`)$Kra+f8+76ATlvRvK7itw2gj+MP&?sry~nKi`=( zjb?|KNG!OZK#fBinoV=ErmbW3szO^X>(^DSa*w`88nbzYXE&-hk$11&D;4ZBjky<% z*=H(1i)nxajiKc&)^k7`SmLB<%t5RUOlA$Ii4~-UNg7ED+gMWW{YZ=b=m+o>aDUct znpkInz!OWNhp>P65F6gdhLe3X+>^7fC7nnwFAVg%*|S7or;&uB68W4_vV zRQtFk-$%IwCsDxl(F#5mfNx`3d`9dLJ3kC|@Le?^-&Kyq;E8b`niVpq=TXKG_yLn^9o{`-n#t=!Fh_3-A5$mDV-`vU4@Qs7K#qvSu-vB;>fSx-D zs*{3fJ{&`BahKB=9(=tpVn{p_E3pg-{EmV;s9Cfg%|KzBV3wOjqhP_u!^{%8;4Fit zLMTYfGQL_N+nwUsp?(-oU<`%ZfuL z^y^_P{zKBPpoBgioHqU;`iFA=DE*_kAC{nDxjXl7rGIPgpP+vt_wS^CXYSYZ%Ry~Z z-yZt+`w!E9IQJi=|7h+%M*p$g55qH1nL?F+%_qDex9&Up zFX$u5p*x+m7Fft#GD-zz^ycc~45}zx$^1pOqL}*~`kma5;@POImXdAMKu@Ex;=u6^ z(T;89Wo%wuy(O8e-_Il`PMUlr9bgLxDrFS$FDxJSD}#4V3u6O5;E zbS281cVsT5Ho@J;hZ;7)cy`BkC55xxXRWPyE}A(9N6qy#22yUWj-5bXjOd zA%uW9_8}A!@^r^%nZ(ge0ddQtheA{LKk(q;haNt1^b6Hf)2AOhbFp&IXEwnO!1$MU zj+XmMcWvHv?_wCWmgjZes&h^f$iw%(vWn!&|uQUs(#`BwhRVcb?7KRSN>|vK#36wbavzx7_x^x~EP@ zP1g^#7spYop74@(km@i>b?mibFY&_Eoew-Uix5|*>6)7J;-;S@eiZ747y4d9U1)i+ zn=*j;;A#44ityP;C++&8Uho4?N3m}Bu~$!{crA-*#Zlc$5_N_tyj4F*6ZI80XnQ)1 zA|1H#Wlt|Kr<C0M<&l(QqysiB!?OvtJ8rW zE+N0$I247*Bt0}mtJ9rc3N=tNXf_>%A-YZyk)|nF06KYb7wJ;JiRMM^v^ViWI{_un zMoFsuL^qWhBR&>fLvq7HdPJTr;R>!uVW%u4cg*O19y10o`{y&APq zcvP>qWA$X}LII7A)uRfEq2Kl3QqQPU2%F?4*br-rCAm~gxG=jwZezO&Lq^03j z6C&V3WuOS?IeBQ5rUpe#{RJPz#!!$Iq&{tU%|cwAq>!X0J0gmfQ_7~IY*I3n~NU8D>ImQ1RXu(xfqUV1f(mooM5_`B8rcH>KE@^udTk zbeRKH*TB~u3eCWaKvZ|p4I9vkCm^p-mV6LC}eNSUPlpL2mdEH;pofbZb?7FRi!-k-@91< z|MKtXw*Rj62lh4&jHpACTI;DxQ>$u!*baivsY6qjCZ{eT=+M;a +#include +uint64_t a, b; +int main(int argc, char *argv[]) { + a = argc; + b = argv[1][0]; + printf("%d,%d\n", (int)a, (int)b); + if (a > a + b || a > a + b + 1) { + printf("one %lld, %lld", a, b); + return 0; + } + printf("zero %lld, %lld", a, b); + return 0; +} diff --git a/emtests/test_i64_7z.out b/emtests/test_i64_7z.out new file mode 100644 index 000000000..3e9d35a4e --- /dev/null +++ b/emtests/test_i64_7z.out @@ -0,0 +1 @@ +zero 2, 104 \ No newline at end of file diff --git a/emtests/test_i64_7z.wasm b/emtests/test_i64_7z.wasm new file mode 100644 index 0000000000000000000000000000000000000000..7d5ed21fc7edd06bc0960cf4576a93e1f7441015 GIT binary patch literal 45687 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 literal 0 HcmV?d00001 diff --git a/emtests/test_i64_b.c b/emtests/test_i64_b.c new file mode 100644 index 000000000..d64cc780e --- /dev/null +++ b/emtests/test_i64_b.c @@ -0,0 +1,27 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +typedef long long int64; + +#define PRMJ_USEC_PER_SEC 1000000L + +int main(int argc, char* argv[]) { + int64 sec = 1329409675 + argc; + int64 usec = 2329509675ll; + int64 mul = int64(sec) * PRMJ_USEC_PER_SEC; + int64 add = mul + int64(usec); + int add_low = add; + int add_high = add >> 32; + printf("*%lld,%lld,%u,%u*\n", mul, add, add_low, add_high); + int64 x = sec + (usec << 25); + x >>= argc * 3; + printf("*%llu*\n", x); + return 0; +} diff --git a/emtests/test_i64_b.out b/emtests/test_i64_b.out new file mode 100644 index 000000000..70d0a95cb --- /dev/null +++ b/emtests/test_i64_b.out @@ -0,0 +1,2 @@ +*1329409676000000,1329412005509675,3663280683,309527* +*9770671914067409* diff --git a/emtests/test_i64_cmp.c b/emtests/test_i64_cmp.c new file mode 100644 index 000000000..efa984c39 --- /dev/null +++ b/emtests/test_i64_cmp.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef long long int64; + +bool compare(int64 val) { return val == -12; } + +bool compare2(int64 val) { return val < -12; } + +int main(int argc, char* argv[]) { + printf("*%d,%d,%d,%d,%d,%d*\n", argc, compare(argc - 1 - 12), + compare(1000 + argc), compare2(argc - 1 - 10), compare2(argc - 1 - 14), + compare2(argc + 1000)); + return 0; +} diff --git a/emtests/test_i64_cmp.out b/emtests/test_i64_cmp.out new file mode 100644 index 000000000..6474e7f59 --- /dev/null +++ b/emtests/test_i64_cmp.out @@ -0,0 +1 @@ +*1,1,0,0,1,0* diff --git a/emtests/test_i64_cmp2.c b/emtests/test_i64_cmp2.c new file mode 100644 index 000000000..7a05ddc9b --- /dev/null +++ b/emtests/test_i64_cmp2.c @@ -0,0 +1,35 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +typedef int32_t INT32; +typedef int64_t INT64; +typedef uint8_t UINT8; + +void interface_clock_changed() { + UINT8 m_divshift; + INT32 m_divisor; + + // INT64 attos = m_attoseconds_per_cycle; + INT64 attos = 279365114840; + m_divshift = 0; + while (attos >= (1UL << 31)) { + m_divshift++; + printf("m_divshift is %i, on %lld >?= %lu\n", m_divshift, attos, 1UL << 31); + attos >>= 1; + } + m_divisor = attos; + + printf("m_divisor is %i\n", m_divisor); +} + +int main() { + interface_clock_changed(); + return 0; +} diff --git a/emtests/test_i64_cmp2.out b/emtests/test_i64_cmp2.out new file mode 100644 index 000000000..893bb8267 --- /dev/null +++ b/emtests/test_i64_cmp2.out @@ -0,0 +1,9 @@ +m_divshift is 1, on 279365114840 >?= 2147483648 +m_divshift is 2, on 139682557420 >?= 2147483648 +m_divshift is 3, on 69841278710 >?= 2147483648 +m_divshift is 4, on 34920639355 >?= 2147483648 +m_divshift is 5, on 17460319677 >?= 2147483648 +m_divshift is 6, on 8730159838 >?= 2147483648 +m_divshift is 7, on 4365079919 >?= 2147483648 +m_divshift is 8, on 2182539959 >?= 2147483648 +m_divisor is 1091269979 diff --git a/emtests/test_i64_cmp2.wasm b/emtests/test_i64_cmp2.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e2a1edbd3f29d586d8e61d836236b1a689f88ca7 GIT binary patch literal 45574 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 literal 0 HcmV?d00001 diff --git a/emtests/test_i64_double.c b/emtests/test_i64_double.c new file mode 100644 index 000000000..e0841ec57 --- /dev/null +++ b/emtests/test_i64_double.c @@ -0,0 +1,41 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +typedef long long int64; +#define JSDOUBLE_HI32_SIGNBIT 0x80000000 + +bool JSDOUBLE_IS_NEGZERO(double d) { + union { + struct { + unsigned int lo, hi; + } s; + double d; + } x; + if (d != 0) return false; + x.d = d; + return (x.s.hi & JSDOUBLE_HI32_SIGNBIT) != 0; +} + +bool JSINT64_IS_NEGZERO(int64 l) { + union { + int64 i; + double d; + } x; + if (l != 0) return false; + x.i = l; + return x.d == -0; +} + +int main(int argc, char* argv[]) { + printf("*%d,%d,%d,%d*\n", JSDOUBLE_IS_NEGZERO(0), JSDOUBLE_IS_NEGZERO(-0), + JSDOUBLE_IS_NEGZERO(-1), JSDOUBLE_IS_NEGZERO(+1)); + printf("*%d,%d,%d,%d*\n", JSINT64_IS_NEGZERO(0), JSINT64_IS_NEGZERO(-0), + JSINT64_IS_NEGZERO(-1), JSINT64_IS_NEGZERO(+1)); + return 0; +} diff --git a/emtests/test_i64_double.out b/emtests/test_i64_double.out new file mode 100644 index 000000000..cfb987037 --- /dev/null +++ b/emtests/test_i64_double.out @@ -0,0 +1,2 @@ +*0,0,0,0* +*1,1,0,0* diff --git a/emtests/test_i64_i16.c b/emtests/test_i64_i16.c new file mode 100644 index 000000000..bcb20ae0c --- /dev/null +++ b/emtests/test_i64_i16.c @@ -0,0 +1,17 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +int main(int argc, char** argv) { + int y = -133; + int64_t x = ((int64_t)((short)(y))) * (100 + argc); + if (x > 0) + printf(">0\n"); + else + printf("<=0\n"); +} diff --git a/emtests/test_i64_i16.out b/emtests/test_i64_i16.out new file mode 100644 index 000000000..01adb4295 --- /dev/null +++ b/emtests/test_i64_i16.out @@ -0,0 +1 @@ +<=0 \ No newline at end of file diff --git a/emtests/test_i64_i16.wasm b/emtests/test_i64_i16.wasm new file mode 100644 index 0000000000000000000000000000000000000000..20a3a08b17cae64b9cba9b537cb937089f67b31a GIT binary patch literal 45437 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 +#include + +int main(int argc, char** argv) { + printf("%lld,%lld\n", llabs(-576460752303423489), llabs(576460752303423489)); + return 0; +} diff --git a/emtests/test_i64_llabs.out b/emtests/test_i64_llabs.out new file mode 100644 index 000000000..e1ec50623 --- /dev/null +++ b/emtests/test_i64_llabs.out @@ -0,0 +1 @@ +576460752303423489,576460752303423489 \ No newline at end of file diff --git a/emtests/test_i64_llabs.wasm b/emtests/test_i64_llabs.wasm new file mode 100644 index 0000000000000000000000000000000000000000..54a545c5e1c4eb117efdef9bc50be346be3f324b GIT binary patch literal 45422 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≺91mYi}eTfCWS9vfz(9Hi(G_2}9 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 literal 0 HcmV?d00001 diff --git a/emtests/test_i64_precise.c b/emtests/test_i64_precise.c new file mode 100644 index 000000000..4e58eb06f --- /dev/null +++ b/emtests/test_i64_precise.c @@ -0,0 +1,29 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main() { + uint64_t x = 0, y = 0; + for (int i = 0; i < 64; i++) { + x += 1ULL << i; + y += x; + x /= 3; + y *= 5; + printf("unsigned %d: %llu,%llu,%llu,%llu,%llu,%llu,%llu,%llu,%llu\n", i, x, y, x+y, x-y, x*y, y ? x/y : 0, x ? y/x : 0, y ? x%y : 0, x ? y%x : 0); + } + int64_t x2 = 0, y2 = 0; + for (int i = 0; i < 64; i++) { + x2 += 1LL << i; + y2 += x2; + x2 /= 3 * (i % 7 ? -1 : 1); + y2 *= 5 * (i % 2 ? -1 : 1); + printf("signed %d: %lld,%lld,%lld,%lld,%lld,%lld,%lld,%lld,%lld\n", i, x2, y2, x2+y2, x2-y2, x2*y2, y2 ? x2/y2 : 0, x2 ? y2/x2 : 0, y2 ? x2%y2 : 0, x2 ? y2%x2 : 0); + } + return 0; +} diff --git a/emtests/test_i64_precise.out b/emtests/test_i64_precise.out new file mode 100644 index 000000000..69f1f3067 --- /dev/null +++ b/emtests/test_i64_precise.out @@ -0,0 +1,128 @@ +unsigned 0: 0,5,5,18446744073709551611,0,0,0,0,0 +unsigned 1: 0,35,35,18446744073709551581,0,0,0,0,0 +unsigned 2: 1,195,196,18446744073709551422,195,0,195,1,0 +unsigned 3: 3,1020,1023,18446744073709550599,3060,0,340,3,0 +unsigned 4: 6,5195,5201,18446744073709546427,31170,0,865,6,5 +unsigned 5: 12,26165,26177,18446744073709525463,313980,0,2180,12,5 +unsigned 6: 25,131205,131230,18446744073709420436,3280125,0,5248,25,5 +unsigned 7: 51,656790,656841,18446744073708894877,33496290,0,12878,51,12 +unsigned 8: 102,3285485,3285587,18446744073706266233,335119470,0,32210,102,65 +unsigned 9: 204,16430495,16430699,18446744073693121325,3351820980,0,80541,204,131 +unsigned 10: 409,82158615,82159024,18446744073627393410,33602873535,0,200876,409,331 +unsigned 11: 819,410805360,410806179,18446744073298747075,336449589840,0,501593,819,693 +unsigned 12: 1638,2054051375,2054053013,18446744071655501879,3364536152250,0,1253999,1638,1013 +unsigned 13: 3276,10270306025,10270309301,18446744063439248867,33645522537900,0,3135014,3276,161 +unsigned 14: 6553,51351628425,51351634978,18446744022357929744,336507221069025,0,7836354,6553,663 +unsigned 15: 13107,256758338730,256758351837,18446743816951225993,3365331545734110,0,19589405,13107,7395 +unsigned 16: 26214,1283792086865,1283792113079,18446742789917490965,33653325765079110,0,48973528,26214,23873 +unsigned 17: 52428,6418961220755,6418961273183,18446737654748383289,336533298881743140,0,122433837,52428,14519 +unsigned 18: 104857,32094807676635,32094807781492,18446711978901979838,3365365248548916195,0,306081689,104857,13162 +unsigned 19: 209715,160474041528900,160474041738615,18446583599668232431,15207069545523711884,0,765200589,209715,6765 +unsigned 20: 419430,802370213935955,802370214355385,18445941703496035091,4496745504385676562,0,1913001487,419430,243545 +unsigned 21: 838860,4011851082262685,4011851083101545,18442732222628127791,8073977451737544988,0,4782503733,838860,798305 +unsigned 22: 1677721,20059255436479245,20059255438156966,18426684818274750092,6972899699173253061,0,11956252223,1677721,655462 +unsigned 23: 3355443,100296277232727870,100296277236083313,18346447796480179189,14489229932752165722,0,29890621665,3355443,1255275 +unsigned 24: 6710886,501481386264302645,501481386271013531,17945262687451959857,15765766351451925278,0,74726554178,6710886,2920937 +unsigned 25: 13421772,2507406931522839815,2507406931536261587,15939337142200133573,10086413084431357332,0,186816385461,13421772,1182923 +unsigned 26: 26843545,12537034658016852255,12537034658043695800,5909709415719542906,2731509698427185799,0,467040946269,26843545,2368650 +unsigned 27: 53687091,7344941069760912792,7344941069814599883,11101803004002325915,16256528535618547016,0,136810189059,53687091,23175423 +unsigned 28: 107374182,18277961276705625079,18277961276812999261,168782797111300719,15164270991448465002,0,170226780183,107374182,62189773 +unsigned 29: 214748364,17602830091911144401,17602830092125892765,843913982013155579,4760510224565868172,0,81969565513,214748364,203573669 +unsigned 30: 429496729,14227174171159966481,14227174171589463210,4219569902979081864,9259055794720517673,0,33125221242,429496729,319649063 +unsigned 31: 858993459,15795638647556079442,15795638648415072901,2651105427012465633,8773778578690814806,0,18388543570,858993459,389570812 +unsigned 32: 1717986918,5191216968711994521,5191216970429981439,13255527106715544013,2882763035818302198,0,3021685971,1717986918,229867143 +unsigned 33: 3435973836,7509340821390028539,7509340824826002375,10937403255755496913,3002188606886016004,0,2185505821,3435973836,2008329183 +unsigned 34: 6871947673,653216062610254563,653216069482202236,17793528017971244726,1160311421120597163,0,95055447,6871947673,4792629732 +unsigned 35: 13743895347,3266080519209703020,3266080532953598367,15180663568243743943,7490496812310051716,0,237638634,13743895347,3109667022 +unsigned 36: 27487790694,16330403008365375515,16330403035853166209,2116341092831966795,8496689265331596482,0,594096600,27487790694,15548335115 +unsigned 37: 54975581388,7865039571622391941,7865039626597973329,10581704557062741063,3801217959335798268,0,143064236,54975581388,21692352373 +unsigned 38: 109951162777,2431711359960298133,2431711469911460910,16015032823700416260,10929097356750440461,0,22116285,109951162777,107902774688 +unsigned 39: 219902325555,12158560098336373990,12158560318238699545,6288184195275503181,3390366976150811602,0,55290729,219902325555,209605094395 +unsigned 40: 439804651110,5452574867622981757,5452575307427632867,12994169645891220969,4388876164940275662,0,12397719,439804651110,388268163667 +unsigned 41: 879609302220,8816143458544890479,8816144338154192699,9630601494773963357,18063307631679153268,0,10022794,879609302220,621910087799 +unsigned 42: 1759218604441,7187255533584415783,7187257292803020224,11259490299343740274,10731539484643328591,0,4085481,1759218604441,1350294194662 +unsigned 43: 3518437208883,17489586370770660544,17489589889207869427,957161221376099955,6745745258281429568,0,4970839,3518437208883,1473803897707 +unsigned 44: 7036874417766,13661061112131362751,13661068149005780517,4785689998452606631,1049124659338985498,0,1941353,7036874417766,3850578085353 +unsigned 45: 14073748835532,12965284445760691897,12965298519509527429,5481473701697695251,3112351931422336876,0,921238,14073748835532,12216012863281 +unsigned 46: 28147497671065,9486612220139870617,9486640367637541682,8960160001067352064,11094552886493166961,0,337032,28147497671065,4785065491537 +unsigned 47: 56294995342131,10540417378210381818,10540473673205723949,7906382990494511929,3425601976498736334,0,187235,56294995342131,23925326484033 +unsigned 48: 112589990684262,15810287593493069793,15810400183483754055,2636569070207166085,4740441117117290918,0,140423,112589990684262,63331636946967 +unsigned 49: 225179981368524,5267839372347670371,5268064552329038895,13179129881343249769,3129072874530825956,0,23393,225179981368524,204068193788439 +unsigned 50: 450359962737049,7899208187469855979,7899658547432593028,10547986246202432686,9662536335886195571,0,17539,450359962737049,344801024753568 +unsigned 51: 900719925474099,2616063588812288148,2616964308737762247,15831581204822737567,18056837904917260668,0,2904,900719925474099,372925235504652 +unsigned 52: 1801439850948198,13107339541825663715,13109140981676611913,5341205971734836099,3467025862604273778,0,7276,1801439850948198,63186326575067 +unsigned 53: 3602879701896396,10250508683528109677,10254111563230006073,8199838269883338335,8794376607022815964,0,2845,3602879701896396,315931632863057 +unsigned 54: 7205759403792793,14467141661278337053,14474347420682129846,3986808171835007356,17354123729136361045,0,2007,7205759403792793,5182537866201502 +unsigned 55: 14411518807585587,17211648867376814222,17226060386184399809,1249506725140322981,17050849970911342154,0,1194,14411518807585587,4295411119623344 +unsigned 56: 28823037615171174,12703613606273432261,12732436643888603435,5771953505051290529,11664739411905079422,0,440,28823037615171174,21477055598115701 +unsigned 57: 57646075230342348,9042526938693641687,9100173013923984035,9461863210246252277,16227931067794422612,0,156,57646075230342348,49739202760235399 +unsigned 58: 115292150460684697,10048528802959375663,10163820953420060360,8513507421210860650,10457660234102286359,0,87,115292150460684697,18111712879807024 +unsigned 59: 230584300921369395,16807920381198316008,17038504682119685403,1869407993432605003,16929834404840843576,0,72,230584300921369395,205850714859719568 +unsigned 60: 461168601842738790,17170154638794455431,17631323240637194221,1737758036757834975,7428164801607120330,0,37,461168601842738790,106916370613120201 +unsigned 61: 922337203685477580,7452110880706682785,8374448084392160365,11916970396688346411,17096741387571593292,0,8,922337203685477580,73413251222862145 +unsigned 62: 1844674407370955161,9590438292969086497,11435112700340041658,10700980188111420280,7158457875815234233,0,5,1844674407370955161,367066256114310692 +unsigned 63: 3689348814741910323,11058703317426329250,14748052132168239573,11077389571025132689,16235003410224285766,0,2,3689348814741910323,3680005687942508604 +signed 0: 0,5,5,-5,0,0,0,0,0 +signed 1: 0,-35,-35,35,0,0,0,0,0 +signed 2: -1,-155,-156,154,155,0,155,-1,0 +signed 3: -2,740,738,-742,-1480,0,-370,-2,0 +signed 4: -4,3770,3766,-3774,-15080,0,-942,-4,2 +signed 5: -9,-18990,-18999,18981,170910,0,2110,-9,0 +signed 6: -18,-94675,-94693,94657,1704150,0,5259,-18,-13 +signed 7: 36,472825,472861,-472789,17021700,0,13134,36,1 +signed 8: -97,2365585,2365488,-2365682,-229461745,0,-24387,-97,46 +signed 9: -138,-11830000,-11830138,11829862,1632540000,0,85724,-138,-88 +signed 10: -295,-59145570,-59145865,59145275,17447943150,0,200493,-295,-135 +signed 11: -584,295719085,295718501,-295719669,-172699945640,0,-506368,-584,173 +signed 12: -1170,1478612985,1478611815,-1478614155,-1729977192450,0,-1263771,-1170,915 +signed 13: -2340,-7393100035,-7393102375,7393097695,17299854081900,0,3159444,-2340,-1075 +signed 14: 4681,-36965429955,-36965425274,36965434636,-173035177619355,0,-7896908,4681,-3607 +signed 15: -12483,184826962530,184826950047,-184826975013,-2307194973261990,0,-14806293,-12483,7011 +signed 16: -17684,924135077915,924135060231,-924135095599,-16342404717848860,0,-52258260,-17684,8075 +signed 17: -37796,-4620675956515,-4620675994311,4620675918719,174643068452440940,0,122253041,-37796,-18879 +signed 18: -74782,-23103378660835,-23103378735617,23103378586053,1727716863014562970,0,308943043,-74782,-19209 +signed 19: -149835,115516891056645,115516890906810,-115516891206480,1138270702237148041,0,-770960663,-149835,116040 +signed 20: -299580,577584459776930,577584459477350,-577584460076510,-7012055796586724856,0,-1927980705,-299580,173030 +signed 21: 599190,-2887922307872510,-2887922307273320,2887922308471700,3579775274568585004,0,-4819710455,599190,-341060 +signed 22: -1597831,-14439611515395080,-14439611516992911,14439611513797249,-4817928955413000136,0,9037007991,-1597831,-127559 +signed 23: -2263592,72198057543021515,72198057540757923,-72198057545285107,-7239720930239415736,0,-31895349313,-2263592,909219 +signed 24: -4837874,360990287787675695,360990287782837821,-360990287792513569,1520893864324420754,0,-74617546423,-4837874,4050993 +signed 25: -9572186,-1804951439081961265,-1804951439091533451,1804951439072389079,-284040605827480006,0,188562094288,-9572186,-7687697 +signed 26: -19178892,-9024757195122122935,-9024757195141301827,9024757195102944043,3158545232664844052,0,470556755579,-19178892,-2084467 +signed 27: -38346278,8230297827616317263,8230297827577970985,-8230297827654663541,-2447170876606408634,0,-214630943519,-38346278,34444981 +signed 28: 76696392,4258000991812928973,4258000991889625365,-4258000991736232581,-4010249384068861784,0,55517617984,76696392,5815245 +signed 29: -204522434,-2843260888422929769,-2843260888627452203,2843260888218407335,-3330061828535700334,0,13901951159,-204522434,-35128763 +signed 30: -289739796,4230439635940999721,4230439635651259925,-4230439636230739517,-8819265314490703668,0,-14600823547,-289739796,1223309 +signed 31: -619247950,-2705454115284166249,-2705454115903414199,2705454114664918299,4237355741738226942,0,4368935117,-619247950,-398906099 +signed 32: -1225239782,4919473515667317101,4919473514442077319,-4919473516892556883,8469738706080185362,0,-4015110828,-1225239782,62757605 +signed 33: -2454898270,-6150623541450507939,-6150623543905406209,6150623538995609669,-6720592984569904678,0,2505449458,-2454898270,-1433870279 +signed 34: -4908323638,6140370513791418107,6140370508883094469,-6140370518699741745,-2321546656369961458,0,-1251011743,-4908323638,4208937073 +signed 35: 9817138243,6191635431204939047,6191635441022077290,-6191635421387800804,1329921992230270261,0,630696571,9817138243,4311874294 +signed 36: -26178871659,-5935310598711333102,-5935310624890204761,5935310572532461443,-1523401759741279878,0,226721406,-26178871659,-8689300548 +signed 37: -37086693937,-7216935710162846787,-7216935747249540724,7216935673076152850,4375670093386346195,0,194596361,-37086693937,-28501883530 +signed 38: -79263737669,808810785560934332,808810706297196663,-808810864824672001,1308775974572414548,0,-10204045,-79263737669,39518263227 +signed 39: -156830692073,-4044056280265052755,-4044056437095744828,4044056123434360682,3200853909245289355,0,25786127,-156830692073,-136972781484 +signed 40: -314226978567,-1773532614211033644,-1773532928438012211,1773532299984055077,149458714710412084,0,5644113,-314226978567,-39530307573 +signed 41: -628265425661,8867653647073783295,8867653018808357634,-8867654275339208956,1335113139221865725,0,-14114502,-628265425661,40050747473 +signed 42: 1256593695147,7444798936855240458,7444800193448935605,-7444797680261545311,194995390784062894,0,5924587,1256593695147,266305361169 +signed 43: -3350895572451,-330556800290685833,-330560151186258284,330553449395113382,-3084978225808244869,0,98647,-3350895572451,-1004755112036 +signed 44: -4747096823988,-1652712795001069340,-1652717542097893328,1652708047904245352,888305014260137904,0,348152,-4747096823988,-1541535999164 +signed 45: -10145758421614,8263411788629022480,8263401642870600866,-8263421934387444094,1433933448381331232,0,-814469,-10145758421614,6072735489514 +signed 46: -20074328585350,4423871910654789418,4423851836326204068,-4423891984983374768,1087756533121529860,0,-220374,-20074328585350,11822986868518 +signed 47: -40221053256659,-3673218795363245364,-3673259016416502023,3673178574309988705,-3788250272949359140,0,91325,-40221053256659,-31106698862189 +signed 48: -80417974484665,81856366510594781,81775948536110116,-81936784485079446,3556652555309224011,0,-1017,-80417974484665,71286459690476 +signed 49: 160843992978882,-411694492447657140,-411533648454678258,411855336440636022,8646015829301599128,0,-2559,160843992978882,-94714414698102 +signed 50: -428914633273835,-2052038742739178170,-2052467657372452005,2051609828105904335,4194688249318378174,0,4784,-428914633273835,-111137157151530 +signed 51: -607628393470471,-8195664785915717831,-8196272414309188302,8195057157522247360,245300141642486641,0,13487,-607628393470471,-580643179475454 +signed 52: -1298657077966675,-4065355925989985798,-4066654583067952473,4064057268912019123,1136007313742779890,0,3130,-1298657077966675,-559271954293048 +signed 53: -2569514058924772,1841492845356505789,1838923331297581017,-1844062359415430561,6068344375485822380,0,-716,-2569514058924772,1720779166369037 +signed 54: -5148294816852404,-9162055424674236611,-9167203719491089015,9156907129857384207,-6087205165210098660,0,1779,-5148294816852404,-3238945493809895 +signed 55: -10293500734037188,8762386464941522003,8752092964207484815,-8772679965675559191,8399093139116719220,0,-851,-10293500734037188,2617340275875015 +signed 56: 20588031101296916,7227264643807960523,7247852674909257439,-7206676612706663607,-3352533841896882468,0,351,20588031101296916,865727252743007 +signed 57: -54901073059050929,-66351167506463323,-121252240565514252,11450094447412394,1896642381847523307,0,1,-54901073059050929,-11450094447412394 +signed 58: -77776434364220271,834890677930987460,757114243566767189,-912667112295207731,-3500275542106939900,0,-10,-77776434364220271,57126334288784750 +signed 59: -166228105979734405,-6667874979350953385,-6834103085330687790,6501646873371218980,-4513011972483376691,0,40,-166228105979734405,-18750740161577185 +signed 60: -328897799542370857,8487580243799899162,8158682444257528305,-8816478043342270019,-905439778191045674,0,-25,-328897799542370857,265135255240627737 +signed 61: -658981736557107698,3017604953772543563,2358623217215435865,-3676586690329651261,-378165734266082790,0,-4,-658981736557107698,381678007544112771 +signed 62: -1317568093956760068,-2041941969204984387,-3359510063161744455,724373875248224319,-7186442770938425588,0,1,-1317568093956760068,-724373875248224319 +signed 63: 2635267980966005246,7574178278953946467,-8237297813789599903,-4938910297987941221,1110862422097806138,0,2,2635267980966005246,2303642317021935975 diff --git a/emtests/test_i64_precise.wasm b/emtests/test_i64_precise.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4a8ada32e95ded3ee0422d28752b1313e5e01754 GIT binary patch literal 46544 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 P8?>se;6mj>@UH&^j)T)M literal 0 HcmV?d00001 diff --git a/emtests/test_i64_precise_needed.c b/emtests/test_i64_precise_needed.c new file mode 100644 index 000000000..1fca4c8d9 --- /dev/null +++ b/emtests/test_i64_precise_needed.c @@ -0,0 +1,18 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include + +int main( int argc, char ** argv ) +{ + unsigned long a = 0x60DD1695U; + unsigned long b = 0xCA8C4E7BU; + unsigned long long c = (unsigned long long)a * b; + printf( "c = %016llx\n", c ); + + return 0; +} diff --git a/emtests/test_i64_precise_needed.out b/emtests/test_i64_precise_needed.out new file mode 100644 index 000000000..7f8562f97 --- /dev/null +++ b/emtests/test_i64_precise_needed.out @@ -0,0 +1 @@ +c = 4ca38a6bd2973f97 diff --git a/emtests/test_i64_precise_needed.wasm b/emtests/test_i64_precise_needed.wasm new file mode 100644 index 0000000000000000000000000000000000000000..064653b4d75ed4e8c99c308345c2e8eae08f8d63 GIT binary patch literal 45388 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 KHCLZg_xuB7faC)J literal 0 HcmV?d00001 diff --git a/emtests/test_i64_precise_unneeded.c b/emtests/test_i64_precise_unneeded.c new file mode 100644 index 000000000..15ddd5f65 --- /dev/null +++ b/emtests/test_i64_precise_unneeded.c @@ -0,0 +1,23 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include + +int main(int argc, char **argv) { + uint64_t x = 2125299906845564, y = 1225891506842664; + if (argc == 12) { + x = x >> 1; + y = y >> 1; + } + x = x & 12ULL; + y = y | 12ULL; + x = x ^ y; + x <<= 2; + y >>= 3; + printf("*%llu, %llu*\n", x, y); +} diff --git a/emtests/test_i64_precise_unneeded.out b/emtests/test_i64_precise_unneeded.out new file mode 100644 index 000000000..c5684f68e --- /dev/null +++ b/emtests/test_i64_precise_unneeded.out @@ -0,0 +1 @@ +*4903566027370624, 153236438355333* diff --git a/emtests/test_i64_precise_unneeded.wasm b/emtests/test_i64_precise_unneeded.wasm new file mode 100644 index 0000000000000000000000000000000000000000..063636eece3f75ac64626de5c5bd8ca99576f1b1 GIT binary patch literal 45514 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≺91mYi}eTfCW zS2+$IXy$(?8dmil(@Z<|4Sn3-M_lvwc$jqg#Zgb|(-x*+Ere=)lvLd(MCmYA^lmV~ zDuQ}4bPUqYSCjRrU+Ads8WV{=VGzA@rgQNXx&Tou=9<|$lR+QXh*H=qrSPqrI$Xzb zAEjlNUnq6`hk~;!Q(LdWQT+e$uN1R<${PeXZA?nYKPvW86jo?V8ri%p)tCXYqf94# z93?t;2-lUC!jkM(BiF&P#a(oy zwOWd;WpP12%7%~nDKXp3NP?n3rYu?PYRLjVbf!m@+v&7Xzvo zPayFM+Ifa#Y&+vQE^gB<^N#A2gmRl(GeUF|cg{#^M zlC0ShPM4hu2yUmsd^1~xv3GT5J&~@1J}Z_A#W%FWiU1wT)MPkaZCNSQ9W^bsP)@^h zoQCIkdA{jglvm&I-j@v#znpF0=rAkJxy_p8(FNM-&X0MV4I1C)R;@0IZI*6e!^B;e zYPsZJnJskY<>$m)(Ihdt3c0o4NWfRI_!M}T0*{?=+$z{X=>jKJ4m%~9caEbr$5FdX zx3<+$yIdEw<)C(j-{A&obA{R!fSRXk+X~dK)J1JV?J8aH##PuI;VE6~1OaEq$i>Tq z+Z^F0O$|Y-072*x_En)t*CVt7pUbVcrDhIYHUU? z(S31TqSnqGa=IPv5nTwUk#vzf0?j3Fy5>#8$D$bH6!F?*)(Qo^AC0*nPLzC1Rx4CW z3(dz=DW$NlJs+VXP#dhAcP=b-gq;}~S88LazZ2us&Y7)T)AeThXvu7)TKF)w4`XI0 zAH+;gHewR}HJ8?@eVaGbx?8Y(9qJ_MMr3>2g*+>hWhhy;=bAekrG{nYS#SIeTEggf zn2m;lql7V521ku*dffScL=}GN@9G`04h#kAWg>Vm3!uoo1Q3$|MRS;{4iHNKvDNS4 z!{0j_{=xoGFrg>Z{nv#c+}HM1!u?>s{ha$S0ub-{rE0U;{NGD$IYu=bqniDZs*Is3 zI<~N>u*DYOe`B-9b&-8Iu;8-ibz@y|y`7lo+1L)`IzLPWifF&jFTBK16f62gU2!KK zdm*+zbN^ktYzbsYAbPY}s}Oop%=M%*34^-x)|Boh)lJ+$KUhc~ETpHzV101-g#_*Z z8x?-RW?zYU+Al)8&lTE5Jl)Y<&;;88?uu>oCkM73js3v*W&MZ?yj!`l8_0(VvggDk zvYr#80?+xkytB%xYMZgG_P17D-K_$+y4%-#huh(rt#eg(&IQ^S5YUQ;gUw-~z1zJ0 zp9Me>*i8$ZXBp(X!uz&hXJ9L8jx#BOIXjulV9eNsXO?dv!N8e!g`@Uy9yn5l2X?sd zM&ISFJy|9QYVRL)V<*?=F{k&u;?*71u&g#EKZraWt?x#4o*rhy!qh0=vRnLY(Jg)? zX%6d(RHyIVHRsr}I}KT(fLk?)GDo}dLP7j#Y$0prcZ}>9@}~B1teYt$Sfa^@!H#3a z{1$d=ktXxgv5J(cXF6lWv`BV_LvmzAdtnkP>S3NRgz4Wu+rtdmDv)*vM>9$KZrn8= z`~UrA4R~j%t=CpP`_=k2H}&eb>|dk2ao2b6e%0~{ef#vw2y8eM zm3s7`xx5Hbhk+Re?k8_%0kOt%S1PE4GT>A$3is07iUS*sZKI;NfsNU+lvLsLu7ntO z;7*U&+Hky9Z%qFMud{R;`!c*%YwVi8f)^Jw7NyN}+mD~S@mjT*)-o9pma7P0WB)qX z0eN+FVKqW)4&Y!@O{OEvCbvyo8))**FH|~z? z+l{Y!LTAFIkhW{{CbAY0)b=iOk(Mw=SD?!{WN&Ok+GHCt0PB!Zn1aYi1j&Hi2WjSF zmEvZ{jv&S$HC?btP7Wr7f%!A5g}`;2tk*$e3rgcc$^1dbvrjjkm&8J5Qeu;m;iWwa z6Owe;@DktuqiZVZkVhu!t(a5_A}0hAuByx*DBxs5y^|YwF*KPUsV87!LJ%!?jZ91w z;wC06D4#*2`P^z!5MQkhl4bd`e0}P-noa`5_5OwmeewpsZ5(FJHYN1JJ|t&J?^lMs)vCXI;j~E zisik-wvD}t+$`VjkuA4I2Demc-YncFi;}QfzQ_sDv%46jc|g`As``U6A))F^R?7&f z6_zC3nHsw@sST#;63^K({$QEA)PnRANTTLGhdwfE)n)1vIDVF zZpP*r^l#?USN6kRR9bBo)w9(a8TcY{ih0=9i++4r(SPvSL{j-jMLs`px;v@o!Pr zC6O(Of-YlU!|S@bdfICd_WH{9x~%!Zqp^$a8>?R9*Hq&-bf(4DXbo?=g@5Cy;+(_3 zCwJ?lwLIzZ8DO(CGzXL+yoA} zxX_=7SV(`kle}2Ljgp1kT>`#77qGxhpsoqa226}e5?7oFJI?8RkOkaS;II#kC!il*wx2@jfTu=N~OKl&k?ChN%}Nhdmx6`HcI zt{h4*8wk(OQ5rxDOTCBf%ZiD(&Z9hzh-tUuF3b?ySis(JJm!bo2LAnlGZH zY_>t{RcsnoU8b{oMb!r$T=kXCaqxjD6cz&FTeh z<^^@e9N|zwlXPrDcpVwrW`ebpd3X0(oNeEwkql{m)~gBtUK)kX3cz)a&8RuntTl9_ zC|Ju)we^ZE&WgF#R{M*{>}AG0zyNV{au6d8^)qd^P*6PD>FLd`ue61YI0VKlr0UZ?vA2*Wmv#XY<)8d^?W@s zdU;A>lT@@oD-WI-+l4Su7P>S!>7W2VY1KmK2Hb5iwa z>($`1WG2bHt*9~1$$$sCEJ{z#-5E`L%f%^E$;zrQ2=G#?n`)p{>HYj-$0-uf`z)T z+=*ZvuhRCi%=T)Ba^(QMR2rr{Ds2R%jZkUTxiYRUF>MDHS{U!qV+$=3Iz5*wmlAH7qf`q3_|Kq+K%|I3Jy1MO*rr1X!lB((w)S?JjVv<&@)t^W1cx1k!)gT% z^rLw)jxVu-Qt4cwx;(|Dxo22a=_nR-@=~QA#)c;Eg;^1SQbGC!MR06ErT@*$ioMOi zrlu$`$kq^yohW@Ll|IPl+01K-jyhLcAe^>v6e``zJSPD58DXuWBoq~{v!JBIZ7pLT zlqs#?9x1hgPGe4DFl>`vqSH^yG5*-Zb`)zvw8tkz*0G_=urrA4EJW6EL=b56I2Zs5 zXE_Sx?ggZyfE5w5f9E?_7-$b?ikCDwV(6KS1j6b?9EEn^n5Z}aAw&wT0u-4V*?OFp zXlLTMzII17r=A(v2FlX{E-k_ZrCqc&ZIE@ZPrY<3Q^JM?_~|-sD=oxvUOIY-4LLx; z8LJ|ChR#XU4^B|}3I5gfRClAC_+Bu3mD zns%8fNd15%kn}HzAIr8Wm3Ub+ou&;>6;W70aFvk+HI_kaef2JOkG0o#7;m9ELd+1A z8V+`ZSj?z2Fmr?&i=~|QZYwV4@{Kxx>~Bj_2dk*m#^K2{4Mc*&C;^;maIL?#-7#&g zml`+Krp57!6I0P)0LAJ~eZy9k1odMLD-Cbx)c)%5h9l^KE7>alqfS`h zqk#-W`hXVI$E?Nr2$7W>Z3_Oe>P(~_yB6nx*D#Rr`SE5}vtkljO~0V(%k@rWNlc5MqA193keXBE)-% zjz?Uoi}3R^kxcXD(^Crzl5n?&od=Dx=Q#iAFzZ!r4ol5n8-JbnBG?n$# zN3NdbQ&+F)6fslVi5w;7l0gO4cV& z_!W1uI=FnfbeAjLsd3nci=gy$M)TIi#r9o@47;$n-@fa+w14nTFzPnnjlS5BdcvQn zV!wfgep#9unSWyf?ThOCHQInB+2`8kb8?_I{V7&cu@l!n=g=VUs2t7H62`4$Cnq&M z1<@}@uFlk)yoORT$uZ<<<0TZHK~cVQ^+F17oao)%co@&_0(pAMy8&4pOXgHODsWCx zUplWLd2qfS8mPx_M6HhJ>UxJZE8$_3V#oXVRQY&8WsPDn@?0Wue?h`KDRm|C`dqrF zS5myhnZ@<}JivQ_?(YZUiRr8`Bjx7)nYx|-B;h2>hv|x(rHlG;N_~p%=l4jay|p?e zFDjl|84)f9FCI*33zzttD-(HRg?ka8%xpcVGB*@2EVQA;nUnBbinZ~=q#lL_seScI z^yPYbINwOZ@A5=KEtq@*m3|MQ>;WmVwmhu;i-%pvH<;P+=_$4DmcUMs`_MJAc(@N7 z@|D87NtPes2;Q$}VC)Z^%1e0t#gY->K|S{Zpf)}8a&4lAqiHg3g7qg}9)fs_^sWnU zN4IIk!1(=8!b0TXB>X;e(D2l|Jlvv%eH-fvKpbHEdtodf?0~kwazZ6)Wifzd$M5Wb z@O#cH^8}Gj9v4#NKulaEL+Fn)>(WE2h(8m(5klrb`!mshaHt27Y(ZiNA!B}Lzi(r` zaFDg?Xz~CX+s2lmavaQruFzG$IIYX1(YWs7#sTlZu#Yy$AlL{k3=o!OH#p{5m&^z=> z(JZKXD2JXW@{!r0HLc1+ut{k+vf$Yx(<|7j48^^0FP06keGV)Mh|-!ma2P)e|TT{N50w! zKQcYh{*mR375_wS%<4eXnt>y=WFXVPumPu^=LKGc>7~VDD6YJAb6*w~^NM$4c%Wq} zPsUjDyzr@>cj1|p!;1%FhIgL&!AnUe@5S&aO!0AqUWnl}nJ?H6@h4(tvsKz;I@?8> z*;belSlK~H1jTSLohz?XfRu{NV*Y{73xGJ`0o7e`U zS$@PE>{r@N!nRI5lokO?~o{ z0dJdb5qqq5J?)=uT5rHA{?Mrw9yG&rtwVsY0S&PY4RKr){*m#uI$s;>>%Y1o_9pN! z0{0I8RYOStFR>aqUYVb#({UM;FH(9Otf?wHr5yQ2ezA~wC(hrd2JASljycZ8A-DfR z9ihtRQc1K)PjfOVm=RjdpQfSyWK>8!YFbKfZ8?{EXj2gBp^d?=Bi@MXbE4cEl29HZ zr#8$5x30h8X+v2dvJ-(j2WdLXeM)yhq?6uEye^E)IO?qiCidKDY`BOJar(tNZmn`J zVOLVsy9iY`LBYDYcx!>bRQq>o?%Cj}jB|7l9Q5Zf+1|PqUSMGJ_{-|=Am?Ehz1#E> zT`pJpD=38|Lg9+2D-Id!&{;-zKS1r!XZl0b6Ioe0^cNEoycY$p##wsG<*r!#+CSVy zdxvu)?Hl5`5*l9>*;Sa;9ae1NvA7(iJv@@mAQYwLH99j6jB9|tOHFT16$0d1e=YfR zTJk#Qo$DOk>!{a=Vh0cUyp+(cFLS(>v*om`ut3jDz_4!KS)G85!?2odWy3}myD((j zN_z9ZqA%z1dR==Y{BChQc#pACl>5AU; z9iklL@kM?deG#*WN419pqP@iykNLi0=L03*Oj=CO@GkYZKe6123CI(=V~Wi~Z@4Et z7_d+2s5u)&7+ys@t(;d!6nj8`eTF+Bpw&7qVEnw%N~lX9*>e&0P?Ztd8+u;lbFTzj zLt!0m7iR~stM$mbHn$YJKzczNN4B=FN7*OBtvwc7PzAn3(J$+5W%Y?yv|Fj#_)d=v zYYDGKhI<8~J)RWruJOL}4(#0xhYxn;!gXJLysjM{0eC~ZIqBg$mHgkZ9kZRHy04~3 zoz~V-t2g~6=QnBTx9Yx@@U|E8HpTFk8&9`&LHKlsu4(eOJJiCNysokg`jQ=ZW+1JF zvr?wul>LqjRw2h(Y2d}KGt%%gUAF&vOxoVnCegA<@q0)nCcV>AlFrl{TJHgrSG0I5 z0dO`+nJl(_1H5hcUI(Qx@)V5 z{VWQjGp@rKtsA!_+dlW_py^Csa(}y?ftHZs+N*krT{|XR&$W?_4m)Qg3LE0vsf%ZX z%!VMdQ;qv}zE&@$Qfc3(E4O*=EY+3usUM`SFY ztl8Rb;Wv)xZ$##!bWN6MI#m~FiM@`NS+mCS--KW1QP@M{IjI0KMYmWHaa0_Blj-lT z8P)dars;0Qw{OAUtE%2dpE)%6BZpeLPs21Wv1u{APA?DIh*2_t9+CfZRJRE*1XVPqDD?%R9qB>>9cLlwU07o*3{_|*&8ur zUK~?QEi6fFeI9olA^T#kTk=iXB@D+rwOHf0=bK5`QfH0;GJ-o}{E=#)&G84Ufp(d! zpUE|+fcBc8y#}-^WB^@2dkttj#3*QQIW!$6(AWC@`f!HtdBS1oEj3Ebm4+mlP&b%{ zJ@&*%nw14zV$Yf$z+O%CxJq`@K0%wW$F3pe2vx2yg`Q|5yl&S}Vbsmn#NoHxp{23^ zTG>Q{){%6R5w+rZ?74b55vL_O_R+jbDkEtQMPPC|>*u0`E!u`IFYg>MqWEsALY zjAmO%)Ka{O4b=!(6t@JopXKwhI;kJy-S^bXmacn4xdqI>|qM%l&yz;^emG}oxBk{%)4^=B6Bq~}SS}skc z@=!o3-}jr@b9PG*h&PZ|$?@E0ewUduXXcyV@ZM<@{|4f5zY2=YWF&Rq+IwPgLCLSd zRKRm_LJ1IEd>GGi92Vd%`5-WI^NIDFVrAB>O#QUT@$OMG`1}?F6ZCSH@NxWmbQQO@ z;?7nMtg8Cl%~b#caF7L^yhfxsy2Koz=WzZGy73mF=ty}K$AwY;Ss~>tIr%nm6tCF3 zKZTRO=SAH@9H2@7BAtX6kWau_gfH({zPuxRL6kX7DJLV}75oEP`UhT~jjZn?9yhBL zE4*w;#weBs7|Z?q0{SCi=jc{I7vlp6xF>}Tjz5t*XUUyE7m*Aj(tChF2w~S4Fg#az zpZ96oYqSCUKt1mjK^Y)YXYp<>;?j~%Wk+$}hrW+0^?^}B9CpC=ZyAH~0;~8-5rg;@ z{SdBiDV8d4IeG!t$JPL)2M4dr0c;8+JkX`9z?=d1gNlrPe#pTFZ-l?{B5exgZ*nN> z?{Eu~0M0a;3vAd?Y}YPS&I!xUk>#5XaEq^0KIHwW04hLvpCnWf&e`k|?T@Uw0^HcpEoWXwW2rHD~nd*B$-3!#jUL!!$1bWd|6nObP{))PI2-N&y1!L;i0& zl}Wt9S(k-k5asb4mSb@k$-$?%qvvoVH@?6f+|Uh6vH9oV zZ~!Fpf?U&0VSJyrbyFHYaBw*{uIOH^yy)l`N!<4wF!u$ga;~4wnJ%%<0E1lx(BdUj z03u#;s@M?6(1UAJ9YAA#$oso-WA_TK>qZOi!iCuEKX&c>WoFW5zu1C$(_-K1)RAYo(T}}0B8j>6^%1uuI~WcP1G3z3uL4B9SyunSvA3-xTO8Qp zz!nF#IIzWmEe`x&aiG8x?ONHjLT*1{T7k(>C*<19j|oGO3CAui3tU{>I7!sfE&vJ! zDntERRWKjoM7&@u00OEs>R1FF&kYr=yZn<1VX2&r04-B}3JbD8Oo-7l%vy*i!tXnq zSDxl((J2F%*t~Y)8SY`dN}Q0vB#)Ke?kn6&T+Mx$T4BOG0TL#-%OQZQ>LymSU?c%l zVAT!Zr?+Fm#En?SWA<7;4m|f!!R!Fr$VoKdh5Q4YA4@X~zzzx4SV-&UtN0Q$b}vkM zLnv>kQ=Ze0!!M-jHEX%R0l*u02IMc-ES{=R9atkGr+O9GbuOl`RhX@D(!C9Zjq;1R zP(86K$goW$q8$t-5)(YE3ZN!Vyiw}UFpC|hk}o-2a@lp@cI=#)?_>P0aemd=eMD zF$I_UutBV$R*)4`w6C%U9~SsFfaqx&?G3~T%nPo{V6~soV&=zuweP9+aZA3BdI?FQ zfUBbwd@KOp#>DwLNXkTf4KRsV53T;{MwW(e9ONyQr_lcf@DT*`+!VM@4x;&R45i{O zClNgOdSS$ncqY~&84~y%h3=r{(Rwrkg>8dbZWfJ#1s@MHOCZ5n1y6-h(3Vwvv4R7| zlgKOQ8X$P2FF=CSAnBv*oZuQtB%ak^=E1Qi4Eq17TCw~F_T_9=95R8fd$9NqO}m5= z`gm~K_=o5p%KfACkLG?@f`;Yp+`p6lowEEBnAEf_a z?w_K6D)&#*Kb`xJ(0?TNAEWY@-Hx8kH3XiFX8V`Uo`R{UUdI z71arEF6rLXieFIYOli<4tRQz&nX8d4rblt0r%(mxF$6Bpi6qM4nmy_yXFEiftP5IX zUC+CRi7Az`7uP>w?^^OC&DzT~E?B z5d|P=I-GZUIR8(K(#4gr(qrKGJ~_7sPH89{VYn!qS=A0!)FaprD&ANfEd$0o zR@yft6N)l{*+7`hA(E4XzLSXHUR);~UZ!KEG9=7C4w+pVFJO${$pFA+5jbd#oWcMt z3MgX?7FVH+b$ytkeQ|d|!Ms4}`Q77cM2(M+EByNTP->Wu5+D4HtFaNpJ0pXtuw%G{ z@ZkYGN@{?4Y)(mOA6+>|m=oozq8er}kAmbScV`m!Xjh21ch#Jx7mywt8yj^aHc!E4O@N8|(m#e_`)vxvzB7_M2~8 z4#M{8qV69U+p%-kjYGQ!5ANSHF+6g^CqH#y-_uWh>()b)$M3uU#LVaC&RzJ@m%sAZ zSHJf7*WG%ntS z5I!I3IIS=1rKa!cFw%`?djpyI(4z9rrAS}Y%AglU9Si)p-}YC!_((l*+p;?J#nqroW-nz+H2jz7Smt)?B}dOrE!*W}+~T4>vqkr~PKIg8Xjda2Ozy zP-u!)r#n;%H&8NoHWLN`NGFTP(*z;_pS-AxbxE^@=7nj}n|LXW!O1gWoakn(8{y?3 z^Q1xKx%FjfX|>Tn!Lf!QkwKk`!WA#j?It)@`^5yJEb*1bAq*K!kEeTSQnYTANcsj78=n;=gl9tIcH zBO9&7&~Mg-$=VOYw&+LTwyat((Rt`c%MCVk*ao5GzYuR_07^w94KJ=o%{FunZOz1b z%58i+ntD}VZu$+~QAsB1ut(H0)5yGTYC+7bWM6j;nf^7PBEs9tVT!`TdOeNQBZ-R+ zX!=+^Ttnw!4_k=9{xFR-WbCoC^z^K{i@xe3Xf_RuA~Aon)%HE|(nzZX6>!mI&=Ej6 zWoSB04IMRUE;UhXgbuQX)TfQCS%|CS1e(+$A=1%uPT5q{O=_m?WF|SlskWEJ>MR(c zm)%$|dXPr!fhN?k5QRxt4}B|ta@4labog94)Z0Zw$K;Gvv=}_~5;QbUnt>T!tUOS$ z)zEX6;9NFYotGo1iI6WNh%GIP7Q!=)=n0O~Hbw)o^bu)-DTEpFnE4)GmVL=>aSZ8A z+v%Ivi1eO4j{5{_gI7z40Y5`MQS_chS%VK`*9DOHc_N}OBi3Z;joUE(?o`;{H@^nP_M=Yh1`z9iyWxB2EOi4 z^bEWRr0XubK?A+wVdyJ5OFoD_l!ka0c2-B5NPYj)>hSc1$>|FSIy}8TIlZnC1JSA4{HzMxK+RX@ H)$RWP&Sm(O literal 0 HcmV?d00001 diff --git a/emtests/test_i64_qdouble.c b/emtests/test_i64_qdouble.c new file mode 100644 index 000000000..04b4e578e --- /dev/null +++ b/emtests/test_i64_qdouble.c @@ -0,0 +1,21 @@ +/* + * Copyright 2016 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +typedef long long qint64; /* 64 bit signed */ +typedef double qreal; + +int main(int argc, char **argv) { + qreal c = 111; + qint64 d = -111 + (argc - 1); + c += d; + if (c < -1 || c > 1) { + printf("Failed!\n"); + } else { + printf("Succeeded!\n"); + } +}; diff --git a/emtests/test_i64_qdouble.out b/emtests/test_i64_qdouble.out new file mode 100644 index 000000000..0b9e5e9e1 --- /dev/null +++ b/emtests/test_i64_qdouble.out @@ -0,0 +1 @@ +Succeeded! \ No newline at end of file diff --git a/emtests/test_i64_qdouble.wasm b/emtests/test_i64_qdouble.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4c89e3030d4f2bccb74fc5a6306b0885d6e3d0c9 GIT binary patch literal 45489 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