<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/122815>122815</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] Crash with -std=gnu++20 and lambda.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ayermolo
</td>
</tr>
</table>
<pre>
I saw a crash in clang that is build with assertions in our internal codebase.
I was able to reduce it to a small example:
```
enum class Signal2 {
ENUM1,
ENUM2,
};
void func() {
const auto funcL =
[](const Signal2(&srcSignals)[]) {};
funcL({Signal2::ENUM1, Signal2::ENUM2});
}
```
Full stack trace:
```
clang++: /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGCall.cpp:4536: void clang::CodeGen::CodeGenFunction::EmitCallArgs(CallArgList &, PrototypeWrapper, llvm::iterator_range<CallExpr::const_arg_iterator>, AbstractCallee, unsigned int, EvaluationOrder): Assertion `(isGenericMethod || Ty->isVariablyModifiedType() || Ty.getNonReferenceType()->isObjCRetainableType() || getContext() .getCanonicalType(Ty.getNonReferenceType()) .getTypePtr() == getContext().getCanonicalType((*Arg)->getType()).getTypePtr()) && "type mismatch in call argument!"' 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: /home/ayermolo/local/llvm-build-upstream-release/bin/clang++ main.cpp -S -emit-llvm -o main.o -std=gnu++20
1. <eof> parser at end of file
2. main.cpp:5:6: LLVM IR generation of declaration 'func'
3. main.cpp:5:6: Generating code for declaration 'func'
#0 0x00005557c7baa498 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x00005557c7ba7fde llvm::sys::RunSignalHandlers() /home/ayermolo/local/upstream-llvm/llvm-project/llvm/lib/Support/Signals.cpp:106:18
#2 0x00005557c7b193f6 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#3 0x00005557c7b193f6 CrashRecoverySignalHandler(int) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
#4 0x00007f2098a3e730 __restore_rt (/usr/lib64/libc.so.6+0x3e730)
#5 0x00007f2098a8bacc __pthread_kill_implementation (/usr/lib64/libc.so.6+0x8bacc)
#6 0x00007f2098a3e686 gsignal (/usr/lib64/libc.so.6+0x3e686)
#7 0x00007f2098a28833 abort (/usr/lib64/libc.so.6+0x28833)
#8 0x00007f2098a2875b _nl_load_domain.cold (/usr/lib64/libc.so.6+0x2875b)
#9 0x00007f2098a373c6 (/usr/lib64/libc.so.6+0x373c6)
#10 0x00005557c7e64f96 clang::QualType const* std::__find_if<clang::QualType const*, __gnu_cxx::__ops::_Iter_pred<hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>>(clang::QualType const*, clang::QualType const*, __gnu_cxx::__ops::_Iter_pred<hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>, std::random_access_iterator_tag) /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algobase.h:2089:22
#11 0x00005557c7e64f96 clang::QualType const* std::__find_if<clang::QualType const*, __gnu_cxx::__ops::_Iter_pred<hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>>(clang::QualType const*, clang::QualType const*, __gnu_cxx::__ops::_Iter_pred<hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>) /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algobase.h:2117:14
#12 0x00005557c7e64f96 clang::QualType const* std::find_if<clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>(clang::QualType const*, clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0) /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:3910:14
#13 0x00005557c7e64f96 bool std::none_of<clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>(clang::QualType const*, clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0) /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:471:24
#14 0x00005557c7e64f96 bool std::any_of<clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>(clang::QualType const*, clang::QualType const*, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0) /usr/lib/gcc/x86_64-redhat-linux/11/../../../../include/c++/11/bits/stl_algo.h:490:15
#15 0x00005557c7e64f96 bool llvm::any_of<llvm::ArrayRef<clang::QualType>&, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0>(llvm::ArrayRef<clang::QualType>&, hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>)::$_0) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1747:10
#16 0x00005557c7e64f96 hasInAllocaArgs(clang::CodeGen::CodeGenModule&, clang::CallingConv, llvm::ArrayRef<clang::QualType>) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGCall.cpp:4466:10
#17 0x00005557c7e64f96 clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFunction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, clang::Expr const* const, clang::Stmt const* const>>, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGCall.cpp:4585:7
#18 0x00005557c8149ce8 commonEmitCXXMemberOrOperatorCall(clang::CodeGen::CodeGenFunction&, clang::GlobalDecl, llvm::Value*, llvm::Value*, clang::QualType, clang::CallExpr const*, clang::CodeGen::CallArgList&, clang::CodeGen::CallArgList*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprCXX.cpp:75:9
#19 0x00005557c8149714 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorCall(clang::CXXMethodDecl const*, clang::CodeGen::CGCallee const&, clang::CodeGen::ReturnValueSlot, llvm::Value*, llvm::Value*, clang::QualType, clang::CallExpr const*, clang::CodeGen::CallArgList*, llvm::CallBase**) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprCXX.cpp:94:18
#20 0x00005557c814cc75 clang::CodeGen::CodeGenFunction::EmitCXXMemberOrOperatorMemberCallExpr(clang::CallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, bool, clang::NestedNameSpecifier*, bool, clang::Expr const*, llvm::CallBase**) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprCXX.cpp:0:10
#21 0x00005557c814d240 clang::CodeGen::CodeGenFunction::EmitCXXOperatorMemberCallExpr(clang::CXXOperatorCallExpr const*, clang::CXXMethodDecl const*, clang::CodeGen::ReturnValueSlot, llvm::CallBase**) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprCXX.cpp:501:3
#22 0x00005557c7f84efd clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot, llvm::CallBase**) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExpr.cpp:0:14
#23 0x00005557c7f9f00e clang::CodeGen::RValue::isScalar() const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGValue.h:64:41
#24 0x00005557c7f9f00e clang::CodeGen::RValue::getScalarVal() const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGValue.h:72:5
#25 0x00005557c7f9f00e (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:626:36
#26 0x00005557c7f9df12 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:447:52
#27 0x00005557c7f9df12 (anonymous namespace)::ScalarExprEmitter::VisitExprWithCleanups(clang::ExprWithCleanups*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:2774:14
#28 0x00005557c7f8b54d (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:447:52
#29 0x00005557c7f8b54d clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExprScalar.cpp:5576:8
#30 0x00005557c7f5ca4c clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExpr.cpp:0:24
#31 0x00005557c7f5ca4c clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGExpr.cpp:215:18
#32 0x00005557c7f432d1 llvm::IRBuilderBase::GetInsertBlock() const /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/IR/IRBuilder.h:188:47
#33 0x00005557c7f432d1 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGStmt.cpp:130:42
#34 0x00005557c7f536c0 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CGStmt.cpp:557:22
#35 0x00005557c7f2f15e clang::CodeGen::CodeGenFunction::getLangOpts() const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenFunction.h:2145:51
#36 0x00005557c7f2f15e clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenFunction.cpp:1595:7
#37 0x00005557c7de8da0 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:6104:3
#38 0x00005557c7de0583 llvm::TimeTraceScope::~TimeTraceScope() /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/Support/TimeProfiler.h:198:9
#39 0x00005557c7de0583 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:4233:3
#40 0x00005557c7de56f9 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:3944:5
#41 0x00005557c7ddef31 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenModule.cpp:6992:5
#42 0x00005557c84ff88c (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/ModuleBuilder.cpp:189:73
#43 0x00005557c84f7756 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:198:7
#44 0x00005557ca35953a clang::ParseAST(clang::Sema&, bool, bool) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:175:11
#45 0x00005557c89aa11f clang::FrontendAction::Execute() /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1081:10
#46 0x00005557c891935d llvm::Error::getPtr() const /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/Support/Error.h:279:42
#47 0x00005557c891935d llvm::Error::operator bool() /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/Support/Error.h:242:16
#48 0x00005557c891935d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1062:23
#49 0x00005557c8a9ce87 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:296:25
#50 0x00005557c62e4937 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/ayermolo/local/upstream-llvm/llvm-project/clang/tools/driver/cc1_main.cpp:286:15
#51 0x00005557c62e0e4e ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /home/ayermolo/local/upstream-llvm/llvm-project/clang/tools/driver/driver.cpp:218:12
#52 0x00005557c876ac19 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0::operator()() const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Driver/Job.cpp:437:30
#53 0x00005557c876ac19 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::$_0>(long) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#54 0x00005557c7b1913e llvm::function_ref<void ()>::operator()() const /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:0:12
#55 0x00005557c7b1913e llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /home/ayermolo/local/upstream-llvm/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:426:3
#56 0x00005557c876a1a2 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Driver/Job.cpp:437:7
#57 0x00005557c8725e2c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Driver/Compilation.cpp:196:15
#58 0x00005557c8726137 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Driver/Compilation.cpp:251:13
#59 0x00005557c8744348 llvm::SmallVectorBase<unsigned int>::empty() const /home/ayermolo/local/upstream-llvm/llvm-project/llvm/include/llvm/ADT/SmallVector.h:81:46
#60 0x00005557c8744348 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /home/ayermolo/local/upstream-llvm/llvm-project/clang/lib/Driver/Driver.cpp:2119:23
#61 0x00005557c62e047a clang_main(int, char**, llvm::ToolContext const&) /home/ayermolo/local/upstream-llvm/llvm-project/clang/tools/driver/driver.cpp:398:21
#62 0x00005557c62f06e7 main /home/ayermolo/local/llvm-build-upstream-release/tools/clang/tools/driver/clang-driver.cpp:17:10
#63 0x00007f2098a295d0 __libc_start_call_main (/usr/lib64/libc.so.6+0x295d0)
#64 0x00007f2098a29680 __libc_start_main@GLIBC_2.2.5 (/usr/lib64/libc.so.6+0x29680)
#65 0x00005557c62dea25 _start (/home/ayermolo/local/llvm-build-upstream-release/bin/clang+++0x373ca25)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0git
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /data/users/ayermolo/llvm-build-upstream-release/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/main-7b8c1c.cpp
clang++: note: diagnostic msg: /tmp/main-7b8c1c.sh
clang++: note: diagnostic msg:
********************
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsXEtT47i3_zRmo4KyJT8XLEwgDFP0dF9gembnkm05-N-2lJJkGjb3s9_Sw4ntJARoSPed_1RR3Y4sHZ3feenoYWEh6gUl5NQJzpzg_Ah38p7xU_xEeMsadpSz8un0Cgj8HWBQcCzuQU1B0WC6APIeS1ALkHd1U4LvtbwHWAjCZc2oUNVYx0FNJeEUN6BgJcmxICeOm16B71gAnDcESAY4KbuCgFqqHxiIFjcNII-4XTbEQanj6r_QtX9uSmjXKh6EALf1guIGAic6c9wUXPzx5yfPgbP-GZpnJzp3kKrwwOoSVB0tHBg7MOmbgYJRIQHuJNNvr4GDztULIxUHxqaC7U03DgUvzG_hwKSvaEj23QFgyKkG0VnfGqUOSntOwUYpVM1hYiio5zF4x03nXdMAIXHxDUiOi-1C0jpy4Jn6Qylw4PyetcSB8163Dpw3rMCNA-fdUkhOcHvcNA-tKm8e2uMlZ_8hhXTg3JKaN3XuwPmMleSSUPV0OcNNc1Islw5K_QCFqiMtYtNCQ-qrD3_MO1ooK7Gg21oqQilfCAfG9vG6FhI4MFQy-sKZZPJpSf7ieLkkXJVpVnX7WhKOJeMZx3RBHDRTFC4el9y81qrLMF9kfUUHXSgKaS6U-HTfhKiSjmpvKJXVqt8XD7jpsOL0My9Vt4lCmPZGDpSkYVyLS0IJr4tPRN6zEjjRzIlm4O7p2EEXtfiKeY3z5ukTK-uqJuXd05KszM_WPFkQ-QejN6QinNCCrOsYGp_z_8xuiMQ1VU6zSWFB5IxRSR6lLVcEZ5gyWhe4sfWf66Zvo0q-SN5TR-cOOt-gvo24_ktTvrA8W1or6hvENX2l3hA4ECrlgrYWLZaFCTEqCGC-6FqidOE5EDowAhWuG1KqGPLl-iK9vQCiy9taAgzybgE4WTKuw8i9lEuh9A_nDpwvannf5ScF641708ZrIToiHDgHmCr9F01XEiDviY16OS6-GWeDM7DkZMlZQYQgJRCs46ZYtcRCsKLGkpSAdxSIgtdLqfi91f5adu3SuKt74rjJF84WHLcroGKvq2q2dcQ9XnktJw3BQjXIa7r2V-X6oMU1VR4Kjm_BMWlrqX0cHDPzhoFjIUsHnS9oZ1pAFTw8xZyDZoRVDroAS8wF4QBLQGgJWAWquiGOm0JVre_BQWngoFQHgevrr5_A1Q1YKMfQDqRalaRosP3pwMjE4chxU7SLzqVtTxd6_AAV47upAAciF7iPruu6QRBERZRj7CfxIFSIJ2EevvCaSq2SO6PUeF2J4-8ZM6K18UeHg-SHYmhfqkPobbdUhurA-Z-0flQFZiA5qWnhoDSCyEGphywmb4IpqkqyDdNNRw2d3zAtG8JF78Xvz3bPr1GX5yplebHlF4759RJUKR-PVcR4alknAMUtEUst98QODMrJbkjBHgh_ssHmql025q0BpOuoeGuC8ypYN0xZ-4fg3MaWBR0hbagGMtoGedR4pJkexKF5RomrmPYs177lOqqgm8QYkQi5IMs4EZJxknE1_saKD8FNP6Fv_i9OBDsJHXjmPupGSo2GZDAmGee4KECWLeU9J7jMvtVNk9UqsVPRrvfhfX1oKus-winbYRyChdACfhHHYRyuqUVjajCOEQI4Zy9Cr2uvacVTWlGQg4w2WcNwmZXMhDjWlC8iHQX5mnQyAR2hInwJWFXPUFGRZBweSehXSThM1v6nMwO6SYgdmAI9OqhXWVbVtMzqykGz51oo18yyBe2y4vGxb8qWNkZlV5LwbMlJ6aDZPRZXNG2Uudvcb0_e-ImVXUNsUB7WxU1T08WM0Ydxaphyjp9uyA6edR5oA5AD_cxVBaos3gfwnywAOFsrnWNasjbDhcp1VvlzJnEfcFe2p7Is5aTzxzjMQv-Yk_Iey-Ompp0a4DzPgfOTk81_bKalshY7WbGV81qqdEzIJsPNgump472DUujGimMIrUl7_5r0vya9z6R_lq16XqQyI9_aKny7rb7cUn9NDfyw_f16sA5sVdqiUOK5Q4tC2ywqZ6xZWw5llGTsX8v5hWD9DMvxI09FpN5w_P2Gg-nTv3bzS8H6KXaj54xeYO0m2Gk3a1grw3kV0vDXlLk2pX8CkPdZbVjbji1Iz-8cOL-9u754lBwLbTNe5Ou8x7VGE24zml9DQgfYGPHDcCiMaE8S-OoNk51t1xspW4S2t5dXbroMaN_KVvYsCHm12nUZ1tH7M2OWVNE687UPoxqK8LSGnd-8Etz-vZ_XaWRjo-gQG25x4KA0smYVD80q9vykIDEoWNsyqu3l778_kTYn_DP_vDQKUbT2e90K6IYJXTYsx805KZqxaXzFTUfsGLq9dJs3bvr0yB6eVcnLDX1YM_04NSnWZ3__3S8VKz31S3DJVE-R57_B_V-kTlVJ3rNS6ehlkrw0DtFXflaYN0R2nGq93jZM_kpGMOlWvTvTO2TpAdWe-P2uiAMRdCd6L4ooeBe9m9-rPe-xBeyT4KstZIvSVfY3afIHEZKUf-CW3C5JUVe1ionpjsobDP5sxbmD4Rp6E72V0HffpLcX6Wtd7SCq-9mSDlw1KUVW1OPlsSr2SfXGoyRv8IRfUlJDg7Qzdzhe8qmSynXJbiQm4pqUTdwWuMH94Q5zpOljeNe96qlAqIKg71ne_bfyviDSMP9VMXZA_iNot3kV-8E29vfsbBu2lTKVcUpiTyV9rcUrTPUjbcwwaC0thGqugkILOJwALisP_gjgMVAD_ZDwfD0vDezeEYzeGZ4q_auW97OGYNotxSbc8dtDQodR5A_DSDwJtnngl_8g1Sbb4L16LFkD3oQ3GklMWnMwsEEQKT-1ueXk1FMVFNgvXg82pU8vQLqLbLpYbMkKDzQ49svak7NSb5XE1YIyTsq90jgAOugFg1nE5GxV5SNYeoPc5OrmrKubknCdoJhZOpFXVBAuzxpWfHu3sXPXcuDVjf7HsmFWA-NY7z9YCGgbhNd7pmwnIWe0OPSShcBUyoEyP3I1ULHWn5VDyl59G6bQJCEKUFi8ZXbB2iXraKn6USMM6-RtwfTp2xGtda3RBH_LnOwZ1z6AkIIgGhzxQJO0C1ZesDtr3CqkBZHXmC4-L6X4-OxxzIA9COAH_ck7hSj8YUT2ZCxRL8dq3rUst17I27ME1Fe8ohUb2MkH6X0iLeslQTJY20TjPK0kcYn3eondLVj5iBFL3885qWpaG3G8RHimfL189aHCMKz3Gbnn-us5MoononCDGA34vKtbok80G__XZf87KXy3U8EbwX99CFV1-YWzqm76QSCJ14ugKNmG4k0K_f-jSB8itFak705EEIRV8jYR7AZ-OHAo8f31RNkfp2FlSSq0d4yfgrtjy2vyQCyUIURTclgvTJLBQoA_SsNiv6riuNh7xN2QNat707Ptz4O95KxbqvzlgxAbqH3OZkOwPmYZ9eaKJoijKBjtWp7h4huh5YxR0bX9xPBXwGaf0tHwooORHV38UQ6GUZAECA-hfcFckPT2bpJukhZP8qf3n_Lorvv_09u7nn-9o-TZbMIf5UdxgrHnVUMAc86oJLRMh2njIyk6-R6DwZjjvq_B41j0buwNltf9cMy7l6CgHITrC84ZX-Vw6y_TPm4Csx7DdN8mfYuSQdLuRy_mmdnFfGsaBxh4B0z7KmJ5dinPj7cxPZkdqNH6igqJaUFGZmItZ-QAE6t67xRxYEhT1tafHSmEsA9R451VnBQkjsb7TBrLmtoDK_Amrg1BvPdI0yO70zYx38lWvwKQhOpfO_QEo7whhMRPUASKwstaXNOdR5Xu8WSqOwPjMjjTX-6-I1jJWCMcOC95_UC4emGZ7HHF4eBgWeBNcLnEJ6CXzcwzwhqgu21x03wlxWow3QIyHOd-iob9IOrd5zUbaM3DahVHDTieDSDBOH2IQlx4o9zPEjHmOPNmrG0xLaeBe6umV6c32VLZEG5Gx_BuJa_pQte8mH7rkWXF46PnmR85FnWRCV3dinZUWRVkkuNaiv71hBzWJ7vsuR_7XlUZLJemq0humtgDd8PA2X8r_CFz9vNeV7-zvE_SUaSyWTs6BWibovQX7muZVnZKmXGtAP3Wsq0ga2nhpslx8S2r6HgJ6r9b0fpk5ft9vLn7aGI_68fN4JCiHw5d0p9-wekh8jolf5DJvg2cO8QWPI9t2wejdge2o7e4Is3TyAifl8XBP2r1zZalxRpOPdbD8L86tB4iXtqZVDBOjCMYEFjsFL7Od_DGjKTXyCgnmzRUFXYdUXumajqar32gfAbYVjPOUbITTwQVeih6raB-Z7nYLaXfWa5vUBlK6bnkaWVcS1wru9o8BfusYK0F_izxwsDrb0xQ4h3PBCLfV9OfrejNPtlsdPi3D-ikXcqnQ8XxNUs6futJsm_nbqG7Dc8O1ZwPnkdTiy1TnV1mdkBzec-J1cpAzse5t5cMponhxkTDj-xyTz-F6sHoyJxu7Cb-vGkE0utW0K77hHCMpHJDEulrXX7kCpmeg93TOPXieMSXN_zaI0STWxCSoHRBljV1roY9zGWm8uHMMrr3HgTVfHWDQehPiYfxhLhWou9eXl-dzTJ4Ak-CF_USxoNegrFkS4JhAAx9S-zdbuhZXdOAYWAYGL5EKSB2OcneulbZ1QN9tl85lbkSydy_Rh5raW7K8ZCvOO0EAccPQDIgCAH1YMlj1RN4IFzUjALonrgn7qKWjpveYb4gKgsE9tuyjn6j7Ds1H5cdL2inKulLPUDLStKoqksm6kfHTfXKSdOQ8rzm9kKjEkusVaCvpRmJba-43FSvTCtfq-qFIXi2vmluU2KUSaL-L2u8oEzIugCtMA3dtPfoN_2trp1K7-7S2W_g7rcLMP98ff35r6s_LsH86vriFtx91sVnf16Cm4svn2_uHH3f05dtd0bFQgWOnfdGrSpwAnTKR0qApaH3csxwLtulA-fKMY6jPC68Qvvtj9IQ94cV_fB2u6PyFJUJSvAROfUiFMZu7MfR0f2pp6JgEQbE9TF0i7IqKpRHfulDL8jDkBzVp9CFget5CEI_dqMTnOPAi8qgioMIu27u-C5pcd2cKMs8YXxxpO8GO_UgjL3gqME5aYS-LxFCix46wfkRP7WmvBCO7za1kGJNQtay0ZcsmhbBubkdyHjt5hVc2iQa3OYlPjnqeHP69vvMLNsPp_D_AgAA__8mgWUs">