<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/141603>141603</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] Crash clang::StmtVisitorBase with constrained template constructor and deduction guide for derived class
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DimitrijeDobrota
</td>
</tr>
</table>
<pre>
The following code doesn't make sense as I've tried to reduce it as much as possible.
It compiles fine with gcc 15.1 but crashes clang 19.1.0, as can be seen in [godbolt](https://godbolt.org/z/qajfnjE1h)
```c++
// any concept will do the trick
template<class T> concept IsOption = sizeof(T) >= 0;
struct group_base
{
// if 'IsOption' is changed to 'class' code compiles
template<IsOption Opt, IsOption... Opts>
group_base(Opt&& opt, Opts&&... opts)
{
}
};
template<class Record>
struct group : group_base
{
using group_base::group_base;
};
template<IsOption Opt, IsOption... Opts>
group(Opt&& opt, Opts&&... opts) -> group<Opt>;
int main() {
group{3};
}
```
```
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: /opt/compiler-explorer/clang-19.1.0/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-14.2.0 -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 -O0 <source>
1. <source>:24:13: current parser token ';'
2. <source>:23:12: parsing function body 'main'
3. <source>:23:12: in compound statement ('{}')
#0 0x00000000036fdb08 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x36fdb08)
#1 0x00000000036fbc74 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x36fbc74)
#2 0x0000000003647be8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x000078d636e42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000000007281d4d clang::StmtVisitorBase<llvm::make_const_ptr, (anonymous namespace)::IntExprEvaluator, bool>::Visit(clang::Stmt const*) ExprConstant.cpp:0:0
#5 0x000000000724bbfe Evaluate(clang::APValue&, (anonymous namespace)::EvalInfo&, clang::Expr const*) ExprConstant.cpp:0:0
#6 0x0000000007262bee EvaluateInPlace(clang::APValue&, (anonymous namespace)::EvalInfo&, (anonymous namespace)::LValue const&, clang::Expr const*, bool) ExprConstant.cpp:0:0
#7 0x000000000726ada9 clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext const&, clang::Expr::ConstantExprKind) const (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x726ada9)
#8 0x000000000621686e clang::ActionResult<clang::Expr*, true> calculateConstraintSatisfaction<calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::ConstraintEvaluator>(clang::Sema&, clang::Expr const*, clang::ConstraintSatisfaction&, calculateConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, clang::SourceLocation, clang::MultiLevelTemplateArgumentList const&, clang::Expr const*, clang::ConstraintSatisfaction&)::ConstraintEvaluator const&) SemaConcept.cpp:0:0
#9 0x000000000621835a CheckConstraintSatisfaction(clang::Sema&, clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) SemaConcept.cpp:0:0
#10 0x00000000062188a7 clang::Sema::CheckConstraintSatisfaction(clang::NamedDecl const*, llvm::ArrayRef<clang::Expr const*>, llvm::SmallVectorImpl<clang::Expr*>&, clang::MultiLevelTemplateArgumentList const&, clang::SourceRange, clang::ConstraintSatisfaction&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x62188a7)
#11 0x0000000006219467 clang::Sema::CheckInstantiatedFunctionTemplateConstraints(clang::SourceLocation, clang::FunctionDecl*, llvm::ArrayRef<clang::TemplateArgument>, clang::ConstraintSatisfaction&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6219467)
#12 0x0000000006ada2fa clang::Sema::FinishTemplateArgumentDeduction(clang::FunctionTemplateDecl*, llvm::SmallVectorImpl<clang::DeducedTemplateArgument>&, unsigned int, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, llvm::SmallVectorImpl<clang::Sema::OriginalCallArg> const*, bool, llvm::function_ref<bool ()>) (.constprop.0) SemaTemplateDeduction.cpp:0:0
#13 0x0000000006adae4a void llvm::function_ref<void ()>::callback_fn<clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>)::'lambda1'()>(long) SemaTemplateDeduction.cpp:0:0
#14 0x0000000006097151 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6097151)
#15 0x0000000006af201f clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6af201f)
#16 0x00000000068eef0d clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x68eef0d)
#17 0x000000000670cec2 clang::Sema::DeduceTemplateSpecializationFromInitializer(clang::TypeSourceInfo*, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>)::'lambda0'(bool)::operator()(bool) const SemaInit.cpp:0:0
#18 0x000000000670d82a clang::Sema::DeduceTemplateSpecializationFromInitializer(clang::TypeSourceInfo*, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x670d82a)
#19 0x00000000065dcc6b clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo*, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x65dcc6b)
#20 0x00000000066709fd clang::Sema::ActOnCXXTypeConstructExpr(clang::OpaquePtr<clang::QualType>, clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, clang::SourceLocation, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x66709fd)
#21 0x0000000005faeb75 clang::Parser::ParseCXXTypeConstructExpression(clang::DeclSpec const&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5faeb75)
#22 0x0000000005f9e519 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f9e519)
#23 0x0000000005f9f09a clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f9f09a)
#24 0x0000000005f9f239 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f9f239)
#25 0x0000000005fa41f9 clang::Parser::ParseExpression(clang::Parser::TypeCastState) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5fa41f9)
#26 0x000000000602f627 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x602f627)
#27 0x0000000006024c1a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6024c1a)
#28 0x000000000602560d clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x602560d)
#29 0x0000000006026891 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6026891)
#30 0x0000000006028bda clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6028bda)
#31 0x0000000005f24740 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f24740)
#32 0x0000000005f6d07e clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f6d07e)
#33 0x0000000005f1e817 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1e817)
#34 0x0000000005f1f703 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1f703)
#35 0x0000000005f27cd2 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f27cd2)
#36 0x0000000005f29ac8 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f29ac8)
#37 0x0000000005f1877a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1877a)
#38 0x0000000003fce825 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fce825)
#39 0x0000000004274201 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x4274201)
#40 0x00000000041f699b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x41f699b)
#41 0x000000000435a843 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x435a843)
#42 0x0000000000c874dc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc874dc)
#43 0x0000000000c8146d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#44 0x0000000004017309 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::'lambda'()>(long) Job.cpp:0:0
#45 0x0000000003648013 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3648013)
#46 0x0000000004017529 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#47 0x0000000003fdd947 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fdd947)
#48 0x0000000003fde2fd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fde2fd)
#49 0x0000000003fe7d4c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fe7d4c)
#50 0x0000000000c847f1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc847f1)
#51 0x0000000000b5c2d4 main (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xb5c2d4)
#52 0x000078d636e29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#53 0x000078d636e29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#54 0x0000000000c80f0e _start (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc80f0e)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsXFtz4zZ7_jX0DUYaEjzqwhe0ZH916tTu2pN-dx4QAGXsUgQ_APTa-fUdAKR4EHVIwmzTphlnLZE4PO_zHgGCRlKybUnptRPeOOHmCtXqjYvrDdsxJdhXuuGZ4ApdZZx8Xr-8UZDzouDfWbkFmBMKCKeydGCswA59o0DSUlKAJLh3YPxOgRKMEqA4EJTUmAKm9M1djd_074pLybKCLoHjpo6b3iuA-a5iBZUgZyUF35l6A1uMgRcuPZDVCmCB5BuVABeo3AJvtfSWrgPXejSMSpBpCLQErAROeLPlJOOFcsKNA5M3pSrp-KkD7xx419xacrF14N2vDrz7F_qal19vvTcHriwcJ3LtD3bgjf6xV01_gMpPgHmJaaXAd1YUgHCg3ozE-JvjporuqgIp6vhrXCApwYvj3-573MvHSjFeAsffAMl-pTx3YPLiwBVw_Ft90XX8ZkKpRI0V2ApeV68ZklRfjvVNABowLAcOjNtBHRgDJgF-Q-XWsu_A2IDQd4zaWprNID2oe1yPldK0tt-Xy6W-JDU43aUHBiambeTACHDby7Q0V3Q_br6tLN4Wd7wxUmz2Uh7w9YViLoidsE8BcPx0moxaarPs3fJTx0_732-OT3qZ5Gawi0UGC61z28df6z5at83crNQ-w0oHJkbtjRANt05843dILVutOY6s03HTp4fb9PkWyDrbaQ8DWb0FglZcKK39keUz9VZnS8x3Drwrivf216IS_CvFyoF3TMqaSmvlBLASFzWhxrqN-4EM4W9KIEy15JWgleCYSkkJkLwW9rLuiaTkmCFFCRB1CSQWrFJLx02fFcLfAKl3lYblpu7ScVdPgm8F2gEktvWOlpryVBu4YfiusVixoB9VwQUV-poOAos2CNxlmkx70TosWGzJdyTyRQAWW7DQfnCHqkqPWauqVksJFjstO1gsPpJogeRuIT9LhT4cf8NKRQuwyEu-eKci45Lq-2DxDBaLLcYLxXmB37QC_c1JlLqxFyzh0gWLHPOCiwVhaFtyqRiWdgbD6_CyVMTxN03ogS5YPLrA8dcNw8YaPU3b4JqfwsDxU8_X3OFaCFoqUCEhqQCKf6OlDgXaqGDsuCmc6q-7elD31_20R-V1iY1r6CSgB7Bmq0fwT4_AShNpeF0SIBVSVOsVGIuPtcHHG_3BxgYH-i5wP9z2Pz_KSeYmwJio8WT5Ke2HJ8FKZWzoxVph0jUS6Psrl0pQtDP-uAasVMbB9Kx_wJgceON-NKA6yN4IcobjYAryuqCorKvH8pltS1Q4MKlLk3kJKLieYj6AGkIHEA4BBnFGE7DW5qYD7DsVnxbRv6GSFHqepOFr0GbNS0U_1BJX2mNd878d32_GjxMS-RENYAjdRpSCZQ68-0ii1yhYFKysPxbbsrY38FLyZWQgmy4d4KAPOIaJRwJi071l8lnt1C9MMsXFjQnq645uXYO8Yl5K9VopoZXvwASVvPzc8VqCEu2orIzFrGyH-1LdflTi9h0VNVLcdMk4L6wlO35qZnJgMgIAzCQOTDVTeoS1_o7KKYbCoUBBluUUNDPS4dDp0y-oqGljuGew6yHuy5w3rXvDaEC_BWE0RBjBjHYI78unwjrZTEDPtH4wI7fwz4jWaOu8iPFIRETQajxuh1bLncp2OHNvIP6w9Rcq62ICa_r80vjNKWma-NCb699ZSbRIptM8YaGRuPOypM9HBL0oiegAu4n4jWSmJBtgttwrUVNT1aIC17qOMlIIpKMzUkzmyIyi-59pMXQwukOHXP0H2lGyobgYqL_fzeSgB46RHXJw8-e6UOyBvtPipan50qbMeGDypH6OTXdMkmhvyV2LLr74t5fI-jvnXZ_VxN-F595EK6DlXNuF10RkWI08IfFDBNZvFH-bm8MuT6VCoM8vND_0rK6DtpR-n-cdKopfKFZc3O-qYtopdacxmN-nEqvlL3oJ-RsUcoJrXSy5Y64TFIMxm3aSSxXw96V6lsTQKKHZ84C-541UtAqiUyq6t2nLLPLumnVCK3uHXo6c5lQEaUfROr1Qm2OyG4X-aCI1VR2Rg8JbZ1-Yo2ki71jJ5NtYiA0l9YS9j0mepOmkAZuBKZkkzZjmfmViVgKnlTO2ZbmXqgPYyNErAS9E2lH0KNiWlahYo6JIxbbZShsVgf1x2zXrqzDGohtYPa-MnEbpSzNEJXil9Wpj1wHqiSjmjzVLAwTeOSPH5zd3u_lNE4yKIkP422teHhPbqmqsKXmxRZzwER2QrEYuDphdqJzfIloNtr97A_xnjYqXz2ocG3u1c4GkZDnrwslZOzgn7n5OYyztv6nZRIsLtMsI8szWxd6iknYZf6kVDda5kbuKvdCbjg-iLv-LqbfnOs8ZZrTZ-niuDlZlh3H1UoOcLQpaObooGA59JYeul09L-f-2_hey9Zmsweq7s4bBRkOUUJq7ZNoaUrJPUI_vVBQckTUqCSMHeyaXmYS-mmJMpXxCTPwgezlA_kzVERuYsAWd6zrFp5sHfcHuDZye5QkJtHsUhIr-Bsk8GrU66zQ62FeJYhdTDC_x7-eKYoYK9qux4zvBd_clU-YKHW22aNu0ka2nk979riO5LRVTn8fq7H1DM6dmctCyU_PPtUJZQc9re5wTXJsTGsrtTV5RYbcWTbDd3222dzRBGthEhkhG3JIEHqkg_09yO5PFWt46ix2u90OCcZRNs3pTs4Ks__lPTZJdQNR4YjPwHIensvLFbJwZcV4nt6TsKYPDZXsUu6v8WNjG6rE8T9ljhf5V0yclTmSi_-UcWpY6Dgfr6jBHNIvDPp4n85Cu93mKRSrlwYJQZzbt8YMtr1lkaFB2MsChDCsaeqvTMiB5FHe_sW5nvrfpbZgWx8Gm39VwhKSuiRU97JrOyIaRt2PDH7GRuyv057LxF6BAC9lREIwpgP5pg0jNcSNdY11CxEiwGaWAfk-R4cg1Ay8_LcX_JHaDrsM-rKhdmEcwPov9uX0Ufxy--Uye1U41j7BmXCIakJ0I8UiEAHun_WgP_1Ho4IeECeFprqhIlRIsqxWVg4VPb5dptNWidu0ekg_ryT3dM6ycTCrjUsD274OcnG3cYj7mNbcd88mI-TAaLscuZP6vQvV8NGkiOppWI5qiZOWdDvTNmZc9XTecfPYq_7lgaiB7mMPTM5ELk4yc9qN25TyGOSoujpjxwC4wr-jMpqrhd8KNyicYxIF7kXAbmjO9NpmK1azctmas12fnzbFdYelC_9hKqN_rwa7GG49-YPsDGTMlA0NDR9KoPouIG9OTAmnp_9EcaZzmRleWhzJ2rE0754Vx7ii3x56RnYmszXh3XJiHaXpNOi_fhtGO71EF6NHEO518NW-Pomea96Wiwp4H--Np4qDFSR3a3TCzV5AzTcJsLBkeOpZGRaKXx65_lqUmtQzIOurHs3M1tq4_kSvNRsfVqBSFMSbwTDlnDWiYjn8AP_PFMC1jx0A0YmCFcHKSgRdemSfuNlVdsMuwD3pms2CiDOm2M37mpC7o_a7ioi3k51xeG-E60eORoyRxfJjA0-eXoydQhuu--WxUA-lgDqpGP8c0geHwWTuh_6Bl2pz9srswFNeKpu3z7PmOu9rpO3CDWi2AcQDdQa12J3TCKskEujlxNTPvcQWD4izw8mi1yoak2ZnseQpMp3k7LsiMdtmg67APaq_AD1ES-MOnUwZlJ8L7Pk0np0ScMYw0qDrMg1LIxUkcEAww9l6bVy6mn-m8oYNTQcNrcG0e9M8J3WLrkPsj5F4QEdBSvPZejG9PL7jaExQHYoz24PUYhydTV4AI9k7F4ZOIYJDCA9eLfXc154kHO3FjJmtvzXc7VJKxd07qzLwmkZrnLHp2VAwOhD8rwcptE-itQvcdXl_xx4fn2S8Zkgy_StO8oXDQWF94VQIxJdvbo-FQUWizt8ve5r5uko524izhpsv-udGRowQ_8WxCGeHoRH_ien5PD1Pn9u2dL3X5jHJafA64_DEHAxqcnZlHY5MK4WDT7W9nEuZEUoWEsoeRpnUfD3MvIasgPsqa0RU6yHMtlYPgPOqoGxxb4J5omg4KkVlPsDfCdgY0KkMIhcOHUpdQ8RPP5HEefuLZwbHNU3F3r_cKMa3yw-NzJ6lrjONPJFBT1BG4GhJIYxLgY2A3vc-DdD-R548R_wMJnK26NKTsKQvdUW4O4rypLtu6ooVsgkV6cIDkWOadqZLQeDq0g7rNzUIMSWBeOZ1nOjtgNx0cvgkGV2T1G98EM126Af3xgDRwweur7vMqFRLqtSfMxVPQ3o5ZGIwU6uYuBXbwuXSih7QT9u_5KaBC6MyQNu-y501BD3Bj1zliBSX2HXj6wZR9c9vzjbXUkoLFO1AcSEoB65Xceqa21AaCqlqUVLuV7tl_bfiKXPtk5a_QFb324iDxQ9_33Ku3azf0fTeMYBS4bgiDMAtITAmOSZD5NIHwil1DF4ZuCGPPD7zQXcbQ9RJMwiD0SLSKiRO4dIdYsdSGv-Rie2XeKL72Ai9y_asCZbSQ5i8OQNiQAp1wcyWuzYvIWb2VTuAWTCrZDaGYKsyfKbA9wg2wryieeDfQcofbs9-U7F91by7WOviYV5VJe04PbGtGKMi5AITqaGOSipRXtSiuf_-b1I3o79fwvwMAAP__JbMBzA">