Skip to content

Testing

elroyhaw edited this page Apr 14, 2019 · 89 revisions

Testing

Test Plan

Phases of Testing

The phases of testing in iteration 3 is generally as follows:

  1. Write unit tests for new features added (Affects, Affects*, query optimization)
  2. Implement new features
  3. Regression testing with unit tests
  4. Fix bugs found
  5. Regression testing with integration tests
  6. Fix bugs found
  7. Regression testing and system testing with Autotester
  8. Fix bugs found

For each new feature implemented, conduct the steps 1-8 to ensure the system can work consistently along the way.

Unit Test

PKB

Test 1

TEST_CASE("Affects with if stmt nested in while stmt") {
  std::unique_ptr<PKB> pkb{new PKB()};
  pkb->setProc("A", 1, 8);
  pkb->setNext(1, 2);
  pkb->setNext(2, 3);
  pkb->setNext(3, 4);
  pkb->setNext(3, 5);
  pkb->setNext(4, 6);
  pkb->setNext(5, 6);
  pkb->setNext(6, 2);
  pkb->setNext(2, 7);
  pkb->setStmtType(2, StatementType::While);
  pkb->setStmtType(3, StatementType::If);
  pkb->setStmtType(1, StatementType::Assign);
  pkb->setStmtType(4, StatementType::Assign);
  pkb->setStmtType(5, StatementType::Assign);
  pkb->setStmtType(6, StatementType::Assign);
  pkb->setParent(2, 3);
  pkb->setParent(2, 6);
  pkb->setParent(3, 4);
  pkb->setParent(3, 5);
  pkb->setModifies(1, "x");
  pkb->setModifies(4, "y");
  pkb->setModifies(5, "y");
  pkb->setModifies(6, "x");
  pkb->setUses(4, "x");
  pkb->setUses(5, "y");
  pkb->setUses(6, "y");
  DesignExtractor::populateDesigns(pkb);
  Table result = pkb->getAffects(1, true);

  REQUIRE(result.contains({"4"}));
  REQUIRE(pkb->isAffects(1, 4) == true);

  result = pkb->getAffects(5, true);
  REQUIRE(result.contains({"5"}));
  REQUIRE(result.contains({"6"}));
  REQUIRE(pkb->isAffects(5, 5) == true);
  REQUIRE(pkb->isAffects(5, 6) == true);

  result = pkb->getAffects(6, true);
  REQUIRE(result.contains({"4"}));
  REQUIRE(pkb->isAffects(6, 4) == true);

  result = pkb->getAffects(4, true);
  REQUIRE(result.contains({"5"}));
  REQUIRE(result.contains({"6"}));
  REQUIRE(pkb->isAffects(4, 5) == true);
  REQUIRE(pkb->isAffects(4, 6) == true);

  result = pkb->getAffects(4, false);
  REQUIRE(result.contains({"1"}));
  REQUIRE(result.contains({"6"}));

  result = pkb->getAffects(6, false);
  REQUIRE(result.contains({"4"}));
  REQUIRE(result.contains({"5"}));

  result = pkb->getAffects();
  REQUIRE(pkb->isAffects(1, 4) == true);
  REQUIRE(pkb->isAffects(5, 5) == true);
  REQUIRE(pkb->isAffects(5, 6) == true);
  REQUIRE(pkb->isAffects(6, 4) == true);
  REQUIRE(pkb->isAffects(4, 5) == true);
  REQUIRE(pkb->isAffects(4, 6) == true);
}

Test Purpose: Ensure that Affects relations are computed correctly.

Required Test Inputs: A PKB stub that stores knowledge of some source program.

Expected Test Results: All the Affects relations are populated correctly as per the lines with REQUIRE in the above code snippet.

Test 2

TEST_CASE("AffectsT with one while nested in one if") {
  std::unique_ptr<PKB> pkb{new PKB()};
  pkb->setProc("A", 1, 6);
  pkb->setNext(1, 2);
  pkb->setNext(1, 4);
  pkb->setNext(2, 3);
  pkb->setNext(2, 5);
  pkb->setNext(3, 2);
  pkb->setNext(4, 5);
  pkb->setModifies(3, "a");
  pkb->setModifies(4, "b");
  pkb->setModifies(5, "c");
  pkb->setUses(1, "a");
  pkb->setUses(1, "b");
  pkb->setUses(3, "a");
  pkb->setUses(4, "a");
  pkb->setUses(5, "a");
  pkb->setUses(5, "b");
  pkb->setParent(1, 2);
  pkb->setParent(1, 4);
  pkb->setParent(2, 3);
  pkb->setStmtType(1, StatementType::If);
  pkb->setStmtType(2, StatementType::While);
  pkb->setStmtType(3, StatementType::Assign);
  pkb->setStmtType(4, StatementType::Assign);
  pkb->setStmtType(5, StatementType::Assign);
  DesignExtractor::populateDesigns(pkb);
  Table affectsTTable = pkb->getAffects();
  affectsTTable.transitiveClosure();
  auto results = {std::make_pair(3, 3), std::make_pair(3, 5),
                  std::make_pair(4, 5)};
  for (auto result : results) {
    REQUIRE(affectsTTable.contains(
        {std::to_string(result.first), std::to_string(result.second)}));
  }
}

Test Purpose: Ensure that Affects* relations are computed correctly, using transitive closure property to verify it.

Required Test Inputs: A PKB stub that stores knowledge of some source program.

Expected Test Results: All the Affects* relations are populated correctly as per the results list.

PQL

Test 1

TEST_CASE("All such that relation") {
  std::string pql = R"(
  stmt s1, s2; assign a1, a2; procedure p1, p2; variable v;
  Select <s1, s2>
  such that Follows(s1, s2)
  and Follows*(s1, s2)
  and Parent(s1, s2)
  and Parent*(s1, s2)
  and Uses(s1, v)
  and Uses(p1, v)
  and Modifies(s1, v)
  and Modifies(p1, v)
  and Calls(p1, p2)
  and Calls*(p1, p2)
  and Next(s1, s2)
  and Next*(s1, s2)
  and Affects(a1, a2)
  and Affects*(a1, a2)
  )";
  std::stringstream ss;
  ss << pql;
  std::list<Token> tokens = Lexer::tokenize(ss);
  auto query = Parser::parsePQL(tokens);
  auto clauses = query.clauses;
  std::vector<Clause> toVerify = {
      Clause(ClauseType::Follows, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                   QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::FollowsT, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                    QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::Parent, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                  QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::ParentT, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                   QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::UsesS, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                 QueryEntity(QueryEntityType::Variable, "v")}),
      Clause(ClauseType::UsesS, {QueryEntity(QueryEntityType::Procedure, "p1"),
                                 QueryEntity(QueryEntityType::Variable, "v")}),
      Clause(ClauseType::ModifiesS,
             {QueryEntity(QueryEntityType::Stmt, "s1"),
              QueryEntity(QueryEntityType::Variable, "v")}),
      Clause(ClauseType::ModifiesS,
             {QueryEntity(QueryEntityType::Procedure, "p1"),
              QueryEntity(QueryEntityType::Variable, "v")}),
      Clause(ClauseType::Calls,
             {QueryEntity(QueryEntityType::Procedure, "p1"),
              QueryEntity(QueryEntityType::Procedure, "p2")}),
      Clause(ClauseType::CallsT,
             {QueryEntity(QueryEntityType::Procedure, "p1"),
              QueryEntity(QueryEntityType::Procedure, "p2")}),
      Clause(ClauseType::Next, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::NextT, {QueryEntity(QueryEntityType::Stmt, "s1"),
                                 QueryEntity(QueryEntityType::Stmt, "s2")}),
      Clause(ClauseType::Affects, {QueryEntity(QueryEntityType::Assign, "a1"),
                                   QueryEntity(QueryEntityType::Assign, "a2")}),
      Clause(ClauseType::AffectsT,
             {QueryEntity(QueryEntityType::Assign, "a1"),
              QueryEntity(QueryEntityType::Assign, "a2")})};
  REQUIRE(clauses == toVerify);
}

Test Purpose: Ensure that PQL Parser can correctly tokenize all kinds of such that clauses, including Affects and Affects*.

Required Test Inputs: A PQL query with all kinds of such that clauses.

Expected Test Results: All clauses are parsed correctly as the clauses in toVerify in the above code snippet.

Test 2

TEST_CASE("Semantic Error") {
  std::string pql = R"(
  stmt s; Select s pattern s(_,_)
  )";
  std::stringstream ss;
  ss << pql;
  std::list<Token> tokens = Lexer::tokenize(ss);
  REQUIRE_THROWS_AS(Parser::parsePQL(tokens), Parser::SemanticError);
}

Test Purpose: Testing that the PQLParser can handle the semantic error in the query. Similar test cases are to handle other kinds of semantic errors.

Required Test Inputs: a query with semantic errors.

Expected Test Results: the SemanticError exception will be thrown.

Integration Test

PKB

Sequence Diagram

SIMPLE source

TEST_CASE("Multiple procedure calls") {
  std::string program = R"(
    procedure A {
        call B;
    }
    procedure B {
        call C;
                x = 5;
                y = x;
    }
    procedure C {
        print a;
                read b;
    }
    )";
  std::stringstream ss;
  ss << program;
  std::list<Token> tokens = Lexer::tokenize(ss);
  auto pkb = Parser::parseSIMPLE(tokens);
  DesignExtractor::populateDesigns(pkb);
  auto procTable = pkb->getProcTable();
  auto modifiesPTable = pkb->getModifiesP();
  auto usesPTable = pkb->getUsesP();

  REQUIRE(procTable.contains({"A"}));
  REQUIRE(procTable.contains({"B"}));
  REQUIRE(procTable.contains({"C"}));
  REQUIRE(modifiesPTable.size() == 7);
  REQUIRE(modifiesPTable.contains({"A", "x"}));
  REQUIRE(modifiesPTable.contains({"A", "y"}));
  REQUIRE(modifiesPTable.contains({"A", "b"}));
  REQUIRE(modifiesPTable.contains({"B", "x"}));
  REQUIRE(modifiesPTable.contains({"B", "y"}));
  REQUIRE(modifiesPTable.contains({"B", "b"}));
  REQUIRE(modifiesPTable.contains({"C", "b"}));
  REQUIRE(usesPTable.size() == 5);
  REQUIRE(usesPTable.contains({"A", "x"}));
  REQUIRE(usesPTable.contains({"A", "a"}));
  REQUIRE(usesPTable.contains({"B", "x"}));
  REQUIRE(usesPTable.contains({"B", "a"}));
  REQUIRE(usesPTable.contains({"C", "a"}));
}

Test Purpose: Parser, Design Extractor and PKB components working correctly together (Parser stores base facts in PKB, Design Extractor extracts derive facts into PKB)

Required Test Inputs: Filepath to a SIMPLE source program with a good mix of statements that contain both base and derived facts

Expected Test Results: PKB with all facts populated (both base facts from parsing and derived facts from extractor) as per the lines with REQUIRE in the above code snippet

PQL

Sequence Diagram

Queries

SCENARIO("Simple Query No Clause") {
  PKB pkb = buildPKB(); // builds a PKB stub
  PqlEvaluator pe(pkb);
  SECTION("Get stmt") {
    std::string pql = R"(
    stmt s;
    Select s
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 15);
    REQUIRE(contains(result, "1"));
    REQUIRE(contains(result, "2"));
    REQUIRE(contains(result, "3"));
    REQUIRE(contains(result, "4"));
    REQUIRE(contains(result, "5"));
    REQUIRE(contains(result, "6"));
    REQUIRE(contains(result, "7"));
    REQUIRE(contains(result, "8"));
    REQUIRE(contains(result, "9"));
    REQUIRE(contains(result, "10"));
    REQUIRE(contains(result, "11"));
    REQUIRE(contains(result, "12"));
    REQUIRE(contains(result, "13"));
    REQUIRE(contains(result, "14"));
    REQUIRE(contains(result, "15"));
  }
  SECTION("Get if") {
    std::string pql = R"(
    if ifs;
    Select ifs
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 2);
    REQUIRE(contains(result, "4"));
    REQUIRE(contains(result, "8"));
  }
  SECTION("Get while") {
    std::string pql = R"(
    while w;
    Select w
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 1);
    REQUIRE(contains(result, "7"));
  }
  SECTION("Get call") {
    std::string pql = R"(
    call c;
    Select c
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 3);
    REQUIRE(contains(result, "5"));
    REQUIRE(contains(result, "6"));
    REQUIRE(contains(result, "10"));
  }
  SECTION("Get print") {
    std::string pql = R"(
    print p;
    Select p
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 1);
    REQUIRE(contains(result, "14"));
  }
  SECTION("Get read") {
    std::string pql = R"(
    read r;
    Select r
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 1);
    REQUIRE(contains(result, "15"));
  }
  SECTION("Get assign") {
    std::string pql = R"(
    assign a;
    Select a
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 7);
    REQUIRE(contains(result, "1"));
    REQUIRE(contains(result, "2"));
    REQUIRE(contains(result, "3"));
    REQUIRE(contains(result, "9"));
    REQUIRE(contains(result, "11"));
    REQUIRE(contains(result, "12"));
    REQUIRE(contains(result, "13"));
  }
  SECTION("Get var") {
    std::string pql = R"(
    variable v;
    Select v
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 4);
    REQUIRE(contains(result, "x"));
    REQUIRE(contains(result, "a"));
    REQUIRE(contains(result, "b"));
    REQUIRE(contains(result, "c"));
  }
  SECTION("Get pro") {
    std::string pql = R"(
    procedure p;
    Select p
    )";
    std::stringstream ss;
    ss << pql;
    std::list<Token> tokens = Lexer::tokenize(ss);
    auto q = Parser::parsePQL(tokens);

    list<string> result;
    pe.executeQuery(q, result);
    REQUIRE(result.size() == 4);
    REQUIRE(contains(result, "main"));
    REQUIRE(contains(result, "one"));
    REQUIRE(contains(result, "two"));
    REQUIRE(contains(result, "three"));
  }
}

