Include new releases + prep for stream uploading

pull/5/head
sigonasr2 4 years ago
parent 19b97b64dd
commit 183fde69be
  1. 59
      frontend/src/App.js
  2. 7
      frontend/src/setupProxy.js
  3. 36
      server/app.js
  4. BIN
      server/files/album_art/001
  5. BIN
      server/files/album_art/001.jpg
  6. BIN
      server/files/album_art/002
  7. BIN
      server/files/album_art/002.jpg
  8. BIN
      server/files/album_art/003
  9. BIN
      server/files/album_art/003.jpg
  10. BIN
      server/files/album_art/007
  11. BIN
      server/files/album_art/007.jpg
  12. BIN
      server/files/album_art/008
  13. BIN
      server/files/album_art/008.jpg
  14. BIN
      server/files/album_art/012
  15. BIN
      server/files/album_art/012.jpg
  16. BIN
      server/files/album_art/013
  17. BIN
      server/files/album_art/013.jpg
  18. BIN
      server/files/album_art/014
  19. BIN
      server/files/album_art/014.jpg
  20. BIN
      server/files/album_art/017
  21. BIN
      server/files/album_art/017.jpg
  22. BIN
      server/files/album_art/018
  23. BIN
      server/files/album_art/018.jpg
  24. BIN
      server/files/album_art/019
  25. BIN
      server/files/album_art/019.jpg
  26. BIN
      server/files/album_art/020
  27. BIN
      server/files/album_art/020.jpg
  28. BIN
      server/files/album_art/023
  29. BIN
      server/files/album_art/023.jpg
  30. BIN
      server/files/album_art/026
  31. BIN
      server/files/album_art/026.jpg
  32. BIN
      server/files/album_art/029
  33. BIN
      server/files/album_art/029.jpg
  34. BIN
      server/files/album_art/031
  35. BIN
      server/files/album_art/031.jpg
  36. BIN
      server/files/album_art/032
  37. BIN
      server/files/album_art/032.jpg
  38. BIN
      server/files/album_art/033
  39. BIN
      server/files/album_art/033.jpg.1
  40. BIN
      server/files/album_art/034
  41. BIN
      server/files/album_art/034.jpg
  42. BIN
      server/files/album_art/036
  43. BIN
      server/files/album_art/036.jpg
  44. BIN
      server/files/album_art/037
  45. BIN
      server/files/album_art/037.jpg
  46. BIN
      server/files/album_art/039
  47. BIN
      server/files/album_art/039.jpg
  48. BIN
      server/files/album_art/040
  49. BIN
      server/files/album_art/040.jpg
  50. BIN
      server/files/album_art/041
  51. BIN
      server/files/album_art/041.jpg
  52. BIN
      server/files/album_art/042
  53. BIN
      server/files/album_art/042.jpg
  54. BIN
      server/files/album_art/043
  55. BIN
      server/files/album_art/043.jpg
  56. BIN
      server/files/album_art/044
  57. BIN
      server/files/album_art/044.jpg
  58. BIN
      server/files/album_art/045
  59. BIN
      server/files/album_art/045.jpg
  60. BIN
      server/files/album_art/047
  61. BIN
      server/files/album_art/047.jpg
  62. BIN
      server/files/album_art/048
  63. BIN
      server/files/album_art/048.jpg
  64. BIN
      server/files/album_art/049
  65. BIN
      server/files/album_art/049.jpg
  66. BIN
      server/files/album_art/050
  67. BIN
      server/files/album_art/050.jpg
  68. BIN
      server/files/album_art/052
  69. BIN
      server/files/album_art/052.jpg
  70. BIN
      server/files/album_art/053
  71. BIN
      server/files/album_art/053.jpg
  72. BIN
      server/files/album_art/054
  73. BIN
      server/files/album_art/054.jpg
  74. BIN
      server/files/album_art/065
  75. BIN
      server/files/album_art/065.jpg
  76. BIN
      server/files/album_art/066
  77. BIN
      server/files/album_art/066.jpg
  78. BIN
      server/files/album_art/067
  79. BIN
      server/files/album_art/067.jpg
  80. BIN
      server/files/album_art/068
  81. BIN
      server/files/album_art/068.jpg
  82. BIN
      server/files/album_art/069
  83. BIN
      server/files/album_art/069.jpg
  84. BIN
      server/files/album_art/070
  85. BIN
      server/files/album_art/070.jpg
  86. BIN
      server/files/album_art/079
  87. BIN
      server/files/album_art/079.jpg
  88. BIN
      server/files/album_art/080
  89. BIN
      server/files/album_art/080.jpg
  90. BIN
      server/files/album_art/081
  91. BIN
      server/files/album_art/081.jpg
  92. BIN
      server/files/album_art/082
  93. BIN
      server/files/album_art/082.jpg
  94. BIN
      server/files/album_art/083
  95. BIN
      server/files/album_art/083.jpg
  96. BIN
      server/files/album_art/090
  97. BIN
      server/files/album_art/090.jpg
  98. BIN
      server/files/album_art/091
  99. BIN
      server/files/album_art/091.jpg
  100. BIN
      server/files/album_art/092
  101. Some files were not shown because too many files have changed in this diff Show More

