svf-tools 1.0.577 → 1.0.578

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/SVF-doxygen/html/html/CFLAlias_8cpp.html +0 -1
  2. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +18 -25
  3. package/SVF-doxygen/html/html/CFLAlias_8h.html +1 -8
  4. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +23 -49
  5. package/SVF-doxygen/html/html/CFLBase_8h.html +103 -0
  6. package/SVF-doxygen/html/html/CFLBase_8h_source.html +124 -0
  7. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +5 -4
  9. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +24 -19
  10. package/SVF-doxygen/html/html/CFLStat_8h.html +1 -0
  11. package/SVF-doxygen/html/html/CFLStat_8h_source.html +22 -21
  12. package/SVF-doxygen/html/html/CFLVF_8cpp.html +0 -2
  13. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +5 -8
  14. package/SVF-doxygen/html/html/CFLVF_8h.html +3 -8
  15. package/SVF-doxygen/html/html/CFLVF_8h_source.html +12 -26
  16. package/SVF-doxygen/html/html/CHG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  19. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
  23. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
  25. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
  29. package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/VFG_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/annotated.html +271 -270
  39. package/SVF-doxygen/html/html/cfl_8cpp.html +6 -9
  40. package/SVF-doxygen/html/html/cfl_8cpp_source.html +6 -8
  41. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +9 -8
  42. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  43. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +75 -71
  44. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +239 -679
  45. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +275 -0
  47. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +1341 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
  49. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +21 -20
  50. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +33 -3
  51. package/SVF-doxygen/html/html/classSVF_1_1CFLStat-members.html +2 -2
  52. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +58 -58
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +91 -72
  54. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +243 -274
  55. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.png +0 -0
  56. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  57. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  58. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  59. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  60. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -11
  61. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  62. package/SVF-doxygen/html/html/classes.html +96 -95
  63. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  64. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +2 -0
  65. package/SVF-doxygen/html/html/files.html +8 -7
  66. package/SVF-doxygen/html/html/functions_0x7e.html +2 -5
  67. package/SVF-doxygen/html/html/functions_a.html +10 -9
  68. package/SVF-doxygen/html/html/functions_c.html +28 -28
  69. package/SVF-doxygen/html/html/functions_f.html +17 -16
  70. package/SVF-doxygen/html/html/functions_func.html +6 -5
  71. package/SVF-doxygen/html/html/functions_func_0x7e.html +2 -5
  72. package/SVF-doxygen/html/html/functions_func_c.html +29 -21
  73. package/SVF-doxygen/html/html/functions_func_f.html +4 -1
  74. package/SVF-doxygen/html/html/functions_func_g.html +14 -11
  75. package/SVF-doxygen/html/html/functions_func_i.html +10 -7
  76. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  77. package/SVF-doxygen/html/html/functions_func_s.html +2 -2
  78. package/SVF-doxygen/html/html/functions_g.html +18 -17
  79. package/SVF-doxygen/html/html/functions_i.html +10 -7
  80. package/SVF-doxygen/html/html/functions_l.html +6 -6
  81. package/SVF-doxygen/html/html/functions_m.html +2 -2
  82. package/SVF-doxygen/html/html/functions_n.html +14 -11
  83. package/SVF-doxygen/html/html/functions_o.html +15 -15
  84. package/SVF-doxygen/html/html/functions_p.html +19 -15
  85. package/SVF-doxygen/html/html/functions_r.html +3 -7
  86. package/SVF-doxygen/html/html/functions_s.html +16 -16
  87. package/SVF-doxygen/html/html/functions_t.html +9 -6
  88. package/SVF-doxygen/html/html/functions_type_c.html +0 -1
  89. package/SVF-doxygen/html/html/functions_v.html +6 -6
  90. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  91. package/SVF-doxygen/html/html/functions_vars_c.html +0 -1
  92. package/SVF-doxygen/html/html/functions_vars_g.html +2 -4
  93. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  94. package/SVF-doxygen/html/html/functions_vars_n.html +11 -8
  95. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  96. package/SVF-doxygen/html/html/functions_vars_s.html +2 -4
  97. package/SVF-doxygen/html/html/functions_vars_t.html +9 -6
  98. package/SVF-doxygen/html/html/hierarchy.html +58 -57
  99. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/namespaceSVF.html +2 -0
  101. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/search/all_1.js +2 -2
  103. package/SVF-doxygen/html/html/search/all_10.js +11 -11
  104. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  105. package/SVF-doxygen/html/html/search/all_12.js +11 -11
  106. package/SVF-doxygen/html/html/search/all_13.js +9 -8
  107. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  108. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  109. package/SVF-doxygen/html/html/search/all_19.js +1 -2
  110. package/SVF-doxygen/html/html/search/all_3.js +5 -2
  111. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  112. package/SVF-doxygen/html/html/search/all_7.js +4 -3
  113. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  114. package/SVF-doxygen/html/html/search/all_c.js +4 -4
  115. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  116. package/SVF-doxygen/html/html/search/all_e.js +11 -10
  117. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  118. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  119. package/SVF-doxygen/html/html/search/files_2.js +1 -0
  120. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  121. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  122. package/SVF-doxygen/html/html/search/functions_17.js +1 -2
  123. package/SVF-doxygen/html/html/search/functions_2.js +3 -1
  124. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  125. package/SVF-doxygen/html/html/search/functions_6.js +2 -1
  126. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  127. package/SVF-doxygen/html/html/search/functions_f.js +1 -1
  128. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  129. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  130. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  131. package/SVF-doxygen/html/html/search/variables_12.js +2 -2
  132. package/SVF-doxygen/html/html/search/variables_13.js +9 -8
  133. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  134. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  135. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  136. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  137. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  138. package/SVF-doxygen/html/html/search/variables_e.js +9 -8
  139. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
  140. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
  141. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
  142. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  143. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  144. package/include/CFL/CFLAlias.h +10 -47
  145. package/include/CFL/CFLBase.h +111 -0
  146. package/include/CFL/CFLStat.h +4 -2
  147. package/include/CFL/CFLVF.h +13 -23
  148. package/include/Graphs/CFLGraph.h +5 -0
  149. package/lib/CFL/CFLAlias.cpp +60 -52
  150. package/lib/CFL/CFLStat.cpp +11 -19
  151. package/lib/CFL/CFLVF.cpp +40 -35
  152. package/package.json +1 -1
  153. package/tools/CFL/cfl.cpp +12 -25
