<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106845>106845</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crashes on valid code at -Os on x86_64-linux-gnu: Assertion `(!IsNonPowerOf2 || ReuseShuffleIndices.empty()) && "Reshuffling not supported with non-power-of-2 vectors yet."' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zhendongsu
</td>
</tr>
</table>
<pre>
Compiler Explorer: https://godbolt.org/z/cT67nqG1f
```
[526] % clangtk -v
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 8c5d53f8deb26456432cc0459551cdd69754fea7)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[527] %
[527] % clangtk -Os small.c
clang-20: /local/suz-local/software/clangbuild/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3314: bool llvm::slpvectorizer::BoUpSLP::TreeEntry::isNonPowOf2Vec(const llvm::TargetTransformInfo&) const: Assertion `(!IsNonPowerOf2 || ReuseShuffleIndices.empty()) && "Reshuffling not supported with non-power-of-2 vectors yet."' failed.
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: /local/suz-local/software/local/clang-trunk/bin/clang-20 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -main-file-name small.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/local/suz-local/software/emitesting/bugs/20240831-clangtk-m64-Os-build-105602/delta -fcoverage-compilation-dir=/local/suz-local/software/emitesting/bugs/20240831-clangtk-m64-Os-build-105602/delta -resource-dir /local/suz-local/software/local/clang-trunk/lib/clang/20 -I /usr/local/include -I /local/suz-local/software/local/include -internal-isystem /local/suz-local/software/local/clang-trunk/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -Os -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/small-e39390.o -x c small.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "small.c"
4. Running pass "slp-vectorizer" on function "main"
#0 0x00005585be0b82ef llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x43002ef)
#1 0x00005585be0b5824 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f0542e90420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f05428c700b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#4 0x00007f05428a6859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#5 0x00007f05428a6729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#6 0x00007f05428a6729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#7 0x00007f05428b7fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x00005585bf9ffcf1 llvm::slpvectorizer::BoUpSLP::TreeEntry::isNonPowOf2Vec(llvm::TargetTransformInfo const&) const (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5c47cf1)
#9 0x00005585bfa8a16e llvm::slpvectorizer::BoUpSLP::newTreeEntry(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP::TreeEntry::EntryState, std::optional<llvm::slpvectorizer::BoUpSLP::ScheduleData*>, (anonymous namespace)::InstructionsState const&, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, llvm::ArrayRef<int>, llvm::ArrayRef<unsigned int>) (.isra.0) SLPVectorizer.cpp:0:0
#10 0x00005585bfa93695 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5cdb695)
#11 0x00005585bfa93ca5 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5cdbca5)
#12 0x00005585bfa93ca5 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5cdbca5)
#13 0x00005585bfaad357 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5cf5357)
#14 0x00005585bfab266d bool tryToVectorizeSequence<llvm::Value>(llvm::SmallVectorImpl<llvm::Value*>&, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::ArrayRef<llvm::Value*>, bool)>, bool, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#15 0x00005585bfab4071 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5cfc071)
#16 0x00005585bfabbf08 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#17 0x00005585bfabcbd3 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x5d04bd3)
#18 0x00005585bf571696 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x57b9696)
#19 0x00005585bda4f7a1 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3c977a1)
#20 0x00005585bb59f326 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x17e7326)
#21 0x00005585bda4e0ed llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3c960ed)
#22 0x00005585bb59e186 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x17e6186)
#23 0x00005585bda4c1f1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x3c941f1)
#24 0x00005585be36e601 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#25 0x00005585be3717c3 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*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x45b97c3)
#26 0x00005585bea12f0c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4c5af0c)
#27 0x00005585c086a8fc clang::ParseAST(clang::Sema&, bool, bool) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x6ab28fc)
#28 0x00005585bea13328 clang::CodeGenAction::ExecuteAction() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4c5b328)
#29 0x00005585becae499 clang::FrontendAction::Execute() (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4ef6499)
#30 0x00005585bec2f8ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4e778ce)
#31 0x00005585bed9b156 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x4fe3156)
#32 0x00005585bb16f895 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x13b7895)
#33 0x00005585bb16893a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#34 0x00005585bb16c30e clang_main(int, char**, llvm::ToolContext const&) (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x13b430e)
#35 0x00005585bb05c30b main (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x12a430b)
#36 0x00007f05428a8083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#37 0x00005585bb1683ce _start (/local/suz-local/software/local/clang-trunk/bin/clang-20+0x13b03ce)
clangtk: error: unable to execute command: Aborted
clangtk: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 8c5d53f8deb26456432cc0459551cdd69754fea7)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/software/local/clang-trunk/bin
Build config: +assertions
clangtk: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clangtk: note: diagnostic msg: /tmp/small-633c6d.c
clangtk: note: diagnostic msg: /tmp/small-633c6d.sh
clangtk: note: diagnostic msg:
********************
[528] %
[528] % cat small.c
#pragma pack(1)
struct {
int : 30;
int : 27;
int a : 8;
} b;
int c, d, e;
int main() {
while (d)
for (; c; c++)
for (; d; d++)
for (e = 0; e < 2; e++)
if (b.a)
b.a = 0;
return 0;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzse9ty46j299OobyhcEliyfJELx4m7U5XZSSWZ2ZcuBEs2OxJoAOUwT_8VSD7IcXeS7uTb-z81Uxm3hBas04_F4sSslSsFcBKlp1F69oW1bq3NyV9rUEKrlW2_FFo8n8x13cgKDDp_aiptwER0htbONTais4gsIrJYaVHoyo20WUVk8VdEFvwum6g_vyZlFJ9F8az_zeL-r3tNT1OSRekZikiKeMXUyt0j_NB9De_oAYyVWiESj-JRvJIORSQ_YC7dui1GXNcRWVTVw-Yf3Bj9H-Bu5GvlPBUpLXMBBcnGaTamhPN4nE7TNOFCZNNJOi6BTSIy7djfMbMC51V9yrNlNsatulf6UeFKqvYJr1Tb060NMIFqLaDy1I228qn7dKGsY1UF4kwGm3m5NGdVRBa2_Qtvn3XpHpmBvc9Bd-xMq-4jsiik6ho8bWUlENeqlKuuwVNmLRgntbIdyUK3SiDOlJCCOUBf53MkOzmYJ-vlaK3x7GTh7cd5RBa9ljvtyCKJP6HN5OPb7D12CxVwB-JD5JtvJavbyklfi87QKKKn0Tius_EByx8RBZhPNjA_VraF_pVFtmZVNeJ7fQCT-G3oCdSFx8hBD9jrF0H7O8OULbWpbUQWfwB32si_fAu3l9fbVzPiTRPRGaXJ2PMvtK5QaIbOIjqzVfOwJe2KTvXvze3ldfdyZwDOlTPP3au0_9LqWj9eleQP4BHJuVbW7bXX9betZBeq1BHJIjJFgdJLMNtgHfkQQvKIJBd9s2CuSoKiyTyazNENtBZu121ZVnChhORgR1A37jnUmfo2Q9MZigi5ARsopVohpR2ybdNo4336KN0aKa1w49vHusQEdSpb9AxuFBESkQkqmaxAjDqHXV-ez27PkW2LWjrEUNGukAHfIHL6MGi-ErcispDWtuCdhJgSSCpetQKQWwPihtk1Khi_d4ZxiMgcNQYaozlYCwJZ3Zqu2Ndk1moumdfKtApZbmTjepFvHeP3SLS1d3ZXFI-ieHpt9MqwGjGzamtQzv5qCNuUkRhhzhOEnZFNBd-NrwhDLR3WxX8Q9uIJaRDDCAtpWVEBLg0AwrwCZjCzDhdQagPY2wSUQLhmUuFSVoAVq2HTsRCuDXghPZBwCNuokRzhRnJcwQNUiHQv0uJGAsJ1aVgNuNFSOQ_1M6UVIFzWzK0xGKM0wmXZYK6V94WL6JlWCJdKY-OjnFQr7GkRrgOUTesxhFklmQWLcNmqR6kEdl4rG9EzgrALvQHzpvXmwdkYYdcqCAUrUGC8xAKKdrUC4z9JtYro2UoUCJehHPMwbHdqCj8Anb3uPG9wsM43RhZFu_LQIzEZxzlNcB-lcJ2N8ZXFIdDgJE6zmERkIaByDOGS6wcwbAX_Jf4GOuR7lj-N1i5KhrIgAMIXewNIX2XTG7tvb-SzrRSwpFiFpX22DuoPk_U1Jt9R4gekrw6YZDEavfw5QvuSGzz5B_6Sa096pJ0f134_izDq4hKM0QZX0sftZIpwuVItx336GdGz8YiMEoRLey8brIXBfA38HkuFV3UZcF9pg4VkK6Wtk9wivB0fcaV1MyiwVYNwyYQwVq4QPlsuv87ny2-zP86XZ_-e3SzIcr64WM5uf4voWYKw9lK7uvGA8GEMA53SaTzSCD8hPswZEh-8IzoHXUb0HDXMWDCIOeSDoi6Rj4gdJfGUV42TdRjDQxn1ZTet8gEFNcxaP0aWreJdIjUH5gOOVA8RPY9IXlaaOSKVi8i8CsNkCHFMOe8AI5WV3IZvuolI7v_BRjvmIKLzNTABBou2qSTvM7VTpbEfyJgBXHqHOB04hRawgAoCnR_F-yJpnZFF6_xgJ5UfOLGrJK5Z00i12jDf2T6ic6U7eFTAHgIbDgJrVT13_HduGn7qBJGqhBC9V8oPi5v2K80EhkrWgcQ6rutCKs-tZk9YOjCsS9PpWdKxaW0HDCx9rtNzNrJ8xqV8CqNNx9DKuqlk-czLVUTnhVatxZ4DdmsDdq0r0bdZavPIjMD2UTq-9p4QET3t3wxTK8BOY8n9SL8pdtrLcN82nQD3AE2H1oierrW0zsfxWqvA0XZEXblX2GLrtAGLfa4UGOKS-VTYj0anVqr7w-q2Ad5WzAEuKs3vQ1GvX1e_MEzxdcdoR9yqxoCQfDNGBrtUe141EZl3L3hj-Y_2Q6BpldFVFdH5FelK3SZjxY_MhGGYzK3RLKLzxoAF8wA4eO44dj5BxNpa5vua5HVE56yq9OPGkKGLnXe9ZysFLo2uMbO2rZuOb9-Q918v4sZHEZkL-YAN1Lhh0nhSx2TF_TS3w_6b0ao0fhdgPR5eYnYA2C02D0D3VsB6Fr-E2R8CdhoRgrRCtRZtBT6ubuI2IV3wHR8LvocwD21sIrIn8HnutgkUERqj-CmO4zhN87SAuMgJlPszt2fbPVwbqVxI_--6OUS-IzLscamtM8DqMFfyM2rXzZzyj5kEROQ0fhrTOCZQblddvPjJgfhpTsboVq4Uq74xJSpvhLyXpiu2_VQ1Dv9vGyJ9Q5MyTscEpvGYxGi5NBAwsDRuo0zIcI7kK5UsGhfWd0ZWjzqJk_HYy74nLx2wyfkkjgtkmLTex4vNfHxVyYLjS35B4qftKxlRnz7ZoMUmcbLPVkDjU99Wyaeu4CFIo1r_Gpoe8YjO0iSis2QnyXgoCcvydIpYoYOmb5PEic4aoVZgknsmkx2T9JDJhEzRCtyyk3tpYeWjyvKBVe2bLSCVqwJumKjtirOOdeoTmVm-450d471U1dJXXArtu8KvsZxOPIjoeMdzMuRZTEqRvQE43EMmC5ChtBTZADL5PsTLaVnyMvnAtZUfrqr06yl7aysf3KdTPp7wMhkoPB0ozHKWZPAOhRU87nTe129mDHu-gTKi813hHx55EZl1Y-LP2zU83oZklcyRdaIr1mGUZNWA52tN3_I1-LB_xhzbiRaRnCmtnmvdWqRYDbYJgXjaVbroVwv8oBzk2PPde_Q6Fys4cP1-9T0jbjOJ459bFXYMBNrQhfFgJK1hPjxO0bEFxL2o7KN7PITClGbT9B26hK7tHbU0B1h_CxYGCvyqDT96MEy5KLJpuu043lrJobU4-8daW2txNrQW-cda77AWHVqLCZpO9qQe9OVrZvus0ZnnO739cCm9wJ8RkbsoVWhdfYY1ypSmk4E1xkNrFCTLRLfpMdT4Fv5sQXE4omBYEtkzoE_vu3oXdVN93yIH8XiT3C9NMGOQYdDwtvKg2q50-sLO_40m34KE3r2Dt3fgoxt-Qq9pjG7ePAalB74ex5PkdeRvJZmvmVT2Qp366eBA51NmJe-LZ-9X5WMhzuNJMoB4dqB2Ucb562qbVgX47uu52KwIHmL3lrOKmfMHXbXd9wMrHN3mO0pzKQvDzPNRitnsBmxbOfviy6XWzdEqZ7qWijltfHx_2eB29WPO-Prl9zOomRIgTuURnv0SalheuYGamfvzWjrn56mzDUYbZtyb4Tk58BMvBH2Tn97mo5li1bOV9jem2MpjcX6kUh-XPhyWIh4Xgg5gOZwNpZMkm2Z74gpwTFb9kgWz9rfuqMUxoYdQfGGmn7KC__u_Y95JMc2m2cC8g7mXYONywvaDXTDpj0T9-1uN8ulkwgaxkgymKUU6LSn5CFB-mrX__l5KJjChZIBtkhxgG2IQe-L-FpZa7_RGNG_9mWCN0-a44l2Fd6ndV_k8aGYxiIHS5ACakOTvg-ZGy_kbTfUTtvgesv7nDJxMIEvyIaroAap4Ur4lYh4z69_MWpRPx0k5jJSDiRPQDLI4eW1lyydIM2uhLqrnb1A1m4z4plX72dS1bKAKe3l5d8KhT7LDCZ_ZNmBul-ZaJf9sYdm4oU0Me1w2j0Y6WG62NPYqCQhbQMuwuQyvVOyDbfYWtndaV1eta1q3kBW8ledBrX2GL20w18q29TbT7Et_d7I6mlmSdOirSTLhdL9Z75e-kU6GoeXPdscbztUqOOZQsG9hU_8WmOHrq24_cbDsuEc61wK-gnqFqpsNvEJ0ydTqGMleNuiMVCs_HT0S9vqU_kcY21W5UM60Vj7ADZRz5a4PvP5Q9vm4d99tOHPSj8___2H6Bsh88H5eWkwnfJDek8GsE1hCypj_SK4ORmGnL8wTu33r35U8AOPs9m6ulYOnz1kxG_OUlTEfqLI_MeNxnrG8HKhyzYyF2e3dUNBbqNlgOeuzlrUyVpC8HIqcH1if-qKXnbAHehcEnoC3DjbYzz_FtgXtDuNuBR1MU4AzGE-n-4IujHf2tkvuS_o5MkKZjafTfRkPdtY5KXMOQ2N2VyXCyf-wRnjMnt9X6lNwDJNJ3g29Wz2GW-xiWiRpNhgGOol36jz0B2aH0r9Q91NCSgk0SQcJGh1mwElW5tMUcZ4su7MQxxch-ZqZzeCwWX8clpE5etBSfIoaCS0m-XBzh9IDNfIpZWhj-3lyF4LEDxeUX-p0MOz5NvooOdhdEEY-fGf5iY4PxOI07lG-sW-_w-G5B2MdLuB9h-mHW3RM4yGwB_lNEaecxgXqTwV8KG_CxjQuBrwPDyfkcU7RclnJgi-tY8Yt33M8gdt2cyCkewwfQzvhoAIdE_-7Yz85BBPlgDrGH2_4mO5FlP5gdkRnKJyi9Q-tYkUFyGkEHZ4R13XNlAgXOYpww-L7tbu7X2UfHDdV-6sWSLSh4e7UjNettYDwQygDQHIvWk3_uUv283fJ9jyjtE85Z2h3vhnVtqvXA_AX_vZuCPb3Z2Z3d7P5N3T37Rwtri4vr_598a-vaHFxeX6L7q5C8envX9HN-fXVzV20ubVyfez-S2594PnuHZgtgQEULoWAQMxtm3ybBYZHszNKeSYGN7h-rgW7fr8bPsoZ6WlK8iNX1rZlnLnhsfOI0MawVc1Qw8Km2G6RoDvEgqLJaX8gCEnlkJeaxhF9UUgmB4UsFOfb0mhyhortm6fgfvwR_gcG5f1wFcaeHffHtQznL_PdshpCCJXahEBJTxHvfshp-NvQ7BGI7ueAoP-vpwMU0TPkNUT-cY5IePxOJYRk6WsVI3bkG0LFiG3b23w14Fqj9oqiydnBTdsv4oSKKZ2yL3CSTEiaxElG8i_rE2AsSbkQghUx879kPImLMcmnoiQFZ1_kyebmTRKndJyPymwclwXLOCM5HVMejWOomaxGPkCOtFl9CdfVTpI4y8fpl4oVUNnN3WJzEsJouNMzjitpnd3Vc9JVcNIF6XCxDSzSCj2wSvoQJQAxF65paIVenLb7H78YiL60pjr5-Zt_vTUfTsj_CwAA__8HrlEE">