Test Purpose: PQL Lexer and PQL Parser working correctly together to build Query object and to pass to PQL Evaluator. PQL Evaluator evaluates the query correctly according to a PKB stub

Required Test Inputs: A PKB stub and a query string

Expected Test Results: The query result is correct according to the PKB stub

System Tests

Strategy

The testing process is done using the Autotester for automated testing. The tables below are the test strategies for both the PKB and PQL.

PKB

No. Test Strategy
1 Test specific to verify computation of Affects and Affects* relations
2 Test specific to verify population of relations in different nesting types (if nested in while, while nested in while, or others with more nesting levels)
3 Test specific to verify procedure calls and procedures and the relations affected by procedure calls
4 Test specific to stress the parsing by using one 1000-line procedure and 100-procedure acyclic calls

PQL

No. Test Strategy
1 Test specific to basic specifications of all kinds of clauses and relations and various combinations of arguments in each clause
2 Test specific to the semantic errors, such as incorrect argument type for clauses and incompatible entries in with clause
3 Test specific to queries with various combinations of clauses with or without connected synonyms and cover all types of clauses
4 Test specific to queries with several (1, 2, 3, 4, or 5) groups with connected synonyms in each group
5 Test specific to relations pertaining to container statements (Uses, Modifies inside if and while)
6 Test specific to relations across procedures (Uses, Modifies and Calls) versus relations only inside procedures (Next, NextT, Affects and Affects*)
7 Test specific to "meaningless" queries (e.g. with 12 = 12)
8 Test specific to stress the result size and number of relations in queries

Test 1

SIMPLE source

Strategies involved: No. 3 from PKB

\\ Test procedure calls and relations affected by procedure calls
procedure A {
    a = a + b; \\1
    d = f / 3 + r; \\2
    if (w == x) then { \\3
        if (y != z) then { \\4
            read in; \\5
            q = a; \\6
        } else {
            print out; \\7
            e = 1 + 2 / r; \\8
        }
    } else {
        w = x + y * z; \\9
    }
    call B; \\10
}

procedure B {
    while (a != 0) { \\11
        b = a - 1; \\12
        while(d < 7) { \\13
            if (r != d) then { \\14
                read a; \\15
            } else {
                call C; \\16
                print a; \\17
            }

            a = a + b * d % e; \\18

        }
        i = i + 1; \\19
    }

    while ((f > 4) || (f <= 1)) { \\20
        print f; \\21
        call D; \\22
        if (d <= 0) then { \\23
            a = a + 1 * 2; \\24
        }
        else {
            r = t + 1; \\25
        }
    }
    call E; \\26
}

procedure C {
    if ( x >= 1) then { \\27
        read input; \\28
        a = 1; \\29
        b = 14; \\30
        c = 23; \\31
    } else {
        while (y < 0) { \\32 
            a = y + 1; \\33
            if (x == w + y) then { \\34
                x = x * 3 + y / z % 5; \\35 
                y = c + 2 - z; \\36
            } else {
                read a; \\37
                read b; \\38
                print c; \\39
            }
        }
        call F; \\40
    }

}

procedure D {
    while (f == 0) { \\41
        print result;  \\42
        e = f + 6 % e; \\43
        print result; \\44
    }    

    if (y != a) then { \\45
        while (w <= z) { \\46
            a = b - c * 2; \\47
            t = 5 - (x / y % 2); \\48
            call F; \\49
        }
    } else {
        while (a - 5 < b) { \\50
            b = c - w + v; \\51
            a = 4 / (a % b * c); \\52
            read in; \\53
        }
    } 
}

procedure E {
    if (g == 0) then { \\54
        while (h < 1) { \\55
            if (j > 2) then { \\56 
                k = 1; \\57
            } else { 
                while(i != 0) { \\58 
                    read something; \\59
                    while (o == O) { \\60
                        print p; \\61
                    }
                }
            }
        }
    } else {
        l = m; \\62
    }

}

procedure F {
    a = 1; \\63
    b = 4; \\64
    e = 7 + 3 / a; \\65 
    while ((s < 0) && (r > t)) { \\66
        if (a != 1) then { \\67
            print result; \\68
        } else {
            if (s < t) then { \\69
                while (w != 0) { \\70
                    result = result + 3 / i; \\71
                }
            } else {
                while ((s - r) == (b % s)) { \\72
                    result = result / 2 + j; \\73
                }
            }
        }
    }
}

procedure G {
if (e != (y + 1)) then { \\74
    while(((r - 1) <= 4) && ((s + 2) >= 3)) { \\75
        if (q == p) then { \\76
            a = 2 - r/ 16; \\77
        } else { 
            call A; \\78
            q =e % 7 + e; \\79
            while (w == q) { \\80
                a = b - a + c; \\81
            }
        }
    }
} else {
    read some; \\82
    if (a == 7) then{ \\83
        d = e - r / (3 + g); \\84
    } else {
        while (3 < r) { \\85
            if (a != t) then { \\86
                call E; \\87
            } else {
                print some; \\88
                while (some < n) {\\89
                    g = h + i/ j; \\ 90
                }
                call A; \\91
            }
            d = e + w - y; \\92
        }
        print abc; \\93
    }
    r = w; \\94
}

a = e - t; \\95
}

procedure H {
    aa = 1; \\96
    bb = 4; \\97
    ee = 7 + 3 / a; \\98 
    while ((ss < 0) && (rr > tt) || (mm == 12) && (nn != (bb - aa)) || (kk <= (pp + 1))) { \\99
        if (aa != 1) then { \\100
            print rresult; \\101
        } else {
            if (ss < tt) then { \\102
                while (ww != 0) { \\103
                    rresult = rresult + 3 / ii; \\104
                }
            } else {
                while ((ss - rr) == (bb % ss)) { \\105
                    rresult = rresult / 2 + jj; \\106
                }
            }
        }
    }
}

For the SIMPLE source above, the call graph is shown below. It contains several common calls. Namely, One-to-One (in the case of A to B), One-to-Many (in the case of B to C, D and E), Many-to-One (C and D to F), and one stand-alone procedure (H).

The strategy for using this SIMPLE source follows the test strategy 2 for PKB. Namely, this source helps to verify if the other relations such as Uses and Modifies that are affected by procedure calls, are stored correctly in the PKB. The call graph constructed from the SIMPLE source allows this strategy to be fully verified. Also, this SIMPLE source helps to verify the fact that Next, Next*, Affects and Affects* relation cannot cross procedures.

Queries

Strategies involved: No. 1, 2, 3, 4, 5, 6, 7, 8 from PQL

General declarations apply for all queries, except for queries with their own decalrations:
call c; procedure p, p1, p2; assign a, a1, a2; prog_line pl; variable v, v1, v2;while w; if ifs, ifs2; stmt s,s1,s2; constant cons; print pr; read r;

1) Select <s,s1> such that Affects(s, s1)
2) Select <s> such that Affects(s, _)
3) Select <s.stmt#> such that Affects(_, s)
4) Select <s> such that Affects(s, s)
5) Select <s> such that Affects(71, s)
6) Select <s> such that Affects(s, 36)
7) Select BOOLEAN such that Affects(19, 19)
8) Select BOOLEAN such that Affects(74, _)
9) Select BOOLEAN such that Affects(_, 90)
10) Select BOOLEAN such that Affects(_, _)

Reasoning:
These queries follow the strategy to test all combinations of argument types for Affects, including integer, lineref, and underscore, to ensure correctness of Affects relations. The same tests are done for the other relations as well.

11) Select BOOLEAN such that Modifies(a, "1a") (invalid IDENT name)
12) Select BOOLEAN such that Modifies(1a, "a1") (invalid IDENT name)
13) Select BOOLEAN such that Modifies(a, "a1") and Uses(a, "a1") and pattern a("a1",_) (invalid 'and' before pattern keyword)
14) Select <BOOLEAN> such that Modifies(a, "a1") (invalid to have BOOLEAN in tuple)
15) Select <a, BOOLEAN> such that Modifies(a, "a1") (invalid to have BOOLEAN in tuple)
16) stmt s,s1; assign a;
    Select BOOLEAN such that Modifies(a1, "a1") (synonym not declared)
17) Select BOOLEAN with a.stmt# = s (s is not of type prog_line)
18) Select BOOLEAN with a.stmt# = "a" (incompatible type)
19) Select BOOLEAN with a.varName = "a" (assign does not have varName attribute)
20) Select BOOLEAN with p.value = 5 (procedure does not have value attribute)
21) Select BOOLEAN such that Modifies(_, "a") (unclear to have underscore as first argument for Modifies)
22) Select BOOLEAN such that Parent(w, "a") (incorrect argument type)
23) Select BOOLEAN such that Calls(5, "a") (incorrect argument type)
24) Select BOOLEAN such that Affects(5, w) (incorrect argument type)
25) Select BOOLEAN pattern s(_,_) (s is not of type assign or while)
26) Select BOOLEAN with 12 = 12

Reasoning: 
These queries test the syntactic, semantic errors and their corresponding results according to the SPA requirements (i.e. either none or boolean value). Queries 11 to 15 are syntactically invalid. Queries 16 to 25 are semantically invalid, such as using a synonym that is not declared, incompatible types in with clause, wrong attribute for synonyms (e.g assign does not have attribute varName) and wrong argument types for clause. Lastly, Query 26 is "meaningless" but should evaluate to TRUE in this case.

27) Select <s,s1,a> such that Parent*(s,c) and Parent*(s1,c) and Parent*(s,s1) and Calls(_,p) with c.procName=p.procName such that Next(c,s1) pattern a(v, _"a%b*c"_) such that Modifies(p1, v) and Calls(p2, p1) with p2.procName = "B"
28) Select <s,w,ifs,s2> such that Parent*(s,w) and Parent*(s,ifs) and Modifies(a,"a") and Next(a,w) and Parent(w,a) such that Parent*(s2,c) and Parent*(s1,c) and Parent*(s2,s1) and Calls(_,p) with c.procName=p.procName such that Next(c,s1) pattern a1(v, _"a%b*c"_) such that Modifies(p1, v) and Calls(p2, p1) with p2.procName = "B"
29) Select <s,w,ifs,s2, a2, v1> such that Parent*(s,w) and Parent*(s,ifs) and Modifies(a,"a") and Next(a,w) and Parent(w,a) such that Parent*(s2,c) and Parent*(s1,c) and Parent*(s2,s1) and Calls(_,p) with c.procName=p.procName such that Next(c,s1) pattern a1(v, _"a%b*c"_) such that Modifies(p1, v) and Calls(p2, p1) with p2.procName = "B" such that Calls(p3,"F") pattern a2(v1,_) with v1.varName = "k"
30) Select <s,w,ifs,s2, a2, v1> such that Parent*(s,w) and Parent*(s,ifs) and Modifies(a,"a") and Next(a,w) and Parent(w,a) such that Parent*(s2,c) and Parent*(s1,c) and Parent*(s2,s1) and Calls(_,p) with c.procName=p.procName such that Next(c,s1) pattern a1(v, _"a%b*c"_) such that Modifies(p1, v) and Calls(p2, p1) with p2.procName = "B" such that Calls(p3,"F") pattern a2(v1,_) with v1.varName = "k" such that Parent*(54, a2) and Next(56, a2)
31) Select <p,v,s1> such that Uses(p,v) with p.procName = p1.procName such that Calls(p1,"A") such that Uses(p1, v) and Modifies(s, v) with s1.stmt# = cons.value such that Parent*(ifs, s1)
32) Select <p,v,s1, s2> such that Uses(p,v) with p.procName = p1.procName such that Calls(p1,"A") such that Uses(p1, v) and Modifies(s, v) with s1.stmt# = cons.value such that Parent*(ifs, s1) such that Parent(w,s2) and Follows(s2,_) and Parent(s2,_) with s2.stmt# = ifs2.stmt# pattern ifs2(v1,_,_)
33) Select <p,v,s1, s2, v2> such that Uses(p,v) with p.procName = p1.procName such that Calls(p1,"A") such that Uses(p1, v) and Modifies(s, v) with s1.stmt# = cons.value such that Parent*(ifs, s1) such that Parent(w,s2) and Follows(s2,_) and Parent(s2,_) with s2.stmt# = ifs2.stmt# pattern ifs2(v1,_,_) with v1.varName = v2.varName such that Modifies("G", v2)

Reasoning: 
These queries have several (1, 2, 3, 4, or 5) groups with connected synonyms in each group. They are used to verify if the cross product is performed correctly since some of these groups' synonyms are to be selected. Also, the result size and number of clauses in the query are also stressed (20 clauses in Query 30, 300 result tuples in Query 33).

