<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62474>62474</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[hexagon - hvx] Cannot select: t50: v4i16 = bswap t96, ../examples/dr_wav.h:1190:16
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:Hexagon
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
androm3da
</td>
</tr>
</table>
<pre>
"Cannot select" failure compiling common.cpp from https://github.com/ggerganov/whisper.cpp/blob/9c61f5f58555bb136b71b391b40f956328f18dd5/examples/common.cpp -
```
hexagon-unknown-linux-musl-clang++ -DGGML_SHARED -DWHISPER_SHARED -I../examples -I../. -mv67 -O2 -mhvx -fvectorize -Wall -Wextra -Wpedantic -Wcast-qual -g -fPIC -MD -MT examples/CMakeFiles/common.dir/common.cpp.o -MF examples/CMakeFiles/common.dir/common.cpp.o.d -o examples/CMakeFiles/common.dir/common.cpp.o -c ../examples/common.cpp
fatal error: error in backend: Cannot select: t50: v4i16 = bswap t96, ../examples/dr_wav.h:1190:16 @[ ../examples/dr_wav.h:1257:25 @[ ../examples/dr_wav.h:1264:29 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ] ] ]
t96: v4i16 = bitcast t344, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t344: i64 = HexagonISD::COMBINE t210, t204, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t210: i32 = or t209, t207, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t209: i32 = shl t208, Constant:i32<16>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t208: i32,ch = load<(load (s16) from %ir.cgep185 + 6, !tbaa !21531), zext from i16> t0, t260, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t260: i32 = add t8, Constant:i32<6>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t8: i32 = add t5, t7
t5: i32,ch = CopyFromReg t0, Register:i32 %56
t4: i32 = Register %56
t7: i32 = shl t3, Constant:i32<1>
t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t6: i32 = Constant<1>
t259: i32 = Constant<6>
t10: i32 = undef
t33: i32 = Constant<16>
t207: i32,ch = load<(load (s16) from %ir.cgep185 + 4, !tbaa !21531), zext from i16> t0, t100, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t100: i32 = add nuw t8, Constant:i32<4>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t8: i32 = add t5, t7
t5: i32,ch = CopyFromReg t0, Register:i32 %56
t4: i32 = Register %56
t7: i32 = shl t3, Constant:i32<1>
t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t2: i64,ch = CopyFromReg t0, Register:i64 %50, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t6: i32 = Constant<1>
t99: i32 = Constant<4>
t10: i32 = undef
t204: i32 = or t203, t201, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t203: i32 = shl t202, Constant:i32<16>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t202: i32,ch = load<(load (s16) from %ir.cgep185 + 2, !tbaa !21531), zext from i16> t0, t182, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t182: i32 = add nuw t8, Constant:i32<2>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t8: i32 = add t5, t7
t5: i32,ch = CopyFromReg t0, Register:i32 %56
t4: i32 = Register %56
t7: i32 = shl t3, Constant:i32<1>
t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t6: i32 = Constant<1>
t146: i32 = Constant<2>
t10: i32 = undef
t33: i32 = Constant<16>
t201: i32,ch = load<(load (s16) from %ir.cgep185, !tbaa !21531), zext from i16> t0, t8, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t8: i32 = add t5, t7
t5: i32,ch = CopyFromReg t0, Register:i32 %56
t4: i32 = Register %56
t7: i32 = shl t3, Constant:i32<1>
t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t2: i64,ch = CopyFromReg t0, Register:i64 %50, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
t1: i64 = Register %50
t6: i32 = Constant<1>
t10: i32 = undef
In function: drwav_read_pcm_frames_be
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: /pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang++ -DGGML_SHARED -DWHISPER_SHARED -I../examples -I../. -mv67 -O2 -mhvx -fvectorize -Wall -Wextra -Wpedantic -Wcast-qual -g -fPIC -MD -MT examples/CMakeFiles/common.dir/common.cpp.o -MF examples/CMakeFiles/common.dir/common.cpp.o.d -o examples/CMakeFiles/common.dir/common.cpp.o -c ../examples/common.cpp
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module '../examples/common.cpp'.
4. Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@drwav_read_pcm_frames_be'
#0 0x00000000030c3d72 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c3d72)
#1 0x00000000030c1c6e llvm::sys::RunSignalHandlers() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c1c6e)
#2 0x00000000030c31ad llvm::sys::CleanupOnSignal(unsigned long) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c31ad)
#3 0x0000000003054606 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
#4 0x00000000030545b9 llvm::CrashRecoveryContext::HandleExit(int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30545b9)
#5 0x00000000030bdf97 llvm::sys::Process::Exit(int, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30bdf97)
#6 0x0000000001f67282 (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f67282)
#7 0x0000000003058c06 llvm::report_fatal_error(llvm::Twine const&, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3058c06)
#8 0x00000000041087e0 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x41087e0)
#9 0x0000000004107a66 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x4107a66)
#10 0x00000000040fce97 llvm::SelectionDAGISel::DoInstructionSelection() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40fce97)
#11 0x00000000040fbf18 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40fbf18)
#12 0x00000000040f9da0 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40f9da0)
#13 0x00000000040f6afc llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40f6afc)
#14 0x0000000002009f24 llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) HexagonISelDAGToDAG.cpp:0:0
#15 0x00000000024bcec8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x24bcec8)
#16 0x00000000029d0672 llvm::FPPassManager::runOnFunction(llvm::Function&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d0672)
#17 0x00000000029d68f1 llvm::FPPassManager::runOnModule(llvm::Module&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d68f1)
#18 0x00000000029d0c48 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d0c48)
#19 0x00000000033dfe5c clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x33dfe5c)
#20 0x0000000003de7f3a clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#21 0x0000000004ea0540 clang::ParseAST(clang::Sema&, bool, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x4ea0540)
#22 0x0000000003d22910 clang::FrontendAction::Execute() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3d22910)
#23 0x0000000003c927cf clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3c927cf)
#24 0x0000000003de0d51 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3de0d51)
#25 0x0000000001f66db5 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f66db5)
#26 0x0000000001f62b17 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#27 0x0000000003afcf92 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
#28 0x000000000305456b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x305456b)
#29 0x0000000003afc90e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3afc90e)
#30 0x0000000003ab92a4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ab92a4)
#31 0x0000000003ab959e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ab959e)
#32 0x0000000003ada6c0 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ada6c0)
#33 0x0000000001f618e6 clang_main(int, char**) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f618e6)
#34 0x00007f2c39df4083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#35 0x0000000001f5ecaa _start (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f5ecaa)
clang-16: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 16.0.0
Target: hexagon-unknown-linux-musl
Thread model: posix
InstalledDir: /pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin
clang-16: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /tmp/common-cb81a3.cpp
clang-16: note: diagnostic msg: /tmp/common-cb81a3.sh
clang-16: note: diagnostic msg:
********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtT47qW_jXmRZWULV9iP_BgEkKzq9lQhDNd85SSZTnRtC15SzKE_vVTkp3EyqVJw9lnSM-mukmim9f61kWfLgRJSReMkEsnvHLCyQVq1JKLS8RywSs_RxcZz18vHQjHiDGugCQlwcqBEBSIlo0gAPOqpiVlC_2u4myI6xoUgldgqVQtHT914NSB0wVVyyYbYl7pDwsiFojxZwdOX5ZU1kTofg6cZiXPHDhNcOQVYRHGYRhmmedH2cjL_MTLArdIwsiHceHFeR46cEpWqKpLIh047UkwAI47cdy0-x253T_zcUlWaMHZoGHfGX9hg5KyZjWoGlkOcInYwoFXDrwCYDC5ubn7Op99SR-vJ2Aw-fbldvZw_bgpuB0OewKsPw_BoHqORmBwD8GgWj6vwKB4JlhxQX8QMPiGyhKc9jP4RlZKIDD4VpMcMUXxKX0wkmrwV4NKMFiAQfFwOwaDuwkY3D2BHlbjO_SdTKkFXE6FheKQg8Hd9Nd7DXMw4O95GAYWolZ9a7oCKVQCIgQXjp-2bwBlIEP4O2G5LrNd1U-BCl398hxQLwKOPwGZfEE1UEnkwPHeE3Mxf0HPw6Xjp56X6J66V-A64dVP28Jw5PgpDE9qGwW6bXJK28Dz9It_Qls_gpHjpwlwwkn_fwsdMBrbQFClvQUoPwjewqKVOTgJiw_IvJYVtEL5KaBRYIT90kbt7Wyik4qfju_vrm7_vAYKeq4WXkH3kylhJNMa-NBowIUWMumEHX02Yd2kL6xclros1lKOOZMKMR1N1IeOP_Yix7_-dPLHnfwOHOOlUaLkKHf8sQNj_Q44MJZe5MCknaEcGFIxxAtSe3EIdMo3GcGBnsoQ0q_QC33PgcZkP8hKtf2oUR-ozu0i89qwnBQdQJ8MmMjyQpTnQB026ye0arwnemhQH20TRf9HhXs-MOb161Tw6pEsOpM9kgWViohWb-0GYXR4OABU0Bdg3dPqo0Z7ceMfjhoN77Hn-P1BlGgYRooAdYIz6Z4nTTsfNsdR4aO-8Fu9j2qsYJgc6RId7KLsTNoG204r5fvHxNgf1CTgj6aL4B3pwnM_d7roQ76XN1jzcix3BJ8ud_Td56008tG8cUKasAPgHTnjLFKEFqclbaciqekdDEP3M2lxZHL5tTSnkmM5LjjQ_q0MZ-jtHpn0OzLpfa7QM5Ltk0l4RmQSfnh2gO-ZHWL4qWcHI-DpkwL8fJb9h1B--jz7HkLpBce6wP8YofQ-kjLekSziT50qtjD-3eTrV-Or3_ofHvaZediBzOD19wQt87oH3eFXMsnxpHDLQNEwrChnukUuXtDzXBCUz2tczQuBKiLnGWkbP3y9TmfXQDZZRRVAIGsWQJCaCwUU_9m5SFk-r18GteD_Y85aplTKxsAFEMsBZbhscgLUkgAskFyavW8lECbacrUgteCYSElyIHkj2mLdE0nJMUWK5EA0DEgsaK2GrcgzhfB3kDdVrSUzRe7QcZMHwRcCVQCJRVMRprTgwIHT-vvCgdO_jHySF-oFCbJVIGtomc8V56XZw-_OVIxaXjR0h-4ACy7l4PhBjAOnqziaR0FXtmCNHpcyB05PPL75-05vDpzL_ObHLp72BccfE17o-adGQhIBkAKE5YAXoKBl5_tQtxzznIAFYUQgEzGmxtc1jw1jlC1AjaQEDhxNu6ACD7rgDjG0IMKBI8AZqHjelES3-ol4cNR5cHBo-O7MAEzSm4HjX0_SG_CAlCKCgVsmlWjah8_MWZGWtH3yOtT1EE7gHo12uJ7BHOi7wF256x_fxX4-gsDEgzmtkK-yffMgKFMm3J7amI23jQR6mXOpBEGVA81eNGVK0wUHxmcRdA68cled8pq8bNDxdtDxcEQOofPYsBldMFR-QSwviZBG8_MDQOtnAQB33cND-SEAxiVBrKnvOxgcGDfMnNHnoOT6KeeHhVbVwsK3sQiDyI20Vohx9lrxRgKmI6w24ZF0uOip7pFg_kzE65gzRVbqtqrLtrb1FtPGgbEJGs2Md4A7NIZJIn7qmv8bCYNdCcMs6Vnr0EB9Qa5XVK3lODt7GWUte4U2GlleJKPDqc0Qj_ZDH4MxyDgvzxALo6qFRdTHwiuiEYzheWnVCW1pNdrx9xi7Uc_CLXmdm8sX8_byRX_aenqhjACsuXU3bZ2puY3eFjBxH5jAc-MRcXvAbIjDJL25nZEuG7U3UP6bqFl3XaqH1WzyJ8-JA9Ozg6fT3oIn2YFnhKLoTXjaUs0Rx4bHHcOnl8HxEom1g9k155hjO6A2SGp-ZNHHwC0wsXLsYSQnvMdieyT2_ChTp7EFibcDSVZ48duxx3NyQ1jK8uuKqkl6c6ZoaGUtNOAOGkmO3s5EbWlalldIUnxVcvxdWuG2WX9ts_f5YaWhsLDyd7CKUIHfxEo07J7dIbykjKxhsbDaqztLsDQWFlgW14WumxQw6IHVLaEn6c0T_3fgtbnGR8r1mPscXMtlsU4YZJjgfvjvjP6A1sTTyHVQoHO2XAeAZTmLi8IkdyNry2H6oEFZ76n8zti0qlvYjHawieLCOwGbO7PnZLtxV3SWuGi1LVziXZ_BQT-qSrJA-LVbzm0R2q60RcN-H3S08hY6Fp_1_bwgIQZtx3ZRW1F11V41v29U3Whu36ueULRgXCqK5TVbUEa65VCvyReCciJmBAm8vK91xElr5dRr2lGZN1o9IbEg6o1GXxFbHGrSmxOVoGzxSAq7eG3edGfADoS0yxljIFXe1jSM_tWQea2E44_trc36RVBF5usNzl6nnBSoKdU8JyVR5I2O_rW5VXBm7tZ5U9_doL1nnJNR4aMDKI85k021zlPtFtOTQEyWZnv9X4zu-GE6e1rvSrWBuWbFxlwHp1tos22C3DBw-7I8ICFJOnuynzQjFbLW_Ge69u8Utqxjb9nmECaehchUaIw3QdDtehHcKHKOi45OQwsCe6cWJ3CECztFVTUtibg1x6qYWCCsk0N8HLMznDY6FCyYgp04dvPQs6aNFpAtWs8co31w9tA8w12iTnsLnnBnzzTKsxBg7M0rRG02kQqBXvUk5I_tLZ_2GtneNtAzp_k5otSBYKG0u7MMM28E1p4z9p5MWu3vlFWoLP_LHE239OwAZCa8ckGfuz-w3Mv69sYvKnCRQINqjwOsT0PnwhjG1LYJzkzFuglGZZkh_H1eMC3H1qXbZ3fuPfbGvKoQy3dz5UEH2JADbogLKi1asOUrHR3osYn5HK9W5uqJ46cZkhRr6kC1TAYjq7EumCuBqJLr6p3hUFnqcOWiV6-bpNvZznhgi7zp4sBgbi6YwHh9-PQHzw6bIN47a4qyk86aHhs2QwUpXy0Ef26tcwuUDg8rUJJdn01cAv4_-9yZmbS1WN-kO5cnUJZAFBw1qZkl0R7nWtvZmlJ3OuoGx9ZIP2ma7hxrnSXqBlQLdW8X9TA5HkhHUP-DZ_I45H_w7CuV6tiac28G2_h_jah2_e70-FQrdUHyO9gqTOwIsRcjKEcRdo_hMum9t6jnAc55zMb_QVud25TUgm9Zx9_hbl5MohaJNcddo2OmgvRMOatWy9J7vfAZFRD7SV4EbuyD-bykmZ7-kFBGfbBWw4HTha4bzH7c_hhdbT7Coe9p5aQWzFz2a9-aSjPOEDt-6gdQ_94-fmdhERKMEGgffG7YGtk32Jr6gRdtvuNCvzGFoOhW0Ob7VnREFYiWJAcvVC0BWVGdbHMCRq5GoJEEDJ6B4kASAmhv3dl_EHgmQlLOQKt0W9PuK-rn_kT7tuVSEJSDiufmaAjUXNLV-tq0VKgsST6h4v_85vAesowrYm5zb7ZtQSUXRs7OxT7wr_f3Ld198PTpKR1_AU9frsH0_uvX-2-3f96A6e3X6xl4ujfFV_-6AY_XD_ePT5tb2A-H7nPHUmePo3e6Nw0EAYZGkhwgtRnyRAjgVFX15rLtAGexh_ztleAPjSKX77DGv9Umm68Eusgv_TzxE3RBLr0ohokbx0FwsbwcFZjAAOPMxW4YeG4eZZEfJQVCcejmI--CXkIX-m7oei4M3CAYxiSL_KDASRh4RYKwE7ikQrQcav8dcrG4MFf5LyMYjIKLEmWklOablyDcfn9Ndz7qQOiEkwtxaXw_axbSCdySSiW3oymqSvPVTV00gAFYPq-ccPJ3fAfORSPKy_f_7YLR-X8DAAD__-bZODM">