@ -964,6 +964,12 @@ function HoverSongName(p) {
)
}
function HasSong(song,user) {
//console.log(JSON.stringify(song)+"/"+JSON.stringify(user))
return (song.mega39s&&user.megamix)||
(song.futuretone&&user.futuretone)
}
function CompletionPanel(p) {
const [report,setReport] = useState([])
const [song,setSong] = useState("")
@ -1003,7 +1009,7 @@ function CompletionPanel(p) {
</tr>
</thead>
<tbody>
{report.filter((report)=>Object.keys(filter).length==0||report.id in filter).map((song,i)=>{return <HoverSongName setModalSrc={p.setModalSrc} setModalVisible={p.setModalVisible} to={song.name} song={song} key={song.id} username={p.username}/>
{report.filter((report)=>Object.keys(filter).length==0||report.id in filter).map((song,i)=>{return (HasSong(song,p.user))?<HoverSongName setModalSrc={p.setModalSrc} setModalVisible={p.setModalVisible} to={song.name} song={song} key={song.id} username={p.username}/>:<></>
})}
</tbody>
<tfoot>
@ -1080,6 +1086,15 @@ function FavoritePlaystyle(p) {
}
}
function GamesPanel(p) {
return (
<div className="d-none d-sm-none d-md-block float-right">
{p.user.megamix&&<img style={{position:"absolute",right:"0px",top:"-8px"}} className="pr-2" src="http://projectdivar.com/files/mega39s.png"/>}
{p.user.futuretone&&<img style={{position:"absolute",right:(p.user.megamix)?"112px":"0px",top:"-8px"}} className="pl-2" src="http://projectdivar.com/files/futuretone.png"/>}
</div>
)
}
function Profile(p){
let { username } = useParams();
let match = useRouteMatch();
@ -1129,6 +1144,7 @@ function Profile(p){
return (
<>
<ImageDisplayer username={username} songs={p.songs} play={modalsrc} modalVisible={modalVisible} setModalVisible={setModalVisible}></ImageDisplayer>
<GamesPanel name="Games" user={user}/>
<h2>{username+"'s Profile"}</h2>
{(render)?<>
{user.playstyle&&user.playstyle.length>0&&
@ -1140,7 +1156,7 @@ function Profile(p){
<StatisticsPanel name="Statistics" setMouseOver={setMouseOver} username={username} playcount={playcount} fccount={fccount} cleared={cleared} accuracy={accuracy}/>
<HitCountsPanel name="Hit Counts" username={username} user={user}/>
<BestPlaysPanel name="Best Plays" setModalVisible={setModalVisible} setModalSrc={setModalSrc} username={username} songs={p.songs}/>
<CompletionPanel name="Progress" setModalVisible={setModalVisible} setModalSrc={setModalSrc} username={username} songs={p.songs}/>
<CompletionPanel name="Progress" user={user} setModalVisible={setModalVisible} setModalSrc={setModalSrc} username={username} songs={p.songs}/>
<Panel name="Activity" username={username}/>
</>
:<></>
@ -1784,7 +1800,14 @@ function ReleaseList(p) {
function DivaBot() {
const releases=[
["03","http://projectdivar.com/files/releases/DivaBot03.zip","17 Sep 2020",<><Badge variant="info" pill>Recommended</Badge> <i>DLC Update - Compatibility with removed 'bpm' field from database. Fixed bug with ":" in song names.</i></>],
["05B","http://projectdivar.com/files/releases/DivaBot05B.zip","22 Sep 2020",<> <Badge variant="info" pill>Recommended</Badge> <i>Improved song select recognition speed.</i></>],
["05A","http://projectdivar.com/files/releases/DivaBot05A.zip","21 Sep 2020",<> <i>Added multi-monitor support. Use calibration to switch monitors.</i></>],
["05","http://projectdivar.com/files/releases/DivaBot05.zip","21 Sep 2020",<> <i>Added Miku FC. Huge optimizations to result screen capture, improve menu detection algorithms.</i></>],
["04B","http://projectdivar.com/files/releases/DivaBot04A2.zip","20 Sep 2020",<> <i>Redo the calibrator and improve Future Tone recognition.</i></>],
["04A","http://projectdivar.com/files/releases/DivaBot04A1.zip","19 Sep 2020",<> <IMAGE_BUG/> <i>Fix issues with Future tone songs with *s in them.</i></>],
["04","http://projectdivar.com/files/releases/DivaBot04.zip","19 Sep 2020",<> <IMAGE_BUG/> <i>Update so everything's working! Future Tone compatibility live!</i></>],
["03-beta","http://projectdivar.com/files/releases/DivaBot03-beta.zip","19 Sep 2020",<><IMAGE_BUG/> <Badge variant="success" pill>BUGGED</Badge> <i>Added Future Tone compatibility. Works with Megamix or Future Tone.</i></>],
["03","http://projectdivar.com/files/releases/DivaBot03.zip","17 Sep 2020",<><Badge variant="warning" pill>Megamix ONLY</Badge> <i>DLC Update - Compatibility with removed 'bpm' field from database. Fixed bug with ":" in song names.</i></>],
]
const incompatiblereleases=[
@ -1803,7 +1826,7 @@ function DivaBot() {
The app works by monitoring your game's capture area as you are streaming in order to identify what song you are playing, and what scores you achieve. It is used with this website to make score
submitting and tracking easier.
<br/>
The app currently supports <b>Megamix</b>. Other games will be supported in the future.
The app currently supports <b>Megamix</b> and <b>Future Tone</b>. Other games will be supported in the future.
<hr/>
<h3>Setup Instructions</h3>
{<iframe width="100%" height="480" src="https://www.youtube.com/embed/IAPpbp5EFto" frameBorder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowFullScreen></iframe>}
@ -1825,6 +1848,30 @@ function DivaBot() {
)
}
function StreamData() {
const [imageSet,setImageSet] = useState(0);
const [rando1,setRando1] = useState(Date.now());
const [rando2,setRando2] = useState(Date.now());
useEffect(()=>{
setTimeout(()=>{
if (imageSet===0) {
setImageSet(50)
setRando1(Date.now())
} else {
setImageSet(0)
setRando2(Date.now())
}
},5000)
},[imageSet])
return(
<>
{(imageSet===0)?<><img style={{visibility:"visible"}} src={"http://projectdivar.com:8080/feed/output0.png?"+rando1} id={rando1}/><img style={{visibility:"hidden"}} id={rando2} src={"http://projectdivar.com:8080/feed/output2.png?"+rando2}/></>:<><img style={{visibility:"visible"}} id={rando2} src={"http://projectdivar.com:8080/feed/output2.png?"+rando2}/><img id={rando1} style={{visibility:"hidden"}} src={"http://projectdivar.com:8080/feed/output0.png?"+rando1}/></>}
</>
)
}
function Website() {
const [songs,setSongs] = useState([])
const [update,setUpdate] = useState(false)
@ -1890,6 +1937,10 @@ function Website() {
<h1 className="title">Register New Account</h1>
<Register isLoggedIn={username!==undefined} setLoginPanelUpdate={setLoginPanelUpdate}/>
</Route>
<Route path="/stream">
<h1 className="title">Stream</h1>
<StreamData/>
</Route>
<Route path="/">
<h1 className="title">Project DivaR</h1>
Under construction!

@ -1,6 +1,13 @@
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(
"/streamdata",
createProxyMiddleware({
target: 'http://server:4501',
changeOrigin: true,
})
);
app.use(
"/updateuser",
createProxyMiddleware({

@ -1,5 +1,6 @@
const express = require('express')
const axios = require('axios')
const twitchStreams = require('twitch-get-stream')
const app = express()
const port = 4501
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))
@ -257,7 +258,7 @@ app.post('/submit', (req, res) => {
submitDate=req.body.submitDate;
}
var playstyle="",songsubmitdata={},mod="",combo=-1,gameScore=-1,isFC=false,songRating=-1,userId = -1,songId=-1,playcount=-1,fccount=-1,cool=-1,fine=-1,safe=-1,sad=-1,worst=-1,alreadyPassed=false,eclear=-1,nclear=-1,hclear=-1,exclear=-1,exexclear=-1;
var songdata={},userObj={};
if (req.body.mod!==undefined) {
mod = req.body.mod;
}
@ -268,15 +269,17 @@ app.post('/submit', (req, res) => {
gameScore = req.body.gameScore;
}
db.query("select id,authentication_token,playcount,fccount,cool,fine,safe,sad,worst,eclear,nclear,hclear,exclear,exexclear,playstyle from users where username=$1 limit 1",[req.body.username])
db.query("select id,authentication_token,playcount,fccount,cool,fine,safe,sad,worst,eclear,nclear,hclear,exclear,exexclear,playstyle,megamix,futuretone from users where username=$1 limit 1",[req.body.username])
.then((data)=>{if(data && data.rows.length>0){if (data.rows[0].authentication_token===req.body.authentication_token){
var obj = data.rows[0];
userObj = data.rows[0];
playstyle=data.rows[0].playstyle;
eclear=obj.eclear;nclear=obj.nclear;hclear=obj.hclear;exclear=obj.exclear;exexclear=obj.exexclear;
cool=data.rows[0].cool;fine=data.rows[0].fine;safe=data.rows[0].safe;sad=data.rows[0].sad;worst=data.rows[0].worst;
fccount=data.rows[0].fccount;playcount=data.rows[0].playcount;userId=data.rows[0].id;return db.query("select id from songs where name=$1 or romanized_name=$1 or english_name=$1 limit 1",[req.body.song])}else{throw new Error("Could not authenticate!")}}else{throw new Error("Could not find user.")}
fccount=data.rows[0].fccount;playcount=data.rows[0].playcount;userId=data.rows[0].id;return db.query("select id,mega39s,futuretone from songs where name=$1 or romanized_name=$1 or english_name=$1 limit 1",[req.body.song])}else{throw new Error("Could not authenticate!")}}else{console.log(req.body); throw new Error("Could not find user.")}
})
.then((data)=>{if(data && data.rows.length>0){songId=data.rows[0].id;
songdata=data.rows[0];
if (!(req.body.difficulty==="H"||req.body.difficulty==="N"||req.body.difficulty==="E"||req.body.difficulty==="EX"||req.body.difficulty==="EXEX"))
{
throw new Error("Invalid difficulty!")
@ -290,7 +293,7 @@ app.post('/submit', (req, res) => {
if(alreadyPassed===false && songsubmitdata.score>0){switch(req.body.difficulty){case"E":{eclear++}break;case"N":{nclear++}break;case"H":{hclear++}break;case"EX":{exclear++}break;case"EXEX":{exexclear++}break;}}
isFC = songsubmitdata.safe===0 && songsubmitdata.sad===0 && songsubmitdata.worst===0;
return CalculateRating(req.body.username)}else{throw new Error("Could not submit song.")}})
.then((data)=>{return db.query("update users set rating=$1,last_played=$3,playcount=$4,fccount=$5,cool=$6,fine=$7,safe=$8,sad=$9,worst=$10,eclear=$11,nclear=$12,hclear=$13,exclear=$14,exexclear=$15 where username=$2",[data,req.body.username,new Date(),++playcount,fccount+((isFC)?1:0),cool+Number(req.body.cool),fine+Number(req.body.fine),safe+Number(req.body.safe),sad+Number(req.body.sad),worst+Number(req.body.worst),eclear,nclear,hclear,exclear,exexclear])})
.then((data)=>{return db.query("update users set rating=$1,last_played=$3,playcount=$4,fccount=$5,cool=$6,fine=$7,safe=$8,sad=$9,worst=$10,eclear=$11,nclear=$12,hclear=$13,exclear=$14,exexclear=$15,megamix=$16,futuretone=$17 where username=$2",[data,req.body.username,new Date(),++playcount,fccount+((isFC)?1:0),cool+Number(req.body.cool),fine+Number(req.body.fine),safe+Number(req.body.safe),sad+Number(req.body.sad),worst+Number(req.body.worst),eclear,nclear,hclear,exclear,exexclear,(songdata.mega39s||userObj.megamix),(songdata.futuretone&&!songdata.mega39s)||userObj.futuretone])})
.then((data)=>{return songsubmitdata;})
.then((data)=>{
if (req.body.src) {
@ -489,7 +492,7 @@ app.get('/bestplay/:username/:songname/:difficulty',(req,res)=>{
app.get('/userdata/:username',(req,res)=>{
var songId=-1,userId=-1,finalData={};
db.query('select playstyle,playcount,fccount,rating,last_played,cool,fine,safe,sad,worst,eclear,nclear,hclear,exclear,exexclear from users where username=$1 limit 1',[req.params.username])
db.query('select megamix,futuretone,playstyle,playcount,fccount,rating,last_played,cool,fine,safe,sad,worst,eclear,nclear,hclear,exclear,exexclear from users where username=$1 limit 1',[req.params.username])
.then((data)=>{if(data && data.rows.length>0){finalData=data.rows[0];return db.query("select t.difficulty,COUNT(t.difficulty) from (select distinct on(songid) songid,*,users.id from plays join users on userid=users.id where users.username=$1 and plays.safe=0 and plays.worst=0 and plays.sad=0)t group by t.difficulty",[req.params.username])}else{throw new Error("Could not retrieve user data!")}})
.then((data)=>{
if (data) {
@ -986,6 +989,16 @@ app.post('/updateuser', function(req, res) {
})
app.get('/streamdata',function (req,res){
db.query("select * from streams where id=1")
.then((data)=>{
res.status(200).send(data.rows[0].stream)
})
.catch((err)=>{
res.status(500).send(err.message)
})
})
@ -1037,6 +1050,19 @@ axios.get('https://api.twitter.com/1.1/search/tweets.json?q=@divarbot', {
return Process(data);
})
.then((data)=>{process_images.forEach((image)=>{console.log(image)})})*/
/*setInterval(
()=>{
twitchStreams.get('radi7002')
.then(function(streams) {
//console.log(streams)
if (streams.length>0) {
db.query("update streams set stream=$1 where id=1",[streams[0].url]);
}
})
.catch((err)=>{
console.log(err.message)
})
},5000)*/
setInterval(
()=>{

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save