@@ -80,26 +80,27 @@ Inheritance diagram for SVF::GenericNode&lt; NodeTy, EdgeTy &gt;:</div>
80
80
  <img src="classSVF_1_1GenericNode.png" usemap="#SVF::GenericNode_3C_20NodeTy_2C_20EdgeTy_20_3E_map" alt=""/>
81
81
  <map id="SVF::GenericNode_3C_20NodeTy_2C_20EdgeTy_20_3E_map" name="SVF::GenericNode_3C_20NodeTy_2C_20EdgeTy_20_3E_map">
82
82
  <area href="classSVF_1_1CHNode.html" alt="SVF::CHNode" shape="rect" coords="0,56,238,80"/>
83
- <area href="classSVF_1_1ICFGNode.html" alt="SVF::ICFGNode" shape="rect" coords="248,56,486,80"/>
84
- <area href="classSVF_1_1PTACallGraphNode.html" alt="SVF::PTACallGraphNode" shape="rect" coords="496,56,734,80"/>
85
- <area href="classSVF_1_1SVFVar.html" alt="SVF::SVFVar" shape="rect" coords="744,56,982,80"/>
86
- <area href="classSVF_1_1TCTNode.html" alt="SVF::TCTNode" shape="rect" coords="992,56,1230,80"/>
87
- <area href="classSVF_1_1VFGNode.html" alt="SVF::VFGNode" shape="rect" coords="1240,56,1478,80"/>
88
- <area href="classSVF_1_1GlobalICFGNode.html" alt="SVF::GlobalICFGNode" shape="rect" coords="496,112,734,136"/>
89
- <area href="classSVF_1_1InterICFGNode.html" alt="SVF::InterICFGNode" shape="rect" coords="496,168,734,192"/>
90
- <area href="classSVF_1_1IntraICFGNode.html" alt="SVF::IntraICFGNode" shape="rect" coords="496,224,734,248"/>
91
- <area href="classSVF_1_1ObjVar.html" alt="SVF::ObjVar" shape="rect" coords="992,112,1230,136"/>
92
- <area href="classSVF_1_1ValVar.html" alt="SVF::ValVar" shape="rect" coords="992,168,1230,192"/>
93
- <area href="classSVF_1_1ArgumentVFGNode.html" alt="SVF::ArgumentVFGNode" shape="rect" coords="1488,112,1726,136"/>
94
- <area href="classSVF_1_1BinaryOPVFGNode.html" alt="SVF::BinaryOPVFGNode" shape="rect" coords="1488,168,1726,192"/>
95
- <area href="classSVF_1_1BranchVFGNode.html" alt="SVF::BranchVFGNode" shape="rect" coords="1488,224,1726,248"/>
96
- <area href="classSVF_1_1CmpVFGNode.html" alt="SVF::CmpVFGNode" shape="rect" coords="1488,280,1726,304"/>
97
- <area href="classSVF_1_1DummyVersionPropSVFGNode.html" alt="SVF::DummyVersionPropSVFGNode" shape="rect" coords="1488,336,1726,360"/>
98
- <area href="classSVF_1_1MRSVFGNode.html" alt="SVF::MRSVFGNode" shape="rect" coords="1488,392,1726,416"/>
99
- <area href="classSVF_1_1NullPtrVFGNode.html" alt="SVF::NullPtrVFGNode" shape="rect" coords="1488,448,1726,472"/>
100
- <area href="classSVF_1_1PHIVFGNode.html" alt="SVF::PHIVFGNode" shape="rect" coords="1488,504,1726,528"/>
101
- <area href="classSVF_1_1StmtVFGNode.html" alt="SVF::StmtVFGNode" shape="rect" coords="1488,560,1726,584"/>
102
- <area href="classSVF_1_1UnaryOPVFGNode.html" alt="SVF::UnaryOPVFGNode" shape="rect" coords="1488,616,1726,640"/>
83
+ <area href="classSVF_1_1ConstraintNode.html" alt="SVF::ConstraintNode" shape="rect" coords="248,56,486,80"/>
84
+ <area href="classSVF_1_1ICFGNode.html" alt="SVF::ICFGNode" shape="rect" coords="496,56,734,80"/>
85
+ <area href="classSVF_1_1PTACallGraphNode.html" alt="SVF::PTACallGraphNode" shape="rect" coords="744,56,982,80"/>
86
+ <area href="classSVF_1_1SVFVar.html" alt="SVF::SVFVar" shape="rect" coords="992,56,1230,80"/>
87
+ <area href="classSVF_1_1TCTNode.html" alt="SVF::TCTNode" shape="rect" coords="1240,56,1478,80"/>
88
+ <area href="classSVF_1_1VFGNode.html" alt="SVF::VFGNode" shape="rect" coords="1488,56,1726,80"/>
89
+ <area href="classSVF_1_1GlobalICFGNode.html" alt="SVF::GlobalICFGNode" shape="rect" coords="744,112,982,136"/>
90
+ <area href="classSVF_1_1InterICFGNode.html" alt="SVF::InterICFGNode" shape="rect" coords="744,168,982,192"/>
91
+ <area href="classSVF_1_1IntraICFGNode.html" alt="SVF::IntraICFGNode" shape="rect" coords="744,224,982,248"/>
92
+ <area href="classSVF_1_1ObjVar.html" alt="SVF::ObjVar" shape="rect" coords="1240,112,1478,136"/>
93
+ <area href="classSVF_1_1ValVar.html" alt="SVF::ValVar" shape="rect" coords="1240,168,1478,192"/>
94
+ <area href="classSVF_1_1ArgumentVFGNode.html" alt="SVF::ArgumentVFGNode" shape="rect" coords="1736,112,1974,136"/>
95
+ <area href="classSVF_1_1BinaryOPVFGNode.html" alt="SVF::BinaryOPVFGNode" shape="rect" coords="1736,168,1974,192"/>
96
+ <area href="classSVF_1_1BranchVFGNode.html" alt="SVF::BranchVFGNode" shape="rect" coords="1736,224,1974,248"/>
97
+ <area href="classSVF_1_1CmpVFGNode.html" alt="SVF::CmpVFGNode" shape="rect" coords="1736,280,1974,304"/>
98
+ <area href="classSVF_1_1DummyVersionPropSVFGNode.html" alt="SVF::DummyVersionPropSVFGNode" shape="rect" coords="1736,336,1974,360"/>
99
+ <area href="classSVF_1_1MRSVFGNode.html" alt="SVF::MRSVFGNode" shape="rect" coords="1736,392,1974,416"/>
100
+ <area href="classSVF_1_1NullPtrVFGNode.html" alt="SVF::NullPtrVFGNode" shape="rect" coords="1736,448,1974,472"/>
101
+ <area href="classSVF_1_1PHIVFGNode.html" alt="SVF::PHIVFGNode" shape="rect" coords="1736,504,1974,528"/>
102
+ <area href="classSVF_1_1StmtVFGNode.html" alt="SVF::StmtVFGNode" shape="rect" coords="1736,560,1974,584"/>
103
+ <area href="classSVF_1_1UnaryOPVFGNode.html" alt="SVF::UnaryOPVFGNode" shape="rect" coords="1736,616,1974,640"/>
103
104
  </map>