34) Select <p,v,s1, s2, v2, a, a1> such that Uses(p,v) with p.procName = p1.procName such that Calls(p1,"A") such that Uses(p1, v) and Modifies(s, v) with s1.stmt# = cons.value such that Parent*(ifs, s1) such that Parent(w,s2) and Follows(s2,_) and Parent(s2,_) with s2.stmt# = ifs2.stmt# pattern ifs2(v1,_,_) with v1.varName = v2.varName such that Modifies("G", v2) and Affects*(_,_) and Next*(s1, s2) and Affects(a, a1) and Next(a1,a)
35) Select <p,v,s1, s2, v2, a, a1> such that Uses(p,v) with p.procName = p1.procName such that Calls(p1,"A") such that Uses(p1, v) and Modifies(s, v) with s1.stmt# = cons.value such that Parent*(ifs, s1) such that Parent(w,s2) and Follows(s2,_) and Parent(s2,_) with s2.stmt# = ifs2.stmt# pattern ifs2(v1,_,_) with v1.varName = v2.varName such that Modifies("G", v2) and Affects*(_,_) and Next*(s1, s2) and Affects(a, a1) and Next(a1,a) pattern a("y", _"c+2"_) and a1(v3, _"y/z"_) with v3.varName = "x"

Reasoning: 
These queries cover all types of clauses. Many different types of clauses are included and they are tested to see if they can perform correctly as individual clauses, and also after combination of results with other clauses. The number of clauses in the queries is also stressed.

36) Select v such that Uses(a, v) with a.stmt# = 35
37) Select v such that Uses(pr, v) with pr.stmt# = 42
38) Select v such that Uses(ifs, v) with ifs.stmt# = 45
39) Select v such that Uses(p, v) with p.procName = "C"
40) Select v such that Uses(c, v) with c.stmt# = 16
41) Select v such that Modifies(a, v) with a.stmt# = 92
42) Select v such that Modifies(r, v) with r.stmt# = 82
43) Select v such that Modifies(w, v) with w.stmt# = 75
44) Select v such that Modifies(ifs, v) with ifs.stmt# = 45
45) Select v such that Modifies(p, v) with p.procName = "D"
46) Select v.varName such that Modifies(c, v) with c.stmt# = 10

Reasoning: 
These queries verify that the Uses and Modifies relations are populated correctly in assignments, container statements, call statements and across procedures. The queries also verify if the Uses and Modifies relations can be propagated correctly within different nesting levels and between procedure calls via call statements in the call graph.

47) Select s such that Next(95, s)
48) Select s such that Next*(1, s)
49) Select s such that Affects(104, s)
50) Select s such that Affects*(106, s)

Reasoning: 
These queries are aimed to test if Next, Next*, Affects and Affects* relations crosses any procedures. According to the definition of these clauses, the result statement numbers can only be in the same procedure with the statement in the queries.

Test Purpose: The SIMPLE source and the PQL queries aim to test the correctness of construction of call graph as well as to verify all kinds of relations involving procedure calls and ensure they are correctly populated in the PKB, especially with Uses and Modifies. Additionally, this system test aims to cover the basic SPA requirements, such as semantic error handling in PQL. Finally, the queries are formulated with many groups of connected synonyms and cover all the relation types, which verifies the correctness of the results after combining them together.

Required Test Inputs: Filepath to a SIMPLE source program with many procedures and procedure calls

Expected Test Results:

1) 1 6,12 18,18 12,19 19,35 35,36 33,36 35,43 43,51 52,52 52,63 65,71 71,71 73,73 71,73 73,81 81,104 104,104 106,106 104,106 106
2) 1,12,18,19,35,36,43,51,52,63,71,73,81,104,106
3) 12,18,19,33,35,43,52,6,65,71,73,81,104,106
4) 19,35,43,52,71,73,81,104,106
5) 71, 73
6) none
7) TRUE
8) FALSE
9) FALSE
10) TRUE
11) none
12) none
13) none
14) none
15) none
16) FALSE
17) FALSE
18) FALSE
19) FALSE
20) FALSE
21) FALSE
22) FALSE
23) FALSE
24) FALSE
25) FALSE
26) TRUE
27) 45 46 52
28) 11 13 14 45,74 80 76 45,74 80 83 45,74 80 86 45,75 80 76 45
29) 11 13 14 45 57 k,74 80 76 45 57 k,74 80 83 45 57 k,74 80 86 45 57 k,75 80 76 45 57 k
30) 11 13 14 45 57 k,74 80 76 45 57 k,74 80 83 45 57 k,74 80 86 45 57 k,75 80 76 45 57 k
31) G a 16,G a 4,G a 5,G a 6,G a 7,G b 16,G b 4,G b 5,G b 6,G b 7,G c 16,G c 4,G c 5,G c 6,G c 7,G d 16,G d 4,G d 5,G d 6,G d 7,G e 16,G e 4,G e 5,G e 6,G e 7,G g 16,G g 4,G g 5,G g 6,G g 7,G i 16,G i 4,G i 5,G i 6,G i 7,G q 16,G q 4,G q 5,G q 6,G q 7,G r 16,G r 4,G r 5,G r 6,G r 7,G result 16,G result 4,G result 5,G result 6,G result 7,G some 16,G some 4,G some 5,G some 6,G some 7,G t 16,G t 4,G t 5,G t 6,G t 7,G w 16,G w 4,G w 5,G w 6,G w 7,G x 16,G x 4,G x 5,G x 6,G x 7,G y 16,G y 4,G y 5,G y 6,G y 7
32) G a 16 14,G a 16 86,G a 4 14,G a 4 86,G a 5 14,G a 5 86,G a 6 14,G a 6 86,G a 7 14,G a 7 86,G b 16 14,G b 16 86,G b 4 14,G b 4 86,G b 5 14,G b 5 86,G b 6 14,G b 6 86,G b 7 14,G b 7 86,G c 16 14,G c 16 86,G c 4 14,G c 4 86,G c 5 14,G c 5 86,G c 6 14,G c 6 86,G c 7 14,G c 7 86,G d 16 14,G d 16 86,G d 4 14,G d 4 86,G d 5 14,G d 5 86,G d 6 14,G d 6 86,G d 7 14,G d 7 86,G e 16 14,G e 16 86,G e 4 14,G e 4 86,G e 5 14,G e 5 86,G e 6 14,G e 6 86,G e 7 14,G e 7 86,G g 16 14,G g 16 86,G g 4 14,G g 4 86,G g 5 14,G g 5 86,G g 6 14,G g 6 86,G g 7 14,G g 7 86,G i 16 14,G i 16 86,G i 4 14,G i 4 86,G i 5 14,G i 5 86,G i 6 14,G i 6 86,G i 7 14,G i 7 86,G q 16 14,G q 16 86,G q 4 14,G q 4 86,G q 5 14,G q 5 86,G q 6 14,G q 6 86,G q 7 14,G q 7 86,G r 16 14,G r 16 86,G r 4 14,G r 4 86,G r 5 14,G r 5 86,G r 6 14,G r 6 86,G r 7 14,G r 7 86,G result 16 14,G result 16 86,G result 4 14,G result 4 86,G result 5 14,G result 5 86,G result 6 14,G result 6 86,G result 7 14,G result 7 86,G some 16 14,G some 16 86,G some 4 14,G some 4 86,G some 5 14,G some 5 86,G some 6 14,G some 6 86,G some 7 14,G some 7 86,G t 16 14,G t 16 86,G t 4 14,G t 4 86,G t 5 14,G t 5 86,G t 6 14,G t 6 86,G t 7 14,G t 7 86,G w 16 14,G w 16 86,G w 4 14,G w 4 86,G w 5 14,G w 5 86,G w 6 14,G w 6 86,G w 7 14,G w 7 86,G x 16 14,G x 16 86,G x 4 14,G x 4 86,G x 5 14,G x 5 86,G x 6 14,G x 6 86,G x 7 14,G x 7 86,G y 16 14,G y 16 86,G y 4 14,G y 4 86,G y 5 14,G y 5 86,G y 6 14,G y 6 86,G y 7 14,G y 7 86
33) G a 16 14 d,G a 16 14 r,G a 16 86 a,G a 16 86 t,G a 4 14 d,G a 4 14 r,G a 4 86 a,G a 4 86 t,G a 5 14 d,G a 5 14 r,G a 5 86 a,G a 5 86 t,G a 6 14 d,G a 6 14 r,G a 6 86 a,G a 6 86 t,G a 7 14 d,G a 7 14 r,G a 7 86 a,G a 7 86 t,G b 16 14 d,G b 16 14 r,G b 16 86 a,G b 16 86 t,G b 4 14 d,G b 4 14 r,G b 4 86 a,G b 4 86 t,G b 5 14 d,G b 5 14 r,G b 5 86 a,G b 5 86 t,G b 6 14 d,G b 6 14 r,G b 6 86 a,G b 6 86 t,G b 7 14 d,G b 7 14 r,G b 7 86 a,G b 7 86 t,G c 16 14 d,G c 16 14 r,G c 16 86 a,G c 16 86 t,G c 4 14 d,G c 4 14 r,G c 4 86 a,G c 4 86 t,G c 5 14 d,G c 5 14 r,G c 5 86 a,G c 5 86 t,G c 6 14 d,G c 6 14 r,G c 6 86 a,G c 6 86 t,G c 7 14 d,G c 7 14 r,G c 7 86 a,G c 7 86 t,G d 16 14 d,G d 16 14 r,G d 16 86 a,G d 16 86 t,G d 4 14 d,G d 4 14 r,G d 4 86 a,G d 4 86 t,G d 5 14 d,G d 5 14 r,G d 5 86 a,G d 5 86 t,G d 6 14 d,G d 6 14 r,G d 6 86 a,G d 6 86 t,G d 7 14 d,G d 7 14 r,G d 7 86 a,G d 7 86 t,G e 16 14 d,G e 16 14 r,G e 16 86 a,G e 16 86 t,G e 4 14 d,G e 4 14 r,G e 4 86 a,G e 4 86 t,G e 5 14 d,G e 5 14 r,G e 5 86 a,G e 5 86 t,G e 6 14 d,G e 6 14 r,G e 6 86 a,G e 6 86 t,G e 7 14 d,G e 7 14 r,G e 7 86 a,G e 7 86 t,G g 16 14 d,G g 16 14 r,G g 16 86 a,G g 16 86 t,G g 4 14 d,G g 4 14 r,G g 4 86 a,G g 4 86 t,G g 5 14 d,G g 5 14 r,G g 5 86 a,G g 5 86 t,G g 6 14 d,G g 6 14 r,G g 6 86 a,G g 6 86 t,G g 7 14 d,G g 7 14 r,G g 7 86 a,G g 7 86 t,G i 16 14 d,G i 16 14 r,G i 16 86 a,G i 16 86 t,G i 4 14 d,G i 4 14 r,G i 4 86 a,G i 4 86 t,G i 5 14 d,G i 5 14 r,G i 5 86 a,G i 5 86 t,G i 6 14 d,G i 6 14 r,G i 6 86 a,G i 6 86 t,G i 7 14 d,G i 7 14 r,G i 7 86 a,G i 7 86 t,G q 16 14 d,G q 16 14 r,G q 16 86 a,G q 16 86 t,G q 4 14 d,G q 4 14 r,G q 4 86 a,G q 4 86 t,G q 5 14 d,G q 5 14 r,G q 5 86 a,G q 5 86 t,G q 6 14 d,G q 6 14 r,G q 6 86 a,G q 6 86 t,G q 7 14 d,G q 7 14 r,G q 7 86 a,G q 7 86 t,G r 16 14 d,G r 16 14 r,G r 16 86 a,G r 16 86 t,G r 4 14 d,G r 4 14 r,G r 4 86 a,G r 4 86 t,G r 5 14 d,G r 5 14 r,G r 5 86 a,G r 5 86 t,G r 6 14 d,G r 6 14 r,G r 6 86 a,G r 6 86 t,G r 7 14 d,G r 7 14 r,G r 7 86 a,G r 7 86 t,G result 16 14 d,G result 16 14 r,G result 16 86 a,G result 16 86 t,G result 4 14 d,G result 4 14 r,G result 4 86 a,G result 4 86 t,G result 5 14 d,G result 5 14 r,G result 5 86 a,G result 5 86 t,G result 6 14 d,G result 6 14 r,G result 6 86 a,G result 6 86 t,G result 7 14 d,G result 7 14 r,G result 7 86 a,G result 7 86 t,G some 16 14 d,G some 16 14 r,G some 16 86 a,G some 16 86 t,G some 4 14 d,G some 4 14 r,G some 4 86 a,G some 4 86 t,G some 5 14 d,G some 5 14 r,G some 5 86 a,G some 5 86 t,G some 6 14 d,G some 6 14 r,G some 6 86 a,G some 6 86 t,G some 7 14 d,G some 7 14 r,G some 7 86 a,G some 7 86 t,G t 16 14 d,G t 16 14 r,G t 16 86 a,G t 16 86 t,G t 4 14 d,G t 4 14 r,G t 4 86 a,G t 4 86 t,G t 5 14 d,G t 5 14 r,G t 5 86 a,G t 5 86 t,G t 6 14 d,G t 6 14 r,G t 6 86 a,G t 6 86 t,G t 7 14 d,G t 7 14 r,G t 7 86 a,G t 7 86 t,G w 16 14 d,G w 16 14 r,G w 16 86 a,G w 16 86 t,G w 4 14 d,G w 4 14 r,G w 4 86 a,G w 4 86 t,G w 5 14 d,G w 5 14 r,G w 5 86 a,G w 5 86 t,G w 6 14 d,G w 6 14 r,G w 6 86 a,G w 6 86 t,G w 7 14 d,G w 7 14 r,G w 7 86 a,G w 7 86 t,G x 16 14 d,G x 16 14 r,G x 16 86 a,G x 16 86 t,G x 4 14 d,G x 4 14 r,G x 4 86 a,G x 4 86 t,G x 5 14 d,G x 5 14 r,G x 5 86 a,G x 5 86 t,G x 6 14 d,G x 6 14 r,G x 6 86 a,G x 6 86 t,G x 7 14 d,G x 7 14 r,G x 7 86 a,G x 7 86 t,G y 16 14 d,G y 16 14 r,G y 16 86 a,G y 16 86 t,G y 4 14 d,G y 4 14 r,G y 4 86 a,G y 4 86 t,G y 5 14 d,G y 5 14 r,G y 5 86 a,G y 5 86 t,G y 6 14 d,G y 6 14 r,G y 6 86 a,G y 6 86 t,G y 7 14 d,G y 7 14 r,G y 7 86 a,G y 7 86 t
34) G a 16 14 d 36 35,G a 16 14 r 36 35,G b 16 14 d 36 35,G b 16 14 r 36 35,G c 16 14 d 36 35,G c 16 14 r 36 35,G d 16 14 d 36 35,G d 16 14 r 36 35,G e 16 14 d 36 35,G e 16 14 r 36 35,G g 16 14 d 36 35,G g 16 14 r 36 35,G i 16 14 d 36 35,G i 16 14 r 36 35,G q 16 14 d 36 35,G q 16 14 r 36 35,G r 16 14 d 36 35,G r 16 14 r 36 35,G result 16 14 d 36 35,G result 16 14 r 36 35,G some 16 14 d 36 35,G some 16 14 r 36 35,G t 16 14 d 36 35,G t 16 14 r 36 35,G w 16 14 d 36 35,G w 16 14 r 36 35,G x 16 14 d 36 35,G x 16 14 r 36 35,G y 16 14 d 36 35,G y 16 14 r 36 35
35) G a 16 14 d 36 35,G a 16 14 r 36 35,G b 16 14 d 36 35,G b 16 14 r 36 35,G c 16 14 d 36 35,G c 16 14 r 36 35,G d 16 14 d 36 35,G d 16 14 r 36 35,G e 16 14 d 36 35,G e 16 14 r 36 35,G g 16 14 d 36 35,G g 16 14 r 36 35,G i 16 14 d 36 35,G i 16 14 r 36 35,G q 16 14 d 36 35,G q 16 14 r 36 35,G r 16 14 d 36 35,G r 16 14 r 36 35,G result 16 14 d 36 35,G result 16 14 r 36 35,G some 16 14 d 36 35,G some 16 14 r 36 35,G t 16 14 d 36 35,G t 16 14 r 36 35,G w 16 14 d 36 35,G w 16 14 r 36 35,G x 16 14 d 36 35,G x 16 14 r 36 35,G y 16 14 d 36 35,G y 16 14 r 36 35
36) x, y, z
37) result
38) y, a, w, z, b, c, x, s, r, t, result, i, j, v
39) x, y, w, z, c, a, s, r, t, result, i, j, b
40) x, y, w, z, c, a, s, r, t, result, i, j, b
41) d
42) some
43) a, q, d, in, e, w, b, i, r, c, x, y, result, t, k, something, l, input
44) a, t, b, in, e, result
45) e, a, t, b, in, result
46) b, a, i, r, c, x, y, result, e, t, in, k, something, l, input
47) none
48) 2,3,4,5,6,7,8,9,10
49) 104,106
50) 104,106

