<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/96498>96498</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] Crash with performance-unnecessary-copy-initialization
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          VReichelt
      </td>
    </tr>
</table>

<pre>
    When running clang-tidy with `performance-unnecessary-copy-initialization` on the following code, it runs into an assertion:

```
struct A
{
 A(const A&);
};

bool operator==(A, A);

template<typename T> bool foo(T t)
{
  A a1;
  A a2 = a1;
  return a1 == t;
}
```

```
clang-tidy: /tmp/LLVM/llvm-project/llvm/include/llvm/Support/Casting.h:662: decltype(auto) llvm::dyn_cast(From*) [with To = clang::CXXMethodDecl; From = const clang::FunctionDecl]: Assertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed.
```

This is a recent regression betweenn June 5th and June 24th.
I suspect that commit 415a82c64af is responsible for this.
@legrosbuffle could you please have a look? Thanks!

Stack dump:
```
0.      Program arguments: /LLVM/bin/clang-tidy -checks=-*,performance-unnecessary-copy-initialization bug.cc --
1.      <eof> parser at end of file
2.      ASTMatcher: Processing 'performance-unnecessary-copy-initialization' against:
        CompoundStmt : </tmp/bug.cc:9:1, line:13:1>
--- Bound Nodes Begin ---
    blockStmt - { CompoundStmt : </tmp/bug.cc:9:1, line:13:1> }
    ctorCall - { CXXConstructExpr : </tmp/bug.cc:11:10> }
    declStmt - { DeclStmt : </tmp/bug.cc:11:3, col:12> }
    newVarDecl - { VarDecl a2 : </tmp/bug.cc:11:3, col:10> }
    oldVarDecl - { VarDecl a1 : </tmp/bug.cc:10:3, col:5> }
--- Bound Nodes End ---
 #0 0x0000000004562d58 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/LLVM/bin/clang-tidy+0x4562d58)
 #1 0x000000000456047c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fa01d98ece0 __restore_rt (/lib64/libpthread.so.0+0x12ce0)
 #3 0x00007fa01c40da9f raise (/lib64/libc.so.6+0x4ea9f)
 #4 0x00007fa01c3e0e05 abort (/lib64/libc.so.6+0x21e05)
 #5 0x00007fa01c3e0cd9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21cd9)
 #6 0x00007fa01c4063f6 (/lib64/libc.so.6+0x473f6)
 #7 0x000000000179fca8 clang::tidy::utils::decl_ref_expr::(anonymous namespace)::internal::matcher_doesNotMutateObject0Matcher::matches(clang::DeclRefExpr const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const DeclRefExprUtils.cpp:0:0
 #8 0x0000000000ab8a8c clang::ast_matchers::internal::MatcherInterface<clang::DeclRefExpr>::dynMatches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0xab8a8c)
 #9 0x00000000031cbd3f clang::ast_matchers::internal::DynTypedMatcher::matchesNoKindCheck(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0x31cbd3f)
#10 0x00000000031cbf6b clang::ast_matchers::internal::(anonymous namespace)::VariadicMatcher<&clang::ast_matchers::internal::allOfVariadicOperator(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*, llvm::ArrayRef<clang::ast_matchers::internal::DynTypedMatcher>)>::dynMatches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const ASTMatchersInternal.cpp:0:0
#11 0x00000000031cc4a1 clang::ast_matchers::internal::(anonymous namespace)::IdDynMatcher::dynMatches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const ASTMatchersInternal.cpp:0:0
#12 0x00000000031cc05c clang::ast_matchers::internal::DynTypedMatcher::matches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0x31cc05c)
#13 0x000000000318af9f bool clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor::match<clang::Stmt>(clang::Stmt const&) ASTMatchFinder.cpp:0:0
#14 0x000000000319e4dd clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) ASTMatchFinder.cpp:0:0
#15 0x00000000031a125e clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor>::TraverseCXXOperatorCallExpr(clang::CXXOperatorCallExpr*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) ASTMatchFinder.cpp:0:0
#16 0x00000000031900e6 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor>::dataTraverseNode(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) ASTMatchFinder.cpp:0:0
#17 0x0000000003192769 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) (.part.9587) ASTMatchFinder.cpp:0:0
#18 0x000000000319e59b clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) ASTMatchFinder.cpp:0:0
#19 0x000000000318fd71 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor>::dataTraverseNode(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) ASTMatchFinder.cpp:0:0
#20 0x0000000003192769 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchChildASTVisitor>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) (.part.9587) ASTMatchFinder.cpp:0:0
#21 0x00000000031ab139 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchesRecursively(clang::DynTypedNode const&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, int, clang::ast_matchers::internal::ASTMatchFinder::BindKind) ASTMatchFinder.cpp:0:0
#22 0x00000000031abbfb clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchesDescendantOf(clang::DynTypedNode const&, clang::ASTContext&, clang::ast_matchers::internal::DynTypedMatcher const&, clang::ast_matchers::internal::BoundNodesTreeBuilder*, clang::ast_matchers::internal::ASTMatchFinder::BindKind) ASTMatchFinder.cpp:0:0
#23 0x0000000000b25513 clang::ast_matchers::internal::ForEachDescendantMatcher<clang::Stmt, clang::Stmt>::matches(clang::Stmt const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0xb25513)
#24 0x0000000000ab50dc clang::ast_matchers::internal::MatcherInterface<clang::Stmt>::dynMatches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0xab50dc)
#25 0x00000000031cc05c clang::ast_matchers::internal::DynTypedMatcher::matches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0x31cc05c)
#26 0x00000000031cd7fb clang::ast_matchers::internal::(anonymous namespace)::VariadicMatcher<&clang::ast_matchers::internal::eachOfVariadicOperator(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*, llvm::ArrayRef<clang::ast_matchers::internal::DynTypedMatcher>)>::dynMatches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const ASTMatchersInternal.cpp:0:0
#27 0x00000000031cc05c clang::ast_matchers::internal::DynTypedMatcher::matches(clang::DynTypedNode const&, clang::ast_matchers::internal::ASTMatchFinder*, clang::ast_matchers::internal::BoundNodesTreeBuilder*) const (/LLVM/bin/clang-tidy+0x31cc05c)
#28 0x000000000318a551 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchWithFilter(clang::DynTypedNode const&) ASTMatchFinder.cpp:0:0
#29 0x000000000318a8a9 clang::ast_matchers::MatchFinder::match(clang::DynTypedNode const&, clang::ASTContext&) (/LLVM/bin/clang-tidy+0x318a8a9)
#30 0x0000000000c976e8 llvm::SmallVector<clang::ast_matchers::BoundNodes, 1u> clang::ast_matchers::match<clang::ast_matchers::internal::Matcher<clang::Stmt>, clang::Stmt>(clang::ast_matchers::internal::Matcher<clang::Stmt>, clang::Stmt const&, clang::ASTContext&) (/LLVM/bin/clang-tidy+0xc976e8)
#31 0x00000000017a14db clang::tidy::utils::decl_ref_expr::constReferenceDeclRefExprs(clang::VarDecl const&, clang::Stmt const&, clang::ASTContext&, int) (/LLVM/bin/clang-tidy+0x17a14db)
#32 0x00000000017a18f8 clang::tidy::utils::decl_ref_expr::isOnlyUsedAsConst(clang::VarDecl const&, clang::Stmt const&, clang::ASTContext&, int) (/LLVM/bin/clang-tidy+0x17a18f8)
#33 0x000000000105fd77 clang::tidy::performance::(anonymous namespace)::isInitializingVariableImmutable(clang::VarDecl const&, clang::Stmt const&, clang::ASTContext&, std::vector<llvm::StringRef, std::allocator<llvm::StringRef>> const&) UnnecessaryCopyInitialization.cpp:0:0
#34 0x0000000001060b21 clang::tidy::performance::UnnecessaryCopyInitialization::handleCopyFromLocalVar(clang::tidy::performance::UnnecessaryCopyInitialization::CheckContext const&, clang::VarDecl const&) (/LLVM/bin/clang-tidy+0x1060b21)
#35 0x000000000106116e clang::tidy::performance::UnnecessaryCopyInitialization::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/LLVM/bin/clang-tidy+0x106116e)
#36 0x0000000003188099 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::MatchVisitor::visitMatch(clang::ast_matchers::BoundNodes const&) ASTMatchFinder.cpp:0:0
#37 0x00000000031cd487 clang::ast_matchers::internal::BoundNodesTreeBuilder::visitMatches(clang::ast_matchers::internal::BoundNodesTreeBuilder::Visitor*) (/LLVM/bin/clang-tidy+0x31cd487)
#38 0x000000000318a5cc clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchWithFilter(clang::DynTypedNode const&) ASTMatchFinder.cpp:0:0
#39 0x00000000031b85ec clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) (.constprop.9901) ASTMatchFinder.cpp:0:0
#40 0x00000000031c22a9 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseFunctionHelper(clang::FunctionDecl*) ASTMatchFinder.cpp:0:0
#41 0x00000000031c23f5 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseFunctionDecl(clang::FunctionDecl*) ASTMatchFinder.cpp:0:0
#42 0x00000000031ad079 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#43 0x00000000031adb59 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#44 0x00000000031ac641 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#45 0x00000000031adb59 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#46 0x00000000031ae59a clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDeclContextHelper(clang::DeclContext*) (.part.9733) ASTMatchFinder.cpp:0:0
#47 0x00000000031c0d45 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) ASTMatchFinder.cpp:0:0
#48 0x00000000031ad583 clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#49 0x00000000031adb59 clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) ASTMatchFinder.cpp:0:0
#50 0x00000000031ade51 clang::ast_matchers::MatchFinder::matchAST(clang::ASTContext&) (/LLVM/bin/clang-tidy+0x31ade51)
#51 0x00000000020433f8 clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/LLVM/bin/clang-tidy+0x20433f8)
#52 0x000000000229a6cc clang::ParseAST(clang::Sema&, bool, bool) (/LLVM/bin/clang-tidy+0x229a6cc)
#53 0x000000000200d6f9 clang::FrontendAction::Execute() (/LLVM/bin/clang-tidy+0x200d6f9)
#54 0x0000000001f96499 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/LLVM/bin/clang-tidy+0x1f96499)
#55 0x000000000183ef99 clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) (/LLVM/bin/clang-tidy+0x183ef99)
#56 0x00000000017ece1e clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef)::ActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) ClangTidy.cpp:0:0
#57 0x0000000001839d3b clang::tooling::ToolInvocation::run() (/LLVM/bin/clang-tidy+0x1839d3b)
#58 0x000000000183c84d clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/LLVM/bin/clang-tidy+0x183c84d)
#59 0x00000000017f8f89 clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) (/LLVM/bin/clang-tidy+0x17f8f89)
#60 0x0000000000ab1ff2 clang::tidy::clangTidyMain(int, char const**) (/LLVM/bin/clang-tidy+0xab1ff2)
#61 0x00007fa01c3f9cf3 __libc_start_main (/lib64/libc.so.6+0x3acf3)
#62 0x0000000000aa7cbe _start (/LLVM/bin/clang-tidy+0xaa7cbe)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsXFtT47qy_jXmRQVly5fYDzyEQGpx9mINNbBmz1tKltuJzihSSpIZcn79KfmSWE6AZGDWZmYzxYRYllvdX1_UagkTrdlcAJx78YUXX56QyiykOv_yGRhdADcnuSzW5_9egECqEoKJOaKciPmpYcUafWdmgbzEX4EqpVoSQeG0EgIoaE3U-pTK1fqUCWYY4ez_iGFSeImPpEBmAaiUnMvvNUlZgIcniBk7ikZMGImIQERrUPVT4djzLz2_-0z89qe-1EZV1KDu5uii-YLGHk6pFNrewomHMy-86Ppcbr_Xn7mUHMkVKGKk8sJL-4PTseVq7DxZfxpYrjgx4IUTs16BIEtA9154hWoypZQeTu-RsQ8OeEJjRIINtfoSIy-8dFsVmEoJRALUsIKMw_o-EPY2bnXlhWPk4alZrjw8_fPPLzcennL-sDxdKfm_QE176eEpE5RXVh9dw121Wklle0yINkzMzxZeOE4SbGkWQLmFwMMpqYz0cIbqx8KxF46LtZhRoo2H06mSSw9bKJEXX9SGcy9rwWsem_6Tr19vwCxkcQmUe-EFsk81nWo19rpOK0GtZdQ940vLyrizFmuSBRjCeNOX6VsFGoTl4wvhNQ_WHhLkYdzxaK2SICHFKTwybUAY9EB4BR7GHh6hkjAOxdkz0N8vmEZMI4IUUPu4grkCrS1DOZjvAEKg_6kEoNgsEBFFc4Ejs2jJXiNd6RVQg8yCGETlcskMioKYpJgmESkteQV6JYVmObcepJBZMN2xFfkc5krqvCpLDojKihdoLSu04kA0oAV5AEQQl_KbF07R_YKIb9rDQV-MO0PoN1RUy9XW6Vxx_TPPz26VnCuyRETNqyUIo1sDa00rZ8LD016oOKULoN-0F16e1mYwOSJmoLyan1GKTk8bBgLLgBdOQJbW51ZEaVCIGASiQLJEJePQ9MS25_ju_oYYugBlebxV0g5lw46HR8dELjxCZE6Y0KYXjrKJXK5kJYo7szSoBiGcbBytYdwLx5kXjgMbTDgTYL-HdUN41dA5PT1FF5YK-ksWoNEFzJlAp53ACCGUc0m_1YOcIm90gV45LtrEEUucGqkmhPOO9tevE-twNqxePa7U0_SDwH74OwRtWOgxe9ldPk8otJxSad02wDs0BXz_QpQl1VLtruoIeijdXV4lL56gGzxD13fpxg7ZoT6vRNHTpodDH_mPfvcvihNcxGkvcOq1br7cKiZM7ZL3ilAbZbedFPk-k9ooIMs6nE3svNkEt_RpT_Twhf_YjriZnyxLwYAlPxpRdMfmgvA_iCg4KA-n7QhNsz6jKxsl_Pr_hhBuCY1K4gdFlgIFH81mCrSRCmbKtAxylidR83tlFgpIcablmV8zGGAKvsNe2KdKI78gWYkUYRp2yVFLKGkkBZKVDqHIIRSCD36MSC738dUjhAPwY4dQPCREiwzNBJ9xSYpZIZeEiTMqeXHmv0CZFplDORnImoRl8ryUo7BMHBKjvjaDUVZSkvbnzzYn8MJxZRhvrc167UxBOYPHlWqa7LwupFgvZaWRzXP0qrbDrJ1ahQElSDvRLpswOysk6L-kuakMMfApt_mFvw3Bm47a5mdblqzPfYayDjj1fN9ada8L0WbWDqL3MdCF-ikThbXX8ZHP1z5bu-y9ArioGO_IZG0K0mPybwvcfhdI--j7JE9JSo_howXr2jaWFu9wsh8oO4N0qdbNXlDX4n69glqo94vqyxGrwdAx8awPchjQvAjLY9jqoNlnmX_JfzFRTGzO8nvi2eK1XaHgMPCHgJZJfgxfL8SKL0QxUjC6wXvi4eQI8oTzT2VH5FO3VPuFtDPpzfBjpcj6M5SuZx9tslc1ur9FDNim6fq6fXQ3uFozDQZmSiMSvKGZXheXHY7qvwpXPMTVj4-atJ6Lp78icAcFUQuSE0RDF8WUlFnZlIXezkRrwScLxovx3f0Xpllds9rA7cYUu-6qA0U6aOwhnyEXzv0GErmiZRAVxT8i1b0iD6A01KLsyLETW--WhPMvYBe118sV98LJ9t6trHm6FuaWMLUHqYZYUNlPqzaXdPv4n-wbWAu-V4QZvZ-KhXzPo-3I16KUL4z-o6NufhpjPkSzsatZEuAY-pr9DLRSmj1AXzPHTFw_pPorV_uTr1-7WX9COK_TX8cY9nb4sI1X2kYy8Hrfh-Td2EZBDOns4696F-EjOry5BYwGFoBHSfZuLOBjbniF9j2cnq2IMmdZnI4ONYd0mAbE2VsuEz_SgP-Yow8qKmlZjIJ34-gfof7nWwD2P0L9b6r9Hwn1eFBqIXkQZm8d6vcuYUFvLI2v3754MChV_CiZ50p99U7ZayoazQhMFP9iojhUYXiosLx887n5CYVdgqYgCiLMp_J4jY3v7idSGHh8n9r8h9XoFJH8HMdxEB7Dw1SqK0IXW5Vsa-47wcIRrisW9RX7bOXol6vZNWD2S3Y4GuzWxX7xhrt1DqS_din5kG06C56DbvxRVn59WRkPqjC0GL1pYH_t3hwQuvjYnPvYnMOjD29_A29Ph5tIcfyWW5xPp3H_ZmYxZdzAYb57WDYzLCuQlLywithJoJp9rddmlYccjWv566vDPa3n02yUQLp_oflSxNgaTLvAC6-eR2LPht6B6cgTu4B70z0H2Dem_4a6aZB3VBO459xIEBX5j5xzq5n8DCUoEBR6J6wGUac7G_qEUEcIfMRxzVYuR3A8FDwtf-iAH9OfBF__raEY60nD-LuQNy1dRTtLosCPy2I02i9v70z3QdGQ6evuoDcT8zqHyTlcL5eVsV9-Hh7aFM2dhy529GKKUUzMbQ7S70g4l5Q83bcu-Djx-e_tofaJXK2vnSPte8N1GLlIJ36OgwORfna0psuiPkts706VXP4pKeFfyGC2ed0I9am9FumndLGrxoPssgHDsct4gFYQJPB2aNHdE4gHzJZ1w2fQFTfHS2gFcCQcLD3S1M9-ehGwbnRaHuzFzW4a8Nwce2ymEg6z1yJKR6_PBwf8DxPZVxDtENqUeF_ONa1Ijnp3c016VMb-rnLN4aHgPI3hp0vzsS_xyn2JWskrJVdnWeYHB6o6Gh5Xxpj883tVz2xTdX-i-Afw1dDGnT9fPHh7LhoefcVhGb9HkRux3kDg4X5G4Y_elY53BT1SwHAoYB7_9Mn1zZgfHAglNIn--fMCP1M7w3ORv5R2BnkbgTgj7007bZq-L0T2bu9sYY_C8FAUhimdX0TvKmTeKyI0r1P-vwUzu1rf2-FgI0iHFhyn4XsS_9VWnv3CLhr7Q-bhpTrv_sro-O7e5eOHCp_18P21QezkG9iPwtAtMt1U3LAVh8eJFLpadjw1fy88MNxXM9iO7zDo5AcYZyRxFy-3RGnYQecOlqStCXQ5dPP7IDaaURw2Qhcnv0hKxwinysoqijHdLu2vHoFWBuoBDxO_JuuM65ZqyiyJ3KX5RC5XjNusXptt3aEduWXGTdNcRg8uGzRDO7y5hZE0hNLlzUjJ2f5xp8QujtqyiarEtXiQtH0JQ7ophukFUVDMVmYQsbZCb57aKUxPGYcbIsh8s-vzItnbyR_WYgkToJoNTiaF3iV9ychcSG0Y3TjFocvzFiUHxsSt8wKF4In6kqrExLbf1-T219M2HZ48bOOopYGylvSSGJIT7W617N0y3SA5m9HHx_oFDF44zolmdKbrUqUFdkGUA7ttmJnN0tHebqDdW_zs7rcryT4n18Koys5on6GcCHNr3GLpQ9lG0k8PoDhZW0u4W2sDy5aSGxGchfu2JtvODr-zuW5MZf_UNRq4d1aE-ZN2dC8l78vXAnVw7GvpO46RDhigaVQ8bci1MFLy_tjPcdsFwMM9147vMJi5nlumZZp9eO5_3HMP2n-qldXXZuIPDokFZYn3a5N2mrohlnjanQRdkM3RxPHBhtUM5HASuO8dKTNahmg24yy3WiLKpoxMPPu-kJDQ0jkDl2BXPDKiOaCG3CFc1v23BLsXRp0U52GRhRk5gfNgFGQ48rM4OlmcxwRGURlHWVziPPJx5mdZHucxSQDHRQon7Bz7OPITHAVRHMfRWUR8KPOiCJOS5EkUeZEPS8L4mdXymVTzE6Z1Bec2EUlPOMmB6_qtdhj3mcVefHmizutXn-XVXHuRz5k2ekvGMMPr9-H1Hosv0UQRvWjeeHfES6NOKsXPF8asatPFUw9P58wsqvyMyuX2FWuDN7HVkmgPTxthHs7x_wcAAP__b-WBqw">