104
105
  </div></div>
105
106
  <table class="memberdecls">
@@ -84,19 +84,20 @@ Inheritance diagram for SVF::PointerAnalysis:</div>
84
84
  <img src="classSVF_1_1PointerAnalysis.png" usemap="#SVF::PointerAnalysis_map" alt=""/>
85
85
  <map id="SVF::PointerAnalysis_map" name="SVF::PointerAnalysis_map">
86
86
  <area href="classSVF_1_1CondPTAImpl.html" alt="SVF::CondPTAImpl&lt; ContextCond &gt;" shape="rect" coords="0,56,215,80"/>
87
- <area href="classSVF_1_1BVDataPTAImpl.html" alt="SVF::BVDataPTAImpl" shape="rect" coords="787,56,1002,80"/>
88
- <area href="classSVF_1_1CondPTAImpl.html" alt="SVF::CondPTAImpl&lt; Cond &gt;" shape="rect" coords="1012,56,1227,80"/>
87
+ <area href="classSVF_1_1BVDataPTAImpl.html" alt="SVF::BVDataPTAImpl" shape="rect" coords="1012,56,1227,80"/>
88
+ <area href="classSVF_1_1CondPTAImpl.html" alt="SVF::CondPTAImpl&lt; Cond &gt;" shape="rect" coords="1237,56,1452,80"/>
89
89
  <area href="classSVF_1_1ContextDDA.html" alt="SVF::ContextDDA" shape="rect" coords="0,112,215,136"/>