Test 2

SIMPLE source

Strategies involved: No. 1 & 2 from PKB

procedure A {
	print x; \\ 1
	\\ Test if stmt
	if (x == 1) then { \\ 2
		read y; \\ 3
	} else {
		read z; \\ 4
	}
	\\ Test while stmt
	while (x == 0) { \\ 5
		read a; \\ 6
	}
	\\ Test while stmt nested in if-then stmt
	if (x == 0) then { \\ 7
		while (x == 0) { \\ 8
			read b; \\ 9
		}
	} else {
		read c; \\ 10
	}
	\\ Test while stmt nested in if-else stmt
	if (x == 0) then { \\ 11
		read c; \\ 12
	} else {
		while (x == 0) { \\ 13
			read b; \\ 14
		}
	}
	\\ Test if stmt nested in while stmt 
	while (x == 1) { \\ 15
		if (y == 2) then { \\ 16
			z = 3 + 2 - x; \\ 17
		} else {
			x = 5; \\ 18
		}
	}
	\\ Test if stmt nested in while stmt with one line after if block
	while (x == 0) { \\ 19
		if (x == 0) then { \\ 20
			read x; \\ 21
		} else {
			read d; \\ 22
		}
		print k; \\ 23
	}
	\\ Test if stmt nested in if-then stmt
	if (x == 0) then { \\ 24
		if (x == 0) then { \\ 25
			read y; \\ 26
		} else {
			read z; \\ 27
		}
	} else {
		read z; \\ 28
	}
	\\ Test if stmt nested in if-else stmt
	if (x == 0) then { \\ 29
		read x; \\ 30
	} else {
		if (x == 0) then { \\ 31
			read y; \\ 32
		} else {
			read z; \\ 33
		}
	}
	\\ Test if stmt nested in both if-then and if-else stmts
	if (x == 0) then { \\ 34
		if (q == 213) then { \\ 35
			read y; \\ 36
		} else {
			read z; \\ 37
		}
	} else {
		if (r == 22) then { \\ 38
			print y; \\ 39
		} else {
			read z; \\ 40
		}
	}
	\\ Test if stmt nested in if-then stmt with one line after if stmt
	if (x == 0) then { \\ 41
		if (x == 0) then { \\ 42
			read y; \\ 43
		} else {
			read z; \\ 44
		}
		print xyz; \\ 45
	} else {
		read z; \\ 46
	}
	\\ Test if stmt nested in if-else stmt with next line after if stmt
	if (x == 0) then { \\ 47
		read x; \\ 48
	} else {
		if (x == 0) then { \\ 49
			read y; \\ 50
		} else {
			read z; \\ 51
		}
		print xyz; \\ 52
	}
	\\ Test if stmt nested in if stmt with next line after both if-then and if-else stmts
	if (x == 0) then { \\ 53
		if (x == 0) then { \\ 54
			read y; \\ 55
		} else {
			read z; \\ 56
		}
		print xyz; \\ 57
	} else {
		if (x == 0) then { \\ 58
			read y; \\ 59
		} else {
			read z; \\ 60
		}
		print xyz; \\ 61
	}
	\\ Test if stmt nested if stmt nested in while stmt
	while (p == (10 + l)) { \\ 62
		if ((o == 0) && (b == 6)) then { \\ 63
			if (k == 1) then { \\ 64
				fas = 0; \\ 65
			} else {
				fass = 1; \\ 66
			}
		} else {
			if (q == 2) then { \\ 67
				foo = 2; \\ 68
			} else {
				bar = 3; \\ 69
			}
		}
	}
	\\ Test while stmt nested in while stmt nested in if stmt
	if (x == h) then { \\ 70
		while (w == 3) { \\ 71
			while (f != 3243) { \\ 72
				read s; \\ 73
			}
		}
	} else {
		print k; \\ 74
	}
	\\ Test if stmt nested in while stmt nested in if stmt nested in if stmt
	if (c == d) then { \\ 75
		if (v == u) then { \\ 76
			while (t == g) { \\ 77
				if (d == 2) then { \\ 78
					print x; \\ 79
				} else {
					read y; \\ 80
				}
			}
		} else {
			a = b; \\ 81
		}
	} else {
		x = 5; \\ 82
	}
	\\ Test affects in deep nested loops
	while ((ss < 0) && (rr > tt) || (mm == 12) && (nn != (bb - aa)) || (kk <= (pp + 1))) { \\ 83
		m =  (n - p) / 2  +  n; \\84
		p = 9; \\ 85
		k = j; \\ 86
		j = k; \\ 87
		if (p >=  9)  then { \\ 88
			p = n;  \\ 89
			while (k >= n) { \\90
				aa = aa + 1; \\91
				aa = aa + 3; \\92
				while (jj == 11) { \\ 93
					f = j; \\94
					if (j > 10) then { \\95
						f = n + f; \\ 96
					}
					else {
						n = n + f; \\ 97
					}
					f = n; \\ 98
					while (p == n) { \\ 99
						m = aa + p; \\ 100
						p = m * m; \\ 101
						while (m == 0) { \\ 102
							j = j + k; \\103
						}
					}
					n = k; \\ 104
				}
				j = f; \\ 105
				j = n; \\ 106
			}
			p = aa; \\ 107	
		}
		else {
			p = n; \\ 108
		}
		p = aa + n; \\ 109
		n = m + 1; \\ 110
	}
	print m; \\ 111 
	q = m + p; \\ 112
	m = n - p / 2 + n; \\ 113
	if  ((q == 11) && (m > 22)) then { \\ 114
		p = m; \\ 115
	} else {
		m = p; \\ 116 
		n = p; \\ 117
	}
	aa = m - p + n + aa; \\ 118
	x = (a / b) + (a % b) - (a * b); \\ 119
	n = (o + p - (q + r)) / s - t % (u * v - w) % (x * y / z); \\ 120

	\\ Test affects with single while stmt
	be = 500; \\121
	be2 = 501; \\122
	while (x == 0) { \\ 123
		is = be + 1; \\ 124
		in1 = 2; \\ 125
		out1 = in1+ 2; \\126
		out2 = in2 + 3; \\127
		in2 = 1; \\128
	}
	af = be2 - 1; \\129
	af2 = is + 1; \\130

	\\ Test affects with single if stmt
	be3 = 500; \\131
	be4 = 501; \\132
	if  ((q == 11) && (m > 22)) then { \\ 133
		is2 = be3 - 1; \\134
	} else {
		is3 = be4 + 1; \\ 135 
	}
	af3 = be3 - 1; \\ 136
	af4 = is2 + 1; \\137

	\\ Test affects with if nested in while
	be5 = 500; \\138
	while(x == 0) { \\139
		if(x == 0) then { \\140
			is4 = be5 - 1; \\141
		} else {
			x = 0; \\142
		}
	}

	while(x == 0) { \\143
		be6 = 500; \\144 
		if(x == 0) then { \\145
			is5 = be6 - 1; \\146
		} else {
			x = 0; \\147
		}
	}

	while(x == 0) { \\148
		if(x == 0) then { \\149
			be7 = 500; \\150
		} else {
			x = 0; \\151
		}
		is6 = be7 + 1; \\152
	}

	while(x == 0) { \\153
		if(x == 0) then { \\154
			be8 = 500; \\155
		} else {
			is7 = be8 + 1; \\ 156
		}
	}

	\\ Test affects with while nested in if
	be9 = 500; \\157
	if (x == 9) then { \\ 158
		while (x == 0) { \\159
			is8 = be9 + 1; \\160
		}
	} else {
		x = 1; \\161
	}

	be10 = 500; \\162
	if (x == 9) then { \\163
		while (x == 0) { \\164
			x = 0; \\ 165
		}
		is9 = be10 + 1; \\ 166
	} else {
		x = 1; \\167
	}

	if (x == 9) then { \\168
		while (x == 0) { \\169
			be11 = 500; \\170
		}
		is10 = be11 + 1; \\171
	} else {
		x = 1; \\172
	}

	if (x == 9) then { \\173
		while (x == 0) { \\ 174
			be12 = 500; \\175
		}
	} else {
		x = 1; \\176
	}
	is11 = be12 + 1; \\177

	\\ Test affects with while nested in while
	while (x == 0) { \\178
		be13 = 500; \\179
		while(x == 0) { \\180
			is12 = be13 + 1; \\181
		}
	}

	while (x == 0) { \\182
		is13 = be14 + 1; \\183
		while(x == 0) { \\184
			be14 = 500; \\185
		}
	}

	while (x == 0) { \\186
		while(x == 0) { \\187
			be15 = 500; \\188
			is14 = be15 + 1; \\189
		}
	}

	while (x == 0) { \\190
		while(x == 0) { \\191
			is15 = be16 + 1; \\192
			be16 = 500; \\193
		}
	}
}

The strategy for using this SIMPLE source is to verify that various relations can be correctly populated by parser and design extractor within different nesting types and nesting levels. For example, Uses and Modifies relations should be correctly populated for each container statements and Next, Next*, Affects, Affects* should also be correctly populated according the CFG graph of the source. The nesting types are mainly if and while statements that are nested with themselves or each other, such as, if stmt nested in while stmt nested in if stmt nested in if stmt, and nesting levels are how deep the nesting is.

For the SIMPLE source above, the CFG graph (until line 118) is shown below.

Queries

Strategies involved: No. 1, 3, 4, 5, 8 from PQL

General declarations apply for all queries, except for queries with their own decalrations above:
call c; procedure p, p1, p2; assign a, a1, a2; prog_line pl; variable v, v1, v2;while w; if ifs, ifs2; stmt s,s1,s2; constant cons; print pr; read r;

1) Select a such that Follows(a, _)
2) Select w such that Follows*(w, _)
3) Select ifs such that Parent(ifs, 61)
4) Select ifs such that Parent*(ifs, 80)
5) Select v such that Uses(w, v)
6) Select s such that Modifies(s, _)

