<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJy9WVtT4zgW_jXhReWU744feEgn0ENVdw3VMN2PKVmXxDOOnJVlGvbX7zmynVghAcJuLYRg63L0fecm-bio-cv1r9JsiNkIIuuqqn-Xak1YzcUkmk_85cSfT1K_-7Ddrm8Jo1KxquWCTMKQVVStJ-Htra6VEYrD5fzh8S9VmukGut-a8iB0Savy39SUterm_dKlEfrimXfqu9jW-uV7zdtKLCjbiHdlPNZ1VY6vzs6oqqctwls-4tJbWlUPRn9gwpfSNEYL6ly_yTBayH5GdHOqd2tZnuls3pzaWMiHTvtdKkO2tAQVziZhTibZl6E3bwxHH4jmZQ_JusVtWQk7OCzVrjVTxpBHmE-iEzO7JUezx6PwHnHBZy95qnnRyg7MaOx-hmoM2UtvVfmvVqx2RoOIzqi2vfc-YEpoY_ASllmS0QjTW97eFG1ZcZgD_rtdIMZwhnCmALsHch5LAYLIhjY3Wte6sctIWjXIE9zgFj7kcVM25HdZVUTVhjDaNoJQwjRtNqSUEHjQDR-jW7EXbt3Hghs5G5AMAA-w2rHNkho6VuZhxpGfDYMfej-cDZNdk42UcyKUyPZwfWbWPnRR593VYbFh8cUeOlyOZcItul62xKtOgy6-vdCp_QergfTeuh7oZC3Mg9jSwWALYr0yxCvVVhX6iNO4t9lJ4-5drB5cXx65_ZptekmHMKmb3qFKRfULEDrVWbfmiBqKHuKgMZDQ2IoBMxuxThxh6J62H-jNTdXdLVXcJvZCQF7vKLyV1K277qP6vfQg6xpab__88yNIcCHrK6nfxULn_783QpG2wS0HcULvQbsw0mpmLZTQ1AhOJASoHWfDc2yyP1sD016TG5jFZArc6BSUT879DIR7-tE8gr8U_ohAR8ELDN1aklZxAWw0QCq5UKaUJbj9JMysMrKDsEH0karOQjiDyWlJbg6krErJQWWDHc12B99HVEKHCqPKpqN6u0Ml2yxUeU-0agURzzstmgY2VvIizJtU3E4El9mPbb7_djN_uCFNW2whBVNStGuixa7WhpiabIzZ2Ziwfgd9zRST2LTWuCMT9N1h87I2tw5TUPaP0ZTZjAEod7pmABUs0dSt7ppxJm2ampXWa3SrSMN0uTO9yzwYEEJ4C0oaHMaHrvxe12sNoU71ut2CWREcJvG20QgQg-DWatwLIuIxFhAPwnIH2nuepas09nbMg12lffbWqiWeANJeXfxNvK0WFX32IJETb7iB75rZw0tDPF42tKiEJ7UQhzvUhvcE5xzrXtjMqOadjTxFtwJmYmx6GCa24eAK3aL9Ch5kWlGRXcmIB19eJZ7gNuxuygb-wapbCdyFt6sh5CF1R0sLV26p2XjgNaqGG1V7ugbvh3j1sANm2W1Qt8zUGgiWtLGoWgXHSO4Z5AH3BlQqjMd2LarKS2NoapWwDTa8ERkX4ANrobHLJrvlmhewKKtBB3QNo62vdox4iRA7VyegzM762HywWFUWg8XgfxBN_SmYTNp13hAmbYyAJdFpg5x4DfqLB55mBNJExUmwMEPbYJDA3HgaWtmUc2haE2-5Wn1dLFZ_zH_erJa_5j9uw9Xi9m41f_gOo2FkTdww9YJAJnkyBS0_o1_3ccm9jaAcrH8U4wH6K2wQopb2PEB1gxuvIXD8xgxlU70dGdqRJ1ICpoMEPfzbt5_fyd2PIc9i1IOELsN1t5DTuj0g62RG78r82svqHyUga-g3JUJD5BP_2YefTPIwSmYpEzQjdt9x7AnfiBhicNpAKvriPxc0haGYj_aygiNZFH4_KCuGoY6scCwrzkOfU5-sVuBz4AxiBckMLE4Z8pqiEnz7t58eOVBolBfxjBxOa_ddvD2-7ETXAIECQA8DbE84x8TWKlhJ4a6jjN2NP0CIZxEs6BCKx4gYmCUq-PhwjGdgMKBzc9sqy7BrvIHQ-Es17Q5zueDffmJKwmPzQcgN7CHEJocePNvQccMZ9F1-hTMJ4J8GkaUQzHwBEB0OicNB-KEvkss5fAD4RTjDGGA4OFMXZxDCz-U4F5CLxf8QZxSH3TPbHmd2jDNNi8_hRFwu0qHVdYczsn8I02pl7fJQ1efd_BwxwO0Qmx0R40UhLpIoYYIjMXclJplIPmHSB0YhG75W1itF4RPmhVrIcoC0x4zp0D_SQsC4vBzzXL18APA5sfP1emTWTxGLIF1Jh1hwTEwU6eXE7tYKUjl_l9yFYAGLA9bZSZgMZJ59xnPM1rgoscUxwWH3mGtNX34IeVQgMWZEC58qL2GWxwEAd5hFLrPQn30qzcGhB4-XyAeLkvC09sDq3VHiG48aSKQHh_qoA17GOJyFLmN3E5XZLI4_4XhDy5eav7xp04vQ5hTAOGjd7VLmMx77l6HtT3RiKJAd5n6t6oJWSzjdua63n_92Wlh8HQbeKVmPDHoR5YICI4eyu_NKGvBs9h7lruJ1ME9HbcC3FLJUZUfpIwro2vsjxqU2ZBHgdQhlRzaURfbukec0of8vkQBwOkTcLVkyPyjkJRJFCBMcic6WzH1fJjS-QCKFAKHxWGLoHyU0lmWXJQwBExyJzk7FIy784BKJAqYGrsTQlZjOIloQBc-zT6U2La2I2bTqHyy1uGXaH_aRckgzVJtHTVXTPQvburnjFDBhATHZbrGee6Hx-YwCJge0s1MUkjFfOnnzHh9lu-ruOBva0q6T5S8-PuRCwFoOGCeJ8ySJZ0U-BjO80ZqP0_azYK0RQ0H0w7qQWQrSneWdrMxjSYvi6FRmiwD6DlIiVUw4AHpMjpqO8F6aRWXACjeywtTVUC5hbx9D7MEckD71NafXe7bD5FJPkiyAlR1oQz5MEimSlDLYghlhLFj19erThyDnKRRPPq-eTBfkqS75CYRuBbDDlcKiDqrZEaqchfxdKTMY5EjJXSmFCGaJrcO_J4rDwLEkt6oS535RgNutVqjnVYPBv3ol9mAJtEBq5YYZzHMEB0dE_XgmSCfyPZAShu5l7XucQrvCyiGmLtE5GBaqt1Th6xDyINZYnu0qSZK2lV2QwQneFnUFf1t2VzSXfagMgkEQ1ttAgl0WCy2QQUEu1vy9J9smsMB6cPDxIqSvBZKuzNj1PNqyJ655okDcD9loyMbEFmhx4K5uyueuy8YKPPfzZWlxOxp9RU_VBvMD4SWFh5nGlIxsG4w-Yl9z7at7APVk2XyGL8KIB3JG_dYItr7XDK9bhjcrV_w64nmU0yvawkldXz-KBqXfAyZz1erq2q3vr-E83xZT0Db6Vvd23Ba4Yam_BTNYSGyaVgCM2yTKk_Bqcx35sSzCIE3hrBNSMLHPZ0mWZkWRiCxMiqsKIqNqrifJl0kYKvGbWBH4Xi5ZXv33CMrr0A_hE-Sh78d-NIW_LM6LNBOxFHmUTWIfNqay2r-4uNLXViS-zYDOqmzM4a3GFW1s_U5YwIDQlKYS1yffoTKqCAPXMP274o19R3a_-ANfGUNfqcDfNaAevXzuXt6UDdlRNO2VZXNtqfwH64QrDw>53952</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang::ASTWriter can create a crahsing PCH if an incorrect hasErrors value is passed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TestingPlant
</td>
</tr>
</table>
<pre>
With the following code:
```cpp
#include "clang/Frontend/ASTUnit.h"
#include "clang/Serialization/ASTWriter.h"
#include "clang/Serialization/InMemoryModuleCache.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Bitstream/BitstreamWriter.h"
#include <fstream>
#include <memory>
#include <sstream>
#include <string>
int main() {
std::ifstream codeFile("input.cc");
std::stringstream code;
code << codeFile.rdbuf();
const std::unique_ptr<clang::ASTUnit> astUnit = clang::tooling::buildASTFromCode(code.str());
const bool hasErrors = false; // This will not cause a crash if this is true
llvm::SmallString<128> pchData;
llvm::BitstreamWriter pchDataStream(pchData);
clang::InMemoryModuleCache moduleCache;
clang::ASTWriter astWriter(pchDataStream, pchData, moduleCache, {}, false);
astWriter.WriteAST(astUnit->getSema(), "", nullptr, "", hasErrors);
std::ofstream file("input.gch", std::ios::binary | std::ios::out);
file << static_cast<std::string>(pchData);
}
```
and the below file:
```cpp
// input.cc
int main() {
foo(FOO);
}
```
`clang` will crash when using the `input.gch` file generated from the code.
Output:
```
$ ./a.out
input.cc:3:6: error: use of undeclared identifier 'FOO'
foo(FOO);
^
$ clang input.gch
/tmp/input.cc:3:2: error: cannot compile this l-value expression yet
foo(FOO);
^~~
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /usr/bin/clang-13 -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -disable-llvm-verifier -discard-value-names -main-file-name input.gch -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/clang/13.0.1 -fdebug-compilation-dir=/tmp -ferror-limit 19 -stack-protector 2 -fgnuc-version=4.2.1 -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/input-11f595.o -x precompiled-header input.gch
1. <eof> parser at end of file
2. /tmp/input.cc:2:5: LLVM IR generation of declaration 'main'
3. /tmp/input.cc:2:5: Generating code for declaration 'main'
#0 0x00007fd23586cea7 (/usr/lib/libLLVM-13.so+0xba6ea7)
#1 0x00007fd23586a6a6 (/usr/lib/libLLVM-13.so+0xba46a6)
#2 0x00007fd234920da0 __restore_rt sigaction.c:0:0
#3 0x00007fd235a39b48 llvm::PointerType::get(llvm::Type*, unsigned int) (/usr/lib/libLLVM-13.so+0xd73b48)
#4 0x00007fd23cdec3bd clang::CodeGen::CodeGenFunction::EmitUnsupportedLValue(clang::Expr const*, char const*) (/usr/lib/libclang-cpp.so.13+0x180e3bd)
#5 0x00007fd23ce020e5 clang::CodeGen::CodeGenFunction::EmitLValue(clang::Expr const*) (/usr/lib/libclang-cpp.so.13+0x18240e5)
#6 0x00007fd23ce12222 clang::CodeGen::CodeGenFunction::EmitCallee(clang::Expr const*) (/usr/lib/libclang-cpp.so.13+0x1834222)
#7 0x00007fd23ce1266b clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/usr/lib/libclang-cpp.so.13+0x183466b)
#8 0x00007fd23ce1dbbe (/usr/lib/libclang-cpp.so.13+0x183fbbe)
#9 0x00007fd23ce57e52 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/usr/lib/libclang-cpp.so.13+0x1879e52)
#10 0x00007fd23ce11cdf clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) (/usr/lib/libclang-cpp.so.13+0x1833cdf)
#11 0x00007fd23ce11eb6 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) (/usr/lib/libclang-cpp.so.13+0x1833eb6)
#12 0x00007fd23cf1f972 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/usr/lib/libclang-cpp.so.13+0x1941972)
#13 0x00007fd23cf20822 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/usr/lib/libclang-cpp.so.13+0x1942822)
#14 0x00007fd23cf78446 clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/usr/lib/libclang-cpp.so.13+0x199a446)
#15 0x00007fd23cf98d40 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/usr/lib/libclang-cpp.so.13+0x19bad40)
#16 0x00007fd23cfa1d78 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/libclang-cpp.so.13+0x19c3d78)
#17 0x00007fd23cf9fb75 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/libclang-cpp.so.13+0x19c1b75)
#18 0x00007fd23cfc01bf (/usr/lib/libclang-cpp.so.13+0x19e21bf)
#19 0x00007fd23d00f5a4 (/usr/lib/libclang-cpp.so.13+0x1a315a4)
#20 0x00007fd23cf2c779 (/usr/lib/libclang-cpp.so.13+0x194e779)
#21 0x00007fd23d3de019 (/usr/lib/libclang-cpp.so.13+0x1e00019)
#22 0x00007fd23d3683ab non-virtual thunk to clang::ASTReader::StartTranslationUnit(clang::ASTConsumer*) (/usr/lib/libclang-cpp.so.13+0x1d8a3ab)
#23 0x00007fd23bfcc0f6 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/libclang-cpp.so.13+0x9ee0f6)
#24 0x00007fd23d5548b9 clang::FrontendAction::Execute() (/usr/lib/libclang-cpp.so.13+0x1f768b9)
#25 0x00007fd23d4fabbf clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/libclang-cpp.so.13+0x1f1cbbf)
#26 0x00007fd23d59ff20 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/libclang-cpp.so.13+0x1fc1f20)
#27 0x000055fe56ac784c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-13+0x1684c)
#28 0x000055fe56ac9c2d (/usr/bin/clang-13+0x18c2d)
#29 0x000055fe56abe185 main (/usr/bin/clang-13+0xd185)
#30 0x00007fd23490bb25 __libc_start_main (/usr/lib/libc.so.6+0x27b25)
#31 0x000055fe56ac048e _start (/usr/bin/clang-13+0xf48e)
clang-13: error: unable to execute command: Segmentation fault (core dumped)
clang-13: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 13.0.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-13: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9WVtT47gS_jXhReWUb4ntBx4yCcxSNVNLDezMY0rWJfGuI-fIMgPn159u2Y6tkAChtg6EYOvS-r6-SW7nFX-5_lWYLTFbQWRVltXvQm0Iq7iYRIuJv5r4i8ncbz9sv-9awqhQrGy4IJMwZCVVm0l4e6srZYTicLl4ePxLFWa6he63pjwIXdCy-C81RaXaeb90YYS-eOad-i52lX75XvGmFEvKtuJdGY9VVRbjq7MzyvJph_BWj7j0jpblg9EfmPClMLXRgjrXbzKMlrKbEd2c6t1Zlmc66zen1hby0Gm_C2XIjhagwnQSZmSSfOl7s9pw9IFoUXSQrFvcFqWwg8NC7RszZQx5hNkkOjGzXXI0ezwK7xEXfA6Sp5rnjWzBjMYeZqjakIP0RhX_acR6bzSIaI1q2zvvA6aE1gYvYZkVGY0wneXtTd4UJYc54L-7JWIMU4QzBdgdkPNYchBEtrS-0brStV1G0rJGnuAGt_Ahj9uiJr-LsiSqMoTRphaEEqZpvSWFhMCDbvgY3YiDcOs-FtzI2YBkAHiA1Z5tV9TQsTKHGUd-1g9-6Pww7Se7Jhsp50Qokd1wfWbWIXRR5-3VsFi_-PIAHS7HMuEWXS9Z4VWrQRffQejU_oPVQHpnXQ90shHmQexob7AlsV4Z4pVqyhJ9xGk82OykcQ8uVvWuL4_cfsO2naQhTKq6c6hCUf0ChE51Vo05ooai-zioDSQ0tmbAzEasE0cYuqftB3pzU3V7SxW3iT0XkNdbCm8ldeuuh6h-Lz3IqoLW2z___AgSXMj6ytxvY6H1_99boUhT45aDOKF30C6MtJrZCCU0NYITCQFqx9nwHJvsz8bAtNfkemYxmQI3OgXlk3M_PeGOfrSI4G8Of0Sgo-AFhm4lSaO4ADYaIBVcKFPIAtx-EiZWGckgrBd9pKqzEM5gclpmNwMpq1IyqKy3o9nt4fuISuhQYVTZdFTt9qhkm4VK74mWjSDiea9FXcPGSl6EeZOK24ngEvuxzfffbhYPN6Ru8h2kYEryZkO02FfaEFORrTF7GxPW76CvnmISm1Yad2SCvttvXtbm1mFyyv4xmjKbMQDlXlcMoIIl6qrRbTPOpHVdscJ6jW4UqZku9qZzmQcDQghvQEm9w_jQld3raqMh1KneNDswK4LDJN7UGgFiENxajXtBRDzGAuJBWO5Be8_pfD2PvT3zYFdpnr2NaogngLRX5X8Tb6dFSZ89SOTE62_gu2L28FITjxc1zUvhSS3EcIfa8J7gnGPdC5sZ1by1kafoTsBMjE0Pw8Q2DK7QLtqt4EGmFSXZF4x48OWV4gluw_amqOEfrLqTwF14-wpCHlJ3tLJw5Y6arQdeoyq4UZWnK_B-iFcPO2CW3QZ1w0ylgWBBa4uqUXCM5J5BHnBvQKXCeGzfoKq8eQxNjRK2wYY3IuMCfGAjNHbZZLfa8BwWZRXogG5gtPXVlhEvEGLr6gSU2VofmweLlUXeWwz-B9HUn4LJpF3nDWHSxghYEp02yIhXo7944GlGIE1UnAQLM7QNBgnMjaehlU05h6YN8Vbr9dflcv3H4ufNevVr8eM2XC9v79aLh-8wGkZWxA1TLwjkLJtNQcvP6NddXHJvKygH6x_FeID-ChuEqKQ9D1Bd48ZrCBy_MUPZVG9HhnbkiZSA6WCGHv7t28_v5O5Hn2cx6kFCm-HaW8hp7R6QtDKjd2V-7WR1jxKQNfSbEqEh8on_7MNPInkYzdI5EzQhdt9x7AnfiBhicFpDKvriP-d0DkMxHx1kBUeyKPx-UFYMQx1Z4VhWnIU-pz5Zr8HnwBnEGpIZWJwy5DVFJfj27zA9cqDQKMvjlAyntfs23h5f9qJtgEABoMMA2xMuMLE1ClZSuOsoY3fjDxDiSQQLOoTiMSIGZolyPj4c4xkYDOjc3DbKMmwbbyA0_lJ1s8dcLvi3n5iS8Ng8CLmBPYTY5NCBZ1s6bjiDvs2vcCYB_NMgshSC1BcA0eEwczgIP_TF7HIOHwB-Ec4wBhgOzrmLMwjh53KcS8jF4l_EGcVh-8x2wJkc45zP88_hRFwu0r7VdYczsn8I02hl7fJQVufd_BwxwO0QS4-I8TwXF0mUMMGRmLkSZ4mYfcKkD4xCNnytrFeKwifMC7WQZADpgBnToX-khYBxeTnmhXr5AOBzYhebzcisnyIWQbqSDrHgmJjI55cTu9soSOX8XXIXggUsDlhnJ2EykFnyGc8xO-OixBbHBMPusdCavvwQ8qhAYsyIFj5VXsIsiwMA7jCLXGahn34qzcGhB4-XyAeLkvC09sCq_VHiG4_qScwHh_qoA17GOExDl7G7icokjeNPOF7f8qXiL2_a9CK0GQUwDlp3u5RZymP_MrTdiU70BbJh7teyymm5gtOd63qH-W-nheXXfuCdktXIoBdRzikwcii7O6-kAU_S9yi3Fa_BPC21Ht9KyEIVLaWPKKBt744Yl9qQRYDXIZQc2VDmybtHntOE_r9EAsDpEHG3ZMn8IJeXSBQhTHAkOlsy9305o_EFEikECI3HEkP_KKGxJLksYQiY4Eh0dioeceEHl0gUMDVwJYauxHka0ZwoeJ59KrRpaEnMtlH_YKnFLdP-sI-UfZqh2jxqqur2WdjWzR2ngAlLiMlmh_XcC43PUwqYHNDOTpFLxnzp5M17fJRtq7vjbGhLu06Wv_j4kAkBazlgnCTOZ7M4zbMxmP6N1mKctp8Fa4zoC6If1oVM5iDdWd7JyjyWNM-PTmW2CKDvICVSxYQDoMPkqOkI76VZVAYsdyMrnLsayiTs7WOIHZgB6VNXc3q9ZztMLvUkyQJY2YHW58PZTIrZnDLYghlhLFh39erThyDnKRRPPq-eTJfkqSr4CYRuBbDFNYdFHVTpEaqMhfxdKSkMcqRkrpRcBOnM1uHfE8Vh4FiSW1WJMz_Pwe3Wa9TzusbgX78SO1gCLTC3csME5jmCgyOifpwK0op8D6SEoQdZhx6n0K6wcoipS7QOhoXqHVX4OoQ8iA2WZ9tKkqRNaRdkcIK3RV3B35bdFs1lFyq9YBCE9TaQYJfFQgtkUJCLNX_vybYJLLAODj5ehHS1QNKWGdueR1v2xDVPFIi7IVsN2ZjYAi0O3Fd18dx22ViB536-KixuR6Ov6KnKYH4gvKDwMFObgpFdjdFH7GuuQ3UPoJ4sm6f4Iox4IGfUb41g63t1_7qlf7Nyxa8jnkUZvTKFKcX1yTeBjCrCgKDp3nhu7Zue--Uf-OIT-goFVtOCmdEr1PYVRFGTPUWAV40ur91XBRt4NGjyKRgO3bR90W5r5YD6bxCGNcm6bgQwup1F2Sy82l5HIkpZEspoLvycUgHJgtIsl0kWyXQ2z69KCLKyvp7MvkzCUInfxIrAV3yz1VVxHfohfIIs9P3Yj6bwl8RZPk9ELEUWJZPYhx2qKA9vMK70tYWErzWgsyxqM7zeuAJmWMgTdjmQTxt42NHXj6JGA92DKs2VXf_a4v8fuBoWNg">