90
90
  <area href="classSVF_1_1AndersenBase.html" alt="SVF::AndersenBase" shape="rect" coords="337,112,552,136"/>
91
- <area href="classSVF_1_1CFLAlias.html" alt="SVF::CFLAlias" shape="rect" coords="562,112,777,136"/>
92
- <area href="classSVF_1_1CFLVF.html" alt="SVF::CFLVF" shape="rect" coords="787,112,1002,136"/>
93
- <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="1012,112,1227,136"/>
94
- <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="1237,112,1452,136"/>
91
+ <area href="classSVF_1_1CFLBase.html" alt="SVF::CFLBase" shape="rect" coords="900,112,1115,136"/>
92
+ <area href="classSVF_1_1FlowDDA.html" alt="SVF::FlowDDA" shape="rect" coords="1125,112,1340,136"/>
93
+ <area href="classSVF_1_1FlowSensitive.html" alt="SVF::FlowSensitive" shape="rect" coords="1350,112,1565,136"/>
95
94
  <area href="classSVF_1_1Andersen.html" alt="SVF::Andersen" shape="rect" coords="112,168,327,192"/>
96
95
  <area href="classSVF_1_1Steensgaard.html" alt="SVF::Steensgaard" shape="rect" coords="337,168,552,192"/>
97
96
  <area href="classSVF_1_1TypeAnalysis.html" alt="SVF::TypeAnalysis" shape="rect" coords="562,168,777,192"/>
98
- <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="1125,168,1340,192"/>
99
- <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="1350,168,1565,192"/>
97
+ <area href="classSVF_1_1CFLAlias.html" alt="SVF::CFLAlias" shape="rect" coords="787,168,1002,192"/>
98
+ <area href="classSVF_1_1CFLVF.html" alt="SVF::CFLVF" shape="rect" coords="1012,168,1227,192"/>
99
+ <area href="classSVF_1_1FSMPTA.html" alt="SVF::FSMPTA" shape="rect" coords="1237,168,1452,192"/>
100
+ <area href="classSVF_1_1VersionedFlowSensitive.html" alt="SVF::VersionedFlowSensitive" shape="rect" coords="1462,168,1677,192"/>
100
101
  <area href="classSVF_1_1AndersenSCD.html" alt="SVF::AndersenSCD" shape="rect" coords="0,224,215,248"/>
101
102
  <area href="classSVF_1_1AndersenWaveDiff.html" alt="SVF::AndersenWaveDiff" shape="rect" coords="225,224,440,248"/>