Reasoning:
These queries are to verify that the basic relations can be populated correctly in different nesting levels.

7) Select BOOLEAN such that Next(19, 20)
8) Select s such that Next(2, s)
9) Select s such that Next(5, s)
10) Select s such that Next(s, 62)
11) Select s such that Next(s, 41)
12) Select w such that Next(w, ifs)
13) Select w1 such that Next(w1, w2)
14) Select BOOLEAN such that Next*(75, 75)
15) Select s such that Next*(75, s)
16) Select s such that Next*(s, s)
17) Select s such that Next*(s, 15)

Reasoning:
By looking through the CFG graph of the SIMPLE source, these queries help to verify that the Next and Next* relations are correctly populated. For example, Next(s, 15), s should be 17, 18, 12, 13, since there is no statement after the two if statement(stmt 11 and 16) near statement 15. Similarly, the CFG graph is examined and other test cases for other types of Next and Next* relations are tested.

18) Select <s, s1> such that Affects(s, s1)
19) Select <s> such that Affects(s, _)
20) Select <s> such that Affects(_, s)
21) Select s such that Affects(s, s)
22) Select <s, s1> such that Affects*(s, s1)
23) Select <s> such that Affects*(s, _)
24) Select <s> such that Affects*(s, 94)
25) Select BOOLEAN such that Affects*(103, 94)
26) Select s such that Affects*(s, s)

Reasoning:
Line number from 83 to 193 are code fragments designed to test the computation of Affects and Affects* in different nesting levels. in the most nesting levels (5 levels) case, the queries verify that if all the Affects and Affects* relations can be correctly found across all the nesting levels, both from most outer to most inner and from most inner to most outer by the effect of while loops. Other test cases are created based on each of the following general categories in the queries file:
// while stmt only
a. Before while loop some variable modified, used in while loop
b. Before while loop some variable modified, used after while loop
c. In while loop some variable modified, used after while loop
d. In while loop some variable modified in a1, used in while loop in a2, where a1 < a2
e. In while loop some variable modified in a1, used in while loop in a2, where a1 > a2
// if stmt only
f. Before if some variable modified, used in if-then branch 
g. Before if some variable modified, used in if-else branch 
h. Before if some variable modified, used after if block
if nest in while
i. Before while loop some variable modified, used in nested if-then branch
j. In while loop some variable modified (before if block), used in nested if-then branch
k. In while loop some variable modified (after if block), used in nested if-then branch
l. In nested if-then branch some variable modified, used in nested if-else branch
// while stmt nested in if stmt
m. Before if some variable modified, used in while loop
n. Before if some variable modified, used after while loop
o. In while loop some variable modified, used after while loop
p. In while loop some variable modified, used after if block
// while stmt nested in while stmt
q. In outer while loop some variable modified, used in inner while loop
r. In outer while loop some variable used, modified in inner while loop
s. In inner while loop, some variable modified in line a1, used in line a2, a1 < a2
t. In inner while loop, some variable modified in line a1, used in line a2, a1 > a2

27) Select a pattern a("n", " (o + p - (q + r)) / s - t % (u * v - w) % (x * y / z)")
28) Select BOOLEAN pattern a("n", " ((o + p) - (q + r)) / s - t % ((u * v) - w) % ((x *  y )  /  z)")
29) Select a pattern a("n", " (o + p - (q + r)) / s - t % (u * (v - w)) % (x * y / z)")
30) Select a pattern a("n", " ((o + p - (q + r)) / s - t % (u * v - w) % (x * y / z)")
31) Select a pattern a("n", " ((o + p - (q + r)) / s - t % (u * v - w) % (x * y / z)")
32) Select a pattern a("n", _" ((o + p - (q + r)) / s - t % (u * v - w) % (x * y / z)"_)
33) Select a pattern a("n", _" t %(u *v- w)"_)
34) Select BOOLEAN pattern a("n", _"o+P"_)
35) Select BOOLEAN pattern a("n", _"p-(q+r)"_)
36) Select a pattern a("n", _"o+p-(q+r)"_)
37) Select a pattern a("n", _"t % (u * v - w) % (x * y / z)"_)
38) Select a pattern a(_, _"(a % b) - (a * b)"_)
39) Select v pattern w(v, _) with w.stmt# = 83
40) Select v pattern ifs(v, _,_) with ifs.stmt# = 114

Reasoning:
These queries are to test the pattern clause. For assign patterns, testing the exact match will still match if redundant brackets that does not affect the expression tree are added and testing various subtrees that are contained in the expression(partial match). For while and if patterns, testing all the control variables in the condition expressions are correctly extracted. For example, all the variables(ss, rr, tt, mm, nn, bb, aa, kk, pp) in the condition expression of while statement at 83 should be returned.

41) Select <v2> such that Modifies(r, v2) and Next*(r, _) and Affects*(a2,a3)
42) Select <a, w, p.varName> such that Next(a,_) with a.stmt# = n such that Parent*(w, a) pattern w(v,_) and ifs(v,_,_) such that Parent(ifs1,w) such that Uses(s, "x") with p.varName = "y" such that Affects*(a, _) and Next*(s,a) and Next*(30,p)
43) Select <a, w, p.varName> such that Next(a,_) with a.stmt# = n such that Parent*(w, a) pattern w(v,_) and ifs(v,_,_) such that Parent(ifs1,w) such that Uses(s, "x") with p.varName = "y" such that Affects*(a, _) and Next*(s,a) and Next*(30,p) and Affects*(s1, _) and Follows*(s1, a1) pattern a1(v1,_) such that Uses(s2, v1)
44) Select <a, w, p.varName, v1> such that Next(a,_) with a.stmt# = n such that Parent*(w, a) pattern w(v,_) and ifs(v,_,_) such that Parent(ifs1,w) such that Uses(s, "x") with p.varName = "y" such that Affects*(a, _) and Next*(s,a) and Next*(30,p) and Affects*(s1, _) and Follows*(s1, a1) pattern a1(v1,_) such that Uses(s2, v1)
45) Select <a, w, p.varName, v1,v2> such that Next(a,_) with a.stmt# = n such that Parent*(w, a) pattern w(v,_) and ifs(v,_,_) such that Parent(ifs1,w) such that Uses(s, "x") with p.varName = "y" such that Affects*(a, _) and Next*(s,a) and Next*(30,p) and Affects*(s1, _) and Follows*(s1, a1) pattern a1(v1,_) such that Uses(s2, v1) such that Modifies(r, v2) and Next*(r, _) and Affects*(a2,a3)

Reasoning:
These queries cover all types of relations to verify that they can be performed together in the same query. These queries have several groups with connected synonyms inside each group and stress test by doing cross product on these groups if some synonyms inside are to be selected in the select tuple (Query 45).

Test Purpose: The SIMPLE source and the PQL queries aim to test if the relations can be correctly populated in different nesting types and nesting levels, especially for Next, Next*, Affects and Affects* relations. Additionally, this system test aims to verify various kinds of patterns, including assign, while and if pattern. Finally, the queries are formulated with many groups of connected synonyms and cover all the relation types, which verifies the correctness of the results after combining them together and also stressing on the result size by performing more cross product.

Required Test Inputs: Filepath to a SIMPLE source program with many variants of if/while permutations and different nesting levels.

Expected Test Results:

