<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/123809>123809</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Segmentation Fault in X86TTIImpl::getCastInstrCost during Loop Vectorization of asn1_compiler.c (Linux Kernel 6.13)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ms178
</td>
</tr>
</table>
<pre>
**Description:**
I am encountering a segmentation fault while compiling the `asn1_compiler` component of the Linux kernel 6.13 using a recent development snapshot of LLVM. The crash occurs during the loop vectorization optimization pass and appears to be related to the cost model for cast instructions on x86.
**Environment:**
* **LLVM Version:** 20.0.0git (commit: e4f03b158c97098e1835cc1f00d0175398974f98)
* **Target:** x86_64-pc-linux-gnu
* **Host System:** CachyOS
* **Target CPU:** Intel Raptor Lake
* **Kernel:** Linux Kernel 6.13 (CachyOS patched)
**Steps to Reproduce:**
1. Clone the CachyOS Linux kernel 6.13 source code. I am using some extra patches available [in my repo](https://github.com/ms178/archpkgbuilds/tree/main/packages/linux-cachyos).
2. Configure the kernel build with LLVM as the compiler.
3. Build the kernel.
**Expected Behavior:**
The `asn1_compiler` should compile successfully without any errors.
**Actual Behavior:**
The compilation crashes with a segmentation fault during the optimization of `scripts/asn1_compiler.c`.
Stack trace:
```
HOSTCC scripts/asn1_compiler
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: /home/marcus/llvm20/bin/clang-20 -cc1 -triple x86_64-pc-linux-gnu -emit-obj -dumpdir scripts/asn1_compiler- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name asn1_compiler.c -function-alignment 5 -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=none -ffp-contract=fast -fno-rounding-math -ffp-exception-behavior=ignore -mconstructor-aliases -funwind-tables=2 -target-cpu raptorlake -target-feature +prfchw -target-feature -cldemote -target-feature +avx -target-feature +sahf -target-feature -xop -target-feature +crc32 -target-feature -amx-fp8 -target-feature +xsaves -target-feature -avx512fp16 -target-feature -usermsr -target-feature -sm4 -target-feature -egpr -target-feature +sse4.1 -target-feature -avx512ifma -target-feature +xsave -target-feature +sse4.2 -target-feature -tsxldtrk -target-feature -sm3 -target-feature +ptwrite -target-feature +widekl -target-feature -movrs -target-feature +invpcid -target-feature +64bit -target-feature +xsavec -target-feature -avx10.1-512 -target-feature -avx512vpopcntdq -target-feature +cmov -target-feature -avx512vp2intersect -target-feature -avx512cd -target-feature +movbe -target-feature -avxvnniint8 -target-feature -ccmp -target-feature -amx-int8 -target-feature +kl -target-feature -avx10.1-256 -target-feature -sha512 -target-feature +avxvnni -target-feature -rtm -target-feature +adx -target-feature +avx2 -target-feature +hreset -target-feature +movdiri -target-feature +serialize -target-feature +vpclmulqdq -target-feature -avx512vl -target-feature -uintr -target-feature -cf -target-feature +clflushopt -target-feature -raoint -target-feature -cmpccxadd -target-feature +bmi -target-feature -amx-tile -target-feature +sse -target-feature -avx10.2-256 -target-feature +gfni -target-feature -avxvnniint16 -target-feature -amx-fp16 -target-feature -zu -target-feature -ndd -target-feature +xsaveopt -target-feature +rdrnd -target-feature -avx512f -target-feature -amx-bf16 -target-feature -avx512bf16 -target-feature -avx512vnni -target-feature -push2pop2 -target-feature +cx8 -target-feature -avx512bw -target-feature +sse3 -target-feature +pku -target-feature -nf -target-feature -amx-tf32 -target-feature -amx-avx512 -target-feature +fsgsbase -target-feature -clzero -target-feature -mwaitx -target-feature -lwp -target-feature +lzcnt -target-feature +sha -target-feature +movdir64b -target-feature -ppx -target-feature -wbnoinvd -target-feature -enqcmd -target-feature -amx-transpose -target-feature -avx10.2-512 -target-feature -avxneconvert -target-feature -tbm -target-feature -pconfig -target-feature -amx-complex -target-feature +ssse3 -target-feature +cx16 -target-feature +fma -target-feature +popcnt -target-feature -avxifma -target-feature +f16c -target-feature -avx512bitalg -target-feature -rdpru -target-feature +clwb -target-feature +mmx -target-feature +sse2 -target-feature +rdseed -target-feature -avx512vbmi2 -target-feature -prefetchi -target-feature -amx-movrs -target-feature +rdpid -target-feature -fma4 -target-feature -avx512vbmi -target-feature +shstk -target-feature +vaes -target-feature +waitpkg -target-feature -sgx -target-feature +fxsr -target-feature -avx512dq -target-feature -sse4a -target-feature +aes -target-feature +bmi2 -target-feature +pclmul -tune-cpu raptorlake -debugger-tuning=gdb -fdebug-compilation-dir=/tmp/makepkg/linux-cachyos/src/linux-6.13 -ffunction-sections -fdata-sections -fsplit-machine-functions -fcoverage-compilation-dir=/tmp/makepkg/linux-cachyos/src/linux-6.13 -resource-dir /home/marcus/llvm20/lib/clang/20 -dependency-file scripts/.asn1_compiler.d -MT scripts/asn1_compiler -I ./scripts/include -I ./include -internal-isystem /home/marcus/llvm20/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -source-date-epoch 1737487879 -O3 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error -w -std=gnu11 -ferror-limit 19 -fcf-protection=none -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcolor-diagnostics -vectorize-loops -vectorize-slp -mprefer-vector-width=256 -mllvm -inline-threshold=1000 -mllvm -extra-vectorizer-passes -mllvm -enable-cond-stores-vec -mllvm -slp-vectorize-hor-store -mllvm -enable-loopinterchange -mllvm -enable-loop-distribute -mllvm -enable-unroll-and-jam -mllvm -enable-loop-flatten -mllvm -unroll-runtime-multi-exit -mllvm -aggressive-ext-opt -mllvm -enable-interleaved-mem-accesses -mllvm -enable-masked-interleaved-mem-accesses -mllvm -adce-remove-loops -mllvm -enable-ext-tsp-block-placement -mllvm -enable-gvn-hoist -mllvm -enable-dfa-jump-thread -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/asn1_compiler-456ed7.o -x c scripts/asn1_compiler.c
1. <eof> parser at end of file
2. Optimizer
3. Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,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-verify-fixpoint>,extra-vector-passes,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,early-cse<>,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop(loop-unroll-and-jam),loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;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 "scripts/asn1_compiler.c"
4. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "main"
#0 0x00005e1b5aed88c2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) Signals.cpp:0:0
#1 0x00005e1b5aed8ccf SignalHandler(int) Signals.cpp:0:0
#2 0x00007762de845f50 (/usr/lib/libc.so.6+0x45f50)
#3 0x00005e1b58dd7acd llvm::X86TTIImpl::getCastInstrCost(unsigned int, llvm::Type*, llvm::Type*, llvm::TargetTransformInfo::CastContextHint, llvm::TargetTransformInfo::TargetCostKind, llvm::Instruction const*) (.cold) X86TargetTransformInfo.cpp:0:0
#4 0x00005e1b5bc88c83 llvm::VPWidenCastRecipe::computeCost(llvm::ElementCount, llvm::VPCostContext&) const (/home/marcus/llvm20/bin/clang-20+0xce88c83)
#5 0x00005e1b5bc8322b llvm::VPRecipeBase::cost(llvm::ElementCount, llvm::VPCostContext&) (/home/marcus/llvm20/bin/clang-20+0xce8322b)
#6 0x00005e1b5bc761c3 llvm::VPBasicBlock::cost(llvm::ElementCount, llvm::VPCostContext&) (/home/marcus/llvm20/bin/clang-20+0xce761c3)
#7 0x00005e1b5bc7637d llvm::VPRegionBlock::cost(llvm::ElementCount, llvm::VPCostContext&) (/home/marcus/llvm20/bin/clang-20+0xce7637d)
#8 0x00005e1b5bc23e9c llvm::LoopVectorizationPlanner::cost(llvm::VPlan&, llvm::ElementCount) const LoopVectorize.cpp:0:0
#9 0x00005e1b5bc24265 llvm::LoopVectorizationPlanner::computeBestVF() LoopVectorize.cpp:0:0
#10 0x00005e1b5bc52312 llvm::LoopVectorizePass::processLoop(llvm::Loop*) LoopVectorize.cpp:0:0
#11 0x00005e1b59b252c1 llvm::LoopVectorizePass::runImpl(llvm::Function&) LoopVectorize.cpp:0:0
#12 0x00005e1b599aed27 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (.cold) bolt-pseudo.o:0:0
#13 0x00005e1b58af07cd llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#14 0x00005e1b57cfc769 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/marcus/llvm20/bin/clang-20+0x8efc769)
#15 0x00005e1b57cfc11b llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) AMDGPUTargetMachine.cpp:0:0
#16 0x00005e1b57faea24 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/marcus/llvm20/bin/clang-20+0x91aea24)
#17 0x00005e1b57fae6a9 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) AMDGPUTargetMachine.cpp:0:0
#18 0x00005e1b57fb7744 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/marcus/llvm20/bin/clang-20+0x91b7744)
#19 0x00005e1b586a8fdf (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
#20 0x00005e1b585c1fef clang::emitBackendOutput(clang::CompilerInstance&, 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*) (/home/marcus/llvm20/bin/clang-20+0x97c1fef)
#21 0x00005e1b59a64ca2 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/marcus/llvm20/bin/clang-20+0xac64ca2)
#22 0x00005e1b57d7a684 clang::ParseAST(clang::Sema&, bool, bool) (/home/marcus/llvm20/bin/clang-20+0x8f7a684)
#23 0x00005e1b5873281e clang::FrontendAction::Execute() (/home/marcus/llvm20/bin/clang-20+0x993281e)
#24 0x00005e1b5869a9ab clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/marcus/llvm20/bin/clang-20+0x989a9ab)
#25 0x00005e1b5869ad9c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/marcus/llvm20/bin/clang-20+0x989ad9c)
#26 0x00005e1b58698b4e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/marcus/llvm20/bin/clang-20+0x9898b4e)
#27 0x00005e1b5869a2f1 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#28 0x00005e1b58697d19 clang_main(int, char**, llvm::ToolContext const&) (/home/marcus/llvm20/bin/clang-20+0x9897d19)
#29 0x00005e1b52a9b752 (/home/marcus/llvm20/bin/clang-20+0x3c9b752)
#30 0x00007762de826187 (/usr/lib/libc.so.6+0x26187)
#31 0x00007762de826237 __libc_start_main (/usr/lib/libc.so.6+0x26237)
#32 0x00005e1b533bce71 _start (/home/marcus/llvm20/bin/clang-20+0x45bce71)
clang: error: unable to execute command: Segmentation fault (core dumped)
clang: 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 e4f03b158c97098e1835cc1f00d0175398974f98)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /home/marcus/llvm20/bin
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/asn1_compiler-82f6f2.c
clang: note: diagnostic msg: /tmp/asn1_compiler-82f6f2.sh
clang: note: diagnostic msg:
********************
make[2]: *** [scripts/Makefile.host:114: scripts/asn1_compiler] Fehler 1
make[1]: *** [/tmp/makepkg/linux-cachyos/src/linux-6.13/Makefile:1255: scripts] Fehler 2
make: *** [Makefile:251: __sub-make] Fehler 2
```
[asn1_compiler-82f6f2.c.txt](https://github.com/user-attachments/files/18495726/asn1_compiler-82f6f2.c.txt)
[asn1_compiler-82f6f2.sh.txt](https://github.com/user-attachments/files/18495727/asn1_compiler-82f6f2.sh.txt)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMW8ty27jSfhpmg4JKBHWhFl5IsjVxTfLHFXuSf-cCwaaEMQhwAFCW5-lPAaDuUOw4c2qOS4ktXLo_dH_duJCgxvClBLhKhrNkeP2Btnal9FVt0nH-oVDly1VCpgmZXoNhmjeWK5lk01CW9N3nFtEagWSqlRY0l0tEkYFlDdJS1xxVtBUWPa-4AMRU3XDhGtkVoGTUp0amj6EUdDLq-xZKgrRIVb7RJy7bDXoCLUGgUS_NUGuCFg3MtSthDUI1TiEykjZmpXznT5--fe6hhxUgpqlZIcVYqw0qW73VL5Rq0BqYVZr_HcCqxvJ6-6WhxiAqS0SbBqg2yCpUANIgqIXSfXNSmDIW1aoEgSqlEaPGIi6N1S1zUgxSEm3yUS-YK5juRq65VtJhPjFnQqYofHf40TfQ5tDmiPR7_V5_yS1KSM5UXXMnAcGg6mdFOszZZNyf5JDm2ZCxtOr3y346HmaTfDIeVJM8IZNOCerUPFC9hD0KB_VxNMANw8JZHi9le9Ljoxvw_YuxUO-7oTllq5cv91HpaH73x77prbQg0FfaWKXRJ_oEJ31-977etw8M-P2AAQnJO3WooZatoOzGtbXvvYXGu-srNFqVLYMTM6c9hOZCSfAu3Ao755pRrWbOxyX0kKd6YJ9RNSDYWE07BAbRNeWCFgJQMpxxieoXpKFRyfA6IfnK2sZ4DIuELJbcrtqix1SdkIWPtYQsqGar5mlZtFyUJiELqwFcNeUyIYuGsie6BFcR_MIcZmUSMnHMIj00V7Liy1aHIXWD8NLQM7crHw-Imo6zIeJc16yH0Mw32_c7JuumAeYIP4MVXXOlT2z5cCGUzUq1otzqQqZlDIypWiFePCLVWkTlCwKtlTZHKqfMtlT8SGGQGuLUxzeYMMxo9jkI-qMIV5VDHlKbM-3RGHosGfU7WPeWsidkNQ1MClBH_e7Tn378cv8wn6MLkpL-9O7TzfT-Bpm2qLlFFBXt0tNDW0fTH9BDiPX2F260-hOYTciCG9N6Mvj8xCUTbRkcH5JdQdlTQEvmqNEuCpzxoewY7Yp9ZjNGMe7TmW5lh7-3G3DZ1k0Yb7-H_M-dVktNa0T1snVWdqhRQhYrVQe2ataaDi_pJ2RRePoyQeUSkz7CjKUIW80bAbFcgzDU3GJV_Imw015yfcmqGOGSGxdxuNIACDMBVGNqLC6gUhqwswLIct_OW3ENmlcctC9mVJd4TUULWNIaDMIu4HDFRShAJ5RAuGqlT-yYCr70KRwNEa41CMU8q3CYDBrOEG44w8JNUIiEL9zghgPCdaVpDbhR3E2bSXYtXTLCVdVgpqRznU2y68pNJriSCmvVypLLJa6pXYV2sGHgZ2Rc7OLkmi-l0k4-U90cpLRDSo0bW9XKZy5LbJ01TJJdE4StT9GYNS3SPicL-gS74gqodTklIbNGV2z1fFaDmSihVjbah643sWJDV9W5oI1qYo2ZZhk5b03rDa6aPNZjY-jaDfesy3ozTEnVpKPzutaAro0-rzD14LwQls15UzcwA4Neekkzr2p6Ee9FcZGxW7MRpdVPMbRZ1Hf2WfO4i555CU_iXFKt1vrchgmZcbluGC9jVaNBwe3FEbKoXdJ-L8XDNOZhb7R1oxombflXlBu1Wl_uSHxwGWDnmLo2LDqMWq2Lc1u5LmspOZf2nHWYsfqcvZ6k0fYJmcWMvrUHGUYoalY0ZqcQZg7ZeRdt62j7MhqWdL2Jil9pMBD1a63WJdfnih13QXMq-N9R0q0bJupW_BXx6tZ7Eeu0XNpIhLLzXOKoISrRmpVqIs7X1OXdiKS6YWxDyygrijpiYOdg65Y38ei95GES9XBCZssq5sY982KpK2TCWM3f7XmZjI_OR2jMWAmZ6VLL807bdBoHVFRRqL7Lj-riPG5asyKNaqL0ZJtIPHaazuer4Jh4lnyK2evCAG11aVYKqmMKKrM0BY3Rgom_QatIFn6m3J4HKxbP0blS_M0ivHZDXkVnnhC_o0ERMXkTUftcSMXlOkIGkH-xOkYSZypNpWnUj8Lh0gQggSm5Bh0JVluc5zbcML8NiuNwyzgB8RXJJU6wTYSrzpXxqTxMVtGhXJr9q3QUnxkdf7mlIjIaXTb6nKs-6z2f-9I5ur4wbIgSVZcG4GLIr4uaR9zVaKjAstWFNHlxQaHLJrKcwFVNIyuvPYI4zY09XxW5CYdGFoRu9UO5bZ4iFjbLqMGqTWyNGEDFJjO3got6_QKeqGUdr_x8ibBtJZyt1Uso2uUStKvlcplk18uyQLjy5fhgq4xL7jYJCVnYuvHbtSdonpbnhwoLo9mu1J-E4Gq38XELKn-yhauSWnr43TSCW1xTtuISdlslV8PUGjRdwj8FR0PYyToZP9yACl5sN6AJWbgtaAkNyBIke_H7vIP9Ze94t1ci_Pnh0vYT4VvUc9B21dtteFex--pXoZIKzI0_NfspuK8Jao12vRSj4o1NeTEaJGSxZM6kseM-skgHPdJLnUF65__Fu5xrho37gx0ieFOjAHPXdOtmagFDo9gKpeNsPMjH-XiC8JcM4e9UCIS_19wYt0NutLLKvjQuwL4bqzmzx2VSYX_mhPAzwsaWLl5km6YIV74cC15zi9KJo23l-waG77fpS9kyvN4ezl57czn6P_EGq1JjtgL2hLnEy7ry5BdK45LTpVTGcmYQ3p47AxZKNUcFRjQI1z6b6q4YP_PSrtyG3S0ba8cWZ0Thosy65flKCTeOtN_v7-r9-eRersYNNf4YYFsv_aEIU7LExioNBvtNWldtRHMAaqV0aHTa3cH37mQrKpfRalxy54eitWfVrdRKCExlif-kdbRzJai1IHd1XRfdSstrwHUrLMewcRvPrgVdLjUYw9fgbID9qvZYsAcsgK6hxDXUmPqzyXPb1NQ8Qfl6c1oywBpqtd7581iQw2FNgwuh2BNuBGXgj45Omi3XEq8UN2cVZUXxn23deG_TEuGKlqU2bqVz_fj423z--HH67ebx-vv064I8zhe3j9P7z44QCCu0S7DH52eD4QjKcU8hvEHsUprrse643P0k2RxUlWQ3qKHagEbUIpAlUhVymTQcRPufL-GY1Z99Zl3Z11a66Sk8V0kI2U4PTip10xeX6yS7SUheCUWt270nZC7UM2jsj7OotM4VmkvDmUnInK20b6GahOSeLFpZaiHJ5iugJWhcto3g4VwuyWZSuUVKQzXgysW5VV7fPJAUBPh2ZLIr2vE2IXMu_wRmsRUc17RpuFyabbtdmCTZXKoDujg1DEqspHgJ-vcRdVwVgHDpYn53sriVLxQtMQhe-ybGMlUXXDptNd1gbkH7ERrn8K0azSs3v238EWOQfpgQumSQkLnhdSN49cKqZZLNCyVbg52S48SSZLNK6WeqS2yeuWUrnzeSbNZ90y74sVWYs7rZF1vl4uGpbQKsJ4AmBEiSzTzR3XqgVtJrNKFRKHdjNtu89MxtUIj9gb5f5MwMl0-n3U0DrBVurvCR5ou68YX-haaSrYKifeNWNhpKzrYHo85aR_nP8QyoFi-YGWf30KQz5dYdv-ScQxYfZ8UDQoaKJJt_yUIvv7WqlK7xM9V-8UfmRiuaZPNGgwG9BuwdG2fXL-LFtTHUgeasTrI5FUI9b43qI-4mYN-pxJVWNabGtHUTlHSCnC87PFt_JWRe8rXLqrihXLumlnLBqBBdKLyZuVLhnyKv48Y5f4_Iu-PpCQHfSl6n4pf4-0PyThJCkJKoVmUr3AaCXE7vhCT96eBCjv5H05uHtM36Tnp4uOn0o4RkfdTf9Pv9_hDSYkihzHNGkH_-lU2TbGpeTPjjTnNp_QOqh_CIK9830vT5URmrwYXNKCFz5GeRCbrnS0mF6bGmSbJp3_8LatNTtYxVXfOPVJbCxX7-qhTSSRmPR6SEfDCshn2UkPxw3R3-Zz2jeqOEzPob3yo8u3YyskMkeVmOKSsPDPD_-ejh4fa2bkT4vgQ7p8beSmP1XBmbkLyV_n2OMox6ftD54aUB_xD19UK_-XzYJpZbWalQ4ZTNlbSwsR_P5V_qFSocvt-5LI873e7fk0B-hvdgJs5uPebCl0yQG_W57IgHBofWK1ieszw70PXt7jsvQbpBfAXGGwjFLhBaC5399s1vhF-gzVV7OtJvd65xZwhPskkA37n7jY9CPQEYeJh7CgxPBpERUhzpDthn1Ozw_xLwd0F2oPaQR8eQx6OUHdt9Rg1nM5fO_jXIHtQe8vgUcjYuT6y85Er-25izcbnHnB9jJhlM2IHWT0o13w7fZboTVErQF-B_c9Vdhrw0qC2tD0VDJPAmJ8gGZDT8CWQ-_mZg7LeFN9Pkhwpdwu4fKxySLCUXFMIdNd200b0D8albZx017_LOa4qPpopJQYaEpa8r1q30SftQ6WK79wn8eE0xOVI8oVCS8ZsUX1Z66PeppOLFcPOZSrcRS7J5pJObwUen2blQwuLGQFuqnjoBfTyd0ao_PprOSnDLuW5Kp8Z8ViWIuOojsOeDfddY3Oe_aCQHzL9W5dZYZ_48mqvGrGLj0eRAlTfHj9T8L47453NcDn7g25cSs3R4apY0Lf4BxvzXzPm_6Ibp5-vf7v4IS6bP4SA-QsCjSXtcUaBkcKDys983PKiteGfBaekfOcTBhw4_Bb3r8gv8maQe954_49NRjejkp_izHcb8jbZ4x2Avuf8fsODbXJ8fG6kYjweDNwRLzDT_-ojfwxk_4D1njlYv-YjmVVk5uVQq-VKr1iD_YmDjd5qTbp1Uczs1BupCvHwE0WwXM19b-eXg_dI73oDwB0N5eKDjG83CW4nTXerxjyBcTSv5Xy08NvZ40G5P2_j3tx63O9uDTiX4U4VHf3wJr3Ts0tboLWoflBJfWtu0dsGD49-i86TXocJzG8yVNG3tNth--dWV_mG5OOctOVr15UOWVlAdyoSa205CAHBs9nl34nHrD5LZOe_ureZy-RWqWPh3u-QfufFwW2t1a_gavkI1l_buxLDrqlufOQttX6S_-XeY8AavvCPGxt45uxgjx-tmOhowSn6k2BeGwxe_6w_HiX9IfuLT6f3Dr-6zKPNo9liPltrjckxH-eAQ6x3VBqb3D8dI7qGmHaMKpcT-97vWRZXXusd0vJIeZyRP4RDTQjsr7MgYctQGmH9wkb_TiROvZg9icJwoJ3RCC_SjADuEsQ2T_DLqd2f03EPZAx2eAi0n7BBoB2mPd929uf1awnhvOOQewh7g6ARgXgwAMZY-hvPQgylyqjV9cSkpm7MV1ftDsi52j8rIHK0VL38Fp0Oyxzk-NSSpUrS13jx98AQ_QHtfUyHC1iycUkZAnyRdJ6ML4W07T4NS83Vs50TyE0zjMp0E526t1x1NOtXdrZE3aXyXvZz2vb2OlhKETorxkLxDbsZ8z53c3cF4d7ZMRmk-fvVs2bfay0hPZZBsjB4fXZ9HY6m23nxvkEqyA6lHyTLLCgbjFAV57xj4YOgFBPHbSAz3g9wfrX8UjqxCEDiImKprKt30h-7Pb_34G3Ia_C2W7RWxc6m-BFVdLtqKRBXlAkpUtl6h8ef-TmJrAOG1LwNA_CB37MSj7sWQ48t6P3fHp-d6_dytvt1Nvgt3-B7CmwN12PRMUaMM3yR9fwhPhYDymuu33OY5MKJUbp0xRfs3W1BtfM3uKtc7P_6GVXdpavrwMJ1_RA8fb9Diy6dPX77f_t9vaHH76eYePXzxxbM_fkNfb-6-fH1I_G2lu9iNp9y4ML9462nXQAPyV3mgRNQGeW8ZcPwdi5xUo4r4lyh-WYhZvd32v2z-mj5BMpyRZHgdkG2vYybD2f5Z4mf6BBUX0Fsp42yVpgPX-tI9uOE1WsBKgEbpXkUaU_GOdwIP4DgkZDg8hLJXTbaqT3Ue9CbD1FU_Ppq2wAHnUf_Du3_JcBb3ec9u7KvXP1sDGlNrKVuF-3Rk4TC432k-mAzHbna6QCqvIOTiCxjM6h8CMb5Myg7Fh_IqKyfZhH6Aq_CGXj4mkw-rKxj1WdavCjZIGRulxSgryHjQz_vjKusX4-EHfkX6ZNhPSZpOBkMy6cG4JHQ4quikn036VZ4M-lBTLnouD_WUXn7w9x-vUpLl_ckHQQsQxl9hJ0TCM_K1CXHc_aCvfFot2qVJBn3BjTV7MZZbAVdHU8fCTx1coteetm4vlX5SqkHfjm-RV2fXBhOSn91jdkZrtbh6_-3PzgDrK_KfAAAA__-gLcfH">