102
103
  <area href="classSVF_1_1AndersenSFR.html" alt="SVF::AndersenSFR" shape="rect" coords="0,280,215,304"/>
@@ -867,7 +868,7 @@ Private Member Functions</h2></td></tr>
867
868
 
868
869
  <p>Start Analysis here (main part of pointer analysis). It needs to be implemented in child class. </p>
869
870
 
870
- <p>Implemented in <a class="el" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1ContextDDA.html#ac8fe1cb3af6048a28028f00bb87a5eba">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1FlowDDA.html#aa26f9b5ba2e51f904d8ede1db8584460">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">SVF::CFLAlias</a>, <a class="el" href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">SVF::CFLVF</a>, and <a class="el" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis</a>.</p>
871
+ <p>Implemented in <a class="el" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1ContextDDA.html#ac8fe1cb3af6048a28028f00bb87a5eba">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1FlowDDA.html#aa26f9b5ba2e51f904d8ede1db8584460">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1CFLBase.html#a38812395e7fbba031a47ddc58c985481">SVF::CFLBase</a>, <a class="el" href="classSVF_1_1CFLAlias.html#afc6922e9f1965ed85ef87151e00f5311">SVF::CFLAlias</a>, <a class="el" href="classSVF_1_1CFLVF.html#a52bf916b33278f48d26c3f02947bf720">SVF::CFLVF</a>, and <a class="el" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis</a>.</p>
871
872
 
872
873
  </div>
873
874
  </div>
@@ -1339,7 +1340,7 @@ Private Member Functions</h2></td></tr>
1339
1340
  <p>Print statistics</p>
1340
1341
  <p>Dump results </p>
1341
1342
 
1342
- <p>Reimplemented in <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; Cond &gt;</a>, <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; ContextCond &gt;</a>, <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1ContextDDA.html#ae34cd06ee3b7d763c81ec418af76d244">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, and <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>.</p>
1343
+ <p>Reimplemented in <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; Cond &gt;</a>, <a class="el" href="classSVF_1_1CondPTAImpl.html#a9bdc3a50c695029a28371116ddc3ef8d">SVF::CondPTAImpl&lt; ContextCond &gt;</a>, <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">SVF::BVDataPTAImpl</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1ContextDDA.html#ae34cd06ee3b7d763c81ec418af76d244">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1CFLBase.html#af35c5140a90957a26437abc8a93e7ed7">SVF::CFLBase</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>, <a class="el" href="classSVF_1_1CFLAlias.html#a1b7e49b3f42d625f1f25258044f8b885">SVF::CFLAlias</a>, and <a class="el" href="classSVF_1_1CFLVF.html#a6047084ea0cfe2827130facdd54e4806">SVF::CFLVF</a>.</p>
1343
1344
 
1344
1345
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00192">192</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
1345
1346
  <div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">dumpStat</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ace0fa364337374ce75a58a9e2f229e24">Options::PTSPrint</a>)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a627bdc95485fd65e8846fcaa5e89559f">dumpTopLevelPtsTo</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">//dumpAllPts();</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">//dumpCPts();</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">Options::TypePrint</a>)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a08399de593c073b6dd848a8d849dad27">dumpAllTypes</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a113ee30422ef08b6790eed9a83277b9c">Options::PTSAllPrint</a>)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">dumpAllPts</a>();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a14ceeb5d7de81a0946389159986e4955">Options::FuncPointerPrint</a>)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a062f1f2d6d47694caa9ac64a9e68c7b3">printIndCSTargets</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#ac695d78f0a78e2e5f1fb4f93264e52b8">verifyCallGraph</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a61c9d525088cc044f8937a39bb96aa93">Options::CallGraphDotGraph</a>)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">&quot;callgraph_final&quot;</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1IRGraph.html#a41423da58a07b344bc7ca8dd96d48f98">isBuiltFromFile</a>() &amp;&amp; <a class="code" href="classSVF_1_1PointerAnalysis.html#aac1a133d478bd14c74309d9c4eaf0c8e">alias_validation</a>)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0454332c89e60729956bb7d69a1a24df">validateTests</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#afb6fabc25c0d7f9e9d1708ce648797fc">Options::UsePreCompFieldSensitive</a>)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a73fb8e595473e0c7df1dd0de4968ad13">resetObjFieldSensitive</a>();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;}</div><div class="ttc" id="classSVF_1_1Options_html_affd0cb6e0cb91e096537a3d3198bf4e5"><div class="ttname"><a href="classSVF_1_1Options.html#affd0cb6e0cb91e096537a3d3198bf4e5">SVF::Options::TypePrint</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; TypePrint</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00127">Options.h:127</a></div></div>
