Merge branch 'randomKey'
This commit is contained in:
@@ -10,6 +10,7 @@ OUTPUT/
|
||||
*.csv
|
||||
*.pdf
|
||||
logs/
|
||||
.idea/
|
||||
GumTreeInput/
|
||||
GumTreeInput1/
|
||||
GumTreeOutput1/
|
||||
|
||||
Generated
+774
-495
File diff suppressed because it is too large
Load Diff
@@ -51,5 +51,11 @@
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-text:1.3" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.rabbitmq:amqp-client:4.0.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.lucene:lucene-core:4.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.lucene:lucene-analyzers-common:4.8.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.3.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
|
||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
+574
@@ -0,0 +1,574 @@
|
||||
[(60@@[(59@@[(32@@[(42@@[(14@@[(-2@@)][(43@@)][(42@@)][(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])][(38@@[(-1@@)][(34@@)])])][(42@@)])])])])])]
|
||||
[(60@@[(59@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@[(42@@)])][(42@@)])])])]
|
||||
[(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(39@@)][(59@@[(42@@)][(32@@[(22@@)][(42@@)])])])]
|
||||
[(60@@[(39@@)][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(5@@[(39@@)])][(59@@[(32@@)][(42@@)])])]
|
||||
[(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(32@@[(42@@[(32@@[(40@@)][(32@@)][(42@@)])])])])])])])]
|
||||
[(60@@)]
|
||||
[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(43@@)][(59@@[(32@@)][(32@@[(42@@)][(32@@)][(32@@[(86@@[(59@@[(42@@)])][(32@@[(42@@)][(42@@)][(32@@)])])])][(42@@)])])][(74@@[(43@@)][(43@@)])])]
|
||||
[(60@@[(59@@[(36@@[(16@@[(27@@[(-1@@)])][(33@@)][(33@@)])])])])]
|
||||
[(60@@[(59@@[(42@@)][(34@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])]
|
||||
[(60@@[(74@@[(43@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(59@@)])]
|
||||
[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])])])])]
|
||||
[(60@@[(5@@[(43@@)])][(59@@[(42@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(22@@[(52@@)][(42@@)])])])])]
|
||||
[(46@@[(45@@)][(45@@)][(9@@)][(42@@)][(42@@)])]
|
||||
[(46@@)]
|
||||
[(46@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(46@@[(42@@)])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)])])])])])])]
|
||||
[(12@@[(44@@[(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(12@@[(44@@[(42@@)])][(21@@[(32@@[(42@@[(42@@)])])])])]
|
||||
[(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(9@@)])])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(42@@)])])])])])]
|
||||
[(12@@)]
|
||||
[(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(41@@[(33@@)])])]
|
||||
[(12@@[(21@@)])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)])][(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@)])]
|
||||
[(49@@)]
|
||||
[(49@@[(40@@[(42@@)][(42@@)])])]
|
||||
[(49@@[(42@@)][(45@@)])]
|
||||
[(49@@[(42@@)])]
|
||||
[(49@@[(45@@)][(40@@[(42@@)][(42@@)])])]
|
||||
[(55@@[(83@@)][(42@@)][(74@@[(43@@)][(43@@)][(43@@)])])]
|
||||
[(55@@[(83@@)][(83@@)][(83@@)][(42@@)][(43@@)])]
|
||||
[(55@@)]
|
||||
[(55@@[(83@@)][(83@@)][(42@@)][(74@@[(43@@)][(43@@)])][(43@@)])]
|
||||
[(55@@[(83@@)][(42@@)][(43@@)])]
|
||||
[(55@@[(83@@)][(42@@)])]
|
||||
[(55@@[(83@@)])]
|
||||
[(55@@[(83@@)][(83@@)][(42@@)][(43@@)])]
|
||||
[(41@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)][(42@@[(33@@)][(33@@)])])])]
|
||||
[(41@@[(27@@[(32@@[(42@@[(27@@[(38@@[(34@@)][(42@@)])][(-1@@)][(42@@)][(34@@)])])])])])]
|
||||
[(41@@[(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])][(42@@)])]
|
||||
[(41@@[(14@@[(42@@)][(22@@[(52@@)][(42@@)])])])]
|
||||
[(41@@)]
|
||||
[(41@@[(32@@[(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(42@@)])][(42@@[(32@@)])])])]
|
||||
[(41@@[(16@@[(32@@)][(27@@[(42@@)][(-1@@)][(33@@)])][(33@@)])])]
|
||||
[(41@@[(22@@[(52@@)][(42@@)])])]
|
||||
[(41@@[(86@@[(60@@[(59@@[(16@@[(32@@[(32@@[(32@@[(42@@[(42@@)])])])])][(32@@[(32@@[(32@@[(42@@[(42@@)])])])])])])])])])]
|
||||
[(41@@[(33@@)][(42@@)])]
|
||||
[(41@@[(32@@[(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(14@@[(-2@@)][(43@@)][(42@@)][(40@@)])])]
|
||||
[(41@@[(27@@)])]
|
||||
[(41@@[(32@@[(42@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])])])])]
|
||||
[(41@@[(32@@[(42@@[(33@@)][(42@@)])])])]
|
||||
[(41@@[(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(42@@)][(40@@)])][(32@@[(42@@[(40@@[(42@@)][(42@@)])][(42@@)])])])]
|
||||
[(41@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(34@@)][(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(38@@[(-1@@)][(34@@)])][(34@@)])])])])]
|
||||
[(51@@[(21@@)][(22@@[(52@@)][(42@@)])][(21@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)])])])]
|
||||
[(51@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(51@@[(25@@)][(22@@[(52@@)][(42@@)])][(41@@)])]
|
||||
[(51@@)]
|
||||
[(51@@[(22@@[(52@@)][(42@@)])])]
|
||||
[(51@@[(21@@)][(52@@)])]
|
||||
[(51@@[(42@@)])]
|
||||
[(51@@[(21@@)][(22@@[(52@@)][(42@@)])])]
|
||||
[(50@@)]
|
||||
[(50@@[(42@@)])]
|
||||
[(25@@[(32@@[(45@@)][(42@@[(42@@)])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(40@@[(42@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(45@@)])])][(27@@[(42@@)][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(42@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(36@@[(27@@[(42@@)][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(42@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@[(36@@[(27@@[(42@@)][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)][(36@@[(27@@[(32@@)][(32@@)])])])][(42@@)][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(-1@@)][(42@@)][(32@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])][(25@@[(27@@[(-1@@)][(42@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(61@@[(27@@[(42@@)][(-1@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(38@@[(-1@@)][(42@@)])])])])])])])][(25@@[(53@@)][(27@@[(27@@[(42@@)][(-1@@)][(13@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(13@@)])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@[(42@@)])])][(-1@@)][(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(42@@)][(-1@@)][(34@@)])])])])]
|
||||
[(25@@[(32@@[(42@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(36@@[(27@@[(42@@)][(-1@@)][(33@@)])])][(-1@@)][(36@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@[(42@@)])])])])][(21@@[(7@@[(32@@)][(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(21@@[(7@@[(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@)][(27@@[(-1@@)][(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(32@@[(57@@)][(42@@)][(42@@[(42@@)])])])])]
|
||||
[(25@@[(27@@[(38@@[(-1@@)][(42@@)])][(-1@@)][(38@@[(-1@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)])])])])])][(41@@[(42@@)])])]
|
||||
[(25@@[(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(32@@[(42@@[(42@@)])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(60@@[(43@@)][(59@@[(42@@)][(11@@[(43@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])])])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)])])])])][(25@@[(32@@[(42@@[(42@@)])])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)])][(21@@[(7@@[(42@@)])])])]
|
||||
[(25@@[(22@@)][(25@@[(22@@)][(21@@[(7@@[(22@@[(42@@)])][(9@@)][(40@@[(42@@)][(42@@)])])])][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])]
|
||||
[(25@@[(32@@[(42@@)][(32@@[(42@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])][(42@@[(45@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(45@@)])])])]
|
||||
[(25@@)]
|
||||
[(25@@[(21@@)][(38@@[(-1@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(25@@[(42@@)][(21@@[(7@@[(42@@)][(-1@@)][(9@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(38@@[(-1@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)][(42@@[(42@@)])])])][(25@@[(27@@[(27@@[(27@@[(2@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])])][(27@@[(27@@[(2@@)][(2@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(51@@[(25@@)][(52@@)])])]
|
||||
[(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])])])]
|
||||
[(25@@[(25@@)][(27@@[(27@@[(42@@)][(-1@@)][(34@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(27@@[(42@@)][(-1@@)][(34@@)])])])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)][(34@@)])])])])])][(21@@[(32@@[(42@@)][(42@@[(13@@)])])])][(21@@[(37@@[(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(60@@[(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])][(61@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@)])])])])]
|
||||
[(25@@[(60@@)][(21@@)][(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(33@@)])])][(21@@[(7@@[(11@@)][(42@@)][(-1@@)])])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(57@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(11@@[(74@@[(43@@)][(43@@)])][(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(25@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(36@@[(27@@[(42@@)][(-1@@)][(34@@)])])][(-1@@)][(36@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(38@@[(-1@@)][(42@@)])][(21@@[(7@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(21@@[(7@@)])])][(25@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])][(53@@[(32@@[(42@@)][(42@@[(33@@)])])])])][(60@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(25@@[(27@@[(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(-1@@)][(22@@[(52@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)])])])][(21@@[(37@@[(22@@[(52@@)][(42@@)])][(-1@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(2@@[(22@@[(52@@)][(42@@)])][(22@@[(52@@)][(42@@)])])])])][(41@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)][(42@@[(42@@)])])])][(25@@[(27@@[(27@@[(27@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])][(27@@[(27@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])][(2@@)])])])])])]
|
||||
[(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@[(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(42@@)])])])])])]
|
||||
[(25@@[(27@@[(-1@@)])][(41@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(27@@[(42@@)][(-1@@)][(45@@)])])])])]
|
||||
[(25@@[(42@@)][(41@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(41@@[(9@@)])])]
|
||||
[(25@@[(21@@)])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(21@@[(32@@[(42@@[(42@@)][(42@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(27@@[(-1@@)])][(-1@@)])])]
|
||||
[(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(25@@[(21@@)][(42@@)][(60@@[(74@@[(43@@)][(76@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(42@@)][(42@@)])])])])]
|
||||
[(25@@[(32@@[(42@@)][(32@@)][(42@@[(45@@)])])][(21@@[(32@@[(32@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])])])])])][(18@@)])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(11@@[(39@@)][(36@@[(27@@[(-1@@)][(27@@[(42@@)][(-1@@)][(42@@)])][(42@@)])])])][(-1@@)][(11@@[(39@@)][(42@@)])])])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(32@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(38@@[(-1@@)][(32@@[(32@@[(42@@)])][(42@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(34@@)])])][(41@@[(9@@)])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(38@@[(-1@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(2@@[(42@@)][(42@@)])][(2@@[(42@@)][(42@@)])])])])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(21@@)])]
|
||||
[(24@@)]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(2@@[(42@@)][(42@@)])][(-1@@)][(2@@[(42@@)][(42@@)])])])])]
|
||||
[(24@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(32@@)])])]
|
||||
[(24@@[(27@@[(42@@)])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(32@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(38@@[(-1@@)][(32@@[(32@@[(42@@)])][(42@@)])])][(41@@[(9@@)])])])]
|
||||
[(61@@[(32@@[(42@@)][(42@@[(45@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(45@@)][(45@@)])])])])][(21@@[(37@@[(42@@)][(-1@@)])])])]
|
||||
[(61@@[(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(34@@)])])])])])]
|
||||
[(61@@[(27@@[(36@@[(7@@[(32@@[(42@@)])])])])])]
|
||||
[(61@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(21@@)][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@[(34@@)])])])])])]
|
||||
[(61@@)]
|
||||
[(61@@[(32@@[(42@@)])][(21@@[(32@@[(42@@[(32@@[(42@@)])])])])])]
|
||||
[(61@@[(27@@[(27@@[(42@@)])])])]
|
||||
[(61@@[(27@@[(-1@@)])])]
|
||||
[(61@@[(21@@)][(32@@[(42@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(61@@[(32@@)])]
|
||||
[(61@@[(27@@[(42@@)][(-1@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(42@@)])])][(21@@[(38@@[(-1@@)][(42@@)])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)][(74@@[(43@@)][(43@@)][(74@@[(43@@)][(43@@)][(43@@)])])])][(32@@[(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(42@@)])])])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(70@@[(21@@)][(44@@[(83@@)][(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@)])])]
|
||||
[(70@@[(44@@[(42@@)])][(25@@[(27@@[(38@@[(32@@[(42@@[(42@@)])])])][(32@@[(42@@[(42@@)])])])][(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@)])]
|
||||
[(70@@)]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(70@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(70@@[(44@@[(43@@)])])]
|
||||
[(70@@[(44@@[(83@@)][(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(70@@[(42@@)])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(42@@)])])])])]
|
||||
[(70@@[(32@@[(42@@)][(42@@)])][(42@@)])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(10@@)]
|
||||
[(17@@)]
|
||||
[(17@@[(42@@)][(42@@)][(33@@)])]
|
||||
[(17@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(32@@[(42@@)][(42@@)])][(45@@)])])][(45@@)])]
|
||||
[(17@@[(42@@)])]
|
||||
[(17@@[(33@@)][(33@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])]
|
||||
[(71@@[(83@@)][(42@@)][(72@@[(42@@)])][(72@@[(42@@)])][(72@@[(42@@)])])]
|
||||
[(71@@[(83@@)])]
|
||||
[(18@@)]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(27@@[(38@@[(-1@@)][(34@@)])][(-1@@)][(42@@)])])])])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])][(41@@[(42@@)])][(41@@[(34@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(25@@[(27@@[(42@@)][(-1@@)][(52@@)])][(41@@[(9@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(9@@)])])][(25@@[(38@@[(-1@@)][(48@@[(42@@)][(42@@)])])][(41@@[(9@@)])])][(25@@[(32@@[(42@@)][(42@@[(32@@)][(32@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(60@@[(43@@)][(59@@[(42@@)][(11@@[(43@@)][(42@@)])])])][(25@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(25@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(41@@[(9@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(33@@)])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@[(32@@[(42@@)][(42@@)])])][(32@@[(34@@)][(40@@[(42@@)][(42@@)])])][(42@@)])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(44@@[(42@@)])][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(21@@[(32@@[(42@@[(42@@)])])])][(60@@[(74@@[(43@@)][(5@@[(43@@)])])][(59@@[(42@@)][(32@@[(42@@)])])])][(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(70@@[(44@@[(5@@[(43@@)])][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@[(2@@[(42@@)][(34@@)])])])])])])])])][(41@@[(32@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(45@@)])])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(42@@)][(44@@[(43@@)][(42@@)])][(46@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@[(14@@[(40@@[(42@@)][(42@@)])])])])])][(21@@[(32@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(33@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(41@@[(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(41@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(38@@[(-1@@)][(34@@)])][(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(34@@)][(34@@)])])])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(54@@[(60@@[(74@@[(43@@)][(76@@)])][(59@@[(42@@)][(11@@[(74@@[(43@@)][(76@@)])][(32@@[(42@@)][(42@@[(42@@)])])])])])][(41@@[(32@@[(42@@)][(42@@[(42@@)][(14@@[(-2@@)][(43@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)])])])])])])]
|
||||
[(31@@[(44@@[(42@@)])][(21@@[(32@@[(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(43@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@)]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(21@@[(32@@)])][(21@@[(32@@[(42@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(60@@[(43@@)][(59@@[(42@@)][(32@@)])])][(41@@[(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(41@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(9@@)][(32@@[(42@@)][(42@@[(9@@)][(9@@)])])])])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(41@@[(32@@[(42@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(9@@)][(42@@)])])])])]
|
||||
[(31@@[(41@@[(32@@[(42@@[(14@@)])])])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(1@@[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)])])])][(31@@[(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])])])][(41@@[(42@@)])])][(31@@[(83@@)][(5@@[(39@@)])][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(5@@[(39@@)])][(59@@[(42@@)][(4@@[(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])])])])][(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])])])][(41@@[(42@@)])])])])])])][(41@@[(32@@[(42@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(83@@)][(39@@)][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(27@@[(32@@)][(-1@@)][(42@@)])])])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(34@@)])])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(32@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(27@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(34@@)])][(41@@[(34@@)])])])][(41@@)])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(54@@[(60@@[(5@@[(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(57@@)][(42@@)])][(33@@)])])])])][(70@@[(44@@[(74@@[(43@@)][(76@@)])][(42@@)])][(42@@)][(41@@[(11@@[(43@@)][(32@@[(42@@)][(42@@[(42@@)])])])])])][(41@@[(33@@)])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(41@@[(33@@)])])])][(41@@[(42@@)])])])]
|
||||
[(31@@[(60@@)][(83@@)][(74@@[(43@@)][(43@@)])][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(25@@[(27@@[(32@@[(42@@)][(32@@)][(42@@[(42@@)])])][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(42@@)])])])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(74@@[(43@@)][(43@@)])][(42@@)][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(33@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@[(42@@)])])])])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(83@@)][(43@@)][(42@@)])][(43@@)][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(86@@[(21@@[(32@@[(42@@)][(32@@)][(42@@[(42@@)])])])][(41@@[(33@@)])])][(32@@[(42@@[(42@@)])])])])])])])]
|
||||
[(31@@[(42@@)][(44@@[(74@@[(43@@)][(76@@)])][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(44@@[(39@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(43@@)][(41@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(31@@[(83@@)][(83@@)])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@[(42@@)][(9@@)])])])])]
|
||||
[(31@@[(83@@)])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])])]
|
||||
[(31@@[(39@@)][(43@@)][(41@@[(52@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(41@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(34@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(39@@)][(42@@)][(41@@[(27@@[(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(33@@)])])][(-1@@)][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(43@@)][(54@@[(21@@[(32@@)])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(42@@)])])])][(21@@[(32@@)])])])])]
|
||||
[(21@@[(7@@[(14@@[(14@@[(-2@@)][(43@@)][(1@@[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(27@@[(42@@)][(-1@@)][(45@@)][(32@@[(42@@)][(42@@)])])])])])][(41@@[(42@@)])])])])])])])]
|
||||
[(21@@[(7@@[(27@@[(36@@[(27@@[(27@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(-1@@)][(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])])][(32@@)])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(27@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(34@@)])][(27@@[(42@@)][(-1@@)][(42@@)])][(42@@)])])][(-1@@)][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(45@@)][(42@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(32@@[(40@@)][(42@@)])])])])])]
|
||||
[(21@@[(32@@[(42@@)][(32@@[(42@@)])][(42@@[(45@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(2@@[(42@@)][(34@@)])][(2@@[(42@@)][(34@@)])][(32@@[(42@@)][(42@@)])][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@[(42@@)][(42@@)])][(32@@)])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)][(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(34@@)])][(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(32@@[(42@@)][(42@@[(34@@)])])][(34@@)])][(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])][(32@@[(42@@)])][(32@@[(27@@[(45@@)][(-1@@)][(45@@)])])][(42@@)])])])])]
|
||||
[(21@@)]
|
||||
[(21@@[(32@@)][(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@[(42@@)][(14@@[(-2@@)][(43@@)][(14@@[(-2@@)][(43@@)][(45@@)])][(14@@[(-2@@)][(43@@)][(42@@)][(14@@[(-2@@)][(43@@)][(45@@)])])])])])])]
|
||||
[(21@@[(14@@[(-2@@)][(43@@)][(42@@)][(1@@[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(43@@)][(21@@[(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(45@@)])])])][(41@@[(48@@[(42@@)][(42@@)])])])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(45@@)])])])]
|
||||
[(21@@[(7@@[(27@@[(32@@[(42@@)][(42@@[(22@@[(52@@)][(42@@)])])])][(36@@[(16@@[(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])][(34@@)][(32@@[(22@@)][(42@@)])])])])])])]
|
||||
[(21@@[(7@@[(2@@[(40@@[(42@@)][(42@@)])][(42@@)])][(27@@[(36@@[(27@@[(36@@[(27@@[(2@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])][(-1@@)][(2@@[(40@@[(42@@)][(42@@)])][(42@@)])])])][(-1@@)][(36@@[(27@@[(2@@[(40@@[(42@@)][(42@@)])][(42@@)])][(-1@@)][(36@@[(27@@[(2@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])])])][(36@@[(27@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(16@@[(36@@[(27@@[(32@@[(42@@)][(32@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])][(32@@[(42@@[(32@@[(42@@)][(32@@[(34@@)])][(32@@)][(42@@)])])])][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(42@@)][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(9@@)])])]
|
||||
[(21@@[(32@@[(42@@[(32@@)][(27@@[(32@@[(42@@)][(32@@)][(42@@)])][(-1@@)][(45@@)][(32@@[(42@@)][(32@@)][(42@@)])])])])])]
|
||||
[(21@@[(7@@[(14@@)])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(42@@)][(42@@)][(42@@)][(45@@)][(9@@)][(9@@)])])])]
|
||||
[(21@@[(32@@)])]
|
||||
[(21@@[(32@@[(42@@[(14@@[(40@@)][(16@@[(42@@)][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])])])])])])]
|
||||
[(21@@[(32@@[(42@@[(22@@[(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])][(32@@[(42@@)])][(32@@[(45@@)])][(42@@)])])])])]
|
||||
[(21@@[(7@@[(27@@[(38@@[(-1@@)][(42@@)])])][(27@@[(36@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(27@@[(-1@@)][(42@@)][(42@@)][(42@@)])])])][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])]
|
||||
[(54@@[(21@@[(32@@[(42@@)][(42@@)])])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(41@@[(42@@)])][(12@@[(44@@[(43@@)][(42@@)])][(41@@[(42@@)])])])]
|
||||
[(54@@[(8@@[(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])]
|
||||
[(54@@[(41@@)][(8@@[(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@)][(21@@)][(8@@)][(41@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(53@@[(42@@)])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])])])]
|
||||
[(54@@[(25@@[(27@@[(62@@[(42@@)][(-3@@)][(43@@)])][(-1@@)][(38@@[(-1@@)][(32@@[(42@@[(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(32@@[(42@@)][(42@@)])])])])])][(41@@[(32@@)])][(8@@[(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])]
|
||||
[(54@@)]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@)][(8@@[(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])])])][(21@@)][(8@@[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(54@@[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(9@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(40@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(9@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(40@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(21@@[(7@@[(32@@)][(42@@)][(-1@@)])])][(12@@[(44@@[(43@@)][(42@@)])][(25@@[(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)])][(42@@)])])])])])])]
|
||||
[(54@@[(21@@)][(8@@[(21@@)])])]
|
||||
[(54@@[(58@@[(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(54@@[(21@@)][(21@@)])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])])])]
|
||||
[(54@@[(60@@)])]
|
||||
[(54@@[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(9@@)])])])][(53@@[(42@@)])])][(21@@)])]
|
||||
[(54@@[(12@@[(44@@[(43@@)][(42@@)])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(21@@[(32@@[(42@@)][(42@@)])])][(53@@[(42@@)])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(52@@)][(42@@)])])])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])])]
|
||||
[(6@@[(27@@[(27@@[(42@@)][(-1@@)][(34@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(6@@[(36@@[(27@@)])])]
|
||||
[(6@@[(27@@)])]
|
||||
[(6@@[(27@@[(42@@)][(-1@@)][(33@@)])])]
|
||||
[(53@@[(14@@[(45@@)][(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(53@@[(14@@[(32@@[(42@@[(27@@[(32@@)][(32@@[(42@@[(32@@[(42@@)][(42@@)])])])])])])])])]
|
||||
[(53@@[(14@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)])])])]
|
||||
[(53@@[(14@@[(42@@)][(32@@[(42@@[(42@@)])])])])]
|
||||
[(53@@)]
|
||||
[(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(42@@)])])])]
|
||||
[(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)])])])]
|
||||
[(53@@[(14@@[(27@@[(45@@)])])])]
|
||||
[(53@@[(14@@[(45@@)])])]
|
||||
[(53@@[(42@@)])]
|
||||
[(53@@[(14@@[(27@@[(32@@[(42@@)])])])])]
|
||||
[(23@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(9@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(39@@)][(59@@[(42@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(33@@)])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(5@@[(39@@)])][(59@@[(42@@)][(3@@[(5@@[(39@@)])][(4@@[(34@@)][(34@@)][(34@@)][(34@@)])])])])]
|
||||
[(23@@[(59@@[(27@@[(45@@)][(45@@)][(45@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])]
|
||||
[(23@@)]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(57@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(14@@[(-2@@)][(43@@)][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])][(9@@)])][(32@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(39@@)][(59@@[(42@@)][(42@@)])])]
|
||||
[(23@@[(59@@[(14@@[(45@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(74@@[(43@@)][(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)][(43@@)])])])])]
|
||||
[(23@@[(43@@)][(39@@)])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(57@@)][(42@@)])])])])])]
|
||||
[(23@@[(83@@)])]
|
||||
[(23@@[(59@@[(32@@[(32@@[(14@@[(-2@@)][(43@@)][(34@@)][(40@@[(42@@)][(42@@)])][(9@@)][(9@@)])])])])])]
|
||||
[(23@@[(59@@[(32@@[(32@@[(45@@)])])])])]
|
||||
[(23@@[(83@@)][(74@@[(43@@)][(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)][(43@@)])])])])]
|
||||
[(60@@[(59@@[(32@@[(42@@[(14@@[(-2@@)][(43@@)][(42@@)][(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])][(38@@[(-1@@)][(34@@)])])][(42@@)])])])])])]
|
||||
[(60@@[(59@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@[(42@@)])][(42@@)])])])]
|
||||
[(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(39@@)][(59@@[(42@@)][(32@@[(22@@)][(42@@)])])])]
|
||||
[(60@@[(39@@)][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(5@@[(39@@)])][(59@@[(32@@)][(42@@)])])]
|
||||
[(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(32@@[(42@@[(32@@[(40@@)][(32@@)][(42@@)])])])])])])])]
|
||||
[(60@@)]
|
||||
[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(43@@)][(59@@[(32@@)][(32@@[(42@@)][(32@@)][(32@@[(86@@[(59@@[(42@@)])][(32@@[(42@@)][(42@@)][(32@@)])])])][(42@@)])])][(74@@[(43@@)][(43@@)])])]
|
||||
[(60@@[(59@@[(36@@[(16@@[(27@@[(-1@@)])][(33@@)][(33@@)])])])])]
|
||||
[(60@@[(59@@[(42@@)][(34@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])]
|
||||
[(60@@[(74@@[(43@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(60@@[(59@@)])]
|
||||
[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])])])])]
|
||||
[(60@@[(5@@[(43@@)])][(59@@[(42@@)])])]
|
||||
[(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(22@@[(52@@)][(42@@)])])])])]
|
||||
[(46@@[(45@@)][(45@@)][(9@@)][(42@@)][(42@@)])]
|
||||
[(46@@)]
|
||||
[(46@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(46@@[(42@@)])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)])])])])])])]
|
||||
[(12@@[(44@@[(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(12@@[(44@@[(42@@)])][(21@@[(32@@[(42@@[(42@@)])])])])]
|
||||
[(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(9@@)])])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(42@@)])])])])])]
|
||||
[(12@@)]
|
||||
[(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(32@@[(42@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])][(53@@[(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])])]
|
||||
[(12@@[(44@@[(43@@)])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(41@@[(33@@)])])]
|
||||
[(12@@[(21@@)])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)])][(42@@)])])])])]
|
||||
[(12@@[(44@@[(43@@)][(42@@)])][(21@@)])]
|
||||
[(49@@)]
|
||||
[(49@@[(40@@[(42@@)][(42@@)])])]
|
||||
[(49@@[(42@@)][(45@@)])]
|
||||
[(49@@[(42@@)])]
|
||||
[(49@@[(45@@)][(40@@[(42@@)][(42@@)])])]
|
||||
[(55@@[(83@@)][(42@@)][(74@@[(43@@)][(43@@)][(43@@)])])]
|
||||
[(55@@[(83@@)][(83@@)][(83@@)][(42@@)][(43@@)])]
|
||||
[(55@@)]
|
||||
[(55@@[(83@@)][(83@@)][(42@@)][(74@@[(43@@)][(43@@)])][(43@@)])]
|
||||
[(55@@[(83@@)][(42@@)][(43@@)])]
|
||||
[(55@@[(83@@)][(42@@)])]
|
||||
[(55@@[(83@@)])]
|
||||
[(55@@[(83@@)][(83@@)][(42@@)][(43@@)])]
|
||||
[(41@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)][(42@@[(33@@)][(33@@)])])])]
|
||||
[(41@@[(27@@[(32@@[(42@@[(27@@[(38@@[(34@@)][(42@@)])][(-1@@)][(42@@)][(34@@)])])])])])]
|
||||
[(41@@[(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])][(42@@)])]
|
||||
[(41@@[(14@@[(42@@)][(22@@[(52@@)][(42@@)])])])]
|
||||
[(41@@)]
|
||||
[(41@@[(32@@[(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(42@@)])][(42@@[(32@@)])])])]
|
||||
[(41@@[(16@@[(32@@)][(27@@[(42@@)][(-1@@)][(33@@)])][(33@@)])])]
|
||||
[(41@@[(22@@[(52@@)][(42@@)])])]
|
||||
[(41@@[(86@@[(60@@[(59@@[(16@@[(32@@[(32@@[(32@@[(42@@[(42@@)])])])])][(32@@[(32@@[(32@@[(42@@[(42@@)])])])])])])])])])]
|
||||
[(41@@[(33@@)][(42@@)])]
|
||||
[(41@@[(32@@[(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(14@@[(-2@@)][(43@@)][(42@@)][(40@@)])])]
|
||||
[(41@@[(27@@)])]
|
||||
[(41@@[(32@@[(42@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])])])])]
|
||||
[(41@@[(32@@[(42@@[(33@@)][(42@@)])])])]
|
||||
[(41@@[(14@@[(-2@@)][(74@@[(43@@)][(43@@)])][(42@@)][(40@@)])][(32@@[(42@@[(40@@[(42@@)][(42@@)])][(42@@)])])])]
|
||||
[(41@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(34@@)][(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(38@@[(-1@@)][(34@@)])][(34@@)])])])])]
|
||||
[(51@@[(21@@)][(22@@[(52@@)][(42@@)])][(21@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)])])])]
|
||||
[(51@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(51@@[(25@@)][(22@@[(52@@)][(42@@)])][(41@@)])]
|
||||
[(51@@)]
|
||||
[(51@@[(22@@[(52@@)][(42@@)])])]
|
||||
[(51@@[(21@@)][(52@@)])]
|
||||
[(51@@[(42@@)])]
|
||||
[(51@@[(21@@)][(22@@[(52@@)][(42@@)])])]
|
||||
[(50@@)]
|
||||
[(50@@[(42@@)])]
|
||||
[(25@@[(32@@[(45@@)][(42@@[(42@@)])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])][(21@@[(7@@[(40@@[(42@@)][(42@@)])][(-1@@)][(32@@[(57@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(40@@[(42@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(45@@)])])][(27@@[(42@@)][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(42@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(36@@[(27@@[(42@@)][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])][(59@@[(42@@)][(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)][(42@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@[(36@@[(27@@[(42@@)][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)][(36@@[(27@@[(32@@)][(32@@)])])])][(42@@)][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(-1@@)][(42@@)][(32@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])][(25@@[(27@@[(-1@@)][(42@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(61@@[(27@@[(42@@)][(-1@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(38@@[(-1@@)][(42@@)])])])])])])])][(25@@[(53@@)][(27@@[(27@@[(42@@)][(-1@@)][(13@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(13@@)])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@[(42@@)])])][(-1@@)][(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(42@@)][(-1@@)][(34@@)])])])])]
|
||||
[(25@@[(32@@[(42@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(36@@[(27@@[(42@@)][(-1@@)][(33@@)])])][(-1@@)][(36@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@[(42@@)])])])])][(21@@[(7@@[(32@@)][(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(21@@[(7@@[(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@)][(27@@[(-1@@)][(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(32@@[(57@@)][(42@@)][(42@@[(42@@)])])])])]
|
||||
[(25@@[(27@@[(38@@[(-1@@)][(42@@)])][(-1@@)][(38@@[(-1@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)])])])])])][(41@@[(42@@)])])]
|
||||
[(25@@[(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(32@@[(42@@[(42@@)])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(60@@[(43@@)][(59@@[(42@@)][(11@@[(43@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])])])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)])])])])][(25@@[(32@@[(42@@[(42@@)])])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)])][(21@@[(7@@[(42@@)])])])]
|
||||
[(25@@[(22@@)][(25@@[(22@@)][(21@@[(7@@[(22@@[(42@@)])][(9@@)][(40@@[(42@@)][(42@@)])])])][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])]
|
||||
[(25@@[(32@@[(42@@)][(32@@[(42@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])][(42@@[(45@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(45@@)])])])]
|
||||
[(25@@)]
|
||||
[(25@@[(21@@)][(38@@[(-1@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])])])])])]
|
||||
[(25@@[(42@@)][(21@@[(7@@[(42@@)][(-1@@)][(9@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(38@@[(-1@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)][(42@@[(42@@)])])])][(25@@[(27@@[(27@@[(27@@[(2@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])])][(27@@[(27@@[(2@@)][(2@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])])])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(51@@[(25@@)][(52@@)])])]
|
||||
[(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])])])]
|
||||
[(25@@[(25@@)][(27@@[(27@@[(42@@)][(-1@@)][(34@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(27@@[(42@@)][(-1@@)][(34@@)])])])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(42@@)][(34@@)])])])])])][(21@@[(32@@[(42@@)][(42@@[(13@@)])])])][(21@@[(37@@[(42@@)][(-1@@)])])])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(60@@[(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])][(61@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@)])])])])]
|
||||
[(25@@[(60@@)][(21@@)][(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(33@@)])])][(21@@[(7@@[(11@@)][(42@@)][(-1@@)])])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(57@@)])])])])][(21@@[(7@@[(42@@)][(-1@@)][(11@@[(74@@[(43@@)][(43@@)])][(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(25@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(36@@[(27@@[(42@@)][(-1@@)][(34@@)])])][(-1@@)][(36@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])])])][(38@@[(-1@@)][(42@@)])][(21@@[(7@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(21@@[(7@@)])])][(25@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(34@@)])][(53@@[(32@@[(42@@)][(42@@[(33@@)])])])])][(60@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(34@@)])][(25@@[(27@@[(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(-1@@)][(22@@[(52@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)])])])][(21@@[(37@@[(22@@[(52@@)][(42@@)])][(-1@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(2@@[(22@@[(52@@)][(42@@)])][(22@@[(52@@)][(42@@)])])])])][(41@@[(32@@[(22@@[(52@@)][(42@@)])][(42@@)])])])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)][(42@@[(42@@)])])])][(25@@[(27@@[(27@@[(27@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])])])][(27@@[(27@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])])][(2@@)])])])])])]
|
||||
[(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@[(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(27@@[(40@@[(42@@)][(42@@)])][(-1@@)][(42@@)])])])])])]
|
||||
[(25@@[(27@@[(-1@@)])][(41@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(53@@[(14@@[(-2@@)][(43@@)][(27@@[(42@@)][(-1@@)][(45@@)])])])])]
|
||||
[(25@@[(42@@)][(41@@)])]
|
||||
[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(41@@[(9@@)])])]
|
||||
[(25@@[(21@@)])]
|
||||
[(25@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(21@@[(32@@[(42@@[(42@@)][(42@@)][(42@@)])])])])]
|
||||
[(25@@[(27@@[(27@@[(-1@@)])][(-1@@)])])]
|
||||
[(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(25@@[(21@@)][(42@@)][(60@@[(74@@[(43@@)][(76@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(42@@)][(42@@)])])])])]
|
||||
[(25@@[(32@@[(42@@)][(32@@)][(42@@[(45@@)])])][(21@@[(32@@[(32@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])][(45@@)][(32@@[(42@@)][(42@@)])])])])])][(18@@)])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(42@@)][(-1@@)][(27@@[(11@@[(39@@)][(36@@[(27@@[(-1@@)][(27@@[(42@@)][(-1@@)][(42@@)])][(42@@)])])])][(-1@@)][(11@@[(39@@)][(42@@)])])])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(32@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(38@@[(-1@@)][(32@@[(32@@[(42@@)])][(42@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(34@@)])])][(41@@[(9@@)])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(38@@[(-1@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(2@@[(42@@)][(42@@)])][(2@@[(42@@)][(42@@)])])])])])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(21@@)])]
|
||||
[(24@@)]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(40@@[(42@@)][(42@@)])])][(37@@[(42@@)][(-1@@)])][(21@@[(7@@[(2@@[(42@@)][(42@@)])][(-1@@)][(2@@[(42@@)][(42@@)])])])])]
|
||||
[(24@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(21@@[(32@@)])])]
|
||||
[(24@@[(27@@[(42@@)])])]
|
||||
[(24@@[(58@@[(39@@)][(59@@[(42@@)][(34@@)])])][(27@@[(42@@)][(-1@@)][(32@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(38@@[(-1@@)][(32@@[(32@@[(42@@)])][(42@@)])])][(41@@[(9@@)])])])]
|
||||
[(61@@[(32@@[(42@@)][(42@@[(45@@)])])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(45@@)][(45@@)])])])])][(21@@[(37@@[(42@@)][(-1@@)])])])]
|
||||
[(61@@[(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(13@@)])][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(34@@)])])])])])]
|
||||
[(61@@[(27@@[(36@@[(7@@[(32@@[(42@@)])])])])])]
|
||||
[(61@@[(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(34@@)])][(21@@)][(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(32@@)][(42@@[(34@@)])])])])])]
|
||||
[(61@@)]
|
||||
[(61@@[(32@@[(42@@)])][(21@@[(32@@[(42@@[(32@@[(42@@)])])])])])]
|
||||
[(61@@[(27@@[(27@@[(42@@)])])])]
|
||||
[(61@@[(27@@[(-1@@)])])]
|
||||
[(61@@[(21@@)][(32@@[(42@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(61@@[(32@@)])]
|
||||
[(61@@[(27@@[(42@@)][(-1@@)][(42@@)])][(21@@[(7@@[(42@@)][(-1@@)][(42@@)])])][(21@@[(38@@[(-1@@)][(42@@)])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)][(74@@[(43@@)][(43@@)][(74@@[(43@@)][(43@@)][(43@@)])])])][(32@@[(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(42@@)])])])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])])]
|
||||
[(70@@[(21@@)][(44@@[(83@@)][(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@)])])]
|
||||
[(70@@[(44@@[(42@@)])][(25@@[(27@@[(38@@[(32@@[(42@@[(42@@)])])])][(32@@[(42@@[(42@@)])])])][(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@)])]
|
||||
[(70@@)]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])]
|
||||
[(70@@[(32@@[(42@@)][(42@@)])])]
|
||||
[(70@@[(44@@[(43@@)])])]
|
||||
[(70@@[(44@@[(83@@)][(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(70@@[(42@@)])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])][(42@@)])])])])]
|
||||
[(70@@[(32@@[(42@@)][(42@@)])][(42@@)])]
|
||||
[(70@@[(44@@[(43@@)][(42@@)])][(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(10@@)]
|
||||
[(17@@)]
|
||||
[(17@@[(42@@)][(42@@)][(33@@)])]
|
||||
[(17@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(32@@[(42@@)][(42@@)])][(45@@)])])][(45@@)])]
|
||||
[(17@@[(42@@)])]
|
||||
[(17@@[(33@@)][(33@@)][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])][(40@@[(40@@[(42@@)][(42@@)])][(42@@)])])]
|
||||
[(71@@[(83@@)][(42@@)][(72@@[(42@@)])][(72@@[(42@@)])][(72@@[(42@@)])])]
|
||||
[(71@@[(83@@)])]
|
||||
[(18@@)]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(27@@[(38@@[(-1@@)][(34@@)])][(-1@@)][(42@@)])])])])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(60@@[(39@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])][(41@@[(42@@)])][(41@@[(34@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(25@@[(27@@[(42@@)][(-1@@)][(52@@)])][(41@@[(9@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(9@@)])])][(25@@[(38@@[(-1@@)][(48@@[(42@@)][(42@@)])])][(41@@[(9@@)])])][(25@@[(32@@[(42@@)][(42@@[(32@@)][(32@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(60@@[(43@@)][(59@@[(42@@)][(11@@[(43@@)][(42@@)])])])][(25@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(25@@[(32@@[(42@@)][(42@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(41@@[(9@@)])])][(41@@[(9@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(33@@)])])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@[(32@@[(42@@)][(42@@)])])][(32@@[(34@@)][(40@@[(42@@)][(42@@)])])][(42@@)])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(44@@[(42@@)])][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(21@@[(32@@[(42@@[(42@@)])])])][(60@@[(74@@[(43@@)][(5@@[(43@@)])])][(59@@[(42@@)][(32@@[(42@@)])])])][(25@@[(38@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(70@@[(44@@[(5@@[(43@@)])][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@[(2@@[(42@@)][(34@@)])])])])])])])])][(41@@[(32@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(45@@)])])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(42@@)][(44@@[(43@@)][(42@@)])][(46@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@[(14@@[(40@@[(42@@)][(42@@)])])])])])][(21@@[(32@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(33@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(41@@[(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(39@@)][(42@@)])][(41@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(38@@[(-1@@)][(34@@)])][(36@@[(16@@[(27@@[(42@@)][(-1@@)][(42@@)])][(34@@)][(34@@)])])])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(54@@[(60@@[(74@@[(43@@)][(76@@)])][(59@@[(42@@)][(11@@[(74@@[(43@@)][(76@@)])][(32@@[(42@@)][(42@@[(42@@)])])])])])][(41@@[(32@@[(42@@)][(42@@[(42@@)][(14@@[(-2@@)][(43@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)])])])])])])]
|
||||
[(31@@[(44@@[(42@@)])][(21@@[(32@@[(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(43@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@)]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(21@@[(32@@)])][(21@@[(32@@[(42@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(60@@[(43@@)][(59@@[(42@@)][(32@@)])])][(41@@[(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(42@@)])])])])][(41@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(9@@)][(32@@[(42@@)][(42@@[(9@@)][(9@@)])])])])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(41@@[(32@@[(42@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(9@@)][(42@@)])])])])]
|
||||
[(31@@[(41@@[(32@@[(42@@[(14@@)])])])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(1@@[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)])])])][(31@@[(83@@)][(39@@)][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(40@@[(42@@)][(42@@)])])])][(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])])])][(41@@[(42@@)])])][(31@@[(83@@)][(5@@[(39@@)])][(42@@)][(44@@[(39@@)][(42@@)])][(44@@[(5@@[(39@@)])][(42@@)])][(60@@[(5@@[(39@@)])][(59@@[(42@@)][(4@@[(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])])])])][(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])][(12@@[(44@@[(43@@)][(42@@)])])])][(41@@[(42@@)])])])])])])][(41@@[(32@@[(42@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(83@@)][(39@@)][(42@@)])][(60@@[(39@@)][(59@@[(42@@)][(27@@[(32@@)][(-1@@)][(42@@)])])])][(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(41@@[(34@@)])])][(24@@[(58@@[(39@@)][(59@@[(42@@)][(32@@)])])][(27@@[(42@@)][(-1@@)][(42@@)])][(37@@[(42@@)][(-1@@)])][(25@@[(27@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])][(34@@)])][(41@@[(34@@)])])])][(41@@)])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(54@@[(60@@[(5@@[(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(57@@)][(42@@)])][(33@@)])])])])][(70@@[(44@@[(74@@[(43@@)][(76@@)])][(42@@)])][(42@@)][(41@@[(11@@[(43@@)][(32@@[(42@@)][(42@@[(42@@)])])])])])][(41@@[(33@@)])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)])])])][(41@@[(33@@)])])])][(41@@[(42@@)])])])]
|
||||
[(31@@[(60@@)][(83@@)][(74@@[(43@@)][(43@@)])][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(25@@[(27@@[(32@@[(42@@)][(32@@)][(42@@[(42@@)])])][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(42@@)])])])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(74@@[(43@@)][(43@@)])][(42@@)][(44@@[(74@@[(43@@)][(43@@)])][(42@@)])][(60@@[(74@@[(43@@)][(43@@)])][(59@@[(42@@)][(33@@)])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)])])])])][(70@@[(44@@[(43@@)][(42@@)])][(42@@)][(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@[(42@@)])])])])])])])][(41@@[(42@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(83@@)][(43@@)][(42@@)])][(43@@)][(60@@[(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@[(42@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(86@@[(21@@[(32@@[(42@@)][(32@@)][(42@@[(42@@)])])])][(41@@[(33@@)])])][(32@@[(42@@[(42@@)])])])])])])])]
|
||||
[(31@@[(42@@)][(44@@[(74@@[(43@@)][(76@@)])][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(83@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])]
|
||||
[(31@@[(44@@[(39@@)][(42@@)])])]
|
||||
[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(43@@)][(41@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(31@@[(83@@)][(83@@)])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@[(42@@)][(9@@)])])])])]
|
||||
[(31@@[(83@@)])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])][(44@@[(43@@)][(42@@)])])]
|
||||
[(31@@[(39@@)][(43@@)][(41@@[(52@@)])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(41@@[(16@@[(27@@[(42@@)][(-1@@)][(33@@)])][(34@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(31@@[(39@@)][(42@@)][(41@@[(27@@[(27@@[(27@@[(42@@)][(-1@@)][(33@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(33@@)])])][(-1@@)][(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])])])])]
|
||||
[(31@@[(83@@)][(39@@)][(42@@)][(43@@)][(54@@[(21@@[(32@@)])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])][(42@@)])])])][(21@@[(32@@)])])])])]
|
||||
[(21@@[(7@@[(14@@[(14@@[(-2@@)][(43@@)][(1@@[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(60@@[(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(27@@[(42@@)][(-1@@)][(45@@)][(32@@[(42@@)][(42@@)])])])])])][(41@@[(42@@)])])])])])])])]
|
||||
[(21@@[(7@@[(27@@[(36@@[(27@@[(27@@[(-1@@)][(32@@[(42@@)][(42@@)])])][(-1@@)][(27@@[(32@@[(42@@)][(42@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])])][(32@@)])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(27@@[(36@@[(16@@[(27@@[(42@@)][(-1@@)][(34@@)])][(27@@[(42@@)][(-1@@)][(42@@)])][(42@@)])])][(-1@@)][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(45@@)][(42@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@[(42@@)][(32@@[(40@@)][(42@@)])])])])])]
|
||||
[(21@@[(32@@[(42@@)][(32@@[(42@@)])][(42@@[(45@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(2@@[(42@@)][(34@@)])][(2@@[(42@@)][(34@@)])][(32@@[(42@@)][(42@@)])][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@[(42@@)][(42@@)])][(32@@)])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)][(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(34@@)])][(27@@[(32@@[(42@@)][(42@@[(34@@)])])][(-1@@)][(32@@[(42@@)][(42@@[(34@@)])])][(34@@)])][(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])][(32@@[(42@@)])][(32@@[(27@@[(45@@)][(-1@@)][(45@@)])])][(42@@)])])])])]
|
||||
[(21@@)]
|
||||
[(21@@[(32@@)][(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(32@@[(42@@)][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@[(42@@)][(14@@[(-2@@)][(43@@)][(14@@[(-2@@)][(43@@)][(45@@)])][(14@@[(-2@@)][(43@@)][(42@@)][(14@@[(-2@@)][(43@@)][(45@@)])])])])])])]
|
||||
[(21@@[(14@@[(-2@@)][(43@@)][(42@@)][(1@@[(31@@[(83@@)][(43@@)][(42@@)][(44@@[(43@@)][(42@@)])][(43@@)][(21@@[(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(45@@)])])])][(41@@[(48@@[(42@@)][(42@@)])])])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(45@@)])])])]
|
||||
[(21@@[(7@@[(27@@[(32@@[(42@@)][(42@@[(22@@[(52@@)][(42@@)])])])][(36@@[(16@@[(27@@[(22@@[(52@@)][(42@@)])][(-1@@)][(33@@)])][(34@@)][(32@@[(22@@)][(42@@)])])])])])])]
|
||||
[(21@@[(7@@[(2@@[(40@@[(42@@)][(42@@)])][(42@@)])][(27@@[(36@@[(27@@[(36@@[(27@@[(2@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])][(-1@@)][(2@@[(40@@[(42@@)][(42@@)])][(42@@)])])])][(-1@@)][(36@@[(27@@[(2@@[(40@@[(42@@)][(42@@)])][(42@@)])][(-1@@)][(36@@[(27@@[(2@@[(42@@)][(42@@)])][(-1@@)][(34@@)])])])])][(36@@[(27@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(-1@@)][(16@@[(36@@[(27@@[(32@@[(42@@)][(32@@)][(42@@)])][(-1@@)][(40@@[(42@@)][(42@@)])])])][(32@@[(42@@[(32@@[(42@@)][(32@@[(34@@)])][(32@@)][(42@@)])])])][(42@@)])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(40@@[(42@@)][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])][(42@@)])])])])]
|
||||
[(21@@[(7@@[(42@@)][(9@@)])])]
|
||||
[(21@@[(32@@[(42@@[(32@@)][(27@@[(32@@[(42@@)][(32@@)][(42@@)])][(-1@@)][(45@@)][(32@@[(42@@)][(32@@)][(42@@)])])])])])]
|
||||
[(21@@[(7@@[(14@@)])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)][(42@@)][(42@@)][(42@@)][(45@@)][(9@@)][(9@@)])])])]
|
||||
[(21@@[(32@@)])]
|
||||
[(21@@[(32@@[(42@@[(14@@[(40@@)][(16@@[(42@@)][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])])])])])])]
|
||||
[(21@@[(32@@[(42@@[(22@@[(42@@)])])])])]
|
||||
[(21@@[(32@@[(42@@)][(42@@[(32@@[(42@@)][(32@@)][(32@@[(42@@)])][(32@@[(42@@)])][(32@@[(45@@)])][(42@@)])])])])]
|
||||
[(21@@[(7@@[(27@@[(38@@[(-1@@)][(42@@)])])][(27@@[(36@@[(27@@[(27@@[(42@@)][(-1@@)][(42@@)])][(-1@@)][(27@@[(-1@@)][(42@@)][(42@@)][(42@@)])])])][(-1@@)][(36@@[(27@@[(42@@)][(-1@@)][(42@@)])])])])])]
|
||||
[(54@@[(21@@[(32@@[(42@@)][(42@@)])])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(41@@[(42@@)])][(12@@[(44@@[(43@@)][(42@@)])][(41@@[(42@@)])])])]
|
||||
[(54@@[(8@@[(25@@[(42@@)][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])]
|
||||
[(54@@[(41@@)][(8@@[(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@)][(21@@)][(8@@)][(41@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(42@@)])])])][(53@@[(42@@)])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])])])]
|
||||
[(54@@[(25@@[(27@@[(62@@[(42@@)][(-3@@)][(43@@)])][(-1@@)][(38@@[(-1@@)][(32@@[(42@@[(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(32@@[(42@@)][(42@@)])])])])])][(41@@[(32@@)])][(8@@[(21@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])]
|
||||
[(54@@)]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(32@@[(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@)][(8@@[(21@@[(32@@[(42@@)][(42@@[(42@@)])])])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(14@@[(-2@@)][(43@@)][(42@@)][(42@@)])])])][(21@@)][(8@@[(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@)])])])])])]
|
||||
[(54@@[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(9@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(40@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(60@@[(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(40@@[(42@@)][(42@@)])][(42@@)][(9@@)])])])])][(25@@[(27@@[(42@@)][(-1@@)][(33@@)])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])][(21@@[(32@@[(42@@)][(42@@[(14@@[(-2@@)][(43@@)][(42@@)])])])])])][(12@@[(44@@[(43@@)][(42@@)])][(53@@[(14@@[(-2@@)][(43@@)][(32@@[(40@@)][(42@@[(42@@)])])])])])])]
|
||||
[(54@@[(21@@[(7@@[(32@@)][(42@@)][(-1@@)])])][(12@@[(44@@[(43@@)][(42@@)])][(25@@[(32@@[(42@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)])][(42@@)])])])])])])]
|
||||
[(54@@[(21@@)][(8@@[(21@@)])])]
|
||||
[(54@@[(58@@[(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(42@@)])])])][(21@@[(32@@[(42@@)][(42@@[(42@@)][(42@@)])])])])]
|
||||
[(54@@[(21@@)][(21@@)])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])])])]
|
||||
[(54@@[(60@@)])]
|
||||
[(54@@[(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(9@@)])])])][(53@@[(42@@)])])][(21@@)])]
|
||||
[(54@@[(12@@[(44@@[(43@@)][(42@@)])])])]
|
||||
[(54@@[(21@@)][(12@@[(44@@[(84@@[(43@@)][(43@@)])][(42@@)])][(21@@[(32@@[(42@@)][(42@@)])])][(53@@[(42@@)])])])]
|
||||
[(54@@[(21@@[(7@@[(42@@)][(-1@@)][(32@@[(52@@)][(42@@)])])])][(12@@[(44@@[(43@@)][(42@@)])][(21@@[(32@@[(42@@)][(42@@[(45@@)][(42@@)])])])][(21@@[(7@@[(22@@[(52@@)][(42@@)])][(-1@@)][(42@@)])])])])]
|
||||
[(6@@[(27@@[(27@@[(42@@)][(-1@@)][(34@@)])][(-1@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(6@@[(36@@[(27@@)])])]
|
||||
[(6@@[(27@@)])]
|
||||
[(6@@[(27@@[(42@@)][(-1@@)][(33@@)])])]
|
||||
[(53@@[(14@@[(45@@)][(27@@[(45@@)][(-1@@)][(32@@[(42@@)][(42@@)])])])])]
|
||||
[(53@@[(14@@[(32@@[(42@@[(27@@[(32@@)][(32@@[(42@@[(32@@[(42@@)][(42@@)])])])])])])])])]
|
||||
[(53@@[(14@@[(27@@[(45@@)][(-1@@)][(42@@)][(45@@)])])])]
|
||||
[(53@@[(14@@[(42@@)][(32@@[(42@@[(42@@)])])])])]
|
||||
[(53@@)]
|
||||
[(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)][(45@@)][(42@@)])])])]
|
||||
[(53@@[(14@@[(-2@@)][(43@@)][(27@@[(45@@)][(-1@@)][(42@@)])])])]
|
||||
[(53@@[(14@@[(27@@[(45@@)])])])]
|
||||
[(53@@[(14@@[(45@@)])])]
|
||||
[(53@@[(42@@)])]
|
||||
[(53@@[(14@@[(27@@[(32@@[(42@@)])])])])]
|
||||
[(23@@[(83@@)][(43@@)][(59@@[(42@@)][(14@@[(-2@@)][(43@@)][(9@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(39@@)][(59@@[(42@@)][(27@@[(42@@)][(-1@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(33@@)])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(5@@[(39@@)])][(59@@[(42@@)][(3@@[(5@@[(39@@)])][(4@@[(34@@)][(34@@)][(34@@)][(34@@)])])])])]
|
||||
[(23@@[(59@@[(27@@[(45@@)][(45@@)][(45@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(74@@[(43@@)][(76@@)])])])])])]
|
||||
[(23@@)]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(57@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(14@@[(-2@@)][(43@@)][(40@@[(42@@)][(42@@)])][(40@@[(42@@)][(42@@)])][(9@@)])][(32@@)][(42@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(83@@)][(39@@)][(59@@[(42@@)][(42@@)])])]
|
||||
[(23@@[(59@@[(14@@[(45@@)])])])]
|
||||
[(23@@[(83@@)][(83@@)][(74@@[(43@@)][(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)][(43@@)])])])])]
|
||||
[(23@@[(43@@)][(39@@)])]
|
||||
[(23@@[(83@@)][(83@@)][(43@@)][(59@@[(42@@)][(32@@[(42@@)][(42@@[(32@@[(57@@)][(42@@)])])])])])]
|
||||
[(23@@[(83@@)])]
|
||||
[(23@@[(59@@[(32@@[(32@@[(14@@[(-2@@)][(43@@)][(34@@)][(40@@[(42@@)][(42@@)])][(9@@)][(9@@)])])])])])]
|
||||
[(23@@[(59@@[(32@@[(32@@[(45@@)])])])])]
|
||||
[(23@@[(83@@)][(74@@[(43@@)][(43@@)][(43@@)])][(59@@[(42@@)][(14@@[(-2@@)][(74@@[(43@@)][(43@@)][(43@@)])])])])]
|
||||
@@ -107,8 +107,51 @@
|
||||
<version>4.11</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core -->
|
||||
<dependency>
|
||||
<groupId>org.apache.lucene</groupId>
|
||||
<artifactId>lucene-core</artifactId>
|
||||
<version>4.8.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-common -->
|
||||
<dependency>
|
||||
<groupId>org.apache.lucene</groupId>
|
||||
<artifactId>lucene-analyzers-common</artifactId>
|
||||
<version>4.8.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-math3</artifactId>
|
||||
<version>3.6.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
|
||||
<dependency>
|
||||
<groupId>com.thoughtworks.xstream</groupId>
|
||||
<artifactId>xstream</artifactId>
|
||||
<version>1.3.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.redisson</groupId>
|
||||
<artifactId>redisson</artifactId>
|
||||
<version>3.3.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jetty</groupId>
|
||||
<artifactId>jetty-util</artifactId>
|
||||
<version>9.4.4.v20170414</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
@@ -149,3 +192,8 @@
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
<!--edu.lu.uni.serval.fixminer.Launcher
|
||||
edu.lu.uni.serval.fixminer.akka.compare.CompareTrees
|
||||
edu.lu.uni.serval.utils.ClusterToPattern
|
||||
-->
|
||||
|
||||
Regular → Executable
+3
-2
@@ -71,14 +71,15 @@ public class Launcher {
|
||||
pairsPath = datasetPath + "/pairs";
|
||||
dumpsName = "dumps-"+pjName+".rdb";
|
||||
int iCursor = Integer.valueOf(cursor);
|
||||
// jobType = "CACHE";
|
||||
|
||||
try {
|
||||
switch (jobType) {
|
||||
case "ENHANCEDASTDIFF":
|
||||
EnhancedASTDiff.main(gumInput, gumOutput, numOfWorkers, pjName, eDiffTimeout,actionType,parallelism);
|
||||
EnhancedASTDiff.main(gumInput, gumOutput, numOfWorkers, pjName, eDiffTimeout,actionType,parallelism,portDumps, dbDir, actionType+dumpsName);
|
||||
break;
|
||||
case "CACHE":
|
||||
StoreEDiffInCache.main(gumOutput, portDumps, dbDir, actionType+dumpsName,actionType);
|
||||
StoreEDiffInCache.main(gumOutput, portDumps, dbDir, actionType+dumpsName);
|
||||
break;
|
||||
case "SI":
|
||||
// CalculatePairs.main(dbDir, actionType+dumpsName, portDumps, pairsPath+actionType, pjName+actionType,isBigPair,iCursor);
|
||||
|
||||
Regular → Executable
+2
-1
@@ -22,7 +22,8 @@ public class TestTreeLoader {
|
||||
|
||||
|
||||
// String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput/ENTESB/ASTDumps";
|
||||
String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput2/";
|
||||
// String inputPath = "/Users/anilkoyuncu/bugStudy/dataset/GumTreeOutput2/";
|
||||
String inputPath ="/Users/anil.koyuncu/projects/fixminer-all/enhancedASTDiff/python/data/EnhancedASTDiffgumInput-old/AssertStatement";
|
||||
File folder = new File(inputPath);
|
||||
File[] listOfFiles = folder.listFiles();
|
||||
Stream<File> stream = Arrays.stream(listOfFiles);
|
||||
|
||||
Regular → Executable
@@ -0,0 +1,601 @@
|
||||
package edu.lu.uni.serval.fixminer.akka;
|
||||
|
||||
//Import the Java utility classes
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
||||
import java.io.FileReader;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
//Import the Apache Commons Maths library classes to handle the term-vectors from Apache Lucene
|
||||
|
||||
import org.apache.commons.math3.linear.ArrayRealVector;
|
||||
|
||||
import org.apache.commons.math3.linear.RealVector;
|
||||
|
||||
//Import the Apache Lucene classes
|
||||
|
||||
import org.apache.lucene.analysis.Analyzer;
|
||||
|
||||
import org.apache.lucene.analysis.core.SimpleAnalyzer;
|
||||
|
||||
import org.apache.lucene.document.Document;
|
||||
|
||||
import org.apache.lucene.document.Field;
|
||||
|
||||
import org.apache.lucene.document.FieldType;
|
||||
|
||||
import org.apache.lucene.index.AtomicReader;
|
||||
|
||||
import org.apache.lucene.index.DirectoryReader;
|
||||
|
||||
import org.apache.lucene.index.DocsEnum;
|
||||
|
||||
import org.apache.lucene.index.IndexReader;
|
||||
|
||||
import org.apache.lucene.index.IndexWriter;
|
||||
|
||||
import org.apache.lucene.index.IndexWriterConfig;
|
||||
|
||||
import org.apache.lucene.index.MultiFields;
|
||||
|
||||
import org.apache.lucene.index.Term;
|
||||
|
||||
import org.apache.lucene.index.Terms;
|
||||
|
||||
import org.apache.lucene.index.TermsEnum;
|
||||
|
||||
import org.apache.lucene.search.similarities.DefaultSimilarity;
|
||||
|
||||
import org.apache.lucene.search.similarities.TFIDFSimilarity;
|
||||
|
||||
import org.apache.lucene.store.Directory;
|
||||
|
||||
import org.apache.lucene.store.RAMDirectory;
|
||||
|
||||
import org.apache.lucene.util.Bits;
|
||||
|
||||
import org.apache.lucene.util.BytesRef;
|
||||
|
||||
import org.apache.lucene.util.Version;
|
||||
|
||||
|
||||
|
||||
import com.thoughtworks.xstream.core.util.Fields;
|
||||
|
||||
|
||||
|
||||
//A class to find the similarity of all text documents referenced in a text file
|
||||
|
||||
public class DocumentSimilarity {
|
||||
|
||||
private static final String CONTENT = "Content"; /*the name of the field stored by Apache Lucene which includes the text from the
|
||||
|
||||
text documents.*/
|
||||
|
||||
private Set<String> terms = new HashSet<>(); //changed state with new terms after each call to getTermFrequencies() method
|
||||
|
||||
|
||||
|
||||
private ArrayList<Integer> directoryIndex; //The Apache Lucene index for documents to mine for similarities
|
||||
|
||||
/* Indexed, tokenized, stored. */
|
||||
|
||||
public final FieldType TYPE_STORED = new FieldType(); //This is the field profiled by Apache Lucene to collect its term frequencies
|
||||
|
||||
private HashMap<String,Integer> termsCount; //stores the counts of all terms found in the corpus
|
||||
|
||||
private ArrayList<Integer> scannedDocs; //stores the IDs of docs already scanned and stored in termsCount
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DocumentSimilarity(String lookupFile) {
|
||||
|
||||
//Initialise the field to profile in each document
|
||||
|
||||
TYPE_STORED.setIndexed(true);
|
||||
|
||||
TYPE_STORED.setTokenized(true);
|
||||
|
||||
TYPE_STORED.setStored(true);
|
||||
|
||||
TYPE_STORED.setStoreTermVectors(true);
|
||||
|
||||
TYPE_STORED.setStoreTermVectorPositions(true);
|
||||
|
||||
TYPE_STORED.freeze();
|
||||
|
||||
|
||||
|
||||
termsCount = new HashMap<String,Integer>();
|
||||
|
||||
scannedDocs = new ArrayList<Integer>();
|
||||
|
||||
|
||||
|
||||
try {
|
||||
|
||||
//initialise an in-memory (RAM-based) index of the documents in the input folder using Apache Lucene
|
||||
|
||||
Directory directory = createIndex(lookupFile);
|
||||
|
||||
IndexReader reader = DirectoryReader.open(directory);
|
||||
|
||||
|
||||
|
||||
String outputFile = "C:/Users/default/test/docs_similarity.csv"; /* the output file where the document similarities will be stored */
|
||||
|
||||
PrintWriter writer;
|
||||
|
||||
writer = new PrintWriter(outputFile, "UTF-8");
|
||||
|
||||
writer.println("doc1,doc2,similarity");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//loop on the documents in the folder and compare them together
|
||||
|
||||
for (int i=0; i<directoryIndex.size(); i++) {
|
||||
|
||||
for (int j=i+1; j<directoryIndex.size(); j++) {
|
||||
|
||||
Map<String, Double> f1 = getTermFrequencies(reader, i); //get the term frequencies profile of the first document
|
||||
|
||||
RealVector v1 = toRealVector(f1); //convert term frequencies profile to a vector
|
||||
|
||||
Map<String, Double> f2 = getTermFrequencies2(reader, j); //get the term frequencies profile of the second document
|
||||
|
||||
RealVector v2 = toRealVector(f2); //convert term frequencies profile to a vector
|
||||
|
||||
double sim = getCosineSimilarity(v1, v2); //compute the cosine similarity of the documents pair using their terms frequencies profiles
|
||||
|
||||
writer.println(directoryIndex.get(i)+","+directoryIndex.get(j)+","+sim); //write the similarity to an output CSV file
|
||||
|
||||
}
|
||||
|
||||
terms = new HashSet<>();
|
||||
|
||||
}
|
||||
|
||||
reader.close();
|
||||
|
||||
writer.close();
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
writeTermsCount();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//A method to initialise an in-memory (RAM-based) index of the documents in the input file using Apache Lucene
|
||||
|
||||
Directory createIndex(String lookupFile) {
|
||||
|
||||
try {
|
||||
|
||||
Directory directory = new RAMDirectory();
|
||||
|
||||
|
||||
|
||||
/* Initialize the analyzer which profiles the text inside the documents. This analyser does all the pre-processing of the
|
||||
|
||||
* text including stop-word removal, tokenization, etc. depending on the type of analyzer used.
|
||||
|
||||
* Check the reference website for different types of analyzers: https://www.tutorialspoint.com/lucene/lucene_analysis.htm
|
||||
|
||||
*/
|
||||
|
||||
Analyzer analyzer = new SimpleAnalyzer(Version.LUCENE_CURRENT); //create a new SimpleAnalyzer
|
||||
|
||||
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_CURRENT,
|
||||
|
||||
analyzer);
|
||||
|
||||
IndexWriter writer = new IndexWriter(directory, iwc); //write the index of the documents with their analysis in-memory
|
||||
|
||||
|
||||
|
||||
int did=1; //documents are numbered by a document ID as 1,2,3...n in a lookup file of the documents to be indexed
|
||||
|
||||
BufferedReader dsLookup;
|
||||
|
||||
dsLookup = new BufferedReader(new FileReader(lookupFile));
|
||||
|
||||
String ds; //The document number in each line
|
||||
|
||||
|
||||
|
||||
ArrayList<Integer> directoryIndex = new ArrayList<Integer>();
|
||||
|
||||
|
||||
|
||||
while ((ds = dsLookup.readLine()) != null) {
|
||||
|
||||
//Set the document id to the string read from the line in lookup file
|
||||
|
||||
try {
|
||||
|
||||
|
||||
|
||||
String documentText = ""; //stores the text from the document
|
||||
|
||||
|
||||
|
||||
FileReader fr = new FileReader(did+".txt");
|
||||
|
||||
BufferedReader br = new BufferedReader(fr);
|
||||
|
||||
String sCurrentLine;
|
||||
|
||||
while ((sCurrentLine = br.readLine()) != null) {
|
||||
|
||||
documentText += (sCurrentLine);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//add the document to the index
|
||||
|
||||
addDocument(writer, documentText);
|
||||
|
||||
directoryIndex.add(did);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
System.out.println("!!! Document "+did+" has an error and was skipped !!!");
|
||||
|
||||
continue;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
writer.close();
|
||||
|
||||
this.directoryIndex = directoryIndex;
|
||||
|
||||
return directory;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//a method to add a document to the index by writing its text as a "content" field in Apache Lucene
|
||||
|
||||
void addDocument(IndexWriter writer, String content) {
|
||||
|
||||
try {
|
||||
|
||||
Document doc = new Document(); //create a new Apache Lucene document
|
||||
|
||||
Field field = new Field(CONTENT, content, TYPE_STORED); //Add the field with the text content to the index
|
||||
|
||||
doc.add(field);
|
||||
|
||||
writer.addDocument(doc);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//a method to get the cosine similarity between two term-frequency vectors from a pair of documents
|
||||
|
||||
public double getCosineSimilarity(RealVector v1, RealVector v2) {
|
||||
|
||||
return (v1.dotProduct(v2)) / (v1.getNorm() * v2.getNorm());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//a method to get the term frequencies from a document
|
||||
|
||||
Map<String, Double> getTermFrequencies(IndexReader reader, int docId) {
|
||||
|
||||
try {
|
||||
|
||||
Terms vector = reader.getTermVector(docId, CONTENT);
|
||||
|
||||
TermsEnum termsEnum = null;
|
||||
|
||||
termsEnum = vector.iterator(termsEnum);
|
||||
|
||||
Map<String, Double> frequencies = new HashMap<>();
|
||||
|
||||
BytesRef text = null;
|
||||
|
||||
TFIDFSimilarity tfidfSim = new DefaultSimilarity();
|
||||
|
||||
boolean scannedDoc = scannedDocs.contains(docId);
|
||||
|
||||
|
||||
|
||||
while ((text = termsEnum.next()) != null) {
|
||||
|
||||
String term = text.utf8ToString();
|
||||
|
||||
org.apache.lucene.index.Fields fields = reader.getTermVectors(0);
|
||||
|
||||
Term termInstance = new Term("Content", term);
|
||||
|
||||
long indexDf = reader.docFreq(termInstance);
|
||||
|
||||
int docCount = reader.numDocs();
|
||||
|
||||
|
||||
|
||||
//increment the term count in the terms count lookup if doc not scanned before
|
||||
|
||||
if(!scannedDoc) {
|
||||
|
||||
if(termsCount.containsKey(termInstance.toString())) {
|
||||
|
||||
Integer cnt = termsCount.get(termInstance.toString());
|
||||
|
||||
cnt++;
|
||||
|
||||
termsCount.replace(termInstance.toString(), cnt);
|
||||
|
||||
} else {
|
||||
|
||||
termsCount.put(termInstance.toString(), 1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DocsEnum docs = termsEnum.docs(MultiFields.getLiveDocs(reader),null,0);
|
||||
|
||||
|
||||
|
||||
//calculate the TF-IDF of the term, as compared to all documents in the corpus (the Apache Lucene Index)
|
||||
|
||||
double tfidf = 0.0;
|
||||
|
||||
while(docs.nextDoc() != DocsEnum.NO_MORE_DOCS) {
|
||||
|
||||
tfidf = tfidfSim.tf(docs.freq()) * tfidfSim.idf(docCount, indexDf);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
frequencies.put(term, tfidf);
|
||||
|
||||
scannedDocs.add(docId);
|
||||
|
||||
terms.add(term);
|
||||
|
||||
}
|
||||
|
||||
return frequencies;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Map<String, Double> getTermFrequencies2(IndexReader reader, int docId) {
|
||||
|
||||
try {
|
||||
|
||||
Terms vector = reader.getTermVector(docId, CONTENT);
|
||||
|
||||
TermsEnum termsEnum = null;
|
||||
|
||||
termsEnum = vector.iterator(termsEnum);
|
||||
|
||||
Map<String, Double> frequencies = new HashMap<>();
|
||||
|
||||
BytesRef text = null;
|
||||
|
||||
TFIDFSimilarity tfidfSim = new DefaultSimilarity();
|
||||
|
||||
boolean scannedDoc = scannedDocs.contains(docId);
|
||||
|
||||
int docCount = reader.numDocs();
|
||||
|
||||
|
||||
|
||||
while ((text = termsEnum.next()) != null) {
|
||||
|
||||
String term = text.utf8ToString();
|
||||
|
||||
Term termInstance = new Term("Content", term);
|
||||
|
||||
long indexDf = reader.docFreq(termInstance);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//increment the term count in the terms count lookup if doc not scanned before
|
||||
|
||||
if(!scannedDoc) {
|
||||
|
||||
if(termsCount.containsKey(termInstance.toString())) {
|
||||
|
||||
Integer cnt = termsCount.get(termInstance.toString());
|
||||
|
||||
cnt++;
|
||||
|
||||
termsCount.replace(termInstance.toString(), cnt);
|
||||
|
||||
} else {
|
||||
|
||||
termsCount.put(termInstance.toString(), 1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
DocsEnum docs = termsEnum.docs(MultiFields.getLiveDocs(reader),null,0);
|
||||
|
||||
double tfidf = 0.0;
|
||||
|
||||
while(docs.nextDoc() != DocsEnum.NO_MORE_DOCS) {
|
||||
|
||||
tfidf = tfidfSim.tf(docs.freq()) * tfidfSim.idf(docCount, indexDf);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
frequencies.put(term, tfidf);
|
||||
|
||||
scannedDocs.add(docId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
return frequencies;
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//convert the term-frequencies extracted to a real vector
|
||||
|
||||
RealVector toRealVector(Map<String, Double> map) {
|
||||
|
||||
RealVector vector = new ArrayRealVector(terms.size());
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (String term : terms) {
|
||||
|
||||
double value = map.containsKey(term) ? map.get(term) : 0.0;
|
||||
|
||||
vector.setEntry(i++, value);
|
||||
|
||||
}
|
||||
|
||||
return (RealVector) vector.mapDivide(vector.getL1Norm());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//Write the terms-frequencies from the documents to a CSV file
|
||||
|
||||
private void writeTermsCount() {
|
||||
|
||||
try {
|
||||
|
||||
String outputFile = "C:/Users/default/test/document_terms_count.csv";
|
||||
|
||||
PrintWriter writer;
|
||||
|
||||
writer = new PrintWriter(outputFile, "UTF-8");
|
||||
|
||||
writer.println("term,count");
|
||||
|
||||
|
||||
|
||||
for (String key : termsCount.keySet()) {
|
||||
|
||||
writer.println(key+","+termsCount.get(key));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
writer.close();
|
||||
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//MAIN class to execute with the .txt-file lookup of the documents to index
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
new DocumentSimilarity("documents_lookup.txt");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Regular → Executable
+45
-14
@@ -26,19 +26,19 @@ public class AkkaTreeParser {
|
||||
|
||||
switch (parallelism){
|
||||
case "AKKA":
|
||||
ActorSystem system = null;
|
||||
ActorRef parsingActor = null;
|
||||
final TreeMessage msg = new TreeMessage(0,listOfPairs, innerPool,outerPool,eDiffTimeout);
|
||||
try {
|
||||
log.info("Akka begins...");
|
||||
system = ActorSystem.create("Compare-EnhancedDiff-System");
|
||||
|
||||
parsingActor = system.actorOf(TreeActor.props(Integer.valueOf(numOfWorkers)), "mine-fix-pattern-actor");
|
||||
parsingActor.tell(msg, ActorRef.noSender());
|
||||
} catch (Exception e) {
|
||||
system.shutdown();
|
||||
e.printStackTrace();
|
||||
}
|
||||
// ActorSystem system = null;
|
||||
// ActorRef parsingActor = null;
|
||||
// final TreeMessage msg = new TreeMessage(0,listOfPairs, innerPool,outerPool,eDiffTimeout);
|
||||
// try {
|
||||
// log.info("Akka begins...");
|
||||
// system = ActorSystem.create("Compare-EnhancedDiff-System");
|
||||
//
|
||||
// parsingActor = system.actorOf(TreeActor.props(Integer.valueOf(numOfWorkers)), "mine-fix-pattern-actor");
|
||||
// parsingActor.tell(msg, ActorRef.noSender());
|
||||
// } catch (Exception e) {
|
||||
// system.shutdown();
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
break;
|
||||
case "FORKJOIN":
|
||||
int counter = new Object() {
|
||||
@@ -70,6 +70,15 @@ public class AkkaTreeParser {
|
||||
|
||||
|
||||
|
||||
}
|
||||
public static List<String> getRMessages(JedisPool innerPool, int cursor){
|
||||
try (Jedis inner = innerPool.getResource()) {
|
||||
while (!inner.ping().equals("PONG")){
|
||||
log.info("wait");
|
||||
}
|
||||
List<String> pairs = inner.srandmember("pairs", cursor);
|
||||
return pairs;
|
||||
}
|
||||
}
|
||||
|
||||
public static List<String> getMessages(JedisPool innerPool, int cursor){
|
||||
@@ -81,7 +90,6 @@ public class AkkaTreeParser {
|
||||
while (!inner.ping().equals("PONG")){
|
||||
log.info("wait");
|
||||
}
|
||||
|
||||
ScanParams sc = new ScanParams();
|
||||
//150000000
|
||||
log.info("Scanning ");
|
||||
@@ -91,6 +99,7 @@ public class AkkaTreeParser {
|
||||
// sc.match("pair_[0-9]*");
|
||||
|
||||
scan = inner.scan("0", sc);
|
||||
|
||||
int size = scan.getResult().size();
|
||||
log.info("Scanned " + String.valueOf(size));
|
||||
}
|
||||
@@ -102,5 +111,27 @@ public class AkkaTreeParser {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static String getMessage(JedisPool innerPool){
|
||||
|
||||
|
||||
ScanResult<String> scan;
|
||||
|
||||
try (Jedis inner = innerPool.getResource()) {
|
||||
while (!inner.ping().equals("PONG")){
|
||||
log.info("wait");
|
||||
}
|
||||
|
||||
String myset = inner.spop("pairs");
|
||||
return myset;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
Regular → Executable
+289
-150
@@ -1,22 +1,29 @@
|
||||
package edu.lu.uni.serval.fixminer.akka.compare;
|
||||
|
||||
import akka.actor.ActorRef;
|
||||
import akka.actor.ActorSystem;
|
||||
import com.github.gumtreediff.actions.ActionGenerator;
|
||||
import com.github.gumtreediff.actions.model.Action;
|
||||
import com.github.gumtreediff.matchers.Matcher;
|
||||
import com.github.gumtreediff.matchers.Matchers;
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.typesafe.config.Config;
|
||||
import com.typesafe.config.ConfigFactory;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.utils.CallShell;
|
||||
import edu.lu.uni.serval.utils.EDiffHelper;
|
||||
import edu.lu.uni.serval.utils.PoolBuilder;
|
||||
import org.apache.commons.text.similarity.JaroWinklerDistance;
|
||||
import org.javatuples.Pair;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static edu.lu.uni.serval.fixminer.jobs.MultiThreadTreeLoaderCluster3.getNames;
|
||||
|
||||
@@ -29,168 +36,300 @@ public class CompareTrees {
|
||||
private static Logger log = LoggerFactory.getLogger(CompareTrees.class);
|
||||
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
|
||||
|
||||
String portInner = "6380";
|
||||
String port = "6399";
|
||||
CallShell cs = new CallShell();
|
||||
String cmd = "bash "+args[1] + "/" + "startServer.sh" +" %s %s %s";
|
||||
cmd = String.format(cmd, args[1],args[2],Integer.valueOf(port));
|
||||
log.info(cmd);
|
||||
cs.runShell(cmd, port);
|
||||
|
||||
String cmdInner = "bash "+args[1] + "/" + "startServer.sh" +" %s %s %s";
|
||||
cmdInner = String.format(cmdInner, args[1],args[3],Integer.valueOf(portInner));
|
||||
log.info(cmdInner);
|
||||
cs.runShell(cmdInner, portInner);
|
||||
|
||||
String numOfWorkers = "100000000";//args[4];
|
||||
String host = "localhost";//args[5];
|
||||
// -Djava.util.concurrent.ForkJoinPool.common.parallelism=256
|
||||
|
||||
final JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(portInner),20000000);
|
||||
|
||||
final JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), host,Integer.valueOf(port),20000000);
|
||||
|
||||
List<String> listOfPairs = AkkaTreeParser.getMessages(innerPool,Integer.valueOf(numOfWorkers));
|
||||
|
||||
// String pair = AkkaTreeParser.getMessage(innerPool);
|
||||
|
||||
|
||||
|
||||
// ActorSystem system = null;
|
||||
// ActorRef parsingActor = null;
|
||||
// final TreeMessage msg = new TreeMessage(0,listOfPairs, innerPool,outerPool,timeout,args[0]);
|
||||
// try {
|
||||
// log.info("Akka begins...");
|
||||
// Config load = ConfigFactory.load();
|
||||
// system = ActorSystem.create("Compare-EnhancedDiff-System");
|
||||
//
|
||||
JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000);
|
||||
|
||||
JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000);
|
||||
|
||||
List<String> listOfPairs = AkkaTreeParser.getMessages(innerPool,100000000);
|
||||
// listOfPairs.stream().parallel().
|
||||
|
||||
int counter = new Object() {
|
||||
int counter = 0;
|
||||
|
||||
{
|
||||
|
||||
listOfPairs.parallelStream().
|
||||
peek(x -> counter++).
|
||||
forEach(m ->
|
||||
{
|
||||
// Compare compare = new Compare();
|
||||
coreCompare(m, args[0],innerPool, outerPool);
|
||||
if (counter % 1000 == 0) {
|
||||
log.info("Finalized parsing " + counter + " files... remaing " + (listOfPairs.size() - counter));
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}.counter;
|
||||
// coreCompare(args[0],args[1],args[2],args[3]);
|
||||
}
|
||||
public static void coreCompare(String pairName, String treeType,JedisPool innerPool,JedisPool outerPool ) {
|
||||
|
||||
|
||||
// String portInner = "6380";
|
||||
// String port = "6399";
|
||||
|
||||
// JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000);
|
||||
// parsingActor = system.actorOf(TreeActor.props(Integer.valueOf(numOfWorkers)), "mine-fix-pattern-actor");
|
||||
// parsingActor.tell(msg, ActorRef.noSender());
|
||||
// } catch (Exception e) {
|
||||
// system.shutdown();
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// try {
|
||||
// coreCompare(pair, args[0], innerPool, outerPool);
|
||||
// } catch (Exception e) {
|
||||
// try (Jedis inner = innerPool.getResource()) {
|
||||
//
|
||||
// JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000);
|
||||
|
||||
Map<String, String> resultMap;
|
||||
Jedis jedis = null;
|
||||
ITree oldTree = null;
|
||||
ITree newTree = null;
|
||||
|
||||
try {
|
||||
jedis = innerPool.getResource();
|
||||
|
||||
String[] split = pairName.split("_");
|
||||
|
||||
|
||||
String i = split[1];
|
||||
String j = split[2];
|
||||
String keyName = split[0];
|
||||
|
||||
switch (treeType) {
|
||||
case "shape":
|
||||
oldTree = EDiffHelper.getShapes(keyName, i, outerPool);
|
||||
newTree = EDiffHelper.getShapes(keyName, j, outerPool);
|
||||
break;
|
||||
case "action":
|
||||
oldTree = EDiffHelper.getActions(keyName, i, outerPool,innerPool);
|
||||
newTree = EDiffHelper.getActions(keyName, j, outerPool,innerPool);
|
||||
break;
|
||||
case "token":
|
||||
oldTree = EDiffHelper.getTokens(keyName, i, outerPool,innerPool);
|
||||
newTree = EDiffHelper.getTokens(keyName, j, outerPool,innerPool);
|
||||
List<String> oldTokens = new ArrayList<>();
|
||||
List<String> newTokens = new ArrayList<>();
|
||||
// inner.sadd("pairs",pair);
|
||||
//
|
||||
//
|
||||
// }
|
||||
// }
|
||||
ArrayList<String> samePairs = new ArrayList<>();
|
||||
ArrayList<String> errorPairs = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
listOfPairs.stream().parallel().forEach(m->coreCompare(m, args[0],innerPool, outerPool,samePairs,errorPairs));
|
||||
|
||||
oldTokens = getNames(oldTree,oldTokens);
|
||||
newTokens = getNames(newTree,newTokens);
|
||||
|
||||
|
||||
CharSequence[] oldSequences = oldTokens.toArray(new CharSequence[oldTokens.size()]);
|
||||
CharSequence[] newSequences = newTokens.toArray(new CharSequence[newTokens.size()]);
|
||||
JaroWinklerDistance jwd = new JaroWinklerDistance();
|
||||
|
||||
Double overallSimi = Double.valueOf(0);
|
||||
if(oldSequences.length > 0 && (oldSequences.length == newSequences.length)){
|
||||
for (int idx = 0; idx < newSequences.length; idx++) {
|
||||
Double simi = jwd.apply(newSequences[idx], oldSequences[idx]);
|
||||
overallSimi = simi + overallSimi;
|
||||
}
|
||||
overallSimi = overallSimi / oldSequences.length;
|
||||
}else{
|
||||
overallSimi = Double.valueOf(0);
|
||||
// if(oldSequences.length != 0) {
|
||||
// log.info("ERROR");
|
||||
// }
|
||||
}
|
||||
|
||||
int retval = Double.compare(overallSimi, Double.valueOf(0.8));
|
||||
String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j);
|
||||
if(retval >= 0){
|
||||
|
||||
|
||||
|
||||
String result = i + "," + j + ","+String.join(",", oldTokens);
|
||||
jedis.select(2);
|
||||
jedis.set(matchKey, result);
|
||||
}
|
||||
jedis.select(0);
|
||||
jedis.del(matchKey);
|
||||
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree);
|
||||
m.match();
|
||||
|
||||
|
||||
ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings());
|
||||
ag.generate();
|
||||
List<Action> actions = ag.getActions();
|
||||
|
||||
double chawatheSimilarity1 = m.chawatheSimilarity(oldTree, newTree);
|
||||
String chawatheSimilarity = String.format("%1.2f", chawatheSimilarity1);
|
||||
double diceSimilarity1 = m.diceSimilarity(oldTree, newTree);
|
||||
String diceSimilarity = String.format("%1.2f", diceSimilarity1);
|
||||
double jaccardSimilarity1 = m.jaccardSimilarity(oldTree, newTree);
|
||||
String jaccardSimilarity = String.format("%1.2f", jaccardSimilarity1);
|
||||
|
||||
String editDistance = String.valueOf(actions.size());
|
||||
|
||||
String result = i + "," + j + "," + chawatheSimilarity + "," + diceSimilarity + "," + jaccardSimilarity + "," + editDistance;
|
||||
|
||||
String matchKey = keyName+"_" + (String.valueOf(i)) + "_" + String.valueOf(j);
|
||||
|
||||
if (((Double) chawatheSimilarity1).equals(1.0) || ((Double) diceSimilarity1).equals(1.0)
|
||||
|| ((Double) jaccardSimilarity1).equals(1.0) || actions.size() == 0) {
|
||||
// log.info("{} tagged to be similar" ,matchKey);
|
||||
|
||||
jedis.select(2);
|
||||
jedis.set(matchKey, result);
|
||||
|
||||
}
|
||||
|
||||
// int size = samePairs.size();
|
||||
try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.select(2);
|
||||
// for (String samePair : samePairs) {
|
||||
// jedis.set(samePair,"1");
|
||||
// }
|
||||
|
||||
jedis.select(0);
|
||||
jedis.del(matchKey);
|
||||
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
log.debug("{} not comparable", pairName);
|
||||
// e.printStackTrace();
|
||||
|
||||
|
||||
}finally {
|
||||
if (jedis != null) {
|
||||
jedis.close();
|
||||
jedis.flushDB();
|
||||
for (String errorPair : errorPairs) {
|
||||
jedis.hset(errorPair, "0", "1");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
log.info("End process");
|
||||
// listOfPairs.parallelStream().forEach(m->coreCompare(m, args[0],innerPool, outerPool));
|
||||
|
||||
// for (String listOfPair : listOfPairs) {
|
||||
// coreCompare(listOfPair, args[0],innerPool, outerPool);
|
||||
// }
|
||||
|
||||
|
||||
// int counter = new Object() {
|
||||
// int counter = 0;
|
||||
//
|
||||
// {
|
||||
//
|
||||
// listOfPairs.parallelStream().
|
||||
// peek(x -> counter++).
|
||||
// forEach(m ->
|
||||
// {
|
||||
//// Compare compare = new Compare();
|
||||
// coreCompare(m, args[0],innerPool, outerPool);
|
||||
// if (counter % 1000 == 0) {
|
||||
// log.info("Finalized parsing " + counter + " files... remaing " + (listOfPairs.size() - counter));
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
// }
|
||||
// }.counter;
|
||||
// coreCompare(args[0],args[1],args[2],args[3]);
|
||||
}
|
||||
public static void coreCompare(String pairName, String treeType,JedisPool innerPool,JedisPool outerPool,ArrayList<String> samePairs,ArrayList<String> errorPairs ) {
|
||||
|
||||
// if (samePairs.size() % 1000 == 0) {
|
||||
// log.info("Same pairs size "+samePairs.size());
|
||||
// }
|
||||
|
||||
ITree oldTree = null;
|
||||
ITree newTree = null;
|
||||
Pair<ITree, HierarchicalActionSet> oldPair = null;
|
||||
Pair<ITree, HierarchicalActionSet> newPair = null;
|
||||
String matchKey = null;
|
||||
|
||||
try {
|
||||
|
||||
String[] split = pairName.split("_");
|
||||
|
||||
|
||||
String i = split[1];
|
||||
String j = split[2];
|
||||
String keyName = split[0];
|
||||
matchKey = keyName + "_" + (String.valueOf(i)) + "_" + String.valueOf(j);
|
||||
// jedis.select(0);
|
||||
// Set<String> keys = jedis.keys(matchKey);
|
||||
// if (keys.size() > 0) {
|
||||
// jedis.del(matchKey);
|
||||
// } else {
|
||||
// return;
|
||||
// }
|
||||
// jedis.srem("pairs",matchKey);
|
||||
|
||||
switch (treeType) {
|
||||
case "shape":
|
||||
oldTree = EDiffHelper.getShapes(keyName, i, outerPool, innerPool);
|
||||
newTree = EDiffHelper.getShapes(keyName, j, outerPool, innerPool);
|
||||
break;
|
||||
case "action":
|
||||
oldPair = EDiffHelper.getActions(keyName, i, outerPool, innerPool);
|
||||
newPair = EDiffHelper.getActions(keyName, j, outerPool, innerPool);
|
||||
oldTree = oldPair.getValue0();
|
||||
newTree = newPair.getValue0();
|
||||
|
||||
|
||||
break;
|
||||
case "token":
|
||||
oldTree = EDiffHelper.getTokens(keyName, i, outerPool, innerPool);
|
||||
newTree = EDiffHelper.getTokens(keyName, j, outerPool, innerPool);
|
||||
|
||||
String oldTokens = EDiffHelper.getNames2(oldTree);
|
||||
String newTokens = EDiffHelper.getNames2(newTree);
|
||||
|
||||
JaroWinklerDistance jwd = new JaroWinklerDistance();
|
||||
|
||||
|
||||
Double overallSimi = Double.valueOf(0);
|
||||
|
||||
if (!(oldTokens.trim().isEmpty() || newTokens.trim().isEmpty())) {
|
||||
overallSimi = jwd.apply(oldTokens, newTokens);
|
||||
|
||||
}
|
||||
|
||||
|
||||
int retval = Double.compare(overallSimi, Double.valueOf(1));
|
||||
|
||||
if (retval >= 0) {
|
||||
String result = i + "," + j + "," + String.join(",", oldTokens);
|
||||
// jedis.select(2);
|
||||
// jedis.set(matchKey, result);
|
||||
try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.del(matchKey);
|
||||
jedis.select(2);
|
||||
jedis.set(matchKey, result);
|
||||
}
|
||||
// samePairs.add(matchKey);
|
||||
// try (Jedis jedis = innerPool.getResource()) {
|
||||
//// jedis.del(matchKey);
|
||||
// jedis.select(2);
|
||||
// jedis.set(matchKey, result);
|
||||
// }
|
||||
}
|
||||
// jedis.select(0);
|
||||
//// jedis.srem("pairs",matchKey);
|
||||
// jedis.del(matchKey);
|
||||
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(oldTree.toStaticHashString().equals(newTree.toStaticHashString())){
|
||||
String editDistance = "0";
|
||||
String result = i + "," + j + "," + editDistance;
|
||||
if (editDistance.equals("0")) {
|
||||
|
||||
if (treeType.equals("action")) {
|
||||
HierarchicalActionSet oldProject = oldPair.getValue1();
|
||||
HierarchicalActionSet newProject = newPair.getValue1();
|
||||
|
||||
oldTree = EDiffHelper.getTargets(oldProject);
|
||||
newTree = EDiffHelper.getTargets(newProject);
|
||||
if (oldTree.toStaticHashString().equals(newTree.toStaticHashString())) {
|
||||
try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.del(matchKey);
|
||||
jedis.select(2);
|
||||
jedis.set(matchKey, result);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.del(matchKey);
|
||||
jedis.select(2);
|
||||
jedis.set(matchKey, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// if(oldTree.toString().equals(newTree.toString())) {
|
||||
// Matcher m = Matchers.getInstance().getMatcher(oldTree, newTree);
|
||||
// m.match();
|
||||
//
|
||||
//
|
||||
// ActionGenerator ag = new ActionGenerator(oldTree, newTree, m.getMappings());
|
||||
// ag.generate();
|
||||
// List<Action> actions = ag.getActions();
|
||||
//
|
||||
//
|
||||
// String editDistance;
|
||||
//
|
||||
// editDistance = String.valueOf(actions.size());
|
||||
// String result = i + "," + j + "," + editDistance;
|
||||
//
|
||||
//
|
||||
// if (editDistance.equals("0")) {
|
||||
//
|
||||
// if (treeType.equals("action")) {
|
||||
//
|
||||
// HierarchicalActionSet oldProject = oldPair.getValue1();
|
||||
// HierarchicalActionSet newProject = newPair.getValue1();
|
||||
//
|
||||
// oldTree = EDiffHelper.getTargets(oldProject);
|
||||
// newTree = EDiffHelper.getTargets(newProject);
|
||||
//
|
||||
// if(oldTree.toString().equals(newTree.toString())) {
|
||||
// m = Matchers.getInstance().getMatcher(oldTree, newTree);
|
||||
// m.match();
|
||||
//
|
||||
//
|
||||
// ag = new ActionGenerator(oldTree, newTree, m.getMappings());
|
||||
// ag.generate();
|
||||
// actions = ag.getActions();
|
||||
//
|
||||
// editDistance = String.valueOf(actions.size());
|
||||
//
|
||||
// if (editDistance.equals("0")) {
|
||||
// try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.del(matchKey);
|
||||
// jedis.select(2);
|
||||
// jedis.set(matchKey, result);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// } else {
|
||||
// try (Jedis jedis = innerPool.getResource()) {
|
||||
// jedis.del(matchKey);
|
||||
// jedis.select(2);
|
||||
// jedis.set(matchKey, result);
|
||||
// }
|
||||
//// jedis.select(2);
|
||||
//// jedis.set(matchKey, result);
|
||||
//// samePairs.add(matchKey);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
} catch (Exception e) {
|
||||
errorPairs.add(matchKey);
|
||||
// jedis.select(0);
|
||||
//// jedis.srem("pairs",matchKey);
|
||||
//
|
||||
// jedis.hset(matchKey, "0", "1");
|
||||
|
||||
log.debug("{} not comparable", pairName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Regular → Executable
+6
-4
@@ -7,17 +7,19 @@ public class RunnableCompare implements Runnable {
|
||||
private String name;
|
||||
private JedisPool innerPool;
|
||||
private JedisPool outerPool;
|
||||
private Compare comparer;
|
||||
private CompareTrees comparer;
|
||||
private String type;
|
||||
|
||||
public RunnableCompare(String name , JedisPool innerPool, JedisPool outerPool, Compare comp) {
|
||||
public RunnableCompare(String name , JedisPool innerPool, JedisPool outerPool,String type) {
|
||||
this.name = name;
|
||||
this.innerPool = innerPool;
|
||||
this.outerPool = outerPool;
|
||||
this.comparer = comp;
|
||||
this.type = type;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
comparer.coreCompare(name, innerPool, outerPool);
|
||||
// comparer.coreCompare(name,type, innerPool, outerPool);
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
+4
-2
@@ -4,6 +4,7 @@ import akka.actor.ActorRef;
|
||||
import akka.actor.Props;
|
||||
import akka.actor.UntypedActor;
|
||||
import akka.japi.Creator;
|
||||
import akka.routing.BalancingPool;
|
||||
import akka.routing.RoundRobinPool;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -21,7 +22,7 @@ public class TreeActor extends UntypedActor {
|
||||
|
||||
|
||||
public TreeActor(int numberOfWorkers) {
|
||||
mineRouter = this.getContext().actorOf(new RoundRobinPool(numberOfWorkers)
|
||||
mineRouter = this.getContext().actorOf(new BalancingPool(numberOfWorkers)
|
||||
.props(TreeWorker.props()), "tree-router");
|
||||
this.numberOfWorkers = numberOfWorkers;
|
||||
}
|
||||
@@ -47,6 +48,7 @@ public class TreeActor extends UntypedActor {
|
||||
List<String> pairs = ((TreeMessage) message).getName();
|
||||
JedisPool innerPool = ((TreeMessage) message).getInnerPool();
|
||||
JedisPool outerPool = ((TreeMessage) message).getOuterPool();
|
||||
String type = ((TreeMessage) message).getType();
|
||||
|
||||
|
||||
int size = pairs.size();
|
||||
@@ -60,7 +62,7 @@ public class TreeActor extends UntypedActor {
|
||||
int toIndex = (i + 1) * average + counter;
|
||||
|
||||
List<String> pairsOfWorkers = pairs.subList(fromIndex, toIndex);
|
||||
final TreeMessage workMsg = new TreeMessage(i + 1, pairsOfWorkers,innerPool,outerPool,((TreeMessage) message).getSECONDS_TO_WAIT());
|
||||
final TreeMessage workMsg = new TreeMessage(i + 1, pairsOfWorkers,innerPool,outerPool,((TreeMessage) message).getSECONDS_TO_WAIT(),type);
|
||||
mineRouter.tell(workMsg, getSelf());
|
||||
logger.info("Assign {} task to worker #" + (i + 1) + "...",pairsOfWorkers.size());
|
||||
}
|
||||
|
||||
Regular → Executable
+14
-3
@@ -13,21 +13,32 @@ public class TreeMessage extends BaseMessage{
|
||||
private JedisPool innerPool;
|
||||
private JedisPool outerPool;
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public TreeMessage(int id, List<String> name, JedisPool innerPool, JedisPool outerPool,String eDiffTimeout) {
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
private String type;
|
||||
|
||||
|
||||
public TreeMessage(int id, List<String> name, JedisPool innerPool, JedisPool outerPool,String eDiffTimeout,String treeType) {
|
||||
super(id,new Long(eDiffTimeout));
|
||||
|
||||
this.name = name;
|
||||
this.innerPool = innerPool;
|
||||
this.outerPool = outerPool;
|
||||
|
||||
this.type = treeType;
|
||||
}
|
||||
public TreeMessage(int id, List<String> name, JedisPool innerPool, JedisPool outerPool,Long eDiffTimeout) {
|
||||
public TreeMessage(int id, List<String> name, JedisPool innerPool, JedisPool outerPool,Long eDiffTimeout,String treeType) {
|
||||
super(id,eDiffTimeout);
|
||||
|
||||
this.name = name;
|
||||
this.innerPool = innerPool;
|
||||
this.outerPool = outerPool;
|
||||
this.type = treeType;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Regular → Executable
+7
-4
@@ -41,6 +41,7 @@ public class TreeWorker extends UntypedActor {
|
||||
List<String> files = msg.getName();
|
||||
JedisPool innerPool = msg.getInnerPool();
|
||||
JedisPool outerPool = msg.getOuterPool();
|
||||
String type = msg.getType();
|
||||
|
||||
int id = msg.getId();
|
||||
int counter = 0;
|
||||
@@ -49,19 +50,21 @@ public class TreeWorker extends UntypedActor {
|
||||
{
|
||||
|
||||
|
||||
Compare compare = new Compare();
|
||||
final ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||
|
||||
|
||||
final ExecutorService executor = Executors.newFixedThreadPool(1);
|
||||
// // schedule the work
|
||||
final Future<?> future = executor.submit(new RunnableCompare(name, innerPool, outerPool, compare));
|
||||
final Future<?> future = executor.submit(new RunnableCompare(name, innerPool, outerPool,type));
|
||||
try {
|
||||
// wait for task to complete
|
||||
future.get(msg.getSECONDS_TO_WAIT(), TimeUnit.SECONDS);
|
||||
counter++;
|
||||
if (counter % 100 == 0) {
|
||||
if (counter % 1000 == 0) {
|
||||
log.info("Worker #" + id +" finalized parsing " + counter + " pairs... remaing "+ (files.size() - counter));
|
||||
}
|
||||
} catch (TimeoutException e) {
|
||||
future.cancel(true);
|
||||
System.err.println("#Timeout: " + name);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ExecutionException e) {
|
||||
|
||||
Regular → Executable
+1
-1
@@ -54,7 +54,7 @@ public class EDiffActor extends UntypedActor {
|
||||
int toIndex = (i + 1) * average + counter;
|
||||
|
||||
List<MessageFile> filesOfWorkers = files.subList(fromIndex, toIndex);
|
||||
final EDiffMessage workMsg = new EDiffMessage(i + 1, filesOfWorkers,((EDiffMessage) message).getSECONDS_TO_WAIT(),((EDiffMessage) message).getActionType());
|
||||
final EDiffMessage workMsg = new EDiffMessage(i + 1, filesOfWorkers,((EDiffMessage) message).getSECONDS_TO_WAIT(),((EDiffMessage) message).getInnerPool());
|
||||
mineRouter.tell(workMsg, getSelf());
|
||||
logger.info("Assign {} task to worker #" + (i + 1) ,filesOfWorkers.size());
|
||||
}
|
||||
|
||||
Regular → Executable
+28
-12
@@ -4,9 +4,13 @@ import com.github.gumtreediff.actions.model.Delete;
|
||||
import com.github.gumtreediff.actions.model.Insert;
|
||||
import com.github.gumtreediff.actions.model.Move;
|
||||
import com.github.gumtreediff.actions.model.Update;
|
||||
import edu.lu.uni.serval.utils.EDiffHelper;
|
||||
import edu.lu.uni.serval.utils.FileHelper;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -21,7 +25,7 @@ public class EDiffHunkParser extends EDiffParser {
|
||||
|
||||
|
||||
@Override
|
||||
public void parseFixPatterns(File prevFile, File revFile, File diffentryFile,String project,String actionType) {
|
||||
public void parseFixPatterns(File prevFile, File revFile, File diffentryFile, String project, JedisPool innerPool) {
|
||||
List<HierarchicalActionSet> actionSets = parseChangedSourceCodeWithGumTree2(prevFile, revFile);
|
||||
if (actionSets.size() != 0) {
|
||||
// String folder= null;
|
||||
@@ -73,8 +77,9 @@ public class EDiffHunkParser extends EDiffParser {
|
||||
try {
|
||||
|
||||
String astNodeType = actionSet.getAstNodeType();
|
||||
int size = actionSet.toString().split("\\n").length;
|
||||
|
||||
// int size = actionSet.toString().split("\\n").length;
|
||||
actionSet.toString();
|
||||
int size = actionSet.getActionSize();
|
||||
// int size = actionSet.strList.size();
|
||||
|
||||
String datasetName = project;
|
||||
@@ -82,19 +87,30 @@ public class EDiffHunkParser extends EDiffParser {
|
||||
String root = split1[0];
|
||||
String pj = split1[1].split("/")[1];
|
||||
|
||||
File file = new File(root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/");
|
||||
file.mkdirs();
|
||||
String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/" + pj +"_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
|
||||
// File file = new File(root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/");
|
||||
// file.mkdirs();
|
||||
// String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/"+astNodeType+"/"+String.valueOf(size)+"/" + pj +"_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
|
||||
// String hunkTreeFileName = root + "EnhancedASTDiff" + datasetName + "/" + pj + folder + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
|
||||
f = new FileOutputStream(new File(hunkTreeFileName));
|
||||
ObjectOutputStream o = new ObjectOutputStream(f);
|
||||
o.writeObject(actionSet);
|
||||
|
||||
o.close();
|
||||
f.close();
|
||||
// f = new FileOutputStream(new File(hunkTreeFileName));
|
||||
// ObjectOutputStream o = new ObjectOutputStream(f);
|
||||
// o.writeObject(actionSet);
|
||||
//
|
||||
// o.close();
|
||||
// f.close();
|
||||
|
||||
// String name = f.getName();
|
||||
|
||||
String key = astNodeType+"/"+String.valueOf(size)+"/" + pj +"_" + diffentryFile.getName() + "_" + String.valueOf(hunkSet);
|
||||
|
||||
try (Jedis inner = innerPool.getResource()) {
|
||||
|
||||
inner.set(key.getBytes(), EDiffHelper.toByteArray(actionSet));
|
||||
}
|
||||
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
hunkSet++;
|
||||
|
||||
Regular → Executable
+15
-2
@@ -1,6 +1,7 @@
|
||||
package edu.lu.uni.serval.fixminer.akka.ediff;
|
||||
|
||||
import edu.lu.uni.serval.fixminer.akka.BaseMessage;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,19 +14,31 @@ public class EDiffMessage extends BaseMessage{
|
||||
|
||||
private String actionType;
|
||||
|
||||
public JedisPool getInnerPool() {
|
||||
return innerPool;
|
||||
}
|
||||
|
||||
public void setInnerPool(JedisPool innerPool) {
|
||||
this.innerPool = innerPool;
|
||||
}
|
||||
|
||||
private JedisPool innerPool;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public EDiffMessage(int id, List<MessageFile> msgFiles,String eDiffTimeout,String actionType) {
|
||||
public EDiffMessage(int id, List<MessageFile> msgFiles,String eDiffTimeout,JedisPool pool) {
|
||||
super(id,new Long(eDiffTimeout));
|
||||
this.msgFiles = msgFiles;
|
||||
this.actionType = actionType;
|
||||
this.innerPool = pool;
|
||||
}
|
||||
public EDiffMessage(int id, List<MessageFile> msgFiles,Long eDiffTimeout,String actionType) {
|
||||
public EDiffMessage(int id, List<MessageFile> msgFiles,Long eDiffTimeout,JedisPool pool) {
|
||||
super(id,eDiffTimeout);
|
||||
this.msgFiles = msgFiles;
|
||||
this.actionType = actionType;
|
||||
this.innerPool = pool;
|
||||
}
|
||||
|
||||
public String getActionType() {
|
||||
|
||||
Regular → Executable
+2
-1
@@ -3,6 +3,7 @@ package edu.lu.uni.serval.fixminer.akka.ediff;
|
||||
import com.github.gumtreediff.actions.model.Action;
|
||||
import edu.lu.uni.serval.gumtree.GumTreeComparer;
|
||||
import edu.lu.uni.serval.utils.ListSorter;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -62,7 +63,7 @@ public class EDiffParser extends Parser {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, String actionType) {
|
||||
public void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
Regular → Executable
+4
-2
@@ -5,6 +5,7 @@ import akka.actor.UntypedActor;
|
||||
import akka.japi.Creator;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
@@ -41,7 +42,8 @@ public class EDiffWorker extends UntypedActor {
|
||||
|
||||
int id = msg.getId();
|
||||
int counter = 0;
|
||||
|
||||
JedisPool innerPool = msg.getInnerPool();
|
||||
|
||||
for (MessageFile msgFile : files) {
|
||||
File revFile = msgFile.getRevFile();
|
||||
File prevFile = msgFile.getPrevFile();
|
||||
@@ -53,7 +55,7 @@ public class EDiffWorker extends UntypedActor {
|
||||
|
||||
final ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||
// schedule the work
|
||||
final Future<?> future = executor.submit(new RunnableParser(prevFile, revFile, diffentryFile, parser,project,msg.getActionType()));
|
||||
final Future<?> future = executor.submit(new RunnableParser(prevFile, revFile, diffentryFile, parser,project,msg.getInnerPool()));
|
||||
try {
|
||||
// wait for task to complete
|
||||
future.get(msg.getSECONDS_TO_WAIT(), TimeUnit.SECONDS);
|
||||
|
||||
Regular → Executable
+4
@@ -171,6 +171,10 @@ public class HierarchicalActionSet implements Comparable<HierarchicalActionSet>,
|
||||
|
||||
private List<String> strList = new ArrayList<>();
|
||||
|
||||
public int getActionSize(){
|
||||
return strList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
String str = actionString;
|
||||
|
||||
Regular → Executable
+1
-1
@@ -187,7 +187,7 @@ public class HierarchicalRegrouper {
|
||||
if (action instanceof Addition) {
|
||||
parent = ((Addition) action).getParent(); // parent in the fixed source code tree
|
||||
}
|
||||
|
||||
|
||||
if (parent.getType() == 55) {
|
||||
int type = action.getNode().getType();
|
||||
// Modifier, NormalAnnotation, MarkerAnnotation, SingleMemberAnnotation
|
||||
|
||||
Regular → Executable
Regular → Executable
+3
-1
@@ -1,5 +1,7 @@
|
||||
package edu.lu.uni.serval.fixminer.akka.ediff;
|
||||
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
@@ -18,7 +20,7 @@ public abstract class Parser implements ParserInterface {
|
||||
protected String originalTree = ""; // Guide of generating patches.
|
||||
protected String actionSets = ""; // Guide of generating patches.
|
||||
|
||||
public abstract void parseFixPatterns(File prevFile, File revFile, File diffEntryFile,String project,String actionType);
|
||||
public abstract void parseFixPatterns(File prevFile, File revFile, File diffEntryFile, String project, JedisPool innerPool);
|
||||
|
||||
|
||||
@Override
|
||||
|
||||
Regular → Executable
Regular → Executable
+6
-4
@@ -1,5 +1,7 @@
|
||||
package edu.lu.uni.serval.fixminer.akka.ediff;
|
||||
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class RunnableParser implements Runnable {
|
||||
@@ -9,7 +11,7 @@ public class RunnableParser implements Runnable {
|
||||
private File diffentryFile;
|
||||
private Parser parser;
|
||||
private String project;
|
||||
private String actionType;
|
||||
private JedisPool pool;
|
||||
|
||||
public RunnableParser(File prevFile, File revFile, File diffentryFile, Parser parser) {
|
||||
this.prevFile = prevFile;
|
||||
@@ -18,17 +20,17 @@ public class RunnableParser implements Runnable {
|
||||
this.parser = parser;
|
||||
}
|
||||
|
||||
public RunnableParser(File prevFile, File revFile, File diffentryFile, Parser parser,String project,String actionType) {
|
||||
public RunnableParser(File prevFile, File revFile, File diffentryFile, Parser parser, String project, JedisPool innerPool) {
|
||||
this.prevFile = prevFile;
|
||||
this.revFile = revFile;
|
||||
this.diffentryFile = diffentryFile;
|
||||
this.parser = parser;
|
||||
this.project = project;
|
||||
this.actionType= actionType;
|
||||
this.pool = innerPool;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
parser.parseFixPatterns(prevFile, revFile, diffentryFile,project,actionType);
|
||||
parser.parseFixPatterns(prevFile, revFile, diffentryFile,project,pool);
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
+54
-39
@@ -6,9 +6,12 @@ import edu.lu.uni.serval.fixminer.akka.ediff.EDiffActor;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.EDiffHunkParser;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.EDiffMessage;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.MessageFile;
|
||||
import edu.lu.uni.serval.utils.CallShell;
|
||||
import edu.lu.uni.serval.utils.FileHelper;
|
||||
import edu.lu.uni.serval.utils.PoolBuilder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -21,12 +24,20 @@ public class EnhancedASTDiff {
|
||||
|
||||
private static Logger log = LoggerFactory.getLogger(EnhancedASTDiff.class);
|
||||
|
||||
public static void main(String inputPath, String outputPath, String numOfWorkers, String project, String eDiffTimeout, String actionType, String parallelism) {
|
||||
public static void main(String inputPath, String outputPath, String numOfWorkers, String project, String eDiffTimeout, String actionType, String parallelism, String portInner, String dbDir, String chunkName) throws Exception {
|
||||
|
||||
|
||||
String parameters = String.format("\nInput path %s \nOutput path %s",inputPath,outputPath);
|
||||
log.info(parameters);
|
||||
|
||||
CallShell cs = new CallShell();
|
||||
String cmd = "bash "+dbDir + "/" + "startServer.sh" +" %s %s %s";
|
||||
cmd = String.format(cmd, dbDir,chunkName,Integer.valueOf(portInner));
|
||||
|
||||
cs.runShell(cmd, portInner);
|
||||
|
||||
JedisPool innerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(portInner),20000000);
|
||||
|
||||
File folder = new File(inputPath);
|
||||
File[] listOfFiles = folder.listFiles();
|
||||
Stream<File> stream = Arrays.stream(listOfFiles);
|
||||
@@ -41,10 +52,11 @@ public class EnhancedASTDiff {
|
||||
|
||||
|
||||
List<MessageFile> msgFiles = getMessageFiles(target.toString() + "/"); //"/Users/anilkoyuncu/bugStudy/code/python/GumTreeInput/Apache/CAMEL/"
|
||||
allMessageFiles.addAll(msgFiles);
|
||||
|
||||
// System.out.println(msgFiles.size());
|
||||
if (msgFiles.size() == 0)
|
||||
if (msgFiles == null)
|
||||
continue;
|
||||
allMessageFiles.addAll(msgFiles);
|
||||
|
||||
String GUM_TREE_OUTPUT = outputPath + "/" + pjName + "/";
|
||||
|
||||
@@ -65,7 +77,7 @@ public class EnhancedASTDiff {
|
||||
case "AKKA":
|
||||
ActorSystem system = null;
|
||||
ActorRef parsingActor = null;
|
||||
final EDiffMessage msg = new EDiffMessage(0, allMessageFiles,eDiffTimeout,actionType);
|
||||
final EDiffMessage msg = new EDiffMessage(0, allMessageFiles,eDiffTimeout,innerPool);
|
||||
try {
|
||||
log.info("Akka begins...");
|
||||
log.info("{} files to process ...", allMessageFiles.size());
|
||||
@@ -79,25 +91,25 @@ public class EnhancedASTDiff {
|
||||
}
|
||||
break;
|
||||
case "FORKJOIN":
|
||||
int counter = new Object() {
|
||||
int counter = 0;
|
||||
|
||||
{
|
||||
allMessageFiles.stream().
|
||||
parallel().
|
||||
peek(x -> counter++).
|
||||
forEach(m ->
|
||||
{
|
||||
EDiffHunkParser parser = new EDiffHunkParser();
|
||||
parser.parseFixPatterns(m.getPrevFile(),m.getRevFile(), m.getDiffEntryFile(),project,actionType);
|
||||
if (counter % 10 == 0) {
|
||||
log.info("Finalized parsing " + counter + " files... remaing " + (allMessageFiles.size() - counter));
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}.counter;
|
||||
log.info("Finished parsing {} files",counter);
|
||||
// int counter = new Object() {
|
||||
// int counter = 0;
|
||||
//
|
||||
// {
|
||||
// allMessageFiles.stream().
|
||||
// parallel().
|
||||
// peek(x -> counter++).
|
||||
// forEach(m ->
|
||||
// {
|
||||
// EDiffHunkParser parser = new EDiffHunkParser();
|
||||
// parser.parseFixPatterns(m.getPrevFile(),m.getRevFile(), m.getDiffEntryFile(),project,msg.getInnerPool());
|
||||
// if (counter % 10 == 0) {
|
||||
// log.info("Finalized parsing " + counter + " files... remaing " + (allMessageFiles.size() - counter));
|
||||
// }
|
||||
// }
|
||||
// );
|
||||
// }
|
||||
// }.counter;
|
||||
// log.info("Finished parsing {} files",counter);
|
||||
break;
|
||||
default:
|
||||
log.error("Unknown parallelism {}", parallelism);
|
||||
@@ -115,26 +127,29 @@ public class EnhancedASTDiff {
|
||||
private static List<MessageFile> getMessageFiles(String gumTreeInput) {
|
||||
String inputPath = gumTreeInput; // prevFiles revFiles diffentryFile positionsFile
|
||||
File revFilesPath = new File(inputPath + "revFiles/");
|
||||
File[] revFiles = revFilesPath.listFiles(); // project folders
|
||||
List<MessageFile> msgFiles = new ArrayList<>();
|
||||
if (revFiles.length >= 0) {
|
||||
for (File revFile : revFiles) {
|
||||
String fileName = revFile.getName();
|
||||
File prevFile = new File(gumTreeInput + "prevFiles/prev_" + fileName);// previous file
|
||||
fileName = fileName.replace(".java", ".txt");
|
||||
File diffentryFile = new File(gumTreeInput + "DiffEntries/" + fileName); // DiffEntry file
|
||||
log.info(revFilesPath.getPath());
|
||||
File[] revFiles = revFilesPath.listFiles();
|
||||
if (revFiles!= null ){
|
||||
// List<File> collect = Arrays.stream(revFiles).filter(x -> x.getName().startsWith("b50867_6e80c3_src#main#java#org#apache#hadoop#hbase#regionserver#HRegion"))
|
||||
// .collect(Collectors.toList());// project folders
|
||||
List<MessageFile> msgFiles = new ArrayList<>();
|
||||
for (File revFile : revFiles) {
|
||||
// for (File revFile : collect) {
|
||||
String fileName = revFile.getName();
|
||||
File prevFile = new File(gumTreeInput + "prevFiles/prev_" + fileName);// previous file
|
||||
fileName = fileName.replace(".java", ".txt");
|
||||
File diffentryFile = new File(gumTreeInput + "DiffEntries/" + fileName); // DiffEntry file
|
||||
|
||||
MessageFile msgFile = new MessageFile(revFile, prevFile, diffentryFile);
|
||||
MessageFile msgFile = new MessageFile(revFile, prevFile, diffentryFile);
|
||||
|
||||
msgFiles.add(msgFile);
|
||||
msgFiles.add(msgFile);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return msgFiles;
|
||||
}
|
||||
else{
|
||||
return null;
|
||||
}
|
||||
return msgFiles;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
+38
-16
@@ -2,6 +2,7 @@ package edu.lu.uni.serval.fixminer.jobs;
|
||||
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
import com.github.gumtreediff.tree.TreeUtils;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.utils.CallShell;
|
||||
import edu.lu.uni.serval.utils.EDiffHelper;
|
||||
@@ -171,6 +172,7 @@ public class MultiThreadTreeLoaderCluster3 {
|
||||
|
||||
|
||||
|
||||
|
||||
public static List<String> getNames(ITree oldTree, List<String> oldTokens){
|
||||
|
||||
List<ITree> descendants = oldTree.getDescendants();
|
||||
@@ -209,17 +211,26 @@ public class MultiThreadTreeLoaderCluster3 {
|
||||
List<String> m = new ArrayList<String>();
|
||||
if(label.startsWith("UPD")){
|
||||
upd = true;
|
||||
java.util.regex.Matcher matcher;
|
||||
if(sType.equals("53")){
|
||||
String timeRegex = ".*@@(ClassInstanceCreation:new [a-zA-Z0-9]+).*@TO@\\s(ClassInstanceCreation:new [a-zA-Z0-9]+).*";
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
matcher= pattern.matcher(split[1]);
|
||||
}else {
|
||||
String timeRegex = "@@(.*)@TO@(.*)";
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
matcher = pattern.matcher(split[1]);
|
||||
}
|
||||
|
||||
String timeRegex = "UPD (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@TO@(.*)@AT@";
|
||||
// java.util.regex.Matcher matcher;
|
||||
// if(sType.equals("53")){
|
||||
// String timeRegex = ".*@@(ClassInstanceCreation:new [a-zA-Z0-9]+).*@TO@\\s(ClassInstanceCreation:new [a-zA-Z0-9]+).*";
|
||||
// Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
// matcher= pattern.matcher(split[1]);
|
||||
// }else {
|
||||
// String timeRegex = "@@(.*)@TO@(.*)";
|
||||
// Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
// matcher = pattern.matcher(split[1]);
|
||||
// }
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(label);
|
||||
|
||||
|
||||
if (matcher.matches()) {
|
||||
String group = matcher.group(2);
|
||||
String group1 = matcher.group(3);
|
||||
|
||||
String hours = matcher.group(1);
|
||||
String to = matcher.group(2);
|
||||
if(sType.equals("31")){
|
||||
@@ -296,11 +307,16 @@ public class MultiThreadTreeLoaderCluster3 {
|
||||
|
||||
}
|
||||
}else if(label.startsWith("INS") && upd == false){
|
||||
String timeRegex = "@@(.*)@TO@(.*)";
|
||||
String timeRegex ="MOV (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@TO@ (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@AT@";
|
||||
//
|
||||
// String timeRegex = "@@(.*)@TO@(.*)";
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(split[1]);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(label);
|
||||
|
||||
if (matcher.matches()) {
|
||||
String group = matcher.group(2);
|
||||
String group1 = matcher.group(4);
|
||||
|
||||
String hours = matcher.group(1);
|
||||
if (hours.startsWith("MethodName:")) {
|
||||
String methodName = hours.split(":")[1];
|
||||
@@ -313,11 +329,13 @@ public class MultiThreadTreeLoaderCluster3 {
|
||||
}
|
||||
|
||||
}else if(label.startsWith("DEL") && upd == false){
|
||||
String timeRegex = "@@(.*)";
|
||||
String timeRegex = "DEL (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@AT@";
|
||||
// String timeRegex = "@@(.*)";
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(split[1]);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(label);
|
||||
|
||||
if (matcher.matches()) {
|
||||
String group = matcher.group(2);
|
||||
String hours = matcher.group(1);
|
||||
if (hours.startsWith("MethodName:")){
|
||||
String methodName = hours.split(":")[1];
|
||||
@@ -327,11 +345,15 @@ public class MultiThreadTreeLoaderCluster3 {
|
||||
}
|
||||
}
|
||||
}else if(label.startsWith("MOV") && upd == false){
|
||||
String timeRegex = "@@(.*)@TO@(.*)";
|
||||
String timeRegex ="MOV (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@TO@ (AnonymousClassDeclaration|ArrayAccess|ArrayCreation|ArrayInitializer|ArrayType|AssertStatement|Assignment|Block|BooleanLiteral|BreakStatement|CastExpression|CatchClause|CharacterLiteral|ClassInstanceCreation|CompilationUnit|ConditionalExpression|ConstructorInvocation|ContinueStatement|DoStatement|EmptyStatement|ExpressionStatement|FieldAccess|FieldDeclaration|ForStatement|IfStatement|ImportDeclaration|InfixExpression|Initializer|Javadoc|LabeledStatement|MethodDeclaration|MethodInvocation|NullLiteral|NumberLiteral|PackageDeclaration|ParenthesizedExpression|PostfixExpression|PrefixExpression|PrimitiveType|QualifiedName|ReturnStatement|SimpleName|SimpleType|SingleVariableDeclaration|StringLiteral|SuperConstructorInvocation|SuperFieldAccess|SuperMethodInvocation|SwitchCase|SwitchStatement|SynchronizedStatement|ThisExpression|ThrowStatement|TryStatement|TypeDeclaration|TypeDeclarationStatement|TypeLiteral|VariableDeclarationExpression|VariableDeclarationFragment|VariableDeclarationStatement|WhileStatement|InstanceofExpression|LineComment|BlockComment|TagElement|TextElement|MemberRef|MethodRef|MethodRefParameter|EnhancedForStatement|EnumDeclaration|EnumConstantDeclaration|TypeParameter|ParameterizedType|QualifiedType|WildcardType|NormalAnnotation|MarkerAnnotation|SingleMemberAnnotation|MemberValuePair|AnnotationTypeDeclaration|AnnotationTypeMemberDeclaration|Modifier|UnionType|Dimension|LambdaExpression|IntersectionType|NameQualifiedType|CreationReference|ExpressionMethodReference|SuperMethodReference|TypeMethodReference)@@(.*)@AT@";
|
||||
// String timeRegex = "@@(.*)@TO@(.*)";
|
||||
Pattern pattern = Pattern.compile(timeRegex, Pattern.DOTALL);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(split[1]);
|
||||
java.util.regex.Matcher matcher = pattern.matcher(label);
|
||||
|
||||
if (matcher.matches()) {
|
||||
String group = matcher.group(2);
|
||||
String group1 = matcher.group(4);
|
||||
|
||||
String hours = matcher.group(1);
|
||||
if (hours.startsWith("MethodName:")){
|
||||
String methodName = hours.split(":")[1];
|
||||
|
||||
Regular → Executable
Regular → Executable
+5
-3
@@ -4,6 +4,8 @@ import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
|
||||
import edu.lu.uni.serval.utils.CallShell;
|
||||
import edu.lu.uni.serval.utils.EDiffHelper;
|
||||
import edu.lu.uni.serval.utils.PoolBuilder;
|
||||
import org.redisson.Redisson;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.Jedis;
|
||||
@@ -25,9 +27,9 @@ public class StoreEDiffInCache {
|
||||
private static Logger log = LoggerFactory.getLogger(StoreEDiffInCache.class);
|
||||
|
||||
|
||||
public static void main(String inputPath,String portInner,String dbDir,String chunkName,String operation) throws Exception {
|
||||
public static void main(String inputPath,String portInner,String dbDir,String chunkName) throws Exception {
|
||||
|
||||
String parameters = String.format("\nInput path %s \nportInner %s \nchunkName %s \ndbDir %s \noperation %s",inputPath,portInner,chunkName,dbDir,operation);
|
||||
String parameters = String.format("\nInput path %s \nportInner %s \nchunkName %s \ndbDir %s \noperation %s",inputPath,portInner,chunkName,dbDir);
|
||||
log.info(parameters);
|
||||
CallShell cs = new CallShell();
|
||||
String cmd = "bash "+dbDir + "/" + "startServer.sh" +" %s %s %s";
|
||||
@@ -137,7 +139,7 @@ public class StoreEDiffInCache {
|
||||
|
||||
try (Jedis inner = innerPool.getResource()) {
|
||||
|
||||
inner.set(key, EDiffHelper.toString(actionSet));
|
||||
inner.set(key.getBytes(), EDiffHelper.toByteArray(actionSet));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
+1
@@ -81,6 +81,7 @@ try{
|
||||
|
||||
runPing(command);
|
||||
}else{
|
||||
TimeUnit.MINUTES.sleep(1);
|
||||
System.out.println(e);
|
||||
|
||||
}
|
||||
|
||||
Regular → Executable
Regular → Executable
+84
-12
@@ -3,16 +3,12 @@ package edu.lu.uni.serval.utils;
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@@ -22,8 +18,81 @@ public class ClusterToPattern {
|
||||
String shapesFolder = "/Users/anil.koyuncu/projects/fixminer-all/enhancedASTDiff/python/data/shapes";
|
||||
|
||||
String port = "6399";
|
||||
JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000);
|
||||
// JedisPool outerPool = new JedisPool(PoolBuilder.getPoolConfig(), "127.0.0.1",Integer.valueOf(port),20000000);
|
||||
Jedis jedis = new Jedis("127.0.0.1",Integer.valueOf(port),20000000);
|
||||
// writeTofFile(shapesFolder, outerPool);
|
||||
|
||||
// File file = new File(shapesFolder);
|
||||
//
|
||||
//
|
||||
// File[] files = file.listFiles();
|
||||
// ArrayList<String> strings = new ArrayList<>();
|
||||
// List<File> folders = Arrays.stream(files).filter(x -> x.isDirectory())
|
||||
// .collect(Collectors.toList());
|
||||
// for (File target : folders) {
|
||||
// File[] files2 = target.listFiles();
|
||||
// for (File file1 : files2) {
|
||||
// File[] files1 = file1.listFiles();
|
||||
// strings.add(((File)files1[0]).listFiles()[0].getName());
|
||||
//// System.out.println();
|
||||
//
|
||||
// }
|
||||
//
|
||||
//// Collection<File> files1 = FileUtils.listFiles(target, null, true);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// for (String string : strings) {
|
||||
// export("*"+string,jedis);
|
||||
// }
|
||||
|
||||
// String export = export("VariableDeclarationStatement"+"/*/camel_8f0c15_ab3e17_camel-core#src#main#java#org#apache#camel#component#bean#BeanInfo.txt_0", jedis);
|
||||
String export = export(args[0], jedis);
|
||||
System.out.println(export);
|
||||
|
||||
}
|
||||
|
||||
private static String export(String filename,Jedis outer) throws IOException, ClassNotFoundException {
|
||||
|
||||
// String key = shape.getName() + "/*/" + file.getName();
|
||||
// Jedis outer = outerPool.getResource();
|
||||
String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
Set<String> keys = outer.keys(filename);
|
||||
if (keys.size() == 1) {
|
||||
s = (String) keys.toArray()[0];
|
||||
} else {
|
||||
throw new Error("cok key");
|
||||
}
|
||||
|
||||
byte[] si = outer.get(s.getBytes());
|
||||
// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si);
|
||||
// ITree tree = null;
|
||||
// ITree parent = null;
|
||||
// ITree children =null;
|
||||
// TreeContext tc = new TreeContext();
|
||||
// tree = EDiffHelper.getASTTree(actionSet, parent, children,tc);
|
||||
// tree.setParent(null);
|
||||
// tc.validate();
|
||||
//
|
||||
// String s2 = tree.toStaticHashString();
|
||||
// try(FileWriter fw = new FileWriter("myfile.txt", true);
|
||||
// BufferedWriter bw = new BufferedWriter(fw);
|
||||
// PrintWriter out = new PrintWriter(bw))
|
||||
// {
|
||||
// out.println(s2);
|
||||
// //more code
|
||||
// } catch (IOException e) {
|
||||
// //exception handling left as an exercise for the reader
|
||||
// }
|
||||
|
||||
String s1 = actionSet.toString();
|
||||
outer.close();
|
||||
return s1;
|
||||
}
|
||||
|
||||
|
||||
private static void writeTofFile(String shapesFolder, JedisPool outerPool) throws IOException, ClassNotFoundException {
|
||||
File folder = new File(shapesFolder);
|
||||
|
||||
File[] listOfFiles = folder.listFiles();
|
||||
@@ -39,8 +108,10 @@ public class ClusterToPattern {
|
||||
.collect(Collectors.toList());
|
||||
for(File cluster:fileList){
|
||||
File[] files = cluster.listFiles();
|
||||
// for (File f:files) {
|
||||
// File file = f.listFiles()[0];
|
||||
File file = files[0];
|
||||
String key = shape.getName() + "/*/"+file.getName();
|
||||
String key = shape.getName() + "/*/" + file.getName();
|
||||
Jedis outer = outerPool.getResource();
|
||||
String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
Set<String> keys = outer.keys(key);
|
||||
@@ -55,17 +126,18 @@ public class ClusterToPattern {
|
||||
|
||||
|
||||
String s1 = actionSet.toString();
|
||||
File saveFile = new File(folder.getParent()+"/shapePatterns/" +shape.getName()+"/"+cluster.getName()+".pattern");
|
||||
// File saveFile = new File(folder.getParent() + "/actionPatterns/" + shape.getName() + "/" + cluster.getName() +"/"+f.getName()+ ".pattern");
|
||||
File saveFile = new File(folder.getParent() + "/shapePatterns/" + shape.getName() + "/" + cluster.getName() + ".pattern");
|
||||
saveFile.getParentFile().mkdirs();
|
||||
BufferedWriter writer = new BufferedWriter(new FileWriter(saveFile));
|
||||
writer.write(s1);
|
||||
|
||||
writer.close();
|
||||
writer.close();
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
+430
-66
@@ -3,14 +3,18 @@ package edu.lu.uni.serval.utils;
|
||||
import com.github.gumtreediff.actions.model.*;
|
||||
import com.github.gumtreediff.tree.ITree;
|
||||
import com.github.gumtreediff.tree.TreeContext;
|
||||
import com.github.gumtreediff.tree.TreeUtils;
|
||||
import edu.lu.uni.serval.fixminer.akka.ediff.HierarchicalActionSet;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import org.javatuples.Pair;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -39,6 +43,24 @@ public class EDiffHelper {
|
||||
}
|
||||
|
||||
|
||||
public static Object fromByteArray( byte[] data ) throws IOException,
|
||||
ClassNotFoundException {
|
||||
// byte [] data = Base64.getDecoder().decode( s );
|
||||
ObjectInputStream ois = new ObjectInputStream(
|
||||
new ByteArrayInputStream( data ) );
|
||||
Object o = ois.readObject();
|
||||
ois.close();
|
||||
return o;
|
||||
}
|
||||
/** Write the object to a Base64 string. */
|
||||
public static byte[] toByteArray(Serializable o ) throws IOException {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
ObjectOutputStream oos = new ObjectOutputStream( baos );
|
||||
oos.writeObject( o );
|
||||
oos.close();
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
public static ITree getTokenTree(HierarchicalActionSet actionSet, ITree parent, ITree children,TreeContext tc){
|
||||
|
||||
int newType = 0;
|
||||
@@ -79,6 +101,66 @@ public class EDiffHelper {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static ITree getTargetTree(HierarchicalActionSet actionSet, ITree parent, ITree children, TreeContext tc){
|
||||
|
||||
int newType = 0;
|
||||
|
||||
String astNodeType = null;
|
||||
|
||||
Action action = actionSet.getAction();
|
||||
if (action instanceof Update){
|
||||
astNodeType = actionSet.getAstNodeType();
|
||||
List<Integer> keysByValue = getKeysByValue(ASTNodeMap.map, astNodeType);
|
||||
|
||||
if(keysByValue.size() != 1){
|
||||
log.error("More than 1");
|
||||
}
|
||||
newType = keysByValue.get(0);
|
||||
}else if(action instanceof Insert){
|
||||
newType = ((Insert)action).getParent().getType();
|
||||
}else if(action instanceof Move){
|
||||
newType = ((Move)action).getParent().getType();
|
||||
}else if(action instanceof Delete){
|
||||
astNodeType = actionSet.getAstNodeType();
|
||||
List<Integer> keysByValue = getKeysByValue(ASTNodeMap.map, astNodeType);
|
||||
|
||||
if(keysByValue.size() != 1){
|
||||
log.error("More than 1");
|
||||
}
|
||||
newType = keysByValue.get(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(actionSet.getParent() == null){
|
||||
//root
|
||||
|
||||
// parent = new Tree(newType,"");
|
||||
parent = tc.createTree(newType, "", null);
|
||||
tc.setRoot(parent);
|
||||
}else{
|
||||
// children = new Tree(newType,"");
|
||||
// parent.addChild(children);
|
||||
children = tc.createTree(newType, "", null);
|
||||
children.setParentAndUpdateChildren(parent);
|
||||
}
|
||||
List<HierarchicalActionSet> subActions = actionSet.getSubActions();
|
||||
if (subActions.size() != 0){
|
||||
for (HierarchicalActionSet subAction : subActions) {
|
||||
|
||||
if(actionSet.getParent() == null){
|
||||
children = parent;
|
||||
}
|
||||
getTargetTree(subAction,children,null,tc);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
public static ITree getASTTree(HierarchicalActionSet actionSet, ITree parent, ITree children, TreeContext tc){
|
||||
|
||||
int newType = 0;
|
||||
@@ -163,25 +245,89 @@ public class EDiffHelper {
|
||||
}
|
||||
|
||||
|
||||
public static ITree getShapes(String prefix, String fn, JedisPool outerPool) {
|
||||
public static ITree getShapes(String prefix, String fn, JedisPool outerPool,JedisPool innerPool) {
|
||||
|
||||
ITree tree = null;
|
||||
Jedis inner = null;
|
||||
try {
|
||||
inner = outerPool.getResource();
|
||||
while (!inner.ping().equals("PONG")){
|
||||
log.info("wait");
|
||||
// Jedis inner = null;
|
||||
// Jedis outer = null;
|
||||
try (Jedis inner = innerPool.getResource(); Jedis outer = outerPool.getResource()) {
|
||||
// inner = innerPool.getResource();
|
||||
try {
|
||||
while (!inner.ping().equals("PONG")) {
|
||||
log.info("wait");
|
||||
}
|
||||
inner.select(1);
|
||||
String dist2load = inner.get(prefix + "-" + fn);
|
||||
|
||||
// outer = outerPool.getResource();
|
||||
outer.select(0);
|
||||
String key = prefix.replace("-", "/") + "/" + dist2load;
|
||||
byte[] s = outer.get(key.getBytes());
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(s);
|
||||
|
||||
ITree parent = null;
|
||||
ITree children = null;
|
||||
TreeContext tc = new TreeContext();
|
||||
tree = EDiffHelper.getASTTree(actionSet, parent, children, tc);
|
||||
//tree.setParent(null);
|
||||
tc.validate();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
inner.select(1);
|
||||
String dist2load = inner.get(prefix+"-"+fn);
|
||||
inner.select(0);
|
||||
String s = inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(s);
|
||||
}
|
||||
// finally {
|
||||
// if (inner != null) {
|
||||
// inner.close();
|
||||
// }
|
||||
// if (outer != null) {
|
||||
// outer.close();
|
||||
// }
|
||||
// }
|
||||
return tree;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static ITree getTargets(String prefix, String fn, JedisPool outerPool,JedisPool innerPool) {
|
||||
|
||||
ITree tree = null;
|
||||
// Jedis inner = null;
|
||||
// Jedis outer = null;
|
||||
try {
|
||||
String dist2load = null;
|
||||
String si = null;
|
||||
try(Jedis inner = innerPool.getResource()){
|
||||
inner.select(1);
|
||||
dist2load = inner.get(prefix+"-"+fn);
|
||||
|
||||
}
|
||||
// while (!inner.ping().equals("PONG")){
|
||||
// log.info("wait");
|
||||
// }
|
||||
try(Jedis outer = outerPool.getResource()){
|
||||
outer.select(0);
|
||||
String s = null;
|
||||
Set<String> keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load);
|
||||
if (keys.size() == 1) {
|
||||
s = (String) keys.toArray()[0];
|
||||
} else {
|
||||
throw new Error("cok key");
|
||||
}
|
||||
si = outer.get(s);
|
||||
|
||||
}
|
||||
|
||||
|
||||
// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition;
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
|
||||
ITree parent = null;
|
||||
ITree children =null;
|
||||
TreeContext tc = new TreeContext();
|
||||
tree = EDiffHelper.getASTTree(actionSet, parent, children,tc);
|
||||
tree = EDiffHelper.getTargetTree(actionSet, parent, children,tc);
|
||||
//tree.setParent(null);
|
||||
tc.validate();
|
||||
|
||||
@@ -189,43 +335,100 @@ public class EDiffHelper {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
if (inner != null) {
|
||||
inner.close();
|
||||
}
|
||||
}
|
||||
return tree;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static ITree getActions(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool) {
|
||||
public static ITree getTargets(HierarchicalActionSet actionSet) {
|
||||
|
||||
ITree tree = null;
|
||||
// Jedis inner = null;
|
||||
// Jedis outer = null;
|
||||
try {
|
||||
// String dist2load = null;
|
||||
// String si = null;
|
||||
// try(Jedis inner = innerPool.getResource()){
|
||||
// inner.select(1);
|
||||
// dist2load = inner.get(prefix+"-"+fn);
|
||||
//
|
||||
// }
|
||||
//// while (!inner.ping().equals("PONG")){
|
||||
//// log.info("wait");
|
||||
//// }
|
||||
// try(Jedis outer = outerPool.getResource()){
|
||||
// outer.select(0);
|
||||
// String s = null;
|
||||
// Set<String> keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load);
|
||||
// if (keys.size() == 1) {
|
||||
// s = (String) keys.toArray()[0];
|
||||
// } else {
|
||||
// throw new Error("cok key");
|
||||
// }
|
||||
// si = outer.get(s);
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
//// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition;
|
||||
// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
|
||||
ITree parent = null;
|
||||
ITree children =null;
|
||||
TreeContext tc = new TreeContext();
|
||||
tree = EDiffHelper.getTargetTree(actionSet, parent, children,tc);
|
||||
//tree.setParent(null);
|
||||
tc.validate();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//
|
||||
// } catch (IOException e) {
|
||||
// e.printStackTrace();
|
||||
// } catch (ClassNotFoundException e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
return tree;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static Pair<ITree,HierarchicalActionSet> getActions(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool) {
|
||||
|
||||
|
||||
ITree tree = null;
|
||||
Jedis inner = null;
|
||||
Jedis outer = null;
|
||||
|
||||
// Jedis inner = null;
|
||||
// Jedis outer = null;
|
||||
HierarchicalActionSet actionSet = null;
|
||||
|
||||
try {
|
||||
inner = innerPool.getResource();
|
||||
inner.select(1);
|
||||
String dist2load = inner.get(prefix + "-" + firstValue);
|
||||
outer = outerPool.getResource();
|
||||
outer.select(0);
|
||||
String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
Set<String> keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load);
|
||||
if (keys.size() == 1) {
|
||||
s = (String) keys.toArray()[0];
|
||||
} else {
|
||||
throw new Error("cok key");
|
||||
}
|
||||
String dist2load = null;
|
||||
byte[] si = null;
|
||||
try (Jedis inner = innerPool.getResource();Jedis outer = outerPool.getResource()){
|
||||
|
||||
inner.select(1);
|
||||
dist2load = inner.get(prefix + "-" + firstValue);
|
||||
|
||||
outer.select(0);
|
||||
String[] split = prefix.split("-");
|
||||
String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
// Set<String> keys = outer.keys(split[0] + "/"+split[1]+"/" + dist2load);
|
||||
String key = split[0] + "/"+split[1]+"/" + dist2load;
|
||||
// if (keys.size() == 1) {
|
||||
// s = (String) keys.toArray()[0];
|
||||
// } else {
|
||||
// throw new Error("cok key");
|
||||
// }
|
||||
si = outer.get(key.getBytes());
|
||||
|
||||
// String key = prefix.replace("-", "/") + "/" + dist2load;
|
||||
// byte[] s = outer.get(key.getBytes());
|
||||
actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si);
|
||||
|
||||
// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition;
|
||||
String si = outer.get(s);
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
|
||||
// actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
}
|
||||
|
||||
ITree parent = null;
|
||||
ITree children = null;
|
||||
@@ -239,45 +442,56 @@ public class EDiffHelper {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (inner != null) {
|
||||
inner.close();
|
||||
}
|
||||
if (outer != null) {
|
||||
outer.close();
|
||||
}
|
||||
}
|
||||
|
||||
return tree;
|
||||
Pair<ITree, HierarchicalActionSet> pair = new Pair<>(tree,actionSet);
|
||||
return pair;
|
||||
// return tree;
|
||||
}
|
||||
|
||||
public static void getLeaves(ITree tc){
|
||||
|
||||
int height = tc.getHeight();
|
||||
if(height == 0){
|
||||
log.info(tc.getLabel());
|
||||
}else{
|
||||
List<ITree> children = tc.getChildren();
|
||||
for (ITree child:children){
|
||||
getLeaves(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ITree getTokens(String prefix,String firstValue, JedisPool outerPool,JedisPool innerPool) {
|
||||
|
||||
|
||||
ITree tree = null;
|
||||
Jedis inner = null;
|
||||
Jedis outer = null;
|
||||
// Jedis inner = null;
|
||||
// Jedis outer = null;
|
||||
|
||||
|
||||
try {
|
||||
inner = innerPool.getResource();
|
||||
try{
|
||||
try (Jedis inner = innerPool.getResource();Jedis outer = outerPool.getResource()) {
|
||||
// inner = innerPool.getResource();
|
||||
inner.select(1);
|
||||
String dist2load = inner.get(prefix + "-" + firstValue);
|
||||
outer = outerPool.getResource();
|
||||
// outer = outerPool.getResource();
|
||||
outer.select(0);
|
||||
String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
Set<String> keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load);
|
||||
if (keys.size() == 1) {
|
||||
s = (String) keys.toArray()[0];
|
||||
} else {
|
||||
throw new Error("cok key");
|
||||
}
|
||||
// String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
// Set<String> keys = outer.keys(prefix.split("-")[0] + "/*/" + dist2load);
|
||||
// if (keys.size() == 1) {
|
||||
// s = (String) keys.toArray()[0];
|
||||
// } else {
|
||||
// throw new Error("cok key");
|
||||
// }
|
||||
|
||||
|
||||
// String filename = project + "/"+type+"/" + pureFileName + ".txt_" + actionSetPosition;
|
||||
String si = outer.get(s);
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
String[] split = prefix.split("-");
|
||||
// String s = null;//inner.get(prefix.replace("-","/") +"/"+dist2load);
|
||||
// Set<String> keys = outer.keys(split[0] + "/"+split[1]+"/" + dist2load);
|
||||
String key = split[0] + "/"+split[1]+"/" + dist2load;
|
||||
byte[] si = outer.get(key.getBytes());
|
||||
// HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromString(si);
|
||||
HierarchicalActionSet actionSet = (HierarchicalActionSet) EDiffHelper.fromByteArray(si);
|
||||
|
||||
|
||||
ITree parent = null;
|
||||
@@ -286,21 +500,25 @@ public class EDiffHelper {
|
||||
tree = EDiffHelper.getTokenTree(actionSet, parent, children, tc);
|
||||
tree.setParent(null);
|
||||
tc.validate();
|
||||
// getLeaves(tree);
|
||||
}
|
||||
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (inner != null) {
|
||||
inner.close();
|
||||
}
|
||||
if (outer != null) {
|
||||
outer.close();
|
||||
}
|
||||
}
|
||||
|
||||
// finally {
|
||||
// if (inner != null) {
|
||||
// inner.close();
|
||||
// }
|
||||
// if (outer != null) {
|
||||
// outer.close();
|
||||
// }
|
||||
|
||||
|
||||
return tree;
|
||||
}
|
||||
|
||||
@@ -349,4 +567,150 @@ public class EDiffHelper {
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
||||
public static List<ITree> retainLeaves(List<ITree> trees) {
|
||||
Iterator<ITree> tIt = trees.iterator();
|
||||
while (tIt.hasNext()) {
|
||||
ITree t = tIt.next();
|
||||
if (!t.isLeaf()) tIt.remove();
|
||||
}
|
||||
return trees;
|
||||
}
|
||||
|
||||
public static String getTokenAtNode(ITree leaf,String token){
|
||||
// if (leaf.getParent() == null) {
|
||||
String label = leaf.getLabel();
|
||||
String key = label.split(String.valueOf(leaf.getType()))[0];
|
||||
String group="";
|
||||
Pattern pattern;
|
||||
java.util.regex.Matcher matcher;
|
||||
|
||||
List<ITree> parents;
|
||||
List<String> actionList = new ArrayList<>();
|
||||
Set<String> uniqueGas = new HashSet<String>(actionList);
|
||||
switch (key.trim()) {
|
||||
|
||||
case "DEL":
|
||||
parents = leaf.getParents();
|
||||
|
||||
for (ITree parent : parents) {
|
||||
String s = parent.getLabel().split(String.valueOf(parent.getType()))[0];
|
||||
actionList.add(s);
|
||||
}
|
||||
actionList.add(key);
|
||||
|
||||
if (uniqueGas.size() == 1){
|
||||
Optional<ITree> first = parents.stream().filter(p -> p.isRoot()).findFirst();
|
||||
if(first.isPresent()){
|
||||
ITree parent = first.get();
|
||||
label = parent.getLabel();
|
||||
}
|
||||
}
|
||||
|
||||
pattern = Pattern.compile(delPattern);
|
||||
matcher = pattern.matcher(label);
|
||||
if (matcher.matches()) {
|
||||
group = matcher.group(2);
|
||||
|
||||
}
|
||||
break;
|
||||
case "INS":
|
||||
parents = leaf.getParents();
|
||||
|
||||
for (ITree parent : parents) {
|
||||
String s = parent.getLabel().split(String.valueOf(parent.getType()))[0];
|
||||
actionList.add(s);
|
||||
}
|
||||
actionList.add(key);
|
||||
|
||||
if (uniqueGas.size() == 1){
|
||||
Optional<ITree> first = parents.stream().filter(p -> p.isRoot()).findFirst();
|
||||
if(first.isPresent()){
|
||||
ITree parent = first.get();
|
||||
label = parent.getLabel();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
pattern = Pattern.compile(insPattern);
|
||||
matcher = pattern.matcher(label);
|
||||
if (matcher.matches()) {
|
||||
group = matcher.group(2);// +" " + matcher.group(3);
|
||||
|
||||
}
|
||||
break;
|
||||
case "MOV":
|
||||
parents = leaf.getParents();
|
||||
|
||||
for (ITree parent : parents) {
|
||||
String s = parent.getLabel().split(String.valueOf(parent.getType()))[0];
|
||||
actionList.add(s);
|
||||
}
|
||||
actionList.add(key);
|
||||
|
||||
if (uniqueGas.size() == 1){
|
||||
Optional<ITree> first = parents.stream().filter(p -> p.isRoot()).findFirst();
|
||||
if(first.isPresent()){
|
||||
ITree parent = first.get();
|
||||
label = parent.getLabel();
|
||||
}
|
||||
}
|
||||
|
||||
pattern = Pattern.compile(movPattern);
|
||||
matcher = pattern.matcher(label);
|
||||
if (matcher.matches()) {
|
||||
group = matcher.group(2);
|
||||
String group1 = matcher.group(3);
|
||||
|
||||
}
|
||||
break;
|
||||
case "UPD":
|
||||
pattern = Pattern.compile(updPattern);
|
||||
matcher = pattern.matcher(label);
|
||||
if (matcher.matches()) {
|
||||
group = matcher.group(2) +" " + matcher.group(3);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
token = group;
|
||||
return group;
|
||||
// }else{
|
||||
// getTokenAtNode(leaf.getParent(),token);
|
||||
// return token;
|
||||
// }
|
||||
}
|
||||
|
||||
static String movPattern = "MOV (.*)@@(.*)@TO@ (.*)@@(.*)@AT@.*";
|
||||
static String delPattern = "DEL (.*)@@(.*)@AT@.*";
|
||||
static String insPattern = "INS (.*)@@(.*)@TO@ (.*)@@(.*)@AT@.*";
|
||||
static String updPattern = "UPD (.*)@@(.*)@TO@(.*)@AT@.*";
|
||||
|
||||
public static String getNames2(ITree oldTree){
|
||||
|
||||
List<ITree> leaves = retainLeaves(TreeUtils.postOrder(oldTree));
|
||||
List<String> res = new ArrayList<>();
|
||||
String resu="";
|
||||
for (ITree leaf : leaves) {
|
||||
String tokenAtNode = getTokenAtNode(leaf, resu);
|
||||
|
||||
res.add(tokenAtNode);
|
||||
}
|
||||
|
||||
// log.info("s");
|
||||
|
||||
if (res.size() == 1){
|
||||
final String regex = "MethodName:([a-zA-Z0-9]+):.*MethodName:([a-zA-Z0-9]+):.*";
|
||||
Pattern compile = Pattern.compile(regex);
|
||||
Matcher matcher = compile.matcher(res.get(0));
|
||||
if(matcher.matches()){
|
||||
res.set(0,matcher.group(1) +" " + matcher.group(2));
|
||||
}
|
||||
}
|
||||
|
||||
return String.join(" ",res);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
+10
-6
@@ -15,19 +15,23 @@ public class PoolBuilder {
|
||||
static final JedisPoolConfig poolConfig = buildPoolConfig();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private static JedisPoolConfig buildPoolConfig() {
|
||||
final JedisPoolConfig poolConfig = new JedisPoolConfig();
|
||||
poolConfig.setMaxTotal(128);
|
||||
poolConfig.setMaxIdle(128);
|
||||
poolConfig.setMinIdle(16);
|
||||
poolConfig.setTestOnBorrow(true);
|
||||
poolConfig.setTestOnReturn(true);
|
||||
poolConfig.setTestWhileIdle(true);
|
||||
poolConfig.setMaxTotal(1024);
|
||||
poolConfig.setMaxIdle(1024);
|
||||
// poolConfig.setMinIdle(16);
|
||||
// poolConfig.setTestOnBorrow(true);
|
||||
// poolConfig.setTestOnReturn(true);
|
||||
// poolConfig.setTestWhileIdle(true);
|
||||
poolConfig.setMinEvictableIdleTimeMillis(Duration.ofMinutes(60).toMillis());
|
||||
poolConfig.setTimeBetweenEvictionRunsMillis(Duration.ofHours(30).toMillis());
|
||||
poolConfig.setNumTestsPerEvictionRun(3);
|
||||
poolConfig.setBlockWhenExhausted(true);
|
||||
|
||||
|
||||
return poolConfig;
|
||||
}
|
||||
}
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
Reference in New Issue
Block a user