From bf0b3bb5073100a1a031b14afd94a58197dc2b38 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 00:06:10 +0430 Subject: fixed the memory leak --- bruiser/bruiser.cpp | 62 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 4bd4f87..4e2fae4 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -123,7 +123,6 @@ bruiser::BruiserReport::~BruiserReport() BruiserLog.close(); } -template /** * @brief Will print the argument in the log file. Expects to receive valid types usable for a stream. * @@ -131,6 +130,7 @@ template * * @return Returns true if the write was successful, false otherwise. */ +template bool bruiser::BruiserReport::PrintToLog(T __arg) { BruiserLog << __arg << "\n"; @@ -609,7 +609,10 @@ class BruiserFrontendAction : public ASTFrontendAction { public: BruiserFrontendAction() {} - virtual ~BruiserFrontendAction() {} + virtual ~BruiserFrontendAction() + { + delete BDCProto; + } void EndSourceFileAction() override { @@ -619,21 +622,21 @@ public: std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ class LiveActionListVars : public ASTFrontendAction { public: - LiveActionListVars() {} - virtual ~LiveActionListVars() + LiveActionListVars() = default; + virtual ~LiveActionListVars() { delete BDCProto; } @@ -643,7 +646,7 @@ class LiveActionListVars : public ASTFrontendAction std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } @@ -657,105 +660,120 @@ class LiveActionListFuncs : public ASTFrontendAction { public: LiveActionListFuncs() {} - ~LiveActionListFuncs() {} + ~LiveActionListFuncs() + { + delete BDCProto; + } void EndSourceFileAction() override {} std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ class LiveActionListStructs : public ASTFrontendAction { public: LiveActionListStructs() {} - ~LiveActionListStructs() {} + ~LiveActionListStructs() + { + delete BDCProto; + } void EndSourceFileAction() override {} std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ class LiveActionListClasses : public ASTFrontendAction { public: LiveActionListClasses() {} - ~LiveActionListClasses() {} + ~LiveActionListClasses() + { + delete BDCProto; + } void EndSourceFileAction() override {} std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ class LiveActionListUnions : public ASTFrontendAction { public: LiveActionListUnions() {} - ~LiveActionListUnions() {} + ~LiveActionListUnions() + { + delete BDCProto; + } void EndSourceFileAction() override {} std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ class LiveActionListArrays : public ASTFrontendAction { public: LiveActionListArrays() {} - ~LiveActionListArrays() {} + ~LiveActionListArrays() + { + delete BDCProto; + } void EndSourceFileAction() override {} std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef file) override { DiagnosticsEngine &DE = CI.getPreprocessor().getDiagnostics(); - BlankDiagConsumer* BDCProto = new BlankDiagConsumer; - DE.setClient(BDCProto); + DE.setClient(BDCProto, false); TheRewriter.setSourceMgr(CI.getSourceManager(), CI.getLangOpts()); return llvm::make_unique(TheRewriter); } private: Rewriter TheRewriter; + BlankDiagConsumer* BDCProto = new BlankDiagConsumer; }; /**********************************************************************************************************************/ /**********************************************************************************************************************/ -- cgit v1.2.3 From 712de3645689a570f24d5ac9ea906cad8945e9de Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 00:06:22 +0430 Subject: added relics --- extra-tools/precommitTests.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/extra-tools/precommitTests.sh b/extra-tools/precommitTests.sh index b8ce27f..45af595 100755 --- a/extra-tools/precommitTests.sh +++ b/extra-tools/precommitTests.sh @@ -7,6 +7,8 @@ Orange="\033[0;33m" NC="\033[0m" REP_FILE="test/precommit.rep" +TIME=$(date +%Y-%m-%d:%H:%M:%S) +RELIC_COUNT=10 printf "${Lblue}switching to mutator root...\n${NC}" | tee ../test/precommit.rep cd .. @@ -63,6 +65,10 @@ echo "" if [[ $? == 0 ]]; then printf "${Green}mutator c++1z test build passed.\n${NC}" | tee -a ./test/precommit.rep + printf "${Orange}date and time of relic:.\n${NC}" | tee -a ./test/precommit.rep + echo $TIME | tee -a ./test/precommit.rep + cp ./mutator-lvl0 ./reliquary/m0/m0-$TIME + cp ./bruiser/bruiser ./reliquary/bruiser/bruiser-$TIME else printf "${Red}mutator c++1z test build failed.\n${NC}" | tee -a ./test/precommit.rep fi @@ -183,5 +189,5 @@ printf "${Lblue}cleaning the objects and exexutables...\n${NC}" | tee -a ../test printf "${Lblue}finished running all tests...\n${NC}" | tee -a ../test/precommit.rep #tell me when youre done -echo -ne '\007' && echo "" && echo -ne '\007' && echo -ne '\007' +echo -ne '\007' && echo "" && echo -ne '\007' && echo "" && echo -ne '\007' printf "${Green}beep...\n${NC}" -- cgit v1.2.3 From a9cd40738c21a1b7ccc50e8870beb17c97176ca1 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 00:06:52 +0430 Subject: make install now also adds reliquary which is only useful for dev purposes --- makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/makefile b/makefile index 1c10d0e..575d7de 100644 --- a/makefile +++ b/makefile @@ -67,6 +67,9 @@ install: chmod +x ./extra-tools/ReportPrintPretty.sh chmod +x ./extra-tools/precommitTests.sh if [[ ! -d "./temp" ]]; then mkdir temp; fi + if [[ ! -d "./reliquary" ]]; then mkdir reliquary; fi + if [[ ! -d "./reliquary/m0" ]]; then mkdir ./reliquary/m0; fi + if [[ ! -d "./reliquary/bruiser" ]]; then mkdir ./reliquary/bruiser; fi $(shell echo MUTATOR_HOME=$$(pwd) > ./daemon/mutator.config) help: -- cgit v1.2.3 From 1e5f8bf7d6e32cf33fc558413b508d9005eea7e3 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 20:10:26 +0430 Subject: changed --- samples/action_file.mutator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/action_file.mutator b/samples/action_file.mutator index 8d6c3b4..5ed1f08 100644 --- a/samples/action_file.mutator +++ b/samples/action_file.mutator @@ -1,7 +1,7 @@ action_name:my_action1 executable_name:mutator-lvl0 #these are the options specific to the executable -exec_opts:-MCEA -MCD=" 10.1 9.1 9.2 9.3 9.3" -SysHeader=false -MainOnly=true -MCV=C2 -mutagen +exec_opts:-MCEA -MCD="5.1 5.2 5.3 5.4 5.5 5.6 5.7" -SysHeader=false -MainOnly=true -MCV=C2 -mutagen in_files:./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c #clang options libtooling_options:-std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include -Wall -- cgit v1.2.3 From 32d6139a25e4621da2dac10daee21bbe8c49f695 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 20:11:00 +0430 Subject: added the reliquary dorectories --- makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/makefile b/makefile index 575d7de..d91b38f 100644 --- a/makefile +++ b/makefile @@ -70,6 +70,7 @@ install: if [[ ! -d "./reliquary" ]]; then mkdir reliquary; fi if [[ ! -d "./reliquary/m0" ]]; then mkdir ./reliquary/m0; fi if [[ ! -d "./reliquary/bruiser" ]]; then mkdir ./reliquary/bruiser; fi + if [[ ! -d "./reliquary/safercpp" ]]; then mkdir ./reliquary/safercpp; fi $(shell echo MUTATOR_HOME=$$(pwd) > ./daemon/mutator.config) help: -- cgit v1.2.3 From a323e646a2678add598b55f927e8fb587e7635d0 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 29 May 2017 20:11:24 +0430 Subject: added reliquary --- extra-tools/precommitTests.sh | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/extra-tools/precommitTests.sh b/extra-tools/precommitTests.sh index 45af595..7a6336e 100755 --- a/extra-tools/precommitTests.sh +++ b/extra-tools/precommitTests.sh @@ -1,5 +1,5 @@ #!/bin/bash - +######################################################################################################################## Red="\033[0;31m" Green="\033[0;32m" Lblue="\033[1;34m" @@ -8,8 +8,35 @@ NC="\033[0m" REP_FILE="test/precommit.rep" TIME=$(date +%Y-%m-%d:%H:%M:%S) +#how many relics to keep RELIC_COUNT=10 - +######################################################################################################################## +function RelicKeeper +{ + cd ./reliquary/bruiser + RELIC_CNT=$(ls | gawk 'END{print NR}') + if (( $RELIC_CNT > 10 )); then + rm "$(ls -t | tail -1)" + printf "${Orange}RelicKeeper removed the oldest bruiser relic.\n${NC}" | tee -a ../../test/precommit.rep + fi + + cd ../m0 + RELIC_CNT=$(ls | gawk 'END{print NR}') + if (( $RELIC_CNT > 10 )); then + rm "$(ls -t | tail -1)" + printf "${Orange}RelicKeeper removed the oldest m0 relic.\n${NC}" | tee -a ../../test/precommit.rep + fi + + cd ../safercpp + RELIC_CNT=$(ls | gawk 'END{print NR}') + if (( $RELIC_CNT > 10 )); then + rm "$(ls -t | tail -1)" + printf "${Orange}RelicKeeper removed the oldest safercpp relic.\n${NC}" | tee -a ../../test/precommit.rep + fi + + cd ../.. +} +######################################################################################################################## printf "${Lblue}switching to mutator root...\n${NC}" | tee ../test/precommit.rep cd .. @@ -67,8 +94,10 @@ if [[ $? == 0 ]]; then printf "${Green}mutator c++1z test build passed.\n${NC}" | tee -a ./test/precommit.rep printf "${Orange}date and time of relic:.\n${NC}" | tee -a ./test/precommit.rep echo $TIME | tee -a ./test/precommit.rep - cp ./mutator-lvl0 ./reliquary/m0/m0-$TIME - cp ./bruiser/bruiser ./reliquary/bruiser/bruiser-$TIME + "cp" ./mutator-lvl0 ./reliquary/m0/m0-$TIME + "cp" ./bruiser/bruiser ./reliquary/bruiser/bruiser-$TIME + "cp" ./safercpp/safercpp-arr ./reliquary/safercpp/safercpp-$TIME + RelicKeeper else printf "${Red}mutator c++1z test build failed.\n${NC}" | tee -a ./test/precommit.rep fi -- cgit v1.2.3 From 36a79984514f3f1f769ab476d699c36e59d3bac8 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 30 May 2017 19:13:34 +0430 Subject: nothing --- bruiser/bruiser.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 4e2fae4..13d63b7 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -813,7 +813,6 @@ int main(int argc, const char **argv) linenoiseHistoryAdd(command); linenoiseHistorySave(SHELL_HISTORY_FILE); - //std::cin.getline(command, sizeof(command)); std::string dummy_string(command); shHistory.History.push_back(command); -- cgit v1.2.3 From b5c0d7753e7041372a4ad8172642bd7feb1a1b2f Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 30 May 2017 19:13:49 +0430 Subject: added oracle --- extra-tools/precommitTests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/extra-tools/precommitTests.sh b/extra-tools/precommitTests.sh index 7a6336e..eec5682 100755 --- a/extra-tools/precommitTests.sh +++ b/extra-tools/precommitTests.sh @@ -98,6 +98,7 @@ if [[ $? == 0 ]]; then "cp" ./bruiser/bruiser ./reliquary/bruiser/bruiser-$TIME "cp" ./safercpp/safercpp-arr ./reliquary/safercpp/safercpp-$TIME RelicKeeper + source ./extra-tools/oracle.sh ./test/precommit.rep else printf "${Red}mutator c++1z test build failed.\n${NC}" | tee -a ./test/precommit.rep fi -- cgit v1.2.3 From 1b90b852824ad60a673cd99fa581558237ec36bb Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 30 May 2017 19:14:34 +0430 Subject: oracle --- extra-tools/oracle.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 extra-tools/oracle.sh diff --git a/extra-tools/oracle.sh b/extra-tools/oracle.sh new file mode 100755 index 0000000..f5d07ae --- /dev/null +++ b/extra-tools/oracle.sh @@ -0,0 +1,19 @@ +#!/bin/bash +Red="\033[0;31m" +Green="\033[0;32m" +Lblue="\033[1;34m" +Orange="\033[0;33m" +Magenta="\033[1;35m" +NC="\033[0m" +######################################################################################################################## +printf "${Magenta}Running oracle...\n${NC}" | tee -a $1 + +#m0 +"diff" ./test/misrareport.xml ./oracle/m0/oracle-m0.xml | tee ./oralce-m0-diff + +printf "${Magenta}Running oracle for m0...\n${NC}" | tee -a $1 +if [ -s oracle-m0-diff ]; then + printf "${RED}The oracle test failed.\n${NC}" | tee -a $1 +fi + +printf "${Green}The oracle test passed.\n${NC}" | tee -a $1 -- cgit v1.2.3 From 26943f0f799b0dfce0218d9413525e414ec5d82b Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Tue, 30 May 2017 19:14:52 +0430 Subject: oracle --- oracle/m0/oracle-m0.xml | 5556 ++++++++++++++++++++++++++++++++++++++++++++++ oracle/m0/oracle.mutator | 18 + 2 files changed, 5574 insertions(+) create mode 100644 oracle/m0/oracle-m0.xml create mode 100644 oracle/m0/oracle.mutator diff --git a/oracle/m0/oracle-m0.xml b/oracle/m0/oracle-m0.xml new file mode 100644 index 0000000..7bb26e8 --- /dev/null +++ b/oracle/m0/oracle-m0.xml @@ -0,0 +1,5556 @@ + + Inclusion directives should only be preceeded by other inclusion directives, pp directives or comments : + all paths through this function will call itself + unused variable 'a' + unused variable 'b' + unused variable 'declaration1' + unused variable 'declaration2' + unused variable 'j' + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + unused variable 'c' + variable 'd' is uninitialized when used here + initialize the variable 'd' to silence this warning + unused variable 'a' + unused variable 'b' + control reaches end of non-void function + address of function 'test4' will always evaluate to 'true' + prefix with the address-of operator to silence this warning + unused variable 'p' + ordered comparison between pointer and integer ('long' and 'double *') + ordered comparison between pointer and integer ('long' and 'double *') + array comparison always evaluates to a constant + comparison of distinct pointer types ('double *' and 'char *') + unused variable 'uni2' + // comments are not allowed in this language + Illegal comment format(/*...*/) used: + unused variable 'reg1' + unused variable 'reg2' + unused variable 'reg3' + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + suggest braces around initialization of subobject + unused variable 'arr' + unused variable 'arr2' + unused variable 'arr3' + expression with side effects has no effect in an unevaluated context + unused variable 'longa' + '/*' within block comment + variable 'a' is used uninitialized whenever '&&' condition is false + uninitialized use occurs here + remove the '&&' if its condition is always true + initialize the variable 'a' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + '&&' within '||' + place parentheses around the '&&' expression to silence this warning + variable 'flag2' is uninitialized when used here + initialize the variable 'flag2' to silence this warning + variable 'flag3' is uninitialized when used here + initialize the variable 'flag3' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + variable 'd' is uninitialized when used here + initialize the variable 'd' to silence this warning + variable 'e' is uninitialized when used here + initialize the variable 'e' to silence this warning + variable 'f' is uninitialized when used here + initialize the variable 'f' to silence this warning + expression result unused + shift count >= width of type + shift count >= width of type + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + variable 'd' is uninitialized when used here + initialize the variable 'd' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + unused variable 'c' + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'j' is incremented both in the loop header and in the loop body + incremented here + equality comparison result unused + use '=' to turn this equality comparison into an assignment + relational comparison result unused + relational comparison result unused + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + switch condition has boolean value + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + relational comparison result unused + unused variable 'b' + unused variable 'ut_int' + variable 'i' is uninitialized when used here + initialize the variable 'i' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + character sequence "/*" used inside the comment : + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + ContinueStmt used: + GotoStmt used: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + More than one ReturnStmt used in the body of FunctionDecl: + "FunctionDecl" is recursive: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + ImplicitCastExpr is narrowing: + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + ImplicitCastExpr is narrowing: + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not primary expressions : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not effectively-boolean values : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ForStmt does not have a child CompoundStmt: + WhileStmt does not have a child CompoundStmt: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If-Else If" statement has no ending Else: + "If" statement has no braces {}: + "If" statement has no braces {}: + staic local variable does not have initialization : + staic local variable does not have initialization : + "Else" statement has no braces {}: + "If-Else If" statement has no ending Else: + "If-Else If" statement has no ending Else: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "Else" statement has no braces {}: + "If-Else If" statement has no ending Else: + "SwitchStmt" has a caseStmt that's missing a breakStmt: + "SwitchStmt" does not have a defaultStmt: + "CaseStmt" has a CompoundStmt ancestor that is not the child of the SwitchStmt: + "SwitchStmt" has a caseStmt that's missing a breakStmt: + "SwitchStmt" does not have a defaultStmt: + "SwitchStmt" does not have a CaseStmt: + Function does not return anything but is missing the void keyword for the return type : + Function does not take any parameters but is not using the void keyword : + staic local variable does not have initialization : + staic local variable does not have initialization : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + Implicit test of an expr against zero which is not known to return a boolean result: + FunctionToPointerDecay: + staic local variable does not have initialization : + Native CPP array declared: + Native pointer declared: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Native CPP array used + staic local variable does not have initialization : + Native CPP array declared: + staic local variable does not have initialization : + Native CPP array declared: + staic local variable does not have initialization : + Native CPP array declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + Native pointer used: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Native pointer used: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Native pointer used: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + "If-Else If" statement has no ending Else: + ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer-type operands to BinaryOperator dont point to the same array : + Pointer arithmatic for non-array pointers : + Native pointer used: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Pointer arithmatic for non-array pointers : + Native pointer used: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + staic local variable does not have initialization : + staic local variable does not have initialization : + BitField of type signed integer has a length of less than 2 in bits : + staic local variable does not have initialization : + staic local variable does not have initialization : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + staic local variable does not have initialization : + Native CPP array declared: + Native CPP array declared: + staic local variable does not have initialization : + Native CPP array declared: + first enumeration has integerliteral initialization but not all enumerations do : + first enumeration does not have integerliteral initialization but at least one other enumeration does : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + staic local variable does not have initialization : + staic local variable does not have initialization : + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + staic local variable does not have initialization : + sizeof working on an expr with a side-effect : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Righ-hand expr has side-effect + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + assignment operator used in an expr that is known to return boolean: + ImplicitCastExpr is narrowing: + Righ-hand expr has side-effect + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + staic local variable does not have initialization : + staic local variable does not have initialization : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not effectively-boolean values : + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not effectively-boolean values : + EffectivelyBooleanExpr's result is known at compile-time: + EffectivelyBooleanExpr's result is known at compile-time: + RHS and/or LHS operands are not effectively-boolean values : + EffectivelyBooleanExpr's result is known at compile-time: + EffectivelyBooleanExpr's result is known at compile-time: + RHS and/or LHS operands are not primary expressions : + RHS and/or LHS operands are not effectively-boolean values : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + staic local variable does not have initialization : + shift size should be between zero and one less than the size of the LHS operand: + shift size should be between zero and one less than the size of the LHS operand: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + UnaryOperator - has an expr with an unsigned underlying type: + UnaryOperator - has an expr with an unsigned underlying type: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Comma used: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Unary ++ or -- have been used in an expr with other operators: + Unary ++ or -- have been used in an expr with other operators: + Unary ++ or -- have been used in an expr with other operators: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Implicit test of an expr against zero which is not known to return a boolean result: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Float type expression checked for equality/inequality: + Float type expression checked for equality/inequality: + Float type expression checked for equality/inequality: + assignment operator used in an expr that is known to return boolean: + ImplicitCastExpr is narrowing: + Float type expression checked for equality/inequality: + staic local variable does not have initialization : + Float type used in the controlling expression of a forstmt: + Float type expression checked for equality/inequality: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ForStmt controlling variable modified in the body of the loop: + ForStmt controlling variable modified in the body of the loop: + ForStmt controlling variable modified in the body of the loop: + The condition expression in the ForStmt has side-effect: + The expression in the ForStmt condition does not return a boolean: + Comma used: + Unary ++ or -- have been used in an expr with other operators: + ForStmt controlling variable modified in the body of the loop: + Comma used: + Comma used: + Comma used: + Unary ++ or -- have been used in an expr with other operators: + Unary ++ or -- have been used in an expr with other operators: + ForStmt controlling variable modified in the body of the loop: + Comma used: + Comma used: + Comma used: + Unary ++ or -- have been used in an expr with other operators: + Unary ++ or -- have been used in an expr with other operators: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + GotoStmt used: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ForStmt controlling variable modified in the body of the loop: + "If" statement has no braces {}: + "If" statement has no braces {}: + More than one BreakStmt used in the loop counter: + ForStmt controlling variable modified in the body of the loop: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + More than one BreakStmt used in the loop counter: + "If" statement has no braces {}: + "If" statement has no braces {}: + More than one BreakStmt used in the loop counter: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + "If" statement has no braces {}: + staic local variable does not have initialization : + "If" statement has no braces {}: + "Else" statement has no braces {}: + "If" statement has no braces {}: + More than one ReturnStmt used in the body of FunctionDecl: + staic local variable does not have initialization : + "SwitchStmt" has a caseStmt that's missing a breakStmt: + "SwitchStmt" does not have a defaultStmt: + Switch expression is effectively boolean: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + The three expressions of a ForStmt shall either all exist or not exist at all or only the initialization can be missing: + staic local variable does not have initialization : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Function does not have any external calls but is not declared as static : + Object (shift) is only being used in one block (test21) but is not defined inside that block: + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + '/*' within block comment + Function-like macro used : + Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : + Function-like macro used : + Function-like macro used : + Function-like macro's argument contains macros : + Function-like macro used : + Macro has # token : + Funciton-like macro's parameters are not enclosed in parantheses or dont have hash : + Function-like macro used : + Macro has ## token : + Function-like macro used : + Macro has ## token : + Macro has # token : + Macro has # token : + Macro has ## token : + Macro has # and ## tokens : + Function-like macro used : + Macro has ## token : + Function-like macro used : + redefining builtin macro + Redefining built-in macro: + redefining builtin macro + Redefining built-in macro: + redefining builtin macro + Redefining built-in macro: + Use of #undef is illegal : + C keyword defined : + C keyword undefined : + Use of #undef is illegal : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + macro expansion producing 'defined' has undefined behavior + "defined" has undefined behaviour: + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Use of #undef is illegal : + // comments are not allowed in this language + Illegal comment format(/*...*/) used: + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Funciton-like macro invoked with wrong number of arguments: + unused variable 'hiddenvisibility' + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'z' is uninitialized when used here + variable 'z' is declared here + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + incompatible pointer to integer conversion assigning to 'char' from 'char [2]' + incompatible pointer to integer conversion assigning to 'unsigned char' from 'char [2]' + variable 'sum' is uninitialized when used here + initialize the variable 'sum' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + control reaches end of non-void function + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + unused variable 'a' + unused variable 'b' + unused variable 'c' + unused variable 'abcdefghijklmnopqrstuvwxyz1234567890' + unused variable 'abcdefghijklmnopqrstuvwxyz12345678902' + unused variable 'a' + unused variable 'b' + control reaches end of non-void function + unused variable 'a' + unused variable 'b' + control reaches end of non-void function + Use of #undef is illegal : + unused variable 'b' + unused variable 'garbage' + unused variable 'garbage2' + control reaches end of non-void function + variable 'sum' is uninitialized when used here + initialize the variable 'sum' to silence this warning + variable 'sum2' is uninitialized when used here + initialize the variable 'sum2' to silence this warning + incompatible pointer types assigning to 'int *' from 'double *' + declaration does not declare anything + cast to 'int **(*)()' from smaller integer type 'int' + incompatible pointer types assigning to 'int **(**)()' from 'int **(*)()'; take the address with & + incompatible pointer types assigning to 'int **(**)()' from 'int **(*)()' + unused variable 'p1' + unused variable 'p2' + unused variable 'ps1' + unused variable 'ps2' + unused variable 'ps3' + unused variable 'fedupp1' + unused variable 'crazycast1' + unused variable 'pfunc3' + unused variable 'pfunc4' + unused variable 'pfunc5' + unused variable 'pfunc6' + variable 'pfunc1' is uninitialized when used here + initialize the variable 'pfunc1' to silence this warning + variable 'crazycast2' is uninitialized when used here + initialize the variable 'crazycast2' to silence this warning + variable 'p1' is uninitialized when used here + initialize the variable 'p1' to silence this warning + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + trigraph converted to '~' character + Use of trigraphs is illegal: + trigraph converted to '~' character + Use of trigraphs is illegal: + unused variable 'stringlit' + variable 'mode' is uninitialized when used here + initialize the variable 'mode' to silence this warning + variable 'pci' is uninitialized when used here + initialize the variable 'pci' to silence this warning + variable 'pvi' is uninitialized when used here + initialize the variable 'pvi' to silence this warning + variable 'pcpi' is uninitialized when used here + initialize the variable 'pcpi' to silence this warning + variable 'ppci' is uninitialized when used here + initialize the variable 'ppci' to silence this warning + '/*' within block comment + variable 'c' is uninitialized when used here + initialize the variable 'c' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + variable 'e' is uninitialized when used here + initialize the variable 'e' to silence this warning + variable 'b2' is uninitialized when used here + initialize the variable 'b2' to silence this warning + implicit declaration of function 'asm' + expression result unused + tentative array definition assumed to have one element + unused function 'test33' + ArrayType incomplete at the end of the translation unit : + Native CPP array declared: + Native CPP array declared: + Native CPP array declared: + Union declared: + Union declared: + Union declared: + Union declared: + Native CPP array field used + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + EffectivelyBooleanExpr's result is known at compile-time: + Constant Unsinged Expr evaluation resuslts in an overflow: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Simple char type should only hold character values: + Simple char type should only hold character values: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Signed or unsigned char type should only hold numeric values: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + ImplicitCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Function does not return anything but is missing the void keyword for the return type : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Macro defined inside a block : + Function does not take any parameters but is not using the void keyword : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Identifier relies on the significance of more than 31 charcaters: + staic local variable does not have initialization : + Identifier relies on the significance of more than 31 charcaters: + Function does not return anything but is missing the void keyword for the return type : + staic local variable does not have initialization : + staic local variable does not have initialization : + Function does not return anything but is missing the void keyword for the return type : + staic local variable does not have initialization : + staic local variable does not have initialization : + Macro undefined inside a block : + Function does not return anything but is missing the void keyword for the return type : + staic local variable does not have initialization : + Native CPP array declared: + staic local variable does not have initialization : + Native CPP array declared: + staic local variable does not have initialization : + Native pointer declared: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native pointer used: + Native CPP array used + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + Native Array used - pointer points to an array: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer used: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Pointer has more than 2 levels on indirection : + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + Native pointer used: + staic local variable does not have initialization : + Native pointer used: + CStyleCastExpr - Conversion of PointerType to or from IntegralType is recommended against: + staic local variable does not have initialization : + Native pointer declared: + Native pointer used: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + Native pointer used: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + CStyleCastExpr - FunctionPointerType converted to or from a type other than IntegralType: + Native pointer used: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Pointer has more than 2 levels on indirection : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Pointer has more than 2 levels on indirection : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Pointer has more than 2 levels on indirection : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + ImplicitCastExpr changes the signedness of the type: + ImplicitCastExpr is narrowing: + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + ImplicitCastExpr is narrowing: + Native pointer declared: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer declared: + Native pointer used: + Native pointer used: + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + Native pointer used: + CStyleCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Native pointer used: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + Unary ++ or -- have been used in an expr with other operators: + Implicit test of an expr against zero which is not known to return a boolean result: + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + ImplicitCastExpr - Conversion of FloatingType to or from IntegralType is recommended against: + ImplicitCastExpr is narrowing: + ImplicitCastExpr is narrowing: + staic local variable does not have initialization : + Native CPP array declared: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Octal escape sequence used: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Native pointer declared: + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + Native pointer used: + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + Native pointer used: + Pointer arithmatic for non-array pointers : + The only allowed form of pointer arithmetic is array indexing : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + Pointer arithmatic for non-array pointers : + Native pointer used: + CallExpr number of arguments does not equal the number of parameters in the declaration: + The only allowed form of pointer arithmetic is array indexing : + Native CPP array used + Object (bubu) is only being used in one block (test33) but is not defined inside that block: + Incomplete struct declared: + Incomplete struct declared: + Incomplete union declared: + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + suggest braces around initialization of subobject + suggest braces around initialization of subobject + suggest braces around initialization of subobject + unused variable 'z1' + variable 'iz2' is uninitialized when used here + initialize the variable 'iz2' to silence this warning + variable 'iz4' is uninitialized when used here + initialize the variable 'iz4' to silence this warning + variable 'n2' is uninitialized when used here + initialize the variable 'n2' to silence this warning + // comments are not allowed in this language + Illegal comment format(/*...*/) used: + unused variable 'staticint1' + address of stack memory associated with local variable 'localauto' returned + incompatible pointer types assigning to 'int *' from 'float *' + multi-character character constant + implicit conversion from 'int' to 'unsigned char' changes value from 2105 to 57 + unused variable 'printf' + Native CPP array declared: + Native CPP array declared: + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + ImplicitCastExpr is widening for complex float type: + ImplicitCastExpr is widening for complex float type: + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + staic local variable does not have initialization : + ImplicitCastExpr is widening for complex float type: + ImplicitCastExpr is widening for complex integer type: + ImplicitCastExpr is widening for complex integer type: + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Macro undefined inside a block : + Macro undefined inside a block : + staic local variable does not have initialization : + ImplicitCastExpr is narrowing: + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + Result of operands << or ~ must be explicitly cast to the type of the expression: + Macro defined inside a block : + staic local variable does not have initialization : + Macro defined inside a block : + Macro undefined inside a block : + staic local variable does not have initialization : + Native CPP array declared: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Native CPP array used + Macro defined inside a block : + Macro defined inside a block : + staic local variable does not have initialization : + staic local variable does not have initialization : + Native pointer declared: + staic local variable does not have initialization : + Native pointer used: + ImplicitCastExpr - PointerType has implicit BitCast. This could be caused by a cast removing const or volatile qualifier from the type addressed by a pointer or by a cast to a different function or object type: + Union declared: + Possible violation of 12.12-access to the underlying bit representation of a floating type: + Union declared: + staic local variable does not have initialization : + Bitwise operator has signed RHS and/or LHS operands: + Bitwise operator has signed RHS and/or LHS operands: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + staic local variable does not have initialization : + Native CPP array declared: + Signed or unsigned char type should only hold numeric values: + Native CPP array used + Octal escape sequence used: + Signed or unsigned char type should only hold numeric values: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Octal escape sequence used: + Native CPP array used + Signed or unsigned char type should only hold numeric values: + Native CPP array used + Hexadecimal escape sequence used: + staic local variable does not have initialization : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + // comments are not allowed in this language + Illegal comment format(/*...*/) used: + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + '/*' within block comment + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + Macro does not expand to braced initializer,panthesizes expression,string literal,constant,do-while-zero,storage class specifier or type qualifier : + declaration specifier missing, defaulting to 'int' + variable 'a' is uninitialized when used here + initialize the variable 'a' to silence this warning + variable 'b' is uninitialized when used here + initialize the variable 'b' to silence this warning + declaration does not declare anything + '/*' within block comment + unused variable 'p1' + unused variable 'p2' + unused variable 'ps1' + unused variable 'ps2' + unused variable 'ps3' + unused variable 'pfunc1' + unused variable 'pfunc2' + unused variable 'pfunc3' + unused variable 'pfunc4' + unused variable 'pfunc5' + unused variable 'pfunc6' + unused function 'im_a_mlaign_func' + unused function 'im_a_benign_func' + unused function 'im_a_minion_03' + Union declared: + Possible violation of 12.12-access to the underlying bit representation of a floating type: + Native CPP array field used + External array type is incomplete and has no initialization : + ArrayType incomplete at the end of the translation unit : + Native CPP array declared: + Variable definition inside a header file : + Variable definition inside a header file : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Function definition inside a header file : + Variable definition inside a header file : + staic local variable does not have initialization : + Variable definition inside a header file : + staic local variable does not have initialization : + Variable definition inside a header file : + staic local variable does not have initialization : + Function definition inside a header file : + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + Pointer has more than 2 levels on indirection : + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Variable definition inside a header file : + staic local variable does not have initialization : + Pointer has more than 2 levels on indirection : + Native pointer declared: + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Pointer has more than 2 levels on indirection : + pointerType ParmVarDecl is not used to change the contents of the object it points to but is not declared as const : + Native pointer declared: + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Incomplete struct declared: + 'extern' variable has an initializer + 'extern' variable has an initializer + suggest braces around initialization of subobject + suggest braces around initialization of subobject + // comments are not allowed in this language + Illegal comment format(/*...*/) used: + control reaches end of non-void function + unused function 'test33' + External array type is incomplete and has no initialization : + ArrayType incomplete at the end of the translation unit : + Native CPP array declared: + Variable definition inside a header file : + character sequence "/*" used inside the comment : + Variable definition inside a header file : + Native CPP array declared: + Variable definition inside a header file : + Native CPP array declared: + Variable definition inside a header file : + Native CPP array declared: + Variable definition inside a header file : + Variable definition inside a header file : + Function definition inside a header file : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Function does not take any parameters but is not using the void keyword : + Function definition inside a header file : + Macro defined inside a block : + Macro defined inside a block : + Macro defined inside a block : + Function does not return anything but is missing the void keyword for the return type : + Function definition inside a header file : + Macro defined inside a block : + Macro defined inside a block : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + Function does not have a FunctionDecl that is not a definition : + errno shall not be used : + stdlib signal.h is included in the project. use is forbidden : + stdlib stdio.h is included in the project. use is forbidden : + stdlib time.h is included in the project. use is forbidden : + Function-like macro used : + Function-like macro used : + Function-like macro used : + Illegal NullStmt form: + External function or object is defined in more than one file: + External function or object is defined in more than one file: + External function or object is defined in more than one file: + External function or object is defined in more than one file: + External function or object is defined in more than one file: + Identifier re-used: + Typedef identifier is not unique: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier with static storage duration is re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Tag identifier is not unique: + The Identifier is re-used in another namespace: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Tag identifier is not unique: + The Identifier is re-used in another namespace: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Tag identifier is not unique: + The Identifier is re-used in another namespace: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + The Identifier is re-used in another namespace: + Identifier re-used: + The Identifier is re-used in another namespace: + Identifier re-used: + The Identifier is re-used in another namespace: + Identifier re-used: + Identifier re-used: + Identifier re-used: + The Identifier is re-used in another namespace: + Identifier re-used: + The Identifier is re-used in another namespace: + Identifier re-used: + Tag identifier is not unique: + The Identifier is re-used in another namespace: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Tag identifier is not unique: + The Identifier is re-used in another namespace: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + This identifier is being hidden by an identifier of the same name in file scope: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Tag identifier is not unique: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + Identifier re-used: + diff --git a/oracle/m0/oracle.mutator b/oracle/m0/oracle.mutator new file mode 100644 index 0000000..f7ea262 --- /dev/null +++ b/oracle/m0/oracle.mutator @@ -0,0 +1,18 @@ +action_name:my_action1 +executable_name:mutator-lvl0 +#these are the options specific to the executable +exec_opts:-MCEA -SysHeader=false -MainOnly=true -MCV=C2 +in_files:./test/testFuncs1.c ./test/testFuncs2.c ./test/testFuncs3.c ./test/testFuncs1.h ./test/testFuncs2.h ./test/testFuncs3.h +#clang options +libtooling_options:-std=c90 -I/lib/gcc/x86_64-redhat-linux/6.3.1/include -Wall +#the output file +out_files:./test/misra-log +#the log file +log_files: +print_pretty:true +end_action:run + +action_name:my_action2 +executable_name:safercpp-arr +out_files:./test/misra-log +end_action:stop -- cgit v1.2.3 From b8b487fd37228c97c8c4de0e18c056fd22659c0e Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:13:23 +0430 Subject: make install makes oracle executable, updated a comment --- makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index d91b38f..1ca05c0 100644 --- a/makefile +++ b/makefile @@ -66,6 +66,7 @@ install: chmod +x ./mutator.sh chmod +x ./extra-tools/ReportPrintPretty.sh chmod +x ./extra-tools/precommitTests.sh + chmod +x ./extra-tools/oracle.sh if [[ ! -d "./temp" ]]; then mkdir temp; fi if [[ ! -d "./reliquary" ]]; then mkdir reliquary; fi if [[ ! -d "./reliquary/m0" ]]; then mkdir ./reliquary/m0; fi @@ -76,7 +77,7 @@ install: help: @echo '- There is help.' @echo '- All is the default.' - @echo '- install makes the scripts executable. Currently this is all it does.' + @echo '- install makes the scripts executable. Also creates the reliquary.' @echo '- Clean.' @echo '- TAGS will run ctags on the C/C++ source files.' @echo '- You can use the target names as build targets to just build one executable.' -- cgit v1.2.3 From 5e654f25a1b661b5dd16f067b2ef3d941d452787 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:13:45 +0430 Subject: basically lua.c wrappes in extern C. --- bruiser/luadummy.h | 597 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 597 insertions(+) create mode 100644 bruiser/luadummy.h diff --git a/bruiser/luadummy.h b/bruiser/luadummy.h new file mode 100644 index 0000000..a7a21e7 --- /dev/null +++ b/bruiser/luadummy.h @@ -0,0 +1,597 @@ +extern "C" +{ +/* +** $Id: lua.c,v 1.230 2017/01/12 17:14:26 roberto Exp $ +** Lua stand-alone interpreter +** See Copyright Notice in lua.h +*/ + +#define lua_c + +#include "lua-5.3.4/src/lprefix.h" + + +#include +#include +#include +#include + +#include "lua-5.3.4/src/lua.h" + +#include "lua-5.3.4/src/lauxlib.h" +#include "lua-5.3.4/src/lualib.h" + + + +#if !defined(LUA_PROMPT) +#define LUA_PROMPT "> " +#define LUA_PROMPT2 ">> " +#endif + +#if !defined(LUA_PROGNAME) +#define LUA_PROGNAME "lua" +#endif + +#if !defined(LUA_MAXINPUT) +#define LUA_MAXINPUT 512 +#endif + +#if !defined(LUA_INIT_VAR) +#define LUA_INIT_VAR "LUA_INIT" +#endif + +#define LUA_INITVARVERSION LUA_INIT_VAR LUA_VERSUFFIX + + +/* +** lua_stdin_is_tty detects whether the standard input is a 'tty' (that +** is, whether we're running lua interactively). +*/ +#if !defined(lua_stdin_is_tty) /* { */ + +#if defined(LUA_USE_POSIX) /* { */ + +#include +#define lua_stdin_is_tty() isatty(0) + +#elif defined(LUA_USE_WINDOWS) /* }{ */ + +#include +#include + +#define lua_stdin_is_tty() _isatty(_fileno(stdin)) + +#else /* }{ */ + +/* ISO C definition */ +#define lua_stdin_is_tty() 1 /* assume stdin is a tty */ + +#endif /* } */ + +#endif /* } */ + + +/* +** lua_readline defines how to show a prompt and then read a line from +** the standard input. +** lua_saveline defines how to "save" a read line in a "history". +** lua_freeline defines how to free a line read by lua_readline. +*/ +#if !defined(lua_readline) /* { */ + +#if defined(LUA_USE_READLINE) /* { */ + +#include +#include +#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL) +#define lua_saveline(L,line) ((void)L, add_history(line)) +#define lua_freeline(L,b) ((void)L, free(b)) + +#else /* }{ */ + +#define lua_readline(L,b,p) \ + ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ + fgets(b, LUA_MAXINPUT, stdin) != NULL) /* get line */ +#define lua_saveline(L,line) { (void)L; (void)line; } +#define lua_freeline(L,b) { (void)L; (void)b; } + +#endif /* } */ + +#endif /* } */ + + + + +static lua_State *globalL = NULL; + +static const char *progname = LUA_PROGNAME; + + +/* +** Hook set by signal function to stop the interpreter. +*/ +static void lstop (lua_State *L, lua_Debug *ar) { + (void)ar; /* unused arg. */ + lua_sethook(L, NULL, 0, 0); /* reset hook */ + luaL_error(L, "interrupted!"); +} + + +/* +** Function to be called at a C signal. Because a C signal cannot +** just change a Lua state (as there is no proper synchronization), +** this function only sets a hook that, when called, will stop the +** interpreter. +*/ +static void laction (int i) { + signal(i, SIG_DFL); /* if another SIGINT happens, terminate process */ + lua_sethook(globalL, lstop, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1); +} + + +static void print_usage (const char *badoption) { + lua_writestringerror("%s: ", progname); + if (badoption[1] == 'e' || badoption[1] == 'l') + lua_writestringerror("'%s' needs argument\n", badoption); + else + lua_writestringerror("unrecognized option '%s'\n", badoption); + lua_writestringerror( + "usage: %s [options] [script [args]]\n" + "Available options are:\n" + " -e stat execute string 'stat'\n" + " -i enter interactive mode after executing 'script'\n" + " -l name require library 'name'\n" + " -v show version information\n" + " -E ignore environment variables\n" + " -- stop handling options\n" + " - stop handling options and execute stdin\n" + , + progname); +} + + +/* +** Prints an error message, adding the program name in front of it +** (if present) +*/ +static void l_message (const char *pname, const char *msg) { + if (pname) lua_writestringerror("%s: ", pname); + lua_writestringerror("%s\n", msg); +} + + +/* +** Check whether 'status' is not OK and, if so, prints the error +** message on the top of the stack. It assumes that the error object +** is a string, as it was either generated by Lua or by 'msghandler'. +*/ +static int report (lua_State *L, int status) { + if (status != LUA_OK) { + const char *msg = lua_tostring(L, -1); + l_message(progname, msg); + lua_pop(L, 1); /* remove message */ + } + return status; +} + + +/* +** Message handler used to run all chunks +*/ +static int msghandler (lua_State *L) { + const char *msg = lua_tostring(L, 1); + if (msg == NULL) { /* is error object not a string? */ + if (luaL_callmeta(L, 1, "__tostring") && /* does it have a metamethod */ + lua_type(L, -1) == LUA_TSTRING) /* that produces a string? */ + return 1; /* that is the message */ + else + msg = lua_pushfstring(L, "(error object is a %s value)", + luaL_typename(L, 1)); + } + luaL_traceback(L, L, msg, 1); /* append a standard traceback */ + return 1; /* return the traceback */ +} + + +/* +** Interface to 'lua_pcall', which sets appropriate message function +** and C-signal handler. Used to run all chunks. +*/ +static int docall (lua_State *L, int narg, int nres) { + int status; + int base = lua_gettop(L) - narg; /* function index */ + lua_pushcfunction(L, msghandler); /* push message handler */ + lua_insert(L, base); /* put it under function and args */ + globalL = L; /* to be available to 'laction' */ + signal(SIGINT, laction); /* set C-signal handler */ + status = lua_pcall(L, narg, nres, base); + signal(SIGINT, SIG_DFL); /* reset C-signal handler */ + lua_remove(L, base); /* remove message handler from the stack */ + return status; +} + + +static void print_version (void) { + lua_writestring(LUA_COPYRIGHT, strlen(LUA_COPYRIGHT)); + lua_writeline(); +} + + +/* +** Create the 'arg' table, which stores all arguments from the +** command line ('argv'). It should be aligned so that, at index 0, +** it has 'argv[script]', which is the script name. The arguments +** to the script (everything after 'script') go to positive indices; +** other arguments (before the script name) go to negative indices. +** If there is no script name, assume interpreter's name as base. +*/ +static void createargtable (lua_State *L, char **argv, int argc, int script) { + int i, narg; + if (script == argc) script = 0; /* no script name? */ + narg = argc - (script + 1); /* number of positive indices */ + lua_createtable(L, narg, script + 1); + for (i = 0; i < argc; i++) { + lua_pushstring(L, argv[i]); + lua_rawseti(L, -2, i - script); + } + lua_setglobal(L, "arg"); +} + + +static int dochunk (lua_State *L, int status) { + if (status == LUA_OK) status = docall(L, 0, 0); + return report(L, status); +} + + +static int dofile (lua_State *L, const char *name) { + return dochunk(L, luaL_loadfile(L, name)); +} + + +static int dostring (lua_State *L, const char *s, const char *name) { + return dochunk(L, luaL_loadbuffer(L, s, strlen(s), name)); +} + + +/* +** Calls 'require(name)' and stores the result in a global variable +** with the given name. +*/ +static int dolibrary (lua_State *L, const char *name) { + int status; + lua_getglobal(L, "require"); + lua_pushstring(L, name); + status = docall(L, 1, 1); /* call 'require(name)' */ + if (status == LUA_OK) + lua_setglobal(L, name); /* global[name] = require return */ + return report(L, status); +} + + +/* +** Returns the string to be used as a prompt by the interpreter. +*/ +static const char *get_prompt (lua_State *L, int firstline) { + const char *p; + lua_getglobal(L, firstline ? "_PROMPT" : "_PROMPT2"); + p = lua_tostring(L, -1); + if (p == NULL) p = (firstline ? LUA_PROMPT : LUA_PROMPT2); + return p; +} + +/* mark in error messages for incomplete statements */ +#define EOFMARK "" +#define marklen (sizeof(EOFMARK)/sizeof(char) - 1) + + +/* +** Check whether 'status' signals a syntax error and the error +** message at the top of the stack ends with the above mark for +** incomplete statements. +*/ +static int incomplete (lua_State *L, int status) { + if (status == LUA_ERRSYNTAX) { + size_t lmsg; + const char *msg = lua_tolstring(L, -1, &lmsg); + if (lmsg >= marklen && strcmp(msg + lmsg - marklen, EOFMARK) == 0) { + lua_pop(L, 1); + return 1; + } + } + return 0; /* else... */ +} + + +/* +** Prompt the user, read a line, and push it into the Lua stack. +*/ +static int pushline (lua_State *L, int firstline) { + char buffer[LUA_MAXINPUT]; + char *b = buffer; + size_t l; + const char *prmt = get_prompt(L, firstline); + int readstatus = lua_readline(L, b, prmt); + if (readstatus == 0) + return 0; /* no input (prompt will be popped by caller) */ + lua_pop(L, 1); /* remove prompt */ + l = strlen(b); + if (l > 0 && b[l-1] == '\n') /* line ends with newline? */ + b[--l] = '\0'; /* remove it */ + if (firstline && b[0] == '=') /* for compatibility with 5.2, ... */ + lua_pushfstring(L, "return %s", b + 1); /* change '=' to 'return' */ + else + lua_pushlstring(L, b, l); + lua_freeline(L, b); + return 1; +} + + +/* +** Try to compile line on the stack as 'return ;'; on return, stack +** has either compiled chunk or original line (if compilation failed). +*/ +static int addreturn (lua_State *L) { + const char *line = lua_tostring(L, -1); /* original line */ + const char *retline = lua_pushfstring(L, "return %s;", line); + int status = luaL_loadbuffer(L, retline, strlen(retline), "=stdin"); + if (status == LUA_OK) { + lua_remove(L, -2); /* remove modified line */ + if (line[0] != '\0') /* non empty? */ + lua_saveline(L, line); /* keep history */ + } + else + lua_pop(L, 2); /* pop result from 'luaL_loadbuffer' and modified line */ + return status; +} + + +/* +** Read multiple lines until a complete Lua statement +*/ +static int multiline (lua_State *L) { + for (;;) { /* repeat until gets a complete statement */ + size_t len; + const char *line = lua_tolstring(L, 1, &len); /* get what it has */ + int status = luaL_loadbuffer(L, line, len, "=stdin"); /* try it */ + if (!incomplete(L, status) || !pushline(L, 0)) { + lua_saveline(L, line); /* keep history */ + return status; /* cannot or should not try to add continuation line */ + } + lua_pushliteral(L, "\n"); /* add newline... */ + lua_insert(L, -2); /* ...between the two lines */ + lua_concat(L, 3); /* join them */ + } +} + + +/* +** Read a line and try to load (compile) it first as an expression (by +** adding "return " in front of it) and second as a statement. Return +** the final status of load/call with the resulting function (if any) +** in the top of the stack. +*/ +static int loadline (lua_State *L) { + int status; + lua_settop(L, 0); + if (!pushline(L, 1)) + return -1; /* no input */ + if ((status = addreturn(L)) != LUA_OK) /* 'return ...' did not work? */ + status = multiline(L); /* try as command, maybe with continuation lines */ + lua_remove(L, 1); /* remove line from the stack */ + lua_assert(lua_gettop(L) == 1); + return status; +} + + +/* +** Prints (calling the Lua 'print' function) any values on the stack +*/ +static void l_print (lua_State *L) { + int n = lua_gettop(L); + if (n > 0) { /* any result to be printed? */ + luaL_checkstack(L, LUA_MINSTACK, "too many results to print"); + lua_getglobal(L, "print"); + lua_insert(L, 1); + if (lua_pcall(L, n, 0, 0) != LUA_OK) + l_message(progname, lua_pushfstring(L, "error calling 'print' (%s)", + lua_tostring(L, -1))); + } +} + + +/* +** Do the REPL: repeatedly read (load) a line, evaluate (call) it, and +** print any results. +*/ +static void doREPL (lua_State *L) { + int status; + const char *oldprogname = progname; + progname = NULL; /* no 'progname' on errors in interactive mode */ + while ((status = loadline(L)) != -1) { + if (status == LUA_OK) + status = docall(L, 0, LUA_MULTRET); + if (status == LUA_OK) l_print(L); + else report(L, status); + } + lua_settop(L, 0); /* clear stack */ + lua_writeline(); + progname = oldprogname; +} + + +/* +** Push on the stack the contents of table 'arg' from 1 to #arg +*/ +static int pushargs (lua_State *L) { + int i, n; + if (lua_getglobal(L, "arg") != LUA_TTABLE) + luaL_error(L, "'arg' is not a table"); + n = (int)luaL_len(L, -1); + luaL_checkstack(L, n + 3, "too many arguments to script"); + for (i = 1; i <= n; i++) + lua_rawgeti(L, -i, i); + lua_remove(L, -i); /* remove table from the stack */ + return n; +} + + +static int handle_script (lua_State *L, char **argv) { + int status; + const char *fname = argv[0]; + if (strcmp(fname, "-") == 0 && strcmp(argv[-1], "--") != 0) + fname = NULL; /* stdin */ + status = luaL_loadfile(L, fname); + if (status == LUA_OK) { + int n = pushargs(L); /* push arguments to script */ + status = docall(L, n, LUA_MULTRET); + } + return report(L, status); +} + + + +/* bits of various argument indicators in 'args' */ +#define has_error 1 /* bad option */ +#define has_i 2 /* -i */ +#define has_v 4 /* -v */ +#define has_e 8 /* -e */ +#define has_E 16 /* -E */ + +/* +** Traverses all arguments from 'argv', returning a mask with those +** needed before running any Lua code (or an error code if it finds +** any invalid argument). 'first' returns the first not-handled argument +** (either the script name or a bad argument in case of error). +*/ +static int collectargs (char **argv, int *first) { + int args = 0; + int i; + for (i = 1; argv[i] != NULL; i++) { + *first = i; + if (argv[i][0] != '-') /* not an option? */ + return args; /* stop handling options */ + switch (argv[i][1]) { /* else check option */ + case '-': /* '--' */ + if (argv[i][2] != '\0') /* extra characters after '--'? */ + return has_error; /* invalid option */ + *first = i + 1; + return args; + case '\0': /* '-' */ + return args; /* script "name" is '-' */ + case 'E': + if (argv[i][2] != '\0') /* extra characters after 1st? */ + return has_error; /* invalid option */ + args |= has_E; + break; + case 'i': + args |= has_i; /* (-i implies -v) *//* FALLTHROUGH */ + case 'v': + if (argv[i][2] != '\0') /* extra characters after 1st? */ + return has_error; /* invalid option */ + args |= has_v; + break; + case 'e': + args |= has_e; /* FALLTHROUGH */ + case 'l': /* both options need an argument */ + if (argv[i][2] == '\0') { /* no concatenated argument? */ + i++; /* try next 'argv' */ + if (argv[i] == NULL || argv[i][0] == '-') + return has_error; /* no next argument or it is another option */ + } + break; + default: /* invalid option */ + return has_error; + } + } + *first = i; /* no script name */ + return args; +} + + +/* +** Processes options 'e' and 'l', which involve running Lua code. +** Returns 0 if some code raises an error. +*/ +static int runargs (lua_State *L, char **argv, int n) { + int i; + for (i = 1; i < n; i++) { + int option = argv[i][1]; + lua_assert(argv[i][0] == '-'); /* already checked */ + if (option == 'e' || option == 'l') { + int status; + const char *extra = argv[i] + 2; /* both options need an argument */ + if (*extra == '\0') extra = argv[++i]; + lua_assert(extra != NULL); + status = (option == 'e') + ? dostring(L, extra, "=(command line)") + : dolibrary(L, extra); + if (status != LUA_OK) return 0; + } + } + return 1; +} + + + +static int handle_luainit (lua_State *L) { + const char *name = "=" LUA_INITVARVERSION; + const char *init = getenv(name + 1); + if (init == NULL) { + name = "=" LUA_INIT_VAR; + init = getenv(name + 1); /* try alternative name */ + } + if (init == NULL) return LUA_OK; + else if (init[0] == '@') + return dofile(L, init+1); + else + return dostring(L, init, name); +} + + +/* +** Main body of stand-alone interpreter (to be called in protected mode). +** Reads the options and handles them all. +*/ +static int pmain (lua_State *L) { + int argc = (int)lua_tointeger(L, 1); + char **argv = (char **)lua_touserdata(L, 2); + int script; + int args = collectargs(argv, &script); + luaL_checkversion(L); /* check that interpreter has correct version */ + if (argv[0] && argv[0][0]) progname = argv[0]; + if (args == has_error) { /* bad arg? */ + print_usage(argv[script]); /* 'script' has index of bad arg. */ + return 0; + } + if (args & has_v) /* option '-v'? */ + print_version(); + if (args & has_E) { /* option '-E'? */ + lua_pushboolean(L, 1); /* signal for libraries to ignore env. vars. */ + lua_setfield(L, LUA_REGISTRYINDEX, "LUA_NOENV"); + } + luaL_openlibs(L); /* open standard libraries */ + createargtable(L, argv, argc, script); /* create table 'arg' */ + if (!(args & has_E)) { /* no option '-E'? */ + if (handle_luainit(L) != LUA_OK) /* run LUA_INIT */ + return 0; /* error running LUA_INIT */ + } + if (!runargs(L, argv, script)) /* execute arguments -e and -l */ + return 0; /* something failed */ + if (script < argc && /* execute main script (if there is one) */ + handle_script(L, argv + script) != LUA_OK) + return 0; + if (args & has_i) /* -i option? */ + doREPL(L); /* do read-eval-print loop */ + else if (script == argc && !(args & (has_e | has_v))) { /* no arguments? */ + if (lua_stdin_is_tty()) { /* running in interactive mode? */ + print_version(); + doREPL(L); /* do read-eval-print loop */ + } + else dofile(L, NULL); /* executes stdin as a file */ + } + lua_pushboolean(L, 1); /* signal no errors */ + return 1; +} + +} -- cgit v1.2.3 From 08a980cf928dc5eb0e3b54b8869a143f85321d70 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:14:13 +0430 Subject: added a new command to the list --- bruiser/bruiser-extra.h | 1 + 1 file changed, 1 insertion(+) diff --git a/bruiser/bruiser-extra.h b/bruiser/bruiser-extra.h index 2f5de84..95e692d 100644 --- a/bruiser/bruiser-extra.h +++ b/bruiser/bruiser-extra.h @@ -108,6 +108,7 @@ std::vector LUA_FUNCS = "hijack", "hijack main", "m0", + "runlua", "_G", "_VERSION", "assert", -- cgit v1.2.3 From 0f059a28c6fb85ad39f3ec35b606f5e5ddfb09fe Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:17:06 +0430 Subject: now all commands are sent to the lua interpreter. what that simply means is that bruiser is an interactive lua interpreter that uses linenoise for shell-like functionality instead of what the normal lua interpreter does, plus it will feature its own functionality. Im updating the readme as well. I explain more there --- bruiser/bruiser.cpp | 105 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 92 insertions(+), 13 deletions(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 13d63b7..7a2cd88 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -49,6 +49,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.* #include "lua-5.3.4/src/lua.hpp" #include "lua-5.3.4/src/lualib.h" #include "lua-5.3.4/src/lauxlib.h" + +#include "luadummy.h" /**********************************************************************************************************************/ /*used namespaces*/ using namespace llvm; @@ -79,23 +81,39 @@ class LuaEngine LS = luaL_newstate(); } - void LoadBaseLib(void) - { - luaopen_base(LS); - } + /*@DEVI-this will just create member functions that open a single lua libarary. + * For example to load the string library just call LuaEngine::LoadstringLib().*/ +#define OPEN_LUA_LIBS(__x1) \ + void Load##__x1##Lib(void){\ + luaL_requiref(LS, #__x1, luaopen_##__x1, 1);} + + OPEN_LUA_LIBS(base) + OPEN_LUA_LIBS(table) + OPEN_LUA_LIBS(io) + OPEN_LUA_LIBS(string) + OPEN_LUA_LIBS(math) +#undef OPEN_LUA_LIBS void LoadAuxLibs(void) { - luaopen_table(LS); - luaopen_io(LS); - luaopen_string(LS); + luaL_requiref(LS, "table", luaopen_table, 1); + luaL_requiref(LS, "io", luaopen_io, 1); + luaL_requiref(LS, "string", luaopen_string, 1); } void LoadEverylib(void) { - this->LoadBaseLib(); - this->LoadAuxLibs(); - luaopen_math(LS); + luaL_openlibs(LS); + } + + void RunString(char* __lua_string) + { + + } + + void RunChunk(char* __lua_chunk) + { + dostring(LS, __lua_chunk, "test"); } int RunScript(char* __lua_script) @@ -103,6 +121,33 @@ class LuaEngine return luaL_dofile(LS, __lua_script); } + void Test(void) + { + luaL_dofile(LS, "./lua-scripts/test.lua"); + luaL_dofile(LS, "./lua-scripts/test1.lua"); + luaL_dofile(LS, "./lua-scripts/test2.lua"); + } + + void Test2(void) + { + luaL_dofile(LS, "./lua-scripts/test1.lua"); + } + + void Test3(void) + { + luaL_dofile(LS, "./lua-scripts/test2.lua"); + } + + void Test4(void) + { + luaL_dofile(LS, "./lua-scripts/test3.lua"); + } + + lua_State* GetLuaState(void) + { + return this->LS; + } + void Cleanup(void) { lua_close(LS); @@ -805,9 +850,22 @@ int main(int argc, const char **argv) linenoiseHistoryLoad(SHELL_HISTORY_FILE); linenoiseSetMultiLine(1); - /*start runnnin the cli*/ + /*start running the cli*/ { char* command; + +#if 1 + LuaEngine LE; + LE.LoadEverylib(); + + while((command = linenoise("bruiser>>")) != NULL) + { + linenoiseHistoryAdd(command); + linenoiseHistorySave(SHELL_HISTORY_FILE); + LE.RunChunk(command); + } +#endif + while((command = linenoise("bruiser>>")) != NULL) { linenoiseHistoryAdd(command); @@ -967,10 +1025,31 @@ int main(int argc, const char **argv) { LuaEngine LE; LE.LoadEverylib(); - LE.RunScript((char*)"/home/bloodstalker/devi/abbatoir/hole6/proto.lua"); - LE.Cleanup(); + LE.Test(); + //LE.Cleanup(); + continue; } +#if 1 + if (std::strcmp(command, "runluachain1") == 0) + { + LuaEngine LE; + LE.LoadEverylib(); + LE.Test2(); + //LE.Cleanup(); + continue; + } + + if (std::strcmp(command, "runluachain2") == 0) + { + LuaEngine LE; + LE.LoadEverylib(); + LE.Test3(); + //LE.Cleanup(); + continue; + } +#endif + if (command[0] == '!') { /*FIXME*/ -- cgit v1.2.3 From 2012c142dc7c07777dcb289b5d4669b26d4f9203 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:54:03 +0430 Subject: lua test scripts --- bruiser/lua-scripts/test.lua | 1 + bruiser/lua-scripts/test1.lua | 1 + bruiser/lua-scripts/test2.lua | 1 + bruiser/lua-scripts/test3.lua | 1 + 4 files changed, 4 insertions(+) create mode 100644 bruiser/lua-scripts/test.lua create mode 100644 bruiser/lua-scripts/test1.lua create mode 100644 bruiser/lua-scripts/test2.lua create mode 100644 bruiser/lua-scripts/test3.lua diff --git a/bruiser/lua-scripts/test.lua b/bruiser/lua-scripts/test.lua new file mode 100644 index 0000000..9c06d44 --- /dev/null +++ b/bruiser/lua-scripts/test.lua @@ -0,0 +1 @@ +print("hi, i'm bruiser.") diff --git a/bruiser/lua-scripts/test1.lua b/bruiser/lua-scripts/test1.lua new file mode 100644 index 0000000..fc6490e --- /dev/null +++ b/bruiser/lua-scripts/test1.lua @@ -0,0 +1 @@ +teststring = "im not supposed to be empty" diff --git a/bruiser/lua-scripts/test2.lua b/bruiser/lua-scripts/test2.lua new file mode 100644 index 0000000..e939cdb --- /dev/null +++ b/bruiser/lua-scripts/test2.lua @@ -0,0 +1 @@ +print (teststring) diff --git a/bruiser/lua-scripts/test3.lua b/bruiser/lua-scripts/test3.lua new file mode 100644 index 0000000..c6a65de --- /dev/null +++ b/bruiser/lua-scripts/test3.lua @@ -0,0 +1 @@ +os.exit()s -- cgit v1.2.3 From 93390514fc6e46ffe1198bbe938aac72f6ec5d09 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Thu, 1 Jun 2017 03:54:17 +0430 Subject: read it --- bruiser/README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bruiser/README.md b/bruiser/README.md index 3fef1f4..062ea3a 100644 --- a/bruiser/README.md +++ b/bruiser/README.md @@ -2,10 +2,24 @@ ### What is it? Bruiser is implemented as an interactive commandline interface. It features an embedded lua interpreter plus the history and auto-completion and suggestion features we have all come to expect from shell-like tools.
-Regarding the actual functionality, it will feature non-blind selective mutations. You can ask it to list information regrading the source codes it is run on. The eventuality of this idea is to help with maintaining code or in giving the viewer an overview of the code. The final feature is the name-sale. It looks at the code and decides how to break it. For more explanation please read on.
+Regarding the actual functionality, it will feature non-blind selective mutations. You can ask it to list information regrading the source codes it is run on. The eventuality of this idea is to help with maintaining code or in giving the viewer an overview of the code. The final feature is the name-sake. It looks at the code and decides how to break it. For more explanation please read on.
+ +### How it Works? +To put it simply, bruiser is an interactive lua interpreter that uses linenoise for shell-like features(history, tab-completion, auto-suggestion). You get the full power of lua plus the bruiser functions whcih are implemented as lua scripts that call back to the cpp code to get things done.
+To put this into perspecttive, think you run `list vars` in bruiser. It gets you the list of vars but that's it. You can't save them to a file or do anything else with them. With the old way of doing things I had to add a command that did that and then you could do it but what if you wanted to do something else? what then? well you get the idea. That would also mean that bruiser's language would be made up gradually which would result in something ugly and warrant a lot of rewrites.
+With the new way of doing things, the user is only limited by their imagination and lua, not me, and there is no learning curve for learning a garbage language that I would have to come up with.
+Also, there is no reason to implement any extra features to be able to automate your use of bruiser. just run a lua script and tell bruiser to run that.
### DSL? -bruiser has an embedded lua interpreter so nobody would have to deal with a new DSL.
+bruiser has an embedded lua interpreter so nobody would have to deal with a new DSL. It's good old lua.
+ +### Lua vs Luajit +In the current implementation, bruiser will only support lua and not luajit. luajit is way faster than lua which will play an important role in bruiser's overall performance but luajit is generally less stable than lua and usually behind in terms of what new features of lua the language it supports.
+The plan is to add both and for the user to be able to pick which one to use when running bruiser.
+ +### Warning +The current implementation loads all lua libraries which also includes it's `os` library. To give you an idea, `os.execute()` is very similar to `system()` in C. This decision has been made to speed up testing and the dev process.
+Also like `mutatord` and `mutatorclient`, bruiser does not need any sudo access.
### Non-blind Selective mutation? bruiser looks at your code, learns your code and then decides how to mutate your code. That's non-blind selective mutation.
-- cgit v1.2.3 From 02d39f7a442d0b820f00376bb023b7ed11aa6a37 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Fri, 2 Jun 2017 02:45:41 +0430 Subject: registering the functions in lua --- bruiser/bruiser.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 7a2cd88..91bac9b 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -92,6 +92,7 @@ class LuaEngine OPEN_LUA_LIBS(io) OPEN_LUA_LIBS(string) OPEN_LUA_LIBS(math) + OPEN_LUA_LIBS(os) #undef OPEN_LUA_LIBS void LoadAuxLibs(void) @@ -822,6 +823,37 @@ class LiveActionListArrays : public ASTFrontendAction }; /**********************************************************************************************************************/ /**********************************************************************************************************************/ +/*lua wrappers*/ +class LuaWrapper +{ + public: + LuaWrapper(ClangTool &__CT) : CT(__CT) {} + +#define LIST_GENERATOR(__x1) \ + int List##__x1(lua_State* L)\ + {\ + return CT.run(newFrontendActionFactory().get());\ + } + +#define LIST_LIST_GENERATORS \ + X(Funcs, "lists all functions") \ + X(Vars, "lists all variables") \ + X(Arrays, "lists all arrays") \ + X(Classes, "lists all classes") \ + X(Structs, "lists all structs") \ + X(Unions, "lists all unions") \ + +#define X(__x1, __x2) LIST_GENERATOR(__x1) + + LIST_LIST_GENERATORS + +#undef X + + private: + ClangTool CT; +}; +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ /*Main*/ int main(int argc, const char **argv) { @@ -841,6 +873,7 @@ int main(int argc, const char **argv) CommonOptionsParser op(argc, argv, BruiserCategory); ClangTool Tool(op.getCompilations(), op.getSourcePathList()); + LuaWrapper LW(Tool); /*linenoise init*/ linenoiseSetCompletionCallback(bruiser::ShellCompletion); @@ -858,6 +891,14 @@ int main(int argc, const char **argv) LuaEngine LE; LE.LoadEverylib(); +#define ARG_STRINGIFIER(__x1) LW.List##__x1 +#define X(__x1, __x2) lua_register(LE.GetLuaState(), #__x1, LW.List## __x1); + + //LIST_LIST_GENERATORS + //lua_register(LE.GetLuaState(), "garbage", LW.ListVars); + +#undef X + while((command = linenoise("bruiser>>")) != NULL) { linenoiseHistoryAdd(command); -- cgit v1.2.3 From 60fff7d61fa666a0d872ddc8ec5ba3c5b5440cea Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Fri, 2 Jun 2017 02:46:15 +0430 Subject: added a comment about the fact that this file is basically lua.c --- bruiser/luadummy.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bruiser/luadummy.h b/bruiser/luadummy.h index a7a21e7..ed6a939 100644 --- a/bruiser/luadummy.h +++ b/bruiser/luadummy.h @@ -1,3 +1,11 @@ + +/*DISCLAIMER*/ +/*This header is an exact copy of the lua.c file minus the main function + * provided by the lua organization.*/ +/*All rights belong to the respective owners. The license is the same as the + * license for the lua implementation provided by the lua organization.*/ + + extern "C" { /* -- cgit v1.2.3 From e80aac0fea58922d15dd7fb5578cb38986bee1d6 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Sat, 3 Jun 2017 23:53:02 +0430 Subject: added some more lua scripts. theyre mainly used for testing --- bruiser/lua-scripts/list.lua | 14 ++++++++++++++ bruiser/lua-scripts/test4.lua | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 bruiser/lua-scripts/list.lua create mode 100644 bruiser/lua-scripts/test4.lua diff --git a/bruiser/lua-scripts/list.lua b/bruiser/lua-scripts/list.lua new file mode 100644 index 0000000..d23ef04 --- /dev/null +++ b/bruiser/lua-scripts/list.lua @@ -0,0 +1,14 @@ +in_command = io.read() +if in_command == "list funcs" then + clangreturn = Funcs() +elseif in_command == "list vars" then + clangreturn = Vars() +elseif in_command == "list structs" then + clangreturn = Structs() +elseif in_command == "list arrays" then + clangreturn = Arrayss() +elseif in_command == "list classes" then + clangreturn = Classes() +elseif in_command == "list unions" then + clangreturn = Unions() +end diff --git a/bruiser/lua-scripts/test4.lua b/bruiser/lua-scripts/test4.lua new file mode 100644 index 0000000..6d0db5b --- /dev/null +++ b/bruiser/lua-scripts/test4.lua @@ -0,0 +1,4 @@ +--print("yolo") +--bubu() +--Funcs() +Vars() -- cgit v1.2.3 From 3e7e2e3bd5eaf5f0c05a66446cc660945e0d2575 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Sat, 3 Jun 2017 23:53:55 +0430 Subject: you can now call the list functions from lua --- bruiser/bruiser.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 91bac9b..e388ae6 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -93,6 +93,7 @@ class LuaEngine OPEN_LUA_LIBS(string) OPEN_LUA_LIBS(math) OPEN_LUA_LIBS(os) + #undef OPEN_LUA_LIBS void LoadAuxLibs(void) @@ -830,9 +831,12 @@ class LuaWrapper LuaWrapper(ClangTool &__CT) : CT(__CT) {} #define LIST_GENERATOR(__x1) \ - int List##__x1(lua_State* L)\ + int List##__x1(lua_State* __ls)\ {\ - return CT.run(newFrontendActionFactory().get());\ + unsigned int InArgCnt = 0;\ + InArgCnt = lua_gettop(__ls);\ + this->GetClangTool().run(newFrontendActionFactory().get());\ + return 1;\ } #define LIST_LIST_GENERATORS \ @@ -848,12 +852,42 @@ class LuaWrapper LIST_LIST_GENERATORS #undef X +#undef LIST_GENERATOR + + ClangTool GetClangTool(void) + { + return this->CT; + } private: ClangTool CT; }; /**********************************************************************************************************************/ /**********************************************************************************************************************/ +typedef int (LuaWrapper::*mem_func)(lua_State* L); + +/** + * @brief A template function to wrap LuaWrapper members into somehting that lua accepts. + * + * @param __ls + * + * @return + */ +template +int LuaDispatch(lua_State* __ls) +{ + LuaWrapper* LWPtr = *static_cast(lua_getextraspace(__ls)); + return ((*LWPtr).*func)(__ls); +} +/**********************************************************************************************************************/ +int bubu(lua_State* __ls) +{ + int n = lua_gettop(__ls); + std::cout << "hi im bubu\n"; + lua_pushfstring(__ls, "hi im bubu\n"); + return 1; +} +/**********************************************************************************************************************/ /*Main*/ int main(int argc, const char **argv) { @@ -890,20 +924,29 @@ int main(int argc, const char **argv) #if 1 LuaEngine LE; LE.LoadEverylib(); + *static_cast(lua_getextraspace(LE.GetLuaState())) = &LW; -#define ARG_STRINGIFIER(__x1) LW.List##__x1 -#define X(__x1, __x2) lua_register(LE.GetLuaState(), #__x1, LW.List## __x1); + /*@DEVI-this part is just registering our LuaWrapper member functions with lua so we can call them from lua.*/ +#define X(__x1, __x2) lua_register(LE.GetLuaState(), #__x1, &LuaDispatch<&LuaWrapper::List##__x1>); - //LIST_LIST_GENERATORS - //lua_register(LE.GetLuaState(), "garbage", LW.ListVars); + LIST_LIST_GENERATORS #undef X +#undef LIST_LIST_GENERATORS + + lua_register(LE.GetLuaState(), "bubu", bubu); while((command = linenoise("bruiser>>")) != NULL) { linenoiseHistoryAdd(command); linenoiseHistorySave(SHELL_HISTORY_FILE); LE.RunChunk(command); +#if 1 + //LE.Test(); + //LE.Test2(); + //LE.Test3(); + //luaL_dofile(LE.GetLuaState(), "./lua-scripts/test4.lua"); +#endif } #endif -- cgit v1.2.3 From da4e8a63f2c98fd0557c519fcc2e747ba54a2aba Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 5 Jun 2017 02:46:09 +0430 Subject: added the new commands to the list --- bruiser/bruiser-extra.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bruiser/bruiser-extra.h b/bruiser/bruiser-extra.h index 95e692d..0bc35ca 100644 --- a/bruiser/bruiser-extra.h +++ b/bruiser/bruiser-extra.h @@ -109,6 +109,12 @@ std::vector LUA_FUNCS = "hijack main", "m0", "runlua", + "Funcs", + "Vars", + "Arrays", + "Structs", + "Unions", + "Classes", "_G", "_VERSION", "assert", -- cgit v1.2.3 From aa71fe22d7d9072c4f5d0a9ab3f78105b431cc3f Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 5 Jun 2017 02:48:32 +0430 Subject: now the list commands output the results in as strings so they can be reused in lua in any way the user sees fit --- bruiser/bruiser.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index e388ae6..89e84f2 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -66,6 +66,7 @@ using namespace clang::tooling; /**********************************************************************************************************************/ /*global vars*/ static llvm::cl::OptionCategory BruiserCategory("Empty"); +std::vector PushToLua; bruiser::M0_ERR m0_err; bruiser::BruiserReport BruiseRep; @@ -413,6 +414,7 @@ class LiveListFuncs : public MatchFinder::MatchCallback //printf(CYAN"%s", R.getRewrittenText(clang::SourceRange(SLShebang, SLBody.getLocWithOffset(-1))).c_str()); //printf(NORMAL "\n"); PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(clang::SourceRange(SLShebang, SLBody.getLocWithOffset(-1))).c_str()); + PushToLua.push_back(R.getRewrittenText(clang::SourceRange(SLShebang, SLBody.getLocWithOffset(-1)))); //PRINT_WITH_COLOR_LB(GREEN, "end"); } else @@ -420,6 +422,7 @@ class LiveListFuncs : public MatchFinder::MatchCallback SourceLocation SL = FD->getLocStart(); SourceLocation SLE = FD->getLocEnd(); PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(clang::SourceRange(SL, SLE)).c_str()); + PushToLua.push_back(R.getRewrittenText(clang::SourceRange(SL, SLE))); } } } @@ -440,6 +443,7 @@ class LiveListVars : public MatchFinder::MatchCallback const clang::VarDecl* VD = MR.Nodes.getNodeAs("livelistvars"); PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(SourceRange(VD->getLocStart(), VD->getLocEnd())).c_str()); + PushToLua.push_back(R.getRewrittenText(SourceRange(VD->getLocStart(), VD->getLocEnd()))); } } @@ -459,6 +463,7 @@ class LiveListRecords : public MatchFinder::MatchCallback const clang::RecordDecl* RD = MR.Nodes.getNodeAs("livelistvars"); PRINT_WITH_COLOR_LB(CYAN, R.getRewrittenText(SourceRange(RD->getLocStart(), RD->getLocEnd())).c_str()); + PushToLua.push_back(R.getRewrittenText(SourceRange(RD->getLocStart(), RD->getLocEnd()))); } } @@ -833,10 +838,14 @@ class LuaWrapper #define LIST_GENERATOR(__x1) \ int List##__x1(lua_State* __ls)\ {\ - unsigned int InArgCnt = 0;\ + unsigned int InArgCnt = 0U;\ InArgCnt = lua_gettop(__ls);\ + unsigned int returncount=0U;\ this->GetClangTool().run(newFrontendActionFactory().get());\ - return 1;\ + for(auto &iter : PushToLua)\ + {lua_pushstring(__ls, iter.c_str());returncount++;}\ + PushToLua.clear();\ + return returncount;\ } #define LIST_LIST_GENERATORS \ -- cgit v1.2.3 From e57d3894b1023cf0b2d1f25cb9633b1a79b13763 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 5 Jun 2017 21:44:42 +0430 Subject: fixed some commands --- bruiser/bruiser-extra.h | 56 ++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/bruiser/bruiser-extra.h b/bruiser/bruiser-extra.h index 0bc35ca..554b170 100644 --- a/bruiser/bruiser-extra.h +++ b/bruiser/bruiser-extra.h @@ -91,30 +91,21 @@ std::vector BRUISR_COMMANDS = std::vector LUA_FUNCS = { - "help", + "help()", "quit", "exit", - "list", - "list vars", - "list funcs", - "list structs", - "list classes", - "list unions", - "list records", - "history", - "shell", - "version", - "clear", - "hijack", - "hijack main", - "m0", + "history()", + "version()", + "clear()", + "m0()", "runlua", - "Funcs", - "Vars", - "Arrays", - "Structs", - "Unions", - "Classes", + "Funcs()", + "Vars()", + "Arrays()", + "Structs()", + "Unions()", + "Classes()", + "hijackmain()", "_G", "_VERSION", "assert", @@ -274,7 +265,28 @@ std::vector LUA_FUNCS = "LUA_INIT", "LUA_INIT_5_3", "LUA_PATH", - "LUA_PATH_5_3" + "LUA_PATH_5_3", + "and", + "break", + "do", + "else", + "elseif", + "end", + "false", + "for", + "function", + "if", + "in", + "local", + "nil", + "not", + "or", + "repeat", + "return", + "then", + "true", + "until", + "while" }; /**********************************************************************************************************************/ #endif -- cgit v1.2.3 From d404e7217d41c1e7b20fdf021fd536a54e5c1c93 Mon Sep 17 00:00:00 2001 From: bloodstalker Date: Mon, 5 Jun 2017 21:45:32 +0430 Subject: moved the other commands into lua now, so they are working again --- bruiser/bruiser.cpp | 113 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 96 insertions(+), 17 deletions(-) diff --git a/bruiser/bruiser.cpp b/bruiser/bruiser.cpp index 89e84f2..12cbea0 100644 --- a/bruiser/bruiser.cpp +++ b/bruiser/bruiser.cpp @@ -835,6 +835,92 @@ class LuaWrapper public: LuaWrapper(ClangTool &__CT) : CT(__CT) {} + int BruiserLuaHistory(lua_State* __ls) + { + std::ifstream historyfile; + historyfile.open(SHELL_HISTORY_FILE); + + std::string tempstring; + unsigned int tempint = 0; + while(std::getline(historyfile, tempstring)) + { + printf(GREEN"%d - %s", tempint, tempstring.c_str()); + printf(NORMAL"\n"); + + tempint++; + } + + return tempint; + } + + int BruiserLuaHelp(lua_State* __ls) + { + unsigned int argcount = 0U; + + for (auto &iter : bruiser::CMDHelp) + { + printf(GREEN"%s:%s:%s",iter.name.c_str(),iter.proto.c_str(),iter.descr.c_str()); + printf(NORMAL"\n"); + argcount++; + } + + std::cout << NORMAL; + return argcount; + } + + int BruiserLuaHijackMain(lua_State* __ls) + { + int RunResult = this->GetClangTool().run(newFrontendActionFactory().get()); + //std::cout << CYAN <<"hijacking main returned " << RunResult << "\n" << NORMAL; + printf(CYAN"hijacking main returned %d", RunResult); + printf(NORMAL"\n"); + + return 1; + } + + int BruiserLuaVersion(lua_State* __ls) + { + PRINT_WITH_COLOR_LB(GREEN, "bruiser experimental version something."); + PRINT_WITH_COLOR_LB(GREEN, "project mutator"); + PRINT_WITH_COLOR_LB(GREEN, "GPL v2.0"); + PRINT_WITH_COLOR_LB(GREEN, "bloodstalker 2017"); + + return 1; + } + + int BruiserLuaClear(lua_State* _ls) + { + linenoiseClearScreen(); + return 0; + } + + int BruiserLuaM0(lua_State* __ls) + { + BruiseRep.PrintToLog("bruiser exited with:"); + + bruiser::ReadM0 M0Rep; + tinyxml2::XMLError XMLErr; + + XMLErr = M0Rep.LoadXMLDoc(); + if (XMLErr != XML_SUCCESS) + { + std::cout << RED << "could not load m0 xml report.\n" << NORMAL; + std::cout << RED << "tinyxml2 returned " << XMLErr << NORMAL; + return XMLErr; + } + + XMLErr = M0Rep.ReadFirstElement(); + if (XMLErr != XML_SUCCESS) + { + std::cerr << RED << "could not read first element of m0 xml report.\n" << NORMAL; + return XMLErr; + } + + bruiser::SearchM0(M0Rep.getRootPointer()); + + return 1; + } + #define LIST_GENERATOR(__x1) \ int List##__x1(lua_State* __ls)\ {\ @@ -889,13 +975,6 @@ int LuaDispatch(lua_State* __ls) return ((*LWPtr).*func)(__ls); } /**********************************************************************************************************************/ -int bubu(lua_State* __ls) -{ - int n = lua_gettop(__ls); - std::cout << "hi im bubu\n"; - lua_pushfstring(__ls, "hi im bubu\n"); - return 1; -} /**********************************************************************************************************************/ /*Main*/ int main(int argc, const char **argv) @@ -914,8 +993,10 @@ int main(int argc, const char **argv) std::regex dumplist("^list\\sdump\\s"); std::smatch smresult; + /*gets the compilation database and options for the clang instances that we would later run*/ CommonOptionsParser op(argc, argv, BruiserCategory); ClangTool Tool(op.getCompilations(), op.getSourcePathList()); + /*initialize the LuaWrapper class so we can register and run them from lua.*/ LuaWrapper LW(Tool); /*linenoise init*/ @@ -930,12 +1011,17 @@ int main(int argc, const char **argv) { char* command; -#if 1 LuaEngine LE; LE.LoadEverylib(); *static_cast(lua_getextraspace(LE.GetLuaState())) = &LW; /*@DEVI-this part is just registering our LuaWrapper member functions with lua so we can call them from lua.*/ + lua_register(LE.GetLuaState(), "history", &LuaDispatch<&LuaWrapper::BruiserLuaHistory>); + lua_register(LE.GetLuaState(), "help", &LuaDispatch<&LuaWrapper::BruiserLuaHelp>); + lua_register(LE.GetLuaState(), "hijackmain", &LuaDispatch<&LuaWrapper::BruiserLuaHijackMain>); + lua_register(LE.GetLuaState(), "version", &LuaDispatch<&LuaWrapper::BruiserLuaVersion>); + lua_register(LE.GetLuaState(), "clear", &LuaDispatch<&LuaWrapper::BruiserLuaClear>); + /*its just regisering the List function from LuaWrapper with X-macros.*/ #define X(__x1, __x2) lua_register(LE.GetLuaState(), #__x1, &LuaDispatch<&LuaWrapper::List##__x1>); LIST_LIST_GENERATORS @@ -943,21 +1029,14 @@ int main(int argc, const char **argv) #undef X #undef LIST_LIST_GENERATORS - lua_register(LE.GetLuaState(), "bubu", bubu); - while((command = linenoise("bruiser>>")) != NULL) { linenoiseHistoryAdd(command); linenoiseHistorySave(SHELL_HISTORY_FILE); LE.RunChunk(command); -#if 1 - //LE.Test(); - //LE.Test2(); - //LE.Test3(); - //luaL_dofile(LE.GetLuaState(), "./lua-scripts/test4.lua"); -#endif } -#endif + + /*end of bruiser main*/ while((command = linenoise("bruiser>>")) != NULL) { -- cgit v1.2.3