1) 100,101,105,109,112,113,116,84,85,86,87,89,91,92,94,98,118,119,120,121,122,124,125,126,127,129,130,131,132,136,137,138,144,157,162,177,179,183,188,192
2) 5, 15, 19, 62, 83,90,93,99,123,139,143,148,153,164,169,178,182,186
3) 53
4) 75, 76, 78
5) x, k, p, l, o, b, q, w, f, t, g, d, y, m, aa, n, j, jj,bb,kk,mm,nn,pp,rr,ss,tt,be,be13,be14,be15,be16,be5,be6,be7,be8,be9,in1,in2
6) 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77, 78, 80, 81, 82,100,101,102,103,104,105,106,107,108,109,110,112,113,114,115,116,117,118,119,120,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193
7) TRUE
8) 3, 4
9) 6, 7
10) 65, 66, 68, 69, 57, 61
11) 36, 37, 39, 40
12) 5, 8, 15, 19, 62, 71, 77,139,148,153
13) 13, 15, 71, 72, 77, 102,139,143,148,178,180,182,184,186,187,190,191
14) FALSE
15) 76, 77, 78, 79, 80, 81, 82, 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193
16) 13,14,15,16,17,18,19,20,21,22,23,5,6,62,63,64,65,66,67,68,69,71,72,73,77,78,79,8,80,9,100,101,102,103,104,105,106,107,108,109,110,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,123,124,125,126,127,128,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,159,160,164,165,169,170,174,175,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193
17) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
18) 100 101,100 110,100 112,101 100,103 103,103 94,104 106,104 109,104 96,104 97,104 98,106 103,106 86,106 94,109 112,109 113,109 116,109 117,109 118,109 84,110 106,110 108,110 109,110 113,110 118,110 84,110 89,110 96,110 97,110 98,113 115,113 118,115 118,116 118,117 118,18 17,84 110,84 112,86 103,86 104,86 87,87 103,87 86,87 94,89 100,91 92,92 100,92 107,92 109,92 118,92 91,94 96,94 97,97 98,98 105,109 120,112 120,115 120,119 120,17 120,81 119
19) 100,101,103,104,106,109,110,112,113,115,116,117,119,17,18,81,84,86,87,89,91,92,94,97,98
20) 100,101,103,104,105,106,107,108,109,110,112,113,115,116,117,118,119,120,17,84,86,87,89,91,92,94,96,97,98
21) 103
22) 100 100,100 101,100 110,100 112,101 100,101 101,101 110,101 112,103 103,103 105,103 94,103 96,103 97,103 98,104 103,104 105,104 106,104 109,104 86,104 94,104 96,104 97,104 98,106 103,106 105,106 109,106 86,106 94,106 96,106 97,106 98,113 115,113 118,115 118,116 118,117 118,18 17,84 110,84 112,86 103,86 104,86 105,86 106,86 109,86 87,86 94,86 96,86 97,86 98,87 103,87 105,87 94,87 96,87 97,87 98,89 100,89 101,89 110,91 100,91 101,91 107,91 109,91 110,91 112,91 118,91 91,91 92,92 100,92 101,92 107,92 109,92 110,92 112,92 118,92 91,92 92,94 105,94 96,94 97,94 98,97 105,97 98,98 105,112 120,113 120,115 120,119 120,17 120,18 120,81 119,81 120,84 120,100 103,100 104,100 105,100 106,100 108,100 109,100 113,100 115,100 116,100 117,100 118,100 120,100 84,100 86,100 87,100 89,100 94,100 96,100 97,100 98,101 103,101 104,101 105,101 106,101 108,101 109,101 113,101 115,101 116,101 117,101 118,101 120,101 84,101 86,101 87,101 89,101 94,101 96,101 97,101 98,104 100,104 101,104 104,104 108,104 110,104 112,104 113,104 115,104 116,104 117,104 118,104 120,104 84,104 87,104 89,106 100,106 101,106 104,106 106,106 108,106 110,106 112,106 113,106 115,106 116,106 117,106 118,106 120,106 84,106 87,106 89,109 100,109 101,109 103,109 104,109 105,109 106,109 108,109 109,109 110,109 112,109 113,109 115,109 116,109 117,109 118,109 120,109 84,109 86,109 87,109 89,109 94,109 96,109 97,109 98,110 100,110 101,110 103,110 104,110 105,110 106,110 108,110 109,110 110,110 112,110 113,110 115,110 116,110 117,110 118,110 120,110 84,110 86,110 87,110 89,110 94,110 96,110 97,110 98,84 100,84 101,84 103,84 104,84 105,84 106,84 108,84 109,84 113,84 115,84 116,84 117,84 118,84 84,84 86,84 87,84 89,84 94,84 96,84 97,84 98,86 100,86 101,86 108,86 110,86 112,86 113,86 115,86 116,86 117,86 118,86 120,86 84,86 86,86 89,87 100,87 101,87 104,87 106,87 108,87 109,87 110,87 112,87 113,87 115,87 116,87 117,87 118,87 120,87 84,87 86,87 87,87 89,89 103,89 104,89 105,89 106,89 108,89 109,89 112,89 113,89 115,89 116,89 117,89 118,89 120,89 84,89 86,89 87,89 89,89 94,89 96,89 97,89 98,91 103,91 104,91 105,91 106,91 108,91 113,91 115,91 116,91 117,91 120,91 84,91 86,91 87,91 89,91 94,91 96,91 97,91 98,92 103,92 104,92 105,92 106,92 108,92 113,92 115,92 116,92 117,92 120,92 84,92 86,92 87,92 89,92 94,92 96,92 97,92 98
23) 100,101,103,104,106,109,110,112,113,115,116,117,119,17,18,81,84,86,87,89,91,92,94,97,98
24) 103,104,106,86,87,100,101,109,110,84,89,91,92
25) TRUE
26) 100,101,103,91,92,104,106,109,110,84,86,87,89
27) 120
28) TRUE
29) none
30) none
31) none
32) none
33) 120
34) FALSE
35) FALSE
36) 120
37) 120
38) none
39) ss, rr, tt, mm, nn, bb, aa, kk, pp
40) q, m
41) a,b,c,d,s,x,y,z
42) 100 90 y,101 90 y,103 90 y,104 90 y,106 90 y,91 90 y,92 90 y,94 90 y,97 90 y,98 90 y,170 169 y,175 174 y
43) 100 90 y,101 90 y,103 90 y,104 90 y,106 90 y,91 90 y,92 90 y,94 90 y,97 90 y,98 90 y,170 169 y,175 174 y
44) 100 90 y aa,100 90 y f,100 90 y j,100 90 y k,100 90 y m,100 90 y n,100 90 y p,100 90 y x,101 90 y aa,101 90 y f,101 90 y j,101 90 y k,101 90 y m,101 90 y n,101 90 y p,101 90 y x,103 90 y aa,103 90 y f,103 90 y j,103 90 y k,103 90 y m,103 90 y n,103 90 y p,103 90 y x,104 90 y aa,104 90 y f,104 90 y j,104 90 y k,104 90 y m,104 90 y n,104 90 y p,104 90 y x,106 90 y aa,106 90 y f,106 90 y j,106 90 y k,106 90 y m,106 90 y n,106 90 y p,106 90 y x,91 90 y aa,91 90 y f,91 90 y j,91 90 y k,91 90 y m,91 90 y n,91 90 y p,91 90 y x,92 90 y aa,92 90 y f,92 90 y j,92 90 y k,92 90 y m,92 90 y n,92 90 y p,92 90 y x,94 90 y aa,94 90 y f,94 90 y j,94 90 y k,94 90 y m,94 90 y n,94 90 y p,94 90 y x,97 90 y aa,97 90 y f,97 90 y j,97 90 y k,97 90 y m,97 90 y n,97 90 y p,97 90 y x,98 90 y aa,98 90 y f,98 90 y j,98 90 y k,98 90 y m,98 90 y n,98 90 y p,98 90 y x,100 90 y be,100 90 y be10,100 90 y be2,100 90 y be3,100 90 y be4,100 90 y be5,100 90 y be9,100 90 y in1,100 90 y in2,101 90 y be,101 90 y be10,101 90 y be2,101 90 y be3,101 90 y be4,101 90 y be5,101 90 y be9,101 90 y in1,101 90 y in2,103 90 y be,103 90 y be10,103 90 y be2,103 90 y be3,103 90 y be4,103 90 y be5,103 90 y be9,103 90 y in1,103 90 y in2,104 90 y be,104 90 y be10,104 90 y be2,104 90 y be3,104 90 y be4,104 90 y be5,104 90 y be9,104 90 y in1,104 90 y in2,106 90 y be,106 90 y be10,106 90 y be2,106 90 y be3,106 90 y be4,106 90 y be5,106 90 y be9,106 90 y in1,106 90 y in2,170 169 y aa,170 169 y be,170 169 y be10,170 169 y be2,170 169 y be3,170 169 y be4,170 169 y be5,170 169 y be9,170 169 y f,170 169 y in1,170 169 y in2,170 169 y j,170 169 y k,170 169 y m,170 169 y n,170 169 y p,170 169 y x,175 174 y aa,175 174 y be,175 174 y be10,175 174 y be2,175 174 y be3,175 174 y be4,175 174 y be5,175 174 y be9,175 174 y f,175 174 y in1,175 174 y in2,175 174 y j,175 174 y k,175 174 y m,175 174 y n,175 174 y p,175 174 y x,91 90 y be,91 90 y be10,91 90 y be2,91 90 y be3,91 90 y be4,91 90 y be5,91 90 y be9,91 90 y in1,91 90 y in2,92 90 y be,92 90 y be10,92 90 y be2,92 90 y be3,92 90 y be4,92 90 y be5,92 90 y be9,92 90 y in1,92 90 y in2,94 90 y be,94 90 y be10,94 90 y be2,94 90 y be3,94 90 y be4,94 90 y be5,94 90 y be9,94 90 y in1,94 90 y in2,97 90 y be,97 90 y be10,97 90 y be2,97 90 y be3,97 90 y be4,97 90 y be5,97 90 y be9,97 90 y in1,97 90 y in2,98 90 y be,98 90 y be10,98 90 y be2,98 90 y be3,98 90 y be4,98 90 y be5,98 90 y be9,98 90 y in1,98 90 y in2
45) 100 90 y aa a,100 90 y aa b,100 90 y aa c,100 90 y aa d,100 90 y aa s,100 90 y aa x,100 90 y aa y,100 90 y aa z,100 90 y f a,100 90 y f b,100 90 y f c,100 90 y f d,100 90 y f s,100 90 y f x,100 90 y f y,100 90 y f z,100 90 y j a,100 90 y j b,100 90 y j c,100 90 y j d,100 90 y j s,100 90 y j x,100 90 y j y,100 90 y j z,100 90 y k a,100 90 y k b,100 90 y k c,100 90 y k d,100 90 y k s,100 90 y k x,100 90 y k y,100 90 y k z,100 90 y m a,100 90 y m b,100 90 y m c,100 90 y m d,100 90 y m s,100 90 y m x,100 90 y m y,100 90 y m z,100 90 y n a,100 90 y n b,100 90 y n c,100 90 y n d,100 90 y n s,100 90 y n x,100 90 y n y,100 90 y n z,100 90 y p a,100 90 y p b,100 90 y p c,100 90 y p d,100 90 y p s,100 90 y p x,100 90 y p y,100 90 y p z,100 90 y x a,100 90 y x b,100 90 y x c,100 90 y x d,100 90 y x s,100 90 y x x,100 90 y x y,100 90 y x z,101 90 y aa a,101 90 y aa b,101 90 y aa c,101 90 y aa d,101 90 y aa s,101 90 y aa x,101 90 y aa y,101 90 y aa z,101 90 y f a,101 90 y f b,101 90 y f c,101 90 y f d,101 90 y f s,101 90 y f x,101 90 y f y,101 90 y f z,101 90 y j a,101 90 y j b,101 90 y j c,101 90 y j d,101 90 y j s,101 90 y j x,101 90 y j y,101 90 y j z,101 90 y k a,101 90 y k b,101 90 y k c,101 90 y k d,101 90 y k s,101 90 y k x,101 90 y k y,101 90 y k z,101 90 y m a,101 90 y m b,101 90 y m c,101 90 y m d,101 90 y m s,101 90 y m x,101 90 y m y,101 90 y m z,101 90 y n a,101 90 y n b,101 90 y n c,101 90 y n d,101 90 y n s,101 90 y n x,101 90 y n y,101 90 y n z,101 90 y p a,101 90 y p b,101 90 y p c,101 90 y p d,101 90 y p s,101 90 y p x,101 90 y p y,101 90 y p z,101 90 y x a,101 90 y x b,101 90 y x c,101 90 y x d,101 90 y x s,101 90 y x x,101 90 y x y,101 90 y x z,103 90 y aa a,103 90 y aa b,103 90 y aa c,103 90 y aa d,103 90 y aa s,103 90 y aa x,103 90 y aa y,103 90 y aa z,103 90 y f a,103 90 y f b,103 90 y f c,103 90 y f d,103 90 y f s,103 90 y f x,103 90 y f y,103 90 y f z,103 90 y j a,103 90 y j b,103 90 y j c,103 90 y j d,103 90 y j s,103 90 y j x,103 90 y j y,103 90 y j z,103 90 y k a,103 90 y k b,103 90 y k c,103 90 y k d,103 90 y k s,103 90 y k x,103 90 y k y,103 90 y k z,103 90 y m a,103 90 y m b,103 90 y m c,103 90 y m d,103 90 y m s,103 90 y m x,103 90 y m y,103 90 y m z,103 90 y n a,103 90 y n b,103 90 y n c,103 90 y n d,103 90 y n s,103 90 y n x,103 90 y n y,103 90 y n z,103 90 y p a,103 90 y p b,103 90 y p c,103 90 y p d,103 90 y p s,103 90 y p x,103 90 y p y,103 90 y p z,103 90 y x a,103 90 y x b,103 90 y x c,103 90 y x d,103 90 y x s,103 90 y x x,103 90 y x y,103 90 y x z,104 90 y aa a,104 90 y aa b,104 90 y aa c,104 90 y aa d,104 90 y aa s,104 90 y aa x,104 90 y aa y,104 90 y aa z,104 90 y f a,104 90 y f b,104 90 y f c,104 90 y f d,104 90 y f s,104 90 y f x,104 90 y f y,104 90 y f z,104 90 y j a,104 90 y j b,104 90 y j c,104 90 y j d,104 90 y j s,104 90 y j x,104 90 y j y,104 90 y j z,104 90 y k a,104 90 y k b,104 90 y k c,104 90 y k d,104 90 y k s,104 90 y k x,104 90 y k y,104 90 y k z,104 90 y m a,104 90 y m b,104 90 y m c,104 90 y m d,104 90 y m s,104 90 y m x,104 90 y m y,104 90 y m z,104 90 y n a,104 90 y n b,104 90 y n c,104 90 y n d,104 90 y n s,104 90 y n x,104 90 y n y,104 90 y n z,104 90 y p a,104 90 y p b,104 90 y p c,104 90 y p d,104 90 y p s,104 90 y p x,104 90 y p y,104 90 y p z,104 90 y x a,104 90 y x b,104 90 y x c,104 90 y x d,104 90 y x s,104 90 y x x,104 90 y x y,104 90 y x z,106 90 y aa a,106 90 y aa b,106 90 y aa c,106 90 y aa d,106 90 y aa s,106 90 y aa x,106 90 y aa y,106 90 y aa z,106 90 y f a,106 90 y f b,106 90 y f c,106 90 y f d,106 90 y f s,106 90 y f x,106 90 y f y,106 90 y f z,106 90 y j a,106 90 y j b,106 90 y j c,106 90 y j d,106 90 y j s,106 90 y j x,106 90 y j y,106 90 y j z,106 90 y k a,106 90 y k b,106 90 y k c,106 90 y k d,106 90 y k s,106 90 y k x,106 90 y k y,106 90 y k z,106 90 y m a,106 90 y m b,106 90 y m c,106 90 y m d,106 90 y m s,106 90 y m x,106 90 y m y,106 90 y m z,106 90 y n a,106 90 y n b,106 90 y n c,106 90 y n d,106 90 y n s,106 90 y n x,106 90 y n y,106 90 y n z,106 90 y p a,106 90 y p b,106 90 y p c,106 90 y p d,106 90 y p s,106 90 y p x,106 90 y p y,106 90 y p z,106 90 y x a,106 90 y x b,106 90 y x c,106 90 y x d,106 90 y x s,106 90 y x x,106 90 y x y,106 90 y x z,91 90 y aa a,91 90 y aa b,91 90 y aa c,91 90 y aa d,91 90 y aa s,91 90 y aa x,91 90 y aa y,91 90 y aa z,91 90 y f a,91 90 y f b,91 90 y f c,91 90 y f d,91 90 y f s,91 90 y f x,91 90 y f y,91 90 y f z,91 90 y j a,91 90 y j b,91 90 y j c,91 90 y j d,91 90 y j s,91 90 y j x,91 90 y j y,91 90 y j z,91 90 y k a,91 90 y k b,91 90 y k c,91 90 y k d,91 90 y k s,91 90 y k x,91 90 y k y,91 90 y k z,91 90 y m a,91 90 y m b,91 90 y m c,91 90 y m d,91 90 y m s,91 90 y m x,91 90 y m y,91 90 y m z,91 90 y n a,91 90 y n b,91 90 y n c,91 90 y n d,91 90 y n s,91 90 y n x,91 90 y n y,91 90 y n z,91 90 y p a,91 90 y p b,91 90 y p c,91 90 y p d,91 90 y p s,91 90 y p x,91 90 y p y,91 90 y p z,91 90 y x a,91 90 y x b,91 90 y x c,91 90 y x d,91 90 y x s,91 90 y x x,91 90 y x y,91 90 y x z,92 90 y aa a,92 90 y aa b,92 90 y aa c,92 90 y aa d,92 90 y aa s,92 90 y aa x,92 90 y aa y,92 90 y aa z,92 90 y f a,92 90 y f b,92 90 y f c,92 90 y f d,92 90 y f s,92 90 y f x,92 90 y f y,92 90 y f z,92 90 y j a,92 90 y j b,92 90 y j c,92 90 y j d,92 90 y j s,92 90 y j x,92 90 y j y,92 90 y j z,92 90 y k a,92 90 y k b,92 90 y k c,92 90 y k d,92 90 y k s,92 90 y k x,92 90 y k y,92 90 y k z,92 90 y m a,92 90 y m b,92 90 y m c,92 90 y m d,92 90 y m s,92 90 y m x,92 90 y m y,92 90 y m z,92 90 y n a,92 90 y n b,92 90 y n c,92 90 y n d,92 90 y n s,92 90 y n x,92 90 y n y,92 90 y n z,92 90 y p a,92 90 y p b,92 90 y p c,92 90 y p d,92 90 y p s,92 90 y p x,92 90 y p y,92 90 y p z,92 90 y x a,92 90 y x b,92 90 y x c,92 90 y x d,92 90 y x s,92 90 y x x,92 90 y x y,92 90 y x z,94 90 y aa a,94 90 y aa b,94 90 y aa c,94 90 y aa d,94 90 y aa s,94 90 y aa x,94 90 y aa y,94 90 y aa z,94 90 y f a,94 90 y f b,94 90 y f c,94 90 y f d,94 90 y f s,94 90 y f x,94 90 y f y,94 90 y f z,94 90 y j a,94 90 y j b,94 90 y j c,94 90 y j d,94 90 y j s,94 90 y j x,94 90 y j y,94 90 y j z,94 90 y k a,94 90 y k b,94 90 y k c,94 90 y k d,94 90 y k s,94 90 y k x,94 90 y k y,94 90 y k z,94 90 y m a,94 90 y m b,94 90 y m c,94 90 y m d,94 90 y m s,94 90 y m x,94 90 y m y,94 90 y m z,94 90 y n a,94 90 y n b,94 90 y n c,94 90 y n d,94 90 y n s,94 90 y n x,94 90 y n y,94 90 y n z,94 90 y p a,94 90 y p b,94 90 y p c,94 90 y p d,94 90 y p s,94 90 y p x,94 90 y p y,94 90 y p z,94 90 y x a,94 90 y x b,94 90 y x c,94 90 y x d,94 90 y x s,94 90 y x x,94 90 y x y,94 90 y x z,97 90 y aa a,97 90 y aa b,97 90 y aa c,97 90 y aa d,97 90 y aa s,97 90 y aa x,97 90 y aa y,97 90 y aa z,97 90 y f a,97 90 y f b,97 90 y f c,97 90 y f d,97 90 y f s,97 90 y f x,97 90 y f y,97 90 y f z,97 90 y j a,97 90 y j b,97 90 y j c,97 90 y j d,97 90 y j s,97 90 y j x,97 90 y j y,97 90 y j z,97 90 y k a,97 90 y k b,97 90 y k c,97 90 y k d,97 90 y k s,97 90 y k x,97 90 y k y,97 90 y k z,97 90 y m a,97 90 y m b,97 90 y m c,97 90 y m d,97 90 y m s,97 90 y m x,97 90 y m y,97 90 y m z,97 90 y n a,97 90 y n b,97 90 y n c,97 90 y n d,97 90 y n s,97 90 y n x,97 90 y n y,97 90 y n z,97 90 y p a,97 90 y p b,97 90 y p c,97 90 y p d,97 90 y p s,97 90 y p x,97 90 y p y,97 90 y p z,97 90 y x a,97 90 y x b,97 90 y x c,97 90 y x d,97 90 y x s,97 90 y x x,97 90 y x y,97 90 y x z,98 90 y aa a,98 90 y aa b,98 90 y aa c,98 90 y aa d,98 90 y aa s,98 90 y aa x,98 90 y aa y,98 90 y aa z,98 90 y f a,98 90 y f b,98 90 y f c,98 90 y f d,98 90 y f s,98 90 y f x,98 90 y f y,98 90 y f z,98 90 y j a,98 90 y j b,98 90 y j c,98 90 y j d,98 90 y j s,98 90 y j x,98 90 y j y,98 90 y j z,98 90 y k a,98 90 y k b,98 90 y k c,98 90 y k d,98 90 y k s,98 90 y k x,98 90 y k y,98 90 y k z,98 90 y m a,98 90 y m b,98 90 y m c,98 90 y m d,98 90 y m s,98 90 y m x,98 90 y m y,98 90 y m z,98 90 y n a,98 90 y n b,98 90 y n c,98 90 y n d,98 90 y n s,98 90 y n x,98 90 y n y,98 90 y n z,98 90 y p a,98 90 y p b,98 90 y p c,98 90 y p d,98 90 y p s,98 90 y p x,98 90 y p y,98 90 y p z,98 90 y x a,98 90 y x b,98 90 y x c,98 90 y x d,98 90 y x s,98 90 y x x,98 90 y x y,98 90 y x z,100 90 y be a,100 90 y be b,100 90 y be c,100 90 y be d,100 90 y be s,100 90 y be x,100 90 y be y,100 90 y be z,100 90 y be10 a,100 90 y be10 b,100 90 y be10 c,100 90 y be10 d,100 90 y be10 s,100 90 y be10 x,100 90 y be10 y,100 90 y be10 z,100 90 y be2 a,100 90 y be2 b,100 90 y be2 c,100 90 y be2 d,100 90 y be2 s,100 90 y be2 x,100 90 y be2 y,100 90 y be2 z,100 90 y be3 a,100 90 y be3 b,100 90 y be3 c,100 90 y be3 d,100 90 y be3 s,100 90 y be3 x,100 90 y be3 y,100 90 y be3 z,100 90 y be4 a,100 90 y be4 b,100 90 y be4 c,100 90 y be4 d,100 90 y be4 s,100 90 y be4 x,100 90 y be4 y,100 90 y be4 z,100 90 y be5 a,100 90 y be5 b,100 90 y be5 c,100 90 y be5 d,100 90 y be5 s,100 90 y be5 x,100 90 y be5 y,100 90 y be5 z,100 90 y be9 a,100 90 y be9 b,100 90 y be9 c,100 90 y be9 d,100 90 y be9 s,100 90 y be9 x,100 90 y be9 y,100 90 y be9 z,100 90 y in1 a,100 90 y in1 b,100 90 y in1 c,100 90 y in1 d,100 90 y in1 s,100 90 y in1 x,100 90 y in1 y,100 90 y in1 z,100 90 y in2 a,100 90 y in2 b,100 90 y in2 c,100 90 y in2 d,100 90 y in2 s,100 90 y in2 x,100 90 y in2 y,100 90 y in2 z,101 90 y be a,101 90 y be b,101 90 y be c,101 90 y be d,101 90 y be s,101 90 y be x,101 90 y be y,101 90 y be z,101 90 y be10 a,101 90 y be10 b,101 90 y be10 c,101 90 y be10 d,101 90 y be10 s,101 90 y be10 x,101 90 y be10 y,101 90 y be10 z,101 90 y be2 a,101 90 y be2 b,101 90 y be2 c,101 90 y be2 d,101 90 y be2 s,101 90 y be2 x,101 90 y be2 y,101 90 y be2 z,101 90 y be3 a,101 90 y be3 b,101 90 y be3 c,101 90 y be3 d,101 90 y be3 s,101 90 y be3 x,101 90 y be3 y,101 90 y be3 z,101 90 y be4 a,101 90 y be4 b,101 90 y be4 c,101 90 y be4 d,101 90 y be4 s,101 90 y be4 x,101 90 y be4 y,101 90 y be4 z,101 90 y be5 a,101 90 y be5 b,101 90 y be5 c,101 90 y be5 d,101 90 y be5 s,101 90 y be5 x,101 90 y be5 y,101 90 y be5 z,101 90 y be9 a,101 90 y be9 b,101 90 y be9 c,101 90 y be9 d,101 90 y be9 s,101 90 y be9 x,101 90 y be9 y,101 90 y be9 z,101 90 y in1 a,101 90 y in1 b,101 90 y in1 c,101 90 y in1 d,101 90 y in1 s,101 90 y in1 x,101 90 y in1 y,101 90 y in1 z,101 90 y in2 a,101 90 y in2 b,101 90 y in2 c,101 90 y in2 d,101 90 y in2 s,101 90 y in2 x,101 90 y in2 y,101 90 y in2 z,103 90 y be a,103 90 y be b,103 90 y be c,103 90 y be d,103 90 y be s,103 90 y be x,103 90 y be y,103 90 y be z,103 90 y be10 a,103 90 y be10 b,103 90 y be10 c,103 90 y be10 d,103 90 y be10 s,103 90 y be10 x,103 90 y be10 y,103 90 y be10 z,103 90 y be2 a,103 90 y be2 b,103 90 y be2 c,103 90 y be2 d,103 90 y be2 s,103 90 y be2 x,103 90 y be2 y,103 90 y be2 z,103 90 y be3 a,103 90 y be3 b,103 90 y be3 c,103 90 y be3 d,103 90 y be3 s,103 90 y be3 x,103 90 y be3 y,103 90 y be3 z,103 90 y be4 a,103 90 y be4 b,103 90 y be4 c,103 90 y be4 d,103 90 y be4 s,103 90 y be4 x,103 90 y be4 y,103 90 y be4 z,103 90 y be5 a,103 90 y be5 b,103 90 y be5 c,103 90 y be5 d,103 90 y be5 s,103 90 y be5 x,103 90 y be5 y,103 90 y be5 z,103 90 y be9 a,103 90 y be9 b,103 90 y be9 c,103 90 y be9 d,103 90 y be9 s,103 90 y be9 x,103 90 y be9 y,103 90 y be9 z,103 90 y in1 a,103 90 y in1 b,103 90 y in1 c,103 90 y in1 d,103 90 y in1 s,103 90 y in1 x,103 90 y in1 y,103 90 y in1 z,103 90 y in2 a,103 90 y in2 b,103 90 y in2 c,103 90 y in2 d,103 90 y in2 s,103 90 y in2 x,103 90 y in2 y,103 90 y in2 z,104 90 y be a,104 90 y be b,104 90 y be c,104 90 y be d,104 90 y be s,104 90 y be x,104 90 y be y,104 90 y be z,104 90 y be10 a,104 90 y be10 b,104 90 y be10 c,104 90 y be10 d,104 90 y be10 s,104 90 y be10 x,104 90 y be10 y,104 90 y be10 z,104 90 y be2 a,104 90 y be2 b,104 90 y be2 c,104 90 y be2 d,104 90 y be2 s,104 90 y be2 x,104 90 y be2 y,104 90 y be2 z,104 90 y be3 a,104 90 y be3 b,104 90 y be3 c,104 90 y be3 d,104 90 y be3 s,104 90 y be3 x,104 90 y be3 y,104 90 y be3 z,104 90 y be4 a,104 90 y be4 b,104 90 y be4 c,104 90 y be4 d,104 90 y be4 s,104 90 y be4 x,104 90 y be4 y,104 90 y be4 z,104 90 y be5 a,104 90 y be5 b,104 90 y be5 c,104 90 y be5 d,104 90 y be5 s,104 90 y be5 x,104 90 y be5 y,104 90 y be5 z,104 90 y be9 a,104 90 y be9 b,104 90 y be9 c,104 90 y be9 d,104 90 y be9 s,104 90 y be9 x,104 90 y be9 y,104 90 y be9 z,104 90 y in1 a,104 90 y in1 b,104 90 y in1 c,104 90 y in1 d,104 90 y in1 s,104 90 y in1 x,104 90 y in1 y,104 90 y in1 z,104 90 y in2 a,104 90 y in2 b,104 90 y in2 c,104 90 y in2 d,104 90 y in2 s,104 90 y in2 x,104 90 y in2 y,104 90 y in2 z,106 90 y be a,106 90 y be b,106 90 y be c,106 90 y be d,106 90 y be s,106 90 y be x,106 90 y be y,106 90 y be z,106 90 y be10 a,106 90 y be10 b,106 90 y be10 c,106 90 y be10 d,106 90 y be10 s,106 90 y be10 x,106 90 y be10 y,106 90 y be10 z,106 90 y be2 a,106 90 y be2 b,106 90 y be2 c,106 90 y be2 d,106 90 y be2 s,106 90 y be2 x,106 90 y be2 y,106 90 y be2 z,106 90 y be3 a,106 90 y be3 b,106 90 y be3 c,106 90 y be3 d,106 90 y be3 s,106 90 y be3 x,106 90 y be3 y,106 90 y be3 z,106 90 y be4 a,106 90 y be4 b,106 90 y be4 c,106 90 y be4 d,106 90 y be4 s,106 90 y be4 x,106 90 y be4 y,106 90 y be4 z,106 90 y be5 a,106 90 y be5 b,106 90 y be5 c,106 90 y be5 d,106 90 y be5 s,106 90 y be5 x,106 90 y be5 y,106 90 y be5 z,106 90 y be9 a,106 90 y be9 b,106 90 y be9 c,106 90 y be9 d,106 90 y be9 s,106 90 y be9 x,106 90 y be9 y,106 90 y be9 z,106 90 y in1 a,106 90 y in1 b,106 90 y in1 c,106 90 y in1 d,106 90 y in1 s,106 90 y in1 x,106 90 y in1 y,106 90 y in1 z,106 90 y in2 a,106 90 y in2 b,106 90 y in2 c,106 90 y in2 d,106 90 y in2 s,106 90 y in2 x,106 90 y in2 y,106 90 y in2 z,170 169 y aa a,170 169 y aa b,170 169 y aa c,170 169 y aa d,170 169 y aa s,170 169 y aa x,170 169 y aa y,170 169 y aa z,170 169 y be a,170 169 y be b,170 169 y be c,170 169 y be d,170 169 y be s,170 169 y be x,170 169 y be y,170 169 y be z,170 169 y be10 a,170 169 y be10 b,170 169 y be10 c,170 169 y be10 d,170 169 y be10 s,170 169 y be10 x,170 169 y be10 y,170 169 y be10 z,170 169 y be2 a,170 169 y be2 b,170 169 y be2 c,170 169 y be2 d,170 169 y be2 s,170 169 y be2 x,170 169 y be2 y,170 169 y be2 z,170 169 y be3 a,170 169 y be3 b,170 169 y be3 c,170 169 y be3 d,170 169 y be3 s,170 169 y be3 x,170 169 y be3 y,170 169 y be3 z,170 169 y be4 a,170 169 y be4 b,170 169 y be4 c,170 169 y be4 d,170 169 y be4 s,170 169 y be4 x,170 169 y be4 y,170 169 y be4 z,170 169 y be5 a,170 169 y be5 b,170 169 y be5 c,170 169 y be5 d,170 169 y be5 s,170 169 y be5 x,170 169 y be5 y,170 169 y be5 z,170 169 y be9 a,170 169 y be9 b,170 169 y be9 c,170 169 y be9 d,170 169 y be9 s,170 169 y be9 x,170 169 y be9 y,170 169 y be9 z,170 169 y f a,170 169 y f b,170 169 y f c,170 169 y f d,170 169 y f s,170 169 y f x,170 169 y f y,170 169 y f z,170 169 y in1 a,170 169 y in1 b,170 169 y in1 c,170 169 y in1 d,170 169 y in1 s,170 169 y in1 x,170 169 y in1 y,170 169 y in1 z,170 169 y in2 a,170 169 y in2 b,170 169 y in2 c,170 169 y in2 d,170 169 y in2 s,170 169 y in2 x,170 169 y in2 y,170 169 y in2 z,170 169 y j a,170 169 y j b,170 169 y j c,170 169 y j d,170 169 y j s,170 169 y j x,170 169 y j y,170 169 y j z,170 169 y k a,170 169 y k b,170 169 y k c,170 169 y k d,170 169 y k s,170 169 y k x,170 169 y k y,170 169 y k z,170 169 y m a,170 169 y m b,170 169 y m c,170 169 y m d,170 169 y m s,170 169 y m x,170 169 y m y,170 169 y m z,170 169 y n a,170 169 y n b,170 169 y n c,170 169 y n d,170 169 y n s,170 169 y n x,170 169 y n y,170 169 y n z,170 169 y p a,170 169 y p b,170 169 y p c,170 169 y p d,170 169 y p s,170 169 y p x,170 169 y p y,170 169 y p z,170 169 y x a,170 169 y x b,170 169 y x c,170 169 y x d,170 169 y x s,170 169 y x x,170 169 y x y,170 169 y x z,175 174 y aa a,175 174 y aa b,175 174 y aa c,175 174 y aa d,175 174 y aa s,175 174 y aa x,175 174 y aa y,175 174 y aa z,175 174 y be a,175 174 y be b,175 174 y be c,175 174 y be d,175 174 y be s,175 174 y be x,175 174 y be y,175 174 y be z,175 174 y be10 a,175 174 y be10 b,175 174 y be10 c,175 174 y be10 d,175 174 y be10 s,175 174 y be10 x,175 174 y be10 y,175 174 y be10 z,175 174 y be2 a,175 174 y be2 b,175 174 y be2 c,175 174 y be2 d,175 174 y be2 s,175 174 y be2 x,175 174 y be2 y,175 174 y be2 z,175 174 y be3 a,175 174 y be3 b,175 174 y be3 c,175 174 y be3 d,175 174 y be3 s,175 174 y be3 x,175 174 y be3 y,175 174 y be3 z,175 174 y be4 a,175 174 y be4 b,175 174 y be4 c,175 174 y be4 d,175 174 y be4 s,175 174 y be4 x,175 174 y be4 y,175 174 y be4 z,175 174 y be5 a,175 174 y be5 b,175 174 y be5 c,175 174 y be5 d,175 174 y be5 s,175 174 y be5 x,175 174 y be5 y,175 174 y be5 z,175 174 y be9 a,175 174 y be9 b,175 174 y be9 c,175 174 y be9 d,175 174 y be9 s,175 174 y be9 x,175 174 y be9 y,175 174 y be9 z,175 174 y f a,175 174 y f b,175 174 y f c,175 174 y f d,175 174 y f s,175 174 y f x,175 174 y f y,175 174 y f z,175 174 y in1 a,175 174 y in1 b,175 174 y in1 c,175 174 y in1 d,175 174 y in1 s,175 174 y in1 x,175 174 y in1 y,175 174 y in1 z,175 174 y in2 a,175 174 y in2 b,175 174 y in2 c,175 174 y in2 d,175 174 y in2 s,175 174 y in2 x,175 174 y in2 y,175 174 y in2 z,175 174 y j a,175 174 y j b,175 174 y j c,175 174 y j d,175 174 y j s,175 174 y j x,175 174 y j y,175 174 y j z,175 174 y k a,175 174 y k b,175 174 y k c,175 174 y k d,175 174 y k s,175 174 y k x,175 174 y k y,175 174 y k z,175 174 y m a,175 174 y m b,175 174 y m c,175 174 y m d,175 174 y m s,175 174 y m x,175 174 y m y,175 174 y m z,175 174 y n a,175 174 y n b,175 174 y n c,175 174 y n d,175 174 y n s,175 174 y n x,175 174 y n y,175 174 y n z,175 174 y p a,175 174 y p b,175 174 y p c,175 174 y p d,175 174 y p s,175 174 y p x,175 174 y p y,175 174 y p z,175 174 y x a,175 174 y x b,175 174 y x c,175 174 y x d,175 174 y x s,175 174 y x x,175 174 y x y,175 174 y x z,91 90 y be a,91 90 y be b,91 90 y be c,91 90 y be d,91 90 y be s,91 90 y be x,91 90 y be y,91 90 y be z,91 90 y be10 a,91 90 y be10 b,91 90 y be10 c,91 90 y be10 d,91 90 y be10 s,91 90 y be10 x,91 90 y be10 y,91 90 y be10 z,91 90 y be2 a,91 90 y be2 b,91 90 y be2 c,91 90 y be2 d,91 90 y be2 s,91 90 y be2 x,91 90 y be2 y,91 90 y be2 z,91 90 y be3 a,91 90 y be3 b,91 90 y be3 c,91 90 y be3 d,91 90 y be3 s,91 90 y be3 x,91 90 y be3 y,91 90 y be3 z,91 90 y be4 a,91 90 y be4 b,91 90 y be4 c,91 90 y be4 d,91 90 y be4 s,91 90 y be4 x,91 90 y be4 y,91 90 y be4 z,91 90 y be5 a,91 90 y be5 b,91 90 y be5 c,91 90 y be5 d,91 90 y be5 s,91 90 y be5 x,91 90 y be5 y,91 90 y be5 z,91 90 y be9 a,91 90 y be9 b,91 90 y be9 c,91 90 y be9 d,91 90 y be9 s,91 90 y be9 x,91 90 y be9 y,91 90 y be9 z,91 90 y in1 a,91 90 y in1 b,91 90 y in1 c,91 90 y in1 d,91 90 y in1 s,91 90 y in1 x,91 90 y in1 y,91 90 y in1 z,91 90 y in2 a,91 90 y in2 b,91 90 y in2 c,91 90 y in2 d,91 90 y in2 s,91 90 y in2 x,91 90 y in2 y,91 90 y in2 z,92 90 y be a,92 90 y be b,92 90 y be c,92 90 y be d,92 90 y be s,92 90 y be x,92 90 y be y,92 90 y be z,92 90 y be10 a,92 90 y be10 b,92 90 y be10 c,92 90 y be10 d,92 90 y be10 s,92 90 y be10 x,92 90 y be10 y,92 90 y be10 z,92 90 y be2 a,92 90 y be2 b,92 90 y be2 c,92 90 y be2 d,92 90 y be2 s,92 90 y be2 x,92 90 y be2 y,92 90 y be2 z,92 90 y be3 a,92 90 y be3 b,92 90 y be3 c,92 90 y be3 d,92 90 y be3 s,92 90 y be3 x,92 90 y be3 y,92 90 y be3 z,92 90 y be4 a,92 90 y be4 b,92 90 y be4 c,92 90 y be4 d,92 90 y be4 s,92 90 y be4 x,92 90 y be4 y,92 90 y be4 z,92 90 y be5 a,92 90 y be5 b,92 90 y be5 c,92 90 y be5 d,92 90 y be5 s,92 90 y be5 x,92 90 y be5 y,92 90 y be5 z,92 90 y be9 a,92 90 y be9 b,92 90 y be9 c,92 90 y be9 d,92 90 y be9 s,92 90 y be9 x,92 90 y be9 y,92 90 y be9 z,92 90 y in1 a,92 90 y in1 b,92 90 y in1 c,92 90 y in1 d,92 90 y in1 s,92 90 y in1 x,92 90 y in1 y,92 90 y in1 z,92 90 y in2 a,92 90 y in2 b,92 90 y in2 c,92 90 y in2 d,92 90 y in2 s,92 90 y in2 x,92 90 y in2 y,92 90 y in2 z,94 90 y be a,94 90 y be b,94 90 y be c,94 90 y be d,94 90 y be s,94 90 y be x,94 90 y be y,94 90 y be z,94 90 y be10 a,94 90 y be10 b,94 90 y be10 c,94 90 y be10 d,94 90 y be10 s,94 90 y be10 x,94 90 y be10 y,94 90 y be10 z,94 90 y be2 a,94 90 y be2 b,94 90 y be2 c,94 90 y be2 d,94 90 y be2 s,94 90 y be2 x,94 90 y be2 y,94 90 y be2 z,94 90 y be3 a,94 90 y be3 b,94 90 y be3 c,94 90 y be3 d,94 90 y be3 s,94 90 y be3 x,94 90 y be3 y,94 90 y be3 z,94 90 y be4 a,94 90 y be4 b,94 90 y be4 c,94 90 y be4 d,94 90 y be4 s,94 90 y be4 x,94 90 y be4 y,94 90 y be4 z,94 90 y be5 a,94 90 y be5 b,94 90 y be5 c,94 90 y be5 d,94 90 y be5 s,94 90 y be5 x,94 90 y be5 y,94 90 y be5 z,94 90 y be9 a,94 90 y be9 b,94 90 y be9 c,94 90 y be9 d,94 90 y be9 s,94 90 y be9 x,94 90 y be9 y,94 90 y be9 z,94 90 y in1 a,94 90 y in1 b,94 90 y in1 c,94 90 y in1 d,94 90 y in1 s,94 90 y in1 x,94 90 y in1 y,94 90 y in1 z,94 90 y in2 a,94 90 y in2 b,94 90 y in2 c,94 90 y in2 d,94 90 y in2 s,94 90 y in2 x,94 90 y in2 y,94 90 y in2 z,97 90 y be a,97 90 y be b,97 90 y be c,97 90 y be d,97 90 y be s,97 90 y be x,97 90 y be y,97 90 y be z,97 90 y be10 a,97 90 y be10 b,97 90 y be10 c,97 90 y be10 d,97 90 y be10 s,97 90 y be10 x,97 90 y be10 y,97 90 y be10 z,97 90 y be2 a,97 90 y be2 b,97 90 y be2 c,97 90 y be2 d,97 90 y be2 s,97 90 y be2 x,97 90 y be2 y,97 90 y be2 z,97 90 y be3 a,97 90 y be3 b,97 90 y be3 c,97 90 y be3 d,97 90 y be3 s,97 90 y be3 x,97 90 y be3 y,97 90 y be3 z,97 90 y be4 a,97 90 y be4 b,97 90 y be4 c,97 90 y be4 d,97 90 y be4 s,97 90 y be4 x,97 90 y be4 y,97 90 y be4 z,97 90 y be5 a,97 90 y be5 b,97 90 y be5 c,97 90 y be5 d,97 90 y be5 s,97 90 y be5 x,97 90 y be5 y,97 90 y be5 z,97 90 y be9 a,97 90 y be9 b,97 90 y be9 c,97 90 y be9 d,97 90 y be9 s,97 90 y be9 x,97 90 y be9 y,97 90 y be9 z,97 90 y in1 a,97 90 y in1 b,97 90 y in1 c,97 90 y in1 d,97 90 y in1 s,97 90 y in1 x,97 90 y in1 y,97 90 y in1 z,97 90 y in2 a,97 90 y in2 b,97 90 y in2 c,97 90 y in2 d,97 90 y in2 s,97 90 y in2 x,97 90 y in2 y,97 90 y in2 z,98 90 y be a,98 90 y be b,98 90 y be c,98 90 y be d,98 90 y be s,98 90 y be x,98 90 y be y,98 90 y be z,98 90 y be10 a,98 90 y be10 b,98 90 y be10 c,98 90 y be10 d,98 90 y be10 s,98 90 y be10 x,98 90 y be10 y,98 90 y be10 z,98 90 y be2 a,98 90 y be2 b,98 90 y be2 c,98 90 y be2 d,98 90 y be2 s,98 90 y be2 x,98 90 y be2 y,98 90 y be2 z,98 90 y be3 a,98 90 y be3 b,98 90 y be3 c,98 90 y be3 d,98 90 y be3 s,98 90 y be3 x,98 90 y be3 y,98 90 y be3 z,98 90 y be4 a,98 90 y be4 b,98 90 y be4 c,98 90 y be4 d,98 90 y be4 s,98 90 y be4 x,98 90 y be4 y,98 90 y be4 z,98 90 y be5 a,98 90 y be5 b,98 90 y be5 c,98 90 y be5 d,98 90 y be5 s,98 90 y be5 x,98 90 y be5 y,98 90 y be5 z,98 90 y be9 a,98 90 y be9 b,98 90 y be9 c,98 90 y be9 d,98 90 y be9 s,98 90 y be9 x,98 90 y be9 y,98 90 y be9 z,98 90 y in1 a,98 90 y in1 b,98 90 y in1 c,98 90 y in1 d,98 90 y in1 s,98 90 y in1 x,98 90 y in1 y,98 90 y in1 z,98 90 y in2 a,98 90 y in2 b,98 90 y in2 c,98 90 y in2 d,98 90 y in2 s,98 90 y in2 x,98 90 y in2 y,98 90 y in2 z

Clone this wiki locally