<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/109922>109922</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[ARM] Crash "Call result #2 has unhandled type f64" with integer-only MVE and setjmp
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:ARM,
crash-on-valid
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ostannard
</td>
</tr>
</table>
<pre>
This code hits an UNREACHABLE in the ARM backend when compiled for a target with integer-only MVE using the hard-float ABI:
```c
#include <setjmp.h>
struct S145 {
double M0[4];
};
struct S145 F62() {
jmp_buf jb;
if (!setjmp(jb)) {
longjmp(jb, 1);
}
struct S145 result = {0.0, 0.0, 0.0, 0.0};
return result;
}
static __attribute((noinline)) void F22() {
F62();
}
int main() {
// Escape a pointer to F62
asm volatile("" : : "r" (&F62));
F22();
return 0;
}
```
```
$ /work/llvm/install/bin/clang --target=arm-none-eabi -march=armv8.1-m.main+mve+nofp -c test.c -O1 -mfloat-abi=hard -isystem /work/et/build/llvm/lib/clang-runtimes/arm-none-eabi/armv8.1m.main_hard_nofp_mve/include
Call result #2 has unhandled type f64
UNREACHABLE executed at /work/llvm/llvm-project/llvm/lib/CodeGen/CallingConvLower.cpp:172!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /work/llvm/install/bin/clang --target=arm-none-eabi -march=armv8.1-m.main+mve+nofp -c test.c -O1 -mfloat-abi=hard -isystem /work/et/build/llvm/lib/clang-runtimes/arm-none-eabi/armv8.1m.main_hard_nofp_mve/include
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.c'.
4. Running pass 'ARM Instruction Selection' on function '@F22'
#0 0x000055806a6de817 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/install/bin/clang+0x8095817)
#1 0x000055806a6dc3fe llvm::sys::RunSignalHandlers() (/work/llvm/install/bin/clang+0x80933fe)
#2 0x000055806a644f18 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f3b01e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f3b01e969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f3b01e969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f3b01e969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f3b01e42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f3b01e287f3 abort ./stdlib/abort.c:81:7
#9 0x000055806a64d141 (/work/llvm/install/bin/clang+0x8004141)
#10 0x00005580699c8924 (/work/llvm/install/bin/clang+0x737f924)
#11 0x00005580699c8f1d llvm::CCState::resultsCompatible(unsigned int, unsigned int, llvm::MachineFunction&, llvm::LLVMContext&, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&), bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)) (/work/llvm/install/bin/clang+0x737ff1d)
#12 0x00005580687ad761 llvm::ARMTargetLowering::IsEligibleForTailCallOptimization(llvm::TargetLowering::CallLoweringInfo&, llvm::CCState&, llvm::SmallVectorImpl<llvm::CCValAssign>&, bool) const ARMISelLowering.cpp:0:0
#13 0x00005580687a9d4e llvm::ARMTargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const ARMISelLowering.cpp:0:0
#14 0x000055806b934364 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/work/llvm/install/bin/clang+0x92eb364)
#15 0x000055806b955582 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/work/llvm/install/bin/clang+0x930c582)
#16 0x000055806b93caa5 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*, llvm::TargetLowering::PtrAuthInfo const*) (/work/llvm/install/bin/clang+0x92f3aa5)
#17 0x000055806b9259de llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/work/llvm/install/bin/clang+0x92dc9de)
#18 0x000055806b91860c llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/work/llvm/install/bin/clang+0x92cf60c)
#19 0x000055806b9d6e96 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) (/work/llvm/install/bin/clang+0x938de96)
#20 0x000055806b9d660c llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/work/llvm/install/bin/clang+0x938d60c)
#21 0x000055806b9d3902 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/install/bin/clang+0x938a902)
#22 0x00005580688b88f1 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) ARMISelDAGToDAG.cpp:0:0
#23 0x000055806b9d1216 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/install/bin/clang+0x9388216)
#24 0x0000558069b6faf4 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/work/llvm/install/bin/clang+0x7526af4)
#25 0x000055806a0c0729 llvm::FPPassManager::runOnFunction(llvm::Function&) (/work/llvm/install/bin/clang+0x7a77729)
#26 0x000055806a0c8521 llvm::FPPassManager::runOnModule(llvm::Module&) (/work/llvm/install/bin/clang+0x7a7f521)
#27 0x000055806a0c11af llvm::legacy::PassManagerImpl::run(llvm::Module&) (/work/llvm/install/bin/clang+0x7a781af)
#28 0x000055806aefbd51 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/work/llvm/install/bin/clang+0x88b2d51)
#29 0x000055806af20a4d clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/work/llvm/install/bin/clang+0x88d7a4d)
#30 0x000055806cd62037 clang::ParseAST(clang::Sema&, bool, bool) (/work/llvm/install/bin/clang+0xa719037)
#31 0x000055806b3b8e40 clang::FrontendAction::Execute() (/work/llvm/install/bin/clang+0x8d6fe40)
#32 0x000055806b31f43f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/work/llvm/install/bin/clang+0x8cd643f)
#33 0x000055806b4a9ad7 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/work/llvm/install/bin/clang+0x8e60ad7)
#34 0x0000558067ecadb6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/work/llvm/install/bin/clang+0x5881db6)
#35 0x0000558067ec73f1 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#36 0x000055806b155779 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) Job.cpp:0:0
#37 0x000055806a644c5b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/work/llvm/install/bin/clang+0x7ffbc5b)
#38 0x000055806b154ce0 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/work/llvm/install/bin/clang+0x8b0bce0)
#39 0x000055806b10ec98 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/work/llvm/install/bin/clang+0x8ac5c98)
#40 0x000055806b10ef57 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/work/llvm/install/bin/clang+0x8ac5f57)
#41 0x000055806b1305a7 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/work/llvm/install/bin/clang+0x8ae75a7)
#42 0x0000558067ec6a8e clang_main(int, char**, llvm::ToolContext const&) (/work/llvm/install/bin/clang+0x587da8e)
#43 0x0000558067ed7f07 main (/work/llvm/install/bin/clang+0x588ef07)
#44 0x00007f3b01e29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#45 0x00007f3b01e29e40 call_init ./csu/../csu/libc-start.c:128:20
#46 0x00007f3b01e29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#47 0x0000558067ec4be5 _start (/work/llvm/install/bin/clang+0x587bbe5)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0git (git@github.com:llvm/llvm-project.git 0bd513082540b2b00bfad1540812e3ea282e70ed)
Target: arm-unknown-none-eabi
Thread model: posix
InstalledDir: /work/llvm/install/bin
Build config: +assertions
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-d735c0.c
clang: note: diagnostic msg: /tmp/test-d735c0.sh
clang: note: diagnostic msg:
********************
```
IR reproducer:
```
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "thumbv8.1m.main-unknown-none-eabihf"
%struct.S145 = type { [4 x double] }
define %struct.S145 @F62() "target-features"="+armv8.1-m.main,+mve" {
entry:
%jb = alloca [20 x i64], align 8
%call = call i32 @setjmp(ptr noundef nonnull %jb)
%tobool.not = icmp eq i32 %call, 0
br i1 %tobool.not, label %if.then, label %if.end
if.then: ; preds = %entry
call void @longjmp(ptr noundef nonnull %jb, i32 noundef 1)
unreachable
if.end: ; preds = %entry
ret %struct.S145 zeroinitializer
}
declare dso_local i32 @setjmp(ptr noundef) returns_twice
declare dso_local void @longjmp(ptr noundef, i32 noundef) noreturn
define fastcc void @F22() unnamed_addr "target-features"="+armv8.1-m.main,+mve" {
entry:
%call = tail call %struct.S145 @F62()
ret void
}
```
```
$ /work/llvm/install/bin/llc < test.ll
.text
.syntax unified
.eabi_attribute 67, "2.09" @ Tag_conformance
.eabi_attribute 6, 21 @ Tag_CPU_arch
.eabi_attribute 7, 77 @ Tag_CPU_arch_profile
.eabi_attribute 8, 0 @ Tag_ARM_ISA_use
.eabi_attribute 9, 3 @ Tag_THUMB_ISA_use
.eabi_attribute 34, 1 @ Tag_CPU_unaligned_access
.eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
.eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
.eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
.eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
.eabi_attribute 24, 1 @ Tag_ABI_align_needed
.eabi_attribute 25, 1 @ Tag_ABI_align_preserved
.eabi_attribute 28, 1 @ Tag_ABI_VFP_args
.eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
.eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
.file "<stdin>"
Call result #2 has unhandled type f64
UNREACHABLE executed at /work/llvm/llvm-project/llvm/lib/CodeGen/CallingConvLower.cpp:172!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /work/llvm/install/bin/llc
1. Running pass 'Function Pass Manager' on module '<stdin>'.
2. Running pass 'ARM Instruction Selection' on function '@F22'
#0 0x000055c1963f7317 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/work/llvm/install/bin/llc+0x6d34317)
#1 0x000055c1963f4efe llvm::sys::RunSignalHandlers() (/work/llvm/install/bin/llc+0x6d31efe)
#2 0x000055c1963f79ea SignalHandler(int) Signals.cpp:0:0
#3 0x00007f0b6fa42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f0b6fa969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007f0b6fa969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007f0b6fa969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007f0b6fa42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007f0b6fa287f3 abort ./stdlib/abort.c:81:7
#9 0x000055c196360171 (/work/llvm/install/bin/llc+0x6c9d171)
#10 0x000055c1952c74e4 (/work/llvm/install/bin/llc+0x5c044e4)
#11 0x000055c1952c7add llvm::CCState::resultsCompatible(unsigned int, unsigned int, llvm::MachineFunction&, llvm::LLVMContext&, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&), bool (*)(unsigned int, llvm::MVT, llvm::MVT, llvm::CCValAssign::LocInfo, llvm::ISD::ArgFlagsTy, llvm::CCState&)) (/work/llvm/install/bin/llc+0x5c04add)
#12 0x000055c19407ce11 llvm::ARMTargetLowering::IsEligibleForTailCallOptimization(llvm::TargetLowering::CallLoweringInfo&, llvm::CCState&, llvm::SmallVectorImpl<llvm::CCValAssign>&, bool) const ARMISelLowering.cpp:0:0
#13 0x000055c1940793fe llvm::ARMTargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const ARMISelLowering.cpp:0:0
#14 0x000055c196142004 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (/work/llvm/install/bin/llc+0x6a7f004)
#15 0x000055c196163522 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (/work/llvm/install/bin/llc+0x6aa0522)
#16 0x000055c19614a745 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*, llvm::TargetLowering::PtrAuthInfo const*) (/work/llvm/install/bin/llc+0x6a87745)
#17 0x000055c19613312e llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (/work/llvm/install/bin/llc+0x6a7012e)
#18 0x000055c196125d5c llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (/work/llvm/install/bin/llc+0x6a62d5c)
#19 0x000055c1961f0236 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, true>, bool&) (/work/llvm/install/bin/llc+0x6b2d236)
#20 0x000055c1961ef9ac llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/work/llvm/install/bin/llc+0x6b2c9ac)
#21 0x000055c1961ecca2 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/install/bin/llc+0x6b29ca2)
#22 0x000055c194187e41 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) ARMISelDAGToDAG.cpp:0:0
#23 0x000055c1961ea5b6 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/work/llvm/install/bin/llc+0x6b275b6)
#24 0x000055c1954cec64 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/work/llvm/install/bin/llc+0x5e0bc64)
#25 0x000055c1959e9dc9 llvm::FPPassManager::runOnFunction(llvm::Function&) (/work/llvm/install/bin/llc+0x6326dc9)
#26 0x000055c1959f1bc1 llvm::FPPassManager::runOnModule(llvm::Module&) (/work/llvm/install/bin/llc+0x632ebc1)
#27 0x000055c1959ea84f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/work/llvm/install/bin/llc+0x632784f)
#28 0x000055c19379fc23 main (/work/llvm/install/bin/llc+0x40dcc23)
#29 0x00007f0b6fa29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x00007f0b6fa29e40 call_init ./csu/../csu/libc-start.c:128:20
#31 0x00007f0b6fa29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#32 0x000055c193799a65 _start (/work/llvm/install/bin/llc+0x40d6a65)
fish: Job 1, '/work/llvm/install/bin/llc < te…' terminated by signal SIGABRT (Abort)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXF132yjz_zTqDcc-Euj1oheyE7fZ0z7NSbz9X_ogQDathPwglCb76f8HkG2h2Emcvuzus5vTJpaA4ccwDMMwY9y2fC0Ye-tFMy-6eIM7tWnk26ZVWAgs6ZuioQ9vlxveAtJQBjZctQAL8Pt_bi7z-ft89uEScAHUhoH85iMoMPnKBAXfNkwA0tRbXjEKykYCDBSWa6bAN642gAvF1kxOGlE9gI-fL0HXcrE2ZDZY0klZNViBfHblodzzLzw_92Lf_iP9M0RckKqjDHho3jL1pd5ONx667IvN71bJjihwG4QR8JKZfQkAbbqiYuCj70Wz0IsuPNQXecng8yMKixh6MPVgNqT1pd6uiq4EX4p9SwB4CUzNwOLyYPql8GA2agpA1Yj1oXwOAl3pQEbDGWABYIhGsrarFPDQhabpT31N4PGfwYgAkEx1UvRNnVEPutkNHCtOwGqFlZK86BQzI0pFw0XFBeuHc9dwChbwCGP23DrVDxcK1JiLx009uPDgAly2BG8ZwGDbaHmRQDWGal8LtzW4ayqseGWxQQ9C4KHc_odQmmddEhswmQNmBxM-gukyyz-CfyeLDttGL2Gox_GtkV89uKiqu9qDCy5ahavKg4tCj3tBKizWYDKxS8NDF1jWE9EINmG44GBSY0k29vVdOg0m9dQybFbfMQ_ORFNuwYQAxVo1JWDyKQCT2iydCS64hy70WgIT3j60itUDOExpCB2v6AFbxYsdoonshOI1az24cBDZZw3FIlnpDlYaxsogWvRL0rJgjqtqL6YQQbDBLejEBguqtYJ62DJQxqGtPFQo7J6RTjEKsHrMQ_1nspXNF0bUGP28oewd05zVfXOxnjfi7kPzjckp2W49lAcJ9GBge7z-cJnfXoK2K2quAAZFtwaSbRuptKBtlNq2WvsYWVxztemKKWnqk0B423aGYwALCna6SWs0InG7MapRSUyYXplbybayIaxtGQVt00n7WrfEbdsQjvXwZSdASyTfqqmFfKsw-QpoV2_3etGfAvNzLZu1xDXAct3VTKjWLoJ_tAAGPW88NGdN6aFLsMWyZVLLld6lmhKUWnmYyrCvrGUIrJlgEiveCFuI-sKbTgi9UW1x2wIPJotOEF0LXOsXH7HAayY9mIBGgLqhXcV0LcseDyb9NIYnqOkd9EpYJa-J3rKKmU89xXLXmwcTL_SN6kp6deVB5AP_3vd9P4pSP8YxZWmQAMNclHsobx9a--FacqGMKC2tPKaHShJ_WzWtkgzXHoy1THKhjHrWSvIl0uTBmX-f-lmUBolWq3t4wQgeQSU7Bu-mE7d8LXD13igK2e42iHMRIFQyBwF0EYRhGaRgrlfnDSPNHZMPTsceTPvBO3XmjVDsXvUaxTf_912gvoukRIUfsBBG0O-RW_m-T-NVHE4qLrr7yVp0toBM22YaG-CmiQM7dGlmcVbqjXmrNpJhuvrKq2rF623F9Lo3QgumHlyIrdKMGVabEg_lYeihPIkP9KOX0NcbsMDVk5STVKvYATfiY5SHzZ4kl2YjcsmYuWESg3Vr5sxQsh89uJiap4eWsq3WIdum5fceXEjMW2Zow8RD-YAHqUsapkmJAC70ZmBIKWqnz7yy6AI94gOFbCRcNAiDs2XWD4Mw2E--XjTOos4ykmbGsDiHbIKSMoOhQzYYky0DOliM8_mtwor1OsFs4e28qbdY8cJYW50w5wZq1cMcjJ8PpD5isuGC7TRlr1UO5R8-fP7YL6lHZbc1rqrPjKhGXtXbykPzQ9nV7UX_QWw7lcu11u-kEe2OTNE0leVUbmy_R5gHGD8vn3kxn3_GVW4OSz3shlyJsnFr7THlcr2o8LpdPozJWL5qhNnfBOS5mleLWxlQR9wczZsmmCZxMOgxv_m4NBaIsdW4WPdI28uKr7XELRq5xLzSVt2nreI1_8NuzsOt6xgF3WD3xnIiPj3Wl0qew-bLgbRpXhkJ1Gfhq1u27_rxXqGZgkZMyWjInmeKeZob1n_v4J8a5O3FZ1x1bDfAswYWDgdWZChEcQiexrof1bJ53bh2AM-T1QyyAsWuaoxc9FEUpXDItJ1RdpG_m2kLlklbUGlIV-Ku-YqtjvzO2ZnhlpNZ1ZCvO7WWn78YM-STKIXOAOPR9BCMo5cM8NQc6Vcz3DJH-z6WpP0iOfx9ZrDzZ4TmWsm8UxvNve9hESwRxpHDosRlEYwyyl7CojvecvVoceoX2q4fMOh8kJRklDkgUxdkkMY-eTFIB-Dw0PE9GEkZ-8TBmLkYacyy-ARGrVeGbw8i4WDlFW_Viit9Pmvk6tuq4PqwOx_XoExh3hMUDWWrZqs7cqsOBq7FTUkrpyWuWvPhruF0WHBMYI2KHLQxde27vydquzpfIwAopSyLhwIA_bEAnBbSsQDkRq30eFtHCPbn7u-QVpTSkbTCYAQWZf4p1X8AKzvxSTyyctOnLeBXoMWZ7-hx6BpVaZGmpTlxYNGIh7rpWiBwzdqtOeNne6PiIn-3bH7ECHpbYEfvqC0A0YilAQyeUgAf2BqTh1_L2BQGrsw69ktWxCUuw9MnmmvctgPAR5F-F8QkgjEuHSMFOkYK9omfwGwAcXGtUe38UT8VHE6SxLrW9-DiEbg0gsELwH00DjN3hvtXrwNWRtA5TMNkBCwIcDkAVg2EbwDR2sY9zB8ILw1w6cBzNnTMyoJGAbBNTHeXNVcze8P2qVPbTm_ig-ILjteiaRUn7aVYmzsaY4oNqrxnmDJ5y7Akm092Z3GstkHV3pf-TC1rlj1T6QMW62NVBmpAaavuhpWjE27P33xEsGdCvt8Ch3ujkl3L79gNK-dCXSvpbJ13Zb9WF7xit8Yt3e96raK2pBP8vx1bbUctJf622n6TXLHVzj86aERZibtK798VU-yZhuiy7_PxkOaNaLuayVdZsmlaQBq5Iu-6pUro45A-1a8VE-MAXUos2soctH8XfCRs-e1y6LU5HypNcOg4CVz_NaEx9FEyhHqNZcvy26UL5JbV2DmDH87i50HCSZD5KHEguQYBKlIW-kNIC6l5sJdEu0rt7dXrvNY0LlnoOxigiyEoQ1S6C9Vcs0ttFWJBmINit0TS06BfNX2ExiFytBdyd_oQZ5g609cjOsC9awh-jO7RcF61EljsY-rOpbOrJ4xgWsSAkGDVX0IPPC9S4getjNCcbLA8nC37Veu829vbr4AZpWlAC8f4QNEIZoLKAOx4Nw-WRrbTp5w4jzGPtK2m0S9ex4Cmkt_tr0pdOw65ToMgipKkv_0_0N3dT62k4Z0p3V2uX9oqBFdVgcnXVSk00sO02753DrZg3tQ1FnS8oo7O0V4J27MSHjmy9lvLXu3uG6xW5P4-COxDoc8aWkUb_4LholNZv1gpie3BzRSPyOGq0iLdyEG5rpIflFK-91TZJh4MV4GplFaNlooM_NYUx6cgGV9fkagYujKPXFLZkptO3OKSVQ8OB5-erfMNmrIsSFQ4spyOhCYkzFGf_7hJP1eNFX5BmLsduB6VwGckS0_y1OhS_Ghv2jHaUbyjhrrCKYPuiar5UX_4mcPGJCJZOhx26I-HXUbJucP-rSna02P-rSk-cMdJ97SvfC8BW8z15PcXNi9lUy8mP4RZZeRsdaFrtgTIj_BJZl0MPjtb9JG9-RSTfyGzzrYEMEsi7LIHjrbYGKfMQtnZAjt4Rh3kj53RJzbQc3f_hOLU8emGyIVGk9JPTJTc-ZYFK3132KM4ApjRzAerVcULrQGxVCu9OxsWmEtv0naPr9L7y_pjjaYbD-WRiQGID71G416NCY1NTAFX447sR019Yqibq_YAaqLwsBWG8TGizlCOjeIocZRkGvaBdjKSjrBgEbBUz5_gomCHm4WdtAMmpd4vcit0oOwNckB6uS-xiZs1obLsnisbexsgc_PftQxM7oBqQMsY4AMzetgNuGOy5Y0A0J_6U3_NDfg1V17oD6LZUH4kmm2qa_sFjQLkpzAK_QIWvl-UmAZR6KcBZIhhmEKW-OxwhFv2MWQ5wLKedOKraL6JQeiWrWRiPEDdUON8BDYywxRdWT4yesHlC4LXTBtzr6GXYMnXts0Mty2T1mfuMl00JqAB0L2bBNStbdXP_Xf8GwSC9nGF-XKZz9-D5ftLsPj04cOn_7v6zzuwuPpweQuWn8zr2e_vwM3l9aebpbeL5rs-FheYtlq3nIwN3FeQDBhTxARO7km-ZPxwoeqt_s1aNaEJiog_Jd_XvN2cy_4fNQnHgnOvboDhLO2I3WOOVe0D1ClWuMIPTdcHV0PIJnqhsIm2yRE0vyYLnk54HHooj8PJndVQ5jGA6QT3xjuCE4Hg5DYOPQidTpTk24rtOlCbri4OUY2PF8-m3BPY8Smyd0BTG9yOLmw8rZfMgBfNQnDfR7l70cU4jpyykgsGxiRCfxDgDqEFOikZVp1kre4fXZgg69k4GnS-CwiFhyhuJpR82HMa6N6-FAanNZg1SuiDe6CZGF2Y6NeKrwVIBy30NmHamA8cQY1yH1O_VRKIphOUlUA0QnS6su7mED2nn1WjzaupaOx8clJvAfuvpWa7MLHyuxaFBDxw25nNHxfMkOflVG2YGL9jgjrB7X0tlIMX_3hoBraS0bYXi8jysMdlWGAPaaF_SBx4gglzM8ZdYTDgSickw2Rj4hRc0Mwcv16O-RnQkqmxnP3BZKN3fo4r_geTR1MDKCOVVme0bVZaWJ6cey2vNla_XalvnLBTNJ5k3ohdmqhoLNkja6fErSJkT_GQANEJgWtGV5hS-XNW0X5NKMwrKxVPrOThRBg31U_KZKgqAjw0t5HgVbXr1v5MjSvCfdU-CIXvQSd4yRkdFWqVd0g8AXGiZ8eDEE79TPPHSl7ogyVer_Tu38ja-AqfJqOpwGDQdH79-8pEuD_ZzvSeJEfarbayOUSQn2qfGv0yhJzffFxd3earrn2mqYkRRMOmy_e_f5y9rDEKTU7RCHcnjJ7VMkq0ofE0jSAZ08hnV6vr-e3q3afl8xCgf6z54npFmdBzNhaUcfPgRHN2T9h2YOSdJIB2DBwREF1dMLmydujTJB5xUZMwPFwJxuhzwguj0-23krVM3j1LIj1G4vPieoXl-hkOoKNtF9erIC64WpmVM16bYxkIdwI8loGb7IgI6AWh62pVp8_93EZJwn-Tgp5ICvpZCT5VRdxcmNdlsDgzuUtjgT87jYUEWYzKBP3iNBbNM318jykK0ckkFgsuZD8-iWXQf8BOprD0zMkYBieyVuzr9rlEFb-IS_yDE1UMzZ-YqPIE_e9MVBlQ_hGJKj1zf0aiiiH9XYkqRoRiP0helqiyl0uS0SA5laZCgiyCJAnZy9JUdkQj4ochO5Wk0hPF9N8klX-TVI6BPE-zamHD9FSKCgmy0E8IC_5NUUEjpmRuzub_QoqKVoJBCH3_L5Wiste1OCl9_1SCisEeowj-3RJUDsPDfgRPpafYqcFJ-M9LTzkwKE2S8FRyimEQQgH8M5JTBiLqB_BUaoqBCCMa_QmpKQeEMaTRqcQUg7D0tRH4b2LKXxr1mYkp--kvIIXoVFqKmX5WZvjPTEsZQCUZPpWUYqESgv_UpJQB1ozgUykp2l4I0oSFf-WUFMtQHBV_gZSUAVuTqDiVkKIPQiFhJP71CSl745n5BYlPpaNogBnLKPmV6Sh73iEYU3IqGcVAK4OC_KpklAEsVpBTqSiWYzgNf20qygBckoanElFIkKEkKwlEL49C2lEOfUoIREfTEXbui18Sg7R3Ke57_QExSHtXoEP0x8QguW4-lGQZjs-KQRpMQYzjg_lY8lYzCPzWFCCwl2rJGXd73iX0Ut_LYw8mQDFZc2HCTYoH0Du3bq_e5bObpQaZF41Uh8nfXSq-oW8RzVCG37C3QQITGPkpDN5s3pIiZjhOWJhSyoosjmCGGA0DErMkRBC_4W-hD0M_g5GfRCgMpjEq_RQXSUxKikgSe6HPasyrqR7ItJHrN8b__jbwswzCN-a6vjXfdAhh_02Fdv8xF7JzD0LjlZ80YnKHK22qQC-6eCPfGq9-0a1bL_S1NdQeelBcVebbEzWZ6MJ-VRDwIHzpRQeEJ74SEQsK7H33m05Wb19_99AP_-4t_P8AAAD__-BxaiM">