@@ -2216,7 +2217,7 @@ Private Member Functions</h2></td></tr>
2216
2217
  <p>Initialization of pointer analysis </p>
2217
2218
  <p>initialise pta call graph for every pointer analysis instance </p>
2218
2219
 
2219
- <p>Reimplemented in <a class="el" href="classSVF_1_1AndersenWaveDiff.html#a40514a439869d0c025afb4f6b6fb4071">SVF::AndersenWaveDiff</a>, <a class="el" href="classSVF_1_1Andersen.html#a20617a69c112ad423b1b5021e48a8548">SVF::Andersen</a>, <a class="el" href="classSVF_1_1AndersenSFR.html#a3b255068b3ea53041af94fd373a53bd4">SVF::AndersenSFR</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#af1fcf058a9feefeda63f07d4189513a1">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1ContextDDA.html#adb9f21a86daeb2dd79537f3939c393cf">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis</a>, and <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a81d3528fd082018e4345f0b026bf3584">SVF::VersionedFlowSensitive</a>.</p>
2220
+ <p>Reimplemented in <a class="el" href="classSVF_1_1AndersenWaveDiff.html#a40514a439869d0c025afb4f6b6fb4071">SVF::AndersenWaveDiff</a>, <a class="el" href="classSVF_1_1Andersen.html#a20617a69c112ad423b1b5021e48a8548">SVF::Andersen</a>, <a class="el" href="classSVF_1_1AndersenSFR.html#a3b255068b3ea53041af94fd373a53bd4">SVF::AndersenSFR</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1FlowDDA.html#af1fcf058a9feefeda63f07d4189513a1">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1ContextDDA.html#adb9f21a86daeb2dd79537f3939c393cf">SVF::ContextDDA</a>, <a class="el" href="classSVF_1_1CFLBase.html#a639702b6c898c13c3e85c721e3234e50">SVF::CFLBase</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">SVF::TypeAnalysis</a>, <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#a81d3528fd082018e4345f0b026bf3584">SVF::VersionedFlowSensitive</a>, <a class="el" href="classSVF_1_1CFLAlias.html#aef129edd61d7f15947c6539f8d0c36a0">SVF::CFLAlias</a>, and <a class="el" href="classSVF_1_1CFLVF.html#a852ed935576ca426287cf4afa6a585e3">SVF::CFLVF</a>.</p>
2220
2221
 
2221
2222
  <p class="definition">Definition at line <a class="el" href="PointerAnalysis_8cpp_source.html#l00111">111</a> of file <a class="el" href="PointerAnalysis_8cpp_source.html">PointerAnalysis.cpp</a>.</p>
2222
2223
  <div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; assert(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a> &amp;&amp; <span class="stringliteral">&quot;SVFIR has not been built!&quot;</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *chg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1CHGBuilder.html">CHGBuilder</a> builder(chg);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; builder.buildCHG();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a0c0fce2539bb9ec6c824f6584a0f6b33">chgraph</a> = chg;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a153d42a480ef1763ad59fd7258ac3ac5">Options::EnableThreadCallGraph</a>)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>* cg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classSVF_1_1ThreadCallGraphBuilder.html">ThreadCallGraphBuilder</a> bd(cg, <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ad47b39252e02c68dfb466d4f42dc7ebe">ptaCallGraph</a> = bd.buildThreadCallGraph(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>());</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* cg = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1CallGraphBuilder.html">CallGraphBuilder</a> bd(cg,<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; ptaCallGraph = bd.<a class="code" href="classSVF_1_1CallGraphBuilder.html#aa64a27e99434908a203e566074c66ebc">buildCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-&gt;<a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>());</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#aafa5df4aa576a144476e547b1da35795">callGraphSCCDetection</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// dump callgraph</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a61c9d525088cc044f8937a39bb96aa93">Options::CallGraphDotGraph</a>)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-&gt;<a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">&quot;callgraph_initial&quot;</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a841be22581a7896d8924564e7199f62b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">SVF::PTACallGraph::dump</a></div><div class="ttdeci">void dump(const std::string &amp;filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00316">PTACallGraph.cpp:316</a></div></div>