<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64454>64454</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Stack dump on out-of-line definition with parameter-dependent requires
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
JohelEGP
</td>
</tr>
</table>
<pre>
See it working on GCC: <https://cpp2.godbolt.org/z/8955nnEG4>.
And failing with Clang: <https://cpp2.godbolt.org/z/eKGa6Gcc8>.
```C++
template<class> struct Q {
auto f(auto r) requires (r());
};
template <class T>
auto Q<T>::f(auto r) requires (r()) { }
```
```output
Step cmake returned: 0
-- The CXX compiler identification is Clang 18.0.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/compiler-explorer/clang-trunk/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.4s)
-- Generating done (0.0s)
-- Build files have been written to: /app/build
Step build returned: 1
[1/5] Generating main.cpp
main.cpp2... ok (all Cpp1)
[2/5] Scanning /app/build/main.cpp for CXX dependencies
[3/5] Generating CXX dyndep file CMakeFiles/main.dir/CXX.dd
[4/5] Building CXX object CMakeFiles/main.dir/main.cpp.o
FAILED: CMakeFiles/main.dir/main.cpp.o
/opt/compiler-explorer/clang-trunk/bin/clang++ --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -I/app -O0 -std=c++2b -pedantic-errors -Wall -Wextra -Wconversion -Werror=unused-result -stdlib=libc++ -Wno-read-modules-implicitly -MD -MT CMakeFiles/main.dir/main.cpp.o -MF CMakeFiles/main.dir/main.cpp.o.d @CMakeFiles/main.dir/main.cpp.o.modmap -o CMakeFiles/main.dir/main.cpp.o -c /app/build/main.cpp
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-trunk/bin/clang++ --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -I/app -O0 -std=c++2b -pedantic-errors -Wall -Wextra -Wconversion -Werror=unused-result -stdlib=libc++ -Wno-read-modules-implicitly -MD -MT CMakeFiles/main.dir/main.cpp.o -MF CMakeFiles/main.dir/main.cpp.o.d @CMakeFiles/main.dir/main.cpp.o.modmap -o CMakeFiles/main.dir/main.cpp.o -c /app/build/main.cpp
1. /app/build/main.cpp:5:39: current parser token '{'
#0 0x0000000003377ef8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3377ef8)
#1 0x0000000003376024 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3376024)
#2 0x00000000032c9928 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f50ed7b2420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00000000063dd2fd clang::LocalInstantiationScope::InstantiatedLocal(clang::Decl const*, clang::Decl*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x63dd2fd)
#5 0x0000000006412976 clang::Sema::SubstParmVarDecl(clang::ParmVarDecl*, clang::MultiLevelTemplateArgumentList const&, int, std::optional<unsigned int>, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x6412976)
#6 0x00000000064810ee void llvm::function_ref<void ()>::callback_fn<clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&)::'lambda'()>(long) SemaTemplateInstantiateDecl.cpp:0:0
#7 0x0000000005a5be61 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a5be61)
#8 0x000000000642c8ca clang::Sema::SubstDecl(clang::Decl*, clang::DeclContext*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x642c8ca)
#9 0x00000000064656a9 clang::Sema::FindInstantiatedDecl(clang::SourceLocation, clang::NamedDecl*, clang::MultiLevelTemplateArgumentList const&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x64656a9)
#10 0x00000000063db0c0 (anonymous namespace)::TemplateInstantiator::TransformDecl(clang::SourceLocation, clang::Decl*) SemaTemplateInstantiate.cpp:0:0
#11 0x000000000640f2d0 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformDeclRefExpr(clang::DeclRefExpr*) SemaTemplateInstantiate.cpp:0:0
#12 0x00000000063f0505 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#13 0x00000000063f921a clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformCallExpr(clang::CallExpr*) SemaTemplateInstantiate.cpp:0:0
#14 0x00000000063f0716 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#15 0x00000000063fb4f5 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformParenExpr(clang::ParenExpr*) SemaTemplateInstantiate.cpp:0:0
#16 0x00000000063effd2 clang::TreeTransform<(anonymous namespace)::TemplateInstantiator>::TransformExpr(clang::Expr*) SemaTemplateInstantiate.cpp:0:0
#17 0x000000000642046f clang::Sema::SubstConstraintExpr(clang::Expr*, clang::MultiLevelTemplateArgumentList const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x642046f)
#18 0x0000000005bae5b7 SubstituteConstraintExpression(clang::Sema&, clang::NamedDecl const*, clang::Expr const*) SemaConcept.cpp:0:0
#19 0x0000000005bb0ab3 clang::Sema::AreConstraintExpressionsEqual(clang::NamedDecl const*, clang::Expr const*, clang::NamedDecl const*, clang::Expr const*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5bb0ab3)
#20 0x00000000061c5ed3 clang::Sema::IsOverload(clang::FunctionDecl*, clang::FunctionDecl*, bool, bool, bool) (.part.0) SemaOverload.cpp:0:0
#21 0x00000000061c65e2 clang::Sema::CheckOverload(clang::Scope*, clang::FunctionDecl*, clang::LookupResult const&, clang::NamedDecl*&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x61c65e2)
#22 0x0000000005c7bcd8 clang::Sema::CheckFunctionDeclaration(clang::Scope*, clang::FunctionDecl*, clang::LookupResult&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5c7bcd8)
#23 0x0000000005c83845 clang::Sema::ActOnFunctionDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5c83845)
#24 0x0000000005c87440 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5c87440)
#25 0x0000000005c87df8 clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Sema::SkipBodyInfo*, clang::Sema::FnBodyKind) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5c87df8)
#26 0x0000000005911040 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5911040)
#27 0x0000000005a0f15f clang::Parser::ParseSingleDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a0f15f)
#28 0x0000000005a16d31 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a16d31)
#29 0x0000000005a16ff3 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5a16ff3)
#30 0x0000000005944990 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5944990)
#31 0x00000000059136e9 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x59136e9)
#32 0x000000000591545a clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x591545a)
#33 0x0000000005904eaa clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x5904eaa)
#34 0x00000000045445d5 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x45445d5)
#35 0x0000000003dff591 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3dff591)
#36 0x0000000003d8045b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3d8045b)
#37 0x0000000003edf473 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3edf473)
#38 0x0000000000bd7205 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xbd7205)
#39 0x0000000000bd055d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#40 0x0000000003bd0f49 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
#41 0x00000000032c9d53 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x32c9d53)
#42 0x0000000003bd1169 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
#43 0x0000000003b98f67 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b98f67)
#44 0x0000000003b9991d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3b9991d)
#45 0x0000000003ba386c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0x3ba386c)
#46 0x0000000000bd4e61 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+++0xbd4e61)
#47 0x0000000000ad1371 main (/opt/compiler-explorer/clang-trunk/bin/clang+++0xad1371)
#48 0x00007f50ed256083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#49 0x0000000000bcfd5e _start (/opt/compiler-explorer/clang-trunk/bin/clang+++0xbcfd5e)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 18.0.0 (https://github.com/llvm/llvm-project.git 08dc847d55fbdfa7ff6cb8034633139df0199562)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-trunk/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/main-2fcea8.cpp
clang++: note: diagnostic msg: /tmp/main-2fcea8.sh
clang++: note: diagnostic msg:
********************
ninja: build stopped: subcommand failed.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1934yiy_zTKC8c--mtLD3lwnDiT2fQm28nd7rccBCWbjQwaQOlkP_09IMkW8p9Od9yzO-feOZ6OjQr41a-KokCAlWJLDnDuJRdecnmGa70S8vx3sYLy6vr-LBf07fwBADGNvgn5zPgSCY6u53MvmiEvmq-0rpQXzbxw4YULUlXheCloLko9FnLphYt_e-EizZKE86vr2Iuuxp5_6fmzGaeowKw0DX5jeoXmJebLH2kU_naNJ9eEpNtG238nfvOZe-GF-dhSDeuqxBq8aE5KrJQXXSGlZU00-gfypq0UQrjWAhVemNov0gszJOGPmklQyAtT6YWpF2bmE7V1vOnl5nvXC-q6QY9edOW0_Q8vmtvCaOZFs_f0ZOAh04ur3uCnqHVV66bwQUOFyBo_A5Kga8mBGmrbKqMRelwBmn_9iohYV6wEiRgFrlnBCNZMcMRUYxAUpGN_vK13CRqINkZzas8ubhDjhXivHBohKjhsxOcrIM-oEHLjZP1q1ivChai08Ya2cASvVSkkSFNmoI60rPmzFy5yxruyxgHQCKlnVlVAj-NDBWBdS1DvFNvRQvCCLWtp5M0DY0V_HCtjxU7mGjhIrF0R3xG5qFlJUcFKUGiFXwDlABx9k0xr4EiLlg5cVUZZI9wzuv3tGD1o_SS5CLxwkXjJZR_EGjM-JlXVCHW_wvF4jMSzQYfLEs2rKtgg3DQXds09EMy5aWyAKlx07VnTGgopVMApcMI6lr3kItqDywq_cQqVZQLNP-FnWBhOumYpM6aff_06pnTTVNw1ZUnsGhL5v4Dog210KMet_y5mN7dXl4a779dAbdcfcs_RkpCRFqIkK8y4F10ebc4IK44rtRIaodFNwzoa3flopDT1okvSNBzmaFQBxVwzMgIphVRo9MUYdPQFXrXEaPSFCP4CUpkxP_piZbzosua1AjqSoOpS20ZLlnvRZcly0mH-wsVIAqajtaB1CWrE1lXJCNPlGxp9ukSjT4_voW_0afEOsTFFXuy_Q24t6BpXaCTe1Tc57LGNWe9vr2YPV0jV-ZpphFFeL5GESkiNtEDuNLVkelXnYyLWXrgoy5fuz6iSwrifFy6YUrXFgzCniHFS1hSQXgEiEqsVyjF51hIT8MI5qiRUUhBQCihSopZNsamJlRKEYQ0UyZojRSSr9LiLApg8I1qvK4PMFvljhO6lWEq8Rlgu6zVwrT4eVD_gtf_vtL_QaYMxOiISzRIvmkWZsT-ppQSuUYWlAom0eAaOvHBq0qFw2mYtXhj5yH_1u_-iaDqFIkXWxW0Oo95U8-VeMq6tAz42XpxuhST-9iSUloDXXjgxnsy4tsmNSXN-3g-98MJ_bTFt5igDOhiAnvhhvA_0vATM6-qOP7Alx6UXpjW3STFFpTC9nAyiQeBADB2IIcmyMEVzEwo-AxEvIN8aTL9hTk0eFKYtZ47MXHANr7q1rm__33QRtV1Mi8QHOs3DOPTR05MEpYWEJ6lb5cxYCRev6eRpEo9KxuvX0ZLXzYNKr8ygGSsx9q0uQRyHvqNJ3NdkElEaFhSRNqX3otmtILi84UqbcW1TzAciKmgebsuBWkEvTHt1L4GUiAiutBfOjOMMntnS0xipRe6oljiqxUGYTSd9CA-wxu23Olf6Hsv1P7FsgPXVcB4M9fhUl5rdwguUj-0KYtYG6lumdKf9dtjMkQ2apqqoDJ249KL5xnGNTHRlxHIhyu3fE7HUkOCwNHFZSgMfAL0IRntDrqg5MVifJBReNLdP20VOtxwiuCzNLPhU8GYFdYDlXXr382pK2_HxAdKzRt4LpyVe5xSb4LjBHaZdmDAYu5Z6Pm0w7B-c0z5pCU5ymAT7XUvW_AvTq4e6KBhh0EbZh6qJsv0qNlEwo8gwbRR-L_8nco5WDcc5Utc5QpISfGQI_cnGPdGYsFo5ameu2pNkgrP9ai8Yp_0ouMvArl17D_-O112dDwSW04YIq-120RhGgT-YI3Kf-HaFyQV_W4taIY7XoBqfbofc7nAyuZ59IjFXhZDrH-SqN2McGK-7Y9WgD1xj-kVI_X67jxJgg8mL5j-l2NUe3T5DcfVayd0BsXnw48qErikKP_GTX67MrhY_Cz8awM_CAP9y-HNclrsqbEt_XI14aIVpMPkLWSEZwM_j4tc70T2WwHd16BX_uCJu7hJBUdDwL2SH6WB29eNJcWR2nZuQLzHj-giE__BUalRw5g4ng0hyDEk-RVYdpmsNrk6glI376ZCEZp7bN3EeWl-Y5nrPGsvMBSdQ7VlwGaSZizT3cR7tt8ZM7sWtrv6oh0ugH8X5QSVPkgc2qvetGLoZQEASoAe4uVF3LyBLgalLxKJNYfcnO3ueuusfJ8kZV1hqs6JtrNp1uNesYTCAPkkg3A_dvsvYj75Z874HtrN0Fs919bnZ1urnawcTwNNnc42-ji2dFCIh05zQ9AghfR2xbBOzk3Lj6H1a_Vv1HP0jV_80SuPkwDgn-o4P9RfyXer3xYdGP7r8eXyroMmDb3gh3sXcdqH4qdY4L2EmJX77bNeK_ZbbOeAeS7wGDdJMAqaD_obDySaDllmH-nhA_TSO_f3UNxtnH-X8FMScjA2jrMNGMmSDFgcGonXEB42lviu2_lj850iZH0hTnll1Iejbfs_trZq5kfob4_SU_NLCHehOdphkQeC73nZvN89733vUMs52I50RYnx5bGjvtEm32WAhDs0C_Vq3DecK6EzrDemnoqlhwaFpsJflF0FSHFXpgfHldmwywWeFBtnpubvcbbjaBLwT8dUa4vPs5uYub17TDcWG2wl7abc0s7zWoHYlZoSAUg8VEFYwkKfbarMsO2ZwE2UcTGgUHGWqI6pniDtpoeKS_XvPRP09W_wX02XZcOjKhnQVRXSUrh5NNpIyvvzC9Orn3Pa_mqqicJJ39yVgksVxlh2PgwdTvV9Py_clhn2cMDZaZhzqgsEUEk0gO0rd1asGyXF5kMJTUNALf8aBTjs_GBUdDsIBB0mc4OOBSVR2z2F3f_euwn_UcK-lm2oYwWspTFZb2PRix-abzOGTff1_s66E1A_ajtvTZayNbo7y7mIh82PAu8rPHh4P7ln8klVNg8MB6qTWcRLHCXVWNXNB4Rr4zCY43e4BkFpDW2RfJ50EXtu7A8_JdSNaFEnmzG4LaQIKp3vwnRBZ27GDbOIiS_04yV3imr6a3TwC-7k7rMrp_LMF56B3krcIaBFPI3eHyOLcKvGyCZzpMSVPF1JaUA5qJ9fxczoN_QQREjytsWmjd_ikvzZZ4d5mV7sKccrCuX1xfULwDTQHezbA7icJRR3N8-DRjvOeBg9rXJb_BKKFvFlX5V5FBusy00Y7wTp7tFSyF5B7t7li96RPTv0izk75Gr_pu_WWeTAX6zXmdDhQ9xpu34GHHj9aMr5sI39j1U2Fpyfy-hoEzY8cK0aelBVvWXSETcGTlphp1T0eNIfL0ni_kL3nRqS332g9p-HcVvneyYHfRb7fHsHwhBBNop4p9p0Dap58rvkDLqB8c-j8U04AtDD77h6HA78KgomTAf2f84vBBvRBB4hc4rK0mEwPEmcNhnemvo5NJ1YPKhqBQ-vkI6LD3eaNbh_3okZXx4viARlZFtAfJeN3kavDTPwu8p1zEceC8Mb4FWbG7u3hrPeS13rIr6PQMORQ6GZQOY7SCTkE97L33ckA9kz9h6j_Eyk8UfRqOHFImwwm63hzTqtLNTrQNmrM2jH__an4NMlF3D9vZfA66ZyPaRBNA3vT4yQdNu05HabOKdMwmfhphJ6eSpabkIqlfur1fuyoKRkrMZ7YbsLYT91JZJAzkYImgJr2T8OkbXHTZf9xNEPtOfNZY3hUtPk5Iq1HFpiVQJvLbPDKjKEpoCCyVq4VoNEL0gIpAMR6-XO_M9Sdam9uXZmKP3bHYLxkGvkpJWk8pUlS5LTA06KYkDz1o3gSRUGU0cIPsiyZbF_nPWK5BJM3oNYoNX_m4hvvGaeRs8eA0VpQKI10JRR7bR7ZjL8sgV6yn7mutY9vLrRZJSHK8JILpRlBa7W0jbce8YFP7yZTe8dj9vg4m_-GHn-7Qou729u7Lzd_v0aLm9urB_R4Z4sv_ucafb66v_v86HU3K-733dFIlRnaB-9pbAQkIJswAEVYb5p8PwvhQq-r9mj_KCwI4HR7CeBjzajVz5nkRIbhjP8Lm2ab22xKC3t5L5ohVefueBsPbkGe0fOIZlGGz-A8mGRB6IdpnJ2tzkkcxj6dhGnqF0FBCU0mWULS0IcihjALz9h56IeRn_qJbxZC2ThMpkWaApkUQCIyTb3YhzVm5diMuLGQyzN7n-d8EsdJfFbiHErV3aOV53ZY5vVSebFfMqXVtppmuoTz7UUdJDgStR6Jwow4QHTz4qiJJlX37mzUXZ_Tm5uiZ7Usz3_-IpLF_r8BAAD__3kfajc">