<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/117958>117958</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crashes with Template-based Type Checking and Array Size Deduction
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
iamanonymouscs
</td>
</tr>
</table>
<pre>
This crash can be observed in both LLVM 18 and LLVM trunk versions.
([https://godbolt.org/z/Wzne5GvzW](https://godbolt.org/z/Wzne5GvzW))
# Command
`clang++ bug.cpp`
# Code
```cpp
template<typename A, typename B> struct check_derived_from {
static A a;
static constexpr B *p = &a;
int ar[p-p+1];
};
struct W {
check_derived_from<W, int> cdf;
};
struct X : W
{
check_derived_from<X, W> cdf;
};
struct A { };
struct B : A { };
struct C : B
{
check_derived_from<C, B> cdf;
};
struct D : C
{
check_derived_from<D, C> cdf;
};
struct E : D
{
check_derived_from<E, D> cdf;
};
struct F : E
{
check_derived_from<F, E> cdf};
struct Z : W
{
check_derived_from<Z, W> cdf;
};
```
# Version
```sh
Ubuntu clang version 18.1.8 (++20240731025011+3b5b5c1ec4a3-1~exp1~20240731145104.143)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
# Error Output
```sh
Stack dump:
0. Program arguments: /usr/lib/llvm-18/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name bug.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -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=/home/bugs -fcoverage-compilation-dir=/home/bugs -resource-dir /usr/lib/llvm-18/lib/clang/18 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/x86_64-linux-gnu/c++/13 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/backward -internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -dwarf-debug-flags "/usr/lib/llvm-18/bin/clang --driver-mode=g++ bug.cpp -dumpdir a-" -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/bug-6eee06.o -x c++ bug.cpp
1. bug.cpp:21:31: current parser token ';'
2. bug.cpp:19:1: parsing struct/union/class body 'D'
3. bug.cpp:1:41: instantiating class definition 'check_derived_from<D, C>'
4. bug.cpp:3:23: instantiating variable definition 'check_derived_from<D, C>::p'
#0 0x00007f3d308e5b46 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib/x86_64-linux-gnu/libLLVM-18.so.18.1+0xd93b46)
#1 0x00007f3d308e3af0 llvm::sys::RunSignalHandlers() (/lib/x86_64-linux-gnu/libLLVM-18.so.18.1+0xd91af0)
#2 0x00007f3d308e6210 (/lib/x86_64-linux-gnu/libLLVM-18.so.18.1+0xd94210)
#3 0x00007f3d2f735090 (/lib/x86_64-linux-gnu/libc.so.6+0x43090)
#4 0x00007f3d38201939 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x10b1939)
#5 0x00007f3d382012fd (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x10b12fd)
#6 0x00007f3d381f8f0f clang::ASTContext::getASTRecordLayout(clang::RecordDecl const*) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x10a8f0f)
#7 0x00007f3d37ff6eb3 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xea6eb3)
#8 0x00007f3d37ff380a (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xea380a)
#9 0x00007f3d3803fd62 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xeefd62)
#10 0x00007f3d37fdb4a9 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xe8b4a9)
#11 0x00007f3d37fd7184 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xe87184)
#12 0x00007f3d37fd7c48 clang::Expr::EvaluateAsInitializer(clang::APValue&, clang::ASTContext const&, clang::VarDecl const*, llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic>>&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xe87c48)
#13 0x00007f3d37f4ee53 clang::VarDecl::evaluateValueImpl(llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic>>&, bool) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xdfee53)
#14 0x00007f3d37f4efa1 clang::VarDecl::checkForConstantInitialization(llvm::SmallVectorImpl<std::pair<clang::SourceLocation, clang::PartialDiagnostic>>&) const (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xdfefa1)
#15 0x00007f3d386b1d4d clang::Sema::CheckCompleteVariableDeclaration(clang::VarDecl*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1561d4d)
#16 0x00007f3d386b0a48 clang::Sema::AddInitializerToDecl(clang::Decl*, clang::Expr*, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1560a48)
#17 0x00007f3d38ca5969 clang::Sema::InstantiateVariableInitializer(clang::VarDecl*, clang::VarDecl*, clang::MultiLevelTemplateArgumentList const&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b55969)
#18 0x00007f3d38caab19 clang::Sema::InstantiateVariableDefinition(clang::SourceLocation, clang::VarDecl*, bool, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b5ab19)
#19 0x00007f3d3850e33d clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x13be33d)
#20 0x00007f3d38832583 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16e2583)
#21 0x00007f3d38832aef (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16e2aef)
#22 0x00007f3d387f8eea clang::Sema::MarkDeclRefReferenced(clang::DeclRefExpr*, clang::Expr const*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16a8eea)
#23 0x00007f3d387f887e clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::NestedNameSpecifierLoc, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16a887e)
#24 0x00007f3d387f8765 clang::Sema::BuildDeclRefExpr(clang::ValueDecl*, clang::QualType, clang::ExprValueKind, clang::DeclarationNameInfo const&, clang::CXXScopeSpec const*, clang::NamedDecl*, clang::SourceLocation, clang::TemplateArgumentListInfo const*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16a8765)
#25 0x00007f3d387fc923 clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x16ac923)
#26 0x00007f3d38c7ee22 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b2ee22)
#27 0x00007f3d38c76adb (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b26adb)
#28 0x00007f3d38c76adb (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b26adb)
#29 0x00007f3d38c8193f (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b3193f)
#30 0x00007f3d38c61850 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b11850)
#31 0x00007f3d38c6151c clang::Sema::SubstType(clang::TypeSourceInfo*, clang::MultiLevelTemplateArgumentList const&, clang::SourceLocation, clang::DeclarationName, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b1151c)
#32 0x00007f3d38c9a9a1 clang::TemplateDeclInstantiator::VisitFieldDecl(clang::FieldDecl*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b4a9a1)
#33 0x00007f3d38c64e96 clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b14e96)
#34 0x00007f3d38c66c50 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1b16c50)
#35 0x00007f3d38d1501e (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1bc501e)
#36 0x00007f3d3850e33d clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x13be33d)
#37 0x00007f3d38d06611 clang::Sema::RequireCompleteTypeImpl(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1bb6611)
#38 0x00007f3d38d05dcf clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1bb5dcf)
#39 0x00007f3d386c071e clang::Sema::CheckFieldDecl(clang::DeclarationName, clang::QualType, clang::TypeSourceInfo*, clang::RecordDecl*, clang::SourceLocation, bool, clang::Expr*, clang::InClassInitStyle, clang::SourceLocation, clang::AccessSpecifier, clang::NamedDecl*, clang::Declarator*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x157071e)
#40 0x00007f3d386c0550 clang::Sema::HandleField(clang::Scope*, clang::RecordDecl*, clang::SourceLocation, clang::Declarator&, clang::Expr*, clang::InClassInitStyle, clang::AccessSpecifier) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x1570550)
#41 0x00007f3d3873725c clang::Sema::ActOnCXXMemberDeclarator(clang::Scope*, clang::AccessSpecifier, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Expr*, clang::VirtSpecifiers const&, clang::InClassInitStyle) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x15e725c)
#42 0x00007f3d37d139bd clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xbc39bd)
#43 0x00007f3d37d15ce5 clang::Parser::ParseCXXClassMemberDeclarationWithPragmas(clang::AccessSpecifier&, clang::ParsedAttributes&, clang::TypeSpecifierType, clang::Decl*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xbc5ce5)
#44 0x00007f3d37d100c1 clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xbc00c1)
#45 0x00007f3d37d0d92d clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xbbd92d)
#46 0x00007f3d37cef20e clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo const&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xb9f20e)
#47 0x00007f3d37d9fb00 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4fb00)
#48 0x00007f3d37d9f843 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4f843)
#49 0x00007f3d37d9eaa6 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4eaa6)
#50 0x00007f3d37d9ceda clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xc4ceda)
#51 0x00007f3d37cd5c7e clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0xb85c7e)
#52 0x00007f3d39b0d415 clang::FrontendAction::Execute() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x29bd415)
#53 0x00007f3d39a87674 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2937674)
#54 0x00007f3d39b8769e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2a3769e)
#55 0x000055e36f311c62 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x12c62)
#56 0x000055e36f30f095 (/usr/lib/llvm-18/bin/clang+0x10095)
#57 0x000055e36f30e256 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0xf256)
#58 0x000055e36f31baf6 main (/usr/lib/llvm-18/bin/clang+0x1caf6)
#59 0x00007f3d2f716083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#60 0x000055e36f30bb0e _start (/usr/lib/llvm-18/bin/clang+0xcb0e)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkfE1z2zqy9q-hNyiqSPBD5MILWrLOuN5kkjf2TVyzcYFAU8aYXwOCjpPF_PZbTUrih2hZzjDn3lP3VEqHIqDup59udDcgyqyq5DYHuDS8K8NbX7BaPxbqUrKM5UX-IyvqilcXcSF-XN49yopwxapHwllOYiBFXIF6BkFkTuJCP5IPH75-JHZAWC7aa63q_Ik8g6pkkVcLw4oMGhje1aPWZWU4kUE3Bt1sCxEXqV4UamvQzU-Dbr79zMH74_nnN8NbGzQ4fzoN8R-qcciqyDKWC3znWzxl-dagVwa9InG9XfCyNHwLx_aTBbQz2384bkUasjJlGgxnpX-UkLMMSGTQFTm8uzKca1JpVXNN-CPwpwcBSj6DeEhUkRFjeUUMKyKk0kxLTiLCDGd4ixd5peGlVOSKGDQqieGsiUH9ZmI7U-aaMGV4V6VZGvTKRlZaKcZyf7XD8A1VNh86RmM4q28IXuYaUXORGM7VQUgn454YTkS-NSMnZN2jrG8nJUUtAaO7V4386bFVM3b1lu4V6r46qXvdSFq9JWmNklYnJV03ktZvSbpGSeuTkjaNpOtO0qSgDQq63gsae_gf53nnHye8c4jyLv6_tmu0P1g9Glb0X3Gd65o0y2e_kIkdLOxFQHAtNyuKWtS1lo5tUc-ybYNeObEXe9wG7jLHtP8NL6X97_0k2_Vsy13YrtMu1TumtqDRppfAf_Bds-RmKvP6xdzmNY4_KmCCZIWAFGeVRSVfDCu6ySvN0hTEWiq8b9BNXSmDbmKZT9t4rVShyKdal7U-MvRWM_5ERJ2VmGisyFqQ5r_PqtgqlhGmtnUGua4GulIZ42v6nJl2sNNNNy1bJuc2MbWSZQpTthETMqnNIv4nMTMFKXsxWZoSEzEIqQgziSlkxeIUzEQBEJOnwJTJKm3GkBQKzJjxJ8hFN69B8gxKJhJUc5szJcxnltZgYsKqiJkxmZuJTNsb-2zYYig407LIzYZtUkpOzFJyM4VnSAlt38jKLCUQM0sUy8AsC5lrUIazbtAnGdOPJiiVF8RMktLkRa4V49pw1kVOzCQvTFXUuZD51sS5xMyaFIjBXSiTpZJVCDOp8-8yF6ZGwyrDWVNi6iZWTF7WSKjpu8TUdQ7NjS3koBCwgLjebkHhkMy3hrPeipiYSXPf5EVWyrS1UmDkrA26eSwyQO_VW1TMi2dQbAtnzFVQFbXigMOvR0X7fleCNnZAzIaynKWmrH5UGrJh9NLNYnH42JZzg2528dMtDLqxnf3E0YvMeVoLBMnb9dlM_tOUTnzqfwRHXynKZvzpO1PilP63HNfJPyml4Cw9b-oMBk_MPVYML3jBjwG87rbTn36_imYFlgo40yDMjHGFCQIwJ5upzKQmdkjMZJvX3NwVGsNZuwu6sImZVE-yNAuhzKbYmTI3t1mCa_XlxYQXDiUuUly8gze8SAtlCsm2eVFpyStiiu9MJW2OMJOUbStiUHpePjcFVljVJEfMKsN2sp-4DUqJmTAhVCW3xFw_PPyxWj38Lfp6_bD-Fn3Z0IfV5uYhuv1oOGubmAWSpbOyTSumDwCWvyiI-UL4qGe1IntXmPZ3nIjahhM5-EJ4rRTkmpRMVaCILp4gJwZdYt2nS8OK6KL3QTvEl6aoMlXJfLvrZJGOHPlvTK8qghsAFLNuhThHEFCI20iSWJZzLZlGee3HBSQyl-gUFHK6DWs1uH2YDtroHAt_ZkpicXiffCcynKhs1RCDOhaxXizLspaJIxwrAC92fYIR0M6sflTtxWclc910CXeKcTBo0E1S7PtDUWkFLDOov--xadi2SLuomlioqYxxn2TawaIqFthWGfTKehGhE7t-2x4hRHsE0WGJNQXxS53fym3O0r-xXKSgqkb9r6OwWWJ1KOgIhU9t65dFu9TuiXZ6ommydDwrPEc0R6F-I9F1rLAn0O1jDahlh86ehlMLvZeIUTwue5OX5QC7bcUordPljXXRRMyoiyai0-UPdNlJkFhJ25y3ERDd3q2KXMOLbt9vQUe3d1-AF0p8YD-KWhs06M1vR9bA03YfatAIA6a5ns0Ghig7G5Z9G5ZJ4kPszKQLGArrVAUjVU5gsdlUobBOVTjwjOUkwqdzqQIUdjjYsK2hVSJ22VzBDQEK61TZI1VLO3BnU4XCOlV0rIq7QT-0r19KtbvC7QzTEFU3mPVZKn-CGsZ19Pkrbnl2yXhygewDfjzjK1Oj9bDq5drbjKXpV8Ctyk1WpoazqrTY1RSGW4RVT9Rtszf4sNtUjfR8Zgqxrw_NSVOcrneA4qJI516JECCnHePOkHEXwHMmmGjfwI70htfG9H4B_CvTIhI0vKPFHdOSMPtVWppmY1OoVdG2JoeI3Nn2p3M0OzcJsztuhrXOj23hij6yW8hYe7VCYlZFVqaAQdN2asgbU3tqJjhty89MhcfzEV4H3h-Bt9gww3TgIyF6qeWuaLH1AR_Qro5yVHt3H6mz2YJoO1sGRTTgzAv9cNqWm0PPfHDDq2mz74appHg88LFOtfwAz5De7c7Ko91B2QdZ9XPsbEzEHtraMRGMmGCxfT4T68POYUjEyeU3JKN19Pj_M5qLBnXmDvsMzwLHeWUFqjr_JvXjbZ0kkkvYbV5uy3bzctLYLmkldc7x7oOCxHBWz4Xc9bZhk3BmM9OJ0ZCDmXTQ4wSBQ71gribR9gGldbrssS4GyYy6GCSdrkGXEyyTAIBNu-8jU08YZl8g-QIJKMg5iOMk9AWSXtYZ5aJBUz-XRQwxdxY5Y4uCJUxbdFXLVAwwD3NPWsN0kvn_NUvvfpQwYWHzqf8nczEa61Wav7MMbvKkeK3h-ztUGgTOui2BNyfnHwo-nsQyENPoTuaKqazYBzOzZ4IldJ5xx55Z-t5fyjOr-_tbXpSNXwb9-F_PMUvf6xzjjRzDQ-q84ZgeY8cOmuJpzOV7FsTrlJ4YOoPQ2Yujz5C6jthhh8eXAHSuTbgdU5TW6Rp1YEufiXg-XSit0xX8ibqGDQYP7NCZrRrGDko76BqevQbctwPPmk2XjdI6XfZYl2fz6UV3W8eVbrNaf5XhnTalYFj_B63w-UlqtGh_R3tpIw8dS8P-hIcsHG5-96Yhsq6fLnYnM19lJfVGQiqOd0y923Pm1thFiJ0BzsjNLoT-m9uBVcqq6h07gNX9fXdyehwJbwz_WqDs5zZNyuGEYV9gZw8L5K1j1R2x6nPPOo_Vadjv4fp1KacL0Z9EFFLRETUs7cL2LBtm08VRWqfL_z-xFRx-XxAIy_dte9rML_CvWirYnzphwt6dVJ4bbK_0s71jrZ7siea2m4gTdgd0oGZOeTFS0BEUjAjyBE_OJuh_AzmzHg_FaH5HzrCd8bm1tF_ZnjYnlq8Ur4lC_DYxbzUMp2rEsSP250vTx429uzd5kzJvcqlv9Y_0yF2nXBxxDlV12Aef3_3vCSpmjnVviQ47uNO1xu70XitE7XfgjT9HMY5bpf_UG6-YPi7av-ShIyfMyabXq1busCdeOkvqvdITR1x_ylf39x8hi0H1TT6D2tNRdcRfV3I-1s3Tf5FS7MeXpupM1PnPTLEMNCjsnlC5c32WF75KpQ-YqtfarmNfzecNQL47bwy_ARW2E8Zi9LUPpsvuenV_34AbOuWovTpNfyNJRForGdcaqmMKjvSKPfWnThE-t48UNadK0c3Np_ifwOc9V4k5MtTx54z48zh4v8YfNkufFdtmrHqDykmuTrLZVIW9gImqMfsWKeZIREeTO6LJsrj9Fk0tQzvY_L0t_FtfZk4xVufNL1NE-yTV72YIOegY8oYMWSKkbyxEjKJeVPSZ0cXTzvHFE-RTbdFbxQUFz7UqJ3LBRGPRl71HsH-u6AzvzeaXGJnv_DLY8Cw5JNSCk5T0lnSX6Y87u99M8K8Tu5v5oa1yO6L3ZW5Up7IylVw251Y5y-AgdTZnhEh354zhY1wiTGLLetMZn9Rmt4tcQ3Kze3R46JAz69GbM3a1Z9q3v63F4i7y0LEUjFkKXOfckB2QNfk19W_h6s3ubUauArc7vXfDEVfAmH-Sq-uXNoBe7Xx-Fz_zMYA2HhjwrBEDHAQ7ycBdUTYHicc71k8l-1cNn_XouSKc-Icq6rJpp68nzqO7L6ALUadwk5WF0reaaZg1t3MXjetMHz5pyIXHl8e5Pbq9G7UdiLb_aNjcB3xxgEA6mIMePYwt4dqDHnOjMO_mImrW7X77AbxG-oL5cNEwRtUdsEHzG7Jg6S_dwTFq81smUO35LIcBtB3a4Xn90JI5fU9DB-F14N0hq8HSD2G4gWtgdjY8F1NN6JGNc65VyhyE1YHed4meB46fOLbNfUo4tx8yJodP_vX3r4-s91TGbqc6uEdX5LmQ4mzsrf3NhpLy3mPCnj_EZyVW6L1PnmWFvQhbjuQB9XbpeW_xvlV_ZO12e_Ts7F1RpMcP377PxoR6vXwZjFwQs8QnCOZ9dnKW9ISGwx8j2L4VOOThAQPjodJM6YeehjN_nkBdq_fEkW-NqIxjC0gr_F3IeXzoyHq_Z70Ql44InZBdwKW9dOjSp2HgXTxeLpdh6IaCWtS1ueOx2AU75nYcJpYXAHcu5GUzZtPAcizH8hYhC5htUzdkwl4GLDFcCzIm0wViWhRqeyGrqoZL216GXnCRshjSqvljApTm8J00owalhre-UJeNIXG9rQzXSmWlq06MljqFy5Vi1SNU5LvUj2TfbZsxq0AQbGxJc0Yr823zJwaaZUVu5U8gaxB1k6cuapVejv5egNSPdbzgRbbjck9pqYr2TGLTwKwMutnZ8XxJ_zsAAP__tSubSQ">